ELF&@`6?@8 @@@@888dada l l l(>0>0l0l0lTTTDDPtdZZZQtdRtd l l l/lib/ld-linux-aarch64.so.1GNUm G/\X|qGNU6!(@ A"67:=>FGHIJLMNQ4nG-k|.śvTP-@t>`-@=p-@t=-@<-@t<-@;-@t;-@x:-@pt:-@h9-@`t9.@X8.@Pt8 .@H70.@@t7@.@86P.@0t6`.@(5p.@ t5.@4.@t4.@3.@t3.@2.@s2.@1.@s1/@0/@s0 /@/0/@s/@/@.P/@s.`/@-p/@s-/@,/@s,/@+/@s+/@x*/@ps*/@h)/@`s)0@X(0@Ps( 0@H'00@@s'@0@8&P0@0s&`0@(%p0@ s%0@$0@s$0@#0@s#0@"0@r"0@!0@r!1@ 1@r 1@01@r@1@P1@r`1@p1@r1@1@r1@1@r1@x1@pr1@h1@`r2@X2@Pr 2@H02@@r@2@8P2@0r`2@(p2@ r2@2@r2@2@r2@2@q2@2@q3@3@q 3@03@q@3@P3@q`3@ p3@q 3@ 3@q 3@ 3@q 3@x 3@pq 3@h 3@`q 4@X4@Pq 4@H04@@q@4@8P4@0q`4@(p4@ q4@4@q4@4@q4@4@p4@4@p5@p 5@?05@t?o o ooo o0o2Xn`nhnpnxnnn n n n nnnnnnnnnnnoooo o(o0o!8o#@o$Ho%Po&Xo'`o(ho)po*xo+o,o-o.o1o3o4o5 {6{_{*GB9    հ.Gb9 ְ2G9 ְ6G9 ְ:G9 ְ>G9 ְBG: ְFG": ְJGB: ְNGb: ְRG: ְVG: ְZG: ְ^G: ְbG; ְfG"; ְjGB; ְnGb; ְrG; ְvG; ְzG; ְ~G; ְG< ְG"< ְGB< ְGb< ְG< ְG< ְG< ְG< ְG= ְG"= ְGB= ְGb= ְG= ְG= ְG= ְG= ְG> ְG"> ְGB> ְGb> ְG> ְG> ְG> Ѡ{G[@҇S+8R*1T@DqTC $@ s3`4a@sb#aAA@5@@(@@%@@' @ @k@@&         @#GHG@<_    ! ?T!Ga_  ! !"A !ABGb_ {  `"U9@5G@ R`"9 @{¨_     {ScG@8[R@9q@zT@~@ 5`ju8qT@[BcCSA{Ĩ_@8q@zTK˵sCSA[BcC{Ĩ_cCCѡ{ C!G"@GS @95SJGG@@BA T{IC_o`c #[ `L@9L?qaT@94L@9q@T>; |@_!R4Y1T@ @qT iSJ[KcL@9qT @94S [ c Z CѤ{ CGS [ c@G`!Rc@#5@@?@T@X|@c !R=R!Rc*1T @b@bAa@*#a@ TRGG@@BAT*{ISJ[Kc@C_*1T=R3R@21T>SR Ѣ#{ CBGSC@Gҽ@5@R! ?@q$BzT!GG@"@cҡT{IS@_RARq Ѣ{CBGS[c @9A@qc`\)T}`@9q@z` T Ճ@8qd@zT˄|@G @nj8@#hx@8a9?q$@zT @8b8_qD@zTRa8j`8bh 85G@@BҡT{ASB[CcD_҂ja8j!8!5kG@@@R @*@ |} "LE"5"R"L/~}G? kE;G @~}ҥRk:kE{SC@Cc!GC@#@"*@c`!R7|@s~@j38C@GC@@cTCC@SA@{è_  { S[ckc-#@BGD@dDR#@!GdD@"@ҡ T c-SA[BcCkD{Ũ_Bq`@99c#4 մ 4dbT _8T@@9q`TVSITBG``@95@9qT:@9 4c!R8#]`5@  @qT!R`5j:m{R o` @{¨Z { Sc-#@!G#@C@94_T#`рT8T@9?q`TR@`(T+#@!Gd@"@aT c-SA@{è_ր#@GC@@cҡT c-SA@{è 9р{CG[Sc+G@@@ @Ax#@ `ДG@@ @Ax#@ `ДG@@ @Ax#@ `ДBG@@ @Ax#@ `ЖbG@@ @Ax#@ `еG@@ @Ax#@ `зG@@ @Ax#@ r`Gj@@ @Ax#@ \`"GT@@ @Ax#@ F`c9G>"@@ @Ax#@ 0`9G("@@ @Ax#@ ``"E `<4G@@BҁTb{A!@ SB[CcD+@#@т{CBGC@@9q@z!G@"@cT{A_R  ъ{JG#='=+=/=3=7=;=?=!R)G@@7/) @@#RK  {S[C@CC@cG*BRe@j>@<@ DdT5*R[T*1T|@T `TT @@_ATC@!Gd@"@aTCC@SA[B@{Ĩ_B@B@aT ` <{`@@{_т{CBGS[ж C@,@95G@@BT {ASB[CN!RХ@cG@@BT{ASB[C.ѢB@DC{H$ASFE[!Gcs@= @E@D4@ad '`=@9!5k@yr$@94ZC!!Rhs $@8$5c ` @@ `@9!44MJ е~@l%c`!c!!R=8R1T@Dq TY*`4@GB"!R@G@@BaT{TSU[VcWkX_Ry`@9`49n 4Oyҳ@ @qaT@_kT@ q@T@R`vD`@9!40``v 9#!d Rr@GB!!R@CG@@BҡT{TSU[VcW  $ @  qT|@!@$`5_qTZQ`z8qT Ѐ@9q@zTR+*5!@ 4c9C%*c%!R@DqATs**!Rt8R 1T@B@ (R**TA`R hr?k!Ta @yR?kTAR*#*T%cc$!R96@- )T!`$q{$nkk  т{CBGSC@c @9q@z?jTG@@BT{ASB_`@94RH5!`!5G@@BT{ASBq+  {C !G##@Gҡ@@@!Za`ghx&x!SpC!!TEA@B C@D@cA0@!!#_a!|@A<_aT(@$3$ADP@#t[BBy!#ۭ! ! ʥ"@"AB!x B @-|@B ! N[OBӥ !y A! ʮ[!B!! }@ .[  z E @B|@0Bӥ [ z ʥ@ }@!! By![!Bӂ. By}@CB B [ӭ|@!BM !!Bx! [Ӧ|@! ʥB/ x B DBB[ӌB!B!}@!L z![!B |@B B- EBx [, ! }@!!BBL z ! B |@Bʅ[B F. Bӥx [,!}@! BBL z!!B |@Bʆ[B  G/ Bx [,!}@!BBL z!!B |@Bʅ[B H- Bӥx [, ! }@!BBL z !! ʆ[ӥ|@B  B. BBIx [!B !}@! B y!F@&W@!E[ӄJ MBӰ y[@%@%[%JA@, B yB_@@&D [ӄJ&@. !BE@%c@y$[EJ&BӐ xg@$@$ʬ@2$J[ӂ Bӆ@- yk@E@%"[BJB@/BӍ yBo@$@$ʥ[!J !@1 !BE@%s@y  [ӄEJBӑ xw@$@$ʬ@0$J%[ӂ,Bӆ@. y{@E@% [BJB@- Bӎ By@$@$[!J!@/ !BE@%@yʤ[ӄ EJBӏ z @$@$ ʬ@,$J[ӥ@&Bz E@%BJ[B@.Bӄ y ;Q $@$ [!J!@-ByB E@%@[BJ!B@& Bӎ Ey@$@$[$J@,B z@@&Eʬ[ӥJ @/Bӎ y @@,$[ӌ JA"B By@&ʥJBӰ[ӡ@! y 7TB NBӆC[c!!  fyA/-[c @c M  /ByA$m[ӭL@ - oBӌ [ӅA%y- @  Bӥ @"m[y@ M oBӄ @![yC . @cBcyc@,[,c @c  BӂA"m[yB B @ oBӌyA!N[ӌ! ! n NByA%X/BӬ-[ӭ l M  yA$[L@ -  BA#[y% c@c  Bӥ y@"m[ӅB@B  oBӥ @!M[y!NB! cy ;[cl@,#[c/Bӭ  M y m[ӄA$ L. A% 3\mBӭy[% c  By@"l[ӌBnBӥB y ;]@!A[!OBӌ  a yP A-[! m@ ,@,BӤA$B[ӄ y @A ! J:EL!@#C[z! c@&@q #@#J@"LB$[ӒyB@ D@$#Jl@-&B[xcAo BʃA#DJ"@.[Bx!A. $BӄJC@2[ӏyB@! AM BJf#@1[ӎyc! @"A2 a@!JL@0BB[x BAQ  LBaJ&@/![y!@"A0  a@!JD@..B[ӄByAO ʂ@"aJ#@- B[Ӱyc!A- a@!JL@,BӢ[yB #AN ʂ@"aJ&@&B[!y 'A- a@!JD@0BӢ[z B +AQ ʂ@"aJ#@/B![y c !/A0  /BӂJL@&[ӆBya@!3AO  @"aJ$@.B[ӄ!y7A. ʁ@!JF@-B[ӯyB;AP d@"J@,B[ӌy?A @/J&A#A[!cc BCA!xA$d[ӌJEBxG!  c  B  GA@ҁTC {_{&`%qğÎ>ҦDCBz |x{_  {B|@S[cBx@  cbtB5qTQ~Sjzw `@`AsTK~@mzSA[BcC{Ĩ_RKk Җ~@_z@ zqTKs  {S[5 @6(@70@ S Z Z 8!?q TRBKRB|@|j6O =wZ)ca@!XӁ9a@!PӁ9a@!HӁ 9a@9a@!XӁ9a@!PӁ9a@!HӁ9a@9a @!XӁ"9a @!PӁ&9a @!HӁ*9a @.9a@!XӁ29a@!PӁ69a@!HӁ:9a@>9a@!XӁB9a@!PӁF9a@!HӁJ9a@N9SA[B@{Ĩ~RBKRB|@1 {{_%s/%s%s.%luexe/proc/%i/%s.PAR_TEMPPAR_PROGNAME:/%s%s%sPERL5LIBPERLLIBPERL5OPTPERLIOPAR_INITIALIZEDPAR_SPAWNEDPAR_CLEANPAR_DEBUGPAR_CACHEPAR_GLOBAL_DEBUGPAR_GLOBAL_TMPDIRPAR_TMPDIRPAR_GLOBAL_TEMPPAR_GLOBAL_CLEAN1lseek failedread failedLD_LIBRARY_PATHSYSTEM%02xpar-%s%s%s%s%s: creation of private subdirectory %s failed (errno=%i) %s: private subdirectory %s is unsafe (please remove it and retry your operation) PATHparl.parshort read%s%scache-%s%s%s%stemp-%u%s%s%stemp-%u-%u%s%s: creation of private cache subdirectory %s failed (errno= %i) %s: exec of %s (custom Perl interpreter) failed (errno=%i) %s: extraction of %s (custom Perl interpreter) failed (errno=%i) %s: extraction of %s failed (errno=%i) USERUSERNAMETMPDIRTEMPDIRTEMPTMP/tmpparlibperl.soCACHE;P,@d x@Px$0 DP$Hd4@``@4PlzRx 4A,00@L< TxHA BNxdA@BBFVACA@OAAA@BB\,ABGDIADDr AAA IAAA4TXABCBCL A $ACCV A PH4A`B CKA A H_ A IBCAB8(A0DBn A0DA D<X0AP Ga PEA ,A CF<DA0Er 0CA J 0EA 8A`B CBE A 8dxA ET A \AF@xTTA@EBЀ{ A@DA d AF8d A@CCBX A _ A 4AF C CEVe AA [DaNA  ` A BAAAA0A0CCZ A Z A $`A`BCHA(pAD AA (TAS4HA@CCCc A 0A@CCBU A ''N " V l(lo0   @n ( oohooo0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0"0l@%p PAR.pm ZVWxZZZZ`ZhZ@(#) Packed by PAR::Packer 1.0642=_max_lenPerl_gv_try_downgradePerlIOBuf_bufsizPerlIOBuf_seekPL_sighandlerpXS_builtin_truePerl_op_linklistPerl_sv_blessPL_lockhookPerl_dump_indentperl_freePerl_utf8_to_bytes_PL_replgvPerl_sv_len_utf8Perl_sv_freePL_isarevPerl_drand48_init_rPerlIOPending_readPerl_newSVboolunlink@GLIBC_2.17dlerror@GLIBC_2.34Perl_newHVhvPerl_newPMOPPL_Latin1Perl_parse_barestmtPerl_save_sptrPerl_save_ivPerl_newGVREFPerl_invlist_clonePerlIOBase_clearerrPerl_pad_newPerl_PerlIO_stdoutPerl_av_lenPerl_gv_autoload_pvnPL_phasePerl_get_hvPerl_hv_ksplitPL_hash_seed_setPerl_sv_truePerl_newUNOP_AUXstrcspn@GLIBC_2.17PerlIO_fdopenPerl_get_op_namesPerl__invlist_union_maybe_complement_2ndPL_perlioPerl_hv_free_entPerl_lex_peek_unicharPL_opargsPL_exitlistPL_unicodePerl_form_alien_digit_msgPL_taintingPerl_mfreePL_secondgvPerl_require_pvpipe@GLIBC_2.17Perl_croak_kw_unless_classPerl_sv_usepvnPL_Posix_ptrsPerl_opdump_printfPerl_newANONATTRSUBPerl_scan_wordXS_utf8_decodePerl_lex_stuff_svPerl_newCONDOPPerl_warnPerl_sv_derived_from_hvPL_srand_calledPerl_new_warnings_bitfieldPerl_get_svPL_TR_SPECIAL_HANDLING_UTF8fchmod@GLIBC_2.17PerlIOStdio_openPerl_save_scalarPL_argvoutgvPerlIO_printfPL_dumpindentPerl_av_dumpPerl_sv_setsv_mgPerl_reg_named_buff_nextkeyPerl_do_opennPL_regmatch_state__vsnprintf_chk@GLIBC_2.17sendto@GLIBC_2.17Perl_sv_pvutf8Perl_filter_delPerl_hv_existsPerl_gv_fetchmethodalarm@GLIBC_2.17PL_subnamePerl_mess_svPL_osnameperl_parsePL_psig_namePL_localpatchesPerl_gv_autoload_svPerl_bytes_cmp_utf8Perl_save_allocPerl_diefdopen@GLIBC_2.17sigfillset@GLIBC_2.17lseek64@GLIBC_2.17Perl_my_statPerl__to_utf8_fold_flagsPerlIO_list_allocPerl_vdebPerl_gv_fetchmethod_pvn_flagsPerl_Slab_AllocPerl_eval_pvPerl_langinfo8Perl_grok_bin_oct_hexPerl_sv_2bool_flagsPerl_hv_copy_hints_hvgetpwnam@GLIBC_2.17PL_Assigned_invlistPerl_gv_init_pvPerl_sv_setsvPerlIO_perlioexp@GLIBC_2.29PL_gensymPL_strxfrm_max_cpPL_utf8_totitlePerlIOStdio_dupPerl_mg_clearPL_sig_numPerl_op_dumpPL_sh_pathPL_unitcheckavPL_perl_destruct_levelPerl_pad_tidyPL_padix_floorsetprotoent@GLIBC_2.17Perl_load_charnameslocaltime@GLIBC_2.17PL_hook__require__afterPerl_my_stat_flagsPerl_vverifyPerl_sv_setsv_cowPerl_parse_labelPerl_clear_defarrayseekdir@GLIBC_2.17Perl_sv_unmagicPL_bitcountPL_c9_utf8_dfa_tabPerl_vivify_defelemPerl_sv_inc_nomgPerl_sv_setpv_mgPerl_newLISTOPPerlIOCrlf_writedup3@GLIBC_2.17Perl_call_atexitPerl_atfork_unlockPerl_hv_eiter_pPerl_get_prop_definitionrecvfrom@GLIBC_2.17PL_tmps_stackPerl_av_deletePL_eval_startPerl_fbm_compilemkostemp64@GLIBC_2.17PL_my_environPerl_dorefPL_utf8_idstartgetservent@GLIBC_2.17Perl_croak_no_modifyPerl_reg_named_buff_existsPerl_reg_named_buff_fetchfileno@GLIBC_2.17Perl_save_destructorPerl_ck_entersub_args_protoPL_curstashPerl_sv_magicext_mglobPL_minus_FPerl_do_joinPerl_keyword_plugin_standard__gmon_start__PL_generationPerl_sv_set_truePerl_my_vsnprintfPerl_hv_iternext_flagsPerl_utf8_to_uv_msgs_helper_Perl_sv_nosharingPerl_save_generic_pvrefPL_origenvironXS_builtin_func1_scalarPL_curpadPerlIO_putcgetprotobynumber@GLIBC_2.17Perl_save_deletePerl_utf16_to_utf8_reversedPerl_lex_unstuffPerl_gv_fetchmeth_pv_autoloadPL_utf8_tofoldPerlIO_default_layersPL_utf8_xidstartPerl_reg_named_buff_iterPerl_gv_fetchmeth_svPerlIO_removePerl_my_dirfdsetresuid@GLIBC_2.17PL_mess_svPerlIO_stdioPerl_save_intPL_checkavPL_argvout_stackrename@GLIBC_2.17strtod@GLIBC_2.17Perl_sv_does_pvPerl_save_hashXS_utf8_encodePerl_cop_fetch_labelPerl_sv_dump_depthPerl_PerlIO_tellPerlIO_find_layerPL_signalhookPerl_av_makePerlIO_importFILEkillpg@GLIBC_2.17getcwd@GLIBC_2.17ldexp@GLIBC_2.17Perl_newLOOPOPPL_YesPL_collation_namePL_sv_rootPerlIOBase_poppedPerl_do_openPL_fdpidPerl_do_gvgv_dumpPerl_utf8_to_uvchrPerl_scan_binPerlIOUnix_pushedPL_ptr_tablePerl_sv_streq_flagsPerl_cvgv_from_hekPerl_filter_addgp_flags_namesstrnlen@GLIBC_2.17Perl_mg_freeextPerl_vnewSVpvfPL_simple_bitmaskPerl_get_ppaddrPerl_sv_utf8_downgrade_flagsPerl_parse_listexprPL_underlying_radix_svsuper_cp_formatPerlIOBase_unreadPerl_scan_vstringPL_basetimePL_comppad_namePerl_padname_freePL_reentrant_retintPL_checkPerl_dump_packsubsPL_constpadixPerl__new_invlistreadlink@GLIBC_2.17Perl_sv_2uvgetpid@GLIBC_2.17PL_DBsinglesocket@GLIBC_2.17PerlIOStdio_fillPL_isa_DOESPerl_forbid_outofblock_opsPerl_save_hintsgetpwuid@GLIBC_2.17PL_prevailing_versionPerl_newRANGEXS_NamedCapture_tie_itPerlIOBuf_flushPerl_sv_insert_flagsPerl_lex_read_unicharPerlIO_putsPerl_vcroakPerlIOBuf_writenonchar_cp_formatPerl_uvoffuni_to_utf8_flagsgetservbyname@GLIBC_2.17Perl_sv_untaintPerlIO_has_cntptrPL_defstashPerl_rpp_obliterate_stack_toPerl_av_create_and_pushPerl_sv_vcatpvfn_flagsPL_WARN_ALLnl_langinfo@GLIBC_2.17Perl_sv_does_svPerl_reg_temp_copyPerl_sv_setref_pvnPerl__setup_canned_invlistPerl_save_svrefPerl_drand48_rPL_laststatvalPerlIO_initPerl_current_re_enginePerlIO_exportFILEPerl_sv_pvbyten_forcePL_nomemokPerl_av_clearPerl_lex_bufutf8msgctl@GLIBC_2.17Perl_sv_catpv_flagsPL_stdingvstdout@GLIBC_2.17Perl_gv_fullname3Perl_PerlIO_seekPerl_sv_unref_flagsPerlIO_reopenPerl_class_apply_field_attributesPerl_vformPerlIO_fast_getsPerl_delimcpyPL_collxfrm_multPerl_class_seal_stashPL_strategy_dupPerlIOBuf_set_ptrcntPerl_sv_catpvfPerl_call_listPL_mbrtowc_psPerl_sv_cmp_flagsPerl_leave_scopePerl_hv_riter_setPerlIOBuf_closePerlIO_arg_fetchPL_utf8localeperl_runPerlIOPop_pushedPL_in_clean_objsPL_csighandler3pPerl_op_nullPerl_my_popenPerl_sv_catpvn_flagsPerl_sv_recode_to_utf8Perl_newSVsv_flagssigaction@GLIBC_2.17getgrent@GLIBC_2.17Perl_sv_2pv_nolenPL_sortstash__stack_chk_guard@GLIBC_2.17PL_in_evalPerl_op_convert_listPerl_newSVobjectPerl_wrap_infix_pluginPerl_av_shiftPL_efloatsizePerl_gv_fetchpvmemcpy@GLIBC_2.17Perl_sv_set_boolPerl_gp_freegetgid@GLIBC_2.17Perl_sv_2mortalPerlIOStdio_writePerl_sv_collxfrmPerl_vnormalPL_in_load_modulePerl_to_uni_titlePerl_sv_vsetpvfnPL_compilingPL_SB_invlistPerl_do_gv_dumpPerl_op_refcnt_lockPL_savestack_ixPerl_sv_setrv_noincPL_hash_rand_bits_enabledPerl_pv_prettyPL_DBsignalPerlIOStdio_flush__ctype_b_loc@GLIBC_2.17setnetent@GLIBC_2.17Perl_pv_uni_displayPL_sortcopPerl_is_utf8_char_helper_PL_exit_flagsfread@GLIBC_2.17XS_re_regnamesPerl_sv_usepvn_mgPerl_newPROGsymlink@GLIBC_2.17Perl_hv_clear_placeholdersPerl_sv_setpvPerlIOStdio_unreadPL_last_in_gvPerlIO_parse_layersgetnetent@GLIBC_2.17Perl_sv_eq_flagsXS_NamedCapture_FETCHgethostbyname@GLIBC_2.17Perl_valid_identifier_pvnPL_lastfdPL_mainstackPerl_vload_modulePerl_newGPmemmem@GLIBC_2.17getpriority@GLIBC_2.17Perl_gv_fetchsvPerl_sv_pos_u2b_flagsPerl_class_add_ADJUSTPL_srand_override_nextPerl_my_atof3PL_efloatbufPerl_ck_entersub_args_proto_or_listPerl_despatch_signalsPerl_av_undefPerl_hv_scalarPerl_ck_entersub_args_listPerl_scan_numPerlIOBase_noop_failPerlIO_pendingPerl_my_setenvPerl_emulate_cop_ioPerl_PerlIO_restore_errnosetreuid@GLIBC_2.17Perl_optimize_optreePerl_sv_grow_freshPerl_vstringifyPerl_vfatal_warnerPL_patchlevelPerl_mro_method_changed_inPerl_rcpv_copyPerl_pregfreePerl_newANONSUBPL_checkav_saverealloc@GLIBC_2.17PerlIOUnix_refcnt_deccos@GLIBC_2.17Perl_newLOGOPPerl_newGVOPPL_setlocale_bufsigismember@GLIBC_2.17Perl_formPerl_hv_deletePerl_newGVgen_flagsPerlIOUnix_oflagsPerl_regpropPL_numeric_radix_svflock@GLIBC_2.17PerlIOBuf_get_basePerl__invlist_invertXS_builtin_nanPerl_newSVhekPL_main_startPerl_cv_ckproto_len_flagsdup2@GLIBC_2.17Perl_PerlIO_flushstrftime@GLIBC_2.17Perl_utf16_to_utf8_basePerl_gv_fetchpvn_flagsstrrchr@GLIBC_2.17PerlIOStdio_seekPerl_my_snprintfdirfd@GLIBC_2.17Perl_sv_refPerlIOUnix_openPerl_newARGDEFELEMOPPerl_hv_iternextsvPerl_refcounted_he_new_svPL_padname_constPerl_op_scopePerl_leave_adjust_stacks__ctype_toupper_loc@GLIBC_2.17Perl_newPADNAMEpvnPL_body_rootsXS_DynaLoader_dl_load_filePL_modglobalPerl_sv_dumpPerl_gmtime64_rPerl_grok_binXS_Internals_stack_refcountedmkstemp64@GLIBC_2.17Perl_free_tmpsmktime@GLIBC_2.17Perl_hv_storePL_filemodePerl_refcounted_he_incPL_compcvPerl_newSVpvn_sharePerl_newDEFSVOPmemrchr@GLIBC_2.17Perl_scan_octPL_utf8_perl_idstartPerl_save_adeletePL_watch_pvxexecl@GLIBC_2.17PL_delaymagic_egidPL_evalseqPerl_hv_exists_entPerl_packlistPerl_whichsig_pvnPerl__invlistEQselect@GLIBC_2.17PL_stack_spPerlIOPending_closePerlIOBuf_openPerl_prescan_versionPerl_hv_store_flagsPerlIO_cleanupPerl_hugereaddir64@GLIBC_2.17Perl_reg_named_buffPerl_sv_force_normalPerl_PerlIO_get_bufsiz__cxa_finalize@GLIBC_2.17XS_UNIVERSAL_isaop_class_namesPL_CCC_non0_non230PerlIO_canset_cntsleep@GLIBC_2.17Perl_taint_properfreopen64@GLIBC_2.17Perl_more_svPL_no_helem_svPL_user_def_propsgp_flags_imported_namesshutdown@GLIBC_2.17PL_variesPerl_is_utf8_FF_helper_PL_in_diehookPerl_debstackPerl_sv_peekPL_oldnamePerl_newAVavPerl_gv_init_pvnPL_valid_types_IV_setPerl_ninstr_ITM_deregisterTMCloneTablePL_errorsPerl_gv_fetchmeth_pvn_autoloadPerl_PerlIO_readPerl__invlist_dumpPL_savestackPerl_reentrant_freestrstr@GLIBC_2.17Perl_looks_like_numberPerlIOStdio_eofPerl_sv_collxfrm_flagsPerl_noperl_diePerl_get_and_check_backslash_N_namePL_infix_pluginPerl__invlist_searchPL_toptargetPL_numeric_standardPerl_newSVsvPL_scopestacksigaddset@GLIBC_2.17perl_allocXS_DynaLoader_dl_unload_filePerl_newXS_deffilePerl_reallocshmat@GLIBC_2.17PerlIOBase_binmode_exit@GLIBC_2.17Perl_sv_setuvPerlIOPending_set_ptrcntPL_UpperLatin1PL_curpmXS_UNIVERSAL_import_unimportPerl_try_amagic_bingetsockopt@GLIBC_2.17Perl_op_lvalue_flagsPerlIO_pushPerl_get_op_descsPerl_save_hptrPerl_sv_clearXS_builtin_created_as_numberPerl_newSVOPPL_bincompat_optionsPerl_save_opPerl_save_rcpvdup@GLIBC_2.17Perl_runops_standardPL_signalsPerl_reg_named_buff_firstkeyPerl_hv_riter_pPerl_vmessPL_taint_warnPL_numeric_underlying_is_standardPerl_parse_blockPerlIOBase_flush_linebufPerl_dounwindPerl_PerlIO_context_layersPerl_softref2xvlog@GLIBC_2.29Perl_grok_infnanXS_builtin_trimumask@GLIBC_2.17Perl_rsignal_statePL_min_intro_pendingPerl_nothreadhookPerl_cv_set_call_checkerPerl_sv_setpvn_mgendprotoent@GLIBC_2.17crypt@XCRYPT_2.0Perl_sv_cmpPerl_hv_dumpPerl_mbtowc_PL_localizingPL_opPerl_sv_reftypePL_stashcachePerl_sv_catsvPL_DBtracePerl_sv_can_swipe_pv_bufPerl_intro_myPL_hash_seed_wPerl_vcmpPerl_to_uni_lowerPL_tmps_maxPL_op_sequencePerl_parse_fullstmtPerl_PerlIO_save_errnoPerl_mg_copy__open64_2@GLIBC_2.17Perl_sv_derived_from_svPL_reg_extflags_name_ITM_registerTMCloneTableclosedir@GLIBC_2.17PL_warn_uninit_svPerl_warn_svPerl_pv_escapePerl_gv_name_setPerl_gv_dumpPerl_xs_handshakePL_scopestack_namePerl_refcounted_he_fetch_pvnPerl_cntrl_to_mnemonicPerlIOStdio_filenoPerl_do_sv_dumpPerl_utf8_to_bytesPerl_reg_numbered_buff_fetch_flagsPerl_sv_2pvutf8_nolenPerl_wrap_keyword_pluginPerl_callocstrncmp@GLIBC_2.17Perl_save_I32getnetbyaddr@GLIBC_2.17Perl_av_create_and_unshift_onePerlIO__closePerl_newIOPerl_sv_nounlockingPerl_sv_doesPL_strtabPL_beginav_savestderr@GLIBC_2.17PL_minus_EPL_utf8_xidcontPerl_parse_arithexprPL_savebeginPL_curpm_underfmod@GLIBC_2.17PL_strategy_mkstempPL_debstashPerl_mro_set_private_dataPerl_newSVREFabort@GLIBC_2.17msgsnd@GLIBC_2.17Perl_PerlIO_get_cntPerlIO_define_layerPL_delaymagicPerl_save_hdeletePerl_mro_set_mroPerl_sortsv_flagscv_flags_namesPL_NoPL_in_clean_allPerl_mini_mktimePL_minus_pPL_psig_ptrPL_watchaddrPL_strategy_pipePL_markstack_maxPerl__is_uni_perl_idcontPL_hintgvsecond_sv_flags_namesPerl_sys_termPerl_PerlIO_eofPerl_ptr_table_fetchPL_veto_cleanupPerl_refcounted_he_new_pvnPL_eval_rootPerl_padnamelist_fetchpmflags_flags_namesfrexp@GLIBC_2.17Perl_newCONSTSUB_flagsPerlIO_default_bufferPerl_sv_catpvPerl_av_reifyXS_NamedCapture_TIEHASHPL_anPL_preambleavPerl__to_utf8_upper_flagsPerl_sv_regex_global_pos_setPerl__is_utf8_perl_idcontPerl_qerrorPerl_op_wrap_finallyPerl_mallocPerl_pad_add_name_pvPL_DBlineendservent@GLIBC_2.17Perl_sv_replacePL_warn_uninitPerl_gv_fetchmeth_pvnPerl_is_utf8_char_bufPerl_my_forkPerl_finalize_optreePerl_save_pushptrptrboot_DynaLoaderPL_simplePerl_sv_2pvutf8_flagsPL_minus_lstrspn@GLIBC_2.17Perl_av_iter_pPerl_gv_HVaddPerl_my_exit__sigsetjmp@GLIBC_2.17Perl_sv_setref_pvPerl_PerlIO_setlinebufPerlIORaw_pushedPerl_atfork_lockPL_op_private_labelsPerl_csighandler3Perl_sv_2ivPerl_isinfnanrmdir@GLIBC_2.17Perl_infix_plugin_standardPL_collation_ixferror@GLIBC_2.17Perl_sv_rvweakenPerl_newANONHASHPerlIO_stdstreamstelldir@GLIBC_2.17Perl_gv_efullname4Perl_magic_dumpPerl_sys_initPerl_pregfree2PL_custom_op_namesclearenv@GLIBC_2.17Perl_setdefoutPL_markstack_ptrPL_no_wrongrefPL_shutdownhookfgetc@GLIBC_2.17XS_constant__make_constfflush@GLIBC_2.17Perl_sv_vstring_getPL_minus_cPL_taintedPerl_newMYSUBPerl_scan_strPL_nanPerl_do_hv_dumpPerl_gv_stashsvPerl_newXS_flagsPerl_refcounted_he_new_pvperl_constructPerlIO_findFILEsetresgid@GLIBC_2.17Perl_vnumifyPerl_sv_vsetpvfPL_sighandler1pPL_no_securityPerl_yylexPL_mbrlen_pstowupper@GLIBC_2.17semctl@GLIBC_2.17setservent@GLIBC_2.17PL_markstackPerl_av_extendPL_curinterppause@GLIBC_2.17Perl_PerlIO_closePL_peeppPerl_sv_pos_b2uPerl__inverse_foldsPL_foldPL_comppad_name_fillPerlIO_clonePerl_sv_cmp_locale_flagsPerl_sv_setrv_incPerlIOStdio_readPL_no_dir_funcPL_eval_begin_nest_depthPL_stderrgvPL_op_seqPerl_sv_2pvbytePerl_save_mortalizesvPerl_newWHENOPPerl_is_lvalue_subPerl_pop_scopePL_debugPerlIO_popgetuid@GLIBC_2.17PL_no_funcPL_comppad_name_floorPerl_newUNOPPerlIOBuf_unreadPL_opfreehookPerl_newSVrvPerl_rcpv_freembtowc@GLIBC_2.17Perl_cvstash_setregexp_core_intflags_names__errno_location@GLIBC_2.17PL_regnode_namePerlIOUnix_writePerl_mro_registerPerl_sv_mortalcopy_flagsPL_scopestack_maxPerl_save_freesvPL_custom_opsPerl_sv_upgradePL_beginavPL_errgvPL_sv_countPL_in_warnhookPL_utf8_charname_continuePL_curstackinfoPerl_more_bodiesPerl__byte_dump_stringsemget@GLIBC_2.17prctl@GLIBC_2.17XS_re_regnameXS_DynaLoader_dl_find_symbolPerl__add_range_to_invlistPL_sighandler3pPerl_sv_isa_svPL_curstackPerlIOBuf_get_ptrPerl_find_rundefsvPerl_set_numeric_underlyingPerlIOStdio_errorPerl_save_vptrPerl_get_re_argPerlIO_binmodePerlIO_unixPL_strategy_dup2Perl_hv_store_entPerl_cast_i32Perl_wrap_op_checkerPerlIOBase_pushedPL_extended_cp_formatPerl_save_padsv_and_mortalizePerl_warnerPerl_gv_const_svsigprocmask@GLIBC_2.17PL_SCX_invlistXS_DynaLoader_dl_errorPerl_doing_taintstdin@GLIBC_2.17Perl_gv_SVaddPerl_call_svPerl_lex_discard_toeaccess@GLIBC_2.17Perl_hv_undef_flagsPL_endavPerl_sv_setsv_flagsPerl_refcounted_he_fetch_svPerl_sv_setref_nvPerl_filter_readPerl_av_storesignal@GLIBC_2.17Perl_sv_dec_nomgPL_main_rootXS_PerlIO_get_layersPerl_sv_pvn_force_flagsPerl_sv_get_backrefsXS_builtin_func1_voidPerl_cvgv_setsetgrent@GLIBC_2.17semop@GLIBC_2.17sethostent@GLIBC_2.17PL_globalstashPerlIOStdio_modePerlIOCrlf_binmodePerl_set_caret_XPerlIO_getcsyscall@GLIBC_2.17Perl_sv_isaPerl_gv_autoload_pvPerlIO_openPerl_sv_setpvnPL_collation_standardPerl_rcpv_newfstat64@GLIBC_2.33XS_NamedCapture_FIRSTKEYPerl_mro_get_linear_isarewinddir@GLIBC_2.17Perl_dump_formPerl_save_freepvfork@GLIBC_2.17Perl_sv_setpv_bufsizePerl_sv_utf8_upgradeshmdt@GLIBC_2.17Perl_reentrant_retryPerl_grok_numeric_radixPerl_newLOOPEXPerlIOCrlf_get_cntunsetenv@GLIBC_2.17setlocale@GLIBC_2.17Perl__is_utf8_FOOPerl_was_lvalue_subPerl_gv_fetchfilePerlIOStdio_setlinebufPL_chopsetPL_valid_types_PVXPerl_pregexecgetspnam@GLIBC_2.17dlopen@GLIBC_2.34PL_watchokPerl_sv_free2Perl_hv_fetchPL_HasMultiCharFoldPL_EXACTFish_bitmaskPerl_op_prepend_elem__h_errno_location@GLIBC_2.17PerlIO_setposPerl_stack_growPerlIOStdio_pushedPerl_block_gimmePL_valid_types_RVPerl_sv_mortalcopylisten@GLIBC_2.17getservbyport@GLIBC_2.17Perl_my_failure_exitPL_csighandlerpPL_origfilenamePL_perlio_debug_fdPerl_ptr_table_freePerl_my_strftime__stack_chk_fail@GLIBC_2.17PL_maxsysfdPL_strategy_acceptPerlIO_has_basePerl_newPADNAMEouterPerl_gv_IOaddPerl_gv_fetchfile_flagsgethostbyaddr@GLIBC_2.17Perl_regcurlyPL_profiledataPerl_op_freePerlIOBuf_tellPL_GCB_invlistPL_fold_localePerl_pad_add_name_pvnPL_numeric_underlyingPerlIO_fdupopenPerlIOStdio_closePL_DBgvfchdir@GLIBC_2.17PL_dbargsPL_valid_types_IVXPL_delaymagic_gidPerlIOUnix_filenoPL_no_aelemPerl_custom_op_registerPerl_cast_ivPL_strategy_openPerl_sv_setpvf_mgPerl_newSVpv_sharePerl_vwarnPL_no_symref_svPerl_sv_2uv_flagsXS_builtin_import__vfprintf_chk@GLIBC_2.17Perl_apply_builtin_cv_attributesPerl_newANONLISTPL_sig_pendingPerl_op_contextualizePerl_save_I8Perl_switch_to_global_localePerl_is_in_locale_category_socketpair@GLIBC_2.17Perl_sv_newmortalPerlIO_resolve_layersPerl_op_force_listPerl_runops_debugPerl_sv_2pvPerl_regdumpPerl_sv_incPerl_av_fetchPerl_unpackstringPerl_av_fillPerl_sv_2pvbyte_flagsPerl_lex_stuff_pvnPerl_class_wrap_method_bodyPL_sigfpe_savedfcntl64@GLIBC_2.28PerlIOUnix_refcntPerl_sv_setnvPerl_blockhook_registerPL_exitlistlenPerl_ckwarn_dPerlIOBase_eoflocaleconv@GLIBC_2.17Perl_newOPPerl__is_utf8_perl_idstartPerl_mro_get_from_namePL_curcopPerlIOBase_errorPL_warn_nosemisetgroups@GLIBC_2.17Perl_get_deprecated_property_msgPerl_my_socketpairPerl_localeconvPerl_parse_fullexprPerl_hv_magicPL_infPerl__is_uni_FOOPL_firstgvPerl_sv_set_falsePL_in_utf8_CTYPE_localePerl_xs_boot_epilogPL_AboveLatin1strpbrk@GLIBC_2.17PerlIO_layer_fetchPerl_pad_findmy_pvPerl_sv_eqPL_csighandler1pftruncate64@GLIBC_2.17PL_rsPL_utf8_idcontPerl_newBINOPPerl_my_fflush_allPerl_sv_catsv_flags__longjmp_chk@GLIBC_2.17Perl_perly_sighandlerPerl_debPerl_form_cp_too_large_msgPerl_op_sibling_splicePerl_cv_set_call_checker_flagsPerl_newDEFEROPPL_destroyhookPerl_savesharedpvnPerl_init_stacksPerl_gv_overridePL_statgvPL_op_private_bitdefsPerl_save_helem_flagsPL_sv_constsPerl_newTRYCATCHOPPerl_dump_vindentPerl_newMETHOP_namedPerl_gv_AVaddPerl_sv_2nv_flagsendnetent@GLIBC_2.17Perl_sv_lenPerl_hv_placeholders_getPL_langinfo_svPerl_sv_setref_ivPerlIO_apply_layeraPL_regnode_infoPerl_sv_2pvutf8Perl_mg_findextPerl_load_modulePL_subversionfeof@GLIBC_2.17PL_statnamePerl_sync_localePerl_newFOROPPL_clocktickPerl_custom_op_get_fieldPerl_sv_setrv_noinc_mgPerl_find_runcvXS_utf8_native_to_unicodePerl_sv_destroyablePL_defgvPerl_my_pclosePerl_pv_displayPerl_save_aelem_flagsmemcmp@GLIBC_2.17Perl_get_db_subperl_destructPL_breakable_sub_genPerl_sv_vcatpvf_mgPL_def_layerlistPerl_call_methodPL_bodytargetsetegid@GLIBC_2.17PL_mod_latin1_ucPerl_PerlIO_filenomatch_unipropPerl_regexec_flagsmalloc@GLIBC_2.17Perl_newSTATEOP__getgroups_chk@GLIBC_2.17PL_diehookPerl_op_refcnt_unlockPL_tmps_floorPL_strict_utf8_dfa_tabgetnetbyname@GLIBC_2.17PL_unsafeXS_builtin_falsePerlIOBuf_get_cntPerl__new_invlist_C_arrayPerl_hv_iterkeysvPerl_utf8n_to_uvunisigemptyset@GLIBC_2.17Perl_safesyscallocPL_EXACT_REQ8_bitmaskPerl_parse_subsignaturePerl_reg_numbered_buff_fetchPerl_sv_catpv_mgPerl_newCONSTSUBPerl_gv_fetchmeth_sv_autoloadPerl_sv_set_undefPL_inplacePerl_re_op_compilePL_core_reg_enginePerl_sv_setpvfPerl_op_parentPerl_op_cleargetpgid@GLIBC_2.17Perl_class_prepare_initfield_parsePerl_sv_string_from_errnumPL_warn_nlgeteuid@GLIBC_2.17first_sv_flags_namesPerl_PerlIO_errorPL_in_utf8_COLLATE_localePL_utf8_toupperseteuid@GLIBC_2.17Perl_hv_bucket_ratioPerl_save_pushptrPL_fold_latin1PerlIO_bytePerl_ck_warner_dPerl__to_utf8_title_flagsPerl_ptr_table_storesend@GLIBC_2.17Perl_save_set_svflagsPerl_newSVPerl_warn_problematic_localePerl_save_strlenPerl_noshutdownhookPerlIO_utf8bind@GLIBC_2.17Perl_sv_pvpipe2@GLIBC_2.17Perl_debprofdumpPL_doswitchesPerl_sv_nolockingPerl_gv_init_svXS_mro_method_changed_inPerl_newLISTOPnendpwent@GLIBC_2.17Perl_mg_setPerl_regfree_internalPerlIO_tab_svPL_forkprocessPerl_pad_pushPerl_sv_resetPerl_isSCRIPT_RUNPerlIO_isutf8Perl_hv_rand_setPerl_sv_vcatpvfnPerl_sv_langinfoPL_custom_op_descsPerl_eval_svPerl_save_itemPerl_debopPerl_sv_2ioPL_body_arenasPL_reg_intflags_namePL_initavPerlIO_default_layerPerl_messPerl_safesysreallocPerl_do_uniprop_matchPerl_sv_vcatpvfwaitpid@GLIBC_2.17XS_DynaLoader_dl_install_xsubPL_perlio_fd_refcnt_sizePerlIOCrlf_pushedfclose@GLIBC_2.17Perl_getcwd_svPerl_try_amagic_unPerlIO_modestrPerl_utf8_lengthisatty@GLIBC_2.17PerlIO_clone_listsetpgid@GLIBC_2.17Perl_hv_fetch_entioctl@GLIBC_2.17Perl_sv_setuv_mgPerl_sv_setrv_inc_mgPerl_moreswitchesPerl_ptr_table_splitPerl_newAVREFPerl_get_cvn_flagsPerl_newSVivPerl_save_shared_pvrefPerl_csighandler1Perl_do_magic_dumpPL_padixPerl_lex_read_spacePL_no_usymPerl_mro_get_private_dataPerl_cop_store_labelPerl_save_boolPerl_newSVnvXS_re_regnames_countPerl_set_contextPL_in_utf8_turkic_localePerlIOScalar_eofPerl_sv_vsetpvf_mgPL_valid_types_NV_setPL_restartjmpenvPerl_hv_common_key_lenPerl_sv_unrefPerl_do_pmop_dumpPL_no_localize_refPL_DBcontrolPL_LB_invlistPerlIO_rewindPerl_re_intuit_stringPL_registered_mrosPL_numeric_namePerl_grok_bslash_xPerlIO_teardownPerl_newSV_falsePerl_get_avPerl_hv_itervalPL_statcachePerl_reg_named_buff_allhv_flags_namesgetlogin@GLIBC_2.17Perl_langinfogetpeername@GLIBC_2.17fseeko64@GLIBC_2.17Perl_croak_popstackXS_utf8_unicode_to_nativePerl_hv_fillPerl_lex_startPL_psig_pendPerl_sv_utf8_downgradePL_srand_overridePerl_my_popen_listPL_dowarnPerl_newMETHOPPerl_PerlIO_get_ptrXS_Internals_hv_clear_placeholdPerl_share_hekPerl_save_freeopPerl_sv_setpvn_freshmsgget@GLIBC_2.17PerlIOPending_seekXS_utf8_upgradePerl_grok_number_flagsPerl_pmop_dumpPerl_set_numeric_standardPerl_sv_report_usedPL_collxfrm_basePL_magic_vtablesPL_perldblstat64@GLIBC_2.33PL_rpeeppPerl_gv_add_by_typePL_runops_stdPerl_csighandlerPL_utf8_perl_idcontPL_max_intro_pendingPerlIOCrlf_set_ptrcntPL_op_maskstrcmp@GLIBC_2.17Perl_newFORMPerl_block_startPerl_sv_cmp_localePerl_get_cvPerl_class_prepare_method_parsePL_op_private_bitfieldssqrt@GLIBC_2.17Perl_delimcpy_no_escapePL_sublinePerlIO_tmpfile_flagsPerl_gv_fetchmethod_pv_flagsPerl_mg_findPL_op_descPerl_foldEQ_utf8_flagsPL_hexdigitPerl_pad_allocPL_latin1_lcPerlIO_list_freePerl_my_clearenvPerl_gv_fetchmeth_pvPL_sig_namePerl_sv_del_backrefXS_UNIVERSAL_canPerl_newAVhvsin@GLIBC_2.17Perl_mortal_svfunc_xPL_magic_vtable_namesPerl_apply_attrs_stringPerl_padnamelist_storePL_blockhooksPerl_sv_regex_global_pos_getXS_builtin_created_as_stringPL_multideref_pcPerl_sv_isobjectgetegid@GLIBC_2.17opendir@GLIBC_2.17Perl_gv_efullname3__memcpy_chk@GLIBC_2.17Perl_newAVPL_sub_generationPerl_utf8_to_utf16_basePerl_uvuni_to_utf8Perl_newSVhek_mortalPL_laststypePL_comppadgetpwent@GLIBC_2.17Perl_save_re_contextPL_top_envPerl_refPerl_Slab_FreePerl_my_lstat_flagsPerl_my_strtodPerl_force_out_malformed_utf8_message_Perl_gv_fetchmethod_sv_flagsPerlIOBase_noop_okcalloc@GLIBC_2.17PL_wcrtomb_psPerl_sv_newrefgetenv@GLIBC_2.17Perl_init_i18nl10nPerl_PerlIO_unreadPerl_newNULLLISTPL_curstnamePL_no_modifyPL_utf8_markPL_uudmapsetsockopt@GLIBC_2.17PL_defoutgvPerl_sv_growPerl_mro_meta_initPerlIO_tmpfilePerl_sv_2pvbyte_nolenPerl_upg_versionPerl_save_aptrPerlIOUtf8_pushedPerl_cv_get_call_checkerexecv@GLIBC_2.17op_flags_namesPerl_PerlIO_writePerl_grok_atoUVPL_envgvPerl_newPVOPPerlIOPending_pushedPerl_whichsig_pvPL_Private_Usegettimeofday@GLIBC_2.17Perl_PerlIO_stdinPL_e_scriptPerl_report_uninitPerl_dump_evalPerl_save_gpPL_SvPerl_sv_derived_from_pvPerlIOPending_fillPerl_sv_len_utf8_nomgPL_reg_curpmPerl_suspend_compcvshmctl@GLIBC_2.17PL_extended_utf8_dfa_tabPL_restartopPerl_reentrant_initstrchr@GLIBC_2.17Perl_sv_getsPerlIO_releaseFILEPerl_do_aexecPL_hv_fetch_ent_mhPerl_av_popPerlIOBase_closePerl_parse_termexprPerl_class_apply_attributesPerl_grok_octPL_origargcPL_valid_types_NVXPerl_sv_derived_from_pvnPerl_new_stackinfo_flagsPL_no_sock_funcXS_UNIVERSAL_DOESPL_globhookPerl_sv_magicextXS_re_regexp_patternPerlIOCrlf_unreadPerl_refcounted_he_freePL_DBcvPerl_safesysmallocPerl_newSLICEOPgetgrnam@GLIBC_2.17Perl_newCVREFPerl_amagic_deref_callPerl_gv_handlermkdir@GLIBC_2.17Perl_sv_copypvPerl_hv_delete_entPL_cv_has_evalftello64@GLIBC_2.17perlsio_binmodePerl_hv_placeholders_setPerl_sv_copypv_flagsPerl_dump_subPerlIO_getnamePL_hook__require__beforePerl__invlist_intersection_maybe_complement_2ndPerlIOUnix_refcnt_incPerl_reg_qr_packageXS_utf8_is_utf8PL_strxfrm_NUL_replacementtowlower@GLIBC_2.17Perl_seedPerl_savestack_grow_cntPerl_newSVpvexecvp@GLIBC_2.17Perl_sv_regex_global_pos_clearPL_scopestack_ixPerl_sv_strftime_tmPerl_amagic_callPerl_whichsig_svPerl_lex_grow_linestrPerl_pad_findmy_pvnPL_lastgotoprobePerl_class_setup_stashPerl_cv_get_call_checker_flagsgetgrgid@GLIBC_2.17Perl_op_append_elemmemchr@GLIBC_2.17PL_unlockhookPerl_sv_catpvn_mgPerl_valid_identifier_svsysconf@GLIBC_2.17PL_runops_dbgPerl_parse_stmtseqPL_hash_state_waccept@GLIBC_2.17Perl_uiv_2bufXS_utf8_validPL_no_symrefPerl_save_pptrPerlIOBase_dupPerl_localtime64_rPerl_reg_numbered_buff_storePerl_savestack_growshmget@GLIBC_2.17Perl_mg_sizemodf@GLIBC_2.17Perl_sv_utf8_upgrade_flags_growXS_NamedCapture_flagsPerl_gp_refPerl_PerlIO_set_ptrcntPerlIOBuf_poppedPerl_setlocalePerl_sv_pos_b2u_flagsPerlIOUnix_seekPerl_av_pushPerl_sv_cat_decodeXS_builtin_infaccept4@GLIBC_2.17Perl_sv_usepvn_flagsPerl_sv_2iv_flagsPerl_mortal_destructor_svPL_perlio_fd_refcntPerl_amagic_appliesPerl_tmps_grow_pPerl_PerlIO_get_baseclearerr@GLIBC_2.17surrogate_cp_formatXS_re_is_regexpPL_strxfrm_is_behavedrenameat@GLIBC_2.17Perl_to_uni_upperPerlIO_opennPerl_repeatcpyPL_do_undumpPL_utf8cachePerl_av_unshiftfchown@GLIBC_2.17Perl_validate_protoPL_tmps_ixPL_stack_maxPerl_my_atofPerlIOBuf_dupPL_WARN_NONEPerl_gv_stashpvnPerl_newASSIGNOPatan2@GLIBC_2.17XS_DynaLoader_dl_undef_symbolsXS_PerlIO__Layer__NoWarningsPL_no_myglobPL_XPosix_ptrsunlinkat@GLIBC_2.17PerlIO_vprintfPL_statusvalue_posixfree@GLIBC_2.17Perl_croak_svPerl_gv_stashpvPerl_av_arylen_pPerl_grok_numberPerl_sv_unmagicextPL_InMultiCharFoldPerl_PerlIO_clearerrPerl_fatal_warnerPerl_rpp_free_2_PerlIOUnix_tellPerl_block_endPerl_mg_find_mglobPL_memory_wrapdlsym@GLIBC_2.34Perl_sv_catsv_mgXS_builtin_load_modulePerl_re_intuit_startPerl_croak_xs_usagePL_regmatch_slabPL_pad_reset_pendingPL_uuemapstrerror@GLIBC_2.17PL_mmap_page_sizePL_op_private_validPerl_new_versionPerl_sv_setref_uvPerl_grok_hexPerl_newHVREFPerl_croakPerl_cast_ulongPerl_reg_named_buff_scalarPerl_strxfrmdeprecated_property_msgsPerl_sv_2cvPL_keyword_pluginPerlIOPending_flushPerl_sv_utf8_encodePerlIO_list_pushPerl_PerlIO_stderrendgrent@GLIBC_2.17Perl_sv_pvutf8n_forcePerl_padnamelist_freePerl_sv_does_pvnPerl_safesysfreefwrite@GLIBC_2.17PL_DBsubPerl_call_pvPerl_newGIVENOPPerlIOCrlf_flushPerl_push_scopePerl_cast_uvPerlIOStdio_tell__ctype_get_mb_cur_max@GLIBC_2.17Perl_taint_envPerl_my_lstatPerl_newXSPerl_op_append_listPerl_reg_numbered_buff_lengthPerlIOUnix_readPerl_hv_commonPL_cop_seqmaxPerl_save_pushi32ptrPerl_vwarnerPerlIOBase_setlinebufPL_ctype_namePL_InBitmapPerl_mg_freePerl_newSUBPerl_sortsvPerl_multideref_stringifyPerl_newSVuvPL_delaymagic_euidgetprotobyname@GLIBC_2.17Perl_sv_2boolPerl_grok_bslash_cPerl_save_clearsvPerl_newPADNAMELISTPerl_hv_iterkeyPerl_uvoffuni_to_utf8_flags_msgsPerl_re_compilePerl_sys_init3Perl_newSV_truePL_magic_dataPerl_unshare_hekPerl_sv_taintedchroot@GLIBC_2.17PL_scratch_langinfomemmove@GLIBC_2.17PerlIO_ungetcPerl_scan_versionPL_random_statePerl_multiconcat_stringifyfutimes@GLIBC_2.17PerlIO_crlfPerl_pad_findmy_svPL_charclassPerl_newHVPerlIO_rawPL_minus_aPerl_sv_decPerl_cxincsetpwent@GLIBC_2.17Perl_hv_name_setPL_savestack_maxPerlIO_getposPL_known_layersPerl_sv_catpvnPerl_reentrant_sizePL_internal_random_statePL_ors_svPerl__to_fold_latin1Perl_hv_delayfree_entPerl_sv_rvunweaken__environ@GLIBC_2.17Perl_dup_warningsPL_utf8_foldclosuresPL_padname_undefPerl_gv_fullname4connect@GLIBC_2.17Perl_savetmpsPerl_utf8_to_uvuniPL_xsubfilenamePerl_refcounted_he_chain_2hvPerl_cv_const_svPerlIO_sv_dupPerlIO_allocatePerl_sv_2nvPerl_resume_compcvPL_sv_arenarootPerl_sv_derived_fromPerl_utf16_to_utf8PL_block_typePL_minus_nPL_curcopdbPerl_sv_pvn_forcePerl_save_I16pow@GLIBC_2.29getprotoent@GLIBC_2.17Perl_die_svPerl_lex_next_chunkPerl_str_to_versionPerl_gv_fetchmethod_autoload__ctype_tolower_loc@GLIBC_2.17strlen@GLIBC_2.17Perl_save_generic_svrefPL_sv_placeholderPerlIOUnix_dupPerl_sv_catpvf_mg__sprintf_chk@GLIBC_2.17PL_ppaddrPerlIO_intmode2strPerl_cv_clonePL_strategy_socketpairPerl_newSVpvfPerl_ckwarnPL_op_namePerl_unsharepvnPerl_mro_package_movedPerl_init_tmPerlIOBase_openPerl_do_op_dumpPL_warn_localePerl_sv_strftime_intsPL_strategy_socketPerl_start_subparsePL_warnhookPL_main_cvPerl_av_existsPerl_grok_bslash_oPL_sharehookfopen64@GLIBC_2.17ungetc@GLIBC_2.17PL_incgvPL_naPerl_sv_uni_displayPL_varies_bitmaskPerl_newSVpvnPerl_newATTRSUB_xPL_delaymagic_uidPerl_dump_allPerl_class_add_fieldPerl_new_stackinfoPerl_newSVpvn_flagsPerl_do_sprintfXS_PerlIO__Layer__findPerl_sv_pos_u2bPerl_op_classPL_versionPL_WB_invlistPerl_refcounted_he_fetch_pvPL_unitcheckav_savePL_debug_padPerl_fbm_instrPL_utf8_tosimplefoldPerl_hv_eiter_setPerl_hv_placeholders_pPerl_markstack_growPL_runopsPL_stack_basePerl_gv_checkPerlIOUnix_closeendhostent@GLIBC_2.17Perl_sv_setiv_mgPL_revisiongetsockname@GLIBC_2.17Perl_locale_panicPerl_skipspace_flagsPL_hash_rand_bitsPL_Zerosetpriority@GLIBC_2.17PL_op_private_bitdef_ixPerl_pad_add_anonPerlIOBuf_readXS_Internals_SvREFCNTXS_utf8_downgradePerlIOBase_filenoPerl_save_freercpvPerl_newRVinjected_constructorPerl_mg_free_typePerl_cx_dumpPerl_ptr_table_newmemset@GLIBC_2.17PL_utf8_tolowerPerl_mg_magicalPerl_debstackptrsPerl_PerlIO_set_cntPerl_sv_sethekPerl_rsignalPerl_sv_backoffPerl_Gv_AMupdatePerl_dowantarrayPL_origalenPL_parserPerl_save_destructor_xPL_formtargetXS_Internals_SvREADONLYPL_deBruijn_bitpos_tab32Perl_sv_2pv_flagsPerl_sv_magicPerl_my_atof2Perl_sv_utf8_decodesetregid@GLIBC_2.17dlclose@GLIBC_2.34PL_utf8skipPerl_lex_stuff_pvPerl_lex_read_toPerlIO_stdoutfPerl_init_named_cv.symtab.strtab.shstrtab.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.data.rel.ro.dynamic.got.got.plt.data.bss.comment$.o08 22 @sHoRRXUoX`X`daa"nB[xs00<~p 7 7tFS7S7 v:v9v:v9v:v9o;o:q;q: ;:pX;X:8;:Ho0:-:  @<[PA_invlistUNI_INPC__TOPANDRIGHT_invlistUNI_INPC__TOPANDLEFTANDRIGHT_invlistUNI_INPC__TOPANDLEFT_invlistUNI_INPC__TOPANDBOTTOMANDRIGHT_invlistUNI_INPC__TOPANDBOTTOMANDLEFT_invlistUNI_INPC__TOPANDBOTTOM_invlistUNI_INPC__TOP_invlistUNI_INPC__RIGHT_invlistUNI_INPC__OVERSTRUCK_invlistUNI_INPC__NA_invlistUNI_INPC__LEFTANDRIGHT_invlistUNI_INPC__LEFT_invlistUNI_INPC__BOTTOMANDRIGHT_invlistUNI_INPC__BOTTOMANDLEFT_invlistUNI_INPC__BOTTOM_invlistUNI_INPAUCINHAU_invlistUNI_INPAHAWHHMONG_invlistUNI_INOSMANYA_invlistUNI_INOSAGE_invlistUNI_INORIYA_invlistUNI_INOLONAL_invlistUNI_INOLDUYGHUR_invlistUNI_INOLDTURKIC_invlistUNI_INOLDSOGDIAN_invlistUNI_INOLDPERSIAN_invlistUNI_INOLDPERMIC_invlistUNI_INOLDITALIC_invlistUNI_INOLDHUNGARIAN_invlistUNI_INOGHAM_invlistUNI_INNYIAKENGPUACHUEHMONG_invlistUNI_INNUSHU_invlistUNI_INNKO_invlistUNI_INNEWTAILUE_invlistUNI_INNEWA_invlistUNI_INNANDINAGARI_invlistUNI_INNAGMUNDARI_invlistUNI_INNABATAEAN_invlistUNI_INMYANMAR_invlistUNI_INMULTANI_invlistUNI_INMRO_invlistUNI_INMONGOLIAN_invlistUNI_INMODI_invlistUNI_INMIAO_invlistUNI_INMEROITICCURSIVE_invlistUNI_INMENDEKIKAKUI_invlistUNI_INMEETEIMAYEK_invlistUNI_INMEDEFAIDRIN_invlistUNI_INMASARAMGONDI_invlistUNI_INMARCHEN_invlistUNI_INMANICHAEAN_invlistUNI_INMANDAIC_invlistUNI_INMALAYALAM_invlistUNI_INMAKASAR_invlistUNI_INMAHAJANI_invlistUNI_INLYDIAN_invlistUNI_INLYCIAN_invlistUNI_INLISU_invlistUNI_INLINEARA_invlistUNI_INLIMBU_invlistUNI_INLEPCHA_invlistUNI_INLAO_invlistUNI_INKIRATRAI_invlistUNI_INKHUDAWADI_invlistUNI_INKHOJKI_invlistUNI_INKHMER_invlistUNI_INKHITANSMALLSCRIPT_invlistUNI_INKHAROSHTHI_invlistUNI_INKAWI_invlistUNI_INKATAKANA_invlistUNI_INKANNADA_invlistUNI_INKAITHI_invlistUNI_INJAVANESE_invlistUNI_ININSCRIPTIONALPARTHIAN_invlistUNI_ININSCRIPTIONALPAHLAVI_invlistUNI_INIMPERIALARAMAIC_invlistUNI_INIDC_invlistUNI_INHIRAGANA_invlistUNI_INHEBREW_invlistUNI_INHATRAN_invlistUNI_INHANUNOO_invlistUNI_INHANIFIROHINGYA_invlistUNI_INHANGUL_invlistUNI_INGURUNGKHEMA_invlistUNI_INGURMUKHI_invlistUNI_INGUNJALAGONDI_invlistUNI_INGUJARATI_invlistUNI_INGREEK_invlistUNI_INGRANTHA_invlistUNI_INGOTHIC_invlistUNI_INGLAGOLITIC_invlistUNI_INGEORGIAN_invlistUNI_INGARAY_invlistUNI_INETHIOPIC_invlistUNI_INELYMAIC_invlistUNI_INELBASAN_invlistUNI_INEGYPTIANHIEROGLYPHS_invlistUNI_INDUPLOYAN_invlistUNI_INDOGRA_invlistUNI_INDIVESAKURU_invlistUNI_INDICSIYAQNUMBERS_invlistUNI_INDICNUMBERFORMS_invlistUNI_INDEVANAGARI_invlistUNI_INCYRILLIC_invlistUNI_INCYPROMINOAN_invlistUNI_INCUNEIFORM_invlistUNI_INCOPTIC_invlistUNI_INCHORASMIAN_invlistUNI_INCHEROKEE_invlistUNI_INCHAM_invlistUNI_INCHAKMA_invlistUNI_INCB__NONE_invlistUNI_INCB__LINKER_invlistUNI_INCB__EXTEND_invlistUNI_INCB__CONSONANT_invlistUNI_INCAUCASIANALBANIAN_invlistUNI_INCARIAN_invlistUNI_INBUHID_invlistUNI_INBUGINESE_invlistUNI_INBRAHMI_invlistUNI_INBOPOMOFO_invlistUNI_INBHAIKSUKI_invlistUNI_INBENGALI_invlistUNI_INBATAK_invlistUNI_INBASSAVAH_invlistUNI_INBAMUM_invlistUNI_INBALINESE_invlistUNI_INAVESTAN_invlistUNI_INARMENIAN_invlistUNI_INARABIC_invlistUNI_INANATOLIANHIEROGLYPHS_invlistUNI_INAHOM_invlistUNI_INADLAM_invlistUNI_IN__NA_invlistUNI_IN__9_invlistUNI_IN__8_invlistUNI_IN__7_invlistUNI_IN__6_DOT_3_invlistUNI_IN__6_DOT_2_invlistUNI_IN__6_DOT_1_invlistUNI_IN__6_invlistUNI_IN__5_DOT_2_invlistUNI_IN__5_DOT_1_invlistUNI_IN__5_invlistUNI_IN__4_DOT_1_invlistUNI_IN__4_invlistUNI_IN__3_DOT_2_invlistUNI_IN__3_DOT_1_invlistUNI_IN__3_invlistUNI_IN__2_DOT_1_invlistUNI_IN__2_invlistUNI_IN__16_invlistUNI_IN__15_DOT_1_invlistUNI_IN__15_invlistUNI_IN__14_invlistUNI_IN__13_invlistUNI_IN__12_DOT_1_invlistUNI_IN__12_invlistUNI_IN__11_invlistUNI_IN__10_invlistUNI_IN__1_DOT_1_invlistUNI_IDSU_invlistUNI_IDST_invlistUNI_IDSB_invlistUNI_IDS_invlistUNI_IDEOGRAPHICSYMBOLS_invlistUNI_IDEO_invlistUNI_IDENTIFIERTYPE__UNCOMMONUSE_invlistUNI_IDENTIFIERTYPE__TECHNICAL_invlistUNI_IDENTIFIERTYPE__RECOMMENDED_invlistUNI_IDENTIFIERTYPE__OBSOLETE_invlistUNI_IDENTIFIERTYPE__NOTXID_invlistUNI_IDENTIFIERTYPE__NOTNFKC_invlistUNI_IDENTIFIERTYPE__NOTCHARACTER_invlistUNI_IDENTIFIERTYPE__LIMITEDUSE_invlistUNI_IDENTIFIERTYPE__INCLUSION_invlistUNI_IDENTIFIERTYPE__EXCLUSION_invlistUNI_IDENTIFIERTYPE__DEFAULTIGNORABLE_invlistUNI_IDENTIFIERSTATUS__RESTRICTED_invlistUNI_IDENTIFIERSTATUS__ALLOWED_invlistUNI_IDCOMPATMATHSTART_invlistUNI_IDCOMPATMATHCONTINUE_invlistUNI_IDC_invlistUNI_HYPHEN_invlistUNI_HUNG_invlistUNI_HST__V_invlistUNI_HST__NA_invlistUNI_HMNP_invlistUNI_HMNG_invlistUNI_HLUW_invlistUNI_HIRA_invlistUNI_HIGHSURROGATES_invlistUNI_HIGHPUSURROGATES_invlistUNI_HEBR_invlistUNI_HATR_invlistUNI_HANO_invlistUNI_HANG_invlistUNI_HAN_invlistUNI_HALFMARKS_invlistUNI_HALFANDFULLFORMS_invlistUNI_GURU_invlistUNI_GUKH_invlistUNI_GUJR_invlistUNI_GREXT_invlistUNI_GREK_invlistUNI_GREEKEXT_invlistUNI_GRBASE_invlistUNI_GRAN_invlistUNI_GOTH_invlistUNI_GONM_invlistUNI_GONG_invlistUNI_GLAGOLITICSUP_invlistUNI_GLAG_invlistUNI_GEORGIANSUP_invlistUNI_GEORGIANEXT_invlistUNI_GEOR_invlistUNI_GEOMETRICSHAPESEXT_invlistUNI_GEOMETRICSHAPES_invlistUNI_GCB__XX_invlistUNI_GCB__V_invlistUNI_GCB__T_invlistUNI_GCB__SM_invlistUNI_GCB__PP_invlistUNI_GCB__L_invlistUNI_GCB__EX_invlistUNI_GCB__CN_invlistUNI_GARA_invlistUNI_EXTPICT_invlistUNI_EXT_invlistUNI_ETHIOPICSUP_invlistUNI_ETHIOPICEXTB_invlistUNI_ETHIOPICEXTA_invlistUNI_ETHIOPICEXT_invlistUNI_ETHI_invlistUNI_EPRES_invlistUNI_ENCLOSEDIDEOGRAPHICSUP_invlistUNI_ENCLOSEDCJK_invlistUNI_ENCLOSEDALPHANUMSUP_invlistUNI_ENCLOSEDALPHANUM_invlistUNI_EMOTICONS_invlistUNI_EMOJI_invlistUNI_EMOD_invlistUNI_ELYM_invlistUNI_ELBA_invlistUNI_EGYPTIANHIEROGLYPHSEXTA_invlistUNI_EGYPTIANHIEROGLYPHFORMATCONTROLS_invlistUNI_EGYP_invlistUNI_ECOMP_invlistUNI_EBASE_invlistUNI_EARLYDYNASTICCUNEIFORM_invlistUNI_EA__W_invlistUNI_EA__NA_invlistUNI_EA__N_invlistUNI_EA__H_invlistUNI_EA__F_invlistUNI_EA__A_invlistUNI_DUPL_invlistUNI_DT__VERT_invlistUNI_DT__SUP_invlistUNI_DT__SUB_invlistUNI_DT__SQR_invlistUNI_DT__SML_invlistUNI_DT__NONE_invlistUNI_DT__NONCANON_invlistUNI_DT__NB_invlistUNI_DT__NAR_invlistUNI_DT__MED_invlistUNI_DT__ISO_invlistUNI_DT__INIT_invlistUNI_DT__FRA_invlistUNI_DT__FONT_invlistUNI_DT__FIN_invlistUNI_DT__ENC_invlistUNI_DT__COM_invlistUNI_DT__CAN_invlistUNI_DSRT_invlistUNI_DOMINO_invlistUNI_DOGR_invlistUNI_DINGBATS_invlistUNI_DIAK_invlistUNI_DIACRITICALSSUP_invlistUNI_DIACRITICALSFORSYMBOLS_invlistUNI_DIACRITICALSEXT_invlistUNI_DIACRITICALS_invlistUNI_DIA_invlistUNI_DI_invlistUNI_DEVANAGARIEXTA_invlistUNI_DEVANAGARIEXT_invlistUNI_DEVA_invlistUNI_DEP_invlistUNI_DASH_invlistUNI_CYRL_invlistUNI_CYRILLICSUP_invlistUNI_CYRILLICEXTD_invlistUNI_CYRILLICEXTC_invlistUNI_CYRILLICEXTB_invlistUNI_CYRILLICEXTA_invlistUNI_CYPRIOTSYLLABARY_invlistUNI_CWU_invlistUNI_CWT_invlistUNI_CWL_invlistUNI_CWKCF_invlistUNI_CWCM_invlistUNI_CWCF_invlistUNI_CURRENCYSYMBOLS_invlistUNI_CUNEIFORMNUMBERS_invlistUNI_CPRT_invlistUNI_CPMN_invlistUNI_COUNTINGROD_invlistUNI_COPTICEPACTNUMBERS_invlistUNI_COPT_invlistUNI_CONTROLPICTURES_invlistUNI_COMPEX_invlistUNI_COMPATJAMO_invlistUNI_CN_invlistUNI_CJKSYMBOLS_invlistUNI_CJKSTROKES_invlistUNI_CJKRADICALSSUP_invlistUNI_CJKEXTI_invlistUNI_CJKEXTH_invlistUNI_CJKEXTG_invlistUNI_CJKEXTF_invlistUNI_CJKEXTE_invlistUNI_CJKEXTD_invlistUNI_CJKEXTC_invlistUNI_CJKEXTB_invlistUNI_CJKEXTA_invlistUNI_CJKCOMPATIDEOGRAPHSSUP_invlistUNI_CJKCOMPATIDEOGRAPHS_invlistUNI_CJKCOMPATFORMS_invlistUNI_CJKCOMPAT_invlistUNI_CJK_invlistUNI_CI_invlistUNI_CHRS_invlistUNI_CHESSSYMBOLS_invlistUNI_CHEROKEESUP_invlistUNI_CHER_invlistUNI_CHAM_invlistUNI_CF_invlistUNI_CE_invlistUNI_CCC__R_invlistUNI_CCC__L_invlistUNI_CCC__IS_invlistUNI_CCC__DB_invlistUNI_CCC__DA_invlistUNI_CCC__BR_invlistUNI_CCC__BL_invlistUNI_CCC__B_invlistUNI_CCC__AR_invlistUNI_CCC__AL_invlistUNI_CCC__A_invlistUNI_CCC__91_invlistUNI_CCC__9_invlistUNI_CCC__84_invlistUNI_CCC__8_invlistUNI_CCC__7_invlistUNI_CCC__6_invlistUNI_CCC__36_invlistUNI_CCC__35_invlistUNI_CCC__34_invlistUNI_CCC__33_invlistUNI_CCC__32_invlistUNI_CCC__31_invlistUNI_CCC__30_invlistUNI_CCC__29_invlistUNI_CCC__28_invlistUNI_CCC__27_invlistUNI_CCC__26_invlistUNI_CCC__25_invlistUNI_CCC__24_invlistUNI_CCC__23_invlistUNI_CCC__22_invlistUNI_CCC__216_invlistUNI_CCC__214_invlistUNI_CCC__21_invlistUNI_CCC__202_invlistUNI_CCC__20_invlistUNI_CCC__19_invlistUNI_CCC__18_invlistUNI_CCC__17_invlistUNI_CCC__16_invlistUNI_CCC__15_invlistUNI_CCC__14_invlistUNI_CCC__132_invlistUNI_CCC__130_invlistUNI_CCC__13_invlistUNI_CCC__129_invlistUNI_CCC__122_invlistUNI_CCC__12_invlistUNI_CCC__118_invlistUNI_CCC__11_invlistUNI_CCC__107_invlistUNI_CCC__103_invlistUNI_CCC__10_invlistUNI_CCC__1_invlistUNI_CCC__0_invlistUNI_CARI_invlistUNI_CANS_invlistUNI_CAKM_invlistUNI_C_invlistUNI_BYZANTINEMUSIC_invlistUNI_BUHD_invlistUNI_BUGI_invlistUNI_BRAI_invlistUNI_BRAH_invlistUNI_BPT__O_invlistUNI_BPT__N_invlistUNI_BPT__C_invlistUNI_BOXDRAWING_invlistUNI_BOPOMOFOEXT_invlistUNI_BOPO_invlistUNI_BLOCKELEMENTS_invlistUNI_BIDIM_invlistUNI_BIDIC_invlistUNI_BHKS_invlistUNI_BENG_invlistUNI_BC__WS_invlistUNI_BC__S_invlistUNI_BC__RLO_invlistUNI_BC__RLI_invlistUNI_BC__RLE_invlistUNI_BC__R_invlistUNI_BC__PDI_invlistUNI_BC__PDF_invlistUNI_BC__ON_invlistUNI_BC__NSM_invlistUNI_BC__LRO_invlistUNI_BC__LRI_invlistUNI_BC__LRE_invlistUNI_BC__L_invlistUNI_BC__FSI_invlistUNI_BC__ET_invlistUNI_BC__ES_invlistUNI_BC__EN_invlistUNI_BC__CS_invlistUNI_BC__BN_invlistUNI_BC__B_invlistUNI_BC__AN_invlistUNI_BC__AL_invlistUNI_BATK_invlistUNI_BASS_invlistUNI_BAMUMSUP_invlistUNI_BAMU_invlistUNI_BALI_invlistUNI_AVST_invlistUNI_ARROWS_invlistUNI_ARMN_invlistUNI_ARMI_invlistUNI_ARABICSUP_invlistUNI_ARABICPFB_invlistUNI_ARABICPFA_invlistUNI_ARABICMATH_invlistUNI_ARABICEXTC_invlistUNI_ARABICEXTB_invlistUNI_ARABICEXTA_invlistUNI_ARAB_invlistUNI_ANY_invlistUNI_ANCIENTSYMBOLS_invlistUNI_ANCIENTGREEKNUMBERS_invlistUNI_ANCIENTGREEKMUSIC_invlistUNI_ALPHABETICPF_invlistUNI_ALL_invlistUNI_ALCHEMICAL_invlistUNI_AHOM_invlistUNI_AGHB_invlistUNI_AGE__9_invlistUNI_AGE__8_invlistUNI_AGE__7_invlistUNI_AGE__6_DOT_3_invlistUNI_AGE__6_DOT_2_invlistUNI_AGE__6_DOT_1_invlistUNI_AGE__6_invlistUNI_AGE__5_DOT_2_invlistUNI_AGE__5_DOT_1_invlistUNI_AGE__5_invlistUNI_AGE__4_DOT_1_invlistUNI_AGE__4_invlistUNI_AGE__3_DOT_2_invlistUNI_AGE__3_DOT_1_invlistUNI_AGE__3_invlistUNI_AGE__2_DOT_1_invlistUNI_AGE__2_invlistUNI_AGE__16_invlistUNI_AGE__15_DOT_1_invlistUNI_AGE__15_invlistUNI_AGE__14_invlistUNI_AGE__13_invlistUNI_AGE__12_DOT_1_invlistUNI_AGE__12_invlistUNI_AGE__11_invlistUNI_AGE__10_invlistUNI_AEGEANNUMBERS_invlistUNI_ADLM_invlistUNI__PERL_QUOTEMETA_invlistUNI__PERL_PROBLEMATIC_LOCALE_FOLDS_invlistUNI__PERL_PROBLEMATIC_LOCALE_FOLDEDS_START_invlistUNI_UPPERCASELETTER_invlistUNI_TITLE_invlistUNI_LOWERCASELETTER_invlistUNI_CASEDLETTER_invlistUNI_prop_value_ptrsUNI_age_valuesUNI_ahex_valuesUNI_bc_valuesUNI_blk_valuesUNI_bpt_valuesUNI_ccc_valuesUNI_dt_valuesUNI_ea_valuesUNI_gc_valuesUNI_gcb_valuesUNI_hst_valuesUNI_identifierstatus_valuesUNI_identifiertype_valuesUNI_incb_valuesUNI_inpc_valuesUNI_insc_valuesUNI_jg_valuesUNI_jt_valuesUNI_lb_valuesUNI_nfcqc_valuesUNI_nfdqc_valuesUNI_nt_valuesUNI_nv_valuesUNI_sb_valuesUNI_sc_valuesUNI_vo_valuesUNI_wb_valuesregcomp_debug.cregcomp_invlist.cS_invlist_replace_list_destroys_srcPerl_newSV_type.constprop.0S__append_range_to_invlistregcomp_study.cS_unwind_scan_framesS_ssc_is_cp_posixl_initS_get_ANYOF_cp_list_for_sscS_ssc_orS_ssc_andS_rck_elide_nothingregcomp_trie.cS_trie_bitmap_set_foldedregexec.cPerl_foldEQPerl_foldEQ_latin1Perl_foldEQ_localeS_foldEQ_latin1_s2_foldedS_reg_check_named_buff_matchedS_to_utf8_substrS_to_byte_substrS_find_span_end_maskS_find_next_maskedS_regcppopS_regcppushS_reghopmaybe3.part.0S_reghop3.part.0S_reghop3S_isFOO_lc.part.0S_setup_EXACTISH_STCSWTCH.2847CSWTCH.2846S_reg_set_capture_string.isra.0S_set_reg_curpmPerl_utf8_hop_overshoot.constprop.0S_cleanup_regmatch_info_auxS_advance_one_WB__Perl_WB_invmapS_advance_one_LB_Perl_LB_invmapS_backup_one_GCB.constprop.0_Perl_GCB_invmapS_isGCB.constprop.0S_backup_one_SB_Perl_SB_invmapS_backup_one_LB_S_isLBLB_tableCSWTCH.2828S_isSBS_backup_one_WB_but_over_Extend_FOS_isWBS_isFOO_utf8_lcS_reginclassS_regrepeat_Perl_SCX_invmapS_regtryS_find_byclassCSWTCH.2845CSWTCH.2827GCB_tableGCB_dfa_tableLB_dfa_tableCSWTCH.2824CSWTCH.2825CSWTCH.2826WB_tableWB_dfa_tablesets_utf8_locale_requiredSCX_AUX_TABLE_lengthsscript_zerosb_utf8_locale_requiredSCX_AUX_TABLE_106SCX_AUX_TABLE_105SCX_AUX_TABLE_104SCX_AUX_TABLE_103SCX_AUX_TABLE_102SCX_AUX_TABLE_101SCX_AUX_TABLE_100SCX_AUX_TABLE_99SCX_AUX_TABLE_98SCX_AUX_TABLE_97SCX_AUX_TABLE_96SCX_AUX_TABLE_95SCX_AUX_TABLE_94SCX_AUX_TABLE_93SCX_AUX_TABLE_92SCX_AUX_TABLE_91SCX_AUX_TABLE_90SCX_AUX_TABLE_89SCX_AUX_TABLE_88SCX_AUX_TABLE_87SCX_AUX_TABLE_86SCX_AUX_TABLE_85SCX_AUX_TABLE_84SCX_AUX_TABLE_83SCX_AUX_TABLE_82SCX_AUX_TABLE_81SCX_AUX_TABLE_80SCX_AUX_TABLE_79SCX_AUX_TABLE_78SCX_AUX_TABLE_77SCX_AUX_TABLE_76SCX_AUX_TABLE_75SCX_AUX_TABLE_74SCX_AUX_TABLE_73SCX_AUX_TABLE_72SCX_AUX_TABLE_71SCX_AUX_TABLE_70SCX_AUX_TABLE_69SCX_AUX_TABLE_68SCX_AUX_TABLE_67SCX_AUX_TABLE_66SCX_AUX_TABLE_65SCX_AUX_TABLE_64SCX_AUX_TABLE_63SCX_AUX_TABLE_62SCX_AUX_TABLE_61SCX_AUX_TABLE_60SCX_AUX_TABLE_59SCX_AUX_TABLE_58SCX_AUX_TABLE_57SCX_AUX_TABLE_56SCX_AUX_TABLE_55SCX_AUX_TABLE_54SCX_AUX_TABLE_53SCX_AUX_TABLE_52SCX_AUX_TABLE_51SCX_AUX_TABLE_50SCX_AUX_TABLE_49SCX_AUX_TABLE_48SCX_AUX_TABLE_47SCX_AUX_TABLE_46SCX_AUX_TABLE_45SCX_AUX_TABLE_44SCX_AUX_TABLE_43SCX_AUX_TABLE_42SCX_AUX_TABLE_41SCX_AUX_TABLE_40SCX_AUX_TABLE_39SCX_AUX_TABLE_38SCX_AUX_TABLE_37SCX_AUX_TABLE_36SCX_AUX_TABLE_35SCX_AUX_TABLE_34SCX_AUX_TABLE_33SCX_AUX_TABLE_32SCX_AUX_TABLE_31SCX_AUX_TABLE_30SCX_AUX_TABLE_29SCX_AUX_TABLE_28SCX_AUX_TABLE_27SCX_AUX_TABLE_26SCX_AUX_TABLE_25SCX_AUX_TABLE_24SCX_AUX_TABLE_23SCX_AUX_TABLE_22SCX_AUX_TABLE_21SCX_AUX_TABLE_20SCX_AUX_TABLE_19SCX_AUX_TABLE_18SCX_AUX_TABLE_17SCX_AUX_TABLE_16SCX_AUX_TABLE_15SCX_AUX_TABLE_14SCX_AUX_TABLE_13SCX_AUX_TABLE_12SCX_AUX_TABLE_11SCX_AUX_TABLE_10SCX_AUX_TABLE_9SCX_AUX_TABLE_8SCX_AUX_TABLE_7SCX_AUX_TABLE_6SCX_AUX_TABLE_5SCX_AUX_TABLE_4SCX_AUX_TABLE_3SCX_AUX_TABLE_2SCX_AUX_TABLE_1SCX_AUX_TABLE_ptrsrun.cscope.cS_save_scalar_atleave_scope_arg_countssv.cS_F0convertS_find_array_subscriptS_croak_overflowS_hextractS_assert_uft8_cache_coherent.part.0S_sv_pos_b2u_midwayS_sv_pos_u2b_midwayS_sv_setnvS_cursedo_clean_named_io_objsS_sv_unmagicext_flagsS_croak_sv_setsv_flagsS_glob_assign_globS_find_hash_subscriptS_find_uninit_varPerl_SvIVPerl_sv_2pv_flags.localaliasS_sv_uncowS_sv_display.constprop.0S_not_a_numberS_utf8_mg_len_cache_updateS_utf8_mg_pos_cache_updateS_sv_pos_u2b_cachedS_sv_2iuv_commonS_sprintf_arg_num_valint2str_tableS_destroyfake_rvnullstr.1taint.cmisc_env.0time64.cdays_in_monthlength_of_yearjulian_days_by_monthsafe_yearstoke.cS_word_takes_any_delimiterS_check_scalar_sliceS_checkcommaS_check_uniyyl_safe_barewordS_parse_identyyl_strictwarn_barewordS_missingtermS_parse_recdescent_for_opS_postderefS_force_ident.part.0yyl_croak_unrecognisedtokentype_for_plugop.isra.0S_update_debugger_infoyyl_constant_opPerl_is_utf8_string_loclen.constprop.0S_newSV_maybe_utf8yyl_fatcommaS_inclineS_add_utf16_textfilterS_utf16_textfilterS_warn_expect_operatorS_vcs_conflict_markerS_scan_identS_intuit_moreS_force_wordyyl_hyphenS_intuit_methodS_lopyyl_just_a_word.isra.0yyl_fake_eof.constprop.0S_new_constantS_tokeqS_sublex_startS_apply_builtin_cv_attributeS_force_strict_versionS_pmflagyyl_dollaryyl_colonyyl_leftpointyyyl_subyyl_myS_scan_patyyl_leftcurlyS_scan_constS_force_versionS_tokenize_useyyl_word_or_keyword.isra.0yyl_keylookup.constprop.0yyl_tryyyl_rightcurlyS_sublex_doneident_too_longident_var_zero_multi_digitnvshift.2bases.3Bases.1maxima.0utf8.cS_new_msg_hvS__to_utf8_caseS_check_locale_boundary_crossingUppercase_Mapping_invmapTitlecase_Mapping_invmapLowercase_Mapping_invmap_Perl_IVCF_invmapSimple_Case_Folding_invmapmalformed_textuneesUC_AUX_TABLE_lengthsTC_AUX_TABLE_lengthsLC_AUX_TABLE_lengthsIVCF_AUX_TABLE_lengthsUC_AUX_TABLE_72UC_AUX_TABLE_71UC_AUX_TABLE_70UC_AUX_TABLE_69UC_AUX_TABLE_68UC_AUX_TABLE_67UC_AUX_TABLE_66UC_AUX_TABLE_65UC_AUX_TABLE_64UC_AUX_TABLE_63UC_AUX_TABLE_62UC_AUX_TABLE_61UC_AUX_TABLE_60UC_AUX_TABLE_59UC_AUX_TABLE_58UC_AUX_TABLE_57UC_AUX_TABLE_56UC_AUX_TABLE_55UC_AUX_TABLE_54UC_AUX_TABLE_53UC_AUX_TABLE_52UC_AUX_TABLE_51UC_AUX_TABLE_50UC_AUX_TABLE_49UC_AUX_TABLE_48UC_AUX_TABLE_47UC_AUX_TABLE_46UC_AUX_TABLE_45UC_AUX_TABLE_44UC_AUX_TABLE_43UC_AUX_TABLE_42UC_AUX_TABLE_41UC_AUX_TABLE_40UC_AUX_TABLE_39UC_AUX_TABLE_38UC_AUX_TABLE_37UC_AUX_TABLE_36UC_AUX_TABLE_35UC_AUX_TABLE_34UC_AUX_TABLE_33UC_AUX_TABLE_32UC_AUX_TABLE_31UC_AUX_TABLE_30UC_AUX_TABLE_29UC_AUX_TABLE_28UC_AUX_TABLE_27UC_AUX_TABLE_26UC_AUX_TABLE_25UC_AUX_TABLE_24UC_AUX_TABLE_23UC_AUX_TABLE_22UC_AUX_TABLE_21UC_AUX_TABLE_20UC_AUX_TABLE_19UC_AUX_TABLE_18UC_AUX_TABLE_17UC_AUX_TABLE_16UC_AUX_TABLE_15UC_AUX_TABLE_14UC_AUX_TABLE_13UC_AUX_TABLE_12UC_AUX_TABLE_11UC_AUX_TABLE_10UC_AUX_TABLE_9UC_AUX_TABLE_8UC_AUX_TABLE_7UC_AUX_TABLE_6UC_AUX_TABLE_5UC_AUX_TABLE_4UC_AUX_TABLE_3UC_AUX_TABLE_2UC_AUX_TABLE_1TC_AUX_TABLE_45TC_AUX_TABLE_44TC_AUX_TABLE_43TC_AUX_TABLE_42TC_AUX_TABLE_41TC_AUX_TABLE_40TC_AUX_TABLE_39TC_AUX_TABLE_38TC_AUX_TABLE_37TC_AUX_TABLE_36TC_AUX_TABLE_35TC_AUX_TABLE_34TC_AUX_TABLE_33TC_AUX_TABLE_32TC_AUX_TABLE_31TC_AUX_TABLE_30TC_AUX_TABLE_29TC_AUX_TABLE_28TC_AUX_TABLE_27TC_AUX_TABLE_26TC_AUX_TABLE_25TC_AUX_TABLE_24TC_AUX_TABLE_23TC_AUX_TABLE_22TC_AUX_TABLE_21TC_AUX_TABLE_20TC_AUX_TABLE_19TC_AUX_TABLE_18TC_AUX_TABLE_17TC_AUX_TABLE_16TC_AUX_TABLE_15TC_AUX_TABLE_14TC_AUX_TABLE_13TC_AUX_TABLE_12TC_AUX_TABLE_11TC_AUX_TABLE_10TC_AUX_TABLE_9TC_AUX_TABLE_8TC_AUX_TABLE_7TC_AUX_TABLE_6TC_AUX_TABLE_5TC_AUX_TABLE_4TC_AUX_TABLE_3TC_AUX_TABLE_2TC_AUX_TABLE_1IVCF_AUX_TABLE_28IVCF_AUX_TABLE_27IVCF_AUX_TABLE_26IVCF_AUX_TABLE_25IVCF_AUX_TABLE_24IVCF_AUX_TABLE_23IVCF_AUX_TABLE_22IVCF_AUX_TABLE_21IVCF_AUX_TABLE_20IVCF_AUX_TABLE_19IVCF_AUX_TABLE_18IVCF_AUX_TABLE_17IVCF_AUX_TABLE_16IVCF_AUX_TABLE_15IVCF_AUX_TABLE_14IVCF_AUX_TABLE_13IVCF_AUX_TABLE_12IVCF_AUX_TABLE_11IVCF_AUX_TABLE_10IVCF_AUX_TABLE_9IVCF_AUX_TABLE_8IVCF_AUX_TABLE_7IVCF_AUX_TABLE_6IVCF_AUX_TABLE_5IVCF_AUX_TABLE_4IVCF_AUX_TABLE_3IVCF_AUX_TABLE_2IVCF_AUX_TABLE_1LC_AUX_TABLE_1CF_AUX_TABLE_73CF_AUX_TABLE_72CF_AUX_TABLE_71CF_AUX_TABLE_70CF_AUX_TABLE_69CF_AUX_TABLE_68CF_AUX_TABLE_67CF_AUX_TABLE_66CF_AUX_TABLE_65CF_AUX_TABLE_64CF_AUX_TABLE_63CF_AUX_TABLE_62CF_AUX_TABLE_61CF_AUX_TABLE_60CF_AUX_TABLE_59CF_AUX_TABLE_58CF_AUX_TABLE_57CF_AUX_TABLE_56CF_AUX_TABLE_55CF_AUX_TABLE_54CF_AUX_TABLE_53CF_AUX_TABLE_52CF_AUX_TABLE_51CF_AUX_TABLE_50CF_AUX_TABLE_49CF_AUX_TABLE_48CF_AUX_TABLE_47CF_AUX_TABLE_46CF_AUX_TABLE_45CF_AUX_TABLE_44CF_AUX_TABLE_43CF_AUX_TABLE_42CF_AUX_TABLE_41CF_AUX_TABLE_40CF_AUX_TABLE_39CF_AUX_TABLE_38CF_AUX_TABLE_37CF_AUX_TABLE_36CF_AUX_TABLE_35CF_AUX_TABLE_34CF_AUX_TABLE_33CF_AUX_TABLE_32CF_AUX_TABLE_31CF_AUX_TABLE_30CF_AUX_TABLE_29UC_AUX_TABLE_ptrsTC_AUX_TABLE_ptrsLC_AUX_TABLE_ptrsIVCF_AUX_TABLE_ptrsutil.cS_ckwarn_commonS_with_queued_errorsS_mess_allocoomp.2underscore.0DynaLoader.cSaveError.constprop.0my_cxtaddtf3.oeqtf2.oletf2.oextenddftf2.otrunctfdf2.osfp-exceptions.o__FRAME_END__Perl_pp_shmwritePerl_package_versionPerl_sighandlerPerl_setfd_inhexecPerl_pp_padhvPerl_pp_entertryPerl_ck_existsPerl_pp_nextPerl_pp_emptyavhvPerl_hv_ename_deletePerl_find_scriptPerl_pp_scomplementPerl_pp_entergivenPerl_ck_anoncodePerl_pp_ftrreadPerl_pp_classnamePerl_do_seekPerl_my_mkstemp_cloexecPerl_pp_iterPerl_pp_ehostentPerl_pp_leavewritePerl_magic_setarylenPerl_magic_set_all_envPerl_do_msgsndPerl_pp_right_shiftPerl_ck_evalPerl_pp_sselectPerl_pp_refgenPerl_dump_all_perlPerl_pp_stringifyPerl_pp_sbit_orPerl_PerlSock_socketpair_cloexecPerl_pp_methodPerl_ck_helemexistsorPerl_ck_concatPerl_check_hash_fields_and_hekifyPerl_croak_no_memPerl_ck_substrPerl_pp_enterloopPerl_hv_pushkvPerl_pp_sassignPerl_cv_clone_intoPerl_pp_undefPerl_yyerror_pvnPerl_pp_dbstatePerl_pp_definedPerl_XS_builtin_indexedPerl_do_exec3Perl_populate_anyof_bitmap_from_invlistPerl_pp_enterwritePerl_warn_elem_scalar_contextPerl_opslab_force_freePerl_pp_chrPerl_write_to_stderrPerl_pp_padavPerl_hv_kill_backrefsPerl_pp_helemexistsorPerl_pp_indexPerl_invertPerl_allocmyPerl_study_chunkPerl_pp_syscallPerl_mg_localizePerl_boot_core_PerlIOPerl_do_shmioPerl_pp_existsPerl_pp_lastPerl_boot_core_UNIVERSALPerl_pp_selectPerl_force_locale_unlockPerl_magic_sethookallPerl_pp_gnetentPerl_pp_aelemfastPerl_defelem_targetPerl_vivify_refPerl_ck_rfunPerl_pp_andPerl_sv_add_backrefPerl_pp_aslicePerl_magic_clearenvPerl_pp_unpackPerl_pp_xorPerl_free_tied_hv_poolPerl_pp_complementPerl_ck_definedPerl_sv_clean_allPerl_magic_sethintPerl_tied_methodPerl_magic_freecollxfrmPerl_pp_closePerl_no_bareword_filehandlePerl_pp_returnPerl_do_eofPerl_pp_warnPerl_ck_grepPerl_ck_smartmatchPerl_jmaybePerl_prepare_export_lexicalPerl_sv_free_arenasPerl_pp_sysopenPerl_ck_repeatPerl_magic_clearsigPerl_add_above_Latin1_foldsPerl_make_triePerl_ck_refassignPerl_op_unscopePerl_ck_requirePerl_find_lexical_cvPerl_pp_pushPerl_do_readlinePerl_pmruntimePerl_init_debuggerPerl_magic_setregexpPerl_pp_sprintfPerl_magic_regdatum_get__GNU_EH_FRAME_HDRPerl_gv_stashsvpvn_cached_finiPerl_pp_shostentPerl_pp_i_lePerl_pp_blessedPerl_pp_anonhashPerl_pp_sbit_andPerl_ck_returnPerl_pp_filenoPerl_magic_clearhookPerl_pp_chrootPerl_pp_i_gePerl_newSVavdefelemPerl_pp_lvavrefPerl_mem_collxfrm_Perl_my_strerrorPerl_pp_rewinddirPerl_pp_eqPerl_do_open_rawPerl_pp_i_gtPerl_magic_setsigPerl_init_dbargsPerl_scalarvoidPerl_pp_open_dirPerl_populate_bitmap_from_invlistPerl_ck_trycatchPerl_pp_method_redirPerl_magic_setsubstrPerl_pp_sinPerl_pp_tellPerl_pp_gelemPerl_pp_execPerl_ck_truncPerl_ck_lengthPerl_my_mkostemp_cloexec_GLOBAL_OFFSET_TABLE_Perl_magic_clearpackPerl_pp_listenPerl_pp_binmodePerl_coresub_opPerl_pp_chownPerl_cmpchain_startPerl_pp_multiderefPerl_magic_clear_all_env__letf2Perl_pp_poptryPerl_nextargvPerl_magic_setutf8Perl_pp_repeatPerl_rxres_savePerl_find_runcv_wherePerl_pp_isaPerl_pp_seqPerl_do_dump_padPerl_do_transPerl_pp_nextstatePerl_pp_resetPerl_pp_openPerl_ck_matchPerl_start_globPerl_rpeepPerl_sighandler1Perl_pp_grepwhilePerl_pp_sortPerl_pp_deletePerl_pp_catchPerl_pad_add_weakrefPerl_magic_copycallchecker__sfp_handle_exceptionsPerl_pp_substcontPerl_pp_ucfirstPerl_yyerror_pvPerl_pp_ftrownedPerl_applyPerl_magic_getarylenPerl_padlist_storePerl_get_opargsPerl_yyquitPerl_ck_funPerl_oopsAVPerl_setfd_cloexec_or_inhexec_by_sysfdnessPerl_pp_ncomplementPerl_pp_vecPerl_listPerl_pp_readdirPerl_parser_free_nexttoke_opsPerl_get_regclass_aux_dataPerl_unimplemented_opPerl_do_printPerl_ck_eachPerl_pp_scmpPerl_pp_backtickPerl_die_unwindPerl_pp_i_ltPerl_magic_getuvarPerl_ck_entersub_args_corePerl_pp_i_subtractPerl_pp_mapwhilePerl_populate_isaPerl_magic_clearisaPerl_rsignal_restorePerl_magic_setPerl_magic_methcallPerl_pp_regcompPerl_pp_gvPerl_ck_methodPerl_pp_stubPerl_op_varnamePerl_populate_invlist_from_bitmapPerl_pp_multiconcatPerl_pp_timePerl_pp_cryptPerl_magic_setvecPerl_pp_diePerl_pp_av2arylenPerl_notify_parser_that_encoding_changedPerl_pp_substPerl_hfree_next_entryPerl_pp_requirePerl_sighandler3Perl_pp_is_weakPerl_av_extend_gutsPerl_pp_rv2avPerl_pp_printPerl_pp_pushdeferPerl_pp_srandPerl_check_utf8_printPerl_build_infix_pluginPerl_cv_const_sv_or_avPerl_pp_cmpchain_andPerl_gv_setrefPerl_magic_freearylen_pPerl_pp_is_boolPerl_pp_bit_andPerl_pp_renamePerl_construct_ahocorasick_from_triePerl_pp_matchPerl_magic_getsubstrPerl_pp_i_eqPerl_pp_powPerl_pp_enteriterPerl_magic_setnonelemPerl_magic_scalarpackPerl_init_unipropsPerl_pp_lePerl_newSTUBPerl_opslab_free_nopadPerl_pp_dividePerl_pp_enterevalPerl_pp_argdefelemPerl_pp_method_namedPerl_PerlLIO_dup_cloexecPerl_pp_setpgrpPerl_do_kvPerl_pp_avhvswitchPerl_magic_getdebugvarPerl_magic_nextpackPerl_magic_clearhookallPerl_magic_setisaPerl_magic_clearhintPerl_pp_forkPerl_debug_hash_seedPerl_pp_pipe_opPerl_pp_rcatlinePerl_magic_getPerl_pp_syswritePerl_pp_methstartPerl_pp_akeysPerl_finish_export_lexicalPerl_pp_refassignPerl_cv_undef_flagsPerl_pp_entersubPerl_magic_setuvarPerl_pp_closedirPerl_magic_getsigPerl_do_semopPerl_create_eval_scopePerl_av_nonelemPerl_candoPerl_pp_bit_orPerl_peepPerl_pp_constPerl_pp_truncatePerl_magic_sethookPerl_pp_left_shiftPerl_pp_method_redir_superPerl_pp_leavetrycatchPerl_pp_ceilPerl_pp_readlinkPerl_boot_core_builtinPerl_pp_ncmpPerl_yyerrorPerl_ck_listiobPerl_pp_flockPerl_magic_setdebugvarPerl_invmap_dumpPerl_pp_shutdown__addtf3Perl_magic_freedestructPerl_ck_lfunPerl_oopsHVPerl_magic_freeovrldPerl_pp_anonlistPerl_pp_unstackPerl_my_unexecPerl_pp_i_negatePerl_op_prune_chain_headPerl_magic_sizepackPerl_isinfnansvPerl_ck_spairPerl_pp_reversePerl_dump_packsubs_perlPerl_mro_isa_changed_inPerl_pp_posPerl_pp_introcvPerl_pp_concat__TMC_END__Perl_scan_commitPerl_do_open6Perl_pp_exitPerl_ck_isaPerl_pp_lengthPerl_pp_prtfPerl_croak_no_mem_extPerl_pp_snePerl_my_attrsPerl_pp_linkPerl_pp_getcPerl_ck_eofPerl_pp_callerPerl_do_msgrcvPerl_pp_i_dividePerl_ck_exec__lttf2Perl_pp_prototypePerl_subsignature_finishPerl_magic_wipepackPerl_pp_i_moduloPerl_pp_predecPerl_PerlLIO_dup2_cloexecPerl_dofilePerl_pp_smartmatchPerl_pp_shift__dso_handlePerl_pp_ordPerl_pp_leavetryPerl_pp_aassignPerl_pp_ftisPerl_pp_getloginPerl_pp_srefgenPerl_do_aexec5Perl_pp_anoncodePerl_parse_unicode_optsPerl_pp_unshiftPerl_do_ncmpPerl_pad_swipePerl_ck_selectPerl_pp_i_addPerl_pp_leavePerl_pp_sockpairPerl_pp_gotoPerl_dump_sub_perlPerl_pp_intPerl_join_exact__trunctfdf2Perl_pp_rv2gvPerl_do_ipcgetPerl_ck_classnamePerl_croak_callerPerl_pp_initfieldPerl_pad_leavemyPerl_ck_splitPerl_subsignature_append_positionalPerl_pp_postincPerl_pp_chdirPerl_setfd_inhexec_for_sysfdPerl_pp_splicePerl_pp_hslicePerl_do_vecgetPerl_pp_gserventPerl_pp_nbit_orPerl_sv_resetpvnPerl_pp_studyPerl_do_ipcctlPerl_pp_preincPerl_pp_clonecvPerl_reg_add_dataPerl_pp_setpriorityPerl_pp_wantarrayPerl_pp_getppidPerl_ck_tellPerl_pp_reftypePerl_alloc_LOGOPPerl_opslab_freePerl_is_graphemePerl_pp_fttextPerl_pp_tmsPerl_magic_existspackPerl_pp_nullPerl_pp_sleepPerl_do_vopPerl_magic_settaintPerl_get_extended_os_errnoPerl_varnamePerl_pp_pushmarkPerl_pp_anonconstPerl_pp_formlinePerl_PerlSock_socket_cloexecPerl_pp_regcresetPerl_pp_leavewhenPerl_ck_bitopPerl_magic_setsigallPerl_PerlLIO_open_cloexecPerl_cv_forget_slabPerl_pp_rmdirPerl_ck_ftstPerl_ssc_initPerl_pp_semgetPerl_pp_subtractPerl_pp_lslicePerl_PerlLIO_open3_cloexecPerl_magic_getvecPerl_get_ANYOFHbbm_contentsPerl_ck_prototypePerl_pad_freePerl_pp_gePerl_ck_svconstPerl_sv_clean_objsPerl_keywordPerl_pp_lockPerl_pp_ftlinkPerl_pp_quotemetaPerl_ck_shiftPerl_pp_absPerl_setfd_cloexecPerl_magic_setmglobPerl_parser_freePerl_do_vecsetPerl__to_upper_title_latin1Perl_magic_getposPerl_pp_leavegivenPerl_pp_alarmPerl_pp_kvaslicePerl_sv_kill_backrefsPerl_pp_getpriorityPerl_pp_umaskPerl_cmpchain_extendPerl_pp_schopPerl_magic_setposPerl_do_sysseek__extenddftf2Perl_magic_freeutf8Perl_setfd_cloexec_for_nonsysfdPerl_magic_regdata_cntPerl_magic_setdefelemPerl_mode_from_disciplinePerl_abort_executionPerl_pp_i_multiplyPerl_pp_socketPerl_ck_sortPerl_ck_nullPerl_magic_getnkeysPerl_magic_setnkeysPerl_ck_stringifyPerl_sv_2numPerl_closest_copPerl_ck_joinPerl_hv_auxallocPerl_pp_splitPerl_PerlSock_accept_cloexecPerl_pp_ucPerl_ck_indexPerl_ck_readlinePerl_hv_ename_addPerl_pp_padrangePerl_pp_rv2svPerl_pp_gmtimePerl_ck_rvconstPerl_pp_substr_leftPerl_pp_entertrycatchPerl_packagePerl_no_bareword_allowedPerl_ck_globPerl_watchPerl_pp_atan2Perl_deb_stack_allPerl_cmpchain_finishPerl_pp_systemPerl_pp_telldirPerl_wait4pidPerl_ck_openPerl_pp_multiplyPerl_pp_rangePerl_pp_seekdir__netf2Perl_pp_enterPerl_pp_transPerl_pp_flopPerl_ck_sassignPerl_pp_runcvPerl_pp_nePerl_pp_mkdirPerl_bind_matchPerl_core_prototypePerl_newXS_len_flagsPerl_pad_block_startPerl_pp_aelemfastlex_storePerl_magic_gettaintPerl_rsignal_savePerl_magic_freemglobPerl_do_tellPerl_pp_cond_exprPerl_pp_octPerl_pp_untiePerl_pp_chopPerl_report_redefined_cvPerl_pp_aelemPerl_pp_ltPerl_magic_clearhintsPerl_pp_joinPerl_pp_gvsvPerl_ck_subrPerl_get_ANYOFM_contentsPerl_pp_ftttyPerl_yyunlexPerl_pp_notPerl_init_argv_symbolsPerl_report_evil_fhPerl_pp_leavesublvPerl_pp_grepstartPerl_pp_weakenPerl_pp_ssockoptPerl_ck_cmpPerl_hv_backreferences_pPerl_pp_tiePerl_pp_kvhslicePerl_pp_padcvPerl_pp_i_nePerl_delete_eval_scopePerl_pp_moduloPerl_pp_fcPerl_pp_lvrefslicePerl_magic_regdatum_setPerl_pp_leaveloopPerl_subsignature_startPerl_sawparensPerl_pp_waitpidPerl_pp_aeachPerl_translate_substr_offsetsPerl_pp_gtPerl_pp_waitPerl_pp_rv2cvPerl_sub_crush_depthPerl_magic_setlvref__eqtf2Perl_pp_orPerl_pp_refPerl_pp_globPerl_ck_scmpPerl_pp_helemPerl_pp_packPerl_PerlProc_pipe_cloexecPerl_init_constantsPerl_pp_sysseekPerl_pp_anywhilePerl_pp_hintsevalPerl_pp_ggrentPerl_pp_leaveevalPerl_pp_padsvPerl_pp_cmpchain_dupPerl_pp_substrPerl_pp_is_taintedPerl_pp_leavesubPerl_pp_tiedPerl_pp_padsv_storePerl_pp_i_ncmpPerl_pp_blessPerl_pad_fixup_inner_anonsPerl_pp_addPerl_pp_randPerl_magic_getdefelemPerl_pp_ioctlPerl_pp_nbit_andPerl_io_closePerl_pp_qrPerl_ck_deletePerl_pp_method_superPerl_magic_setdblinePerl_pp_slePerl_pp_semctlPerl_magic_setenvPerl_pp_eachPerl_pp_enterwhenPerl_invoke_exception_hookPerl_pp_statPerl_magic_getpackPerl_pp_flipPerl_pp_getpgrpPerl_pp_lcPerl_pp_unweakenPerl_release_RExC_statePerl_pp_argcheckPerl_pp_ghostentPerl_getenv_lenPerl_pp_argelemPerl_amagic_is_enabledPerl_pp_dbmopenPerl_pp_eofPerl_scalarPerl_yyparsePerl_pp_refaddrPerl_pp_lvrefPerl_get_no_modifyPerl_pp_gprotoentPerl_pp_redoPerl_pp_postdecPerl_magic_cleararylen_pPerl_pp_negatePerl_pp_getpeernamePerl_pp_readlinePerl_pp_acceptPerl_magic_setcollxfrmPerl_pp_coreargsPerl_magic_killbackrefsPerl_report_wrongway_fhPerl_pp_sysreadPerl_pp_bindPerl_import_builtin_bundlePerl_magic_setpackPerl_ck_backtickPerl_utilizePerl_get_hash_seedPerl_boot_core_mroPerl_pp_once_DYNAMICPerl_localizePerl_pp_gpwentPerl_pp_floorPerl_pp_breakPerl_pp_listPerl_pp_continuePerl_set_ANYOF_argPerl_subsignature_append_slurpye843419@0013_000000bc_4d34e843419@0016_000000d7_24a4e843419@0017_000000e0_28b4e843419@001e_00000120_1404e843419@001e_00000120_a408e843419@001f_0000012a_3364e843419@002f_000001b5_a940Perl_sv_chopPerl_sv_setnv_mgPL_modcountPerl_bytes_from_utf8strxfrm@GLIBC_2.17Perl_class_set_field_defopPL_start_envPerl_rninstrPL_padlist_generationPL_sv_immortalssetlinebuf@GLIBC_2.17Perl_sv_taintPerlIO_cleantablePL_threadhookPerl_PerlIO_fillXS_builtin_export_lexicallyPerl_newWHILEOPPL_origargvPerl_rv2cv_op_cvPerlIOStdio_clearerrPerl_save_aryPerl_valid_identifier_pvePerl_pad_add_name_svPerl_pregcompPerl_get_prop_valueskill@GLIBC_2.17PL_phase_namesPL_ofsgvPL_warn_reservedgethostent@GLIBC_2.17Perl_savesharedpvPL_deBruijn_bitpos_tab64Perl_newSVpvzPerl_sv_numeq_flagsPerl_sv_force_normal_flagsPL_in_some_foldPerlIOBuf_pushedPerl_hv_clearPL_utf8_charname_beginPL_statusvaluePerl_sv_insertPerlIOBuf_fillPerlIO_debugPerl_cv_undefPerl_bytes_to_utf8_free_mePerl__to_utf8_lower_flagsPerl_hv_iterinitPL_argvgvPerl_scan_hexPerlIO_destructPerlIOBase_readPerl_hv_iternextPerlIO_apply_layersPerl_cv_namePerl_sv_pvbytePerl_mg_getPL_colorsPerl__to_uni_fold_flagsPL_setlocale_bufsizePerl__is_uni_perl_idstartPL_strategy_open3Perl_call_argvregexp_extflags_namesPerl_reginitcolorsPerl_caller_cxPL_splitstrgetppid@GLIBC_2.17Perl_sv_setivPerl_do_closePL_colorsetPerl_ck_warnermsgrcv@GLIBC_2.17PL_dump_reqQG ԁG ` tG  XH d H 0 /H SEH dUH bH uH pHH _H |H dHp<H I xI 0 `&I:I y6NI P^Io;tII apI PK I 0I<I;I II _J;J,<J ? h+J `) 9J,<FJ WJ hJyJ hJ DJ `!J<JJ > JD'< KK ,'K 07K plHK @< YK `lKx!<K LK K P`K K lK |K K L P? L 1L d7FL ZL+<kL#<L 8ALL`<L L L `0L , L PhM TtM " HM c9M " <FMN;_M p$kM;}M T HM TM P M Q DMM 4LM h N ԗ<N  +N=N&<FN (SN e,cN H tN vN # HN  NN `N F N wTN O `n0O D .O tS d=O0%<KO PT`O PmO O#<O<O $^ \O G O O 4 O tAOD%<OP G $P 7P IP Z `]P 8 mP /P :|P (P pP P p9 P PPP$<Q%Q < 3Q xEQ!<UQ `8 pQQg;m4Q ԇ Q Q C QXl;Qk'<Q p8Q @uQQ ?  R,<R V +Rp#<;R ? JR ^R!<wR&<R @cR @: R RR i4R@ <R+<8 S Л PS1S l_?S G hRS'<bS tw S 0SHS $ S S > S xS+<S Ћ<S ^ Th:pTn'<T0&<*T ? Pbs   ($<+<  @ $h&<I P3 X I  0,  1 #<  4 G fW}:0fy $_   8   V #< py65 d$ pd$6P'<Bp%<R `[ 0d'<x ;P  Z H$<  > &< P  0! TH<< L`<v d  F  p  = 8 ph  \ y6F 3,E DU 8g,<s    >,<  t w@ Pp3 C 0Rx;a d) m 0  :  tHM%<   VX D0'< p@ +  `< $P TU ^ ^ \ 8 8$< 4O Ƚ;  P  %4<" @4 pE t3 @W $ dg x@(< zT  HO%<; X  t\   1E > Wh(<d ,< T 9\ $ LH(<  @  ԝ %7 DG Y F j w#< bt x%<X`!< 2  pB,< 1;) D8&<D 0Vo p(< P6A(<  A    O H8 htF Y *<g { й0 P (&<+<   0G d W $R8m ` #< `= 4P(< 0$ `   0E   p' g5 Jh;Y h a | pJ 4 4 0L ` dT'<  i-  ;  K`#<[R n P, | P  $< @) B L  ` 0  T"#<6G ` lZ 4o P~ DH&< DN   \L , = 0N_ ik 1 |{ Md PK ` P *<8 `, p Z d'$<5 P%<] ` $j  z +  Ъ x A 4,&< Ё  x%< + `(;N , \ <q hX<<%<,%< @A 4  0  ,<  `$ ,4 " C X A $l 0/ { `@  m| ?   X" `:p<' 09J \q ԫ~ XDн;x}:@ x 48< pb`  # P &<! 4L. ԥ ? U  a }(< ( B d 4l,<   @ $ \; TW K po; )<h; H ,< 48   x@  - >   PQ b  Dp    P!< 0,<  0d            D*   8   U  b  `w  @E   z0   q '<  Pb  3 0  ` %< l;*  @,;   T  lb  J }  0    6 x  t    d `$<  p  ]!  @h83 J [  g  t  @ x !,< ,<  0 *<  @?  &<    I <  @    b h,<* H<9  ,M  ? 4d  [ q    :    P"  @D T  ! . X. @(#<S @z p p D D [ 1 Y `g >  $ . <T s ` \ E 0 @  @D@,<#<h'< <  L%<(,<%5;I&<U  o h} P X P$,< H @   8~:p  N%<0 PAm'<L#<X'<e;vP,< d`4'<: 4  \ <P< } \@&<+ `Z Bx:Vg x~  t P l8%<&< @hX Id @f - 9 xN Z @| Ho&<y t8 x!  @G h ԫ 4 4yP @! H+ ,Al'<L^ lm pE { H L L p  ī   >  C (+A< &W $<gy `F < $N t < < ( H#<' @6X,<G V;fw  To'<&,<  0D   P1 L  xd  \9 p XH ; tXm z P%<   <`,<  d<&7 TI;R [4b `gv ~h%<  P^T @3 @ +#<('<@< PH * E @ `eO b @qx$<z t !`%< ` @'< @u w@ t \#H{:>Z:j E {   px,< E 0#< &<'<+<<<0+<@ Q :hz p 0 %< 0+<  < H @! 0 = O ^ dhn  H}xk;Ľ; A  # P v(  D S ă ! Ę L2IX!<X @o  TE   ^ tr &<  |   82 4jDC  Qc `tP&< p  \ 0 T "&<1 04 ,B HU %f @C dr   D T  bn; v P  P $( =  X L  4E ] m  `a,  P@   `  @.        !!! c(3! $G! ,Y! p p!;{! ! a!!!'<! 0! pB D!!<! 4" ĭ'"E" V S" rc" `4 @v" l" " G """ `"Ȟ;"'< #h<# H3#  TD#`#;l#;# P 0# Z x# E # ## d p#%<$ w $  h$!<+$P <:$ `x P$m;f$ ' v$ - $&<$$&<$ $@%<$ T $ B$ ^t% P# P%;%% 7% 0J% @U% Be% w% !%,N% %  %@'<% 0<% $X& 1 $& P# @&V& h& N ~& & 4; ,& > & P& Ж8& @|& & ph& g, ' X' Y:'x<J']' . lo' }' 4H '%<' D$' $'' 0' e ' L(,<( $/( 0>(S( T)t( (  ( ( @ ( ( 0`4(`(<( (1(<) h)!<))<) DO) 0b) F m);~))(*<)8 <) T) p) Ь)) з * b\*  2* cI* \dh* x*؞;* PH* x* " *8*<*  * d(*!<* 0 + , p$+ f9+ `E G+ @Y+n+ z+ E ,+$<+ 0+ P + h+ @H + [ @+  , y,',0*<3, = dD, @R,P#<$_, `x, 38, , , ,,<, , $# , D -- p-- ,;-4%<P- pc-h#<t- p\-*<-- -  \- " - H-- Pjl .(.'<3. tBI.;W. hn..#<. .  L. p. 8 . pH X. / d/ 03/ P,K/ 0nh/ 48y/ P/  / $,8/`'</ #/f;`/ / B 0 {0*0 @YLM0 c h0 /s00(:0 \0$<0<00 F 0 dP1  18m;,1 p=1 k\W1 l1|1 {X1 $1  `1 d1 p1n;11 `? 22 (2i'<62 @ H2 X2  q2 22 Y ,2 t\2 2&<2 S H2 D082 F 3  <3 3 D!3 23  C3#<V3 c3 0r3 09 }3 `$3#<3:x3p&<3 p 83 `3 `3 0)4 T4#4 A4l<Z4 p l4~4 D4  d4 p t4 PP44  44 tA $ 55 $8+5 P3D@5 `J4 R5 g5 hu5 5 @5 z 5 @ 5 5P$<5 5 -5 d6 P |(6 \76 0@D6 0@Y6 j60(<6 0 6 p6 x6)<6 h 86 p> 6 U 7 8#7&<%7h!<37 = ,A7 `,W7@#<j7#<z7 P $7 / D7 7 P`7 8 |7@*<7 d7}:P78  \ 878K8 X_8 y8 2 T8 88'<8 0H 8#<8 0H8",<8 @@8  ` 9 4+9 > :9 E K9 @9`9r9 P D9 9 0 9 U ,9 9 `90$<9`: :'<:(:;2: T |F:g;T: P e:( <y:X$<: ` :`&<:: D#\: Pi: _: 0: Y\; 06;F; ^;h$<i; $R |~; T D; d[ 0;:X ; @; !; @t 4; ; < < p P)<ح:(5< I< DZ< lg<v< P$<`: < @< \ <8#<< \< =8,<)= 0P:=M=`= @ s== C =;= ^= `H = $x=|;=+<>> H)>)<4> `> => <L> ԫ`> " o> L> > >><> T>? 1 ? 4 d-? @ >?&<K? (,X?<e? 0o??*<? %L? @? T ? > ? ? T? p D@ 0\`!@2@:`A@  XS@ P< c@'<l@ @y@ 0 L@ (@<@@ P D@X'<@  @ @[ A `{A*<A H1A 0 DA GZA+<gA @D |{AA PA)<A AA H A $< |A @ B(<B H&B  7B KB NgB , uB'<B B `B sB (B PB"<B 05C 0lC  ,C p `DCX%<LC Ԕ\_C ToCC `C  C  0CC 0G C A C%<CD 0 D N `7D PfLD X ZD < iD'<D tD p) D T D TD$<EE %E @w=E `>JE\E  {E|,<E 0 pE E  E @WTE 4 pEx(<E LF [3FGF 0[FmF;{F 0? F FFg;F xFؽ;(`FF  G `G `@%G 4G % CG "VG @n sG w GG 0Z GG K Т5\ آ5 m 5~ 5  50 05, `5<– 5@Ӗ 5 5 5 5 5 ( 059 H5$J p50[ 5,l Ф5 } 5, 5( H5 `5 p5 җ 5 5 5 5  5' Х58 5I 5 Z 5 k 5| 5 (5, X5 `5 x5ј 5 5  5 5 5& 57 Ȧ5 H ئ5 Y 5 j 5{ 5 5 5  5 05\Й 5T 50 54 P5 X5 % h56 p5$G 5 X 5 i Ȩ5z 5  5 5 5 5Ϛ 5  (5 05 H5  X5 $ h55 x5F 5W 5h 5 y 5 5 ȩ5  ة5 5 Λ 5ߛ 5( (5$ P5 `5# 5,4 5E Ȫ5U ت5 e 5 u 5 5 (5 05  @5Ŝ `5L?N;՜N;X?08 q?@8? v r7 r 0r? ,6 ,6;?p8 # / `? v7 F @dW |b T tP Ī U T? `76 P4 ؝  , k` . @@ (J  g p&r @;H = G KHО PM Pw ` @;6  ;6 <6# <6+ <6?85? <6 ?HR;=HR;(?`*9H? >6 ? (>6? 8>6Q 8>6_ P>6n X>60 >68?*9 &? >6 & d'ş 0+dҟ 1ޟ 4 5 :0 @;$ <> =J >\_ @|v BU C  $F` G@ K `M\ N dO  l! `ml4 `yK xa А<n |  ? m6  0 8 @< ڡ X 0   4 h= 0H t\R a #\i 0+p 1{ 48  @A,# `x z {:Т @  .   `p6 xp6 q6B9 Pq6(?pR;CpR;(KR;(SR;(?`+9\? q6 `.c `.p 3 M z6  6Tӣ 6$ 6 6@ 6? x6 x6( @x65. xx6IC x6.X x6m y6o y6J 06 86 @6 H6Ĥ P6Ԥ X6 `6  p6  6 6$ 64 6 D 6T 6d 6t 6 Ȑ6  ؐ6 6 6 ĥ 6 ԥ 6 6  6  06 86$ @64 H6D P6 T `6d h6t p6 x6 6 6 6Ħ 6Ԧ 6 6 6 6 6$ ȑ64 Б6D ؑ6T 6d 6t 6 6 6 6 6ħ 6ԧ 6 (6 06 86 @6 $ P6 4 `6 D p6T x6d 6t 6 6 6 6 6  6 Ψ Ȓ6ݨ В6 ؒ6 86  @6 H6+ P6; X6K `6[ h6 k x6 { 6 6 6 6  6˩ 6۩ 6 Ȩ6  ب6  6 6 + 6 ; 6K 6 [ 6 k 06{ 86 @6 H6  X6 `6˪ h6۪ p6  6  6  6 6+ 6; 6J 6Y ȩ6h Щ6w ة6  6  6 6 6« 6ԫ 6 6 6  6  6. 6@ 6R 6d 6v 6 6 (6 06 86Ь @6 H6  X6  h6 p6) x6: 6K 6\ 6m 6~ 6 6 6 6 (6Э 06 86 @6 H6 P6  X6 0 h6 @ x6P 6` 6p 6  6 6 6 6 6 Ю 6 6 6  6  7  7 0 7 @ (7P 07` 87p @7 H7  X7 `7 h7 p7Я x7 7 7 7 7  70 7@ 7P 7` 7p 7 7ī 7֫ 7 7 7  7 70 7B 7T 7f 7x (7 07 87  H7  X7 Ҭ h7 p7 x7 7 7+ 7< 7M 7 ^ 7 o 7 7 7 7?R;R;H0U;pV;ưV;ȰW;P?T9ڰ  t dhz Ј ? 7 T? 7? 7 7 7?`^9'? y 4 ?,<J,<?q9Q ? s9Z p?Ps9b ?s9j ?s9x ?s9 ?t9?t9t9 pP lʱ ` ڱ f   +p  ; ( p$: @4 O P`` t 02 U8 0 Pa `hDz q@߲ 0 Ę 4 x% r < 4|K  _ (Hl | d  Z ` c  px  <x V@ E7 I `EhX xj K Xy f 8 t  `t L˴ ۴ , L $) 8< CHZ zq @K} ВP p 7 p L̵ PA`ڵ p( ?\  Pr hR a Tm T1 d   Ad  p ̷ Pݷ < ľ P> 0/. `: pG 0=T <g s t dH P tt¸ 0ָ D `J0< @O |# S03 0YH HU л\ f p u 0 `  G< ` 0Ź 7ع     T ` & 7 H dW f Tv 0{ U( T 0C   p κ / ߺ Df }0 zl  T `, =  M _^  + 4  ǻ P  Ի 4  uh D PH  rH%q;; P tt_ o  dT, 4 `  s ͼ 4ռ $2   4 p  $ h: dlF R N dc  q ` 0h `d Y @L ǽ D ؽ 0| D Б  &8 @ )  D p\ ( n P ~ 0y0 8L p D ` S Ҿ   t@ D/  t 0g,1 E >Q P[ $adk 4V , d Ĥ(ȿ DFտ  H , T @o <# _8> Q Db xt w $   0z   c f  C ) mH = `J NX j 0v P  _ 0 @;  @[) T  P t D ( 6 4<lH #DV zl o` S4 < @8  0 @   V| t+  9 hN T[ ` g Dy Ĕ  , @#  4 S` P= p x   P 0 `gHI zY d Pw ( `  0w  x ,   phh L t P $ d l 3 HD IV d 4     < Dg( 0 P  ) P! p, \; E T`S d 4t w `   &  Y\ P$ 8 y,    0d( d? JPP !a  j t @l D l h l  L `:<  0  @C . pJP< ( L Z d t | P 8 4 4 l;  {\ | `j $/` 4  T ) H7 @XD Q K] l 4{  @; 4   l p p hT & 59 0GX;T HH` T,q Ԙ 4 p D h P   PP  @L $ 0Ch" $0 dT> O \ V o %{   `   a0  Bp TJ    P. ` > @P$L g$i ` x 0 0  P `- 0 P D ~ p   }* p< @xL EtY $i Bz =8 BT pA ` 4  b P P P , b # P 0 btA 0S @hd u`   8 PU8 s d oH H d ] -4 ` 0. d ? pN Pp`i d{ h O0 dM  @ 0 ^  Ђ O @x <h ps  0W. ): f M a U r x ` p  $4d p P 0 P|8  t $. P < xN Т^ Pl $ , f$ _  ` d pT sX T t T W+ $Y8 y L y X` ]r B   0^ | , wl \  P?t L A  0{\& 4 C VLS :g %D} @ >< H H p b p  o cl | B,+  \< \J eDZ pb tp ~  Mp p p 0 [h pt 0k t H  e4+ \? Q  f `s dj +T D t o P 4 4  a x 4 P> B cO l[ Pr dT   H 4#H %$ `7 0  P   T( 'H? N @{ Y l a  h \ H 0m  1 4 jH  H4 P <H pP `[ p g @t i$ t   @t\ t p   $" P   " - B 3Q p d 0Xu 4 dh Tp  $ Q  , " 4 0  0 @P* p5 `:D dY Tn z \ o  H 5 H `(   P( 0yH iH   H. dF 40W P@h px    $    Y D2 P $ м   \$ ` 4 M \ &p 0  p @ $     t    3 TID 8 Q d  @w @o;  pg   ; T 0:H D     H 2 P  P   M (  (  <h < < < <    ` h h 0 0p 8%< PZ& _A(<PN [p;qP+<` >  ! d;  ` 0 $'< Zp ` 4 ~B \ | q 8 D)0:8*< 9 P @ C p0 'KH <[  l O Tz<H'< D  H    [ o :  '<) - 7  G A TW @ h  | O  ? X N (<0 x#< `4; H|:p,  ? D$Np'<Zm { <#< `; $ X p H 0 %<  C/ pr=;I p, Z td TUhx'< `I8  H#<  D  P i x xp!<) p,= L Y pg 4z , @]  P D @, 0 #< ` 1  <  L"5 N C  U 0x~x#< 9  T %<P%< d `rQ',< X(<  - 9<H A W<e - x x 0p  \ ` ĥ ďd#< 4 $$!< @R 5 c yt'< > ;  0< b X+<$ ? X3 iC B HR @ fwp$< P7$ H!J$ (!]$ !p$ X!P%$ "$ "$ "p$ &"$ &"$ &"0$ &"@ % 0'"0% `'"`+% '"=% /"@P% 2"c% 3"u% 8"% P9"0% 9"0% 9"0% 9"0% ;"@% P;"0% ;"0& ;"0"& ;" 3& ="0O& 0="@`& p="q& >"@& @>"& >"& `?"& ?"& p@"P& @"& PA"`& H"0 ' I"@' J"01' PJ"0N' J"_' K"p' L"0' L"`' @M"' M"`' N"0' PN"0' N"`' N"0( O"P( `P"0B( P"0h( P"0( P"P( @Q"0( pQ"0( Q"0( Q"0) R"0%) 0R"0B) `R"0Z) R"0q) R"0) R"0) S") S"0) S"@) 0T") Y"0* Z"0* 0Z"@#* pZ"04* Z"@E* Z" T* f"0m* f"0* g"0* @k"* Pm"0* m"* n"`* n"@* 0o"+ o"0,+ p"@=+ @p"PN+ p"@]+ r" r+ }"@+ ~"P+ X~"+ ("0+ X"0+ "@+ ", X"@, "0-, Ȁ"@B, "PW, X"l, H"`, "@, "@, ("@, h"P, "`, "0, H"@- "0)- ">- "@S- "0h- "0}- H"@- "@- ȇ"@- "- "P- H"0- x"0. "0%. ؊"@:. "O. "0d. H"@y. "@. Ȍ"P. "`. x"p. ". h"@. " / 8"0 / h"@5/ "@J/ "0_/ "@t/ X"0/ "@/ Ȑ"/ X"P/ "p/ "/ "@0 "0 ؕ"@10 "F0 "@[0 X"Pp0 "P0 "0 x"0 ("00 X"0 X"0 ؛" 1 "01 (",1 ("`A1 "V1 "0k1 ȡ"1 X"1 آ"1 X"1 "P1 h"`1 Ȧ"01 "p2 h"0(2 "p=2 "R2 Ȩ"g2 H"0|2 x"P2 ȩ"P2 "02 H"@2 "02 "@2 "P3 H"$3 H"@93 "`N3 "c3 "@x3 "P3 H"p3 "63 "0)3 #`3 H#3 #@3 8#`4 #!4 #0*44 H#0#G4 k#Z4 m#`m4 h#4 X#`4 #@4 #04 (#P4 x#4 X#04 #04 #5 H#@5 #0'5 #P;5 #M5 #^5 ؘ#0n5 #}5 #@5 X#0 5 #05 #5 #05 #05 #@ 6 (#`6 #@+6 Ȭ#0@6 #pQ6 h#`6 (#q6 #6 #`6 #6 x#6 #06 (#6 #06 8# 6 #P7 #0"7 8#@37 x#D7 #@U7 8#0t7 h#P7 #P7 #07 8#07 h#07 #@7 #07 #` 8 h#`8 #28 X#E8 8#0_8 h#q8 8#08 h#`8 #`8 (#8 #8 #8 #09 H#`9 #`.9 #B9 #U9 x#0o9 #09 #09 #9 #09 #`9 h#`9 # : X#: H#1: 8$0H: h$^: $s: $: x$: 8$0: h$P: $0: $0; $; $0(; ($0;; X$0N; $0a; $0t; $0; $0; H$0; x$0; $0; $0; $`< h$`< $-< X$@@< $0Z< $l< $0< $0< $0< $0< H$0< x$0< $0< $0= $0= 8$0.= h$`D= $`Y= ($m= $P=  $@= H $0= x $0= $0= $> !$@> !$09> !$pT> h"$0 f> +$0y> +$0> +$0> (,$0> X,$0> ,$0> ,$0> ,$0> -$0? H-$0(? x-$0A? -$@X? -$`n? H.$p? .$? H/$`? 1$0? 1$? h2$ ? ;$@ <$@ 8=$01@ h=$D@ >$W@ >$0r@ >$@ h?$@ ?$0@ (@$@ @$@ hA$0@ A$0A A$#A xB$0EA B$0cA B$0A C$0A 8C$PA C$0A C$@A C$pA hD$B XE$p'B F$P;B I$NB L$0hB M$0B HM$B M$0B N$0B 8N$`B N$PC N$@!C (O$;C P$@WC XP$0rC P$C Q$@C HQ$0C xR$@C R$pC (S$0D XS$P.D S$p @D ]$RD c$0sD Hc$0D xc$@ D m$`D o$@D Xo$D s$D t$D Xu$E $E $ 2E $@GE H$\E $0qE $@E H$@E $XE $0E $E $0E $ E $pE $0 F $0$F $0K %QK h%dK %@wK (%0K X%0K %K (%`K % K %0K %K x%L %"L %5L 8%HL %0[L %nL %L %pL %L %0L %@L P%L %L %@M P%0M %p,M %0?M (&pRM @*&eM 1&0vM @5&0M p5&0M 5&0M 5&0M 6&0M 06&0M `6&0N 6&0/N 6&0BN 6&RN 7&pcN 08&p*qN b&pN c&0N @c&pN d&PN e&`N `e&`N e&0N e&O f&`O h&`1O Pi&PBO i&0ZO i&0mO j&0O 0j&0O `j&0O j&0O j&O @l&0O pl&0O l&P P&!P `&@3P &pEP &WP &piP `&0{P &0P &0P &0P &0P P&0P &0Q &Q @&0Q Ш&0MQ &0eQ 0&0zQ `&PQ &0Q &pQ P&0Q &0Q &0 R &0!R &09R @&NR Ы&0dR &`xR `&0R &0R &R p&0R &pR &0R @&0S p&0'S &`n b'Un {'nn |'Pn `'n '0n P'0n '0n '0o '0o '0/o @'0Go p'0]o '0qo Ж'0o '0o 0'0o `'0o '0o '0o '0p '0+p P'0?p 'H.Rp '(dp `''vp h(8&p <(h"p _(h"p p(h"p أ( p (p (q p($q )-0Jz 0>-0wz `>-@z >-z `?-z B-0z 0B-z I-z pJ-{ 0\-{ \-P*{ ]-P <{ `h-M{ i-pb{ i-v{ k-p{ l-{ l-P{ m-{ -0 { -p{ P-| Г-| P-@/| -D| `-PX| -pm| -0| P-| -| -@| -0| -0| P-P| -0} -} p-04} -0W} -0s} -0} 0- } -0} -0} -0} @-} -~ -~ 0-@#~ p-0;~ -0T~ -0m~ -0~ 0-0~ `-0~ -'~ .p'~ (.&~ O.4~ .P 0.@'  p.0< .0Y г.j .@{ .0 .0 . .0 . .0  .- .0/ .0F .0a H.0u x.0 .0 .0 .0ŀ 8.0ـ h.0 .0 .0 .08 (.0X X.0s .0 .0 .` H/0 x/0ҁ /0 / x /`  /p H /0* x /0= /0P /0d /`x h/P /` /@ X/ǂ /ۂ X/` /P /0 8/) !/0= ("/0P X"/c $/0v H$/0 x$/0 $/0 $/0ƃ %/@ڃ H%/@ %/@ %/@ &/@* H&/@> &/0R &/0f &/0z '/0 H'/0 x'/` '/0̄ (/0 8(/P (/0  (/0 (/@1 ()/0E X)/0Y )/0m )/0 )/0 */P h*/0 */0ԅ */0 */0 (+/0 X+/0& +/0; +/0P +/0d ,/w ,/`  H9/p 9/P :/` h:/.ˆ xh/0 h/@ h/P 8i/0 hi/P* i/ = m/P o/ c s/0z (t/0 Xt/ hu/0 u/@χ |/` 8}/` }/ h/ /P( H/0< x/0P /0d ؀/v /0 /0 /  h/ ň /0و /0 /0 / /0' P/: /M /` /s / /p / / /@ω /@ 8/0 h/@ /@ /`( H/0; x/pL /@] (/0s X/0 /0 /0 /0͊ /0 H/0 x/  /( 0/07 `/0W /0u /0 /  /0 @/PƋ /p׋ /` `/ 0/ /@) `/0B /[ @/n / / p0P 0̌ @ 0ߌ 00 0` `0$ 0@= P0P @0d P!0P~ !0  #0 (0 ,00ԍ ,0 00 p40 700* @70; 70W X:0 @;0 92(ю xb2 8c2) 20 ?::+X#;:";J;X: %gx:Pv::(:::(:͏:(8::H:#:X3:A :Oh:]:hn:H@:x:::X:Ő:?8Ӑ P?8? v `7 `  @5 ?8P ` ,u  $ l @? p ?p8Б Iߑ I|? ?8  P `P! P4 HN Pxm Ћd~ 4    0? p?5’ 4tΒ  P D @  PXa% F5`1 F5`= @] Pm @ @  xe5ϓ  5,   6 p2 pB 5$4R c j PR5$? B5s (I5| \  0  ͔ %ٔ H5@ 4K p` F5` (I5| pF5$ H5 2 H5[? pH55K H5>W H5;c I5l K5y K5F (L5k L5h R5L͕ 5ߕ 5 5  5 5 ' 59 Ȣ500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000X;<d 0?$Y$YD/$Y$Y^$Y$Y$Y$YM$Y$Y$YVV$YVUOpJ$YD/D/TIL$YD/D/$Y Y Y Y$Y Y YM$YpJ$YpJ$YAD/D/D/@@@@@@@@$Y$Y$Y$Y$Y$Y$Yt$Y$Y$Y$YV$Y]PUPU%%%%%%%%%%%%$Y$Yiiiiii$YPUPUPUPUPUPUPUPUPU$Y$Y$YPUPU$YD/D/D/D/D/D/D/D/D/D/D/D/PH`E`ED/P?P?@D/D/D/D/D/D/D/D/D/V$Y$Y$Y$Y$Y$YDFDFDFDFDFDF`:;V$Y$Y$Y$YD/D/0^$Y$YD/D/D/D/D/0W0WD/WD/0=$Y0=0=$Y0=$Y$Y$Y$Y$Y$Y$Y$Y$Y$Y$Y$Y$Y$Y$Y$Y$YD/D/D/D/$Y$Y$Y$Y$Y$Y$Y$Y$Y$Y$Yd$Y$Y$Y$Y$YD/f$Y$Y$Y$Y$Y$Y$Y$Y$Y$YBD/D/D/D/D/D/D/D/D/D/0C0CKD/D/$YD/D/D/D/KEEDD/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/-----------------------------DD/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/$Y$YD/@;@;D/$YD/D/D/D/$Y$YD/D/D/D/D/D/D/D/D/D/D/D/D/D/D/SD/^($Y($YD/D/$YD/D/$YD/D/$YD/D/$YD/D/D/D/$Y$Y$Y$YD/D/$Y$Y$YD/D/$Y$Y$Y$YD/0A$Y$Y$Y$Y$YD/$Y$Y$Y$Y@O$Y$Y$Y$Y`j$Y$Y+$Y$Y$Y$Y$Y$Y$Y$Y$Y$Y$Y$Y$Y$Y<$Y$Y ab bbpT`ac4  dp` P P d p  0Pb 0 fԘ P P t 0 P ~~pp` ` ` ` `  T p  pp $d lmc`  T T T@ T}Tp T T T PP     5"#%++)$/3:>PAPAG@H@KNPP\ ips PPeP@Б t0P`pp`00P0DPU djU 04Pp00b`ldb00/  d402$458;0:`ľtt$PPp P p  000ttt!4#4#&&`(`( 0 0 0 0 0 044444888888888888<P>pApA@PdTUdTdTdTV@X@XY []_$aceDfDgphj0moudT@x0yzP|}``Pppppp@[@[$" "+T,PPPĘĘĘĘĘĘPPPĘĘpT@$ p@{ 4 p 0{$0d%&$2&4<P   ` P$p  IBPah x P  ( 0( 88 @H HX  P Q S T( U8 VH WX Xp Y Z [ \ ] R9 |(PxH10 y812hxvx1x 9y9 (08|U@HPX`hpxH1 12hxvxGCC: (Ubuntu 11.4.0-1ubuntu1~22.04.2) 11.4.02RX`a  0    7S7v:v:v:o;q;;X;;      (  * , P?X;B X;?v:dv: ?v:v:?S7?;   ` P  4  p <? ' 7 !N !` p#n D$ $t D&  P' ( ) + 0+ ,? 8= d0`U 0He 3v 4 7 8 Tf Pg g $i i t 0! $0 ? S d x `  T d, 0d0 ToH 0 ? = ;  8<0+ h<>; <1?v:Pv:@?T7h po pz  ? h=     @dU  0X   I JX? xS  T T8 HU?Xv:FXv:0?X7R ^ T? (k  p H  D  04 d& : K _ 0r $X  p P   ? ` ` ?Y;Y;?(7? v p7 p ?7'? y 1 tB S d PDu ? e e.?b;b; ?7? 0> %?7? @e ' 'p p( 01 0) @*45 t,R /(n 4Y?v:ov:`?Ȯ7 b? k?07? k b b d e pfH j l ?v:v:@?7  ? `q?`7 ? r ?p7   !   ? 0u-  P I   b   s        T  @   @ t  P   TY D  [ 1? (?(w: (w:* w:6 8x:?7B ? H? 0?`;?;?;?;?f;?:L    0 ? ? yQ  t 8[  l  `  U @       x     K?: :X?7  #  #   @$ ? &  % 8  ' E  p( Z  p+  ,  - ? k  > }  pN   4R @  tS d  p   0+?X7 ? ` Ђ ? x  4  H  0 ?`7    ? y&  4 dH  `]  @k  @   ,     \   <  P 4+  M  Z  / Df  0          <     0  & P$ T ? 9 8D 4O  pe x ?;?X:uX:pȲ:p?7 `> ? ?X7 `K  `K  K  M , L  0L  L P?  Q |? 3 0~ ?8E P P P P? c    ?   ?8:8:?P8?  !  ! ?8 @D ? v7 D U D @ ` 0?  tw  P}  P?8 p  p p? " `0 @ L m Ě  x   ? ?p)8  D  P  `  @    2 TF LZ 0 r p @ @ ?   `  0  0 0 ! d- % > % X ( 8i ? ? ${ $R?g;g;?,8 X  X ? v ?*? % \* ( x, / 0H 5H 8;W <W = >?N8? v 7   (  > `Q |U @c v   d     0 ?     (?`O8  h p T? 8) 7 |A xP p  `U @H  L  p d!T %  % " $*4 2D L? U @ ?P:cP:sص:p?u8? v L7 L L8 M M PU @Q@ T8 DW  YH P\?  & 8 1 H?8: -D -? PN .Z /i @2@w 2 D3 4 :H?  = > tBh1 s> ?`8? v 7  й X3 \J Pf   0   h P  `T   , 0 K  e %  5  E W g wT?88?  A 8V 0p   pL ? ?    Э ح     ?H:H:`:8?P8% ?H8. 8 hK d ? v7 y  l 08 pd Ԭ $ , @ 4 D; hS `(| t   0U @ 0  Ը  @* dC p( P  b Pm h~ p0  P2   0 # h2@2 1p/& ȩ10.> x1P*V Q1-n h(1 ) 01 4< 3`h 8D3? &4Y 3: 2-  (<0+# (g002< 0*] X0`2 2X, 4`( 2* 5, 3p) 4* %0 &;( d)p61 tP _\W[ 0p_? a : q М} FLV?p; Ѕ Ȇ(    8 ؑ h0  $  XP:  S  (Pj  x@  @  8  00  `0  0  0 ! `"! P@9! 0P! `f! P! p(~! (! 0! ! ! в" ` ." P="  F" !0b" (!pz" !@" !-" D! " N!" O!0" HO!0" xO!0" O!0 # O!# xP!02# P!0I# P!0\# Q!k# Q!|# (R!`# R!@# R!*# }! 2# ȯ!@# !@2# H!# !0$ !$$ !8888899 9(989@9P9X9h9p99999999999:(:@:P:`:p::::::; ;8;`;;;;;<@<h<<<<< =H=h====>(>H>p>>>>?(?H?h????@(@P@x@@@@A A8AXAxAAAAAAB B0P0BHB`BxBBBBBBBC8C`CCCCCCCD(8HXD(D8DHDXDhDxDDDDDDDE(E@EXEpEEEEEEEF F8FxPF`FpFFFFFFFG(G8GHG`GpGGGGGGGHHH H0H(8@H`HHHHHIXp(IHI`IIIIIIIJ(J@JXJJJJJJKK8KXKxKKKKKL L0L@LPL`LpLLLLLLMM0MHMXMhMMMMMMMN(N8NPNhNNN(8NNNNO(O8OHO`OxOXhOOOOOOP(P8PHPXPhPxPP8HXhPPPPPPQ8QXQxQQQQQQQR(R@RXRpRRRR 8@X`RRS S8SPS`SpSxSSSSST T8T`TTTTTTU(U@U 8XUPhpUxUUUU(UUUUUV V8VHVXVhVxVVVVVVVVVWW W(W0W8W@WPW`WpWWWWWW 8HXXpX(X8XHXX`XX`XhXxXXXXXXXXYY(Y8YPYhYxYYYYYZZ(Z@ZPZhZZZZZZZ[[([@[P[`[p[[[[[[[[\(\@\P\h\\\\\(0\\\]](]8]H]HPhpxX]`]h]x]](HP]Xh]]]]^8^P^h^^^^^^x^^^_ _8_P_`_0x_@Xpx____`(`P`x`````a8aXaaaaabb0bHb`bxbbbbbb@kbbc c8cHcXcpcccyccc cccdd(d8dPdhddddddd8Hehx e'(e8e@ePeXehexe8@eH`eeeeeee(8fHXfhx(f@fPf`fhffffff@Hpxg(g@gXghgxg0@gggggxggghW(hHhhhhhhhh`$p$hhi i0i8i:$@iHiPihii(0HXiii hpij j8jHjXjpjjjjjjjkk8kXkpkkkkkkk8@kll(l8lHlXlhlxlllllm m8mPmhmmmmmmn0nXnxnnnno(oPoxoooopp p0p8pHpXpxpppppXhpq0qXqqqqqr(rHrprrrrrrs(s0s8s@sPs`spssss(0X`ssstt(t@tXtpttttt (0HXxttu u@uXuhupuxuuuuuuv(vXvvvv(w8@Xwpwwwwwxx x8xPx`xpxxhxxxxxxxxxxyy(y8yHyXyhyxy8Pyyyyy.z z z0z@zH1 EPzXz`zxzzzz6zqzhzzzz{ {8{P{h{{{U{{{{{{|(|@|H|P|X|`|h|8#H#p|x| [k||#$|||||||}Pd }0}@}X}p}}}}}}}}}}pA6~~0~@~P~_x98X~(d@HPh6`~PcX`}X`h~dp~x~~~~~~~~~~~~~~~~~ (0@%P%8@HPX`hpx (08@HPX`hpxȀЀ؀@7070p4000,0,0(0#0!0P!0@0P00`0000@ 00p0//@//`/ /0/`///@/////`/0//x/H/////X/(//x/H/Ȇ2//h/8//////////P/ /////h////؀//x/H//h/}/8}/|/u/hu/Xt/(t/s/o/m/i/hi/8i/h/h/xh/h:/:/9/H9/2,/,/+/+/+/X+/(+/*/*/*/h*/*/)/)/)/X)/()/(/(/(/8(/(/'/x'/H'/'/&/&/&/H&/&/%/%/H%/%/$/$/x$/H$/$/X"/("/!/8///X//X///h// / /x /H / /x ///x/H/...X.(....h.8....x.H........ ....г..p.0..O.(..-`-0----p-0---@----0----p---P- ----P- --`--P-Г-P---m-l-l-k-i- i-`h-B-]-\-0\-pJ-I-0B-`?->-`>-0>->-=-=-P=-3-3-p3-@3-3-2---P+- +-*-*-*-'-"-`"-!-x -8 --H,,,@,,,,,,p,@,,,,,,,Ц,@,,Ѝ,,P, ,`,,,p,,,P, ,,, ,,p,, ,pP,0O,@N,5, ,,` ,` ,,+++0+++++p+Z+Y+Y+PY+P' ''''`'0''Ж''p'@'''''P' '`'|'{'b'`b'0b'b'a'a'pa'@a'a'`'`'`'P`' `'_'_'_'`_'0_'_'^'^'p^'@^'^']']']'P]' ]'\'\'\'`\'0\'\'['['p['@['['Z'Z'Z'PZ' Z'Y'Y'Y'`Y'0Y'Y'X'X'pX'@X'X'W'W'W'PW' W'V'V'V'`V'0V'V'U'U'pU'@U'U'T'T'T'PT' T'S'S'S'`S'0S'S'R'R'pR'@R'R'Q'Q'Q'PQ' Q'P'P'0G'G'F'PC'@B'3'P3' ('0''p'@''`''p'@'''''P' ''''''''''p'P'@''p''`''&&`&0&P& &&&&&@&&&&& &&&&&p&@&&&&&P& &&&&`&0&&&&p&@&&&&&P& &&&&`&0&&&&p&+**X*`t*(H*`*)P)8G+) ))h)O)6))p(((أ(p(_(<(h(`'''@&&&&p& &&&&&&@&&`&0&&`&0&о&&@&&`& &P& &&p&@&&&&@&&&&p&&и&&p&@&&&&&P& &&&&`&0&&е&&p&@&&&&&P& &&&&`&0&&в&&p&@&&&&`&0&&&p&@&&&p&&&`&&Ы&@&&&&&P&&&`&0&&Ш&@&&&P& &&&&`&&&&`&P&l&pl&@l&j&j&`j&0j&j&i&i&Pi&h&f&e&e&`e&e&d&@c&c&b&08&7&6&6&6&`6&06&6&5&5&p5&@5&1&@*&(&%%P%%%P%%%%%%%%8%%%x%%%%(%%X%(%%h%%؀%(%8~%{%{%{%h{%8{%z%hz%N%N%N%@N%N%M%0M%pL%@L%L%K%pK%F%%%$%8c2$%$% $%%%`%0%%%@%p%@%%%$0$$$`$ $$$@$$$$$P$ $@$$$P$ $$`$$$@$$$$$$$$$$$H$$$H$$$$Xu$t$s$Xo$o$m$xc$Hc$]$S$I$F$XE$hD$C$C$C$8C$C$B$B$xB$A$A$hA$@$(@$?$h?$>$>$>$h=$8=$<$;$XS$(S$R$xR$HQ$Q$P$XP$P$(O$N$N$8N$N$M$HM$M$L$h2$H/$.$H.$-$-$x-$H-$-$,$,$,$X,$(,$+$+$+$1$1$h"$$($$h$8$$$$x$H$$$$$!$!$!$ $ $x $H $ $$X$$h$$$$x$H$$$$$X$($ $$$x$$$h$8$$$h$8$H#X##h#######H####x###(##h#8#h#X##h###8##c$h#8###h#8##x#8###8##(##x####(#h##Ȭ##(######X#(x0`P ##ؘ#####H###X#x#(###X#h#m#k#H###8##H##""H"""""H"H""""H""ȩ"x"H"Ȩ"""h""Ȧ"h""X"آ"X"ȡ"""("(""؛"X"X"("x"""X"""ؕ"""""X"Ȑ""X""""h"8""h""x""Ȍ""H"""؊""x"H"""ȇ""H""""""H"""h"("""H"X""Ȁ""X"""X"("X~"~"}"r"p"@p"p"o"0o"n"n"m"Pm"@k"g"f"f"Z"Z"pZ"0Z"Z"Y"0T"S"S" S"R"R"R"`R"0R"R"Q"Q"pQ"@Q"P"P"P"`P"O"N"N"PN" N"M"@M"L"L"K"J"PJ" J"I"H"PA"@"p@"?"`?">"@>"xb2>"p="0="=";";";"P;";"9"929"9"P9"X8"3"2"/"'"`'"0'"&"&"&"&""""X!!(!H!!!!H!!ȯ!}!R!R!h21ؑȩ1x1Q1hh(10(R!Q!Q!P!P!xP!O!O!xO!HO!O!N!D!!0X0(g0(<0в!(!@;0X:070!yX`5@505(5 555ت5Ȫ555`5P5(5555ة5ȩ555555x5h5X5H505(5555555Ȩ555p5h5X5P555505 555555ئ5Ȧ5555555x5`5X5(5 55555Х555555p5`5H5 55Ф55p5H505 555555`505555آ5Т5Ȣ5555555>6>6?>6yysyl6yl6m6yyl6l6ؒ6В6Ȓ66666666x6p6`6P6@68606(6 666666666ؑ6Б6ȑ6666666666x6p6h6`6P6H6@68606 666666ؐ6Ȑ666666666p6`6X6P6H6@686066666ة6Щ6ȩ66666666p6h6`6X6H6@68606 666666ب6Ȩ66666666x6h6`6X6P6H6@68666666666x6p6h6X6H6@68606(6 6666666666667777777777x7p7h7X7H78707(7 777777777777777777777x7p7h7`7X7H7@78707(7777666666666666x6h6X6P6H6@68606(6hZZZZZ[([@[P[`[p[[[[[P[p[\$\$ \$0\0@\0X\h\x\\\\\\\\]] (]p8]pP]`]dp]0]]]]]]ZxZ]^^^(^P^X^x^^^^^(^^^^^y_((_P_x__ __ _` 8````Pc'P(d'P0dP8dP@d Hd' Pd' `d' hd' pd' xd' d' d' d' d' d Ed d d d'b00 % D ( ? P 0 ` @ 0 $X$P$P$($($$Xrrrr  v:v:o2 s ;[a" oX`ooRoo;P X@`hp x@ +@HPX`hpx Ȓ@В @(0@H `HP`hxyД 08HXhxȕؕ @P`pȖؖ +2 (08@HPX`hpxȗЗ (08@HPX`hpȘؘ 08@HPX`hpxșЙؙ (08@HPX`hpxHȚؚ(@Xhxț؛(@PhxȜ؜(@PhxНD 0  p ` tr s o Pr p  v 0w 4t Tv x w x P  y y Ĕ 0   p _ ` a ` s 0 d P $ @o  08HP`hpxȞȜО0X X(08HP`pȟ(@PhȠ.60H`xءءX1| 8HPh`Ȣ 80H`Xxpaأ(8HXhxؤ(8XpPhȥ @PX`hpxs0ȦЦئ0Hhȧا 8HXpȜ7##ШبЍ08HXhxة8P`(@XhXx ȫЫث(HpxlȬЬج 8@HPX`qo` lhpxȭЭح 0@Ppo`hpxLHdd@pȮЮخdPppHpp (0@HPX`hp pȯЯ (08@PX`hpx1а(8HXhб 0@P`pв(0@@@Xxxxس08H`xhdpdxddddشh|HP`^ (08@PX`hpxX".6ȵص(08@HP,HX`pxж (8HPd`p#H>ȷзط (8HP`pxPX`hpxs0ȦЦئиظ 08@HPX`pȜ7Шبй 08@HPXhxȺغX (0@HX ȫЫث0fhxлlȬج8@H o` lhpxȭЭح(8H@PpoX`pxм (08@HPppHpp (0@HXX`hp pȯЯh (08@PX`hpx1px"Ƚؽ 0@P`pо (08HX`hpxп@d`dHdPdhdpdxdddd(8HX`p23x2 +  (08@HPX`hpxؓ (08@HPX`hpx (v (08@HPX`hpx (08@HPX`hpx          ( 80 /   (8 H @Xp  ؍ @(@X h @ Ȏ؎hȌ، (08@HPX`hpxX#;";;:x::::::(::8::::: :h:::@::::X::@HPX`p 0@H|PX`p# (0@PX`hpx ($8@HPdPX`hpr6 (0H`hpx (08@P`hpx (08@HP`px08@HPX`p0P (8HXhpx (8HPXp (8HPXhx (08HXhx (08@HPX`hpx 8Ph (08HXp (08@HPX`hpx (08@HPX`hpx(8@HPXhx0@Xpx`g (08HX`hx (08@H`x(8HXhx (08@HPX`hpx (0@HPX`hpx (08@HXhpx (8HPX`hpx(08@HPXhx (08@HPX`hpx (08@HXhpx(08@HPX`hx (08P`hpx6ȬPX@H|# Pl 0gP(08@X{гHPXr`h$8pIx (08@HPX`hpxE( (08@HPX`hpx (08@HPX`hpx (08@HPX`hpx8d26 (08 @ @HPX`}X`xhp@HPX`}X`x. 08@HPX`h0px(08@H`x8P`hPXp`4 0@P`p   0 @ W @P~H ` p x   8l6      jl  0@ @  ( 0 (08 @ H P X ` h x     $8  @H  18<5|E    U ( 8 H PdX h h6x  r6            ( 0 8 @ H ` x    x             ( 0 H X x     X      0@HP`px 0@P`p(8HXp 8P`p 0@P`x0H`x (08@HP X`hpx 0@P`px ((0@P`px(@P`p(8P`x(Hh 0@H`!zP`p(8HX ` X`hpxPp((8@0HXh 0@X@Php8 x(8HX`hpU 0@HXhpxh6    PXPX`pU@hp ( 0 8 @ H P ` h6$8@H18<5p      x          !6! !0!H!X!h!(0x!!!!|!!U!"#""("8"H" P"X"`"h""""}x%"""""""h""##@(#`0#HP8#H#`!zH ` X#h#x######xvH#$$ $($0$P8$@$H$P$X$`$p$$$$$:$pA6$Pl~{$$$H $$$$%`   % #%0%@%P%`%x%%%%%%%%%1D x98%%xp4%%@&&& &z(&h0&8&@&H&P&`&p&x&&&&&&&&&&&&&&&&''' '('0'8'@'P'`'h'p'x'''&&''''''''8 ''(((( (((0(pl[E8(@(H(P(X(h(0&8&IE( (08@HPX`hpxx((((((((((P((((((()))) )()0)1D8))@)P)`)*.p)x)))))))))))))* *0*H*H1 E`*(*h*P*x***************++++ +(+0+8+@+H+P+X+`+h+p+x+++++++++++++++++,,,, ,(,0,8,@,H,P,X,`,h,p,x,,,,,,,,,,,,,,,,,---- -(-8-H-X-h-p-x--------U---.. .@H(.0.8.@.Pd(8X ` H.P.8<5Ȭ@8 pQX.l`.p.. (......//8/X/x/0H////0 080P0h0x00px00000001(181P1h1x1111112(2P2`2p222222303P3`3p3333333 (3334(484H4X4h4@P`hx444444445 50508@5X5p5P`5555556(608@H`p@6P6`6x666666K6677(7@7X7p7777778@8h8A (\GEHB0ԶA B^ A p A ,@A BY A G A 0(A0Bu A M A (\A D] A M,0A BZ A K A 0ApBDBBf A 0A BH (A DZ A 44Ap D B JCCAAHAp  COAp  P AAA D AAA H AAA RC ApB C GCCC+AAAJAp  0AAAA4|0A BU A T A Y B  @ȯA@GDF` BAA CC0 HC BX A OB @@A` CC E A dA@BEAVACA@l BAA H BAA  d$A@BBR A CtGA@S AA A A F A |\E(PB BJC 0ȱ,B0BX A CC08A DO A E A B A I8DGH$X,PIF B B TLA CN<0A@BCu A 0lA0CQ A V A HB BL(D@tA0DDB A p AF(TA BL B CA`B CGBAHAAJA` J AAA P BAAA [ AAA  AAAA ^ AAAA V AAA K AAAA h AAAA z AAAA < AAA NAAAд( <A CF A C$8A0Bg A `t$A BZ A 4tA0BBXCA0L4A@BCBs A i A xA BV A ,Ap B BCH GpAAADAp   BAAAA y BAAAA S AAAA _ AAAA 1 AAAA  AAAA (` A0BC` A $@ AB CBr A FORAD]xBE}MKFAfAAB A V A LRFA AB F`CHAAA A CY A A CT A X<xA`BCCP`BLUA`AFI A B A EA<A Be A S A D A [ B ABC G C jADA A AAA I AAA N AAA , LA0BCf A 8,A0DCR A O A AP DAOMC AAA CAAAP _AAAAP GAAAP f A DV B Da AAAA B A XAAH8A B] A S A K C G A B AB CFEJA B DA BNfAAAAS AAAB AAA !8A BJL4!pB0BXRT A HA0D A J0T"A BW A X A (D4#8A BF A CpD#(@#DA CH A C,X#A0BBA A 8$AP BBCCi A h&hA BI F L@&A@BCj A f A G A <$(B0BBWB0K B 0н(8A@DBBs A )HA` B BS A ABHpDABA`  Y DABA S |+ApCa A ,(,A0CCf A ,ܾ,A0Ea A  -A V A ,.A0DU A (P.B0DUB0\|/ A0BDY AA ECA0I AA EB(ܿ/A0BC\ ,0A BY A ,,0A0CS A <\x2A0BEUCA0E A C A 42A0DGEBA0,d3APBCB` A (48B BFB ,04dA@BCBn A X`6HA@BBFOCA@H A \ AA 8Ap B B CCCw AAAAA tAAAEAp  [ AAAA B AAAA s AAAA @X@<8ApB CBJV A GO A KB$8=A0BCY A \=ApB CBJo A KYGS B N A B A B A JA A D,$@APBCBY A lTA0AP CE A CF BA Aahy AA AAANGB AAA D4B CF0DA0BCN A S,EAPBCBl A HLxFTAPCCa A BMJI A ABCBG8xGA0BCr A o A (H,A0BCm A 4IA0BCr A Y A XLHK(A@BCJoJA@K A N A LMA@IA$MA0BCb A @M,A0BB^ A Y A G A (N8A BF A Ch@NtA@BBI_CA@DMA@G AA @OA0BCV A J A I A (TP8A BF A CXhP`AP BCC A D B dJ`CFdH8xlWA0BCg A X A (X8A0BC| A ,YA0DBt A $t[@A0BCIX8[A@BCHYKA@QCpTLELEG A GNVA,`A@CCC_ A tc(HcAP Er A Q A 0$eAPCCCBb A ,X|hA0BF A Y A @,iAPCCCBP A r A 0nA Ba A y C (p8A BF A C ,(pDB BK(PHp8A BF A C |Xp0A BH$dpLA BI A p0A BH4pA DBH` HA | HD ($r8A BF A C$P$r8A BHBHHxAp C BBCs YpEA  C_ ^I 'V HyHTHNHuK s HC wH HA ^HTHbHHKH[HSHBHNHOHGHBHZHU HB OHIHxHEHC BH^HCHGHGHWHGHHEHCHOHCHdHHEHFHEHIHGD SHHHJHZHbHVHGH@HAHTHGHCHNaHTHHHE HA CHR AHA B CHAHB KHJHBHYH[HQH,A0Ce A DAE` A t8 ApA B CKC A  A |MFLAGQJ(lADCj A 8,ApB CBCCm A $TA0BDK(ADCl A 4(lxAP BDDCO$`PA0BDK AE_ A 0XpA0BDO A D AE_ A 0 pA0BDO A DLH0Ap D BE BEbAAAAAAp  OAAAAAp  \EAA BCDCAAAA DC AA<Pd`xApB C Y A HBCA AAAA `AAAA$HF0B[ A d`A`B CBGnKA` S\WEAAA8l A@BDHIy HIA 0ACCB A X$TAH A V A pAP CBGNKDAP b AA TfF[ A dAB C I} A OASALA  [PJV BF GtUB[CVA`PA` BC H A BBA[ BAAA _ FBAA @PA@BGG]FA@\Ap BB C GGNADAp  ,X, 0A Cp A V , APBCB4A@BCBk A t, \A0BB A (L|A0DBL` AP CEYRF A J A J A O^AAP HAP x B X`AP BBFCdDAP \C@\@A@BBBn A k A 8A0BBK A o A 0\A DR A K A ($A0BDa<AB C Ba A lWOZB A ALAAAFWDDAAAB A $# A Dx A <$C@BDBYB@0$%XpDp%TA` CJ ABAvAAABA`  AAAABP&AP BAVfoAAAAAP H[i`AAAP A A LAEA @)0A BH$d)A0BC[ A ,L*A0CHPB A A*b$@+A C{ A 8,D,AB H FBRE|BIAKA  FOiAADzAAAA/@0AB D TGBIHuAAIHKA  HICHIJHINHIAAAIHT1Ap B B pCAp  FhEB B A AAAzAAAA HCAA(H4JPBA A <4DAP CCCY A a A (H6A0BBq@t`7lAC H s A $9`A0BDN$9A@ECf A D:tAP CFB| A L A 0P;4A BQ A l A \A Bt B C A G B p@-?(AP BTCBDABAAP CBP V AAAA 8-@BApB CBDm A $-IlAM A G A .I$AF8.ISPX.@Jpl.JlA` BB HCGTAACA`  w AAAA .OAB CD GA@iBA  JE~LChHdAh/ U (|/UA@BBA A $/V,A@DC</ZTA@BDQ A P A 0\$Am A ,00]A0BCe A `0^ApB CD kgfAp   A RnEHFS A hDJN`FHAAH0ehAPBCBMOABbAPGHH1fLADD B Cj VGA FA L B EA 41|ktA@BDJ A , 2lTA0CBC A dP2mDAp CCE  A l A n A 42sxA@BDK A 02uhA@DDY A d$3@wA@CDO`dF} A DDNTD A BGC$3zA BP A (3|A Eq B K,3}\A BB A P4~A` H ^Bq``FA  GADpHAEAVxAGiOAEYH BA E AA AA4Ȏ|A40h4 5 AB CG CDA4 ABAA RMA  AAA$5A CV B 05TA@FP A 54 68A0CDg B T B $D6HA D A <l6AP BDBCu A (6pA CQ B C<6A@Ft A T A 7A0Df\K A GJE A F A F A X A B A BA0I A BEEK A C787ܦAP BDB] A $8dA DF A ,8ة@@8ԩA@BDl A p B 48A0CCf A b A $8HA BC A 8A B\ A (9lA BM B G49AL98`9AT B T9AP BECd A x A h A $9LA O C I C :@AP CE` A E A GNJ A D`AAP K A JW[(:l8A0BJEC A B0:A Dc C U A <:AP CCi A \S B IT(;LHA`C CBOP A o A HMGBBKD A A8;DApC CFBz A ;,;A0CDQ A (<HA Ee B M,,< A0BCZ A \<p<tAX B (<A0DDU A ,<XA0CDQ A 0<hA@CEf A 0 =4A@CEi A @T=AP BCGv A zI A RJ0=@A Di C V C 0=A Dj A F B 0>hA0BDb A PD4>$H A` G H `FA 8|>(\A0BCO A R A 0>L0A B_ B ` C (>HA ET C J(?A ET C J0D?P`A Dh B N C Hx?|A@BCBa A V A L A p?,AP BISHXHKAP H^H` A EHDH\HEH]H08@A@BDk A ,l@A@GC\@\A` CE Lc A P A EquF`  _ C L B EFU A CCYGDDAA0CCz A m A S A DAA0CCv A X A R B dAAP BCDu A S A a A c A TAF _AAAAHAIAJkAAAAHAIAJIDA HIJ HIJAAAAAHAIAJHIJAAAAAHAIAJ4MABCCBp A 4MHA`BCE^ A ,N ABCBo A @8N AD C BEG A |NA@NA` D BCBA A N0XA` BJ A AAAAAAAAwAAAAAAAAAH`AA  jA A AAAAAAAAxO \A` BJ A AAAAAAAAxAAAAAAAAAH`AA  jA A AAAAAAAAP(A` BJ A AAAAAAAA~AAAAAAAAAH`AA  vA A AAAAAAAAP0A` BJ A AAAAAAAA}AAAAAAAAAH`AA  vA A AAAAAAAA@XQ8A` G BCB@ A 8Q:AP DCCN A Q`; A` BJ A AAAAAAAAAAAAAAAAAH`AA  A A AAAAAAAA$xRDhA Bp A R$F A` BJ A AAAAAAAAxAAAAAAAAAH`AA  A A AAAAAAAA@SPT A` BJ A AAAAAAAA{AAAAAAAAAH`AA  %A A AAAAAAAASH[ A` BJ A AAAAAAAAAAAAAAAAAH`AA  A A AAAAAAAATd0 A` BJ A AAAAAAAAAAAAAAAAAH`AA  A A AAAAAAAA UTp A` BJ A AAAAAAAAAAAAAAAAAH`AA  +A A AAAAAAAAUT| A` BJ A AAAAAAAAAAAAAAAAAH`AA  A A AAAAAAAA`Vԋ A` BJ A AAAAAAAAAAAAAAAAAH`AA  A A AAAAAAAAWTA` BJ A AAAAAAAAAAAAAAAAAH`AA  gA A AAAAAAAAWhA` BJ A AAAAAAAAAAAAAAAAAH`AA  A A AAAAAAAA@XȻA` BJ A AAAAAAAAAAAAAAAAAH`AA  A A AAAAAAAAX(TA` BJ A AAAAAAAAAAAAAAAAAH`AA  NA A AAAAAAAAYA` BJ A BAAAAAAAyAAAAAAAAAH`AA  wA A AAAAAAAA Z4ZDAD E NTBF^A   AA fJ AA \AA,Z8A Bc B \ B 8ZB0BHQAA0C8[0L[A@BCBP A 0[dLAPBCBEZ A 8[HAC CE A H[@AP BDf A P A _ A <\ 0P\APCDCr A (\ A`B CEBD\PAB C CB CB A T\ dAD E BDl A h A @P] AP BF[ A ET AA Ca4]TAPBCDj A \]8AP CC] A I A Cd AA C A S AA 0,^A@CEz A `^$ApB CBLXLAp BGCu BA K AA A A ^ BAA HAAD^xAB C BC ' A X8_DA` B Dg A HVgK A AjBUA A 4_!4A0E] A O B @_"Ap D DD u A T`d%AE D BBC A }HPHR HA AHh`)@<|`)A` D BCC A 4`,4AP CDCq A l`.A` CK m A N`AA`  U A IVCW0da18A Ba B W A Ta24AC CC E A U A Ha94AP CG] A f A 8|A CP A F A ph>@AP DB[ A c A CDTAAAP V A N 4@04AA EI A _ A 4hBA0BC] A H A $8CA Bs A $DA@CCH A tdFA@CCd A FWAA@[ A ^fI B EK A CC A A,hI0A@DCBs A KAB C BB~MN A EIwUFYVDND A FERS^QGKD AA AA48QA0BU A FQ AA ,pRA0DDT A S480SA@CCBa A O(SA0BD] A 4TA0BBv A H A 8TUA0BHZC A OIDPE84WA0BDV B P A 8W8A0BDv A \ B $YA@BCf A @0ZAPBCKG[APVY,tP\A0CBa A \DA BLD]A0DCx B T A M A P^A0BHX AB ]AA0K B D@d `$APBCBOfS A PbA A C$bA0BCt A $ePA0BCo A 4fAPBCCBf A ,0hA0CD[ A @`itAp EC C Bv A XDjA@BBk A BPE A ]ClOGF<nA0DDd A D A K<@oA0DDd A D A K@TpAP BFp A m A ht\A@BBImH\HKA@HJHv A tHBH[HDHx0yxA@BBIQH\HLA@HJH^A@HCHE HC _Hx|A` B IPAHq AHAA bHGAHDHGA`  H(AB C K ^HKHYCm^ A _HEHPLBAHAHC]DHFHABAAEDIHA AAHA CAAHAHCHtAP BIVHYHKAP HOH] A EHDH]HDH]HBH<hlA@BBCe A s A <܋A@BBCf A q A `PA0B` D FHLHDA0HLHC A P E NHAH0L4A B_ B a C 0Đ4A B_ B a C 0đ4A B_ B a C 0̒0A B_ B ` C 0 ȓ0A B_ B ` C DP Ĕ8A0BKf AA EFCDC0@ AP BEs A m, (A BZ B O, A BZ B OD< XAP CCCv A g A h AP BIPz AA FGGGAP P H0A@BDHw AA oFDFB@DD $A0BKU AA FFCDC0t ؞\A` B IVLkL AA AKFEGA`  H AP DCCB A V A <P $A@DBBe A T A @ A@CBBr A B A 0 DlA Bj B Z C < |A@CCBn A w A DH  A0BIk AA YFDDC0L dA0BITAA0FCDC08 tA0BDw A Y B P(A@BBVf AA LGDEB@8ptA0BD{ A X B 8A0BD{ A ] B 8LA0BD{ A ] B ,$A B` B X,TtA B` B X,DA B` B X,A B` B X,A B` B X,A B` B X<DpA@CCBv A X A @LA@CCBq A T A <pAP CCBt A Z A @AP CDc A P A 8L,AP BDBH{ HA ,DAPCCBa A |AP CCFg A HH`Hc A KHOHDHV HA SHEHRHDHC HA D HA D HA DH@8A@CCBS A Z A 0|TA`DCE A 0`APECBC| A DAD CCD : A <@ApC CBDk A @Ap B F D A D`AB CB E  A 4 <AP ECBo A ,D HAPCCCj A 0t@A@CEL A 0APCCBCU A @X AC D Dq A @  AC G  A @d0H AC G  A < ApC CH YV`OSAp  IpQXOZ`IAA@8| AE H  A `|8lAp E B BPIw` A RYIENLI@DPA` F D A X$P!AP BBEj A V A W A 4"AP BDCb A 0<%HA@BFj A X& AB C BK{ A Co E CNnB A ]CIK A MA A ACAX|/ApB CCGEUMAp MOVUCA<|1LAP BEd A V A @2Ap E B EZ A @\h6A` F CB A 09TA0Ea A FMDN A P;Ap E B D[ A W A 0(L=hA@ECr A 8\>$A@BC| A o A Pp@A` I  A Q A C AI N A BAA LdA qA A M @LHAp D D C A 0OA@BCB_ A @PPAp C C E A <S( AD CC `\DXB_E|DSOA  TNHLAAGNDAAsBAAG]FDPAAHBBO؛BGD\AAAA@\[,AD H a A v@$wxA CT B XwdAhwABB D S A f A b A `4P4tpA0BBb B N A <HA` BC Dk A @AP CDoKa A b[Ip04Ap DF S`JAp  PIVZHH(`A0BCY A $ԊA D] B PLAp K { A v A 8L xA0DBP A y A ,  0A@G[ A $  lA0BCT0 d<A Bg B S B (!pA0CCV A $@!ԓA BS B $h!\tA BS B !HA BM !ДHA BM$!A0B` A ("A BS B ,"Hh@"T@T"AB G ^ A $"l|AECq A "ĜxA CY$" AFDE A $ #AFDE A <4#A BBHQ HA R HA D HA t#@HAP DB[ A A`AAP ACWAAAP JAP ]H$A0DDp A I A f A L A 0T$LA@DBCB A ,$̦ABk A JFB B A,$pA@BCBj A 4$TADCBC A  % 4% H% DAB C O BAAAAA C BAC FA eG AAB C AA@%AC C FV A @&AB CE I hQ A V A N C A A] Az cF qa i B IB m B E OT ]E fC ME ND S C A A  C S B t D  A  C  A q C Z A hH'AC E BB A U A x A ')AC K YQAATXJB Gy\A_MAAGBnJ AA uk AAAA RFeAzALQFDUbCMCFEBDFAA[PABLFFGEjAAAcHAAnBRAaDeE^FXFKBCC AA CYDAAAdA AAAADDAAAEAAARDAA* <*ApC CDB A $+\ A Bo A T0+T ( AK 6 A  A @+,hAD H  A \+X0AP BCBMR AA ap A _I\B,,4AB C BH ]ek A [ ,,A BG0,0A@BEBk A 0,A0BK B AQA -X,A BG(0-dA0BD` A h\-A@CGk AA jAA@EA@--4,-A0EBt A @ .lA` BB BCC\ A @d.A`B CBGOWV A CCR. HA` B Cp AAB J A FAABAAA`  D A TKM A \dH/A` C CDE} A Ec A L A VN A NEE A $/TA0BCN,/dA@BDBO 0@A BI<,0Ap B F CBZ A Dl0xAB CD CC A 0 p AB C B BM A  HzHCHzHCHaHFHRHIHB HA _HbHHIHDHCHHFHKHKHYHAHPT1-tA` BE CCy A ~ A X10A0BDU AA c AA OQA0L02$38 A@Dz A 482,<A@BCCn A p2=AE_ A 82 >AP BBBBO A 02?HA B@ A J A (3AA0Elp03DBAP DBdCwAD A a A dAALMGFHA$3`FHA0BCq A 3GAp B BF BHALAp  HAAJAp  T[ AAB ] AAA U AAB @t4IAC E CP A $4WxAU D A4$X $4 XPA0BCM 5HX\A CR8@5XA0DB{ A I A 0|5YA0DBW A J 5TZA Ep5[$5 [pA0CW6T[ 4$6`[AP CF@ A 4\6]A0BDY A G,6t]A0EBm A ,64^ABBD\ A 6^dA@BDX7`AP CEm A CYAAP bt7a(AH7a(AH7a4EF$7a8AI A B7a8a($8atA0BDUP8(b$AGp84bXAp D C BBl A JFH A h A M[OCI A LD A 89gA@BCc A D @9g`A CK A d9g`A CK A ,9gA CQ A N A 9ph0A BH49|hA0DCs 0CA :To(A BF48:\oHAP CBC| A ,p:tp\A BL A F(:pABC% A 0:,vA BP A O A 4;vA@BCBP A 8;wAC8X;wA@BBBY A H0;`xA GO A K A 0;xA@DC A ;h{xA EW4 <|XAPCEBo A 8X<xAB KR A G j A BF X<0AP DBC^\S A jCK A G A <XApB C BHsAASAp  DDQAp  fABA(=4ACC A 8=̚AD H A =PA B>A E4>@XA BT>4 A`BDTDJcS A F A J A A A CRJRa`BW]zreY A QUCPp[H^CC A NA A DH> p#A` C BE `GA ,4?DTAFEn A d?pA B ?hA DT8?PTAP BCCBV A (?hA0EB` A 0 @A B[ A Q A 4@@A`D ECx A Dx@,dAP EBZ A Am A A A P@HHA@BCCs A E A L A 8A@A`C EDs A PA dA<A BK$AHA0BDJA$8A0DAP EBBK A B8d|BA@BDH AA LSAAA@DA@GEAA@hBA@BBWAA@NA@OF A D8CA0DBd A K A A` B BECEE A GM BA IRUF A HT A CA`NA|AP BT A E A Q A BFB BA BAFDGApO$CtA` B DBeBGAEA`  CNLAhO$ELA` D q A AAz BBA FLA AA OIlAp C B CAAADAp  ~iAp  P AAA D|PM A@CUCxAB A NA@BFC AAA KAALQdOA0CHN AA AEC0GA8`QOA0CH A l A TQPHA0DQ AA N AA ALBAA0NA A GA`QQA0Cb A BMAA0Af AA AEJA,XR SA0BBL A TRSLA0D\ AA N AA ALBAA0DA A GART,FDPSThA0CB` A ] A F A F A `TSVA@BFDvAB A OA@BHTAAPS|WTA@Da A L A l A c A T|YXA@BUA@AJ A BS A S A ACA@A A Z A N A H D B D C(TL[lA CF A O(T[lA CF A O0T[A0DY A C A ,$U@\A0DB_ A ,TU\A0DB` A 0U`]A@DDe A 0U ^A@DDe A (U^A0DB` A VP_,A` F BaNVEEA`  Y A QA`  ,V`A0DBa A @VatA0DBi A G A c8WbA`C CFJ A (LWAB C BDCB~ A DsA$AB C BCCC` A  AA 9 AA r AA oAA88dA@BBT A X A <9AP BDA A e A @4<A0BNYCA0B AA DD<0A0BEbDA0K AA I D @=APBCX A EWAAPA$Ќh>@A0BCI >`A BS(>A@BCBa A 0HP?XA0DN A `THT|xAA@DMV AA ABA@I CA HB<ԍ@BA@BBBV A G<BA@BF A ABQABPTCAp E CCo A p A ,\EA BW A J A ؎ FAB LC AYAAL A A ABBAgEAAAA PCAAAA F AAA ALZA AAAA$ %s %ld during global destructionEXECCan't fork, trying again in 5 secondsCan't fork: %s on PATHfindexecute, '.' not in PATHCan't %s %s%s%soutFilehandle %2p opened only for %sputFilehandle opened only for %sputunopenedclosed%s%s on %s %s%s%-p (Are you trying to call %s%s on dirhandle%s%-p?) Invalid version format (dotted-decimal versions require at least three parts)Invalid version format (no leading zeros)Invalid version format (maximum 3 digits between decimals)Invalid version format (no underscores)Invalid version format (multiple underscores)Invalid version format (underscores before decimal)Invalid version format (0 before decimal required)Invalid version format (negative version number)Invalid version format (non-numeric data)Invalid version format (alpha without decimal)Invalid version format (misplaced underscore)Invalid version format (fractional part required)Invalid version format (dotted-decimal versions must begin with 'v')Invalid version format (trailing decimal)widthInteger overflow in version %dInteger overflow in versionv.InfvinfInvalid version objectalpha->numify() is lossy%d.%03dv%ld.%ldUnknown Unicode option letter '%c'Invalid number '%s' for -C option. Unknown Unicode option value %lu/dev/urandomDETERMINISTICNORANDOMPERL_HASH_SEED_DEBUGSBOX32_WITH_SIPHASH_1_3HASH_FUNCTION = %s HASH_SEED = 0x%02x PERTURB_KEYS = %d (%s)util.cpanic: my_snprintf buffer overflow%.9f.,C.UTF-8Version string '%s' contains invalid data; ignoring: '%s'panic: my_vsnprintf buffer overflowfirstsecondXS_VERSIONPerl API version %s of %s does not match %s%s: loadable library and perl binaries are mismatched (got %s handshake key %p, needed %p) %-p::%s%-p object version %-p does not match $%-p::%s %-pbootstrap parameter %-pPERL_HASH_SEEDperl: warning: Non hex character in '$ENV{PERL_HASH_SEED}', seed only partially set PERL_PERTURB_KEYSperl: warning: strange setting in '$ENV{PERL_PERTURB_KEYS}': '%s' vaJOut of memory in perl:_librefDynaLoaderperl_name, symref, filename="$Package"filename, flags=0libhandle, symbolname, ign_err=0DynaLoader.cDynaLoader::dl_load_fileDynaLoader::dl_unload_fileDynaLoader::dl_find_symbolDynaLoader::dl_undef_symbolsDynaLoader::dl_install_xsubDynaLoader::dl_errorPERL_DL_NONLAZY;tFF@FFFF@GG,GXG`lGGGG`H48HLH4H@HH IpI IIT#I#I&dJ'J*J+$A\$B$L(0L<L\LPpQ0RdSTԧ@TT PUDTUX`UlUUWܨX`Y4YXYlYY ZPZ[\|aȪ@cdte0gh`i`k4mpn}80~`̮ t԰P`TбĞp̲`@<t4$Dt0Pܷ @ܸ`T @hp@ĺ0D H0@ܽ` (!h@$Ⱦ% @&<'|P+ ,$.$P03tC HHHHI,KKDLM(M<MP0N|@NNЄ,PPtt 0DldPĐDĘHН dPh8Dh|0`,p @P|D D8`tH 4tDlTpH0`L`D XD$l$%&4&d&&8&d0'P***+<+P@,x`,p,0--0.D1t124477 89,:d@>>Ap`ABB$EdF[\`cdeHdj0mL opop4rx@s`ttt@u(uPx$80|(<h@t$ $TX Pp@ | 0X@4x 0@`@"l"$$0$P1H`1\p1p111111112$28 2L02`@2tP2p222@3P3`30p3D3X3l3333334404,d4L4`4t45`5556 747H8\8p$808D8P8`8p889$989L9`9t:: :0::; ;0;@;(P;<`;Pp>? ??,0@L@`AtD4K\ MMTNNNOdQpQR4R|STTUV4Wl0bpb@e@ehff$gDiti8 j|jkll$ mH qrrts0 tttPu$vv4w|4yyz z`z0zXp{~@ p ԂLlІP<`ЇP` Dh@  DpЩ$H0@P4 D( P< `P x     @@     0 T  @L d p p 00h@,@<Pd x 0!#<)x0/@/P0 2\56060777 ;t;;p<D=0?LT@AtB$pD`EFLPM@pMTM|PNO0PSTg0gdj|Pk0oo0@p\$yzz p{H0|t|  ``Ј0ЌTԯ 04@P`  0 D X l 0 D P   !t;>;>`=>=?@>P?@?A?A?C@C<@Dh@D@E@G@GADH(AHTAI|ADJAJALB~PBhBBBB CЃCCCTDZA[CP[pO[\[`f\0n\0w\{T]~]Ѐ]p,^`^^АL_ _@_``H```` aP`aЮa 8b@lbbcd0(dPdhdd`dp e`eef Dflf@f$fT,gTggg@gh(hPLh`thh`hh i4iXipiP i0 i |jjj,kT\kkkkpl%l?m0N(nw(qxHT*p;pTT@UDUtVVW PZp\`x a0aPad0e` exef$h 0h iTi0jjjk($lPtldmmmmmPnptqrr@ss(t<ptPtdTuxuvvvv4wDwTw0wDwX@xxxy`zz{|DT}~pHPT@ d000ddĞPT$\pD Hpl@$XD`p4,`@tl(<@`Pt` p<pP,`t0DXl `Pt40h0l h0   ``,h4P 4#p#4$%0&@&&$ (T*p*0,,D0.x0P1 D2P 33d45 6P6|P7P9::HP#P@P#A#TB#H<$$Id$I$0J$K,%pO%O%TP&P0&QH&Rp&R&V$'W8'Y'\P($]|(p_(P`(b,) cT)d|)e)f)g*Pg0*kp* l*Pl*r\+pw+w+}p,,,Ђ -T--l... `//0/p|00` 1 P111 2|223 4dX455 5$D6&6047`W\8Z8Pk9lH9tn90\@@lB`DDDEE0E`E E E0 E` F F XF pF@FpFp,G@GP!xG"G&H&H@)hH$+|H,H-H?@I@dICIEJDHPJLJ@MJN KOHKPKQKQK S`LTSLSLSLTLUMtU M0V@MVTMX|M0YMPZM0[N^\NaNf,OkOmOsPPvP0vPzPQT{dQ{Q{Q{Q{Q|Q|Q|R|HR~R~RR`PSdSSTć$T LTPT U@@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~`(8HY[]_h2!`!!$,`,:>g,i,k,r,u,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@BDFHJLNPRTVXZ\^`bdfhjl"$&(*,.2468:<>@BDFHJLNPRTVXZ\^`bdfhjlny{~ħ§ǧɧ̧Ч֧اڧ!p| P @nD=NFD;D5DFSTFFLFFIFLFIFFBBBBBBBBBBonmlkjih/.-,+*)(     BAY W TH15RJ NSSAx   "$&(*,.I2469;=?ACEGJLNPRTVXZ\^`bdfhjlnprtvy{}SC=ܧ   "$&(*,.02;~,AFHJLNo,m,p,˧b,n,d,ŧDEprv`bdfhjlnprtvxz|~   "$&(*,.1!"*bJ}c,Ƨ   "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~`(8HY[]_h2!`!!$,`,:>g,i,k,r,u,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@BDFHJLNPRTVXZ\^`bdfhjl"$&(*,.2468:<>@BDFHJLNPRTVXZ\^`bdfhjlny{~ħ§ǧɧ̧Ч֧اڧ!p| P @nDmNvDkDeDvStFflFfiFlFiFfBEBEEBBBBBEBEEBEBEEBAY W TH15J NSsa   !#%')+-/357:<>@BDFHKMOQSUWY[]_acegikmoqsuwz|~sSTVY[`cihoru   #%')+-/13e,<f,BGIKMOqsw{P0acegikmoqsuwy{}   !#%')+-/a-'---24>ABJcK   !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{}a 0@QSUW`prvzx|kN!p!!$0,a,k}}h,j,l,QqPRs,v,?,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ACEGIKMOQSUWY[]_acegikm#%')+-/3579;=?ACEGIKMOQSUWY[]_acegikmoz|yef\aljSçȧʧdͧѧק٧ۧA( p `n"ALTx   "$&(*,.2469;=?ACEGJLNPRTVXZ\^`bdfhjlnprtvy{}C=ܧ   "$&(*,.02;~,AFHJLNo,m,p,˧b,n,d,ŧDEprv#+`dfhjlnprtvxz|~   "$&(*,.1p}c,Ƨ   "$&(*,.02468:<>@BDFHJLNPRTVXZ\^bdfhjlnprtvxz|~(8HY[]_h2!`!!$,`,:>g,i,k,r,u,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@BDFHLNPRTVXZ\^`bdfhjl"$&(*,.2468:<>@BDFHJLNPRTVXZ\^`bdfhjlny{~ħ§ǧɧ̧Ч֧اڧ!p| P @nJ`b*"!&!E+!SK*!a   !#%')+-/357:<>@BDFHKMOQSUWY[]_acegikmoqsuwz|~STVY[`cihoru   #%')+-/13e,<f,BGIKMOqsw{P0acegikmoqsuwy{}   !#%')+-/a-'---p   !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} 0@QSUW`prvzx|kN!p!!$0,a,k}}h,j,l,QqPRs,v,?,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ACEGIKMOQSUWY[]_acegikm#%')+-/3579;=?ACEGIKMOQSUWY[]_acegikmoz|yef\aljSçȧʧdͧѧק٧ۧA( p `n"ia   !#%')+-/357:<>@BDFHKMOQSUWY[]_acegikmoqsuwz|~sSTVY[`cihoru   #%')+-/13e,<f,BGIKMOqsw{P0acegikmoqsuwy{}   !#%')+-/a-'---24>ABJcK   !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{}a 0@QSUW`prvzx|kN!p!!$0,a,k}}h,j,l,QqPRs,v,?,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ACEGIKMOQSUWY[]_acegikm#%')+-/3579;=?ACEGIKMOQSUWY[]_acegikmoz|yef\aljSçȧʧdͧѧק٧ۧA( p `n"tm~vtktetvstfflffiflfiffBB|BBB  4  , 44    @++  & 4 44 4   4   4   @  + @ ++ 4 4 % 4 44 4 4 @     4 4% 4 4    @+ 85 5 5 5 5&5 &5 5 5  44  44   4 4  4 49 4 4 4588## # # # # # !!!!! ;     ####!##### ###!########!#!#:3### # # # ##   ! ! ++! #       4                     panic: stack_grow() negative count (%ld)Out of memory during stack extendpanic: savestack overflows I32_MAXpanic: pad offset %lu out of range (%p-%p)panic: save_alloc elems %lu out of range (%ld-%ld)panic: corrupt saved stack index %ldpanic: leave_scope inconsistency %uCan't call destructor for 0x%p in global destruction ="M=H=.upkf]WRLG@4"wBz sv_vcatpvfnInteger overflow in format string for %sHexadecimal float: internal error (entry)Hexadecimal float: internal error (overflow)panic: %s cache %lu real %lu for %-ppanic: del_backref, svp=0panic: del_backref, *svp=%p phase=%s refcnt=%lupanic: del_backref, *svp=%p, sv=%pCan't unweaken a nonreferenceReference is not weakDESTROY created new reference to dead object '%2p'Attempt to free unreferenced scalar: SV 0x%lxNot a subroutine referenceUndefined value assigned to typeglob*Bad filehandle: %2pBad filehandle: %-psemi-panic: attempt to dup freed string$_$.length(${$/} in NULLREFsv.c%.*gVSTRINGHASHLVALUEOBJECTUNKNOWNGLOBCan't upgrade %s (%lu) to %lusv_upgrade from type %d down to type %dpanic: attempt to undefine a freed scalar %ppanic: sv_chop ptr=%p, start=%p, end=%pDon't know how to handle magic of type \%opanic: sv_setpvn_fresh called with negative strlen %ldArgument "%s" isn't numeric in %sArgument "%s" isn't numericCan't weaken a nonreferenceReference is already weaksv_len_utf8utf8_mg_pos_cache_updatesv_pos_u2b_cachepanic: sv_pos_b2u: bad byte offset, blen=%lu, byte=%lusv_pos_b2uWide characterpanic: sv_setpvn called with negative strlen %ldCan't bless non-reference valueAttempt to bless into a classCan't bless an object referencepanic: reference miscount on nsv in sv_replace() (%lu != 1)cat_decodeInvalid argument to sv_cat_decodeCan't coerce %s to integer in %sCan't coerce %s to number in %sLost precision when incrementing %f by 1Argument "%s" treated as 0 in increment (++)Lost precision when decrementing %f by 1panic: attempt to copy value %-p to a freed scalar %ppanic: attempt to copy freed scalar %p to %pBizarre copy of %s in %sBizarre copy of %sCannot copy to %s in %sCannot copy to %sCan't coerce %s to string in %spanic: sv_insert, midend=%p, bigend=%pWide character in $/sv_vcatpvfn()Cannot yet reorder sv_vcatpvfn() arguments from va_listBbDdiOouUXxinternal %%p might conflict with future printf extensionsvector argument not supported with alpha versionsCannot printf %g with '%c'panic: frexp: %LgNumeric format result too large%c%+dMissing argument for %%n in %sInvalid conversion in %sprintf: "%\%03oend of stringMissing argument in %sRedundant argument in %s%2p::%2p{%s}[%ld]within panic: magic_killbackrefs (freed backref AV/SV)panic: magic_killbackrefs (flags=%lx)decode~ytoje`[VQLGB=81*#  4=jWnj--;O;";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;X;;;;;;;;;;;;;;;r;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;88;;;;;;;;I;;;;;;;;;;;;;;;;;;;;;;;;;I[[UZ;j+j8j+++++++6+++++4++++++++++j<jjj+++++>20+++:++@ A( (!0 `  0000PP(( hhhhn  ((00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899DESTROYA(null) while running setuid while running setgid while running with -T switch while running with -t switchanother variable%%ENV is aliased to %s%s%%ENV is aliased to %%%s%sPATH$ENV{PATH}Insecure %s%sInsecure directory in %s%s-_.+Insecure $ENV{%s}%sIFSCDPATHBASH_ENVUTC0oUnC,mn;Zx0N<[y1Omsyqqwxr $#+-'";&/|})]oaiuwf!=%s (...) interpreted as functionNo comma allowed after %sWarning: Use of "%d%lu%4p" without parentheses is ambiguousOperator or semicolon missing before %c%d%lu%4pAmbiguous use of %c resolved as operator %cCan't find string terminator %c%d%lu%4p%c anywhere before EOFParse errorUnrecognized character %s; marked by <-- HERE after %d%lu%4p<-- HERE near column %d\x%02Xlex_stuff_pvnLexing code internal error (%s)Lexing code attempted to stuff non-Latin-1 character into Latin-1 inputlex_stuff_svlex_unstufflex_read_tolex_discard_to$@%*;[]&\_+Prototype after '%c' for %-p : %sMissing ']' in prototype for %-p : %sIllegal character in prototype for %-p : %sIllegal character after '_' in prototype for %-p : %sSource filters apply only to byte streamsfilter_del can only delete in reverse order (currently)panic: utf16_textfilter called in block mode (for %d characters)panic: utf16_textfilter called after error (status=%ld)%-p%s had compilation errors. %-pExecution of %s aborted due to compilation errors. %s had compilation errors. Execution of %s aborted due to compilation errors. at EOFnext token ???at end of linewithin patternwithin stringnext char ^%c at %s line %u, near "%d%lu%4p" %-p (Might be a runaway multi-line %c%c string starting on line %u) %s found where operator expected (Missing semicolon on previous line?) (Do you need to predeclare "%d%lu%4p"?) (Missing operator before "%d%lu%4p"?)lex_start ;Use of non-ASCII character 0x%02X illegal when 'use source::encoding "ascii"' is in effectVersion control conflict markerlex_next_chunk;}continue{print or die qq(-p destination: $!\n);}lex_peek_unicharlex_read_unicharlex_read_space[...]{...}[\]^_?Ambiguous use of %c{%s%s} resolved to %c%s%sAmbiguous use of %c{%-p} resolved to %c%-p*[{[#!%*<>()-=])} =wds]abcfnrtvxaA01! zZ79~BarewordBad name after %d%lu%4p%sBareword "%d%lu%4p" refers to nonexistent packageUnsupported script encoding UTF-32LEUnsupported script encoding UTF-32BEperl -indirCan't exec %sToo late for "-%.*s" option} is not defined$^H{}} did not return a defined valueCall to &{$^H{PropagatedConstant(%.*s)%s %s%s%scharnames:full:shortUnknown charname ''Unknown charname '%s'charnames alias definitions may not contain trailing white-space; marked by <-- HERE in %.*s<-- HERE %.*sMalformed UTF-8 returned by %.*s immediately after '%.*s'Invalid character in \N{...}; marked by <-- HERE in %.*s<-- HERE %.*scharnames alias definitions may not contain a sequence of multiple spaces; marked by <-- HERE in %.*s<-- HERE %.*slvalue:const is not permitted on named subroutinesUnknown regexp modifier "/%.*s"Regexp modifiers "/%c" and "/%c" are mutually exclusiveRegexp modifier "/%c" may not appear twiceRegexp modifier "/a" may appear a maximum of twice{$:+-@Array lengthScalarFinal $ should be \$ or $nameMultidimensional syntax %d%lu%4p not supportedYou need to quote "%d%lu%4p"$@"'`q&*<%)>]}(<[{)]}>([{<«»»༺༻༼༽᚛᚜‘’’“””‵′‶″‷‴‹››⁅⁆⁍⁌⁽⁾₍₎→←↛↚↝↜↠↞↣↢↦↤↪↩↬↫↱↰↳↲⇀↼⇁↽⇉⇇⇏⇍⇒⇐⇛⇚⇝⇜⇢⇠⇥⇤⇨⇦⇴⬰⇶⬱⇸⇷⇻⇺⇾⇽∈∋∉∌∊∍≤≥≦≧≨≩≪≫≮≯≰≱≲≳≴≵≺≻≼≽≾≿⊀⊁⊂⊃⊄⊅⊆⊇⊈⊉⊊⊋⊣⊢⊦⫞⊨⫤⊩⫣⊰⊱⋐⋑⋖⋗⋘⋙⋜⋝⋞⋟⋠⋡⋦⋧⋨⋩⋲⋺⋳⋻⋴⋼⋶⋽⋷⋾⌈⌉⌊⌋⌦⌫〈〉⍈⍇⏩⏪⏭⏮☛☚☞☜⚞⚟❨❩❪❫❬❭❮❯❰❱❲❳❴❵⟃⟄⟅⟆⟈⟉⟞⟝⟦⟧⟨⟩⟪⟫⟬⟭⟮⟯⟴⬲⟶⟵⟹⟸⟼⟻⟾⟽⟿⬳⤀⬴⤁⬵⤃⤂⤅⬶⤇⤆⤍⤌⤏⤎⤐⬷⤑⬸⤔⬹⤕⬺⤖⬻⤗⬼⤘⬽⤚⤙⤜⤛⤞⤝⤠⤟⤳⬿⤷⤶⥅⥆⥇⬾⥓⥒⥗⥖⥛⥚⥟⥞⥤⥢⥬⥪⥭⥫⥱⭀⥲⭁⥴⭋⥵⭂⥹⥻⦃⦄⦅⦆⦇⦈⦉⦊⦋⦌⦍⦐⦏⦎⦑⦒⦓⦔⦕⦖⦗⦘⦨⦩⦪⦫⦳⦴⧀⧁⧘⧙⧚⧛⧼⧽⩹⩺⩻⩼⩽⩾⩿⪀⪁⪂⪃⪄⪅⪆⪇⪈⪉⪊⪍⪎⪕⪖⪗⪘⪙⪚⪛⪜⪝⪞⪟⪠⪡⪢⪦⪧⪨⪩⪪⪫⪬⪭⪯⪰⪱⪲⪳⪴⪵⪶⪷⪸⪹⪺⪻⪼⪽⪾⪿⫀⫁⫂⫃⫄⫅⫆⫇⫈⫉⫊⫋⫌⫏⫐⫑⫒⫕⫖⫥⊫⫷⫸⫹⫺⭆⭅⭇⭉⭈⭊⭌⥳⭢⭠⭬⭪⭲⭰⭼⭺⮆⮄⮊⮈⮕⬅⮚⮘⮞⮜⮡⮠⮣⮢⮩⮨⮫⮪⮱⮰⮳⮲⯮⯬⸂⸃⸃⸄⸅⸅⸉⸊⸊⸌⸍⸍⸑⸐⸜⸝⸝⸠⸡⸡⸢⸣⸤⸥⸦⸧⸨⸩⸶⸷⹂„⹕⹖⹗⹘⹙⹚⹛⹜〈〉《》「」『』【】〔〕〖〗〘〙〚〛〝〞꧁꧂﴾﴿﹙﹚﹛﹜﹝﹞﹤﹥()<>[]{}⦅⦆「」→←𝄃𝄂𝄆𝄇👉👈🔈🕨🔉🕩🔊🕪🕻🕽🖙🖘🖛🖚🖝🖜🗦🗧🠂🠀🠆🠄🠊🠈🠒🠐🠖🠔🠚🠘🠞🠜🠢🠠🠦🠤🠪🠨🠮🠬🠲🠰🠶🠴🠺🠸🠾🠼🡂🡀🡆🡄🡒🡐🡢🡠🡪🡨🡲🡰🡺🡸🢂🢀🢒🢐🢖🢔🢚🢘🢡🢠🢣🢢🢥🢦🢧🢤🢩🢨🢫🢪🢶🢴)>]}»«༻༽᚜’‘”“′″‴›‹⁆⁌⁾₎←↚↜↞↢↤↩↫↰↲↼↽⇇⇍⇐⇚⇜⇠⇤⇦⬰⬱⇷⇺⇽∋∌∍≥≧≩≫≯≱≳≵≻≽≿⊁⊃⊅⊇⊉⊋⊢⫞⫤⫣⊱⋑⋗⋙⋝⋟⋡⋧⋩⋺⋻⋼⋽⋾⌉⌋⌫〉⍇⏪⏮☚☜⚟❩❫❭❯❱❳❵⟄⟆⟉⟝⟧⟩⟫⟭⟯⬲⟵⟸⟻⟽⬳⬴⬵⤂⬶⤆⤌⤎⬷⬸⬹⬺⬻⬼⬽⤙⤛⤝⤟⬿⤶⥆⬾⥒⥖⥚⥞⥢⥪⥫⭀⭁⭋⭂⥻⦄⦆⦈⦊⦌⦐⦎⦒⦔⦖⦘⦩⦫⦴⧁⧙⧛⧽⩺⩼⩾⪀⪂⪄⪆⪈⪊⪎⪖⪘⪚⪜⪞⪠⪢⪧⪩⪫⪭⪰⪲⪴⪶⪸⪺⪼⪾⫀⫂⫄⫆⫈⫊⫌⫐⫒⫖⊫⫸⫺⭅⭉⭊⥳⭠⭪⭰⭺⮄⮈⬅⮘⮜⮠⮢⮨⮪⮰⮲⯬⸃⸂⸅⸄⸊⸉⸍⸌⸐⸝⸜⸡⸠⸣⸥⸧⸩⸷„⹖⹘⹚⹜〉》」』】〕〗〙〛〞꧂﴿﹚﹜﹞﹥)>]}⦆」←𝄂𝄇👈🕨🕩🕪🕽🖘🖚🖜🗧🠀🠄🠈🠐🠔🠘🠜🠠🠤🠨🠬🠰🠴🠸🠼🡀🡄🡐🡠🡨🡰🡸🢀🢐🢔🢘🢠🢢🢦🢤🢨🢪🢴(<[{«»༺༼᚛‘’“”‵‶‷‹›⁅⁍⁽₍→↛↝↠↣↦↪↬↱↳⇀⇁⇉⇏⇒⇛⇝⇢⇥⇨⇴⇶⇸⇻⇾∈∉∊≤≦≨≪≮≰≲≴≺≼≾⊀⊂⊄⊆⊈⊊⊣⊦⊨⊩⊰⋐⋖⋘⋜⋞⋠⋦⋨⋲⋳⋴⋶⋷⌈⌊⌦〈⍈⏩⏭☛☞⚞❨❪❬❮❰❲❴⟃⟅⟈⟞⟦⟨⟪⟬⟮⟴⟶⟹⟼⟾⟿⤀⤁⤃⤅⤇⤍⤏⤐⤑⤔⤕⤖⤗⤘⤚⤜⤞⤠⤳⤷⥅⥇⥓⥗⥛⥟⥤⥬⥭⥱⥲⥴⥵⥹⦃⦅⦇⦉⦋⦍⦏⦑⦓⦕⦗⦨⦪⦳⧀⧘⧚⧼⩹⩻⩽⩿⪁⪃⪅⪇⪉⪍⪕⪗⪙⪛⪝⪟⪡⪦⪨⪪⪬⪯⪱⪳⪵⪷⪹⪻⪽⪿⫁⫃⫅⫇⫉⫋⫏⫑⫕⫥⫷⫹⭆⭇⭈⭌⭢⭬⭲⭼⮆⮊⮕⮚⮞⮡⮣⮩⮫⮱⮳⯮⸂⸃⸄⸅⸉⸊⸌⸍⸑⸜⸝⸠⸡⸢⸤⸦⸨⸶⹂⹕⹗⹙⹛〈《「『【〔〖〘〚〝꧁﴾﹙﹛﹝﹤(<[{⦅「→𝄃𝄆👉🔈🔉🔊🕻🖙🖛🖝🗦🠂🠆🠊🠒🠖🠚🠞🠢🠦🠪🠮🠲🠶🠺🠾🡂🡆🡒🡢🡪🡲🡺🢂🢒🢖🢚🢡🢣🢥🢧🢩🢫🢶Use of unassigned code point or non-standalone grapheme for a delimiter is not allowedUse of '%d%lu%4p' is experimental as a string delimiterUse of '%d%lu%4p' is deprecated as a string delimiterUnterminated attribute listUse of := for an empty attribute list is not allowedUnterminated attribute parameter in attribute listInvalid separator character %c%c%c in attribute listSubroutine attributes must come before the signatureUnterminated delimiter for here documentUse of bare << to mean <<"" is forbiddenDelimiter for here document is too longIndentation on line %d of here-doc doesn't match delimiterExcessively long <> operatorUnterminated <> operatorGlob not terminatedMissing name in "%s"Prototype not terminatedIllegal declaration of anonymous subroutineIllegal declaration of subroutine %-pCan't redeclare "%s" in "%s"__PACKAGE__No such class %.1000smsixxnopnadlumsixxnopnadlugcSearch pattern not terminatedUse of /c modifier is meaningless without /g([{< )]}> )]}>qqAmbiguous range in transliteration operatorInvalid range "%c-%c" in transliteration operatorInvalid range "\x{%04lX}-\x{%04lX}" in transliteration operator:'{$()| Possible unintended interpolation of $\ in regex\%c better written as $%clLuUEQFUnrecognized escape \%c passed throughMissing right brace on \N{}Missing right brace on \N{} or unescaped left brace after \N%02X.\N{U+%X.%X%.*s must not be a named sequence in transliteration operatorMissing control char name in \cpanic: constant overflowed allocated space, %lu >= %lu\N{U+\N{_}Integer overflow in decimal number0o37777777777integerfloatpanic: scan_num, *s=%dMisplaced _ in numberIllegal octal digit '%c'Illegal binary digit '%c'Hexadecimal float: exponent underflowHexadecimal float: exponent overflowNo digits found for %s literal%s number > %s non-portableNumber too longHexadecimal float: mantissa overflow+-0123456789_"%s" not allowed in expression__CLASS__ is experimentalADJUST is experimentalall is experimentalany is experimentalclass is experimentaldefer is experimentalGDBM_File::DB_File::NDBM_File::AnyDBM_File::ISAODBM_File::SDBM_File::field is experimentaltry/catch/finally is experimentalMissing $ on loop variable|&*+-=!?:.Precedence problem: open %d%lu%4p should be open(%d%lu%4p)Possible attempt to separate words with commasPossible attempt to put comments in qw() list<> at require-statement should be quotesSubstitution pattern not terminatedSubstitution replacement not terminatedmsixxnopnadlugcerUse of /c modifier is meaningless in s///eval do {subroutine namemethod is experimentalTransliteration pattern not terminatedTransliteration replacement not terminatedCORE::%d%lu%4p is not a keywordBad plugin affecting keyword '%s'Bad infix plugin result (%zd) - did not consume entire identifier <%s> dump() must be written as CORE::dump() as of Perl 5.30Ambiguous call resolved as CORE::%s(), qualify as such or use &Format not terminatedMissing right curly or square bracketBEGIN { require 'perl5db.pl' };use feature ':5.42'; use builtin ':5.42';LINE: while (<>) {chomp;our @F=split(%s);our @F=split(' ');Unmatched right square bracket=====+-*/%.^&|<Reversed %c= operator!=~ should be !~<<<<<>>>>>StringBackticksCan't use \%c to mean $%c in expressionBackslashNo package name allowed for %s %s in "our"Possible unintended interpolation of %d%lu%4p in stringUseless use of \EL\uU\lLUFpanic: yylex, *s=%uBad evalled substitution patternSequence (?{...}) not terminated with ')'$:@%&*;\[]Illegal character following sigil in a subroutine signature'#' not allowed immediately following a sigil in a subroutine signature=~>Illegal operator following parameter in a subroutine signatureA signature parameter must start with '$', '@' or '%'Unmatched right curly bracketparse_exprParsing code internal error (%s)parse_blockparse_barestmtparse_labelparse_fullstmtparse_stmtseqparse_subsignature0377777777770xffffffffBinaryOctalHexadecimalt*qnkheb_\YVSPMJGzDA>w;8F8tj_XQJC95,"n[WN@6,". $     xnd`\UND@9+" }vmi-#HA81b[1rgMF<81G-)"  k g U N J C ?  {tplhd]VOHA:3,($k-)"{lkN>$<]~~~~~~~~~~iy4rL!, Identifier too long@ A( (!0 `  0000PP(( hhhhn  ((Numeric variables with more than one digit may not start with '0' ?@@ @0@our @F=split(qtextwarn_categoriesflag_bitOperation "%s" returns its argument for UTF-16 surrogate U+%04lXOperation "%s" returns its argument for non-Unicode code point 0x%04lX(nil)immediatelyU+panic: Unexpected case value in utf8n_to_uvchr_msgs() %u%s (empty string)%s: %s (unexpected continuation byte 0x%02x, with no preceding start byte)%s: %s (too short; %d byte%s available, need %d)%d bytes%s: %s (unexpected non-continuation byte 0x%02x, %s after start byte 0x%02x; need %d bytes, got %d)%s: %s (any UTF-8 sequence that starts with "%s" is overlong which can and should be represented with a different, shorter sequence)%s: %s (overlong; instead use %s to represent %s%0*lX)UTF-16 surrogate (any UTF-8 sequence that starts with "%s" is for a surrogate)%s: %s (overflows)Any UTF-8 sequence that starts with "%s" is a Perl extension, and so is not portableAny UTF-8 sequence that starts with "%s" is for a non-Unicode code point, may not be portablepanic: force_out_malformed_utf8_message_ should be called only when there are errors foundCan't do %s("\x{%lX}") on non-UTF-8 locale; resolved to "\x{%lX}".%s %s%s_reversedpanic: utf16_to_utf8%s: odd bytelen %luMalformed UTF-16 surrogatepanic: to_upper_title_latin1 did not expect '%c' to map to '%c'uppercasetitlecaselowercasefoldcaseẞCan't do fc("\x{1E9E}") on non-UTF-8 locale; resolved to "\x{17F}\x{17F}".ſtCan't do fc("\x{FB05}") on non-UTF-8 locale; resolved to "\x{FB06}".stUnicode surrogate U+%04lX is illegal in UTF-8\\\x{%lx}Malformed UTF-8 characterMalformed UTF-8 character (unexpected end of string)Code point 0x%lX is not Unicode, may not be portableUnicode non-character U+%04lX is not recommended for open interchangeUTF-16 surrogate U+%04lXAx   "$&(*,.I2469;=?ACEGJLNPRTVXZ\^`bdfhjlnprtvy{}SC=ܧ   "$&(*,.02;~,AFHJLNo,m,p,˧b,n,d,ŧDEprv                      NNNNNNNN;;;;;;;-;-;;;N-----------888mmYY ; 0000000000000000..............||||||||||||||BBBBBBBBBBBBXXXXXXXMMMMMMMMMMMgg)))))''''''''''''''''''p6HHHdddddPPPPPkkkkH; OOOq)) jN-N-N-NN-;;;N----------------;NNN;-NNNN*N)))'''''''''#SNNNNNN EE???gg^'''''NN-N^^N888888;;NNRRRRRRR--;Ttt+vww~~}}%QQQNNN::hh777UUa```FFFFFFFFyuZZZ==<<zsss55(((x{&AAVIIfffffJJ,,,,,,,,,,,,,,,,llccdg"!!!!!!!!jjj [[[\\\\\\\//////WDDDS$$1eee K]bbbnGGGn#####;;;;;;-NN*****ooooirr''''__;Z{QRRRm?ENg ".0AIJVc ".0AIJVc ".0ABIJVcj ".0ABIJVXcj23@LN@C9@239@CL9@C 23@L 2349@CL 2349@CLSd 2349@CLd 2349@CL 2349@CLd 2349@CLd23@L23@Ls)AUszN ,N-as)*TszNdN ,B , ,BXj| j BX| ,B ,Bd64L)*NgBj,.I0f  "AV ",./01BJPVX\jr| ",./0BJVX\jr| ,.0BNX| ,.0BNX|55YZ{(5m(5m)*N*v-NN}+NNN#N#@CNN-NvN'NNNN}#NN#+-8Nv#8Nv-Nv%*+@CN+-N}*NN-N}-Nv 3NNS 3N  NS#%)*+-/23@LNUVv                                                                                                                                                                                                                                                                                                         1 <%:98:5 9-*-=4-%59 5 2 &589!7!8965 & & - -9  % ))48- % % 484 % 4 4 4 -% 9 4 4 4 4889 4 49 4 49 4  4 48 4 9 4 4&&%&% 4 5 5    & 4 4 .0/ 5   39 4%% & 4 %44 44  @++ + 4 ? 44 & & &B C >&7657657, &876$3-5 3$8A 5 5 989989898989 889!!!!9,5 5 !!!!#!!!!!!#!!!#!##!!#!!#!!!!!!##!##!#!#!#!#!!##!#!##!!!!!!!!:%"#!5 5 5 5 5 5 5 !5 5 5 5 5 5 !5 5 5 5 5 5 5 5 5 5 5 5 5 5 ! %% :7676:76:76576765 5 5 5 %5%5 5 5 5 +%4  8% 4  4  .  @+++ 4   +   4'('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('('(0/) ))))))) 58 & & & & & & & A(08@HNYZ[\]^_`hp&!'!*!+!,!2!3!`!p!!!$$,0,`,a,b,c,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,u,v,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm"#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoyz{|}~§çħŧƧǧȧɧʧ˧̧ͧЧѧ֧קا٧ڧۧܧݧ!;(p{|  P f @n`n"A[      !"#$%&'()*+,-./012345679:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123:;<=>?ABCDEFGHIJKLMNOEFpqrsvw0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./1W      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(08@HNPQRSTUVWYZ[\]^_`hp&!'!*!+!,!2!3!`!p!!!$$,0,`,a,b,c,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,u,v,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm"#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoyz{|}~§çħŧƧǧȧɧʧ˧̧ͧЧѧ֧קا٧ڧۧܧݧp!;(p{|  P f @n`n"panic: attempting to append to an inversion list, but wasn't at the end of the list, final = %lu, start = %lu, match = %cpanic: Incorrect version for previously generated inversion list%sCan't dump inversion list because is in middle of iterating %s[%lu] 0x%04lX .. INFTY %s[%lu] 0x%04lX .. 0x%04lX %s[%lu] 0x%04lX positiveE_TRIE_MAXBUFregcomp_study.cQuantifier unexpected on zero-length expression in regex m/%d%lu%4p/panic: unexpected varying REx opcode %dLookbehind longer than %lu not implemented in regex m/%d%lu%4p%s/Variable length %s lookbehind with capturing is experimental in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/panic: %s regnode should be resolved before optimizationpanic! In trie construction, unknown node type %u %serror creating/fetching widecharmap entry for 0x%lXpanic! In trie construction, no char mapping for %ldpanic: paren_elems_to_push, %i < 0, maxopenparen: %i parenfloor: %ipanic: paren_elems_to_push offset %lu out of range (%lu-%ld)Malformed UTF-8 character (fatal)panic: isFOO_lc() has an unexpected character class '%d'ffiWide character (U+%lX) in %sMatched non-Unicode code point 0x%04lX against Unicode property; may not be portablepanic: regrepeat() called with unrecognized node type %d='%s'Pattern subroutine nesting without pos change exceeded limit in regexInfinite recursion in regexEVAL without pos change exceeded limit in regexREGMARK%lx %d regexp memory corruptioncorrupted regexp pointersREGERRORpanic: unknown regstclass %dcorrupted regexp programpanic: Unknown flags %d in named_buff_iterpanic: Unknown flags %d in named_buff_scalarpanic: Unknown flags %d in named_buff zk\L;2_tKn6 666|a6 SN*J/vgl8v4/IDDDD2f 9-/dd\\L yE+PB5 DookWWib* 4 & 1 $  * & @ { "QC O2 % _ 5     n8  \ ;  %jj  dd;;jj55ff557777||##SSrrbbW W 66  { {  } 999           Use of (?[ ]) for non-UTF-8 locale is wrong. Assuming a UTF-8 locale        0P0000P000 P0f000000P00000000f Pf 00000@ 000 0 f 0a0000 00000000Щ0f 0P00 pm00@F00000f 0f 000P00000P`jf 0 P0@0P000000000f 0Pk00000000Ш000 00 000@0 j0f `P 000 0 0`Use of \b{} or \B{} for non-UTF-8 locale is wrong. Assuming a UTF-8 locale                           &   ++++++ #0000700000000000000000@000000@0000000I000@00R000000000++++++                                                                                                                                                                                                                            ?aklst{      !"#$%&'()*+,-./0345678:;<=>?@ABCDEFGHIKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      #$%&'()*+,-./01234<=?ABCGHIJKLMNOPQRSTUVXYZ[\]`abcdefghijklmopqrsuv}~qrstwx{~02345>?ABCJKP`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0ayz}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (08@FQRSTUVWX`hprvxz|~N!O!p!!!!$$0,`,a,b,e,f,g,h,i,j,k,l,m,s,t,v,w,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-&-'-(---.-ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn#$%&'()*+,-./03456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopz{|}§çħȧɧʧ˧ͧΧѧҧקا٧ڧۧܧSTA[(P  p  `nn"D}  pK`pq0K$%().Y\   : ; < = > A I M N P Q X ` b d x    < = > A C G I K N Q R p r u v     ) * 1 2 4 5 : < = > @ A E G I K M N U X \ ^ _ ` b d q r     ) * : < = > A E F I J M N U W X [ b d    ; = > ? A E F I J M N O W X b d 1234;GO56789:>@q-1289;=?VXZ^aqu`]`25RTrt  #'),0239<UVWX_`abcems}4>BEkt$,468   ( / < = I J ` p "!#!9!:!!!!!##(#)#########$$%%%%%%%%&&&&&&&'''''''''!'"'(')'3'5'D'E'G'H'L'M'N'O'S'V'W'X'c'h'''''''''4)6)++++P+Q+U+V+,,---.*00010=0>0002222ost~ #%'(,-Ĩƨ&.GRST`})/1357CDLMN|}ª89TUpqĬŬ45PQlmܭݭ01LMhiخٮ,-HIdeԯկ ()DE`a|}аѰ $%@A\]xy̱ͱ !<=XYtuȲɲ89TUpqijų45PQlmܴݴ01LMhiصٵ,-HIdeԶն ()DE`a|}зѷ $%@A\]xy̸͸ !<=XYtuȹɹ89TUpqĺź45PQlmܻݻ01LMhiؼټ,-HIdeԽս ()DE`a|}оѾ $%@A\]xy̿Ϳ !<=XYtu89TUpq45PQlm01LMhi,-HIde ()DE`a|} $%@A\]xy !<=XYtu89TUpq45PQlm01LMhi,-HIde ()DE`a|} $%@A\]xy !<=XYtu89TUpq45PQlm01LMhi,-HIde ()DE`a|} $%@A\]xy !<=XYtu89TUpq45PQlm 0v{      8 ; ? @   $ ( i n FQ8Gpqsu',-5EGst,/248>?AB;=>?@AEGIKMNWXbdfmpu58@BEFG^_03;=>?A "&',,/89;01679;?@ABCD 39:;?GHQWY\/078>?@17:;<>?FGH46;>@CZ[04@4A4G4V4a*a-a0ajj0k7kcmdmgmkmOoPoQoooooooo.0Gejms{BE7;muv"#%&+07DK /0lr~/02;<@I>FPt HPZ` ;<FG  A[      !"#$%&'()*+,-./012345679:;<=>?@ABCDEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123:;<=>?ABCDEFGHIJKLMNOpqrsvw0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./1W      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~jklmnoyz{|}§çħȧɧʧ˧ͧΧЧѧҧӧԧէ֧קا٧ڧۧܧݧ #(,-@tvxƨΨШڨ &./0GT`}ȩʩϩЩک)7@CDLNPZ]`wz{~ªê۪ު  '(/0[\jpnp)*78=>?@BCEF>@P 0135EGIPRSTVXY_cdpuv  !;<=>A[\]^_abdef  '(;<>?NP^@u -KPv{(P(0dp{|7@V`h  679<=?V`w   :                6 8 ; ? @ V X ` }         6 @ V ` s    I      $ ( 0 : @ J P f i n o p  '(0FQUZp8GIfpqsuv'56@ADEGHPstvw,8:;=>?AB )*1245:;=>EGIKNPQWX]bdfmpu5GKMPZ^_b0ACDEPZ,0:<?@G,;   0679;?@ABDEFGPZ 3:;?BDGHPQ\  /78@ACPZr  17:;<>?FGHPZ`fgij4;>CEPZ[ #$o$$D%//004@4A4G4V4`4CDGFaa0a:ah9j@j_j`jjjnjpjjjjjjjjjk0k7k9k@kDkEkPkZkckxk}kk@mmmnmpmzm@n`nnnnoKoOoPoQoooooooooooop֌ #23PSUVdhpkp}.0Gejms{BE4NUVh  8:;?@EFGJQRl"<Vp56OPVop7;muv  %+"#%&+0n-07>@JNO"DKLPZ !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~0JPjpvy:@ ^KP# 3   !"#$%&'()*+,-./0:<?@[\]^{|}~OP\cp~   K`jkmpq0K$%().Y\ : = > P Q X b d f p   < = > C G I K N Q R f p r u v   < = > E G I K N U X b d f p  < = > E F I J N U W b d f p w x  ; = > E F I J N W X b d f p y z 124;?@GOPZ\     *456789:;<=>@q+?@JLVZ^abegnqu`]`ab257RTrt   ,0<DFPU_`}4DEMNPZ\]akt}$8;@JPZ~                $ ' ( * / 0 8 9 : ; < = > D E F G I J V W X \ ] ` a f p } ~  !! ! !!!"!#!9!:!!!!!""""# # # # ###(#)#*#+#############$$%%%%%%%%%%%&&&&&&&&&&&& &0&8&9&<&H&T&h&i&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''' ' '''''''''!'"'(')'3'5'D'E'G'H'L'M'N'O'S'V'W'X'['a'b'c'd'e'h'i'j'k'l'm'n'o'p'q'r's't'u'v'''''''''''''''''''''''4)6))))))))))))))))))))))))))))))))++++P+Q+U+V+,,,,,,,-p-q----...... . . . . .......... .!.".#.$.%.&.'.(.).*.../.0.2.3.5.:.<.?.@.B.C.K.L.M.N.P.S.U.V.W.X.Y.Z.[.\.].^.....///000000 0 0 0 0 00000000000000000 0*000105060;0=0>0?0@0A0B0C0D0E0F0G0H0I0J0c0d000000000000000000000000000000000000001101111111122 2H2P22222MNǤ  *ost~ #(,-89tvxƨΨШڨ &.0GT`}ǩʩΩϩЩکީ)7@CDLNPZ\]`{~ª89TUpqĬŬ45PQlmܭݭ01LMhiخٮ,-HIdeԯկ ()DE`a|}аѰ $%@A\]xy̱ͱ !<=XYtuȲɲ89TUpqijų45PQlmܴݴ01LMhiصٵ,-HIdeԶն ()DE`a|}зѷ $%@A\]xy̸͸ !<=XYtuȹɹ89TUpqĺź45PQlmܻݻ01LMhiؼټ,-HIdeԽս ()DE`a|}оѾ $%@A\]xy̿Ϳ !<=XYtu89TUpq45PQlm01LMhi,-HIde ()DE`a|} $%@A\]xy !<=XYtu89TUpq45PQlm01LMhi,-HIde ()DE`a|} $%@A\]xy !<=XYtu89TUpq45PQlm01LMhi,-HIde ()DE`a|} $%@A\]xy !<=XYtu89TUpq45PQlm)*78=>?@BCEFP>?@ !"#$%&()*+,-/056789:;<=>?@ABCDEGHIPQRSTVXYZ[\]^_ghijkl  ;<=>[\]^_`bcefgqv{WX        8 ; ? @ P X      9 @ $ ( 0 : @ J i n o FQ8FGINRfpqsuv'56@DEGstuv,8:;=>?AB )*1245:;=>EGIKMNPQWX]^`bdfmpu5GKOPZ\^_0ACPZ`m,0:<?,;   0679;>?@ABDGPZ 3:;?@AEFGHQ\ /78@AFPZpqr17:;<>?FGHPZ4;>BCEPZ[ p$u$X2[2^22222222y3z3|3/404748494<4=4>4?4@4A4G4V4EEEaa0a:a`jjjnjpjjjjjj0k7k:kDkEkPkZknmpmzmnnOoPoQooooooooop֌ #23PSUVdhp.0GejmBEW`w7;muv"#%&+07@JDKPZ^`,0 /0lr~/02;<@IPR`f!-67}~?@ABDFQfy|}%2>FJKOPhtvz{EHKPvy|tw{ HPZ`   &'0:;<?FGwxT`np}3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~ /0JPjlpr~/02;<@I>FPt HPZ` ;<FG PA[a{      !#$%&-./012BCEFXY^_cptvxz~01WY   @AKV`jpqKMP.0?@\^_`kp Q R S U d e f p       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f p w       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x    ) * : < E F I J N U W X [ ] ^ ` d f p w    E F I J P T d f ;?@\HImq@JIJNPWXYZ^`[]} 57@T`mnqrt y ,0<@ADPnpu _`}MN8;JMP&+,]bfkxy FHNPXYZ[\]^_~  / 0 O P Z [ ] ^ e f q r t  !&!'!*!,!2!3!N!O!`!!!!*$@$K$`$()t+v+++,`,,,,-&-'-(---.-0-h-o-q---------------------...0.1.2.<.=.A.B.C.D.^.....///0000000 0 00000 0!0*0.00010607080<0>0@0A000000000110111111111122 2H2`222222223X3q3{33334MNǤФ,@op"ΧЧҧӧԧէݧ-03689:@xƨΨڨ./0T_`}ΩϩЩکީ7@NPZ\`ê۪  '(/0[\efjlpnp78=>?@BCEFP>@ .0EGSTghlpuv!;A[afpq  '(;<>?NP^47@$-0KP{P(0dop{|7@V`h  679<=?@VW`    : ? @                6 8 ; ? I P Y `          6 9 @ V X ` s x        I       ( 0 : @ f i    `(0ZpNRv56HPwB )*1245:;=EGIKNPQWX]dfmpu\]bEPZ`m,0G<   679;GPZHP   78FPmp  7:;<>?HPZ`fgij;>[ #$o$p$u$$D%//0V4`4CDGFa:ah9j@j_j`jjjnjpjjjjjjjjkFkPkZk[kbkckxk}kk@mzm@nnoKoOooooooooooop֌  #23PSUVdhpkp}.0GP')gj{FW`ryUV  :;?@EFGJQR%+"#%&+0n-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0<@IPR`fw{ HPZ`T`np}:@ ^KP#    !"#'*,./0:<?@A[\]^a{|}~      !"#$%&'()*+,-./012345679:;<=>?@ABCDEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      !"#$%&'()*+,-./0123:<=?ABCGHIJKLMNOpqrstuvwxz~0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./01WYZ]^`  K`jkmnpq0KM$%().789:=?@Y\`kp : = > P Q X b d f p q       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f p r u v       ) * 1 2 4 5 : < = > E G I K N U X \ ^ _ b d f p q r     ) * : < = > E F I J N U W X [ ] ^ ` b d f p     ; = > E F I J N O T W X _ b d f p z 124;@GOPZ *56789:>@HImq+?@JLPVZ^abegnquIJNPWXYZ^`[]`bcgimno257@RT`mnqrt    y ,0<DFPnpu U_`}4EMNPZ\^`kt}$8;=@JMPZ~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (08@FHNPXYZ[\]^_`hp~      $ % ( * / 0 9 ; < > E G J _ ` e f p q r }  !!!! ! !!!!!!!!!$!%!&!'!(!)!*!.!/!0!4!5!9!:!!@!E!F!J!N!O!`!p!!!!!!# #)#+#$$$['a'h'v''''')))))),0,`,a,b,e,g,h,i,j,k,l,m,q,r,s,u,v,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-&-'-(---.-0-h-o-p---------------------.... .*.../.0.<.=.B.C.S.U.].0000000000 0!0*000106080=0A000000000110111111124MNФ  *,@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnost~ "#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi      !"#$%&'()*+,-./0ayz}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (08@FPQRSTUVWX`hprvxz|~N!O!p!!!!$$0,`,a,b,e,f,g,h,i,j,k,l,m,s,t,v,w,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-&-'-(---.-ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn#$%&'()*+,-./03456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopz{|}§çħȧɧʧ˧ͧΧѧҧקا٧ڧۧܧSTpA[(P  p  `nn"D+A[      !"#$%&'()*+,-./2345679:;<=>?@ABCDEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123:;<=>?ABCDEFGHIJKLMNOEFpqrsvw0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./1W      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(08@HNYZ[\]^_`hp&!'!*!+!,!2!3!`!p!!!$$,0,`,a,b,c,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,u,v,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm"#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoyz{|}~§çħŧƧǧȧɧʧ˧̧ͧЧѧ֧קا٧ڧۧܧݧp!;(p{|  P f @n`n"  !"#'(,-./0:;<A[_`a{puvxz~01WY]^_`  K`jklmnpq0KM$%().@Y\`kp : = > P Q X b d f p q       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f p r u v       ) * 1 2 4 5 : < = > E G I K N U X \ ^ _ b d f p q r     ) * : < = > E F I J N U W X [ ] ^ ` b d f p     ; = > E F I J N O T W X _ b d f p z 124;GOPZ *56789:>@HImq+?@JVZ^abegnquIJNPWXYZ^`[]`mo25@RT`mnqrt  y ,0<FPU_`}4EMPZkt$8@JMPZ~ FHNPXYZ[\]^_~     $ % ' ( * / 0 < = ? A D E I J T U _ ` e f p q r  !!!! !!!!!!"!#!$!%!&!'!(!)!*!.!/!9!:!0000000110111111122222223X3Ф  *,@ost~ΧЧҧӧԧէݧ #(,-@tƨШڨ &.0GT`}ϩЩک)7@CDLNPZ{~ª  '(/0jp)*78=>?@BCEFP>P 035MPQRSTUVpuv !;?@A[f  '(;<>?NP^@u -KPv{(0dp{|7@V`h  679<=?V`w   :                6 8 ; ? @ ` }         6 @ V ` s    I      $ ( 0 : @ J f i n o  '(0FQp8Gfpqsuv'56@DEGHPstvw,8>?AB )*1245:;=>EGIKNPQWX]bdfmpu5GKPZ^_b0ADEPZ,0:,;   0679;?@ABDPZ 3:;?GHPQ\  /78@APZr  17:;<>?FGHPZ`fgij4;>CPZ[ #$o$$D%//004@4A4G4V4`4CDGFaa0a:ah9j@j_j`jjjpjjjjjjjjk0k7k@kDkPkZkckxk}kk@mmmpmzm@nnoKoOoPoQoooooooooooo #UVdhkp}.0Gejms{BEUV  :;?@EFGJQR56OPop7;muv%+"#%&+0n-07>@JNODKLPZ !#$%'(),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-&-'-(---.-ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqyz{|}§çħȧɧʧ˧ͧΧѧҧӧԧէ֧קا٧ڧۧܧ0[`ipA[(P  p  `nn4NUVh8Rl"<Vp6OPVp  %+"D#A[a{ptvx{~01W`,kxy FHNPXYZ[\]^_~!!!! !!!!!!$!%!&!'!(!)!*!.!/!5!9!:! C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x    ) * : < E F I J N U W X [ ] ^ ` d f p w    E F I J P T d f ;?\HImqIJNPWXYZ^`[]}7@T`mnqrt y ,0<@ADnpu_`}MN8;JM FHNPXYZ[\]^_~ e f r t !!!*$@$K$`$t+v+++,,&-'-(---.-0-h-o-q--------------------^.....///@0A00011011111112 2ǤФ,@ΧЧҧӧԧէݧ-0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0lpnp78=>?@BCEF STghlpuv  '(;<>?NP^47$-KP{(0do{|7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : @ f i    `(0ZpNRv56HPwB )*1245:;EGIKNPQWX]dfmpu\]bEPZ`m,0G<   679;GPZHP   78FPmp  7:;<>?HPZ`fgij;>[#$o$p$u$$D%//0V4`4CDGFa:ah9j@j_j`jjjnjjjjjjjjkFkPkZk[kbkckxk}kk@mzm@nnoKoOoooooooop֌ #23PSUVdhpkp}.0GP')FW`yUV  :;?@EFGJQR%+"#%&+0n-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0<@IPR`fw{ HPZ`T`np}:@ ^KP# a{      !"#$%&'()*+,-./012345678:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      #$%&'()*+,-./01234<=?ABCGHIJKLMNOPQRSTUVXYZ[\]`abcdefghijklmopqrsuv}~EFqrstwx{~0P`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0ayz}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (08@FPQRSTUVWX`hprvxz|~N!O!p!!!!$$0,`,a,b,e,f,g,h,i,j,k,l,m,s,t,v,w,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-&-'-(---.-ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn#$%&'()*+,-./03456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopz{|}§çħȧɧʧ˧ͧΧѧҧקا٧ڧۧܧSTpA[(P  p  `nn"DUa{      !"#$%&'()*+,-./012345678:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      #$%&'()*+,-./01234<=?ABCGHIJKLMNOPQRSTUVXYZ[\]`abcdefghijklmopqrsuv}~EFqrstwx{~0P`abcdefghijklmnopqrstuvwxyz{|}~ooop֌ #23PSUVdhpkp}UV  :;?@EFGJQR56OPop%+"#%&+0n-7>NODGHKL !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~0JPjp:@ ^KP#E0:A[a{EFcuvxz~01WYZ` XYjn@M-@Y`kp< = M N Q U d f p q       ) * 1 2 4 5 7 8 : > C G I K M Q R Y ] ^ _ f v       ) * 1 2 4 5 : = E G I K M V X \ ^ _ d f p q r    ) * : = E F I J M U W X [ ] ^ ` d f p    ; = E F I J M N O T X _ d f p z ;@GMNPZ *@HImq789;JPIJNPWXYZ^`[mo4@T`mnqrt y ,09Fnpu _au45DEMPZ7@JM~ FHNPXYZ[\]^_~q r  !!!! !!!!!!$!%!&!'!(!)!*!.!/!:!?@BCEF>Ppuv!;A[f  '(;<>?NP^@u -KP{(0dp{|7@V`h  679<=?V`w   :              6 ` }        6 @ V ` s    I      ( 0 : @ f i j o  '(0FpFfpqv36@DHPsvw578>B )*1245:=EGIKMPQWX]dBCFGKPZ_b?@ADEPZ+0:@G9   679;=?CPZ35?P  78?@APZr  7:;<>?BCDFHPZ`fgij;>APZ #$o$$D%//004A4G4`4CDGFa/a0a:ah9j@j_j`jjjpjjjjjjk0k@kDkPkZkckxk}kk@mmmpmzm@nnoKoOoooooooooop֌ #23PSUVdhpkp}UV  :;?@EFGJQR56OPop%+"#%&+0n-7>@JNODGHKLPZ !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~0JPjp:@ ^KP#A[      !"#$%&'()*+,-./012345679:;<=>?@ABCDEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      !"#$%&'()*+,-./0123:<=?ABCGHIJKLMNOpqrsvw0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./1W      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(08@HNYZ[\]^_`hp!!!! !!!!!!!!$!%!&!'!(!)!*!.!0!4!>!@!E!F!!!,0,`,a,b,e,g,h,i,j,k,l,m,q,r,s,u,v,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm"#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoyz{|}§çħȧɧʧ˧ͧЧѧ֧קا٧ڧۧܧݧ!;(p{|  P f @n`n4Nh  8:;?@EFGJQl"<Vp5Vo"-a{      !"#$%&'()*+,-./012345679:;<=>?@ABCDEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      !"#$%&'()*+,-./0123:<=?ABCGHIJKLMNOqrstwx{~0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0`,kxy      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (08@FPX`hp~ ! !!!!!/!0!4!5!9!:!!F!J!N!O!!!0,`,a,b,e,g,h,i,j,k,l,m,q,r,s,u,v,|,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,      !"#$%&'()*+,-./012345679:;<=>?@ABCDEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      !"#$%&'()*+,-./0123:<=?ABCGHIJKLMNOEFqrstwxz~0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0`      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (08@FPX`hp~q r  ! !!!!!/!0!4!5!9!:!!F!J!N!O!p!!!!$$0,`,a,b,e,g,h,i,j,k,l,m,q,r,s,u,v,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-&-'-(---.-ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoyz{|}§çħȧɧʧ˧ͧΧѧҧӧԧէ֧קا٧ڧۧܧ0[\jpA[(P  p  `nn4NUVh8Rl"<Vp6OPVp  %+0n"D!xz01WYKM.0?@\^_`kp       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x    ) * : < E F I J N U W X [ ] ^ ` d f p w    E F I J P T d f ;?\HImqIJNPWXYZ^`[]}7@T`mnqrt y ,0<@ADnpu_`}MN8;JM FHNPXYZ[\]^_~ ( * / 0 _ ` e f r t !!!*$@$K$`$t+v+++,,&-'-(---.-0-h-o-q--------------------^.....///00@0A00011011111112 2ǤФ,@ΧЧҧӧԧէݧ-0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0lpnp78=>?@BCEF STghlpuv  '(;<>?NP^47$-KP{(0do{|7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : @ f i    `(0ZpNRv56HPwB )*1245:;EGIKNPQWX]dfmpu\]bEPZ`m,0G<   679;GPZHP   78FPmp  7:;<>?HPZ`fgij;>[#$o$p$u$$D%//0V4`4CDGFa:ah9j@j_j`jjjnjjjjjjjjkFkPkZk[kbkckxk}kk@mzm@nnoKoOoooooooop֌ #23PSUVdhpkp}.0GP')FW`yUV  :;?@EFGJQR%+"#%&+0n-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0<@IPR`fw{ HPZ`T`np}:@ ^KP# A[a{EFcuvxz~01WYZ` XY`n@M-@Y`kp< = M N Q U d q       ) * 1 2 4 5 7 8 : > C G I K M Q R Y ] ^ _ p v       ) * 1 2 4 5 : = E G I K M V X \ ^ _ d q r    ) * : = E F I J M U W X [ ] ^ ` d    ; = E F I J M N O T X _ d z ;@GMN@HImq789;@PIJNPWXYZ^`[mo4@T`mnqrt y ,09Pnpu _au45DEM7MPZ~ FHNPXYZ[\]^_~q r  !!!! !!!!!!$!%!&!'!(!)!*!.!/!:!?@BCEF>Ppuv!;A[f  '(;<>?NP^@u -KP{(0dp{|7@V`h  679<=?V`w   :              6 ` }        6 @ V ` s    I      ( J f i j o  '(0FpFqv3DHPsvw578>B )*1245:=EGIKMPQWX]dBCFGK_b?@ADE+@G9   679;=?C35?P  78?@Ar  7:;<>?BCDFH`fgij;>A #$o$$D%//004A4G4`4CDGFa/ah9j@j_jpjjjjk0k@kDkckxk}kk@mmm@nnoKoOooooooo    E F I J O T X _ d f p z ;@OPZ *56789:>HImqJPIJNPWXYZ^`[]`mo5@T`mnqrt  y ,0<Fnpu _`}MPZkt8@JM~ FHNPXYZ[\]^_~  ? A T U q r  !!!! !!!!!!$!%!&!'!(!)!*!.!/!:!?@BCEF>P 035MPpuv!;?@A[f  '(;<>?NP^@u -KP{(0dp{|7@V`h  679<=?V`w   :              6 8 ; ? @ ` }        6 @ V ` s    I      ( 0 : @ f i n o  '(0QpGfv56@DHPtvw8>B )*1245:;EGIKNPQWX]dfmpuKPZ^bADEPZ,0:@G;   679;DPZ?GHP  78APZr  7:;<>?HPZ`fgij;>CP[ #$o$$D%//004@4V4`4CDGFa:ah9j@j_j`jjjpjjjjjjjjk7k@kDkPkZkckxk}kk@mmmpmzm@nnoKoOoooooooooop֌ #23PSUVdhpkp}.0Gejms{BEUV  :;?@EFGJQR56OPop7;muv%+"#%&+0n-0>@JNOLPZ !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~0JPjp:@ ^KP#!A[      !"#$%&'()*+,-./012345679:;<=>?@ABCDEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      !"#$%&'()*+,-./0123:<=?ABCGHIJKLMNOpqrsvw0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./1W      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(08@HNYZ[\]^_`hp!!!! !!!!!!!!$!%!&!'!(!)!*!.!0!4!>!@!E!F!`!p!!!$$,0,`,a,b,e,g,h,i,j,k,l,m,q,r,s,u,v,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm"#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoyz{|}§çħȧɧʧ˧ͧЧѧ֧קا٧ڧۧܧݧ!;(p{|  P f @n`n4Nh  8:;?@EFGJQl"<Vp5Vo"0JPjp xz01WYKM.0?@\^_`kp       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x    ) * : < E F I J N U W X [ ] ^ ` d f p w    E F I J P T d f ;?\HImqIJNPWXYZ^`[]}7@T`mnqrt y ,0<@ADnpu_`}MN8;JM FHNPXYZ[\]^_~ ( * e f r t !!!*$@$K$`$t+v+++,,&-'-(---.-0-h-o-q--------------------^.....///@0A00011011111112 2ǤФ,@ΧЧҧӧԧէݧ-0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0lpnp78=>?@BCEF STghlpuv  '(;<>?NP^47$-KP{(0do{|7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : @ f i    `(0ZpNRv56HPwB )*1245:;EGIKNPQWX]dfmpu\]bEPZ`m,0G<   679;GPZHP   78FPmp  7:;<>?HPZ`fgij;>[#$o$p$u$$D%//0V4`4CDGFa:ah9j@j_j`jjjnjjjjjjjjkFkPkZk[kbkckxk}kk@mzm@nnoKoOoooooooop֌ #23PSUVdhpkp}.0GP')FW`yUV  :;?@EFGJQR%+"#%&+0n-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0<@IPR`fw{ HPZ`T`np}:@ ^KP# Ga{np)*78=>?@BCEF^d>P 035MPqrstwxyz{|}~!;?@A[f  '(;<>?NP^@u -KP{(0dp{|7@V`h  679<=?V`w   :              6 8 ; ? @ ` }        6 @ V ` s    I      ( 0 : @ f i n o  '(0QpGfv56@DHPtvw8>B )*1245:;EGIKNPQWX]dfmpuKPZ^bADEPZ,0:@G;   679;DPZ?GHP  78APZr  7:;<>?HPZ`fgij;>CP[ #$o$$D%//004@4V4`4CDGFa:ah9j@j_j`jjjpjjjjjjjjk7k@kDkPkZkckxk}kk@mmmpmzm@nnoKoOoooooooooop֌ #23PSUVdhpkp}.0Gejms{BEUV  :;?@EFGJQR56OPop7;muv%+"#%&+0n-0>@JNOLPZ !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~:@ ^KP#I !(*-.0:A[_`a{uvx{~01WYZ` jnKM.@\`kpd f p q       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f p q r    ) * : < E F I J N U W X [ ] ^ ` d f p    E F I J O T X _ d f p z ;@OPZ *56789:>HImqJPIJNPWXYZ^`[]`mo5@T`mnqrt  y ,0<Fnpu _`}MPZkt8@JM~ FHNPXYZ[\]^_~  ? A T U q r  !!!! !!!!!!$!%!&!'!(!)!*!.!/!:!?@BCEF^d>P 035MPqrstwxyz{|}~!;?@A[f  '(;<>?NP^@u -KP{(0dp{|7@V`h  679<=?V`w   :              6 8 ; ? @ ` }        6 @ V ` s    I      ( 0 : @ f i n o  '(0QpGfv56@DHPtvw8>B )*1245:;EGIKNPQWX]dfmpuKPZ^bADEPZ,0:@G;   679;DPZ?GHP  78APZr  7:;<>?HPZ`fgij;>CP[ #$o$$D%//004@4V4`4CDGFa:ah9j@j_j`jjjpjjjjjjjjk7k@kDkPkZkckxk}kk@mmmpmzm@nnoKoOoooooooooop֌ #23PSUVdhpkp}.0Gejms{BEUV  :;?@EFGJQR56OPop7;muv%+"#%&+0n-0>@JNOLPZ !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~:@ ^KP#WA[a{puvx{~01WYZ` Knpq0M$%()@Y`kp : = > P Q X b q     ) * 1 2 4 5 7 8 : Y ] ^ _ r u     ) * 1 2 4 5 : = > \ ^ _ b q r     ) * : = > X [ ] ^ ` b     ; = > N O T W _ b z 123@G@HIm+?@PVZ^abegnquIJNPWXYZ^`[mo2@R`mnq yPnpu U4EM$MPZ~ FHNPXYZ[\]^_~q r  !!!! !!!!!!$!%!&!'!(!)!*!.!/!:!?@BCEF^d>Pqrstwxyz{|}~!;A[f  '(;<>?NP^ -ABJPv(0dp{|7@V`h  679<=?V`w   :            6 ` }        6 @ V ` s    I      $ J f o  '(0Fp8qsuv'DEGHPsvw,?A )*1245:=>PQ]b5GK_b0DE@G,   0?@AB 3:;PQ\  /@Ar  1FG`fgij4 #$D%//004A4G4`4CDGFaah9j@j_jpjjjjk0k@kDkckxk}kk@mmm@nnoKoPoQooooooop֌ #23PSUVdhpkp}UV  :;?@EFGJQR56OPop%+0n-7>NODKL !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~:@ ^KP#90:A[_`a{uvxz~01WYZ` jnKM.@\`kpd f p q       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f p q r    ) * : < E F I J N U W X [ ] ^ ` d f p bt| "ŨΨڨT_`7@NPZ\`$' : ? @ )*,0GBP{~{ } ~ LP} M!O!!!##&&''++ +$+`,m,t,x, "@x     o#$c$p$t$`r7BX]  Y_Pn} ~ GH GH_a lU W X _ ?NP^47@&(N  679<=?@Ww !OPcpnp  7@T`mnqrtG H N S W X _ d q r =!L!!""#|#}###$$%%%&&&r&~&&&h'v''''()+;0>000000112Q2`222¤ŤƤ0kEGst_aI $0K&(N'*UV  :;?@EFGJQRצ  "4FObc PQ]^SV-0K jk"#()+,36:@ZGHIJNPWXYZ^` GH[a}w x/ 0 H N 9!;!!!!!##{#|#}##%$'$%%&&p&r&()....////80;0>0?0114M¤ŤƤǤ ;HIjq  _NP'$*$11˧Χڧݧ@ f i    Z[`4Ca:a@mzm/011^A ?B ;>Z/40494V423UV%+0ntw{ux9:P#p< = ] ^  LM} /,0,_,`,S.^.§Чҧӧԧէڧ@Pp{|ppv@G//pjjjj#.0GPyz{}ަ59wU V   ++P.S.11MMǧ˧,-hlGHZ[`b   679;GPZoooo֌  mp  rswytuצަK23yw x +++,O.P.§ǧfh_` 0494EoKoOoPoooooPSdh-0>@JNPKL>lm ?@qr{|Tptx{w`a v w   xy++++++J.O./1014 6 H I  ( 0 : (0ZDG;<^_<`fgij@nnryq/0MPlqswz{|`nQ`k  ; =  #$++E.J..1/1֟-0HP  7:;<>?HPZoop`f  (013LM_l@ @AO P A.B.LPZ^`N0:A[_`a{OP_a  ? A T U p !`$%v'',..000!00010d1e1>@EGs{02IJxy*!,!02IJxy*!,!]A[_`a{puvx{~01WYZ` Knpq0M$%()@Y`kp : = > P Q X b q     ) * 1 2 4 5 7 8 : Y ] ^ _ r u     ) * 1 2 4 5 : = > \ ^ _ b q r     ) * : = > X [ ] ^ ` b     ; = > N O T W _ b z 123@G@HIm+?@PVZ^abegnquIJNPWXYZ^`[mo2@R`mnq yPnpu U4EM$MPZ~ FHNPXYZ[\]^_~q r  !!!! !!!!!!$!%!&!'!(!)!*!.!/!:!?@BCEF^d>Pqrstwxyz{|}~!;A[f  '(;<>?NP^@u -KPv(0dp{|7@V`h  679<=?V`w   :            6 ` }        6 @ V ` s    I      $ J f o  '(0Fp8qsuv'DEGHPsvw,?A )*1245:=>PQ]b5GK_b0DE@G,   0?@AB 3:;PQ\  /@Ar  1FG`fgij4 #$o$$D%//004A4G4`4CDGFaah9j@j_jpjjjjk0k@kDkckxk}kk@mmm@nnoKoPoQooooooop֌ #23PSUVdhpkp}UV  :;?@EFGJQR56OPop%+0n-7>NODKL !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~:@ ^KP#C0:A[_`a{uvx{~01WYZ` jnKM.@\`kpd f p q       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f p q r    ) * : < E F I J N U W X [ ] ^ ` d f p    E F I J O T X _ d f p z ;@OPZ *56789:>HImqJPIJNPWXYZ^`[]`mo5@T`mnqrt  y ,0<Fnpu _`}MPZkt8@JM~ FHNPXYZ[\]^_~  ? A T U q r  !!!! !!!!!!$!%!&!'!(!)!*!.!/!:! @ADF ( 5 D E _ |  !!!!! !!!!!!$!%!&!'!(!)!*!:!P0PQRTUV_`bdghikl !;A[f@  9 @ n o Rf`mooBEFW56OPop,0 /0jp`fw{ HPZ`T`np}pK`pq0K$%().Y\ : ; < = A I M N Q X b d   < = A C G I K N Q R p r u v   < = ? @ A E M N U W b d    < = > A F I J N U W b d  ; = A E M N b d 124;GO56789:q-1289;=?XZ^aqu]`24RTrt  #')239<VWX_`abcems}456;<=BCkt,468 ,,---.*0.000ost~ %',-Ĩƨ&.GR)/1357CDLM|}ª 0v{      8 ; ? @   $ ( i n FQ8Gpqsu',-5st/24568>?AB;=@Afmpu8@BEFG^_3;=>?A "&',/89;;=>?CD  39;?GHQWY\078>17:;<>?FGH6;@ABCZ[@4A4G4V4a*a-a0ajj0k7kOoPooooo.0Ggj{BE7;muv"#%&+07DK- . f g * + A[a{ptv~ : ; < = A I M N Q X b d   < = A C G I K N Q R p r u v   < = ? @ A E M N U W b d    < = > A F I J N U W b d x   ; = A E M N b d 124;?@GO56789>q-1289;=?XZ^aqu]`24RTrt #')239<@ADFVWX_`abcems}456;<=BCkt,468   q t  !!!!! !!!!!!$!%!&!'!(!)!*!.!/!:!?AB;=@Afmpu8@BEFG^_3;=>?A`m "&',/89;;=>?CD  39;?GHQWY\078>17:;<>?FGH6;@ABCZ[@4A4G4V4a*a-a0ajj0k7kOoPooooooo.0GgjsFW56OPop7;muv"#%&+07,0/0jp`fw{ HPZ`T`np} h i 1#&  jk ?@0 5 .!/!""8:_`ik+,-.z | "")*bd 0:p q t z $$ ,-.0:;  / 0 D E PQRSUV @   ` f j p s{   ) * `jkm0 : @ J `;    Kmpq0K`P>Pp $ ( 0 : @ 0FQppPjjjjh@jh9jMN 0.2. 6 9 @ !"  1WY@VW`PpPp oPp O P A.B.Ppuv` !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~@PP,0G 12^_0dopi O P T W X _ v y ##C.E.Ũƨ>?Z[\]^`m  78FPmpoop"#%&+KPZ^`;<z{ (013?@LP_w Z [ _ `  !!++֟͟`dp.0             PQ,0@##$D%DGF-0~KPCE (0 x y  4 5    ##''M+P+Z+t+v++++++++<.C.|0`df'. P{(0dop7@V`h`            Pw> )*1245:<EGIKNWX]dfmpuEPZo##c$o$t$u$@j_j`jjjnjpjjjjjkFkPkZk[kbkckxk}kkkp}  !-67}~?@AB>@DKhz{ACP HPZ`f j   '''',,'-(---.-f-h-2.<.̟͟t|.0    56DoEoPoooo !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~jl@D &(,-.045&( !_`@\^_: < O P V X s x r x ) * : ; N O ]_ ##&&&&&&'' ' '(')'L'M'N'O'S'V'_'a'''''''''p-q---11`b  '(/NRph9j012=>?@BCFGJOWX_`jpyz{}2;PR!067}?@AB>Ph &(,-.045AEPt@$&.0?  N O U V y { Z_w _`} P!S!!!##&&&&&&&&&&&'W'X'U+Z+p,q,~,,,,1.2.D2P2ğ̟Ф0:`}Ωϩکީ`|ê۪kn@VW`  `   6 9 V X s x   I `0/4 /12=>?@BCFGJOWX_`yz{}2@I5ptvx$ ;@nq s Q R u v D E b d = > X Z b d x = > D E b d p v y km"#()+,36:@Z8;JMd e O!P!!!&&&&&&''''+ +$+M+P+U+m,p,q,t,x,~,-....1.-1.111ğ,@`,-5st/24568>?AB;=@Afmpu8@BEFG^_3;=>?A "&',/89;;=>?CD 39;?GHQWY\078>?@17:;<>?FGH6;@ABCZ[04A4G4V4a*a-a0ajj0k7k@kDk@mCmkmmmOoPooooooo.0GgjsBE7;muv"#%&+0n0>DL pp  #%02p 7@NPZ\`+  * / ` e f p 04@4s{ CX ` 3 4 6 7 Y \ ^ _ \ ^ CDMNRSWX\]ijvwxy** *78=>?@BCEFO^emn.000EF \]_`bc]_`b 9:-0.0*0+0!#')49=GJMOSWY[UW\]_`12457:;=>?BCDEFGHIY\R S 5678;<lm +.'.  : ;   FHKLMQ{ XY,0-0 +0,0=EFGJMPSWX[\cpSUW\]_012457:;=>?BCDEFGHIK$%(). Q R S U ]`:;u}klmt ,,-.opt~ª '.0v{  8 9   $ ( i n HKLMfmpu^_0k7kBE"#%&+07DJV W uM N M N M N M N ; = M N :;9;45`aDE--,-ĨŨST? @ FGpq3556MNBC?@+,9:=?45GH?@DFAC/a0aU V 005< = < = < = < = 784578st67;=FG:;CDBCJKoopqRSQRPQOPNOMNLMKL 9:egns!#')tursz~qrHL8:49 9 : jjgjOPpK`pq0K$%().Y\ < = M N Q U < = M N < = M N < = M N U W ; = M N 8;HL56789:qstuz~789;]`459<`au}45DEkt78 ,,---.*00000opt~,-ĨŨ+.STª 0v{    8 ; ? @   $ ( i n FQFGpq35st57;=MNfmpuBCFG^_?@+,9;=?CD45GH?@BCDFAC/a0ajj0k7kooejms{BE"#%&+07DK Z [ ] ^ 1.2.  @J56H xz01WYKM.0?@\^_`kp       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x    ) * : < E F I J N U W X [ ] ^ ` d f p w    E F I J P T d f ;?\HImqIJNPWXYZ^`[]}7@T`mnqrt y ,0<@ADnpu_`}MN8;JM FHNPXYZ[\]^_~  * / ` p r t !!!*$@$K$`$t+v+++,,&-'-(---.-0-h-o-q--------------------^.....///@0A00011011111112 2ǤФ,@ΧЧҧӧԧէݧ-0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0lpnp78=>?@BCEF STghlpuv  '(;<>?NP^47$-KP{(0do{|7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : @ f i    `(0ZpNRv56HPwB )*1245:;EGIKNPQWX]dfmpu\]bEPZ`m,0G<   679;GPZHP   78FPmp  7:;<>?HPZ`fgij;>[#$o$p$u$$D%//004@4V4`4CDGFa:ah9j@j_j`jjjnjjjjjjjjkFkPkZk[kbkckxk}kk@mzm@nnoKoOoooooooop֌ #23PSUVdhpkp}.0GP')s{FW`yUV  :;?@EFGJQR%+"#%&+0n-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0<@IPR`fw{ HPZ`T`np}:@ ^KP#57@T ϩЩ()NRv()[\{|:;<=E F } ~ # # # #)#*#h'i'j'k'l'm'n'o'p'q'r's't'u'''''''''''''))))))))))))))))))))))))))))".#.$.%.&.'.(.).U.V.W.X.Y.Z.[.\.0 0 0 0 0 0000000000000YZ[\]^ ;<[\_`bc=(*[\]^{|}~:>E G }  # #)#+#h'v'''''))))))".*.U.].0000Y_ ;<=>[\]^_abd)*]^}~;<=>F G ~  # # # #*#+#i'j'k'l'm'n'o'p'q'r's't'u'v'''''''''''''))))))))))))))))))))))))))))#.$.%.&.'.(.).*.V.W.X.Y.Z.[.\.]. 0 0 0 0 00000000000000Z[\]^_ =>]^`acd%%1100000 0*0.0001070800010111EGaf%%(*<=>?[\]^{|}~:>9 ; E G }  @!A!"""""""""""#"$"%"&"'"+"4"9":";"M"R"V"_"a"b"c"d"l"m"""""""""""""""""""## # #"#)#+#h'v''''''''''''''')))))))))))))))))))))))))))) ***"*$*%*&*'*)***+*/*4*6*<*?*W*Y*d*f*j*n*o*q*s*u*y********************++.. . . .... .*.U.].0000Y_df ;<=>[\]^_abdOP   * / f j   78FPm7Q S d f  ! ( ) _ ` 00  :;?@EFGJQR0n" !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~ /0Pjm<@IPRA[a{89!"4:UVXYZ[]`bcghmopqsuv}~EFptvx{~01Wayz}~ FHNPXYZ[\]^_~&!'!*!,!2!3!N!O!`!!!!$$,q,r,t,u,w,~,,,,,,-&-'-(---.-@n"02pyΧЧҧ֧ݧSTp!;A[Pp{|    P f p  @nnDA[      !"#$%&'()*+,-./012345679:;<=>?@ABCDEFGHIKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      !"#$%&'()*+,-./0123:<=?ABCGHIJKLMNOEFpqrsvw0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./1W      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(08@HNYZ[\]^_`hp&!'!*!,!2!3!`!p!!!$$,0,`,a,b,e,g,h,i,j,k,l,m,q,r,s,u,v,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm"#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoyz{|}§çħȧɧʧ˧ͧЧѧ֧קا٧ڧۧܧݧp!;(p{|  P f @n`n" $$47@  679<=?@//`tv,,,-..$@$@BCEtu~X ` 3 4 6 7 Y \ ^ _ \ ^ CDMNRSWX\]ijstuwxyqrstuvwxyz{|}~  &!'!*!,!)#+#** !"#%'*np *78=>?@BCEFO^e011xz01WYKM.0?@\^_`kp       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x    ) * : < E F I J N U W X [ ] ^ ` d f p w    E F I J P T d f ;?\HImqIJNPWXYZ^`[]}7@T`mnqrt y ,0<@ADnpu_`}MN8;JM FHNPXYZ[\]^_~ e f r t !!!*$@$K$`$t+v+++,,&-'-(---.-0-h-o-q--------------------^.....///@0A00011011111112 2ǤФ,@ΧЧҧӧԧէݧ-0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0lpnp78=>?@BCEF STghlpuv  '(;<>?NP^47$-KP{(0do{|7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : @ f i    `(0ZpNRv56HPwB )*1245:;EGIKNPQWX]dfmpu\]bEPZ`m,0G<   679;GPZHP   78FPmp  7:;<>?HPZ`fgij;>[#$o$p$u$$D%//0V4`4CDGFa:ah9j@j_j`jjjnjjjjjjjjkFkPkZk[kbkckxk}kk@mzm@nnoKoOoooooooop֌ #23PSUVdhpkp}.0GP')FW`yUV  :;?@EFGJQR%+"#%&+0n-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0<@IPR`fw{ HPZ`T`np}:@ ^KP# 0@011./`P#P @ @4M 0P34N'(./:;^_`aptvz{YZ_`@AK`pq0K.Y\ : ; < = A I M N Q X b d q r   < = A C G I K N Q R p r u v   < = ? @ A E M N U W b d    < = > A F I J N U W b d  ; = A E M N b d 124;FO56789:q-1289;=?XZ^aqu]`24RTrt CD #')239<VWX_`abcems}456;<=BCkt,468x~,kxy    $ % ' ( * / ` e f p q r  |,~,,,o-p----./.0.00*0.01060;0<00000 ost~"pq %',-Ĩƨ&.GRϩЩ)/1357CDLMpq|}ªݪު[`il 0RSUV>?@Apqv{      8 ; ? @   $ ( N O i n o p FQ8Gpqsu'STpA[(P  p  `nn"Da{      !"#$%&'()*+,-./012345678:;<=>?@ABCDEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      #$%&'()*+,-./01234<=?ABCGHIJKLMNOUVXYZ[]`bcghmopqsuv}~EFqrstwx{~0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0ayz}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (08@FPX`hp~N!O!p!!!!$$0,`,a,b,e,g,h,i,j,k,l,m,s,t,v,w,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-&-'-(---.-ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn#$%&'()*+,-./03456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopz{|}§çħȧɧʧ˧ͧΧѧҧקا٧ڧۧܧSTpA[(P  p  `nn"DA[      !"#$%&'()*+,-./012345679:;<=>?@ABCDEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      !"#$%&'()*+,-./0123:<=?ABCGHIJKLMNOpqrsvw0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./1W      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(08@HNYZ[\]^_`hp&!'!*!,!2!3!`!p!!!$$,0,`,a,b,e,g,h,i,j,k,l,m,q,r,s,u,v,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm"#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoyz{|}§çħȧɧʧ˧ͧЧѧ֧קا٧ڧۧܧݧ!;(p{|  P f @n`n"A[      !"#$%&'()*+,-./0125679:;<=>?BCDEFGHIKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      !"#$%&'()*+,-./0123:<=?ABCGHIJKLMNO@BCFOPpqrstuvwz{~0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./1WuyX ` 3 4 6 7 Y \ ^ _ \ ^ 34  CDMNRSWX\]ijstuz_a ,/0;<NOkxy      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(08@HNYZ[\]^_`hpqrstuvwxyz{|}~      $ ' * 0 3 5 6 8 < = > ? G J W X _ r t !!!! !!!!!! !#!$!%!&!'!(!)!*!.!/!:!;!A!E!J!P!!!!!!,"."/"1")#+#`$$ * *t*w***,0,`,a,b,e,g,h,i,j,k,l,m,q,r,s,u,v,|,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,o-p-....//00607080;00000011111122 2H2P2224@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm"#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqyz{|}§çħȧɧʧ˧ͧЧѧ֧קا٧ڧۧܧݧ\`ijp !"#%'*np78=>?@BCEF>P0EGSTghlpstuv(p{|  P f @n`n^es{UV0EGSTghlpstuv.0KM89!a)ahmkm^eUV  :;?@EFGJQR0n !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~ /0Pjm<@IPR24?AIJz{uy34  wxyz,/0;<NOkxy     $ ' / 0 3 5 6 8 < = > ? G J W X _ ` p r t !!!! !!!!!! !#!$!%!(!)!,!.!/!2!3!:!;!A!E!J!P!!!!,"."/"1"`$$ * *t*w*|,~,o-p-....//00607080;00000011111122 2H2P2224pq\`ij *O>P0EGSTghlpstuvUV  :;?@EFGJQR0n !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~ /0Pjm<@IPR       / 0 amUVYZ]^abefijmnqruvyz}~4<qrwxyz{|}~PQRSVWZ[^_bcfgjknorsvwz{~d=>pqrstuvwxyz{|}~TUXY\]`adehilmpqtuxy|}-4PQRXYZ\^`bcdefhiklmnpqrtwx}~P!`!!!!! !!!!!!$!%!(!)!,!.!/!2!3!5!9!:! ? G J W X _ ` !!!!!! ! !!!!!"!5!9!;!@BCD FHNPXYZ[\]^_~  &!'!*!,!!!!!!!"" " " " "$"%"&"'"A"B"D"E"G"H"I"J"`"a"b"c"m"r"t"v"x"z""""""""""""")#+#**L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0e0f0g0h0i0j0p0r0s0u0v0x0y0{0|0~000000000000000000000000000000000000000000000000000 !"#%'*np *78=>?@BCEFO.0KM89!a)ahmkm^eP0d p 0:<''   679;GPZ !p^_`aOPX]ctvz{YZKSWY0K< = M N Q U q r < = M N < = M N U V < = M N ; = M N :;GMNO56789:>@789;cein]`459<`au}45DEkt68x~,k,,/.0.*0000000op|~",-ĨŨ+/ST{~ê[`il 0>?@Apq8 ; ? @   " ( N O i n FQFGpq35st57;=MNfmpuBCFG?@+,9;=?CD45GH?@BCDFACZ[G4V4/a0ajj0k7kkmmmoooo.0Ggjms{0n07DGHK#OP_a   * / ` p d1e1s{` S U  0: IJstwxyzj p )#+#1-.  S T { | ""....:.<.@.A.].^.0000100013XYcd n o %   0+,xy-.C.D.@.00n00@-.@a{      !"#$%&'()*+,-./012345678:;<=>?@ABCDEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      #$%&'()*+,-./01234<=?ABCGHIJKLMNOUVXYZ[]`bcghmopqsuv}~EFqrstwx{~0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0ayz}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (08@FPX`hp~N!O!p!!!!$$0,`,a,b,e,g,h,i,j,k,l,m,s,t,v,w,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-&-'-(---.-ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn#$%&'()*+,-./03456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopz{|}§çħȧɧʧ˧ͧΧѧҧקا٧ڧۧܧ   ? A F I J M 34>@12;=VX#'),0239UVWXms>B$,46#%'(ĨRS/135MN,-EG,/24?@AEGIKMbd58@BEF03;=>?&',/891679@ABC9:WY/0>?46>@*a-aQoo!N O ?@AB:;FG``}pK`pq0K$%().Y\ : ; < = A I M N Q X b d   < = A C G I K N Q R p r u v   < = > @ A E M N U X b d    < = > A F I J N U W b d  ; = > ? A E M N W X b d 124;GO56789:q-1289;=?XZ^aqu]`25RTrt  #')239<VWX_`abcems}4>BEkt,468 ,,---.*00000ost~ %',-Ĩƨ&.GRST)/1357CDLM|}ª 0v{      8 ; ? @   $ ( i n FQ8Gpqsu',-5st/248>?AB;=>?@AMNWXfmpu8@BEFG^_3;=>?A "&',/89;01;?CD 39;?GHQWY\078>?@17:;<>?FGH6;@CZ[@4A4G4V4a*a-a0ajj0k7kOoPooooooo.0Gejms{BE7;muv"#%&+07DK &     ( / ` p 04@4s{     @ f i    < = I J "!#!9!:!!!!!##(#)#########$$%%%%%%%%&&&&&&&'''''''''!'"'(')'3'5'D'E'G'H'L'M'N'O'S'V'W'X'c'h'''''''''4)6)++++P+Q+U+V+0010=0>02222 /0lr~/02;<@I>FPt HPZ` ;<FGS@Aq r U V FG  CD67{|0010600000 ϩЩpqݪުpqN O j k o p 78]^BkDkoooo<>DG0--KIJNPWXYZ^`[]}------------------  '(/########%%&&H&T&&&&&&&&&&&&&&&&&&&&&&&&&&&'' ' '(')'L'M'N'O'S'V'W'X'''''''++P+Q+U+V+/0278;PR!-67}~?@AB>KOPhz{P ;<FGp}23`$%P-#$*+0:< = I J "!#!9!:!!!!!##(#)#######$$%%%%%%%%&&&&&&&&&&&& &!&"&$&&&'&*&+&.&0&8&;&@&A&B&C&H&T&_&a&c&d&e&g&h&i&{&|&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''!'"'(')'3'5'D'E'G'H'L'M'N'O'S'V'W'X'c'e'''''''''4)6)++++P+Q+U+V+0010=0>02222pr~/02;PR"$>IOPhoqs{P ;<FGp}(`4D04`40V4`4C#$*+0:   Q&&&& ''BDFQfy|}tvz{EHKP   &'0:<?wx$P%`##)#+#######%%&&0&8&H&T&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'' ' '(')'L'M'N'O'S'V'W'X'''''''++P+Q+U+V+....///00?0A00011011111112 2H2P2Ǥ`}0STghloooop֌ #23PSUVdhpW`w<@IPR`f!-67}~?@AB>KOPhz{P ;<FGp} ''))5 &(+,1489?CDEHLMNRTfhklQRabpPQR`        # $ ( 0 1 2 4 5 6 ; < > ? t u  !!!! ! !!!!!!!#!&!'!+!,!S!U![!_!`!l!p!z!!!!!!!!!!!!!""""" " " """"""""""!"#"$"%"&"'"-"."/"4"8"<">"H"I"L"M"R"S"`"b"d"h"j"l"n"p"""""""""""""####)#+#######`$$$L%P%t%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&& & &&&&&&&&&0&8&@&A&B&C&H&T&`&b&c&f&g&k&l&n&o&p&&&&&&&&&&&&&&&&&&&&''' ' '(')'='>'L'M'N'O'S'V'W'X'v''''''''''))++P+Q+U+Z+....///?0A00011011111112 2Ǥ`}0STghloooop֌ #23PSUVdhpW`w .0jp<@IPR`f!-67}~?@AB>KOPhz{P ;<FGp} a00ag&(+,1489?CDEHLMNRTfhklQRabpPQR        # $ ( 0 1 2 4 5 6 ; < > ? t u  !!!! ! !!!!!!!#!&!'!+!,!S!U![!_!`!l!p!z!!!!!!!!!!!!!""""" " " """"""""""!"#"$"%"&"'"-"."/"4"8"<">"H"I"L"M"R"S"`"b"d"h"j"l"n"p"""""""""""""##`$$$L%P%t%%%%%%%%%%%%%%%%%%%%%%%%%%%&& & &&&&&&&@&A&B&C&`&b&c&f&g&k&l&n&o&p&&&&&&&&&&&&&&&&&&&&&&&&'='>'v''V+Z+H2P2 .0jp   #%<.=.kp} 00010EGI?,/0;<NObxyp r t !!!"!#!},~,o-p-11pq\`ij0Qknjm bk |,},QkP2Q2222X3q33340P<PSTghl1&(1289ACJLRTfh &4@BCEtuz{~ 9:PRSTWX\_vx"'uy) * 1 2 4 5 X ` 3 4 6 7 Y \ ^ _ H I K M \ ^ H I J M 34  CDMNRSWX\]ijstuz&'     ;<=>@BCD,/0;<NOkxy FHNPXYZ[\]^_~     $ ' / 0 3 5 6 8 < = > ? G J W X _ ` p r t !!!! !!!!!! !#!$!%!&!'!(!)!*!.!/!2!3!:!;!A!E!J!P!!!!!!!!!!"" " " " "$"%"&"'","."/"1"A"B"D"E"G"H"I"J"`"a"b"c"m"r"t"v"x"z""""""""""""")#+#`$$ * *t*w***|,~,o-p-....//00607080;0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0e0f0g0h0i0j0p0r0s0u0v0x0y0{0|0~000000000000000000000000000000000000000000000000000011111122 2H2P2224pq\`ij !"#%'*np78=>?@BCEF>PGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~:@ ^KP#-.  ..00cd efZ [ ] ^ 1.2.A.B.      ` `} -0>@JNP kFkPkZk[kbkckxk}kkDGF#00000 000607080<0>0A000000EGafpq 23PS 78=>?@BCEFP  7+00000 0.01070800011122`22`}EGafU....///000000 0!0.0001070@000111111 2H2222223X3q3{33334MNnpEGafoooo`rPR:@ ^KP# 0'Q S d f       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w 0:e f a:a#Q S d f 0:pK`pq0K$%().Y\ : ; < = A I M N Q X b d   < = A C G I K N Q R p r u v   < = > @ A E M N U X b d    < = > A F I J N U W b d  ; = > ? A E M N W X b d 124;GO56789:q-1289;=?XZ^aqu]`25RTrt  #')239<VWX_`abcems}4>BEkt,468 ,,---.*00000ost~ %',-Ĩƨ&.GRST)/1357CDLM|}ª 0v{      8 ; ? @   $ ( i n FQ8Gpqsu',-5st/248>?AB;=>?@AMNWXfmpu8@BEFG^_3;=>?A "&',/89;01;?CD 39;?GHQWY\078>?@17:;<>?FGH6;@CZ[@4A4G4V4a*a-a0ajj0k7kOoPooooooo.0Gejms{BE7;muv"#%&+07DK Y BCEFpxz~&+]bfk FHNPXYZ[\]^_~] ^ &!'!ef@F  pxz01WYK`pq0M$%()0?@Y^_`kp : ; < = A I M N Q X b d       ) * 1 2 4 5 7 8 : > A Y ] ^ _ f p r u v w       ) * 1 2 4 5 : = > @ A G I K M \ ^ _ b f x       ) * : = > A E X [ ] ^ ` b f p w     ; = > ? A F I J M N P T W X b f 124?GO\56789:HIm-1289;=?XZ^aquIJNPWXYZ^`[`}257@R`mnq  y#'),0239@ADnpuVWXabcems4>BEMNkt,46;JM FHNPXYZ[\]^_~  ( / ` p r t !!!*$@$K$`$t+v+++,,,,&-'-(---.-0-h-o-q-------------------.^.....///*000@0A00011011111112 2ǤФ,@ost~ΧЧҧӧԧէݧ %',0:@xĨΨڨ&.GRS_}Ωϩکީ)/135@CDLMNPZ\|}ªê۪  '(/0lpnp78=>?@BCEF0STghlpuv  '(;<>?NP^47$-KPv(0do{|7@V`h  679<=?VW  : ? @            6 @ I P Y `       6 9 V X s x       I      $ 0 : @ f n    `(0FQZp8GNRpqsuv',-6HPstw/248>?A )*1245:=>?@AEGIKMPQ]d8@BEFG\]^_b3;=>?AEPZ`m "&'0G/89;<   01679?CDGPZ 39;?GPQWY\   0>?@FPmp  1FGPZ`fgij6>@CZ#$o$p$u$$D%//004A4G4`4CDGFaa*a-a0a:ah9j@j_j`jjjnjjjjjjjjk0k7kFkPkZk[kbkckxk}kk@mzm@nnoKoPoooooop֌ #23PSUVdhpkp}P')ejmBEFW`yUV  :;?@EFGJQR7;muv%+0n-7>@JNPDKLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0<@IPR`fw{ HPZ`T`np}:@ ^KP#3Q S d f   )*1245:;EGIKNPQWX]dfmpu  120Kd f   7:;<>?HPZd f `fgij0!Z [ ,`,C.D.op"#%&+-0-Z [ -&-'-(---.-1.2.%& pK`pq0K$%().Y\ : = > P Q X b d   < = > C G I K N Q R p r u v   < = > E G I K N U X b d  < = > E F I J N U W b d  ; = > E F I J O W X b d 123;GO56789:>@q-89?VZ^aqu]`25RTrt  ,0<U_`abce}4Ekt$8  ( / ` p ,,---.*00000ost~ #(,-ƨ&.GT`})7CDLN|}ª 0v{      8 ; ? @   $ ( i n FQ8Gpqsu'5EGst,8>?AB;=>EGIKNWXbdfmpu5G^_0A ",,;0679;D 3?GHQ\/78@17:;<>?H4;>CZ[04A4G4V4a0ajj0k7kcmdmgmkmOoPoQoooooooo.0GejmBE7;muv"#%&+07DK `cmdmgmkm7  ; < > A I M N P   > A   @ A G I K M   A E LPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0<@IPR`fw{ HPZ`T`np}:@ ^KP# KMP@\^_`k ,0<@ADnpu _`}MN8;JM0-h-p-q---ǤФ,-ƨΨڨ./0Ωϩکީ7@NPZ\`ê۪p ( 0 : 56H\]b`fgijh9joKoOoooo-0>@JNPLPZ^`'(-/:;uv      ' ( 0000.0?7@T`mnqrt  y ,`,,,,-0.1.<.=.@x0T_`  '(;<>?NP^47@$-KP{(0do{|7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I       @ f i    (0ZpNRvPwB )*1245:=EGIKNPQWX]dfmpuEPZ`m,0G<   679;GPZHP  78FPmp  7:;<>?HPZ;>[ #$o$p$u$$D%//0V4`4CDGFa:a@j_j`jjjnjjjjjjjjkFkPkZk[kbkckxk}kk@mzm@nnoooop֌ pkp}"#%&+%OP_a   * / ` e f j d1e1s{ '(-/0;A[_`a{24?AIJ &4YZ #)-/02568:BCEFuv{~`*.01WYZa @AV`jpstuyPp N O Q V X ` d f p q x y       ) * 1 2 3 5 6 8 : < = > C G I K N \ ] f u       ) * 1 2 4 5 : < D G I K N U X _ b f p q r     ) * 4 5 : < E F I J N U W ] ^ ` b f p        ; = D F I J O T X ` b f p z 34;@OPZ   *5678>CDHIMNRSWX\]ijmqstuzJPIJNPWXYZ^`[]` FHNPXYZ[\]^_qrstuvwxyz{|}    ' ( '-(---.-------------------00A000000001.1/101114MN ˧Чҧӧԧէڧ`wz  '(/fh !"#%'*;=oo#23PSUVdh%+:@ ^KP#'(-/0;A[_`a{24?AIJ &4YZ #)-/02568:BCEFuv{~`*.01WYZa @AV`jpstuyPp N O Q V X ` d f p q x y       ) * 1 2 3 5 6 8 : < = > C G I K N \ ] f u       ) * 1 2 4 5 : < D G I K N U X _ b f p q r     ) * 4 5 : < E F I J N U W ] ^ ` b f p        ; = D F I J O T X ` b f p z 34;@OPZ   *5678>CDHIMNRSWX\]ijmqstuzJPIJNPWXYZ^`[]` FHNPXYZ[\]^_qrstuvwxyz{|}    ' ( '-(---.-------------------00A000000001.1/101114MN ˧Чҧӧԧէڧ`wz  '(/fh !"#%'*;=oo#23PSUVdh%+:@ ^KP#""""""56OPop%p q t  """"""56OPop30:A[_`a{uvxz~01WYZ` jnKM.@\`kpd f p q       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f p q r    ) * : < E F I J N U W X [ ] ^ ` d f p    E F I J O T X _ d f p z ;@OPZ *56789:>HImqJPIJNPWXYZ^`[]`irmo5@T`mnqrt  y ,0<Fnpu _`}MPZkt8@JM~ FHNPXYZ[\]^_~  ? A T U q r  !!!! !!!!!!$!%!&!'!(!)!*!:!?@BCEF>P 035MPpuv!;?@A[e  '(;<>?NP^@u -KP{(0dp{|7@V`h  679<=?V`w   :              6 8 ; ? @ ` }        6 @ V ` s    I      ( 0 : @ f i n o  '(0QpGfv56@DHPtvw8>B )*1245:;EGIKNPQWX]dfmpuKPZ^bADEPZ,0:@G;   679;DPZ?GHP  78APZr  7:;<>?HPZ`fgij;>CP[ #$o$$D%//004@4V4`4CDGFa:ah9j@j_j`jjjpjjjjjjjjk7k@kDkPkZkckxk}kk@mmmpmzm@nnoKoOoooooooooop֌ #23PSUVdhpkp}.0Gejms{BEUV  :;?@EFGJQR56OPop7;muv%+"#%&+0n-0>@JNOLPZ !#$%'()3489:;<BC56OPop%+0n-7>NODKL !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~:@ ^KP#op+00!0*080;04MNnpoop֌ p:@ ^KP# &7PSUVX[\cdhjrs !#234567XYV` U V Q R u v D E b d Z [ b d D E b d 9:T U !!++h,m,op|~˧ΧڧݧϩЩ`d.0@j_j`jjjOP47PYZ!)-/03478:@FOPXYc`a@KS U   kt,/0;<NOkxy? A !!.!/!!!$%()`,h,w,|,,,..!0001060;0=022MN"0hi>P 0EGst.0GP')^es{BEW0:A[_`a{24?AIJ &4YZ #)-/02568:BCEF{~`*.01WYZa @AV`jpstuyPp N O Q V X ` d f p q x y       ) * 1 2 3 5 6 8 : < = > C G I K N \ ] f u       ) * 1 2 4 5 : < D G I K N U X _ b f p q r     ) * 4 5 : < E F I J N U W ] ^ ` b f p        ; = D F I J O T X ` b f p z 34;@OPZ *5678>CDHIMNRSWX\]ijmqstuzJPIJNPWXYZ^`[]` FHNPXYZ[\]^_qrstuvwxyz{|}'-(---.-------------------00A00000000001.1/101114MN ˧Чҧӧԧէڧ`wz  '(/fh !"#%'*;=oo#23PSUVdh%+:@ ^KP#wx|}ctvx`*.@AnpN O Q S x y  4 5 X Z     ; = _ ` _airV W X _ '!(!2!3!N!P!!!m,w,~,,-&--.*.0.1.3.5.6.9.:.00.000.1/112*,@op|"pq`}0[df@uooF  '(-/0;A[_`a{Z` jn0?^_d f p q v w p q r x w O P X _ p z ?@OPZ\   *56789:>JP`ir}mo57 @ADF NPZkt;@~     $ ( * 0 3 5 6 8 < = > A G J T U W X _ !!! !!!!!! !#!$!%!&!'!(!)!*!:!;!A!E!J!N!O!P!!!!,"."/"1")#+#*$@$K$$ * *t*w***t+v+++,,,,-p-q-.^......./0000!000107080=0@0111111H2P222MNǤ pt~ "(,0:txΨШ.0_`Ωީ\`wzު[\jl>PEG47@u $opW`w     ? @       @ I P Y }        9 @ X ` x        n o   `'QZGNRf@Dtv8>KPZ\]^AD`m:@;<DG?G AFZmprCP p$u$//04@4njpjjj7k@kDkFk[kbkmmpmnnooP')^jmBEFW`y7;muvOP^`q>,0 /0Pjm`fw{ HPZ`T`np}24?A@BCEtuz{~uyX ` 3 4 6 7 Y \ ^ _ \ ^ 34  CDMNRSWX\]ijstuwxy,/0;<NOkxyqrstuvwxyz{|}~     $ ' / 0 3 5 6 8 < = > ? G J W X _ ` p r t !!!! !!!!!! !#!$!%!&!'!(!)!*!.!/!2!3!:!;!A!E!J!P!!!!,"."/"1"`$$ * *t*w***|,~,o-p-....//00607080;000000111d1e111122 2H2P2224pq\`ij !"#%'*np78=>?@BCEF>P0EGSTghlpstuv^eUV  :;?@EFGJQR0n !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~ /0Pjm<@IPR  xz01WYKM.0?@\^_`kp       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x    ) * : < E F I J N U W X [ ] ^ ` d f p w    E F I J P T d f ;?\HImqIJNPWXYZ^`[]}7@T`mnqrt y ,0<@ADnpu_`}MN8;JM FHNPXYZ[\]^_~ e f r t !!!*$@$K$`$t+v+++,,&-'-(---.-0-h-o-q--------------------^.....///@0A00011011111112 2ǤФ,@ΧЧҧӧԧէݧ-0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0lpnp78=>?@BCEF STghlpuv  '(;<>?NP^47$-KP{(0do{|7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : @ f i    `(0ZpNRv56HPwB )*1245:;EGIKNPQWX]dfmpu\]bEPZ`m,0G<   679;GPZHP   78FPmp  7:;<>?HPZ`fgij;>[#$o$p$u$$D%//0V4`4CDGFa:ah9j@j_j`jjjnjjjjjjjjkFkPkZk[kbkckxk}kk@mzm@nnoKoOoooooooop֌ #23PSUVdhpkp}.0GP')FW`yUV  :;?@EFGJQR%+"#%&+0n-0>@JNP  7@T`mnqrt y ,0<@ADnpu_`}LP}8;JM FHNPXYZ[\]^_~ e f r t !!!'$@$K$`$t+v++++++,/,0,_,`,,,&-'-(---.-0-h-o-q--------------------O.....////0@0A0001101111111112 223MMǤФ,@,0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0fpnp78=>?@BCEF@P STghlpuv  '(;<>?NP^47$-KP{(0dop7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : `(0ZNRp56GPw? )*1245:;EGIKNPQWX]dfmpuZ[\]_EPZ`m,0@<HP  78FPmp  7:;<>?HPZ`fgij #$o$p$u$$D%0/4DGFh9j@j_j`jjjnjpjjjjjkFkPkZk[kbkckxk}kk@nnoEoPooooooppkp}')FW`yUV  :;?@EFGJQR"#%&+KPZ^`q !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0 lp<@IPR`ft HPZ` ?@qswz{|`nצ5@   &xz01WY`aKM.0?@\^_`k       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N V X \ ^ _ d f x      ) * : = E F I J N U W X [ ` d f p x      E F I J P T d f ;?\HImqIJNPWXYZ^`[]}  7@T`mnqrt x ,0<@ADnpu_`}LP}8;JM FHNPXYZ[\]^_~ e f r t !!!'$@$K$`$t+v++++++++++,/,0,_,`,,,&-'-(---.-0-h-o-q--------------------J.....////0@0A00011/1111111112 223MMǤФ,@,0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0fpnp78=>?@BCEF@P STghlpuv  '(;<>?NP^47$-KP{(0dop7@V`h  679<=?VW  : ? @              4 8 ; ? H P Y `       6 9 V X s x       I       `NRp56DPw? )*1245:<EGIKNPQWX]dfmpuZ[\]^EPZ`m,0@HP  78FPmp  7:;<>?HPZ #$o$p$u$$D%0/4DGFh9j@j_j`jjjnjpjjjjjkFkPkZk[kbkckxk}kkoEoPooooooppkp}')FW`rUV  :;?@EFGJQR"#%&+KPZ^` !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0 /0lp<@IPR`ft HPZ` ?@MPlצ5@   @PF`btvz{~ PQ]^1WY`a   !;@S`np   : < N P U X q       ) * 1 2 4 5 7 8 : < = > C G I K N Y ] ^ _ f u       ) * 1 2 4 6 : < D G I K N V X \ ^ _ b f q       ) * 4 5 : > E F I J N U W ` b f p       ) * : > D F I J N W X ` b f p ;?\Z_ FHNPXYZ[\]^_~ / 0 G j q t !9!S!!!!""###{#$%$@$K$`$$%%%%&&&p&''' ' '(')'L'M'N'O'S'V'W'X'_'a'h'v''''''080?0@0A0000001-11111122 2D2`2|22222223w3{3333N.78=>?@BCEF@P $0EISTghlpstuv_a/0//////11KA[a{puvxz~01WYZ` Knpq0M$%()@Y`kp : = > P Q X b q     ) * 1 2 4 5 7 8 : Y ] ^ _ r u     ) * 1 2 4 5 : = > \ ^ _ b q r     ) * : = > X [ ] ^ ` b     ; = > N O T W _ b z 124@G@HIm+?@PVZ^abegnquIJNPWXYZ^`[mo2@R`mnq yPnpu U4EM$MPZ~ FHNPXYZ[\]^_~q r  !!!! !!!!!!$!%!&!'!(!)!*!:!?@BCEF>Ppuv!;A[f  '(;<>?NP^@u -KPv(0dp{|7@V`h  679<=?V`w   :            6 ` }        6 @ V ` s    I      $ J f o  '(0Fp8qsuv'DEGHPsvw,?A )*1245:=>PQ]b5GK_b0DE@G,   0?@AB 3:;PQ\  /@Ar  1FG`fgij4 #$o$$D%//004A4G4`4CDGFaah9j@j_jpjjjjk0k@kDkckxk}kk@mmm@nnoKoPoQooooooop֌ #23PSUVdhpkp}UV  :;?@EFGJQR  7@T`mnqrt y ,0<@ADnpu_`}LP}8;JM FHNPXYZ[\]^_~ e f r t !!!'$@$K$`$t+v+++/,0,_,`,,,&-'-(---.-0-h-o-q--------------------S.....////0@0A00011011111112 2ǤФ,@§˧-0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0lpnp78=>?@BCEF@P STghlpuv  '(;<>?NP^47$-KP{(0dop7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : `(0ZNRp56HPw? )*1245:;EGIKNPQWX]dfmpu\]bEPZ`m,0@<   679;GPZHP  78FPmp  7:;<>?HPZ`fgij#$o$p$u$$D%0/40494DGFh9j@j_j`jjjnjpjjjjjkFkPkZk[kbkckxk}kk@nnoKoOoooooooop֌ PSdhpkp}')FW`yUV  :;?@EFGJQR"#%&+-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0<@IPR`ft HPZ`yzT`npux{ަ5@ K  Hxz01WYKM.0?@\^_`k       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N V X \ ^ _ d f x    ) * : = E F I J N U W X [ ` d f p w      E F I J P T d f ;?\HImqIJNPWXYZ^`[]}  7@T`mnqrt y ,0<@ADnpu_`}LP}8;JM FHNPXYZ[\]^_~ e f r t !!!'$@$K$`$t+v+++/,0,_,`,,,&-'-(---.-0-h-o-q--------------------P.....////0@0A0001101111111112 2MMǤФ,@§ǧ,0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0hpnp78=>?@BCEF@P STghlpuv  '(;<>?NP^47$-KP{(0dop7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : `(0ZNRp56GPw? )*1245:;EGIKNPQWX]dfmpuZ[\]`EPZ`m,0@<HP  78FPmp  7:;<>?HPZ`fgij#$o$p$u$$D%0/40494DGFh9j@j_j`jjjnjpjjjjjkFkPkZk[kbkckxk}kk@nnoKoOoooooopPSdhpkp}')FW`yUV  :;?@EFGJQR"#%&+-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0 mp<@IPR`ft HPZ`  rswzT`nptx{צ5@   Jxz01WYKM.0?@\^_`k       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N V X \ ^ _ d f x    ) * : = E F I J N U W X [ ` d f p w      E F I J P T d f ;?\HImqIJNPWXYZ^`[]}  7@T`mnqrt y ,0<@ADnpu_`}LP}8;JM FHNPXYZ[\]^_~ e f r t !!!'$@$K$`$t+v+++/,0,_,`,,,&-'-(---.-0-h-o-q--------------------P.....////0@0A0001101111111112 223MMǤФ,@§ǧ,0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0hpnp78=>?@BCEF@P STghlpuv  '(;<>?NP^47$-KP{(0dop7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : `(0ZNRp56GPw? )*1245:;EGIKNPQWX]dfmpuZ[\]`EPZ`m,0@<HP  78FPmp  7:;<>?HPZ`fgij#$o$p$u$$D%0/40494DGFh9j@j_j`jjjnjpjjjjjkFkPkZk[kbkckxk}kk@nnoKoOoooooopPSdhpkp}')FW`yUV  :;?@EFGJQR"#%&+-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0 mp<@IPR`ft HPZ`  rswzT`nptx{צ5@   8xz01WYKM.0?@\^_`k       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N V X \ ^ _ d f x    ) * : = E F I J N U W X [ ` d f p x      E F I J P T d f ;?\HImqIJNPWXYZ^`[]}ǤФ,@˧Чҧӧԧէڧ-0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0lpnp78=>?@BCEF STghlpuv  '(;<>?NP^47$-KP{(0do{|7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : `(0ZpNRv56HPwB )*1245:;EGIKNPQWX]dfmpu\]bEPZ`m,0G<   679;GPZHP   78FPmp  7:;<>?HPZ`fgij;>Z#$o$p$u$$D%//0V4DGFh9j@j_j`jjjnjjjjjjjjkFkPkZk[kbkckxk}kk@nnoKoOoooooooop֌ #23PSUVdhpkp}.0GP')FW`yUV  :;?@EFGJQR%+"#%&+0n-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0<@IPR`fw{ HPZ`T`np}:@ ^KP#  xz01WYKM.0?@\^_`kp       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x    ) * : < E F I J N U W X [ ] ^ ` d f p w    E F I J P T d f ;?\HImqIJNPWXYZ^`[]}7@T`mnqrt y ,0<@ADnpu_`}MP8;JM FHNPXYZ[\]^_~ e f r t !!!'$@$K$`$t+v+++,,&-'-(---.-0-h-o-q--------------------^.....////0@0A00011011111112 2ǤФ,@˧Чҧӧԧէڧ-0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0lpnp78=>?@BCEF STghlpuv  '(;<>?NP^47$-KP{(0do{|7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : `(0ZpNRv56HPwB )*1245:;EGIKNPQWX]dfmpu\]bEPZ`m,0G<   679;GPZHP   78FPmp  7:;<>?HPZ`fgij;>Z#$o$p$u$$D%//0V4DGFh9j@j_j`jjjnjjjjjjjjkFkPkZk[kbkckxk}kk@nnoKoOoooooooop֌ #23PSUVdhpkp}.0GP')FW`yUV  :;?@EFGJQR%+"#%&+0n-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0<@IPR`fw{ HPZ`T`np}:@ KP#  xz01WYKM.0?@\^_`kp       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x    ) * : < E F I J N U W X [ ] ^ ` d f p w    E F I J P T d f ;?\HImqIJNPWXYZ^`[]}7@T`mnqrt y ,0<@ADnpu_`}MP8;JM FHNPXYZ[\]^_~ e f r t !!!'$@$K$`$t+v+++,,&-'-(---.-0-h-o-q--------------------^.....////0@0A00011011111112 2ǤФ,@˧Чҧӧԧէڧ-0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0lpnp78=>?@BCEF STghlpuv  '(;<>?NP^47$-KP{(0do{|7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : `(0ZpNRv56HPw? )*1245:;EGIKNPQWX]dfmpu\]bEPZ`m,0G<   679;GPZHP  78FPmp  7:;<>?HPZ`fgij#$o$p$u$$D%//0/40494DGFh9j@j_j`jjjnjjjjjjjjkFkPkZk[kbkckxk}kk@nnoKoOoooooooop֌ #PSdhpkp}.0GP')FW`yUV  :;?@EFGJQR"#%&+-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0<@IPR`ft HPZ`T`npux}9@ K  \xz01WYKM.0?@\^_`k       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x    ) * : = E F I J N U W X [ ` d f p w    E F I J P T d f ;?\HImqIJNPWXYZ^`[]}  :;?@EFGJQRצ   "4PO`ctvz{~1WY`a   !;@V`np-0K   : < N P U X q       ) * 1 2 4 5 7 8 : < = > C G I K N Y ] ^ _ f u       ) * 1 2 4 6 : < D G I K N V X \ ^ _ b f q       ) * 4 5 : > E F I J N U W ` b f p       ) * : > D F I J N W X ` b f p ;?\HIkq"#()+,36:@ZZ_GHIJNPWXYZ^` GH[a}w x FHNPXYZ[\]^_~ G H N j q t !;!S!!!!""#|#}##$'$@$K$`$$%%%%&&&r&''' ' '(')'L'M'N'O'S'V'W'X'_'a'h'v''''''()....////0;0>0@0A0000001-11111122 2D2`2|22222223w3{33334MN¤ŤƤǤ.78=>?@BCEF@P $0EISTghlpstuv_a pPF`btvz{~ PQ]^1WY`a   !;@S`np   : < N P U X q       ) * 1 2 4 5 7 8 : < = > C G I K N Y ] ^ _ f u       ) * 1 2 4 6 : < D G I K N V X \ ^ _ b f q       ) * 4 5 : > E F I J N U W ` b f p       ) * : > D F I J N W X ` b f p ;?\HIjqZ_ FHNPXYZ[\]^_~ / 0 G j q t !9!S!!!!""###{#$%$@$K$`$$%%%%&&&p&''' ' '(')'L'M'N'O'S'V'W'X'_'a'h'v''''''080?0@0A0000001-11111122 2D2`2|22222223w3{3333N.78=>?@BCEF@P $0EISTghlpstuv_a pPF`btvz{~ PQ]^1WY`a   !;@S`np   : < N P U X q       ) * 1 2 4 5 7 8 : < = > C G I K N Y ] ^ _ f u       ) * 1 2 4 6 : < D G I K N V X \ ^ _ b f q       ) * 4 5 : > E F I J N U W ` b f p       ) * : > D F I J N W X ` b f p ;?\HIjqZ_ FHNPXYZ[\]^_~ / 0 G j q t !9!S!!!!""###{#$%$@$K$`$$%%%%&&&p&''' ' '(')'L'M'N'O'S'V'W'X'_'a'h'v''''''080?0@0A0000001-11111122 2D2`2|22222223w3{3333N.78=>?@BCEF@P $0EISTghlpstuv_a xz01WYKM.0?@\^_`kp       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x    ) * : < E F I J N U W X [ ] ^ ` d f p w    E F I J P T d f ;?\HImqIJNPWXYZ^`[]}7@T`mnqrt y ,0<@ADnpu_`}MN8;JM FHNPXYZ[\]^_~ e f r t !!!*$@$K$`$t+v+++,,&-'-(---.-0-h-o-q--------------------^.....///@0A00011011111112 2ǤФ,@ΧЧҧӧԧէݧ-0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0lpnp78=>?@BCEF STghlpuv  '(;<>?NP^47$-KP{(0do{|7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : @ f i    `(0ZpNRv56HPwB )*1245:;EGIKNPQWX]dfmpu\]bEPZ`m,0G<   679;GPZHP   78FPmp  7:;<>?HPZ`fgij;>[#$o$p$u$$D%//0V4`4CDGFa:ah9j@j_j`jjjnjjjjjjjjkFkPkZk[kbkckxk}kk@mzm@nnoKoOoooooooop֌ #23PSUVdhpkp}.0GP')FW`yUV  :;?@EFGJQR%+"#%&+0n-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0<@IPR`fw{ HPZ`T`np}:@ ^KP#  xz01WYKM.0?@\^_`kp       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x    ) * : < E F I J N U W X [ ] ^ ` d f p w    E F I J P T d f ;?\HImqIJNPWXYZ^`[]}7@T`mnqrt y ,0<@ADnpu_`}MP8;JM FHNPXYZ[\]^_~ e f r t !!!'$@$K$`$t+v+++,,&-'-(---.-0-h-o-q--------------------^.....///@0A00011011111112 21WY`a  !;@_`KMn : < N P U X q {       ) * 1 2 4 5 7 8 : < = > C G I K N Y ] ^ _ f u       ) * 1 2 4 5 : < D G I K N V X \ ^ _ b f r       ) * 4 5 : > E F I J N U W ` b f p       ) * : > D F I J N W X ` b f p ;?\HIkq"#()+,36:@ZZ_IJNPWXYZ^`[_}w  7@T`mnqrt x ,0<@ADnpu LP} FHNPXYZ[\]^_~ d j r t !O!S!!!#$'$@$K$`$&&&''' ' '(')'L'M'N'O'S'V'W'X'_'a'''''''''''+ +$+,/,0,_,`,m,t,x,,,,&-0-f-o-p-------------------........////0@0A00011-1111111112 2D2P223MMǤ ",@x.0kp78=>?@BCEF@P $0STghlpuv  '(;<>?NP^47 $0K  679<=?@             4 8 ; ? H P Y  o#$c$p$t$'*FW`rUV  :;?@EFGJQRצ  \BPptvz{~1WY`a  !;@_`KMn : < N P U X q } ~       ) * 1 2 4 5 7 8 : < = > C G I K N Y ] ^ _ f u       ) * 1 2 4 5 : < D G I K N V X \ ^ _ b f r       ) * 4 5 : > E F I J N U W ` b f p       ) * : > D F I J N W X ` b f p ;?\HIkq"#()+,36:@ZZ_IJNPWXYZ^`[_}w  7@T`mnqrt x ,0<@ADnpu  FHNPXYZ[\]^_~ d j r t !M!S!!!#$'$@$K$`$&&&''' ' '(')'L'M'N'O'S'V'W'X'_'a'''''''''''+,/,0,_,,,,&-0-f-o-p-------------------........////0@0A00011-1111111112 2D2P223MMǤ,.0kp78=>?@BCEF@P $0STghlpuv  '(;<>?NP^47 $0K  679<=?@         4 8 ; ? H P Y '*FWUV  :;?@EFGJQRצ  87PX]ptvz{~1WY`a  !;@Y`KMP : < N P U X q       ) * 1 2 4 5 7 8 : < = > C G I K N Y ] ^ _ f u       ) * 1 2 4 5 : < D G I K N V X \ ^ _ b f r       ) * 4 5 : > E F I J N U W ` b f p       ) * : > D F I J N W X ` b f p ;?\HIkq"#()+,36:@ZZ_GHIJNPWXYZ^` GH[a}w  7@T`mnqrt x ,0<@ADnpul FHNPXYZ[\]^_~ U W X _ d j r t !?@BCEF@P $0STghlpuv  '(;<>?NP^47@ $0K  679<=?@'*WUV  :;?@EFGJQRצ  !"4PP`ptvz{~1WY`a   !;@V`-0K   : < N P U X q       ) * 1 2 4 5 7 8 : < = > C G I K N Y ] ^ _ f u       ) * 1 2 4 6 : < D G I K N V X \ ^ _ b f q       ) * 4 5 : > E F I J N U W ` b f p       ) * : > D F I J N W X ` b f p ;?\HIkq"#()+,36:@ZZ_GHIJNPWXYZ^` GH[a}w  7@T`mnqrt x FHNPXYZ[\]^_~ S W X _ d j r t !;!=!L!S!!!#$'$@$K$`$$%&&&&~&&&''' ' '(')'L'M'N'O'S'V'W'X'_'a'''''''''+....////0@0A00011-11111112 2D2Q2|222223w3{33334MNǤ.0k78=>?@BCEF@P $0GISTghlpuv $0K&(N'*UV  :;?@EFGJQRצ  $ "4PO`ctvz{~1WY`a   !;@V`np-0K   : < N P U X q       ) * 1 2 4 5 7 8 : < = > C G I K N Y ] ^ _ f u       ) * 1 2 4 6 : < D G I K N V X \ ^ _ b f q       ) * 4 5 : > E F I J N U W ` b f p       ) * : > D F I J N W X ` b f p ;?\HIkq"#()+,36:@ZZ_GHIJNPWXYZ^` GH[a}w x FHNPXYZ[\]^_~ G H N j q t !;!S!!!!""#|#}##$'$@$K$`$$%%%%&&&r&''' ' '(')'L'M'N'O'S'V'W'X'_'a'h'v''''''()....////0;0>0@0A0000001-11111122 2D2`2|22222223w3{33334MN¤ŤƤǤ.78=>?@BCEF@P $0EISTghlpstuv_a $0K&(N'*UVEPtצ5@  Jxz(1WY`aKM.0?@\^_ x y       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N V X \ ^ _ d f x       ) * 4 5 : = E F I J N U W X Z ` d f p x       ; = E F I J O W X ` d f v y ;?\HImqIJNPWXYZ^`[]}  7@T`mnqrt x ,0<@ADnpu_`}LP}8;JM FHNPXYZ[\]^_~ e j r t !!!#$'$@$K$`$''M+P+Z+,/,0,_,`,,,&-'-(---.-0-h-o-q--------------------<.....////0@0A00011.1111111112 223MM͟ǤФ,@,0:@xŨΨڨT_}Ωϩکީ7@NPZ\|ê۪  '(/np78=>?@BCEF@P '0STghlpuv  '(;<>?NP^47 $0K  679<=?VW`   : ? @              4 8 ; ? H P Y `   6 9 V X s x   I `NRp56D o#$c$p$t$0/4h9joEoPoooo')FW`rUV  :;?@EFGJQR !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0 /0lp;@IPR!067}?@AB>@DPhAEPtצ5@  xz(1WY`aKM.0?@\^_ x y       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N V X \ ^ _ d f x       ) * 4 5 : = E F I J N U W X Z ` d f p x       ; = E F I J O W X ` d f v y ;?\HImqIJNPWXYZ^`[]}  7@T`mnqrt x ,0<@ADnpu_`}LP}8;JM FHNPXYZ[\]^_~ e j r t !!!#$'$@$K$`$''''''M+P+Z+,/,0,_,`,,,&-0-f-o-q--------------------2.....////0@0A00011.1111111112 223MM̟ǤФ,@t|,0:@xŨΨڨT_}Ωϩکީ7@NPZ\|ê۪  '(/.0np78=>?@BCEF@P '0STghlpuv  '(;<>?NP^47 $0K  679<=?VW`   : ? @          4 8 ; ? H P Y `   6 9 V X s x   I `NRp o#$c$p$t$0/4h9j')FW`rUV  :;?@EFGJQR,0 /0jp;@IPR!067}?@AB>Ph &(,-.045AEPtצ5@  xz&1WY`a !_`KM.0? : < O P V X s y       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N V X \ ^ _ d f r       ) * 4 5 : = E F I J N U W X Z ` d f p x       ) * : = E F I J N W X ` d f v y ;?\HImqIJNPWXYZ^`[_}  7@T`mnqrt x ,0<@ADnpu_`}LP}8;JM FHNPXYZ[\]^_~ e j r t !!!#$'$@$K$`$&&&&&&'''' ' '(')'L'M'N'O'S'V'_'a'''''''''''M+P+Z+,/,0,_,`,,,&-0-f-o-p--------------------2.....////0@0A00011.1111111112 223MM̟ǤФ,@`bt|,0:@xŨΨڨT_}Ωϩکީ7@NPZ\|ê۪.0np78=>?@BCEF@P '0STghlpuv  '(;<>?NP^47 $0K  679<=?VW`   : ? @          4 8 ; ? H P Y `   6 9 V X s x   I ` o#$c$p$t$0/4')FW`rUV  :;?@EFGJQR,0 /12=>?@BCFGJOWX_`yz{}2@Iצ5  xz$1WY`a !_`KM : < N P U X s {       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N V X \ ^ _ d f r       ) * 4 5 : = E F I J N U W X Z ` d f p x       ) * : = E F I J N W X ` d f v y ;?\HImqZ_IJNPWXYZ^`[_}w  7@T`mnqrt x ,0<@ADnpu LP}8;JM FHNPXYZ[\]^_~ e j r t !P!S!!!#$'$@$K$`$&&&&&''' ' '(')'L'M'N'O'S'V'W'X'_'a'''''''''''M+P+U+,/,0,_,`,p,q,~,,,,&-0-f-o-p--------------------1.....////0@0A00011.1111111112 2D2P223MMğǤ,@`bt|,@xŨΨڨT_`7@NPZ\`.0kp78=>?@BCEF@P '0STghlpuv  '(;<>?NP^47 $0K  679<=?@   : ? @          4 8 ; ? H P Y  o#$c$p$t$')FW`rUV  :;?@EFGJQR,0צ  pptvz'$@$K$`$t+v++++++++++,/,0,_,`,,,&-'-(---.-0-h-o-q--------------------C.....////0@0A00011.1111111112 223MM֟ǤФ,@,0:@xŨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0fpnp78=>?@BCEF@P STghlpuv  '(;<>?NP^47$0KP{(0dop7@V`h  679<=?VW  : ? @              4 8 ; ? H P Y `       6 9 V X s x       I       `NRp56DPw> )*1245:<EGIKNPQWX]dfmpuEPZ,0@ #$o$p$u$$D%0/4DGFh9j@j_j`jjjnjpjjjjjkFkPkZk[kbkckxk}kkoEoPooookp}')FW`rUV  :;?@EFGJQR !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0 /0lp;@IPRz{t HPZ`צ5@   xz01WY`aKM.0?@\^_       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N V X \ ^ _ d f x      ) * : = E F I J N U W X Z ` d f p x       ; = E F I J O W X ` d f v y ;?\HImqIJNPWXYZ^`[]}  7@T`mnqrt x ,0<@ADnpu_`}LP}8;JM FHNPXYZ[\]^_~ e f r t !!!#$'$@$K$`$t+v++++++++,/,0,_,`,,,&-'-(---.-0-h-o-q--------------------C.....////0@0A00011.1111111112 223MM͟ǤФ,@,0:@xŨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0`dfnp78=>?@BCEF@P .0STghlpuv  '(;<>?NP^47$0KP{(0dop7@V`h  679<=?VW   : ? @              4 8 ; ? H P Y `       6 9 V X s x       I `NRp56DPw> )*1245:<EGIKNWX]dfmpuEPZ #$o$p$u$0/4h9j@j_j`jjjnjpjjjjjkFkPkZk[kbkckxk}kkoEoPooookp}')FW`rUV  :;?@EFGJQR !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0 /0lp;@IPR-0~KPz{CEt HPZ`צ5@  Jxz(1WY`aKM.0?@\^_ x y       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N V X \ ^ _ d f x       ) * 4 5 : = E F I J N U W X Z ` d f p x       ; = E F I J O W X ` d f v y ;?\HImqIJNPWXYZ^`[]}  7@T`mnqrt x ,0<@ADnpu_`}LP}8;JM FHNPXYZ[\]^_~ e f r t !!!#$'$@$K$`$''M+P+Z+,/,0,_,`,,,&-'-(---.-0-h-o-q--------------------<.....////0@0A00011.1111111112 223MM͟ǤФ,@,0:@xŨΨڨT_}Ωϩکީ7@NPZ\|ê۪  '(/np78=>?@BCEF@P '0STghlpuv  '(;<>?NP^47 $0K  679<=?VW`   : ? @              4 8 ; ? H P Y `   6 9 V X s x   I `NRp56D o#$c$p$t$0/4h9joEoPoooo')FW`rUV  :;?@EFGJQR !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0 /0lp;@IPR!067}?@AB>@DPhAEPtצ5@  Jxz(1WY`aKM.0?@\^_ x y       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N V X \ ^ _ d f x       ) * 4 5 : = E F I J N U W X Z ` d f p x       ; = E F I J O W X ` d f v y ;?\HImqIJNPWXYZ^`[]}  7@T`mnqrt x ,0<@ADnpu_`}LP}8;JM FHNPXYZ[\]^_~ e j r t !!!#$'$@$K$`$''M+P+Z+,/,0,_,`,,,&-'-(---.-0-h-o-q--------------------<.....////0@0A00011.1111111112 223MM͟ǤФ,@,0:@xŨΨڨT_}Ωϩکީ7@NPZ\|ê۪  '(/np78=>?@BCEF@P '0STghlpuv  '(;<>?NP^47 $0K  679<=?VW`   : ? @              4 8 ; ? H P Y `   6 9 V X s x   I `NRp56D o#$c$p$t$0/4h9joEoPoooo')FW`rUV  :;?@EFGJQR !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0 /0lp;@IPR!067}?@AB>@DPhA    < = > A F I J M U W b d  ; = > ? A E W X b d 124;GO56789:q-1289;=?XZ^aqu]`25RTrt  #')239<VWX_`abcems}4>BEkt,468  ,,---.*00000ost~ %',-Ĩƨ&.GRST)/1357CDLM|}ª 0v{      8 ; ? @   $ ( i n FQ8Gpqsu',-5st/248>?AB;=>?@AMNWXfmpu8@BEFG^_3;=>?A "&',/89;01;?CD 39;?GHQWY\078>?@17:;<>?FGH6;@CZ[@4A4G4V4a*a-a0ajj0k7kOoPooooooo.0Gejms{BE7;muv"#%&+07DK 5 : X ` x  ) * 1 2 4 5 : \ ^ _ ` q r  ) * : X [  ; 0p@` 101p jk @ 0DFP`xz01WYKM.0?@\^_`kp       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x    ) * : < E F I J N U W X [ ] ^ ` d f p w    E F I J P T d f ;?\HImqIJNPWXYZ^`[]}7@T`mnqrt y ,0<@ADnpu_`}MN8;JM FHNPXYZ[\]^_~ e f r t !!!*$@$K$`$t+v+++,,&-'-(---.-0-h-o-q--------------------^.....///@0A00011011111112 2ǤФ,@ΧЧҧӧԧէݧ-0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0lpnp78=>?@BCEF STghlpuv  '(;<>?NP^47$-KP{(0do{|7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : @ f i    `(0ZpNRv56HPwB )*1245:;EGIKNPQWX]dfmpu\]bEPZ`m,0G<   679;GPZHP   78FPmp  7:;<>?HPZ`fgij;>[#$o$p$u$$D%//0V4`4CDGFa:ah9j@j_j`jjjnjjjjjjjjkFkPkZk[kbkckxk}kk@mzm@nnoKoOoooooooop֌ #23PSUVdhpkp}.0GP')FW`yUV  :;?@EFGJQR%+"#%&+0n-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0<@IPR`fw{ HPZ`T`np}:@ ^KP#  xz01WY`aKM.0?@\^_       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N V X \ ^ _ d f x      ) * : = E F I J N U W X [ ` d f p x       ; = E F I J P T d f ;?\HImqIJNPWXYZ^`[]}  7@T`mnqrt x ,0<@ADnpu_`}LP}8;JM FHNPXYZ[\]^_~ e f r t !!!#$'$@$K$`$t+v++++++++++,/,0,_,`,,,&-'-(---.-0-h-o-q--------------------E.....////0@0A00011.1111111112 223MM֟ǤФ,@,0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0fpnp78=>?@BCEF@P STghlpuv  '(;<>?NP^47$0KP{(0dop7@V`h  679<=?VW  : ? @              4 8 ; ? H P Y `       6 9 V X s x       I       `NRp56DPw? )*1245:<EGIKNPQWX]dfmpuZ[\]^EPZ`m,0@  78FPmp #$o$p$u$$D%0/4DGFh9j@j_j`jjjnjpjjjjjkFkPkZk[kbkckxk}kkoEoPoooooopkp}')FW`rUV  :;?@EFGJQR"#%&+KPZ^` !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0 /0lp<@IPRt HPZ` (013?@LP_צ5@   xz01WY`aKM.0?@\^_       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N V X \ ^ _ d f x      ) * : = E F I J N U W X [ ` d f p x       ; = E F I J O W X _ d f v y ;?\HImqIJNPWXYZ^`[]}  7@T`mnqrt x ,0<@ADnpu_`}LP}8;JM FHNPXYZ[\]^_~ e f r t !!!#$  `b),WX[_$&giqr ?@:; N O ABFG-. r t KLNO  %%tw?@EF!u v ;?^aUW37 @ABC;?GH*a-a.a/aLMZ[023:XZ-4OS@N۫  ] ^ T W z A : X ` x  ) * 1 2 4 5 7 8 : Y ] ^ _  ) * 1 2 4 5 : \ ^ _ ` q r  ) * : X [  ; /@HIm!?@PRZ^abegnqu #2CRcmnqPc MSU4EM$MP #@^bfiqrs "0G)`pqtz{~ΫЫѫҫ۫       6 8uv'DEGHUs,?@)*1245:50@G , 0 3\/r 1l4aaCmcmQ S Q R  >?fmpuRf}    p q         MN~6723tu46 stŨƨ  45^`CE_`=>78;=59<>@A-a.a@mBm%= > = > = > = > =>GH@A@0` p     @ W X %'CD24 L M  H I )*=><= H I stvz<=.0  : ; E I Q R U V   G I K M p r   ? @ U W    > A F H J N U V  ; = M O 1248GO9:rsz-/27:;qu23RSrs "'):;X[bceikls}4568BCklmt-467  &'Ũƨ&+JKOR)-./12CDLM|}ª    8 9 8<BGpqsu'*-.0145024568>?@Afmpu>@CE^_9;=>@A "$'(),38;=?@AB 59:;QRTW028>16:;<>?BCD68@AZ[a*a-a.ac  ; < > ? @ A I M O P   > ? @ A   > ? @ A   A E   > A W X 0124EF>?+-89;<VXbegn45#%),0239WXabcemn56DE$'*,#%'(ĨRT34MN{|}~EG,/56>@AEMNWXbd5678@BEF03;=>? ",-./8905=>@A9:WY/0>?FG46AB,a-a@mCmcmmm       : = > P Q S U X b d   < = > C G I K N Q R p r u v   < = > E G I K N U X b d  < = > E F I J N U W b d  ; = > E F I J O W X b d 0;@FGO56789:>@q+9:?VZ^abegnqu25RTrt ,0<U_a}4Ekt$8  #(,-ƨ&.GT)7CDLN{~ª      8 ; 8Gpqsu'345EGst,8>?AB;=>EGIKNWXbdfmpu5G^_0A,,;0679;>?D 3?Q\/78@17:;<>?EFH4;>BZ[a0a@mCmcmmm K L J M @BKM89g? @ N O ? @ G H F I ?@12UVns>@')46/145,-GI67&'-.5678>@*a,a ;<BC/< = A E M N R S V X b d < = A C M N Q R u v < = A E M N b d < = V W b d A E b d 8;5678qrtv/178=?XZ^a34STst"#239:;<VW[_iklm8;lm,-78%&,-ĨŨ+.GJKO-.2357    9 ; <B*,13st/0AB;=8>BCFG39?@$&()/39;CD  35;?RTY\27?@67BCDEGH8;.a0akk p P 0P0  Pp@jpj`oo  @nn`p  @` P @ ФPP@mmP ` `01 @ ` `  @`/0@00  @ @ a@a ` p0P,`,@  0004P`p0@ /0 $,-`PpK`pq0K$%().Y\  ; < = A I M N Q ` b d x   < = A C G I K N Q R p r u v    ) * 1 2 4 5 : < = > @ A E M N U X \ ^ _ ` b d q r     ) * : < = > A F I J N U W X [ b d   = > ? A E M N W X b d 124;GO56789:q-1289;=?XZ^aqu]`25RTrt  #')239<VWX_`abcems}4>BEkt,468  ,,---.*00000ost~ %',-Ĩƨ&.GRST)/1357CDLM|}ª 0v{      8 ; ? @   $ ( i n FQ8Gpqsu',-5st/248>?AB;=>?@AMNWXfmpu8@BEFG^_3;=>?A "&',/89;01;?CD 39;?GHQWY\078>?@17:;<>?FGH6;@CZ[@4A4G4V4a*a-a0ajj0k7kOoPooooooo.0Gejms{BE7;muv"#%&+07DK  M N M N M N M N pK`pq0K$%().Y\ : ; < = A I Q X b d   < = A C G I K N Q R p r u v   < = > @ A E U X b d  "&',/89;;=>?CD 39;?GHQWY\078>?@17:;<>?FGH6;@ABCZ[04A4G4V4a*a-a0ajj0k7kOoPooooo.0GgjsBE7;muv"#%&+07L pK`pq0K$%().Y\ : ; < = A I M N Q X b d   < = A C G I K N Q R p r u v   < = ? @ A E M N U W b d    < = > A F I J N U W b d  ; = A E M N b d 124;GO56789:q-1289;=?XZ^aqu]`24RTrt  #')239<VWX_`abcems}456;<=BCkt,468   * / ` e j p ,,---.*0.000ost~ %',-Ĩƨ&.GR)/1357CDLM|}ª 0v{      8 ; ? @   $ ( i n FQ8Gpqsu',-5st/24568>?AB;=@Afmpu8@BEFG^_3;=>?A "&',/89;;=>?CD 39;?GHQWY\078>?@17:;<>?FGH6;@ABCZ[04A4G4V4a*a-a0ajj0k7kOoPooooo.0GgjsBE7;muv"#%&+07DL "&'()*/3HIqtux()*+,-/0MNY\kmqrsuxz@AFHIJTUVYghikp                              " # 34TUtv rs       !&'()*/3@AHIKnpx()*+,-/NY\kmqrsuxzAFHIJTUV`abfhi y@r                         " # $ 034EQTptvD @A      MN&'IKxywx$%HIvxxz)*,- 79+,#$35\]mnpq}() 57'(13[\kmqr)* BCop&'"# FGgjC !"@AKnpqtu0M`kp                       ! # $ !"EFeg                                                      cdjkghbcefde`aijhiabfg ! DEjkNO !  CDGH            ! # $ ,/WYnprs|}./;=be$% AB`bOP =@uw%&*+/0 /1Y[z|-.()*,noyPW"$%&'(qtuvsup 9;]`Ωϩکީ`$-0PPp@0-- ppjj  P` P0P0p   ` b r x           ` b      ` b      _ b !+RV #@C`cMSΫЫѫҫqs@A `b   PQ     `fgijlaa: < > M N P U X b d > C G I K M > E G I K M U X b d > E F I J M U W b d > E F I J M W X b d 0:@FGHq~+6VZbcgiqu24RTrt ):;at5D&-#(ĨGO)3      8Fsu'3EG,4AB>EGIKMWXbd5B0=@A +,70679 Q\/78<17:;<>?@CD4;>Aa*acmkm cn^bfg"+PUM          89  EF>?899:>?ABBmCm7M N M N M N M N M N DEĨŨFG56MNBC?@9:?@HL78ceinuz+.{~ªpuªê) 5678;<{}67t u ^_343; = :;NO:;45z{,-STpq45+,=>45DEAB/a0akmmm-.0: P Q S U d f p r       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f t u v       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f p q r    ) * : < E F I J N U W X [ ] ^ ` d f p    E F I J O T X _ d f p z /0;@FGOPZ 456789:@HImqJKLNOP5@T`mnqrt ,0<Fnpu _`}MPZ8@JMP    t u %%(,-@tƨШڨ.0TЩک7@NPZ`pqwzê         6 8 ; ? I GRv56@DHPt8>B )*1245:;EGIKNWX^dfmpuHPZ^bAPZ,0<@G;   679;DPZ@EFGHP  78APmr  7:;<>?HPZ`fgij;>CP[a:a@mmmpmzmc0:f p f p f p f p f p PZ 4@JFPPZ@JШڨ ЩکPZ@ I fp6@PZPZ0<PZPmPZPZ0a:apmzm9< = < = < = < = 9:45788 ; st67;=FG:;CDBCZ[  9:`a? @ 34>?GHEFBC q r 78   ) * : = > X [ ] ^ ` b x     ; = > N P T W X b p y z OP *46789@HImLPIJNPWXYZ^`[`ab}2@R`mnq   y@A $MPZ~ FHNPXYZ[\]^_~  " $ 8 9 > D J V \ ] a e p r u } !!!!! ! !!!!!!!#!+!,!P!_!`!l!p!z!!!!!!!!!""""" " " """"""""""!"#"$"%"&"'"-"."/"4"8"<">"H"I"L"M"R"S"`"b"d"h"j"l"n"p"""""""""""""""# #####)#+###*$@$K$$%L%P%u%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&& & &&&&&& &9&<&@&A&B&C&`&b&c&f&g&k&l&n&o&p&&&&&&&&&&&&'''W'X'['a'b'e'h''''''))))))U+Z+t+v+++,,,,,-&-'-(---.-0-h-o-p-------------------..... ./.0.2.3.5.:.?.@.K.L.M.N.P.S.MNФ  *,@ost~ΧЧҧӧԧէݧ #(,089:@t &0G_`  '(/0lp)*P>@puv  '(;<>?NP^47$-KPv(0do{|7@V`h  679<=?VX  : ? @            6 @ I X Y `       6 @ V X s x       I      $ J f o    `(0FQZp'DEGHPstuvw,:;=>?A5GKOP]^_b0CE,;< 3:;@AFGPQ\  /@AZmr  1FG`fgij #$o$$D%//0X2^22222y3|3/4A4G4`4CDEEGFh9j@j_jpjjjjk0k:kDkEkFk[kbkckxk}kk@mnm@nnnnoKoPoQooo֌kp}P')ejmBEFW`yUV  :;?@EFGJQR7;muv%+0n-7>NPDKLq> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~ .0jp%2JPv|t HPZ` T+4EM8qsuv )*1245:`b   04  " ; < t u  !!!!!!#!+!,!P!_!`!l!p!z!!!!!!!!!""""" " " """"""""""!"#"$"%"&"'"-"."/"4"8"<">"H"I"L"M"R"S"`"b"d"h"j"l"n"p"""""""""""""##`$$%L%P%u%%%%%%%%%%%%%%%%%%%%%%%%%%%&& & &&&&&@&A&B&C&`&b&c&f&g&h&i&k&l&n&o&p&&&&&&&&&&&&&&&&&&&&&&&W'X'v''U+Z+H2P2 .0jpA[a{ !#&-/02XY^_cpQ S &,]bfkxy/ 0 q r  *!,!2!3!N!O!`!!`,,.."ΧЧҧӧԧէݧ./0[\efj!;A[%+0p `,,P  _`}KA[a{puvxz~01WYZ` Knpq0M$%()@Y`kp : = > P Q X b q     ) * 1 2 4 5 7 8 : Y ] ^ _ r u     ) * 1 2 4 5 : = > \ ^ _ b q r     ) * : = > X [ ] ^ ` b     ; = > N O T W _ b z 124@G@HIm+?@PVZ^abegnquIJNPWXYZ^`[mo2@R`mnq yPnpu U4EM$MPZ~ FHNPXYZ[\]^_~q r  !!!! !!!!!!$!%!&!'!(!)!*!.!/!:!?@BCEF>Ppuv!;A[f  '(;<>?NP^ -ABJPv(0dp{|7@V`h  679<=?V`w   :            6 ` }        6 @ V ` s    I      $ J f o  '(0Fp8qsuv'DEGHPsvw,?A )*1245:=>PQ]b5GK_b0DE@G,   0?@AB 3:;PQ\  /@Ar  1FG`fgij4 #$D%//004A4G4`4CDGFaah9j@j_jpjjjjk0k@kDkckxk}kk@mmm@nnoKoPoQooooooop֌ #23PSUVdhpkp}UV  :;?@EFGJQR56OPop%+0n-7>NODKL !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~:@ ^KP# f p 1.2.0:@mzm+Q S d f 06oo֌  0:B          6 8 ; ? I P Y I!0"0?0@0000011211111}2~22222223 3U3V3a3b3q3s344*4,4444444H9I9J9K9::::;;>>>>r?t?@ @@@AA^B_BCCCCCCCC 00000000;>[12//110-#$00000 000607080<0>0000112223X3EGa #UVdh0p !"`ntuKM$%().@\`abfgkp : ; < = A I M N Q X b d   < = A C G I K N Q R p r u v   < = ? @ A E M N U W b d    < = > A F I J N U W b d  ; = A E M N b d 124;GO56789:q-1289;=?XZ^aqu]`24RTrt  y #')239<VWX_`abcems}456;<=BCkt,468  * / ` e j p ,,---.*0.000ost~ %',-@sĨƨ&.GR)/1357CDLM|}ª 0v{      8 ; ? @                  ( i n 0EFUp8Gpqsu',-5st/24568>?AB;=@Afmpu8@BEFG^_3;=>?A !!""ij3%&  jk y z 0 8 W X !! ! !89jk()[\{|:;<=    E F } ~ # # # #)#*#h'i'j'k'l'm'n'o'p'q'r's't'u'''''''''''''))))))))))))))))))))))))))))..".#.$.%.&.'.(.).B.C.U.V.W.X.Y.Z.[.\.0 0 0 0 0 000000000000000?@56789:;<=>?@ABCDGHYZ[\]^ ;<[\_`bcX2[22222y3z3/4047484<4=4>4?4EE^`0:`jkmf p f p f p f p f p PZ *@JFP@JPZ *Шڨ 0 : @ J 6@PZPZ0:PZPZ`jjjjjPkZkpmzm@JPZ%< > G J 0000;0=000000000TVefooy| ,-./:<~ D E $ ' ""  ]\]akt}####&&&&&&&&& &9&<&h&i&&&&&&&&&&&&&&&&&&&&&&&&&&'' 'd'e'....///0000000 0*0005060;0=0@0B0C0D0E0F0G0H0I0J0c0d000000000000000000000000000000000001101111111122 2H2P2MNǤǩʩΩީ\]05EGIPQRXY_ghikl  ;<=>[\]^_fgqINRfEPp #pBDFQfy|}%2Jtvz{EHKt  &'0:<?wxT-.)*78=>?@BCEFP89TUpqĬŬ45PQlmܭݭ01LMhiخٮ,-HIdeԯկ ()DE`a|}аѰ $%@A\]xy̱ͱ !<=XYtuȲɲ89TUpqijų45PQlmܴݴ01LMhiصٵ,-HIdeԶն ()DE`a|}зѷ $%@A\]xy̸͸ !<=XYtuȹɹ89TUpqĺź45PQlmܻݻ01LMhiؼټ,-HIdeԽս ()DE`a|}оѾ $%@A\]xy̿Ϳ !<=XYtu89TUpq45PQlm01LMhi,-HIde ()DE`a|} $%@A\]xy !<=XYtu89TUpq45PQlm01LMhi,-HIde ()DE`a|} $%@A\]xy !<=XYtu89TUpq45PQlm01LMhi,-HIde ()DE`a|} $%@A\]xy !<=XYtu89TUpq45PQlm89TUpqĬŬ45PQlmܭݭ01LMhiخٮ,-HIdeԯկ ()DE`a|}аѰ $%@A\]xy̱ͱ !<=XYtuȲɲ89TUpqijų45PQlmܴݴ01LMhiصٵ,-HIdeԶն ()DE`a|}зѷ $%@A\]xy̸͸ !<=XYtuȹɹ89TUpqĺź45PQlmܻݻ01LMhiؼټ,-HIdeԽս ()DE`a|}оѾ $%@A\]xy̿Ϳ !<=XYtu89TUpq45PQlm01LMhi,-HIde ()DE`a|} $%@A\]xy !<=XYtu89TUpq45PQlm01LMhi,-HIde ()DE`a|} $%@A\]xy !<=XYtu89TUpq45PQlm01LMhi,-HIde ()DE`a|} $%@A\]xy !<=XYtu89TUpq45PQlm1OP\c       / 0 !"#$%&()*+,-/047494<4oo3!"?@   DFb'd',,,,../.S.U.vxVX qr  )*]^V.W.X.Y.Z.[.\.].z  OP\cpK`pq0K$%().Y\ : = > P Q X b d   < = > C G I K N Q R p r u v   < = > E G I K N U X b d  < = > E F I J N U W b d  ; = > E F I J N W X b d 56789:>@q]`25RTrt  ,0<4Dkt$8   * / f p ,,---.*000506000ost~ #(,-ƨ&.GT)7CDLN!"#$%&()*+,-/0v{      8 ; ? @   $ ( i n FQ8Fpqsu'5EGst,8>?AB;=>EGIKMWXbdfmpu5G^_0A,;0679;>@ABD 3:;?GHQ\/78@17:;<>?FGH4;>BZ[@4A4G4V4a0ajj0k7kOoPoQoooooo.0GejmBE7;muv"#%&+07DK }~;<=>F G ~  # # # #*#+#i'j'k'l'm'n'o'p'q'r's't'u'v'''''''''''''))))))))))))))))))))))))))))#.$.%.&.'.(.).*.00 0 0 0 0 000000000000000 0>?6789:;<=>?@ABCDEHIPQRSZ[\]^_ =>]^`bce[2^2222222z3|38494=4>4?4@4EE;A0B0C0D0E0F0G0H0I0J0c0d0000000000000000000000000000000000012gq23PSUVdh ( * 3w x   tvuv`m?@EF pq |}d f Z\  45JLab57NPZ\]a};@~       ' ( V W X \ ] ` ,,,-p-q-......*...0.2.3.5.<.?.@.B.C.K.L.M.N.P.].^.00 ΨШ.0ǩʩϩЩ@CDL]`WX  P X   9 @ n o GI@D8:;==>]^KOZ\AC<?DGAEAFCE p$u$njpjjj7k:kDkEknmpmnn  :.<.#PZЩک)PZfpPQ^`PZPZaa0a:a ?@AB#$&'*+<?@[^{~pxz~01WY  Kmpq0M$%()0?@Y^_`kp : = > P Q X b p     ) * 1 2 4 5 7 8 : Y ] ^ _ r u v w     ) * 1 2 4 5 : = > \ ^ _ b p x  ,-EG,/2456>@AEGIKNWXbd58@BEF03;=>? "&',/890679=>@ABC9:WY/0>?46>@AB*a-aQooooegms"#+,<?^_|}~   2 5 @ A D E R S a e z  !!!! !!!!!!$!%!(!*!,!.!/!2!3!9!?\]^_  UV  :;?@EFGJQR !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~p@A    @A@\^_0 d p 0:PwpK`pq0K$%().Y\ : = > P Q X b d   < = > C G I K N Q R p r u v   < = > E G I K N U X b d  < = > E F I J N U W b d  ; = > E F I J N W X b d 124;GO56789:>@q+?VZ^abegnqu]`25RTrt  ,0<U_`}4Ekt$8 ,,---.*00000ost~ #(,-ƨ&.GT)7CDLN{~ª 0v{      8 ; ? @   $ ( i n FQ8Gpqsu'5EGst,8>?AB;=>EGIKNWXbdfmpu5G^_0A,,;0679;?@ABD 3:;?GHQ\/78@17:;<>?FGH4;>CZ[@4A4G4V4a0ajj0k7kOoPoQoooooooo.0Gejms{BE7;muv"#%&+07DK 1.2. : ? @ Z [ @E! @AKnpq0M@Y`kp : = > P Q X b r     ) * 1 2 4 5 7 8 : Y ] ^ _ r u     ) * 1 2 4 5 : = > \ ^ _ b q r     ) * : = > X [ ] ^ ` b     ; = > N O T W _ b z 124@F@HIm+?@PVZ^abegnquIJNPWXYZ^`[mo2@R`mnq CDyPnpu U4EM$MPZx5!9!0-h-------------------00<0=0A0000000110111111124MNФ  *,no #@t &0G`})@CDL`pqwz{~ªê۪ݪ  '(/np)*78=>?@BCEF>Ppuvfpq  '(;<>?NP^ -ABJPvP(0d7@V`h  679<=?V`w   :            6 ` }        6 @ V ` s    I  $ J N O P '(0Fp8qsuv'DEGHPsvw,?A )*1245:=>PQ]b5GK_b0DE@G,   0?@AB 3:;PQ\  /@Ar  1FG`fgij4 #$D%//004A4G4`4CDGFaah9j@j_jpjjjjk0kckxk}kkCmkmoKoPoQop֌ #23PSUVdhpkp}  -NO !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~:@ ^KP#tuz{YZ@A$%()q r FGCDx~,kxyq r  |,~,o-p-/.0.001060;0<00000  pqϩЩpqݪު\`ijpqN O o p @kDk@mCmkmmmoooooo0n7>KL  0 0Ф  '(;<>?NP^47@ 47@V`h e f  ,0<@ADP!P!8;JMP   lxz01WYKM.0?@\^_`kp       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x    ) * : < E F I J N U W X [ ] ^ ` d f p w    E F I J P T d f ;?\HImqIJNPWXYZ^`[]}7@T`mnqrt y ,0<@ADnpu_`}MN8;JM FHNPXYZ[\]^_~ e f r t !!!*$@$K$`$t+v+++,,&-'-(---.-0-h-o-q--------------------^.....///@0A00011011111112 2ǤФ,@ΧЧҧӧԧէݧ-0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0lp78=>?@BCEF STghlpuv  '(;<>?NP^47$-KP{(0do{|7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : @ f i    `(0ZpNRv56HPwB )*1245:;EGIKNPQWX]dfmpu\]bEPZ`m,0G<   679;GPZHP   78FPmp  7:;<>?HPZ`fgij;>[#$o$p$u$$D%//0V4`4CDGFa:ah9j@j_j`jjjnjjjjjjjjkFkPkZk[kbkckxk}kk@mzm@nnoKoOoooooooop֌ #23PSUVdhpkp}.0GP')FW`yUV  :;?@EFGJQR%+"#%&+0n-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~ HPZ` ` a DEFGMN>?BC/0 !E;@O@PPnpu _`}`ê۪,:<?G"#'(     9 ; ['a'.... .".vy3$%+,\] ?@! !!!!!! !#!$!%!&!'!(!)!*!.!/!2!3!:!;!A!E!J!P!!!!!!!!!!"" " " " "$"%"&"'","."/"1"A"B"D"E"G"H"I"J"`"a"b"c"m"r"t"v"x"z""""""""""""")#+#`$$ * *t*w***|,~,o-p-....//00607080;0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0e0f0g0h0i0j0p0r0s0u0v0x0y0{0|0~000000000000000000000000000000000000000000000000000011111122 2H2P2224pq\`ij !"#%'*np78=>?@BCEF>P0EGSTghlpstuv.0KM89!a)ahmkm^eUV  :;?@EFGJQR0n !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~ /0Pjm<@IPR[24?AIJ #)-/0289@Ftuz{~SVuy< = X ` 3 4 6 7 Y \ ^ _ > ? V X \ ^ V W > ? W X 34  CDMNRSWX\]ijstuz./av56,/0;<NOkxyqrstuvwxyz{|}~     $ ' / 0 3 5 6 8 < = > ? G J W X _ ` p r t !!!! !!!!!! !#!$!%!&!'!(!)!*!.!/!2!3!:!;!A!E!J!P!!!!,"."/"1")#+#`$$ * *t*w***|,~,o-p-....//00607080;00000011111122 2H2P2224pq\`ij !"#%'*np78=>?@BCEF>P0EGSTghlpstuv'(>?WX01a*agmim^eUV  :;?@EFGJQR0n !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~ /0Pjm<@IPR24?AIJ@BCEtuz{~uyX ` 3 4 6 7 Y \ ^ _ \ ^ 34  CDMNRSWX\]ijstuz,/0;<NOkxyqrstuvwxyz{|}~     $ ' / 0 3 5 6 8 < = > ? G J W X _ ` p r t !!!! !!!!!! !#!$!%!&!'!(!)!*!.!/!2!3!:!;!A!E!J!P!!!!,"."/"1")#+#`$$ * *t*w***|,~,o-p-....//00607080;00000011111122 2H2P2224pq\`ij !"#%'*np78=>?@BCEF>P0EGSTghlpstuv^eUV  :;?@EFGJQR0n !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~ /0Pjm<@IPR&(1489?CILRTfh &4@BCEtu~ 9:PRSTWX\_vx"') * 1 2 4 5 X ` 3 4 6 7 Y \ ^ _ H I K M \ ^ H I J M CDMNRSWX\]ijstuwxy&'     ;<=>@BCD FHNPXYZ[\]^_~  &!'!*!,!!!!!!!"" " " " "$"%"&"'"A"B"D"E"G"H"I"J"`"a"b"c"m"r"t"v"x"z""""""""""""")#+#**L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0e0f0g0h0i0j0p0r0s0u0v0x0y0{0|0~000000000000000000000000000000000000000000000000000 !"#%'*np *78=>?@BCEFO.0KM89!a)ahmkm^e #)-/0289@Ftu~SV< = X ` 3 4 6 7 Y \ ^ _ > ? V X \ ^ V W > ? W X CDMNRSWX\]ijstuwxy./av56qrstuvwxyz{|}~  &!'!*!,!)#+#**00 !"#%'*np *78=>?@BCEFO'(>?WX01a*agmim^ec #)-/0289BCEFSV< = > ? V X V W > ? W X ./av5600'(>?WX01a*agmim\]bh//@      P   `PPP```P%/Fa@ahk@mm@nnoooPP`pP` #  d f 06!0:`jf p f p f p r x f p x  X _ f y PZ 4@Ji}FPPZ@JPZp q t z P!!!!`$$$%v'',,00!0*080;011 2*2H2P2Q2`22222 *06Шڨ ЩکPZ4@y $ABJKX`y         @ I }      X ` x      0 : @ J `'QURp6@PZPZ0<PZPmPZPZ$o$0a:a`jjjjjPkZk[kbkpmzmnn`y@JPZq./>  ./`` f p @j_j`jjjnjpj` y/ 0 000 0`m 0:EPZpK`pq0K$%().Y\ : ; < = A I M N Q X b d   < = A C G I K N Q R p r u v   < = ? @ A E M N U W b d    < = > A F I J N U W b d  ; = A E M N b d 124;GO56789:q-1289;=?XZ^aqu]`24RTrt  #')239<VWX_`abcems}456;<=BCkt,468 ,,---.*0.000opt~ %',-Ĩƨ&.GR)/1357CDLM|}ª 0v{      8 ; ? @   $ ( i n FQ8Gpqsu',-5st/24568>?AB;=@Afmpu8@BEFG^_3;=>?A "&',/89;;=>?CD 39;?GHQWY\078>?@17:;<>?FGH6;@ABCZ[@4A4G4V4a*a-a0ajj0k7kOoPooooo.0Ggj{BE7;muv"#%&+07DKQ S d f    E F I J P T d f 03#$&')*''+,oKoOoooo] ^        @nn  psTVXY}  ; < > A I M N P   > A   > ? @ A G I K M W X   A E   > A F I J M W X >@+-1289;=VXbegn45#'),0239UVWXabcems56;<=BCE$,46.000#%'(ĨRT/135MN{|}~4    !!/0GHVW  )*!!&'FGNOrs   !n!o!~!!EFLMSTlq  vw5vwl!m!|!}!!!L2M222DEJKQRfjtu#$  ~    mn_`ghh$i$mn~]!^!Z![!  \$]$,-  56efk l k l k l k l k l UV%&EFmnKLUVEFUVu v d!e!t!u!d$e$x$y$$$$$z'{'''''%0&0$2%22244*8+8NN OO%&ը֨թ֩UV  CDHIOP_`st!"}~      5 6 E F de!"VWkl;<UVUV56UVUV^_UVUV$$ $ $$$$$"$#$'$($1$2$9$:$M$N$T$V$j$k$5a6aejfjjjUkVkumvmnndevwxyEFUVuv23!"2222222222223$4$222222   ./  () %&     uv89%uvK2L222LSMS  lm^_fgg$h$lm}~     X!Y!45dej k j k j k j k j k TU$%DElmJKTUDETUt u c!d!s!t!c$d$w$x$$$$$y'z'''''$0%011#2$222NNVV$%ԨըԩթTU  |}  C D [ \ { |   4 5 D E cd !UVjk:;TUTU45TUTU]^TUTU$$ $ $$$$$!$"$&$'$0$1$8$9$<$@$L$M$R$T$i$j$4a5adjejjjTkUktmumnncduvDETUtu12dembnb22222222_2`2^2_2]2^2\2]2[2\2   -.  '( $%  kl  tu'tu:0;0J2K2Z2[2ESFSef  kl$%]^efkl|}    Z [ \!]!W!X! t u u v 23xy  ] ^ +,  w x x y 56#34cdi j i j i j i j { | ~  i j ST#$CDklIJSTCDST b!c!r!s!b$c$v$w$$$$$x'y'''''#0$011"2#222 N NNNSS__#$ӨԨөԩSTkl  Z[{|    B C Z [ z {   3 4 C D bc TUij9:STST34STST\]STST$$$ $$$ $!$$$&$.$0$6$8$:$<$K$L$Q$R$W$X$3a4acjdjjjSkTksmtmnnnnbctuCDSTst01    ));;Y2Z2X2Y2W2X2V2W2U2V2T2U2S2T2R2S22$3$Q2R2   ,-  &' #$  :;vv  stIsts$t$$$$$$$90:0I2J2DSES^_\]    E F     ] ^ } ~   jk#$ST\];<dejk{|  V!W!T!U!wx  ~[$\$^$_$f$g$/23bch i h i h i h i z { } ~ h i RS"#BCjkHIRSBCRS a!b!q!r!a$b$u$v$$$$$w'x'''''"0#011!2"22244$N%NNNOOPPiQjQ ____01"#ҨӨҩөRSxy [_YZz{    A B Y Z y z   2 3 B C abSThi89RSRS23RSRS[\RSRS$$$$$ $#$$$-$.$5$6$J$K$P$Q$V$W$Y$Z$2a3abjcjjjRkSkrmsmnnnnabstBCRSrs/0##r$s$$$$$$$nnq$r$$$$$$$nn23p$q$$$$$$$nn o$p$$$$$$$nn12n$o$$$$$$$nnm$n$$$$$$$nn01l$m$$$$$$$nnk!l!{!|!k$l$$$$$$$nn/0  j!k!z!{!j$k$~$$$$$$nnNNakbk`kakyyNNQQ_k`kFQGQ^k_k !!  |}!!NN,-+,UV_`  ]k^k%&;<+ r s o!p!!!NNCSDS!""#MNTUqr^_  G H _ `     efG q r {|m!n!}!~!pOqO~vvLMKLRSjk]^     F G   ^ _ ~      rs%&TUdelm\k]kw p q rsi!j!y!z!i$j$}$~$$$$$''''''8090)2*2H2I222NNASBSbbstIJPQWX`e"#[\~    D E     \ ] | }     ij"#RS[\:;cd[k\knnijz{  78Q!R! v w w x [!\!45_$`$P!Q! Y!Z!  a$b$=>^ _ U!V!Y Z  r s s t 01@A  |}`$a$b$d$ S!T!  }~Z$[$]$^$e$f$[ \ #s t t u *+,,12ABuw    H I {|&'d$e$<=X Y   u v v w 34  \ ] R!S!+12abg h g h g h g h y z | } g h QR!"ABijGHQRABQR _!a!p!q!`$a$t$u$$$$$v'w'''''!0"011 2!222NNXXXXz^{^ _ _!"ѨҨѩҩQRBCX[ !XYyz    @ A } ~     X Y x y     1 2 A B `aQRRSgh78QRQR12QRQRZ[QRQR$$$$,$-$4$5$O$P$X$Y$1a2aajbjjjQkRkqmrmnnnn`arswxABQRqr* + 01`af g f g f g f g x y f g PQ !@AFGPQ@APQp q !!$$$%00mm !ШѨЩѩPQ0 1 @ A fg67PQPQ01PQPQPQPQ0a1a`jajjjPkQkpmqmnn@APQ  34P!!E r x x  X _ p y *4r}P!!!!i$t$}$$$$$$$$'''''',,00!0*080;011 2*2H2P2Q2`222224444*8+8M;N;NNNNNN N N$N%N]N^NNNNNNNNNNNNNNN OOpOqOOOPPQQFQGQiQjQkQlQmQnQASBSCSFSLSMSSSVVXXXXz^{^^_ ____bbbbLcMcggmmooss~vvvvyy,-01!"FGLMxy06klstxy4@y $ABJKX`y         D I }      X ` x      i'QU[f:<Zm$o$[kbknn`yq./>  de!"* +             ##));;mbnb)irp q t z `$i$t$}$$$$$$$$%v''''''@ D `iR[ oop r x x  X _ p y *4i}p q t z P!`!!!`$$$%v'',,11 2*2H2P2Q2`22222064uy $X`y         @ I }      X ` x      `'QURf:<Zm[kbknn`yq./> `!!!!00!0*080;0@uABJK$o$    >@1&(1289ACJLRTfh &4@BCEtuz{~ 9:PRSTWX\_vx"'uy) * 1 2 4 5 X ` 3 4 6 7 Y \ ^ _ H I K M \ ^ H I J M 34  CDMNRSWX\]ijstuz&'     ;<=>@BCD,/0;<NOkxy FHNPXYZ[\]^_~     $ ' / 0 3 5 6 8 < = > ? G J W X _ ` p r t !!!BE7;muv"#%&+07DK ["#'*[\]^{|}~:> 9 ; E G }  # #)#+#['a'h'v''''')))))).... .*.B.C.U.].00000 0>@5EGIY_ ;<=>[\]^_abdvy ./$ % RSƨΨڨ`  .0?1.2.$%+,<?^_`a|}~uv    p q  O P y z ?@ 456789mn@Aakt}D E R S z } !!!!! !!!!!!$!%!&!'!(!)!*!.!/!:!0@0001111111122*2H2P2Q2`222224MNǤ "(,6:wz[\jl)*@Pbcdgij >?@A\]^_7@ywy    ?@?@ABCDGHYZ[\]^ ;<[\_`bc@ V X ` !$%(*+,-.0:<?A\]~Z`    jn0?^_d f p q v w w x OPZ\JP`ino57 DF NPZa};@~  ( 0 9 ; ? A D G R S T U _ ,,,-p-q-... . . ........ .*./.0.:.<.@.A.B.C.P.R.U.00=0>000 st~txΨШ.0_`Ωީ\`ު01EGIMPSTX_bhijl !<=abdfopWX  ? @ P Y     9 @   UZGN@Dtv8>KPZ\]^AD`m<?;<DG?G AFprCP p$u$//njpjjj7kF G ~  # # # #*#+#i'j'k'l'm'n'o'p'q'r's't'u'v'''''''''''''))))))))))))))))))))))))))))#.$.%.&.'.(.).*.V.W.X.Y.Z.[.\.]. 0 0 0 0 000000000000000 0>?6789:;<=>?@ABCDEHIZ[\]^_ =>]^`acd)-.  ....:.<.@.A.].^.0000100013XYcd n o  _`? A T U 35MP?@9!0:A[_`a{ ( 0 ? A T U _ !`$%v'',..000!00010>@EG`!$%+,0:<?A[^_`{|}~~Z`    jn0?^_d f p q v w w x OPZ\:>JP`ino57 DF NPZa};@~ ( 0 D E R S _ }  # #)#+#h'v''''')))))),,,-p-q-./.0.P.R.^.00000 00010=0>00000 st~txΨШ.0_`Ωީ\`ު>@0STbcdhijl !;>?@[\]^_fopWX  ? @ P Y     9 @   n o UZGN@Dtv8>KPZ\]^AD`m<?;<DG?G AFprCP p$u$//njpjjj7k de!"* +             ##));;mbnb   34  -. *+  $%!"JK  z{z{ABqrcdklqr./9:ijo p o p o p o p o p YZ)*IJqrOPYZIJYZy z h!i!x!y!h$i$|$}$$$$$~'''''')0*0(2)222]N^N^^ss)*٨ڨ ٩کYZ  9 : I J hiZ[op?@YZYZ9:YZYZbcYZYZ$$$$$$$$+$,$F$J$n$o$9a:aijjjjjYkZkymzmnnhiIJYZyz  67     23  ,- )*  #$  !  yzyzO2P2pqbcjkpq89hin o n o n o n o n o XY()HIpqNOXYHIXYx y g!h!w!x!g$h${$|$$$$$}'~'''''(0)0'2(222kQlQLcMc()ب٨ ة٩XY  8 9 H I ghYZno>?XYXY89XYXYabXYXY$$ $$$$$$*$+$D$F$m$n$8a9ahjijjjXkYkxmymnnghHIXYxy 56     12  +, ()  "#    xyxyN2O2  opabijop^!_!-.  78ghm n m n m n m n m n WX'(GHopMNWXGHWXw x f!g!v!w!f$g$z${$$$$$|'}''''''0(0&2'222M;N;NNbbggoo'(רبשةWX   7 8 G H fgXYmn=>WXWX78WXWX`aWXWX$$ $ $$$$$)$*$A$D$l$m$7a8agjhjjjWkXkwmxmnnfgGHWXwx45    01  *+ '(  !"  wx9:wxM2N2  no`ahino67fgl m l m l m l m l m VW&'FGnoLMVWFGVWv w e!f!u!v!!!e$f$y$z$$$$${'|'''''&0'0%2&222mQnQFGxy&'֨ר֩שVW    6 7 F G efWXlm<=VWVW67VWVW_`VWVW$$ $ $$$$$($)$@$A$N$O$k$l$6a7afjgjjjVkWkvmwmnnefFGVWvw3(08@HNYZ[\]^_`hp!!!! !!!!!!!!$!%!&!'!(!)!*!.!0!4!>!@!E!F!`!p!!!$$,0,`,a,b,e,g,h,i,j,k,l,m,q,r,s,u,v,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm"#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoyz{|}§çħȧɧʧ˧ͧЧѧ֧קا٧ڧۧܧݧ!;(p{|  P f @n`n4Nh  8:;?@EFGJQl"<Vp5Vo"0JPjp!"?@ 789:=?d f JLbcgino57  DFNPZ\^`};=~< > G J ,,../.<.=.S.U.00vxΨШ/0ȩʩ]`VX abV X UZGIAD8:;=KMAC<?DEFGBDACCEnjpjjj7k9kDkEknmpmnn ! / 0 _ ` 00( * ),.:<~]^    0013PRTVXYcd de0:`jkmf p f p f p f p f p PZ *@JFPPZ@JPZ *Шڨ ЩکPZ0 : @ J fp6@PZPZ0:PZPZPZPZ0a:a`jjjjjPkZkpmzm@JPZCa{      !"#$%&'()*+,-./012345679:;<=>?@ABCDEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      !"#$%&'()*+,-./0123:<=?ABCGHIJKLMNOqrstwxz~0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0`      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (08@FPX`hp~q r  ! !!!!!/!0!4!5!9!:!!F!J!N!O!p!!!!$$0,`,a,b,e,g,h,i,j,k,l,m,q,r,s,u,v,~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-&-'-(---.-ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoyz{|}§çħȧɧʧ˧ͧΧѧҧӧԧէ֧קا٧ڧۧܧ0[\jpA[(P  p  `nn4NUVh8Rl"<Vp6OPVp  %+0n"DctuYZ Knpq0M$%()@Y`kp : = > P Q X b q     ) * 1 2 4 5 7 8 : Y ] ^ _ r u     ) * 1 2 4 5 : = > \ ^ _ b q r     ) * : = > X [ ] ^ ` b     ; = > N O T W _ b z 124@G@HIm+?@PVZ^abegnquIJNPWXYZ^`[mo2@R`mnq yPnpu U4EM$MPZ~5!9!!!!!0-h-o-p-------------------/.0.00!0*0106080=0A0000000110111111124MNФ  *,no  #@t &0G`}ϩЩ)@CDL`wz{~ªê۪ު  '(/np)*78=>?@BCEF>Ppuvf  '(;<>?NP^@u -KPvP(0d7@V`h  679<=?V`w   :            6 ` }        6 @ V ` s    I  $ J P o p '(0Fp8qsuv'DEGHPsvw,?A )*1245:=>PQ]b5GK_b0DE@G,   0?@AB 3:;PQ\  /@Ar  1FG`fgij4 #$o$$D%//004A4G4`4CDGFaah9j@j_jpjjjjk0k@kDkckxk}kk@mmmoKoPoQooooooop֌ #23PSUVdhpkp}  -7>NOKL !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~:@ ^KP#   * / ` e f p 04@4s{pK`pq0K$%().Y\ : = > P Q X b d   < = > C G I K N Q R p r u v   < = > E G I K N U X b d  < = > E F I J N U W b d  ; = > E F I J N W X b d 124;GO56789:>@q+?VZ^abegnqu]`25RTrt  ,0<U_`}4Ekt$8  ,,---.*00000ost~ #(,-ƨ&.GT)7CDLN{~ª 0v{      8 ; ? @   $ ( i n FQ8Gpqsu'5EGst,8>?AB;=>EGIKNWXbdfmpu5G^_0A,,;0679;?@ABD 3:;?GHQ\/78@17:;<>?FGH4;>CZ[@4A4G4V4a0ajj0k7kOoPoQoooooooo.0Gejms{mq;@\ 0-h-o-q---    ) * : < E F I J N U W X [ ] ^ ` d f p w oop %  Pnpu`mnqrt KMP`k-0Z P.0? ( 0 : ;pKVpqQ U   *0.000 .;<.0Ggj{      @xP{p      ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x  I  `   y`mEPZ    E F I J P T d f       @\^_Pw : ? @ Ф  '(;<>?NP^7@V`h  ,0<@ADPOA[a{&,]bfkxyq r  *!,!2!3!N!O!`!!`,,"ΧЧҧӧԧէݧ0[\efj!;A[%+ B000112223X3fpq #UVdh./0ΩЩکީ       A0000 23PS78=>?@BCEFP 5.00011122`22`}-....//0000!0*080<04MNnpoooo:@ ^KP#!      ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w a:a Iptuxz~&+]bfk FHNPXYZ[\]^_~&!'!ef@F )*1245:<EGIKNPQWX]dfmpu0K  7:;<>?HPZ `fgij ,`,"#%&+-&-'-(---.-@ f i    IIJNPWXYZ^`[]}------------------  '(/( kp}<  Q U d f  0+,xy-.@.00n   679<=?@//,,,-p56H@T 10111  6 9 @  1WYw   @AKVpqPp P>@puv` !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~0dopLPZ^`+$%   ?@ 89ij  #'*,/0<?@A\]^a|}~uvxz01WYZ]^` jkmnKM.789:=?@\`kpp q       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f p q r    ) * : < E F I J N U W X [ ] ^ ` d f p    E F I J O T X _ d f p z ;@OPZ *56789HImqLPIJNPWXYZ^`[]`bcgimn7@T`mnqrt   y ,0<Dnpu _`}MN\^`kt}8;=@JM FHNPXYZ[\]^_~     $ % ( 0 9 ; < > E J _ e f p q r } !!!! !!!!!!$!%!&!'!(!)!*!.!/!:!?@BCEF@P 0135EGIPST_cdpuv  !<=>A\]^_ef  '(;<>?NP^@u -KP{(0dp{|7@V`h  679<=?V`w   :              6 8 ; ? @ V X ` }        6 @ V ` s    I      ( 0 : @ f i n o  '(0QUZpIfv56@AHPtvw:;=>B )*1245:;EGIKNPQWX]dfmpuMPZ^bCDEPZ,0:<?@G;   679;EFGPZ?BDGHP  78CPZr  7:;<>?HPZ`fgij;>EP[ #$o$$D%//0V4`4CDGFa:ah9j@j_j`jjjnjjjjjjjjk9k@kEkPkZkckxk}kk@mmmnmzm@nnnnoKoOoooooooooop֌ #23PSUVdhpkp}.0GejmBEUV  :;?@EFGJQR56OPop7;muv%+"#%&+0n-0>@JNOLPZ !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~0JPjpvy:@ ^KP# #A[      !"#$%&'()*+,-./012345679:;<=>?@ABCDEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxz{|}~      !"#$%&'()*+,-./0123:<=?ABCGHIJKLMNOpqrsvw0`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./1W      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~7@V`h  679<=?V`w   :            6 ` }        6 @ V ` s    I      $ J f o  '(0Fp8qsuv'DEGHPsvw,?A )*1245:=>PQ]b5GK_b0DE,   0?@AB 3:;PQ\  /@Ar  1FG`fgij4 #$o$$D%//004A4G4`4CDGFaah9j@j_jpjjjjk0k@kDkckxk}kk@mmm@nnoKoPoQoooooookp}UV  :;?@EFGJQR56OPop%+0n-7>NODKL !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~0JPjp106000000112223X3f #UVdh  * / ` e f p 04@4s{pK`pq0K$%().Y\ : = > P Q X b d   < = > C G I K N Q R p r u v   < = > E G I K N U X b d  < = > E F I J N U W b d  ; = > E F I J N W X b d 124;GO56789:>@q+?VZ^abegnqu]`25RTrt  ,0<U_`}4Ekt$8 ,,---.*00000ost~ #(,-ƨ&.GT)7CDLN{~ª 0v{      8 ; ? @   $ ( i n FQ8Gpqsu'5EGst,8>?AB;=>EGIKNWXbdfmpu5G^_0A,,;0679;?@ABD 3:;?GHQ\/78@17:;<>?FGH4;>CZ[@4A4G4V4a0ajj0k7kOoPoQoooooooo.0Gejms{BE7;muv"#%&+07DK _`/ 0 ? A T U 35MP?@"#    " 0 2 ; = B C G J Q R e f !!! !!!!!!!!$!%!&!'!(!)!*!.!/!5!@!E!K!L!N!O!!!!""4"6"## # #$#)#+#,#}##########$$$%%& &h'v''+0+P+Z++++++++,P.R..00000 00010A0B0C0D0E0F0G0H0I0J0c0d0000000000000000000000000000000000000'1(1122X3{33Ф` 0ISX_cgp  ;<=>?@[  0FoE00A0B0C0D0E0F0G0H0I0J0c0d00000000000000000000000000000000000'1(1122X3{33PS  )#+#000 000100000Y_ ;<=>?@[a  " 0 2 ; = B C G J Q R e f !!! !!!!!!!!$!%!&!'!(!)!*!.!/!5!@!E!K!L!N!O!!!!""4"6"## # #$#,#}##########$$$%%& &h'v''+0+P+Z++++++++,P.R..Ф` 0IPXYcgp a  0Fop{| ,#4MN !"#%'*:@ ^KP#! 06^_pjjjj Q S d f 0:HImq0 0 12;@\   `j 57  0-h-o-q---!",-./:<?@~      067?^_d f Z\  JLaino57 DFNPZ\]`};@~$ % < > G J ,,../.<.=.A.B.L.M.N.P.S.U.00 vxΨШ/0ǩʩ]`ߪPSTX  abdeWX  V X   : @   UZGNAD8=KNZ\AC<?DEFGBDADqrCEp$u$njpjjj7k:kDkEknmpmnn#Q S d f    ) * : < E F I J N U W X [ ] ^ ` d f p w ê۪ /011oop 3Q S d f ;=       @JPnpu d f 0:` 57`mnqrt`p'    !#&-/01   @AKVpqKMP`kpd f -..*+p ))'( -.12!"./?@ 789:=?d f JLbcgino57  DFNPZ\^`};=~$ % < > G J ,,../.<.=.S.U.00vxΨШ/0ȩʩ]`RSVX abV X UZGIAD8:;=KMAC<?DEFGBDACCEnjpjjj7k9kDkEknmpmnnP(@A0Zw p q  O P y z  456789mn@Aakt}!!!!! !!!!!!$!%!&!'!(!)!*!.!/!:!0@01111111122*2H2P2Q2`222224MNǤ(,689:wz@P7@ywy  ?@?@Ad f  d f 0:Q R 0689PEik/0IJhiVWXYbc-.q r H!J!|,},"$VX&(Z\*,^`LNhi\A[a{tu~   @Ad f ?@57  e f q t  !&!'!*!,!2!3!N!O!`!!!!*$@$K$`$()t+v+++,.^./0000!00080<0@0000000111111 2`22223X34MN"0:./ϩЩ[\jl>@0STghl!;A[fpq47@P')gj{W`yUV  :;?@EFGJQRq>,0<@IPR`fw{ HPZ`T`np} ǤHI jnKM.@\`kpd f p q       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f p q r    ) * : < E F I J N U W X [ ] ^ ` d f p    E F I J O T X _ d f p z ;@OPZ *56789:>HImqJPIJNPWXYZ^`[]`irmo5@T`mnqrt  y ,0<Fnpu _`}MPZkt8@JM~ FHNPXYZ[\]^_~  ? A T U q r  !!!! !!!!!!$!%!&!'!(!)!*!:!?@BCEF^d>P 035MPqrstwxyz{|}~!;?@A[e  '(;<>?NP^@u -KP{(0dp{|7@V`h  679<=?V`w   :              6 8 ; ? @ ` }        6 @ V ` s    I      ( 0 : @ f i n o  '(0QpGfv56@DHPtvw8>B )*1245:;EGIKNPQWX]dfmpuKPZ^bADEPZ,0:@G;   679;DPZ?GHP  78APZr  7:;<>?HPZ`fgij;>CP[ #$o$$D%//004@4V4`4CDGFa:ah9j@j_j`jjjpjjjjjjjjk7k@kDkPkZkckxk}kk@mmmpmzm@nnoKoOoooooooooop֌ #23PSUVdhpkp}.0Gejms{BEUV  :;?@EFGJQR56OPop7;muv%+"#%&+0n-0>@JNOLPZ !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~:@ ^KP#E  !"#'(,-./0<A[_`a{uvxz01WY]^  jkmnKM.@\`kpd f p q       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f v       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f p q r    ) * : < E F I J N U W X [ ] ^ ` d f p    E F I J O T X _ d f p z 124;GOPZ *56789:>HImq+?@JVZ^abegnquIJNPWXYZ^`[]`mo5@T`mnqrt  y ,0<FPU_`}MPZkt8@JM~ FHNPXYZ[\]^_~      $ % ' 0 ? A D E T U _ e f p q r  !!!! !!!!!!$!%!&!'!(!)!*!.!/!:!?@BCEF>P 035MQRSTVpuv !;?@A[f  '(;<>?NP^@u -KP{(0dp{|7@V`h  679<=?V`w   :              6 8 ; ? @ ` }        6 @ V ` s    I      ( 0 : @ f i n o  '(0QpGfv56@DHPtvw8>B )*1245:;EGIKNPQWX]dfmpuKPZ^bADEPZ,0:;   679;DPZ?GHP  78APZr  7:;<>?HPZ`fgij;>CP[ #$o$$D%//0V4`4CDGFa:ah9j@j_j`jjjpjjjjjjjjk7k@kDkPkZkckxk}kk@mmmpmzm@nnoKoOoooooooooo #UVdhkp}.0GejmBEUV  :;?@EFGJQR56OPop7;muv%+"#%&+0n-0>@JNOLPZ !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~0JPjp   !   _ ` 00'(0:`jklf p f p f p f p f p PZ *@JFPPZ@JPZ *Шڨ ЩکPZ0 : @ J fp6@PZPZ0:PZPZPZPZ0a:a`jjjjjPkZkpmzm@JPZ ( * ,-;<~ lmD E PQTU :;_`' ( UV ./  $ % RSA[a{puvxz~01WY]^_` Knpq0M$%()@Y`kp : = > P Q X b q     ) * 1 2 4 5 7 8 : Y ] ^ _ r u     ) * 1 2 4 5 : = > \ ^ _ b q r     ) * : = > X [ ] ^ ` b     ; = > N O T W _ b z @HImIJNPWXYZ^`[mo2@R`mnq y4EM$MPZ~ FHNPXYZ[\]^_~q r  !!!! !!!!!!$!%!&!'!(!)!*!.!/!:!Ppuv!;A[  '(;<>?NP^@u -KPv(0dp{|lock=arabicnotreorderedcypriotsyllabarylineseparatorhalfandfullformshighpusurrogatestrailingjamoidsunaryoperatorcompatformsgxiradicalsinlatinextendeddphoneticextsupdevanagariextaislatinextendedisusupplementnonspacingmarklllajg=malayalamnnnamemtawktoviknumeralsaksaraprebaseprefixnumericinearbideogramsiscmathsymbolsanfkcquickchecknumericvalue=1/numericvalue=5/8numericvalue=70numericvalue=80numericvalue=9sentenceterminaltangutcomponentseuropeannumberanadiansyllabicscaucasianalbanianiotasubscriptemojipresentationgmodifiersymbolspaceseparatornotapplicableidcompatmathstartidsbinaryoperatorbraillepatternscurrencysymbolsindicsiyaqnumbersleftandrightnumberjoinervedicextensionsdashpunctuationdiacriticalsexthangulsyllableslowercaseletteropenpunctuationhamzaonhehgoalbethfivehethjg=manichaeankaphqophreshyodhqaphtethkhitansmallscriptcarriagereturncomplexcontextmandatorybreakpostfixnumericetterlikesymbolszwspacenfkdquickchecknumericvalue=3/2regionalindicatorscriptextensions=mallformvariantsttonsignwritingboundaryneutralcommonseparatorblk=latinextendedblock=cyrillicextcopticepactnumberstitlecaseletter=uppercaseletteridstrinaryoperatorinitialpunctuationlinearbsyllabaryiscmathsymbolsbbopomofoextendedclosepunctuationfinalpunctuation1supplementyriacsupplementalephgimelsadhezayinlaphzhainadditionalcontingentbreaknumericvalue=6ornamentaldingbatsparagraphseparatorpatternwhitespaceruminumeralsymbolssegmentseparatorbamumsupplementdiacriticalssuptamilsupplementblock=kanaemojimodifierbaselchemicalsymbolsindicconjunctbreakgeminationmarkvoweldependenthanifirohingyapadalethlamedhsamekhtwentyyudhhe=closeparenthesisodifiertonelettersottomansiyaqnumbersatermarrowsawordbreak=mi_perl_charname_beanatolianhieroglyphstangutsupplementblock=latinextendedconnectorpunctuationextendedpictographicombininghalfmarksneralpunctuationvisualorderleftmodifyingletterregistershifterinscriptionalpahlavitaixuanjingsymbolscherokeesupplementmallkanaextensiondhamedhhundred0000000000000000nyiakengpuachuehmongterminalpunctuationverticalorientation=europeanterminatorfirststrongisolateattachedbelowleftchangeswhencasefoldedchangeswhencasemappedchangeswhenlowercasedchangeswhentitlecasedchangeswhenuppercasedgraphemeclusterbreak=identifiertype=notncientgreeknumbersountingrodnumeralsmeroitichieroglyphsantillationmarkinvisiblestackerreorderingkillersyllablemodifiervowelindependentinscriptionalparthianinsupplementalarrowsbnclosedalphanumsuphanguljamoextendedamongoliansupplementsundanesesupplementissupplementalarrowscaksarastartlogicalorderexceptionnoncharactercodepointsinhalaarchaicnumbersvo=transformedrotatedyijinghexagramsymbolsoverridearabicnumberbidipairedbrackettypeblock=ethiopicblock=georgiablock=myanmarmathoperatorsfontdiacriticalsforsymbolsarlydynasticcuneiformidcompatmathcontinueinsc=consonantprefixedglagoliticsupplementburushaskiyehbarreelinebreak=breakmodifiercombiningmarknumericvalue=2.5.125e-03.750e-02.250e-03bc=lefttorightembeddingpopdirectionalformatblhanguljamoextendedbhangulcompatibilityjamoobsoletecompatibilityformsradicalssupplementsubjoinedjoininggroup=africanqafsentencebreak=shorthandformatcontrolsznamennymusicalnotationhighprivateusesurrogatesstatus=allowedinclusioncompatideographssupommonindicnumberformsiscellaneoustechnicalinpc=topandbottomandleftbrahmijoiningnumberheadletterpacingmodifierletterstransportandmapsymbolshanifirohingyakinnayajoininggroup=malayalamfolds_to_multi_charmeeteimayekextensionsdevanagariextendedachangeswhennfkccasefoldeddefaultignorablecodepointfullcompositionexclusionlimitedusebyzantinemusicalsymbolsgyptianhieroglyphsextaplaceholderwithstackerometricshapesextendedsuperscriptsandsubscriptscanonicalcombiningclass=27halfwidthandfullwidthformsrecommendeduncommonuseinarabicpresentationformsbombiningmarksforsymbolsprependedconcatenationmarkis_in_multi_char_foldeuropeanseparatorblk=supplementalcanonicalcombiningclass=128nclosedcjklettersandmonthsstatus=restrictedymbolsandpictographsextanojoininggrouptehmarbutagoalopticalcharacterrecognitionbidiclass=lefttorightbidiclass=righttoleftatarprecedingrephatakanaphoneticextensionssupplementaryprivateuseareaacanonicalcombiningclass=ccc1succeedingrephalphabeticpresentationformsancientgreekmusicalnotationconditionaljapanesestarteriscellaneoussymbolsandarrowsdecompositiontype=nonhangulsyllabletype=lvtinitialpostfixedryprivateuseareabegyptianhieroglyphsextendedavariationselectorssupplementjoininggroup=manichaeanthamedhpopdirectionalisolatenclosedideographicsupplementathematicalalphanumericsymbolsgeneralcategory=otheideographicdescriptioncharactersincjkunifiedideographsextensnclosedalphanumericsupplementiscjkunifiedideographsextensuneiformnumbersandpunctuationymbolsandpictographsextendedaaboveleftiscellaneousmathematicalsymbolsablk=cjkunifiedideographsextensbelowrightideographicsymbolsandpunctuationmathematicalalphabeticsymbolsdoublebelowombiningdiacriticalmarksextendedindicpositionalcategory=topandinmiscellaneousmathematicalsymbolsbgyptianhieroglyphformatcontrolsblock=cjkunifiedideographsextensindicsyllabiccategory=consonantiscellaneoussymbolsandpictographsombiningdiacriticalmarksforsymbolsymbolsforlegacycomputingsupplement_perl_problematic_locale_foldeds_compatibilityideographssupplement=bottomandrighttransformeduprightombiningdiacriticalmarkssupplementblock=supplementalmathematicaloperatorsattachedaboverightisunifiedcanadianaboriginalsyllabicsextendeda   !  ( * % xz01WYKM.0?@\^_`kp       ) * 1 2 4 5 7 8 : < = > C G I K N Q R Y ] ^ _ f w       ) * 1 2 4 5 : < E G I K N U X \ ^ _ d f x    ) * : < E F I J N U W X [ ] ^ ` d f p w    E F I J P T d f ;?\HImqIJNPWXYZ^`[]}7@T`mnqrt y ,0<@ADnpu_`}MN8;JM FHNPXYZ[\]^_~ e f r t !!!*$@$K$`$t+v+++,,&-'-(---.-0-h-o-q--------------------^.....///@0A00011011111112 2ǤФ,@ΧЧҧӧԧէݧ-0:@xƨΨڨT_}Ωϩکީ7@NPZ\ê۪  '(/0lpnp78=>?@BCEF STghlpuv  '(;<>?NP^47$-KP{(0do{|7@V`h  679<=?VW  : ? @              6 8 ; ? I P Y `       6 9 V X s x       I      ( 0 : @ f i    `(0ZpNRv56HPwB )*1245:;EGIKNPQWX]dfmpu\]bEPZ`m,0G<   679;GPZHP   78FPmp  7:;<>?HPZ`fgij;>[#$o$p$u$$D%//0V4`4CDGFa:ah9j@j_j`jjjnjjjjjjjjkFkPkZk[kbkckxk}kk@mzm@nnoKoOoooooooop֌ #23PSUVdhpkp}.0GP')FW`yUV  :;?@EFGJQR%+"#%&+0n-0>@JNPLPZ^`q> !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~,0<@IPR`fw{ HPZ`T`np}:@ ^KP# >A[a{~?@  / 0 O P Z [ ] ^ e f q t  !&!'!*!,!2!3!N!O!`!!!!*$@$K$`$()t+v+++,...0.2.<.=.A.B.C.D.^.000000 0!06070H2`2222222q3{33334MN"[\jl0EGSTghl!;A[aP')gj{WryUV  :;?@EFGJQRq>,0<@I`fw{ HPZ`T`np}  ! / 0 _ ` 00) * ( ) H ! ( * / 0 _ ` 00ФMN00000000Ǥaf   `j  #$o$p$u$$D%YA[a{puvx{~01WYZ` Knpq0M$%()@Y`kp : = > P Q X b q     ) * 1 2 4 5 7 8 : Y ] ^ _ r u     ) * 1 2 4 5 : = > \ ^ _ b q r     ) * : = > X [ ] ^ ` b     ; = > N O T W _ b z 123@G@HIm+?@PVZ^abegnquIJNPWXYZ^`[mo2@R`mnq yPnpu U4EM$MPZ~ FHNPXYZ[\]^_~q r  !!!! !!!!!!$!%!&!'!(!)!*!:!?@BCEF^d>Pqrstwxyz{|}~!;A[f  '(;<>?NP^@u -KPv(0dp{|7@V`h  679<=?V`w   :            6 ` }        6 @ V ` s    I      $ J f o  '(0Fp8qsuv'DEGHPsvw,?A )*1245:=>PQ]b5GK_b0DE@G,   0?@AB 3:;PQ\  /@Ar  1FG`fgij4 #$o$$D%//004A4G4`4CDGFaah9j@j_jpjjjjk0k@kDkckxk}kk@mmm@nnoKoPoQooooooop֌ #23PSUVdhpkp}UV  :;?@EFGJQR56OPop%+0n-7>NODKL !#$%'()3489:;<BCGHIJKLMPQSTUWXYZ[\]^_`acdegklstxy}~:@ ^KP#A0:A[_`a{uvx{~01WYZ`RC6Z  1   *" ; AR="  ? ]  n Al (d fAC ]#{6 '(  wj   ,  9R(f Z 4  C {2 C5c]u *4 > TI   'C5;5')Q $vZ ~ j^    Rn@ B4 ? C_u D- )ff w[ p_ ?.Hjv *=j  !!(  *R * w*  " R /O _p%\ M l 1   z> ; ?fyawP 0 . u"+f2Ub4 j U* Bwg   ' .F q6 w j  =uR9j  @yT   wW-`fT 3m Yy 0 3"  8 <Z (7UX2eJ kfUA   ?x Y "'R 4) a=S fu x K!eu(  H : 8 L A; af :RG  f4 :  UZ  u I"bC  [   Rq;h syRZRJZ$f3RJaT Cqf  "fH t wZ   n #f!B fI  % n @X-=R4CV"R <," [ ,  tH !< d  &V*'Z    @ CR5fXyC l: '" "h 9w ^C.uMwOi3io_"^ @AXhJ 4 KB u?6!w jo u&AR  *G3w>u " *~f ffg45Z Y_ C v  bJ !!(QZ  @HR8j bj d!u PZ -htq  %RJj  m B(P4 1fOfko!S uf' Gw| J YR0     f " V R ]| +w SZ  pR P<nZ  @RH) W"B 8y) *] /RP _ 1'-CS#  9  uq Rno u>  R37 Iqz1"Z    Z  j  tfp+v@I v  Z  ! |;r B &wRN4 Df 0wf Z X5,JY" 7Z H"Tf- Z I AR  F ; . ( I^j eFZ D? f4LuE j  XR,"0z.   !!j ^ 7+  !Ubo w2 R7q  [Xd N Cr v N H  C N2R*  . 0fA +g )#C`   I I R;' !f 0.LT\ N{s6  o 2%Z i |* &TRuj ?})    !R   % % (*JZ * 0f-> ?x5 fViR7 ITQ _" w/ 4 K  dn   vR_A(%PA  26'R C$Z ^\ h   SG@?d$ ?pnwP% o C wZ Ydwa 8w ?- )f  [/ R}W!o.~w" 1A  <w> R M r5Z  4 6 u*% R#Q (!BR  7?AI A, NAM (^\* 8@ 2$gAC #   y^ ! ) .-w" R4 LQ %w #Z `b:Xi  uf0- QZ  Z  " I I  | w Z  C>p Z   7 d mD < ,&WAv= fRIN $ 7Cu(  5 %6 <CD+Cmm f9 @ f3  ; R T 3l / ~Rpxf %w #l!  P{ 2uk $1qaZ N C|r _tC"!RBZ \ d C   6R\"  ,A RRnt!v  2Si,hk MC.  R[. 2n1 w A.Z  C\ Ajt q Ag&gIO] Z !B"j | k Z  fV C80ZVy wR{t*!"B7u w 7!Z y  ,u+x  F j R5 2.@C!- k U.2 2Ok!Ct8A`+Rz!D)   $ PR @w^\4  f % -  j _  f7fu)^B ^F !;!$"  ;45R~S  Cj 1 FQ "4 R5!fh   /  FJ Z ],T *yM |;Rg|W:9  Gw!n 'j >  J0f v eP" =  ;Z C{WuEf$ R} nm" $ 0 1f.! Vj  fl )ej ; fRw j!f6  !B   W ,oeu LytR] eb ? Z W: [+l^6  7R!  zZ # s ff] D u<$ "z^\+  W: ` y ]H(^\Fu2," 03 _ 1"n0+C F q^GO >uCD fJ _"Bw ^u)w- J(Z  1 :Bw  _w"TI S5Ruj4J!  M R$"  M2!  (R+ q  M Q] r K !vRCp :R;GD fT &I&  (" l1  B8uf.|PHx   ZO]!  Z '  @^)!G8G wdp CI j9"!C @I1R B? wN   *C'Z H 2jw Sf. cpZ  D  L=A!J!l  &1 f" .(*n 'Y vN ,f CV 4x  ]bXn<w@A, RK !f >;y*f$vC p .) ;6<\ ;  fR   Cwf <R:C~I /  w' 19J Z ~w 6 j MZ 9R_F fV&Z _=) )7 A Puf G 6$ WD  wZ nPRLf+"  2  6jt hZ'u<R? _ *uR 'pf~u 5xZ 7Z   ..RbJRZ"wP7 i _#  =>' R}!  { LZ jm@f[F GRICV: N <!CRB?fC 6CXyd2X}Z J2 %pTC Z  6 F Aeu-u A  !7GhHC f  R( R= lL ` h u Om') [, > fk8D =$ wp AnAB_  W    u'C2 |3Ce M/C] C !D  S   X C ;[R k", HZywBf  7 Z a:A:RvXC+<a7 Zk @$" 91^ R.  " T (C[Q B V"E  ZY{ @  $C 3tC+i.uWZ {""R Yfp _   Af 5R#D Z 1"  e f_ 1 0 )4 I3b V  U 4 TEJ "f s!C} }CH4 !S +S *Q Z -067 '] R`f]  -u  ]) _R8- j *A " c5 ,"  3iq^j Iw^]rC 3* ^  iu^\'Q MuOb #Iz " ]! w% 2+ b: b # @Z  HIRZ > R D  <RR nD R I X [/Rr]  j  ?ZOuAt?) V f  <&  pT"  &e@Z !A+Z  CRZaC} R3b'/ 82R >  R qIUAITRiCz$;!IL] Aw  f  3w  =&+;h w "fNfw "#,"fuCH 5 % R ]#8~  ,Z "4 !'o f '  %(*t! ;5P9S2 [vZ ] UCnr t K 3  !A! % CY BwFR Y !uE^.qQC> R ?Bl A =&&) V% X u? "",b5^FA" | ! ) R6dau.">   r !tRu4 :" Z %! uL ){$ % 0 I2  ^\^uPB S >| !) f""Z ""j +[CC Hpt/N  &{ l9A "R4 XZ  RF"  $ Z  pe@ RSu+y  5 f9wY  n| CV j x6J5  #F|A O*^%b@RZE $IY{Z Q  t vw Z m  i $Z "fu  *TZ !)"C u /;2mhf  8ATY+4Ff-x nuP(2/N#o 9l l  v u"6 9Z p ! nuPp u B< pQY   P]""AW5 % 7\(C M W 2) C  K*9"!" Q C\+iRl{Z  _u F C Z T ERC~f&RVAg@ NQ ; S;u   Rb # '    ZP&3  @'f' q At %f'Q  _uqR; p   W e<T 7 ,R w 9<j 1" ) R M^ +w't"A  UuN*`a  $ 7 {B/C  @ .fpq _ CVsw!@C !w!!m2X~\dR "C w R' mvR[0  =  LRC  X"x  ?R+ ,CC  , R/fhf  C  e IZ _ R  >aZ Z U C;5@8!G  5 > N  C]_t(Rz B .A/f  j   Z( 5 cv  Ufb5 7 Z  ]j^)KC- e : `8 "! , I 9|  '0C7?A /  f"+.Ng [R+{uZ 9" !1R$   f4 C 4" S -fWwH"] m - R2P  #W CC>) RNf Aj Cj O S  9] oD ^ &{Cf>;tf!B !"Q  BQAz )e ]%)' q ) Z%]  @j fg f t~u X" ;84 U  R\, fkjmt! 0 HlI0sCf" |C '7[f>H4 xY Z  5CR  # Ab< w'C  8w/ `2W*Z T   YIRm" ;D+FD *  0  $CI5  2h x +Qj  R Ijx O@X ]rj `"" R,RVDv t j w"w Agj [ uRiP4 :R'6 = X fZ Z })*  D vu 3w ~ j " 93)P{ $ j H + '   + ,@S Z w Ce  TR=C zj D$u Vyw  $x>0 u CAWw !!(*C @  %wZ =+Z BtRw%v=Z H x  %A  Y  o  @DK  Ji3   RZv4 {wArf6 ?5 &2T`] ] fR#C A f> ;CZ(fi3R 4:% !w R3  !uf O6 _! puQwwwS<uj fC   "!  7L Ff =C   t% Z u Q Fu 5% Dj %  ) U0l    f & qgG B6f_AC,@CJ S  D < W  -RWrR^vfJ !  Z Ik  M4!? &a/ i3u fFvffB" R + Jn '   5CCZ #|3$CT2 u B[t f> ;~ 2) Vi <  Jw $%   VF0Z    %uN  _+[+ uw "Z [+]  =  Z +Z / R xm 0- 3 nf8ctBu2CiW" V %"R`M]R`22  +Cq+k$ (1 !B X  . Z f}uC Z ftw S  $8"b`c" X. % (nA  RZ eh Z  U P&w{iRy1A4 [/AxZ >  @ S $  u RR@An  QR\ $ (B@* Z !"cCRG -  RJ!7Z @  8fvj ;<" @'. O " U 0  Z  fA i   ($ 2  P?Z,x" c*7W>  .M4 A OmlRBk  ;6 *'  82&Rp f3 !Z N*-f px LZ .Ri,R4  UCZ CC' Z "+ / Ci  @ ) ,, 3 KIf C MJ!C|f  4t~C wS'fwm *$V]Z(Z j4  G\j 6 wN(A AMquA] Y9"!f$ HR aA}4 ~  R@ ?jRn gCaRb5$4uzB +pj^ ;  hkE  J     )JJ CF K  nRQ  'bu."5  d) % 2 qt $^nTp ft" yC /2 S  8f67V  *BZ   fw " ; "qP 'X ; jw "-t$Rp:.  , " uS ' nZ V"+RU"CZ  VpwQ Z >Zk  C~ 92X p HX#Z ].5^\Iv;w Z C @ f5xw *  )X] H*  % 7, (4 V     <C + " g7g 3" X 3 f!`2 {".5:O5~  :  > T Q 0 [iw   ep /aR Z  M d,4    CC_  14RLZ n ; f u <\ ? C  js j * C`b0RD+9[ w R.Z 6  A$v0eC_ K )pzZ |rIZ cw#C%) S- $F uL/98$j u  FH2  d O  w t=Z S!  uK-=C sf Z _mt*!   8f  wL  w  Z , 1  e' -w^"!  ft!  f^) wZ(w 0{ARD[0 X      d"pb Z  pRC M%+^  WrCT~" +f^Y <f(MwO<2 9 UuCF@wC mf"RvRCw   s b  =D [wj ]" T ([w m t !  % )GZ D C    ~  ' C'R  5  R`2f{ uN * C uj C v t  +f3A {j Kp/    t @  2f"[ 5f]:!   e f|"A  n  <fhD R 5f~A, wW  j 6 ;p  w   MFE X RJsR wGV&fPCT Rl&cwlmcmocradlmaghbahexahomarmiavstbatkbhksbuhdcakmcanschamchrscpmncprtcwucyrldsrtgonggrekgujrgukhhluwhmngzljtkawikitskndakrailaoolatnlisumedfmteimymrnarbnewaoryaosgeougrpcmphlpphnxqaacrjngrunrsamrsgnwtagstamltavttfngtglgtibttodrtutgwchoxpeoxsuxyiiizanbzyyyzzzzcntrlcwcfcwkcfcwtgarayzpgcb=h2vfjlxxnushu3040nv=90oriyapatwsprintqmarktailetakrivssupfsipdfcarianccc=12318491vre=yeschakmacwcmsmlsqrgothicgrexthyphen3.26.3415161miaototoarmndiakgonmhanokhmrlinamroonkooogamolckonaoorkhphliplrdprtiqaairohgshawsogotnsavaiibehgafhahrehbunkhojkilydiannfdqcnv=3//5nv=7olonalpatsynrejangsb=stangsatodhriebg2.13.04.06.07.08.09.052avestanccc=22e=truedeseretdt=nonewideelbasanelymaicextpictgrbashanunoohst=lvtadlambuhiddogralimbuoghamosagerunicbatakeemnoonseenshinzainkannadakayahlilinearamandaicmarchennfkcqc-1/2/645/217/2olchikiosmanyahmnpkalilananbatsarbshrdsyrczinhsharadashavianstermuaatagalogtaithamtaiviettibetanuideounknownage=10.0age=v1armenianbalinesebassavahbpt=opene=falsecompexduployanextendergujaratigurmukhihiraganahatrankaithilepchalycianteluguwanchoyezidijamoextbgamalkhaphkiratraimahajaninfkdqcnv=1/31/12erlwordlinbmercnshuscx=talupecialstagbanwatifinaghugariticvithkuqipfabhaiksuki2435nuktacirclemedialea=narrowmoticonsbengaliincbincjkexgranthainheritedinkanamakasarmultaninoblockphagspasiddhamsoyombosunuwaruabtirhutaiscjkexlamadhkhudawadinabataeannewtailue1600032000olditalicoldpermicoldturkicolduyghurpalmyrenepaucinhausamaritanthaanawb=mixidstartbasiclatinboxdrawingccc=ccc1chorasmianstrokesdeprecateddivesakuruorizspacebugineseingeorgiajamoextajavanesebinduiskanathinyehkharoshthiiscarrowsnagmundarioldpersianphoeniciansaurashtraolettermallformssoftdottedwarangcitialetternewlineerlspaceblk=cjkextdoverlaycyprominoandominotilesfractionisolatedgurungkhemapfb=linkerisarabicisspaceisvertfarsiyehswashkafkehnomirrorlinefeednextlinemedefaidrinnfcqc=maybepahawhhmongkthiscript=mlymsorasompengerandsubsylotinagriebasegazyisyllablesbidicontrolbidimirroredblk=kanaucasextahesssymbolsambiguousgraphemebasegunjalagondiompatjamooldsogdianvisargayiradicalsisposixsyriacwawjoiningtypekehnorotatebothh3jvmasaramgondiathalphanummendekikakui1.0.111e-01.250e-01.429e-01.500e+00.562e-02.563e-02.667e-01.875e-01nv=2.500e-013.125e-02.333e-01.750e-01nv=4.167e-01.688e-02.000e-02nv=5.833e-01nv=6.250e-02nv=8.333e-02oldhungarianphaistosdiscplayingcardspresentin=14tulutigalariwsegspacexidcontinueegeannumbersblock=cjkexblockelementscaseignorablunassignedreekextendedvoweljamoincyrillicinethiopickatakanaextiscsymbolsinmyanmarnandinagariavagrahatonemarkipaextensionsiscasedletterisgeorgiajoincontrolismyanmarisotheisxposixblankjg=africanfehdalathrishknottedhehreversedpe=nonjoininglb=breaknonstarterwordjoinerowsurrogatesayannumeralsisctechnical-5.000e-01patternsyntax5.26.1verticalformsncientsymbolsbc=righttoleftblk=arabichanreadingemojicomponentgc=othereekandcoptichighsurrogateslphabeticpfkhmersymbolsnonjoineriscyrillicisethiopicmahjongtileskashmiriyehrohingyayehstraightwawyehwithtail=dualjoining=joincausing=leftjoining=transparentbeforeexclamationinseparableinseperableviramafinalnfcquickchecknumerictype=epresentin=v1psalterpahlaviquotationmarkdoublequotesinglequoteany_foldsquotemetaasciihexdigitarabicletterotherneutralblk=georgianblk=myanmardoubleabovekanavoicingontrolpictureseastasianwidth=letternumbergraphemeextendeadingjamoimperialaramaicoverstruckpurekillerdecimalnumberenclosingmarkfinalsemkathverticaltail=rightjoininghebrewletterinfixnumericmeroiticcursiveiscpictographsnfdquickcheck36numericvalue=4oldnortharabianoldsoutharabian=extendnumletglueafterzwjzanabazarsquareblk=cyrillicblk=ethiopicb2# IwyK S-H1a^ @ f\ Bu (N) ! 4 R$ 2 Z >   N_Ak)wm .   2. w mB] 4  Q R:OrXyZ Z Z MwO) R/*RbV | `c q H f Q/ C VGuufP3Af' C^\R+0wRK|m* " Z-!3<w =& $ w]`c \ $  u "  .7  Cw  W Z  D6T2f4|wf\ Z 3 . /uN!7 !Z $Z V A.C8d$$ A 5 w   ' *h Z XZ  a([! C " 6 " S8  * Z  / 88uB I* j  -=R  6j  Rp^ Z  }"  5 Ro :i3) q ) ?'2$f67  Z j C  1R)Rr{" d >-  fWf  u [LDZRm1 |w] c Z6;   @ .*#R)f [1]C + T| @ w| uR A+ s+2|!  B 6vffw #wRw :S  v t_u   ' + s Rr+ tZUN [CRNS.p  +C Z  f#{l  1 C<80  9Ck  1cm^ %4 x   'ZWru RR     C u g @t!  m =Z !RR9(o7]m Z  -  ko fE2 |Z tyj  , !8? ZI[4 UA  duf ) 7v t4 Ye  T  k    j#8 "  $  um f   !  Z (Z ef><3 2  T Rw    ~Izq  R f7.  A.R _   *f z fe  wA"}5 5:j  x' _!) R+$hmlluXbBf    _ K "b ! \ N q+$ - Ce  +zE ;Z  |*^X")Lf &R2 j ) [/u < j  K p&h A,`CGfbJf45 u f   , ewfVw =S v  Zz 3b   A eR;[ L mw*  u bda94 \_B<D t < Vq3ul   !m lw r9Rqt   WIOu ? * l 1  V Af5 w  $ (5#? ] ' Y o   4   X & j 5  !!(+r ^ [U R *lZ  u Z  ,f#{tbRj  w?i Z ]Z $   w N kR2 Gu vh Af$wj C=] R"bR@1   l   H  j "u0h 9"Z /R7  U*J  D v <  o !!(+ e @ S  3fZ  MuO  dZ    6E*, fPCC yaAx ^ b '&8 l ;J "!CzCJ0uZ f5 Z  Z Y f0n   {} t- ){ j  C) ,du  CR4  g:Q) R/*yZ   Z I  YR! A fCuZ  ff`c N f  !  5' B|u f|Z ;  Q(; , f :  =fh, u S  C   H ATp Oj 19 Wf$  8 3 f . C^)! RT.e~0st { :<u5f7 2  n ,Z  j'4!!' / | Zw Mb >fC f-=  ,fC8f/f Y8*{""     _ ew Ln] B  = At! 4 Vf%CPLh" %   4 A  PII'uj 8   6'[" kAE s 3b A"~{j k  3 !C+ !#R\ AC  6'9 d  &  QR^"!DCw _f e up0!f2lI0t[ X2!#'  Z ' % l .wNZ RIp Z V r  R^\XfZ } p ? |[ V w4 j u    G 4 `  6 <) T(  8uwK"  :5m Cj/f   Q  w~  R( 4 ! R  0]j8e Lfz_ *  '' 7 T 3 R$D, ! f +Z X  NC  m'I fP{j$ D * "   ZIWf Q. f QZ!d"fWr" s .A o Cb(#(2i_ H F{WA j {j Oj &  .C"k C^ 6D+ZTR ) L+2 I @+C B4  lw" 4  Wu uZ   uf+ iPf+^!"= ;wm =Rf68/Rw ") 1j !  Z 9"  *  )] %  'Q u  .q Re T c^ ; %t) % RCI4 7  FU"Ri?  D S   =*  6  y'  6 R  C ` O k)PVDv $hRv  euf_w #ppQG" .0uP< s r  IV   9  sjWu T' . c(fRw ^C  g\ u 0Cp ff6@R FD J !675  j%  8uBZ D+j 6Z J 2  g 7 Iw ] 0 f f > j +^=  N  !!  j '\ A )*u ! Z >  =  5  U " 0)fu qf6j |   iWM( Z A  8)fR9f"lw8t$S  (A C3 |,   ; h uRA$ cwqZ  " ? Rl CV"6Q nRl$ 73 fe  TZ0sZ   " T$CZ RC~ G8N3T 3#  $ 7 T `        f/-0R67.t_ Tp    w Q;P  ! I% f"wC C wZ T2j 4 .cD w< R>u .FX"|^ R)V"Z Z  M .]   6 ! C3 +0p! !B II u}-3 ! Z  ,/2X t C 4 7?@#q  "i R^ b 8f 3jA$ V2S O fmlC7v>'tnit~] MO k CT tC!ZXop"nraf [u !Ro h  @" {: w \Z  s#{V& ,ff#$Ws% 3  7i 3S  "f w w,   q j /2o 'C(jmb % mf/  +_v % Cg  Z  C> fR 4  hA z l  χ] )uRC kC*9 Z CRV wd : 8Z V"T2 ZvCjG7Z e  T"Ws"  4nA l_   C!f   )p}T)  4 4<!t Xn 3 A2c2  =<u>RD% C>   `_^ V@fz] A  dJ0c w/at! n_^ R df^\ / Nvu } p AuC "b!   Ri, f(3RQ7Z  !AJ   lD t < f2" R 'O ffH8)4 s  b#um g Z n  V )JX"K,wN;  C|jfg  S GB! fnR]J   C M j fJ0R: .   t!S!RP{ fX  q 4* 4 O R4 A0b  h )`2f  ! X  p.   6*u J7G8T 2! 'f  f> 3 T 3 ) 5 *A,   - j @Cf%" i &Z     :  uC^- Z "  e0C1F<u :pQZw N    vR/m $ AWj w  B ` !  4 )Ww'R7hq"n  R|Z  o   ROuA Nct#u jyCO+  ,fr@  @Z  2t0o $ c IXof> ;"XZ   *Z  C4  dK|RTX"- O  f78=; .v !#h   O] m  C   X" ,!"Z  w  R0uRC C. M '  "n8w 1 J!2Th ?qF VAZ  R M@ ?"[ : 8!- ' Am@1 ^   ) q 1 9" {""%.2%6j   L Qf+Z _ wLj  `fN>  ZqA" 3u_$ FRT 3  f 9Z  _r  [K dB?( "n  o  AC CnRp xFf/+* =fyawHfu R]j #Z  :"!   C+Z ]r:Ox 5xp Cg f[a' Vp4      ZTR)J * @u 3AC 6f#Cvvw F C  Z ' uj  $ 4 MC  8?C>.:" #C, BC;!eu L Vi+fP.C*wC  %Z !DZ [m Cjv Z qR} %fJ! fTpWZ ,$ f/ lR  2j |  ^ ?,) _j   f\ A ' Z R fgZ  kC# xX RA /pwQf6t!f5i"|u|R-  5Cu% nn!> Z ^  %+ fKZ5{ d  &  guCR+ D " L': A    e 3KX  6U   * '  e@   MwOj C 1* Z 80@  S 8 2 $4 Z   uu*4bNSg RfC U!vWT;  e  ' 4FC$z ] $ TX!LD fB6 *|^ 4 3f#8  l I,x - C"+  <Z  I :Z  $ 7 "#B X }" uAC.t kCw  Cj W[0wkWC8R 2SZ xT.w  ?daww# {2  zG ? # Z   R cftR $f@2rW wV  5+ o7Re) (D  Cj   -:) R' "  =b% 3R i, R =!  Z l Z j 1h," [ 8Q C l9"j r  Z '  Z  Bm' C5 eZ +}&fZ T 5= TR1 UJX*  "*C"9fEIa7*wZ ^\#+   4 f.qc7hCCfGZ +  +,u% Q9G_v  .C |A1 2P AN  wZ   A @  6 of+0i"  r ^ [)qdu fl|u )T@ ? H aukBlF | ru ZzR_ Kp>*j %i2%!  >At8   $#RN  ) ] % 3 i u MC@   L Z |OQ . h Bu+--  *  Z $6  j Z .    ) X) $  ko@uj T&  4CusRJsK.^ U] u a> B  p~fz  %Zj?F !|pwQ ?'&f(Z 6  ?Z w f.J  2CURH ^\v ~  ?f4W*! Z ;X"r K  ~ j qC ^v" *'u<>+8 u S R7  ^ ,R  c 5~[0" ~ ?J2! mlw  qJ !+N $ 2<w>CMf c *]fIZ s XfAZ R)J  }C!Bf"bf+ s] C ^   'u' P  Z l  X YyC  e "  '1] l *S  RC  Tn j  2 [ p x*4Z !  ?O, u5 %4 ^ " + ZC    # /"  1 Z  Z : +f RXt4^ \ ' +jZv Z M@R/1R  qf  Z \A ) _W " 5D v <u) BR0 w_ 1 .  '6 !f R~  ^\ f1C7  TT OFR3 ki  ^ f5{r4#'6 Fw+   /2b *8)  Nuj "*" #/H T7/  uuZ 3Z `C]rw  +lRsuMO S flX] U!02] "j  }  QMuO!["f {  Lk f R 3  j VUZp]f: U Cs. e jmRV"ff . fCZ  R  @) X3wNafsRo"Sr!C)  f> !A  Z p 8 !D{""2 z   C[+) ~  ?X"  * 8)R[!dI DR5  !/+)R/mf b+ + fmw  X$ (p, |4 e3REC 6 I7 Cy2@2Z0t[/u(R % @o   -Wh" 4 >,!   R<Z ^R. 4 Z^({Z 6i *t f   Z  V; f/ C_j l]  C =.nP"Z =J3  !O&D{ tj   f C|+pi RV   8 DRS % ^  Z |  / LAhC R ,   Z }+q7_Ad  &b5+ HuRe kRIda | C  ", { Z \  9 Z5 !fZ4 Dfb>hwcv  #.wfPI t! f_ 1> yE W* Af- ]Z C b .A#{pW o w puQ R  CR>; v $ = -   % Rw "j  @f% [ t > " )6 cq? OK  0_ * W$.t fkZ "I IywD w<( ud%8 f"}4  <R j  c*U!B_% 7/v$ RW 5   RC puQAh Cs  #% yh]  P Z z A    C [4 NtZ ]  "!ZS\? f/ pm Tf} o fhZ ww! 5 %R.r v  $  S*F:   FAlC C RP{o  _t5  m h{ `xa:5x2k$ ctR  2G     k(  u I %7;u A , WbR =RJ7{. ?f  nwP@Z AS R Ci 2?)   6>  6G/a# 8Z  ]  CF :R <u>V"Z P 3  !EH  Z 3  w)R-0[+:  "RLuEvI u   @  jRW" #'  <6- 2 !D_A$C! <4 (  % f] 3 j #Q [  f/B?Z % 3koA\ ) 5> [+ \Z  mXh u*Z-S!b ;C2 Z R\ -CV !f@ ?   M  ' AC v 6]w Z  CtCo =&   "a  >;\ A205(a yC  c f_ 1Z Z e u E  "+ *f') 9 C  WQfZkj  v$I   pA#R|  AC| Z  -  *   "   z IS:j 0 ? eR'Q Q %UZf6:fjj > e  +*uP? JfZ ! l  Z  .   w  B4      l ;  # + b  )T f:  u P  fj  mSD   2TR  d A|C/JaRdM  hF   $Ci& X!.7 >]R[u qI5iu  u BJ !'-  ~  u! A t" <#\ 't2ffNf" NZ - 2s!dww !- >J <kDI5{NV8_0V9_0v100v11v110v120v121v130v140v150v151v160v20v21v30v31v32v40v41v50v51v52v60v61v62v63v70v80v90Surrogates should never appear in well-formed text, and therefore shouldn't be the basis for line breakingSupplanted by Line_Break property values; see www.unicode.org/reports/tr14vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv\ZVRv^vvvvvZ8v4v2U 5555555531zWasq>~zv~FXV#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.>>>7[>_>Y>>y5>5>>>>>>>>>>>>>>>1>y>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>EfZ0W@ A( (!0 `  0000PP(( hhhhn  (( ! / 0 _ ` 00?A[a{EFptvxz~01W` FHNPXYZ[\]^_~q r  !!!! !!!!!!$!%!&!'!(!)!*!.!/!5!9!:!JP`ino57 DF NPZa};@~ ( 0 D E R S _ }  # #)#+#h'v''''')))))),,,-p-q-./.0.P.R.^.00000 00010=0>00000 st~txΨШ.0_`Ωީ\`ު>@0STbcdhijl !;>?@[\]^_fopWX  ? @ P Y     9 @   n o UZGN@Dtv8>KPZ\]^AD`m<?;<DG?G AFprCP p$u$//njpjjj7k?BCDEFGHIY\< = M N R S < = M N < = M N < = M N U W ; = M N 8;HL56789:qstuz~789;459:;<`a45DElm78 --*00000,-ĨŨ+.ST'.  9 ; ? @   FHKLMQFGpq35st57;=MNBCFG?@+,9;=?CD45GH?@BCDFAC/a0ajjooejms{JK=!aA<,>Bbt8=C!D  eZ Z ,#+> ~ ^ ?  * <w %   $UYfl  u %CyhX+\ C3  ) Z T>  j  8 ARg [!  ! )/pwQ> ;*nf, v fGZ 6> TC;wS  *l v|$ G1xTj e !. A. ;5f5Z #  C  AwV Z  , zz $ gf> AC 6i .  uAw f S :n0w i -Z zw f $j w  f]jC!#A% C=N  Hq /^\R=4 ZfJ eoN 4u R ZA   *  <*H j OZ[   3/NuN  ARcR>   ^ %!  f7 2] nw RC 6 e@ fimC} WfxZ Z IWr  sCwuP  )CK e) [8}-tqR-ff   . Wf4 _Ahf , R]rj u  ~"iT, ] %C! `n  Rf80I u UYZ 9"!C .   +:Cu  S #8R3:X ) 8 K;Znyenfn 0f^\R_ Kf _ ,|;  $ fAz.  Djt -! uf>A :' ?Z vwZ  n0 I Z|;f P$vf t  GZEZ >e \ A) T( g;! I5 ICt MO   ;   M/1f,fr|r.C  @*R .fC w f#w C 3 w  ]! S1cmIv u'!Z , ?!$MuOR  w ] ' !C6Z  t $o MZ } Cf Z 4!!'    9  `- Z"Z u    <* C 6f-Z 2Z m_ d  &3ReC3puQIl, sR f6  >ftn\ ZWuf ZW wj   $ ) &:  Rh  #C t Z  nR~\ fZ   f u  @# .   R fK ! f  h ' 8u  4S :C uA &  C.! M* Z  ? * 9" j Oi/  5 %  Rm /  +u w  9f{ c^ C?C^\fb5" + </9uzD2` yC% 32Z\c=yqdA *  O t CF*  w  Z K f. % 7j 1B & a) )@ eh !u EZ  C j7?*) 2f4!     u C)Jf/abJ V >;]  % 3w ]   w *CfZ u e w f QR^F.q  5  j' RI  5! 'p  Z  f8w3+;]   * p. f  ] uRhk C t G nl  4 ff|A!#C_ I YM.v   m [p h xZ y g u f   o Z m! j x K" ^ <\ N  j  R ) d>cZ i% C  pbJfUD u<  6uj R (f: Sr  ! X+. 1 9\ ZTQZ  ] _ 1  @ ?f AE w'Q" B  1 @ T $W:^ ? z! C]w ? G+R|3f;Z )S  ]*9"pt Q@ H :e R,/f v 4 [ MOj   B" R 64 _ C| - 3  X . uCC f&t= Pf?@wf/ x %4  H A 2 j 5 n     :4 j ]fn R f RZ yh R QZ \( wD "' R Rn D] C Qf]C+ wf]Z  ^\   RRU) AJ2Z , qgR> g& Z  %(  !f 0-` C"* Z f# @ ?A, |b5<R> ;w Vs]j  MC^8 a! rf  e L tf*) ^< +   < f|R/Mj "! yPO"m "!@fX+Z IhC_wCIuC$08 )Z 3  qCh /Z  Cf3b :wG8  wm C4Z  y    $ R ?N*_ 1Z % 3b2 4 f;Z ?r 8yf p w R   C- '  *PV"4 &ax  , 5 u   - R 8 f  ) R#89"R- m*: E4 $   RZW h R%(  C lAp!Z" $ZWq ]j6 >{ fc/  ecA  f.  Z Z   *fu wJ !Z Z?4j T fle L Yh<!j 4 R ]Zl   s! U$ (r  [  j  fZ NA3  !S : . fp' <hf j kAZkCl Nygr   @ A[  j l4!  (2%    )R7 t@Zf )  9G   l9rt T  K   % /fewf[%.  . !J    D <j p*mfFw  j     )??   /  uIpt! ^ ; R^\fl f   U  =4 F  AXy Ej 1f uAC C7i f/f Al & 5  w  ud Ruz  p.R# Z 5T r t -     zZ w" 5>"  * +B<  C  >    Z 7i 6 ]#: ! `  zf l: 8u'lu   IT P t" dnP S : 4 ?*BuZ tZ q   uZ Z jC  yTf[  C~!Z"uSuYuEC_fCT "% R4C 2 !' m Z ! 9|j+~CH 6X_* 3  C ,;f  fZ(% /J!RZ5iff \RzCjZ V<> .^ $j R nV&  f]*qh :8RNf RVs (f=Z  "  /vRuzm Z tZ Z Wru 5  A   fw "fF_A f +  WI )Rfn m eIWq fu7  6P" X )C @ "I-w4"" A}%?$   uS :Y  KI!d w Z  W" X&"* v  n vp0I  e+RR >! Cu r   D:j y6T# u %RNy{  Z ZCD+H" W2l?~"{+3n]  R4Y+6'  `c; @  ktn @Z "*   & .  : R@: Z T5 % x fR n g  !xRH f *Z CX" LC  ;  o l  f"C: '^fh ! X $ .uf*Z Z .h M+rf)J >RC6 e kR6!R|38 f7 x" a =f4- t " R]`bZ ;5fB? 7 t4 J l9`c[ 1   4!#) 2c4!!'GR yr t jU!fz *^%CN `c  Z 80ViA SR Amw   Z |j67( R?5I :  c~jZ _Aff Pf^" %   Z !#  IZ @RfhB<i ZkB  w]' f`cu) *#  Hc NA  F6 y -WNA0.  Z = =C3/161/51/41/33/82/55/121/27/123/55/82/33/44/55/67/811/123/225/237/249/2511/2613/2715/217/210121315161718192021222324252627282931323334353637383940414243444546474849506070809010020030040050060070080090010002000300040005000600070008000900010000200003000040000500006000070000800009000010000020000021600030000040000043200050000060000070000080000090000010000001000000020000000100000000100000000010000000000100000000000010000000000000000NaNDeDecimaldecimalDidiDigitdigitNoneNuNonoYesyesMaybemaybeAIaiAKakAksaraaksaraAksara_PrebaseaksaraprebaseAksara_StartaksarastartALAlphabeticalphabeticAmbiguousambiguousAPapASasB2b2BAbabbBKbkBreak_AfterbreakafterBreak_BeforebreakbeforeBreak_BothbreakbothBreak_SymbolsbreaksymbolsCarriage_ReturncarriagereturnCBcbCJcjClose_ParenthesiscloseparenthesisClose_PunctuationclosepunctuationCMcmCombining_MarkcombiningmarkComplex_ContextcomplexcontextConditional_Japanese_StarterconditionaljapanesestarterContingent_BreakcontingentbreakCPcpExclamationexclamationGLglGlueglueH2H3h2h3HYhyHyphenhyphenIDidIdeographicideographicInfix_NumericinfixnumericInseparableinseparableInseperableinseperableISisJLjlJTjtJVjvLine_FeedlinefeedMandatory_BreakmandatorybreakNext_LinenextlineNonstarternonstarterNSOpen_PunctuationopenpunctuationPOPostfix_NumericpostfixnumericPRPrefix_NumericprefixnumericQUquQuotationquotationSGsgSpaceSurrogatesurrogateSYsyVFvfVIviViramaviramaVirama_FinalviramafinalWJwjWord_JoinerwordjoinerZWzwZWSpacezwspaceDual_JoiningdualjoiningJoin_CausingjoincausingLeft_JoiningleftjoiningNon_JoiningnonjoiningRight_JoiningrightjoiningTransparenttransparentAfrican_FehafricanfehAfrican_NoonafricannoonAfrican_QafafricanqafAinainAlaphalaphAlefalefBehbehBethbethBurushaski_Yeh_BarreeburushaskiyehbarreeDaldalDalath_RishdalathrishFarsi_YehfarsiyehFefefehFinal_SemkathfinalsemkathGafgafGamalgamalHahhahHamza_On_Heh_GoalhamzaonhehgoalHanifi_Rohingya_Kinna_YahanifirohingyakinnayaHanifi_Rohingya_PahanifirohingyapaHehehehHeh_GoalhehgoalHethhethKafkafKaphkaphKashmiri_YehkashmiriyehKhaphkhaphKnotted_HehknottedhehLamlamLamadhlamadhMalayalam_BhamalayalambhaMalayalam_JamalayalamjaMalayalam_LlamalayalamllaMalayalam_LllamalayalamlllaMalayalam_NgamalayalamngaMalayalam_NnamalayalamnnaMalayalam_NnnamalayalamnnnaMalayalam_NyamalayalamnyaMalayalam_RamalayalamraMalayalam_SsamalayalamssaMalayalam_TtamalayalamttaManichaean_AlephmanichaeanalephManichaean_AyinmanichaeanayinManichaean_BethmanichaeanbethManichaean_DalethmanichaeandalethManichaean_DhamedhmanichaeandhamedhManichaean_FivemanichaeanfiveManichaean_GimelmanichaeangimelManichaean_HethmanichaeanhethManichaean_HundredmanichaeanhundredManichaean_KaphmanichaeankaphManichaean_LamedhmanichaeanlamedhManichaean_MemmanichaeanmemManichaean_NunmanichaeannunManichaean_OnemanichaeanoneManichaean_PemanichaeanpeManichaean_QophmanichaeanqophManichaean_ReshmanichaeanreshManichaean_SadhemanichaeansadheManichaean_SamekhmanichaeansamekhManichaean_TawmanichaeantawManichaean_TenmanichaeantenManichaean_TethmanichaeantethManichaean_ThamedhmanichaeanthamedhManichaean_TwentymanichaeantwentyManichaean_WawmanichaeanwawManichaean_YodhmanichaeanyodhManichaean_ZayinmanichaeanzayinMeemmeemMimmimNo_Joining_GroupnojoininggroupnoonNunnunNyanyaPeqafQaphqaphRehrehReversed_PereversedpeRohingya_YehrohingyayehSadsadSadhesadheSeenseenSemkathsemkathShinshinStraight_WawstraightwawSwash_KafswashkafSyriac_WawsyriacwawTahtahTawtawTeh_MarbutatehmarbutaTeh_Marbuta_GoaltehmarbutagoalTethtethThin_YehthinyehVertical_TailverticaltailWawYehYeh_BarreeyehbarreeYeh_With_TailyehwithtailYudhyudhYudh_HeyudhheZainzainZhainzhainAvagrahaavagrahaBindubinduBrahmi_Joining_NumberbrahmijoiningnumberCantillation_MarkcantillationmarkConsonantconsonantConsonant_DeadconsonantdeadConsonant_FinalconsonantfinalConsonant_Head_LetterconsonantheadletterConsonant_Initial_PostfixedconsonantinitialpostfixedConsonant_KillerconsonantkillerConsonant_MedialconsonantmedialConsonant_PlaceholderconsonantplaceholderConsonant_Preceding_RephaconsonantprecedingrephaConsonant_PrefixedconsonantprefixedConsonant_SubjoinedconsonantsubjoinedConsonant_Succeeding_RephaconsonantsucceedingrephaConsonant_With_StackerconsonantwithstackerGemination_MarkgeminationmarkInvisible_StackerinvisiblestackerJoinerjoinerModifying_LettermodifyingletterNon_JoinernonjoinerNuktanuktaNumber_JoinernumberjoinerPure_KillerpurekillerRegister_ShifterregistershifterReordering_KillerreorderingkillerSyllable_ModifiersyllablemodifierTone_LettertoneletterTone_MarktonemarkVisargavisargaVowelvowelVowel_DependentvoweldependentVowel_IndependentvowelindependentbottombottomandleftbottomandrightleftleftandrightNAnaOverstruckoverstruckrightTopTop_And_BottomtopandbottomTop_And_Bottom_And_LefttopandbottomandleftTop_And_Bottom_And_RighttopandbottomandrightTop_And_LefttopandleftTop_And_Left_And_RighttopandleftandrightTop_And_RighttopandrightVisual_Order_LeftvisualorderleftLinkerlinkerDefault_IgnorabledefaultignorableDeprecateddeprecatedExclusionexclusionInclusioninclusionLimited_UselimiteduseNot_CharacternotcharacterNot_NFKCnotnfkcNot_XIDnotxidObsoleteobsoleteRecommendedrecommendedTechnicaltechnicalUncommon_UseuncommonuseAllowedallowedRestrictedrestrictedLeading_JamoleadingjamoLVLV_SyllablelvsyllableLVTlvtLVT_SyllablelvtsyllableNot_ApplicablenotapplicableTrailing_JamotrailingjamoVVowel_JamovoweljamoCNcnControlcontrolPPppPrependprependSMsmSpacingMarkspacingmarkCased_LettercasedletterCcccCfcfCnCntrlcntrlCocoConnector_PunctuationconnectorpunctuationCsCurrency_SymbolcurrencysymbolDash_PunctuationdashpunctuationDecimal_NumberdecimalnumberEnclosing_MarkenclosingmarkFinal_PunctuationfinalpunctuationInitial_PunctuationinitialpunctuationLCLetterLetter_NumberletternumberLine_SeparatorlineseparatorLlLmlmLoLowercase_LetterlowercaseletterLtLumarkMath_SymbolmathsymbolMcmcMeMnModifier_LettermodifierletterModifier_SymbolmodifiersymbolNdNlNonspacing_MarknonspacingmarkOther_LetterotherletterOther_NumberothernumberOther_PunctuationotherpunctuationOther_SymbolothersymbolParagraph_SeparatorparagraphseparatorPcpcPdpdPfpfPipiPoPrivate_UseprivateusePspsPunctpunctpunctuationScSkskSmSosoSpace_SeparatorspaceseparatorSpacing_MarkSymbolTitlecase_LettertitlecaseletterUnassignedunassignedUppercase_LetteruppercaseletterZzZlzlZpzpZszsFullwidthfullwidthHalfwidthhalfwidthNaNarrownarrowNeutralWWidewideCancanCanonicalcanonicalCirclecircleComcomCompatcompatEncencFinfinFinalfinalFontfontFrafraFractionfractionInitinitInitialinitialIsoisoIsolatedisolatedMedmedMedialmedialNarnarNbnbNobreaknobreakNon_CanonnoncanonNon_CanonicalnoncanonicalSmallsmallSmlsmlSqrsqrSquaresquareSubSupersuperVertvertVerticalvertical8491103107118122129130132133202214216218220222224226228230232233234240AboveAbove_LeftaboveleftAbove_RightARarATAataATARatarATBatbATBLatblAttached_AboveattachedaboveAttached_Above_RightattachedaboverightAttached_BelowattachedbelowAttached_Below_LeftattachedbelowleftBelowBelow_LeftBelow_RightbelowrightBLblBRbrCCC10CCC103CCC107CCC11CCC118CCC12CCC122CCC129CCC13CCC130CCC132CCC133CCC14CCC15CCC16CCC17CCC18CCC19CCC20CCC21CCC22CCC23CCC24CCC25CCC26CCC27CCC28CCC29CCC30CCC31CCC32CCC33CCC34CCC35CCC36CCC84CCC91ccc10ccc103ccc107ccc11ccc118ccc12ccc122ccc129ccc13ccc130ccc132ccc133ccc14ccc15ccc16ccc17ccc18ccc19ccc20ccc21ccc22ccc23ccc24ccc25ccc26ccc27ccc28ccc29ccc30ccc31ccc32ccc33ccc34ccc35ccc36ccc84ccc91DAdaDBdbDouble_AbovedoubleaboveDouble_BelowdoublebelowHANRhanrHan_ReadinghanreadingIota_SubscriptiotasubscriptKana_VoicingkanavoicingKVkvNKnkNot_ReorderednotreorderedNRnrOVovOverlayoverlayVRvrOpenAegean NumbersAegean_NumbersaegeannumbersAlchemicalalchemicalAlchemical SymbolsAlchemical_SymbolsalchemicalsymbolsAlphabetic_PFalphabeticpfAlphabetic Presentation FormsAlphabetic_Presentation_FormsalphabeticpresentationformsAnatolian HieroglyphsAncient_Greek_MusicancientgreekmusicAncient Greek Musical NotationAncient_Greek_Musical_NotationancientgreekmusicalnotationAncient Greek NumbersAncient_Greek_NumbersancientgreeknumbersAncient SymbolsAncient_SymbolsancientsymbolsArabic_Ext_AarabicextaArabic_Ext_BarabicextbArabic_Ext_CarabicextcArabic Extended-AArabic_Extended_AarabicextendedaArabic Extended-BArabic_Extended_BarabicextendedbArabic Extended-CArabic_Extended_CarabicextendedcArabic_MatharabicmathArabic Mathematical Alphabetic SymbolsArabic_Mathematical_Alphabetic_SymbolsarabicmathematicalalphabeticsymbolsArabic_PF_AarabicpfaArabic_PF_BarabicpfbArabic Presentation Forms-AArabic_Presentation_Forms_AarabicpresentationformsaArabic Presentation Forms-BArabic_Presentation_Forms_BarabicpresentationformsbArabic_SuparabicsupArabic SupplementArabic_SupplementarabicsupplementArrowsarrowsASCIIasciiBamum_SupbamumsupBamum SupplementBamum_SupplementbamumsupplementBasic LatinBasic_LatinbasiclatinBassa VahBlock ElementsBlock_ElementsblockelementsBopomofo_ExtbopomofoextBopomofo ExtendedBopomofo_ExtendedbopomofoextendedBox DrawingBox_DrawingboxdrawingBraille PatternsBraille_PatternsbraillepatternsByzantine_MusicbyzantinemusicByzantine Musical SymbolsByzantine_Musical_SymbolsbyzantinemusicalsymbolsCanadian_SyllabicscanadiansyllabicsCaucasian AlbanianCherokee_SupcherokeesupCherokee SupplementCherokee_SupplementcherokeesupplementChess SymbolsChess_SymbolschesssymbolsCJKCJK_CompatcjkcompatCJK_Compat_FormscjkcompatformsCJK CompatibilityCJK_CompatibilitycjkcompatibilityCJK Compatibility FormsCJK_Compatibility_FormscjkcompatibilityformsCJK Compatibility IdeographsCJK_Compatibility_IdeographscjkcompatibilityideographsCJK Compatibility Ideographs SupplementCJK_Compatibility_Ideographs_SupplementcjkcompatibilityideographssupplementCJK_Compat_IdeographscjkcompatideographsCJK_Compat_Ideographs_SupcjkcompatideographssupCJK_Ext_AcjkextaCJK_Ext_BcjkextbCJK_Ext_CcjkextcCJK_Ext_DcjkextdCJK_Ext_EcjkexteCJK_Ext_FcjkextfCJK_Ext_GcjkextgCJK_Ext_HcjkexthCJK_Ext_IcjkextiCJK_Radicals_SupcjkradicalssupCJK Radicals SupplementCJK_Radicals_SupplementcjkradicalssupplementCJK StrokesCJK_StrokescjkstrokesCJK_SymbolscjksymbolsCJK Symbols and PunctuationCJK_Symbols_And_PunctuationcjksymbolsandpunctuationCJK Unified IdeographsCJK_Unified_IdeographscjkunifiedideographsCJK Unified Ideographs Extension ACJK_Unified_Ideographs_Extension_AcjkunifiedideographsextensionaCJK Unified Ideographs Extension BCJK_Unified_Ideographs_Extension_BcjkunifiedideographsextensionbCJK Unified Ideographs Extension CCJK_Unified_Ideographs_Extension_CcjkunifiedideographsextensioncCJK Unified Ideographs Extension DCJK_Unified_Ideographs_Extension_DcjkunifiedideographsextensiondCJK Unified Ideographs Extension ECJK_Unified_Ideographs_Extension_EcjkunifiedideographsextensioneCJK Unified Ideographs Extension FCJK_Unified_Ideographs_Extension_FcjkunifiedideographsextensionfCJK Unified Ideographs Extension GCJK_Unified_Ideographs_Extension_GcjkunifiedideographsextensiongCJK Unified Ideographs Extension HCJK_Unified_Ideographs_Extension_HcjkunifiedideographsextensionhCJK Unified Ideographs Extension ICJK_Unified_Ideographs_Extension_IcjkunifiedideographsextensioniCombining Diacritical MarksCombining_Diacritical_MarkscombiningdiacriticalmarksCombining Diacritical Marks ExtendedCombining_Diacritical_Marks_ExtendedcombiningdiacriticalmarksextendedCombining Diacritical Marks for SymbolsCombining_Diacritical_Marks_For_SymbolscombiningdiacriticalmarksforsymbolsCombining Diacritical Marks SupplementCombining_Diacritical_Marks_SupplementcombiningdiacriticalmarkssupplementCombining Half MarksCombining_Half_MarkscombininghalfmarksCombining_Marks_For_SymbolscombiningmarksforsymbolsCommon Indic Number FormsCommon_Indic_Number_FormscommonindicnumberformsCompat_JamocompatjamoControl PicturesControl_PicturescontrolpicturesCoptic Epact NumbersCoptic_Epact_NumberscopticepactnumbersCounting_RodcountingrodCounting Rod NumeralsCounting_Rod_NumeralscountingrodnumeralsCuneiform_NumberscuneiformnumbersCuneiform Numbers and PunctuationCuneiform_Numbers_And_PunctuationcuneiformnumbersandpunctuationCurrency SymbolsCurrency_SymbolscurrencysymbolsCypriot SyllabaryCypriot_SyllabarycypriotsyllabaryCypro-MinoanCyrillic_Ext_AcyrillicextaCyrillic_Ext_BcyrillicextbCyrillic_Ext_CcyrillicextcCyrillic_Ext_DcyrillicextdCyrillic Extended-ACyrillic_Extended_AcyrillicextendedaCyrillic Extended-BCyrillic_Extended_BcyrillicextendedbCyrillic Extended-CCyrillic_Extended_CcyrillicextendedcCyrillic Extended-DCyrillic_Extended_DcyrillicextendeddCyrillic_SupcyrillicsupCyrillic SupplementCyrillic_SupplementcyrillicsupplementCyrillic_SupplementarycyrillicsupplementaryDevanagari_ExtdevanagariextDevanagari_Ext_AdevanagariextaDevanagari ExtendedDevanagari_ExtendeddevanagariextendedDevanagari Extended-ADevanagari_Extended_AdevanagariextendedaDiacriticalsdiacriticalsDiacriticals_ExtdiacriticalsextDiacriticals_For_SymbolsdiacriticalsforsymbolsDiacriticals_SupdiacriticalssupDingbatsdingbatsDives AkuruDominodominoDomino TilesDomino_TilesdominotilesEarly Dynastic CuneiformEarly_Dynastic_CuneiformearlydynasticcuneiformEgyptian Hieroglyph Format ControlsEgyptian_Hieroglyph_Format_ControlsegyptianhieroglyphformatcontrolsEgyptian HieroglyphsEgyptian_Hieroglyphs_Ext_AegyptianhieroglyphsextaEgyptian Hieroglyphs Extended-AEgyptian_Hieroglyphs_Extended_AegyptianhieroglyphsextendedaEmoticonsemoticonsEnclosed_AlphanumenclosedalphanumEnclosed AlphanumericsEnclosed_AlphanumericsenclosedalphanumericsEnclosed Alphanumeric SupplementEnclosed_Alphanumeric_SupplementenclosedalphanumericsupplementEnclosed_Alphanum_SupenclosedalphanumsupEnclosed_CJKenclosedcjkEnclosed CJK Letters and MonthsEnclosed_CJK_Letters_And_MonthsenclosedcjklettersandmonthsEnclosed_Ideographic_SupenclosedideographicsupEnclosed Ideographic SupplementEnclosed_Ideographic_SupplementenclosedideographicsupplementEthiopic_ExtethiopicextEthiopic_Ext_AethiopicextaEthiopic_Ext_BethiopicextbEthiopic ExtendedEthiopic_ExtendedethiopicextendedEthiopic Extended-AEthiopic_Extended_AethiopicextendedaEthiopic Extended-BEthiopic_Extended_BethiopicextendedbEthiopic_SupethiopicsupEthiopic SupplementEthiopic_SupplementethiopicsupplementGeneral PunctuationGeneral_PunctuationgeneralpunctuationGeometric ShapesGeometric_ShapesgeometricshapesGeometric_Shapes_ExtgeometricshapesextGeometric Shapes ExtendedGeometric_Shapes_ExtendedgeometricshapesextendedGeorgian_ExtgeorgianextGeorgian ExtendedGeorgian_ExtendedgeorgianextendedGeorgian_SupgeorgiansupGeorgian SupplementGeorgian_SupplementgeorgiansupplementGlagolitic_SupglagoliticsupGlagolitic SupplementGlagolitic_SupplementglagoliticsupplementGreek and CopticGreek_And_CopticgreekandcopticGreek_ExtgreekextGreek ExtendedGreek_ExtendedgreekextendedGunjala GondiGurung KhemaHalf_And_Full_FormshalfandfullformsHalf_MarkshalfmarksHalfwidth and Fullwidth FormsHalfwidth_And_Fullwidth_FormshalfwidthandfullwidthformsHangul Compatibility JamoHangul_Compatibility_JamohangulcompatibilityjamoHangul JamoHangul_JamohanguljamoHangul Jamo Extended-AHangul_Jamo_Extended_AhanguljamoextendedaHangul Jamo Extended-BHangul_Jamo_Extended_BhanguljamoextendedbHangul SyllablesHangul_SyllableshangulsyllablesHanifi RohingyaHigh Private Use SurrogatesHigh_Private_Use_SurrogateshighprivateusesurrogatesHigh_PU_SurrogateshighpusurrogatesHigh SurrogatesHigh_SurrogateshighsurrogatesIDCidcIdeographic Description CharactersIdeographic_Description_CharactersideographicdescriptioncharactersIdeographic_SymbolsideographicsymbolsIdeographic Symbols and PunctuationIdeographic_Symbols_And_PunctuationideographicsymbolsandpunctuationImperial AramaicIndic_Number_FormsindicnumberformsIndic Siyaq NumbersIndic_Siyaq_NumbersindicsiyaqnumbersInscriptional PahlaviInscriptional ParthianIPA_ExtipaextIPA ExtensionsIPA_ExtensionsipaextensionsJamo_Ext_AjamoextaJamo_Ext_BjamoextbKaktovik NumeralsKaktovik_NumeralskaktoviknumeralsKana_Ext_AkanaextaKana_Ext_BkanaextbKana Extended-AKana_Extended_AkanaextendedaKana Extended-BKana_Extended_BkanaextendedbKana_SupkanasupKana SupplementKana_SupplementkanasupplementKanbunkanbunKangxikangxiKangxi RadicalsKangxi_RadicalskangxiradicalsKatakana_ExtkatakanaextKatakana Phonetic ExtensionsKatakana_Phonetic_ExtensionskatakanaphoneticextensionsKayah LiKhitan Small ScriptKhmer SymbolsKhmer_SymbolskhmersymbolsKirat RaiLatin_1latin1Latin_Ext_AlatinextaLatin_Ext_AdditionallatinextadditionalLatin_Ext_BlatinextbLatin_Ext_ClatinextcLatin_Ext_DlatinextdLatin_Ext_ElatinexteLatin Extended-ALatin_Extended_AlatinextendedaLatin Extended AdditionalLatin_Extended_AdditionallatinextendedadditionalLatin Extended-BLatin_Extended_BlatinextendedbLatin Extended-CLatin_Extended_ClatinextendedcLatin Extended-DLatin_Extended_DlatinextendeddLatin Extended-ELatin_Extended_ElatinextendedeLatin Extended-FLatin_Extended_FlatinextendedfLatin Extended-GLatin_Extended_GlatinextendedgLatin_Ext_FlatinextfLatin_Ext_GlatinextgLatin_1_Suplatin1supLatin-1 SupplementLatin_1_Supplementlatin1supplementLetterlike SymbolsLetterlike_SymbolsletterlikesymbolsLinear ALinear B IdeogramsLinear_B_IdeogramslinearbideogramsLinear B SyllabaryLinear_B_SyllabarylinearbsyllabaryLisu_SuplisusupLisu SupplementLisu_SupplementlisusupplementLow SurrogatesLow_SurrogateslowsurrogatesMahjongmahjongMahjong TilesMahjong_TilesmahjongtilesMasaram GondiMath_AlphanummathalphanumMathematical Alphanumeric SymbolsMathematical_Alphanumeric_SymbolsmathematicalalphanumericsymbolsMathematical OperatorsMathematical_OperatorsmathematicaloperatorsMath_OperatorsmathoperatorsMayan NumeralsMayan_NumeralsmayannumeralsMeetei MayekMeetei_Mayek_ExtmeeteimayekextMeetei Mayek ExtensionsMeetei_Mayek_ExtensionsmeeteimayekextensionsMende KikakuiMeroitic CursiveMeroitic HieroglyphsMisc_ArrowsmiscarrowsMiscellaneous Mathematical Symbols-AMiscellaneous_Mathematical_Symbols_AmiscellaneousmathematicalsymbolsaMiscellaneous Mathematical Symbols-BMiscellaneous_Mathematical_Symbols_BmiscellaneousmathematicalsymbolsbMiscellaneous SymbolsMiscellaneous_SymbolsmiscellaneoussymbolsMiscellaneous Symbols and ArrowsMiscellaneous_Symbols_And_ArrowsmiscellaneoussymbolsandarrowsMiscellaneous Symbols and PictographsMiscellaneous_Symbols_And_PictographsmiscellaneoussymbolsandpictographsMiscellaneous TechnicalMiscellaneous_TechnicalmiscellaneoustechnicalMisc_Math_Symbols_AmiscmathsymbolsaMisc_Math_Symbols_BmiscmathsymbolsbMisc_PictographsmiscpictographsMisc_SymbolsmiscsymbolsMisc_TechnicalmisctechnicalmodifierlettersModifier Tone LettersModifier_Tone_LettersmodifiertonelettersMongolian_SupmongoliansupMongolian SupplementMongolian_SupplementmongoliansupplementMusicMusical SymbolsMusical_SymbolsmusicalsymbolsMyanmar_Ext_AmyanmarextaMyanmar_Ext_BmyanmarextbMyanmar_Ext_CmyanmarextcMyanmar Extended-AMyanmar_Extended_AmyanmarextendedaMyanmar Extended-BMyanmar_Extended_BmyanmarextendedbMyanmar Extended-CMyanmar_Extended_CmyanmarextendedcNag MundariNBNew Tai LueNKoNo_BlocknoblockNumber FormsNumber_FormsnumberformsNyiakeng Puachue HmongOCRocrOl ChikiOld HungarianOld ItalicOld North ArabianOld PermicOld PersianOld SogdianOld South ArabianOld TurkicOld UyghurOl OnalOptical Character RecognitionOptical_Character_RecognitionopticalcharacterrecognitionOrnamental DingbatsOrnamental_DingbatsornamentaldingbatsOttoman Siyaq NumbersOttoman_Siyaq_NumbersottomansiyaqnumbersPahawh HmongPau Cin HauPhags-paPhaistosphaistosPhaistos DiscPhaistos_DiscphaistosdiscPhonetic_ExtphoneticextPhonetic ExtensionsPhonetic_ExtensionsPhonetic Extensions SupplementPhonetic_Extensions_SupplementphoneticextensionssupplementPhonetic_Ext_SupphoneticextsupPlaying CardsPlaying_CardsplayingcardsPrivate Use AreaPrivate_Use_AreaprivateuseareaPsalter PahlaviPUApuaRumirumiRumi Numeral SymbolsRumi_Numeral_SymbolsruminumeralsymbolsShorthand Format ControlsShorthand_Format_ControlsshorthandformatcontrolsSinhala Archaic NumbersSinhala_Archaic_NumberssinhalaarchaicnumbersSmall_FormssmallformsSmall Form VariantsSmall_Form_VariantssmallformvariantsSmall_Kana_ExtsmallkanaextSmall Kana ExtensionSmall_Kana_ExtensionsmallkanaextensionSora SompengSpacing Modifier LettersSpacing_Modifier_LettersspacingmodifierlettersSpecialsspecialsSundanese_SupsundanesesupSundanese SupplementSundanese_SupplementsundanesesupplementSup_Arrows_AsuparrowsaSup_Arrows_BsuparrowsbSup_Arrows_CsuparrowscSuper_And_SubsuperandsubSuperscripts and SubscriptsSuperscripts_And_SubscriptssuperscriptsandsubscriptsSup_Math_OperatorssupmathoperatorsSupplemental Arrows-ASupplemental_Arrows_AsupplementalarrowsaSupplemental Arrows-BSupplemental_Arrows_BsupplementalarrowsbSupplemental Arrows-CSupplemental_Arrows_CsupplementalarrowscSupplemental Mathematical OperatorsSupplemental_Mathematical_OperatorssupplementalmathematicaloperatorsSupplemental PunctuationSupplemental_PunctuationsupplementalpunctuationSupplemental Symbols and PictographsSupplemental_Symbols_And_PictographssupplementalsymbolsandpictographsSupplementary Private Use Area-ASupplementary_Private_Use_Area_AsupplementaryprivateuseareaaSupplementary Private Use Area-BSupplementary_Private_Use_Area_BsupplementaryprivateuseareabSup_PUA_AsuppuaaSup_PUA_BsuppuabSup_PunctuationsuppunctuationSup_Symbols_And_PictographssupsymbolsandpictographsSutton SignWritingSutton_SignWritingsuttonsignwritingSyloti NagriSymbols_And_Pictographs_Ext_AsymbolsandpictographsextaSymbols and Pictographs Extended-ASymbols_And_Pictographs_Extended_AsymbolsandpictographsextendedaSymbols for Legacy ComputingSymbols_For_Legacy_ComputingsymbolsforlegacycomputingSymbols_For_Legacy_Computing_SupsymbolsforlegacycomputingsupSymbols for Legacy Computing SupplementSymbols_For_Legacy_Computing_SupplementsymbolsforlegacycomputingsupplementSyriac_SupsyriacsupSyriac SupplementSyriac_SupplementsyriacsupplementTagstagsTai LeTai ThamTai VietTai_Xuan_JingtaixuanjingTai Xuan Jing SymbolsTai_Xuan_Jing_SymbolstaixuanjingsymbolsTamil_SuptamilsupTamil SupplementTamil_SupplementtamilsupplementTangut ComponentsTangut_ComponentstangutcomponentsTangut_SuptangutsupTangut SupplementTangut_SupplementtangutsupplementTransport_And_MaptransportandmapTransport and Map SymbolsTransport_And_Map_SymbolstransportandmapsymbolsTulu-TigalariUCASucasUCAS_ExtucasextUCAS_Ext_AucasextaUnified Canadian Aboriginal SyllabicsUnified_Canadian_Aboriginal_SyllabicsunifiedcanadianaboriginalsyllabicsUnified Canadian Aboriginal Syllabics ExtendedUnified_Canadian_Aboriginal_Syllabics_ExtendedunifiedcanadianaboriginalsyllabicsextendedUnified Canadian Aboriginal Syllabics Extended-AUnified_Canadian_Aboriginal_Syllabics_Extended_AunifiedcanadianaboriginalsyllabicsextendedaVariation SelectorsVariation_SelectorsvariationselectorsVariation Selectors SupplementVariation_Selectors_SupplementvariationselectorssupplementVedic_ExtvedicextVedic ExtensionsVedic_ExtensionsvedicextensionsVertical FormsVertical_FormsverticalformsVSvsVS_SupvssupWarang CitiYijingyijingYijing Hexagram SymbolsYijing_Hexagram_SymbolsyijinghexagramsymbolsYi RadicalsYi_RadicalsyiradicalsYi SyllablesYi_SyllablesyisyllablesZanabazar SquareZnamenny_MusicznamennymusicZnamenny Musical NotationZnamenny_Musical_NotationznamennymusicalnotationANArabic_LetterarabicletterArabic_NumberarabicnumberBNbnBoundary_NeutralboundaryneutralCommon_SeparatorcommonseparatorCSENESETEuropean_NumbereuropeannumberEuropean_SeparatoreuropeanseparatorEuropean_TerminatoreuropeanterminatorFirst_Strong_IsolatefirststrongisolateFSIfsiLeft_To_RightlefttorightLeft_To_Right_EmbeddinglefttorightembeddingLeft_To_Right_IsolatelefttorightisolateLeft_To_Right_OverridelefttorightoverrideLRElreLRIlriLROlroNSMnsmOther_NeutralotherneutralPDFpdfPDIpdiPop_Directional_FormatpopdirectionalformatPop_Directional_IsolatepopdirectionalisolateRight_To_LeftrighttoleftRight_To_Left_EmbeddingrighttoleftembeddingRight_To_Left_IsolaterighttoleftisolateRight_To_Left_OverriderighttoleftoverrideRLErleRLIrliRLOrloSegment_SeparatorsegmentseparatorWhite_SpacewhitespaceWSFalseTrue1.12.13.03.13.24.04.15.05.15.26.06.16.26.37.08.09.010.011.012.012.113.014.015.015.116.0V10_0V11_0V12_0V12_1V13_0V14_0V15_0V15_1V16_0V1_1V2_0V2_1V3_0V3_1V3_2V4_0V4_1V5_0V5_1V5_2V6_0V6_1V6_2V6_3V7_0at most Too %s arguments for subroutine '%-p' (got %lu; expected %s%lu)Odd name/value argument for subroutine '%-p'@ A( (!0 `  0000PP(( hhhhn  ((Target of goto is too deeply nestedCan't "goto" into a "defer" block%-p did not return a true value%-pCompilation failed in requireUnknown error Smart matching a non-overloaded object breaks encapsulationfeature_apos_as_name_sepCompilation errorUnit check errorin object hookin object in ARRAY hookINCDIRPerls since %-p too modern--this is %-p, stoppedPerl %-p required--this is only %-p, stopped.0v%d.%d.0Perl %-p required (did you mean %-p?)--this is only %-p, stoppedMissing or undefined argument to %sMissing or undefined argument to %s via %%{^HOOK}{require__before}Can't locate %s: %sAttempt to reload %s aborted. Compilation failed in requireBareword in require maps to disallowed filename "%-p"Bareword in require contains "\0"Bareword in require contains "/."Can't locate object method "INC", nor "INCDIR" nor string overload via package %10p %s in @INC/loader/0x%lx/%s%s %s hook died--halting @INC search@INC entryCan't locate %s: %s: %s (you may need to install the module) (change .h to .ph maybe?) (did you run h2ph?).ph (did you run h2ph?)Can't locate %s in @INC%-p (@INC entries checked:%-p)Can't locate %sdo "%s" failed, '.' is no longer in @INC; did you mean do "./%s"?Infinite recursion via empty patternSubstitution loop%0*.*f%*.*f%#*.*f%#0*.*fNull picture in formlineRepeated format line will never terminate (~~ and @#)Not enough format argumentsRange iterator outside integer rangeE0panic: bad gimme: %d finallyExiting %s via %sCan't "%s" outside a loop blockLabel not found for "%s %-p"Can't "%s" out of a "%s" block (in cleanup) %-p%-p%s has too many errors. %s has too many errors. (eval)No DB::DB routine defineda temporarya readonly valueCan't return %s from lvalue subroutineGoto undefined subroutine &%-pGoto undefined subroutineCan't goto subroutine outside a subroutineCan't goto subroutine from an eval-stringCan't goto subroutine from an eval-blockCan't goto subroutine from a sort sub (or similar callback)DB::gotogoto must have labelCan't "goto" out of a pseudo blockpanic: goto, type=%u, ix=%ldCan't "goto" into a binary or list expressionCan't "goto" into the middle of a foreach loopCan't "goto" into a "given" blockUse of "goto" to jump into a construct is deprecated, and will become fatal in Perl 5.42Can't find label %d%lu%4peval_<(eval %lu)[%s:%u]_<(eval %lu)Can't return outside a subroutinepanic: return, type=%udefaultwhenCan't "%s" outside a topicalizerCan't "continue" outside a when blockCan't "break" outside a given blockCan't "break" in a loop topicalizerpseudo-blockformatsubstitutiondefer blockfeature_bareword_filehandlesfeature_bitwisefeature_classfeature___SUB__feature_myreffeature_deferfeature_evalbytesfeature_more_delimsfeature_fcfeature_indirectfeature_isafeature_keyword_allfeature_keyword_anyfeature_module_truefeature_multidimensionalfeature_postderef_qqfeature_refaliasingfeature_sayfeature_signaturesfeature_smartmatchfeature_statefeature_switchfeature_tryfeature_unievalfeature_unicode4 `TB8$0]/@ A( (!0 `  0000PP(( hhhhn  ((E_DEBUG_FLAGSUndefined subroutine &%-p calledUndefined subroutine calledUndefined subroutine &%-p called, close to label '%s'Can't call method "%-p" without a package or object referenceCan't call method "%-p" on an undefined valueDOESCan't call method "%-p" on unblessed referenceUseless assignment to a temporaryPRINTCan't return array to lvalue scalar contextCan't return hash to lvalue scalar contextNot %s referenceCan't return %s to lvalue scalar contextReference found where even-sized list expectedOdd number of elements in hash assignmentpanic: attempt to copy freed scalar %pAssigned value is not a SCALAR referencepanic: pp_match?? already matched onceString shorter than min possible regex match (%zd < %zd) panic: pp_match start/end pointers, paren=%d, start=%zd, end=%zd, s=%p, strend=%p, len=%zd, core dumpedREADLINEglob failed (child exited with status %d%s)$&*(){}[]'";\|?<>~`utf8 "\x%02X" does not map to UnicodeUse of freed value in iterationpanic: pp_iter, type=%upanic: pp_subst, pm=%p, orig=%pDeep recursion on anonymous subroutineDeep recursion on subroutine "%-p"a subroutineCan't use string ("%-32p"%s) as a subroutine ref while "strict refs" in useNot a CODE referenceClosure prototype calledDB::lsubNo DB::sub routine definedCan't modify non-lvalue subroutine call of &%-pNot an ARRAY referenceUse of reference "%-p" as array index@ A( (!0 `  0000PP(( hhhhn  ((an ARRAYa HASHMismatched brackets in templateNo group ending character '%c' found in templatepanic: marks beyond string end, m=%p, marks=%p, level=%dCannot compress %g in packCannot pack %g with '%c'sSiIlLqQjJfFdDpP(sSiIlLxXnNvV@.Invalid type ',' in %s()-group starts with a count in %sToo deeply nested ()-groups in %s'%c' allowed only after types %s in %sCan't use both '<' and '>' after type '%c' in %sCan't use '%c' in a group with different byte-order in %sDuplicate modifier '%c' after '%c' in %spack/unpack repeat count overflowMalformed integer in [] in %s'/' does not take a repeat count in %sWithin []-length '*' not allowed in %sInvalid type '%c' in %sWithin []-length '%c' not allowed in %s'X' outside of string in %sMalformed UTF-8 string in '%c' format in unpackCharacter in '%c' format wrapped in unpackCharacter(s) in '%c' format wrapped in %sInvalid type '%c' in unpack'@' outside of string in unpackMalformed UTF-8 string in unpack'X' outside of string in unpack'x' outside of string in unpack'/' must follow a numeric type in unpackU0 mode on a byte string%.*luUnterminated compressed integer in unpack'P' must have an explicit size in unpackfFdDcCsSiIlLnNUWvVqQjJCount after length/code in unpacklength/code after end of string in unpackNegative '/' count in unpackCode missing after '/' in unpack0000000000@XxuOut of memory during pack()Code missing after '/' in packaAZInvalid type '%c' in pack'%%' may not be used in packMalformed UTF-8 string in pack'%c' outside of string in packpanic: predicted utf8 length not available, for '%c', aptr=%p end=%p cur=%p, fromlen=%zuCharacter in 'c' format wrapped in packCharacter in 'C' format wrapped in packCharacter in 'W' format wrapped in packCannot compress negative numbers in packCannot compress integer in packCan only compress unsigned integers in packAttempt to pack pointer to temporary valueField too wide in 'u' format in packpanic: string is shorter than advertised, aptr=%p, aend=%p, buffer=%p, todo=%zd  |l L@kk?kLsj@!jZ//m`6{V~ Ak4$ 4 =EG V k4 AAUndefined sort subroutine "%-p" calledUndefined subroutine in sort%s() attempted on handle %2p opened with open()%s() attempted on invalid dirhandle %2prbrt`` ...caughtWarning: something's wrongPROPAGATE ...propagatedDiedCannot open %2p as a filehandle: it is already open as a dirhandleFILENOBINMODETIEHASHTIEARRAYTIEHANDLETIESCALARCannot tie unreifiable arrayCan't locate object method %1p via package %5pCan't locate object method %1p via package %5p (perhaps you forgot to load %5p?)Can't locate object method %1p via package %7pSelf-ties of arrays and hashes are not supportedUNTIEuntie attempted while %lu inner references still existAnyDBM_FileNo dbm on this machineAnyDBM_File.pmNon-string passed as bitmaskGETCUndefined format "%-p" called%2p_TOPtopUndefined top format "%-p" calledpage overflowPRINTFREADNegative length%s() isn't allowed on :utf8 handlesWRITEEOFTELLSEEKPossible memory corruption: %s overflowed 3rd argumentlstat() on filehandle%s%-pThe stat preceding lstat() wasn't an lstat-T and -B not implemented on filehandleschdir() on unopened filehandle %-pHOMELOGDIRCannot open %2p as a dirhandle: it is already open as a filehandlepanic: kid popen errno read, n=%u%s(%.0f) too large%s(%.0f) too small%s(%.0f) failed%s %s %2d %02d:%02d:%02d %ldalarm() with negative argumentsleep() with negative argumentToo many args to syscallToo few args to syscallJanFebMarAprMayJunJulAugSepOctNovDecSunMonTueWedThuFriSat85.OWn8ѰSnC0 but trueRWXrwx@@esMACOozScbfdpugkSequence (?#... not terminated%s in regex m/%d%lu%4p%s/regcomp.cpanic: %s: %d: negative offset: %ld trying to output message for pattern %.*sGroup name must start with a non-digit word characterpanic: no svname in reg_scan_nameReference to nonexistent named groupmsixxnRegexp out of spaceCorrupted regexp opcode %d > %dOverloaded qr did not return a REGEXPSequence (%s... not terminated in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Invalid quantifier in {,}Quantifier in {,} bigger than %d in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Assuming NOT a POSIX class since it doesn't start with a '[' in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Assuming NOT a POSIX class since no blanks are allowed in one in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/POSIX syntax [%c %c] is reserved for future extensions in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Assuming NOT a POSIX class since the '^' must come after the colon in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Assuming NOT a POSIX class since a semi-colon was found instead of a colon in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Assuming NOT a POSIX class since there must be a starting ':' in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/xdigitAssuming NOT a POSIX class since the name must be all lowercase letters in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Assuming NOT a POSIX class since there is no terminating ':' in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Assuming NOT a POSIX class since there is no terminating ']' in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/POSIX class [:%s%d%lu%4p:] unknown in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Sequence %.3s... not terminated in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/PERL_RE_COLORSRegexppanic! %s: %d: Tried to warn when none expected at '%s'Perl folding rules are not up-to-date for 0x%02X; please use the perlbug utility to report; in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/panic: regfree data code '%c' \p{utf8::([<)]>)]>Unicode property wildcard not terminatedThe Unicode property wildcards feature is experimentalplaceholder_charnames::_get_names_infopanic: Can't find '_charnames::_get_names_info -0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ() ABCDEGHIJKLMNOPRSTUWYhighlegal%s-0000%s-%XNo Unicode property value wildcard matches:_charnames::_loose_regcomp_lookuppanic: Can't find '_charnames::_loose_regcomp_lookupnumericvaluenumericcanonicalcombiningclasscccagepresentinspace; Timeout waiting for another thread to defineInfinite recursion in user-defined propertyError " in expansion of %.*s%.0f%.*s%.*e%.*s%s%lu/%luUse of '%.*s' in \p{} or \P{} is deprecated because: %sprivate_use%d=Insecure private-use overrideThe private_use feature is experimentalUnknown user-defined property nameIllegal user-defined property nameCan't find Unicode property definition~HANGUL SYLLABLE Insecure user-defined property (but this one isn't fully valid) (but this one isn't implemented)#%d POSIX syntax [%c %c] belongs inside character classes%s in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Literal vertical space in [] is illegal except under /xUnmatched [panic: grok_bslash_N set NEED_UTF8\N in a character class must be a named character: \N{...}Ignoring zero length \N{} in character class in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/\N{} here is restricted to one characterUsing just the first character returned by \N{} in character class in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Use of '\%c%c' is not allowed in Unicode property wildcard subpatterns in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Empty \%c in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Missing right brace on \%c{} in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Empty \%c{} in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Character following \%c must be '{' or a single-character Unicode property name in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/%d%lu%4p in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Unicode string properties are not implemented in (?[...])Using just the single character results returned by \p{} in (?[...]) in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Inverting a character class which contains a multi-character sequence is illegalfoo\p{Alnum}utf8.pmNeed exactly 3 octal digitsUnrecognized escape \%c in character class in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Unrecognized escape \%c in character class passed through in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/False [] range "%d%lu%4p" in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Invalid [] range "%d%lu%4p" in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/False [] range "%*.*s" in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Both or neither range ends should be Unicode in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Ranges of ASCII printables should be some subset of "0-9", "A-Z", or "a-z" in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Ranges of digits should be from the same group of 10 in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/-[]\^"%.*s" is more clearly written simply as "%s" in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/?:?-don't E_COMPILE_RECURSION_LIMITToo many nested open parensUnmatched (In '(*VERB...)', the '(' and '*' must be adjacentIn '(*...)', the '(' and '*' must be adjacentUnterminated verb pattern argumentUnterminated '(*...' argumentUnterminated verb patternUnterminated '(*...' constructasratomic_script_runatomicplbpositive_lookbehindplapositive_lookaheadnlbnegative_lookbehindnlanegative_lookaheadscript_run'(*%d%lu%4p' requires a terminating ':' in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Unknown verb pattern '%d%lu%4p' in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Unknown '(*...)' construct '%d%lu%4p' in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Verb pattern '%.*s' has a mandatory argument in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/In '(?...)', the '(' and '?' must be adjacentSequence (?P<... not terminatedSequence (?P>... not terminatedSequence (%.*s...) not recognized in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/? m can't match in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Useless use of greediness modifier '%c' in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/%d%lu%4p matches null string many times in regex; marked by <-- HERE in m/%d%lu%4p <-- HERE %d%lu%4p/Nested quantifiersUse of quantifier '*' is not allowed in Unicode property wildcard subpatternspanic: regpiece returned failure, flags: %#lx in regex m/%d%lu%4p%s/Illegal range in "# panic: %s: %d: Unexpected operation %dCode point too large in "~ %04lX%cINFTY%c%04lX%c%04lX%c%04lX%cGGGSNJNHLGLMLBLSLTLPLHMBSNGJAEYAYAEEOYEOYEOWAWAEOEYOUWEOWEWIYUEUYIDDBBJJALetteraletterCRcrDouble_QuotedoublequoteDQdqEBebE_BaseE_Base_GAZebasegazEBGebgEME_ModifieremodifierEXexExtendextendExtendNumLetextendnumletFOfoGAZgazGlue_After_ZwjglueafterzwjHebrew_LetterhebrewletterHLhlKAkaKatakanakatakanaLFlfMBmbMidLettermidletterMidNummidnumMidNumLetmidnumletMLmlMNmnNewlinenewlineNLnlNUnuOtherotherRegional_IndicatorregionalindicatorRISingle_QuotesinglequoteSQsqWSegSpacewsegspacexxZWJzwjRotatedrotatedTrtrTransformed_RotatedtransformedrotatedTransformed_UprighttransformeduprightTutuUprightuprightAdlamadlamAdlmadlmAghbaghbAhomahomAnatolian_HieroglyphsanatolianhieroglyphsArabarabArabicarabicArmenianarmenianArmiarmiArmnarmnAvestanavestanAvstavstBalibaliBalinesebalineseBamubamuBamumbamumBassbassBassa_VahbassavahBatakbatakBatkbatkBengbengBengalibengaliBhaiksukibhaiksukiBhksbhksBopobopoBopomofobopomofoBrahbrahBrahmibrahmiBraibraiBraillebrailleBugibugiBuginesebugineseBuhdbuhdBuhidbuhidCakmcakmCanadian_AboriginalcanadianaboriginalCanscansCaricariCariancarianCaucasian_AlbaniancaucasianalbanianChakmachakmaChamchamChercherCherokeecherokeeChorasmianchorasmianChrschrsCommoncommonCoptcoptCopticCpmncpmnCprtcprtCuneiformcuneiformCypriotcypriotCypro_MinoancyprominoanCyrilliccyrillicCyrlcyrlDeseretdeseretDevadevaDevanagaridevanagariDiakdiakDives_AkurudivesakuruDogrdogrDogradograDsrtdsrtDuplduplDuployanduployanEgypegypEgyptian_HieroglyphsegyptianhieroglyphsElbaelbaElbasanelbasanElymelymElymaicelymaicEthiethiEthiopicethiopicGaragaraGaraygarayGeorgeorGeorgiangeorgianGlagglagGlagoliticglagoliticGonggongGonmgonmGothgothGothicgothicGrangranGranthagranthaGreekgreekGrekgrekGujaratigujaratiGujrgujrGukhgukhGunjala_GondigunjalagondiGurmukhigurmukhiGuruguruGurung_KhemagurungkhemaHanhanHanghangHangulhangulHanihaniHanifi_RohingyahanifirohingyaHanohanoHanunoohanunooHatrhatrHatranhatranHebrhebrHebrewhebrewHirahiraHiraganahiraganaHluwhluwHmnghmngHmnphmnpHunghungImperial_AramaicimperialaramaicInheritedinheritedInscriptional_PahlaviinscriptionalpahlaviInscriptional_ParthianinscriptionalparthianItalitalJavajavaJavanesejavaneseKaithikaithiKalikaliKanakanaKannadakannadaKawikawiKayah_LikayahliKharkharKharoshthikharoshthiKhitan_Small_ScriptkhitansmallscriptKhmerkhmerKhmrkhmrKhojkhojKhojkikhojkiKhudawadikhudawadiKirat_RaikiratraiKitskitsKndakndaKraikraiKthikthiLanalanaLaolaoLaoolaooLatinlatinLatnlatnLepclepcLepchalepchaLimblimbLimbulimbuLinalinaLinblinbLinear_AlinearaLinear_BlinearbLisulisuLycilyciLycianlycianLydilydiLydianlydianMahajanimahajaniMahjmahjMakamakaMakasarmakasarMalayalammalayalamMandmandMandaicmandaicManimaniManichaeanmanichaeanMarcmarcMarchenmarchenMasaram_GondimasaramgondiMedefaidrinmedefaidrinMedfmedfMeetei_MayekmeeteimayekMendmendMende_KikakuimendekikakuiMercmercMeromeroMeroitic_CursivemeroiticcursiveMeroitic_HieroglyphsmeroitichieroglyphsMiaomiaoMlymmlymModimodiMongMongolianmongolianMromroMroomrooMteimteiMultmultMultanimultaniMyanmarmyanmarMymrmymrNabataeannabataeanNagmnagmNag_MundarinagmundariNandnandNandinagarinandinagariNarbnarbNbatnbatNewanewaNew_Tai_LuenewtailueNkonkoNkoonkooNshunshuNushunushuNyiakeng_Puachue_HmongnyiakengpuachuehmongOgamogamOghamoghamOl_ChikiolchikiOlckolckOld_HungarianoldhungarianOld_ItalicolditalicOld_North_ArabianoldnortharabianOld_PermicoldpermicOld_PersianoldpersianOld_SogdianoldsogdianOld_South_ArabianoldsoutharabianOld_TurkicoldturkicOld_UyghurolduyghurOl_OnalolonalOnaoonaoOriyaoriyaOrkhorkhOryaoryaOsageosageOsgeosgeOsmaosmaOsmanyaosmanyaOugrougrPahawh_HmongpahawhhmongPalmpalmPalmyrenepalmyrenePaucpaucPau_Cin_HaupaucinhauPermpermPhagphagPhags_PaphagspaPhliphliPhlpphlpPhnxphnxPhoenicianphoenicianPlrdplrdPrtiprtiPsalter_PahlavipsalterpahlaviQaacqaacQaaiqaaiRejangrejangRjngrjngRohgrohgRunicrunicRunrrunrSamaritansamaritanSamrsamrSarbsarbSaursaurSaurashtrasaurashtraSgnwsgnwSharadasharadaShavianshavianShawshawShrdshrdSiddsiddSiddhamsiddhamSignWritingsignwritingSindsindSinhsinhSinhalasinhalaSogdsogdSogdiansogdianSogosogoSorasoraSora_SompengsorasompengSoyosoyoSoyombosoyomboSundsundSundanesesundaneseSunusunuSunuwarsunuwarSylosyloSyloti_NagrisylotinagriSyrcsyrcSyriacsyriacTagalogtagalogTagbtagbTagbanwatagbanwaTai_LetaileTai_ThamtaithamTai_ViettaivietTakrtakrTakritakriTaletaleTalutaluTamiltamilTamltamlTangtangTangsatangsaTanguttangutTavttavtTeluteluTeluguteluguTfngtfngTglgtglgThaathaaThaanathaanaThaithaiTibetantibetanTibttibtTifinaghtifinaghTirhtirhTirhutatirhutaTnsatnsaTodhritodhriTodrtodrTotototoTulu_TigalaritulutigalariTutgtutgUgarugarUgariticugariticUnknownunknownVaivaiVaiivaiiVithvithVithkuqivithkuqiWanchowanchoWarawaraWarang_CitiwarangcitiWchowchoXpeoxpeoXsuxxsuxYeziyeziYezidiyezidiYiyiYiiiyiiiZanabazar_SquarezanabazarsquareZanbzanbZinhzinhZyyyzyyyZzzzzzzzATermatermCLclCloseLOloLowerlowerOLetteroletterSCSContinuescontinueSEsepSPSpspSTermstermUPUpperupper-1/21/3201/1601/801/641/401/323/803/641/201/161/121/101/91/81/73/201/6toje`[VQLGB=81*#Cannot modify shared string table in hv_%selseif should be elsifsssssssssssssssssssssssssssyslcsss %sG2scccccccccccccccccccccccccccccuZc cc ccKc9c////////////////////////8,// qa/UI/// ydecimal_pointPOSIX%02lXlocale.c Called by %s: %u ; errno=%d%s: %u: panic: %s%s%s Internal length calculation wrong. "%s" was not entirely added to "%.*s"; needed=%zu, had=%zu Called via %s: %u%s Called via %s: %uCan't change locale for %s (%d) from '%s' to '%s' %sCould not find current %s localeUnknown locale category %ddoesn't list every locale categoryneeds an '=' to split name=valueis an unknown categoryhas LC_ALL, which is illegal here'%.*s' %s Unexpected return from parse_LC_ALL_string1,51.5nl_langinfo returned empty for %ld in supposed locale '%s'; which really is '%s' codeset is '%s'; radix='%s'; January='%s'; strtod(1,5)=%g, strtod(1.5)=%g !"#$%&'()*+,-./:<=>?@[\]^_`{|}~123456789Can't find separator in ALT_DIGITS representation '%s' for locale '%s'UTFutf; can't set it to Unknown locale category %d%s%sABCDEFGHIJKLMnopqrstuvwxyzlocaleLocale '%s' is unsupported, and may hang or crash the interpreter' 'Locale '%s' contains (at least) the following characters which have unexpected meanings: %s The Perl program will use the expected meanings The following characters (and maybe others) may not have the same meaning as the Perl program expects: %s ; codeset=%sunsetLC_CTYPEa fallback localethe standard localelocale name not determinableLANGUAGEPERL_BADLANGLC_ALLUnexpectedly got 'dummy_trialPERL_SKIP_LOCALE_INITperl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = %c%s%c, LC_ALL = %c%s%c, %s = %c%s%c, LANG = %c%s%c are supported and installed on your system. perl: warning: Failed to fall back to any of: %s ("%s") perl: warning: Falling back to %s ("%s"). PERL_UNICODEint_frac_digitsfrac_digitsp_sep_by_spacen_cs_precedesn_sep_by_spacep_sign_posnn_sign_posnint_p_cs_precedesint_p_sep_by_spaceint_n_cs_precedesint_n_sep_by_spaceint_p_sign_posnint_n_sign_posnp_cs_precedesint_curr_symbolmon_decimal_pointmon_thousands_sepmon_groupingpositive_signnegative_signcurrency_symbolgroupingthousands_sepLC_NUMERICLC_COLLATELC_TIMELC_MESSAGESLC_MONETARYLC_ADDRESSLC_IDENTIFICATIONLC_MEASUREMENTLC_PAPERLC_TELEPHONELC_NAMELocale category unknown to Perl; if you see this, it is a bug in perl; please report it via perlbug       c.?_SUB__pos_as_name_separeword_filehandlesitwisendirecteyword_alleyword_anyodule_trueore_delimsultidimensionalostderef_qqefaliasingignaturesmartmatchnicodenievalSize magic not implementedopen<open>HILD_ERROR_NATIVENCODINGLOBAL_PHASEAST_FHAST_SUCCESSFUL_PATTERNPENAFE_LOCALESAINTNICODETF8LOCALETF8CACHEARNING_BITSUUUUUUUUUUUUUUUUUUUU_TOPsetenv key (encoding to utf8)setenvrequire__beforerequire__afterAttempt to set unknown hook '%s' in %%{^HOOK}${^HOOK}{%.*s} may only be a CODE reference or undefFETCHSTOREDELETEFETCHSIZEFETCHSIZE returned a negative valueCLEARNEXTKEYFIRSTKEYEXISTSpanic: magic_setdbline len=%ld, ptr='%s'Attempt to set length of freed arraysubstr outside of stringAttempt to use reference as lvalue in substr CODE SCALARn ARRAY HASHAssigned value is not a referenceAssigned value is not a%s referencea negative integer${^ENCODING} is no longer supportedassigning to $^OSetting $/ to a reference to %s is forbiddenSetting $/ to a%s %s reference is forbiddenAssigning non-zero to $[ is no longer possible$0Can't set $0 with prctl(): %sIGNORE__DIE__No such hook: %sNo such signal: SIG%sDEFAULTSignal SIG%s received, but no signal handler set. SIG%s handler "%2p" not defined. SIG%s handler "__ANON__" not defined. signoerrnostatusuidpidbandMaximal count of pending signals (%lu) exceededRnz(zdu%*;@FJFRQ23DK?vSD 5[&panic: hv_store() failed in set_mro_private_data() for '%.*s' %dpanic: hv_store() failed in mro_register() for '%.*s' %dCan't linearize anonymous symbol tableRecursive inheritance detected in package '%2p'panic: invalid MRO!Can't call mro_isa_changed_in() on anonymous symbol tableCan't call mro_method_changed_in() on anonymous symbol tableNo such class: '%-p'!Invalid mro name: '%-p'mro::method_changed_indfsmro_core.cnumeric.chexadecimalbinaryBinary number > 0b11111111111111111111111111111111Octal number > 037777777777Hexadecimal number > 0xffffffffInteger overflow in %s numberIllegal %s digit '%c' ignoredIllegal octal digit '%c' ignored%s non-portable0 but trueinqs#silence compiler warning%d%lu%4p never introducedpanic: pad_swipe curpad, %p!=%ppanic: pad_swipe po=%ld, fill=%ldpanic: pad_free curpad, %p!=%ppanic: pad_free poPADNAME = 0x%lx(0x%lx) PAD = 0x%lx(0x%lx) %2d. 0x%lx<%lu> FAKE "%s" flags=0x%lx index=%lu %2d. 0x%lx<%lu> (%lu,%lu) "%s" %2d. 0x%lx<%lu> SubroutineVariable%s "%d%lu%4p" is not availableConstants from lexical variables potentially modified elsewhere are no longer permittedpanic: no pad in cv_clonepanic: pad_alloc, %p!=%pfieldstatementpanic: pad_add_name_pvn illegal flag bits 0x%lx"%s" %s %d%lu%4p masks earlier declaration in same %s"our" variable %d%lu%4p redeclared (Did you mean "local" instead of "our"?) panic: pad_findlex illegal flag bits 0x%lxField %-p is not accessible outside a method%s "%d%lu%4p" will not stay sharedField %-p of %10p is not accessible in a method of %10ppanic: pad_findmy_pvn illegal flag bits 0x%lxCan't undef active subroutine{vqlgb]XSLE>70)"@ A( (!0 `  0000PP(( hhhhn  ((Statement unlikely to be reached (Maybe you meant system() when you said exec()?) %-p() called too early to check prototypeImplicit use of @_ in %s with signatured subroutine is experimentalUse of @_ in %s with signatured subroutine is experimentalnxblZ-QUUUUUUUx xOffset outside stringRecursive call to Perl_load_module in PerlIO_find_layerPerlIOPerlIO::Layer::NoWarningsPerlIO::LayerUsage class->find(name[,load])Invalid separator character %c%c%c in PerlIO layer specification %sArgument list not closed for PerlIO layer "%.*s"Unknown PerlIO layer "%.*s"panic: PerlIO layer array corruptPERLIOperlio.cPerlIO::Layer::findPerlIO layer function table size (%lu) does not match size expected by this perl (%lu)PerlIO layer instance size (%lu) smaller than size expected by this perl (%lu)perlio:more_refcounted_fdsrefcnt_inc: fd %d: %d <= 0 refcnt_inc: fd %d < 0 refcnt_dec: fd %d >= refcnt_size %d refcnt_dec: fd %d: %d <= 0 refcnt_dec: fd %d < 0 refcnt: fd %d >= refcnt_size %d refcnt: fd %d: %d <= 0 refcnt: fd %d < 0 r+Don't know how to get file nameMore than one argument to open(,':%s')IrIwArrayHashCodeGlobTMPDIR/tmp/PerlIO_XXXXXXcrlfpendingperliostdiounixrawbytesStrings with code points over 0xFF may not be mapped into in-memory file handles ADJUSTcatch block requires a (VAR)UnimplementedA slurpy parameter may not have a default valueExperimental subroutine signatures not enabledsyntax error   ?  < 9 . # p+t n V M z    \ T > 3 } k 0<8e`XPzq[VQ @ 4 G 0 * -"r\J5$B.6'  zskd\UNI"  ~ukJ>V2=83$jaXJ|zqg`U% RH=4c\nQ(# /045789:;<>?@ABCFIJKLMNRSTavwy{|  #$%&()*+.1236DHZEƗ8=yڎڵ ڵڃX88=ڂ]^_` opomnmGOPQ\bcdfghijklmnopqrstuz}~ 88y샃 ' #$%&)U;UX̂ ̂ 9R̗888Uߑy,̨̨=̻;;ςY ẽ  ;ḇ샏葰̱8ȝbbȃĂ ڃ ႂ샑 8 Y ڒ⺗ʂ˂W!"샂 - ; VW  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~cB !t t t tt  tt?  t W * 0,:Gh C4CXyz  WW  !QNN z   h J  - NNNG j /; U ]]s N+.EPc YvR%   ] 8 NE8 _ _ _ v v 8ENNl 4Z :a&09> !k xtK   zF p i !  %$  0    ,h h h     ;Q   A;9   ]  :  kklk! 67 QLmj$j R ! SVUTFGIHL#(*) 45Jno+-,4J.jK*j\CIH#"wzyw%'v"qptrPNRhi/01DEBC?@Ac&(]SPTWVeUXx~{$&us   K%,.2f:abgR=d+|8D->=7``A}9F3;c23)Y01<@^/'EZ8<65BG:?`_NM>;O[9   \e s)ItXe6 qv(= opy2SzwwxL)TB`rd O.1+ {|Y\s?@tABCDEFGHIJKtL "#MNOPQRSTU 1 62F   ng ,iX"#o 4 14 0123]^_`   4 <]] "#   13"#e pU8U13=|*;]^_`  UuU]`y8y=Uoop.mn8 =Vm]^_`]^_`]^_` 8  =88 %&_`9 #$%&!") 5]^_`6MR j ' 4.]^_`4"gU;]^_`U]^_`4X { >]^_`CK  8U]^_`]^_`8ym}~mno8kl]^_`s}~,]^_`OP;]^_`Om]^_`=O;]^_`43Ytu  z }~u z}~z}~ ! ]^_`'-. ;#$%&b)]^_`8bb NOP T3 a ]^_`hi]^_`]^_`58 34 Y%& B]^_`EFK-W\`^LM]^_`]^_`mno GgV }~LuS${V),0789:; V #$%&()*+./0123456789:;<>?@ABCDEFHIJKLMNRSTZavwy{|  #$%&()*+./0123456789:;<>?@ABCDEFHIJKLMNRSTZavwy{|  #$%&()*+./0123456789:;<>?@ABCDEFHIJKLMNRSTZaGOPQvwy{|\bcdefghijklmnopqrstuz}~  #$%&()*+./0123456789:;<>?@ABCDEFHIJKLMNRSTZavwy{|  #$%&()*+./0123456789:;<>?@ABCDEFHIJKLMNRSTZavwy{|  #$%&()*+./0123456789:;<>?@ABCDEFHIJKLMNRSTZavwy{|  #$%&()*+./0123456789:;<>?@ABCDEFHIJKLMNRSTZavwy{|  #$%&()*+./0123456789:;<>?@ABCDEFHIJKLMNRSTZavwy{|  #$%&()*+./0123456789:;<>?@ABCDEFHIJKLMNRSTWZavwy{|  #$%&()*+./0123456789:;<>?@ABCDEFHIJKLMNRSTZavwy{|  #$%&()*+./0123456789:;<>?@ABCDFHIJKLMNRSTZ a vwy{|/045789:;<>?@ABCFIJKLMNRST avwy{|/045789:;<>?@ABCFIJKLMNRST avwy{|/045789:;<=>?@ABCFIJKLMNRST avwy{|/045789:;<>?@ABCFIJKLMNRST avwy{|/045789:;<>?@ABCFIJKLMNRST avwy{|/045789:;<>?@ABCFIJKLMNRST avwy{|/045789:;<>?@ABCFIJKLMNRST avwy{|/045789:;<>?@ABCFIJKLMNRST avwy{|/045789:;<>?@ABCFIJKLMNRST avwy{|/045789:;<>?@ABCFIJKLMNRST avwy{|/045789:;<>?@ABCFIJKLMNRST avwy{|/045789:;<>?@ABCFIJKLMNRST avwy{|/045789:;<>?@ABCFIJKLMNRST avwy{|/045789:;<>?@ABCFIJKLMNRST avwy{|/045789:;<>?@ABCFIJKLMNRSTaGOPQvwy\{|bcdfghijklmnopqrstuzG}~OPQ\bcdfghijklmnopqrstuzG}~OPQbcdfghijklmnopqrstuzG}~OPQdfghijklmnopqrstuzG}~OPQfghijklmnopqrstuOPQz}~OPQijklmnopqrstuz}~klmnopqrstuOPQz}~OPQlmnopqrstuOPQz}~mnopqrstuOPQz}~opqrstuOPQz}~qrstuOPQz}~qrstuOPQz}~rstuz}~stuz}~=}W=2e3>qP>CB=V>VD  ~&'?@V-00<=)==86;>>~%*EFGHJKMjklmnop>IJwxyz{|}~q abuZlr=  0!=|* ,4/>57As9jC60VU =EFK>QR 1-0mno>q= !(%$'z;+}~,>-W0350.:<?_Acc@GH XN&M[^]ughiyr{v   fv  kCp 4 9s $cXVYZ[\]^_`abcdefghijk !"#$%&'()*+lu,m-./012345#n6789:;<INOPQRSTUVWXYZ[\]^_`abcdefghXiVYZ[\]^_`abcdefghijk !"#$%&'()*+lu,m-./012345n6X789:;V<YZ[\]^_`abcdefghijk !"#$%&'()*+lu,m-./012345n6789:;<X78V/YZ[\]^_`abDcdefghijk !"#$%&'()*+lu,m-./012345n6X789:;Vt<YZ[\]^_`abcdefghijk !"#$%&'()*+lu,m-./012345n6X789:;Vx<YZ[\]^_`abcdefghijk !"#$%&'()*+lu,m-./012345n6X789:;V<YZ[\]^_`abcdefghijk !"#$%&'()*+lu,m-./012345n6X789:;V<YZ[\]^_`abcdefghijk !"#$%&'()*+lu,m-./012345n6X789:;V<YZ[\]^_`abcdefghijk !"#$%&'()*+lu,m-./012345n6X789:;V<YZ[\]^_`abcdefghijk !"#$%&'()*+lu,m-./012345n6X789:;V<YZ[\]^_`abcdefghijk !"#$%&'()*+l,m-./012345Xn6789:;< !"#$%&'()*+,-./012X3456789:;< !"#$%&'()*+,-./012345V6789:;< "#$%&'()*+,-./012345V6789:;< !"#$%&'()*+,-./0123456789:;< !"#$%&'()*+,-./0123456789:;< !"#$%&'()*+,-./0123456789:;(< !"#$%&'()*+,-./0123456789:;:< !"#$%&'()*+,-./0123456789:;L< !"#$%&'()*+,-./0123456789:;v< !"#$%&'()*+,-./0123456789:;< !"#$%&'()*+,-./0123456789:;< !"#$%&'()*+,-./0123456789:;< !"#$%&'()*+,-./0123456789:;"Not a GLOB referencea symbolNot a SCALAR referenceCORE::Can't find an opnumber for "%d%lu%4p"Attempt to bless into a freed packageAttempt to bless into a referenceExplicit blessing to '' (assuming package main)ARRAYFILEHANDLEPACKAGE(anonymous)Constant subroutine %-p undefinedIllegal division by zeroIllegal modulus zeroNegative repeat count does nothingNon-finite repeat count does nothingOut of memory during list extendOut of memory during string extendpp.cCan't take %s of %gInteger overflow in srandCannot chr %gInvalid negative number (%-p) in chrCan't modify index/value array slice in list assignmentCan't modify keys on array in list assignmentpanic: avhv_delete no longer supportedNot a HASH referenceCan't modify key/value hash slice in %s assignmentOdd number of elements in anonymous hashSPLICEsplice() offset past end of arraypanic: Start of forward hop (0x%p) is %zd bytes beyond legal end position (0x%p)Split loop[out of range]panic: unimplemented op %s (#%d) calledToo manyNot enough or arrayscalar referencereference to one of [$@%*]reference to one of [$@%&*]%s arguments for %sType of arg %d to &CORE::%s must be array referenceType of arg %d to &CORE::%s must be hash%s referenceType of arg %d to &CORE::%s must be %spanic: unknown OA_*: %xfewmanyat least ENAME = %s ENAME = "%s" BACKREFS = 0x%lx MRO_WHICH = "%s" (0x%lx) CACHE_GEN = 0x%lx PKG_GEN = 0x%lx MRO_LINEAR_ALL = 0x%lx MRO_LINEAR_CURRENT = 0x%lx MRO_NEXTMETHOD = 0x%lx ISA = 0x%lx Elt %s [UTF8 "%s"] [CURRENT] HASH = 0x%lx REFCNT = 0x%lx AUTOLOAD = "%s" PROTOTYPE = "%s" COMP_STASH SLAB = 0x%lx START = 0x%lx ===> %ld ROOT = 0x%lx XSUB = 0x%lx XSUBANY = 0x%lx (CONST SV) XSUBANY = %ld GVGV::GV FILE = "%s" DEPTH = %ld FLAGS = 0x%lx OUTSIDE_SEQ = %lu PADLIST = 0x%lx HSCXT = 0x%p OUTSIDE = 0x%lx (%s) TYPE = %c TARGOFF = %ld TARGLEN = %ld TARG = 0x%lx FLAGS = %ld NAMELEN = %ld GvSTASH GP = 0x%lx SV = 0x%lx REFCNT = %ld IO = 0x%lx FORM = 0x%lx AV = 0x%lx HV = 0x%lx CV = 0x%lx CVGEN = 0x%lx GPFLAGS = 0x%lx (%s) LINE = %u FILE = "%s" EGV IFP = 0x%lx OFP = 0x%lx DIRP = 0x%lx LINES = %ld PAGE = %ld PAGE_LEN = %ld LINES_LEFT = %ld TOP_NAME = "%s" TOP_GV TOP_GV = 0x%lx FMT_NAME = "%s" FMT_GV FMT_GV = 0x%lx BOTTOM_NAME = "%s" BOTTOM_GV BOTTOM_GV = 0x%lx TYPE = '%c' TYPE = '\%o' COMPFLAGS = 0x%lx (%s) EXTFLAGS = 0x%lx (%s) ENGINE = 0x%lx (%s) INTFLAGS = 0x%lx (%s) INTFLAGS = 0x%lx(Plug in) NPARENS = %lu LOGICAL_NPARENS = %lu LOGICAL_TO_PARNO = 0x%lx { %ld%s } %-p PARNO_TO_LOGICAL = 0x%lx PARNO_TO_LOGICAL_NEXT = 0x%lx LASTPAREN = %lu LASTCLOSEPAREN = %lu MINLEN = %ld MINLENRET = %ld GOFS = %lu PRE_PREFIX = %lu SUBLEN = %ld SUBOFFSET = %ld SUBCOFFSET = %ld SUBBEG = 0x%lx %s SUBBEG = 0x0 PAREN_NAMES = 0x%lx SUBSTRS = 0x%lx PPRIVATE = 0x%lx OFFS = 0x%lx [ %ld:%ld%s QR_ANONCV = 0x%lx SAVED_COPY = 0x%lx MOTHER_RE = 0x%lx MAXFIELD = %ld FIELDS = 0x%lx Field No. %ld (%s) sv(\0) MAGIC = 0x%lx MG_VIRTUAL = &PL_vtbl_%s MG_VIRTUAL = 0x%lx MG_VIRTUAL = 0 MG_PRIVATE = %d MG_FLAGS = 0x%02X TAINTEDDIR MINMATCH REFCOUNTED GSKIP COPY DUP LOCAL BYTES MG_OBJ = 0x%lx PAT = %s MG_LEN = %ld MG_PTR = 0x%lx => HEf_SVKEY ???? - dump.c does not know how to handle this MG_LEN %2ld: %lu -> %lu MG_TYPE = PERL_MAGIC_%s MG_TYPE = UNKNOWN(\%o) WATCHING, %lx is currently %lx %5lu %s SKIP,IMPLICIT,NAUGHTY,VERBARG_SEEN,CUTGROUP_SEEN,USE_RE_EVAL,NOSCAN,GPOS_SEEN,GPOS_FLOAT,ANCH_MBOL,ANCH_SBOL,ANCH_GPOS,PMf_MULTILINE,PMf_SINGLELINE,PMf_FOLD,PMf_EXTENDED,PMf_EXTENDED_MORE,PMf_KEEPCOPY,PMf_NOCAPURE,IS_ANCHORED,NO_INPLACE_SUBST,EVAL_SEEN,CHECK_ALL,MATCH_UTF8,USE_INTUIT_NOML,USE_INTUIT_ML,INTUIT_TAIL,SPLIT,COPY_DONE,TAINTED_SEEN,TAINTED,START_ONLY,SKIPWHITE,WHITE,NULL, SV AV HV CVINTRO,MULTI,ASSUMECV,SHAREKEYS,LAZYDEL,HASKFLAGS,OVERLOAD,CLONEABLE,ANON,UNIQUE,CLONE,CLONED,CONST,NODEBUG,LVALUE,NOWARN_AMBIGUOUS,WEAKOUTSIDE,CVGV_RC,DYNFILE,AUTOLOAD,HASEVAL,SLABBED,NAMED,LEXICAL,ISXSUB,ANONCONST,SIGNATURE,REFCOUNTED_ANYSV,IsMETHOD,XS_RCSTACK,EVAL_COMPILED,OOK,FAKE,READONLY,PROTECT,BREAK,pIOK,pNOK,pPOK,TEMP,OBJECT,GMG,SMG,RMG,IOK,NOK,POK,arylen(#)rhash(%)debugvar(*)pos(.)symtab(:)backref(<)arylen_p(@)bm(B)overload_table(c)regdata(D)regdatum(d)env(E)envelem(e)fm(f)regex_global(g)hints(H)hintselem(h)isa(I)isaelem(i)nkeys(k)dbfile(L)dbline(l)shared(N)shared_scalar(n)collxfrm(o)tied(P)tiedelem(p)tiedscalar(q)qr(r)sig(S)sigelem(s)taint(t)uvar(U)uvar_elem(u)vstring(V)vec(v)utf8(w)destruct(X)substr(x)nonelem(Y)defelem(y)hook(Z)hookelem(z)lvref(\)checkcall(])extvalue(^)ext(~)OPUNOPBINOPLOGOPLISTOPPMOPSVOPPADOPPVOPLOOPCOPMETHOPUNOP_AUX,KIDS,PARENS,REF,MOD,STACKED,SPECIAL,CONST,KEEP,GLOBAL,CONTINUE,RETAINT,EVAL,NONDESTRUCT,HAS_CV,CODELIST_PRIVATE,IS_QRUNDEFIVNVPVINVLSTPVIVPVNVPVMGREGEXPPVLVAVHVCVFMIOOBJINVLISTPVGVPVAVPVHVPVCVPVFMPVIOPVOBJ%123456789ABCDFSKIPIMPLICITNAUGHTYVERBARG_SEENCUTGROUP_SEENUSE_RE_EVALNOSCANGPOS_SEENGPOS_FLOATANCH_MBOLANCH_SBOLANCH_GPOSRECURSE_SEENPESSIMIZE_SEENMULTILINESINGLELINEFOLDEXTENDEDEXTENDED_MORENOCAPTUREKEEPCOPYCHARSET0CHARSET1CHARSET2STRICTSPLITUNUSED_BIT_12UNUSED_BIT_13UNUSED_BIT_14UNUSED_BIT_15NO_INPLACE_SUBSTEVAL_SEENUNBOUNDED_QUANTIFIER_SEENCHECK_ALLMATCH_UTF8USE_INTUIT_NOMLUSE_INTUIT_MLINTUIT_TAILIS_ANCHOREDCOPY_DONETAINTED_SEENTAINTEDSTART_ONLYSKIPWHITEWHITESUCCEEDSBOLMBOLSEOLMEOLEOSGPOSBOUNDBOUNDLBOUNDUBOUNDANBOUNDNBOUNDLNBOUNDUNBOUNDAREG_ANYSANYANYOFANYOFDANYOFLANYOFPOSIXLANYOFHANYOFHbANYOFHrANYOFHsANYOFRANYOFRbANYOFHbbmANYOFMNANYOFMPOSIXDPOSIXLPOSIXUPOSIXANPOSIXDNPOSIXLNPOSIXUNPOSIXACLUMPBRANCHEXACTLEXACTEXACTLEXACTFEXACTFLEXACTFUEXACTFAAEXACTFAA_NO_TRIEEXACTFUPEXACTFLU8EXACT_REQ8LEXACT_REQ8EXACTFU_REQ8EXACTFU_S_EDGELNBREAKTRIETRIECAHOCORASICKAHOCORASICKCNOTHINGTAILSTARPLUSCURLYCURLYNCURLYMCURLYXWHILEMOPENCLOSESROPENSRCLOSEREFREFFREFFLREFFUREFFAREFNREFFNREFFLNREFFUNREFFANLONGJMPBRANCHJIFMATCHUNLESSMSUSPENDIFTHENGROUPPEVALMINMODLOGICALRENUMGOSUBGROUPPNINSUBPDEFINEPENDLIKEOPFAILACCEPTVERBPRUNEMARKPOINTCOMMITCUTGROUPKEEPSLOOKBEHIND_ENDOPTIMIZEDPSEUDOREGEX_SETTRIE_nextTRIE_next_failEVAL_BEVAL_B_failEVAL_postponed_ABEVAL_postponed_AB_failCURLYX_endCURLYX_end_failWHILEM_A_preWHILEM_A_pre_failWHILEM_A_minWHILEM_A_min_failWHILEM_A_maxWHILEM_A_max_failWHILEM_B_minWHILEM_B_min_failWHILEM_B_maxWHILEM_B_max_failBRANCH_nextBRANCH_next_failCURLYM_ACURLYM_A_failCURLYM_BCURLYM_B_failIFMATCH_AIFMATCH_A_failCURLY_B_minCURLY_B_min_failCURLY_B_maxCURLY_B_max_failCOMMIT_nextCOMMIT_next_failMARKPOINT_nextMARKPOINT_next_failSKIP_nextSKIP_next_failCUTGROUP_nextCUTGROUP_next_failKEEPS_nextKEEPS_next_failREF_nextREF_next_failarylenarylen_pbackrefcheckcallcollxfrmdblinedebugvardefelemdestructenvenvelemhintshintselemhookhookelemisaelemlvrefmglobnkeysnonelemovrldpackelemposregdataregdatumregexpsigsigelemsubstrtaintuvarvecnull operationstubpushmarkwantarrayconstant itemscalar variableglob valueglob elemprivate variablepadsv scalar assignmentprivate arrayprivate hashprivate valueref-to-glob castscalar dereferencearray lengthsubroutine dereferenceanonymous subroutinesubroutine prototypereference constructorsingle ref constructorreference-type operatorblessquoted execution (``, qx)append I/O operatorregexp internal guardregexp internal resetregexp compilationpattern match (m//)pattern quote (qr//)substitution (s///)substitution iteratortransliteration (tr///)chopscalar chopchompscalar chompdefined operatorundef operatorstudymatch positioninteger preincrement (++)integer predecrement (--)integer postincrement (++)integer postdecrement (--)exponentiation (**)integer multiplication (*)integer division (/)integer modulus (%)repeat (x)integer addition (+)integer subtraction (-)concatenation (.) or stringleft bitshift (<<)right bitshift (>>)numeric lt (<)integer lt (<)numeric gt (>)integer gt (>)numeric le (<=)integer le (<=)numeric ge (>=)integer ge (>=)numeric eq (==)integer eq (==)numeric ne (!=)integer ne (!=)numeric comparison (<=>)integer comparison (<=>)string ltstring gtstring lestring gestring eqstring nestring comparison (cmp)numeric bitwise and (&)numeric bitwise xor (^)numeric bitwise or (|)string bitwise and (&.)string bitwise xor (^.)string bitwise or (|.)integer negation (-)notnumeric 1's complement (~)string 1's complement (~)smart matchatan2sincosrandsrandexplogsqrtintoctabslengthsubstr leftrindexsprintfordchrcryptucfirstlcfirstuclcquotemetaarray dereferenceconstant array elementconstant lexical array elementconst lexical array element storearray elementarray sliceindex/value array sliceeach on arrayvalues on arraykeys on arrayeachvalueskeysdeleteexistshash dereferencehash elementhash slicekey/value hash slicearray or hash lookupunpacksplitjoin or stringlist sliceempty anon hash/arraysplicepushpopshiftunshiftreversegrepgrep iteratorany/all iteratormapmap iteratorflipfloprange (or flip)range (or flop)logical and (&&)logical or (||)logical xordefined or (//)conditional expressionlogical and assignment (&&=)logical or assignment (||=)defined or assignment (//=)subroutine entrysubroutine exitlvalue subroutine returncheck subroutine argumentssubroutine argumentsubroutine argument default valuecallerwarndiesymbol resetline sequencenext statementdebug next statementiteration finalizerblock entryblock exitforeach loop entryforeach loop iteratorloop exitlastnextredodumpgotoexitmethod lookupmethod with known namesuper with known nameredirect method with known nameredirect super method with known namegiven()leave given blockwhen()leave when blockbreakcontinueclosepipefilenoumaskbinmodetieuntietieddbmopendbmcloseselect system callselectgetcreadwritewrite exitsysseeksysreadsyswriteeoftellseektruncatefcntlioctlflocksendrecvsocketsocketpairbindconnectlistenacceptshutdowngetsockoptsetsockoptgetsocknamegetpeername-R-W-X-r-w-e-s-M-O-o-z-S-b-f-d-u-g-k-l-t-Tchdirchrootrenamelinksymlinkreadlinkmkdirrmdiropendirreaddirtelldirseekdirrewinddirclosedirforkwaitwaitpidsystemkillgetppidgetpgrpsetpgrpgetprioritysetprioritytimetimeslocaltimegmtimealarmsleepshmgetshmctlshmreadshmwritemsggetmsgctlmsgsndmsgrcvsemopsemgetsemctldo "file"eval hintseval "string"eval "string" exiteval {block}eval {block} exitgethostbynamegethostbyaddrgethostentgetnetbynamegetnetbyaddrgetnetentgetprotobynamegetprotobynumbergetprotoentgetservbynamegetservbyportgetserventsethostentsetnetentsetprotoentsetserventendhostentendnetentendprotoentendserventgetpwnamgetpwuidgetpwentsetpwentendpwentgetgrnamgetgrgidgetgrentsetgrentendgrentgetloginonceunknown custom operatorCORE:: subroutineArray/hash switchprivate subroutinelist of private variableslvalue ref assignmentlvalue array referenceanonymous constantderived class testcomparison chainingcomparand shufflingtry {block}try {block} exitpop trycatch {} blockpush defer {} blockboolean type testweakref type testreference weakenreference unweakenhash element exists ormethod startinitialise fieldclass namefreed opgvsvgvgelempadsvpadsv_storepadavpadhvpadanyrv2gvrv2svav2arylenrv2cvanoncoderefgensrefgenrefreadlinercatlineregcmayberegcresetregcompmatchqrsubstsubstconttranstransrsassignaassignschopschomppreinci_preincpredeci_predecpostinci_postincpostdeci_postdecpowmultiplyi_multiplydividei_dividemoduloi_modulorepeataddi_addsubtracti_subtractconcatmulticoncatleft_shiftright_shiftlti_ltgti_gti_lei_geeqi_eqi_nencmpi_ncmpsltsgtslesgeseqsnescmpbit_andbit_xorbit_ornbit_andnbit_xornbit_orsbit_andsbit_xorsbit_ornegatei_negatecomplementncomplementscomplementsubstr_leftrv2avaelemfastaelemfast_lexaelemfastlex_storeaelemaslicekvasliceaeachavaluesakeysrv2hvhelemhslicekvhslicemultiderefjoinlsliceanonlistanonhashemptyavhvgrepstartgrepwhileanystartallstartanywhilemapstartmapwhilerangeflipflopanddorcond_exprandassignorassigndorassignentersubleavesubleavesublvargcheckargelemargdefelemlineseqnextstatedbstateunstackenterleavescopeenteriteriterenterloopleaveloopmethod_namedmethod_supermethod_redirmethod_redir_superentergivenleavegivenenterwhenleavewhenpipe_opsselectenterwriteleavewriteprtfsockpairgsockoptssockoptftrreadftrwriteftrexecftereadftewritefteexecftisftsizeftmtimeftatimeftctimeftrownedfteownedftzeroftsockftchrftblkftfileftdirftpipeftsuidftsgidftsvtxftlinkftttyfttextftbinaryopen_dirtmsdofilehintsevalleaveevalentertryleavetryghbynameghbyaddrghostentgnbynamegnbyaddrgnetentgpbynamegpbynumbergprotoentgsbynamegsbyportgserventshostentsnetentsprotoentsserventehostentenetenteprotoenteserventgpwnamgpwuidgpwentspwentepwentggrnamggrgidggrentsgrentegrentcustomcoreargsavhvswitchruncvpadcvintrocvclonecvpadrangerefassignlvrefslicelvavrefanonconstcmpchain_andcmpchain_dupentertrycatchleavetrycatchpoptrypushdeferhelemexistsormethstartinitfieldclassnamefreedCONSTRUCTSTARTRUNDESTRUCTWHENBLOCKGIVENLOOP_ARYLOOP_LAZYSVLOOP_LAZYIVLOOP_LISTLOOP_PLAINSUBFORMATSUBSTDEFERZEROHUPINTQUITILLTRAPABRTBUSFPEKILLUSR1SEGVUSR2PIPEALRMTERMSTKFLTCHLDCONTSTOPTSTPTTINTTOUURGXCPUXFSZVTALRMPROFWINCHPWRSYSNUM32NUM33RTMINNUM35NUM36NUM37NUM38NUM39NUM40NUM41NUM42NUM43NUM44NUM45NUM46NUM47NUM48NUM49NUM50NUM51NUM52NUM53NUM54NUM55NUM56NUM57NUM58NUM59NUM60NUM61NUM62NUM63RTMAXIOTCLDPOLL3 !"#$%&o'(>?@ABCDIJKLMNOPQRTWX     ####'())))))))))))))788 88 <<>?@@@@DEFGHIIIIIIIIIISTTTTTYZ[\T^_`abbbeeeeeek<no88ZZZZCCDDDDDDDDDD((BBBBUU@@@@iigghhjjkkII  9.4& )2$ 8-# ,    _ $"  d  1 )CS1   A !AAAA AA 1=<??EHNNPUXXXXXXXZXXXX\_egg iiigggiiiNNigN eNNeeNNNNNNNjmprtt88NNex,,,888 888ee 88888888888888888888888888e888888888888eNeeeeeeeN88eeeeeeee8e88888888888888888 5   *G*'D'DT$MOD+1-AMPERANONHASHAPPENDASSIGNAVBAREBKWARDBOOLBOOL?BYTESCAN_FORCE_UTF8COMPLCOM_AGGCOM_RC1COM_SCALARCONSTCOPHHCVCV2GVDBGDEFDELDELETEDEREF1DEREF2DESCDOLISTDREFAVDREFHVDREFSVEARLYCVELEMENTEREDEVALSVEXISTSFAKEFILEFINALLYFTACCESSFTAFTERtFTSTACKEDFTSTACKINGGROWSGUESSEDHAS_HHHUSHHVIDENTIF_FALSEIF_UNDEFIMPLIMINARGSINBININCRINDEXEDINITFIELDSINITFIELD_AVINITFIELD_HVINPLACEINTITERKEEP_PVKEYSKVSLICELEXLINELINENUMLVLVDEFERLVINTROLVSUBMARKNEGNESTEDNO()NOINITNOVERNO_BAREWORD_IONUMONLY_UTF8_INVARIANTSOURINTROUTBINOUTCRPACKAGEREFCREPARSEREPL1STREVREVERSEDSHORTSLICESLICEWARNSQUASHSTATESTRICTSTRINGIFYSUBSVTARGTARGMYTOKENTRANSUNIUSEINTUSE_SVOPUTFkeyoffsetrangeDDDD@@@DD@! " ++dDdD, , >>> ">>&&&&&&.>   HD6@0@1244@;H;;@KHKKHBDDD $B"$$444 $TTTTA! $ $  @ @ $   D  @@@@@@@ d)d k d Et!{D{DK d d d d d  d d dd d dddddd d dddkklllllllllllllllllllllllllll$$$$ dk kdkk $            ě@@ {@@@@D@ @@ D HAS_TIMES PERLIO_LAYERS PERL_HASH_FUNC_SIPHASH13 PERL_HASH_USE_SBOX32 USE_64_BIT_ALL USE_64_BIT_INT USE_LARGE_FILES USE_LOCALE_COLLATE USE_LOCALE_NUMERIC USE_LOCALE_TIME USE_PERLIO  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~  !"#$%&'()*+,-./0123456789:;<=>?@  !"#$%&'()*+,-./0123456789:;<=>?isa`!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_*/bin/sh0123456789abcdef0123456789ABCDEF01Code point 0x%lX is not Unicode, requires a Perl extension, and so is not portablepanic: memory wrapCan't localize through a reference"%s" %s %s can't be in a packageThe %s function is unimplementedUnsupported directory function "%s" calledUnsupported socket function "%s" calledInsecure dependency in %s%sModification of a read-only value attemptedModification of non-creatable hash value attempted, subscript "%-p"Modification of non-creatable array value attempted, subscript %dCan't use an undefined value as %s referenceCan't use string ("%-32p"%s) as %s ref while "strict refs" in useCan't use string ("%.32s") as %s ref while "strict refs" in useCan't use %s ref as %s refUnsuccessful %s on filename containing newlineUnquoted string "%s" may clash with future reserved wordSemicolon seems to be missingUse of uninitialized value%-p%s%sUse of uninitialized value%s%s%s `````````l``````````````````@L`A`A`A`A`A`A`A`A`A`A`A`A`A`A`AQQQQQQQQQQ`A`A`A`A`A`A`ASgSCSCSCSCSgCCCgCgCgCOCGCCCGCCCCCCCCCoCgCCCCCgCCCgCC`A`A`A`AaA`ASgSCSCSCSCSgCCCgCgCgCOCGCCCGCCCCCCCCCoCgCCCCCgCCCgCC`A`A`A`A`                               @ `@@@@@`@@`@@@@@@@@@O``@@`@@@`CCCCCOCCCCCCCCCCCCCCCCC@CCCCCCCOCCCCCOCCCCCCCCCCCCCCCCC@CCCCCCCO~ytoje`[VQLGB=81*#XqNqqqqtqdWqqqqqqqqqqqqqqqqqqqqqqqqqqqq'''''''''qqqqqqq;qqq2qqqqqqqqqqqqqqJT]A)##pmee@ A( (!0 `  0000PP(( hhhhn  ((gv.cAUTOLOAD Attempt to free unreferenced glob pointerspanic: gp_free failed to free glob pointer - something is repeatedly re-creating entriesoverloadingpanic: gv name too long (%lu)Cannot convert a reference to %s to typeglob&CORE::%s cannot be called directly%COREVariable "%c%d%lu%4p" is not imported (Did you mean &%d%lu%4p instead?) Global symbol "%s%d%lu%4p" requires explicit package name (did you forget to declare "my %s%d%lu%4p"?)::ErrnoTie::Hash::NamedCapture$%c is no longer supported as of Perl 5.30ISAHad to create %d%lu%4p unexpectedlyEXPORTEXPORT_OKEXPORT_FAILEXPORT_TAGSSIGHILD_ERROR_NATIVEAPTURELOBAL_PHASE AST_FH AST_SUCCESSFUL_PATTERN ATCHOSTMATCHAFE_LOCALESAINTNICODETF8LOCALETF8CACHEARNING_BITS IO::File::panic: sv_upgrade to unknown type %ludirhandleBad symbol for %sName "%2p::%2p" used only once: possible typo_tie_itpanic: Can't use %c%c because %s is not availablepanic: Can't use %c%c because %s does not define _tie_itCan't use anonymous symbol table for method lookupCan't locate package %-p for @%2p::ISAWhile trying to resolve method call %.*s->%.*s() can not locate package %5p yet it is mentioned in @%.*s::ISA (perhaps you forgot to load %5p?)::SUPERUse of inherited AUTOLOAD for non-method %-p::%d%lu%4p() is no longer allowedSUPERIO/File.pmCan't locate object method %d%lu%9p via package %7pCan't locate object method %d%lu%9p via package %5p (perhaps you forgot to load %5p?)(${}Stub found while resolvingCan't resolve((nil%s method "%-256p" overloading "%s" in package "%3p" left has no overloaded magicin overloaded package , right argument has no overloaded magic, right argument in overloaded package Operation "%s": no method found,%sargument %s%-p%s%-pCopy method did not return a referenceOverloaded dereference did not return a reference%d%lu%4p::_GEN_%ld(@{}(%{}(*{}(&{}(++(--(bool(0+(""(!(=(abs(neg(<>(int(<(<=(>(>=(==(!=(lt(le(gt(ge(eq(ne(nomethod(+(+=(-(-=(*(*=(/(/=(%(%=(**(**=(<<(<<=(>>(>>=(&(&=(&.(&.=(|(|=(|.(|.=(^(^=(^.(^.=(<=>(cmp(~(~.(atan2(cos(sin(exp(log(sqrt(x(x=(.(.=(~~(-X(qr (utf8)Attempt to free nonexistent shared string '%s'%spanic: hv name too long (%lu)panic: hv_placeholders_p%ld/%ldUse of each() on hash after insertion without resetting hash iterator results in undefined behaviorpanic: hv_placeholders_setAttempt to delete readonly key '%-p' from a restricted hashfetchstoreAttempt to delete disallowed key '%-p' from a restricted hashAttempt to access disallowed key '%-p' in a restricted hashpanic: refcounted_he_value bad flags %lxpanic: refcounted_he_chain_2hv bad flags %lxpanic: refcounted_he_fetch_pvn bad flags %lxpanic: refcounted_he_fetch_sv bad flags %lxpanic: refcounted_he_new_sv bad flags %lxpanic: cop_store_label illegal flag bits 0x%lx~yccG"@CE%c@B@@Vb"!!C?q T~@~}`xw @!4!L ?qTAR!!tC!@ @96 ! @A@xaqT"@R@B(D#0r qB@9BRjT R* sGC`@x7`@SA[BcC{Ĩ_!@!tC@!@ @9`77qT8 `A !.{!!DS4[5ckG#@Cb""@x@@A8ssCa Q?q( T~@~}@xw @!,!T ?qTBRe"@ @` @!4!L ?qTAR B/ qlT$R(#GC@ x7@SA[BcCkD{Ũ_@ B/@ qTG@x @!,!T ?qTBR/@@ !@/N {!!DS4[5c#G"@CE%@X@s@"8ssCbQ_q T~@~} xw @!,!T ?q TBRqLTLq! "BBS@  c@CD@BbBbTjGC@ x7@SA[BcC#@{ƨ_րG @x @!4!L ?q@TAR~!L?q!6!2"BBS@s//@bBb V ~@@@ !/{!!DS4[5ck+G#@Cb"@y@@A9ssCa Q?q(T6~@~}@xw @!4!L ?q TAR5@ @` @!,!T ?qTBRuR qT"BBS@ a@AD@!bBb GC@ x7@SA[BcCkD+@{ƨ_5 @@ @` @!,!T ?qaTR@ qTG9@y @!4!L ?qTARG"BBS@S@@ !@0A# B0{CcBSd@*! 1!B7! 1!HC2! 2!D-! 2!F(! 3!E#! 3!D `$f!`f!F @4 4rRc@Ҏr!TRs"3!!B` @"@T{A~@SB@@{@T 4L {= = ABD;G}F #}DHp'p cE}} TKq TcM_ "Tql!TqL-TRKe%a!Ě?d Ěc$ ڤ@m !0QK $! %#|@ T!K'q'TR!K$ǚ ) $ǚ)& @$RHj?PT?``TAMRD42 B_ TCө ɓB8B<*%@ gE2>>>>>>22222>>2222222>>>2222222222>222lkk2kll##???m?9?&&???~???????????????o????????????????????????????????????????????????????????????????????H?????v??H???e?b?????????????????????>>?\R@ A( (!0 `  0000PP(( hhhhn  ((Initialization of state variables in list currently forbiddenArray passed to stat will be coerced to a scalar -'@S%@p= #@S@d;O@(\@%C @~R8 @Dl)@use no Module name required with -%c optionInvalid module name %.*s with -%c option: contains single ':'Can't use '%c' after -mname ()Compiled at Feb 16 2026 01:50:58..//5.42.0/aarch64-linux/5.42.0/aarch64-linux%s/%seval_sv()require q%c%s%cDB::argsCannot set tied @DB::argsDB::DBDB::dblineDB::subDB::singleDB::traceDB::signalpagesize unknown -PERL_RAND_SEEDPERL_INTERNAL_RAND_SEEDv5.42.0panic: sysconf: %spanic: bad pagesize %ld-i used with no filenames on the command line, reading from STDINENVmain::FBEGIN failed--compilation aborted%s failed--call queue abortedpanic: top_env, v=%d panic: restartop in call_list PERL_DESTRUCT_LEVELUnable to flush stdout: %s main::Unbalanced scopes: %ld more ENTERs than LEAVEs Unbalanced saves: %ld more saves than restores Unbalanced tmps: %ld more allocs than frees Unbalanced context: %ld more PUSHes than POPs Unbalanced string table refcount: (%ld) for "%s"Scalars leaked: %ld Unexpected exit %lu This is perl 5, version 42, subversion 0 (%-p) built for aarch64-linux Copyright 1987-2025, Larry Wall Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source kit. Complete documentation for Perl, including FAQ lists, should be found on this system using "man perl" or "perldoc perl". If you have access to the Internet, point your browser at https://www.perl.org/, the Perl Home Page. -0[octal/hexadecimal] specify record separator (\0, if no argument) -a autosplit mode with -n or -p (splits $_ into @F) -C[number/list] enables the listed Unicode features -c check syntax only (runs BEGIN and CHECK blocks) -d[t][:MOD] run program under debugger or module Devel::MOD -D[number/letters] set debugging flags (argument is a bit mask or alphabets) Usage: %s [switches] [--] [programfile] [arguments] 1PERL5DB_THREADEDno Devel::use Devel:: split(/,/,q{%s});Recompile perl with -DDEBUGGING to use -D switch (did you mean -d ?) Missing argument to -%c"-%c" is on the #! line, it must also be used on the command line%sCan't emulate -%.1s on #! lineUnrecognized switch: -%.1s (-h will show valid options)No directory specified for -IPERL5DB/dev/null-main_@%240sDB::CORE::GLOBAL::No code specified for -%cuse Config; Config::_V()use Config; Config::config_vars(qw%c%s%c)helpUnrecognized switch: -%s (-h will show valid options)PERL5OPTCDIMUdmtwWIllegal switch in PERL5OPT: -%cPERL5LIBPERLLIB/opt/hostedtoolcache/perl/5.42.0/arm64/lib/site_perl/5.42.0/aarch64-linux/opt/hostedtoolcache/perl/5.42.0/arm64/lib/site_perl/5.42.0/opt/hostedtoolcache/perl/5.42.0/arm64/lib/5.42.0/aarch64-linux/opt/hostedtoolcache/perl/5.42.0/arm64/lib/5.42.0PERL_USE_UNSAFE_INC/dev/fd/Wrong syntax (suid) fd script name "%s" Missing (suid) fd script name program input from stdinNo %s allowed with (suid) fdscriptCan't open /dev/null: %s Can't open perl script "%s": %s Illegal suidscriptYOU HAVEN'T DISABLED SET-ID SCRIPTS IN THE KERNEL YET! FIX YOUR KERNEL, PUT A C WRAPPER AROUND THIS SCRIPT, OR USE -u AND UNDUMP! Can't ignore signal CHLD, forcing to defaultNo Perl script found in input perlPERLCan't chdir to %sperl.cInternals::VExporter::IO::Seekable::IO::Handle::IO::File::ISAstdinstdoutstderr:utf8PENPERL_SIGNALSunsafesafePERL_SIGNALS illegal: "%s"panic: top_env -x%s syntax OK panic: restartop in perl_run Unexpected exit failure %ld -e commandline one line of program (several -e's allowed, omit programfile) -E commandline like -e, but enables all optional features -f don't do $sitelib/sitecustomize.pl at startup -F/pattern/ split() pattern for -a switch (//'s are optional) -g read all input in one go (slurp), rather than line-by-line (alias for -0777) -i[extension] edit <> files in place (makes backup if extension supplied) -Idirectory specify @INC/#include directory (several -I's allowed) -l[octnum] enable line ending processing, specifies line terminator -[mM][-]module execute "use/no module..." before executing program -n assume "while (<>) { ... }" loop around program -p assume loop like -n but print line also, like sed -s enable rudimentary parsing for switches after programfile -S look for programfile using PATH environment variable -t enable tainting warnings -T enable tainting checks -u dump core after parsing program -U allow unsafe operations -v print version, patchlevel and license -V[:configvar] print configuration summary (or a single Config.pm variable) -w enable many useful warnings -W enable all warnings -x[directory] ignore text before #!perl line (optionally cd to directory) -X disable all warnings Run 'perldoc perl' for more help with Perl. tmgvM*t+ split(/,/,q) HAS_LONG_DOUBLE HAS_STRTOLD PERL_COPY_ON_WRITE PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP PERL_OP_PARENT PERL_PRESERVE_IVUV PERL_USE_SAFE_PUTENV USE_LOCALE USE_LOCALE_CTYPE USE_PERL_ATOF@ A( (!0 `  0000PP(( hhhhn  ((:utf8:utf8:utf8:utf8Invalid version format (version required)UNIVERSALUNIVERSAL does not export anything_charnamesAttempt to call undefined %s method with arguments (%5p%s) via package %5p (Perhaps you forgot to load the package?)v%sUsage: version::new(class, version)Usage: UNIVERSAL::VERSION(sv, ...)Cannot find version of an unblessed reference%2p does not define $%2p::VERSION--version check failedqv%2p version %-p required--this is only version %-p%-p defines neither package nor VERSION--version check failedUsage: invocant->DOES(kind)Usage: %2p::%2p(%s)Usage: %2p(%s)Usage: CODE(0x%lx)(%s)reference, kindobject-ref, methodsvsv, failok=0SCALAR[, ON]SCALARSCALAR[, REFCOUNT]hvfilehandle[,args]inputoutputdetailsget_layers: unknown argument '%s'%-p(%-p)utf8name[, all ][all]NULL array element in re::regnames()aamsixxnpAPTURE_ALLpackage, ...$key$key, $value$lastkeylobj, ...Value %ld in version is negativeoriginallobjlobj is not of type versionalphalobj, robj, ...verver is not of type versionoperation not supported with version objectUNIVERSAL::isautf8::unicode_to_nativeutf8::native_to_unicodeRegexp::DESTROYUNIVERSAL::canUNIVERSAL::DOESUNIVERSAL::importUNIVERSAL::unimportUNIVERSAL::VERSIONversion::_VERSIONversion::()version::newversion::parseversion::(""version::stringifyversion::(0+version::numifyversion::normalversion::to_decimalversion::to_dotted_decimalversion::(cmpversion::(<=>version::vcmpversion::(boolversion::booleanversion::(+version::(-version::(*version::(/version::(+=version::(-=version::(*=version::(/=version::(absversion::(nomethodversion::noopversion::is_alphaversion::qvversion::declareversion::is_qvversion::tupleversion::from_tupleutf8::is_utf8utf8::validutf8::encodeutf8::decodeutf8::upgradeutf8::downgradeInternals::SvREADONLY\[$%@];$Internals::SvREFCNTInternals::hv_clear_placeholders\%Internals::stack_refcountedconstant::_make_const\[$@]PerlIO::get_layers*;@re::is_regexpre::regname;$$re::regnames;$re::regnames_countre::regexp_patternTie::Hash::NamedCapture::_tie_itTie::Hash::NamedCapture::TIEHASHTie::Hash::NamedCapture::FETCHTie::Hash::NamedCapture::STORETie::Hash::NamedCapture::DELETETie::Hash::NamedCapture::CLEARTie::Hash::NamedCapture::EXISTSTie::Hash::NamedCapture::SCALARTie::Hash::NamedCapture::FIRSTKEYTie::Hash::NamedCapture::NEXTKEYTie::Hash::NamedCapture::flagsuniversal.cNEGATIVE_INDICESpanic: av_extend_guts() negative count (%ld)Out of memory during array extendEXTENDPUSHPOPUNSHIFTSHIFTSTORESIZEargpanic: unhandled opcode %ld for xs_builtin_func1_void()builtin::indexeddefined stringBuilt-in function 'builtin::%s' is experimentalpanic: unrecognised builtin_const value %ld&%-pbuiltin::%-pa CODEexport_lexically can only be called at compile timeOdd number of elements in export_lexicallyExpected a reference in export_lexicallyExpected %s reference in export_lexicallypanic: unhandled opcode %ld for xs_builtin_func1_scalar()true&%sbuiltin.cbuiltin::import can only be called at compile timeInvalid version bundle %5pBuiltin version bundle "%s" is not supported by Perl 5.42.0builtin::builtin::importfalseinfnanis_boolweakenunweakenis_weakblessedrefaddrreftypeceilflooris_taintedtrimstringifycreated_as_stringcreated_as_numberload_moduleindexed'%-p' is not recognised as a builtin function/proc/self/exeMalformed attribute stringClass attribute %-p requires a valueUnrecognized class attribute %-pparamField attribute %-p requires a valueUnrecognized field attribute %-p%5p is not a valid name for a generated method$selfCannot apply a :writer attribute to a non-scalar fieldset_Only scalar fields can take a :param attributeField already has a parameter name, cannot add anotherCannot assign :param(%-p) to field %-p because that name is already in use0123456789._Unexpected characters while parsing class :isa attribute: %sClass already has a superclass, cannot add anotherClass :isa attribute requires a class but %10p is not one%2p::ISACannot '%s' outside of a 'class'Odd number of arguments passed to %10p constructorCannot create an object of incomplete class %10p, %-pUnrecognised parameters for %10p constructor: %-pOdd number of elements in hash field initializationCannot invoke method %7p on a non-instanceCannot invoke method on a non-instanceCannot invoke a method of %10p on an instance of %10pCannot reopen existing class %10pCannot create class %2p as it already has a non-empty @ISA%s::newclass.c$(self)%(params)Required parameter '%-p' is missing for %10p constructorfield initialiser expressionCannot use __CLASS__ outside of a method or field initializer expressionreaderwriter => Warning: unable to close filehandle %2p properly. Can't exec "%s": %sCurrent directory has changedCannot complete in-place edit of %s: %sOUTERRFilehandle STD%s reopened as %2p only for inputFilehandle STDIN reopened as %2p only for outputsysopenpathnameInvalid \0 character in %s for %s: %s\0%sUnknown open() mode '%.*s'Missing command in piped openpiped openCan't open bidirectional pipeMore than one argument to '%c&' openMore than one argument to '>%c' openMore than one argument to '<%c' openpanic: sysopen with multiple args, num_svs=%ld!Warning: unable to close filehandle %2p properly: %-pWarning: unable to close filehandle properly: %-pCan't rename %s to %s: %s, skipping fileCannot complete in-place edit of %s: failed to rename work file '%s' to '%s': %sFailed to close in-place work file %s: %s<Forked open '%s' not meaningful in <>inplace openCan't do inplace edit: %s is not a regular fileXXXXXXXXw++>&Can't open %s: %sCan't do inplace edit on %s: Cannot make temp name: %sprintWide character in %sstatThe stat preceding -l _ wasn't an lstatUse of -l on filehandle %2pUse of -l on filehandlelstatexec$&*(){}[]'";\|?<>~` -cchmodchownUnrecognized signal name "%-p"Can't kill a non-numeric process IDunlinkutimeBad arg length for %s, is %lu, should be %ldArg too short for msgsndecho |tr -s ' ' '\n\n\n\n'|LS_COLORSglob failed (can't start child: %s)printf(unknown)Illegal number of bits in vecUse of strings with code points over 0xFF as arguments to vec is forbiddenBit vector size > 32 non-portableNegative offset to vec in lvalue contextOut of memory during vec in lvalue contextUse of strings with code points over 0xFF as arguments to %s operator is not allowedCan't modify keys in list assignmentCharacter following "\c" must be printable ASCIIUse "%c" instead of "\c{""\c%c" is more clearly written simply as "%s"\x{%02x}Non-octalhex character terminates \%c early. Resolved as "\%c{%lo0xUse of code point %s%.*s is not allowed; the permissible max is %sMissing braces on \o{}Empty \o{}Non-octal characterMissing right brace on \o{}Empty \xUse \x{...} for more than two hex charactersNon-hex characterEmpty \x{}Missing right brace on \x{}[%lu][%d%lu%4p$%-p ===> [SELF] %lu [%s 0x%lx] [0x0] | %-4lu ???? +--%cx%02lx%cx{%02lx}%cx%02lX%c%03o%c%o%s...%scv ref: %s(NULL)<>""\0WILDVOIDSV_UNDEFSV_NOSV_YESSV_ZEROSV_PLACEHOLDERP\CV(%s)FREED(null)[%s] [UTF8 "%s"](%g)dump.c(%ld)() [tainted]{} { GV_NAME = %s-> %s} %s = 0x%lx "%s" "%s" :: "%s" ->???UNKNOWN(%d)UTF8 ,%ld(%s)(%-p)NULL OP IN RUNWARNING: %lx changed from %lx to %lx Can't determine class of operator %s, assuming BASEOP (ex-%s) %s(0x%lx)PARENT*** WILD PARENT 0x%p TARG = %ld ,VOID,SCALAR,LIST,UNKNOWN,SLABBED,SAVEFREE,STATIC,FOLDED,MORESIBFLAGS = (%s) =PRIVATE = (%s) PRIVATE = (0x%lx) GV = %-p (0x%lx) ARGS = %lu => 0x%lx NARGS = %ld CONSTS = (%-p) SV = %s LINE = %u PACKAGE = "%s" LABEL = "%s" HINTS = %08x FEATS = 0x%xSEQ = %u REDONEXTLASTOTHERREFCNT = %lu PV = "%-p" (0x%lx) INVMAP = 0x%lx TABLE = 0x%lx SIZE: 0x%lx %4lx: %2ld %02lxARGIX = %ld ARGS = %lu .. %lu SLURPY = '%c' MAX_FIELDIX = %lu FIELDS: (%lu) [%zd] PADIX = %lu FIELDIX = % lu FIELDIX = %lu REGEX = 0x%lx PMf_PRE %c%.*s%c PMf_PRE (RUNTIME) ,ONCE:USED,TAINTED,SCANFIRST,ALL,START_ONLY,SKIPWHITE,WHITE,NULLPMFLAGS = (%s) TARGOFF/GV = 0x%lx PMf_REPL = CODE_LIST = CODE_LIST = 0x%lx SUB %s = SUB = (xsub 0x%lx %d) FORMAT %s = PL_YesPL_No+ANONnullMAINUNIQUEUNDEFINEDSTANDARDPLUG-IN, ] SV = 0 (0x%lx) at 0x%lx %*s REFCNT = %ld %*s FLAGS = (PADSTALE,PADTMP,ROK,WEAKREF,IsCOW,PCS_IMPORTED,SCREAM,IMPORTALL, ),IsUV,UTF8SV = %s%s UNKNOWN(0x%lx) %s UV = %lu IV = %ld NV = %.*g RV = 0x%lx OFFSET = %lu PV = 0x%lx ( %s . ) CUR = %ld [BOOL %s] REGEXP = 0x%lx LEN = %ld COW_REFCNT = %d PV = 0 STASH USEFUL = %ld ARRAY = 0x%lx (offset=%ld) ALLOC = 0x%lx FILL = %ld MAX = %ld ,REAL,REIFY FLAGS = (%s) Elt No. %ld AUX_FLAGS = %lu (%d%s:%d hash quality = %.1f%% KEYS = %ld FILL = %lu RITER = %ld EITER = 0x%lx RAND = 0x%lx (LAST = 0x%lx) NAME = "%s" NAMECOUNT = %ld , "%s", (null)CR''@t@9 GRt8q ATR''@[k zq!TTa@90RK?kJTe{BSckҡ@@@8x@?BTw[ JGb ;@@@ T%@9E86dREe8B(B a8B|@i T&TM@ T@9@zc8D9T_ T@9(T[D;@a@ @!B@"@cҡT{BSCcEkF_֢@ Vb6_ AT46**%CR_pT6@x(TCR"9EC#RS @ CR!@ BҋACR!`:b҄[D;@[;X"@!@B@ h{ CBS @ [ `c WRk @G ;+6`wR4E@94`E@95 yWR @2!r?@@@@ @ ?@U T s @@@f  @#' @2@BTsassREbR@"$RSAÀR[B{èa@a 0@9[B$qTR@P`R{ccTDSc@`0@9$q@T j*6 !R RG`@@@@`! !`.<`*7*A"!1{S`@NSA{¨_a!`B!@9A5 A`b{CBBS @*A@? @q TX7b@?"` Tcr T 7ACR!"`@a@!? TR!4r q TBR@ `@?qi Tc៙Rr cF`cRBRV@? T`@ ҟq`@9cD`B@@BaT{ASB_!$Q?qHTa@!@ H@9q`TARuc`@ rTR[kA!CR"Ҁ@a!a@`@![C?!T,T q@TBR!@AcD`@w @@RJ`@?[6 !+N @T $@9@hd8kaTK@h$8!?T[C+@[c+ {S@SA@{è_SA{è{è_a!`B!@94SA@ a {SDSA{¨_ ! {S 2h38SA{¨ A   {`a`  {`TD@0@9?$qT! !  R@@@@  b{BBS[6r@@@Tas!Gs&C4@aП!|GA`T`@94Ra!B@"@cҡT{BSC[D_as!EsD4@c8RC#x9Rj@@@`cEkyws<C@x9ARRs @#RB* RsKD@ @ #@ u L)xЩDvb @`GBxb e"@#@@c@ZFZCDB@$@Z&C@D@@ @cH H@$ @S C@TFbBCb@MT9C{R3QD@@DG@@ @B@a@C@F"@ @ @@  @@@  RcEkFsGbARR@ @ "Ҿ?@ckss  { R$ `|D@@"@@RR@  h{B====#='=+=/= # @')$h{B====#='=+=/= # @')  {a`!lF f {A|@{_ a` !GTa!`B!@95 A@ 4`LA@qT{StДB@SSA{¨_`R`$ҋ ҹғ` SA{¨_{S*n` @SA@{è_h{B====#='=+=/= # @')a!B@"@cҁT{C_b!{CBBS @C@ X7v$@zTBR@@``$E@@@y@p6@bRBtCB@"$@C4@@@@B(! ! s`B@ 0@9$QqIT`LA@q T!@'CRB`B@@BaT{ASB_ց @ _8(qT`$E@D!5>BR @@0@9_<q!T@@`HS 5@B@@BT*{CSD[EcF_#@;@$6 #qT @!$a #?q T @cTc@#qT,@!}crT;@G@w @!,!T ?q@TBR # c='G#@RrkT# @yAƅRk!T!@9?qT;@;@u!#@@ 7A<!}A~}X@!G!@5wqM T!4@a@Rs H4!4rT bRz4; )   !*>@T"RS76;cr`T"R*1# #qLT @B!@ B'; )R @r`T;@֢) )R;@; @(;  !*{BB$GS[c@@@3@V*D7@9?9A! F @06`@?q$AzTa@ R*`4`@`75SA[BcC{ƨ_R`@@\@x7@5!(!\4 BR @?qIT!Q `@6Q4@*DdA@99SA[BcC{ƨ_k!! +@;@z#-@ 4 @@ T@2@9$qAT @@T@ @` @"6@C@B<@_1`T$@R҂ @D@9v@T @@ @6@@<@qM T!@CRB!!6!@RR"@A B$@9@*kD+@}kD+@R@@aA@!\@7#Rche @@ @6@"@!<@?1@Tcg@ZRD@9#@T1kT!!@@ _{  @? rT!X7!? q@T @{¨_s @a@a@a_6_ !|pa!_҃͜ݻA@!|!,!@A b{A[ FSS~R~7`F@`4 +R@#Jb@9RAIG$xb $jT `@8 x`_ jT`@9q TTqBS 9a@9?q@TGIGa`6 |S"F! B*iA Sj&8" Sa@9 $|S(Fa* B*%`7cR %jT@IGa@8a_%jT 5sF`@ 4 ,GR@3 v@9qT`@95B9D/"ɷGbja8!@`? ATGS"SA[B{Ĩ_֢j&8߀a@9 a0EjT`@98q`Tq T`@9@ 5B R9*DG %g7 `+sF`@5  ,N`@9`@9qTa@9cV^Gg hyj48!TT@ !!4  -B@9qT`@9<qT` @94 += !@"`4q!T`@95B@R9   ABD!DBG#@Ce%E@c@@b#!!C5"B т_{A!`$  {A!DSSTsG"@CC#c@B@@Ub"!!C5ARdFa@ 5`@5SA@{è_A!`$[  H@{ B====#='=+=/= # @')z @!,!T ?qTBR @BdF@B@@B!T{C_@A@@+  {A!DSS[Uq!T@9 B+*DD3 R ,a sG`@q/T#Tq#T`!RcH$E@=@=@ =@`SE9qT!RK9!"A%R@c@9qT{`Rb9QR9 !@@A rT56:@?ql6T"@":~!86`G@ @ 6`G@ @Q >qTcwGk @EARC"@9Ay44?hq>TE9A>_q!%! ';@ \@`t @ t6R$E@8@`s7E*`G@ "\@bDB @"D6Rc$Ec@c8@cC7'Oyo`G@REq@z`T^@ˠ+! @+6R!$E!@!8@*7EsGRRu@7B2!E9cR?qT?qc,&Ru;cHkI@@ WE99@@ R{#`#_CT`@@TCQaK`8@2C@9qApTaGb@9b9`9*4@~ R#A@9?qnTB'@@B!KT{ESF[GsJ>@`5.@`t`R*R `R *RcHqT`"RcH|T`cHxqT R#y!|@A&`G@>@&@I`RK92@9?qTTbu@Z@@ @b@ @@! @@ sGRR!Rv@RE9;a@D'R4"R PE9 @#P9 X@ "H98cH!RcH3 R#7@q50R/R QaRF99$>@5.@@!Rb`u"RcH R# f> @ R#q#TRE&E @8@N7`G@\@,! @A,6l@C1T5T#RRA`G@y9RD@9?q&T`G@?q "T?q T@9q5TqR@zT# 7@8qqBj CTQlqT`$`6b4@m#@#RRck ~AsG`@` @!nDc"@!(!|@@@"aG4@:@F`R*R b^E9R!7!B"8@B\WBSR BT8B@@xw@-" @6!@ @!<@A4@:BCR!9`G@\@9B @86RB$EB@B8@878sGRRt@:a@R @9qT E9q`5TqB,AR&Rl9cHkIM?@q`6T? q@:!,!E9D%FqB>9aG!@ \@2 @@26R$E@8@17C*uGR@!Ay?k TRR5>`G@ "\@B @6Rc$Ec@c8@7%MsGR`@Ay_kATy'RcHkI!\E9R7!B"8@B\WBS!\E9R7!B"8@B\WBS R -UsG`@K#\E97cBc8@#7 &RcHkI?q"R$BzATH9E9!5@7@9qaT @9?qTPE9R$@ d%,RPE9#R&x$BH9P9PE9R@"!!#@P9@94 *@.bKAsGR$,R#R`@PE9d"!!$@H9P9\E97!B!8@Aӿ7@9!HG!xb!!x?P@qT\@# 9! @6&E$R@!8@!7RR.C9\E9R7B8@\W@986@B_T"_ T@9CqTB@*!HG@!x`!@P`G@5g5sG R`.c@v``@yu@9`5!HG!`!@P]=@9ack < *k A @9?qTPE9RgR`RC5@ E9@9qTqR@R *9sGRR'Rt@0=a@ @ cHkIRWE99@@}`RK9Z+5C9(qT:@5^@! @@6$E@8@7RrcR8 aG@5@E9qT@@``G@\@  @6$E@8@@76RR*! !(;`G@^E97RRrB8@iB@@\E97B8@^WR +ck )A^ *ck !AbRX\E97RRB8@ic8 \E9R`7B8@^Wӵ Sm!RR*`G@Ay5ւ`G@ \E9R7B8@^Wӵ S^{SsG`@t@"t 4<@ 54@,\$@A@  pB@B@D9!lX99a@ 4@?t0@9_q)T@@94 R"R"t 9$$E@$@:a@"TA9 C9_k`T PA95 H@T"`B @ K4`#\@+Rb@"lc@c@?H9B"lSA{¨_`R?4 9"\@"RC0@9qT%`BD@b$E(@C@b$@B B b$?`SA{¨_R9SA{¨=:`$As@`^@ @6@ @2@ J9RR8a@'RSA{¨_Rk  {S[6G@"8@_qMT @BQ"8b8"H9 @C$C9Q $qT7 PE9B5 c!R@"P97`"RSA[B@{Ĩ_ "R@"P9": qTG"R*R@"PE9C""D@7`#P9SA[B@{Ĩ_ 8@ 5#7 @yqT`@9qTxlqTR 9R @0@"HA9G@B"H97`SA[B@{Ĩ9 4@"\@!T0@9_qT@@9`4` @9qTR 9BR"H97` 9R_ "@B_֢B GC@#@_"@B_֢B8CC@#@_  { xr!T*AR` R @{¨_ֳ5G@C94 @R{¨Rm; `<8! !01?  { xr!T*R` R̉ @{¨_ֳ5G@C94 @R{¨RI; `<8! !01?  { xr!T*aR` R @{¨_ֳ5G@C94 @R{¨R%; `<8! !01w?  { xr!T*AR` R @{¨_ֳ5G@C94 @R{¨R; `v5R R{! !`21m>{ 5!R R~R2qA:T @{¨_ `u;p7 @{¨_! !21O>  Հ5AR!Ra{! !21B> ?)T{S@9"6c87`|@!HG!x`6[жеGJGj`8s T T`@987` *5`@9!HG cxP@qT"R`@9 x`_ j!TsAT RSA{è_[BRSA{è_R_b@B_HT  T`@9?qT`d3@!HG x`@6`|@[@!?T?-Ta@9"_qTd3!@za *6R#RR%<RSA[B{è_w9r`T[`@9 R[B#RR<0  ѡ{C!B"@@R @_rT@!B@"@aT*{A_A,!T ?qTBRc?b@@Bv0@R@@!@8  Df{S**[8*9*9 B@ b@ D@!!ҁB0@bB@@R2rb_`@`@`@ `@ a7`@!2aR R R! ! 6RRR! !@6RRR! !6SA[B@{Ĩ_:a@ҀR=30{S[c?T@?T4ڠRRr~bCqTTF`29Tṟ`| Ta:?b@ T`TF`2 9bFRssb2!(A!*99SA[BcC{Ũ_C8SA[BcC{Ũ_֟TTT 5F`29F`29@T!TS ~T D/}R}RA&Rb)87 T $!Fӄ`2d8aT`T TX6vPB/RaRx/6Ҧ#zX6v0B/RARy{@`@HT#@q@&R}!D/5#@X6Fm/RR8'6|G7R#?4 S8`R!PB 5/6@R!0B5YR!F4'6Ҷ8 {cS[k0{`A5T` T RT@z T@9Ga8TQ.SA[BcCkD{Ũ_ RStC@`@@y! ?q T@!'nߦqT Ta@y8R?kTR?6B@@BaT*kCDR. @@a&ҡy ! R ҡ9z;%  х{BS[cr@TG@`v@94E@9`4E@9587B@@B!T*{BcRSC[DcEv@9?6MT@T`@9?qATf3@4P!@x?7K!@x(T9!!B@"@cAT{BSC[DcE_!|S!d2B`29AҢ9RV?6R!E"v8C( $c8|@ITeTL T@9$z"f8D9T B!A f Ơ  $@  l84!B@"@cAT{BSC[DcEe&mߦqTTa@y8R?kTR?6B@@BaT*jCDRU @@a&ҡy ! R ҡ9yb$ х{BS[cr@@TG@`v@94E@94E@98587DFv8879!@v@9?6 T@T`@9?qTf3@X4.*@x?7)*@x(T9!!B@"@cҡT{BSC[DcE_!|S!d2B`29AҢ9&q T TRv?6 ՂRBEAv8#( Dc8|@ITeTE@T@9DzAa8D9T B@!G f Ơ % $@`x4!B@"@cT{BSC[DcE%m|S!Bd2!`29@9BDFs8@CDR҄ @;{TkCRXE ՀT`@yk T`@9@86`8RC!(! c8!|@iTbTDEB@TC@9%zc8D9T@` @6v@9kF&qAT@aljy &;@Ga@9Ga8{Ta@yR?k T6?6RCDR, @ R9! kF;@&k;;# ! R ҡ9;@3  х{BS[ckr@`TG@@z@94E@94E@95R87B@@Bҡ#T*{BSC[DcEkF(z@9?6?T@@ TR!E"z8C( $c8|@ITeTT@9$z"f8D9T6 B!A f Ơ % $@#x 4? T`@y!\Rk T᝕RkTB@@BT{BSC[DcEkF?7(@xhT9 B@@BaT{BSC[DcEkF_|Sd2!`29@ҡ9`@9?qT@g3@4(@xL$^w6@TGaa8_T@9a?7t@9Gt8@c$_`TR`!(! 4|@ T@8zT?|Ӄ$@T`? T B!G ҥ@($@x@~TR/Ҡr` @9qAT @R!@m `a`@y@9y 9a @9?xqT @R!\_'q T?TR:?7CDR @3B@@BT*?|qT@4&`ljyXa@yR?kTR?7! 4 R9Iф{BSs[@rTG@A 4E@9a4!E!@95siTRj T9'*!B@"@cҁT{DSE[F_֓6 B!A f Ơ $@% ҥ#` B!G ҥ@($@QZ#@!B@"@c!Tc{DSE[F-'t!т{BBScs@@T  E;R[ksiTz@9 Gz8T_qT˟TTTq` Tq`T@T`@9t<qAT` @9qT`@9hT`R'!r'@TE@hz8@`8TaT!@T#@9@Cc8D9T@R_qTq!Tu@9@|T` @9TR'!r'@ TER`C9B(B `a8B|@ITa?T}!@T5@9du8`EzD9T R'+ a@9 GR'@a8`@9qTqT` @9HTtC@ @@y! ?qT@!AR!;RqAT`@9<qTU_qAT`@9<qTT.CR'c GRa@9'@a8CDR'T'@ @*BF@9Cc8A!䗟!D9?㗟jTA @R' r'@!T c !T@94$@9_k(TTqTqaT ⒂! '!q F'@TEhz8Bhb8 !)T"@9 "ib8D9T"?H93`SI#RA.RCR!R#R,R"R,R)R7SIR"R3G&Rt@a@#Rb(R"PE9#_q"H9SI#R)Rq!R"R!Z)RSI#R$RB$E!GB@!@B$@"#H93`SI"R!R)RSI#R"R|-R)R!G!@"?H93`SI"R-R)RSI"R-R)RSI#R!/R`#R/R\B/R)R!G!@"?H93`SI-R)R!G!@"?H93`SIv"Ra-R)RSIo#RA-R="RA)R)RSIdB@@\@ @)6R 1R%`'R!Gc$E!@d@"#@$@?H9_k3`B"SII"R!+R)RSIB#R!RG@ @5"XE9_$qTSI4#RR#RRR"R3G&Rt@a@Rb(R"PE9#_q"H9SI"R(R)RfSI#RR"RR)R[SI2R"R-R!G!@#"H93`SI"Ra R)RISI#RR"RR)R>SIG@ @ $5"XE9_q#TSI#RRG@ @5"XE9_$qiTSIBRR)RSIG@ @5"XE9_$qITSI#RA"R"R!'R)R SI` Ra !@`ARSIBRAR)RSIR!GB$E!@B@#@B$@?H9_k `B"[SI"R*R)RSI"R*R)RSI#R)RS"R#R!G!@"H93`SIx"Ra!R)RSIq"R&R)RSIj#RaR8#R0R4G@ @5"XE9_q)TSIXG@ @@5"XE9_$qTSIN"RR)RSIGR %R!G!@"H93`SI>g` a ! f d %b ` B@$"RR)RwSI##RR"RaR)RlSI#R RRd@9q`%TBGR)RB@C_H9A`SI"RA!R)RPSIG@ @5"XE9_$q)TSI#R(R#RR.R)R!G!@"?H93`SI/R)R!G!@"?H93`SI.R)R!G!@"?H93`SI.R)R!G!@"?H93`SI.R)R!G!@"?H93`SI"0R)R!G!@"?H93`SI#R $RB$E!GB@!@B$@"#H93`SIR$R!G!@"H93`SI#RaReR"R3G&Rt@Ma@Rb(R"PE9#_q"H9SIR+d@9?q/T?qT[ RG#R@9fV;@@? :TR4[JqG"R%R@#"H93`SIV"RRB)R8@28SIJ#RaRRa !`(_R%R!G!@"H93`SI9#RR#RA1R#RAR#RAR#RRBR(R)RrSI#R+,RG@d@H9y`t`@9qT G@ @5"XE9_$qTSI`Ra !^R%R!G!@"H93`SI"R R)RDSIa !`` R^@,U R#R#R!G!@#H93`"ySI"RA R)R+SI#R!R"Ra&R)R SIRa"R? Y#R%RR`%R!G!@"H93`SI#RRR)R!G!@"?H93`SI"RR)RSI"RaR)RSI"R!!R)RSI"R R)RSI Ra !q^RR)RSIG@ @5"XE9_qiTSIz Ra !@\^RR)RSIo#RAR="R&R)RSId#RR2#R!R.` Ra !>^#RR&RRbR`#R!G!@#H9"`SIF#R!&R#RR#R*R "R!R)RSI3#RR` Ra !^RR +R!G!@#"H93`SI #RR"R! R)RiSIR@%RB$E!GB@!@B$@"#H93`SI[ &E@ @!$@DbGRR@BY'R@@#@B$@?H9_k3`B"SI[JТ)R)R!G!@"?H93`SIЂ)R)R!G!@"?H93`SI#RR"RR)RSI#R'R#RR"RR)RSIBR(R)RSI"RaR)RSI"RR)RSI"RAR)RSI"Ra0R)RSI"R&R)RSI"RAR)RSI#RRX#Ra"RT#R!RP#RRL"RR)RSIs"RR)RSIl"RR)RSIeb BG@!/Rb@%R#R&R*H9BRaR)RSIL"R!R)RSIE"R R)RSI>#R!*R #R R"R!R)RSI/"R*R)R|SI("R*R)RuSI!"RA*R)RnSI"Ra*R)RgSI"RR)R`SI #RR"R&R)RUSI R&R!G!@"`SIG@ @5"XE9_q)TSI#RRG@ @`5"XE9_q TSICRR"RR)R'SI"RA&R)R SI"RAR)RSICRAR#RR"R+R)R SI` Ra !`\"5R)R!G!@"?H93`SI[ A@" @6!@ @!<@A4@VRRG@WЁ@B$E'R#@B@B$@?H9_k3`B"SI[JG@ HA95`@9qAT @5"XE9_qTSIscR! "R@V#RR;G@ @5"XE9_qITSI_ЂR)R!G!@"?H93`SIUG@ @5"XE9_qiTSIK"RRB)R8@28SI?#R/R /R)R!G!@"?H93`SI1CRaR[ Р&E@@@@(K^GRR@eW&E'R@@#@B$@?H9_k3`B"SI[J B(R)R!G!@"?H93`SI#R/R"Ra(R)RJSIR"R3G&Rt@a@Rb(R"PE9#_q"H9SI"R R)R0SICRRCR'RCRAR#R'R"RR)RSI#RRRRRuX RG!$E@!@@!$@H9?k`!oSI/@RRR;[ XXs G&E@!@@"$P)_k@T`<@H9`@@rRk _a@R{R 4r! ?q@TBRY*RKGKG;@ р^b@9Ab!j!Te`;"@8b#j\T?T#RR,R!GB$E!@B@#@B$@?H9_k `B"SIGRRRWУRG@<@!@#@AT?@!$E!@!$@H9?k`!SI'RRRWУRG!$E@!@@#$P)k`T`#$@@H9?k`!SI"RR)RTSI#RaRB0!G!@!ƣBRR)RASIB0!G!@!BRR)R2SICRRCRR"RR)R#SI#RR&RRv_}ЃR@#R!G!@#H9"`SI"RR)R SI#R!RG@ @@V5"XE9_qUTSI"Ra'R)RSI`@9q iTRI_@9q@hTG@ @5 XE9 qiT`R X9"R"H93`,RSIR &R!G!@"`SI|R"R3G&Rt@6a@Rb(R"PE9#_q"H9SIiG@ @ L5"XE9_$qKTSI_[ R_&E @8@@T7ЀG@ \@R @R6!l@#T`T#RR["RR)RSI[J>#RR "R+R)RSI3"RAR)RSI,"R'R)RySI%"R R)RrSI#RARB0!G!@!BR!R)R_SI [ Gk s RR@!R9gV@R&ER;@R@׀@$@V7@R RWPa@9%4x Rs7a@94?q@T7@rTB@ #7^5&EG!@@ $@kAT R@W0@@ X&EA@@$@_H9kS`@zSI[JkLsM#RA'R}"RR)RSI#R'Rr"RR)RSIG@ @5 XE9 qiT`R X9R"R#)R"H93`SI#RRUR.^@9A@!?$)TT_qT@9!?$zT[ G#R&R*@9+&E @8@N7@\@aM! @!M6E9t87HGa@P@N4G@؂]^@k@ @`k6&E@8@j7"Rr\[JqG+RR@EPE9Cd@qFEH9DyS`Ct]%RSI1"R&R)R~SI*#RR"Ra)R)RsSI"R!)R)RlSI#R!.R#R.R0R)R!G!@"?H93`SI"R R)RSSI"RA+R)RLSI"Ra+R)RESI(R)R!G!@"?H93`SI#R)R#R!"R"-R)R!G!@"?H93`SI#R,R"R-R)RSIB0R)R!G!@"?H93`SI,R)R!G!@"?H93`SI@@`6Ra R!O^@RU@W]G@9 @\@!@qrTu3[J=`RH]X58R&E@8@d7G@\@c! @Ac6l@?HrTtT#RRY84qaTa2sR &kLG@`>@@?q[T!QJ9>|h`G'R@6`SI[JsMesRs7RR*Z@9GcB$E**9@C@0@a$@H9?k`! SI[JB R"R#-R"H93`SI:# R"R#-R"H93`SI2 R"R#-R"H93`SI* R"R#-R"H93`SI"#R"R#+R"H93`SIC R"R#-R"H93`SI"R"H93`+RSI  R"R#-R"H93`SIc R"R#-R"H93`SIR"R#+R"H93`SIYx#R@$RB$EB@B$@"#H93`SI#R$RB$EB@B$@"#H93`SI#R%RB$EB@B$@"#H93`SI#R$RB$EB@B$@"#H93`SI#R#RB$EB@B$@"#H93`SI \E97B8@ି7a@9JGxaxP@qTk  ҁGcR!@!NJG@9Rv _ jT@8v? jT#4` *BY # RJVr"Tq"TqPTR9*;*@!5G@\@AW! @W6&E@!8@W7"R*a R! TkL$R"R )R"H93`b@9_q0TSI^R 1RB@B`R R )R!G!@"?H93`SIL`R$R*$4e a ! y5_q-T;@KG;b@8!b!j`T@`R_qjT@*RC'TC@'@KG;@;a@8Axa!j@T@9R*Ga@<@ @6&E@8@B}B CBS[@ZRRNR RNYS` RSI[JkLsM\E97!B!8@a7GHG!@!E9xaxP@qT`@9q`1T[JBGR$RB@CH9A`SIR`$?[G @B@2BqTy 9 QCR Pq!TCRa !PGBR!@!T@U"ҁCR!O"@@T@@?qI5T!Q&EXT@ $@k<Tq;$@T@RSG@@T@@(@T@@9+C#9D*Ew@SIB@B`SIy@9q!TkL/TTB@2RRR W@`2@9$qTRSQa@ @ `2@9$QqT` @@AG@!@ @@` @@@@B92@95@W` @ T@R@9G!$E@!@!8@A7\@a! @!6@B1sLG@[JRa @ ` @\E97!B!8@a7b9`@9b 6@B_T"_ yTb@9CqxTB@*JG@z`@Px4k YR%R!G!@"H93`SI`@*SI^E9 7"RrB8@iB \E97B8@ e7b@9HGxbxP@qeTRs3` ,RSI@*RC'>SC@'@;s @RR,`@9o5JG`@PӼ@R@9A@5E"@B_( TE9CqTB@*aHG@ x`@PO"R^S [ k s S!R@9qTTS@$cRCrBV_kT*b9`@9Z6@B_T"_Tb@9CqaTB@*!HG@ x`@PDTo\E97!B!8@A7JG`@9z`xP@q@G#R !@!XLR Z@ Rs[J T#RRVG@a!`)ҸT4a@y-R?kaTb @9RJG!xb!jST`RYT! bҠT@5b@9RJG!xb!j TsTa!:ҏT 4P4@ `k s 8XS]PE9RPE9R$@ b&x$P9[J@9q!TkLS"@Wb9`@96@B_T"_Tb@9CqaTBJG@*@z`78J4M`@9 5JG`@PwSrTH4A`RY4> #RRBVb@9RHGxb? jTs/\E9`6RL\E96R76RB"8@B\WB8@\W<`RYY@<@@?qT!QG@ @?<W@ `WRk s @<@@?qT!QG@ @@?<W@ k s WR[ k s Qb! RS5Ks -T8R  R {C!B[SGcke@&@ҡ`PKw@@ @9raT?q Tn@B3TRcHGa@8Tba"j`T?q Tb@bc Gc@`?*G@`@5`!8CD#@@.THA9u5? q T!5*RҲ*97qdEz` Tq T4@9q TGR"@CKb@˲X@9?q1TG@A\@ @@`8@@*C9*@qTqaIT@@!$E@(RPE9!@!$@?k!4@!B@"@cHT{USV[WcXkY_`@9qT|H9@@9qTn@Tl@?)Ta@9?qTa@9?q`T\@s<! @a<6&ER!@!8@;7XGRR@N&E(R@@C@!$@S`?k!A@R 9T!RU T8B@@xw@.a@6a@ @!<@A4@MCRB!LG@@\@#c @6R$E@8@$7La@R!!2M@ R#9RǾ@f\E9R7RB8@ic@@!$E`(RPE9!@!$@?k!5aRH9@KTbA`R@r?k`T#9R8GR@@*ñ*@6JA9`4@9qT^@ @`6Rr$E@8@7RMM`!@@A5@@@@"87@\@@*GRGD@R@!S@ @? @q TR? j`TKqT"q@`T @A R! B@_BB@B@B #IZDGA@R@*BMBRq`? @@A!TS`ҒT@|"@b @?@@`@B$E%R@cBB@B$@H9_k`B@b@T{USV[WcXkY @@ @9qT#@@b\@@@``@@$@^E9R`7RrB8@iBk!RdP@#9Rٽ@x@@.@9qATKqaT@ @kU_ R 6I@9?qTs@"R@x**5?q`T`^@ @6!R$E@8@7@ CU@9q Ts@"R@x*Ͱ*47_q`RD@z RD@zCC9'RRP Jf@Kq@T@@a5@w@R*GRFD@R@!ҁR`*&KR!$Q?qT@@5@@@ ?6*\E9R!7!B"8@B\WBS$E@8@"tZ_ qT_<qT6P@`6G@R a@)@ a#9%@ ЁTB@ T`^E97B8@!\WmORiC{!BS[@ c`kgRt@9 @Һr;C* D!@?!Tq)TG@\@! @6&E@!8@7l@?ETT87JGt@P@5s[@ =Xtxa ֟ q`4Td>T 1TG;C@!@`@ Dt@9*?@T 5G@@@y5l@c#T!B!@9a5LA94_Rv1T !B@"@chT{CSD[EcFkGC_RJGt j`Tq(Ԛ4q YTG@l@_T"@94b j@T@@$TdIT8!@l@_T| cT;C9G!@@`?St@9*cG@! JR #@'RG!$E@#@A@c$@_H9kS`cCt@8AG@`C9(qTqTal@*?T(qTs?T`@9RR1`T?ITsq`A TsG@ 4@4"8@kTt@9\E97!B!8@7RJGt!jT1@T^I96l@cT8@4 @!QAa8?q T4@A ! !@ _q! GR@3`CG@ 8@4" @Q@`8q`TB@@BOTR{CSD[EcFkGCc@9e G@ @qTb$E@8@tZӈQqI{T<qzT4 R R# H9"`@@9q`T@-R B ,R"`B@@BҁIT`R{CSD[EcFkGC`@9G!@"4@4#8@_kT"HA9_ q@TB5cq`TqT @5"XE9_qT `R"R *R"H9#`b@9_qTs ,R3`q`T@cB_$TG@ @5"XE9_qT#@sdRB$E"RB@B$@$H9_k3`B"`@9qaTG@p@?Ta_8?(qATl@a Tb"@2_kTB@@Bҁ<T{CSD[EcFkGCf`@9$HTG@ HA95R `"R#"H9 ``@9qT)R{!$EG#@@b8@@tZ qbT<qTd$qbTb@9_q@TB R#R.R"#H9$`bB@@B4T{CSD[EcFkGC`@9$TG@HA94b @9c b@8@Q_|qIziT_q`T_qaT`@9qCzTQqJzAT\@aˀ @@6R&E@8@7RI`G@! "I@@'RB$E#@B@B$@?H9_k$`B"RRRK RRG@ &@dz@!$EBB@!@!$@H9?k`!@A@A'T{CSD[EcFkGC$E@A8@ tZQqXT<q@XTb@9_xqoTG@#@C5_q$XE9R%RBkUT R4" R RB#R"#H9$`@9_qAT ,R"`b@9G@_qT p@T`_8(qT l@b Tc"@2k@}T` @9qT @5#XE9qHT RR# H9"`` @9q@T .Rt@9qnTsa {q TqTt[4b @9RJG!xb!jTG@ HA9 qZTdh\T p@T`_8(q[TB@9`4 @ C9(q`[TGJG;R5l@s*q RTt@9hTsHG@ @`5"XE95Q R`S@9q T 0RGc$E@c@D@c$@_H9kA`cC:`G!@"h@#x@ET#t@_DT"R"H9RRG@0R@"@#`B""tG@@y?qdTR@ 'G"R/R@"H94``@9G!@"HA9qSTtb5qT @5"XE9_qTR"R *R"H94`b@9_qT G@ HA9=5`@9qT @5"XE9_qT ՃRaB@@BAT{CSD[EcFkGCxРG@JA9qJz@=Tj@Жv@ TR1G&E@@$@cBB$@?H9_k `B"@a@TsK`@9qiTB@@BҡT`{CSD[EcFkGCRRRqJТRG&E@!@@"$P)_k@T`R@ &G&E@BB@@RRRNJФR@ sG&Rc@df@<@ @!,!T ?qHTBRlRf@@'%!*87B!_`DTC@9aQ!?qT(7СR$E@$@@H9?k`!<`@9v G4@qFTq`Ts!R.RJ9b-G@ @5"XE9_ qHTs"R!R"H93`РG@ 8@`_4# @Qcb8qTtq^T"8 @"C9Q _$qRT#@!RB$EB@B$@?H9_k4`B"дG@ HA9$q TTR 9R!H "Rf@ E9?M4 C9(q`T 8@4RQG!@ HA9q>T"h@ x@_ >T PE9?H9Rc$E' % R"Rd@@"P9#@$@3`_kB"жG@:@?q >T"@"G:!8s#R!R@"@#H9B"3`ДG@ HA9$q@T@5`@9qMTq TRзG@JA9$q |Tx@9v q;TO5b@yr@?`T&E@@C8@`tZQq T<q` T5`@9qZE9R#R_kJT?뀠T Ra R J9b@9q`T`-RmG@ @5"XE9_qHTs#R`,R#H9"3`]b@9_qUTQdqT" R @`5"XE9_qTR"PE9 R 9*RC"R""D@3`#P9B6P@D6q|T 5 Rq$XE9R&RckT4_렆T R ,Rb)6@P@6`@9qT!5!RR3`᧏6@P@6`@9xqTq`!G!@"@5@9#R8"d$q`wTR 9R!V@ E9?f4 HA9qHT"h@ x@_ HT PE9?H9Rc$E$ % R`"R@d@a@9?qAT5b?qT@5ZE9?qT  RAR J9b`@9qTs ,Rb@!l@ĝ@l@` T`@kT`@9z` j T*&N@@@9sHVРG@ HA9 qTqaTb@9`@9RJGzb"jMzT@@8`#jMzTqJz@T @5"XE9_q)T3`sH I93l@2 9t@9sH- 5f @9R#XE9RqBk*uTR"R ,R"H9%`b @9_qaNTsR ,R"3`ms b65#@Ѐ/RB$EB@B$@?H9_k3`B"_G@ @ 5e @9R#XE9RqBkoT R ` @9q dTs "R,R"H93`GB@9`4`@`yal@Tb@8`IT_(qTXTsbXT,t@9@$E@_qT@ $ P)k T` $@@!@@еG@ p@@$T`_8(q#T @5"XE9_$qhgTs  R"R-R#"H93`` @9q@LTG@ @5"XE9_$q(eTC R"R-R#"H96`4@\@?Tc@9`@$HT*A R!&iA!l@ɰ 4`@9qTGR@9`@9xlqTR:OrawTG@t@9t"@!(!|@*K"@:@ `@9qadT`t@9d@@9qT@ 5d @9RZE9Rq!_k T RJ9b-Ra @9?q4TsR ,R b!#R @ E9?H9`44 #R_@ E934#@#R& @5"XE9_qVT` @9qdTs R"R(R#"H93`}BR"R"H93`x 8@5`@9qaTxlqTR 9c`p@PTal@?i=T`@9#9RY3`B@@BҡTa@9"R{CSD[EcFkGC@DT eT`@9_q!eTЀf3@JGz`@P` @9b qT @5#XE9qHKTR#R )R#H9"`b @9_q$Ts ,R3` t@ R$TG@R9#Rf@R E9"M4"PE9RR$E%"&"B !R@@"P9$@$@?H9_k#`B" l@b Tc"@Rrk!T`@9qT'(qAT4q>Tb @9_(q@AT"HA9_ qa>T @ 5d @9RZE9Rq!_kTa RJ9,Rba @9?qATsR ,R b@6bP@b6d@9qTdJ7" RR"R@/R"H93`!l@G65@"HA9_qDJz0T @5"XE9_$q(:Ts R"R-R#"H93`d RGR 0R@CH9A`@B_$4TRMraT@ *@%BK@`*A R!%Gs!RL9a#F!@04F@_4 KKMRM@JG`@\@'C`@A CR!@#"\@BG&E@@!$@dC@2C@9?5tG@95C@9 4GA CR!`#B`@\@BD@9 B5GPG7@@94A@9J4BR,A@a@8 xq$BzJT K J^@A !#aBGCR"ҡ!@\@yB@CR{#F \@d@@3 3p@@@?B"ljTBA!CB@!@_뀮Tңt@9sHBR#R"H93`*RBHG@` jT `@@9@x` jTgG@"R"R"H94` R!R.R J9b"HA9_qDJzTd" R,4bP@6]BR`"R"H93` I9 K7[s c R"R.R#"H93`bB@@Bҁ_Ta@9 !R_3`B@@B!^Ta@9#RTRMrTn@`RJGTT@9za!j@T@9Ax?qTAQ!?0qT#a$07_qT@9?qT@9"R HGxc_ jTA R!%EqRLr`|T&E@8@%7^@$ @@$6n@?7Tq A:T#RRIG@5c @9 R` @9qTs"R(R"H93`M3`B@@B!RTa@9`"R`C9$qT`@yqaT`4@b\@T0@9_qT@@9 4`_8qTsѶs"R ,R"H93`' RQdq'BG@9qT`MT! ҡG5&E@8@07^@/ @/6n@?5T8T#RRI3C R`@9@lqaTR 9x'\@EB@94`@`I9@7&E@A$@!QA$al@ՙG@n"p@_Tb_8_(qTbR"H9B@@BҁBTAR34?iT RO@@7@wTGA 4@#@BRa@\@F@CR"\@ATC@@?q%T!QCOBR !R"H9#`Rb`@9$-T q Tl@TRJGT@9za!j@T@9q`TdTM`I97A5 R!R J9b @9q_T9 ,Rbg` @9qTR 9WsR @_qT5"XE9_$qTsC R"R-R#"H93`OGA CR!""@\@@^E97B8@@ۿ7HGxxP@qUT&ERB(E! @$@cQ$D@G $@ $@`@A CR!#\@@"R?"H9 ,R;`sHD#RRHUDGA ! "`@\@D\E9 7B8@B\WBS@9#R!HG!xd!jTsR#R.RBGB@DCH9A`sHG@@@` 5CXE9 q TS`sHb :5"XE9_$qTs R^@A CR!@$B7@^@CR1@G @CR"\@(@`_84s@9pqT@CR"\@@@A CR!$B\@@86@( T T` @9_q!T*!HG@ x`@P 5G@ Rl#RCH9A`!RsHHGx@P^E97B8@Ͽ7@9!RHGxb? jaTHDIG@TE@YB@!B8@C9C9B4T9T9@"@!T!RsH[@E9@96b@B_(T"_mT@9DqTB@*!HG@ x`6Őt@95HGc 6lR?Dr Td` @9!Rs %@G@'RB$E@B@#@s%H@| @@"S`"@@?@`@G!$E$R@!@@!$@BB?k!H9`@A@AT@{CSD[EcFkG@C  {CBS[aGs 4@@'B JGb@I9` 5RE9 5C9qT T qUTqATb@n@@95`G@FA9@5@yb@?q"TZ@a @a@n@? T^@A@!@?aT.@WC9aG4@.@C9?k(Tb@9RR_pq9b@TRE9#R@B'R J9"@R9v@v5I9b4^@Q @Q6c&E@cH8@P7n@ˍrT @8@ R 7 9q2T q!Tb@n@JT`@9qUTc @9bpq`wT!c? Ta@xR?kTR?kTQ<q dT&@>@(qT>aGdRb@9C0R 8@r @<$@h"84@RE99@""@#@R9a@9?q@T?q T?0qT?TqT?DqT?qaT C1R#@{ bA)RBz R9v@ 4>@vqT.@cH!Rq#Tck VA9C9?k=Tb$қb@IuG!$EJGy@9@?q To@ARjG@?qTR`G@@@WE9o@(qTo@4`G@WE99@@~`RK9`@9RJGB`C "jT! @8@B`"jcT(qATSE9!!*R!@S9dqTb@n@~T!RJ9.@@9qGT RF99b@@9?q@Tv@v}5b@@@!2@6@^@?T"0@9_qT!@!@9A4n@?!T6`@9R@aB`"jMzTJG @8`"jMzT(q@FTo@ETARF pTR ?q?{q!*?qZ`T@9?qT@9qT@@`GaR@K9&E@8@7_@: @96@Ҁ @!@jrAnTRSE9R?bG4C'RT@ RE9 @R96@?4bcHkIkCR=MT_84qT_8(qaT@ @B@! 8?8@ @ `G@@  ՀI9@6WE9o@(qT@c@@$@@$cB4 @$cRKHr`G!$E@!@ $@Q $c@T@@5`G!R@9AyRL _k`:TJA9sG*a@ @QqT"$@$`*7 I9x 9J@VGtG@ D"dB9"9pB@?@p?@?@XdB@?@?@[B@|:@`5A@G>T@@u:tG@5F@`2F@ /F@@,F@)F@&F@#F@X:@;@ ;@;@`HD@}?@ " KC"X@#`@C"<@?<#T@#4?T"\G@G@R@\@@C C Cp@@_cCloC@6@RjC@BF9ҿZ9sE"tGҕ@nE@bR& $@?<9@t9T@!$E!@"$ CsGa@"X@ X 4AyqT|Q y@<qHT#P@*R#,BB@@9xC9D `9!B'@"@T*{ESF[GsJ_րb@kRҠb$Gw?`G@y >@ 4&@QsG>A`8_ 8`@`@l@_T!Q!?<qT#a$6BaR`9@50R!Q^E9B8@!7ி7'6ARZ<]tGRR@O>@n@Gn@AT.Gbc B`[c @} ?#T{ @`<Ta@9?6 =GR`G@ 9>@@5R! !`)=9`G@b@n@`Tb`R9b@Z@ R%R bRE9@9J9$!q@b%@R9T&{`Ta@9?65 I92 9]_E9 7B8@ſ74`R yIa>@4"R R!RF99B!RR9@`G!RG0RR@rE)R@RE9 D@"@#@_! Ac@_ z$&z#R9.@@@WE9"R9@@7 @?q@T!Q `G@b46B'@@BҁzT!R{ESF[GcHkIsJ! (&@7! !*4A@>@50RsGQ> 8a@ @Q cHcRI9Bx 9FaG@9 @*`q@5ThTq)Tq!TRH9`50RcHq(TyR `/8@9$Rq@zTsG`@&@@8qq!j @TQlqT$`6sG4@`@n@@4?@qAH @`Td5c@9 R8c@9|AT_84qT@R8@_(qaT@R8GѢ@ @!@@@_@ @6 $E@8@ 7@@wrT R .g_4qT@_E9@7 B8@`7]c@9pqTCK@`5'@/@s4@2 "@$E@$@#$O@ `@ ADT <@@5T#@ "H_aT/@`#@ B?@@BT{HSI[JcKkLsM_֡ @?qT!Q ҇G$E@@!@$@/@CRz@R $Rn@E`8CZ+Z c8Z@IT@C?T`c? Te@9Bze8D9T@ @`/@r T@/@ G $E5@@^@^E9R`7 B8@B\WB @@! @[ G@ <@5</@CRSz@`;J @D@; s/֢/{/Wғ~ R . @cDRxG3@@l@@"{BB[6sG@@|@KA9q@Tq*T'4@`5[E9*5Q#R,RK9c!!B@"@c-T{B[DsG_SRckK9:RY YKGRB78r &EG!@@ 8@7_@  @6o@?T#T`@9#5AKG `@P$4CR ҁwa@9G!?dT@R @*5q`4Z`qTT4q,T,q,TPqT_@ @ 6&ER@8@@ 7݄@9?q@ TG@<@aBRVRR{ RGb@@<@@?qIT!Q_<R@9q TTG<@qq!jTKA95@ВqB(BA0q! ! 4qR@Rq @Tcb@95 "1aR7U~G"R,R@"H93`SCcEkFN_E9R7 B8@B\WBS|@9?qT"R*R|G&E@!@@"$P)_k T<@` RR/{ R/R@9qaTa@9?qT`R1_E97@8@7`@9!`! ?P@q`T@ @UqaTI955SE9B'R u@S9c*RSCcEkFQ<qT! $6`@9?6@B_T"_mTb@9CqTd3@KGB@xb@P b~G<@}b@GAy@4C9(q`T;@4Sckc @9q!T 1SRckK9#RR`@94!сcqq! >`@9+SCcEkFc@* `3y=}!RY} 2v} @4qSckm}!{!BS3k tGs "@/@9@KA95?qT@?q ,T5[E9?$qTZ R!R-R K9c!!B/@"@cAT{FSGkJsK_@9qT@5[E9?qhTR!R .RK9cA @9?qaTZ ,Rc[c ?q To@RK ARF SBRxW@?q TbTE9 ?qTE9q4 aG7&EHG@B8@<@5_@! @6TT#RR8aG@9<@qTq!T@@8@tZ? qT?<qAT 6AP@6_@a @ 65 @9Ga8@@9@qT@ @9q#T@!R 4@R&E R[@)@7%@9,@8qTF@9E8R!R*!HG(f (j!TZ@8* z jT@Qq"T! (`"7o@BSwaG<@o@련TWb _"TuG[R[xR@@dBWvl@˦@0.T* _(q-T!8@Bl@?-T"@9_4qT8"@9_(q!!_E9 a7B!8@7f_E9`7;@7@9!R#`?#jT_@{&E_@@8@u@987#cHGc`6n@cTcT@9gqaTd3 c@HGxc7W@˿ T R RRRzsGw@ @J9Bb/@@BT{FSG[HcIkJsK@95 HG@7R{r T&E`G!@@ 8@_@%aG@9<@A @9?q T5[E9?$qT R!R-R K9cS4@|E9?q@dT`G@\@! @6&E!RrB@B8@7RwRR^w @`S@RzaG&E7@@ 2A8@ tZqT<qTa6@P@7(\E9!R7 "RrB8@i!o@ARA@9 ?qT9@W T@ R 5[E9?$qTZ R!R-R K9c=ZRpqaTR 9@@c7_@@b @b6o@uTaT@9"5 HGb * b5&E`G!@@ 8@&# ȐBHGcG5_@ @6o@T@986@!??TA? T@9)?qTd3 HG @@x`4&E@8@_@ @65@9``8_E9 ҂7BB8@7_E9`79@ 7@9 Rxb"jT_BЕWU|@_vb!!HG `aT@9 4#RR[~`G@@$@94qaT!8aG9"@A\@@l"@!@@R_q FT@RK_qT@RK `G@@cBA @ @ -4@@y,5 v@!R!(D@ @@h 8@!@9x\*i5{GW@ `$y@BQ_(q!TaGBR86@n@^@n"@!@@~_4qT?@VT Т@9RHGxb? jT`x|@|@ }@u_k88yG @"@@\@@?q LT!Q @D\A`B@@p! @@A@Ad@Ah@l@w|@ @;@{ @R* T@9(q TJTz@J54TB_T@9(qATCRthT"@! @B@ y~! @?q BT!Q! g{CR"ҝt D@@# @O@ [_@;@@y@4@ ARb@c @B@bBˍ}@9@y* @`4 @;@R#yaG&@<@#A@2@@99]@ARBo@Bi} &`@a @@ W@@|@!!5b$TV @8(qT@cB@c@"Tmz*@ 5@!T҂ˡ{`GW@@@@Q@ `B ` A#!,  D@ @@7O@ R | #@" h`8 ,q'T@ Bw~b@`GA@@!A @X@?` T`B! 4!^E9@7 B8@ٿ7tRRtR| R|RRw@RKWR|T 8B@@xw@#" @6!@ @!<@A4@{CRB!sv @aG"@A\@! @A6&EARr@c8@7bRsRR5tRRpwRRtRT| R|RR`wsGw@ 2PI9A_E97 B8@7 У@9"RHGxc_ jT 5[}@ T"QAIHG|@@T@8(qT@cB@cyR*@A@5T T c@TT@9$yd$jTT@9(qT`b|@|@{@_s`G@j"8@@ `BQ `@W T/} @?qT!Q &EsG@`@W$! @z cB\E9ARb7"CRrBBB8@_i![ˡR Rb@a @B@!lsRRvR@Rv\3*,@9Š?6@@T  T@9qa T!@d3@!HG x` *H@@y|Sq!T@(@TARr@@(@A@y!2Ay@!}@!@ @R R9x R@Ryv fROwR@ dA@9 4R҂RA~RwXOwj Lw @"@`G@\@@?qT!Q`G @@\@d@hO7w`G@,#RRzq| *@7I| 5F| 6C|o@# 8=| @8:|[c 7w`x|@|@W @90|w "{CBBS4[*GcksC@6@*q` T89R'E@A8@ tZQ qT^@RZ@}G@ !\@;@xy'E@@_ 98@ 7@\@ @`6Al@?hT!T#RRBzc@9q`Tq`(TBq@R@z~q*/5G7RA!@C@"@dH9rv>q&T`@9Rq!*a&4qTqRAz! Tb5 5!A!A@!@#! XvG@*q'T4&R3`d@\E97 B8@ 7 c@9HGcxP@qATR@H9ֆ#Ruo>qTGR@w@AR9zq@#T7A@$vG@\@ @ 6AR6RC@b @B2b }R<qAT!6YP@9OSf'E@A8@ tZ qTG@ 4qRAzA!T5GRR@ PE9$ @"P9*qT 5 &R3` !!B@"@cT{ASB[CcDkEsF_ 7BRAhF@`@u`@CRB!\q`@@CRWq`@\@ @ 7R6R|RGRR@b?@zSE9Fsz:C'R@@ PE9?< @"P9M9R8`@9qTv5 : {c@986`@hT T`@9qaT!`d3@!HG x` 7 @&R3``&R3`<qT6@P@7 HGc7`@9 5 HG@y 73GsAR@`@@d9ku@\@ @ 6c@Rb @B2b P|G@RE9RRr6&R@RE9@ @92 9RE9 @R9R #RJ9bW`@9qT9B! ;uU@R0t@G'E@@a@$`P)?k@TbAR8@{a>@*R/zR |"R@9&R3`)&R3`&R{aRy@T@vraTc@9wˀ G9k78@!`@_z^uA @;@Yz :Vz {S[cC5"G*BB`@A@Ay4`BqT~q !:!_@q T_|q B:B ;6q8{R G@y7R{&E @8@7G@`^@ @6an@?TT#RR^x@9?pqT&E@8@"tZ_<q!%T%6P@$(6R!vG@!R#RaJ9tb!!BB"@ca"TCSA[BcC{Ũ_`^E97 B8@7 @9HGaxP@q!TG+@a#R Ҩm@G T3@yATbbARr_kT b^@_8?qT`^@ @@ 6&ER@8@ 7Rp@@`zG@ \@ @6&ER@8@7*OyG3@`@`+B@986@B_ T"_T@9CqAT!d3B@ HGxb@6+!_@q!TBL@9 5!!HG `@P 5@9?pqTt3@bRyaBy?kT! @9?qaT*:+Bm \E9R7 B8@B\WBS`^E9R@7 B8@B\WBS/T!@*`h ?T!@yR?kT +@9|qT A@ iTt" @yፌR_kTAR+B:RrG3@ttb#c B<\pG@ \@ @6&ER@8@ 7z*G+B@_8q!T@ @@6&ER@8@7R0p G@3@@@Y \E9R7 B8@s^Ws S`^E9R@7 B8@B\WBSG@ +s +x#"?q{cBS [*=AB c@9B@="@c!R9Srck7R**lG @D@TqT# @r`Te@95"@ i@ TG RB@"60@@Ba T{BSC[DcEkF_9B@:A 2B@@AR;v@ @@{CzZ}u9AX; @*;@qTG@<@ @!,!T ?qTCBR&z @ B@T!@T"@9_qaT"@9_q T_qT"@9_qT_q!T" @9_qTc2c2B ЀR!>|k@@@@ "@9_qT_qaT@@RBRv =;#x;!s"{BB[5S6Gc@@w@:@?qLTJA9?qT8?q T?qTT!Q!?qT:@bR"@G:" 88@ @"H9 'Eq "RD!Rc@c$@#4`"!!B@"@caaT{BSC[DcE_? qT?(qa T:@#R"@G:? 8@*R@"@#H9B"4`a5k9Rn@"KG?HT 98kFbR:@"@:G? 8?@T@9@x` j@T9b#T@9q T8'E@8@`7^@` @7^E97 B8@ 6`@9!87!KG `@P@5 kF"@!(!|@t"w@y:@"@Aj@:z@RGd"8c@b@Bbx@9_q Tkz@CKA9qT@QqI TWo@_q@,T8'E@8@7@_@ @`6(8T_qT`1T#RRuG@Wo@ 9)T#KGRs`T`@9a`_!j@TTq Tq TCKA98q`T@;@bRA#@QG" 8@"H9kF9:@"R"@:G" 8bR*a@ HA9qT C9$q!T R H9`"`R 8R `$ax#pa@?y?! (Wo@7a_8_k T?pqsaT"R@*R"H94``@9qaT!RAK9Tc@*RkF KGa@9xaxP@q!TCRҭjGR#KG7@n@T` T@9ba"j T?q!TE9#RR&Rq\Gq+T@kFAk@@{@?@T8R9x@9q@TG@ l@T@y`R_kT`R H9kF9#KGR?T s?T`@9`x`_ j@T?hT8kFG R@ H9kF@B_T"_ 1Tb@9Cq0T!KGd3@@ x`@P4@9 Q?qYzhTCKA94@9@_E97 B8@ 79 R#KGab!jT@_@ @6'E@8@7 @9Ga8b/T#s<'EKGdB 'E@8@`7 a@9Ga8Wo@s T @8@`7@_@ @`6`@987KG `6G@@_@` @`7A_E9 7aB!8@!7@_E9`78@`7a@9 Ra{a!j`TGsG@Wo@@!?hT? Ta@9"_q TKGd3 @@x`7"T9s R@9"KGA{$ !j@T#KGR{@9Ta{`_!j T Tq T4dkTb T`@8pqTsq bWTRpr#@T9#KG`b`5zlqG7@@4 @9qAT4`R@w@9@4`@q!T R H9kF@_E93`7 B8@`7V#RRsGsG@Wo@QCKA9sGc?6@@HTT@9?qT9@d3@!KG x`@7=sG74 *>ҩt`@9_kT!RCTkTk! T`@8pqT T!Q?qT@B"RRE9 @R9kFqRd@zT T8sG @9 @9Ax`!j!T8#<'EdBG 'E@8@ 7`@9`8Wo@siT`@8@`7@_@ @`6`@987!KG `@6G@@_@` @7A_E9 7aB!8@a7@_E9`78@`7 KG!Rb@9xb? j@T@!?T?Ta@9"_qAT"KGd3 @@x` 7Ror@T#RRDsGkF@6@9&sGRoG:@Wo@4@9qT!RAK9Tc@*RkFsGksoCKA9  {!BcSG[s`@#@ol@ˍqa@G \@s @` @ 6"R$Es@8@6 \E9=6sKtR_qG@)T RG *E#3#kRG@@y?q%Ta@9,@?lq&T?tq"T_$@zAeTb\@@@"T?qa/Ta@9A45 G@ T`@9pqTcBTGG@`@yq`Tz@9q/T`/@ a_;q!T` @9qT` norTG@`@9q`oTHTquTHGT8q@oT)>Tq,TR`8 Ca/@z@9*aezO5 R`8G@ `@986s@*Zr@#Tq$@zT@ @@c#4;RB@*9@@2 7#AaT @G@`@9 86@*;`8TjG@G @qCTkR*`@t @ @t_IoT9RR?qb@r` @`@`@b@**`@A#YT@G@?TGB$Es@C@?T@9_(qaTb$@Bb$dbB4B b$b?aTc @ RRcc BBd.@B8@_jT`bB95dv"B C`@yqTqTD`^@@@@T ?G@!(G@RRk`mG@!Bo@"@cT{NSO[PcQsS_ @Aq@#@oARr@ @@tG@`@9 ?7*cG`@9`8 G@l?qTb@9AR_qDAz!*aD4\@@@!TG@`@9*@5`@9q6T q@j#G@`T#@#3_ @zT@`R9RC_T_8_pqT!RT_8_pq`T!*9?qT_!*!04 @_8|25_8˚ @ ?T TxT@x@T s`GR`@9`8 G@ # @BA?hT|Sd2 $8G@@9`29G@G?qT`Ts@9 * r**rq`TkR*Z$5a/@RBHGB`?"jAT* ЀR!fG@`@9\@ B @ 6B$EB@B8@" 7`=TaF87BHG@a@P 4B8@¿6 Rs dT3@@ !r#WTSa5Tq#@a @87@` A"T' qA@'@44A@9G a8T T8{1T`a[?6|Sd2!!`2`$89pG@ @9i\E9@&6 RBHGAa!jTG@ Ђz@9*qG@,@ZQR_j!TWQ!?qTaB R*RRWfG@W@@3_zbVMT_T\95_)TT@ @j@!R32@_ȈT@ڡRRr|bG@d @!!wT RFsK@*B}r<RG@ q+TqAT`R`8 q(TTq)TqTG@\@=! @=6'R!$E!@!8@<7C#RRorTK@q%TqTG@\@a9! @!96'R!$E!@!8@a87C#RRsrTW@rRKz8 G@* `'p'@`*GkRA@@a6@9?(q7TG@98G@T@7?* 4#G@*?qT `_8?qTa_8dz"_qTA_8"_qT%@BGLa8H,qTRB( |@TA@8zT!G-`8l-q TRaB(@ |@) T "@8zT3@_!3T#G@Q*@`R"?T9RT_8?pq`T9_qT<@`64RG@B8@@ο7 @@T#@5@s!RG4`@9q3@03G@.86@#@A ` @>n` 3 *?qAQ!? qT` @9$IT**R !GdGR9@kR_iTCѵP#3G@K TZ[k;8{T`k @#8G@#RR0or@@>R`8 `G`@9q TR8 G@R`8 @R`8  R`8 `GT`@9qr@TR`8 a@9?q@T<@`5?qT?qT` @9qT"@B_hT_Tc@9b_qAT* d3BHG@@x`@P4~vT`@`7_BTn@|@ @?RҀ hR`$qҁiG@yazR'GoG'@$@`:_pTEHGR@G +T@@9`!jT_bTBHGR_T_8Axa!j@TTq!T@@9qT,@@ GIA @9BHGAxaaQ`7R!`G8 G@k 4\E9R7B8@\W7\E9R7B8@\W"#BN@G@)5HTG@98G@a?1T@9_qTR~ @?(2TbTa` sZ!lp@9#@3G@ h{8$(TRprTG@ \@ / @.6$E@8@@.7RR{c! RjK@u@#W@pRR`$pҼhG@yz8 G@@#G@`@9qT RGƠ WC95\@ @`6"R$E@8@7'3fgW@'@G@ \@ @6R$E@8@7op'@*V+@:@@,T q+TcBR'q'@G@,@A&O@$B@ @d'/˄7 B`!!C@B@y!{y@7@B @_bTm@h44+@@9 9'@iT B+k*@8sLf@y`x @9`8'@TE*kFѡR9A @?qCT{!QA G@@9gf '@bR#@*9K@iT@ATڡRRr|bG@ARBB)n@ @`@K@t R3_HT Қ G?\E9R@7B8@B\W=!G:@9T#@9:c8_Zӂ"T"@9_q TdG@G_T&'ƀ{8  \E9R7B8@s^Ws S!,@  RwR`$o'gGG@@'@y@@93RRb@7@ @_CT @@t; l@ @g \E9R7B8@\Wӈ`@9`F86#ERb`8D!(! bd8!|@_DT'@`T'@0T@9b%zdd8BBD9_hT/ W@ @@y{yB98@yA@qTa6O@4G@DT @@!!7@c @TqlO@@dO@@@S @@O Ra pbRRRR'W bKW@'@G@AT@75iT@T`ڡRR@ @BBRˁ@*9U@@2a@7d @@CT @ R3`@tK@hT<R{9ZG R_T@9Da`7?q$CzT@9@x` g6G@G?cTbB{ck@$R'l@@'@,T q TcBR'_)T@{ aKd8 @@S @@OO@aT{9RhK|49kg{g R!`@kR`@9 kl Rm*B}{;m<R` ?lG@@yqTR '@3@RarT҂ B+c@|@/@ ! 7@! @# T @+@7bS@7@s'@ T7?TE/@wB'/@9 @ˡ86#@Ra8c(c b8c|@T?TC!T"@9dzb8D9T S +@ҍc|@@'@!7@! @cT @c+@bS@Tw@7@?@6!j S@9!7j7@ERarW@c S`@9WW@nRBHGB`?"j%T R# C{k`B[s#@9@qaT#@99Tc@8 T`Q|qIz)TqTT*RBHG`T@9Aa!j@T?T@9?qTdHT@B@@BaT{C[EkGsHC_qaTcSsc bf t?hT8:џ T@9|q`TcQ@ c|@c|yTRUh!T lCRa?T@2T`@9qTb@9@@$Tb@9@Q_|qsIzhTTt?TkCRacT@R@*dK Rm@ 2SDcF@9qaT@be|q@TlSc {S*Rh@9qaT@9`@$HTaQ!?qT(!7 Ճ@8bQB_qT(šB6qT bQR_jHGRd@zc AzaT[G@! ]@4@@@BX_T[B5G@&R PE9$ @"P9SA{Ĩ_2@9qT@gG@@R*@[B@R` {S*[vG@HA9? q`TqB@!@` !]gR}@@!RH9Rh@9A@!?$T_qT@9!?$ TR#R&R ResGb@TSA[B{Ĩ_!RZ@9R_qDUz!TsG&Rb@@PE9E @ @TCP9SA[B{Ĩ_Rg@9_qDUz@T_q TsGb@{B/c *C9 @? HQs@%q)Tw@#9*!B?@"@cT{HcK_S ` 05Xhxh G@HA9? qT/@#9w@*gSI*SIG@@@5AXE9?qT[ &ER@c$@CwgG!@ HA9 qAT@8@7 \@ @`6!l@냥TaT`@9 5!HG `@PӁG!@4G@\@l@6@v TR Ta@y-R?kTb @9RJG!xb!j?Ts `@9qT`@9 RqAz!TG@ \@@s"R"H93``$RSI[J[ GRRR@2_;@RRR+_ RRRRR `@95q@TH<Tq?TqA@TRsA**SSIWG@ @@[ B!E9@9?q{4T[JRRSID"(R)R!G!@"?H93`SI:"R!R)RSI3#Ra.R G@d@H9y`t`@9q@TRf@9qT`)RSIRf@9R_qC,R`T%R,RBGB@Dd@CEH9CyA`Dt!@9?qAT  )RSIb/R)R!G!@cBS[*`@cb4_hr!TO ҙbBGRX@@áR9`$E@` C9CRdR!RdJ9`c9b9v`fa 96@ @ wa" b&_9i`Zt@ ,T q`T#BR@!7`B8@` 7 6 @ t^ @` a`jR`r bI9@Bt!B@`nc^9b 9@"@aT{BSC[DcE_ !`^BRcR!RcJ9`byv`fa 9@ @@!6@C8@^r!T @#RR3բ@@` BW! @!}! !cTc@ Ta@9?6 rtR\7@@Bc ` _T`@@TCQQ` aHa8Tzc_Ta@9?6 CR!B`t^@r`3B@a@ D@!y!a B,@@9B@"/@@@ @ @x23@!̛`R3 !`3{RStG @eLs dh@l@TsTa@9?(qaTSA{¨_  a{"Bt!xC@S[cA+5xG3@`7a@y!!5ks tKzn@uv@ @ 6bLwz@ˣZ{r@B9{a@7`@%z@RR qmT @ G%R*@@ @@`^@tb|n @6`$E@8@ 7a)]D)r@ T@`v@x {r @uv`z@`wz`fB1Ta!$E!@ $bf 4`AR F@j Ta`!AC!@@?Tb @kHsI@_!T@Tvbz@_@Tz?9G҂@3@_a@6a^E9`@ 7G@`aI9B!ta 9@9 5ssCf@95ssvGe@9%5 CR!@#"HG%RR@~`I9`7RRykHsI`B@@BҡT*{DSE[FcG_`a^E9B8@A7`7'6`AT'@'@@ BӁT! @!}! !T @@T@9?6 'RG@'@@@N""CT@@TCQQJa8RG@4GRR@T.`T@9?6@@P6G@j CR!B'ƘG9@'@@L CR!@B9`@G*tGR3@9/@#RR͠ks z !`ks s  Ca{C!BS*[ @zr!TtG@Kl@"A @6a!$E!@!8@A7 T@9*87a!B@"@c T{ASB[CC_\E97`B8@@7T@9?qTc#cGwa8TGs2@`@l@T*$rT@987@#@*rTG@`@@9#@eRE`8C!(! c8 |@_ITTcTd@9zd8BBD9_T" DRՖ@*rTG@`@l@ ! `#ޡ#ܜ{xraT1Ta!G!@(q`T"\@B @6bB$EB@B8@7"`@ccGD@9cd8B"`{_bB$EC@b$@Bb$$`B4B b$?`"\@"\E97bBBB8@7"`@B"`{_ !`{krS[c*tsxo 5`cdRGRxHGA@$E3`@4l@ b@9 _q T_(qTb j T_q`TT7b@3`!`B*S$@e! A$mb@A@S$3`@4l@rTo@j T"@Rb@9A@_q`T_(qaT|4b@9_qSTb@8_(qaT5b@9s3`SA[BcCkDsE{Ǩ_DqT!ҁ $@65@9$T1@9`z`xP@qT:ZKGR@9@9_q@{`DXz AzT49rAT\E97@B8@s^WY`\E97@B8@B\WBSCRAFE{HGS [ c k s @9B;xg@??#RK?&jFT\@G$E5@@@^@"$@k @ 6 8@@ 7@@9D87"@ /9 @h48 $@FbB$8@OtZ<qT @ 6d 7 s"0/{0ҁ @%}@ _ T@@6"R7 @R !`/4G@F@^@@`6@$E@8@7@@9Gx8#q@GTR!(! !|@_ T@@8az_aTh^E9@@97BBBB8@b6@?6^E9`7@B8@ 7 @ {0| @s//W @|@8<@;6@"R;7 @@ R !@0߂G@F@06 P@@G6@@66^E9=7@B8@ =6 л s"0{cҡ|{ s//{0Wҁr^E9R7@B8@B\Wz^E97@B8@7@9@J;@!;R Ҹ|@R@RrC@ *K@(5[3RG'aG@/@@;A!B@Bo@@Ah!7 @T+G@@#@Bo@ @BT4y@9/@?+qTWo@?sqT@pb@#TbT@5sQqTAH?T @`5s *G@ \@` @ 6@$E@8@7#87{8G@@o@(TG9@ @@@ l@T @m T_8_84q T(qT_4qTGAR8@@$E@@$@@$#`B4 @$?` l@ `RLr`TG@@[c@ \E97@8@@6#?6@c8#R'{}{@@`Wo@@I97@$E@ $@ $CcB4 $_cy@9y;@w`5 @@?4q2T:` @a@ @~ `@@@a @!@?q3TXF@! @R 5a@Z@ @T#@B$EB@B@_T 2qaT`@@?iT _8?q!T_8qT8@.6@@-<@1@-TR>qTRxC@Էj T  @?q)+T!Q @ r`TErT(D@9`4dA@94B@@B1TR{ASBR[CcDkEpx @C@ 54C#B@`@C S y @D@D!B҄TGb @?k#T` @ @T8@5@@a\@`6@!\@!7b@C@@@! @6@@<@@4!@Cb@B@`@c\@~B34z @_a@ @~ `@@@b @A@?qT!QAb @@@qT!XF#@c#@8y @R9w4y @R94Ry @5 @8@ 5*aT @9qTxJ@y"iR k!T@9qT @ @A6@@<@1Tx@ 7@`6! R@0@9,qTs!B5@@"D@!!a@B,@aZB#@C/?@?@"@" @? @!x!2@b  @" ||@ @@@:?T @_L T{:sF!@ 0@9,qaT @5@@1T||9CA@A@!A_#?T{\]@ 5a@ @~ `@@`75 @@?qT!Q` @` @u`Rr`T5\@o6 @dB!#f`@@db @@@<\` @7@ @5UiN"Kk(z @Cb@A@ <R" R" ՠ@@7@@LTR@*" R|@! RC! R>@7!@"@@B"!@ys'b @@Bb p{z@?qT!QO`R(!ͺ! R@0@9,qT:  ѨC{BS===#='=+=/=3= @)#GRҍB@@BҡT{CSD_ͽѦ{ƀBS[*c39@42@9?$q T@$@@@"@9!@A`@2`q`T q TqTB@@B T{BSC[DcE3@_RcƾB@ @ D@! ҟ@,T q`T#R4` @Rf@R9@Ÿ!` @?qT!Q CRC9G9` @@9hqT R"ERDC9G9зc @R!d9;@ @@ * {S,SAGR@{èȷѨC{BS===#='=+=/=3= @)#GRҠ`@7B@@BT{CSD_;ۼ  {S[c#}RSA[BcC#@{Ũo  {SSA@{èѨ{B====#='=+=/= # @')5B@@BҁT{C_~ {Sķ`@7SA@{è_SA@{èQѨ{B====#='=+=/= # @')B@@BҁT{C_: GR  {S8(`@7SA@{è_SA@{è {7Sk9 @?q@T9[c?/q@TsЗRB r sa@!j@T"@$QqITB4Q_qT2@90qT`@?/qAT"hT@?/qTSA[BcCkDsE{Ǩ_4@ @@Ta @?qT!Qa SA[BcCkD{Ǩ_R r" b*7`b6`@ @@@?T@@ @A6@ @!<@A4@_$A:aTRCRBöARRCA @?qT!QA a@ \@2 \a@ \@2 \a@` @` ;@b@@xx@qT` @qT`@?qTOC@94SAkD7@sE`@s@[@kc3@aTРB`CEB@9@94c4c45Ѡ{CB[SӂF@a@c#@`@` @7`@гBdA!?@c*D@@@9"u@9`9 45s*Du9F@ @@`R!`6RRA`@  @? raT R`L@9 7F@ @@ RBRR)@ @? r Tигs" @+Dbu@*RR@T @? rT`@`F@@4@4R\@@cDB@@BAT{ASB[C_!5`5rTa@7BdAB@99Rda@#@tТcdA!6B(D7c@9C9R%@@R@@yþrT`@rT`@b*D @!,X@9!T ?qTBR@`*D9TЁ@9#RKG@a j TkKGZ79R T@9a? j@T:TСBs*DBdA7B@9b9kE_ТcdA6B(D!6c@9C9`@:@@7@ITk@9@akECck{S ['m)g@!A`!8"A`!`x Ti ggdA`!`xJTidA`g!`xTg`d776nb9`bc)`sxp`gq!a*TR!` g` Tn!Q!(b h4b2R `9` %R RQrȣrIRir 8$ k⇟`0yK`b!` T E|@8",@9Kb hTdR`c)`8x~ӓZ)$)xxe)B )SA[B'Cm{Ĩ_i ggAeA`!`xTidigAeA`!`xTg`dg`Ae6( p4b2R `9`# R RQrģrBRbr`kHT"R`g!`$TE|@Р"8~Ӏh`8c h TR9a RwQsV6Q_꣐R"gCgj=r R b @@`Q-R"Rc)a kT|*`@`@ TBe-RB|KB 4@@`"R-R!`QTsR@B( `cCh`8*K)`b h To(R RER飐Rg"gQrǣreri=r R Ճ9`Q @`"RckT|)@@`R@Te|KB 4 @`"R !`JTR#B  @hc89`*cc hIT=@T⣐R Rb=rb|"BeB|KB5`gvR-RR`gn{CaGS;BB@A@' a TC '@Q q(T*_qT*R RHR RD@RRQrɣrhrQr $ -Rek T-R@Tc k◟B! k!T"R RQrģrCR RcrB_khT#|@ 8ƀR` bgg C)RxxBQ A b|B)!bDbblS!bKtS!bb!e(aa(a(a^ !G aJT^5RR#`@a@a@a  @a@a@b@b@b @c"@c@`4!B'@"@cT{ESF;@_#@t!K?,q`T?,1aTt R RQrãrARark T@` T_qT-RaDqᣐRa=rQ"R RQrģrR|!Qreg!KD kTCRB ,cr_k$R RQrãrRQr kTCR"DcrkA`R Ir8B@ | ` ||KpS`K kp @GxQ'_qTT*R RHR R RRQrɣrhrQr$ -Rk T-R@T k㗟cQ!KQk T-RQrkTuRR@T#R RQr£rRQrk!Qtxr _  {?TR?T*{_@9?qT?q!T@9 ;@9;}*{_@9q{RS[cJG@9D` ?$jT `@8A`!jT'E!@$8@q@T#B;G5G@\@ca @!6l@?T T#RRjt@94*@ 'E @!@\@$8@Ca @65a@9Ga8s\E9 ҁ7!B!8@7s\E97!B!8@a7t@9 RJG!t!jTG@\@t@987JG!t!75 #@SA[BcC{Ũ_ւ@B_T"_-Tb@9EqTJGf3B@!xb!7* ՔzvqATRG@SA[BcC#@{Ũ_b@9B5JG!@7R{r`T'EG!@@$8@\@`@9qT5G@\@! @A6l@` ?iTb @986C@cT#MTc@9dqT*JG@d3@ x` *5'E#@8@Ot@9a\E97!B!8@A7JG!Rb @9xb? jTTb @95JGb *SA#R[BRcC{ŨR%R ѣ{cBS[c@9`@qTG@n@_).TRHGt@8Tt!j`Tq@.TbTHGRsTa@9xa!j@T'E@8@7^@ @6_(TTB@@cҁ*T{R#RSSR[TcUX^E97B8@7a@9HGxaxP@q Tks^@` @ 65a@9Ga8t:RyKGB#5^@` @ 6 TT@95aKG `4'E@8@^@@ @65@9Ga8^E94`7B8@`7^E9 ҁ7B!8@7^E9`7:@7@9 a_ jTbTRHG@8Ta#j`T?q@ TkVsWB@@BT{RSS[TcU_ր@9?6@!?TA?mT@9#qTd3`KG!@xaRMG6@n@qTSD`@9q` TG@n@TGR#RG@9@n@a@986 @(T@-Tc@9`qT#d3a@HGxa@P`4'EkGs!@@ 8@n@MA@9A5HGa@PR** 5^@ @@6'E@8@7RR]@@ 4TgVcRRc9/T@`<^E9`7B8@B\WBSR*r@Tb @9a "4 R_qK"@8qD@zT_qT@9?RHGb$jTHGR "@8b#jT4*; R!;!t@9@yRRHGc@_#jTGks{cGS@j@v@TSAcC{ƨ_ַ[Rk+JG@9Dxc ?$j!Tva@9Axa!j@T&EuB @ZG8@cC5^@ @A6n@?hT@T#RRԶGd@9@q!T!@^@#8@c @65`@9@`8s^E9 ҁ7aB!8@7s^E9a7:@7d@9 RJG!d!j!T^@d@987JG!d7q@T Ղb@_ TBR|`SA[BcCkD+@{ƨ_ւ@B_T"_MTb@9EqTJGd3B@!xb7b@_HT^@ @`6&E"R@8@7v@[BcSA!G@@`&RSA[B{Ĩ_֠\E9R7B8@^W{s[GS@@l@ Tk 'E7c*G0`@9 87HG ` 7@"RHG`@9#`f _#j`Tw4q`TqT`@9qT4` @9qT`@a@99@ @!@99@G@l@?iT@BT5@bT`@b@99@`@9 x` j@TG@l@?TcCkDSA[BsE{Ǩ_@B_T"_ Tb@9CqTd3B@HGxb6@Ga@9GHGa8s@@l@?T  T`@9 5``4`@9 `8s@@l@?T`@9?6@B_T"_MTb@9FqTd3B@xb5 ա@@b TT@@a33@7@@@8@tZ? qT?<qT6AP@6 } @zTHG`@9x`xP@q!T@AR9@9@se#RR,raT6G`!@!l@?TT#RR@`@94#RR#b@986C@cT#Tc @9fqTHGCd3`@x`7Sb@95HGb7MPrAT@`@9!!  {SG3@a@y"Q!QB<!<_q AzT!B!8@aH7qTRr@TbE9`A@!?dTb@8A@!?dT5a^@a! @!6RB$EB@B8@b78@SA{¨_b@A@9!2A9b^E9R7!B!8@!\W!SGR!A@SAB{¨CѢ{BBS#A@`AR`9G@ \@ @65R$E@8@7ARYR@R**`?" \E97B8@^WG@H@?|T\@B @b6B$EB@B8@7#5R9R!R R#RS#9'9+9\E97B8@7?T#R3#9'9{[*Sc*CxG@@:@_qT"@AsG:R"8`@pva@ X?a@*6X9 4`@C9@4C@[BSAcC{Ĩ_ր"@B(A|@Ѳ"@:@`Ʋ!BGB@?qT\qTA`@_H9!A`_AC9?$q!TA8@5ARAD9AC9_H9?$q`TAPE9C!#R!d@AP9A`@!A`_A8@5RA9\q!TCPE9/RaC#!d@{S[*6@9a4zG@ \@ @6R$E@8@7RR}G&RR!B@!@9dPE9?qBg$d$@aP99`\@ @@6$E@8@7B2>qdRSA#R[B{èg \E9R 7B8@B\WBS`\E97A2B8@i"{R[S`$jG @\@A! @6B$EA@!8@a7@9l@RcG!chd8aS#B>\E9 6@9G@sp@`\@IT@(T @6B$E@@8@7G@ s Tb_8_qDJzAT``\E9`6e\@(T @A6A$E!@!8@7T!"T_8B_q`T!bBDCT e @a7a\E9Ra6BB@8@@7BBA8@a7BBB8@B\WF$E"R@!8@6a\E9A7AB!8@6T* *`+R?(qT+R?xqIT+R?qT@,R?qT,R?q)T -R?@qT.R?hqiT@.R?q T`.R?qT?Xq/R!/R_{S* B[c@t @ D@!5bv~} RN)*2qT*qHT q TT# Bxw9Bjv8Rd@${7۵ @9c˃>qT#@ SA[BcC{Ũ_:qT`z4q@TSA[BcC{Ũ_kTBр SA[BcC{Ũ_97jv8! @9 |@ # Bxw 9B@!{7@@.qT @ @@x2 SA[BcC#@{Ũ_րbр SA[BcC{Ũ_?R@r" @ !7@2 !}!`*#!hb8b@ӭw@R"RA@!xCB 2 @` @@@!@@@ #@ sjv8*@{#S#'Ec`@@@@[G@dB1@T"R@`@?q)TP64BRK`@@7a@ R*`?G@dB1T[BSAcC#@{Ũ_֠R @W7 4CRvR^`@W79'ESA!@[BcC#@{Ũ!$@{S[cG@@IGR@`@9`2`9yd@x@P7PE9@#R 'R&R!H9A@P9@5XE9 qh T`*R`SA[BcC{Ĩ_R߱G@a@ @@?qT!Qa@ @ 72@9,q` T`@9a@ @@y2 @ya@ @9`2 9ub&RSA[BcC{Ĩ_@7@4q` T @R(@aRHG c@9sc%j`TC8T9@`T@9*qT"QB_qT$(š7@94?pqT?qT@9q TG@`RX9@8?qT@8?q`Tb@R R`G@'RGB$E@B@#@B$@?H9_k5`B"y \@o6 @ @sG@qaT d@ t"R(R"H95`eR@a@z?pqTG@9%@4G@9%@4_lqTtqT @8?tq$@zT?tqT@95qaTd@t!R(RH9`@!AA!@@aa! ۬G@ @5 XE9 qiT`R X9R (R"H95`'aB! ɬ{S[a4 RVSA[B{è_ւ BӀT @} ?TB97 Ք @T96TsF ҅@8cee8ccD9`A(T˄#TVSA[B{è_֔""cT@@TCQTT96T@9qTR  {B$ES@@8@7"!G!@ \@  @6TSA{¨ \E9@7B8@7SAR{¨a B`Sc @a} ˟Tc@T`96a_Sc ` ?T`@@TCQc?Tc?@T`96 {SsG[&Ec@@`d@B$@_kBbv@RR~a@@R#@&Rd9B$@#@?H9_k5`B"SA[B{è_Cу{ cBS [ &EGE@b@W҄@$@c$`B4c $`@f@8g ߌqTBW@@B!%T{KSL[MC_֕@9RJGxbE "jT `@8x` jT  Tb@-Rr_kTJGRb@9xbE "j!T`@9s`C "jT `@8`"jT@$HTcb@9@@$T @8@@$TJGRb jT_4qT $š 7cNI97C9_(qATl@_TqT$@Q$@9RJGe` _%jT@8b`"jTq T@9JGR5@84`a_ jT@9JG 0QRca"jAzHT a@8"0QBa$j@Az)T?q$Jz!Tcr`T&E@@QTGs\@@@A&E@@@@?q)T!Q_R&E@@!@sPS$cNGk"*@9kOkOI97k _ TR&x*RTBR@ŭ@`3@9$q T@R@ b @}@&E@ @$@k@T @"@bC@|@˟T` @@~@A@C5`L6 6`@T{z{@@@oAT@?T(kOz@ɮckskOmaRͭ@@@ @b @@@!@ @b @@@!@{!$ES\@b@"@?qT!Q`@G!@!\E9A 7a@!@?@T`@@?qIT!Q`>@@?qT!Q`V@@?q T!Q`"@ͯ`&@˯`Z@ɯGa@SA{¨¯u{ywuPE94{SSQ`s~@[zs<Q4qTzs@@@yP6_xN"B@_`T s1TSA[B@{Ĩ__օz3  ՀG@ \@@ @6 RB$EB@B8@B7_!\E9R7B8@\W_  {sЀG@C\@d@`@ @TS[ckFX@TN@ZdLX\MSx@˟Z˵s9˔{*s4 @@_G!@"t@:d 8\ 4pb5t"x@b3x4!X@" @B6 SA[BcCkDsE{ƨ_SA[BcCkDsE{ƨ_{S[_xrTG@\@ @ 6!$E!@!8@! 7"5`Sa Bt @cw} ˿T8A@T #_! cGcc|C"T"!$!}_! ! T#@@ʭG @l@`@BB9!@ \@@@@@ l@ lTs8T`@9@?6|Sd2!!`2s@$89aTSA[BcC#@{Ũ_\E9` 6 4t TccTd@9 qh T T@џT`@9qTccT  #ˠ@@rG@l@`@BB@ \@@@@@ l@ lTs8T`@9@?6a@9s d3 B8@`6"4@@FG@l@`@BB@d\@@@dl@dlSA[B{Ũ]cCT 8ATP # ! `c#  {S**SA{¨yт{CBBC@5 @A,!T ?q`TBRb@@Bt]bB@@BT{A@_@@!@ !`ɭȨ{SДG@@`@T@TSl@?HTb5BA@s \@@@@@3l@SA{è_ !@`  Ձ!G#@a`@?Tbl@_#T?TB$ED@?T"@8_(qT$@B$e`B4B $`ap?aT``_{ !`y{SЀG@@\@@T@TC`@TCd@3BTAdCh@CTCt@bABT_tCx@bABT_xBl@BBGˀ@\@"@A@!ALMt@˄ cB a!tx@a!xSA{¨_Ah !`2 ՀG@`!R 9_ ф{CB@/`;S4R@'a [k @,T q TBRծ#@ @#`s {HG`#( @c RRRR)R+?x@9@x jTqs<4@*b@*b X4oqTwq@Tqq*4 @+@<* 4q sq 9#{?aT@cHqsJ` @z @@ /@5[GkIB'@@BҁT*{ESF_ @!@ @ RR) RR RR+R+RҀ`$@ @@!ˢ7@R҃;@4@AR@@B@5+@5@`5@4@ R!@[GkI*+?R#R4RR+?@ R!@ R!?@@ R!@ARhF@ECRBa!W@BR[ck s (G@@?1T!4PE9#(Q@cx"?Hqd@zC|@AT8@@ @QQ8d8!@*!2c@Bx#P9!_?qT@A0R@rQ Cс{!BS[ @"@ҡ.!T ?q` TCBR@ @t) Tc/ER;9'mn gacs!h i(aiT`@9$@486`8A+c a8c|@_TdTE@T@9az`8BBD9_Tac˄s!h i(aT cF;@'HmB@@B!T{CSD[EC_c@9@ @@ t(T/cDRd@Ac;'mw  {S [G@ \E97@3 `2@98qT`@!Gb@@@B92@9`@@@@@I97@\E96C`@Al@"T Հ@8(q T?T [BSA{Ǩ_RIcB@@ D@!!aB,@` B@.G@@@@ @ @x2UcC3ۧ[BcksY\@[`N$ @Zx@wEL{_Z@@C˺7^G @@1@^\@t@@@!@  petx@7@x @@ @! @I92 9[BcCkDsE`RӤy cks!G!@!@"@B@b{#@bxbB@B@_TR@?qT!Q{__{w {@S*G[`d@B6*`~@@ce@@Tc@tx`aTsSA[B@{Ũ_@@4a! @7 @TԨG@* @@!35qMT@ |@" @? 8@SA@[B@{Ũ_ց2@9@?<qTA4R T* @sCR`@ @ @ߨG@@qZ @AB?T_T`@8(qT TbCR=@ @sO@E|D@O@*?OO@R  {S[65BG@@!l@!6c@d,`@$ҁ@RRc@d#\@c@!\@:@"\@@ @2@ \@@@c@B"lSA@[B{è_ ф{GScB[cks@e@@!@6`@@@/@5{UC @AR @Ш`@CRMB@@B T*{BSC[DcEkFsG_ֻ@ @@|!TA@"@SA@!7 @bT @b@ @!7R$R@ @!A9A@ @@6A @" _8 9@@@@@@_)T@A @ h`8 qTBB*|@6@?@%RRm@@ * 54  0@}  {SaRߥ`@`RۥSA@@{èd@цB "{GSB@@  \@ @`6$R$E@8@7C#%R6 @!B9˓@@"@cҡT{BSC_ \E9R@7B8@\Wܣ{S*BB[aBc #*W@5@T7:FtA@ХsB9?q4^bR!$EC@$@a\@!*a\$@T@;a@&#@ @B u((G"@@@X@$@#@@`$@5*SA[BcC#@{Ũ_`\*SA[BcC#@{Ũ_ր((G"@@@X  {S @@y qT`@R(@B@D\@jT\@!2\SA{¨_ @ @!,!T ?q TBR'a! :4a! 54a! 0`4a!` +4a! &`5a@ \@2 \`@2`SA{¨_C$@" @a@!@!@!xb!@9!7@{c$Dc@9@4 $ @ !4   {R`$f(G@y{_у{CcBS[*cRk`@Ҁ`$HaG#@x@V4Wq@TtL@b`@TY?T_T!Td`@hTqT 1aT`C9(qTt,@t ! CR `@ CR!B 2'E @@A@"@B(aG!@#dB1AT$@ !`G@ \@ @6'E"R@8@7 #@!`tG@P)kT'E@B$@AK?qi TcB`@9`6x !<Rd9AsGBa@?y?@@BaTR{ASB[CcDkE_ \E9R7B8@B\W|?T@9R!HG"xbE "jT`d@8"xb"j`Tˏ !CRBmqT@Q!R?dBRB !@c @R`p`@(D@95?,Tz @Y T`@4@B(TX* T  T?99`@`@ 7B@@BҡT{ASB[CcDkE_A@T8`@!b@@!7 @Ta@&@h98!The8bh%8ѿTa@ @ `@ 6`@@V)7h68aRy` @`@@699˕6dA@94R҂RgyR@  C{CBSc@@c`@ T[ @b,BT _q@T"RjT@_T TR 4r` qT"bc@`5` qTRAR r`  rkT7e@@`@2`[C@!B@"@cҁT{ASBC_b@@@47B @_T6`@[C@b@@2`@[C7 @?"T$`@e@*tc@6T`@@7 @bT@[Cg @@GB} Ta59@a6#`t@G@BӄV˄}ӄ #T8!D@T _ Gӄ|!D_"TD G$} ҄ 7'  _T@!@T!#!#cCcQRi_T_T9a6"7 @_T[Ca7_T8!D_T7 @!cT@ea@d @"@h"8!T"8T@9CB?6cc`28@9B|SBd2"8`@e@?qT@a R L@9!xL9RU{`@e@#@#@abe@`@e@#@ [# {S @A67b@ _T7:RR&@,T qu@TSAR@{è  @q Ta_6R $QqT_6@@ @SA@{è_`TRSA@{èga@ @ {!R  @_jaTAR`@x` @{¨_RCR%4r{CBS[#* @@҅ q T*d@p67x7@ !7b@B @_T@c @`a@ @ `@c @R@!(Dh 8`@!@9x\*`! 5u86`@ 7B@@Bҡ T{ASB[C#@C_ֵ67 R`@@@ !7b@B @_T@a @ T8T@9"A?6!|S!d2BB`2a$89aTa @a@ @w @@dA@94R҂RҾC{cB#`@S* @,T q`TCB2T7`@R @6R$E@8@}ct86@ 7SCB@@BҡT{B#@C_ @!@@ 6@6@SCS {S**SA@{è{BRSR`@@` @SA{¨_{ S[cc-dB @@WR!0rjT_!tSd@cq)T{RrR@ *@U5!$EB!@? Tv>E@ @r T&X7@P6 @@@(q T%@4{PP!BWP"@cOT c-SA[BcC{ƨ_@!$E2B!@?!TZ VR 4@@ @_T@ _XdAl>T@aǟ!B$7$T @s m$T@b,@8{ 8k,T*!b{˜3 @_T @`cT`"5@b09@ @s@4O(qT*N@@@.T @{PPPPaR5@`.7{Rr R*4y6R@5 @c s _MTsk`8񂣟xR1T@@@T @ `4ҟTS5@`s>E5`@ @6BR!Rr4T`@ @!,!T ?q!TBR@!@_82*1T8VzT˳1T* RZCVR{@7RxCR@RrR  *8 @ @B4BL _qTAR@T @5;@  @qTT/@"!_mT@7@ @bTZP`@RrRr @! ?kTBR@G3@- @R*y @~s1T@a @y!@7@ @bT @SWh98s@_Vz!T@ @@w!@ 7@ @AbT @@ss@@ @ Rr R @r @! ?kTAR@b ! 7@ @# T @{5Zןq ja T@񜣟k<8@@T{PPPP@@ @R@@2!B3@b@"D@! _RRx@BRx@@T @ab@ҚG?"Ty5 _#T T@9Wc8 _"TT#B @Rˠ@!!@7@ @T @{aT@bacTT@b8@@@@SbT#˹5u{@  C{cBS[*a@ T`@,T qT2#\@!,!T ?q TC2Q @@ b@@@J6$E@8@`7B 6q.`@v @@@ R`$ RTq56@!4_T@!,!T ?qT#BR@@BB 2R?T!B@"@cT{BSC[DC_b$@ @@ DqR@ @!@!{S*t6` @B 7! @ 7h7`@X6` @ @6@@ @ 6RbR@` @ 7@˟? T@rTP7` @7X6 @ @ 6@@ @ 6RSA{è, @7s@sbo6RnqSA{è_a!@!` @ _6 @ @6@@ @@6s@sb!s@sb@@R@@ R?TR @@9q@@ R{ScksCƀB @@G/;6!$E!@!8@!}! SG[7R!4r qZTRSR/@@'T@@9qTW_"TG@3C@7)O[ 9go`@9sq@+THT_ T$@uG@#@3@Rc@?j9T5 @?T @@# @cyh58@ @T@9@ 'T@9Q@@|@$TB2TAQB@8 @@!|@6$T_q?TW@9@RRR 73;q`>TEqBTTqIT Tq!TN@9ߕqT o5 RKS;@Q4o@[T @3@kT@a4 @@^o@T(@!" @f 멣T @A!7 @#TB9# @w`4-"@8j 8T DRZ@Ho@GG@o@@RG@@3@9*r3 @! @T @2 |4g@e7@A5@<qTq`TqT R4* b@G@@DG@X:QqHT!!p)!X`x`! RsvC`@@@y qAzT@Rzr@ET$RR"Cp_TC@Y4[[`3@9qiT`@@RE`t(D@95B@@B!TCSAcCkDsE{Ǩ_7 @ @# @@B9w7HJ5:4"@8j 8T DRG@G@o@Co@@^_"T2qTN@97RZqT*R RR!RR4q T Tq Tq T*@95@7*RqTqFT5 k@&@9<RqT@9e@ѿ TTqT5@@7<!}@@ ,T qTCBR'c@@'@ 6!$E!@!8@a 7!RqTqqT5R#R 9W@9 8AT5 @T @@" @BZ@8_T@@9@?6|Sd2!!`2Z`$8A9_cT_9 @# @9cQ @a|@B_$T?TQ@8!@c|@Ba_$Tq!T%R@9C3@A4AR =AR @@@,T q)TCBR'3@@'@_؅!RW@9@C(@@9qAT@ @9@!? *T9R xR@@a7,!}@0@C9E@W@9?q!R;DqTN@9߱q!TN @9E 7RT@@9qAT/@AT rTu!T@@9qT@ @9qaT@@w7<!}@R@ @B@k) @/@? T;@xa" _q T@!N@9ߡqTN @9E w R`@@c.6`@  @/@ T;@&xfQ?qHT"B0+BXaxa""@RqT @@8qT@!? )T RW@9;{tC@@@y! ?q T@!7<!}@'&@'@@95 @ ,T q7T#BR'@'@ @g@S6$E@8@} SSKR4 RdA@9s4R҂RҘ5@@q7T9Tq:Tq6T"7,!}yf:RZR*_#q-KS9hO|5 ZR5@@"7 <}&@Ҝ 5ZR#RF @7 X7KSEK@rS@@T6 @ @6@@q`Tq<@Z@@q&T'Tq`T%TXq%Tq'T7,!}@9* KS#KS@K@S@ @`Q\qT!A $^7 R8=5R#RZR4 ZREq jSoTq;@ @z *rSoT@@z7<!}RR_#q KS@Ҹ@@i7<!}@%v;@4CkRnR KSoC@&qTTqT4-ZR9"7,!}@9KZR*_#q/%4-S9;@q` @$@z@z`T{@ 25B@;@Z7$E@@`8@ -7|zqTq Tqd @T;@84@ᗟ@z j{aT3¿T{@ (TBBA@DT{@`^599q@]T;@! 5v 4R9B94R9o49 @4aR9ѡR8@`24D@95@C@q͎T =ABB6@@q=TT|@o R>?o@ R{B@"@#@@@a7B @?T @@# @ch68 @@̌R*̬r|$!b!|K" K*A85̌R̬ra~%!b!|K" bK*A85R8VCS7q@@C@S@9" _qT@! =R Sc @@S@c@kTqTBRURr||!!` !| |K ;@ 43{DqT!C7<!}@^qTqTqTa7<!}@QARj3*x3@@!27,!}@K@9K@@ Sp7@53@@?5& @ Rr!j@9TR##@q@4TqAT<@* KSQt!CR!BҶ5"_@T R"ҩ@T@9A@!?xT~CR!"@] :Rg!h#GT)Ry R/+9a*!RScS@rc@!T@@8@6!RScS@rc@aT!RScS@c@@|@4D@95@C@q}TB@@ @<@I63@5ARSc RS@c@3[QW@9R@|@!?$(TTTQW@8@B|@!@?$T$7<| @ =RKS =K@@`S@{D@C@5 R> @DkA ?q,T@"@!" _qLT@!"@_q nT @!p8RR_#q K|@_8qqcj`TB9\5T ?ᇟ *SX4@@7<!}@ R R oR@@9@S@SBs;Kz|@S!B cC @C@\C @9S@c@ %-ҥ nR RKSoy" _qLT@!* @E@ @w6@@ @@w6#K#@K@R#KV#@@`K@0*7,!}@y" _qT@!m`/@ST;@RBx`fR#K#@K@ @,T q`AT#BR@yg@+@!q@'@R'##9"B @a! RScWS@rc@T@;@6! RScLS@rc@T!R*ScCS@rc@T@@;"@_qT @!# qT@!B9`5 @qR?jTqR?jTA`cS_S@o@\ @@ R9EBA`B9B@ +cG9@A` @G@ Co =@ @C@`7f@>R8R9q<T@F R@ 9I*T)T@94dTџ T@94o =' _@'@H J4@QB94@9qLT R|qT9KTR KR1*R@9 (! *98T@9q;@M4B9@L4  KT, @9_qIT hs8_ q LT<q 㗟9H4` T #T@9BBC 9_<q㗟Tq"@@#AT KK@ RK@H 9K@@F:#RFKh#" _q,OT@!y" _qT@!@yr Ro@_I}T;@nR RKS" _qrT@!@W @_#qR *;34Ro@Q;@<5ҟ @9ᗟK @ h`89;@@z@T@`4D@95@C@qM6TB@ @!,!T ?q@;TBR#'V#@@@'@w@#ǿ#@@@s aR>#'`?#@@@'@w@T!bh`8 @hb8h 8?AT\R@@+@"?))T@q+@ RRc"B ` Tc@ @a(5'4{@q @z%TU RooR8R9;@ T5K @qK@@zaT;@@43{e@@@g RC{Z@@@ou𡮆R> . @F37<!}@yhAR* HTѭ}GT@@E7<!}@ @D6"@@@`@B<@?4@@ CKs;@@a7<!}@@ ,T q`JTcBR#@#@6RR$E R@8@}@" _qlT@!RR R@FR /H5{ RR7C q RT@"@RCdrC@a%Tg@s@*@A ?qT@"y@ qT@!"&@ o@!7 X6@ @ 6@@ @ 6 @ZV RnR RKS`AR@>ScuS@c@B@@ @<@=7@>ARSc RS@c@k@!A ?qGT@"@9=*RR;; R nRRKS0 m @U 4 @Ro@Ro# qlbT@!;@`58aR>#'#@sF@@'@A#&lˣ!cm #T#|69<q 㗟 = ܻ@!@w@/A` *`B9W5 @qR j{>TqR j{>T@4D@95@C@q T# =v@*c >!R@@o#@C@5R@>LD =Y#*c >!R@>R?@R@>F @]# q T@!`3@g@Nv;@ nRRKSZ@@9q:TX @@7<!}@!!-_! !RA8T@@9q7T@ @9q7T@@9q!7T;@@ @!0!P ?qTAR,@`A`mrTA`@@" _qT@!?w@R(@@@" _qT@!;@@ @7;@R@[:t ` ;K o!@ @!<@4@*RRR;K$@9@@o" _q T@!V!R!ou@@7<!}@;KRCRR oC@KS@K@S@ @ytC@@@y! ?qT@!q!&Ty @R9#58@ @ 5: 52q T.qXTa@ @@_ q%TRjAT@ rTB@@BACT{ASB[CcDkE_֟.q`T2qa Ty @R9w4A8@B"6q!T` @@@@ 2P6@ @%RҁRv_$q@XTT_(qWTBB _qT`B@y ,Q!<?q⇟8q0q`qB*!*!58qT a@A@xa0@9?0qaTgERRb@I_qT_qTB'šb7`@99BB _qT"'šb7`@91_qT`@@!@K(q9TTqTHqiT TTqaTs@:qTqTh! To4T`6q fT$qTb@ A@xb!T%RҁRSA[BcCkDsE{ǨAB!#!X`x`! 5R`@9 77 hE@@!@AL[Tb@ A@xb`T`@9W5b@@@@y qUT tC@T5R`@9 /6 "OSAcCkDsE5Rv@64 @@ @aҿ7a9R@Td9ERҁRj5Rb@4 A@xb @aϿ7a9Rv@Tb@ERd9ҁRR5R`@@@@y? @T @"?4$BAT@3_5R c@tCe@@_2TR ՠ @ThT~TaTe@c @TR c y@|` TT@TH_(TqTX/!!A!@3xx@@2T65~`5`@ r0T9 A@x{T/@0UK.@>454@RRR`>u5Re7 4c |@7R %07C%TGӢ a@A@xa@ @ÿ7a9R@!Td9ERҁRb@TRAT|c x@Tc {@,T T7R0T4`TR T$HTc |TT@T7RzRc z@c  ՠ|T T@TRdc Rd@`@9{@06aC@y  qT`5`@5R TaR!R;aR> ?cFkG.@cF @? rTX6 @ @_`TP6 @@@@@?cx2cFrAT@*W@e@@A_jWR"8! R?rT:@6! R8rT!R*3r`T 6DBC@9@`5?qM TҖ@a6Ҁ@A56B!@!@!@?T @!h_cT @!R@c >RB@ @A6@@2zck@W)R Rb6x9!RrT@`8@ 6!RrT!RrTO9R>R@9D@@x9R>@9Fckh" @BdA(DB@99I"{CBBD@@ @B,BT _qTBR@ B@@BT{A_@@> !{C!B@%@ @T`R !!B@"@cT{A_!,!T ?q@TR@z@@!@#{cBS[*a@` @!,!T ?q TB2#+a@!,!T ?q T2C @@7ua@@AJA6!!$E!@!8@76k 4T +@ R⒕!q@5`TT+@ 6b$@ uZ!!B@"@cT{BSC[D_+@@ @@q4KT+@R+@a@` @5@ +BR  {  @A4` 7_,q ThT_ q` TT_$qT_(qTX7a@>! A9!x?PqT `! _8qTT_<qT_@qT> @{¨__qTIT_ q`T r!T@_6@`&_0qT_4q!T`' @{¨_ր`> @{¨_@@`> @qT>*҄ @!,!T ?q T @BR{¨@@ , R2@@>`@@_6@{S*[c- @!!kTk5s;@qT@ q TTU4qT@ X6- @ q`TbqTQqH TҿkT@*b~}\**qT qH"Tq TBр kDsESA[BcC{ʨ_a6R@ q!T@qRw"\a"*"}*q T>qT2q T3*`Bx|sB@az<2qaT|Rr@@ 72qT@A@@A@@9 4  @9BBx{Ck!x;SA[BcCkDsE{ʨ_ qTbр SA[BcCkDsE{ʨ_@9/6R*?qHT qRBR\*- 9@ 7kb8!҂@97 |@7@@9"4@9 @9?k TB|@A>q T q(T **?VBqT3aB @@@}-#*!hb8b@\SA[BcCkDsE{ʨ_H@"@||Bq@T-@@@ Ax!2q w3*`Bx|sB@9Re@ez<77@@9`˦*A" a|@BK@QbRR"RA`1!@!xCB 2 @` @@@@!@Ҁ@ }*7ka8B@7@`*c {S[ @aX7 q)TA7A7@ @ @sT!@"@AA?3 FT`}s"5@ SA[B{è_f@ @ @T"@bBsj @@ @#aR@ @ @Ru@Rn {RRS[@ @u @ tA Fz`T`%` @Ѣj`85SA[B{è_R `@ `@A6 `V4"SA[B{è7`@ @bT` @`@`@a @@?h 8BQj 8Rc@6R`  {#R @S[_ja#T*6C0q`Tb@VX76@cW @q T"q@TRAR r@  rkTcC_ rTSA[B{Ũ_*SA[B{Ũ*qTRa@8 @? 6`@ *qT\x*`@`A)R r\*?q T!Q SA[BcC{Ũ_ R RSA[B{Ũf`@@Ra@@R!@`@a@@!@`@a@@!@`2@9x@(q!T@&QqT6Bxb @!` @@5@`@@` @!6@A@B<@ 4!@A  a@ @`@a@ @~ `@@@a@*!xBa_$q`T 4Rr ` 7 B@ T HE@ TcCcx`}k`@y @@=Yh48*q` `@R@`@! `@kD*\R6B@B@"b@@@@==b@#$@C"$`a@!\!2a(@``RvR3nSA[BcC{ŨcCa@#RB;!xalRR0ck{S @_rAT!R_jT @`T_qTR!0r_jT@ @q TRr@ `B7SA{¨_TX6Rr?"j T@t@?q T!QRtSA{¨_ @$QqTSA{¨! ;RRb@SA{¨SA{¨ #{cBc`@[@0@90qT[T B@@BҡT{RcU_8SS@` @`SSOkc@@@@@@@@TsRR@970r@9r?q` T*$k"K!@ ",`@R6R7 ՠ @t `@ @9Aa84{ @`3@9$q!Ta @<@@jaTjT?$qT 7A7a @ @`8a @ @` @6@"@"!<@4A@ s@@ @kT@)T@9@9@?qT @9kT@6);R/@SS[TkVsWuAR1 @!@|} ?T#@b@@Bx b@hTaSS[TkV^S[ks{S@9?qSA{¨: a {S @@p6b @4Td@ @( TR!0rjTxR!\!*a7 @[d@v @ ATL` @d`@a @@?h 8[Ba@d@!2a @ˀ a@ @ ` @` _T8SA{è_փ@` @_8Bp__p8SA{è_R`@d@C[{SR @!0r_jT@qAzTqTRr@ `72`t SA{¨_`@ @` @7`@ `@Rrb@@ `b64`@t 2`SA{¨_!R~b@Rfb@_8Ap_Bxb` { `@7 @{¨_ @{¨B #@c#{#@ c#`@7 @{¨_ @{¨,{S[!@5XA  @R"0r?jAT@`Oa@!?q)T@6 @R RkTkT@ @?qT@2 @! @8@ @ @bRrh`8!h 8 @bc A2c@@c!av a@5SA[B{è_ցRa@!?q(TaR@ @`_bRr` @aR@`RbRr{S*[c*#0@9qiT K@U@T{`Rq@zTuqT~@xJ9uqT 1TywSSA[BcC#@{Ũ_֠j48`2@9OzAT@_6 @0@9!$Q?qHT@@TR2@9$qT`N@9 @2`N9!  @y  @@? T@?T@?`T@?T@?T@AT { 0@9?(qT# @R{¨cF Rc@! A9?qAT`@ @  {S*[c_q T 8Gb8@q T*ҠT5zӵF@!Rj@T 06 raTqT**qT2qTSA[BcC{Ĩ_ր@@* qaT @!@ q T@@*`**qT! SA[BcC{Ĩ_ր@ 2SA[BcC{Ĩ_**! * {SAN!Rj38 (D@@9s@*5SA@{è__ dA@94RSA@R{èq@{#cBS*[s@$5`@`D!a`@`B @B`@|d D`@*`6!"!FBC @B@ jT!!A!@3x SA[B@{Ĩ_5!ҠBa @c`Ri  {Ss @@6 $E@8@7R `$#SAsE{ƨ|ck`@{ @@z T'[54EJGˍR*q`T6qT2qTrqT45 R`&x {_SITw@9*?6 @9 4w@77R`&x*qT{v&x_ST_ TŅRR4xb 9[B9SAcCkDsE{ƨ_րKR`&xY@hcxw7ˌR`&xR`&x @94~@zhBFӃ4c8[B9SAcCkDsE{ƨ_QR RA$8ecRcc9.@~@txB8N  "c{BBC@/c!!tC @@@y! ?q T!@!`@@a@`@#d @@Rc@`AR62R`{[ @p76R*[B{Ũ_BR!RSBrT*SA[B{Ũ_c@ @ @u BW! @!}! !T;s @T`96`ˠ@TbSa BBc @#yB}B BcTcs @ T`96?TеF d@8?嗟d8BBD9_䗟jTB cC sT T#@Os"`"_cT`@@TCQs_Ts_T`96@q T@ R| @?TT!T"@9_qiT! RiSAcClSAcChs"`"?T`@@TCQsS@2RSAcC#@O?Ts?@T`96_!T`@9qTR{BR !` @{¨__{S*Rd @Tp6 RdSA@{è_`L@9 76@6$E@8@@7BRbRSA@{è_  C{dBS*[ @@ rT`,T q`Tb2#@C@ct]ӛn  @@@s"B@@BaT{BSC[DC_ R@@@!D!@_T@`,T qT@ct]Ӡ @C!@kn RcF RcV  C{DScB@9d@ҁ5d@T#_@ BR{!B@"@cT{BSCC_#[*HC*B@[D3C8 @` @ q5[D[D RT[D[8BR {S[R @*!0r_jTB_q Tu` @a@! @a@7@@7D T"5}3a@5 a@4` h48`@R!(Dx\*` @95v86`@7SA[B{è_a@ `@u aRa@Rr `A6Rb@dA@94R҂Rҧ_8Bp_!xa` SA[B{è  {SR @!0r_jT@q T7`@ @_T"`@R`@a @@B(D?h 8a@@@9!x!\!*a5!?4qTa@ \@x \SA@{è_t @aRb@Rb@dA@94R҂RLa@ {SR @!0r_jT@ @q`TU @q)T7`@ @Th48R`@!(D`@!@9x\*`54qTa@ \@x \SA@{è_@$QqhTc @R7b@aRFb@Rr@ `6SA@{è!dA!@94R҂R`@` {CBBSA@Ҵ@_1 TC|@"!@9A77 @R"0r?j T!?q T`@ @a@` @ 7_RrRu r`@`@ `@*ax*!*@9_@`@B@@BaT{ASB_d@96`@2`@@ R1`@2`@aRRa@`@x`@!B@"@cT@BR{ASB_8Bp_!xa`   {CcBS! @`@ ,T qTBB2@@ `@@6!2B@@BҁT{ASB_!x`@a @@\{S @A67b@ _T7R5RR@,T qu@TSAR@{è  @q Ta_6R $QqT_6@@ @SA@{è_`TRSA@{è=a@ @{ `@7 @{¨_ @{¨  {S[R @!0rjaT?qIT7`@ @#T` @p`@R!(D`@!@9x\*`!54qT@SA[B{Ĩ_=Rt@Rr `6SA[B{Ĩza@ \@x \SA[B@{Ĩ_aRt@!dA!@94R҂Rr`@{S*`4@`6@@ @A6@@<@`4!@a@SA@{è_RSA@{è_! SA@{è_  { `@7 @{¨_ @{¨O  {S[*c_$qT @  @q`T@@  qT`@ @` @67g`@  `@a@  q&TRr `'72``@@!@`@@`"@*c@dcc$@9cSc2`@2` @a "@ @5 `@@  @A 6@@<@6R1`T ҿ&q`T9 @RB Ea@ @  @W` @ r!Ta@ @ |_T#@B$EB@B@_T | a@ @  q TqT!5`2@9$QqTSA[BcC{Ũ_@?q!T!Q @? @` @R@a5@ `@@ @6@@!<@1a @ @7@6@C@B<@_1@TR $QqT@@  qTRa @A @IzTSAxC[BcC{Ũ@c@`@ ? T?(TT @9qT@!u @@@ ` @@@@6! Rx@0@9?,qT#B@@ D@!!aB,@!B#@.?@?@"@" @? @!x!2@!@ @ @ @@@W_JT @ T8 ` @` @ @@W_JT @T8 #@`@@X@rT(D@9 4dA@94R҂R!Ra@Rr `A6`@R" R`@@.@y iRkTB@_8qT@_8qT` @vR@7.@![`2@9$QqT=`@@@@9qAT`@ @6@@c<@1TVRB @y^b @Bb & xw8 @@?qT!Q xw8 @@?q T!Qt`@ @lZ@ @u`R;_8Bp_!xa` FhgfV{S[ @7a X6`@6`@P@` 7 @ R@?jT ! 2qhTRy@` @` S @?q)T!Q @7SA[B{è_ R?j!T @q`T6@! 2V@qhTRN 3SA[B{è_e@@` @` 3 R:` *`'` $  {SR!0rA)_j!T @?qT`@ rT@ r`Tga@@!@a@@! *a@`@p`? @``2@9 @a qaT`B`u Ҁ@7B@D@!SA@{è_ցRR`*   {BBS[T@t @@bDC@cC"ҟ Rc@"0rj!Tb_qTX7_qDAzT_q T`@ @ `@c@Rrb b7B2bt !RiSA[B{è_Ob@Rc@b_qTv @ v~)!Rc@` @@?qIT!Qc@!Rc@` @C7`@(Ic@_8Ap_cxc`   {SISA@{è_{C!BS @"@Th6?qTu@2t|g@ aTla@ @!@c `B`@IT2`R@!B@"@a&T*{ASB_Ea@ @!@fa^ ` jaT@tp6@@a@?TU@9@џ$T*R qT`2@9qiTr T 6b@@A2aT6Ta@ q@T*q T`@@R*`R@ @qT$QqTpC@95 Rra TrT4RRt@|u@2tg@ aT4R*`@_qi T R*`w R* {RrTt06*Zt@\qT*S5RrT`@@` T`@@Ru@*`@`@@@a^ aT`@ R*`5`@t`?q TQ R*t~@uR@?t@`@RO6 R*`@3a@ ``@2`oRsr@TBB;#RQ`@RLKB_q)TcߝRb@r @R@a*`@`@Hu@|g`@@0 `DT~ g0 `T@R*a|!g@ aT@Rr*`@Ia@ @ @c `A!TRt@c@EsR a@@@R*`Ҡ@Rr*`y  {CcBS@@[*b@ Ra@`rB65 7X6` @ @6@!@! @a6 h6!B@"@cҁT{ASB[C_a@!T@ q TRAR r@  rk@TR 0r_j T R_j T_rA T RrT5`@t @@m*R@ q`Tb 7/75RrT 3`@@!!H@9?qTARb@`@A? q TR rB AR rt @_kATb@#R*t @X6@` @@T@ URqT`6`@@@6?TB'7B/6_}{!'6vrTp @@mkb@z` @g0 @!4!L ?q`TAR@@_ {S[cB%4CDTGa@@&@!A!@9@f *B|@"kKT_K$ dceB|@Bf4C@TGg @c|}i#@kKT_K#bc@ARDBc4C@i@|z|}g|cF$kaTc& BBaTGF!@?kT_ք aR%i(K#acbcB%4CDTGa@@&@!A!9@fBxB @"kKT_K# abcBB%4CdTGA@@&`!a!y@F "kKT_K#  c@dBReBdS4C!2@!|@@)F|} kaTdG cBTGgA@?kT_֥ bRi$K#ac@BR$4CeBdS@!2@(|F!|@|@%aTdE cBTGeA@?kT_ bR҇x)Kg#  {aSsuB!TG@!@ _k TbaBB4C$D@@ @D@% @B@$C SA@{è_`R>#@"R@lR@hR@dbadCAb!Bh@cB4C y`G@" @%@B" `F%cTGy`%&@Aa@J ?kKT_K#bR@@BR@<dbc!|@BB4CD@cTG@$$F`@kKT_K"!R  a@!A @#@Bx  !C?FAT"zdac4CB!B@%@cTG% a@?k T_{,#K"@ccde)cB4Cf@TG@&&g@$kLT_K"Cb{CBBS[#! @@@ ,T qTBRf%@@?c` @Z` _"5h48abc'!BB4C$@cTGF@$$%`@VSkT`B@@BaT{ASB[C#@C_ր@ @@R%Kd"b bcB4CdBF@@"G|@@dx'cBB TG$Ҡ @bkKT_@KG"  dbc҅4CBB@D@cTG $$F`@kKT_K1"dbc҅4CBB@D@cTG $$F`@kKT_K"{SstB&@:@6tc`CgcBf4CIRE@b@@@@B|}LBU@i"TG@y`@"!*B|@ ?k TC@"@_4@6sB`BSA@{ècBRSA*cLB{èc@yB *.#K!  {d[*Scwo4C@B @Z@@~@X47` @` S{;@@!aB !TG @kT`@6*7`@@7SA[BcCoD{ƨ_//@K!`@`7  6 R SA[BcCoD{ƨ{S[*c#@@ @7`w4CB@T@~@84` @` 3x"AR@@!aB !TG @k T*7`@@7SA[BcC#@{Ũ_uKJ! RN @SA[BcC#@{Ũ {S@ @7 @R c`u@B@a@ D@!"ҟ t2@9qT@@/SA@{è_8a@AR?`u@B@  b`adBBc4C!EE@@FcTG%)@%@@"a@?kKT_K  {#|@Ss![!CuB!@w$?FT4@6za !TG!@klTa sB!4Cb!@6$SA[B@{Ĩ_@-! @ {Ss*`*D[s@9o1T|uЀB@_kMT`c@k`? գ6CBQ`*D"2c@9Bd"xb!y8BK !?qT*.!@0Xyxa :m@Bz@_k,TcCkDs*DA9`9SA[BsE{ɨ_:m@Bz@:@@?րB@:@FӀBX@ @3cw:m@`B8@d7cB;H`$@ `;@LBz8{$y?q fTC@@@@@gB@BFBK:m@R( @RR3~!a @?qT!Qa Xo @?@@nT@@C 73@X @?qIyT!Q @u7 @?qxT!Q ! @?qixTB!Q! @:m@@@[B@B:m@;R@c@x:a@W@:a@B @W@:m@ @3w @z`3z8B@c:m@@@T [B@ZbacdBDe:m@cG[!Cg@ @f@˥FCDD @d@C@Bc @ C@Zb@ "@8:@@@ 6wR:m@! @3@@; *@(:m@A @ @@?qxT!QA @;`@k7A @?qbTB!QA @:m@! @3@@@aV @3@ b6 @@"<@1 "T3@0@94quT`@`z0@9_4quT3@a:]@X @@@?q eT!Q7 @?qcTB!Q @3SrTa~@6X!A} $@&cda`BXB @!FDA:@`TcBz :@#X`*DA9_뀛BT@o`:@E`F7A@ `@wB @0q`6T4q+T,q@&TP`a@D@! c@?qI)T!Qa@ @2 {#`Te@@ @"_TR"|rjaFT?,q@7T !T?0q 6T?4q T@\@@AOx6A_;!A;@@ \@x6 @f ;@@:@ \@2 \@ \@2 \ @ x2 :@HӀBX9@S @B@N @B@I`:@`F`к\AA @?wca&EcXB@!F @:@CA;T 0:@A @?q)ET!QA ( @B@#:@HӀBXy@:m@R@ @@5@A@[ @ @b6@C@B<@_1T!@"@_ q`QT5a@5a @a@?qZT`XF@!:]@@:m@`@렽TzB@:@"R8 @3A@H6B5`W@@`@`4T@@H73@@/:m@A @ @@?qINT!QA @;:@zB@ @0B@:@FӀBX@ @B@:@!@@ @c`!cGCc@a  @>oB@`:@tC @/B@ @ZB@:m@FBa# @!* R3Rv@xa4Rr c-`a@D@!z!a@B,@*FB@,``@`@`@ `@` @x2` c@?qT@\@@x6C`azD"B@f@!!@BF4@FBO@40`c`@\@x6@;C;@C@_`@@`@@ \@2 \`@@ \@2 \w@@z;C@!@B4@;@C@` ҠR;;@H`a@D@!z Ҁ@B0@ FB@0``@`@`@ Rra @ ` 7a@2` c5;J;@ @k;;@ @e;C;@C@` @C@@@ @?@?qiT!Q@@@ @?@?qT;C;@C@C@A@ @@?qi-T!QA@3@ `B@x*a@ D@!z Ҁ@B0@'FB#@R0r?@?@?@" @  7@2 RR  ҪCB@@ @[`@3@eB@@ Q"RjT! @!d`!G@?T @7 rTR!0rj@TR;;@ @A @?q)T!QA 3@`3@A@?qTB!QA@$;Z;@ҀR;C;@C@0;L;@$`R;C;@C@;>;@]B@@@@Y`@~@ .ckmBbС6Cң@BTG`&@##B@$$ _k+TwrCAR9GB9@17.;+B@&B@";7B;@@BaУ6C҂@!TG@c@e"z"!@?kTwR;;@ @?4qTR!0rjTd3@6 @?q T!Q l;@ @R R;;@ @ W@ R; @;@@{7{ @  @#@y"iR! kAT!@9?qT)U;;@ @(@;e;@ @A\A @<A @;9@ @T@T@qT`XF@!`@PҀRs3@B@1KN@A@3@`< Ks3@;{;@@acb!FcDC @BBQc@ A@``?kLT_֙_{bBBSS@sc`@@bD@@@b`aBBFaC F@@F*TbBAc%G@ RcFx&cf@ 2fSA@{è{  @{¨{bBLAStCB@s@_q@Tk"s:pB@@ T[cҼ3@97,qTuCD@ @`@@A xvDyA @;F!xA G@@d@C@s#@sC@sD#@CC%@ @e e%@@s S-W`@ Tab!DBC @B@ `TG!@a!C3@9,qTs"|C!RS)a`!FE!@@?TD@@d DRCG@@@c@!˂@!Ca9FC@A@! @a !A@!@a SA[BcCkDsE{ƨ_mTR@`s"`{Tu+DC@ @ ARRK@@ fn`/X RSA{ƨ_@@4L qTAR ?RSAkDsE{ƨ_}@@@  `@a!L`( `T~g0 bdT_$yc@ a Tl!(b$y6c@ a Ճ|ǛcCbB8$T `T&_֢R8  @_ raT@#@bB@@B`$BTTbx`_aT__{a`!G  {`tC@@@y! ?qTa@!JKc#~@CRr!T4`RH@!!XuxbA! F+҂\@9!B !xbsJF*҂X@9!B !xbsJF)҂T@9!B !xbsJF(҂P@9!B!xbsJF'`҂L@9!B!xbsJF&@҂H@9!B!xbsJF% ҂D@9!B!xbsJF#҂@@9!B!xbsJF<@9A!$|sJF8@9A!$xsJF4@9A!$tsJF0@9A!$psJF,@9A!$lsJF(@9A!$hsJF$@9A!$dsJF @9A!$`sJF@9A!$\sJF@9A!$XsJF@9A!$TsJF@9A!$PsJF @9A!$LsJF@9A!$HsJF@9A!$DsJF@9$@sJ`R@4K~@*}Rr@R*~@~@*7RA @˨ !FH" @ Ab@CB“`BAATq`T T qT q!T@9@@9 @9!bSB“`BʥAe@ҳ ʢœ`BABS B“`BAB SbA@“s``sJqTqT@9@9@9 @9`q`TqT҄@9 @ys ?@9s {S*B**SA{¨ {A!B @ @Bb B@#AD"@B"@a@!x a @!2 @{¨_  {BBTBS[6A@AA!DE!@ ?rTcXkY-sBC@:D7@@ !@@6@@@T`@6`@@<@"5 @;aC@4@XF@?kTR @@@|XF@`C@ \@7@7 @@ @@y qT q TT @!R*`@@C @w!"@@# D CDE@ @fGx@ @ @F@@G@C"@'DW@C@@ @}*I@! @!} -T@AD!C@!@B_TcGCh@RCW 'DEDF@@bDa@@@@A@C F @`#@c @ #@w@ , a @?q T!Qa @a74 @`4@|B@9 5cCkDsE@  5 RSA[B{Ǩ_|@\C@!x S@_sa @?qT!Qa RSA[B{Ǩ_#RҲ@@@XF@`C$cCkDsEv4 @5cCkDsEw%!x _cCkDsE @@@y PqT @Q  aA)x`?qhT  ARR3@@3@  w@-B CRACX`@@6`@@<@@4!@9lA{C!BS @4'[VRc8kRsrbF@ r ; q TX7!!2aT` @5@@RA7@B@A@D@!a @4!Qa 5a@ R?jTB@B@|Gb_ d@T!x `)Y;3@9/qTCqT3q!T\ @@!@AR;3@9 !@p4 qT73q@T`@@R`@p`/q`*TT'q`%T T+qA Ta@ A9Pq5Tq!2T`@? q`7TAR  r_k6T? @q@#T@B@?`T@HE!@? !T@TD@? Ta@" 7 բ5` @@ 3qAT-! !2Aa 9A6a@9&?q@Ti TCqTa@"@ @*C#a@xb @#@ yx gqT qTa@3qT6!"2b;@B@BCx{Dh!x;_T@ @5=` @!j` Tb}-!!2Aa 97hb84@@#qT3 a@"6` @_8Cp_` B 5"c@_<q@ T 6R$ _!j!TRa @k(T"hb84Q`9`@ `@ @` @3qT`7QqT`@@@!@" @ @$#Sx`s[CcDkEsF@B@@Bҡ&T{ASB_!@"@ @#C#xbs` @!jTy Ғ!RNrT{2@93qTZ`@@ a @bB977az @_ Tz @_Tz @Q_ Ta@ B9`07#B9RRcQcq+ÚccRc0a@ @`"B9B06?`@(@F`@0@C`@8@@@HE!@?THEZ`@? @qT$QqT` @@5@`@@@ @6@"@!<@?1@TAa@ @`ua@ @@ @`Ta@`@a6@ @a@ `@@A!LA!@?qTa@a6@!<@b4!@@xC@`#" '@DR҄@9RRq`@b@@CcZ*AR a@a@ @@?qI T!Qi `@ @"d @`@b @ @xaYx# a@e! @ @@@?qT!Q`@ @@F@"a@! @Ca@: @\@ @B @A `@ @Az!ha8 5#A\xc~!@  `@ @! @xao!@|& $ `@ @[cks< {  @?qT R_jT@A@!|G` dATBx ` ) @{¨_A` @@5`@Ra7@B@a@D@! @{¨_7@C@95 R_j T@A@!|G` dATR rT @!9{¨R; ` @?qT!Q_ {A@!pG["RC5@9cWX"BRCS մ @RbVT`@qTa @4@2#Q_T@_T`?qTc sbT@~@SA[BcC{Ĩ_ [B{Ĩ_  @{ @TD@ T@xF@Ta @`2@9!a $Qq T?qIT!Qa @{¨_@@ @6_@?qIT!Qa @ @{¨[ _Y a @  {!R[UТrGSTc~BksW@9$RRRrr @b^Tsb Ta@?q`TA_6` @4` @ @6"x_!jTb @?qT!QsbhT @rG@RR7R6 @3cfT)sbT`@q`T kT` @4a @` @` @"7 @` @7 @` @7 @` @"7a @?qT!QsbaT 9@9rG@RR8RV @ScjTsbT`@ q@T?kTa @4sbGTZ@:rGZYW{F@@6WDR u @scnT!sbT`@q`T@6` @4@@0@9$QqT @3@9$QqTRsb@T {@;Z{F_ @? @q@ T9WD @? @"_ @q T @?q T!Q ~B9SA[BcCkDsE{ƨ_ @T @aT?@?qT!Qa @u?@?qIT!Qa @?qhTa N?@?q T!Qa @Y?@?qiT!Qa @U `@  `$QqTA 9WD @? @"_ @qT!!$Q?qT1 a @8. :, a @+) a @,ZY@{F@ !!$Q?qHT{[*0@9?qITSc@@ScR"w cJ@9kT@s@@!@! raTSAcCR[B{Ĩ_b@_!*4`@B@@?`@`aJ@9?qTb@_T_T?qT`N@97`@@?q T!QpRSA[BcC{Ĩ_`N@9 6RSA[BcC{Ĩ_@?qT!Q  RҒ #R  {S[@  @*@0qT4qTa@!@SA[B{Ĩ_(qT 7bX6w @@6@!@! @! 7?4q T` 7? @q T$Qq T@? @qAT$QqT @@@@zr T @@a5@RI @"@5 @@ҟSA[B{Ĩ_@ @qTBB$Q_q T2R SA[B@{Ĩ_@@!@@tb@_6R" @@i@:<  @P6@@ R_TR @@9q_"@7"H6@@ `__R_{ARa{_@@_{  @a7RX6` @ @PT @{¨_R_+a@ {  @7X6` @ @b6@@ @6@@@B<@b4@ q @{è_R @{è_R_b@@"_7{Rr  @@"jTBxb @_qTa6 @*{¨TBQ @{¨_ @{¨  `@ xx` @{¨_0@9_qT@!@a{R  @! {__  0@9_qhTR_@!@{R @{_R{_{ P ?@b a @{¨_ @"JB ABPA@`x`@@?T@_ {S[c@@ӿT|v _HT}B}R Ҙb@"@@`jt@bj4@bA@#Jc AaPA!?aT@s"`TSA[BcC{Ĩ_{#JSs A@sRA@sxs c@d@?TbSA{è_փBT``a@xs`@x3 @ a@@iTSA{èO   @@  B {S @s@ @ SA{¨ _ {{@"STSBa@@?Ba@_$b Bu@@_#  a@CB'@cCe_Fn#$@%(EB&&@G &@&@D|D@"$@%,D"$@_ "$@_!$@?BSA@{è_RRR@{a ` {_{  @? r`T Rw s @a @{¨@_ @{¨_  C{CcBS`@? T[ck*0@u@ q**BzT*?q/TR!0rjTq7T T q`9TTq.T? qT@Q RjavT5X6Rr5j,Tv @zu@ RjT`B`xX6 @@!7R` a@Rr `A7\*` @?q6T!Q [CcDkE@B@@BnT{ASB_V 5!'Q?q)-TRr `u*7[CcDkEqTrT"q Tr*Tu@@*?7q 9T!/Q?q$Nz"TWX6? @q@4T? qT` @`a@" @b7 a@? `@u@Rr `U57 @@!a@` *`@ rT; r`T@(D@94@dA@9`4@B@@BQTR{ASBR[CcDkEf q!T@@6?q GT!'Q?qTRr `R7 R*``@@!@@ 6`@2`[CcDkEv&QqHT@7 @q 0T*q2Tu@5kT*qT?qT*u~qaT?q-T@|O6`b`a@R @r `W@R` 6 `@<7 R @*` 0RAu@*? @qTR  q!T"q`T qTRAR r  rkTpw p6@Rr R*6`A`z 7R Bq9T`R @q @(8T@R? j +T(H6w?6XD߆ ET<DTbDT@ @@ @ _8q&T` @@a@! @b@B7 A@ @@ @"h`8B"h 8 @` `@ `@`@2`h6@a@@@ q TW`7a@`Rr *`c@@ RҜ `@ 2`T@bzQ+Ru@rTRr a527`Rr *``6@`@!@wo6@`@ @Z6@-_7@B@@Ba0T{ASB[CcDkEN R*@`@x`_8Ap_Bxba  @B@@BA,T{ASB[CcDkE@O6?qTT!'Q?qT@Ra@r@@ a@ `7@R*`[CcDkEQ@B@@c!'T{ASB[CcDkE(?qTRS!$Q?qTrATR! ;x|$QqT @ @_$q@!T? qmT@B@@B!T{ASB[CcDkEC UraTRr `6 T@`@!@a@W6!2R q x$ @q!T$QqT#RB;i9$Qq JzT@B@@B!T*{ASB[CcDkE q`TRAR r  rkTu@?qhTRh7`@ @bT6 @` @N `@`@a @@?h 8` @a@" @5%7a@R @` ? `@`@*`c `@H.T qTBRe u@@B7`@ @T@B` @`@R@rR`@a@ **` \@x \"R!R T`@@? T _8?q@T` @ "@B" @` Riu@<TTw7 @AzTa @`@ @7` @i`@R @b r@B @ @`@B@`@x `@@ B7@  @@x A a@m @qT? T@B@@c*`TR"r R_kTu7_<TTT߆Tb@B @_"T@2 @! @8` @@ `@i@ @@V` @ @_! @`@ @CT6T @9qaT` @@v'@!` @ @0` @@!6@"@¡!<@?1`TR_8qT_8Ap_˵zu` `@@" |_`TB@B$EB@B@_T! |`@@![CcDkE"@B" @` @[ck_8Bp_RΎr R!*a` ; M9"@B""_8B"p_R࿫r !R*`a "ABR!@ABR!@!  ?rA!@AT!BR {BR `@7 @{¨_ @{¨6 {S*7BBBS@@c@CD@B z@BFBC@B@!?TBBAB@Sx!a@! 2aSA{è_ @B6>@@  {  @?(q(T? qTrTX6` @ @6 ` @ @?(qIT ?<q!T @{¨_? @qAT` @`@`a@;!@RR0@9!$Q?qT@@@@!0E`@7@<R{S`* @?qT7@B@Ab@ D@! z@SA{è_A6WR!<T@A{C!BS @s a@?1@ T!|@t"@977`Rna_RR!a r@rb"@? @ *!*b@9_@!A!B@"@AT{ASB@_a@96@2`R;M@ R@2@B@@B!T`@AR{ASB@R@B@uA@ D@! ҿ{ 0AB FBC@B@!?TBBAB@Sx!a@! 2a @{¨_  @_ raTBD@|B@|GB`@?$DbBFT @@b7@|}d L"cD`@@@_T@c T_{[ckyY%USZs5 5!b@B _dqT_q) TBQ_qT`@9@6{@ Ղ@B _q@ T 5@9`63@@yp6@  "R`S`C@yp6{@ SAcCkDsE[B{Ǩ_֠PXbxb@ 5R0q T<qaTs@`B@y qaT AB$!@B|G!`ABT`@ dqTqTQq T`@95R@ @rT_8qDCzT_<q TT@ LqT š!T!T_qTs@s_q( T_qTBh šaToCT6a@ @@y _ qGT5" @_ `GTw7 qT @4@!@?TDd8!!D9?T!da!HT;@|R;;@R{@9`8CR|a@9?7 ;`@97g#;7#&9;B77C#@?Tc@9BGEc8Ё;!iT@LTڢR!Rr!!|!b?@A?@9a8\@!7~G@@a@9? qT#4E@9@5@RE#@rBC!TDR?@BR*@@9 @ `8@@@9 @ `8@:@@9 @ `8@vcOrT/@sOcGraT6 @/@>rT/@7rT/@@9}@9`@! @'T T@9_qT@9`g34{ *craT6 @/@sO:{@h{x} CӯrT/@sO cA95 @bTZRVrTu@9ZR/@M*4 cA9`N57 @"5T/@_-T@9a8_qqTR@@#RRvB RM#RRpB R:Z@hzx} CraT" @/@J{R4 @{R\raT/@rJT @_qTR!@# @6 @y @ @`@B_&T"_MT@9CqTd3@@z` *G#d8ģxr@T/@qr T/@jr`UT/@ @6 @0@B_H!T"_mT@9CqTd3@@z` *ocN/@rT8 @cFr`T/@6qT>qTcTzGJGa@9!87JGaRc/@ra@T3 @c/@r!=T5 @ @ cr:T$ @8*  scrabT! @ rA5T/@r5Tz@9/@Ocr/T4 @!@f!a@9`Ga8{!@7!@Z!@2a@9`Ga8{rR=R[!@n" @zc|r DT/@sOb@9!G!b8a{3DR7#77B#CF?@dRz=R @qRp=Rl"@"xcHrAZT< @"@0c>r#T7 @Rc7rgT5 @/@c/rfT: @'ҠAjU @`3 @ @5 @?sORsGiT?T@9"(QB_ qHT*@4 cA9@5 @T/@T"@9bb8! / fT?lTT?T@9aa8@9!(? TcraT @/@e@9"(QB_ qT?q!T@9_qT?q`T?q!T@9_qT @9B_HT @ @sOE @ 98 @crT< @ @ B$ @DR;'6;B'C7@crAT< @msOsOJG R*@!jkXT cA9 5 @#XTc|rWT/@4E@94!@5R? RT`@9 q Th TqTqa T!@`E@?bTC_8@>97a@9b?6x`I TssEEG% @@@9g@@86a`8R#B(B `c8A|@iTB_TEB_`TC@9&zc8D9Tt9"@b?*6xe%R* kT cA9@:5crA9T% @/@?T@@9`8Z?Z/TsO cA9@s5 @CITcrHT/@qaT!@`G@? TE_8@ѥ97@:9Ё7x`IT`G sRGE% @@@9 @;@@86`8R#B(B c8A|@TB_"TdEB_`TC@9&zc8D9T9#@*&R;xb** kT cA95crT% @/@?T@@9`8Z?Z/*iT*DR5C@/@!_MT`@9_qT d3@z` R RBE@a8( @c8|@ITaT@!T#@9@zCc8D9T@tC@@@y! ?qjT@!6REb8c(c f8c|@_ITT?렑T@9gzf8BBD9_TB*a|@qM TR08qRk@9! @>6REc8B(B f8B|@ITTS?T@9Gzf8ccD9T*A|@_q TR8CRAR;'#t8;B'C#@sOp/@n`@9s"qwuR#AmT`!!@0@Rd/5R!@/@\/@Z/@sOWsOTR8B@9! @>6REb8c(c f8c|@_IT?T?T@9gzf8BBD9_Tb*a|@qTR7!!@0@R&/5R!@/@R#AaT/@sO` @9|!?$qEz#RR:/@sO;RT-2@(@y} C'3Qsc`@9kZzTT @`*`?4 cA9x5WrwT/@{/)TsO/@sOp8/@l8=/@sOg8/@!FE!@@?Th5sO 2/@/@sOR#A! T]:RHT1@(@y} CsDRK0C@P` @y@4R Ҷ/@/@/@sO#RR9R cA9ciVTC_8"R4qTB@9_(q_k TN5rNT cA9/@/cT!@`B@?NTC_8@#@87a@3.6x`8TssBEG% @@@9g@@86a`8R#B(B `c8A|@iTB_bTEB_TC@9&zc8D9T`2"@.*6xe%R* kT cA9E5crDT% @/@?T@@9`8Z?Z/T}DR / @C@s`D!@@?DTC_8@A87a@2Ё2;x`+T% @EG`D @@9 @3@@86`8R#B(B c8A|@iTB_bTEB_TC@9&zc8D9T`22"@$R3x`**I kT cA9A5c3r@T% @/@?T@@9`8Z?Z/"T*DRQ/C@DR F/ @C@/@sO/@sO`@9q`WTRq!T` @9|q#RR8R:R(1T0@(@y} CӬsOy@9! @=6REc8B(B f8B|@IT?T?T@9Gzf8ccD9T#*A|@_qTR5N!!@RM-n6sODsOAl0@(@y} C6pA_8.vB@1z`*TcA@9@1"@*zaR* kT cA9@C5raBT/@Z/_T cA9<sO @/@sO 6/@6#RR8R<!!@0@R,!@/@a@9?q TR?qT` @9|q*/@sO|6/@/@sO#RR7R/@/@sOsODRn.@C@/@sOR#A!T/@sO/@sO/@/@sO/@sO/@RJ.rTRf/@sOC@B/@AR;'#5;B'C#@0/@sO/@sO/@a @9 Q?qJzsO|DR;'.;B'CC@/@lsOj?T?T@9B_q@T@9q T& @REc8%B(B e8A|@ITTT@9#zg8BCD9TDR-C@C@9& @>6REc8%B(B e8A|@ITTT@9#zg8BCD9TCDRҶ-C@!/@ s?8/@sO/@sOC@9& @?7sO?TT@9B_q@T@9qiT& @C@9& @#?6REc8%B(B e8A|@ITTT@9#zg8BCD9TDRg-C@/@sO/@sO/@sOsOsO/@/@sODR;'E-;B'CC@/@sOsO/@?T?T@9B_q@T@9qT& @E@9& @E>6REAe8$c(c Dd8a|@ITTT@9C$zDg8cdD9TDR-C@/@sOU/@sORTT@9B_q@T@9qT! @R,raTRC@/@5R,rT4E@9@5)/@sO$/@sO!sOT_8Tcq`T@9qiT! @R)C@W/@ /@/@/@/@sOsOsOsOTT@9B_q@T@9qT& @s2/@sO/@sO/@sO/@sO/@sOa @9!Q q(!!4!RsO/@sOsOsO/@sO/@?T_8?TB_q`T@9_q T! @RO,r!T4E@9`5OReC@m?T_8?TB_q`T@9_q)T! @B;RsO/@/@ѥ{ BS [cks0@9@_@(qATs@"ReGf@$c2@ @9,@UKA! @6T 2fK @9t]99g@*$@+t@*R8@ rT`F@B`(T7_@TX7E?+TB9<@54'*D5T5`@rTc>@a0@?T"@t@M@B@9 T.  jTB ˂=5_@0 # T *  #+.8@#@+@ @ l>@ˁ1@_TB915~@5 @!52 @vRB9a2@2#t@[5-[4`@mjT @2 _q"ABC@a@c@9!ˁ?!3]T bTB9h5u5@Tx f!Rg @4@Kt]999 Rt@ rTB9R<@qc>@`4@a8@ҠB_@@BQT{LSM[NcOkPsQ_! #+l@#@+@? @TT*T?T !GџT@9"b8!T"J4`8@@ @ 8@i Sr @Te>@ R4@ #+@#@+@ @k T@(T !GT"T@9"b8!T$R  @j@T_8(q@TB9b2@"˴15BTBAR/#+5#@+@/Al>@@944-@˔85aBT74@f5@ @L@9@9BXE~Bh`8_q@T*RB9&R<@ @  @e>@ @  #+z@#@$R+@ @:B9K7@ @`5@9`4H4V  T @a@9@9_k!TT +31@@5A+@3@ @ @ @9XE"|~hb8_q T?q!?qa*4?q_qT`>@ @B9a2@`4$- +3L@+@3@ @@c@ @+3@+@3@ @@_Ta>@_q F@ @ T~@{*3!cG@@9!``8@T?BVTc'#3; #@3@;@'A@UABG`@9!@`8`?T? KT_**  TT`TW _8(qTR! G@9!фd8T?BT#+ɔ@#@+@@@.$RW^t@T7`>@ 48@@ @ `We>@$@8@AT@?qi%T!Qe>@58@@?q(T!Qe>@8`>@4`>@$`>@ `@t `64@??4B'#3;#@3@;@'A@B9 4a4@ +3T1@+@3@ @@ @?@zT @B9ˀ5w?43cG@@9!``8@_CT?@BTe`T`@r@z Tl>@ @@ @9q`TB9t5?뢨T*>4@4@@ @ @e>@ @4@T8@z/#+#@+@/A. @E 3+3/+@3@3A@T*@9>1@9@"5*"4%@4`7BG@9!@`8?T? TTҕ@c @+3w@+@3@ @@.@d+'#3C#@3@C@'A@U4@a@?T '#3Oɓ#@3@O@'A@C*+7#O5@+@O@A7C#@5B9@b5@h.@ '#+3#@+@3@'A$$@@c @ @@G.e>@ +3{@!v@+@3@ @@W1!3+3;b+@3@;@@U53A" #+@A@#@+@ @ 3+;C@+@;@C@3A@@f@ !3+3C+@3@C@3A@@Q! #+'#3;##@r3@;@'A@T!@4  Cц{ƀBS[cks0@9@w@(qAT@@6$E@8@ 7 R# @9@9C@ _ @73@뀓STR!Bw@"@cҁT{OSP[QcRkSsTC_#@@99C@ _ @G6@!6[;@`6C9K@`l5CT@y\)TcO63@`T@?B@'? r`T@6?@,@П_kT 3 @@9pqaT @"xB 2q GW @9!t]99 7*RY G&@f^`A @ L GRdA?q T? qT@ G!`@`;?(T9_kT`A@?q!T c@ G!`@`;?)TG[9_kTc@@1+c@&c@? c@3@,7c@PC?g@@@]TS@;@RBB}Ӱ3@r!$T@`6lT@;@RO@BB|>('@B@k T*(=1` @H@[;@g6QC9K@T5TX@37JR@Ҿ1?`@76@ybVT @dK7@m4! 2"{“T`@9q@T_[GTB{_[ Tc@9c8T O@O@@ 7@9@@@ Rc@!eA@ Gg@@!``;?T]?@# @R/7 @`d5 @ ZC9g4 @r5!@ @!@9!!pTBG`@9!@`8`T?`CT K@|bTC9Ak5G @T[3@C9G5c*23C9@ˡ;4FYGO@A@9ca8ATBTRTb#GO@@9aa8_T@UT`O@`@9!``8`_T?@CT  @?25#TZ?@c?*TrTB[D@86O@@+T'@B@k!T@@#@! 6 R2#rT@`W6C9zMˀ\5@*Һ0?`vrT?@R_CIT`@8!R(qaT?@?4@8@G@0@9@?(qATc @g@@@!W@Y(YAЀhE@@!@?`ThER# @4/!@$@@ @1 @@@#@$@@ @@?q)gT!Q@W@@ W@# @ W@\0@#@@, @A0L@9@9$F@`@!tC!@!&@XA @xf qT_@@ @!G@##Є@PC!F#@@FC!@`@@7_IaXh`| *!B @`F@#AD"@B"!WTB€R*W@R,@ 6JR`X@@``@@`d@@ `h@@$`\@@`@x`?@,@П_T 3 @:5 @@9iT#7@?@{?¾T`@9k!Tr!YT?@T#R7T@9_k Tqs%@9@@@O@ߨ R$@A!@A$@$iW@$ @#@L#-@@@#@{QT`@9q@TBc? @BT@L@9`07@ 6!$E!@!8@7 7 .X6 @ @-6@@ @@-6,bT@@@I7X6 @ @6@@ @@H7R*&|@T#G ?@T`@9@`8c?Tr`Tk#HT5SC&.@C@ aA C.C@E@D@ #뢖TGc_ɕT@9a8Cv!#G뢎T@9a8cџCTmO@aR+;@+O +TT >Tb@9@q TG!c?C)Tb@9b8_TcTb@9@q@T? T@|X#@!6 @@24 @@9멜TC@@*A5f:@?qT`@07PC@@?TSA{Ĩ'@@`76 aZ@ 1TRfN@ R|)hcT@T(c*@dd5aZ@a1B:T`N@@_ Tb[*D@99%`@9@7@x!dA!@9!5SA[B@{Ĩ_֟1D:T`N@@@TdLc!b@2*5&T4h"@Hd`f@b˥!b:_cTҮa@!6*DqiT@!R9R҂R@҅@f@,@@``@SA[B@{ĨR %R9RSA[BR@{Ĩn, {S*s7@0@9(qT`@RRR*[c@@ @t@H6aB5@U@"D@!!aB,@B@.@@@ @ @x2T}')@  @ @`@ TkBD)R`O@!|"B@_Tha`TҀ`$+{s#R7@" @ @@V}_JT  @LT:T@s`@mT{s`;@kT@4 @@  ҟ@ @@V}_+T xv:`@?qT!Q[BcCkDSAsE{Ǩ_{@c#@ @!kDsBt@@aD@!B @x  @2SA[BcCsE{Ǩ_ҟT[BcC$[BcCkD`R#N{!Dx! k!G)7{rTC 7CX7Rj*@T{)*i*cr@AT{_{*5'T` )R7"  ՀpC@9@4_{E{S[0@9@(qATc @d<@D5d8@EqTa@07!PC!@%@`T RR*r T*SA[B{Ĩ_ @@76 _1T_1AT`L@R@ |@?1Tf`@KqTa@!6ad@KsX@˶~@su5V**`L@@*qLTR*SA[B{Ĩ__1T_1TTkT` @@bReL@b4D|!hd|@1T@*1Td(@d'*SA[B{Ĩ_Kq-T`Sa Bb @}w #T% @@T96TsF d@8bdd8BBD9_C(TBcCT@aT""cT@@TCQT T96_`T@_@9qTR *@S{ svC`@@?`E@5R!(D?9 @{¨_րB@?ցR!(D?9 @{¨_{!G ( {S*@6SA@{è_B@#@@D@B ?a2@9q)T@@SA@{è_$  {cG c@#b䀀dsC`,TaC{@#lTBAD@ "`@ @{¨_@+C(*?(  {S[**c& B@ b@ D@!B!a,@ B@/``@`@`@ `@ `@x2`7`@x`@qƟQ~@!@ RQ!@~"@!`@@@!@?~)&aR)SA[BcC{Ĩ_֘!Ba,@` `R!Ғ& {[֎DScNĮ@XN&@ !|A 4|~@_T|@A@A!}$@˔$?hTc"@`"aR`B}Ӏ O)@SA @[BcC{Ĩ_ {S[rDuF@@?kTDC@sF#BBcB@!SA[B{Ĩ_! !|A 7|~@?hT!~FC@$@@{[>DSC@@ssBt ~T ~~~~$3BD!@SA[B{è_ {@SaVG"@@ |@ ?T!A!A?"jT_kT?T!}Ӕ6C@U$sVGuSA@{è_+('TG!B@ @@K &{[SC@-TA!˟,TsTa}A@'$CSA[B{è_!-T\{SEsFA@b@@ _-TBb xb` A)cx  ?qT!Q!b@@SA@{è_օB|@4CcB@e@TG %%g@kKT_K%{S@@a @7` @` @ @ R@B@b@ D@!" 2@9qT@@SA@{è_i$@@ @6 RrC9@9< @"@B"R { @WbR @{¨R@@bR ՅcB4Cf@TG@&&h@ kKT_KK%  {S*0@9a @$qTc @Rcc n4[a@6@@@6@@<@1T @@? q T` @@5@` @@@B97t SA[B{Ĩ_` @r%a@ @@ SA{Ĩ_ @\@ 6Na @cRB@ @ D@!!B<@B@OR@>"RAҀ@!xCB 2 @ @@@!@@@ @ B92 9t 4cCSA[B{Ĩ@y!iR _kT@9qAT` @@@B97t jR[BcCc8R{S@4@@6c @bRcc ` @` @@@@ SA@{è_aR\#@@@7 ՠ6aRP#@@@@ "RSA@{è_ {S@@!T@TR` @` @@@@`SA@{è_ցR##@@R#@@@@"RPSA@{è_  {AR SR @{¨YRC`2@93@(qy@@+@AT9@!C@+@A@`@@` @` B@C@!@kK$T`@BR3@7Y_@3@@7@ر7a @?qIT!Qa g@@B_q@KJgh H@g4"@Q!S@"x 9B@G@!@k4TS7G@7@G@B@A@@P@!@kTQ@P@G@`p4@ACB @Cha8*@h!8|B@7@!@k+ TSkCk@C@R@BA@ @W@@B@A@@P@A,Q@P@G@k4@ACB @Cha8*@h!8U O@R  @@@#"O@@@A(@9/4+@@!@ x`/R@/@ @ @@94s@3b+@k@ C!@5x`@BRZ5@Tk@C@R@'@@?@Q@?b4I3@+@!@C@y@!@@yAxa$ @4RRkT%Q %k!|h`x 5*@y@B'@?q#@!##@C+!B#@!@C)+@R!@S7@!d@CA9xaDs@% @!`@! @KC`5'@[5sB7B]@@yAh`xa\47)!BEBh`xBsy h`x@wyR@ @K@@YTb . R wF Q$RK@D+@+@ysS9@9Q4 @@#4jA9`K @Y5 T@K @sQsS95K@5R5@  NTKW@mc,R!E'@C@_q"R@zdBzD@8F@TR@_#T;"RkNTRRG@`|@9r5'@@!p4TT_8у:74E@95|qzT7GZ@@c@7@hcxG@ C5kCWY@(@yk@ C@kC@W@R@TAHG R_8BHG!xc!j!RBxu?"jkkET R'@ 5 @¢@bDT@9 RBHG 2Axu!jkCT 71R'@@4@9qT(T4@Rc*;<5DG@'T_8e:7@7G.[@9AD"2@@Ux``@ @7@G@86RBEDc8( Ce8|@IT?TA?gT@9CzEe8ccD9Tcf7GZ$R@@2*!xcb RR @¢@6T'@⇟R@9B*O4!R BHGAxujkTRG@c @¢@b3T'@!4EBR*"@9@5 @ -T@9T@9qTB~4@90qT7T(q@+T,qAT@9?q@T?q`TR?qTk`.T @_)T@9 G!c8_vE3RR3R3RRc@(!HD,))kE,))kE R3R@3RaTAHG RBHG!(@!j!RB(@?"j R3RRD@8@9 @7GU@r7@G@aT#x4@9s5@8R-H@*]4 qTqaT@Rc*;5GG@IT_8T:7@kC3Z@9еG"k@ @@Ux``@@C@86RBEDc8( Ce8|@IT?T?4T@9CzEe8ccD9TC37GZ"*&RBx`@Rq_T`@9!@!@x`x&q $T"qaTCRG@`p$`@9ob$o@iT@hTڢR!Rr!!|!b@oAI_T@RRRL_ @ Rr @! ?qTAR>a<Uq!TG@I'@a@94? qIT4E@95@RCbrCA TRE`a8B(B `d8B|@ITa_T!_T$@9`Ezdd8D9T@DRiV@tC@@@y! ?q 1T@!g@7Ag?kbvT]4@HG(@լBHGAxu!?k AR7GW@ @7@G@7h`q@["T@q,T@7GXU@7@G@`7RqT@9 @* @9 * T5@965@+@W/@@9\4jA9@;@@Ka5 R?q(Ta @94@4!@@@@7@_HSL R@9j@9 ~o@yZ@!B@!@+`@@95*7G>@7@G@k5T'@Rq`CF@@RV@@?@H@9?qTL@9A7@!@@C6!$E!@!8@7C_Z"@@C@",@_@@ "@,@ L@9x L9% @@'@4 @ _8qT @@9!?q`T @VKCReYI@R @_[ @QR@T#R;RhEG@MT_8d97@kCT@9E"`?k@ @@Ux``@@C@86RBEDc8( Ce8|@IT?T ?T@9CzEe8ccD9Tc7GbT`?%R@*!xc7GY@*7@G@@R*;@]5B@<T_8Ă97@kC8T@9B".k@ @@Ux``@@C@86RBEDc8( Ce8|@IT?Tx ?렎T@9CzEe8ccD9TC7G T.%R@*!xcm@zTI~T_8ѣ'97?ɾT@9G97BHG@d;R @BT@9C87;@BHG@c J;7GQ@7@G@N37Q3@@@A7@@37Q3@@7@jA@@_TjA9@5!?3 R#s@`Z@O C R#jBkCQk@C@!R O !ROO@`R@/j @B/@%R7G@7@G@I4@K@AS@@@Kk IT7GQ@7@G@?Wq@7@G@F5'k@AC@cO@BRU@k@'@C@;7W@StCcB7$EDBG@[@u@bGw@PCBFK!C@B@#7@G@@`7GMQ@7@G@7GEQ@7@G@V@+@A+@qcK(C0@9B@(qATB @!!Sl@xaCjA9A@5A;*#5@A9 4@@@?!E Ra7GQ@7@G@7GQ@7@G@N7G Q@7@G@fkCQk@@C@Up5>5@@!DD) @k TQ*BKR!|!#}"O@B`EaT$)*XRqaT@9 @* @9 *@9 @BFUx`A86RBE@a8c(c @d8a|@ITT cUTd@9@&zDd8D9T T7GR ?@ೀ@k7@G@TQc@"RdFG$D@@E9c$@9g! @3C7@` @@B# "cD @EGx d@ @@@7@ˇ@C$@F@@C @G@ .B@dD @ @/$@ @7kT  R!@|$C9NG"D$h 8T4E@9=5@RkCWmZk@r@C@W@`O3@@7@i7G*Q@7@G@kG[ Qk@@@G@[@*RA'@AR7GGNR"4r@ @7@! G@?qxTBRN@7@G@7CW@7@C@W@@@ZC;@TdGD;*%@9e8!(T@9R?hqTT @9qw*&7@@9?q QT?qDT @9 kw;Tw@@ @@;Ak@ @@ {T_8b<6?T_8?TDq`T_qT8 @_뉷T@9Gaa8_0Rc@L@9>6b@Bс @_HT"_yT@9_q!yT*ad34E!@94@HGa!?T#_8?Tb_q`TqT?SR@O/WGW_PG@@W@@ *_@@ @A7G/@r7@G@`TU@97R7G7N;@@J;7@G@_@DRc>Hc@@#Rc BHG@ajR@9(q*9*%)@9!St@9>6RBEEd8c(c Df8c|@ITT?T@9DizFf8 D9TDR7GG@@7@G@@$RuowCMG@CAo@Dw@@@@@R*!GW_zOG@@W@@ _@N@AR7GO@7@G@Bo@cDRGU@kCW:Ik@@!@C@haxW@ CՈ5_T_8_Tdq`TqT@9 ~X?q-4#@9?(qx@9?qATWA @ k!QC @ @#Rk@!BC@ @B@'1@T@Ҵ*$)mARR7 CQM7@@@@ b@7 @@!RcTc @@9qc@9>6RBEEd8c(c Df8c|@IT?T?T@9DizFf8 D9TDR7G#G@@7@G@@@9d>6RBEEd8c(c Df8c|@IT?T?T@9DizFf8 D9TDR7GF@@7@G@@g@9=6RBEEd8c(c Df8c|@IT?T?T@9DizFf8 D9TDDR7GF@@7@G@@I1T_8@>6T_8_T!?q`T@9?qh?T0"R;]@B_*T"_MvT@9b_quT*d3BHG@@x`;?,T_8h=6?T_8TCq`T_q)T4cDR{F@kNk@'@C@#@9qT@R@@7@C@[@:@@7@C@[@1@9?q!Tl @9|!?$qEzARk7[Mk@@7H[@WAR7GM@7@G@tC$N@CAe*74`@9aq@TG`@9``8!s?aT @y7 "A?@A?q @yᗟ!*7 !5`@8?qTTaW4W7GE*'@`@9 5@s7@CRW@;D@q T7@ `@986`8a`8 TdT!?T@9c8D9Tsq!T@$@0@G@ R cEKc@V 86R$Ea6`8eB(@ e8|@iTbB?TE@9ze8ccD9TcA!s@B'@I3@G@|RxErT@s|Vsy!`@9sr@@@@`DR7GVE@@7@G@@WR7G1K@;7@G@eDR7G9E@7@G@@~Ҁ@@c'c7fCc@'@7@cT_8T_q`TqȸTTD_8Tq`Tq(T @9 Q?qJz^TD_8Tq`TqhToDR7GD@7@G@@QAR*L@xAR$L@R#RR7G3N@R7@G@{DR7CWD@7@C@W@@'@)7o@R#RRkCWNk@@C@W@C@Lk@!@@DR7GD@@7@G@@TD_8Tq`Tq(TgLDR7GkD@@7@G@@ @9!Q"(R_q0sOMqJ` R=mO@L RR@@y} { kS [ c 5gA9!@9B/6kA9  @@@O@C@ q T|qMTcQpqTXcxc` s`9O\q1TT|qTtq̙TcpQqhTRc)T_-/T@9b(QqB@Cz.T*`4 cA9"5 @biT/@/(TLq T`Qs#B` *TPA TT4cQsqTa@9*?qT?qPTRkK?qT?qkRRkK!Kkb@@@+5x`@*B4 cA95 @T/@/ aTRr!T`@9/@!@g5?TXT_8у:7HGcT! @JGsG cA9j5! @?b;T/@"_T@9``8_֢/TT@9`97JG ` *kTZR! @!@@R/@?@T_86RJG` j\Tc/"\T@9z` jkT cA9T5 @bTsR\rTsR/@sG@@"4E@9`5`@9Q7/@RwG¡T $RyrT*`4 cA9`56 @"T/@_m5T@9aG!c8_/HTsO!@@R/@?@T_86RJG` j뢒Tc  cA95 @ T/BT@9z` jkATsR`@9/@!@5?`T"T_8у:7HGcT! @JGsG"T@997JG ` *k@T! @/@"_T@9``8_֢/HTHG(@ *kT cA95 @CTc/@r!TO!cA9R!5! @?cTcrT/@BsfsG@@TX@4T'@b8{Tb@9E@Ck`8$6/뉪T** `hsx5+@/@`A9 5cr@aToE @T!hA9 5{/T!FE!@@?lTEsOCT`@9Ck`8$7{s~|**`hsx 4#@R @Kך@z`?"IT"Ro/@)TRG`8/T@9a@9?kT@86RE`8C!(! c8!|@IT_TBTC@9%zc8D9TWC7*j4 cA95: @_T/@B_ T@9a8_`@9!@/@@h5@R?@T_8JG`sITc  cA9@5 @T/T@9z`RkATsRG@0`@9/@@+5s!@?TT_8w:74E@95_|qTS|A@hsx CiTw6EJG`6E@94JGz *kT cA9`+5 @"T/@_ T@9!G!c8_/)T@9Z?6@@! @T T@9_qaT@9@g34z *G@`@9/@6E:@9X5s @T_8*5|qnT*A@hsx C뉹Tc6EJGv *k T cA9#5 @bT/"T@9:5~qvT A@hvx} C/@w@9IqTRG*I/ pbT@9"!Ca!@9!$6!*P4!cA955 @T_̈́T@9a8_/TҮ"Rn/@jTs7E{"G c@9@/ @9A@86b8R!(! c8!|@_TCDTEcCT`@9%z`8BBD9_TB*B@ 7_R*4 cA955 @_iT?HTB@9Gb8Z?U/TsOV"R{n/@_TRsRG@c8/IT`@9@9|Sa@bKB( "(T86REc8!(! b8!|@ITT BzTC@9%zc8D9T`yA@ 7* 84 cA95< @T/@_mT@9G!c8_w@9"R!n/@TTsvEҁG *H/N@9A@86b8R!(! c8!|@_iTC&TdEc@&T`@9%z`8BBD9_T${A7_R*4 cA953 @_Ta?2TB@9Gb8Z?S/(TsO/@ JTRcG@9a8/bITc@9b@9/bHT !*A4!cA995! @HTrT/@/@Rc T,/ETc@9b@9̧/DT !*!4!cA9Y5! @Tr3T/@/@Rc(T B*4"cA95" @_BT/@/I?Tb@@9EL@cB|SiT`@9!@/@@5@R?@T_8JG`s)PTc/bOT@9z`RkT cA95 @bTsRr TsR/@G@``@9/@5!@?TbT_8т):74E@95_|qTS*?@hsx C)Tsw6EJG@987`6E@9`4JG{ *k T4 @/@_mT@9!G!c8_/TsO4E@94HG(@ *k!0T cA95 @/Tc7/@raXT!cA9Ra5 @µT/@v@9 -TsGҕE b*G/@/@9@86`8R"c(c b8c|@?iTBITEBT@@9ez`8!!D9?TA`@L@c|ShsT_R*4 cA958 @_T?m TB@9Gb8Z?X/TsOf/@Rc T/!Tc@9b@9/ T !*A4!cA9D5! @TrAT/@/@)TR6RWGc8!/T#@9JG`@9Bc"2"jT*4 cA95$ @bT/@? T@9BGBc8?/@ TRcG@9a8/bTc@9b@9/bT !*4!cA9A.5! @HTerT/@"@AR/@_@T_87RJGa!jTcG@9zb"j_k T @/@mTD@9d8B@/TJG!R*@?"j?kT!cA9A5! @?cTc.r T/@"cA9sR|5" @_{T/@ TRcG@9D87f@9#RHGc c2d%j@qT_B*"4"cA9.5" @_bhT/@C T@9d8/T҆"@AR/@_@T_87RJGa!jTcG"cA965" @_BfT/@mTD@9d8B@/)T@9zb"j_k!TsR @G@``@9/@6E5@95 @`>T_8*u>5|qrTq=@hsx CI Tsc6EJG v *kTT/BT@95~qTX=@hvx} C/@Rc(TB*4"cA9BD5" @_bT/@/iTb@@9EL@cB|SiT/@RGT`8/T@9a@9?kT@86RE`8#B(B c8B|@ITT ! :T#@9Ezc8D9T8`@L@B|S_)JT@9RG@/@RGT`@9' kT*@Q4 cA956 @;T/@?-lT@9Bb8?/IT`@9  kT@9@`8RsG@`X/@TR6EHGk`T*@K4 cA95 @4T/@{/IT@9`@9@9B4Ba!R! ?jkT7R7RsU, Es|@9/@@u5vTt@9@j`8kTJAw8qJTQ7*s *cT @*`?@4 cA9@$5r!sT/@v/Tc@9*ɤ/iTsO"R/@TJGRc7RB*"<4"cA9B5" @'T/@c/iT@9b@9zd"_j_kAT6RsG@C4E@9 75U6kA9*D UB( JDssTxB=qsR_qT`@9!!{@"x`xh_qT_#q!TCRG@@E@986RBED`8c(` Cf8|@T?T?VT@9CzFf8ccD9T#:B#@?@BC$;#`@97#F7$7B#CTl_qaTG@@a@9`4? q)T4E@9`5@R#`F#@rBCTRBECa8d( Ad8|@?TcT/ceTd@9AzCB@@? TB5"_T !@9E@}a!`? x`!!B@"@caT{A_"$@9BGBd8'T E"hb8A@@86&RƈEb8!(! d8!|@_ITTT@9 ze8BBD9_TB|a!`?@ x`RDRҨy@"{CBBS3@@@)T`_8s` 87B T`b_8"87 A@D@|!2@ x`!!B@"@c T{ASB_@RT_8TA?q`T_qT%#REcDb8!(! u@!|@f8_ITTcTd@9&zd8BBD9_TBDRCy@T `_8@T?q`TqT?NqiT@RG  ${CB[*c8~~@5SkHa8B@t8 q`ThTq`TqqT"R_q TqQzT_Ez`T Ք *qT R"RLQ?qDzaT"RDQ?qDz T 5R!!B@"@cAT{ASB[CcDkE_qT:Rq`TZ"R$4q@T_qZZZ_qT@t8q"RQ?qDz T qT *qiTZ~  #{CcBSc3@`@#TkB54[UДB. ` a_8@{z`Q?qT3@` T7R[CkE!!B@"@cA T{ASBcD_[CkE T[s`@9 8746BՊE @A@o{A!.3 x`Q?q(TTb_8x?6T_8T@q`T_qTb8R@#( c8|@_iTITŊEcTd@9 zd8BBD9_TB DR!x@R#TqHT?2`_8 T?q`TRkE[k%~${BSc!@@?TBt5[57 vEb?T `!_8@zz`40Q?qhT&7[D!!B@"@caT{BSCcE_a@ TxR[D T[7ks _8 87:;5VE|E T_8b87@A@za!`?w x`40Q?qhT&! 7[DkFsGT"_8T@q`T_q Tb8RCE$( d8|@g@_iT#)TeEcTd@9 zd8BBD9_TCDRvw@R#TqHT?_8 T?q`TkFsG[ksw}  * C@ L'&~{ƀBSHa8[ck9s9 4@қc{`s8PqT [`xb@ c*#R"q'T s sjq)T R!!B@"@cA(T{CSD[EcFkGsHC_c *#Rx?q Tq4 Քss8q*c#Rq4*c#RqGz T QqT! H`84*c#Rq T@QxqT!!$ X`4*q@T@QxqT! X`4;*cq`T0Q_qhTb'š7q 4;*c qT0Q_qhTb'š7,Q?xrHq *4*q4*qTQqhT! H`84;*cqT0Q_qhTb'š7Q?qᇟq *`4t;*c q` T0Q_qhTb'š 7`qq *4a*#RXqGz T8Q_qT!"$š_@*!`L "@ @~@Ha8q Tc*R:q@Tq48Rc<R*#R)q TqZq`4$c*#Rx?q<q *4*q4*qT**#R*#Ru*#RE*#R/R*#RqGz T8QqT! H`84*{C&q{ƀBS*[?qc*@*5qq?j!Ts2qT$ך 7QqiTQqITq&qjAT>qj TkRq T6q` Tc qT**q@T:qAzTkGsH B@@BAT*{CSD[EcFC_k*0qT!(6*@QqTRsH95qT:qT@(Ԛ`6@6q`5TR$Ԛ`7$Ԛ7kG5RsHc**4q@T R*c9R*RkGsH@*Rk q@*`5k W.B?<qiTRTv4 8B GE@9`8iT@9H@@86"`8RC!(! c8!|@T_T#dEBTC@9%zc8D9Txz` QqT@9`@wz` Qq(TTR(@6?<q@T@(7wDRt@@*kGsH@iTkGu? qATkG8ksz* %c{CBSc@@@XqT5sᗟ!TQ?qTzAT@TC534sG _8`@wz`Q?qT@TR!!B@"@cT{ASBcD_? Ta_8sA 87R T[sk`@9 8746ДGՊE@@vw!! x`Q?qTzT T`_8y?6T _8T?q`TqIT`8R@C!(! c8!|@iT#ITŊEcTd@9"zd8D9T  DR't@R[CkERu[CkETa_8T"_q`T?qT[k?%T`_8T?q`TqT[kz C*E!{S[u'! !)BcksBqaTqaT`@9qT` @9T R5 B@@B*T*{BSC[DAt@9+@qTq@TqaT`@9qT` @9q@TR} +7FvREt8!(! b8!|@ITbTBTC@9%zc8D9T@u  +@Tt@9+@ ՟qT`@9q`TqT` @9T RD+7REt8B(B a8B|@ITaT! T#@9Ezc8D9T tC@@@y! ?q T!@!qaTt@9+@8" R BHGAaj`@9qTa @9!Q"(R_q0ARy@` @9|B_$q?qᇟ*t@9+@a @9 Q(q?q*CDR r @FCDRr @r  {S![cks B@9E@9@ҁ@!Xѳ@E ? IT@95"`Ca `h`8$ 7ySzT r T8 6 Dhs8C`h`8$ 6R!!B@"@c#T{DSE[FcGkHsI_RR5?Tx76OqTD@zT@x1 T E@94 4T! TF@9AӠJ REe8$s*s d8s~@)TTT@9azf8D9T˥ T@!XR@96*@4 !b;R4E!HG @9 )b~@ 3@9)@)kATc#9#jT @#ZcZe`|S!4 A`#!xbj"RˠSt@69 E@9 5@T?6@9Lq@T@RwrT@R! v`@R55SQB_q)T@x?1T07J@  E@94i7 4E@95@RI}rT tC@@@y! ?q T!@!qTR}474GJG!@987JGaT@UD@9A@@KB|@q@ 5{9kml27x`)TTd_8q@TTD@87@!TD@REd8!(! b8!|@)TTq T@9$zb8D9T` l2 x`*$Rr`T@9ARGb8TB@@c T*{ASB$R[CcD+@+@R[CcD!B@"@cT{ASB_ R[Cj`8DA@@86REb8d!(! d8!|@_IT#T"cTd@9%zd8BBD9_T֢2kz` R@RDRҐh@DR҆h@[c+n{@r[cs T&TSFksa7@RtR@ @?@9C`@9@$IT87cy$TT@SAkD?G`8{(qTRc!(! 6|@ T`@8zT9 T RHT R'RHGv@z:4_qDTzZ_gqgqjaT_k!T~IT<77@|*?$hT TSARkDPs*[BcCsE{̨_Ki;+|8 |7 4 k) Ty`kaT*~(T*T@RQ_kT@;K 4(sq;@K@T*~iT ;j;@`@7C@*?@'x`|C˙Ts;R"T*[BcCsE{̨_D@j#c |x`4q_q@zATqR_qDCz*Z4hTOgqT77SAkD4?$@aTc?9@u(4 kT"y`_kaTKh;b8 b@4\QnQ_]  *5}Qk@T @)@_k!T@4@*!!y ksђ |~ =qJs@@@I@@;r;@%K}@!ih8 xh*,$T{CBBS[cks@SA@0@9@;?(qaT @;;@S@j@@?"@aL@@ H`8@q4;@L@-T "Q"@kkT#kA9"@'B?@0@9ZX@!@S@!@(qAT@;@CR@A@! +?k@! @7AD! @ @C@+!@OR#gA9CRW@B|(n R RA * *#@*;*K/ ) /3 @y@9  @?i T@9ןfqT Xsxc` TD@0@9?$q`&T qC@9!e q@@jiR` G@ZQGAC"R`;( _T`;_Tb4c G`Z #@AZC H#@@4V@ A @ @ S@#@ ?T R5;T_8BHG@x`;;@BHG@xu J;;@RkaT bqG@4E@9 64 @¢@BT'@`497@9`5@1T@9C @9$`7 #@` 5h 4Zc G@_T:GZc;QV@A@ @ @@_`(TS@Es@47BG@?@7@G@R'@4'@C@D@8_k`!T%4bT @BTC@9 qT@9C:7kATB?T @hT@905 @8Ra5@@@IT#@4 R@7B@w@@W RD@ @@s #`@kTa"@`FA!@`&@BAcR@A@#`&@?q kT!QDg:@!5@9@9?k=T"R7G@7@G@;@996RBEC`8d!(! @d8!|@iT @TOcTd@9@&zDd8D9T@@?T3R'@@95qgTIT`/4R*;05_8!R;4qA0T@9(q;|@3T zU3 wJ2T rJ2T!?1T j@,T0_8(q0T a@/T \G@'@qC@D@8@zTF@c*!D@R4E@95@9@U_T!hu8?k^TC^B@C@!@kT@@UB@'@!@kTS7G@7@G@E@b@H@s5S@3b@+?Bt]ӂf9C`2@93@(qy@@+@AT9@"C@+B@G@!@k TS7Gg@@B_q@KJg@7@G@a" H@ "4"@Q!S@"x #@B@!@q@3@B#kkTEE) @kTQ*BKR!|!#} "O@B`DaT%)R@s@yEw@y< kT A|D O@<h! O@ O@ $kTW#@J@9qPq j`T+@Rs@@s@ B@ @@x`A@[/OC@c@"Rc4H@ kckqk@ןc @@@@Tg` @K* S@ xcLT@/RWA$S@#kCx#?@7k@#@@C!BC@ @@GJ7@GBt]Cf9@B?@B? @L@@7@@R@M+G@@9 K7< ;R8@K@ BzT@UTgWARCc$ECtCc@@ @7_@C@C@B_@@@G@@>+@@@*BbF@xbCcHa8@qTqyT3o@w@T@"R?Ra! RARGkfw@@G@k@`G RbFCDb@e@B$@k @@c|!A @A!@g@$@AFP@@&`_$@?qT!Q@8@!R(tCC9h#8@`@9@Td@9 RRjxTG@؉҅ʼnDbF@@(@@8@@C|(S$`@`@_F @P` @` `@9 @y@7a@ `@ ``@`@?qmTk@_oe`@@_@`@o@k@@bFAa$@ RG@g@D"A@DbF@ @#+A @C@@ @! @@@y?<`Tb-s6@@@y! ?qT!$E C@!O@@U@ "@,@@ @yQ6w7@@ "@,@ L@92 L9/@!RC_\/@BRc@C@_@G!tCcCG75@7@u@5?@7HCc@@@a@˿T_@tCK@`4@K@@ _q@]T_5@Y6 @ @A7!? q T7@X@TW@StCcB7$ED[@BG@d@bGc~@PCBF7@!CdB@@#K@@qG@c@*T@R @w @@!@ckT!O@R @cJ@Nc@ 4" @ R@+@9VK@A/B'ZEC@9!#)@9!@9)W !4qRdAzTA@! !~RAKR@@y@sy  @y5@ T )) kE Rkk@4J@N!@?kTR!O@|"#h`B@DATT@%qT'@-Q?qAzTB @**7Ge@7@G@ 4@@9@5 ZG@@i L)*kDn R )A( kID!#@@9@A X`R#@kCT|"O@DAha?T@?T!+@ X``5T@9@7Gdr@7@G@T %@R!O@`|"B@"h !O@@  @kT@#@H@ 4ckT@cQ S@!,@x#WA?@ARS7@C@@?b@Bt]ӂf9C`2@9S@(qy@7@AT9@@SB"C@+@Bv@@VGF@bkCaWL)v@_qAKgC@ H@4"S@!Q@Cx!A@@RR @W(@Ak@R"O@/@ `WAkTW@aZE@@9@)!"#@9!@9c7a4_qRDAzAT* ~7@ 7@%P@ ,@5P@kMT@,@HT@9`4J@4N@QN5@J@81!@@ @!|3|@}*@ jTRG[hN@@G@[@6N@$R@9A !QBDӆ@!|@ @ C"|@h`8T@ P@Q Ps_8@9qaT@ @B @C!@kЂRBMAC[#9R@OCS_/ @  ))kE  )A(kIDN RG@> L)*kD@!@@BR/kC ]k@/@C@4@@@?TjA9@5?@@O@@/s @/@@s"@@@A@@@?TBR``@Ҳ7@4R 6!R .Z !R)Z/@14R@OO@BR`/@BR`B@w@+AkjT8\B@/@!@k+\T@#@g5@9O4'@V#5@K@@KhB/@b\5@@9q(TRB/@ RA+@C+@?kKc_q$@zT@'@@9?\qTV@ A@ @ `TׄB@3@!@k \TEE) @k"/TQ*BKR!|!#} "O@B`DaT%)@A95A/@@?@!@kTQ@?@;@jA9K @4|@`7!cG@9aa8_C T@VTeB@3@!@kUT@A95A/@B?@ @_k T@H@`4!@95X 5@9 7@A9 @ _T@9AA9DA9! CL)!kT q@TTqTRq!T@9* _kTRR@?@B/@@?q@LTS@934jA9@;@@K!4|@@7 @)G@9!ѣc8_T?@@TR"O@a~@h! O@@ @kIT33B/@@]H@]4S@9S4ckT5@A9`5@@k` TA?@kTA'@RR@ @ O@A#@@.O R# q@@b@H@5S@3b@+?Bt]ӂf9R?0qvT @9? q!vTaR  @9R?TqauT@9dRR?q$Dz!x$BzatTR @9R?XqsT@9?qAsTR @9R! ?qarT@9?8qTR@9?q@T?q`TR?qpT @9?TqTR@9?qoTR@9?q!oTR @9?TqTRr @9R?XqmT@9?qamTR@9dRR?q$Dz!x$BzTR@9?q T?qT?$qTR?8qjT @9?8q`TRP@9"x_q@T?qR$BzaT @9?4q`TR?8qAhT@9?qgTRR;@9?qTR6R?qafT @9?4qfT@9?qeTR @9R?8qdT@9?qdTRR}@9?qcTRx @9?4qT?8q TR @9?0q`T?4qTR  @9R?0q!aT@9?Lq`TRa@9?qTR@9?LqTRRURS@9?qTR@9?qTRRGRE@9?q T?q T?$qT?8qTR@9"x_qT?qR$BzT @9?4q TR?8qYT@9?qYTR' @9?8q`TR @9?4qT?8qTRR?qaWT @9?4qWT@9?qVTR @9R?8qUT@9?qUTR@9?qTR@9?qTRRR@9?qTR@9?qTRRR @9?0q`T?4qTR @9R?0qaPT@9?LqPTR@9?qTRy@9?LqTRtRR@9R?qMT @9!x!?8qLTaR@9R?q!LT @9Ax!LQ!?qT_q!KT@9?qJTR@9R?qJT@9?8q`TRR?qIT @9?0q T?4qaHT@9?qHTRaR @9R?8qGT@9?qFTR@9RRq!@9? qAET@9?0qT?4q TR#@9!?CTRz@9?q`TRRs@} {"RS[ck!s@@*@cxc @@y@f@z@}_@9t *?q@T ҵ@@@9~|9 7@*7@!*b@Wx!  @ ~!RAK  R*5m!_k`Tkb@zHT@"|}d@qTbhbB4!"[+$Y"k_kT 4 R  * @R@*{` *@}| @K_q TkTkGz T @}"B@_ k!T,h`4}~Ӏ}|  @?qT!yf*"||E@ k7k'Bj`TKc @c}2^@kaT#jc#4B@5?q !i0i`x5!||iax@4@y` k,{ kAT kT?SA[BcCkDsE{Ǩ_ *Ґ4@KB RB@_qT* @I   4f*HD hb8$hb8BkTd8kT_T R_R_4f*ưE hb8$hb8BkTd8kT_T R_R_4f*D hb8$hb8BkTd8kT_T R_R_4f*DF_ Thb8#hb8Bd8k TR_ R_   @@@!@ x`@@$@MT@RR ՠxb!"|@kTL@ (c@T_TR_  {!RSc[VR5|@!>@3}A @`!@aRqTSA[BcC{Ĩ_6RAR6>@ARc`_>@@ @@!TA4@?TX8@#@#bH@9_qT @94@R b@Bb>@@  @AR>@ @@R >@A  @>@S`@{!R[Sc#YR4|@!>@3}A @! @ARBR!RrT @?qiT!Q *SA[BcC#@{Ũ_>@ @@" T }!8 >@8@@_T R?q!T**SA[BcC#@{Ũ_9R@C@aH@9?qT@@94@Rb@Bb+>@4AR>@@@QR>@  @Bӄ@&B}c TE D@f@||@T!!!!!!!!C!Q_@ T@9d k@T_  ?T ?)T@9d kT? T @9d kT?AT_ @Bӄ@&B}c T F@e@||@ʄ@T$!!!!!C!Q_@T@9d kAT_  ?bT?IT@9d kT? T @9d kT?AT_{beBBS4C@@gU@QQD|} QQR$dFh|}|})hiCFi (hh}@hc|Ǜ hfcDA@`N@!KAb@B}ӄ@!Kb@`:@DB|_T@bT`N@h$cN@Bc`e`:@TSA@{è_{St*cXKR+B[kCz@7#*a|@ @?FATbA! w|zBTG*B@?k T`a~@!4C!N@@`@ #B*b@#@c d$c|}Vh#"@c@DB|}$@dh""@c@DB|}$@dh""@c@D$w"SA[BcCkD+@{ƨ_Cc@@**=<@c~@*>7  ա#_T$T_T_8?6?T#_8?T`q`TqhT{@?_  ?B@bT%'j@T_8?6?T#_8?Tdq`TqHT{@?qIT___bDG@9b8T?!ET_  { 3qTHT q@ TTq Tq!T)s@hsx8N @{¨_q Ts@hsx Hq Tq!Ts@hsx(J,qTiT4qT8qTy 5~q Ts@hsx @ C{¨_0qTs@hsx0L$q T(qTs@hsx4M qTs@hsx|Ss@hsxrٕs@hsxӕs@hsxAӪ͕s@hsx$IӤǕs@hsxBӞs@hsx,KӘ R*@N cOE{ cBS [Rcksd@_@9KyRߪqCyAz# YhA9ZdA9=&T@ y:9@y @y#y'yS93y7ys9Sy # 5bæQ RBE B@jT߶qT`4E@9@4` RRE@9qb@9*5?/TyT_|qT_$q R@z@T`!*DFb89$P872999d@9d|87 R5R2999B969:9ߺq@Ta¦Q RR!D !@jTb@9@\@C5>TBx@_q_TLqqTR߶q@|TRߺqvTaMT[k529 յG46@9Rx_qSs:G4|QC@cR:@9OnA R R R @9?qTR%R@8E#J  ?"k!T$9@9k3T`)J  kTCB9cB999B_q`@TRR!pSB@9!@9B *! *&kT)qM>T^RRRR kTa^@9>9 kCTB@9B9V!TBx@_qaT`@9xqA T5*``@xRkT`@9q T RC,R R2969:999SyB9 R@\@ `Gb8c!?qTR`+ @T @8zTmTAx ?q`!Tq@=T qIT$q WT(q[TLq tTPqsT\qTdq`T_qxT_(q:T_8qT_<qT_Tq T_q`TRR696yBq T^R&4\T 3T ETLTR ߶qTi/T#4 #Ta@Rr?k#TӃR3R'@R_bT 5'@?T߲q` T⇟?_k`TIT߶qT⇟?_kATY5?T29(R`b|}B##8B Țj"8Q6@929a8_kIT69:@9_kT8x8:9@ HT{45R|S!d2`2BR299R994#d@9|q`T?7 R5R2969:999 T@Qa2@9R]e@29"?BR!RB Rr@AA|!b!(8`@9xqT$q'T0qaT5Z`*R529@:RT`@9 929d39՚4Ax ?q@2Tq<T qIT$qTT(qvTLquTPqqT\qTdq@T_q T_(qT_8qT_<qT_Tq@T_q BTR0`@9(q`/TR)Cx`q@4Tq@>T q@@T$q@UT(q TLq TPqT\q?TdqT_qT_(qT_8qT_<q`T_TqT`@9qTq@TqTߺq B T4Rқ` @95x$q 0T*`0qaTRҠrRt`@9qaT` @9T?hTR|`@9xLqTPqT5Һ`*l@xqT`@9xq+T$qT0q!T@`Ү`@9xqTa @9``!x!?$q`T?0q`ҁ`z?$:TT RT R<&ҳRz5`@9(q@Tߺq B)TF@qTT R2999R4 `@9xq`T$q*T0qT@``RDh|8 RanRCbR*5R2999SyAx ?q(Tq+T q BT$qhT(quTLqsTPq`T\q@TdqT_qT_(qoT_8q`mT_<qT_TqTRO`@9xq T$q -T0q@=TRB`@90qT` @9qT҃ҽ5*5:`*Cx`q`Tq"T q?T$q \T(q`_TLq`]TPq T\qTdqT_qT_(qT`@9qT` @9x8qT )ғ29`@9qȢT`(@7?iT`@9qTߺq BhT/`@9(q!T` @9qT@Ӄv `` @9qT@Ӄm`@90q`"TR`@90q!T` @9qT&^Ax ?q@Tq-T q@ET$q`AT(q@@TLq`TPqT\qTdqT_qT_(q`TRҿ`@9(q`-TRҸ`@9q`5` @9q*TRҬ`@9xqT$q6T0qT@`$Bx@_q`#TLq CTRҗ`@yCRkTcRk|Ta @9``!x!?$qT?0q`ҁ``@9(qAT` @9qT@Ӄ`@90qTRu*z` `@90qT` @90qT>`T`@9xq?T$q6T0q>TR[`@9q5d`@90q+TRO`@90qT` @9qAT҃` @95x$q@T0q@T*`<`@9(qAT` @9qT@Ӄҷ `ҵ`@9xqKT$q KT0qAT@`Ҫ`@9(q`NTR `@90qT` @9qaT҃қ`@9xqT$q`T0qT@`Ґ`@9xq#T$q#T0q@OTR`@90q#TR`@9xq )T$q(T0qT@`q`@9(q@2TR`@9xpq55:`*&RT' &R ` @9qTR`@90qT` @9q!T&I`@9xLq@TPqTqT` @9qaT;`@90qT` @9(qaTӃ3a @9``!x!?$qeT?0q`ҁ`(`@90q@TRҞ` @9q TRҗ`@90q/TRҐ`@9x"?Lq#T_Pq@"TqbTR҃`@9xq:T$q`sT0q <TRv`@90qT` @9q!T&`@9xq+T$q`cT0q bTRa5ZӃ*]5Z`*Y`@90q@6TRR` @9q`&TRK`@90q!T` @9 qT҃`@90q!T` @90qT>Ҿ`@9qhTc @9`xqDzhT?HTX`@90qT` @9qAT҃Ҫ `Ҩa @9``!x!?$q@TT?0q`ҁ``@90qT` @9 qT҃ҕ`@9xLq OTPqNTqAT` @9qT҇`@90qAT` @9(qT Ӄ` @90q 0TR5҃* `r5:`*` @95x$qNT0q`MT*`` @9q*TR` @9q)TR`SQ`@90qTR`@90q KTR`@90qTRҹ`@90q^TRҲ5:`* `/`-`@90qTRң5&*`@9x"?LqT_PqTqTRҒ`@90qdTRҋ`@90q!T` @9(qTӃ`@9xLq zTPq`yTRx5Һ`*t5*p`@90q`VTRi5Z`*e` @95x$qT0q@VT*`Z` @9qUTRS*z`P`@9qaKT` @9JTh`@90qT` @9qaT&*`=*z`:`@9xLq@LTPqKTqAT` @9qTү`@90qAT` @90qT>ҧ`@90q8TR5ZӃ*` @9 q9TR` @95x$qT0q T*`!R2969*:9 R9b@99\@@`@90q!T` @9 qT҃v`@9xLq9TPq`9TqaT` @9qTh`@90qaT` @90qT>`? @T`@9xqTd@ykaTm `Ta @9``!x!?$q)T?0q`ҁ`I`@9x"?Lq3T_Pq@2Tq 1TRҹ`@90q TRҲ` @9q@TRҫ,5`*` @9q8TRҞ5ZӃ*5Z`*` @90q`TRҏ5&*5Z`*5҃*`@9qAT` @9x8qT )5>*u`@9qTq TqTqTqTRf`@9qTR_` @94qTRX` @9x8qTRO`@9q TRH5:)*D5*@` @94qT8qTR7` @94qT8q`TR.`@9qTR'`@9q TR 5z*5*`@9qTR`@9q TR 5z*5*` @98qTR` @98qTR`@9qTR`@9q TR5Қ*5Қ*`@9qTR`@90q@TR` @9x"?Lq`T_PqTqTR` @9(qTRҼ`@9q TRҵ5:Ӄ*5*5Һ`*5*` @9xdLqTPqTqT`@9q!T```@9q!QT` @9xLqTPqAPT``@90q!\T` @9(q[T Ӄ*`v*z`s` @9qTRl` @9q TRe5*a5&*]`@9q`Tq@Tq@TRR`@9q Tq T$qT8qTRE` @9TqTR>` @98qTR7` @94qT8q`TR.`@9qTR'`@9q TR 5b*5Қ*`@9qTR`@9q TR 5z*5*` @90qT4qTR` @90qTR`@9q)TR`@90qTR`@9q/Tq ,TR`@90qTR`@90qTR` @9(qTR` @9 q TRҿ5Ӄ*5҃*` @9TqTRҰ` @9Xq@TRҩ`@9q@TqTq@TqTRҜ`@9qTRҕ5Һb*5zb*5*5b*5Қb*`@9LqTRz`@9Lq TRs5*o5Қ*k` @90qTRd`@98qaLT`@9qLT@`@98qaKT`@9qKT`@98qaJT`@9qJT`@98qaIT`@9qIT@5>*@`@98qGT`@9qGTһ`@98qFT`@9qFTҳ`@98qET`@9qET`ҫ`@98qDT`@9qDT@ң`@98qCT`@9qCT қ`@98qBT`@9qBTғ`@9q TqTqTR` @9(qTR` @9Tq TR5Ӄ*`@9q`TR` @9TqTR` @9XqTR5b*`@9q@TqTq@TqTR`@9qTR5Һb*5b*5Қb*5zb*5*5Һ`*5*` @9(q TRң5*5:Ӄ*`@9x"?LqGT_Pq@Tq TRҎ5>*` @9q`FTR҃5Һ`*` @9q@Tq?Tq;Tq:Tq6Tq5Tq1Tq0Tq,Tq+Tq@TRd` @9q'Tq%Tq"T q TqTqTqTqTqTqTqTq TqTqTqTqTR?`@98q TR8`@98q TR1`@98q TR*`@98q TR#`@98q TR`@9q TR`@9qTR`@9qTR`@9qTR`@9qTR5Z*5*5*5Һ*5Қ*`@98qTR`@98qTR`@9qTR`@9q TR5z*5Z*`@98qTRҺ`@98qTRҳ`@9qTRҬ`@9q TRҥ5:*5*`@98qTRҖ`@98qTRҏ`@9qTR҈`@9q TRҁ5*}5*y`@98qTRr`@98qTRk`@9qTRd`@9q TR]5Һ*Y5Қ*U`@98qTRN`@98qTRG`@9qTR@`@9q TR95z*55Z*1`@98qTR*`@98qTR#`@9qTR`@9q TR5:*5* `@98qTR`@98qTR`@9qTR`@9q TR5Z*5Z*`@98qTR`@98qTR`@9qTR`@9q TR5*5*`@98qTRҾ`@98qTRҷ`@9qTRҰ`@9q TRҩ5Һ*5Қ*`@98qTRҚ`@98qTRғ`@9qTRҌ`@9q TR҅5z*5Z*}`@98qTRv`@98qTRo`@9qTRh`@9q TRa5:*]5*Y5*U5*Q`@9qTRJ`@90qTRC` @9xLqTPqTR8` @9(qTR15Һ`*-@4E@9O54`9d@9 v7`@9q@TqTR`@90q!T` @9(qTӃҖ` @9q@Tq?Tq;Tq:Tq6Tq5Tq1Tq0Tq,Tq+Tq@TR` @9q'Tq%Tq"T q TqTqTqTqTqTqTqTq Tq TqTqTqTR`@98q`TR`@98q`TR`@98q`TRҾ`@9q`TRҷ`@9qTRҰ`@9qTRҩ5Z*5*5*`@98qTRҖ`@98qTRҏ`@9qTR҈`@9q TRҁ5Һ*}5Қ*y`@98qTRr`@98qTRk`@9qTRd`@9q TR]5z*Y5Z*U`@98qTRN`@98qTRG`@9qTR@`@9q TR95:*55*1`@98qTR*`@98qTR#`@9qTR`@9q TR5*5* `@98qTR`@98qTR`@9qTR`@9q TR5Һ*5Қ*`@98qTR`@98qTR`@9qTR`@9q TR5z*5Z*`@98qTRҾ`@98qTRҷ`@9qTRҰ`@9q TRҩ5:*5*`@98qTRҚ`@98qTRғ`@9qTRҌ`@9q TR҅5Z*5Z*}`@98qTRv`@98qTRo`@9qTRh`@9q TRa5*]5*Y`@98qTRR`@98qTRK`@9qTRD`@9q TR=5Һ*95Қ*5`@98qTR.`@98qTR'`@9qTR `@9q TR5z*5Z*`@98qTR `@98qTR`@9qTR`@9q TR5:*5*`@9qTq TqTqTqTR`@9qTR` @94qTR` @9x8qTR`@9q TR5:)*5*` @94qT8qTRү` @94qT8q`TRҦ`@9qTRҟ`@9q TRҘ5z*5*`@9qTR҉`@9q TR҂5z*~5*z` @98qTRs` @98qTRl`@9qTRe`@9q TR^5Қ*Z5Қ*V`@9qTRO`@90q@TRH` @9x"?Lq`T_PqTqTR;` @9(qTR4`@9q TR-5:Ӄ*)5*%5Һ`*!5*` @9TqbT`@9qbTbҘ` @9TqaT`@9q`TT,qaT@#c@`x` Qb҆` @9Xq_T`@9qA_Tఀ~`@9q`TqT$q`T8q]T` @98q]T`@9q!]Tm`@9q Tq@ TqTqTq[T` @94q![T`@9qZTZ`@9q!ZT` @9xdLqTPqTqYT`@9qXTI`@90qdT` @9(q!dT ӃA`?=` @94q@T8qAVT`@9qUT`3` @94qT8qUT`@9qTT`)`@9qTT$`@9qaST` @98qRT`@9qaRT` @98qQT`@9qaQT`@9qPT` @9x8q!PT )` @94q@T8qAOT`@9qNT`` @90qT4qNT`@9qMT` @90qMT`@9LqLT`@9qLT`@9LqaKT` @9q TRU5Z`*Q5&*M5:`*I5҃*E"Bc!RC@yB@9Sy 92969:999` @9qTR.5Һ`**5*&5*"`ңҡ`@90qTR`@90qTR` @9(qTR ` @9 q TR5Ӄ*5҃*`@9qT` @9x8qAT )s` @9xdLqTPqTq!]T`@9q\Te5:`*5҃*`[Y`WU`@90qFT` @9(qETӃM`@90qET` @9 qDT҃E` @9 qTRһ` @9(q TRҴ5҃*5Ӄ**`ҩ5ZӃ*`@9q@ TqT$qT8qTRҘ`@9q -Tq,Tq@0Tq@TqTR҉` @98qTR҂` @94q T8qTRy` @90q !T4qTRp`@9q TRi`@9q@TTRb` @90qT4qTRY` @90qTRR`@9qTRK`@9 qTLqTRB`@9Lq TR;5*75Қ*3`@90qT4qT5**`@90qT4qTR!`@95qT*`@95qTqT*** *Z`@9qTR`@9qTq TR5*5v*5Z*`@9qTq`Tq@TR`@9q %Tq@T$q T8qTR` @9Tq TR` @98qTR` @94q`$T8q TRҽ` @9TqTRҶ` @9Xq@TRү`@9q@TqTq@TqTRҢ`@9qTRқ5Һb*5b*5Қb*5zb*5*`@9qTRҀ`@9q TRy5z*u`@98qT5*n`@9 qTRg5Қ*c`@95qT*\`@90q T4qTRS*P`@9qTRI`@9qTq TR@5*<5r*85Z*4` @98qTR-` @98qTR&`@9qTR`@9q TR5Қ*5Қ*` @94qT8qTR`@9q`TR`@9qTR`@9qTR5Қ*5z*`@98q T5*` @90q T4qTR*`*z`` @94q@T8qTR`@9qTR`@9q@TRҽ`@9q TRҶ` @90qTRү`@9qTRҨ`@9q@TRҡ`@9q TRҚ`@95qT*ғ`@9LqTRҌ5b*5z*5*`@9LqTRy*v5Қ*r5z*n`@98qT5*g5*c5*_`@95q T*X` @90q@?TRQ`@9q TRJ`@9q@fTqdT$q@cT8qaT` @98qT`@9qTҼ`@98qaT`@9qT`Ҵ`@98qaT`@9qT Ҭ`@98qaT`@9qTҤ`@9qTR` @9qTR` @9x8q TR 5҃*5:)*5*5:Ӄ*5Һ`*5*` @9qTR*5*`@90qAT` @9(qT Ӄ_`@9qTq Tq TqTqaT` @90qT4qT`@9qaTJCx)5*`@9 qT`@90q T4qaT`@9qT7` @94qT8q!T`@9qT`-` @9q!Tq` Tq T qTqTq`Tq TqTqTq`Tq TqTqTq`Tq TqaT`@98qT`@9qT` @98qT`@9qT` @94qT8qT`@9qaT``@9qTqTr`@9qT`@98qT@b@9_q`@9qTqTqaT` @9TqT`@9qTb` @9x8qTR@` @9TqT`@9qTT,qT@c`x`v|` @9XqT`@9qaTఀҪ5:)*#`@9qAT`@98qTҞbҜb@9_q` @98qAT`@9qTҎ`@98qAT`@9qT҆`@98qAT`@9qT~`@98qAT`@9qTv`@98qAT`@9qT`n`@98qAT`@9qT@f`@98qAT`@9qT ^`@98qAT`@9qTV`@98qAT`@9qTN`@98qAT`@9qTF`@98qAT`@9qT>`@98qAT`@9qT6`@98qAT`@9qT`.`@98qAT`@9qT@&`@98qAT`@9qT `@98qAT`@9qT`@98qT`@9qAT`@98qT`@9qAT`@98qT`@9qAT`@98qT`@9qAT`@98qT`@9qAT@`@98qT`@9qAT@`@9q TR\5>*X` @9x"?Lq2T_Pq1Tq2TRK` @9q!Tq Tq`T q TqTqTq`Tq Tq TqTqTq`Tq`Tq TqTqT`@98qT`@9q!Tҥ`@9qTqT$qT8qT` @98qaT`@9qTҔ`@9qTqTqTq`TqfT` @94qafT`@9qTҁ`@98qT`@9qTy`@98qT`@9qTq` @94q@T8q!cT`@9qbT`g` @94qT8qaT`@9qaT`]`@9q`TX`@9qA`TS` @98q_T`@9qA_TK` @98q^T`@9qA^TC`@98qAT`@9qT`;`@98qAT`@9qT@3`@98qAT`@9qT +`@98qAT`@9qT#`@98qAT`@9qT` @94q@T8qT`@9qT`` @90qT4qT`@9qaT` @90qT`@9LqaT`@9qT`@9Lq!T`@98qT`@9q!T`@98qT`@9q!T`@98qT`@9q!T`@98qT`@9q!T`@98qT`@9q!T``@98qT`@9q!T@`@98qT`@9q!T ҽ`@98qT`@9q!Tҵ`@98qT`@9q!T@ҭ` @94q@T8qT`@9qT`ң` @90qT4qT`@9qATҙ` @90qT`@9LqATґ`@9qT`@98qT҉`@9 qTLqaT`@90q T4q T}b@9_qwb@9_qq`@9qTqi`@90q@T4qaT`@9qT_@]`@9q`TqTvV`@9q@TqTq!yT` @9TqxT`@9qaxTbG5Һ`*5*`@9qTRҵ@65*` @9Tq!uT`@9q`TT,qHtT@#c@`x``$` @9Xq!sT`@9qrTఀb  {!S[?(qT%6@6@ @ @ _8qT`^@@C?"@ T @R!0r_j T`@ 7`^@D{`^@aZt~ jSA[B{è_ @%7`^@ @R!0r_jT`@7uZt~ jSA[B{è_R!r RkT`@6ab@`Z@?kT|`Z@h48t~ `@j2`˹@ A"TZ`Z`Z@`@x`Ry`Z@`@x`@!T@ @_!T`@`6`Z@`@a^@x`!@Rfy`Z! @A!F#@b@@!`A@?qT!QA_1?T TT@9B_q`TC?@cGT.!?@T@9bb8_T_T@9B_q@T!T _"T_8cq`T!B@@CT____{B7_  {S@ @.3 a@a`@0@9@_(qAT @X@b@`!2b"@db&@hb@\`.@@a2@ b.@aA9@L@9!x*@L9A`*@!PCb@"@?qT!Q`@@?qT!Q@b@F@ @"@?qT!Qa@A @b @"@?qIT!Q@A@!A GSG#_sG؅SA{¨_֏D{CBck@@?TSBs[ 4T @9UWGG`8E  BT "hb8@A@86b8Rd!(! d8!|@_iTTEc Td@9&zd8BBD9_TY}!! x`4Q?qHT!@ @9`8  #TSB[CRA!B@"@cҡT{AcDkE_T5G !@9@4}z`S4Q?qT!@  TSB[CDRz@S[& D{2 @@ @A/7@@@A@@@!t@ A@EX7@`7+@@t++@@.P7 /5O!XE+@!@;[ 9ZBR@'V@@G'@+@9?qHhTcXEa!! @9a4@[@q#vSr!@9!@TB2?@@/_s@2@ #3@B9*c9*@ҀO?`T;@!_A;CB{@?rB{ x67@Z{#@7U@2H6@2GB 5@9@?kT'N*?@@{@ǟ+_aq@zaT#@#4@;@@bS@B@_@* 5'@_ T;@C@"P'@ Y`7+@`X6;@t+!X@7;@ @9q @z$T@s4O@@y^o@'N;!RS[4@'b@@P` R@ 9S@@;3@#`@;@ 4AK\@yX7@@A@@Ґ+@ XE@9@9  "4_qRDAzaT!@! !~@9?q @zNT?qR$BzNT@_qT @9BB_d(T?q@T?qT!HG!c6,M4@A@9?q(GT#|@XE! @9@4@@q@ XEs`@9c@9@#4?qR$CzaTA@! !~@P7{@;@w@&('H@T#9!4?74@9? rTR` @!! ~ R96S@@s3@s@@HZ4sHs@@@@9? k T;@W6@_qS@3@!@*t@BS@3@s@k@s@YS@3@@`!@!!`T @ R@ 9$@9@9!!  4_qRD@zaT @ ~! @9BXE|~Bhc8_qT+@ r\T_q2TXE @9@4 @q+@ s,P7{@9;n_@  @!4!L ?q`T_@AR;;@@MXE@9qaT C94@ 4 @S@@@@5B@#_Ё@AX@c#Y64S@3@@ R9@@X@@N# @R @?q T!Q @AX@ @9x 9@X@@9(!p9 sLa@s@@ `SAa@`S qT@Qq T9@i;_qh"TXE @9@M4 @q s _ qcTXE! @9!@9@!4_qRDAzxTA@! !~+@@9,hq!W6y\@@w@S@@@?qp2@[+@,35?MTx{?@x3@ a **c9G#i@@G@@`x6?9ן4@[@X+@?D@!T@Z5@X7@ 5+@R!r q.T_T ʚmT- #@ ?뭘T#@@! #T;@{@_TS@[@*S5'@L ;@ RS@@@x6@ P7#@7@Ё7 @9 q6T@r{@{@ P7@'[C@H6@ @2  @[;@{@_DAT@@RP6@?K @$@zaT@@K@@@  ?T@_T@Je|;@ @BA@;@?TS@3@/;G/@K@@z;@G@T9 @ @`6 rTBR'/;@'@`@/@`S@;@5a@@@ R 9@?qT!Q'[@D5@{X7+@t+E ? TSi@;X@;@@W@X@+@t+j;@3R9R@9_qAT@9@hP7@@9?qTBXEA!! @994@!?qS[Z|qyTpqT2d5@X7! @?qT!Q! Tn4lqT)Tq`TqkTB@9lAxb´BC[@` CX6*&@[@@9(!p9@@?qT!Qi4Iq7TqTB@9Fxb@B@9_qT"R!LC!@@Rq@T%@SX@)T@9S@!294S@3@[@ R[@9'x"?qhT_LqMT@9!x!LQ!?qLT{U@+@@"X@[xG@2AXK@X@5;@?AT@@@T@AU;@rAU@AT#@ ? hTS@[@!*S[5 Ҋ@Y[@ @к W@A[@A[@ @9x 9s@Vc**`@cRD@W@Z@Z@ @9x 9;C?|_|@9+86REe8Dc(c d8c|@_ITT;?T@9fze8BBD9_T@@9q5T@9c@#$h6@o6@;@{@ @T @y _8?qaT@_8? @T@A@!A?<qLTb3@!*8. @y aRW@+@;@!xX@!2+ @ @"=" =@" ==!@!@95@AUQ!?qXTO+@Z+@@!b@`T@GbP@'+@;'@+@4!@yR?k6T*75!@9?qTXE! @9@9k+ 4?qR$@zaT @ ~k3@`* *c9c@@@94@뀒A?T@?,?T@@y_q;@+A@A?T@@ @9@CB{@rB{H6 @2 @GB /_6@X@@`6#@{@;S@@C3@Ҩ@C@!@9! !~@y4 @ *{@k { k@@y@R P@R@q 9@D@9@X@ H*@X@@W@X@ZHR#'[as!E"hy8s@!@9! !~#AUQ!?qH?TO+@Z@+@;'+7@@@@6q@ATD @T@o6;@{@?TB@9@_qT !T@9Cxaq@]T?q`pT? qT?$qT?(q`6T?Lq4T?PqT!\QR?jT@9?0q2T;,ϸA@9;@@R*s4@dQBxd$@џT_凟䇟kT A@9sB3T@;@?qTz$TT T" iA@9! !~:A@9! !~]4@9⻃Ry!x!_@@@T`ITiT$T T`TTTITTT @TTpT)TTT҃`T@ӃTӃ TiT %`_c`FT?&T R)G; **[@!?hB@08@ qT HT@9?6DR @9@b8sM@`P7_qT  *'@/Y2@@492BC@aL@c|Sb[T4@RX@@ޱ#A8@y"S@3@/@+ R9/@ ]TYT T aT@9!x!?q@T?LqT@9!x!LQ!?qT@R!FZ@!<@@Z@@9(!p9Z@ @9x 9 @kT@*k~T@B~AP@* @T@@R!HA!@ zs@$ZTHGdeaRW@+@W@!xX@!2+H @ @b =b=@b ==!@X@ @92 9m@X@H@9BxBQB_qHT! !(š!!R5$ @9k@2T9@i;S@@'3@/+@x+'@/@HrRh@w@ @"@/ @_!,T!T ?qDTBR[kA@H!@[@k@`@=5@R![' sa@H[@'Ms@95@@/@?w@B-XT@"@B S@5@;@@@B @@]@R!FZ@!<@@W@Z@)Z@ @9x 9@! 9 7 @ 2 *@9 *_ `TgR R XE ;*C * *[ A@9!@9@9cC  4?qR$@zT@@ ~c`@9q TqbRBz Tq@Tx_q@]TqTq`TqTqSzTRk(T:qs{?qhiTXE! @9 4@@@Z qZ?T**d@z@@;@C@[@@T_qpT  *g;; q;@ I<Tc@q@YT+@!2+? T룁T`@x` "B$Ӛ 7**** A@9;RҲ@@y RRkTXEC94`@.4` B.T@9.4q-TqbRBzTq,Tx_qTq,Tq,TqTR@@9 ~i*;RqT $Ӛ`7*** A@9RRl*;Rg,@#Q"RcD@ b@j!T*@^@@9?(qT @9?qTJ @9 ~! * '[*h@@@;@[@@A{@9; ;^ @y@@9@S X7@9R:X@ ##A+@9#?jDT!*A+4@ *W6S@@3@+@x+@@SBtI5@Q_6@"R@[@@ɺ@[@@9(!p9+@!r TCUQcqTO+@Z@@@9Sa_6@!R bX@A(@_(jTbX@A(@ *@(@9X@ 4DR;C;@C@@@9BxBQB_qHT! !(š!!RaU5@¸H[@'M)@@@@ @&cIT@9qT`FGT}`F T@9ab8_Tt렍T@9q@T@/@B@@{?4@9CxaqT?q T? q` T?$qT?(q@T?LqT?Pq T!\QR?j!T@9?0q TRJ5)@9Cxaq@T?q$T? qT?$qT?(qT?LqT?PqT!\QR?jAT@9?0q@TRF5q!T*-!R4; @_;@!F7!B_@;@ @@"&s%&!s@!HG d6@9?0q|T @9?qa|T'[;ɵ;@@9?0q{T @9?qzT5+@2+@'!E@9?q'TBXEA!! @9a4"@"4""E@(BAD@9'"|Sb8B(7&|~BXEBhf8_qqT?qR$BzT@_qpT?q#TBXEA!! @9!4@"4"A@9?qoTaO@`7@#@ B x#`7@#@aS@@B x#@@!R 9R!9 E9?mT@ @!!7@ @T/[kH/@[@k@@#с@/ [' BR/@@@@|`@@@@ˠ`@@@/@`@G@ @K@[@'Ma6? rabT@~R @c mC@X@ @92 9@%@R!R'/;H'@/@;@ DR;C;@C@@a *q @z^TBR"9 A!E@9CXE?qHTa!! @9a4@4!A@9?qT@2R[@ @9BxBQB_q(_T! !(š!!RA#5޴t4 RBXEBlD9B5!@y4!!"@9_qA@!"  ~"&&tm4@@s@@s@@X@(@99 (@X@(@!# (t}4a@ @H7'@_S@BR_jT@bB@BrT@P62 a@#@ 8@âT*@9 ' *S2  `@8*@9 *y *@ R="R@X@@A?b'@c @"a/@bd@!b[@!?T#@ ? TcmpTe`:`@A!`=q@ 9s @9 ~@qP7@p`7+@@t+ RS[<Ap4@RX@@H+@@t+ @2 *@9#@ 7@ *Ё7"? T *9!B!y RbT8T@S@@3@:@+@*@9x+@9CxaqT?qT? qT?$qT?(qT?LqT?PqT!\QR?jT@9?0qTRa5`@cˁ!@5qRGa'@Hd@`/@aa[@_T`뀀`[@!5`@R @9?(q5_q@T_(q@TR5@9?0qTR5@9Ax!LQ!?q T_q TR5 @9? q5 @9?qa5!R5@9?q@TRA5@9?q`TR5 @9!x!?8q5 @9!x!LQ!?qᇟ5@9?0q@TR5@9?0q TR!5 @9?0q5 @9?q5@9?0q TR!5@9" !x!Q#qA(!90!R!5u @9?q5p_q#T_(q"T_8qT_<q T_Tq T_q,T@9?qT?q`TRa5\@9?0q!+T @9? q*T{ @9"_qT#xRq$BzT@9?8qTR5FRA5C@9?q5> @9R! ?qTR56@9?qT?qT?q@TRa5,@9?8q@TR5& @9?Tq TR5 @9?qA5@9?q5 @9?Tq@TR5 @9?XqTR!5 @9RR?q$Cz!x$Bz5@9?qA5@9?qT?qT?$qT?8qTR5@9"x_q T?qR$Bz T @9?4q T?8q TR5 @9?8qTR5 @9?4qT?8q TR5@9?qa5@9?q5@9?qa4 @9?0q T?4q@TR!5 @9?0qTRa5@9?q5@9? q@T?Lq!4@9?LqA5@9?0q T?4q@TRA5@9?q5@9?qaT?qT @9?0qT?4q@TR5 @9?8qTR!5@9?q5}@9?q5x@9!?ᇟa4@9? q T@9?0qT?4q TR5g@9?q!5b@9?q5]@9?q@TR5W@9?q`TR5Q @9!x!?8q!5J @9Ax!LQ!?q)T_q@TR5?R/KO/@H[@'M @ @9?qa5,!R5)@9Ax!LQ!?q T_q@TR5@9?0q`TR5 @9?qA5@9?0qTR5 @9BxBQB_qT! !(š!!R5 @9?qa5!R5 @9?0qa5 @9?(q5 B7˪_q`T_(q`T_8q T_<qT_TqT@9?qT?qT?q@TRA5@9?0q@TR5 @9?Tq TR5 @9? q!5@9?q5 @9?Tq@TR5 @9?XqTR5@9RR?q$Cz!x$Bz5@9?q!5@9?qT?qT?$qT?8qTR5@9"x_qT?qR$BzT @9?4qT?8qTR5 @9?8q@TR5 @9?0q`T?4qTR5x @9?0q TR!5r@9?q5m@9?Lq5h@9?qA5c@9@9?q@TRA5[@9?q`TR5U @9!x!?8q5N @9Ax!LQ!?q)T_q@TRA5C@9?0qTR5=@9Ax!LQ!?q T_q TR!52 @9? q5- @9?q5(!R5%@9?q5 !R5 @9?4qT?8q TR5@9?q5@9?qA5 ?q@TR5 @9?8q@TR5 @9?4q TR!5@9?q5@9?q5`$@9" !x!Q#qA(!90!R!5@X@ 5@9!29vS@3@@ R9k[@ Ҷd@cTeХ`:`@q7Ƶ`E9 5cD R`9a`/@ae@a[@뭾Tf@_Uqa @Ђ&B4BqiT$*@R! 8ba'@`#@c/@d@ca[@e@@덺Ta @?!끀!a[`$C'@!5`ReC !59RKx @9?(q!Td@@9!RbxBLQB_kI;Tq`TR!5Z@9?0qT @9?0qTy @9?q5N :!lD!AT@E"%@y~@9_qT@y@y.`@y @9?(qA53_qT_(qT_8qT_<qT_Tq`T_qT@9?qT?qTR5@9?0q@TR5R:3R7 @9?0q5 @9"_qT#xRq$BzT@9?8qTR5Ra5@9?q5 @9R! ?qTR5@9?qT?qT?q@TR5@9?8q@TR5 @9?Tq TR5@9?qa5@9?q~5 @9?Tq@TR~5 @9?XqTRA}5@9cRR?q$Cz!x$Bz|5@9?qa{5@9?qT?qT?$qT?8qTRy5@9"x_q T?qR$Bz T @9?4qT?8q` TRw5 @9?8q@ TR!w5 @9?4q T?8q7TR!v5#@ 8 '*@9S *j @9?0qT?4q@TR!t5z @9?0q TRas5t@9?qr5o@9?Lq!r5j@9?q@TRaq5d@9?q`TRp5^ @9!x!?8qo5W @9Ax!LQ!?q T_q TRan5L?q@TRm5G @9?8q@TRm5A @9?4q TRAl5;@9?qk56@9?qk51@9?qaj5,@9?qi5'@9?q!i5"!Rh5_qQTXE @!! @9!'4*b@*+@?q!!B@d:Lx`CP6S@@;3@G;@G@+@rsT@-E@4@A@`@ S@@!*`4 R@9D#T"a B !_ '@`7+@`]6@t+!X@6i@4O+@k_ @  os G R[bWR@'V@@G+s@'@5@2s@@ X`x4@* @*! 3@C9c9#O`@9g@~a@9hc8q T*@@A?9ӁT.@_ZCB{@?r{x6#@sz7@ _@Ѐ7@bs2H6@2GBs@5@j@!kbT*@@+s@_OHH?`sG@O RS[?qH3T @9 4`@d q$@y `@y;G@B2+G@/O+@rM'j aRW̯@+@X@!x!2+ @ @= =@ ==!@W@X@{@W@X@+@t+G!@y!RA9@!@@6@9?q T?9ޭ@9?q>5@ 9aO@`7@#@ B x#`7@#@aS@@B x# R E93@9{@ R@** c9'/'@/@H@9} 9}  '@FCD%RBhf8 *h&8CD@&@chd8dcCӥ hc8*h#8@@5B87_!@B|S R "`@9* `9_ ш{ C BS[cksB(@K@g ?#GWZ@!DK@@!!a_B,@`YK@"BA@!`D,BR@@@ @_ @cxc2 ^n?@!Q?(qhT3l`"!=TaT? q :T?@` ;BlD*BXc/ ҃ R@@@@OB@A@k c@zx"u@?@`RAx?qD@zT!k@@k@f@#!R`4 @7a0A6G@W@@90TXE!@9@9@G@@/c4?qR$@z;T@@ ~/@@/#@G@_"[TK@@' @@XE!@9@9@#4?qR$BzaT@B B~@9C@_q`T@T?@_kTqdR@Dz`T?@qTBx_qT_+?qHqT@XE! @9 34@@@q@ #@_)3T@9F@8Ù@9!R3DBC! dhb8!*ah"8@9qTA@ l@9`2 l9TR@@! @9 5E?T`@_9"qgT@!a?uTcxaq@TR7?LqvThT#k`8B@a@e+Ihex5@@y<@y@h%x@`d4(@+@+3˱3@9+@Rrˀ@ @* @ @@auT @?LTB DB@_@Ah`x5A@y+!!<AyAh x@ 4_@@9R@r+@@*@ @@ajcT @?rTV 3@5T@G@`T@@+@iTAB+@9DРGc8@ qTR@( |@)T "@8zT_y @!_iWTWRRRWW@ @e7'@  dT @rTPP7b@7 X6 @ @c6@@ @6R+r+@TA@A@y!!<Ay!<@@X4{@_@+33@9+@Rrˠ@ @* @ @@aJeT @?tTB EDFc8_pT7*qTsK`@_YIqTGc8sK B93++@c@B@!1@aB?PTbxA_qhT?qvT? q T?$qT?(qT?Lq T?PqT!\QR?j Tq.T(q0T8qYT<qFTTqbTRqT@9?q_T?qT @9"_qT$xRq$BzFT@9?8q<TR_@!9n@ @@+@ ET @?lUTV  @@@yq@ #@_(TG@@9qG@T@y@y@?qT@y@yT`~Ǯ7@A@y @4L q47@TARh-T?T үC @"RRG@` @y@ @ @#@5T\R'E*6; @B@9XE"@9@9 @ #4_qRDAzgTA@! !~@9?q`gT@_T?@*?_k`hTqcR@CzT?@q@TR8R @*chdx?q-T@!XE""A @9!c4@@R!?qSe>#@|_h7x#@#@@ T@x} @/@<Ӂ!Bk xA@9?q@zTE@yB@y@@%h x@"h x;@ [\4R#@`|"h`x"h7x#@y#@"h xA@9?qH&T@XE! @9@[4@@K q#@zT*|@ @[g@'@3T Қ@q)TRR*8Rg*@*9Bk TT @R @@y@yQ*qmTBRk%<A"< !kKTA<}hax?kT*A"< !k T !K?HTH@y"R KkTC<}A@yB!KB<hcxC@ @}ah A@ @ @@R`@y!Q_k-TK A @!B9kTgA*@a}@@[ȥ@@9G@W@aT#@@9qT@@$RDO@TX@X@g@Qk T/@K@*B @~|@@yCAhax?qt@4{kITkhTB@K?kTB@AL!!@?kATqTq T`@@cT` @x{ c @Rr! ?qTBR?V?@ qT@@9@@yc@{kTq T`@@,_T` @xc^ @Rr! ?q@T@BR4c@qT@9qRBz T@  c(!h`8k 8c?ATAg@!Q?kIT* @@@T @@9q57*sK!9|@ @@jT @?,'TB C_@B@B5@1Т@"D@!!ҁB0@ /@!B#0@@@ Rr@ 7@2 @xaV  @?qiXT!Q_@!91@ @@T @?TB CT?`!T? LTR?TbxD_q`TLqAT@9BxBLQB_qTR7TcxaqNT?LqAT@9!x!LQ!?qT*7I @@p@B@9B B~'@?g+3ɠ+@3@@XEC94@@q$IT@9@xaB @?qIT!QOA@@xaB  @?qT!QS+36@ @+@3@d+3-@ @+@3@N@xaB @@?qT!Q@xaB @?q T!Qz@9!x!?q ?T?$q R$Bz`BTR7bxA_q`@T?q@T? qT?$qT?(qT?LqT?Pq T!\QR?jTq`T(qT8qT<q TTqTRqwT@9?qT?qAwT @9"_qT$xRq$BzaT@9?8qTR@9R?(quT @9?qtTaRGc83K@HiTO@ylA@/@!@9)iTT/Gw_x+@ @+@3@+3@ @+@3@+@ @+@3@T+3@ @+@3@@@S@@93chTbxA_qT?q`T? qT?$qT?(q@T?LqT?PqT!\QR?j`Tq T(qT8q T<q TRTqhT@9?q@T?q`T?qTR;@9!x!?q@T?$q RR$Bz!fTARҀROzA@9?qhT@XE! @904@@q@ ;5 @#@yh$x @@y'@yA@9! !~@BXEBC94@@_q"B?iTB@9?@_kT?@F@8"TR8RODF***C@`@9 5A?T@_3ҁ@#x`x4 @W|cQc<@ R<}KAhax?k`T<RbA@y!QkT@+X9@@y@_kB TB<}*h"x @@ @y  * @@ @y y{HT?@***@9|O@q+cת+@"RRc@ @@y @@ @@`@4*!G"`8S@c"_qTRa(@ |@T "@8zT__iT'@RRRX @ Rr @! ?q TARJ<C@ `8_ATw3_:xS!x|+ckݨ+@c@k@ @@ @@@y@@<b@_]CxcqT>E @yB@y/@?RT @R8R# @y@y#@A+cAߩA۩c@+@@9R?0q!BT @9?qATaRidxqeT_qwT_ q T_$q`lT_(qT_LqT_PqTB\QR_jAT@9R?0q>T @9?(q!>TaRL @9 R7!x!?$q$Bzs@9!x!Q!?q;T" A(;7*@9R?(q:T @9?qa:TaR.3R7@9R?0qA9T @9?q8TaR"+ +@ B@ki[Ta}{! kZTEhaGE5K @ @@@ @@*@@a|#y@b}R@ @#@@@@y{T@yҀ>@|S@O@ #@G@T RE;@A@9XE!@9@9BB  4?qR$@za/T@@ ~BA@9?q/T@-T?@*k0Tq R@zJT?@RRq ?TÒ@y @c|ӄhcx?qT@XE!! @9!)4A@sRs>B!"@?q|~BhA!Bj xA@9?q`:TF@yE@y@@&h x@%h x;@ 4R"@|"h`x"hThh *B5G @bKB bB@@h`4C@yQ@h(- kA@@  @ kT@ @E!||ܠ@@B A@!}֠@@9G@W@aT#@$RG@DOB y@@@aT@#@?@/@!/@@@AA@B@y;@B y@O@A @| h`x5@@@/@!?l[T/@R 9/@C@99Ak@%RR4@<? kT|F#@hdx5@ 4`X`4B @||AhaxA4*h$x<Ak@? kT@@@!@5x K@@?qKTK@!QA@@RAO@R?q!Bg@"@c!bT{MSN[OcPkQsR_@@yA@y)Q%@RTRR@@9 ~@XEC94@@@q@ )T@9?@kAT@F@8 "CTR<R'DF***3@7@*Sa@Z@9!5? T@_5ҁ@ x`x`@4Q@" }Ah`!5Wh QQ@cL6d@d@y@ !B@!Bbx!h`HT@***S@A@9Q'@D*!G"`8U@"_qTR(@ |@IT"@8zT__ T @RRRd7@ Rr @! ?qTARV<@ `8_Tw5_@@<@_dxqTzF @yE@y.@@yj@A'S@A@AS@@'@ @@y@9R?(qT @9?qaTaR@9!x!?q"T?$q RR$BzTAR @9 R!x!?$q$Bz!y @y!ҺG@W@@9T#@G@/@9qaTvcR+@ym* @9R?0qAT @9?0qTaRZ@AT)SSO DkBc@zx"@9HDCE$@@c~}  @***@h!,@9R_(qT @9_qT1@9R?0qT @9?qTaR(@9!x!?qT?$q RR$Bz!TAR@9Ax!LQ!?qTR_qT @9?qaTaR}} * G@@9 ~$@9R?0qT @9?(qATaR@9R?0qT @9?q!TaR @9 R!x!?$q$Bz!AR@9Ax!LQ!?qi#TR_qaT @9?qTaR@9R?0qAT @9?0qTaR@9 9~@9R?0qT @9?qATaR+3+@3@@9BxBQB_qT$ (šV6X@9R?0qT @9?q!TaR+3+@3@{@9!x!?qT?$q RR$BzTAR+3+@3@\K!K@aB_,@`R2+3o+@3@e@9*G8 @!@c@ @9 R!x!?$q$Bz!k@9R?0qAT @9? qTaRb !Gj*?@@@||1 T`@c|@@{T` @xc`{ @Rr! ?q #TBR@9@@9R?0qAT @9?0qTaR2@9R?0q!T @9?qTaR)@9R?0qT @9?qTaR *@K@_@`<#@9R?0qT @9?0qATaR @9R?0qT @9? q!TaR*[A@9@9Ax!LQ!?qITR_qT @9?qaTaR @9 R!x!?$q$Bz!AR@9R?0qAT @9?(qTaR@9R?0q!T @9?(qTaR!RA9A @ _"AR@9R?qT @9Ax!LQ!?qT_qT@9?qaTRD@9R?qaT @9!x!?8qTaR@9R?0qT @9? qTaR%R**@Bc/@XE@9#@9@9! 4qRd@zT@ ~!CEVO/@%c˥ByC@By@9Ax!LQ!?q TR_qAT @9?qTaRj;R[/@@9 ~!@/#@e@9R?qT @9!x!?8qATaRM@9R?qT @9Ax!LQ!?qT_qT@9?q!TR<R@9?qTRaR3R1_ce@*@aR';@B@! R=(@ @JRJg * T  ;s@!_@`<AR*Q@f@9?q@ T?qT?$qTR?8q!T @9?8qT@9?qaTRRq`TR(qAT@9?qT @9!x!?8qATaR@9?qTR{@9R?qT @9!x!LQ!?q(TaRR @9?4qTR?8qT@9?qTR @9?0qTR?4qT@9?q!TR @9R?0qaT@9?LqTR@9?q@TRI@9? q T?LqTRB@9?8q TR@9?0qT?4qTR@9?0qT?4qTR/@9RRq!@9RRq!@9RRB_!y@9?q TR@9!?TRRlRj@9"x_q9T?qR$Bza7T @9?4q5TR?8qT@9?qTRW @9?TqTR @9?TqTR @9?Xq}T@9?qA}TRE@9?qTR@9RR?q$Dz!x$BzTR6R4R @9R! ?qzT@9?8qyT@9?qAyTR%@9?qT?qTR?qxT @9?TqwT@9?qAwTR@9"@@9$T.':RR+SCЀ!99uRK 'q?#qT?+qT&@-.@c˧@!Z@#MT q@ @B$`q? H!T%C? !R!@#&@@c "@.@@ˣZ@! - T @YR_@ˠZW_`T_ TC@xaLRk!T;R_TA@9?qAT{R@Ѐ!99K"؂R! @9?qAT @9!?$T@8!?$T@"&@.@"@_gTCT?q_G*! '#@Ѐ!99K"ނR6@"Rh!8YRB9B9 Ҥ:@%K@#%:|@_@ hT@!R`nRg@$xs R RCЀ!99bRKXWCЀ!99"RKO*/@S6S@`5W@! # #@O /"@O@K@DF # GCNT/@"@@x!@o5@9?|qLT#@Aa88Ta:сhT@Ѐ!99KقRVT+@Ѐ!99DKbRZTDYT琀!)*#@cT`:Ҡ@!|@q`1F`$?kT4@K?q,T D@.@!@XTWT?q*!@*#@Ѐ!99KBRЀ!9`"R@Ѐ!99KB>R@Ѐ!99KBCR@ &@c@".@!ˢ@o@TT_q*#CЀ!99/RK@c T`:Ҡ@q0;@@KC"@3`$|LT#@KT8?@TR R# ?,ETETBT?T_8!x!?qET5*@ M4C@/@c@9?qT?qaT @9#qT#xq$NzaT@9?8qT@9?qT8R_BT( @9! !?qATC*@9dxqST?q`UT? q@TT?$qVT?(q6T?LqNT?PqMT!\QR?j`LTq@JT(q T8q@oT<q mTTqaT@9?qT?q@T?qT @9?Tq!T@9?qT@9?qMT?qLT?$qKT?8qT @9?8q!T@9?qT @9?TqAT@9?q#x$LzdKzT @9?XqT@9?qT@9#xqT?q$GzGT?qaT @9?0qT?4qT@9dxq@HT?qIT? qHT?$q`JT?(q+T?Lq@CT?Pq BT!\QR?j@TqcT(qT@9?q!T @9!x!?8qTo@9? qT@9?0q %T?4qaT@9?qTcanR$x R@CCK@>*cA*/@*CЀ!99ⶃRK@cmT`:Ҡ@!|@q &!RRR+S<`$Ѐ!9`BCRsҬJCЀ!99BdRKdCЀ!99`RK\ҘCЀ!99"@cDR@9C@o@Aha8~@9!?(T<@c!T`:Ҡ@!1q 9@9?0qT @9?0qaT&RGgs- LqT!Q!?LqT#a$7qNT(qMT8qKT<q@JTTq(TqFTR*@9!x!?qT?LqaT@9!x!LQ!?qT @9!x!?q!T@9!x!?$q$DzaT "R낾T˷@9!x!Q!?qTa(A7!DF!`8@!$G?q TanR$x@9?qT?$qT@9?4q!T @9?qT@9?8qaT@9?qTȇ@9?q$GzT?qT@9?0qaT @9? qT@9?0qT?4qaT@9?qT@9?0qT @9? q$RzT@9!?hT? T@9!x!?qaT@9!x!?qT@9!x!?$q$OzT@9?qT @9ax!LQ!?qTqT@9?qTw@9?0qT @9?(qTp@9?0q!T @9? qTi@9ax!LQ!?qiTqT @9?qAT] @9?4qT @9?0qaT@9? qT?LqTP @9?0q!T@9@9?(qT @9?q!TD@9?0qT @9?qAT=@9!x!Q!?qhT(6@9?0qT @9?qAT-Х`$8R0E T`TT@9 ޿#xfQcQdq(ƚfR jR*rT   q@T! ?LqT `T T TT@9!x!?q T?LqT@9!x!LQ!?qT@@9xaq`~T#  qC R$Cz}T Lq }T!Q!?LqT#a$!|7q&T(q%T8qT<qTTqT@9ldqT!῿ (y6R@9xaqxT#  qC R$Cz xT LqwT!Q!?LqT#a$v7q@!T(q` T8q@T<qT@9R$qCzx?q*xt5@9#R8q@9x?q@sTx?qq*xr5@9dxqT?q`T? q@T?$qT?(qT?LqT?PqT!\QR?j`Tq@T(qT8qT<q!wT@9?qT?q!T @9?0qT@9 @9?qvT @9i@9#xqT?q$GzT?qtT @9@9#xqT?q$GzT?qAsT @9?4qrT@ &@c@".@!ˢ@o@H{TyTC!99B2RK@!99KbBRx"@!9``RqЁ`!9bBRj!9`BdRd @9bxBQB_`q(T$D޿(š7c@R!HGD@9B@9!xd!jT_|qT_@#AT!8R˼BDFAa8@!$G?q TanR$xR˯"R˫"b _ q Tc LqT@9qTqT @9?qZTx?qq*Y5 @9R q YTR@9RxqAz$q*W5@9x?qWTqRAzq*V5@9qUTR@9qTTR{CBS[cs*@5E9 4 RRۅa6@`@!Q yaRRaC? TkR;R@9qYzT@*x7@! 7 r TkEB@@B! T{ASB[CcDsF_! @*`z@$qlT`z*rTaCTkEWqT@@!*R[a6@b@!BQ"yw:@!XE!C9!\`6@~ӂRh!8`6@9`6@yw: R`9Ҡ@2kUd@cmT`:`@!|@q9GХ`${ BS [ Ac k @@O+a/+.T 37@q!TBRu@7@@;S@;=< R!@Ⴧ<9v]#<)+T@sKG :#'@9_q` T_qT A š TyR_(q T @b `6KG@|SAFC b@8!*! b!|@:`6_TAR@'@ @`#@!!CR";sO6 ;@!BO@"@cҁ"T{JSK[LcMkN_ARWT@@@TsO3*@9 @bg7#@[RKGT`ѿ T`@9 x`_ j T{@9a@9@9@9@0@9?q`TARsOCR"ҁ!&+@+@!h@@9(qTAR?q` ThT?qT;@"Ru?qAT;@Ru7?qT;@"Ru.R  jTKG b@8`b? jT_qT_(qbSTg6a@9KG#|S F$ a@8c* a|@`6_T>yR(`@z @@7@/z]/@.?qT;@RuT;@sO g;CR! %B ARRd #jTKG a@8`a jT?qT$JzaT_ T_ T@@`CRBҁ! :#@c!CR!"AR/d/@1@@@?T>R*!9:bRs*CR! %B  {CƀBc@'@@@@C4[!@@*Ha8?qT[G@S@SFB'@@B!)T{EcH_cSBxc@ @@@@T@@@-T @4`#$k 9c$Ra @R#@9Rq$R@"@#@` Ra @?q T!Qa @@?@@kIW 5@R@[G@b4@SF[Gғ@[GkIsJ!`M@!`H@?@@bR c @_B@Ѐ`>}a @ {ER$ROS`e9dyc` =`b@9B2b9Aq!a*SA{¨_{BS[cks'@9@qhT|@![E!'! @9A5@y![Eq$Rq Bz@9ss~ӁT@ ~sD@98R;[E `}~RR`k`8 qTq?j@T@y4@yA ?kT痟qq*4RTy@9?qhTa! @94@ 4 @9 `}~`k`8@T4@9qq*4@*߼qT` @94@E4%ߨqq*4@% qTq` Tq Tq`Tq@TqAT߰q`Tq@.T9@9 xq?q\jTB@@BATR{BSC[DcEkFsG_@9@9ߤq!T [E @9BB~ӓ@9ss~ys@9H4q@9\z T@9! "!@)@9?q$\z!T@ .@9 [E a}~ha8hq@9\zT@9! D8@9@)?q$\z T"D@8qTkT"[EB*B@9BB~4@ss~@9qATR9q`T߸q`Tq!T`5D@8Qh`8qAT@9qTR9 @9@9@yI߸qT9@9R@y_q_q *@9 ~ qATqT߸q@#T߰qaTR9?q?q*@5@B@{F@8{B4?q+Tz_TRG `b@9 T@xq@Tq T q#T$q%T(qFTLqLTPq:Tc\QRjaNT`@90q T` @9(qa Tuҁ@"@B@{5?q+T?q@T Qq◟b_iT`a@9'R%R& RT  xqTLqTa@9!x!LQ!?qTC!Lq-T@s_T`a@9TT xqTa@9!x!Q!?qT(6 s@ QVT T @TT b8sT?q'T9@@!@xq@Tq!T q;T$q'T(q FTLqNTPq [Tc\QRjST`@90qT` @9(qATu`@9(qT` @9uq!T Quq)T@99Q RTb8sTb@9B?7s@9qT@9q"QHe8qaT@9qTR?|qT@9QqTs9yCx`qTq`/T qT$q@<T(qATLq`NTPqUT\QRjWT`@90qT` @9(q!Tuү`@9xqT$q RUCzTt4 @9q TR9a@9!x!?q(T?$q$Dz`TsADxq+TqT q3T$q<T(qFTLq@JTPqYTc\QRjWT`@90qT` @9(q!Tuw`@90qT` @9uqT?`@9(qT` @9uqT7@9`@90qAT` @9uqT-CxdqTLqTc@9cxcLQcq(TO@ 5@9 IATCG `@9X`887q`T8q@!TXq#Tq,TqT7@aB!_h 08sT:@9RcTTs`T`@9|qaTR9 R9`@9xq T$q RUCzT` @9 Rx$qBz`@9(q!T` @9uqTD@8?k9@ `@9xLqT@9QqIT9`@90qaT` @9uqT`@90qaT` @9uqT`@9xq'T$q RUCzTc@9cxcQcqT$ (ÚC7`@90qT` @9u q T` @9 Rx$qBz`@9q;T @DRU @9r@B_TqTq TqT0qT8qTq,Tq`;Tq <T 9LWb@9B_ᗟ5 qT`@9|qaT R9b@9BB_q(T"(š7qRBz!Tb@9_qT`@9$qa4`@90q!T` @9u0qT$a @9!x!?$q$DzTcA`@9xqT$q RUCz T`@90qT` @9uq Tc@9(qTc @9q T`@9x@q4c@9`xLQq Tq!T` @9uqT`@9q4_q T_(q@!T_8q`&T_<q@.T_Tq`4T_qaT`@9qQTqT` @9qTxRqCzT`@98qAT`@9qTb@9_q4lc@90qTc @9q T`@90qT` @9u0q T`@90qT` @9uq TUb@9_qT_qT_q`(T_qaT` @9 ?qTxR?qRCz$BzT` @9 Rx$qBzb@9_qA4.`@90qT` @9u0q`Tz`@90qT` @9qTuҢc@9`xLQq)TqAT` @9qTuҕa@9!x!?pq4 ` @9 Rx$qBz`@9qATc @9`xLQqI.TqAT`@9qTu_qT_(q`/T_8q,T_<q@*T_TqJT_q!T`@9q@TTqT` @9qTxRqCzaT`@98qT`@9qTS`@90qT` @90qTuKc@9`xLQq TqaT` @9qTu>`@90q!T` @9 qTu4c@9`xLQqTqT` @9q!Tu'b@9_qTa @9 ?xqDzHTa @9 q?xq* 5r`@90q!T` @9 qTu U `@9qT` @9x8qATu_qT_(q`T_8qT_<q`%T_TqT`@9qDTqCTqT` @9TqT`@9q!TU` @9t@qT=`@9xq@TqRCzT` @94qIT8qAT`@9qT` @9Q!?qDzhTP_qT_(qT`@9qT` @9x8qTuҶ`@90qaT` @9 qTuҮb@9_qTa @9!?T"b@9_qTa @9!?T`@9qTq@T$q +T8qT` @98qAT`@9qTҍa @9`!Q"_q(0R5UҀ`@9qTc @9`xLQq3TqT`@9qATp*` R=`@9q@$Tq`"TqT` @9Tq!T`@9qT\` @90q!T`@9LqTT`@9xqTqRCz!T` @94q -T8qT`@9qTB`@9qT` @9x8qATu8`@9qTc @9`xLQq TqT`@9qAT(q~T` @90q`#T4q!~T`@9q}T`@9q.Tq@-T$q+T8qa|T` @98q|T`@9q{T u `@9xq 0TqRCzAT` @94q-T8qyT`@9q!yT`@9qxT` @9x8qwTu`@9qAwT` @9xLQqvTu` @98quT`@9quTu` @90q T4qatT`@9qtT`@9q@ TqT$qT8qrT` @98qArT`@9qqTҽ`@9 qTLqqT`@90q@T4qTұ` @94qT8qoT`@9q!oTҧc@9q`@9qmTҜb@9B_`@90q T4qlT`@9qkTҋ` @90q T4qjT`@9qajTҁ` @9R qiT`@98q!iT`@9qhTtqAhT` @94qgT`@9qgTj` @98qfT`@9qfTb` @90qeT`@9LqeTZ`@9dTT` @9Tq!dT`@9eRRqxEzCz!cTG` @9XqbT`@9q!bT?` @94qT8qAaT`@9q`T5`@9LqA`T0`@9q_T`@98qT(q^T` @94qa^T`@9q^T`*= R`@9qTqTq!\T` @9Tq[T`@9qa[T `@9 qZT`@90qT4q!ZT`@9qYT` @9Tq!YT`@9RRqxEzCz!XT` @9XqWT`@9q!WT`@9hVT`@9qUTu` @9TqTT`@9eRRqxEzCzST` @9XqAST`@9qRT` @9R qRT`@98qQT`@9qAQTҸ` @94q@T8qaPT`@9qPTҮ` @90qT4q!OT`@9qNTҤ` @90q!NT`@9LqMTҜ`@9q!MTҗ`@9LqLTҒ`@9qKTҍ`@9qAKT`@98q T҅` @98qAJT`@9qIT}c@9qwc@9qq{S[c*ksC BO:@@G#L9*?{AWA@9B+3SC?qaT@@@SP6@@F+O RYc`9)=)5@@9qTXE\D9!4@"4"@9_q@Tc  *XE[{_g7B@9_q9jAT @sQbB)j@`@?@R9 4vb@95A|~_qCRXEDCzha8qj\T?@N@*@9_q"TAQ!?qhT !!ATQJ  *D}@XE@}~& h`8q -TE}SC !G!e8!(:I6qTTq@TqGT+@rT+@ @P6@ @ $@9#@#AqAT@9@9 !4_qRDAzT!@! !~[@'@q"'#@7@?T!_닂T`O@@ S@'@S@"+@(AjAT@q,PTq{@AzOT@ @x2 @P`7@p6@ @2 `@`7D? WT Da@?kVT BGA@BT#@C SA[BcCkDsE{ƨ__]q ET! `@(@ x!}@bIt7@Zx`9x`@ 7S@[@*@5@`@07}bA |@`@|>5*RsGjs@@G@!R`A! b@ Ch`8!*Ah 8 0T `@@@Ԝ@t@9?qTBXEA!! @9aD5@y!?qb)b@94s**b9+@r!T!@9?qTXE! @9D5 @y: qZ RS[D}@XE* @9@ 4 @4 @9 k_aq%*L5XE@9Z: OZ*=!@9?qTXE! @9 4 @3@#@ 4 '+@9?qHTBXEA!! @9!4@_q:Z +@b*!!2 c9*c#1J@9 *_qTXE" @94@@Z qZt@@y @y@s**@9xqb9d@y @y3@#@5'+_qCQBD_q!R*! B@?jTa@544!@9:@549!!4h86RE`t8B(B `d8T|@IT"?T- B?@eTD@9`zdd8D9Tc;;@@(4$@:!@(T+@@SP7`@ T5D94`@2`@`#@c#?OT'@E˃c't4@ @P`N+@@rT@@9RqAz\TF@8;a@;@5@9@ TTA@9s?qTs@!HG4dT7t6?T@@9T*Ʉ@B#X@X6@@9qT`@9(p`9#X@`@9Rx`9@`X@(`X@@@+@t+9! @?q?T!Q! @+@rT Y7@@a7+@t+D!@[P7@ $qT@gP7@`6@ @94X@q@=TGr@9!29@*+@ S!t+[qT *`6_q T!(B!e8!(%6@SP7#@#+@rT@+@AX@t @9x 9@@@9q`FTTlqTdqHT@q@THQqI^T4@X@@@W@X@@+@t+Qc|@#$d8(6@P7@`7+@St+[@c *sGs@@G@:!XE|E9 4 @49 *`@* s0gt`SAs@@`SfCR,@{@@q$@T @x2 @@g6@W@X@r|@ DG@8TA@9dHT_qT_qTHGa@֟744R 9@@@9x@@9@ @ @yq@<TPqT_q T_qT_iqTqT_q +T#@yARk{T_qpTq#T_q`T `N:@94@925@#@#@P6@ @ET@R@ @9CRq@z @I`@4! @ @8 E@!99KbR$ҏ9dRTǬ7RW9AR*s@!r|Ta2A#@B'@@/@"A @G@TdT"q!**%E@!99KR&I@ \@!9`_RE@!99KXR$ R=5 뀜Tc˸E@!99KRE@!99K_R@U##R$ia#!9`ZRc#@!9`B]RsE@9!9KB]RjRa RD0E@!99KRWҖEC!99ҁRKL*@yh8ҥҪEC!99mRK9|o@@ B'@@/@!G @B@A@h T T_q*!#D@B'@@/@!TdT?q*! >#I@\CL@@E@!99KgRvqTBDE@@/@BB#CB@TT'_q**!@<*E@!99KpREC!99[RK$ҟ@@ D@B'@@/@!A@h T$ T?q*!`#rf@ @=*4L q"TARҀ @xaB@k {T!?KTz@@A@!7C @T@A@!AA@x5@ @ *v3@ @Y{y@?qT!Q{9@5D%`$?fEC!99"rRKVҟ @@7qT @?qT!Q A#@@@@G@!B#@!XEBB#U;@3F9s#A7@~ Rs?h 8A7@!7@A7@!"9A7@ yS; A#@`@ `$_"]@a@A`@X#@,T qTBR;@RC@_qC@ D'@cxC_%RRU@ARA+@UA'*(@6@@2@u`@raT<E@!99K"XRTT'* *! * *аHTT' * *! *" RE@!99KWR$E@!99KBWR$R!"!FBC @B@ _ T!!A!@4x @ 2TW@@* "a@@C @t`@9!Cd@!?IT @}ӆf@ he?ITd@c_TdL;@qAhTB7@R@@~Bp2@C9B7@Aha8!2Ah 83N6% R=@GT`:! 92Ғ##@E@!99KZRҽ%`$EC!99"ׁRKy?@ Q@ ?ND@A'@@#B/@@@B_TCTq_G*#?@4A@?k-T@_@A@b?.EC!99ӁRKA@?q͙TB@?@_kTB_@@@Bc?kTA R*RΩA7@~;h 8F0!E@!99KBR) ?+rTC@{@_ TA DD@@/@!A@ TDT?q*!`5#@#@9?qT"@B_ T?qTR R^A#@?@@#! RVA#@ U#ARi@@B?r@TC@{@_T?@B@# "RU#EC!99bRKNҶ҅E@!99KeR@[EC!99BRK5$uD@A'@@#B/@@@B_TCdTq_G*#EC!99؁RK*7r*T Rʨ*-r)T_9;R9R' R@9&I@I R! r?k TAR%!T @ @@F7d@@TA DD@@/@!A#"A@TT?q*!@;#EC!99bERK! @9`:a@G@9Y#@GAR X;@Ya@ raT@7@@9?q!T!B;@!XE!F9!!_!T@@7! @?qT!Q! @G@X;@GA DD@@/@!A@hT$T?q*!:#wV-SEC!99"BRKjE@!99K¹R]f W @!4!L ?qTAR @3?qT!Q 3@@37 @`F6A#@!A#}A#@ _8tqATI@\@@@D@!B'@A#@/@"A@(TT?q*!<#D@#A'@C#@/@aA@TDT?q*!#D@cT`:@@!|@q6E@!99KMR%Х`$@@#c!:"Rea*A@*!@7x 9R EC!99jRK$҆ID@c-T`:@@!|@q6W9`@2`%Х`$D@c-T`:@@!|@q@@ @TEC!99bPRKiE@!99KfR$Ҁ%Х`$9} {(S*/[*c*k B@9 OART98#C@y q@!T"5@ T"4@`@*5*? @%X6 @a@!? q%T,T q)TRG@,@)C@o*J- $E@ 8@7@)9@-4š@RB@@kTC@|{d`h`@^Tha8 q(TT/!uv&G!(Ds2k C3 A95!@@ c_qtS_kT"@!?(qATC @.aT@#0SkUTR=0@9@?(qAT @@5@*4;@*5k@ R/@`$5G@~ߒߞC@@9܎xqZ&)v_@_Fߒ*B@C BBsB@RBH@@@B@@@PAy"3PyU6@@@@@!@$f *R@"z6ߖj*9:! '@@a+7j@nU(606Z@BK#|@N@?ql&T`NR@`R^@`|^b@`xb@@?q&T!QS@FR @@y? @aTˆ9|B p7{535C@y q T@eR ՠ@@y ?qsp6@E `~}aRC@y q T@@@yR" _qTw6@@@y" _qAT@A @@y*!? qTt R9` @` BA@BT SA[BcCkD{ƨ_C@y q@T@@@yw6@@4@ @G@C@,@@6!!$E!@!8@a7 6C@B 2)@*@@?#Th`8qThc8qTqT! @9?qaT R/z95 $E@ B?T 8@ԯ6Rš@#@@9 25Զ@sH4߶@@A5@/7@(qAT! @(@@ @ @F 4@4@K S/`{VK@S@qR@zR/@T3@|{'@h`kT @`|{@g`i` (Tc@kB@ACz@A @! @TkAT @`|{c!@' h`JkB @@Cz @@ @@T@'@@@i@'@  @?qi+T!Q t@/7a @?q T!Qa |@1!|}OڀRNB}N@!R@ڀ!}CڀRRB}@@?qTj@2n3@`4@âe R"@8_qDDzaT|@'"NR'@Rƚ@"4xR R RR*R` 9 &@kT@}{Bh`!Tke8qGzAT'8 8T@R"97 @_q?8!BS!& D C@t @E @@ '& @$Dx G@@@!@b@?AR@BC@Fi@ib@B @" b@C#jCC@"BD# CEa @$&'?qIT!Qa ! !C|D"@@T_"@;@`@7 @a? )T`@r`TP7 @7X6` @ @6@@ @@6Rr&$'AT @ @  D @@cD G%C@@@B@a@C@ F"@F%@E @@E @ @#@@ lTB@ @C@BB_T# @G@`}q/@@zTAA#Զ4&@!R"9 7 : BӁ\! @!}! !_c3T Ձ8A @T#a_c !G!!|A"T у!˅'!}! ! '֤'@ @&@U "9+$x)8@BB@CT*8`@ @T` @@9q4<$@@Q 8@@Q <2@<mT2@B@"@y>@ 5@(78 R[EO@O0@<@@@RAb|:T&5O/[``````+=@@@4`@2`@z@$qT@ @2 @@@K&06#  *B@K@D"4R R!r c9cCRZ2O@<@4@<@8@<@ @<@@<@ @<@$A @9{6@7@l`6@{@!2@,@O@4@0@?mT0@@j(76@!2@@h6@!2@@6@!2@@@!2@@A86@!2@ @2 @@@6@!2@o@4@!2@V@"@B"@@?rT@!2@ZE@9? q`T?q(dTB$c6c!&|@b@9c@9B#4?qR$Cza_T@c c~BZE~G@9hc8qrT? q@bT?qaT?qTZE|~hg8|qxT@q@Cd@zsTA4@ @2 @@q-T @QN@!`6@#@ Bxc@ @qLT[)?k@aT|@"^@RڀfB~;@Q|~qT ĊKf@Bhxbdh!!^@`x"qT@^@ @b@$@f@( fڀ@NQAAhҟT8ATBZOsb5"ג@/ҟ@062O[``````+= RR Cc9cRH1COw64Rx A@9?qhbT[E#|@7! @9$=4B(@_q"_B[E*RRRRRR?q`T  @y?kT?q@T?lq@T?q@Ti~hi8qT?qhTB@9B~hb8b4# b@9a@9B5[@9?q[T!#|@B @94@_q"B*?qT# <Rb@9a@9BA4@9 ~@@y:Rb@9c@9B4?q$HzT@ ~@$R%RI@9?qTˀB9qT @?qT R**q@ T#R[ERc(BR q 'T!)C* aa8!(A<7ay? q%T q'T?q)T|4~@55?q,TAC9IC9!4 @9) )~! )@9!}~Aha8?@q!+T@A@?r*T˒@k*h7?Aq! *!2A @9J)A@9J @9! 4?q$HzA$T@ ~ [ @9 *!}~Kha8qT"AQ#RBDa B@?jTRZR j%T:Zc$ҳ_wRK 9_ARwARKAR@K@[@,B@d4R!R r@*c c9R?0O@q1T<RRR2(@6@>5@@@"<@<4_A!@!@cA{A3T@gc34c4@A36Ē@2P76@@ @D;6d@!<@ _T@F@<@8@!6@ @ ѵ"\-5@ @@9@QqHT?@<@@ @"@@"A#A?@9@|~@ !<@}"B@"<@!<@"B @"4@!<@"B@"8@!<@"B@",@!<@ @ 0@T@?rT!2@<@"4@5@! 2@<@A4@4!@!@94@! 2@Q@ @@K@!aya!(@"!)C+ aa8!(6@@? qA@! *A @9I*!@9) @9!4_qDHzT@9 ~@!@!2!!RR@* cc9RU/COw64R(BL@yRj`T|4~@5@o7@ @2 R@'$&@`@u6U '$&@a? (uTwT\ARRD@t@ T@@3R`@@t4D 7F_6 @ @AF6@@ @E6 C@$E@8@D6R#|@"NRR"4x` 9'$&\# ^'RK@b4@9fc8@9Bc4@9c c~B@@`@,@!2@:@}ӕR@@"|~&|@chb8qT@ @2 @9"55@ @2 @@`4A @9 7@LrAT@<@J9@5SAOAT@`5J@?T@ @ 2 b@ @$@(@?@ | |RaR?|}LaR9wAc@c@?T~<}B_ @!<@ RBR)S@E)@@r T"R!o*A@5@*!z!@A@@@xa@==B@@@Axa@ @x 4? qTzR d<D  'R6@4@?@R0 R=%)Q#RDc @jT?qR$CzT@qT@9qaT?q(TZE!! @9A4(@@ 4 @95B2ERB@9_(q!TC94(@B 4"B@9B5@ @2 3A8@Z!8@!RC@Ď@c T%`$@!`=q 9@9qAT@9Уҥ`:L@y*L@y"R!۲*A#@5@*!z!@A@@@xa@==B@@@Axa@ @x O~@h@9} "#*R{C@BcE@!R!!B@"@cҁT{A_z '{BS [ c *k s @? @3!RaR3@`@9q T# !;@!XE!A9!>7@~R R?h"87@!$97@!?y;u@!2{@?$qlT! {!!B?@"@cHT{HSI[JcKkLsM_RRt3@`@9qT#S@-rT#@@9qT@'@/@@MTDT?q*!#@rTC!99"RK@#ˡR@ @yTE9p2"R4@7@R!2`@9`T"R CHGed %jT#!@@9`x` j@T@HG R_ TJ_ TA_8xa_!j@TXMT@@9TqT@@9qT!sX #Cg9R@RRR/_77@/B4#@a#@8? T@#P RG@'@/@B@>T'DT_q R*! ;*tҗ@#@*RR@@@@,T q`TBR@@;@$E6"@9BGCc8cQc|@T @9A@%!5# R |qT#"4@k'@#/@a@0T&T?q*!#?*@C7"sA@VBR!!> @!RD @#WC'@E@@`@W+@A @?q T!QA `@s@@"r`)T@@; @sR#`hb8q T"_ T @@@`T3@8# T(!CR!>"@A@//B#@CRb/#@CRB'@CR"/B#@@Р!99KRB@@ D@!!ҁ`B0@cB$@Rd0r?@?@?@" @  7@2 @#@_q;T;@@ @#'@/@b@hTDT_q*#LCР!99"RKDy*@*@`R! B* RcGdb8$q`TR!(! !|@T@8"zTY?Rޛ Ra@@ҀR@@u*#@R@Rz@` @Р!99KR#@@#'@/@ @hTT?q*!#@4BG@`8!_@1RD@/@B@TTCР!99RK CР!99➂RKQ{Ҕ@cT`:Ҁ@!|@q7`$@R!L${[VSck*sC["@@`B':@@)[ @9q`cTTq TTqeTqa8T)*AR[@@!6C?T@ !22 @4`BA@BTCSA[BcCkDsE{ƨ_pq[T)TxqT@! D!6!XE:@!4@9!6@~cR[h!86@96@y:R_"@@9?qT8,"@@@9?q iTT?qmT?q*TΗ@ R*?jT;Rb@ *"!@*`_k!gT@245@7R>z@$qlTz"@@9?q T?qT"Q?qB@AzIT?qT@rT"@ @"&@.@ @(TT?q*!`7#q MTq"T|@@7!XE:@!A9!6@~Rh!86@96@y:@z@2[?$qlT!zRٖ"@@9?qaT6@!!@9?qT@ґr!TDE9c 4@aˠ.@"@1T뤈T?q*!$#bqT@@'7@&@.@!@~T T?q*!#IlqTE9:'R"" *RR[@*6 "@@9tqrT@"&@.@Iˡ@ TDT?q*!`1#!XE:@!$@9!~CR6@!XE:@!A9!~#R6@g?q T@r` Tw@RO{@*@T_Ts@"*k Ta R=&@m"@.@!ˤ@Z@MT@ @?q[T *R!2&@""@.@ˢ@!Z@# T @_@ˠZ6@!XE!4F9!yj@`g@ aQHqHT!" ! ?!gT qTHqjT"@_`26@ Cq !@':@y6@~"R RCh!8RW*RD?6@@79[6@yFA: @9"@qEz@Sc6|SrS@@Rg R+*/c)@TC@_Tc*<g@9_tqTTBQB_qT!Ҁ#š aT_qTc@@9:87c@9_Rn@c@?)T@9bQqB@Az !Tq TR@ 6_@C$GqTHT!HG!`!6zaQ q!a0!!+@5W@|sTz?L_!jvTTУ@BHD!EBh`8!h`8_kS@!SyAT?d(T@@8g@Z  5@c@ B T@/_ T+@qD@T@`A4_@? AT@?KT ڢRRr|bW@@KcT@,_@?iTZ Rc_q`TIT_q@T_qT"@TE9`4&@.@a˥@Z@ T@ @q))T$*R!.&@c@#.@@BˣZ@!"_ T @_A끀!ˡZ@9E_xq!T*Y'@9B!O[@~Ӻ 6@R9c@"8" @9q(T!!X`xbA! ֤@)&@".@!@눕T넳T?q*!#2"@@94@@:@~Ӏ6!XE!T@9!6@R[h:86@96@y:$rT *c!'t+@q*T+@qT@ 6s@qw@@zA8T+@qT6@+@?q T+@Rc@_qd@zA+ @9R96@"@@9qCzTZ:@!Ң@:46@R@9?q$CzT @9Ga8@_hTg@"2c@*"1@;R;j!T!:R!]4z@$qT|@  zR6@~'@?h 86@!;6@!:6@_kgT!9Q"y6@ yc@;R*;jTDa$.@a˧@Z@mT@bˡ @qCɽT&*R!5&@!"@.@ˤ@cZ@a? T @ R@_B 낀BˢZc@!XE!D@9!CR6@5@!4R@Eb8e+ e8@_9T?T c?7Te@9ze8BBD9_TB6a! )T@ 4{@T&@Bc@.@!ˢ@Z@-T?@$  HK!D_B0 MG@k"8C@TK@ccb0C;C@h"8aR&@c@.@!˥@Z@͸T@ @q_@8T$* R&@c@.@ˢ@!Z@#mT @_@ˠZ;R5R:RRW@Q_ȱT_@@A8g@Zc@ R*@ qc*:R!{Ӛc@6@!$G?qTc@+@?qaRA+g @qAT! @9 ?qTR?qT <RҠ"CckrTD@.@q"@9!BѤ@ @_$HOTYTXT琀!*#fE9'R"" *RR/@[@!/7"@Ѡ"  ?T@9?qT[@@й:@:8~@7!XE!d@9!*6@Rh886@96@y:@[@"@C!99RK!bRU)! *@&@.@@눧TT?q*!@!#@T@c T`:Ҡ@!+q 9@й:@:8~7!XE!D@9!֔R6@@@:@~a7!XE!$@9!Ĕ6@BR!R[@h986@96@y:6@h98"@sA4@) &@".@!@hTT?q*! #:@!XE!tC9!6@~R[h!8@6@96@y:@"@!2?:@!XE!tB9!w6@~R[h!8@6@96@y:@"@!2$@6@) &@".@!@TdT?q*!`#[E9 "*r@@T[@R@@@@$G!2 byT @9qyTR8@93;^@* "! @9R3@HG;@kad _+jT J"A@9ba"j`THGR Tџ `T_8xb"j@T T ?q TT?qT?qAT_TA@9?qT*"&5E9p!2$RC4@7@ !22:R@"&@.@˥@(T$ T#˿q!!**ߚc@@*`_qL;T"7:@ZE!DD9!6@~ӇR*h$86@96@y:6@h$8ޔr TE9`Y5aRE946@RyZE:@C9!6@~ӇR*h%86@96@y:rT2@z@!2$qTxSzc@2"@&@.@!lT[T_q*!1#h R9`@2`!?y6@ yc@9_q@TT_qTIT_qT T_qT@ E9CqcRCrC@ To@)&@(c@.@˥@!Z@#'T@ @q@? HTm+?  !*!#g&@"%c@.@ˢ@!Z@# $T @_@_@ˠZZ@[T_8d([TE9 57@IT_8dT_8pqT&@.@!ˤ@Z@WT@ @?q(mT#*R!,&@c@#m.@@!ˣZ@BA? lT @?!XT_q TR!HG!b!j!ST!!?dT @9?q RT&@ .@c˥@!Z@#PT@ @qD?TK? !*R!@+&@c@$e.@@!ˤZ@BA? dT @?!a!ˡZ@9]CQcqiTR!HG!b!jTR_qT_ cP_qTiT_qAT@_ cF_q(T_qTCc_qT T @9B_$iTCc/kr/HTo@{@i Tc@ cE R*RGRoҀc@o@@bC 76`ha8K$TRUrT/H&@K@C.@cˤ@Z@~T@R@qRCc@&@!.@#ˡ @@@qTC@$* R!#I&@cc@.@@ˣZ@! LT_@@_kTBB5 낝TR!HG!@!jT_qT_qTAQ#䙐\c T_qkT_8q`hTR!HG!b!j@T_qT*cb_qTE_q`T_qiT_q T>_qT_qAT`_ c:h;8a R*ҒrT"@@9C!99ɂRKf9RZE:@@9!6@~*h%86@96@y:rT RՑC9:@!d6@~ӧR*h%86@96@y:rT9`@2`qTTRz@$qT zsA.@cˤ@Z@T@ @?q?T*R!,w&@b"@.@@ˢZ@ ?-T @? `ˠZ*s@"k.T@ R*@jTCURCUr_kPTc@_qllT@*`TCA`*`SC!99ɂRKC!99sRK@9+@ Rc@ C6@ c@6@?q+@RA+a R<R86@aRy*i T TIT$ TT TTT T@TT TITp`TT TT҃TCӃTӃT)T#%_`FT  A@7 @_@#$GA7qbR!RA+C!99´RK&"C!99błRK%?pӃ?"Rb*SB5@@F5R+?/qi)TRyR _q!XE:@!9!@9!R6@~[@?h 86@!996@!?y:6@;h 8"@+@q`(T@'4_@i%T@+@B$GCR?qRDDzc@#jg@W@C@$T@"!jc@cW @*$G?qT+@AQ!?qhT[@6@Ҕ~!XE!@9c8@9_qT@'@ !!@@?T'vS*W!C@_(T6@CRR#9@R+6@y6@@9qdDz $@/c@aR+<R@BT @9qZTqaRAzaT! "Rq!T! @9RHGxa" !jT "_8xa_!j`TR [!"@@9?qT&@.@`˥@ Z@mT@ @_qqT$*R! 4R&@"@.@@ˣZ@! T @_@ˠZ^Ҙ!XE!T@9!aR6@7@~rCT D@.@!""ˡ@TTC!99RKT+@qT?pӃ?a*SA4S*9 @"&@.@"@(TDHT'_q *!%*3R?#q7T?'qT RW@A?@"(T@ d!A8g@Z:W@@HT_@S@446@AR+!@?y!Rw!T!@!.6 #@!T!DF `8Cckpr@To@{@VT"@@9T@@8$T?klT@qMPT@kT"&@.@˧ @@@TT?q*!#C!99RK@9R?q$Bza/T @9S@-5!R9!XE!4@9!6@aR[@h986@96@y:"@DE9 "*rT7@"@"c+@qTS@4R+_@O_ cT cCc @9CrC@Tc@o@B9 b&@#.@˥@!Z@#-T@ @q@? h:TCeC!99B6RKJ_ c$R+~#'˷@ E9CqcRCjrC@To@"&@c@.@˥@!Z@#ͅT@ @q@? h3TC^C!99b0RK _ c rxT@c TХ`:Ҡ@!|@q`?qAT_ATA@9?qAATR$@kT^@y"Y7@k T@qm Tkl T&@.@˧ @@@TETC!99RK D@.@!""ˡ@HT$6T?q*!7# Rp:@!XE!t@9!6@~R[h!8@6@96@y:@"@!2JC!99ӂRK@!R~! R@6$G|S?qDTrADT?q!(@*[@~_q@Yz>T6@@9(qaT R9@c2R R9R_@D@Q76@gu@&@.@B@hTD3T'_q**! ;*LR!x+?Lq T_@!z?LTR+J@9+@qT+@qS@@zT6@!R+CC!99тRK@:@!XE!F9!6@~c R[h!8@6@96@y:@"@!2 R"GC!99΂RK@!99KRBˡR@ '" @9RHGxbb ?#jT@8xa_!jT@9?qDTR@9!?$)T@뢱T`Ro@{@T*k@ @9RHGxbC ?"jT@8xa!jTT@"&@.@@DT$)T'_q*B'!'*@&@".@b@T0T'_q**!<*$YCcDR]c@sMIDF3 D@.@!@T$"T?q*!@)#\+@_q`T!RSgsg@"g@&@".@a@ȋTZT@!99KBR;@B_8Bx_Lqs@AsS@!SC@*k@$T$"@@9$ TKk T &<@q@@zT85`d#YRLC`o'7?q7@RF98lARK?qT@` @c9Rs?q`T3@7B@a@*r!TU55R _T AgT@@$Gq`Ta5TH@9R@zT3R a q!XE'@!9T;@!@9@!A7@~ӂ?h 8A7@!99A7@!?yB;A7@7h 8@@?qT!Q@@@?qT!Q#"BqT$QK@?{qT@@'@C@@?qiT!Q@@?qIT!QC@+@qc@q$@z@j@T@O@T@?? T~TA@!$G$Az@z ~Tb@끓@@`$F9C$F9F9kT_qhTC@KBKAC"kT?CkT?CkC@R6S*C+@@x/7*$@k`Ts@`6@@J@<Ys4?KqsT*@@4+@Ra Ry R@ct @ 5qLz T@dFaH@9H4S97@@#{3T5Q*? qOTXaxa AT5RBDD@@/@BB@yTVT_q* ##6{@S4;EC!99ńRK#yo{@!T~TT`D@,rTV@{@&GӟqBRRc{@?T@'A 47@T#@7g@{ S7@#dFaa3P5{@{@@4xH:T *`" j R@R"R9CDH"8H 8Ah@/@aG@B[@TO@H @bC@qkTO@!R!B'@i@#@A/@B@!@[@#hT@ @{@_@@[?@R@R"@@ @!@9? @T@@?qiaT!QTR@TEC!99bRK?#xG@@$\T@q@@zTRTb@@@A@9C@Tc @7} `_)T54C@qd`!@C@Fc28EcxaCc@B @2@cb*!@@R@@?qST!QEC!99RK"_f@@a3@R$C@9@  T` @(*} xaT*4?q(T!@!#T?qhTF#%qTcJ**Tf@ R@aᗟ!**4c!RcAcu8! AVTt*B7@~5*Ah 8`@vv4 !*@5`@V4o6Zd`RFA8Exa@;'~i!@R@'@@?qiNT!Ql4@a;@!XEJ T;@|!SS!@9!LA7@~ӂ?h 8A7@!39A7@!?yB;A7@6h 8f4a@ @6RZtY@ @@ !@9C T @!`EAxa_8TRCVc7'7@R'@41P@R@r@@(TV@i&T4&GӟqTqRR5@@?q)T!Q5c@4E@9$KA9ƄR!!@9? B T@Axa?%T@HVeHG@t6C D{@/@bD@B[@덍TO@|*^A D@/@G@"B@A @_q)xT&O@*!R!A'@@#@B/@C@B@[@D{@뭈T@ @`@[=#UcTeHG Rb!jbT~bT@CDB4cF@E@@/@hATD4T'q!*!*e*RHG!u!jTQ? qT Xaxa F@`5$T$|TdTd)|TdTdi{TC D8@/@cD@B[@M}TA@G @?q6T!!@*R}B'@5@#@A/@B@!@[@#3T@ @{@_@@[C@R *CBC@b`fCD@/@cD@A[@MTA@G @?qT*R!AB'@"@#@A/@B@!@[@# T@ @_@@[{@!qT9!9`B(R R{ZT#@A9CB9q cA@!rTA DD@@/@!B@@(T%TEC!99RK B{4Rhұ@C'@@#@A/@E@!@[@#TD@H @q[A?hTC?*!!!#B'@"@#@A/@B@!@[@# T@ @_@@[{@@$EC!99bRKj "{RREC!99B(RKW !9`5RQ RR*+)KARR*$ Ҵ F9F9_kTB7@~YRCAh 8F{@ˣA7@cR~yRC!#9A7@"h 86EC!995RK EC!99bRK DRT#@@@xpK7K@7@`@V4hc'FC#@!9`REC!99RKEC!99RKG@C'@@/@O@E@_⃂HTT#˿qO@*! *!9`RE@!99KR&@aR `$ {@!! @Ģ@@T 6{@-#L!9`b*REC!99b*RKy$@/@cE@A[@TD@A @qT$*R!`B'@B@#@A/@B@!@[@#-T@ @{@_@@[(jC'!9`R:EC!99RK2$TB šš`H9TCD @/@cD@A[@TA@G @?qi T!T#@H@A9qCB9 cA@rTA DD@@/@!B@@HTE_TEC!99RKT#@H@@C'@@#@A/@E@!@[@#mTD@H @q[A?HTEC!99"RK#˶!9`B3REC!99B3RK{<b{8\RlT#@c@9Cr!TE@@#@4B@B_Ta@9!G!hc8_!D@B'@A#@/@"@HTT˿q{{ <R>R<EC!99RKw˿q}!@#@@CE9@#{C'@cA/@E@!@[@#mTD@H @q[A?)T?*!!!#B'@"@#@A/@B@!@[@# T@ @_@@[@{@:R|RT#@@ 4@#A RdRRRc_D#@{@@#? TE@%4B@B_mTcЄha8aG!hd8_!D@B'@A#@/@"(TT˿q* ! #DT6=!9`6REC!99RKEC!996RK!G R@#a*RRc{@#@@U#@TcA76V@멨Tht8$(TRrTB'@B:@/@aB@A[@MT@@qRR\AD@/@E@!#C@A @q5T$*!R!#C'@@#@A/@B@C[@! ͠TT#@CB9@+@&rAT@07 .7cAT#@qk TTA'@@/@D@A[@-TA@G @?qT*ЀR!@3TDA/@B@!@[@# T@ @_@@[7@7g@{!9`B΄R0@'A@5@@R@*s@*`4@A'@ 4D@@/@T#A@ TT?q*!5#D@A'@@/@A@TdT?q*!@2#D@cT%`:@@!1q 9EC!99̈́RKe`$EC!99τRKҺ@/@D@A[@TA@G @?qiT*R!5B'@@#@A/@B@!@[@#T@ @{@_@@[,@9qT с~@T#@\C!9`"ЄREC!99"ЄRK{@ <R>EC!99B΄RKy"@@7@@yTpAE92@ R@!4@@7+@ @2 EC!99RKZVC# TE@B'@@/@B@TT'_q*!:*LCDF@@/@dD#D@c@9(TTA˟q**!72E@!99KՄREC9!9ԄRKE$@9_q@TdTF@&4?T`Gb8?E@C'@A#@/@#hT$TGq*!=*DT'P!9`REC!99RKE@!99KڄRD 6cR``$@A@_C@?qccBRc9@&@c@@#@6!RA@A'@@@/@A @H@G@@ @ TD T%q Bt]! *@-@`c@A'@v*@/@D@A[@ TA@G @?q T*ЀR!@@'@A/@B@!@[@# T@ @_@@[@,2@9q*T{@@`)Ta!`1CR"hBRC@c@2!2Cc\RT#!9`R/EC!99"RK&&ҕRKceRHGT#@9@9fxf&j@T?xq@ TT#@ THGRуj`8Cxc?#j`TAc˔A'@T#@/@A @F@E@TT'q*! ;*EC!99RKE@!99KքR$E@C'@A/@ A@TDT?q*!<*{ҔHGR{T#@9dxd?$j`TE@!99KلR@'A`5{@@@k@Tc@D@A'@B#@/@AA@TT?q*!`#o@ @~F@bRB(D?@@!@h!8Rr @B@9! !* 5# AR_iT@@4[w @ Rr! BHQ?kT@@a!dA!@94R҂R@o@c@+@ R D@@/@T#A@TT?q*!@#c@EC!99RKEC!99bRKaCR!6"@@˿2@TcE9 4{@@?@TR 7@7"R !9rT@A@B@9!C!?T;! `5`G@@@@еRRR @  @!xb?;@ ;*@@c@xrT` A@ @7BT@@Ta@zTA@ $GqT`HG| 76?~ٸd(T3R@y#RRcRbECf8d( Fd8|@ T?T-c?@Tg@9DzFg8D9T`T#@@@T#{4#UTQ qZTa!` !X`x`! EC!99RKBDR Q*? qT` Xaxa Y4YR5`G@}r@! TV@# TH@h4`ҟ롇T@@`$GqH4ڠRsRss T;@u@B7@~ӡR_h 8B7@BY9B7@B_yCFdBAAA;@9?q$GzTA7@ qT9@@R5a @?qT!Qa H@5+@ R LQsh 8RH@4T,R`HG| 6@@R yTRT#@T`A@R"RHG|j$@zT3R!4ITITT'@TiTT TTT TIT TTs`TTT)T҃T@ӃҟITӃҟTT"%?_fRFRـY`G@c @fRRNyRLRJyRF@ TRSyRA;r9%7@7`@,aT @TR A{@?$q,T!RA{X&!9`bR7EC!99RK/5RB u@R`RC@R? D@9@9kTB(TWTR?!xTbT;@RBXEAA9UA9!A7@~ӄR?h"8A7@!$9A7@!?yA7@F9$h"8D7@F9B!z>A;@C @;B@9C`nTB}c @7` R_SF9CVqjIF9RCbT;@BXE9RC@~AA9!!C@7@#Rh88@7@9@7@y@7@h88@7@ H7@!R/@B@;C ;[E@!99KbRF!9`bR@@"Xy*!#?TlRC c9# R&GӟTDzٸh@@@5qR R`d{ CBkS*[!R*csB@@g;B#@BA+"  @ @6!4*!L ?q TAR TA DD@@/@!A@:TT?q*! #T4\C q T T?q`VT @9qAT8Rq`JT@@2(7@@*?!AR?klTYZ)"BqT?@R*ԾA@'A5U@O@?xab'@x!@c@T?@"A_@T @8x`S59R"x @@} @R?R'\@*"R8s@ rT``Bg@@BT{MSN[OcPkQsR_ _8q`DT(TD@B'@@/@!A@T<T?q*!#@#@@9q6TSqT95a@s@q` T'"R *`A#@ @9q!@T`*XE#(L4@@X?k9*R8<*r,T@7@A@9?q"T?Pq#Ts@"R`@! *`A#@ @9q;T@E94Ra R2B7@~@#@@9$#@9@9!$4qRdDz T@ ~!!*@!BcEC!99‡RK. R?"R *`@#@@9qT*Q A šT!a=TqT@7@@9?quT?PqTA@!Qy@*1rTS@^4qT@@2@'@{@7@!~+@XT@Rx[E~# R? @9"|~kb8@9@9 4?q$Uz1T@ ~_qET_Pq`]T?qrT`[E! @9"4@`S4 s@b@!*a 5"R *`'*A#@ @9qT@@;@*@yTB@b5B@4p2@B@?T @9q@gTD@@C#A'@@/@aA@nTT?q*!#q@rT TqTqAET T*DT!@D5@@yATAE9p2"R@Ba4@@6{@E9q[# 4"TRRTR?'`@x` {U;@e[E@9!O@7@~#Rh!8@7@9@7@yB;@7@?-B@y@9?q@TyA@y@9_q Ty y@he8 ~ yB#$*@PqRAzZT@ !Tן!'@a~C7@!XEth"8!C9T;@! @7@~ӧR*h%8D7@9D7@yF;4rJT  R@9`@2<"@98_qT?@W@B+4X#qB'@!@9@/@!D@?dMTHeTľT!*#AE9Q<3S~4 R0@7@3@y@7@A@!Qy9'@*rTa@s@5@yE@!99KŠR*B`#=B=AS@(?@@ "@@k!(T_@7@?qTqT}Ta!`* @|5! R@#@{R@@~2@; A#@!{V7@"Ra!C!R@7@B@@B@Tx @7@h381T@7@VqavTvT!@)R@jr?kauTA#@?@TB'@@/@"A @F@(ETdT"q*!@#**E@!99KBRE@!99KRRqTqaoT TF`TnT! # m5RRA#@;?@TC@RB@RAAc*B[# 'CB@T$ T! *#q`(TITq@Tq`TI@4?=TBBG@`8?B'@ A/@B @!@#G@?hT#TC?q?!**!.q.TqTA'@#@/@bA @C#B@E@ T T'_q**!*sqTTq`(TqTE@!99Kb4RW@yE@!99K⒁RME@!99KREyA7@B@;2qT*qTTqTTqT4B'@!D@@/@"˟qA#E@A @q@lT#@9kiT(tTDhT$* *!@  * *qTq@TcqTITq Tq ETqAT4 RWBCT @#T@9!?$)TD@C'@A/@ A@HT{T?q*# qTTqT1qTqTR+@yE@!99KR ÏT#$T!!**ŻE@!99KR R+r+@T7A'@2#%@/@cF@B[@?-T #TCB@c`$E@D @q)"T+*R!D'@+@d A#@B/@ C@D[@B@묻TI@\@ @T`@I@2`A#@qd[TI@ R3A#@R+[[@r+@T@RjTB'@*@/@!I@!B[@  T dTDB@`$F@A @qIbT'  '@*R+|D'@+@I@\CWA@B#w 5I@?qWyS*4R@+5*WR`@I@2`A#@?R5R@#5I@m@@A?@?kkT@?@C@ RB@A@B2B!Aa@!2añ0WB4@ԙ@@"D@!U!aB,@`B@X#,[F@cC @@c@@ @ _ @!x!2몋TYB"AB@Tx @7@ 27@@"D@!B!a,@`B@.F@bC@@B@a@a @? @!x!2T9A!@7x @ 2\CirT R@r@"R7ϰA#@pT5@9@@*q` TTq;Ti&Tqa T@@ 3@ @$T3@T! QR!|@` @ @ A6 R! r?k?TAR*<**9?k T ; @$A7  @!$A7qT&Tq$T;@R( ! @?q)yT!Q!  @?q T!Q@ @@@;@8} 9T@ @?TAyh8@@ @Aq! T3@8@T3@@TR{@ @@A73@T @] @ @@@T@ @?LTYrq`'Ti TvqAT?qlTDC?T @9qT!A#B'@@/@!G @B@A@T$T_q*!?# zq`Tq TI@A#@)4@"@9Ghb8\@!A#?T ҩ4@"@9Ghb8 @#HTD@B'@@/@!hTdT?q*! ?# nqTA#@!$R * c|S7&R*RRW@#@@#@3@Y@*9@?TR@ @!@6 R! r?k@ TAR7@qA"T{ `@?q T!Q3@@Y@*9@?T@@ @7@5}_T@ @?TYk5I@\C@ @q!T!@R@ @!Z@7 җ @@@ @vT@ @TX5{8I@\Cn@ @Xq TX@@qT;@R{qT;@R;@R G"R ?@@?qT!QC@@?qiT!QqTpsT`:@@!@1q 9 3@q @T3@9?lT@QR!|@E@ @G77@@?qiT!QA DD@@/@!A@TT?q*!># &R *RRR{`@rTD@cT`:@@aq@ @C?T @9q :T3@@TR4@ @!2A73@˿3TQR!|@3@ @2A63@@ @ @JDT @?T9{9|@I@3\C@@ `hx@?qT!Qyh8@?q+T!QBD@/@E@BA @B@OTdNT'_q**!@<*AT!@ Rȩr?kaT@@A R2@WR RI@wR8 RA#@JTA!)j5@#@ RW@렞T1@ZT*RE@!9DK9сR RWR 0TN`/TJT!F@5R4R#T!@`jR r?kT RTAT!@(R r?kTa RE@!99K"R @@RqDTR@U#C)TD@A'@@/@눭TDT?q*!%# EC!99RK ˟-T!@5;;@@i4JqT@ )T4MT@Gw8ДD@B'@@#A/@!?(T#T?q?'*#!9~ `@5R2`@#@@# JTNITJaT!5R4 Rxf5 `3T*7RQ!@x`NR?k{TR&R'U#cTD@A'@@/@hT$T?q*!@&#; @#AR3A#@?T@@?T @9q`ST@@*q`E@!99K߁R E@!99Kb́R @9qTT@R!Lrk`T!@@kTR!LrkT!@@k TKmT!@2b;J4;@O;`yT!2@4;@!3b;84;@!`3;0;@4˟LT;@9bR?q Q$BzAzT RD7@~4R!Rh 8*p@ r?aT*rOTT9`@2??@`Q?xrTA@?@BK_kkTqT?@qB ?@@z TD@A'@@#B/@@@B_(TCTq_G*# RIWR`!`@5@RTR!@4!`5yK8`Rz R! r?kTART `@?q)T!QI@\Cku@?qT!Q{y@@?qiT!Q;@"R-!`5TRU#ARB`( -RWu`R6B8 R RE@!99KR4E@$B'@D#@/@F@"@9hT$T'q*!*E@!99K"RI@D@A'@@/@!TT?q*!#@W@ @W@RRR@T@P7qITACY@ R@"*"4R@BB#ABR! 2*@@@@@@@*!bx!A@!@7x A+A!A+g5@@2@{S4 RRD7@ER Ś*A Rh#8C@c(E7@~h$8rTt {x@?qI]T!QIE@!99KbɁRh!5TR ң@#@&R@#*RR'zE`$fE@!99KdRE ҤQ?qI[TQ?qHTB@RBBq ҊU#ARB@( RRS!`pw5@RT RM!@g4!au5E`$A!*W`t5 RA'@#G@/@cD@A[@I@TG @?q)IT*ЀR! /'D'@/E$A#@B/@ C@D[@B@AT@ @ I@`@[\@@7@h38I@ \@A#@#D˕\@A@E@!9DK9́REC!99ہRK!9`RD@c TХ`:?q!@- 9E@!99KBpR!A#,"RA!*A@*!@8x @ R`A#@#@9qTE@4B@B_MT@Gc8_D@ B'@@#A/@!?(T#T˿q?'*#!6Y! RR6!R?A#@!A#EC!99BRKF  R R*_r%T*"R?(s@ r4TD@cTХ`:@@!|@q6E@!99KBbR$ҜE`$Ra R*-r`TA#@7@9˪s@6`@2`q Tq@TBCA'@D@@/@qaD@CTTdT琀!@8*#E@!99K"oRE`$*'E@!9DK9BRT T琀!8*#Rq*ӭr T*T˭r TF7@R*!BrT?@4A DD@@/@!A@TDT?q*!7#yrAToEC!99RKkR RE*"Rr's@ rTD@cTХ`:@@!|@q6LE@!9DK9RDҊE`$*er`Ts@6`@2`A#@7@9;R!3v4;@FR@&D`R+?<!B7@ @"D@!!aB,@@B@.!F@BC @@B@@ @  @!x!2*T!A!@7x @ 27>@ @@xxV @?qT!QSD?`R>~<@95Rv<!aB,@ B@.!F@BC @@B@@ @  @!x!2JT!A!@5x @ 25vD`R>d?A@!9%C9׃RKxDW?A@!9%C9ՃRKkDA@!9%C9RK`DD To>a@b @dT˕!B3@b@"D@!!aB,@@B@.`!F`@BC @d@B@d@ c@  a@!x!2ajT!A!@3x `@ 2`3Q%CA@!99B"RKDC`R>;@xtS  K@?q T!QuSA@!9%C9RKC>uE@} }   {S[ck*@@@@ *Q! !}@qT`@*@@@`@@`@@@:*SA[BcCkD{Ũ_!7:**!}@a@*4@{BR`@@@9`@@4  C{CS[ARcw @d"@qV TT@9kTa&@`.@a @b@e@H T' T_qA*!*R"R!*a@*!@8x @ `@!Ra~ R6$GA R|S_qT! RrT_q!<c@*Ta@4?kTa6@~"R"h 8@!2{ASB[CcDC_֡@9R!HG%` %jTe"@9&xf_&j@TAeC@!99"kRK C$Ҡ{FS@4@oA@DR`D@t3DAC9Ab$!RAa8z3sT!R@0A9SA{è_֠!`$A!R0A9SA{è_@3A{!$EB!@?`T $@R!RS[;` @@7SAE{¨_֠C@@@!8@6R!RRS*@@@ @G6 Rr! ?qTARB`@ @! ?q TSAAR{¨B Rr! ?q@TAR B`@ qT@@SA@@SA`@SA@@SA@{S*:8*SA{¨B@ {  @@?qT!Q`N@|B`R@zB`^@xB`b@vB @{¨rB-=@@CB T@9RqTRHG?T?@ Td@9`d&j T@$T?T ҥRHGd@8? Td j`TRq T? T ҥHGRc?Td@9d&j@T?ITqTA  C(K4 H_`@9@$HT`@9$(Tc?HTR_$T@8@?HTqAT RHG?T*?`T`@9h`?$j T@ Rџ$Td@9@$T RJ_ R R_ք@9__@9 @9cXEB~bhb8_Hq@T_  ѣ{cBS3[`@qTTqTTqT@/;B@@BT{DSE[F_.q TNqTv@;`?dT@!q TqT@/;q T;*RBiT@w;;v@?7s; D.@c˥@Z@˟T@ @_q T$**AR!@=&@b"@.@!ˢ@Z@MT @? _@ˠZ;@;@@s6;w2;@B%,;@b%&;z@?qTTR`T@"x`_q)T@*;@* ;6ˬ;;AC@!99BRK@A@!9`BR@{S[ck+B3@йb@"D@! B!a,@ 9B@"/``@`@`@ `@ `@x2` @ `@y @@a @4 @ `@t @@?T @?T! @ `@t @@?T @?TA B@Ё@D@!B  !"Rc@cx c @c2r*A@*!@4x SA[BcCkD+@{ƨ_@9П!XE~ h`8RzT@@@@4 ա@*&hs8qT*xf@ @7 @@TR;_kAT@R7r`TR!;_k!T@R7r!T skTA@%@S?qTҽ9`@y @g!Ҷ9`@t @nAҰ9`@t @w @@?qiT!Q q @@?qT!Q4J@@?qiT!QPЌ7! Ba,@ `R97XA@ @@!@9CT"}}Ӂ @7 __hTY:':4: 0;N _Ѣ{CBBS @A@3a@9cXE!~`ha8HqTҳ@@?q T!Q`*@ 4`@9Ra92`9B@@B!T{ASB_րA4R`9@=:[:  {S[4@9Ђ@!*5RcAS@Rcd8"sqT@9@! ?k!T^96!kHT Ձ@9?xqTSA[B{Ĩ_D6SA[B@{Ĩ_  Ѥ{CBD@8@czWi@!B@"@cҁT{A_ :   @@"_(qAT @?c<@ F _ @?qT!Q_9{S[0@9@(q TS `@ @?qIT!Q`>@R~@6 " @A@ q) T@`>@  @A@ q T@`>@4>2@9@(qT \@ @R"0rjT @ 7`^@@?qI T!Q`N@>`"@>`&@>`*@>`n@@?qT!Q`R@SA[B{è>SA[B{è_6R`@@ ?`@s@" @@\@ @R"0rjT! @ @ 6 X@>2@9@(qT @x Rw12@9@(qT! @! @O9`>@K9`>@H9F9D9  {S[ 0@94@(qT` @u2@9a@" @ ? Rra@?a@ `a7R*qT`@u@2c(qAT@R@rBB! !*a @a @@A@B@C@D@E@0=@0=d5`@ N@R:@~ @<>>@ @ A B C>@ @ @ >@@ @ >@ @ @ >@$@@!"@ :@~Ӳ<":@"@BB~$4:@~Ө<&:@&@BB~4:@~Ӟ<*:@*@BB~4>@>`2@9a@(qAT! @ @x ^@@!n@@!R@:@}{` U8ab3Q8a2L8snAb5a:G8a6C8a 7?8b @b&a.898a6958aB:18a";-8a;)8a<%8a>!8a*?8a?>B8`8a2@* 8:!D"8!B"7!G"7!E"7!D"7!0G"7!8E"7B!HA"7 !LC"70!A"7 !B"7@.!(F"7 `%!A"7!D"7B$! A"7,!D"7@!G"7`!E"7` !G"7`R>**.R8@9qT`_8|qATRK58^@lRr?k!TRv\Ta,҃k`-a,Tm@᭭A,-T@Rark!T(@y!lRkTX@9qAT2*!K28 *+%@R@"!4@/CD@ @ ~@@a fD'A @!xA G@@#@@aC@!C@aFC@CE@D @e E@@| <6T74!DBC @B@  TC!GBF!@!C@@ TARC @0@!FE[_"@@` @` _LhT<0D@@'@CD@@G@@B@a@C@#@"@F @f@ @@ @@@ rT` @G@9X@!b8#@!?qTR+ @T@8zT`@@vT@@ oB@vn@ D@!B!a,@rB$@D,?@?@#@# @? @!x!2Y6@ @ @bT @,gTX 3GR գ@9`@bc8"_qT* !|@T "@8zT56@ @@@*T@ @T8 Wa@` @!@CT@@`@b @@4}?J]T @`TUS@L@R@r?kxT*RR{TRcQ{QBn@9qnTv_@. xw8 `@?q\T!QF/@ @@$RrkT9ACR! %Bқ+4W~@*#,C5T_@@d a!LT*@@'j,iACR! %B~+?pqGTqTq T*C'S[cn2C@<S@[@c@@'@a4A@9RR?pqT3@aJf8 @";CKS[\4;@C@K@S@[@@ @9*BT`jv8kABT4`_8pqAT@$AT! R!;C{KS1S@;@$4C@aK@ ` L6h)!!`, CC $@ "@@9 9R@ C2 @D`@ @@@a Da @!xa G'@@%@a@A˄@!C@FD@dDE@C @ E@@@ # 452 @D!C@!@B_T@CG$@aRd˄CD.@BF@C@ @!EB @_"@@!T l.D @@$@'@C&D@@8G@@c@!˂@!Ca#@C@'FA@ @! @a A@!@a jX6@AjX6@+* @!@*?R5'@R*cEr!R_01@ART. @B,BT _qTBR6'`3@9a@(qaT @@,@ @!!i-[@T@ 0@\lT ,@ T@!! [-[@@{T`?@!5#`@^7`@@댡TR}/@R@@RR1#@bRRR@w1@ Rr @! ?q`ZTARj3R!R!!Re1@ Rr @! ?qWTARX3RRR!! !S1  @@!B@X@4*,TT@@@A0@?LT@,@T@,[@@iT@aR!lr_k9T#@9q9T  IUT`Jc8R3;#KS03@3@;@K@S@#@  C,!(D"Rc@@=b9< @9C 3!<<`I5@!Rq& R !4_@9*uRBR7?/rCa@R@R"@a @0@ @"_qT!IP7! ?qTAR2XQr T R*)S@@@a @y@GR?ktT!CR!@," Z) @@yA.Rk!TT@9?qST *l5 @@ !CR!`*BE)D@9?qzT*BTHGeJe8cxe#jT!CR!/).$RRcR* ' * R1`4__T!&,,@Ђ^TbBr3 @@6!CR!@%)@xsX @?qIT!QXe54K*@xtU@@?q)T!QARR1@@ !CR! %B(p,@ @j,`@b @-`*B3@b@"D@!!aB,@@B@#,``@`@`@ `@ `@x2`@b`R,l *ґ, "S-3CD+@@ @@@a fDA @!xA G'@@#@@+@FaC@!C@aCC@DE@ @e E@@u 5d2Ғ2R!CRR @o2a @3!DBC @B@ `T@!G!@!C2#@F@ T@5@C+U~'A0A@/3@ARF,+@|DB@@@5@ (D@9 5@@7@? iT@r TP7 @7X6 @ @6@@ @6R+&r+@` T @@@7@#IT@rTyP7`x@7X6 @ @A6@@ @6R%r TCR!!&'BR-!CR"'(D@9}5` @S, @@`w!CR! %Bҷ'R3k/"(D+@@@95@t53@F@4 @oP6@@o@9C@9*@9@A2T` @SS@l0@9?q@jT!FE!@@?oTC+D@@'@CD@"@G@@B@a@C@#@"@F @ @@ @!@@ 3@5S@`0@9?qT}7@3@5 @@@./@CRS'R!CR! %BL'FCR!&"F'[@@D@@/i0|@ @?qIFT!Q @?qIET!Q & @@ BR , @**#RI2@R!RcE*r_|-A*@;1R*2b5@@ @?q T!Q S@%!CR!!b&@!=-&1#T1#@BCTZ&h:8aRW-C@9@9*@9@@S@R;$ @@@!CR!&bҥ&!CR! %B & @@o!CR! %BҔ&˖T8c! T @*,@ @"@b4S@3@w*S'`$[@'@[ @B-C`cAA@`@#cAAA`BCBAC@ =BH@ = @H$ARb C C " BdD E bP@" DP F ,_&C@*g3@@@#@3@@*/@"_T"@C(@(@(!@# @"@b4S@~@**S/@"sr!T#@@! #0 RkTFgHW@(**!CR! %B%@ @#BR7K @ @4a3@9`@?(qAT @L@@@ @ @B TAR. AR' T_8qTBAR'@_8(qAT@_8(qT)TRB;G`@9sa_8b_8 |SFӄ&|Se_8*5Fd_8 *! F|S AF!*LS|S|SB @ F! F* B*  B !lS   *~@44/!@$ @ @T @lT8x8(T;@4@@@ @@7}?T @TYh5@ @qS@A)S @@iARB. #@/@3@7@;@S@3@,)S @@TE'@`$E0@ @"@b% 5 @?qiT!Q a @?qiT!Qa @5)))) Ry#Z"R_r#"R+@_@- @?qT!Q @?qT!Q R`#+@"R_@- @?qT!Q S@_@R`"_@@?qT!Q3@d(!@$ @i^(@ @v@hu@?qT!QoB5@Т@"D@! `B,@B@.@@@ @ @x2@;;H);@B`Rv(&xx@?q T!QK@Y@y!@AD@! `?G@,@ B@$,  @ @ @ @? @x2 O)O@`R>(%){)m(](U"CARU@>$RRRY.ARCU@.$` @3@@ X@@hT@ @@9qTM"(Z/P%+ !+@ @@`U !! %CRB#U+@@9`4/@CR#-  TB@@`~5<@@@}T @@9q|50@7#)T@rT P7@@7X6 @ @A6@@ @6R!rT!CR! %Bҽ#ARRT,@@+ 4{T@@5@ @HT @@9q5@5  $ @. @ARR $, @@a@ z  [-+ @@!CR!@)u#t`R`'%!CR! %Bf# ">-((RCR"!!&X#+@a!1#{S[ckݗsCѠջBAW@ @ {`K+3V@D*i8R*;$E@ @cXBBFCaj;4T@#@R"? .@3@ ? BB.3--# @a@x !@`W34TCRHGT @#T@9Axa!j TT#@@9_xq HT@KK@ +5_tq+TݗҠջC/cO[@ @@@#TT34A@RHGT T#T@9@x` j TT#@iT@9_tqT{@g;@@@[5U@@#{n T@?(T@R_jTrTsi5;@[@¾TBDG@@/@CD@눅Td$T#˟qO@B!C|@! **e@ @@H9"/@d @@' 6$Gq! ACR @1+@@?@@a7KG\E !Cӂ@9@!?T@`f}Ӣ Sxc?lTcdTs6@@$GAz Tks8@zkT@9&t6T@@$GqT*isBT@@@7@@?qT!Q'@R@/@a @?qT!Qa @@FR@@?qT!Q@EV@ y;T@LC@Z@b@R'|@@?qIT!Q@'@R@p@@?qT!Q@'@R@c@@?qT!Q@"R@*@@A@C@C@9`2B AAC@?qzT!Q@5@Ab;@4#@b@@BR;R8@@?qIT!Q;@`24C@V@`23C&G_q1TX5@@Xc@2c R@9+@ @2 @aX@ `\T;@@@_tqT 7ݗҠջ[{@C/cg@@;O4_;!?0 T0@9ETA R@,!@@@ @A@A#@qT|@tQ@b6RTT,rT @@ QT! @ x{; a @R$`@)T5CR"*!7@@@?@T _8lq;TCR"ҁ!!@?@CR@7B#@B!CR!>" !?@@/@,T q +TBR,@7@!R@ @@C A'c{+@c R[A@B @!*@@@A#@'@/_'! @?qT!Q! @@?qɰT!Q@@?qIT!Q@@?q)T!Q@@?q T!Q@@?qT!Q/@@?qT!Q!B@"@OTCSA[BcCkDsE{ƨ_A{@@#?$qlT!A{ 4C@RHGTfT#@<T@9Axa!jTT#@ R@9_q T@QqT!! $`6$R@?qA: 8TB'@@BRA/@G@!T#@#D[@@9데T`$1!TR_qDDz $-@-E@@ @q?뉟T?!R*!!.d@'@2A/@B@!@[@#T#@ T@ @_@@[@9Sy@9!RGT#@ӭ4]@ FR@@?qiT!Q@@D@V@&G_qT6'6R@y(@@A@B@9_ AxT@?q T!Q@&!@v6@!&!@@v6@`@"@! Ҹ!c@!2c@6@! rATC@2CG@b@AV@ yaTB?6RA@cEdb8( `e8U|@)4T?T B?1TD@9`zdd8D9T`0@@@ @(@/@aG@C[@TC|@B@D @_qIT*O@!ЀR!@ B'@"@#@A/@B@!@[@# T@ @_@@[7@@c7r#/@[@l#/V@#A&G~S_q}Twq/Tr!NzaT@_qTBlAAac/4{@;CCRHGT@#뀕T@9Axa!j TCR"ҁ!<CR"A!36@?@CR@7B#@B-@C?BTaCR!@""$C@Rc$GqcS!#"@@_$G|S DzT_ AzTA?hTr@T@#`a(T4?q`T@dQxd*@"KA*@"BcV@T_T@"7#@?7@ c@?q@$@zT9C@r`T R@3@*53@`7@B5@@AR*$GqTR*r@T#@@9@9 R+@@/6_T##b$š"F7@R_j@THGAu~6D@B'@A/@"A@_h$TC뤏T?q _G!*!0#\(@R?qC*:7@@@@B@C#@@hT_)ATA#;@CDO@b@3@4G@a@/@E@TT˿qC|@O@*!*!@ 0aR*T;@ZE~ӡ!3@9a@!A7@`?h68A7@!99A7@!?yAF@ @;A9 h68@7@@9!~ӡja8?Hq>T@4@7@(@4A7@ hv82 h68@@<R@@?q5T!QA7@ hv82 h68a@W@!@R?A7@c!@@?qIwT!Q@@?qT"@@+Rx@@?qT",q`zT<qR`RF!@ae5{@K@%5T#@;@9qA%TV@4RHGT!#T@9Axa!j@T"T@9tq"TT#1 T@`5R(r`TA'@O@ッ@/@G@B[@TE@B @qTFAO@*!R! !B'@"@#@A/@B@!@[@# T@ @_@@[7@@![x!T#@@'`.OR@L#@/`L L`@&g@@?q+`@@@^T`@@@9CӵT7a @}Ӡ _@d4R#R b ` *$j[T!?xqT@ QjT@ T3@ 7c@ =5y@Z4T;@9R!XE!A9!@7@~#Rh!8@7@9@7@yB;@{@$qlT@{+@@`/7U@@?q T!Q@@?qT!Q@@ER!LC!@%@@Rv@#@"R%@` @Rk@@?qIT!Q@@?qT!QR"R%@@A@B@9_ AaT@?qT!Qc@9BCB@aT@;Ba7$@B}C B_B_◟_k;R*c;1T[T#@[@1T{@#U@T?IT@[A@H@?ITD@C'@B/@B_TCTq!_G *!`1#U&@+1@{@@$Rq{@!S@@9C@Te @}dij}Ӣ Hxc(TB cE@!%!T+C@R *c@C!2c%= {@)T?@@yTpAE92@ R@!4@@7+@ @2 g{@@ᗟR?j TB'@ A#@@/@!B@A[@ T4D&c$c@_B0cc@j"8&T˃2!!`h68aRz"B'@¹A#@@/@!E@A[@mTD@A @q{@IT$* RB'@"@#@A/@B@!@[@# T@ @_@@[V@@~@z5T@ 4R&r T;@:@@z@@zT{@9TxɂTxiT~ T9ҿ@;Ҁ@@T Ѡ@TF@V{@@66T/@{/[;T#@wqTR@@ jFTc@@cxcfC@!x C/@ K }{@ |/@     x TvC" sC5@b@SA[B{è_"_@Xb  {FS[C3!BS@"@@` T#XT``bEu"@!@Ba^ a^@`{`vC@A@9!raTD@ (@7!@ R#@9!? q TCB@@c@@AT{CSD[E3@_)`` bEu @@!a^a^ `P```@@a^!a^ `H```@@a^!a^ `@`vC@ґ__ @{!B[ SvCSC$@7B@s@A@@yB@9! ?8q_ @ T`_ @!0!P ?qTAR`@e ` TR!0W@ ` T@X@a^F adTF al TvC@@@y 8qT[vC@@9!raT!D"@A(@7B@ R!#!@9!? qT!F!@!?-Tt"7 @B  AI!1@xc`#HiKF)G)Cxc"yjX_vCC@4@!B7@"@caT{GSH[IS@_ց!0RQW@ҁR!1JWw F@- TF!C@!@$? T\_`t"3,WW_` 7(WS_`;$WO_`? WK_`CWG_`G@ bs_B_`KW>_`"OW:_`&S WR!@1 WCB@4A`a@ cl@@C"Ҧ^vC @yC3@"Қ^3c^{S`C[vC@!AC@@"@ @c @!4!L Vxc?qTARc7W7*@R`(D$0rC q@9Rj`T RB* vCsC@u@SA[B{è_vC@sC`@uSA@[B{è_@@6!`2R `c]RvC!@sC!`@uSA@[B{è_`#{BA[+vCSB@@!B @CVxd"@s@W@@9 @T_ @!4!L ?q TARb 7Z\CW@@R(D#0rC !q@9!Rc jT RB* F@TvCvC@@!B@"@c!T{BSC[D+@_@@!2R_\R!F @TvCC@@  @"ҿ]`"Ҷ] ] {[DSvCBG!A@@eC!@B@ @@s 6xfS @dqThqT`qT)R *!|S@R!|@B(D#0r qB@9BRjT R* vCC@SA @[B{è_ Q !P *!|SQ *!|Sc{DS[c!GvC@BAd$@@aC AC@@ vxdO1T|@@R`(D$0rC q@9RjT RB* vCC6@SA@[BcC{Ĩ_@@` @@SA[BcC{Ĩ_c{DS[cBGvC@!AdD@@sC A#@@ vxd9O1@T4|@@R`(D$0rC q@9RjT RB* vCa"Cv@@SA[BcC{Ĩ_ց!6! Bz\@6^@@`` @SA[BcC{Ĩ_Kc {CB[+vCScC"F!@t@@@@3@s" -TqTqTT vC@ @9raTD@@(@7B@ R#@9 qT@ғ`W@ \T\T@9F4x"R"b`@!@!?T"_\@vC@C @!B@"@c T{ASB[CcD+@_ֿ\"qT@!@aR`[@!@_vCC@@,\@1@T<!A @ @!4!L ?q TAR`_RrB @! ?qTBR\@*5\w_Rr @! ?qTBRҙ\Wj@WvCC@@@@B[S@@!@@[{[РvCS@C@3@"ߞq Tߢq TwWF@` TvC@ @9raTD@@(@7B@ R#@9 qT@v_W`@` +\`S'\`@SvC@C @SA[B@{Ĩ_\`s"ߞq@ T@1WvCC@@SA[B@{Ĩ_֊[@1@T<!A F@`lT}[`@ @!4!L ?q TAR``_ Rr RsBr @! ?k@TAR[*,Y`_Rr @! ?qTBR[\@@@S@@@ {[РvCS@C@3@"ߪq T߮qT?aF@@ TvC@@9!raT!D"@A(@!7B@ R!#!@9!? qAT4@vb2_}V`@V` [`\SvC@C@SA[B@{Ĩ_}[`s"ߪq`T@VvCC@@SA[B@{Ĩ_`_ @!4!L ?qTAR|_TF@@TbZ`_Rr @! ?qTBRh[O`@@S@{[РvCS@C@3@"߶q@Tߺq TTF@`M TvC@@9!raT!D"@A(@7B@ R!#!@9!? q!T@v^U`@` [`@!Z!<@R@Ҥ^U`vC@C@SA[B@{Ĩ_Z`s"߶q T@VvCC@@SA[B@{Ĩ_`@Rr @! ?qTBRZ`_ Rr RsBr @! ?kTARZZ@<@9?qZZF@` TCZ`@Rr @! ?q@TBRZ`_RrsB @! ?qTBRҿZ@9?qTn@@!Z!<@iR@@@@{S`C@@ @!4!L ?qTAR^vC!@!@! ?qTHT?qT?qATyUДvC@sC@u@SA@{è_?qaTX@vC@!@!@! ?qATWSqY{SЀvC@@ qTTqTiTqaTW uCF@@TvCsC# @@c @@SA@{è_qTqTZqTqaT^qT["ҠY@)`'Y]_V {[vCSc@C@3@"q Tq@Tҿq@TF@ TvC@ @9raTD@@(@@ 7B@ R#@9 qa TT #Ҁ@}]T`[T` uX@@EY@aT@@P6РfA@9@5Y`Ё@hVY`@dV@AR`X`AR\X`Ҙ@V_R_`fA!@9A 5@C]T`"Ҕ@D_R_`&fAs"!@9 5vC#@@C @SA[BcC{Ũ_ևY`s"qT@TvCC@@SA[BcC{Ũ_`_ @!4!L ?q TAR]SF@ TBXn`_Rr @! ?qTBRrY=R[.\X@@@@U@eT|R҂RҦ_yR҂RҠ_R҂RҚ_{[РvCS@C@3@"q Tq@ TSF@` TvC@@9!raT!D"@A(@7B@ R!#!@9!? qT@v\S`Ҁ@\S` X`@U@`vC@C@SA[B@{Ĩ_X`s"qT@TvCC@@SA[B@{Ĩ_`_ Rr Rr @! ?kTARX\F@`THX`_Rr @! ?qTBRX#\@@@TU@{SЂvC!AdCFC@@"@@c @Uxc-TZQsCvC`@@ b @SA@{è_sCvCa@@# @`c @@SA@{è_"WC{ DS [ cksdtCBB@E@W!AbfAG@DCu@9!@}@ @@ 9xcˢ5 R#Rs@rsb B _q` TARR\CqT##T@ @_rq{!*5TR!4rB _q TBR+WCqT_@ TMT_` T T_T@ABC:W "@GRc(D$0rD @qc@9scR?j T RB*" tC7C@!B@@W@"@cA T{KSL[McNkOsPC_@@_CT T_c T@@W_T_T@ABV_#T@V@@A@V@AV@AB@V@VTs"CT`@ @? r@T\rTfA(D@99]fA@9G@ 4! 4SI3HP`3EP$W   __  _{!BB"@)@@BҡT{C_W   @9cXEc%b@9B?raTa@9!4qRAzT@! !~_ց@9! !~  {S\C*RҠ@RUY@ @?q@TP6SA@{è_*@RSA@R{è@Y@?qT!Q_֙V{!G [ )R_raT @) C&@G@b_MT@9_qT@9_qT@9_q T 4 TD@9$QqDz)T@%5%ҟqTB"@(T` T&@@T"@9q`T@T{@cT`:@!8q 9g[qTD@9E(qT_CT@c2%d8gTq@Tq!TD@9qTD@9`qAzTeҷBD@9qTEҰ_&@`$  C?T@4d˟MT%@9BGBe8!#R# n#R# i_ q@TTtq`R_q_@R_  {S[*C@*_` T$E@8@74_T@9 87cHGc`c@Pӣ4G`8cc"BTJG ` 6c"@`@9`8cc"T`@9?6@!?hTA?Ta@9$qTd3!@za 7a"@d@!@!|@!@9HGxcxP@q Td@b&@t"`.@TT?q*! ;#ZҟqRRB[qT`V@RRRZ@SA[B{Ĩ_`@q Ta Dd@`.@!a@T T?q*!<#kZc%RHGa@9cxa!jTc"TR|@@ch TCT@9dqTd3c@HGxcc@P[#RRXa@t"@RUrTb@[!9eC9=RK.Z`R#RuXa"@d@!@!|@@9HGxexP@qT4`@9*!9eC9"@RK ZUr!Ta@t"@Lcd@@a|@_d@bCcRa|@\~F<Y{S[v`$WR2[4*OSA[B@{Ĩ_!$EB!@?T @ @!6@@<@`4@V"Z*OCRB!OA@{Q  {_  {S[ck@@@xa&G`F!*s 5$*R@Ւ@@cA!&Iӵ9"bs8!sW@RR"*r!*@Rq!y5:5x4R8cRBD= RC@9s68*s~SB5@R8@O@ @CPAy# 3CPy4ARj98!Rx@ @ SA[BcCkD{Ũ_qA:R R9 :4@@$Gq TT q TB!$5a! "_O"!:"!` {S@@@"A,bB!~%V`a@ @c6mTlT~R`:@SA{¨`ZSA{¨_7d@cTХ`:`@a!`=q` 9X`$ @7@@_{$X|@{_{S[cX^DmQ@a2@9x`@?(qAT @@R@?*R*SA[BcC{Ĩ_ {cXE[6c!Sw@9~@`Fa@d:7aN@a@R?q TaR@ xfLT'x&`@ҿkT4aN@|@ xfT"x&aR@ xfT`@ҿkT `6@av@a5uv~ T `_`6@hTD8~Rc6@cv9c6@cySA[B@{ĨY  _TT_8!?q`T_  {BXES5B!8@A@9! a6@~Ӄ?h"8a6@!59a6@!?yc:SA@{è_{cXES[*c!7t@98@b6@~_h!8c6@cub6@BW9b6@A?yt:SA[B@{Ĩ_{XES[*!7*@98@!b6@~_h!8c6@cub6@BTb6@BW9b6@A?yd:SA[B@{Ĩ_4@@TXE `@9qT  @94`@4c a!B`@y`5$5Dҟ,TBK Rby_BK Rb_Ray_{* R`=W`@9}   {!BS*[6@6 @ AD"@B"!RN)*qT q(Tk T qTb SA[B{Ũ_*B!xu! B @z5?@@2qT?R@r" @ !7@2 SA[B{Ũ_*cx~}B#Bxu#Bjx8Rd@z5X @9 cSA[BcC#@{Ũ_ @ @ @x2NB SA[B{Ũ_X@}B@*CAha8b@1Qjx8*"@+Q{S*U5+ X@` q-T @kTqs•kT szSkT @a~{T SA@{è_{S[R@3@@@` BaS!d @@!}! !g Ta8A@Tf ŀ_ Gӥ|E"T !e$!}_! ! cTe8ET|U@ R R$8  k T@B}{c@4bC@TJ!A R@ ե?ITdje8|Scd2c`2D?6$89dhbT˥!ah"+R@?(T aR9/SzSA[B@{Ĩ_Ҳ {S@Qq,T@ @q TRa~{" @? A@ qT@@ @skkTpVSA{¨lVSA{¨_#Q@ @{B$ES[cR@@@ @BXB!FBAA T&@" "@.@!˂@Z@T@#b b @R^Pa @?qT!Qa KLTW4LWLb @RKPa @?qTP8LT&@""@.@!˂@Z@ T @? _@ˀZSA[BcC{Ĩ__!?T&@@9AB U@SA[BcC{ĨK | @ { @!@%@@@R)R@9CӤ@T!@}" AxdT?T*R|@ բCӀ !hb8*h"8kTa@(R%@@`@@H4"R`@!0G!@~T`@@A@a@?qT!Q @{¨_a@!@ `@@A@B@9_ AT @{¨_B@@?HT**?k-T_BP"@$GC@q` T RRq@T*QR+R '@@d@CӤ Ra_d@9e@ˮT@i}D xe Tn@cKTB b _ kT!@R!@"_`@d@9C@T7B@} ̅R@R%rBr_񭀍H R R R_̅RR-rHr  ?{CBS[cX#k @'qj'BT_TRs @@c W5@[;`@??,q@T:B@y? @a9TŠ9R7 p6@ 7 X6` @ @6@@ @ 7 @X6 @ @6@@ @ 6RRSBRO @@\6 Ք"CT'@sJ`4@@<7B'@@B;T{ESF[GcHkI_G`@ @@@ @"_q-T @_kTqsƟ_kT szS_kTa~{Q@ u@B@!|{h! @ @ @B@y5p6@<R`@B@yw76#RB R@!`mS @aX6@a@!? qT`@>QT)`@"R?,qT 7`@@sB@y@ p7| @ TR`$ҋU`@ X6` @ @" 6@!@! @73@sb B4@@ @6#RBR-Sd@T @`@X6BX6 @c @T7 @" )60G@" @(X6 @6OS|@sV$B@ya@!  "p6@4%T`}ӽRaRP3 R@@@{:Z_TcRBR!K@A*@"`@!X6` @ @" 3@sb@R 4r! ?qTR-N@#a@a6@@6RO4 @@@B@ @!@Q|{ A`3@9 qT`@@!,@A@@ @@4@ R 9 @@ @@a@ ?qTb@?kT_qBğ?kT BxS?kT`@A|{ P@ @b` @@Rq T b3@9a@_(qAT! @h|{ @c@E@!T@@@FB|{! @hh!h"@A@ @@! @@?kLT`@X6` @0@9? qT`@? qT4`@@! @@@@B@Q|{@5@R 4r! ?qaT@ @3@kb@AA_ Tc @cha855 m_R RBzTARM\4@@R8R ǯ6p@`$@`@R?qT @b~{ @@?q)T!Q@s?klT=M@ @CwM@2%a@! `$TROüT&@ @ @@OOs Mx@@y}   {S[c Sr`T@@T @xu`@b @@5}?T @, TWSA[BcC{Ĩ_B@b@ D@!!aB,@@B@}.``@`@`@ `@ `@x2`@ @@- T @ T8`@b @@5}?T@xuW@?q T!QSA[BcC{Ĩ_L`@b @B@t@ D@!!aB,@B@.@@@ @ @x2o xu8`@?qT!QK@ @`RLII`RLLeL@}  {S[ B =!="!=#%=$)=%-=&1='5=" $@R?s2@P C CRj38_h38#)I @!,!T ?qTBRS@T@@Ob*Q@A@@{CS*RdC#Ta&@`.@ca @b@e@(TT'_qa*!>*`@``@9qTa@`A!*a`{ASB@_u:@!XE!C9!Qa6@~ӄR?h"8a6@!$9a6@!?yc:#e@a`!99KrRJQ$  {CS*RdC#Ta&@`.@ca @b@e@hT$T'_qa*!>*+`@9q Tc@b@aAc*Bc!ba{ASB@_Ra Re@a`!99KyRP$C{cBSa@cmOrT@wT@a"b&@`.@!b @a@e@TG$T?qa*!*w2@9qTd@@a"b&@`.@!a@TT?qa琀*!`#P!B@"@cҁT{CSDC_aeC`!99TRKPeCa`!99"SRKPDҽK{SkCB:@@gҀ7 @@OFBT{`_8lqT@4@!'@#@a /@!@?qT*``xQ@ @ @ʟT @,TT 55Rb@9R#HGab$ !j` T_qRD@zT@"T` @9k`T`$R%HG_hTH @9?qac dDzT_T@9?kT_xq }T_q%T_q T@5@u!'@#@a /@!@?q눔T@T*` $Q@ @ @ T @TU 6b@9AtQ!HG`b?q TR? jTR? j T5R`@9`x` jTs_!T@7@@!'@#@a /@!@?qT$iT*``P@ @ @ T @TV 85R@9tgTS@x@5@!!'@#@ /@!@?qIT*`` P@ @ @JT @,TU 6д5RHGRb@9b? jTHGR@9"xb"jT_HT@`4@!'@#@ /@!@?qHTDT*``P@ @ @JT @,TT 5@95R_xqT@5@9 RHGRab$ !jTY@9`x` jT_(T@ 5@!'@#@ /@!@?q T*``DP@ @ @몍T @댌TU 65R@9_tqT@`5_8qxTqT!@ #RDHG?T# ?T@9xb"j Tb@9x!RHGbR? j@T_xq`T_tqT@ 'E/'@ TRGRHGRR*@/@@ A?d T@6R* X8 *;qhT T@9R*b`"j TR"jTtq TIT@9dzd $jFT#@9tqHTQlq! AzhT[ qlT@ X8;qT//@ <TB m @l_D {BBBBBB!BgB"@c!TCSAkD{ƨ_֔ qT//@ I8TA@A4E(87X8 *9R*cT;q/ᗟ qן *@5qj?TЂ_8CRHGxb? j>T qTq QTqLTq@'T4TRO# n c # ' o K # D ! ҆ ҅j ҭ cpҋ #A 4 E*?W@*@bc 'RBF҂6 a*F #'+/7;2@.DE@2CAAB@==qT@@! ?q!*3 #sӀk@3@@@kTZkl T@ @!|w?(.Tw@}yLa}! VV{;V_k!@nL@~@ +TeL|@@#7+lT+@x,ux, b @x E\4 _@T@ @0@T @+@J˂l ztbxbB B  @Tz| {t {<"3@T@`,@ TZ)!T3@T4@@T@'? SKI|+@?Hx,ux,'GS@+@@R``8B(B `a8B|@T?B6TdE!5T#@9Fzc8D9T 4e8X8 *D'@@R@r?kAT@R7@A;* 5@ @@B@ f_B{<Tx4ax@95RcC@ @m@xxV M@?qT!Qf!B5@@"D@!Yb@9x5R`b넳TfC@ @@xvU @@?q)T!QC@5@5@3@S!'@#@a /@!@?q) T*`Ja@b @ @*T @TS 4@u@53@3!'@#@a /@!@?qiT*`Ja@b @ @jT @lTS 4u @@  @7@@ @!@A[Ca@b @H|@@xtS `@?q T!QT˧fD%Ca`!99!RK|I!B3@ b@"D@!!aB,@@ B@.`!F`@BC @d@B@d@ c@  a@!x!2a T!A!@3x `@ 2`3X@5@HC@4@ 3@%!'@#@a /@!@?q)$T*`` DJa@b @ @*!T @ TS 4u@@4@ `R!C@{DA@!9%C9"RKH!B4@ @"D@!!aB,@@B@.!F@BC @@B@@ @  @!x!2T!A!@4x @ 24L@ @@> {BBBB5;H {BBBB-`RBb@C!B5@U @"D@!!aB,@B@.!F@BC @@B@@ @  @!x!2 T!A!@5x @ 255ICA@!9%C9BRK\HG`RjB@7@@'@@@`5@$'@q /@d! @c`$B@;#%@B$@TDT#˿q da!**2%CA@!99B%RKH'Aa@b @@xtS `@?q T!QT!B3@b@"D@!!aB,@B@.`!F`@BC @d@B@d@ c@  a@!x!2aT!A!@3x `@ 2`3B%CA@!99!RKGLG`RAy?xAa@b @@xuS @?qIT!QiAa@b @+B@xuS e@?qT!Q"%CA@!99 RKGqBdT˰!B3@b@"D@!!aB,@@B@.`!F`@BC @d@B@d@ c@  a@!x!2ajT!A!@3x `@ 2`3l%CA@!99"!RKKGF`RYA>ҳB @=B$ R**C/@/A@!9%C9bRK!G!B7@"@"D@!!aB,@` B@.!F@BC @@B@@ @  @!x!2T!A!@7x @ 27a@9@@ @S@xvU @@?qI T!QL!B4@@"D@!!aB,@B@.!F@BC @@B@@ @  @!x!2JT!A!@4x @ 24\!B5@@"D@!!aB,@ B@.!F@BC @@B@@ @  @!x!2T!A!@5x @ 25E!B3@b@"D@!!aB,@`B@.`!F`@BC @d@B@d@ c@  a@!x!2aT!A!@3x `@ 2`3EE`R:@=`R2@=`R*@P=FE`R@=A@!9%C9"RKE?@ @@xuT Y@?qT!Q%CA@!99RKE@@5R@L!B7@ @"D@!!aB,@B@.!F@BC @@B@@ @  @!x!2JT!A!@7x @ 27'EA@!99%CB߃RKES7@A @ @@a;{BBBB`R?9= RC%'@@@R ̭r?kTR@v'@Rᮬr@kT@ @77@ 55Rk@R@bRc7@`5SR_RrkT@ @`77@5RQ@RMRK'@@LR r?kTR@>R@:'@@`̍RNr?kAT@R@0'@@ Rr?kT$A@|@"# xdz@\3@9$QqToG RvC@@sx" C@`` @!!B@"@cA$T{DSE[FcGkHsI_ր @@_q$ @ #T @ 7~`Bc @ @ !@!B9?q T <* @@7a @ ,T qTBR @a @ @ 6!!$E!@!8@ 7ā 5CRxrT @qT@_ T@@*!G@sx" "a@RB(D#0r# qB@9BRj T R!*a` vC{C@@n!R @#@T4REN@!!B@"@ҁTEDR{DCSE[FcGkHsIn`4vC@@@y! ?qT!@!wAR  {[65SvCcC@@@@9 @T 8Rt_B2@9$QqITf#c@r@TvCC#B@@@SA[BcC{Ũ_ F@ T@9 7 RB@c @@@ 7vC@@9? @T9`6 @ @B9@6 @@ @a 7@@` Rrc vC#Cc@#B@@@ A@` @ @qT B!C!@a@@SA[BcC{Ũ_$Qq TB"~@!R#+@4REn@@%RSADR[BcC#@{Ũa@XRB4@o#@vCB@R|@#8CR@"@B9x9\ @7@"Ҁ}@7#@PaR@@R+~n! #@=#@9{ [5vCS4cA!@C@# @ @9@Vxc @Tw_ B2@9$QqTf#@Rc(D$0rD qc@9cR?j T RB* vCvC@@SA[BcC{Ũ_ F@ T B@|@a5!R!@R!(D"0r _q!@9!R_j T R*  @ @@6!Rr4REj@SAR[BDRcC{Ũԃ"?}ʃR +'|}j'@{[6CSck@`@ @!4!L ?q TAR`_xB @!4!L ?q TAR"u_BBU2@9$QqIT7vC@@@yB _q*TeT@Tq`x& @@@@6!R5aREf@~@[abSAER[B*cCkD{Ũ @`vC`C@@SA[BcCkD{Ũ_@@@@Oer @ATA6 xR@+|f  {S4C[ck@_ @!4!L ?q TAR+9{ wC@Ղ_97@7@ @q T"X6 @ @a?(qI T?<qTB,BT _q@ TRW!!dA @9 5x7 9wC@C @@SA[BcCkD{Ũ_@$QqT @`@: dA@9` 5U @u}* 7R`RRx0@9$QqT`@`5 R` 9wC@C` @SA@[BcCkD{Ũ_@@ @c7c @qT!$Q?qIT@"_60@9Zt@A!6xOx*|7A!6xDt @ @"_ @qT!"! Rr R{CrBAc7S4C[ksvC@@_!BB@&@҄ @ @3_! Zxd?kTAR,|_2@9$Qq TR~@@ @`b@bP7_rTR 4rB _q TBRE{S@rwP { T`@!R@j 8vC dA!@@9;@{#5 @q@ T}*E||@`@ P6`@@j`8?DqATj 8`@`7` T!@@R!(D"0r _q!@9!R_jT R*@X vCC@@!!B@"@c T{ASB[CcDkEsF_֠ @@`@wPu @@Sr {iTa~a@;@@~|*}|@!6! Bz@@6L}B4BL _qTAR ДvC@C`@@jIz!"RvC!@C!`@@!!qTybѵvCC@@ @@@@ ~fv!R vC@C``@@!!B@"@cT{BSC[DcEkFsG_@@@@ Ҳx1r@` 7P6R ?qTRr q TCROw @*3@R@rc Rc*҅**@3 @c@h#8@ @@s@7@@@ @@?h 8xR? jT"! @BC!BdAT@6@@RC*)***z@7 @`|R{n@@ @@v  {CBS4[5CcvC+W@@!@@8@#2@9$QqTR@y@@ @R ,xq @Rr@a@ R*`"`@a @@?h 8 @w7Cq TGq@T`@@vCC`@a @@?h 8@@!!B@"@cT{ASB[CcD+@_ @@@ @ e$u!R vC@C`@@a @x6a @|6 v {CB[6S4vCc+!@@҂C @9X@  65@3 @@yajE !@Hq` TsjE`@"T 7b"R\F^Ey @%#cHEuu2@9$Qq)'TLe5^Bt!R@qRvC@ @9raT D@@(@'7B@ R#@9 qTqT F@,T @u4s"`C @!!B@"@c0T{ASB[CcD+@_4 F@+T !F!C@!@4?M+T5u`wF@r@u` ru`@ru`@ru`@}ru`@yru`@mu`"@mu`&&@mu`*.@mu`.6@mu`2:aru`6"@\rvC@u_@ 7  @qTX7 7dA@9 5!,!T ?q@TR|^E@pvC!@%@!\FHEd@ @B, @BT $y_qTBR{@a@@y@! ?qT a@G! @xaTR:yvC!!F@@@y Hq`Tr!R!\B 6 RR{r T{_8(qAT!" RB>!E3t#?`TU @@@@x"B8R!@,msjE`@T7R^B@6s!R@ @ @b_(q T_<qTvC@@@y HqT a"R7\Fy^E#cHE@y^t @ v@7!!FBt!!\B  @@ $QqTvC@hw @@d5@,@ qaT@ @@HsARR"!B0!0l \Bq@N!RuS \F@yHqT,^yYn#7c @qTB$Q_qT@_60@9^E@n@ "3tvC@il@#"c@B`$3cZtx#"B`$c@cLvC!@0Jl @ @A? @q!TBt !R{C!BS3bvCC@"@a@d@9! "PQB<_qT6B<@`hb8b@9" 7"BCB@B@B @B(BX  5[c!TQ!<?qTR RR46+C@@ @!,!T ?q TBRzavC@#@a@@y! ?qT a@G! @xaTRw*5qq4K T @F[CcD+@(6!<@@xaha8Vxa5Rm@7"**BF era T B@@B!T{A SB[CcD@Q  !!B@"@cҁT{ASB_rrARB0!0Rk  @`[CcD+@@@7@ B@@B T{A SB[CcD@`bvC@@@9@9! 6A 54@6"CBF@B@B_TC" 4@[CcD!Rwtm`vC[c@a@! DbvC@@@9@9!# 64@"CBF@B@B_TC" 4a5! !C@!@ @@5C @@ @@@[CcD+@z@4@"rsvC@`@"rsvC@`@[c+r{R[5vCS"@S@s"ajQ!<?qT6!<@`ha8A@9! 7!!C!@!@! @!(!X  5RFl7vC@jqT A @A@xavq@ThTnq Trq!T"!B4B!Fg@@",@a^Ba^8baJs Հ@7 @? T@rT P7 @7X6 @ @6@@ @6RkrTSA[B{èzq!T"!B4B!Fg@@"4@a^Ba^8bas@SA[B{è_!!F!@j@@`vC@@@9@9! 6A4@3"vCBF@B@B_- TsC" 4b@SA[B{è_a5 C@@@@@@HT` @@9qT"!B4B!Fg@@"$@a^Ba^8barSA [B{è@`C@9A@9! 64T@3 vCF@@-TsC 4`@@ th`T|5"!BC!@B@A@@@"qvC@@4@"qvC@@{RS3avC"@A@! @!|Q!<?,qT6!<@ha8A@9! 7!!C!@!@! @!(!X A5RNk7tvC@@@ qThTqTTqTq! T F@`SA {è@Mq@ T F@ @qaTA@9@@9 6[`4U@4 CF@@TC5 [B@@SA{è_q T TqTqaT F@O6A@9@@9'75! svC!C@!@ b@@@q`TqT F@ @qT|qaT [F@`pk` TSA [B{è@*SA{è_ F@ @qAT F@W6 F@ @qTSA {è@` F@  @q!T F@_6 F@ 0@qT [F@rkAT@@9@9! 7!5! !C@!@ @ @[B5! !C@!@ @@@v@@9@9! 75! svC!C@!@ `@5@U"psvC@b@W4@4"CBF@B@B_-TC5" 5@"psvC@`@{S3`vC@@9  7 C@@ @(X 5R#t7 F@ (@qTSA {è@R RSA{è_bvC@@@9@9! 6[55@4"CBF@B@B_TC" 5[B@SA{è_SA {è@`*5! !C@!@ @@@@"psvC@`@  C {BS4[vC@@ @9 75C@@b@@(X  5@ @q TX6` @ @#(q T@,T q T#R-w@b@BRl0@9!$Q?q Ta@9!?$TCsr@T @{@Tr 5 @ @0@9!$Q?qT@o!"R!@ `!!B@"@cA T{BSC[DC_րR@@ @9@'7@@b@@ @qT@$QqT` @@ @@pq`7@@@@7"_ @qTb@`@s @@!!$Q?qT@@vC@@@9@9!C 6a4@vCBF@B@B_ TsC" 5b@5!C@!@ @@@@g` @ @"ҶovC@@o{S[CѕvCB@@ @9 63@3shE@(T\EJE@Zo@0@9!$Q?q0Tb"R!\B\F#yn5R _BA@BNT@`CSA[B{ƨ `C@@ @(X 5!@9R q TsC`@@a@  @q*T(X7#'!,!T ?q+TR+v^E@jvC@@@@y! ?qNT@!G @7x`TRwsT^E!BHE@_@nQ#A'Ab"R!\F"yp`I7Fn!\B @K7RR#'#+/^n@km?6T BX! @!}! !c'T s @ !T`9637{;9Tb BaS!b @w!}! !CCT @6T96TUF d@8d8BBD9_C(TbDc#T5TAFs @8"#c8BBD9@A(TP3A7AR?OT3RZ'E7JGb@9*"#4@@8@`7*C@cx)T`b j` T_ qT_lq@TbKsB?" T 3A~@7A?vC㷟"@@@@y qk0T@#A'A+A/A !BA"@c.TCSA[B{ƨ_!@@y R@R! ?q@4@ @9'7!@9R qaThE@JHE@2@9<q` T$QqHT @@^Ba"R\FCy @Vn`E4 @o 7sFm^B %7`@ @q TvC@@@@y! ?q )T@9@9! 6!.4@vCBF@B@B_6TsC5" b@` @ @C(qTb;7A? @q2T#'a@@`y $Qq)T_6a"R^B\FCy`@s @@s"`"_T`@@T37CQs @kT#'+/ @j @sr?@9ӁYsl"R!BA"@`T_T s_T`96!R#nr!T@@8@46!Rnr`Tb@9RRnr@T|@94E@9@4JGR|jT_,q Ti@h|xr@T 3A 7A~@!\E@@&m RsrTs`_8(qT RB3!El@` @m*1 T#'+/ @r5!C@!@ @@@vC@! @?@qT@@y! ?qT@9@9!B 6A4@vCBF@B@B_"TsC" 5b@#A'A+A/A""C T@@TCQF=s vC"@@@@y q@T@#A'A+A/A3A7AvC@@BA@BҀT#'+/37mC@9@@9 64U@vCF@@-TsC 5`@@#A'A+A/AkBA@BAT@dkk"R!@ `iV!RnTT96k@k@`Q>@@5BC@B@@"@_T@9qTRwib"R!\B\F#y#A'AkARRB0!0dB\Bc"R!\F@D#y`#A'AA!$Q?q(T5vC!C@!@ @5@q"alvC@@DC@9@@9 64U@vCF@@TsC 5`@@7@`5BC@B@@"@@@*"8lvC@@Jod` @ @#ҥ_!T@9qTh@q"!lvC@@@"lvC@@-#'+/37>ea@9i#'+/37 @}   {SЁvC[cC!@@ @9 qTF@@6@F@T!.RRRnn`@v" @!,!T ?q TBRҫr!dA @94!! _"bfibi"bb@R&by6vC9*~S@@907` T7@*җN_*@0[`@ARaCRR*G7@*_O7@*`@a#}N3@Mh{DS[cksvC@!AEfgAc@GW@9C}!@c @@6xcsZ@@ 5Ұ^vC@@9 07@ TRRHN@GR9+D$0r@@D #@9q`Rj T RB* F@-TvCC@SA @[BcCkDsE{Ǩ_@@AR]a @!,!T ?q TBRiRRN@`@a"RR N@@""bhpgR +Dr7 s"BR_cT`@ @c q@Th7@@9`4dgAG@9@s4!^ {SvC[A!@@! @xa8ZR|@#0r(D@@9C qRjT RB* vCF@@TvC" sC5@b@SA[B{è_"a@Th  {R[vCS!AB@C#@D @A@9@vxd? @Tb_BA @!4!L ?qTAR4f Zc@Rc(D!0rA ?q|@`@9RjT RB* F@TvCvC@@SA[B{è_@@@ hF@T "qa  {[cRvCSBA@C@@b @a@9@! xb?qT5F@ Ts"RBdA@@9`5**ca@R!|Sc(D$0rD q`@9Rj`T RB* vCvC@@SA[BcC{Ĩ_`_`@R @!4!L ?q TAReBdA@@94 ! ?] @B4BL _q`Te*@!@9! @@"ag@ @ {SbC[cW@vC!A@_"@ @c @!4!L Uxc?q@TARpe_ @B4BL _q TARge*\@R|@c(D$0rD q`@9Rj`T RB* vCsC@v@SA[BcC{Ĩ_@@_ @B4BL _q!T@@rTaR:rT +@"4W-4`#Rh!8#RtC@@9@T@9R RjTB2@c`fЫ؉dDˉ@`F )@J8 @@tC@_@C| )W$@`@J @Pha8*h!8_!@ @ @9c [@Cy5@a`@e$@!a`?q-T@!`@B@d@@``F!xcA @_@`!4a@!hE!@#@c@C,"@@!@RB@'N` RbD@G!@BB7 @#@aC'@ A@@BkKT @9(7`F"@A!@A&@R@@"`&@?q T!Q`:@D@(a"@!D6@"@dvЀ0EAjA?!@cR`"R]d@ 0E"R@cR!Od@@0ERjA@#b@R`@C@c@"@@@@b@@@@ @ @@@@@!jA@@@@@ aBG!DC@6@@!:_@@ 4RB@'` R@DcC@`B7 @"@@a &@@?kͭT֒h7 4 4`.@hE@@ @".@?q)T!QA@@@@!?TR@@H`AGD#@@uBGaCB@@ [JcKYu@G@'B< Rg )W"ARR:@`@  +@ 44T1RFP`C@YKIW4oD@"@@C@? T A @ @ . w4f/ -+7@#RҲZ@@[ c -י@}    { 0@9$Qq TR@@`tC"@@@@y! ?qTa@!E:cc@c`cn @B@``CfA@@9" 84R҂Rpyv  {[uvCSwC"@@A@9v@a 87s"t@@73raTccDd@(@7@ Rc%s@9sX7!87`F@`?ֵvC@@SA[B@{Ũ_AR`vC@"@A@9@@SA[B@{Ũ_֑`dA@95tsB̌s>EȌR!6`@AR9'$SA[B@'@{Ũ_փ,@ qs_6 @ @C6@@ @6a# RR!@!`; vC@A@9җb`#RB(D!;4DC9ΐq`TqTvC`BRAc@@c @xcf`@7C@vC@9@6@@@y? @Ta!D"@B"@ @7@@sC@! `F@TC@"   T |@sa`!tCB!@!@C`a{CDS[vu#!B@#@GAѣC@Ts@}!` T Tt@wv@` 7X6`G@ #vC`@vC@B@@c @T{ASB[C#@C_`F@ Tv3 w@<@@_7,T q@TBR:@`|D@@4@@ 7_7p6@@RAҲ@_6w`vC3 Av@@$ @@xd!@ARQ @<@@rTR?CR!BQ"@!R@@G@_66R% `{CB[vSuDcwkG@ @C$A@t@"  T@`@`X6d`atCT A@@ @!@xd!yCR$G*R3@`|D@@"@ 3@`@ 7`X7r@T$GRCRR@` R4` @"R!@@z@'E@@@@(ҫZ'E@@$@a!F @@T`DC@@B_ TGCAR@cCC @@ґ@AR Ѣ@ARCR!ҕ{`@RF@טbM  h{CB[vcu؎DS*k *s r  @@'ҷC @f@@@ xwDy@ @*Gx@ b @@@%@_ @C@*F@%C@ @}ӫK @ D@ @&}ӄˡ!_ Tab!DBC @B@ TCG!@B@!!C@C@ ; 5S5)4 7!2@֎DG@C"@@@DqA@@9Fc@%@#@c @ #&@@ A ! 5a`!tCB!@'@@c @T{ESF[GcHkIsJ_) <!}@@" C4 sqTC@@a6" C_qT@!@@" 5  @s}@@Ռ@4'6ssbG!@̗`|@7c˟lT!!˔}`"ACaY@@[@hARR@@ @ŗ@@M:C@I`ba{DSBB[vcwxks@D@GbvCt@}s A|"C@{@C@c @`@5@Yxc?$qT?(qT @qT` @@ZA@ B9x 9@@@ @@ 7HT` @@` @!,!T ?q TCBRʗ @˄#CҺoG@sr` Tba @RB(D#0r!E B@9qBR!j T R* ! `"vCyC@ @a!B@"@ca T{BSC[DcEkFsG_` @|B @!,!T ?q!T@@B@ !RœtREJ@ a!B@"@TDR{BCSC[DcEkFsGGa`"vC!EB@!@5y9@9#aC!@ ``@@Ri@@`R%J@`!0Eya @ !@?{a@!@p{[uvvCSC@4@@9 @T_S `2@9$QqT!RbB@rTvCC"@aSA@[B{Ũ_B` @`@@`6!RGssRE`z@SAR[BDR@{Ũ!R@hbB@raT`aF!xF@3@T3`2@9$QqT@xF@"3`R&';`z'@C@{CB[USCc8@@__`2@9$Qq TRǒ@@ @R 2@9$Qq) TR@@` @Rl7@A!z @!v@!tRR@ @`@@` @9`@9 @a@!@A@ACtC!@@@@J`@@n@AC@!tC` @@A!B@"@cT{ASB[CcDC_ @@S` @`@L@!  {@[UvCSTA!@C@$ @ @9S@vxd @T`@0@9!$Q?q T@vC@C``@SA@[B{Ũ_@@``S @SA[B{Ũ_@@@@7@@ @C@R|@c(D$0rD qc@9cRjT RB* vCvC@@SA[B@{Ũ_ @!R#`TREv@@a"SAR[BDR@{ŨR@ ';v'@{@[VUvCSA!@C@# @ @9@Wxc @@T`_ @!4!L ?q@TARd3*@dA@95B@R*B(D#0r qB@9BRjT R*@ F@TvCwC@@SA[B@{Ĩ_@R *HqT@dA@94a!3f@@(@F@T "ҍ  @{BcWSSvC"@@`CA@9@? @ T[@?raTҕ@2@9!$Q?qT}A"RvC!@sC!`t@[D@A!B@"@caT{BSCcE_֔"A!@!`@@ @`k@ @" 76 @bC Z@!,!T ?qTCBR @v!@**!B9t4!@ @ " @T!B9*i4sCAvC`@!@@`[D @kFsC@vCa@@@` a@@[DkFkF@ @@ !RSsRE`r@A!B@"@T{BSCR[DcEkFR` `r@[k{kY!D[VSTcsG @S@"C:@}s7u"{@b@@,q#THT$Q?qTA? @q@&T(q@'T#! Rg` @U˼C5` @RO!"R;W;ݒDC@;@ @ -@@A DEGFA @D!xA @@Za@ZCB@F_9D!@@:CA@CJ@J @* DL@b"@@ @@ 8 8@)T!Cu F@˿TusB# bzax!!T@ARC@XGg0qT@R"jTҶU Rg\` @ Co4WtCD@ @@@A DEDFA @G!xA B@@@@A˫F!C 9DH@@ CA@CI@) @) iDK@B"@ z @@ : @`TA!CuF@˿TusB@# bzax!!TZCARZIGDC@@@3@"DG@@c@!@!CaFC@A@! @a A@!@a 4g@Q` @ Tg@RҐGA7@@!tCC!@SA @[BcCkDsE{ɨ_ւ76`@ R xg2`c @` @X7?$q` T`P6`@@ " R g7` @@ R g`@ A9q@ T R#!g`@@ABxb*%\GlCSGC@`3@9,QqT$[Cc@cARRG@@ a @R !aCGC@@0ARR?G@@ @R`~##GH@`@!R#!g @^A!B7@@@"D@!X!B<@B@OR@?"RAҀ*A@!xCB 2 @ @@@!@@@ ` @` @@RR!@<@?qmT@@$`!?1TT@@@{STЂC[cV@_`@#,Qq T @q T?(qTa@7R! A9?q T7*`@?0q`TA@ДC!tC@!@ @SA[BcC{ƨ_7R@6*k@@ @@R!%z0@9$q@T @qT*kD`@?0qT @R? jTa@!@!x`#$QqT7` @@`@ R(/ @ޑ*!%`RzkD+@ @@AB!DBC @B@ TA!G!@!C@@F@T~! @!QNCG!R`@kD"+@m@AtC!@V@@t@AДC@!tC` @@i+@A^"Պ  {@CS@@a@ ,Q_qiT"_ @qT(qaT`@5R A9q`T7@A@!tC` @SA@@{è_5Ra6*č@@ЁtCSA@@{è@_$Q_q(T7` @@a@  Rҁ.` @7{RaSTk&C[cs#@s`|lv@ڐR`Z "R WЬZDBC @B@ TYB!GBF!@a!C@@MTx@4L q TAR֎` `Aa@rTV@ARCV  @b`@s@`@o 5Da"ZC@B@ T9G"@!!Cxn` ;vCAR @@@w@`@P@5@ДCtC@SA@[BcCkDsE{Ǩ_@'3Ղ"R3@ &'j`A Ra@R RŐ@@cډ7Z7@@'3  BAC@{BtCS[ #c Rk 9's :R!AcCB@!@t@B @bB7xb@7@|@7rTj`TP6@!@A7@@k"{#T@c\ @7rT@@@@@rT@@@9#?caT܊@sS@*|`jy!@ TBR܈`jy @ 79#?c T@ 7 W7 p6 7X6 @" @6!@!@! @6Ή`RQR!4r qTRˈB@RA@B(D#0r qB@9BRjT R* @ЗtC@ @9raT@D@@(@ 7B@ R#@9Cz TB@VCB7@@c @! T{GSH[IcJkKsL_ @6 @k TA @G "kKT@"KRBA @{RL@R@BRR]MH6 @@ `T^%g#a^8cb^cmM@0@Y@@@k@%gB@a^a^a)`>A`k@k@tC@R߉gg @!A|k~kA@!xFB#@ a@?qT!Qa_{CctCS[cXk+`@@9rATD@ (@7!@ R"@9`@\@`(7DA@!CT@B D)@7@kj T" RJЂ@| JGC@AEREh$8!RGf A@x@D%@@y}Ӝ@@ " @#Cbxb@@q!T"[_@0@9$Qqi0T @`@rT@c @!4!L ?q@TAR[TShT@ 0@9$Qq(T @@ @@** @@Ƅ/4Y 'E@8@7@ RtC@ @@y qBz`MTa@R 4rR rk<TLJa@!2a9'E+ @8@7<3@#tC @@@y! ?q0T:8`@6@$E@8@73@;Ta@!@ W@G6RB' @@܃*i@Ab@!G@7@ @#Tࠟ{ @_T+@ 5@ztC@@@y qT;7*Yi@R` @rR@ `@i @@?i 8`@ *`/@ 4@$E@8@@ 7C_T˖4Z6RTB@9b8BT` @a˴˜zR@q@@G R @|@tC@@[H#_HB@VC@` @A!B7H"@cҡ7T c-SA[BcCsE{ƨ_@[_ @`@rTҫ@c @!4!L ?qT@@@ @!4!L ?qTARa @@ a@R 4r q`$TBRFa@+6Y R+ 'E@8@@6$7@ࠟ_TB`Re+@ 4'@`@[@;@a@AD@!Z!a@B @CB@@a AF_|!Cb @!@B_TCcAc@{x"b@B 2be}@tC@@@y qT @@X~` @@/4 @@B9?q!T@GP#@2Y! T` @4z@@@T@Ͽ6!Rh`UREZ@ A!B7H"@c T [H_Hc-CDRSA[BcCsE{ƨ+@5`@@7 @@B9 7@dA@9@5@B@RG#0rB(D @`@# @qB@9@RjT R!* @AtC6C@@[H @_H77`@R_ 7`@ @c Ta @**szb@ДRr@`@b @@_h 8`@ /@ 5R*` 7 @@B9 7@dA@95@_@@G@s@su@AtC6C3@Z?Ty}`@u @@3R`@.B"`@u @@3`R_T@9AEqTCcG@9bb8!?aT@8A?qT_ TA @ R Rr*`@ftE@ R ET@_8BqTA_8!?qTTZ`@2`*@oR҂R,)MnR҂R"oR)Z[_LB!@@*B MT7@Au!7` T7@@3T7@u~!7aB`447@G@ @Axa@x`C'@@ xzZ}#@DB`B0@/T@@5@ @! ?qTAR@! ?qTARlT@@|"iT;AR @! ?qTARTࣟZkTZ`_BT@@ @! ?qaT@@! @?qT@@"T@Ă_ @! ?q`TAR׿E @! ?qTAR+Ϳ+@,TࣟZkT#T"ࣟZkTTˠ@!C!!A @!Ac v{zaq TARa@! ?q@ TARmT"@@ T @#T@@ˁџ#@C}!} ! @C@@ @@AT@@AT @@hT7@@Bq#@73@'@@``T@@w@'&`@@@@R@@Fs"@@<@@2 @@#T@@aџC}!} ! @a@A@@e@@Y bT @a@ccT;@AR@a @! ?qTARןkAT{CT` @! ?qT@a @! @?qaT`@@@@ @"@_T@@a}_ @ w @'@Y@T @ @! ?q@TARھA` @ qTARо@ןk @{@"  @CA?Cxax!!aT@ ?@57@ 4w@R@ 3@-`@@@@cG}xu%VS@sbBB}BB V{5k6I7@C.cG}ңxu$c`}uC >k6w@@@=@@2'cgkosw{-{*?BB@@W?Tcgkosw{? IT?aT;}C;?@" P@ @!4!L ?q]TAR1@4L q \TAR(@䧟?@П[T R;@r @zbuBT(AR!@! ?q@TAR য়Пk!T@ZCBT@Y@ @! ?qT@!@! @?qT @@য়Пk TxT "T@'@Z`DT @>5T@ !@!|4?@T`D |"  T TxTAR@ @! ?qTARয়ПkT{CI3T` @! ?qT@ @! @?qaT@@য়ПkT0T8T @;@C@@T(cEgEkEoEsEwE{EEEEBWE@BET*{ƨ_;};C, @hT T @`7T@RhTC RG;@?@r7KOS @ MT7@Au!7` T7@6T7@u~!7aB 747@G@ @Axa@x`C'@@ xzZ}#@DB`B0@1T@@5@ @! ?qTAR @! ?q`TARKT@@|"T@;Ҙ@ @! ?qT AR@! ?q`TAR Ts"T"য়kT"Tˠ@!C!!A @!Ac w{zaq TARϼa@! ?q TARǼmTT@@ T@#T@@ˁџ#@C}!} ! @C@@ @@A(T@@T @@T7@@Bq#@73@'@@`T@@w@W$'Zয়k*TZ`_"T@@ @! ?qT@@! @?qT@@`@@@@ "IT@_ @! ?q TARSE @! ?q` TAR+I+@, Tয়k T@@!T @ @#T@@aџC}!} ! @a@A~R@@@@@@ AR@a @! ?qTAR য়ПkTCbT @! ?qT@a @! @?qAT`@@য়Пk`T#@@@@ "T @a@ccT@@ @"@_T@@a}_ @ 1@'@ZT @ @! ?qTAR@@` @ qTAR@য়Пk@{9 @"  @C A?Cxax!!aT@ @ 3@57@4w@7`@@@@cG}xu%VS@sbBB}BB .{5k637@CcG}ңxu$c`}uC k6w@@@!@@cgkosw{{C*/BB@@G?ITSW[_cgkosw?  T?H}T9}#3e+/@P@`@X6` @ @u7@X6 @ @!r7BRKqן/@uT+@ҘcC?IT @@`@`X6` @ @6@@ @6RbRy@ @[@6@@qTR _kTCB?(TT ՟bT?@V@TT˵M5iT@ !@!z4 ?@_T`ѡD Ҕ|Ӕ"TTTe @ CX6@ @B6@@ @@B6RbR @B @!E@6@@q ?TR_k?TsBT {CbTs`@@X6` @ @@6@@ @@6RbR@@@ @P@6@@q-<TR_k`TT +@3@@TSEWE[E_EcEgEkEoEsEwEBGE@B`TC*{ƨ_#9}+3&] @ X6 @ @6@@ @7 BRKqןL?CTZR?T#7+@'/@;?CY MT'@tA!` LT''@GT'@t~!'aBJ4'@7@ @Axa@x` B@@ xy9}w9@b` B0@FT @@`@@X6` @ @6@@ @`6RbRe@ @2@6@@7@#T6u@A@@X6 @ @6@@ @6RbRC@` @@6@@qT@#_IT@u@C@@A{` X6 @ @ 6@@ @ 6RbR!@`  @a@6@@qmT_TT @"T@_C}!} ! @"9@C@ @XhT@"T @H1T'@@Bq#@'@ @`T@@u@7WTRkjT" @ X6 @ @6@@ @ 7 BRȯKkT@ Tm @ X6 @ @6@@ @ 7 BRK @X6 @ @6@@ @7BRKqT @#RTd#џT |@a_@ X6 @ @ 6@@ @ 6RbR@`  @a%@6@@q-'T\#B@Rr! ?q TARs `T `TRd#@T aT @"T@_C}!} ! @"@9AP@Rr! ?q`TARD `LT ``T"TRq @ X6 @ @6@@ @ 7 BR)@KkT@@@@_k@TTc T  @X6 @ @6@@ @7BRKqן @X6 @ @6@@ @ 7BRKqן@Rr! ?q TAR `T ` џT@@cT@@"T@@_} 9@Rr! ?q TARŴ `T `!Tc?@VT@`@X6` @ @6@@ @6RbR@@ @@6@@q TR_ksC""c@Rr! ?q@ TAR `T `@@ @X6 @ @6@@ @ 7BRxKqן@@Rr! ?q@ TARp `,T `w@@C{a#{!?!T9l5'@4u@@Rr! ?q TARO@ ` T `ATR@#@O`T@@_E}xt%US@sbBB}BB `z4j5@@'@Cz@@_E}ңxt$c`}tC Bj5u@b@@ @6RbR @@6@@qTRf@@ @7UQ@Rr! ?qTAR@ `T `C.O@@H!0!P ?qTARճ `,T `=SW[_cgkosw@@{C*/BB@@G?ITSW[_cgkosw?  T?H}T9}#3]+/@P@`@X6` @ @u7@X6 @ @!r7BROKqן/@uT+@ҘcC?IT @@`@`X6` @ @6@@ @6RbRq@ @[@6@@qTR _kTCB?(TT ՟bT?@V@TT˵M5iT@ !@!z4 ?@_T`ѡD Ҕ|Ӕ"TTTe @ CX6@ @B6@@ @@B6RbR@B @!E@6@@q ?TR_k?TsBT {CbTs`@@X6` @ @@6@@ @@6RbR@@@ @P@6@@q-<TR_k`TT +@3@@TSEWE[E_EcEgEkEoEsEwEBGE@B`TC*{ƨ_#9}+3&] @ X6 @ @6@@ @7 BRvKqןL?CTZR?T#7+@'/@;?CY MT'@tA!` LT''@GT'@t~!'aBJ4'@7@ @Axa@x` B@@ xy9}w9@b` B0@FT @@`@@X6` @ @6@@ @`6RbR]@ @2@6@@7@#T6u@A@@X6 @ @6@@ @6RbR;@` @@6@@qT@#_IT@u@C@@A{` X6 @ @ 6@@ @ 6RbR@`  @a@6@@qmT_TT @"T@_C}!} ! @"9@C@ @XhT@"T @H1T'@@Bq#@'@ @`T@@u@7WTRkjT" @ X6 @ @6@@ @ 7 BRKkT@ Tm @ X6 @ @6@@ @ 7 BRjK @X6 @ @6@@ @7BR\KqT @#RTd#џT |@a_@ X6 @ @ 6@@ @ 6RbR}@`  @a%@6@@q-'T\#B@Rr! ?q TARk `T `TRd#@T aT @"T@_C}!} ! @"@9AP@Rr! ?q`TAR< `LT ``T"TRq @ X6 @ @6@@ @ 7 BR@KkT@@@@_k@TTc T  @X6 @ @6@@ @7BRKqן @X6 @ @6@@ @ 7BRKqן@Rr! ?q TAR `T ` џT@@cT@@"T@@_} 9@Rr! ?q TAR `T `!Tc?@VT@`@X6` @ @6@@ @6RbR@@ @@6@@q TR_ksC""c@Rr! ?q@ TAR `T `@@ @X6 @ @6@@ @ 7BR4Kqן@@Rr! ?q@ TARh `,T `w@@C{a#{!?!T9l5'@4u@@Rr! ?q TARG@ ` T `ATR@#@O`T@@_E}xt%US@sbBB}BB Xz4j5@@'@Cz@@_E}ңxt$c`}tC :j5u@b@@ @6RbR @@6@@qTRf@@ @7UQ@Rr! ?qTAR@ `T `C.O@@H!0!P ?qTARͯ `,T `=SW[_cgkosw@@{C*/BB@@G?ITSW[_cgkosw?  T?HT:}#3U+/@P@`@X6` @ @7@X6 @ @}7q@TKqן/@BT+@*ybwB_)T@!@@`X6 @ @6@@ @6RBRi@ @e@6@@qTR kT9CB_(T|T bT@@Y\T[U5iT@ !@!{4 ?@_T˟D ҵ|ӵ"TT|T @GX6@ @G6@@ @G6RBR@@G @L@6@@qCTRkCTBџT CbT@EX6 @ @bE6@@ @D6RBR@@E @![@6@@q@TRk`TT +@3@@TSEWE[E_EcEgEkEoEsEwEBGE@BamTC*{ƨ_#:}+3&] @ X6 @ @6@@ @7 q?TKqןK_KT{R_T#7+@'/@;?Ce mT'@ tA!` LT''@QT'@t~!'aBT4'@7@ @Axa@x` B@@ xy9}d9@b` _0BPT@@`@X6` @ @"6@@ @6RBRS@ @;@6@@ 7@z#)T6u@A@@X6 @ @6@@ @ 6RBR1@` @@6@@q"T@{#_IT@v@C@@Aua{`X6 @ @ 6@@ @ 6RBR@`  @a@6@@qmT_TT @"T@_C}!} ! @"9@C@ @XhT@!+T @H;T'@@Bq#@'@ @``T@@v@6AWT RkJT" @X6 @ @6@@ @7qTKkT@ Tl @X6 @ @6@@ @7qTK RraTRR RrT @X6 @ @6@@ @7qTKq-T @z#R(T#џiT{@_`@ X6` @ @B 6@@ @ 6RBRa@  @!-@6@@q.T[#0@Rr! ?q TARO `T ``T@T#@T aT @"T@_C}!} ! @"@9A8@Rr! ?qTAR `LT `T"TRZ @ X6 @ @6@@ @`7 Eq@TKkT RrTy@@@@@kTɼT#T @X6 @ @6@@ @ 7qTKqן @ X6 @ @6@@ @@7 qTKqן RͱRrT7@ RR±rT.K@Rr! ?q@TAR `,T ` 뢪T @a@bcTM RRr T@@"T@@_} 9@Rr! ?q TARq `T `@T@@YT@@X6 @ @"6@@ @6RBRW@ @@6@@q-TRk"" RUr@aTR=ҾR@8@Rr! ?q` TAR0 `̙T `@@ @X6 @ @6@@ @7]q@ TKqן@@@Rr! ?q` TAR  `T `"C{a#{!?!T9 5'@4v@]@Rr! ?q TAR@ `LT ``T@#@T@@_E}xt%US@sbBB}BB z4j5H'@C,@@@@ RΰRr@ T8@e_E}ңxt$c`}tC եj5v@@@ @6RBR@ @@6@@qTR @@ @78@Rr! ?qTAR}@ `T `* RRr}T@@!0!P ?q`TAR` `,T `SW[_cgkosw@@@{C*/BB@@G?TSW[_cgkosw? T?H|T9}#3+/@P@`@X6` @ @t7@X6 @ @q7BRqן/@BuT+@ҘcC?T @@`@X6` @ @6@@ @6bRR@@ @[@6A@R!@?qmT R _kTCB?TT ՟T@ XTT˵M5iT@ !@!z4 ?@_T`ѡD Ҕ|Ӕ"TTTe @`BX6@ @B6@@ @A6bRR@A @!E@6A@R!@?qMT R_kAATsBHT {CTs`@@X6` @ @@6@@ @@6bRR~@ @ @AP@6A@R!@?qMT R_k TT +@3@@TxSEWE[E_EcEgEkEoEsEwEBGE@B!_TC*{ƨ_#9}+3! @ X6 @ @6@@ @ 7 BR:qןK?`CTZR?T#7+@'/@;?C5X mT'@ tA!` LT''@@IT'@t~!'aBI4'@7@ @Axa@x` B@@ xy9}d9@b` _0BET@@`@ X6` @ @6@@ @@6RbR@ @2@6@@qT @#RT6 @ @6@@ @`6RbRŬ@ @!@6@@q-#T@BTu@A@@_7 @X6 @ @6@@ @7BRkT@#_iT @u@C@@A{` X6 @ @B 6@@ @ 6RbR@  @A@6@@qmT"TT @"T@_C}!} ! @"9@C@ @X(T@aT @h-T'@@Bq#@'@ @`T@@u@3=TRkkT @ X6 @ @6@@ @`7 BR. @ X6 @ @6@@ @7 BR qT@#Td#џ)T|@a_@ X6 @ @6@@ @ 6RbR@` @$@6@@qTT  @"T@_C}!} ! @"@9A@Rr! ?q`TARڨ `T `TR1d#@IT|@a_@@_7 @X6 @ @6@@ @7BR@kT\#TRkT\#@Rr! ?qTAR `lT `T(aTR@@@@ @X6 @ @6@@ @7BRqן_kTITT @X6 @ @6@@ @ 7BRtqן@Rr! ?q@ TARn `TR џT@@cT@@"T@@_} 9@Rr! ?q TARG `,T#@ XAT@`@X6` @ @6@@ @ 6bRR/@@ @A@6A@R!@?qMT R_ksC""c@Rr! ?q TAR `TR@@ @X6 @ @6@@ @7BRqן@@@@Rr! ?qTAR `TR{C {a#{!?!T9@Rr! ?qTARا@ `T `T\#1`5'@4u@@#@l@@_E}xt%US@sbBB}BB z4j5@@'@C@@_E}ңxt$c`}tC ȡj5u@g@@ @6RbR@ @!@6@R@q-T:Rg@@ @7W@Rr! ?qTARq@ `LTRI5W@@!0!P ?q`TAR_ `TRDSW[_cgkosw@@@{C*/BB@@G?TSW[_cgkosw? T?H|T9}#3+/@P@`@X6` @ @t7@X6 @ @q7BRڤqן/@BuT+@ҘcC?T @@`@X6` @ @6@@ @6bRR@@ @[@6A@R!@?qmT R _kTCB?TT ՟T@ XTT˵M5iT@ !@!z4 ?@_T`ѡD Ҕ|Ӕ"TTTe @`BX6@ @B6@@ @A6bRR@A @!E@6A@R!@?qMT R_kAATsBHT {CTs`@@X6` @ @@6@@ @@6bRR~@ @ @AP@6A@R!@?qMT R_k TT +@3@@TxSEWE[E_EcEgEkEoEsEwEBGE@B!_TC*{ƨ_#9}+3! @ X6 @ @6@@ @ 7 BRqןK?`CTZR?T#7+@'/@;?C5X mT'@ tA!` LT''@@IT'@t~!'aBI4'@7@ @Axa@x` B@@ xy9}d9@b` _0BET@@`@ X6` @ @6@@ @@6RbR@ @2@6@@qT @#RT6 @ @6@@ @`6RbRŨ@ @!@6@@q-#T@BTu@A@@_7 @X6 @ @6@@ @7BRdkT@#_iT @u@C@@A{` X6 @ @B 6@@ @ 6RbR@  @A@6@@qmT"TT @"T@_C}!} ! @"9@C@ @X(T@aT @h-T'@@Bq#@'@ @`T@@u@3=TRkkT @ X6 @ @6@@ @`7 BR @ X6 @ @6@@ @7 BRqT@#Td#џ)T|@a_@ X6 @ @6@@ @ 6RbR@` @$@6@@qTT  @"T@_C}!} ! @"@9A@Rr! ?q`TARڤ `T `TR1d#@IT|@a_@@_7 @X6 @ @6@@ @7BR@kT\#TRkT\#@Rr! ?qTAR `lT `T(aTR@@@@ @X6 @ @6@@ @7BRPqן_kTITT @X6 @ @6@@ @ 7BR8qן@Rr! ?q@ TARn `TR џT@@cT@@"T@@_} 9@Rr! ?q TARG `,T#@ XAT@`@X6` @ @6@@ @ 6bRR/@@ @A@6A@R!@?qMT R_ksC""c@Rr! ?q TAR `TR@@ @X6 @ @6@@ @7BRqן@@@@Rr! ?qTAR `TR{C {a#{!?!T9@Rr! ?qTARأ@ `T `T\#1`5'@4u@@#@l@@_E}xt%US@sbBB}BB z4j5@@'@C@@_E}ңxt$c`}tC ȝj5u@g@@ @6RbR@ @!@6@R@q-T:Rg@@ @7W@Rr! ?qTARq@ `LTRI5W@@!0!P ?q`TAR_ `TRDSW[_cgkosw@@@{C*/BB@@G?iTSW[_cgkosw? )T?HT:}#3+/@P@`@X6` @ @a~7@X6 @ @a{7\qTqן/@~T+@*ybwB_)T@!@@`X6 @ @6@@ @6RBR@ @!d@6@R@qMT4RkT9CB_(T|T T_@W\T[U5iT@ !@!{4 ?@T˟D ҵ|ӵ"TT|T @GX6@ @F6@@ @ F6RBR@F @L@6@R@qMT!RkAFTBџhTCT@FX6 @ @E6@@ @ E6RBR@E @X@6@R@qmT4R k TT +@3@@T|SEWE[E_EcEgEkEoEsEwEBGE@BAjTC*{ƨ_#:}+3% @ X6 @ @6@@ @7 q?TqןL_KT{R_(T#7+@'/@;?C6c MT'@tA!` LT''@`RT'@t~!'aBR4'@7@ @Axa@x` B@@ xy9}w9@b` B0@MT @@`@@X6` @ @6@@ @`6RBR@ @A;@6@@qT @Rz#T6 @ @6@@ @`6RBRɤ@ @a@6@@q&T@Tu@A@@_7 @X6 @ @6@@ @7q@TkT@{#_IT@v@C@@Aua{` X6 @ @b 6@@ @ 6RBR@  @@6@@qmT"_T@T @"T@_C}!} ! @"9@C@ @X(T@!(T @(6T'@@Bq#@'@ @`T@@v@V<=T RkKT @X6 @ @6@@ @@7xqT RGr`TBa*_d`*!37538RT[@SF*N-@k[hA`h5 8_ q+T@"R `Pa@Rr qTBRa@?@ #  R6$E@8@z7O@R?q,#_ q"˵:@C@4hTaÁT@"@ @_6T_@ѕ q (T; R-vT#SC7E @ * *t4To @Ts~SnT5@86s2o @T 5n38RTS@*E7@@;D) (585!@!C_ qT@BѿMVTS R@r{**@@* @#j`TRv5!q@ T Z_TmT @ @ * @#jT@@4@9Cѿ OTS R@r{**@@* @#j`TRnKv5!#qT Z_`TmT @ @ * @#jT@@K4@9C&@6@ "^! A*&62@@@ @#@x95&|@a@J\6 q@T&@5=29R q@T&@ѵ@  @: #@! C@5  ՚B– !?`T@@!@! @TR9d @C+Z<TS@*@ *' @@6@@5!_q T TT@*{ @CG7RU4@9+@6@C+Z5TS@*@s* @@6@@K5!#_q`T  TT@*{ @CG7RKU4@9+@ ˺ѿmTSR@54r@ @4!@7?rT6 @qiT @fB렗T R?j`TRr! ?qTRK65"qT@_MT4@Ty@s!@66!@&@ ! Cg@-&T@@ @  @!0!P ?qTAR ilT jT@b5!q T Z_!T @?,E@@aѿ TS@@@Rr@  @! ?qTARK5!#qT T SCѿMT@@5@ @@hT5$8Ts* @G7RTR4CR!C94T @@@C+ZTS@*@s* @@6@@K5!#_qT  wTT@*{ @CG7RKU4@9+@ mT~@˵lTa@Rr qTBRa@K?@A6$E@8@7`6R?@!cU@!ؚ|Û#Ӥ4?*T~c)T@#@ @"T##CBS@@Rr'TD59-?@?_TЕ5K@2K@!K˜4R?@?SC /@C+ZTS@*@s*; @@6@@K5!#_qT `aTT@*{$ @CG7RKU4@9+@J@5  ՚5 T9@ ˁ?B]T"@_T ! @akѿTS R@r{**@@ * @#j`TRKv5!#qT Z_zTmT @ @ * @#jT@@K4@9CѿMT@+@g@s;*@ 3H6@@ `$ T@ 4@7~!g a3T:p7`:h6@e# g h@e c `!8b y`28 TG99@34 T@" @_cT?99@Yn@9@RѥaT @+@Oh@`@@eT`8@qB !(T@ B@B @#T@>@'@sѿTS@@@ t[ARs\5!#qT aT SC ѿTS@@@t AR";=5"CqTf TT`@ARэ ;={4@9&_&@ +7@8@@2kP@`4)T?TT _8q`T!T@@$E_qa@8 @@ј3!8@; T RS*@r* @_#j TRp575IT@ 6c@R!7g@?T?9 !˄@T@! @BMT!јRC8aT @@lѿ-TS R@r{**@@ *w @#j`TR.Kv5!#qyT Z_`LTmT @ @ *] @#jT@@K4@9C҂?9"@@@@2@k @"`A@7љ ?CT?9 ˅@$ˡ2T@ @b'T4ј7R@@[4c@75sRg@@_T @@ @ P Rr? j@8TR `28GӠD99@@5@# @T?99@Y@9@#T@@?mT @!@Rr q`3T#RG@ @Rr! ?q4TBR@94R"R?qTT?qT?q!T4 Ձ@85C?8b@!AG@G@ `@Rr q@TBR@9B4%RR! A "QAB|Hh8_q@959!`2`@A84"QB_$qTR5a8`@@K` @@95a@"C"@8G@рˀja8j!8@4(T@" @_T?99@Y:@@9@Rqa @?qTX@?qAT@c@Ёa @?q`T!Qa 8$Ryc@! ?qTR K6o4@9CF@_ oTSC,E@@bs4@9C2R#y54@9+@A'R!9!@?@@"A@! @?T?99@Y@@9@!na @?qT!Qa @@K[p4@9C@@4@9C@@<@@<#y 4@9CAIT @ @ @T @ @ yT @ @  T @ @ lT @ @ _MT{@?T @ @ 2 dT`@M]Ts`@T`@ARs[4@9Ҁ T @ @ `@@@9R;T #@ @&@!: C@@@G @h@@"A @C F@88T}@^@a@'@a@Rr qjT`@c @@?Kk7RaRJ@@ @_q @7MtT+ R@r@*3 * @"j TR5HT?9 @#a7T@c @""Tc4јҾ{TS@@_T @@ @ * @"j!T@@Z4#ҡ`!T?9 @BT@X @ TR x`@x @@?7՚B0`@x @ @?`@d @C@?7@?@f5_ q@\T^T !?냄T@`!@! @aTG?@9uq9!hSx(D@9_4dA@9@_4@R҂RҎ "@,!@@'@l!@@$`Aa@9a86@Ra8B(B c8B|@? xT`cTdE_ cT@9Ezc8!!D9?TaG_T{A_ Ta*3S Ga@8"@@zdT $`*GCR!C9RA@9!86a8R`( b8|@?gTXTdEBWTC@9zc8!!D9?TVA!G?WT6s2R!C9R@@$ A!G@9@a@@'@bCd@88T/C e@88T 9GB9 9gC d@88TC d@88TC C@88T<C C@88T C e@88T6C e@88TxC e@88T:C d@88TE 9GB9 9C e@88TdC d@88T[ #@88T) C@88TҦAa!!C#'+/3"@Vq6T@@@@a@?@'@NTSCE#R7 @ **;t4To @TSnT5@8o @*T5n68RTS@*E7@@;! 4CR!C9@986a8RB(B c8B|@iFT?HTdE! HT#@9Ezc8D9TF G@3TB*R!C9R G@9@;+~a@;@+@'@?@@MDT[S*E#+ R@  *6w4_T@v6ST5`@8@$B! _d **7s588RT[@*SFa@9a86@Ra8B(B c8B|@;Ta?4TdE!_3T#@9Ezc8D9T`2 G@$T{A_ T! * Ga@8"@@zdT $ *CR!C9DR@?#T @!@ TE@?#T @!@* @"qF7@?!T @!@Rra@ qTp@? T @!@Rra@ qTW@?T @!@Rra@ qYTY(TBG!@9!Dd8c?(TT`m T@@``6 @@_HT@5 8ѿ@ T * @"G7R_ TRY@@z4R!C9C?@_ qSTjq!TˣT?`? !R: @#@@! C?jqAT3aT @T`@]]@D)2&J@_-T @@ @ @<@'@CR!C9raR!`:_ q`T- Ta B_T@ B@B @T3C@!@9GB!  #@@trTG@T?9`@3@s#T#@C+@ZrG@aTT{C@s(@sk@sm@s`3[jqcu?h`2QK@H?jqT ?@@@'@_ q?@@a@2@k| @'@_ q T?@ RE#@C+@rG@ TT{!#/҃jqTukT?@ja@?@'@L#@@rTG@4#S RGm?#H'G`*@4@?9'`!@7'`1` 1@?9@@@`';K@#'+/3K@{BS[*c @/62CBT AR˶ T@9?qT?Tq!T_O)!B/@"@cT{FSG[HcI_`4s28RT&?TqTR)T@9?qTARC5@9?qTC#Q @aR@s2C8{B[SvCcC!@T@@3@9sr__aT!D"@A(@ 7B@ R!#3@9s @!,!T ?q T#BR@,T qTBRC@ @CC@ qT4R$E@8@}*hC` Bz"@aTA @`@RY@vCC@B@@c@@!T{BSC[DcE_Re4@ @@ @@ @A,@? qs  {CBS; @@'R'%4r #qTBR f@F6$E@8@7'@R*'eB'@@BT{ESF;@_ր{DS[cksBB@D@GdvCuW@}!A@@dC"@ @c @!,!T @Yxc?q TBR#@x @D#Bx  @@77GvC@sC!B@`@#@@@!T{BSC[DcEkFsG_,T q` TCR @BZA BBC @\B}B BT' @T96bTFd@8d8BBD9_C(Tbcc#TT @@@"@##T@B@TBBBBCBQ @T T96_TA#RR @: @@ ;@9q!TR   {!G  {BhES[cksB@RCB@ÚBS@!'E@`@w@:@ 7b@C @MT @` @cGBB tCd @B@a@ ?֠C9'E@:@ @!4!L ?qTAR֚BGC@@?klTRC*SA[BcCkDsE{ƨ_a @@@? T!a A ` b@A @?Tqa@"" ` a@ b@@@`@x2`*M{*+BB@@??iTKOSW[_cgko? )T?h?T6}/'+@v`@qן;T'@ҕcCT BB T@@qןkT?Tb T&@U-Ts(5_iT@ !@!{4 ?@_T@_sD |#_TT?TZC_i"T@qןkT_i!T%T'@/@@TKEOESEWE[E_EcEgEkEoEB?E@B-T*{ƨ_6}'/}"T{RTDCs* MT@`As! T@`!T@~!B!4@@@B@ x` xb B@@ xy9}w9@b`B0@T @@:q T@R|" T; Z`_ T@@"kkTs"T"Tˀ@!C!!A!AvazakkTcTT@#TџC}!} ! @"9@C@@X(T@ T@T@@Bq@@ @`T@@ s@ "IT_@kT@#aT @#TџC}!} ! @"@9A@q _ @qןkT9C?T џbT @@cT @"@_T@_} 9&@UT @qq@ןkZ#s"C{a#{!?!T9r@5@4@@@dD}xu%TS@sbBB}BB z5j4#@CD}ңxu$c`}uC }j3@ҧKOSW[_cgko'r {*+BB@@??TKOSW[_cgko? IT??T6}/'+@v`@\qן;T'@ҕcCT BB T@@IqןkT?T ՟b T&@U-Ts(5_iT@ !@!{4 ?@_T@_sD |#_TT?TZC_i"T@qןkT_i!T%T'@/@@TKEOESEWE[E_EcEgEkEoEB?E@B-T*{ƨ_6}'/|"T{RTDCs* MT@`As! T@`!T@~!B!4@@@B@ x` xb B@@ xy9}w9@b`B0@T @@q T@R|" T; Z`_ T@@zkkTs"T"Tˀ@!C!!A!AvazahkkTcTT@#TџC}!} ! @"9@C@@X(T@ T@T@@Bq@@ @`T@@ s@ "IT_@$kT@#aT @#TџC}!} ! @"@9A@q _ @qןkT9C?T џbT @@cT @"@_T@_} 9&@UT @q@ןkZ#s"C{a#{!?!T9r@5@4@@@dD}xu%TS@sbBB}BB }z5j4#@CD}ңxu$c`}uC ej3@ҧKOSW[_cgkoZ {*+BB@@??ITKOSW[_cgko?  T?AT6}/'+@BRv`@Kqן=T'@ҕcCTBBIT@BR@KqןkT?T ՟ T&@U/Ts*5_iT@ !@!{4?@_T@_sD |#_TT?TZC_#T@BRKqןkT_"T&T'@/@@TKEOESEWE[E_EcEgEkEoEB?E@BA/T*{ƨ_6}'/v $T{RHTDC+ MT@`As! T@"T@~!B#4@@@B@ x` xb B@@ xy9}w9@b`B0@"T @BR@#KqT@R|") T; Z`_ T@BR@ Kk+Ts"T""TBR@!C!!A!AvazaKk+T#T T@"TџC}!} ! @"9@C@@XhT@a T@HT@@Bq@@ @`T@@ s@ "T_BR@KkT@#!T @"TџC}!} ! @"@9A@k _BR @KqןkT9C?T џT @@cT @"@_T@_} 9&@UAT @BRPKq@ןkZ}#s"C{a#{!?!T9l@5@ 4@@@^D}xu%TS@sbBB}BB Sz5j4#@CD}ңxu$c`}uC ;j3@қKOSW[_cgko0{*+BB@@??)TKOSW[_cgko? T?AT6}/'+@BRv`@Kqן=T'@ҕcCTBBIT@BR@yKqןkT?T T&@U/Ts*5_iT@ !@!{4?@_T@_sD |#_TT?TZC_#T@BR4KqןkT_"T&T'@/@@TvKEOESEWE[E_EcEgEkEoEB?E@BA/T*{ƨ_6}'/w $T{RhTDC+ MT@`As! T@"T@~!B#4@@@B@ x` xb B@@ xy9}w9@b`B0@"T @BR@KqT@R|") T; Z`_ T@BR@Kk+Ts"T""TBR@!C!!A!AvazaKk+T#T T@"TџC}!} ! @"9@C@@XhT@a T@HT@@Bq@@ @`T@@ s@ "T_BR@KKkT@#!T @"TџC}!} ! @"@9A@k _BR @KqןkT9C?T џT @@cT @"@_T@_} 9&@UAT @BRKq@ןkZ}#s"C{a#{!?!T9l@5@ 4@@@^D}xu%TS@sbBB}BB +z5j4#@CD}ңxu$c`}uC j3@қKOSW[_cgko{cDХCS[cksDBBRCb@@Bb@@@_TyCG#@!@FccCC@!@ MTyC"@;"@!@ ? @@ @!4!L ?qTARGBsC@@akTRC*SA[BcCkDsE{ƨ_GB@sC@@a@kT*pBH!@  {C0ES[ckd@@BB@RC#@%'E@@@@ a@?qT!Qaa @hA!@@@@a A@3@?qiT!QBG!BtC!@B@@?C9'E@:@ @!4!L ?qTARBGC@@?kTRC*SA[BcCkD{Ũ_@@*{*'BB@@??)TKOSW[_cgko? T?MT:}+#'@: @q@TKqן'@bIT#@ybtB_hTKqןkaT9CB_T@!@qaT RRr T;kTwT T&@@Y7T15iT@ !@!{4?@T˟D ҵ|ӵ" T TwT KqןkaTCџ)TqT RRr`T@kTi'T.T#@+@@TjKEOESEWE[E_EcEgEkEoEB?E@B!8T*{ƨ_:}'@#+: @{qT RRIrTҵ[_)T{R_T/#@'@37;2 mT @At!` T@(T@t~!aB@(4@/@ @Axa@x`A@@ xy9}d9@b`_0B$T@@%qTKqT@R|#BT3 kjTZ`_T@@KqT RRr`T@@kT{#G "T T@#TџC}!} ! @"9@C@@XT@T@T@@Bq@@ @` T@@v@V_@KqTkKT#Tˀ@!C!!A!Ava{aKq TkT"T RRlrT@t@#TџC}!} ! @"@9A RIr T@RKqןkATBTbqT RR0r@TҜkTf T@a@bcTi @"@_T@_} 9l RR rTu|&@@YT @(q@TKqןk6""VC {a#{!?!T9>@@5@5@@4v@_D}xt%US@sbBB}BB z4j5@C RRr@ T#@_D}ңxt$c`}tC j5v@naKOSW[_cgkoj{S @X6@ @a6@@ @6RBRf @@6@@qT R`@X7B4BL _qTARa@!4!L ?qTARয়ПZSA{¨_` @ @6@@ @6RBR9`@@@@@B0BP _q@TAR) `,T `ZZ@@  {*;BB@@O?T[_cgkosw{? IT?UT6}c?7;@v`@qןbQT7@җcCT BB T@@mqןkT_T ՟b T%@W`BTs=5iT@ !@!{4 ?@Tѡ˟sD |#TT_TBџ6T)qןkT5Tc:T7@?@@T[E_EcEgEkEoEsEwE{EEBOE@BACT*{ƨ_c6}7?|7T{RT RcFr? S? mT?@ ն`As! LT??@6T?@~!?B#64?@@@B@ x`' xb+D+@@ xzZ}#@DB` _0B1T@`@a@q-%T@Rz# T9 @" @6!@!@! @a6RBR @@6@@qM"T  @bTw@V@@_7@X6 @" @6!@!@! @7 q`TAR]@! ?qTARUTয়k T {#_)T@w@C@@Axv{` X6 @ @b 6@@ @ 6RBR` @B@6@@qT#_(T@@T@"T@@@ˁ_@C}!} ! @C@@ @@AT@@T @@hT?@@Bq'@?/@+@@`T#@@ s@3 +>TR տk+T@ X6 @ @6@@ @@7 ! ?q TAR@! ?qTARTয়@@r@@h@@@@@Y@ Ղ#_IT_`@kT@[#]@@T  @ @"T@@@a_C}!} ! @a@Az@RrB _qTAR `T `TR)@RrB _q`TAR `lT `T @@ATR@@@@@_! @yqןkTZC_T  џT @@cT@@@@"T@@@a}_ @ 5%@WT @Fq@ןk9#s"ACxax!?!T@ @ /@5?@4@4F}xv%US@sbBB}BB {6k573@CF}ңxv$c`}vC k3@#[_cgkosw{K {*;BB@@O?T[_cgkosw{? T?HWT6}c?7;@v`@KqןST7@җcCT BB)T@@KqןkT?T ՟ T%@W DTs>5iT@ !@!{4 ?@Tѡ˟sD |#TT?TBџ8TcKqןkT7T<T7@?@@T[E_EcEgEkEoEsEwE{EEBOE@B!ET*{ƨ_c6}7?y@9T{RT RcFr? SA MT?@`As! LT??@8T?@~!?B#84?@@@B@ x`' xb+D+@@ xzZ}#@DB` B0@3T@`@a@Kq-&T@z#RI&Tw@9U@@X6 @" @b6!@!@! @6RBRK @@6@@q T{#_IT@w@C@@Axu{`aX6 @ @6@@ @6RBR+ @B@6@@q T _T@@ T@"T@@@ˁ_@C}!} ! @C@@ @@AhT@@T @@#T?@@Bq'@?/@+@@``T#@@ s@&+d@T @Tw@@U@_7@X6 @" @6!@!@! @A7 q TAR/@! ?q TAR'lTࣟZTRk*T#o@RrB _qTAR `T `TRk T @T#_T_`@Kk+T@[#K@ X6 @ @6@@ @7 ! ?q TAR@! ?qTAR,TࣟZ@@@@@@@@@@@@!T @ @"T@@@a_C}!} ! @a@A>@RrB _qTAR8 `T `T#@@`R.ҀR&_8Bp_!xa` N  {"!BtC S4[!ACFS@@"@@c@W VxcMTC6! b@9(6a@9!87!rT`@SA[B@{Ĩ_77Ga@9C@@@ `@SA[B@{Ĩ_"Ҳ@{[6c8RvCS3s`C@@"@94@9b(7R47@?0q@T8@csCvC`@ a@SA@[BcCsE{ƨ_k87;Rr RRlS@48@`@TZ7vC@@9!r TkD @6@@6kDLq@4@96 Ro@ @@@!"R_@!"RY RRRҖ74@Rt!" FAC@!@B_* T#$RARcAc@tx"@@B 2d 9TR"R @?q T!Q @! @ @kDm54@bCkDcY@@6@@<@`4 @`@?$qTX6 @0@94qT {4vC"Cc@c9#*c|S4 @kD<vC!@!9!*!|Sx 4 @T@kDc0_ C {[65vCSc7Rk RrsB@VF@T@b@4a@?Th T? -T~ T?*T?T@" @@ 0 R`@@)7)X7?,q T @qT!$Q?qTbR!` @@0 `|TT!@!#T"@S007"R.@@.sGa@?aT@"@:@aRG@@A"@?@T?aT "@A@xa`|T "@A@xa@&X7VF{ qTAR?,T( T?$ !T?(T "@A@xaRj`@7X7?0qT @qT!$Q?qTЂR! C` @@:#`|TT@aT"@VF&07RRRV@UT C!? AT 8RC@@`@6`@`_6 z @@@`770qT5 ?0@T?4!T@"@:@zR@@T@"@;@R@@ T@"@<@<R@@t!@94(6r4RsnS 879R*RR5@64 _@`D@Tw4@R!" FAC@!@B_ >T#$RARcAc@sx"c@b@B 2bd 9R"RR @?q:T!Q @ @!@ `@ `@ 3tC@4:vCSA@[B@cCkDsE{ƨ_O@@ "@A@xaE *C@@`@ׯ6y`@_6z @@@!7,q`Tf "@A@xa "@A@xa@" @@R @@ F@TsC :`R@@|ٯ7 @ @6@@ @7R6r@TR! S@% E!"@vCa@ @9r T 7 @9raT D@ (@`"7!@ R"@9q!TR`:Z@ZcgvCa@ @9rT 7 @9raT D@ (@7!@ R"@9qTRRR 7C@@6 R`@ #@@@Y!"R!"RRRR@@ 6A@ @!<@a4@@@ @?$qTX6@@0@94q@T4vCbBc@c9#*c|Syz @!@9A (6r4R879R*t4 @ u6Y4#Rz@@@6 R``@ @@@Y!"RP!"RJvA@!@! @!6AR@@@A@!@! @a6aR @@@=@ 7RR @A@տ6@@@կ6F 7RR[ ,@ qTR҅RRX:;Z@rTZT5"B@B`@@п6w4@@7@@@Tu:RRR-Z@@f ,@ q`TR}cqa@ @9r @zsnS qa@ @9r @zP @`"Re @aT|@+1,vC!@!9!*!|S2#3/= {S3tC[cks@7@@4L q TAR@6;_<RvC@@9@9a(7R 7@ X7`@?,qT 7:R?qB |4@ Rr ? j@T H7T@W7vC@@9!rTsCvC`@ a@SA@[BcCkDsE{ƨ_`@`@6@6Z@@y4`@ 7`@@ Tq@@4@9_6 ՠ7 @ @6@@ @7R! J79Q|@7`@@b@60P qTARx"R ;7@b!H kTAR T R@@ @@@!"R !"RZr4#R@j@@xZ@@)@_A E  {S3`C@@@X6 @"0@9_4qT`R0@9?$qaT@@!sC!tCb@@ @SA{¨@_"@tCSA@{¨@_{S4ЀvC[@@0@9?0qTRRRҪ@2@9$qT`R0@9$qaT` @@5 жCF@@TvC" C3@@SA[B{Ĩ_c @@@4`@ @!@!XF!@ kTcC"@ @@5 гCFa@@MTvC" C7@@cC"a@}{ S4$E[vC@@@5@@@ @@RRR9@2@9$qT`R80@9$qaT` @@5 жCF@@TvC" C3@@SA[B{Ĩ_c @@@4@ @!@!XF!@ k`TcC"ҡ@% @@5 гCFa@@TvC" C7@@cC"҂a@{RS4[vC@UB&RRR@2@9$q@T`R0@9$qaT` @@5 жCF@@-TvC" C3@@SA[B{Ĩ_@@c @@@4`@ @`!@!XF!@ kTcC".@ @@5 гCFa@@TvC" C7@@cC"a@{RS4[vC@VB7s `@ @@RRRU@2@9$qT`RT0@9$qaT` @@5 жCF@@TvC" C3@@SA[B{Ĩ_c @@@X4`@ @ !@!XF!@ kTcC"ҽ@A@@ @@5 гCFa@@TvC" C7@@cC'"қa@ tC&Gdhb88_MT$@9B ! |Sdd88%_8$_8SD*dd88%_8$_8 SD*dd88$_8dd88_ T_TRR_`T#@9Gc|SDd8Cc88C@9!@988!S!*Aa88AR8_$@9|S S {BT@8_k Tҧ Rf R ?iT@9@CzTqTqdFz`TqdGzT%?T ?@T@9(qaT?T{_֠*:@7  {k @7S[s@ @@\_T T96 TcˠU 7@|} A4C@Cc{!B @b 7@a b@_TBbb@_cT Tb@T ub@_T@8b!T9`@Tub@_T"7@``T9"7b{bB"9#@y@@6@!x @A @ @2SA[BcCsEkD{ƨ_!2SA[BkDsE{ƨ_ @! @@Z@@@#7@  @CACHT @_A D!c7_BT@_{S* @B7X7'rTSA{¨_֘b@_6 ` @ @A6@@ @6`@ H6`@@q T* WRdPr!TTE8T@9|Scd2c`2e?6$89AT_#џT8cџTb@9AE|S!d2!`2b?6$89{ScP@$@x&"#T!s< "!k:HG 3[Rv@8*Av!j TߎqT߲qTߢqT&@ZrATTv@9Ѐ7{q TqT߆q TY* T@$TߪqTnq@T 2 RHGsBTa@9a j@T?q!TaT! T"@9_(qaTIT3@R<*c#*q 'T*q@%TjT&@  " 3*_@Є!`!*@Rgg@s Tv@9*qTR R7@CT[BkDRsESAcC{̨_*+Z** 2" R[BkDsESAcC{̨_@9QqT! (`6 "R6@?q-T&@B 3!! "@@AQ&@7@RprT@2&b@R!@HTR[BkDsEs T`@9(qaTbTx?qAT&@a@2&T`@9QqiTQšc|@ "QasB|@AdT"|@BBB Ta@9"@B_$ T R2#T@Rs2R[BkDsEnRk R2x Ra@9"@B_$T!Qc ̌"|@ Q@c!|@ T|D!B!_T`@9@!?$ T`@9tqT&@B 3!! "@"A@A"@"HS@A"@"#`(7_@B 3!! "A@# "&@  "c 3?@*c&@B 3!! "@A&@c 3"B "*@b` ~&@c 3"B "*@bs  {S[#Ba@?@ # R6$E@8@7O@R?q3#_ q@ ˡ!A"A4_TAB_CT@ B@B @T5?@Ҁ"qHT6 R͋T#+[S E@* *4 _hT@x6s~ST5a@8@ $ @u'{¨@@_  {`ES@ 5tC@@`@7`@a? T`@rT@P7@7X6` @ @6@@ @`6R;rT`tC@ @@y qTSA{¨ @_`@@T` @@9qT`SAtC{¨@@_֔C@ р`@@@`@a? hTT`B@?ְ{Ss`vC[vC@!@@5@"z<q!T`E@55@@?4q`T7rTqTsvC`@@SA[B@{Ĩ_u@`svC@ `@@qTq@TsvC`@@SA[B@{Ĩ_`@CsvC@ `@SA@[B@{Ĩ_`@CsvC@ `@@`B@?ָ@@qT@{SstavC[Cc!@@"@9_07b# @AA!@5xc@@@d*(!X 5RjT8RrT`vC@@9zF R_jaT_r!Tb@64@ RjaTrT@* @6 Rr@ jT@@#R Rea a@6@@@"@!fDf!~ӄ~!!7 ^@R#0rC fqT|%C@!# T#H6@@5a@R!(D"0r _q!@9!R_j TC@R@* @H#@C svC`@SA@[BcC{Ũ_R@`4@H6@@a@R)`!(D"0r _q!@9!R_jTC@R@* @@#@@#R@ Rr*!j$R@TaRk`T? T#Tb@B(DB@9BRc 5?HT_qR"0r @AzATC R* @@!O6@h"g@@#@`0 bT@R"0r(c" _q`T1C@R"@D@@R!*@RRxrTC@@@d*"svC[B`@SA@cC{Ũ_ RB* qR_!cR^$a^ dTd` bT_qR"0r @Az!@JT C@Vb^Da^` dAT!A`C#@@J#R@@uR"@`@6@ cR_q!0r Bz@aTC@R@* @@0#@ {StvC[a@ @@y ,q T @@U@ @693@9is@ @zT*f@S4s`uCF@@ TvC" sC7@b@SA[B@{Ĩ_5w@b@6@6@@T @vW4*8 @`" @A@xb`*E"Ҡ@aR @a@@w@b{`bDSa[utvCBG@!Ad@@@sC  @w"D @@a@xd]@v@SA[B@{Ĩ_{`[vDSvCcxk@B@$GB@97`@} 06@ @ $QqTs yas@!RsbvCG@4C@@@9!qT@@SA[BcCkD{ƨ_`F@MT9C 3 @@SA[BcCkD{ƨ_ր @@Zs@@7@@@U|ys"A;C@a@@@@ @4XK hT `@)r` T`@t" TvC@@@y q`T``G@ @?rT@@B9 7ssEs@a xF@!? @qT@`0@9!$Q?qT@@z@@ 6!RG@Tw"ytRER@9CvC%@@SAGR[BCcCkD{ƨ@@yDR qi@@@r`T`@CT4CT@s"T`@rT C@TssEs@sbK@ @R s!Rs@ysEsb=1T"y@@Ja!" 64rT!RsE y`sF;C@t@MTx"@ChT`BB ! C"sEwR@Ru"6@t@sM{`SstvC[A@@D@9C @ 5xc87A@9 7@@97!raT`D@ (@7!@ R#@9!? q T?q`T@ 7@@t`ЁCF!@@- TsvCb@A@9`@a (6C@#  @@SA[B{è_4avC"@A@97!raT`D@ (@`7!@ R"@9!?qT` ,@ q`Tt`ЖCF@@-TsvC" C5`@@SA[B{è_֔C`@@ #  `vC@A@9!rTSA[B{èr |@ ,@ qATD77&!@"ҝ"ҙ@ C@"  `@@{`[uСvCSA"@@C@9B @ 6xb 87s`aCF!@@TvC@b@9B 7a@96]@4b@96a@9 4SraT`D@ (@@7!@ R"@9SqT5q`T*SAR[B{èBraT`D@ (@ 7!@ R"@9B_qT sC`@ a`@SA[B{è_a@9b@94SrT",*nvCSA@[B{è@_G ,@ q`T5`@c77 ;vC@`@ ,@ qT  4.{[vvCcwSC#!@@ @9rY@aTbBDC@b(@7`@ RB#@@9!@@yR#@! ?$q?Hqs*K7cX68 @@! 7!k TvC@"@9(7" 7 @97S4q`T q TvC@@SA[BcC#@{Ũ_`#k!TvC@"@9"'6CvC@@SA@[BcC#@{Ũ_`,@ q#@4`7qTqB?!?A@c @qT4!*!  @@vC@ 97"@9BA`qB A@@ @6aR!Kd@@@ 7@@!vC@@9B(6`@AC@ vC@@9sq@ T 5q@ T*SA"R[BcC#@{Ũdb @RA#0r@(D@@9xeBR`@ qj T R*`a C@iC@! SA[BcC#@{Ũ 96a` !E8 $Qq(T35  @@vC@ 968@"@9;@"@95l|@!+C*@B l@@.!*!`F"CvC@@  @u R@@aR@@N{`bDSc[ Rcks@cG&ECh@Z`г@ C## a!tC ?C@yDy{j"@)T?@ ?c&T ?%T@! @a6;@C@9vcCut;@O *@3~GR*S*RC`7 ;T@aB @j,Qq;T4$@q@T$Rj@3T3@$C@ $C2Tz?5FF`OItCS@@U@9rc!T?@?#T`aCF;F(D'T@9j@,qDT0q+T7Cwu6`xCFC@@!`_T`cA @ABC@ @FTx!@mkTvC@}@c}B` Ձ@"h TC@F@#C@O@!F@ ?#TK@Z}A !x B)Ba@ h:Z#?T@A)#LS_kHTA6A€RDBa@ h:Z#?BT  @O@@Sc@ q@sT`tC@@9 6C@CFO@@!@@?뭀T CDK@AC@F?TW@ @aM7@c@!@B`x!B?bTW@@@7@"@|@`TO@ 0Tc@ qeTvRS@@}[b?TWK@ A@h3@@7Cs"?Tc@RRR@7R6Cs"?T W@w(5C@F@ pTO@C@!F @?q)gT!Q "<#-;@@a! @'7 BT@@9rT&(6;@ @k@qjT0@9,q%T `7U@9rcT`D@ (@7!@ R?@"@9c?BTsGT7@wvc@@~G(D !Rj T VT?q`T"#T@9@?,q@T?0qT@7@"@V|@_`T"8"T`C7@(D@y?9x`:5`AyCyc@ q`@TC?@! c@qT`tC@@@SA[BcCkDsE{ͨ_!RjT @NS_k)?TX6 @ @qS_T@BRCZ@C@ ^7c@ q[T#"?bT*2 @@jT5"?T`*OItCS@@4;@"T_ @!x CTa7@!(D?9q 7TxA€RR@*@@jT7@!(D?94 @@7@@@`C@y6@@6W1@ 6?qTMC`#tC)SA@[B@@cCkDsE{ͨ_ C@`F@m0T`tC@@@9` 6`GC`@?a@ $ d U ,@ qcab!@B|G? BTQK@[@A`@!@`! i~C@9c;@vC?뢲Ta`"C6FWCCW@@! _;Tc @C@BdA FK@Tx!@-'Tv B}@B}c`@#h _TC@F@`C@!F @$5K@}SAT!x B)A@#! ?#T@A)#LS_kHT!6A€RA@#! ?"TS@ :Z@7@@SS@@5@"AT@@ @TW:TK@Z}W@OA" @@! C@O@F@*9TC@!F `C@y -7 @"?q),T!Q ;@Ok-1T@}vCK@@OA:c@yj|@zj< @7#`ATO@K@C@A@@!`sA€R@a@?̲TcRG$0rcAF @e@!C7@xf(D@9`@cR qj1T R*`a `C @ #A?***@y*_@T6`G@6a!4G!@A(**a!C"@y_r T 6`E@(6a!B!@w*Y*a dA@94kkB*_q!dA 9 R"@7? @qT$QqHT66RC*rC@`TR!G@C@"{CBB`O@O@c@R qTTK@}S[A@@7#X6 @ 0@9(q("T5@"@#B"?TS@[@ @AR@yzr TB`TaR! v @` ;@C?룠T`RS@ @!} `gK@RRR@A@h8@ 7sB#?#T|Z@RRR`7RC@CFO@@@@?MT?T @A€R?BT@!7@! ;@/@ҷ6:KW@g@ |@?T9 џ뢓T`@`ARRR|@@?HTw4! 뢔T@}vC$_TK@B}A@S@ !  љ@rC@ `@CR@a ?T`A@x!_HT@Z#B} ! y@-`:RtC@@9/7@9R6SqS@V@z_n@_6 @!0@9!,Q?qBbC KNC@K@ @ {[uvCSc@@2@9@(qAT@@!(@ ?a B@3 ab@ D@!`bcBFcBC @B@!? T`A@x!`@ 2ar`TE` a@!2a0@9@?(qAT@n@8!R @?qT"Q  @7t`CF@@ TvC" C3@@SA[BcC{Ĩ_!Rc@\@/6in @?qT!Q $",@tfA@9 4R҂R@9 4` @R҂Ra`{ C!tCS c s!@B;@@G`3@9s@(qATs@@@9rCTa!D"@A(@a<7B@ R!#!@9!Ca!B!@[06`a C!G@!@@C7@a@,T qTROC@`@@!@@@#7`' HRB(DB@9_q" _'@(D9"7a@b3@9 @_(qAT! @!T@@! @1T`2@@?9T@[ k 65 RRG`@PC;`+$E3@a3@9_q@`@?(qAT @|@@G@@@+@? J4@;@ @@@C`6 2 @_@`@#5 #7@4C@ q2T@4@P67@aN@@L@9!@2A ?@ @a!A!@8x``` F7!C@!@lT"Go`hE@@8@xR.@@!%T@ @@Cj@@@H@9?qTL@9A7@!@`N@@b%7@@L@9A x@xL92bN@d:@A@!?L9C@ qT@v>@q @qC  t"@U|@@y*@$7`F@˿#Ta`!FC"@@?M%T @RRCkT?@ *T|eN@|:#@Th`_AT{gg5Q@"  kJT?@@ 4aN@G@b:@2G @5@4aT%˿kT@R63@C@Rc8@}Rb @"CA@# C  R_`'" '@(D9ݧ6b@`|EC@ T 5`[@B@kTC@ q` T @k 7@C@ ` @tC`C@!@#@ @kMT+@* `:@5`[@B@klT @7@C@ a a @#tCaCc@!@"`@[KkM02`'@`dA!(D@9 9`[@B@klT[KkM7@#` @G3C@a@B ?T"@C"#c k ! b@B @C"kM`tC@@a!BG@"@ca T{ISJcLsN_`PC@``@ @jBRAA,@? q!C7@ d r`$E@8@@7>` @RC@!R q R GG K@@@6na@`|E"@_a T@4@@@61e ^L@9D07@6a!$E!@!8@a7C@ 7 X6 @ @6@@ @@6T@L@9`F@@T@@`3@9s@(qaTs@k f@,@r`T! @5  `C@ ?T`[ k [ k ,@r@Tc2@C@! s @5@7X6 @ @6@@ @7R @$L@9m [ k q [KkM@9#q@TccG@9aa8B_aT@L@9N@@8"_qT`T @4@@@ 7@[KkM [ k 1[KkM `{BSt[vCck!@@o5@ @9"raTbBDC@b(@7c@ RB $S@9s qTz@B@0@9!$Q?q)TR&rYz4T q@TvC@@a!Bo@"@cҁcT{NSO[PcQkR_@@s@G7 @@$!B9?q`2T q!T@*nq T'X6R @!?q'T@ @@ ?4Tnq .T`yvCF!Ce@B9! 7a`!dA(D!@99A95@@!@ B92 9@/7@@ @@&T@" @@9 06 C?`@fq@ T@6Rra(Tq` T@` BzT@@A!?@)T A @ vC@@9069C!@! !@sSt06`SRC@@[b,@_ qT3RU`SR! @A@xaN-7X6R"4r qTR@ynq`TvC@@9A77a!C"@C #XC C<fqT@ @@a!T`vC@@9:06@CG!@@75˵C?T @T@ @a6AR7TUzG@@;`vCA@@!@@9raT@D@@(@`37B@ R#@9 ?ֿ q $TsvC`@@`vC\D@9@@9rT +@`7!@ R"@9;D)kJT{;# RF#@{ Gy RJ`h;8ID!9  @qT6w@hE@@@@ 7@@@9 oTC5 @xxa@" b T(@@\@`7V&E{@ ?r@T!,!T ?q TRABBtCB@B@97b @BB2`@@`@@!ECR`@ f|@УR@BR@@@zE?@`$B`:B R@@@  CH{B#=R==#='=+=/=3= @ BCCB$E#@#C)e{S* @7?rT R?jT qAzTqiT`@ @` @7`@ `@qTq TBq@Ta@ 2`7@7SA{è_@B@A@ D@!U!aB,@@B@.@@@ @ @x2t @!RqT@B@ A@ D@!U!ҁB0@ B#@R2r?@?@?@" @ 7@2 t @A!B @B@#AD"@B"!` ^a@?rT6RSA{è9Sa@`@6D'(H@g.EF PCc$E" @f*@i*ABQh@i`@" SA[B{Ĩ_֠C_q!T*@"@@C@?T A @ @ *?Tc@` @T@T ?TcRSA[B{Ĩ_ֶ?a@y!?C@ cC?u7@@ @T @"R@A #!"j!@#D @!R_jTAc:B@! #B`!!:A!"  { @9!G #@q` Td@}ӢcBCB!(DC@`@?9kT`@9?q TrTa@@07 @b"@"" @?q T!Q`@9rAT:U<:B@ {R!tC!@!@9? @T!C!@"@"A @!4!L ?q@TAR>!B"@9B2"98@@@  BРc$EBc@T`<@@D@H R R R)C!@#7c|-,qTdc@hc8 $QqT$@"%@@@ T77_qT_ qT?+`Tkd @_qTG@_ք77`_qT@$@@kaT_ք ,qT,@`(G@@@<@@_  RѠ{Bk S!gF@/!@3E9S25c дwC[s @@9!raTD"@A(@47B@ R!#!@9!@9!lE!@#@)7лСB!8@27/ 7@C@@@*P6Rw4dC27 r7TdA@985wCBRB!@@' @97qR*:<AC F @B@ @6|'E@$@ 05"҄CB.@c5|@ Bz?@;9@ B 7!R&:D@C@@"@&@?k"T!" RbR@!|#ЦШХDh!8@9 @W47R="@"@B/@@BT{FSG$kJ/`'E@8@Џ6$@R=R R>@C@w`'E@A,@? q!]@@ @AR03V3R@ 4r` q T2@R_]8@!C@"@B"a@#@c($@!!`.9@ @ @ vR>] ^=r @TdA@9=!!@. 4 @7@@RTB҃R@C:S @;@h482@cTB`@1R!4ra ?qT2@R RM>dA!(D@9 97[c s 7{SFaC@!@-TvC@@0sCa@" b 2@SA{¨@_"e7{ES[c@5 RR!DRG!@@3 @ @s#`@yt@|Sv@9T tq@ TqA TBF!EC!@B@_lTb.@!$Ec @#BA@@9x@?`4R qT*?5|D@@@Sa@ R?j Ta @?qIT!Qa `$o=SA[BcC{Ĩ_U|SC@ qT@@ 7@? T@7Rr@T P7@7 X6 @R @a6@@ @6R@0R *RH3tC@ @@y"@9 rAT @P@TB64!@ @@y q`T @@@y" raT @B(_cap7a8@ tZQ_qiTR<qT6uP@:NӬz6a@RrR *`? rT<!C@!@ uPq@TB6q3]B@?8R6wB(QB<_qcw6@@@RhT7R @@9qR@@R.n {SvCA"@@B @ 5xb;`~D@@!@BR5s~D`@@@Sa@ R?j@Ta @?q)T!Qa `$<vC@@SA{è@_5a@RrR *`? rT;vC@@SA{è@_9@@6 { RSDB!@@3 @ @s#`@kTc@yBBc!CC9bD"`a@yA07`"@"@?qT!QDg:@!$` @@7@{¨x_B4BL _q TARX0@{¨x_@@ {S* B[c@ Ђ@ D@!u~}" RVN)*Bq(T qTk` T qATbр SA[BcC{Ũ_S4#0`Q!㟂 `T# Bxw#9Bju8Rd@${772 @9#@`ˀ>q` T SA[BcC{Ũ_`T# Bxw 9B@!{7@2q@TBq@T@ @ @@x2 SA[BcC#@{Ũ_(Bр SA[BcC{Ũ_:qT9 7ju8 @9 |@,@@@Rr?@" @ 7@2 R"RA\'Ђ@!xCB 2 @$#` @@@!@@@ ju8*@#*B}C*Aha8b@*p1@{S@@"\@b6!@!R#?/?/`RЃ@FcC@b@TA#R@x$@ 2C)&EҠ@$@@"@@yBp63@!tC!@?T?/  /=/  {ES@5ЀC@@`@@ 7@a?  T`@rTP7 @7X6` @ @6@@ @6R#raTSAtC{¨@@_`@@T` @@9qT ՀtC@ @@y qT @SA{¨_֔C@ р @`@@ДB@?րC@@`@ 6 "@a? T T{S[c @a7@@C@uF@˿T@ 7vC@TДC@` @!xs@sC AT@SA[BcC{Ũ_ր@9 /6 @d.|@C@)@@6 җп-T#C@vCcRo*@s@ TvC#@@ @@9@/6vC@ тЃ{CcBc[DSG@DC!@@" a@TS@Sb@7R@ Rk TX7_rT@ @qT@$Q?q T@,T q TRu0b@@T2V. @tC@@9`6A*K.s @ `@7? @q! T$Qq T` @` @3 `@ 6`@@!B@"@c T{ASB[CcD_`@ @R(b@B_6a @ !@ (qT0$DG@@!!@x!*R%0@9B$Q_qIT@`@x @@ +H.n!b@_6@+9@y/$DG@@!!@x!+@`@ A9?qT @@+@+@P6С @HB?T . +.+) Re/  ф_{BS[c?3@WjT @*T_r!TcqdTTҞ(@8R$E@8@a6q5a@ ,T q`T#R/a@9Ra7RkT@R#@6*5R@,*T q` TCR/@ @ 6$E@8@` 7G(@R24k@T 54R,`@,T qTR#a/@R#@@7B@@BaT{BSC[DcE3@_b@@,T q@ T#RB/b@@*7R. @!,!T ?q TBR#3/@@,*T qT@ @@ C7'@8RxR,@B$EB@Y8@R. @!,9C!T ?q!T@@v @@~R$E@8@9Ci R[.rT+ER"4r" _qTR'@@`@v @@@Rs.xa@` @!@`@v @@@!x2(  _{SvC[FuC@@@V@MTsC 6`@@SA[B{è_"'@@{ RD @GH@B @FcEB )(DgvC!C9$E@B@c@@ @"lTE@5svC`@ @{¨@_&$E@4B@?svC`@ @{¨@_{SvC[@9@A7@5@UvCBF@B@B_TvC" sC5@b@SA[B{è_"x'@Rd*@@t  ՀtC@@_{!DBC @B@ T!CcG!@c@BtC!!C@@{@_-  {BRScvCCAc@!@@c @!@xc6+@`7CsvC@`@SA@@{è_,)  {SvC[FuC@@@V@MTsC 6`@@SA[B{è_"'@@{SvC[AcC!@@`@# @!@9@!@ Uxc?q`T*D@95@7TBRS&@ 7sCvC`@@ ` @SA[B@{Ĩ_֗W,*D@94@ rT*D9@!@!J?T? @q@TR,rTR!&(L,rT!$Q?qT6  {SvC[A!@@# @bCxcC@ @69w@_i@ @zT"R'@*D@95TBR%@`7sCvC`@@ ` @SA[B@{Ĩ_@B@_+T@UvU@ rT*D9j(+rT*E{[vCScC@ @B@906!@3*D@9` 5vCb@@9 7bA)LS_kTTBR%`@7vC@ @9raTD@@(@7B@ R#@9qaTC@@р @SA[BcC{Ũ_֠7? @qTRJ,rTR!h%@,@ qTCvC@ с@!$Q?q(T 6@ rAT*D9 @A3@96Q? @qTq T@9raTD@ (@7!@ R"@9qT!R"R!C @qT@ X6+ @@@@ @`@@f'  @?qT!Q $'BB$Q_qHTL+rTn @@ @  @?qIT!Q g ,@ qTR"R#Y! @"_$q`T?r`T#@ @b4R!*!5 @ CvC@ с@#@@dr% >n%m$:!R$!@{ES@ 5`C@@@ 7@˟? IT@r T@P7 @7X6 @ @6@@ @6RsCa@! a@4SAtC{¨@@_bC@@@ ѡ!@?T! @@9qsC`@ `SAtC{¨@@_@sC`@ `@@B@?`C@@@6 M@ {ES@@5 RD!G@cF @@BEs'C(D%@a@9B@c@  TvC@ 97`@BBB@kT @SA{¨_X!@SA{¨ @_րB@?{SavCC$@@@9 _07 @BAB@Uxc!@ @" @c*c(cX #5@9cCsvC@ с`@SA@@{è_ցRR!rTC`vC!@@ svC@`@SA{è@_{S[cksCtC!B@"@'ҁ#C@@9@9v@$@06aD4j`&@#@ S#bT@c$Rr@ @@@!*?q ڀBT@@ ?q T?aT ~{BbT @:@ 4@+X 5_rT Rm*rATR 0r_j>T@q>TRRr@ ** C5 @@?! @ @=T7 @{1@95B@'@_@B@@@?!BaTB ARB  @@A@@ Yxc687@F!C@!@T"#rRrjTrT?TR*@#@{rT R*raT@ҁ@@!*p_r!TR 4r@ qTR<#:@Z:jaLT* @@?ql@Uن_8@U/@ zKT@!A _ T`A" @ 6 @ z`T DST@R@@ xaa@@*!(!X a4`*7`T`@,7@X6 @ @6@@ @`7`@ X6` @ @6@@ @@7 T  Res_T@tC@4@3Ca@! " b<@!B'B"@ca@TCSA[BcCkDsE{ƨ_րtC@@9{DSATb"4RRS'@ BR"@`6)%w @qT`R`@!FcC @c@ j4T!A!@;x `@ 2`@2?qa@`R#r*`u ? `@TtC@@96@BP7(T@_q BT!* 687@BRA@xc&`@7tC@@9a07@9'6BR?" @17tC@t$@@4T"R9"R6@A@xa`@?qTaR!`@@a@6?rT R(rBA(TR!a@@6@0@ @o@|5IT@@BT9C!(D@@#@@$ @!@9 @wa 5 @ 7CtC`@@ b @TB B@_TT@_-T@B@Ts@lT'@`LRI:@ aRX!:@%R@?b?@@RRA&@?Q?@@$dA@9`4R҂R($E@8@7@@@?@_@DX!@뉺T@ *@_T  @@ @BBB}B B_T 8B@T  ŀ_ Gӥ| E"T!$BB}B B T 8ET)A 멳T*@_T *T@!<R @BRA@xc%`@ڷ7@@4T"R@9!76@˄B.|Sd2!!`2$89_IT@8?78_hTB @x @멪T@a@HTM &@\<R'@T%@@$E@8@`7R%H#wV! {[vCS@`@9t@9s @ 87qT`97`@SA[B{è_֕@CF!@@_ T!DBC @B@  TCBGa@B@!!C4}`@!A!@!  "@`aTvC@`96BBz4C!4E@!@A@cTG@%@a@ ?kTvC@4}ba@ @x  aT`@SA[B{è_ց!DBC @B@ T!CcG!@c@BhE!!CA@ @@ vC@`@9 aR#@@4'2'K$ {StC@@ @% @f*(X $5c @7H6@ @a@@@ `@TsCC !tCc@ @SA{¨@_f7@ @a@@?T@Z4`C@@RRrT@@ @% @f*SAtC{¨@@_aC@"@{RC !4r@@`@ q!Ta@ @T `@7 @tC{¨@@_ `@6>" @tC{¨@@_  {RC !4r@@`@ q!Ta@ @T `@7 @tC{¨@@_%`@6"s T`@9 ?6@!?T?MTa@9"_qTd3!@za7^rT`@9`rT`@9KG!`v#RRGcuᣐRa=r|!!e"|K|CR![-@@+ @9qTCR![ _[VsY__E7@@/@9qaT@Rc @Ca[` R?;@ [cksX#RRb`@9KG!`$@"T@9@97!HG `@P@4CR! ҼZLCR!ҵZS[cks_@"@!?(T@!@9"_qT! *AHG@ x`@P#RRb@#RRb@` B B]d@zXwXs"Kҗ? @q`6Ts"Ҏ@cks`XR`$[ckseI@e @Cӥ|S\*d`FX;@@cks?X` @0@94q3T` @` kT:",T qTBReW@?,T_8?(qTc @@W @_8?qT_8$hTc!Y:Җ:s'c1  !tC(D!@9 @_!R{B[SvCckB@@C_9G@9S@@06D!G@!@C@  !Cu@2@9@_(q@ T@h,@b.@EfB@_*,?aB@!6vC2@9A!@@! @@xa(q T@!@l_@94`B@y |q TBY4 @?qiT!Q T @?qT!Q t9+D @9 5`@@0@9 @_(qAT! @!T@! @T`B@7vCC"@B@@c @ T{BSC[DcEkF_vC@@@  @PC@!F!@AT!C!@?AT`2c +Da@9@906_ @7 +D9XB @@XvC@@@@9idA@952@9@(qAT! @ @2 `@hE@ @@R`@@!A!@ x`]]vVR҂Rҳd]{S@"0@9!@ @_(q T"8@@"BTAxS!$!|}_b2@9a@_(q T#@C6"X@a2@9b@?(qATB @A@!xAb2@9a@_(qAT! @!8@b2@9a@_(qAT! @!\@b2@9a@_(qAT! @?\b2@9a@_(qAT! @!X@ b2@9a@_(qAT! @!`@b2@9a@_(qAT! @!d@b2@9a@_(qAT! @#h@RRL@!B@hc@d2@9`@(qAT @L@@@d2@9#|`@(qAT @8@kBTSA{¨_" @B8@@"#T! @_(qT 8@xS$|}1a @8@xS$  {!DS[ Rcks!@tC5 @8@CE~$@`@7T@!@;5A<@@3+@C5T @?qIVT!Q ` @` e@a@;'@(q"T \@ @R#0rj#TC@#$7b@(q `9T @2 a@b2@9`@_(qAT @8`2@9a@(qAT! @ \@3@?qBT!Qb2@9a@` @_(qaT! @  \ a@b2@9`@_(qAT @Xb2@9`@a@_(qAT @`b2@9`@a@_(qAT @db`2@9a@c@(qAT! @RR#h|!L@DA$h#e2@9D_a@(qAT! @!L@!$c2@9a@(qAT! @#8@kiT7@- @LMTC`@@ @<7R?]?@Cb+D @B@9 b:57@k`8|UbT #@5@TA@6$E@8@`7@96RWa2@9`@?(qAT @@6 @y2 yB@,7@R 0r?j'T $qET@ @ @C7a@A @ A@!@A@@! @ @@#7`+D_ 9\T@R!x!\!*B@C@b6! @9`066fA@9@35@@`07 @{+D!B9!@k$T3'@` @u@@?q,T!Qaa_a?' +@?+@?qi5T!Q @@?qi.T!QDE@@ @Q b&5@SA[BcCkDsE{Ȩ_@T @x " @@\@ @R"0rj TRTe@a@(qAT" @C@#6@X@$a`2@9a@(qAT! @ @x e@a@a2@9`@?(qAT @@R;@@%@"#@7?`47@-a2@9`@?(qT@6X@@T #@"!@ #c2@9`@(qT @ L@@  TA@!6$E@8@7 @ @ 7Rb @ARcx `R}\RVa2@9`@?(qAT @L@8B@ B@f@` P6s`@@P6 7N@92N9T` @` dA@9` 5 #Ѐ*@!PC4SA[BcCkDsE{Ȩ_` @oB6$E@8@7 @]N@9x6C ! @ @x :! @5$E@8@7@2RAS@@@  H@9qT L@97 @@`!@ @"@B7kR!4r q@TRҖZ2VB@?T!X@?TKe@a@_(q@T@"@y 77 RB _kT @T @y@@TB@R҂Rf%Ba(D9vZB@?ր@B2"ye@a@(qAT! @ @2 Z @ @y2 y+?R`@?@@\|Ra @ARcx _R[(Z @y7!R ?$q T` 7@a T@a+D"9_ B@"P6B7`N@9a2`N9`+D@94fA@9 4R҂RaaB`2@9a@(qAT! @ @2 @yiZWfZO@@@!@A H@9qT L@9@7 @@B6$E@8@7@ @\`N@9ax`N9R҂R-a @y_8Bp_!x `tST  R{ DS BB[cksD@_@BGdcB@c}7BDD cC/@S@#b@;]a@ ,T 7qT#@BR`[@#@@0@9qhT#@R%YR#@cF Rc]+#@[@B @BY` @!,!T ?qTBR`[@tTR R A@8(?q$Jz$Dz`_!T|~]눂T : RRRRA@8RRRR2RXRR/RRRHRwRZnRRR?qT haT?$qT?(qATA!kTE4lDa#qT4.`mD&4qc D B`oTRRRRoDA@8?qaT"TDq+@c@@zAL@9@X`B!2~AL9@ !TR"4rG@ @! ?q@TBRX#@ @ rAT@ @ rT{G!$E@!@ @!8@!6?q{@?qS@B@aB@EB3!$i7@B @_hT@@ @,T qhT@BR``;RHGOR**RR3'F@FqTF@FqT @Xsxa  R+\++@@#@ @@ @c!t]tSkTA@[@"@_ T+@@2^@@?q)T@!Q+@5TR_?qITRCTY7@Rr qZTBR_@S@@6$E@8@} S@WR{@ @ T @8?(qMTTR9R@@"b3[7tb@s6r`^T@Rr qVTARY@ `dvnW_qKKK Q4dQBa1TQl4d!cQ1T `NT8aB@a0 bNT*9RG!@%@!@ @AZ8TT@S@A7@o5bTKq|5A_8@?qT@9?qT@9?qATR!GCHG!@"@_T_T_8axa!j@TŅRyR9'B"_W@{@! @!K4m4!$E!@!8@!rABR@ [G@@@C#<5{@@!R_jbT@W@@s=4@rSW@z_ITO@R @9q8Ta!?@qAT9_TW@zG@@@@@[@3]3@RG!3@@@'@T@H4@7@ O5CGp6O@׷6Y@3RR{@@ ~@WkT |A |KQ?qTqRBB|@Z{^Kq@4 lT*R*Zo^@Rr qMTBR^@S@@66$E@8@67 R)O@hTDk*CHG@!GRK@v89@?BT6@9*Rv7j@#Tk@T*1[*`;*@qZ@5@9?T*kH*K@@@$SwKT*wK<@Rr qATBR)^@S@@+6$E@8@+7 R*@RGHGTa@9`a@qT9R4a8{kaT @wK@"_;@8/@?T @/@ rT\rTdA@94R҂RG@]@"_ @"b%7tДL@"$4 5@G!@@'@!@@9qTZ@?CT@RZ @8_9G@@@F&{@4 @!2 @3@G @BtC$ `@7@@B@8q"TcC!@`@@!B_@"@cҁQT{LSM[NcOkPsQ_?xqT?qTa@9&R?qT b *E4lDD˄qTdj`@9q Tq<Tq5Tq7Tq@TqAT @@8qTR%R@@8qTRRRq3T?xqSs)`0d4`@d p4 R?xqTxD}{46q:T7@q{k`TB*?(qT @wK0Fq`7T T3@!3?qT9<_N@W@@@@!R{5W@3@" @BA7 @_TYG@@#@@W@wQ4Џ4pyb R,!(`P aIT9R4*aRZ9R\@ @@S,YS@@ @,T qT@ @!@@S@@M)RRcR9RW@?qRR@tД(tД%3@GBQ3@@'@b hRR?xq`%Tc0w R`D4*RZo\`@@[s @C@@a@S@"bNU#@`T@6@ART @Rr! ?qTBRk\@ @Rr! @?q"TBR_\+@@" @aO@~[Y+@"Rb@a@PaRAW`@@7@ 4d@9HGRExd %j!T  @8@x` jT{@@S#@ @ r~T#@Zr}T!dAG!@9@!}4R҂R%\@ @@S@ @@S@@[3@tiTY+@@ L@92 L9"XaЀR!@rM@@ZrvT!dAG!@9@u4RwY@'@@A@ @ @kG˟TF@9ff8BB!?TA '3@REHGb@9xb"jbAbT @8xb"j @Tt` @9q@T%RR@@9RqAT@@9qTB 0R\{@` @9q T%RRRR @ 6#@@@H@9?qTL@97@!@@@@mRv5+@@8@?xqS @@8qTq T?xqSk*RRs)c@pc@z@R!9RWZ***kHK@!T*R*Z7[qT @@8qTR%R@?xqb S@@8qTqT?xqSk*RRs)c@pt*8@3@@GTaRR@2?xqS@9Bq!T@@8qT **@@9qT@@8qTDˀ *R*`;Y:T``WM  {[DSc@GC@!@B}e?TkB *#s!@TDcCcC@@!@@`TG!@ssC:YYjER`@Wa@"@@@@ @ Z`@@*YPC'SD @A@!xa`@`7jEx `@A@ @@?qT!QA@` @vC` 3A@ @@y q T @SA[BcC@kD{Ũ_ֵDC@@TCG@@vC!!C@ARRC@ E"@@!`Sx `@рvC@@@ q TTqTqT@@9raTD@`(@@ 7c@ R $@9qTF@- TC# @ @@SA@[BcC{Ũ_qT@@9raTD@`(@7c@ R $@9q!TF@ TC# @  YMY@?5S@@t@@9raTD@`(@`7c@ R $@9qiTF@TC# @ Yq`,@ q!T`,@ qT`,@ q!T"SCvC@@" SCvC@@"SCvC@@{[ckCSvCG@DB@@s@#@s_sCt@9!s˔raTBDC@b(@ 7c@ RB %T@9qD@z T@Ds@@ )aK!|@?!TAD @G!@@ _@ qT#c@C`BF{#!E@!@B@ ˠ_#TsEQZD@@)_k TWPCQGA@@!xa@#7!x sjEb@A@ @@?q$T!QA@ @vC 4@SA[BcC@kD{Ȩ_b,@_ q!T4RC @  !FE!@@?mTN^QZD@@)_kMT@VQ@@GA_!Q@@@ _D!K@ qTC qaTvCRcA$0r@!|@c@ @B(DsxeC@9b@cRD qjT RB*ba !F!@!?mTC vC@@SA[BcCkD{Ȩ_9FC"@@@?mTE@B_T}eB}A@ W3@F @` m T#љCF @"@!@T@#" @ @7AR ;Q;@ F@"@aTEF @@` ?l T?@A  "@BAx{{ @ 2 LTsECxˠGcQ@@ C#X F@ TC# GDF_ F@@B  "x`bx ѿT@D@@_@amTNsE~PZD@@)_kMT vC!C@@VARPB@@B x" @aۏ6ARP @"RTRM\Q`@@"bQC@1\QC@D!@@@@_ !GcVU"@4W@{S[CcvCk!@@3@@`@7@"7@a? iT`@rTP7 @7 X6` @5R @!6@@ @6RvJCbDqa@B@! a FA@#E!A@`@? TO5Rq @zTsDCG`@@!@@ ?T>VPC;Pa@@!xa@@ 7x sjEb@A@ @@?q T!QA@ @vC 4@SA[BcC@kD{Ũ_OsD@a@G"b"_BQ"a@@ ` @ vC C@@SA[BcCkD{Ũ_/MO4`@@@T` @@9qCbDa@B@! aFA@#E!A@`@?TO5Rq @zTOsD@a@G"bAROa@@!9Ex!!@@!!iP`@@`@@QRL^OdH15RHWO`@@a_!Q`@@ b qT {S`vC@ @9raTD@@(@7B@ R#@9 qT! @A@xa@7@? T@rT@P7@7X6 @ @6@@ @`6RxIrTsvC`@SA{¨@_ @SA{¨_ր@@svC`@SA{¨@_ր@@T @@9q!T:H`T {S`vC@ @9raTD@@(@7B@ R#@9 q T[CcA#U@@ @9# @@Yxc 06B@ 0@9$Qq TcR@&"R!L@@@@!4!L ?q@ TARKT @ @ @!4!L ?q@ TARATaTsvC!Ab@@B@B @xbG`@9 7G"`@C@SA[BcC@#@{Ũ_ @SA{Ũ@_@ 7@?  T@r!TIOsvCC`@@SA[BcC#@{Ũ_P7`@7X6 @ @!6@@ @6RHrT@7@ @`@!@4L qTARS@!@!@!@!@?aT!җG@@@ @T @@9qT@@@@TlG  {BS[vCc3!@@ҢC @9rS@aTD@@(@7B@ R#@9 q@ T!@A! @@y@xaOvC@@9 06B@ 0@9$QqTcR@&"R!9K @@!@!4!L ?qTARtS @ @ @!4!L ?q TARjS 4vCA@`@B@B@B @xbGa!`CRBIvvCC@B@@c @-T{BSC[DcE3@_y_ @_@7@`7 @r Tr` Tp6@?r!T?rTK`4 @@p6! @!@9?q(T@?r Tr T@6  @@a @6@@ TTTF!C@!@?-"TF@Ty"9 PIz3T @7@!? iT @rTP7`@7X6 @ @!6@@ @6RGrTw@?raT?rTAp6=K 4 @rT@?r`TA@6 7 @`@7RR@G7RRThw7 @6@?rATs @@A @4L q TARR@!@!@!@!@?9 @@@~aH6@@|g aLT @a? T@/SH6 @@|g aDT@@!@8@ Rr! HQ?kTAR5N `GRORNFr?T @@ @@T @@9qEEME @@ @,T q TCRT@!,!T ?qT#R}T @"@BB 2T@A69'E @8@7X6?Q`@FrTZ37 ` @wP4ARLN`@rTa@@!@?T@B_,T"mMR@@@ @@ @3 @@ 6RMr T @8@7!@!@?T`M{D@(@@7 R! @9r`T{_ @.* R6{_`RER{2MqAR{_D@(@@7 RR!""@94 $@@\@@__{ @* RR!""@94 $@@\@@{_D@ @@!qT R  @9b _(q@T_,q`T_$qT!Q?1Tс@9R4$@@\@ _?6cp,qaT R$$  {[S*D@  @kJ Tck@9D?Ds q T?raT qTb@hE@@ @"@?qTD!Q@@ @?k T!Q k*T R@3|"B@`@k Tks8 (qTT,q T0qTs'@` @|@@?q T!QQQ'`+@+@?qT!Q`@@?qIT!QD@ @?k!T cCkDsESA[B{ƨ_$qT(7a#@`FA!@sA`'@abS@@"`'@?q T!QDa;@@( @?kT$E!QPCFcE@b/g @gAe+@ f" k+TSA[BcCkDsE{ƨ_PGks8 (qATs/@J/a @?q)T!Qa a#@`FA!@`'@'sAa@A`@!QA`@?qHTL q T?rTb@07@@a#@A#@?q)T!Qks8?rTD@Jc@yBBc!CC9bD"`a@y07`#@#@?qTK`@@?qTKD@-b/@hE@@ @"/@?q)T!Q`A@@@!? TROE[B@+@?qT!Q`'@'@?qT!Qks8 qaT`+@+@?qT!Qks8@"@@C@?T A @ @ 0KKpKKks8|K zKxKvKtKks8w C{B[SvCs4@@Ҁ@9 87ck 07@Q9`D@ @ 7 RtДB V|<"  @h|8 ?(q T Qq T!Q!?qT@ @SiE @@J64cD` 5vC@@906C@! `DkG@A@T @k TK~@BQ R˔~#c}"ht8@ 4q`T!T*^HsD`@@ RBB` @C@!T{CSD[EcFsHC_C@@ @.T q T@cBRQw@@?,qTp,qTvCa@@@y! ?qT @!G @#x``R+C@@9 @T{Q1@T`D@y?0qTvCa@@@y! ?qT!R L@!T?TL`5`D@[ @c7 RvA@t4B X" 7#ht8` (qTQcqTQqIT {Q1 T`D@A@7#ht8` (qT,qTcp,qT աvC` @@@y! ?qT@!G @#x``RB@9 @TvC@kB@y q` TЁ@G! @xa@`zO0qTC 4@ @9@@vC@@@y! ?q@T@!G @3x`vC@@906@ @6@ 2P@@OO!RK@vCk@@@y! ?qT@!G @!x`_{@B@5BB@` 4O!RjKsD`@@ht8!RbK!R]Kk!JBG!CB@@ _{S@РB@950C@ BRJG@C99&q)T$E@@@@@B(B@95&qiT@!N7|D@ @@`RL@@|D@@#@&qTSA@{Ĩ_G@ C9c@@!NAR! B `@9`(6@@a@9?qT!? q `@9 ,qT@c`Ga @!8@>` @!F @T!XBT_!LA ` @$@@RfL!B @@#AD"@B"@a@!x a @!2 AvCC@@kEl6 @@y<@ 49@/!$EC!@@!@?Tsa&@`R@!@!$@!@ `@@ @: @@Z|EZC"@@A@@Ac @kTeE D @qB@!h#? T@"@#}B@BxaD@$5@,@ qs@sb@b;vCC@@R!nL`@9/7@UvCbC@@kE@`u @1@R@"TL@ >`@y|SqT`"@ARAcAA@C`8F@9 6Ё=,LK@8R@bEy@`=D"@@A@A!@`E!@@A@sF@@<  L("ҨEb*@@@@? T@@!B @BB 2L@cdB""ҏEGARDksE C{CB[SvC"@@ҁC@@93@ @T#_ @!,!T ?qTBR=L@#@ #@F@Tv"B$EB@B@PvCC@!@Ba@@c@@T{ASB[CC_@@!@#@"+E#;E  { Rs`D[ck@G@ @!(D"F %E?9vCC'E@@B@@ @d_lTE@5vC@@9 7!E @#@!@SD@" @ @qA"T$Qq!T @@s!`@@!`@?qTA_D!@6\@6JZ_DBCcB_G%4Ca@@ B@!|}@B˄TGBCh!`@?kTJDBC@B@!?TCG@@BBC"a@!@ ?9FE!@@?lTCvCSA@@[BcCkDsE{Ȩ_cDCt@EBD)@!@kjT" R@|$G)aR i x`DI`"D@a"@`.@ q{ RS[vCD#@@a9 @@s $6RC@`b@9a@G@ _qT`9cRqc?`@!B!@kTD  {cDsSbwC[keG @B@$$D@U@9@r6 T`*@ 7a@ R$@9@ @@D9!A"@A Zx`D7@ @R@ t D)B@k Tt" Ry@~ B4@w6 @@9q T@rT9@F|@c@`*@:9 @?qT!Q {wC@c@`*$@@TA{[vCSc@D@9r3@T`*@@ 7a@ R"@9aD)BCBT@@?kT!a" Re@!| JGRh!8)=D9aDB@vC%EBCcEFPCF)@!@@! @@b@!B@e@ (,@SA[BcC{Ĩ_F`"D@a"@`.@ q { R[DSG!@@4 @6@~"jt8`@B ` _qaTa&@a b@9_q@ TcRvC@9qcq=`@!B!@kTjt8?qTrTa@@07 @b"@""` @?q T!Qjt8rA TDT_,qTL7@@5SC8FAP7 E@7X6 @ @aP6@@ @O6Rk@C@B aO5%T` @Rr a@@@@ =T#@9"Rc`@@7E@G7@? FT@rTAC @ CR RSvHC!!tC@C @ @[B@+@C8@4D`@ @ C@@ 73D6A @cG!2A EC@@!@b@?@@!@!CFA@aDD@ @$ D@`@ 9w!"!DBC @B@ `STUCbG@C@F!!CA@@!?8TZC ARB7qpDA@@ @D@%@D"sG@a@c@ˁ@C`F#@cBtC @ @`  @@`  A@@[B@n4 @rT SCFa@@ M2T 9!@$EBC@A8@7P@C@S@B 8t@4q T0q)T,qa&TC0q`\T,q `T qT?rTo7@@4@ @r@Ts@T` @Rq @C8[B@a`@rT_6v @@ħ7"42@94qT0qST,qTa @ @j7 @@ ` @Rq@rBTsT! !FE!@@?eT8 p@C[B@@0q)T,qTbO7@@33@4D`@ @l@@ 73D# @6fG2 <HC*@9R@@@@B@ˁ@C@`D"@F @C? @C@C@ D&@@@ o3@2T*RaqvvGA@@!A?`@T`G7@@b@BBC"Fa@@@=T@C" <ARp@C@@B@ @@7C@@ ?T@ @r TP7/@7X6@@ @A6@@ @6RirpT@C*@!BC $F!@#E@c@T m`@@?r`TRRRu@C8[B@^@C@B Z@Ca@@B ѡ @HT ` @@9qBbpa@AC@"@B @(T@ @@9q qT2@90qT,qTBEpa@@@@CR@l?r`TA?0q#T?,qHT? qATs @QhqrTRjWhr `"p@9tt|@B pa@k?hAR"Rsa@ @C@B @CA@@$@hTR@@@9q@C@\5L@C[B@B [B"RAh 4D`@ @G@@ DA @cG!2A YC<R@@!@b@?!@@!@!CFA@aDD@D @C$ D@`@ *nRi/tzuFA@@!A?3TcG"@c@BBC"qF!@@@mT8" XCARn@@A @ 47@  T @rT`P7 -@7X6 @ @B6@@ @6RhrHT@C*@ CCBF!E`B@ @_-Tk@CR@ueD@@KDsG@C@b@@@b@CF@@`D@ @ D@@[B 5@@@?Mg!FE!@@?)Tn@C[B@7)7@"@?p|@@s"@7p|@TRR'g psRRRSt$Rh *5@@p*K@C[B@kxT Rq4@6 Rq"n7@@Pu"n!@B@C"@@"B@_TR @@9q@C@5W?rT6C@_GfG@ s|@3b@[B 7@@Ҵs@TRo @R @RRs@C@? TR"7@@B7@ @AT6@'@b3 F7 ` @RnRn?@T @ @rAT@ @rTT2RN!FBC @B@  %T!A!@3x `@ 2` @piRRRҋs@!@?TD@@&DsG@C@a@@c@A@C`F @`#@c @ #@b@[B `5 @@J|jar|@\r|@xt` 7@@Ҵps렭TRln @RRR:sr;f;@\eUKj RpR(r|@'#r|@T@6r|@sh"ARRq`@  r|@@*r|@x @eRgAR"Reqa@ @ohRRRr @oh3@RRRr@oh3@RRRrAC7@!@@@7@ TYCR#@e@%f @@ @ 7@? IT@rT P7 @7X6 @ @6@@ @6RfAC"@B "5[B@R5!FBC @B@ *T!A!@4x @ 2@C@@C@qq%rAC @ Ce@C[B@B B;l;@@@@@(T` @@9qo_ q7T[B@p{cwCS[k*s@g&EB@y@";vq IT@9|2ABBDcC 9A@`@!A?]TRbCcGB@c@BBC" Rc@Da\@!2a\@a@!xa @@! "3,@ @"A99`@Xa@ @ <(@Ry@1ewC!R '_Zn&E9A@ @!@?@Tr@@ 0@9?0qKT?xDe!B#@Mb@"D@!B!a,@MB&@,a?RxDf@f@f@ b@_b @BxB2b nAd9B#@La@!D@!B!a,@BIBA@,Rb_Ab@_b@Eb@E b@_b @BxB2b mfqB7d7@&E"BCB@y ?tq`T97~D@@W@ @ R?j Tk@RrR *? rDTf߂qa T@9 7 6;@8@@B$BAx @9cLB| 8y1C@b@@@@?qIOT!Qb@:B@!@ U_S7 RRZn`@! @=77@   <T @rT0P7:@7X6 @ @B16@@ @06Rer!0TAa%@ @?q GT!Q `$7q7@@.f߂qT5B!CLB:!@y @@cR"@RYmF@9a6XB!BRF @@ @!(7@@RF@@xu@@@6@A ?ֿaTvqT*u5G@C9@ 5C@@ Nj"BAR@@_$@@yB2@y"mL= F@6B@y tq1TA@ @/7@@@ A@vq`:T459A5!Re@*DС`dRGGA@{C%EwCb@@ d9@ `*SA[BcCkDsE{Ȩ_AB @92 9?~FwCvqT~D@ @@@'R~QC`@*k RD~D&GA@eD#@CcC@!@@ aS @@C@s$"BR~D@@3@`@,T q@TBRҰq@94g@qqs*4R*SA[BcCkDsE{Ȩ_wCqAT~D@@3@Rm@@`@,T qT` @@9`5"! Sjg@qqs*5tCF@@'T{C" @b` *SA[BcCkDsE{Ȩ_@ R*!@B@92@R!4pRRkmk@  @rTkLBip@ Rr R rk@k@TARkjk@:LB@y5BR"@#l;@"@$p&@"(npd ;@$@@f!BRF $@@ @!ؿ6n|@@I @@@T @@9q@T @PA{`!*A{ z@kF!@=l"@Ҁ@C @6B@A@B<@b4!@ pРxDb!B#@ f!aЀB,@A`R7 i7@;@$@tf`R7i7@fХ @@47@? T0?b?@Xp@ol@@Rl@@(n|@R@#,l`D"C@B@!?TzCG@@c@BF9BC @@A@9@ TcC" 9RbhP@@:wC|D@@3@S`@,T q`TBR_p@9@4g@ qTsCFa@@-T{C" R@b` N7^i7@МAF@@~d*Ti@@"Zi@!` h"OiA@` @R9l@@"Cia@o {!dFB!@@ E9`5SC@@`@@Ũ7rT rT#!tC!@"@@y!@9B ;!rOT!D"@A(@7B@ R!#!@9!;@B?tq! &A;r+T,T q0TRo@a*S@ * @9)4ЀF@` @X7sA`@ @X6@0@94qT;@tqTS@?TR@m@,[dA@95@ @9q@!TqT;@tqT R?cksB3@b@"D@!!aB,@AB$@D,a?a@?a@#a@# a@? a@!x!2acg75*cC7@ @ @G@@3@@җl{@@RR k'+3/ Rk #tC@@@y! ;?xq!T@9O!r`@@T! &;QB@@BҁT{T-b@0@94qTO@AR[agmnТD!C@@!@@TuC#G@c@BF!!C@@@MTF" 3CAR@g@@@?rTX6 @!0@9?4qTO@BRebr`Ts;EF@`@? TfO@AR9cla @?qT!Qa @?qIT!Q [VsYG@ @@@@R@Rtj@ @ڨ7?r T#@C!tCB@@@ @@H @9qTqT @9qaT ;@tqTcks@O@?[lcRC4BҤ@@ Ѥvkr T#@BtC@@@@@@y qaT@@97eqLT#@C#tCA@@$ D c@[V`@!B@"@cT{TSU_`@a @@S|fSR@;@RB0!0_;@tqT|D@@@Sa@ R?j`Ta @?qIT!Qa `$m#@C!tCB@@`@ @@@?@4q *@4B3@Sb@"D@!B!a,@B @.a?a@?a@"a@" a@? a@!x!2a|bO@`RG @@6@`$C@ 7@@ 4Lb@7@@q @s@7 @! r T@lk@@X6 @a@`@T@ @ 87@G@_ _j4 @Z' Rb@@`0@9$q`CTZc R`0@9$q`\T @0@94q` TRARHkrT ?@ 4@r;TC@W@S@!!17@ @c1T @W@aW@_8_q_TR8@S@BaJR@`!dA@!@9*s5 @k`7@@bqMzvTs@6j6@!7@@LzT@6j *|Sb"Rf@@@6^Ra @e@@Mj|SVRR[@!`'g @klD!C@@!@@@KT+wC#G@c@BF!!C@@@l.T"@%@5C4!`<aR~g*q T"A6C@xa `@G5#X6c @` @?(q+T @qMTqrT{@`@X6` @BR @ @q`LT`@? @q TX6` @0@94qT` @` k gTwb @ s"uf C @ @G@ @@  @?rTF@E!@@? Td@G@@6@6a@G@ @@@R@R @^7@!?? T @r@T;P7@7X6 @ @6@@ @6R^r`T @X6@G@ @@ Rh@@ @?rT!4!L ?qTARi\ @@4 @eO@TB€Rd9htad@G@@6@6aRg@@d`@G@ @@ Rg@@FC@<aRbOd*? @q Ta"C "R_e@@6]RcRr q+TRkW@TRhFARARB`!0s]=d@R {@]"R@@_@t7@G?@"C`@A@@! AX?@RR**@g@J!B`B6@j@^d@`dBR҃3g[B@@p@C!D"@B"!BRXh(^@:@7,@<DC@@D)kJ+T" R@|"E4[!4!L ?qTARf!C 3+G@ @@'{@R@Rd@#@cktCs@@96@ @@y q!T?@`#5;@Ҡ^S@?Rd@@1];@tqaTR*f|@Rd@@6S@ T@ Rtahax?k%T@ R_xk@:T@yR?k;T@ Z@ZRd@@[VsYaRd@@`R`]Z^TLaa@RrR *`? rTfҤ@ @a̯6Y@@ @^ks@7@@RT*@ g!Rd\\\\\B@\\ {Z@!C@3 l]8`@,T q@TR h@CS@@C @9C4Os@@9qT\C7@ @ Rd@@-T@R!!_x?k&T T@ 4Y@Y`@ @'@^5@ @q`T@q T!` c&RRRe_7@@!@R>`Z]7@U"`@Rc@@ @9@/6S@ŅRcy?@ sR*@5@ @9qT"hsx R_k TO@YRc@@!8a@ @!4!L ?qTAR8e\ qŤR̬r|!!b"|K@e|@8`@a @@Sg@@9qT@@8?qTi gTz` @9?qTO@ @{!T8R@KG  87KG*!` 7!j TqTsIT`@9{5KG!`@!?hT?MTa@9"_qTKGd3!@*axa7`` jT!T$E@8@}d @zT@HG!@9xaxP@q!TCR! s[@T@"h[s`T`@9CRqTB][ TKGsT`@9 x` j@Tb@99G b8s TKGA`!6 `8T`(D@9 4`dA@94R҂RަV@r!RgrT`$E@8@ 6!R]rT@8@X76RTrT`$E@8@ @7Tuw`E$EFF @9 5|q`T`89T@9*qaT BX! @!}! !˟T*#@9!cGB?@aT$  Ճ_ cGcc|BC"T"'$cc}c c! @@X @@˗@@t`@ @c T`nRxa@! 8@ 7*T#8BCT$q Tc @ARd@գb @@9A<$q@TRRDh 8#9T @8*@TRRrT{{7Ea@9a5TtҔFFw8k68Ta@9kv8q T5Q@xw!Rr!T`@8@ 6!Rr`T@9QR#Rb @˝R5! R˔N`[RRvr@T@9$q!T<@9*-{`aDS4tC[5Rcws@C#т@`!G@@9!}ӄ@7s@@(7@@9R7@?,qaTk[97@yS! s7Cc@?iT`c@ R@9 rZc  @ 7`C@IT`@ @! ?q@ TAR4RF9 5*85B@@`C@(T `kDtC@`7@G@@9@rcaT`D@ (@`7!@ R$@9 qTqTC@@SA[BcCsE{Ǩ_ ,@ qTCd `@ ?#Tae@!tC_b"@@4R@9444#R33@@@33@@@C@c Bq@p@6 Rf@ @@@4 !"RV`"R!Pc RcC@4?)T Rr AR@Z#?T@@ @! ?qT@Z#@@뜣?T@ @TC@9cacFc@cTcCc@`` scZ@ @T"`a@tC@ `E {`aDS[ucks{#tC@bG$ѷC`@:S@@Z}s@93@96@yC86`46*@`F@LTdGc"ѠC"@@"h#@s`? Tazx z8ATCb"sB @ Ty Rr8@c`_ @! ?qTAR*4`_ !@@!`dA@ TAR`@b"Ca@(Ta{G!tCb@#@Ba@9!raTa!D$@(@7@ R!%!@9!? q`T?qTC`@SA[BcCkDsE{ƨ_@@ ,@? qT D ?TaC@bCBFaB@B_ TbCB@@` l`C|"A`a@tC #@  {`aDS[uckzs;tC@CG$ѼC`@9x@@9}@98@97@C6`46*@`F@LT@G#ѢC$@@$h#B@_ Txs"? x3sATCx @@"@bB"_T8RRRE@`a@C?!#B@_iT_64RRR- @@_DT T_AR'@C!`#B@_T `ZGtCC@@c@9raT`D@ (@7!@ R%@9 qTqTC@SA[BcCkDsE{ƨ_ ,@ qTA ` ?CTad@;tCA_Dad@C C@r`CFa@T`C@` `C"h`a@tC" d@`@@9raT`D@ (@7!@ R"@9 q!@!`/@!`5_!!`/{`aDSt!GvC@c@D!@B`@9" raT`D@ (@ 7!@ R$@9s qTq`TsCb`@SA{è_ ,@s qTs@ uC@?TvCD@#@$C@@`C@`F@MT`" sC@b` @"vC@@  {`bDSt[vcks@BGvCeцCW@%@@X#s@9<srCaT`D@`(@@7c@ R &@9 qaT? T_Ty Rr @`7 @``{#_T`@ @! ?qTAR: \T{`a}a4 @@6ARk3{#`_TvC@C@SA[BcCkDsE{Ǩ__T`F@T`@`vCz3C@@SA[BcCkDsE{Ǩ_@@7@`ze @!4!L ?qTAR \T{`C{#ћ@@@"P  {`aDSs[!G@wCC @A@ ! Cnb@BF@@TwvC@9 7sCa@" b4`@vChu`@h5`@@` @SA[B@{Ĩ_a!B @ b@#AD"@B"@@!x  @!2 "đ  {StvC[@`@9E,b@9 6c b@cAc@vxbu @B<`_aT R `@9q@TvC@@@9raT`D@ (@@ 7!@ R#@9qTs`uCF@@TsC 6`@@SA[B{Ĩ_`@9qT*`B@b@@D@Bs`BѢvC"F"@@ -TsCc ucvC[B@SA@@{Ĩ_ ,@ q!T"wvC@@"o@;@{`cDS[cks{@bB$cGZ@6s@}sz`tA@AD@!B!ҁ_0@B#@R2rA?A@?A@?A@" A@ @!72@`A@tC" _ @97u`CF@@4˔C˔ATC! 8Aw `G@L TCsa"@TwC6D`@ @A 7R9RRRTCb@Ty@ @7CsB@TR7aB&@&@@# ARa"C9Ga:tC!@!hv @h6 @A@ @SA[BcCkDsE{ƨ_m`SAtC[B@@cC@kDsE{ƨ_x@@u`@aB8@`@"D@!C @@x @ @2h"Ҋ@ptV!ҀB_0@ҀR6H {`aDS[k"G@Y@"`C6@}9;5@@7cs!RjHT[#8C(T@PAsTZZC_ q&Tss$Tz@C7 7T@ 667@@ARtaT45T}7 @7@7! 7@@"TA!?*6T@ˣ @ !@a "! @xs x3sT T7z0 @ ^7@x;@ `GwC@@v@9!raT`D@ (@7!@ R"@9!? qT4`@``j9@ rTwC`C@6@SA[BcCkDsE{ɨ_@Ҡң6 R@ssRE`6@4a!tC!@!@9!r$2Ta!D"@A(@17B@ R!$$@92%#ESAC[BkD{ɨ] @ @!4!L ?qTAR-8c"T@PAsDl!n?;@x `wCG@ @V@9raT`D@ (@7!@ R$@9 q`T @ _@h%@7@ @ T"}ˠ @}Ӂ mT! "xax!!T @@ A @!A 7@T}R_kT?@ @ s@ rT 9Rcs@4@ 7 T`@`7 5s` Txsz3@z3рxw`j9@7*R! 7e@@s @@"?Tw7(T }Ӟ@ @7@!  @! @ @ @@@@TM;CG @џ;@C@T Հ{{@?q)T!Q{T@hee @SA  Tb}e @@@@ tv 77@@`F@˟,TD4`aF!C@!@?T`}@`CT5{#T @h|z;C@z;ss@v x?R @8 @!4!L ?q TAR @@sa˔R$`@`@h%7?@7@@!I;W;@H7Œ 7@T Հxt@?qT!QџT`jya`aF!C@!@? T7ݕ7@sC9`s@C@G@vs̕s@7 7@@@A,@? q$tR77e`67@Z`EJ{a`StD[cxks#GA@c@$DwC:AA}3zB@\@@@B @;xb`7wu"RCCc@yo!@j TC RZCsy_Tt6sBD@"@!b?[A@RF@Z#!@!GC@CT@@` @ 7y@C@y7C@yywCaC9G@"@3@@9Bb!?q@T@7@@!b`@RB(D#0r qB@9BRj T R*`a wC@@9!?qTC@" ;@SA[BcCkDsE{Ǩ_@#? TS@9'6@6ܔ|@! R@a@D!C@!@Tat!GRE!@A!C&@RuI@\@R&Ȗ  {[uvCStC@@ 97w_ @@y q@T`F@MT@7vCvC@@SA[B@{Ĩ_`hE@@W@7aR@@@\@F@ T"@`6 _ {@SSbD[VcUksGA@t@#CvC7A}ӔB@@@`@B @:xb 6 R@AsD!C`@!@`TGSsRE!@!C`2@R#XGXA"CcFR"RRB @Q4j`8Ah 8T*AT`_8@8TClR!0rjTR@@`@w @@rT@(D@9`5`@ @@cks@dA@9`4R҂Rҽ`@  AB@{ C!tCS BC[ c k s!@BS@@G @9b@ ` 6 @9/07`@  @!4!L ?q/TARGy_`B!@ ,T q/TBR!@S?cs&E`@8@}ҵCӡ'X7&7@ C@tC@@'4ގ(@+`@9r[AvTA!D"@A(@Ar7B@ R!$!@9![?q@R@!B_qR!@)u@@@_(qAT! @!@$$GӟqTa@9S 607"o7`&@7@!@ @B@' @a @!a `@7#@@x # R_@7@@G@;_(qAT @@6@_4 T@FGHG A@9587aP6a8Z(T @s3@? s_(qAT @@C6y`T\RҀKG?*@*@`(52@9@?(qAT @@$Gq ;T @#5TKGR{T`@9@x`? jAT"TT 4@4B`@9KGBGZ`8z)T@@987`P6A`8Z(T9T** T5@@G;@@3C +@,T/T@@/T@\ @A4CB'@@klDT_@647@@R @TЙRE&@R @C@[@ q`T@ARtC@!A"0rc@!@c @(D4xc@9@!R _q_j`T R* @F@mT#@AtC!C@5@A!BG@"@cT{ISJ[KcLkMsN_R׋r T`@8@}C@ C@ЗtC@@5@v+`@9!Br+[!@'T[@?qR#`_s" @!4!L ?qTy_@!@@`B ,T qT @< @@C@!?TA`8?LTqTqTqT@@9q!T@ @9q`T9AT=2@9z@?(qAT @@$Gq`)T @5KGRT*ZT@@9@x`? j@T9T"TA@9#qATd3!@xaAW7#@aUA!F @aT# TKG{@T`@9 x``W6KGTZT@@9 x``W79TTEKGgG {T`@987KG!`P7GB`8T**@B_IT`8_, Tq@TqTqAT`@9qT` @9qTgDTa@9"_qaTd3!@!{aW7G"`8`@9hqAT`@9q TqT` @9|q!TgD#@cITa8RT?q@LT?qTT?qaTA@9?qTA @9?qTAR#R3ȍEa@93@Ga8@@9hqT9aT~R#R3`@9E3@`8st5#@A!F @hT#}#RR9T[@@9qBTqT@ @9|q!TM T@C4E'3?@@9*s`P7{?Ts@9W5@ahaxo6C@'@3@` @9Qq(T (7gD[@ qT 6[yR{F@#@ T T#@9!(qATUT4s9TUT*;a@!?DT9#T@_7~멼T@CKGK4E@9*`{`P6ZT[@9T5)@ahaxo7C@K@9T7TC@9hq!7T#d3c@xcW7p@qBWT@t]Ӏ8@k=T*X+_\T{]T@AR@!C`'*@@#57!L@!@T'4?s_(q@T8@5`L@@i*T{ *T@@_(qAT @@R @$`?A!C8@'4@2@9_(qAT @#@#6A@!dA(D!@99@ @$Gq T @/5@RHGT ZTA@9xa!j@TC@M @ @`7 @x2A@@ " @b_ BT @B}R @͏@ @,,T@C@(@T @!!x} @W@a@37[@ qT@иCSB,@AR_ q![qXB;7Aa&@@xa 425#@ ͣT @@a!@44sT!B[@!@_qR)YIT@S*W4EsJGc@9{*`w`P6T@9T5.@hbxo7*c@{@WD67 @@@3 @@ @`yPY.T65s?@@F@ >T@55S>#@!*!TR @8@`5c @ E#*F'@:R _(qATd @8@?kTRL@A!ha@4Z \bT!@!?TZ#2@9@#@˫!@!?lT"393@#@!A!F @m T#2@9@*@#@_(qATc @@ @9QqT`(68A@9?hqa}T*8q7 @ R%7wAB!DBC @B@ $TA@B!GBF!@a!C@@$T7@@@  R_ @R#RB@@"ևA@9?q@T?q!uTA @9?|qtTA@!dA(D!@99@P?r@kTDAdA!(D@9$9S@HGTZ`qTA@9xaaW7 @~"ҥ rTŸ6c*5@B @@?@@C(q'T4@C T@@_TsT@Y{RF9G#@_s@C@5sT@`sT*r5#@͍#@!@!? T# @]@^@@Rs6ː"L׍TU# @ҵ@b R@@z4T@AtC!C@8@"%4T@^@Rb&pA @9!Q!?q]T(]6Ab&@ @ "~ R@, @@ @" @X|@Q @RaRۉ@@ T@d@`Ts@aY S#@sGA@9*aa8Z8TR"Ɔ!T@9B_q@TWTAZZTB@9"b8_TT@9q@T *R@@ R@R"Ҍ,b7X߿7@,T q`TBR[@9s TY@@9GRF)T뀒T@9 @?kAT‘T4s@C@5{AT @ @4@CT@ @@9q`T?WT!?@iT@9#c8T#@˝@!?T#b7X7B776 9S`T@9q@TA" A@!tCA!@@" @xb@ @`7 @_x @ @_{@STC|sB:`@ @!,!T ?q TBRn c;@s:s:C@AdRcCRtCc@@c@@9!Gc0@9,qB `{USvC@97ҺS@aCF!@@MT@\@`@6@6sCa@" b ~vCSA@@{è@_sC@vC@a@`" b @SA@@{è_!@RI"0  {kY!wCSS[c+`C"@@D@9@$ 64ҡ"@@96@ 06ˡ7@@!X6?q`ThTA4?@qT @c0@9,qT Ֆ @,qTT 4$qAT$87z@6?qT @c0@94q T!|0qT87 @RRR @ @6!wC`C"@@@@9 (7raT@D@ (@7!@ R#@9qsCt@@SA[BcCkD+@{ƨ_ҤҗU @AD @@"@`xdB"ax$@?q T!Q6wC@@@9qTaC@@95@ ,@ q @c0@9(qiT! @c0@90qT!  87`@4L q@TAR  @b@Bb @sCARb}j:}9wC"@AA @@ `C@@@@9`@@^6 Rn`@ @@@5!"R^`"R!X rW!N)6 RL`@`@@@5!"R<`"R!6 "R"RRRp}l}@8{{R[VCSc3@BABF CA@@!A? T@TAvC@x!@@ 2 @9`6 @9w@ 06sBx@C RcF%cvC!@"@9 y 96#9R@ 7*,q T#@ @907C%@ RcFc@A@9 yA@9 87@F@TvCuC@@SA[BcC{Ũ_x_C%@ RcFcnvC"@A@9 yA@9?6!s"ҫ"҄ R@@@@@y!"R"R!@@#@!77AB @!A @ ߆@R|  {@AkZDSDwC[s[!Gg@cCEф@ @T9u@ "_7CTcTXWFCA|@Y7RŤ@@jT@$ Rx& @ 2 eTcCZwC{C@@u@SA[BkDsE{Ǩ_77@2@9A9,q`T3ե@!Rg7",qaTcT Rrw"T@AR @B _qT@@ R@ @@@S!"R"R!܆g@@ @-TcC@ga|@ @ T{STvC@@906eS@uCF@@ TsCvC @?`@@ ` @SA@{è_Xd"҄@ {@STS$EC@B@@B@0@9C@0qcC {bvCB@B@9 6tCsvC@`@SA{¨@_  {BABtC@!hES[cksAY@!@@ @5@@7@Dž @9zurTa@ 7a@5@@! qTA5@"@^|@TZZ@ZcT@TR€RB@@R{a @?qTR[c~qaʄ(D!@R#0r!C @9qӄRc j T RB* B@6@@G7R|+@*@`6RrTCk@@@fsvC[B`@SA@cC{ƨ_@@RV@j@@yRRX {@RR[#CSc!@vC3@T@c@@"qa*!(!X 5A@9@@9A06` 5rT@ Rr!j TRqʄ(D!b@R#0r!C @9qӄRc j T RB*ba CvC@ ѡ@SA@[BcC#@{Ũ_֡B @!A!@8xb4@6`@@@@7R Rr#jTR@ Rr!jAT@@raT@G6@@b@c(DRq 0r@ !q`@9RjTR`@@RGrT @@c@}@SA@[BcC#@{Ũ_G7o {RRS[C@vC"@@A @f @s"q!*!(!X 5@906qx @`7CvC@ с@SA@[B@{Ĩ_֠ @A@xaRrT@@@SA@[B@{Ĩ_ {[cCSAwvC@@T@@# @@(!X Uxc! 5 p7@6@!@ 7@RB(D#0r qB@9BR! qD@z@ T R* TC@svC[B`@SA@cC{Ĩ_?) TrT@!X?Tp6 RjaTr T5H6@@@R@a!(D"0r _q!@9!R_j`T@@R* 6rT@G6R}RRrT@@@ w6@SA@[BcC{Ĩ_qD@z!@ T@RB(D#0r qB@9BRjTR@G7 O7{StC@@@ @!(!X a5@? iT @rTdP7@7$X6a@d @6c@c@c @#6R[sCr`T@b@AtCSA@{¨@_@@ahT$@a@9q!R`R(rT@@@SAtC{¨@@_@a@!T@b@{SC[vvC@BA@@A@d @ @b(BX 5xd 5r@TavC!@!@96@6@@ @`(DR$0rC q@9RjaT,CsvC@`@SA@[B@{Ĩ_@ 6 Rr?#j@TRӽ@Rc(D!0rA ?q c@9cR jT RB* R@@RRrT@@ @@SA@[B@{Ĩ_ {StC@@ @A(!X  5vC!Ac@$@a@9e @xe7 Rr?"jTR@Rc(D!0rA ?q c@9cR j T RB* sCvC`@@SA@@{è_b@6@@ @`(DR$0rC q@9RjaTR@@RRDrT@@ @SAtC{è@@_P  {StC@@ @(X 5vCAB@@B @xbP@`7sCvC`@@SA@@{è_RR rT@@SAtC{è@@_{S`vC[C@"@@9A_07 @`A@xd@@! @ @a*!(!X 5#@6@@@_ @@6@@@R(D#0rC !|q@9RjT RB* CsvC@ с`@SA@[B{è_RRC"@R@RrTC@@@ @svC[B`@SA{è@_  {S[avCC!@@"@9_07# @AA!@6xc@@ @A*!(!X 5@6@@@@6@@ T! ך@RB(D#0r qB@9BRjT R* CsvC@ ѡ`@SA@[B@{Ĩ_RR!TRR+rTC@4 @svC[B`@SA{Ĩ@_ -& {Sд`vC[C@"@@9A_07 @`A@xd@@! @ @a*!(!X a5@6@@@_ @@6@@ Т@R!(D#0rC q!@9!Rc T ֚!#4 RB* CsvC@ с`@SA@[B{è_R<R9C"@RRƸrTC@@@ @svC[B`@SA{è@_#4 RB*  .{Sд`vC[C@"@@9A_07 @`A@xd@@! @ @a*!(!X 5@6@@@_ @raTbvCB@B@906Т@R`(D$0rC q@9RjT RB* CsvC@ с`@SA@[B{è_C@6@@R˿C"@RſRRTrTC@@@ @svC[B`@SA{è@_  {Sд`vC[C@"@@9A_07 @`A@xd@@! @ @a*!(!X 5@6@@@_ @raTbvCB@B@906Т@R!(D#0rC q@9RjT RB* CsvC@ с`@SA@[B{è_C@6@@RdC"@R^RRrTC@@@ @svC[B`@SA{è@_I{StC@A @! @a*!(!X 5@6@@@_ @a@6@@@KTsCC !tCc@ @SA{¨@_R!aC"@RaC"@R RrT@@@ @SAtC{¨@@_{StC@A @! @a*!(!X 5@6@@@_ @a@6@@@LTsCC !tCc@ @SA{¨@_RaC"@RܾaC"@R`RirT@@@ @SAtC{¨@@_{StC@A @! @a*!(!X 5@6@@@_ @a@6@@@MTsCC !tCc@ @SA{¨@_RaC"@RaC"@R@R)rT@@@ @SAtC{¨@@_{StC@A @! @a*!(!X 5@6@@@_ @a@6@@@JTsCC !tCc@ @SA{¨@_RaaC"@R\aC"@RRrT@@@ @SAtC{¨@@_{StC@A @! @a*!(!X 5@6@@@_ @a@6@@@@TsCC !tCc@ @SA{¨@_R!aC"@RaC"@RRrT@@@ @SAtC{¨@@_{StC@A @! @a*!(!X 5@6@@@_ @a@6@@sC!@`tCD #daA@SA{¨@_RaC"@RܽaC"@RRirT@@@ @SAtC{¨@@_{SдwC[vC@!AF@$@ @ @ @a*!(!X xea5@6@@@_ @@6@@@B(DᣟZR!|@#0rB@9 !ԟqBRj`T R* sCvC`@ a@SA@[B@{Ĩ_RRaC"@R@RrT@@@ @@SA@[B@{Ĩ_m{cCS[vvC@A@U@@# @@ (X Txc`5p6raT@!@6@@˂@`(DR$0rC q@9RjT RB* TC@svC[B`@SA@cC{Ĩ_R.RR޺rT@@@w7@SA@[BcC{Ĩ_{SдwC[vC@!AF@$@ @ @ @a*!(!X xea5H6@@@_ @AH6@@5Р@R!(D"0r _q!@9!R_jT@@R* sCvC`@ a@SA@[B@{Ũ_R'l'@Rh`C@`@RRarT@@@ @@SA@[B@{Ũ_{[СvCSc!@A"A@s"xbq TiTq@ TqaT"aRC@@ @b(BX B5CH6@@q` T `$ Tq` TiTq Tq T `eTqTqRC!@@ @b(BX 4*R-rT@@ @O7RqT@R!(D"0r _q!@9!R_j T@@R* CvC@@SA@[BcC{Ũ_ARRavCSA@[B@cC{Ũ_!R `Tں@C@4 1 ͰcR R0'v'@{S`rA[c#@9`5c Fa@ 4B@bB4JBDBJBJBGsrA R`9xvCC@@@@9 @TF@-T"nB @!AC!@BG7xb+ `svC[B`@SA@cC#@{Ũ_n_ @!0!P ?qTAR`@`@!`n`E*@@",n @  CѠ{A[SvC!BB@#@҄C@C @@@9@6xc @ T`_ @!,!T ?q TCBR߽ @# 6 @ F@4*cBb@B4JBDBJBJb@G`"R@pA9A@!R(D$0rd Bӟq@9R jT Rc* F@ TvCvC@b"B@@c @aT{BSC[DC_ɺ**B!#\@6@@!@ "ҢR!!`1p*{ScC[wvC@A@5@@C @@@(X 6xc 5@6@@_rT@R!(D"0r _q!@9!R_jT R* CsvC@`@SA@[BcC{Ũ_R@_rTb@7# H6@@A`raT!` T|g!` Td@R"0r!(D _q!@9!R_jT@@R* #@@R!(D$0rd q!@9!R"7?q@z T Rc* R*drT@@@@SA@[BcC{Ũ_֠@?q@z@!@k T Rc* R)@`~g!`dTRAe@"0rVA`?@RD(D#0r" _q @9BӄRc j T R!* #@uA`@R!(D#0rC q!@9!Rj@T RB* #@aW]@R!(D"0r _q!@9!R_j T@@R*(#@JGz#@C #@>4#@9A`k#@4{ScC[wvC@A@U@@# @@ (X Vxc 5!@6@@?r T 7%R ӥ դ@R(D#0rC q@9Rc j T RB* R@?r@TG7aH6@@@R`!(D"0r _q!@9!R_j`T@@R* CsvC@`@SA@[BcC{Ĩ_RRrT@@@@@ ӥ%RҴ@SA@[BcC{Ĩ_RF  ѡ"R{!AS[cvC+Cd@#@ @B@@uxd6@@ ,T qT#BRһ@!6!$E!@!8@7AR  @BRc2 RU@,T qTBRavC!@!@@y! ?qT@94R@HG աb#jAT!@8"5@'2CdRRR@@!(D#@9cRd7Rq!0rA Az@ T RB* +_qT!@9@Bx'2_`qaT@!CRRR@@!(D#@9cR6Rq 0r@ Bz @T@@RB*CsvC@B5a@@@c @T{BSC[D+@__qT_<qT@B@# @B@j@CF RR$R@ @!@qXCѣRr{CcAS#C[&E@dvC@@@8@@BB Cc@hJ @G@ uxf?qT@@9!@(7@R(D#0rC q@9Rj`T RB* CsvC@`@@!B@"@ca T{ASB[C#@C_@@ ՠ@CsvC@ `@@C svC@ `@@7rT&E@8@7L4q TP6`vC@@9`/7\@6@bg@6õ,T q`TR@@`vC@B(IR?jT !7?@@zTR?TBR B @z!T5!$*4R`ӄj T*#R"B@z TR`ӟj`Thgd'd@z`T5a琈 R_Ҡ R_4hR#Th!R_b4 ѡ$R{!A[c vCSk s @BBCE@/@9!@ @@9s@:xbt(7R .7raT!D"@A(@a,7B@ R!#4@9qT{@ q+Ts"w_)@4L q.TAR @ R y@ R@r!j!@ 4L qT  @@ y@!@ 4L qTAR{!@@vC Rr_!j9 @|_@9 7sBj!T`@,T q`!TBR@A&7&X7R 4r q@'TRD@`@"6$E@8@`7@ 4$E@8@r5$7X6 @ @6@@ @#7@T#@9C@9r@TC'H@#@qT չ@+5@'@R+@vC@@9 7qTA@ 7zs"C@Y{_sbj T@R FBC@A@JTRAR@x%@ 2%@R 9@ @ <  Rr$@zT@ $A92 $9@ @Rǟ7jT@ $A92 $9@vCCt@@9`R!kvC@C``@@!B/@"@cҁT{FSG[HcIkJsK_@#@9C@9Kr TC'ҟqTdA@95C@'@cx@C Rw@@@2@Y@ ,T qTBR@ 7@ `@y @@A,@? qҤq@ @94@9"5R@ ,T q TR@@@@ @@ө@_6`R!@R 4r qT@ @@@@ͳC$E@8@4s oz@@y@ @@olѢ{BAcSvC[k!@BdCC@@ @@xx` @96@9rT_aTD@ (@7!@ R"@9:Rk`T @qT@,T q TBR#@6$E@8@ 77X6 @ @7@TZ 4dA@95@ @cx R@2q T@@7sC`@ avCB@@@c @T{BSC[DcEkF_ր@ @@7@`C@@ @!4!L ?q TAR]@cC Rr@c@c@c @#j T` #$8@kT?" C5qTsC`@@`(D@9@5 @ @Aj@747X7R 4r@ q TR#@q ,@:R qTD]@@ @@6@!βo@@`R!ͨ@?"v}'h@l4pdA@94R҂R<n {[CScks@@ @!4!L ?qTAR״B;RvCN@@9(7@9R7b@A4!L ?q@ TARôb@ Rr?"jT Ro5vCBAcdA@`@9A@ @3xb 5:`@ 7vCC@@SA[BcCkDsE{Ǩ_a@!@aRoқ4@R FBC@A@JTRAR@x&f@ 2fɶ`@R 9a@ @ 8 A9b@Zb@Wb@C$9*@o`@@@@qűvWс{!B[SvCcks @"@ҁC@9!@06:_ @9@@y@ " qT<@,T q TcBRla@ ,T qTBRba@@!6c$Ec@c8@7$5@յAR`@,T q&TBRH@ 6;RRR@oa4$E@8@7#Rçr#T@B@s%b@ D@! RBͳ` @@R6RR@DR6RR@= @BAB@Zxc @` @B4BL _q`TARC!@! рC"R <@,T q!T@a@ @@ ,T qATb@` @B@;R*RbX6 @ @6@@ @6?qR@RBZ@@`@ 7X6a @" @6!@!@! @ 7qT @ 4?d@zAT@  @? Ѐq T BCqdAlT @?qT!Q vC@@9 (6F!@k"A 7CvC@BC уA@@@c @T{DSE[FcGkHsI_RRRҔRR@@qBqRRb@ @5qT@@_@ЙR@@R!(D"0r _q!@9!R_j`T R*@S ?d@zATqT@;RB6*R@\ZrT @ 4?d@z@TRza@` @!@C! **/"ks@5{DS[c#vC@!ADgAd@#GU@9!@}ӂ @v@7xb5"aC!@!!Ch@? rT GvC@7vC sC@a@SA[BcC#@{Ũ_yrT@߯@@gA(D@99 Cс{!AS[CbvCc@B@v@B!@@@B @,T 5xbq` TBR#@B @@9c6c$Ec@c8@786REa8Db(A d8!|@_ITTIcTd@9'zd8BBD9_Tb! ӄ!@$R @Rc(D"0r _qc@9cRB j T R* CsvC@B5a@@@c @AT{BSC[DC_@ @"@$R CR@rT @!ӄS  {[CSvCB@AT@"@@@B @3xb7`X7}rT@&E!@!8@7@`6`6h7rT7@H6@@ `$T@ Rr? j TR\`@?qTT!5`@ @?T!RR` @r99`@ *`7CvC@@SA@[B@{Ĩ_ր@@`@?qhTaR`@T &E@8@ 75`@@ @HTڢR!Rr!!|!b!CTAD`@@( TڠR!Rr!!|!b!5` @&EV@8@ 7&E@8@X7_T @ka8@QcBh@0`k!8!T{RrT(D@9`4dA@94R҂RRP!RާrT&E@`8@ 6!RԧrTRЧrT!dA(D!@99!4R҂R1* @{Ϫ@4 ƌ%x@2@ @@ ƌ%xVT@6e!Rr!T&E`@8@@6!Rr`T`@8@`X76RrT&E@8@ `7_bTejRszE9E&E @95Z{T@@9``8`9qTD@9|q TA B@ZA @}  T 8!B@T b_c BGBB|!B"T"$BB}B BKҨ@@@8@@6!R 0@r @T@@8@6!R #@r @TRr@ @TD@9qT!RrT&E@8@6!RrT@8@_7!6Rr T&E@!@!8@6T 8!BTsqT @ARbc@ߪE @!@9A5_T @@8c R~@{T-RR̦rT@!4E!@95RRr@T4E@95_TҵzE @xsssk989T@9Sky84qTqT~qTs8@ @@pDR#@P@Y@ @#Tx{DR#@^ @{ @ @RR&E`@8@`6!RdrT`@8@@6!R[rTRWr Ts_T@@9qATZ%x ! Rs`U@c R}@Z{с{!CS[c k s 5@B@@/@?7@cBA T&E@ 7CR 4r! ?q 8TR @&Es@` @R@ 6&E@98@>7V_ T&EBE#G+@@9@U`8a 8@7R @@95#@_T@Ss @TZ#@{T&E@8@97!,BtC!T AB@@B @xb?qTR#@@s?qT 7@! @?T @Rr &ER*@8@@7@R@7&ES@8@y.7&E@8@(7&E@8@*X7d_T @ka8@cBh@0`k!8!T{T9@ @` &E@8@7&E@8@7T@ rT@'7@tCB!@/@@c @6T{FSG[HcIkJsK_!RNrT@@`8@ 6!RDrTR@ @@9B4@@8@6!R/./@raT@/@@8@6!R"r/@ATR/r/@T+@`&5@@9$qT#A9q+@+1@ @@@s?qTaR@@6 @P @{#@@2u!RrT@8@6!RrT@@!R٤rT!dA(D!@994R҂R:_rT(D@94dA@94R҂R'Q!RrTRrTB&E@>RRrTG@@@@E @9U46&E@98@Y6! R_ Y "! RVa@A B@ZA @} T8!B@T b_c BGBB|!B?"T"##B$B}B B ?T 8!B?T"RBP@ @@R@ @@B!RHr T&E@8@AX76R>r T&E@8@7cBDF_ T Ak`8Aa8ak 8aT{@!RrT 5_T|97EFFv8`k38sT @9Vks8 5@xvRS&E@8@6!RrT&E@8@6!RrT@RRrAT@yR?kaTZ+RRۣrT@ZE@@94 {WH1T]! R@R,cljBDF_TE$xZT@@9$qT@`8878|Sd2!!`2$8a9EG  с{C!A[SCcvCc@B@s@B!@@`@B @,T 8xbqTBR@@xsq T!!7@ @bTa@ @&E`@8@A67@Bk9G\KG Ձ@97a8 87@KGxa 7_CBc Հja8`j!8!?T@sBkE@29R@ @`@@x\*sF` 7CvC@B8@@@c @-T{ASB[CcD_aRѡ@@!!6@9#*qTb@@8@7@9*d3 @{`6  R"8@_T!@!?T4qT`qTq@Tq TqTqTq TqT@9qT`@t @@@x@6kX6@A7" RbHG@9C`6d9a@9`8@`@9<q4 R"8@a@9pq5\@X7 7@@у$R RcHG@9b`"jTe9a@9`8@@V@9q`TqTqTc!$q Hz)T@#|@T!?ITDqTtq@TxqT @9P T"RrrT&E@8@@9q@ Thq Txq TqT @9,)T @9qTqT @9qaTO@ @9cHq?hqᇟ*5 @9QqT(R5 @95!R4r!T`@`8@6!R(r T@9@9 @9|@5@9qTq TqTq@ Tq` TqAT @9 iT @9@5 @9q5@9lqTtqT @9qAT@9iT @9@T @95 @9<5 @9q!T@9 ITRRԡr!T @95u @9q`5p @9|5j @9q5eksY@9 @95Zр{tCS[cks $E!AcCB@Bc@@!@@B @z@3xb`8@`7YR@@@17rT RNrT`$4`@?qT7a@! @?T`@Rr R*`@W$E@@`8@7@@@ 6$E@8@7"TG 8@iT@9@*g8@_T`@T @Tc @G@@T `@2`9$Eb@` @@@a 8@ 7@@ r!T`@`"7@tCBC!@BC@@c @1T{DSE[FcGkHsI_@$E@8@7$E@8@X7bT ka8@cBh@0k!8!T| @oaR`@`!RؠrT@@8@6!RϠraTRˠrT!dA(D!@994R҂R,!RrT@`8@ 6!RrTRrTG@B!RyRrAT@8@6!RrTR29ţ ,T qTcR@rc3@"R`!GRC"9A@8c3@@[a@?kIT`@]A^c3@&|@@&|@"R`!GRC"9A@8c3@@ B@c3@D@B@@!AZ@[C^"@@yB _q NTh?`I9c3@2` 9A^B@@]qITc3@yD@B@@!@[ qJTc3@{B@@!AX@ZB]%@@yC^ D@q`FT6 `I9c3@2` 9c@[A^|!RRRhAZb@_kATc3@QR``K9MF]CZ!RD^RE@\XT*]AUc3@a<F]CZ!RD^RE@\XC*LAUc3@a+@@:c3@#@@X]\[0*5c3@@@X]\[z*'AXc3@a@^Y@\ZX[R*AWc3@a@^\ZX[|C@R*AWc3@aB@@!@WAXB[C]D^M`I9c3@2` 9D^E@R!RRc3@@^YZ\WX[L*RA@a @Uc3@`@@@@ = @B[C^RD@\Z *AWc3@a@[A^!RRRAZb@_k(Tc3@@]@[(c3@@[@Z@A@A]&@fc3@p`yX@lBWR\ZRRARB[RC^D@*wATc3@aVBXR\URyRARB[RC^D@*aARc3@a@y@@Qc3@9@WR\ZARB[RC^D@*GAUc3@a&AW @@y $qT @92 9AWRB[C^D@\T*0AQc3@aAXRB[C^D@\Wt*!ATc3@a@W\RF[E]!RD@RRR RP RB8@B28@QAc3@ @`H/Vc3@`y`yX@\^RY@yR*6Vc3@@@R.Vc3@A^x@]B@'Vc3@RR|@RBB@@c3@B@*c3@@ @@?qI T!Q`@Tct뢦T@"sBVcB  @@?q T!Q`@btBTa@@kkTy`8@{`qT@@@ @?TB@!`FB$@AB@B@"A@@}a@s@T` @@?qIT!Qa@sb?TRaia@c3@Ic3@aFc3@aCc3@Ac3@?D@jRc3@4Oc3@0c3@.Rҳ@]RҬBA@@ c3@c3@c3@c3@c3@K9c3@K9c3@c3@ c3@ c3@c3@c3@c3@c3@K9ҙRRYR*_c3@K9+@(   {!G  {[vCS @A@3@@ys"sQs>`X7BRfq)Tr@7@7vCC@@SA@[B{è_ֆ@`7@rT&@O@6  {S_r TRRRRRR@@SAR{¨SA{¨C !raT{ @@ @ "R` @ @{¨_?@q@Tu{ @"\@x73@s#RL @{¨_s@s @{¨_ {!BS*[6@6 @ AD"@B"!RN)*qT q(Tk T qTb SA[B{Ũ_*B!xu! B @z5?@@2qT?R@r" @ !7@2 SA[B{Ũ_*cx~}ӗB#xu#Bjx8Rd@z5 @9 cSA[BcC#@{Ũ_ @ @ @x2B SA[B{Ũ_@}bB*CAha8b@jx8*"@ @d7X6@d @6c@c@c @c7R?T@9 qT!G@9%e8фaTA@? T@9%gq T!G@9#c8aTE_օ@8qT?T %T Հ_8qT Հ_8qTT@8eqT?T%&T_8!?qT ա_8!?qTT { RDS@ @@s~!js8(7SA{¨_#,@hE@@@@C?,@?qiT!Q@A@@@!? TRjs8xj38SA{¨_@"@@C@?`T!@ @ A {SU# @c4cL q TAR4Zr`T"R`@ SA#R@{èa @@SA@{èE{S @"_(qT_,qT7 7 @!x )B@b@ D@!cBFc !C @!@B_TcAc@sx"b@B 2b5SA{¨_֡76@@C A9qaTA@T @ @ ARB@ r:! R@@1@Д@b @! RB !R{cBd@|b@@,T qT#ROb@@6`@`@x`@ @9!"*9@T@T?mT! $Cӂ  @#T! ?MT @@9! *@9@B!TB@@BҁT{B@_a@` @!@C#R rT`@@`@x` BtC!E@ @P6@s@s@9(qT3!sja8(q@T@k@@ 7v@#@Y7kG!B@"@A,T{CSD[EcFC_ր@ @@$E@8@7@CT+Tb_8B_q`TbB$c B`Sc @} _!T @T96TF d@8d8BBD9@A(T"c(TTC@y6@HVD@TR 4r  qT#Rk@6 @ @!4!L ?qTARkTA,!T ?qTcBR>E@@ @7@@BJ7_ T@A?hT@c`5@R!4r qTR2@R@r"@ @!@_h!8@ 7 @Tk7@@@cR@?T*s?JTkG9Rq %*Rse$|@## T@B@TBBBBCBQM]kG @ @@6@@c@9s៙R@r@ @2@C@ݷ6"j38Rr@@"@9 ۷6@@J@@9@9?kT|>E@@ @JA6@`6Cc#RyrT@DTT96 {Cc@,_T@9qATRCkCkC{S`vC@@@9raTD@ (@7!@ R#@9qT@@SA{è_ ,@ qATFC@@T# C@` @@SA@{è_"ҨsvC@b@{SvC[!AuCF@#@@@D @vxdMTsC 6`@@SA[B{è_"҃@@!tCA!@@" @xb@ @x @ @_  {S[uvCA@@B @7xb@@!$@@ @!@"@B@Bx`V@@B\@"6 @@ @@ @svC6x `@SA@[B@{Ĩ_@@! @ svC[B`@SA@@{Ĩ_ {SavCC$@@@9@9_rBA@87@@yc hq avC!@"9b7CsvC@`@SA@@{è_#Re/7avC!@"96!9!*!|S  {SvC @c@f@9F6E4p7B`$E c@9*5 7 RrTq@TvC@@9raTD@ (@7!@ R"@9 qTBC!@B@!`ASA@{è_C86(6*SA!R@{èxc@`:B`$c@B0EV!C"@B "R``{SC@@`@ 7X6` @ @6@B@B @7!?(qH TvC"@A@9(6A@9!87!rTCvC@ @@@SA{è_? @qT$Qq TbR!` @@RR@@`@!RF@ @@@@@y @@T3PtC@@C@@F`)r !EM{S`vC[C@"@@9U@(7@9 7@7@@C@ svC[B`@SA{è@_ 4@CsvC@ `@SA@[B{è_k|@RRbR@  {S`vC[C@"@@9V@(7@964@R FBC@A@J TRAR@x%@ 2@R 9@ @ C6 svC@`@SA@[B{è_ @?TbvCB@C@9(6@aC@ C@@` svC[B`@SA{è@_L@9B @`A@xb06@@6$E@8@7BR@R!(D#0rC q@9Rc jT RB* C@    {BS@ҁvCcC!@c@"9`@B7!@9R#R! ?qT#CjsCvCb@!B@@@"@c@T{BSC_#C#RT`@ @`X6 @0@9_4q#CRF@`8C{BS@aC!@ @ @74P6[}@U@_T[DC#R$` @BP7@`sCBtCc@!B`@@@"@c@aT{BSCC_@bRBr#@kT#@yBGRkAT6"RQ4*4қ[DAR @@C@@4qTBB 23\@co6 @$ca[`сv]) {[SvCA@@" @xb`@\@@(7 @9 6CF@@MTvC" C3@@SA[B{è_@"҈@ { sC`@@b@!tC@ @ @{¨@_{[vCS%D@BG@`@9rS@aTD@@(@@7B@ R%@9!D&sqTC@qT`BF!CB@!@@ ?Ts"#TC `@J`@bTvCSA@[B{è`@_րsCb"@?TT @4CvC@ @SA`@[B{è_@,@ qTsC`@SA[B{è_c@ @#`@F@-T# C@C` "@  {S`C@@@@ 7X6[vC@@9(7 7 @ @@A"R@xc/sC`@@7vCSA@[B{è@_ց @ @ 6 @@ @6@@@@B<@b4@@_1@T_qTsCvCb@!@A@SA@[B{è_sC@b@!tC@ @SA{è@_@qT@ @ @9qATvC@  C{CB[SvC"@@ҁC@@9 3@qTv_#@ 7 X6 @" @ 6"@B@B @ 6,T q TR<@ X6 @ @@ 6 @@ @ 6@@BB2`@#@C@TvCB@@@c @T{ASB[CC_$E@@ 0@90qT`@C@T р,T q`TR@AaR!`+m@@@@ @@G@`*#` *#{CBS@ғCa@ @ @B,BT _q TBRa@@93__ qT T_@qT)T_LqT@_T s@sbC# BtC3BA@@@c @T{ASB__q@ T_qT@_T@RIr_kTCs@@sb_q`T_ qT@_!T@`Rr_kT` @@"5@_$qT_8qaT@_T@)Rr_kaT`@@3C@@@B@@_!T@"HRB*rkT@9dq!T` @@`@ 7 6b@_T@y R_k!TJ@_(`T_aT@RBrkT@y R_kAT` @@@_T@)R` r_kT` @@@_!T@*RbhrkT@y"RkT@9qT`@@A @6!@ @!<@4@ (@)‰T@yR_kT ` @@f@bjR"rkT@y HR_kaT` @@}R@@O6t  {CBS@aC!@4@@,T q`TBR@wT@ LVCTsC@b@!tC@ @@!B@"@cAT{ASB_!TsCtCb@!@A@@@@@@H@9qTARC{CBS[vvCc@@C @9U@06׆_ @@y qTjsvCCa@B@@c @ T{ASB[CcDC_F@-T @"hE@@W@ @@y qaT@@,T qTBR9@@BB 2.BAB@Wx`"I@@ @!@R/avC@!@@M{SavC[CA!@C@@" @5@@ya@"qxbqT@7CsvC@`@SA@[B{è_^@@6{DcS[kswC@!AEDG`@CY@@y!@9}ӓ@{# @qu@s4`@:LcC&!@!`@@=@@A<@1T@!`@6hR@a,"Ҥa@@o@``@CF@@TC3! @@9@!@?! @@g"҂@@_8Bp_!xa` %  {RS%4rsC!AvCb@@@@#@ @ @! txd?q!T@a@?T `R@#0r q Tb@vCT@SA@@{è_SA@{è:vC R* T@SA@@{è_ {RS%4rsC!AvCb@@@@#@ @ @! txd?q!T@a@?T `R@#0r q Tb@vCT@SA@@{è_SA@{èvC R* T@SA@@{è_ {[vCSCc!@@"@9_07# @AA!@8xc@@@`*(X 5 RjaTr!Ts"H3 4@ Rj` T Hӄ@S4@ RrF@?$j@T@ RrA@#f? j@T`*TRR K!|Sg$ŚBqAT|I TDH6@@@H6@@@R!(D"0r _q!@9!R_j` T@@R* S4@ RjTrTRCvC@ ѡ@SA@[BcC{Ũ_ք@O7R@`@O7R''@rTR@ HӘR@s"HӌRRrTC@@|vCSA@[B@cC{Ũ_A@6c|@A"|A`R*r T@B(DB@9BR?( T_qR"0r @Az T R* #ATc!@a@nA `!a@6aAӀ@R!(D"0r _q!@9!R_jT@@R* vRdO7!a~!` @Rc(D"0r _qc@9cRB jT R* dR0!ss cR_q!0r Bz@aT@@R* NB0H]EB{S[avCC!@@"@9_07# @AA!@6xc@@@d*(!X 5Rj`T R_jaT_r!T @6 RjaTr TR-@C@6@a @6@@!@@$__ӄ|AT@R#0r!|C q@TC@O@*@6@* R&RrD !@#jTaR@ Rr%R@kT`R#``@T!|@|@gG!|kT?HT@R#0r B(DqH6@@@@H6@@@Rh!(D"0r _q!@9!R_jTC@R@* @@@C svC`@SA@[B@{Ĩ_RG@`@O7RA!O6@h!g@@"@`p a$ T@R"0rb" _qTC@R@bG6@[@@R!*@R@RrTC@@@D*@svC[B`@SA@@{Ĩ_c||`aT!|c|`cTk@THT@R$0r B(DqB@9BRjTC R* @@ RB* x#b cTC`p aT@bFxb@ aAT@R#(D"0r" _q@9RB _jTC R!* @c^C@@]@R!(D#0rC q@9Rc j TC RB* @GC@A {S[ЁvCC!@@"@9_07# @AA!@6xc@`@@@*(X 5 R_jaT_raT@6`@ RjaTrAT@*@6@* Rr d@?"j@TD%Ra@ Rrk$R!@TaR AITÚ#@B(DB@9BRk T?T_qR"0r @AzT R* "H6@@`@`H6`@@!`T@hR!(D"0r _q!@9!R_jT@@R* @CvC@ ѡ@SA@[B@{Ĩ_R @``@O7RRl@bG7Rf`@@6@RRrTC@@svC[B@SA@@{Ĩ_@R@O7_qR"0r @Az!@T  cR_q!0r Bz@aAT@@R* +d@-  {SavC[Cc!@@"@9_07# @AA!@6xc@@@ *(X  5k+ R?jaT?rT@6 Rr@!jTW@ /RR@ RjaTra T @6 Rr@? j T@@R 7ךJ!?jx 4?T4R@AG7H6@@!`WT~g!`DT@R:RҀH6@@ `W$Tz5~g a$ Tl(a@e 4)aAe!`` TA`J `j@T9`@aq `@ 7CsvC@ с`@SA@[BcCkD+@{ƨ_/R8R@aR@`R@`G7RO7R5R/RRW@~RRrTCk+@@_svC[B`@SA@cC{ƨ_AaR@@qc c@ag hA`9RT@.{CB[SСvCc"@@CA@9@ 06t_7raT!D#@a(@7`@ R!#!@97q@TA@9 07a! @@A*!(!X 5s"B `7 h6;BH6@@A`r"T!`Tx;@ q Ta@TR@R 4r` q@TR@6$E@8@`77R`Tx @ؚ"T!c7@ @T @ @ @| @ @@?h 8@ 5Rrc Rc*VD @cAc@txd Rr"j@Tb @6@@AРR!`.zq!TvC@@976s!DkG"@y@C#T}9MT@9{ ؚwCkTF@ TZTgBx  "џ T@ @46AR @@@9x@@ 07a_]cxRc\c*#7vCt@C@!B@"@cҁT{ASB[CcD_Q@R@T@RQI@@Y`,@ q7(@8@;R@`-RRr Tx@s"@s"т6@"g6i``s!# BsvCkE@sF;@`k!D9G"@ @C#X} Tz@!F!@!?mTzB@@B`@kElAРR!/;@skEsF~a_x@vC@@xOG@9I"F!@ ks;R@@0ks;L@/;H{SavC[Cc!@@"@9_07# @AA!@5xc@@@d*(!X 5RjT8RrT`vC@@9zF R_jaT_raT@6X 4@ RjaTr!T@*@6 Rr@_ jT!@$R RYa @6@@@"@!fDf!~ӄ~!!7 ~@R#0rC fqTkC@ T " T #H6@@5Aa@R"0r!(D _q!@9!R_jTC@R@* @@#@C svC`@SA@[BcC{Ũ_R@`x4@ H6@@R8h@"0r@$R@* Rr"j#R@T`RkTBT@B(DB@9BRd 5HT_qR"0r" @AzTC R!* @@O6@h"g@@#@`0 bT@R"0r8c" _q`T.C@R@R@@R!*@RRurTC@@@d*0svC[B`@SA@cC{Ũ_ RB* R\^$a^ d!Td` bDTR_qR"0r" @Az@JTC@gb^Da^` d!T.C#@@\$R!@wR@`@6@ cR_q 0r Bz@aTC@R@!*@@B#@&{S[avCC!@@"@9_07# @AA!@7xc@@@ *(X  5a @6@@ 7 TRЁ`vC@@@9 6 @6@@4 7q Ԛ@RB(D#0r qB@9BRj T R* ! Rr!j TR 7q T Ԛ!ӄ@Rc(D"0r _qc@9cRB j T R* CsvC@ `@SA@[B@{Ĩ_R@6@4@딒R 46Kq(ԚR@RraTC@@@@T6K$R$ԚqaT$RҷsvC[B`@SA@@{Ĩ_{  {S[avCC!@@"@9_07# @AA!@7xc@@@ *(X  5 @6@@ 7kTRЁ`vC@@@9@6! @6@@T 7q(Ԛ!@RB(D#0r qB@9BRj T R* ! Rr!j TRP7q T$Ԛ!@R(D#0rC q@9Rc j` T RB* CsvC@ `@SA@[B@{Ĩ_Rg@6@4@딒R\6Kq ԚRRrATC@@@@t6KqT Ԛ!svC[B`@SA@@{Ĩ_ Rҭ2x{S" @ R_jaT_rT"@6`@ RjaTrA T H!4 RrB  ? jT`@@_kT @SA!@{èZ_R@"G7H6@@`@H6`@@ hTlT h@xSSA{è_RR{@``@`O7@ RSA{è_ր@_k@T@a@!@'ᗟK@SA!@{èן᧟K_R`@@ HӪa@@!@?Z@{StC@@ @% @f*(X D5c @7H6@ @a@@@0 `DTsCC !tCc@ @SA{¨@_f7@ @a@@?*T@^1T`C@@R RrT@@ @% @f*SAtC{¨@@_aC@"@  {StC@@ @% @f*(X D5c @7H6@ @a@@@0 `LTsCC !tCc@ @SA{¨@_f7@ @a@@?-T@qT`C@@R`RrT@@ @% @f*SAtC{¨@@_aC@"@{StC@@ @% @f*(X D5c @7H6@ @a@@@0 `ITsCC !tCc@ @SA{¨@_f7@ @a@@?,T@q T`C@@R@RwrT@@ @% @f*SAtC{¨@@_aC@"@  {StC@@ @% @f*(X $5c @7H6@ @a@@@0 `JTsCC !tCc@ @SA{¨@_f7@ @a@@? T@s6`C@@RR)rT@@ @% @f*SAtC{¨@@_aC@"@{StC@@ @% @f*(X $5c @7H6@ @a@@@ `ATsCC !tCc@ @SA{¨@_f7@ @a@@?T@'5`C@@RRrT@@ @% @f*SAtC{¨@@_aC@"@{StC@  @# @B*B(BX 5qT|@vCRA#0r@@ @@(Dxe@9@BR qjT R* sCvC`@ a@SA@@{è_@bR@RrT@ SAtC{è@@_  {S`vC[c#@@ @XQ< qTA!!( @6@5@C@8@"@!*!(!X 5&E@`8@7RL~k@jTCsvC@" т `@SA@[BcC#@{Ũ_5RR*!RrTR@8@6!Rrr!TaRnrTRrT@svC[B`@SA@cC#@{Ũ_  {StC@  @# @B*B(BX 5R~5@sC!tCb@C c@ @SA{¨@_@R`RrT@ SAtC{¨@@_{StC@  @# @B*B(BX 5RM4@sC!tCb@C c@ @SA{¨@_@RRrT@ SAtC{¨@@_  {S#yC[c!@vC7A@@@@B @*(X 5xb@5&E@`8@7R|@@R`(D$0rC q@9Rj`T RB* sCvC`@ a@SA@[BcC#@{Ũ_!RrTR@@8@6!RraTaRrTR`RMrT @@SA@[BcC#@{Ũ_{SavC[Cc#@@a@9_07b @!A!@6xb@@@@*(X 5k _rAT4 R_jR `@96 @6@@ @6@@@R(D#0rC !q@9RjTk4@៙Rr 4@៙Rr CsvC@ с`@SA@[BcCkD{Ũ_@ 5 R?j`@9R`7 Rr"jTR@ Rr!j TR@R!(D 0r@ q!@9ӄRc jT RB* R!@aG7R@@`@ @6RRrATCk`vC!@@5@@qsvC[B`@SA@cC{Ũ_@@RRk{StC[@  @@A*!(!X A 5vC!@#@9c 06!@9A7 Rr?"j@ TR@ Rr!j TR@R!(D 0r@ q!@9ӄRc j` T RB* sCvC`@ a@SA@[B@{Ĩ_@6@@@@6@@@R(D#0rC !q@9RjT$ @cA!@9c@txdA6R@@G7R}@@@@RRrT@  @SAtC[B@{Ĩ@_1{StC@@ @a @*(X 5vC@@9A06 Rս@`7sCvC`@ a@SA@@{è_ @ A@xdRRƽrT@SAtC{è@@_ {SavC[Cc!@@ @9V_07# @A@xc@RX@R5@@@"~qA*!(!X A5k_raT`4 R_jR9 +`vCC@@96c 5@9 06d @6@@@dc(DaR~q 0r@ !q`@9Rj T4@៙Rr  4@៙Rr +@CsvC@ с`@SA@[BcCkD{ƨ_+ 5 Rj`vCCR@@9A75@9@07 Rr"j TRd@ Rr$j`T<@A@! 2ASA@{Ĩ_,@*T{S[cs  TRSA[BcC{Ĩ_SA[BcC{Ĩ_R_{S[  |D@d@TR*SA[B{è_O* 4*SA[B{è_@*{q{_!!LG{_  {@B@B$@@?{_*{_֓"R"  @{|@{__ {@c@c4@{tR{_n!R  {@c@c8@`?{_\R"V"R"{@!@!<@{DR{_>!R  {[@!@!D@Ra ?**[B{Ĩ_ RTA@VSӂ  a@s<q T@VSA*[B@{Ĩ_R*[B{Ĩ_!R{ TA[@SԂ @@ @a!@7`@@aT@SA[B{è_ { @ @{¨__  {@S@a@A!@ ?@T@SA@{è_@3s@SA@{è__{S[*|@4SA[B{è_c@*`@x``@b|@@5s@`SA[B{è_  {S@a @b@!s!o?@@Ta@`@BSA{¨_@v`  {z{_  {S*m*%|@SA@{è_{ TA[@@RSr ӂ s`T`@@ j!TsKT@SA[B{è_  {@!@!H@ ?{_R" "R"@@@` @{¨__#{CcBS`@ғ [u@@P6@b@@,T q TBRb@7@ң@jTB!_TN@![C!B@"@caT{ASB_2"R"f[C[C`@a @@b6BR!R@rT`@,T qTR@a!RR"[C`@a @@[  {[c@ @P6Sw-TdTTgarw,Ttb4SA[BcC{Ĩ_2 "R"[BcC{Ĩ_=_SA@@,@fx{]"R"{_  "{CcBd@@9!B@Z@"@cҁT{A_8 { @c@c @{èG @{è__  B{S[`@,TTSA[B{è_d@Tb@SA[B{è_SA[B{è{Sc @@ 5[@ @T7 @E@qT@5*T @T[BSAcC{Ĩ_rT[B@ @2 SA[BcC{Ĩ_,qT@A@!2A[B{Sc @@5[@E @@qT@5*[BSAcC{Ĩ_]r T[B,q@T@A@!2ASA[BcC{Ĩ_{S[c@@6@@b Ts@TBTT4@sA@!2A@@@ @t  @SA[BcC{Ĩ_7@Җ@ @t  W@VqSA[BcC{Ĩ_sҖ@B@A!_TҖ@t@ R|@X4Cc҃ҽ@@@"(@RC9?({S@ 5@@7`@`S `@ [5a@b"@-Ta@!a@A@!2A[BSA{Ĩ_-Tu"@`@Җ"@`@C`@|@4c`4 TT@A@!2A[B4@A@!2A[B@A@!2A  Հ{ @a@ @{¨__!$E"@C8@ @9qTa!@:6{RR@$@ @?rT!,!T ?qT{BR"#6a! :{_@_  CAz{BS[*ck**s*@ҡT@@`?`T*`{@{dT`@h{T-B@@B T{CSD[EcFkGsHC_T@8@!{@bc @R`?@!@ a @?qiT!Qa @ @@!@@qmT@6***?@d@cT@4҉1T S`@94Ҕ@94@`*RRR0{ sVA`@ @{¨_aR!b1ss R,@R @{¨'  {S[*cgBTA@@ 8R4@ @X7s`@9 5`@9`54@SA[BcC{Ĩ_54^@ @@7?(qiT?0qTT8R?,q!T`RX8R5hRB@B`=i4_ @qT"$Q_kT`7?$q!T`R@3?4qaT`R *b`R  { sVA`@ @{¨_]`@ @{¨_{ sVA`@ @{¨_L`@ @{¨_  {CB3=#='=+=/=3=7=;=@')K @@u!B'@"@cҡT{E3@_֩{ sVA`@ @{¨_ `@ @{¨_a!dX{cdASBB[ c@9@@$@ @5F@ 4```R@R*s`@95*C*@7*#R#@R*u*@ @ 2 ` @a @?qT!Qa B@@BT{CSD[E_R**C*6!@&{S4*` @**vt6(S%*` @*6a @?qT!Qa C|``i#R#@R**`R  {CBBSC@`R7R&RRp!B@"@cҡT{ASB_{CcBSa@`R R&RRF!B@"@cT{ASB@_֡{CCB" @`@_rd@ TB,BT _qTBRS@? T@Rh!B@"@c!T{A@_"@ @A@? TvR"l{CBBA@}@!BZ@"@cҡT{A@_L  {JB#='=+=/=3=7=;=?=!R)C@@7/) @@#d R {[ @ Sc2@@q TRRK!X7 @@"qi T2@kT@Rs!Tt"BbB ` @@?qT!Q@sb"T`@@kkT`y`8z`qT`@`a @@_T$@c`F$@BA@8B@d@C!@!$@!@!@`@SA[BcC{Ĩ2@[B{Ĩ_ {BGS*!B[cWRks @[@`#`C`S``c``s qT`"s8a33"Xt" VU@zz _yDXya@3?T`@!!bUZ!C!|BU#$Ta5}bщ`zx?1T`@1@T P:qTbB>|@@xk`T`B5xx 4uУ&c`Q|@"RRc8c3@K|%Xk`Pq(T`Xdxd X@ q TRRKh9@@?qT!Qc3@kTcQRz!BzX@ @ & A cB Ahv8Bx!Qc@C#|@x P:qTa!>|@ xkT&zxXy*BzKT`@`4 q TvМ`R>3` @ @@?q T!QZcz@yzx?1T!?P:qTx!|@qT`@TB@@!@kTAy`ba8`z`qT@@B @!B#@T"B@!`FB$@AB@B@"A@@@{xqTCqcTAcaB8yc@C@@B8y cB`@ !~3R{!B@"@!mT*{BSC[DcEkFsG_`@U4 ` 4`q @WR(TbW`83xxqT@q@[Ta@!5AcaBB y`@@@@@B cB`@ `@`4Q`8y` wF>E`@ @W3xxXy8y!a !GC`R``K9` YF @=X^`A@C R`K9`IFc3@A@Rc3@@[wc3@@@rc3@@@Z@9@^*9c3@@@ RR RRc3@@^ RRRRc3@@^ RaRR`Rc3@!-RR B^ RRR c3@@@\^u R*c3@@@l R Rc3@@@c R Rc3@|@^A]B@c3@uR`RR@^_@[% "RRYRR8RJ@[ J@9@9*9c3@UR`R2@^?@["RR:RRRa@G@[F@9@9*9c3@6@@"RR"RRVc3@+Mc3@&@^Hc3@!@@RZc3@B@RR?c3@AZRB]C@#c3@ @@RR.c3@A^@@ c3@B@@!@]B^C@c3@B@@!@]B^C@c3@B@@!@[A]B^C@c3@@]rc3@@^Qc3@@@ R!RR Rc3@@@$c3@@]B^A@Bc3@@^A]B@bSc3@B]RC@@Rc3@@]B^A@Bc3@@^RB]C@c3@@]B^A@Bc3@B]RC@Rc3@@]X^^ @@[ *;c3@t@]X^Q @@N *Ruc3@f@]X^C @@@ *Rgc3@X@]X^5 @@2 *RYc3@J@]B^A@VBc3@C@]X^ @@ *RDc3@5@]B^A@ABc3@.\^XџqT@] \^@@@ *R+c3@@]B^A@(Bc3@@]X^@@*Rc3@@]B^A@Bc3@B^RA]C@c3@@]B^A@Bc3@A^Rc3@B[RA^c3@BZRA^c3@@]RRRaKA9?qTc3@@[\^R R'RRaKA9?qTc3@@@R B8@!28c3@A@ @@y Q<qiT @@ 7`@[RB^c3@\]q`T*Rvc3@@@pRRc3@X]@]Rdc3@@@R^c3@{@^\@X RRRc3@m@@KRRc3@dA^+RB@?q!`Sc3@ZA@+R?q!`S4c3@Q@^RB@uc3@J@^RB@nc3@C@@R c3@=@@R R_c3@4@^A@-c3@.@Zd"RR@]fR R-c3@@XT"RR @]VR Rc3@@Z @]IR Rc3@@["R!R@^RRc3@@^A]B@c3@@@!RXc3@@^A@aXc3@DZ#@XA]B^tIc3@@Z\^R R/RRaKA9?q Tc3@@[RRRaKA9?q@Tc3@A] RB@c3@@]RRc3@@@RRc3@R`Rv@]@Z"RaR~R`R]`R@Z@9@9*9c3@zR`RW@]d@Z^ "RAR^R@R=@R@Z@@9@9*9c3@Z@@8c3@U@@[c3@P@^A@ac3@JyX@G@[c3@B@[Hc3@=@^\@ RRRZc3@/@[\^  RRRLc3@!@^A[2RRAc3@@[Lc3@A[Rc3@ @@!8B @!@!@8xbWc3@#c3@@^c3@@@!RWRRc3@@^A@jWRRc3@ R`yRaI9|@c3@!xa 9B@Rc3@yA^a@]9c3@yA@a@^RRc3@@@!8B @!@!@8xbc3@@@!8B @!@!@8xbc3@y@@#Wc3@A]x@ZB@RRxc3@X^y5c3@@^\c@@ @xy@B@*&@c3@uA]R.c3@o@]c3@j@]c3@e@Wa@?kIT`@XA]yc3@Z R``K9V@^`A@nB<c3@L@@c3@G@@%c3@B@[a@?kIT`@]A^Vc3@7 RYaI9|@c3@!xa 9/X]-B@@A\@!2A\ @!2 c3@!@]K@[@tҜA@oA^a@c3@@^;@]@dc3@ A^ RB@"R!G"9@^@@`B8@!28c3@A^ RB@u"R!G"9@^@@`B8@!28c3@@]a@?kIT`@[A^c3@$E@8@"tZCQ qT_<qTa6P@7B@@\@6[R"R!B @@ \@2 \cK9yb 9c3@@@<c3@@@7c3@@X`RB[N@^+C@R B8@!28c3@A@ @92 9@@c3@@]\@c3@C]B@RA^c3@auC]!RB@Rc3@m@@KC]!RRc3@c@Z"R!RN@^;RRbc3@S@[ @^.RRUc3@F@]\Z#RRJc3@;A^ RB@WBZ RRRWc3@,B@@!@^C@,_c3@@[RB^c3@@[RB^c3@@^RB@zc3@A[ RB^#BZR`R R^RRfc3@A^ RB@B]R`R RJRRRc3@@[A@R R9RRAc3@@WB^ RA[R R$RR,c3@@]B@R`R RRRc3@@XB^ RB[R`R RRRc3@A]\Z*IB^ RR*c3@@^\] RRB@ RR*c3@pA^\]*(B@ RR*c3@aA] RB@c3@Z@]B^A@f=c3@S@^RB]C@c3@K@]B^A@W=c3@DB]RC@Rwc3@<@[a@?kIT`AZ RB^\X*Kc3@,G@ 9c3@&RRr|@RBB@@c3@RR|@RBB@@ c3@RRx|@RBB@@c3@X@c3@X@c3@@@qc3@Cc3@ @RhC@,F@_ǟ8|@c3@@]X^@@*Rc3@@@]Rc3@`R`R@CRRRRc3@C]RB@Rc3@C]RB@Rc3@@^c3@B@A^ Rb@@Q_1T$E@$@Q`RRR2c3@@@@i@9@^*9c3@y@]X^V@@S*Rzc3@k@@c3@f@^A]B@ c3@_yX@\yYA@G@I9 U4PR R|@RBB@@?c3@E@^\c@@ @xy@@B@*@c3@+@^A@Xc3@%|@"|@A^B@2yc3@@]A^cBB@|@.@(@@!\@a@6 @`6p`I9c3@2` 9@^A]B@$ c3@@]B^A@<c3@"R`!GRC"9A@8@"@@ )! @$;BcF&@ @X @ZAXg#@k)TKw2_k⇟4~R?jTb2@9R_8q@TR#@BKB|S4o@{{$@vt@@^@CR@ qT@^@R q Tb@A@q|}c} h`@x{ @ 6`@+@`@5q@zATkc@97@9@ )@9B)ߘq#RB!**@9qTqTqT`B@ab@ D@!a b!FBC @B@ Ta!A!@3x `@ 2` RG7 jA@XV?xS!77Z@/@ @*@R@C 776{{@97/@`4 R%rT@9)?qB)B#R*!1/t@v77/@4$@9)%@a@R!\@?jT"a@ \@2 \.RD q`T576c5`2@98qT@@A@!A"RDab!Fa!B3@ `b@"D@!t!aB,@@ B@a.b`!F`@BC @d@B@d@ c@  a@!x!2a_T#\a!B3@`b@"D@!t!ҁB0@!B#@R2ra?a@?a@?a@" a@ `a7abc@2!F`BC @d B@   TI#&z%`@`RrҀRi*@0#@9R@$@`2#@9R@$1#d{B@SB 5tB@ds(G[3%R@T@9qT@@$@@@ @@T%s`Tzs@9_AT@97@@T5"@1T [E3@`B@@BT{CSD_[E3@*@3[3;#[38{S*>$*SA{¨D"bRr{CDB* @@RB r_k@TBRO@*,"a!B@"@cAT{A@_@@!@  {S*@! SR*!cc8B`@!``F@J@(@a\@!2\@(@@?q T!QSA@{è_ֳ {RSR !@ ]$cc8B`@ ``FSA@{è@  {a!FS*[c @95` F@@4`B@@a\@ $286d\C@a\@!2a\A@"(@C@@ Ta@aa\@6utbF:B!@@!@@!@_Tq TS4bFw@zraTbFw:B@@ @C@@-Tieh}A'R)iG@}G ah` @!h`$ˡ" @_jT $HT7dh`B2@9D7" TbF@A @SA[BcC{Ũ_a\@`B@ab@ D@!v!aB,@@ B@.`bFd@@d@d@ c@ c@cxc2cy`@x2`ih bFw:B@@ @V@@TwkzyAZkG9@t}zs@@ht  @!R_jTa_ !|GATzs"@!@9A4A@9?qT@?qT!QsTbFA@kD @SA[BcC{Ũ_z3RA@c`R  {  @Q`"`4 @{¨_A!abxaa@ ! @{¨!  {S*[@`"@a^@`"!`7!7`@@`b@@"5v!RbF@F`a^@AX6`@_x!L"@ @?T! `@U@ RB a^@47Ax6`@`!a^@!xa^7v&@`cLA@@q@ Tks d@bZ@|*@\@: @T`Tzt@a!@9?qT@X{t``^@`77 @ @qT43@94qaT@(@?T| @!4\@!x\@(@X @ 7& @5`*@`* 67R r! a^SA[B{Ǩ_8!a^@~kDsE@@TwxbFA @?q T!Q@T xt@?T@?qHT@aTb @A8B"@_@ T !@@ ! !&a^@cC`@`@?q T!QRa^@ r! a^SA[B{Ǩ__6`@v!RbF@`aG!A@?`a@+q`@Q:G@?q T!Qa^@`@@?qIT!Qa^@_{4 @?q)T{Q!Q 4fa^@7: @_qT?or{Qo@*la^@nkDsEyfa^@gca^@](24cksy R  {SvSA{¨  {StB[v7bFR`@@u@aе:B@!A$@B@B@B@"@`E!@!$@!@!@uBB`@t ND` @ujC`@t.F`@uF`@tG`@99`@995SA[B@{Ĩ_`SA[B@{ĨF!  {S3R@@y! ?hq`TR4@9A6a!G!@a!C95@@@yp6@@ qhT qThqT\qTB@y? @T Հ@TAp6@+ *SA#R{¨+|qTSA{¨_ @?hLqT qT!  $7B@y? @TDq(TB@y? @T!( $ 6@@y} {cw&ES[b7a@! ?dqThT?q@ T T?q@T?8qT `@9`6`@ a@! ?dqTa@ @@y qaT`@>?,q(T?$qT?hq` T?lq!T`@@@yp6@ @@y rAT @` T`@9 7`B@yu@p6?qT`B@y p7`@9 7u@  STaB@ys@aw6SA[BcC{Ũ_a4?qT`@96)q`TqT`@b97@@yB _`q"RZ+#u@B@y (q`T`@97#@`@9/6`RN r@Tu@2@9$qT @@@`#R`R!8\`&@`h `@hA!Tu&Eu @@@yw6@s@\`@ ls@#@R r`TYw6@@ hq AzIT@&@RU$@C$%R!8!@$#@G#@@y} a!B!@!! @7A(@A"@C\@CG76@@y! ?q`Ta@!TT_+=TiT'R_3`TE[47@ @?%*_#T;@RR  fƐ$Rҟk T`@ qT$qTqT`B@y rTs@`B@y 4qdq!*4p@"@ypT\qTXq Tq@А=B1"@c)zqAT"A"5\q`TXqTa@9R!?qTz!RR 4z*!RrSK8"_qT{4DR54`B@yR $qAz T`@9XqA Tj@9q`Ys@p@Ѓ=B"@!/cxp!TRXQR!<?qiT54z*!RR_ T%ITE47@!R @r4q.Ta@9?rTR"b@9Cc@Qr!Tb87`@9xq T`@9RqRs@"u5SA[BcCkDsE{̨_`@ 4 @rTb@A@@y! ?dq$@z@TRO) _)HlJT)O@_@|s@Ep@9`Ra@9q BzT{4`@{%{s@6p@9`@9q BzTa@ @@y <qAT @9xqT @9raT4`@{%|3@b@a@9!x!4Rx @!G6 Rr! ?qTARO) _HlJT)O@_@?ᇟq!jT4{%`@@?qIT!Q|s@Btb9\qT`@9Rr@TF@@@y rT@ @445`9R`6Rb@9A!@Q?rTw 4 4DRRGO@1G@O@T@9 *9@`47@ C@ B@yXqT"RR7@1HATs@ H "@@yb p7H GqlG@T{U?dqTA97@@@@y! ?`q*O) _(T)lHO@J_@4`@{%u4q5KqAzTG{}lH%@@O_cR7@?`T@9@A73@H'RR@a@9q`RbRBR! 9aB@y! ?\qTR?XqT`@9R iO) _+T)lHO@J_@%dqTo  {ihjkl)YA!9BJAkuCiER RRPRR?S?q@Ec T@9f6@@yf"rT @R߄T<qTh TqTT$qTf qTC@cC@9R 69q* T@@y@Cw6!TSA{è_<qTTqTT$q`Tf q T&cC@07cf 6@9 72C`q TT|qT@9C 6@906@cC@RcCT*fxqT5@9c6@T@@ys"qd@zxq)Tq@T8qT&cC@76c2CqTC@25c4:$qTC@cC@c@@yc q`T2T@9c'62<qT(Tq TTfxq`TC4`qTIT|qTxqiTqT8qTqT$qATC@cC@c@@yc q@T2oC@2cC@R @@xs,@ kTC@A 5,RF@s2c2F9qc*TR߄qaT[R@B@y"8qCzTp6@F@&Tֈ@9 7Ռ@9 5qT@f@@y"qT@@[BZSfxq T#5*@g[B C@2cCC@fF@@@y qTc 2C`qTiT|qTxqTq@T8qTC@2cC2C@RcCc@c@96kclSCR@ @@xs,@ kTC@5,R*k*  {ck#a@@y!B#@o C  qT* q T* sq'Tq/T q -T{#"< RRRR#R ? qTu5"@A@@y"p6@@"5@9;@9D{rT! "<? qTT`D T!R_qT R!y5!C@y! @9 $06@@9 ?07@@ @@ywp6@C@y@ *hq`T R 5.TbRb@b 4@@_+T@#RdDB_T@@yRB _qAT@D@ TD @d7@9DB7@b?q)R@ @t]Ӕ*`A @G@?T`BoD@BalT#cCkD{ƨ_*[DC@' / }|yC@ 44J`+ bT "@9_q 7T8!HT BB@yBp6@ TR:'@qw@`s@bF@ @"RTT@ҼRҶ?9 @`K@C@y qLTyP"R @Rңs@R`4g"R@@@9aRCC@yb *RBG"3CCy!2#@9*A9ARC9BAB [`@C@@z=TB@9a*7` {DDDDDDX` @GA?AT@9` 6qT{S@9`r TX@C@yp6@ 9A @@y* %7{DD_$qT @sB@9_rT"*qBGBs s` @G A_T@9 '6@q@AT{` @GA_T{@@@@y  qAT w6V@B@y qaT@Ҁ@4VKT@,T q@JTCBRK@b_HT!Gӵ_BT@9?qT_FT@9q@@TqFT@@FAT_ TAC@y! ?qT@s@?d@zT_ B$@8TT:TRr[*BT@@W4`6 qT"R@5B@B@B}B B_T 8!B@T  b_c BGBB|!B"T уB$B}B B T8!BT@@ @{DD]R@ s)@@@y7p6@ @@@y!2 A *`a#+-TkOkwy 5@  `@b9C?@T!@As"`"@9!_qT BARRK`_4q$RDDz_qDOz*{DDD5CK"C@ K@#R@7@w@mB7 wGT@W@T TB@yAp6@ B"Tw@_FGG@ T@ "RR@T3t@B@y  qT@@dWT`B@y p7`@@T"RRҷu@ `@WT"RR`AR*[E@ `MT xj? TA8T@8#a?6!|S!d2cc`2$8C9TA@Tz*J_AT"R_RY@R @!2 _@T @@?  C@yp64@"RC @R=@  @Ra@9b @B @! !*!2 \ @@"R%A@R `@`K x\"RR 1C@y! ? qT@A@@y! ?$qaT@B @! @_T@a@@y! ?$qaTa @?T%9C'/@T@B@yrp6@@9qT@@y!$p7?AT @#2 RC@ _9@C@yA @ @@K{8sBP{@@y} "RҖ @R@}  {[vu&ESBa@! ?qT?q(T?qTT?qT`&@a@9!5 ՟ TaB@ys@aw6!TSA[B{è_?,q( T?$q T?qTa@907a@9!4d@?q T?q`T? qTa@9!?q@T?$qaTb@9@A 6d@ @7@(@@C\@CG7n@T@@y qT`@hE@_TA@@y! rT?qTa@!T@мt$F@!@ ?z wC@p@мt$F@!@ ?m wC@@мt$F@!@ ?`@мt$F@!@ ?U RR0b@9GQ!?q(1Ta@9B!!*05A@9hBC@y i@H *!2I1q@9BzA9T@@9rAC@yC@! ?,qaPT.@Тt$F@@!@ ?@ Z@a @@y 8q TQ?q!GTbC<q` Thq!Ta@ @@y  qT @9@76ABC@yeR@@9!G 3BCy2!l@A @9`@@@AC@y! ,4q&TRR,RRE*ABC@y@@91R!Gb 3JBCy ** !8FA'@9E9k!R@*!@ @@y `@9rTbC@AF@9RBC@y`@9!Gd*@9 3c@CBCy @@ FrT(6@@92@9\76@@92@9B@@@TARjTA@9!2A9Rj T* 6@@92@9@@WZ=Scs Z`@@@!@a@C@yARC@ 3@Cy@@@J]@A\7 O7rT@@92@9Ê@9`qT@9kaTC?7@@c 끸TRcKk TC@ *aR @* &A@@yap6A@#@@yc qT#@e @W6c@c@C@C@9cC9@@Zu@@y} @}  A!$F!@   @BADBG@!CeB@`@ @ __ @@_ _  @ @b@x62"_x"___ _  @ a @ H_ _@ a @,K_ _  @@! 2_  @ @Q _@ _{ @`@ @{¨_`"@a" `` @{¨_`"``a" @"R @T{ W =Ab@!E@@!@@5`@@6 @a4 `@`@A7 R @{¨_R @{¨_@B@?{@@X|@{_{S# @@`5[cW @E@T !PT@_qT@"5TP1T9SA[BcC#@{Ũ_rT[BcCSA#@{Ũ_4@_q@TSA[BcC#@{Ũ_{@@H |@{_@@~  @@aH7_{@|@{_{[ @@`5S@@@AH7UE*1AT @4y@?qT@5*1 T kSA[B{è_8rTSA[B{è_4SA  {@@x|@{_@@  @@  { @@ @7dTb@A@!xA @{¨_1R"{S[ @@ 5cX@Ec@!=  @qT@5!ң@c@-  SA[BcC{Ĩ_rTcCSA[B{Ĩ_ _  _  {S@`@a"@T ~@A@!t ASA@{è_{ @@|@{_"R"  { @`@P7 @{¨_`@ @7@ @{¨@_`@{ @`@@?q T!Q @{¨_wA{C!BS@ @Ҁ@ @!,!T ?q@TBRI @@"˂B@@BT{ASB_@@o  { @`@P7 @{¨_`@ @7!,!T ?qT @BR{¨ @|`@ @{ @a@P7 @{¨_a@ @{¨_A{C!B@ @`@P7A!B@#@T{A@_`@ @!,!T ?q@TBR @`@BB@@A"{C!B@ @`@P7A!B@#@T{A@_`@ @!,!T ?q TBR @`@@@ C{CdBS@@_qT_qTb4R"A!B@"@cT{ASB_ր@ssғ@ @!,!T ?qT @s@@sR! {[@@H7[B{Ĩ_Sc@@7 X6raT6BR!Rr` T@@@u@@h6@a! 7` @c T @` @@@?T@k 8@R *A 7SA[BcC{Ĩ_@_T@a!7` @"T @@BR @R!4r ?q@TRҽ@@#T@7c @T @!R{>R"SAcC@5@R&@ @K@ @@` R_  *r@TqReRb%REcP6" R"9"ҟqTcRB#9?h"8_֟qTBCnR#y?h"8_B_"CR#9R?h"8_R"#9_{@TA@Cb? T B??! {¨_`@ T` @  @ { D!{_`{S@s @@@?T B@A@ q T@@@sT SA{¨ SA{¨__r@@  {S[@ @KTU (T|ӛc@ua|cch!T @ SA[B{è_T|2A@ !G` {S@? TR Ղ@!|sCAhab@Y @a~@?TSA@{è__  {S@@!@a ? `@@ 4`@@R`@SA{¨_ր@`SA{¨D @@"@B@6"@Bx"_{{__{S@@"`T% SA{¨_ { @A@p7 @{¨!xA @{¨  AB{C!BSBB[3@@@@b@"D@!T!aB,@AB"@.a?a@?a@ a@ `@ a@!x!2au @ cW@+b' @ T5`@a @@T_jT @L T5 @@b@a @@@ T@ @ T5 T@@@@@҂@@ @R`?`@a @@T}_KT xt5@?q T!Q`@a @@T_T xt5  @?qIT!QcD+@@B@@BҁT{ASB[C_@c xt5 @?q)T!Q`@a @`@a @b@a @`R7ZPsc+{kZ*s[\Z[G[{AcsES7T @@@mT @sT`|j`@T:@5SA[BcCkDsE{Ǩ_֙4t@7@@t@TTB @9@5Ҁ@  R!`"63Y9G` @3` B%RRR9`{"RRSOBBB@@C@AbDA@!A@ b@Bx b @B2 SA{¨<  C@A{CDST!B[VcG"@@C$`@5@S@5ssCq T a @!,!T ?qTBR  qTR@oAGAC@!B@7@7@"@ҁT{ASB[CcDC_րG@u`@7@@a? IT`@rT P7@7 X6` @"R @6@@ @6R^@@`@@ @`@`@"RT` @@9q`@@$   { SsZG`@ @{è`@ @{è{ST@[UsbcJGs@94cRq JG$DzT Ճ@8qc $Dz`T5RSA[BcCsE{Ǩ_xP@q! TJG&Rk"@8b$jT_q`TTkDR_֥$R@8q`TT4q 4pqT@@9B45F;"R77@! @?qT!Q! RBK!kDqATY˽q@B`k8qRDR*!RPR"ҝR*!kD|AB!AB@B`F  @ @_b@_lT_` @!|ha_{  {SS`rE@@?TSA{è_@[dA@95@F@` 4c`RT@U1trED@LG@A@B@DG@E@A@E `B@B@B`@^@[B@?TsrE`@SA{è_UtrED@LG@A@B@DG@E@A@E `B@B@B`trE@@[B  {A!G s A @{¨`!F { *xs6@s a~@B @{¨BB?  {S[!@?T @A?|T!`b@`a@P@ ?`SA[B{è_@$?րSA[B{è_$ : 6 {C@SqT'@@a@?V`TsIR9 @#@?@a@@@@"A6a@4@!<@?qmT@4Q" @R҄@9?ETa@R@RR4E@0@9?,qTR>@@@ʉ ɪH`*?AT@ @90qT `@R`_@@?q)T!Q@e?@@@@3 4Q @4 DA@DR҄@9D@Ta@R@RRD@3@9,qTR> @ @@@@ B'@@BҡT{ESF[GcHkIsJ_B2@@`?@T@@@@"@ @%@@@@9G`@@@?qT!Q?1kTT@U@$T@@ʉ ɪH`*?T@ @90qTB'@@BҁT@EBc@{ESF[GcHkIsJ @@9@*B@ @ D@!!ҁB0@A B#@R2r?@?@?@" @ A7@2!FBC @d B@ T!A!@_1TTc "_1T@:@OB@@k>@E@>1ҀR=;>&FC>{SckA@ @c6[s @@<@@q5@@_qT@-R"ͭrk .TA@!@!@?q3TCR!Bҷ9@@ @q`1T! Q$ RRB|@@93@9aB4@0@"D@!B!ҁ0@A/B$@RD0r?@?@?@# @ *7BF2C@@@!@d @ -T3@{B!A!@4x @u@ 2+@aD@!B!ҁ0@!)B#@R2r?@?@?@" @ "7ZF2C@E@@" E *'T3@A@x%@ 2M6@R7``@@@6@@<@?1@T @a @@T@?qi"T!Qa @?!  R7[BsESAcCkD{ɨ_` @"6@C@B<@_1`T$@R҂ @D@9C@T[s@ Tq TaB3@b@"D@!!aB,@`B@#,`AF`@C @d@c@d@ b@ _ a@!x!2aT3!A!@3x `@ 2`4QB!L6"` ?2@-R"ͭr?k!T@@@qT`$C Հ@@ @qT! Q$ RRB|@@9@y8`@b @@a$}jT @?TB7@"VT_@?qT[9@CR!@!@?qT;@BY86*"q Tx @@q TR`$zC@xaB @?q T!Q?@"<8;`@b @HC@C@z@3CR!` "8e9ҀR<ҀR;9?@!*C|gAdACg aT `ӟZ_y_<gR a$Tx_ <g aDT>g aT `ӟZ_y_<gR a$Tx_|g aDT~g aT^f_y_|g a$Tx_ `DT~g aT^f_y_|g a$Tx_  {S[c*ksI@6@_7Җ@9@Jx@(43T_qaT`@9Jx5 h @9!RJG! B`?j9T|SFB s*s s~@@9JGb?jTC|S@FcB *s"ؚ |@@9JGb?jT@|SCFB *s"ؚ |@@9JGb?j TC|S@FcB *s"ؚ |@@9JGb?j@ TC|S@FcB *s"ؚ |@@9JGB`?j` T|SFc B*s"ؚB B|@S@9JGcb?j#TF|SCFD c*@9c s"ؚ`|@JGb?jTA|S@F!B *s"ؚ |@"TSA[BcCkDsE{ͨ_ TiTTAT!R! ҷ `TT!R! ҷaT@9"T!R! ҷ'm#9Rc$#ы$# - R- JG!!g@9# R; /~SFf~Ǜ* b|@aT is"ؚsѶ@9t?jAT~qTd@z T@9`?j T T ѵ*4 5ˀ5;@@hTSA[BcCkDsE'Fm{ͨ_J h`c (j587R# )+ g6@ r@U)@#I+Kg@ TAq`T qB@B(A`RG /)c&5@/U)@@@G@Ic@!R! ҷ*(A`hL'm#rqTI7RS;@r@@S@T!q` T qB*BR!@"4@@@S@ 76@@2@!R! ҷ!R! ҷ(A`*['m#3(A`*Q/7 q T!q@!B B R!`#-@@2@'Fm" qT!q@!B B R!`#G-@@RG@*@*J h`c(j@'Fm;@BbB@$T*R!"S4@@@S@;@'Fm*'mˀB  F RR$Ra.RRR].H@RRdR2HV. CѣF RR$R{cB#A@b@s?#?.g@@`7a~B@@BT{C#@C_@4  CѣRRdR{cB#A@b@s?#2.@@b7ga~B@@BT{C#@C_@4 CѣRRR{cB#A@b@s?#-g@@`7a~B@@BT{C#@C_@4  CѢ{CBBS[BA@Ҁ:@7&E@`8@ 7a@R?T!B@"@cҡT{ASB[CC_"@9_qAT! Ra! R4rT:@6! R4rT!R*4r`TcD@9@ 4B@ @!,!T ?q TBR ;@ 8T h78|/WR@?`@@CT{5**K945a@ R@!acD!Rx4rT@8@6!Ro4rT!Rk4raT.9a@RcD?T@C@qlTWR@*3F@@7@R:cDrc3 {[S*c3B%KG@Ҥ@9RdC "jTtRqT @9@B_$(T#Q|@T TT T`@9Q$qhT|@c`@9Q$qHT|@cAT`@9Q$qT|@c 3TX2FcTEzT|@cTe@9Q$qIT2X#83rT@2T*T@9ѿ$)T@ @?2@T@9Ax?q T9KGR!b!jT* TT@@A!h!0#|7@2S 7RB@@BaT*{BSC[DcE3@_ֿTT`@9Q$qT|@c`@9Q$qhTc|@`@9Q$qHT|@c`@9Q$q(T|@c]A T`@9Q$qT?bT@9R#QjT?BT@9 @$T@!"@9!B_$T?T2 T@9RT@9xa!j@ T 5@$@9qA T!RT#2r`T@?T @9$TR!*"@8B_$T!TN"@9BQ_$qTB|@DR#$wd@9$T#T2%T@9<ң@ANAT@yRkT6RCC/@06'6 7`/6*x9"RTqT!*(r2 Ѣ{CBS[@`@C@9qTRqTRqTax?$q TDc DqTC TA@9!xR?8qTA TA@9!x?qTA@TA@9!x?8qTcA R*`TD @9C DqTA@TD@9q T8 R*T6TT@9q@zAT@T@9qT @9qT##R4TT@9!?$ITR qTTBHGR T@9@x`? j@TiTcENA@ TA@9R!x?8qTA`TA@9!x?q T?q@zTA cR*Ty!T @9q`T  TRBHG!@ T @9@x` j@T*cE@TC@9RRqTATC@9qTRqT"T#@9$RGRB@@BT*{BSC[D_ATC@90A@TC@9cA R*)TC @9cx$qTA R*@T@@9x8qT@`T@@9x$qT@T@@9xPqT@T@@9xdq!TA *4T!T @9q`T$4*cER qTw  T @9x`q`TqAT @9QqTC$RF RR k*@ @_~#c"1 @9BHG@x`g6(RCRRR  R3  {SE@RTc@9a@!?$TcQbc|@Td@9@?$HT'3B@Tq㇟jT TD@9@aQ$T t RSA@{è_6eA@9R4 ѣ{dBS[@b6RHGTs?Tc@9xc#j@T#-*4@`Ta 7 (6!,D @!B@"@c T{BSC[D_֢?}A,E @@a `+`@9RQjsV`iT`@9qT`@9ARx`qAzAT`+@`@9qTC@` @T+@,4+Cj68@` @!ˡ u5 @AT+@C$+n`@9 RxqAzT+<0ѡ{C!BS[uB"@:@ 7&E@`8@7@C@4sB`:@7s&E`@`8@`7+ĀR@?ր@B@@BҡT{ASB[C_! R[0r@TR3!B @ @!,!T ?q@TBR6,s`@TvBC@`4sBCc+`@q TQ`!D!@95qT!ĀR@.`:@6! R#0rT!R*0rT! R0r TD@95@C@q TR@.F:@6! R0rT!R*/rTrR@l2Dv!R/rT`@8@6!R/r!T!R/rT!R/rT@8@6!R/rT!R/rTK@D@95!ÀR@92@b/ +  `g@ aǟ `Rw *_  т{CB @d@_r`Th7R`7B,BT _qT#R6@AC },qB@@BT*{B_րB@@cҡT @{B@p-R@"@@/   Ձ(BE@BLDhCc,FBF!G@B@9!@9c@@9@@9@_ {!G 3 {S* B[c@ @ D@!u~} RV@5N)*Bq(T qTk` T qATbр SA[BcC{Ũ_S4#3`Q!㟂 `T# Bxw#9Bju8Rd@${7O5 @9#@`ˀ>q` T SA[BcC{Ũ_`T# Bxw 9B@!{7@2q@TBq@T@ @ @@x2 SA[BcC#@{Ũ_.+Bр SA[BcC{Ũ_:qT9 7ju8 @9 |@/@@@Rr?@" @ 7@2 R"RAt*@!xCB 2 @<&` @@@!@@@ ju8*@;-B@5}C*Aha8b@3-p4@@A\@!X6!xA\@ @_x!L"@ @?T! _ @ _4=hE@ @@@_{R0@{@_{S*[bD/!8B @@s4NDabDsjC/,F/ND/sA/!EG!@a9SA[B{è_ Ձ!B <@4?<hC!@c8B(GB,Fc@@D@e@ ?Txa!C@9C4C@97C @1TH )?T (G 1ThC!LD$_ր(G@{[cGS:B9jCND!@@B@5@`LT3@*G@-TNDҠzs @94@97$@1@T Հ@skT*G1@TSA[BcC{Ĩ_փc,Fs@lT$@,Tzss`@9#4@97@c@R"R.@-T:BND@*G@3@@,T*Gҟ1TSA[BcC{Ĩ_$7@@@9q$AzTR1R- R3 ,@{SA@ B`FB@C@TB@B@Tu}!5_8B@ @AT@B@?Ts@SA{è_SA@{è_!@hG x3xs`@?qT!Q,@B%1%1!A"@{!`F!@!@_TBx`!@_!`DAAT!E"@_mT {_A @6!xA !E"@_T_ &1&1  {CS[c*3*C@B'v@@@$@T{3k9#)Z(@@9*{s 6D@@D)F@*B'$@skTzsb@@9@574{s*D@*$@sTkE{ASB[CcD3@_D@FD)@@*$@_{S*c@bc_ @qT4q`TBR+SA{è_ւ ,c2@9*4q@T4a@!@2SA{è_a$Q?qTA5#R*SA{è_c@a\@$B*Ax65a@" @6"@A@aB<@b4!@2@BaCR!'a@"\@x6"@R@A BR$@9@'a@2a@4!@!@!@!@2a! c+@#R9*@} {S[c@jG` @T@w@-TsTzsT`T@#@c@9qT@9zs#73@94q T @r`T8@@(@@?qT!Q@@@@(sTSA[BcC{Ũ_@(@?AT\@a'7 @?q T!Q C@c(@ @c@}d$@@@@x`@97@@hf'H+'@'C+'@{S3|@[@MT y@B_T@B}R 1@zs@?qIT!Qz3SA[B{è_F+{c |@SN@T`z`SAcC{Ǩ_sЁB[k5@UТ@"D@!!a`B,@`bB@QD,@@@ @ @x2caa@@9h@@d@`( T@3u,@@ @ MT'3@ RŀD(G)rB{sv}C@? T@@9 4A@9`@9?@ Tq` TB4@q TqT€D@ @@@ ҟs @Th6!TB@a@D@!`B!a,@#{B`@*`/cc@c@dc@d c@ c@cxc2c @sc@cxc2cSA[BcCkDsE{Ǩ(Cxs @B @sTh6TB4@ @@"xsqT @ xs2@94q!T7@c\@?#jTB@B!7v' R(G)rF'<T€D@ @@@`B"0@bB*@RJ0r?@?@?@# @ ! 7@2 `R=)&( R'҈G)rПF`R+)k&b €D@ @@@`B!a,@@ aB@#,@@@ @ @x2o&( R')rGF$0( R'Ҁ@)rGF&( R')rGFҀR(( R')rGFw`R(( R'҈)rGFh&( R')rGF {Sg-T+!Rc t~a"SA{¨_֙@_T@xa__{S!+$Rcd*$h48t9SA@{è_{  *#R(a@"`_B "`9a@9!(6a@ "@B "@9!29a@99 @{¨_ {S(@Q`*5Ѐ!BhGd@`T` @@?qiT!Q`@@?qIT!Q`@97(6t@@Q4SA{¨D.`*SA{¨_`@р#`@9 @@?qiT!Q@@?qIT!Q*.(((({S[@KT@?Tb_(T@ B}R` /@zs@H#z3SA[B{è_ք"B  {S*[ck7 J*B3@3Йb@"D@! B!a,@ BD@,b_b@_b@Cb@C b@_ b@z@BxB2b!*@a`@@b  `@84B@Ђ@ D@! B!a,@A9B#@#/?:B@?@"@" @? @!x!2a @4@@!x!2"@!",,LbF"!A` @ SA[BcCkD{Ũ_ց!@"@B"-BhGg+ ,ЅІЄЃЂ:B'bFLALD FhCcE9B@Ba @_SA[BcCkD{Ũ_bFR@)5:B E)@B)LD)hC),F)Fz*6Gv*<$y$! Ba,@`R'@`R&jф{BS[c @/a3@@\@ \@ \@2 \@\@ @$`7@ @ \@ x6@\@x6@?-@ \@`x6 @_!@@\@Cx6@"@ \@2 \@!@&@\@7@ @! @@@ @@!@@@!X@X@@P7@R%@\@"7s $@<k @@D@B@xf@@w@`,{Bu'@\@p6 @! (8B@`R@@sbF@$@@`@B$@C'a@@A!@@$@@@@!xb;@@@@$@#_TFB`@a@D@! @DA@h3`T}T+{fkd@94`@@`@9 6{a!@c{aa @!67@`@5e@)B)@@9!*q#RB*;@@`@@9?q1TB@?q ,T?q@4TJb@ D@! `@9@6` @2` kJsKB/@@BҁuT{FSG[HcI_@ @`&@6@2@0!@2&@!@%@\@A6@@ @@!@@ \@D< 4 @@!sk ,j*!kJ!) 7(@@@\@b(7$@B@_kT* RQ 7 `@@xf`@DA`@h3T@4@#@@zTsjGT {zE}ST@97@@9qT Z!T @ :%@s\@6`@0@e@@y" _$qaTb$@E@@D@ @xb @q`Tszs\kJsKe2@9Tc"@ R'@`%@NAkG MA  RT {sf}OjT@97@@9qT{#sT+5@4SAhG T {zB}[T@97@@9q'T Z!T6@hf@\@77`@#@(@+T@CRRRC'`(#@B@ @C@'@@@`@Q!hf@+3#@@R@RRhf @ @hf=(+@@Cb76%a6@@!he xz @I@@$@@@xb@ @B@BxdB@9b6b@B@B@D@@yw6B@ATap6@**<b@ D@!!aB,@9B@,``@`@`@ `@` @x2` a@96@#xfa@"\@"07!(@R@#@B!#q@@ \@2 \)ҍ&#1b@ D@!!ҁB0@-B @0Rar?a@?a@?a@" a @ ` A7a@2` Ba@9?qiTb@@xf@aRbR*) @?qi0T!Q @@&6@ \@2 \kJsK)B@,B@ D@!!@B_0@)B#@R0r@a?a@?a@?a@" a @ `  7@2!FBC @ @B@d   'T@!A!@"x @ @ 2@ 6`@hb @\@ 77@@xz@B(@a@9?qITb@1QF?bq#T" Qa @_XqTc4cXbxbC#`Y+@C` @mO!@@E+`@F-`@9Bc Bxc!JF,\@9Bc Bxc!JF*X@9Bc Bxc!JF)T@9Bc Bxc!JF(`P@9BcBxc!JF'@L@9BcBxc!JF% H@9BcBxc!JF$D@9BcBxc!JF@@9bB$|!JF<@9bB$x!JF8@9bB$t!JF4@9bB$p!JF0@9bB$l!JF,@9bB$h!JF(@9bB$d!JF$@9bB$`!JF @9bB$\!JF@9bB$X!JF@9bB$T!JF@9bB$P!JF@9bB$L!JF @9bB$H!JF@9bB$D!J@9@Bx`"JR;#@;@@\@#@@x6@;m);@D@d@!Re@9`@!K!|@&@Ca@ \@2 \a@ \@2 \ҀR'"@C'@{ @@v`R'"@C'@,c @@ҀR"@R (n#~e@$~@b A0 @H1 @%CʥœBC"AʣB“EAT?q`T T? qT?q!T @9@@9 @9c BE"Cʀ`A“!@ʁ#A"!a#A"!`A #bB@`BJ>?qT?qT@9@9@9@9`?q`T?qTk s %#@@y} k s @} @!$@.{+({ccF[k*AU@@ @S?ATG@95@@94 s8B@@7E@{BDcF sv}_Txs`@ @@T @hv@6@9@@95sB@4@ D@! ҟv}Ӡ@ @@ T @l T6cF@@@@#@B@t@@@a ҟ@ @@T @TV@@7@E!5cFsE@@A!*A@SA[BcCkD{Ȩ_@hvV@?qT!Q6!@ @F,F8BBB@%#{y2@B!@ @ xs6@?qT!Q0"F)"`,sD'{S R[*RH%`@92`9 @ u `@9t2`9 @ W 7:B@D%`@9qiT@ SA[B@{Ĩ_րA@`(6`@92`9 {S[cks*j!TU;6*@BhC@@@S,F@9qTq`TqTSA[BcCkDsE{Ȩ_ 'R#8B@@R'r@T`@`D@T;s T{s@9@9kT@97"@?1T&@?1T@B@@{"{@F5@` 4@@4(7BB @9Ф&@!>q c%c1-,@s!.$RR  @4T*sT{s@9@9k!T@97 @1T$@1!T@?T@B@@"5R@"R!. `D@TR!/ *@*5 ^RA@xs^ oaRA@xsW SA[BcCkDsE{Ȩ_րRA@xsI Z 4(6@A!@@?TRBBG@Ay@qAz T q B,:B*@-&@A!@@?Tt {S*['*SA[B{è!  фRr{CBS*R @@r kTBR@* !B@"@caT{ASB@_@@!@  ш{BS[Tjcks +b@@S@ #/Z$@aAT @ @@@ @@- T{@T{{@9_AT@T!`5@9 7"@_1T&@?1T#@kk䗟_k*  4+@@9?{@z<Tb@ RA\@A86 @ @"@B@@BA8T{DSE[FcGkHsI_@ T`@(@c%\@7 X@?l @2B%R@#T@@9(6 @A8@@?3Ta@"@!\@?jD @TA C@cFa@";BFAc@'@D@C@@#@!@9! @RSA@{Ĩ_ցR"c @6AR _@94R҂Rf@@ R`8`@{S H@9q`TRE~@$RRY BRD_@RSA{è_RSA@{è_@ R`~  {SsREb@$RR1 @B4BL _qTAR9dQ1TSA@{è_RSA@{è_@@@ R_`@ d{SsREb@bRRRSA@{è_@ R_`{S[@ @REr`TB@"$RRBR^RSA[B{è_>@RR@ R_>@ R_B{SRE"@"$RRBR^RSA@{è_@ Rj_"  {S[!@A @b!R@@%eREF@"RRSA[B{è_SA@[B`{è_ր@@6@@SA@[B{è_c_r_e@rT@e>ZR_F {S# @ @!T4@ARVcRJ_@ @`6@@RSA{¨_`@7@a? T`@rTP7@7X6` @ @A6@@ @6RWrT@9`29@ c`@@@99`@`@T` @@9qTTV{!@!  @ 7 @@VR @{¨_b|@ `R{¨_{ 3@S @!4!L ?q@TARb^R @{¨_@@RA !VR @{¨_ R? _ C@9`4R_{ @aRRa@R{_R{C Bc@@` @^arT_B@@BATR{A@_@/[!^{ @ @S @?rT!4!L ?q TARbR\R @{¨_bR @{¨_A@  {!BS[+@ @T @@,T q TBRd@b@A C@$A96$7X6 @ @a6@@ @6@ `@@q!qCcR#rT@@@7 @V]@7B@@BTR{BSC[D+@_`@2`V@@ @@ 7X6 @ @6@@ @ 7R?Y @A !`RU_-T@9`_q@TG%@9Ce8!aT  @-T%@9qTGe@9e8Bc_aTb e@8_qTb˟T%@8qT `T`cҠT  _8!qT "_8B_qTcTҠTb_8cB_qT b_8B_qTTb']  {"BS[c; @C@!,!T ?qTBRcb@T @@@ @@@B$A9VW7!X7R"4r" _qT#Rj\@A7@qAcCR!qc-r@T`@@ 6$E@8@7R6a @RX@@R aW`@ 7 X6` @ @6@@ @ 6@^@2w5`@4a@"@B@ B@@BA TR{CSD[EcF;@_ր@ @6RLX @T A@R"W@a@RW@T@2@@@@n@@6`}A `R!T@kT@f@ fae\pC@9qaTR_ @6!$EB!@?T!dA(D!@99 RC(D" @d@9C@BqB" _ { @$A94CYR @{¨_8@@ @W8YR @{¨_{MXR{_ {S[ @@a@" @ @_rTRRRUa@@`@T@ @@?q T!Q @ @ @`@@?qT!Q`N@9x`N9SA[B{è_@ @@7@@TSA[B{è_ @SA[B{è_֠@ 7!@!!R^ R^a@ @xu` T@@5@6R!\@[[{ BRZR @{¨_@!@A_{!RS[^@b@@ @RRR` @ @`@ T @ a@ @@?qiT!Qa@4 `@@@?qiT!QN@9xN9SA[B{Ĩ_V@V@C6@@7@@lTV@"R[@@_ @_|@b@@[C@2`a@E!@-`E)`{ 0@9?(qT?qITa@ @H@9?qT@  @{¨_@" A9_q!TT`@ @a2@9 { @"@ @BRYZ`@ @ @7R @{¨_|Ta@\{! RpTR{_{!@͞R{_ R" _R?_  @`@#{@`?R{_R_ !H@9KT   @{ _`R @{¨_R_ @`R_{ @ _R @{¨_ {  @_aR @{¨_{ @ _R @{¨_{S @X6# @yb_q` TT 4_@qT@0@9,qaTt@2@9_,q THTB4_$qTݙ`@ @! 7c"@yC6RSA@{è__q!T@0@94qTA !9_0qT @a@Rb@RRBbҦ @_c"@yС @Ad@@"@`xdB"ax$@?q T!Qc"@y7 RSRSA@{è_@0@90q`TA ! @0@9(qTA !@ _`@ @!4!L ?qTAR^ @b@Bb @sYc"@y@@[c"@yA !Yc"@y@ @^ C{cBS$@`@@9!Q?qTB@@BaTR{CSDC_@ pXaxa PC@@@0@9!@@_(qATc @c@c@`?PC@ @0@9@?(q@Ta@5pC@95[ckspSxF@0@9!$Q?q(T@@[`@0@^@v@,T qTBRb`@a]@T2Rs@!R4U`6[E[vE@@ra{Ta@Rr `a7`@`@P6a@` @5@b@A@!AAR]ufA@9`\5[EyxF@0@9!$Q?q(T@@@3@4L q@TAR]`b@ Rr R rkfTAR~Y!CcE"@y`bq4B2"yM[cks@,T qgTCBR_ @`RV]q@9$RaJGR xb  jT Հ@8 x`_ jTc\r`VT#@V4wJGRR@R@a@9a_ jTa@8a_"jTQ4P[o\rNT@`k5k`aTxF@0@9!$Q?qT@@[@u@4L q wTARI]&`@$@$[EpC@9`Q4qTB5Q@ Rr R rk@VTARX!CcG"@y`^4B2"y@9 W4! !:[5@r@T@ [cks]@9 5@4L qfTAR]DBR!R[Rr^TгGa@?qT@R"4r qbTBRWa@@*v@c@@(]T"QSb@СG RD@!@cF!Q@H!8a@?k T A@? a@kkTRRRRiW`4cksHW@6]@ @ >]! !<[5AR\!F 9G@9;5[Fa@9?rT@4L q_TAR\a@9F_q!xA*9[E-@?@6@ @W&t@2@9$q>T`N@9`T72`N9|R|@fZ`@4L q >TARx\ ` [cks\`bG@@?qST!Q@raGTsbG@`X6[R @=U@9 RLqAzamT@4L qLTARK\`>E@iT[E`>E@@?q NT!QARRs>E`@ Rr R rk5TARW!Cc4G"@y`b>4B2"y@4L q3TAR\1@T<!A xF@0@9!$Q?qhT@ @@3@4L qVTAR[`"xF@0@9!$Q?qT@@@[`@(@\@v@,T qSTBR-^@,[@R*Rs@!RR`.[EixF@0@9!$Q?q(T@@@4L q ETAR[a@ B9"Cx 9N@R!4r q(TCBRV!D @@4L q%TAR[ $D92@4L q #TAR[! F 4DB@@ [ RBr@ Rr S8@kTAR8WBaJ!L!4 :!4Ů[E@9`#4! 1Y 5[@,T q3TBR]@R[ B8@!282c!˂@!`B ]C! !@:R@@RR@@@YXcFa˂@B ]C! ! :R@RR@@,YX[E@4L qTAR[2!\D @4L q@TAR[!4B `E@[@?rTsE`RY& @&6@94vER҂R@A][E`k59Z}5[@CBB@yC4!2y[EcFkGsHnM! !<1Y*5[F@9rT@`&P7BBXB @!FBAA1TB"[EM@r@T!B!@"0@9B$Q_qHT!@!@4L 3@q 4TARZ`4Rr TARZ*P|@KN'@@@@@@@@j@@U@@P@@@@h@@@@U@ @@  @@4L qTARaZ@=W[EcFkGsH*~@Vn[uA@Z@r T!dA!@9A#5,T qTBR\@@Y@PsA`[EmWQ\ARPsbG`BRY@'!,!T ?q TBRb\@@aY@P `@@@Z" B !`>RGWc @a@x4<\@P@R@@Gh"8@@@@`BB\ @@ @?qT!Q `N@9X@ @@@@G@@@ @@2U0Ue@ @@ksfA`@9@|4vE@O[EW@B`$[C! !@:RR@@R@@WW@p@ @@h@@g7 @`HQa@ B92 90@@@@I,T q TcBR[@& R R@8#Js*B*aT4_qS T@,T q TBR[BBXB @!FBA TB@"@M"_!? IoT @9o'6F@9!29[El@@`"@@`@ @@e@ @@+B!XB @bFAB!TBsF"[ESv! !aQ@[cksT@ @!@T`N@9@ @@BbZB @!FBATFB@9sZB!29"[E@@`wSuSBRcksS" Ba !@. AmYc!@@ @R@ @D&@҄@9IaT@9qTR/@d@@@?q 1T!Q/@1mJ`@"!G,R/@N9R1`@/@ 1*T`@ >?1TT@} !@RR! @?cc/@13@qR7_?1KTSҀRBF"ҕ>@@@@*1@T@ @@:G@!B@:@B@&B@"D@! `_B,@$B@.@!F@@BC @E@B@E@ C@ _ A@!x!2A!T!A!@:x @@ 2@@1`T@|} % @B@>@c@ @BQB|@1@T RR$@9@c0>@@B @@a%}*T @?TB@W@ T@ @AR>c@CR?qaT">@xaB`@?q)T!Q!@RR! @?ccA@@B @BBj@B_fBI"=/@s@!B@ :@B@B@"D@!B!a_,@@B@#,@C@FCE@@ @E@ B@ __ A@!x!2AT!A!@:x @@ 2@@1T @|} %@BҢ=!@c@ @BQB|@1@T RR$@9@c@=@@B @@#}ӿ*T @?TBB@ @`T @ @ AR=c@CR?qaT"t=@xaB`@?qT!Q!@RR! @?cc@@@B @C!@RR! @?ccTBz B@,>`R8AF+@WB`R-Ak>bFA@  { @S'6@4 @ @[c &@R@?@a! _T`@@6a@ @ !<@?qMT@> k@ @@@ T @BRp= 5+@ @@B}:@v@ D@!!a`B,@{B@b/ F@BC?@@!B@@ @ @x2?TBAB@Vx!@@! 2@!@!A[@ @ @ ?T҄C"{aC@cCx! ?TkD+@ ՘@8SA[BcC{ƨ_+ @?qIT!Q @kD8kB+@v@ D@!!ҁ`B0@{B#@Rc3r?@?@?@" @  7@2 @b@ @@|@ b6b@X@B<@_qT@ q,TS@sbT @RRRnF?T#Z@@@RFc@9aFDcRR"R!C@!R*SA[BcCkD+@{ƨ_sD?1kT 9G@_1TT@@kDg@`R?=ҀR?}=s\E*@ `k+E [ck+E{C!BS[ck s  @#@'Ҁ7 EA@ @`"<@_q 8T@"; @;6`@'@?q):T!Q`@ ; `@R`DAD@@@9E%@@$T!RR"RB5RXF@! ` @@o8@@ @A@2@ P@x PCr8&5@bR6:`AR>#@8 @@@?qi+T!Q5@ @@B8#@ @a7@@RRRBR :y;@!| 78@*z( B@qTT:qTR3Rz Rz@R@rz   z@`Ҁ z@`A`a~@ { #;RB *p{!!,GS!@Ă@4`@9 qT ! R5*SA{¨_#RcG`@26F@24` ` v yRy@ F@14` v@.yRy@#@?qT R)"!  B8D!tB_?9u! !B"3u"!B,BCt"!BECt"!BBCt"`#!RB,GCsF@74` vIyRy@F@74` v;yRy@` R`#s q!TTq Tq T#@`44C4 TD@0@9?$q8T xa !%kqT@TD@0@9?$q7Txa ! &kQx z Q #Z y { @T@9 q@BTsuqs@TD@0@9?$q1Tw"!c&k;4Q'a4@9#4R!k+T?q)XqTRrxvm#@ 4OcRRR```nq?T<T@9 q?Ta ! ua q! s ss R4qa TX@94u4R @ju@4Z9#_k!TxKv@m@aR@X53tR"RAҀ@ djb@!xCB 2b @f @@ @ c@aa@"  SA{¨_:k!ҀB<@Rm@Rg  @Rq  BRi  BRKk  ARg  RҥtARcm  BR?r  ҄F Ղe@8e8BBD9_ C(Tb`__T@9_qATRj  @9cGed8@%A&@TRA( |@T "@8zT_  AR?i  BRoh  BRGl  BRn  ҂s {CBS%@9@86R*!Ee8( b8|@IT&?T$? T@9zg8D9T f!B@"@cT{ASB_ւ @%@9@ *ҡgrTqd@`Ta@ m  {CBBS[@9A@ҀR6n54!G!u8gqR86RƈEu8c(c b8`|@_iT?T%c?@Te@9ze8BBD9_Tccc!B@"@cT{ASB[C_֓ `@9@*!`>e`@x`N@9N9 @?T@*R r_kTvvcc3ccHT,ka`5+@@7TDRf@?qTcB9qSATN@92N9c]@@ @@mB B=!`>RWe2N9qc]@ncc{" @ @_1TI_R{_ @!,!T ?q TBRBj<_R{_@  {CBpCS!B@@9"@Ҡ5B@@BTR{ASB_[mfRrd[BRj _R&]he @B _qT@[C[4c{IfR{_ !pC!@9?q`TR_{ 5[e eR\ R @{¨_{CBBS# @@@5@1 T<T8T@Ң@ M_T\c@RU^@ >g@Ң@ M_T @KR̬r_k!T@yMR_kT:@9FqT`@rT`X6` @0@94qT@@?qT!Q3` @` B@@BaTR{ASB@_֢ @+Rr_k!T@yLRA_kaT Հ@`@,T qTBRdi@@ @@sbb@ *`?g{SraJ@9SA{¨\{!pC!@9?qT?q`TR{¨_SF~hsAzhRSA{¨_SvZdNdR;\ RSA{¨_{SF@@?qT!QF`A@@?qiT!QsARSA{¨_bbBLAB@_qT{S@]`@ @A?$qT7@?,q@T@@@ @6@"@!<@?1@TQ!RSA{¨_R_! Re@0@9@?,qTA@@?1T4|}Ӕ"t `@@@` @!6@"@!<@?1`T/! !TRSA{¨_  C@y6 H@9q`TҭR_ {S@ @Y@7@@*baK!|@YRSA@{è_ RRd`sR[a~@YRSA@{è_ { @S @s @!4!L ?q@TARf=ZR @{¨_A@  C{CB S[*ck *s gC@'`@fP7CuD@ @`@@A D @G!x A@@+F@@ s%@sC@BD%@C(@ @C iiD+@AA@ s @ @ @TeC"|@7 F@_ ,T@`e" H6Q4|}@@f` ՠTCz7ARo`@ @{D`@@DCG@@@@A@C#F%@ @ @ ` @b@ @5_B'@@B T{ESF[GcHkIsJC_4QC *)f7 B@@TA6' qMT*!FE!@@?T0]fd{WD9YCuD@ @ARRud@@ >R_!*`@ @;g[i g@@WCc` {S[c*#*4@t! @?aT**SA[BcC#@{ŨRfQ*SA[BcC#@{Ũ H@9qAT @b[t{S H@9qT L@92 L9RE@"$RRBR_RSA@{è_@ R@l`{SfA@95RE@DRR[**%**SA[B@{Ĩ Ce{CBS*[#@7% @*,!T ?q TBR@@c`2u4**םa!B@"@cT{ASB[C#@C_R RkAT@ @ @_@ @@ɟ *`>Ť{S`@t@~`@RRQ``4SA{¨__ր@!_$@@d@qTc @9q!Tp@9cqTa@#p@9!?@q!SAt__{S*xrTR֥6 @2 &@RR"A !` f&SA{¨_֠ * ?n { ? q=TBT?q@STT?qhT?qT@9?qT T?q`qT)(T?qT?q[T@9R?qaT@9?qT @9?qT@9?qT?qT@9?qT@9 q* @{¨_?0q }TM T?8qpT?@qT@9R?qAT@9?qT@9?qT @9?q!T@9?qT@9?qaT@9?qT@9?qT @9?qAT$@9?qT(@9?qT,@9?q!T0@9?qT4@9?qoT8@9?qAoT<@93 qR?4qT@9R?qT@9?q!T@9?qT @9?q`tT?q!T@9R?qT@9?qAT@9?qT@9?qT @9?q!T$@9?qNT?qT(@9?qaMT,@9?qLT0@9 q?(q@QT?,qT@9?qT T?|qTR?qT@9R?qT@9?qT @9?qAT@9?qT@9?qT@9?q!T@9?qT @9?qaT$@9?qT(@9SqcR?qT@9!Q?q sTRZ?q :T? q!T@9!Q?q qTRPR?$qT@9?qT T?q2T T?qtTR?q!T@9R?qT@9?qAT @9?qT@9?qT@9?q!T@9?qT@9?qQT @9Sq&R?qaT@9RQ0qT@ !3x`?q`MT T?q T?q*T@9R?qT@9?qAT @9?qT@9?qT@9?q!T@93 q?q`T TR?qT@9R?qAT@9?qT @9?qT@9?q!T@9?qT@9?qaT@9?qT @9S q?|qT?qA&T@9R?qaT@9?qT @9?qT@9?qAT@9?qT@9q?qT?q!4T@9R?qAT@9?q T?q T?qaT @9?qT@9?qT@9?qAT@9sq?q`]TR?qT@9R?qT@9?q!T @9?qT@9?qaT@9?qT@9?qT@9?qa-T @9qR?qAT@9R?qT@9?qaT @9?qT@9?qT@9?qT?qT@9?qT@9?qAT @9?qT$@9?qT(@93q_?Tq`eTR?|qAT@9R?|qT@9? qaT @9?0qT@9?qT@9?LqAT@9?LqT@9?|q!*T @9|q(TR?@9?qTT?qTI T?q]T@9R?qAT@9?qT @9?qT?qAT@9?qT@9?q T@9?qA T@9sq?qTTR?qT@9R?qAT@9?qT @9?qT@9?qT@9?qAT@9?qaT@93q?q@RTR?q!T@9R?qT@9?qAT @9?qT@9?qT?qAT@9?qT@9?qT@9q?q`KTR?|qAT@9R?|qT@9?q`T?0q`T?qT @9?qT@9?Pq!T@9?qT@9?|qaT@9R|qR?qaT@9R?qT@9?qT @9?q!T@9?qT@9?qaT@9SqR?qaT@9R?qT@9?LqT @9?Pq!T@9?HqT@9?<qaT@9Rdq@9!$Q?q9TR@9?q ThT?q` TT?qZT?qaT@9Rq!T5`$E@8@"tZC QqT_<q`TRk?q@JTR?qT@9RQDqT !@!3x`Z?qTiT?q`ITR?qAT@9SqM?q GTR?qT@9qCR?qT@9sRq;R?qT@9?qTR?qAT@9R?qT @9?q T?q!T@9?qT@9?qT@9RqR?qaT@9R?qT@9?qT @9?q!T@9?qT@9?qaT@9q@9?q _T?q FTR?qT@9?qaT@9?qT @9?q7T?qaT@9R?qT@9?qT@9?q!T@9?qT @9?qaT$@9q@9?qTHT?q@TI T?q`ET?qT@9R?qT@9?qT @9?q!T@9?qT@9 q?qT T?q6TR?q!T@9R?qT@9?qAT @9?qT@9?qT@9q?qBT?qT@9?q lTR?qT@9R?q!T @9?qT@9?qaT@9q?q AT?q!T@9?q kTR?qT@9R?qT @9?qT@9?qAT@9Squ@9R?q!T@9?qT@9?qaT @9?qT@9?qT@9?qAT@9?qT@9?qT @9?q!T$@9?qT(@9?qaT,@9?qT0@9?qT4@9 qHR?qT@9?q`dTR?qT@9R?qaT @9?qT@9?qT@9sRq0R?qT@9?qZTR?qT@9R?qaT @9?qTST?qT?qaT@9?q!T@9q@9R?qT@9?qT@9?q!T @9?qT@9?qaT@9?qT@9?qfT@9?q!T @9?qT?q~T$@9?qaT(@9?qAT,@9S qR?q|T@9R?qa|T@9?(q|T @9?Tq{T@9?LqA{T@9PqzT5`$E@8@"tZ_<qyTa׉6P@s ccXaxa##`֣ ccXaxa##`֣ c0cXaxa##`@9R?qvT@9?qAvT @9?quT@9?quT@9?q!uT@9?qtT@9?qatT @9q@9R?qAsT@9?qrT @9?qrT@9?q!rT@9?qqT@9?qaqT@9?qqT @9s q@9R?TqoT@9?PqoT @9?<q!oT@9?0qadT@9?<qAT@9?qT@93Rqk@9R?qlT@9?qlT @9?q_T?q]T?qkT@9?qAkT@9?qT?qT?qajT@9?qjT@9S qK@9R?qhT@9?qhT @9?q!hT@9?qAWT@9?qT@9?qT@9sq3@9R?8qeT@9?$qeT @9?Pq!eT@9? qdT@9? qadT@9?qdT@9? qcT @9sR,q@9sRq@9qaTqsR @9Rq@9R?qA`T@9?q@(T?q_T @9?qA_T@9?q^T@9q@9R?|q]T@9?@qa]T @9?q]T@9? q\T@9?,qA\T@9?q[T@9?q[T @9?q![T$@9?|qZT(@9S|q@9?qTR?qaYT@9R?qXT @9?qXT@9?q!XT@9?qWT@9?qaWT@9?qWT @9?qVT$@9q@9q@9?qTR?qTT@9R?q!TT @9?qST@9?qaST@9 Rq@9R?qART@9?qQT @9?qQT@9?q!QT@93Rq@9R?qPT@9?qOT @9?qAOT@9?qNT@9qr@9R?qMT@9?qaMT @9?qMT@9?qLT@9?qALT@9Rq]@9R?|q!KT@9?q T?LqJT @9?Tq!JT@9?qIT@9?|qaIT@9|qITB5`$E@8@"tZC QqiT_<q`TR;@9?qTR?qFT@9R?q!FT @9?qET@9?qaET@9?qET@9 Rq#@9?q`TR?qCT@9R?q!CT @9?qBT@9?qaBT@9?qBT@93q @9R?q@T@9?q@T @9?qT?q?T@9?q,TR?q!?T@9?qPT@9?qyT@9?qawT @9?qT$@9S q@9R?qT@9?qMT@9?qLT@9?qkT@93q @9?q(T@9?q\T@9SqR @9?qAT@9?qT@9?qT@9q @9?qT@9?q!T@9?qT@9RqRR @9qRRRRR@9?qa%T@9?q!IT@9?qAHT @9?q!nT$@9 qRRRR}R{RyRw @9 qr@9?q-T@9?qyT?qT?q@~TRf@9?q.T@9?q!=T@9?qaWT@9 qXRVRTRRRPRNRLRJ @9?qRT@9?qART@9?qRT@9q< @9q7R5R3R1R/R-R+R)">5@$E@8@"tZ_<q@bTRsRRRR @93Rq @9?q2T@9RqRR@9?q)T@9?q(T@9?qasT @9?qrT$@9sqRR@9?q! T@9?qA,T@9?qagT @9?qfT$@9?qIT(@9 qRR@9?qT@9?q!T @9?qT$@9?qaT(@9qRRRRRR @9?qa9T@9?q8T@9?qMT@9Sq?q8T@9?qLT@9?qLT@9qRR @9qR @9?q!-T@9q UTRRR @9?q'T@9?qLT@9q}@9?qAT@9 quRsRq@9?qT@9RqiRgReRcRa3R_ @9?qT@9qWRU @93qPRNRLRJRH@9?qT@9?qaT@9q_Tq; @9?q-T@9q3R1R/R-R+R)R'R%R#@9?qT@9?qT@9q QTR@9?qA T@9?qT@9?qVT@9q RRRR @9?q T?q T@9qRRRRRRR @9?q T@9q(TRRRRRRRRRRRRRRR RRRRRRRR@9?q!T@9qRRRRR@9?qT@9?q>T @9?qA?T$@9?q>T(@9 qR@9qRRRRRR~R|RzRxRvRtRr_<q@'TRnRlRjRhRfRdRb@9?qT@9qZRXRVRTRRRP RNRLRJRHRFRDRBR@R>&6P@s8S6R4$@9?q%T(@9?q!%T,@93 q)R'R%R#+5@$E@8@"tZ_<q@*TRRRR"+5@$E@ 8@tZ)6_$q)TRR@9?qT@9qR@9?q!T@9?qT@9qRRRRRRRRRR6P@wRRRRRRRR@9?qaT@9sq@9?qT@9?qT@9sqRRRRRRRRRR"5@$E@8@"tZCQ qT_<qTRR@9?qT@9 q@9?qT@9s qR~A6P@RkxRvRtRr6P@yljRhRf(@9?qaT,@9?qT0@9 q[YRW_<qTRSS RQ6 P@S RiKRIRGRERCRAR?R=R;R9R7@6 P@3Ri1R/R-R+(@9?qT,@9?qT0@9 q RRRRRRR6P@St RRRRRRB5@$E@8@"tZ_<qTRR6P@s}sRR5@$E8@"tZ_<qTRR36P@s}sRRR6P@}RR_<qTRR`6 P@RiRRRRRRRRR@9?qT@9 qRR5@$E@8@"tZCQqT_<qTRSA6P@Rj}R{RyRw@9?qT@9s qo@9?qT@9 qgReRcRaR_3]R[RYRWRURS RQ3ORMRK6P@|ECRA? R=R;R9  @S{S[xu`iTsssh48SA[B@{Ĩ_{34[U b$c*kSs< C&7* R  3@~@xx|`k| yA>v*RR`k| X{x85SA[BcCkDsE{Ǩ_@ !r*RRAs57@!L !@ RRR|  {S1aRSA{¨_SA{¨_{STB@5SA@{è_ٌ A D@!`@9 q`T ! 5EDCBA@D'RFFclB9BE!FfA_9?99SA@{è_BA@BD!lBF_9?SA@{è_`@9@4{[5˵Sc! aR>T Rk Z 9 Z8s*$;4 ҄@T* ;R`8uuTo  j<8sR Tv@9@_x)T4RRsR!TkDsESA[BcC{ƨ_A !{@AS[B!B@"@ҳAb@ D@!T!ҁB0@@B@R2r``@`@`@ `@ b@7a!' B2f@b@#  0D@rL@DARL$A BC RaA`DBAg@C@DeDcEG@aFE`8=CA@8= ً aR@9 q T ! q!P$ @E@ 4 @9 qT ! q!P$ c#BR?"R? AAc#bR?@B@@BTSA[B{Ĩ_7b@|@95 @95 ҀR[%QеR$ a_{S*[*c #X 0q@`VzT* O* ` I * 9U b$ D{ CBS [ *c k Ys*@G8 E qR@zs"5@qs2Tq`Az!T5@ q@T@BG@@Bҡ#T{ISJ[KcLkMsN_ qTaR E9C# `c *y շzy @xy Tz  _k<8ъ Td_BZ4A ! #h:8iTfh88DT9?3T*4_Tz @4_k88qAzT@@tDT* ~@ aRB ?qT b24R _-`n+aR6TY2W"A@ XB@TfX b2R*4 բ*_@?ֳ`_T6T}_@B7@@BT{GSH[IS@_ւ #RB *{S sb2[*vZ`*ҁSA[B{è_2q(Ts *c BPR`Zv* } CPRB Rv H{Bc@ @  )))i4@B@@BҁT{D_Sb =`@BRc@ =`R#;/~bR`R@`@`SES {S[@b"Rc#R"R`R@@҂@s @As"?qTR9/rB RB* @}d s? T?IT@7@B @_TaR@A !`$3R@x*SA[B{Ũ_ց@3R 1R`RHw"1RRC*SA[BcC#@{Ũ_֠@9qT@9qT @9`5A !`$ۀ3R@xARR*SA[BcC#@{Ũ_ {S*R[*B(Rck(R*R!rk Ts,T`AQqTsE*{!|@~@@ۆ@R#R@"R@! 2 @@7@˟? IT@rTP7 @7X6 @ @6@@ @6R{@r~TqTRR+_m@@`5@[LcM*@.@{URۊ@{ R*5R@+_P&@R;RR+_E@>@R#R@BR@!  @@!0!P ?q`TAR@ `T~@{ RR_@R+*@R5R+ R_ۆ@ RR_@R+RgAR @ 2`b@@@@!@[LcMT@@@R@ + R_$RR$RR.@{RUR+ R_@i@T`i @@9q 5^@2[ c |@@9qiT***4г sb$@{ (g %@^ۆ@R;jT`Qq cT[x@ R#@*@?1T!dFD!@B@#E9/ sb&@M{[S**C@@@7!X6 @ @6@@ @7 7RSA[B{Ĩ_֡ Rc*!@c*!`)`'6@_6zCR@"SA[B{Ĩ_/@РBtCXAC@b@B @xb` 6`@9 7 R?@TC@ABRc @A@xcG`@6ջ@  {SC[**a@3a@7`T@`7a@!X6` @ @6@@ @@6 6tC@@9 06c2*˽CBR@c у`@@7 R@X6 @ @6@@ @7T 6`@ X7@ X7RSA[B@{Ũ_`@6@?r T Rr TBR!@!C@@6'7CR@"SA[B@{Ũ_*~РCBtCXAD@@@c ѣB @xb` 6@9  6BR @A@xc@6'?'@ ?TC R@AltC!@ cg̼R{S* @X6@" @b6!@!@" @6!@!P@7е@b @X6T@b @@Tb @6a@"@B @6*#R@SA{è_SA@{è_ `){S @65|@`@@<@B5 @@a RC)cXFB c@T @@?k@TR1Ta R޻!@@SA{è_@9!65@2@9$qTSA@{è_A!"R!xu@@@%Cѥ{BS*& @@*,T qTBB@C@T*{BSCC%BRC#Qa@2 @?c@*!B@"@cT{BSC#@C_#qp{S**t**SA@{è{S*fПqA @*@|@USA"R{¨!Rѣ{CcBS** @a@ҁ,!T ?q TuBxSB2d@@**^!B@"@caT{ASB@_@@!@{!LAS @q Ta@ߒ "" "TSA{è_b@@ @qAT@$QqTc @d@@%7`@qT`@`@@`@`@`@`@!T@HE@@TƬB@TTD@T_ r@T?KT@"H@9_qT!@t@tE6@@"!?T@A@TA\@7B@aTA6b|R?jT@#" '@DR҄@9@@T@@ @ a@4@ u S!R R4<*aBa`R)@@SA R{è҇@D@9μ {RRS @"@5!@@!@a87*DRR@@ @"_$qTR_!jTSA@{Ĩ_@SA{Ĩ_@"@5!@a@SA!@@?y{Ĩ_֡@RSA@@{Ĩ_  {[6|@S*c** la2? 9xZ)`9@7SA[BcC{Ĩ_=SA[BcC{Ĩ_  {c_TcC{Ĩ_S["RbB @}ӂ99B@94!G @4@D @ `Rw B}Ӎ@@BJG@*@@`zd#@94C@c4cCcDC`zd6@@`zd@"C@c@ k!T@"!T@bz$SA[BcC{Ĩ_  {CS[*ckas@g{@W@@ _H T*@@7xv d@@kTAT Tӷ@5g@@9_kTb @Bb @7`@SA[BcCkDsE{Ǩ_s@@9` 9A9uj)97@|R x6 @ |@@c"BT!C"@;l`@SA[BcCkDsE{Ǩ_` :={  @7` @!B!@9!5!G!@*|(@) @{¨_`@@(@|) @{¨_֢BGA@!4!A!DA`@! @}ӑ`   CѤ{B@@_`_ATkCCS[c@@d@c@ @B v sxb3?Tl? Ts@ c`$!4RSD[EkGB"B@@BAT{CC_S[*c*ks 7RR~@@@C@@@@ @ 6 3x``@@kT@kAT T@5@9kT` @` sH`X4@SD[EcFkGs@@ c`$ !4@ 3cRDsH85 SD[EcFkG` @` SD[EkGcR`@ZC@@@ @ Kc#|@#Rr T@@@@ R RYR9RRYRRS[cksF { @}@@9tCJ6A|@#7Mq{_Dq{_րkaT RToq'}(BF%HC@AA T @dcÓA"ʁc$b!ATq TT qT qT@9@@9 @9ʃdA"cÓ`$ʣʃ!!@`A"cÓc bc!`A"cÓc bc!A`"baÓ _qTqT@9@9@9 @9`qTqT@9 @9`  բDF @?`hT?`qTBF$VRDr(}iED)J@G<ʄ@ K@KB4JD @ EDKJ?(Tdҟ !f6ghh0fK#@` T `TTBR" KchBJBcJ  c A !8a J0! bJ l! K!(BKJ`@?qT!QA4`@@B@@BT{ASB_SqCѣ{cB#*b@!R* !B@"@cҡT{C#@C_Cc#R rT@R7A ?`,T*C R@#R7A`sJC R@4{S*[B7 @*7s*bqH Tr*3cK~@!|@ݲSA[B{Ũ_c#@78@@`44K?q6|}#|}֢)T _RR?CT@RRcC#@4RRcC#@cC#@?qT@cC#@Ҟ !cC#@`BJ!!|} @z @@ *cC#@ *4c#  {S[*cks* @6@*7cqHT*@@q5A@@#!B@9b76**A 5NARqK@!|@*@9`SA[BcCkDsE{Ǩ_}U T}  TkTs"`"BT`@ @C!c@9C74** 4qSATKSA[BcCkDsE{Ǩ_4s"`"T@}@77!|}PcK@!|@*7@`j#SA[BcCkDsE{Ǩ_|8*  HT* KQ}kATZ4`9Jnβ!* 4 {R ` @{¨_RҢRҫ `5  {R@{_R{_ {S @6 Rձ@ B@S b@ D@!cB!FcBC @B@ jT!A!@3x `@ 2`@@¯ `@Rra@ `7 R*` (D@9`5SA@{è_Rra@5a@ `6A`@SA{èNO9dA@9`4R҂R= {S @!7a@"@}|@T@"SA{¨_ֺc@ !5c @cSA{¨_ RMSA{¨O  {S[*c @ 6@@ @_ r@T 7E) @54k`T@1T R!6ޯ*@.4@@ @@**@Bc|G_klTAJ @!xa43B_kTҀ.v@7 SA[BcC{Ũ_a @?aTs@B|Gs@a @?TkT@"@|@ T@x҈*@.@kT R̰%@@?1T@BR@ @1T  @"N@r`T`@! @ `@@! @} @ d!|@ B@9BSB 2 @@?qT!Q@#B3@3B!b@ @B2~ `!#@` @@?q)T!Q`@B@a @x_8@Rf3@/ {S[R$`SA[B{èѯSA[B{è_{S[* @ 7?@@Bs +cqaFkvC"@@`?T@C@ F@ T9AxFWC R5U6ACb @ @ #cCkDSA[B{ƨ_`@  @@B 2#@! `x!@"  6SA[BcCkD+@{ƨ_ RckޯqYCFR@!@BTx56TBCA@# C 4BCA@# C 6X4cCkDy(  {S3|@R SA{¨_ֳ4*ҢRM 7{S[*c*@#~G@@9@y93a@"@#@_ATc@`6@B@_T2qT@ @@8 @@@xRSA[BcC#@{Ũ6@ T@@@_!T @9Q @!@A{ Q5 @{¨__* @{¨  `{cSF[!Cs`@!@? TЂ @FBcA 6Rb@Tx @;@jT@@Ak5G @ Հ @3Gxw<!Q c@!@\ @T @?jA T@?qTǫHRɯ@7x@7F@T{ @?qiT!Q SA[BcCsE{ƨ_ր@@<@1AT*_T@kD6@xj_4`@A@@` x;SA[BcCsE{ƨz @ 8{BS*[*c@`@BD@@@!aB @BЀЃ@BF?|Ca D@@DjTЂ~@A@x$`@ 2`V@7$6`@2`URʯ ԯ`RZш{B S@/@s  @?q`T[ *c *k @!?T@7@ ,T qTBR@R" #3t]RR_k-T@@ {07b 46rITO7{'7 @4P76C@6CR+Szr!226 @RR kT5C?`hjT9*@ @ @ S{`@ RjT73@ @*c`:DC@|@ c@`@k!T`@k Tw ''@ A 5@`@9J 7RjTa @|G?!T`@7[HcIkJsKҀB/@@BҡT{FSG_{7 R  @@@@y@}|`@  @FR|@y @@@x 76 Cv*45 @`W4KP6@RR k T5D?`sT*7@ @ xw @ Rj!TvJ@7[HcIkJsKs@syRj`Tw 7Z@!@ H6Bs@3SB*C*e@`x U@5$B@9#4!G @4@D =6@@@`@@@ @B@@K@ ,T qATRj@T @!}ӡ `@ Ah`8#J6!=6cCc@렁T!RAh 8@T@2` @!|GCT876"@7 @tB[HqcIkJsKE@ @`@ @76@ 5_ @B @ G{b!!@9bcb$@9_kTs@3c@TRj@T@86 rDT @x @RH@9A@!?dT_@q ET:R@:4П` @z*D@9TT<_dA@9d5AR#!@65:5@ @qR R@ @@ @eU6$@ _ @ &xd$ A@9s@`@_T$@9kTgD @ `@@k T@k T @5 @@9J 7C@`jTu @|GT@!R_jA"T `@@6@!@NT@@!ET@ @@ @x%@$q 6T3A5R16 @?qWT!Q q@AT qCT[HcIkJsKvs@suS@6ЁB!G@9 @44@D @ H|G *T@T@2 @ !@@c"V(T@5@4@!R_j GT@C#R+;r T+@z=@ RR* @@RH@9@!?dT@q(T3R@4*z%R@@ rTsD4@= R@$ARۣ##F@8@@!AR@U `@ R 9`@ .@7 @[HqBcIkJsK R`@ 6` @z`1T6AR#0@7Rz`I@;7@˿? )T@rT3P7@7X6 @ @6@@ @6RraT @!}թ@ @@`S(@_jaGT|G` @!@?q2T!Qx 52;@5_ @ @ S{`RCz*w`@wC##R+#@or"T2@4#@3[HcIkJsK[C@0TBs@3*B*3@*e@@`@6=*DdA@9958B+@@50w 6@ rT!B8@8/@"D@! ;@!x B@8@ D@! @%@!@Ræs@c} C* @*R*][HcIkJsKR|`ӵJATx Cb SR@6@@z <@1T'@!T#@_8?q@#TT@y iR?kTR35"@qT @@5@@@6@@<@1@T@' @9qT @@#! RZ#@`%T@@@E#%! T&@AT%_ Tbxb"@8R@x!@ @ R#@O@$qaT@H]f[HcIkJsKm@@@Ta@3@@҅d#R/[HcIkJsKT+@z V@7S R*@҈23@@hz@x7@_ @ xw jB@4Bҁ@62`ӵJbCR Q@@T @@9q5 CR*2 A@"VȖTRs@CSB 2  @ *@%~x RR[HcIkJsK!@R? rT*D 96@7q B 9 !@9 AvSET#@@9q TR4<Rx@_8qTTTB@`T @@y @ 6 @@<@1`T@XR!ū@a[c k s 7R8Ra !~ 4?@"@?qT!Q @@@T@`! R" @! R8R@@7 !@ K@ #@*c 8n#@#@7| B 9 !@9 AK@ #@*c`9[@  ***R}@6K$R}@*'  {S B[@3 b@ D@!B!ҁ0@B$@RD0ra?a@?a@?a@# a@ `7a@2`  c@@ @C ` C4k7 @"698@8@iT@TAiT?bTa@7 @~GReҢ@AR#RD@1ATZ@ @_jT T`TRRRzҰRA*ocCkDSA[B{Ȩ_k7 @5s @}?7@A6 @3`G; ?@ҶBxxU@_!@@z_@@B"R@C@ @#! @9$@9jT3@? T;@`TAR<@ 6@* "@)@7@x8_@|T`@ @`@!@7@` SA[BcCkDsE{Ȩ_R@@R҂ @D@90\7@x8BT`@*H8`@x`!ҠB0@ҀRףSA[BcC{Ȩ_  {[ BS@4@ D@!!ҁ`B0@sB#@Rc2r?@?@?@" @ 7@2 u c#@@LA 7ҁR9 T@T`sA`iTbT@3 RIARb@!RC@1TX@?$@zT1ATA@? TG@c|@DR@9 @?qT!Q R*L @ cC#@R RSA[B{Ũ_8@@URڥHTҫ4 R$ݪb@C@RRRR@oҀRWM{Sp@9"_qTHT4_@q! Ts~GSA{è_ qT_q T @SA{è>SA{è@6B@b@ D@! SA{è_րB@b@ D@!!aB @B@vR_|!rRb#r` @@`@ `@*a*r@9B_@q`SA@{è_OL`R !@`;{SF#@cOA[*w @@q@T`@6`@@<@4!@w4F!C@!@?-Tc @FcBAc B@Sx 9@`@6u@@>@1@ TOA@q TbxC@`@` 76@*R"@@@?qT!Q @@?qT!Q@@?qIT!Q@@?qT!Q:`@6`@P@7 ` @1`@  ` @5`@ 7W4F@!T9љa @?q T!Qa [BcCSA#@{Ũ_SA[BcC#@{Ũ_C4RΦb@A@@<@`4 @7xC@C<@A@C4!@" #'@RD҄@9@@?q)T!Q"@@?qT!Q&@@?q T!Q*@@ҧ2@@?q T!Q6@ͧ62@x2xC@`#" '@DR҄@9RREw4(xC@ q-T@!@" #'@RD҄@9ȧ;@L1TT@@!@!A@!@` x9k@SA[BcC#@{Ũ=d@<@9,785=3-@@s.,*(@} {[*5scB@x@ D@!!ҁB0@B$@RD0r?@?@?@# @ a 7@2!@  @ @}Ӕ B!|G7; Skz@Y@  xa \#s@3`@@_kaT_ T@C@_kTB|@ c@9@9cJ75@5 {@;z@ @Y@  xa ճ@s`@A_!Aa@a` 7@@`@ @ {@;5SAkD@!2[BcCsE{Ǩ_RŠ@z@h@*#SAkDҀRuYk * AR@@=6@ @!<@a4@@ R `$_@36@$@$3!<@!K4@$T@! #c|@SRR%r!r$@9@|* B?>@@76-@@#<@5 @c<5 @@* B,@9@*4R `$@R&r" @y%$@y!@C cS*B<@c|@G@* B@* B`@* B@* B @9@*@`@* B@9@*@P @* B @9 @*@@@)* B@9@*@09TR `$@>6@$@E%<@1=TqHT@! qGT@Bq-KT@c@c cc|@qIT@RR%r&r$@9@ *B@W !<R!dR@R @ @RybR @!?q!Љ$|@ckb|@zdz$_T G@*7`O@9@6* B%/aK@9p|@;jR҂@҆@ @{B@|S *-{@ B`(*{ @{@ B`  !`)JM)A9b@ N-$ {  @R{¨RRR {S**SA{¨RRR)` @X7RRaR aR  {SsCD`@b@ @!+SA{¨[  {SD@@[ Gb,sTD@hs@4b@bjbhss;aT[BSA@{Ĩ_   '}(BF%HC@AAT@dcÓA"ʁc$b!ATq TT qT qT@9@@9 @9ʃdA"cÓ`$ʣʃ!!@`A"cÓc bc!`A"cÓc bc!A`"baÓ _qTqT@9@9@9 @9`qTqT@9 @9`DF @?`hT?`qTBF$VRDr(}iED)J@G<ʄ@ K@KB4JD @ EDKJ?(Tdҟ !f6ghh0fK#@` T `TTBR" KchBJBcJ  c A !8a J0! bJ l! K!(BKJXaxa$$AF,d\@9! !xdJAF+dX@9! !xdJAF*dT@9! !xdJAF)dP@9! !xdJAF(`dL@9!!xdJAF'@dH@9!!xdJAF& dD@9!!xdJAF%d@@9!!xdJDFa<@9!$|JDFa8@9!$xJDFa4@9!$tJDFa0@9!$pJDFa,@9!$lJDFa(@9!$hJDFa$@9!$dJDFa @9!$`JDFa@9!$\JDFa@9!$XJDFa@9!$TJDFa@9!$PJDFa @9!$LJDFa@9!$HJDFa@9!$DJBFa@9A!$@J_@9B @y! U@9! R @@$q TX6 @0@9!,Q?xr_!@"@B5 @{ S ^!$E @@@$@Bx#@aB@m@Ax3aB)@`@@@ Q}@aT * z"Rba&SA{¨_`B@ ҭa$@x3`B ҭa$ a`BJ {S@A\@x6s@@ @ \@x \@A\@!xA\@`@? @qaT$QqT` @@?T@TSA{¨f@@TP6@?q)T!Q@ \@x \@A\@!xA\@`@? @qT@ \@2 \` @` SA{¨_e@A\@%{S@ @TT@3SA{¨(SA{¨_{_S [!`$v@!@@6@ @`!<@!4@@q DCzB|@T@-R#ͭrk@T R RR@9@c" CR!B !`CRB@@*BRSA[B{è@q DCzB|@T@-R#ͭrkT$ @c @q@T$QqT$@@! { @@!a`a@5 @{¨_@?q)T!Q  @{¨_֍{!LA[76@ @? @qaT$QqTA@ @ *4qT"@7@_ *TQ 7@[B{ɨ_S RcksB{CG $@F; ?$5B)RrA, BO@@B!T{JSK[LcMkNsO_@$E@8@?} @zzT@9HGxaxP@qT`JTTFTAT@9qAT@9HqT @9qT@9XqTB$E@@!BT@o+?T@9q 9T?TqR@BR@3 `#'T`@9qTqTs?T@sD?`Ta@9?qTA @4"T| q@TcT@  HA@Ri<8 93@qZ Rt @#@@ T3@9A$qT@ * A @@@@6@@@<@`4 @ `@9qsx?T*bK{`@9@-TAT@9qT@9HqT @9q!T@9XqT@9<qaT@9TqT@9PqTAT@9|qTP6B@ @ D@! ҟ#!TB:@@Ұ@3@9!$Q?q T@@@ "!`b; @@@>!D!@F-+@ @  A!A:@48@ P6@ 4Qq$IzT CzT@9QqiTqbZRR@!@!`T0@9?$qaT@? q BT@?,q AT@?0qT@@07RqR* !@6 @@@!5@* R!)!@@AIZT@9`qYT&T& %T.!YT !bҢ4 !bҜW5@ @ VT@R@jr?k!VT @y R?kUT@98qAUT@ @ C@` D~T@ LRlr?kATaR@ @ #RRk|@;d@џT`T@9qT*ad3HG!@axa!E6VTT VTUTҀR AA@!Lg?)T@987HGa@PӠT5AZ3Қ@Q@/ W#RRpr@LTNT@NTsҜ8 >#RR@q @H T-T @9_qT d3@AHG x`@P L5] RsVBRR`@@3@9$qTa@DRW`@ @@!@gҡ?`TҝLqET@9$qDT @9qADT@98qCT @9 qaCT#RRR<@@#RR}R1@@@A5 @ q8T@9`R?q$@z7T @9 RB @@A@ @2  !| 4@!RE@Rr?ka2T @y@R?k1TaR@@@ HRȪr?ka0T3@9$QqTR@@@ B92 9uR@@ !G-5 @@3@9R҂R`@ RB2`aR{T !`-)5GR@@R@@ * B`aEaR@@R@@R@@R@@B@ `?a#T+ !@"5) !``!5"Rq@@ ! 5 !`4aR]@@@@/7R@@`'7RR@9Tq$T@9Pq#T !4aR<@@k; @@I/@R*@@R$@@Ҁbb@!CBcF"`{S* B[c@ @ D@!u~} RVN)*Bq(T qTk` T qATbр SA[BcC{Ũ_S4 #`Q!㟂 `T# Bxw#9Bju8Rd@${7 @9#@`ˀ>q` T SA[BcC{Ũ_`T# Bxw 9B@!{7@2q@TBq@T@ @ @@x2 SA[BcC#@{Ũ_yBр SA[BcC{Ũ_:qT9 7ju8 @9 |@1@@@Rr?@" @ 7@2 R"RA @!xCB 2 @` @@@!@@@ ju8*@B}C*Aha8b@~p"@C{BS[k@*"R,' 4qsZ*q,Tq,TqTQqT A ŚET!TcA@ @ a&ERG҄@c@BRR"@?L<@*@ !! A **RR@'@A\@!2A\4|@a'@* *%R?'@R#x Qqx$Bz@zATG&EB @@@cF'@q T 5` @9p5AR!?a @?q)T!Qa sH\q T  Ś THaPZA@ @ R~C @B1`C @@\@c2\@b@ !*!  D*RR'@qT&T|@`Qq(T!P ` Ś!T!!`T!ƒҢQ ҁ) šTsHB@@B T{CSD[EkGC_ֿqT[4G&EB @@@cFsH̎b@!A,_Ta"@9?qaT, e6RB@B@ D@! _DRA@ @ 4cRisH@ \@x \+cs {S*[0@9$QqTu @?0qT?,q`T?<qT@ SA[B{è_֠@@*a@!@"@_ qAT#@y"iR! kT!@9?qATR" R@ *.qTSA[B{è_ֶ"@>qT2qT.q `/!?! b  B0tC!`@@ q!0 !?{ CcBc k VBS [ 3@a@Gҳ# s*_( T㋇R$x@R*RRc@`2@9$qTAR F@jT` @@`Ts@BG@@BAT{ISJ[KcLkM_s@VBR@(w @AR F@j T3@@aR@@ R҂ RRa @@!@@as. { 4R @{¨. {c @@ 6@ P@2 P@ @ 7[RkR5r&ES @3x  Дb@@ C@d|@T%_8q T4E @9|q`T!@!8@ 71 T$@9 6q T 87HGe@P`4z @@3@9$qT@@@7+R&EC @@aD!x@a' A @`!$@!`@@@ @6@6@"@!<@a4B@ @R+@ s@@ @kTSA[BkDP@!xPcC{ƨ_!_8?qTa @%0@9$qaT!@!@TB@AT @6 @P@`7wA@! @A7HGe P@qTs@#RRs@@џ(TqTB$@9Cq!TТd3@@!HG x`@P@5@6@"@!<@a4B@ @Rs@+@S5  ?0qTT?,q`Ta4?$qAT_?8qT?<qT0@9$QqITR@B@"`@@R@B@_`@@_R{ CBc [ *zCS *k @@Gv]Rb`@@@BG@@BaT{ISJ[KcLkM_4g7s @8rAT# 9c$U:4ERe9h:8*R @? @q! T$QqT @cRrj@ @T@6@@<@ 54-zCcZR@RDs@ ,T q`TBR@@!**~@  qTwDRDk68*DK;8Rs@ @*F@@@<@4#RҰ#@ @@s~ ***H  {S*{**SA{¨{cks<oq@c @` @7SГD[`@ @@@A FDA @G!xA C@@!@b@?@@!@!CgFA@aDD@ @$ D@`@3 Z*RR R!R@@ @"_$qTX6@0@94qTRoqoc@ 5@R(*RR R!Rt@` @"_$q T X6@0@94qA T!DBC @B@  TGbF!@a!C@@ TCyR`@D@@# ZDGB@@@B@a@C@{F"@ @ @@ ` @A@@ SA[BcCkDsE{Ǩ_֟oq"R RAcCkDsE{Ǩ_@B@33@@B@ARRNa@ ;33@"3m3@o@ *x#o@ *q*R>{CS[c{W$*,e|SklSs@ 6@ @ "<@ 5 O ! @,8@XF@ C@`6@ @@+{@W@q*RҀ 2xRXr @'W@* @ @!@@k TTW@iT@ 6@ @!<@a4@@@qT`@kTң2@9$qT@Rr q!TRW@@ @?qDAzT@?q)+T!Q @ @ @@@@9 @4Q S < @GW@*RR @3@9$qAT @@@4 ?`T8@RQRrTW@d`@9qTTa@R`r?kTG@cO@**Rپ?T@qiTU @@?qTC@h7@kEsF{ASB[CcD_W@{@2I3@9$qTW@ T@@6A@ @`!<@a4@@?qTS@ 5C@o7W@@$Rx`5 @@?qT @3@a@!@@@?qT!Q` @` @ @@kEsF @@?qT{ASB[CcDkEsF_֟ T!`@!TwkEsF{ASB[CcD_a @y@R?k!T`@9dqT Հ@6@@<@@4Z@ R!9> R!RR@ks@ @@WY@B@ @ D@!!ҁB0@B#@R2r?@?@?@" @ 7@2 @ @@ @@sA@!@a@@?qT!Q@@@ @kZ@@ҀR@M@m?j?@gK {S[****SA[B{è***{S[**cSA[BcC{Ĩ_T"T @ ? T !!@*Rl@@@@`V7*RU6KRҴ@[BSAcC{Ĩ_*RN*6KRR  {CBS[*% @@*,T q@TBRe@@c2*!B@"@caT{ASB[C_`@a @@  {S[****SA[B{è {CBS[cxk*@ҿ"Tb@@,qT6a@ @!<@a4@ `6 !CRοDG !<!@Rs@@d@@7@`5@@T\@@ 7@x6@3sBRRR@ 3@9$qaT_ @@ dA@9 5BR !CRBҒ5RsFB@@BAT{ASB[CcDkE_Rw`@2`sFR3 @!B @@@#AD"@B"!` @@SR@@,`@ P6*za@P6 !| @4q`T4`@@BRo`@@Ac@P6a@`"@4q@ Tccct]cDS)c@Rc 2cZaA)x `?q T!Qa a@ @ `@-@,T qTBRb@@BB 25/ !@ ?Tp@@@Efa@Rq r2! `a@ \@2 \d@\@.a@` @!@Z>sFLmu6Bғ`@\@"h6@C4 @ˉ \@o6 @˒q rA4ts{CcBS*$ @`@Ҁ,T q TBR?d@@c2c!B@"@caT{ASB@_ @!@@]{S*`*SA@{è{S3[cakw*s0@9g,qTbq@ETIT@8ߜqTTu˿TT `!4***7s*R4g@4 @@`@@ SA[BcCkDsE{Ǩ_֠@9qT@`Rr?kT@9HqaTV2$E@@7g@!R 5_w$@zTu@6@@@A<@a4@ @ qT !@@G(?! TG@ @@@  !RRRC z*R SA[BcCkDsE{Ǩ_*7Q*O V27*7\@a$!\4@@BA B#c@9cSc2SA[BcCkDsE{Ǩ_7@**7`RK@@x7@@@@Bq\@@<@@4@ @!T@q6@qa 2q  "<{CcBS*$ @`@Ҁ,T q TBRd@@c2cV!B@"@caT{ASB@_ @!@@ {S**SA@{è3  _qB\S{S[c8a Rk BBC@?@ @LC) XFs @s @@?kTa RWcLRvER !@RBg9ko@@3`@7@a? iT`@rTP7@7X6` @ @A6@@ @6Rr`T`RRg9@99B?A@BT *SA[BcCkD{ƨ_ !`$RBұ`koR@͎ L P@#x:҂RR7 PB@R*@@`@"@%\@ x6!@% @E6%@@<@E4!@E@ q`Ta @!a _T;R*Z_/Ta!Bku8cC{Ũ {`S B@!b@ D@! RҌ! !`a @?qIT!Qa SA@{è_@{è! R! mSA@{è !{C!BS["@a@!,!T ?qT5BRZC@@RR@ @?r! T3sZDa@!a`@!!B@"@cҁ T{ASB[C_`@5t @@C@s B@S!b@ D@!6!ҁB0@B#@R2ra?a@?a@?a@" a@ `7a@2C`   Rr! BHQ?kTARo@@`@ҀR8!{S! !`TiaB@y! ?qT a@G! @@xaSA! {Ĩ!! SA!@{Ĩ!R,! SA!@@{Ĩ! SA!@{Ĩw  C({CBS[*ck /=3=7=;=?=C=G=K=@'C')a 63sK ! !`J1Ts 9 < 9#C*t4qT&Ԛ@!Q85C4sJ !/ ! !5*~S1T9 5 9#B:R q @zAT! !@@= B'@@B!T{ESF[GcHkIC_E#|@sQ1T3Q! !`! !`1T ! ! !s L&{ CƀBS [ c k *s@G/'62 R/?q RR$#H@LY : 7A !"/" @/5 `$G9  Y H7@T * !h`8C ՗@9@5`7iTC@5h7G@kWzTxT2q/T!T*q`#TR.qT9t`  T 3@ C! !X7/@CT'@@ U) @!!BG@"@c!/T{ISJ[KcLkMsN_A !"/" @ 5 `$@RG9w7bO6@ BӀ\ @} !T @`T96?T;{F C@8`cc8D9 B(T@ Bb?(T?m786#RcE`w8( `a8|@IT?T!?T"@9`zbb8D9T!!/)T9X7Y6(T HGw6/@ Ք@T_ITCR k @{f{@*B_BR r @T?p" @zB @T* d|@ @/@" B`q Bb B@> P|@ @ /9g7o64{T&R&q T 7?p@za T/@?Tk`8$T" B **(|@ @q T)Tq`TrqATkT*@R6q`T RDRcҴ3@n##?T@@TCQ'A 6R @RGATS5@T@7 `$G5/@" B`q Bl@T?T96ҷAT@9qTR D @ RG@qATG@@?BT@?Ta_8!?q@T@"@S#T !:G" B " B eS  !R{C!BS5 еb$#@ҔSRҎa@"_ @qT!!$Q?qIT` @RQ @!,!T ?qTBR! !$@,T qTBR@@|SRC r*cҖ B@@B!T{ASB@_! CR!@@ @@@#RҰ C'{BS*[cks@ 7 68 c 4@9 `@!`8@ 6*ңA@Y52:@9 !`84@CT|4`@@˿T4 8 CR"Ҷ`@@T!` @!B@"@cҡT{CSD[EcFkGsHC_8 5*A?04`@@ CR!`:b҅`@@X{fRS[үbTjs84 @SA[B{è_CRB! !` @SA[B{è_  {S7c2R7T[58@Gb `@?TqTdC"dDB*!* 4T T T@T! CR!$`@R^rjT!RjT CR!` "`@@X6"! CR!@@@7((#Ts @$2AT! !CRQ8R47 >ҵCR"!T[B dA@9jATcC@,T qTBRSA{Ũb @4!!\D!@a6!#!F!@#cAd@?Txa!aT9R"! CR!:b @_qT *!@`@@7Y4@B B !mA CR!"ҧ`@#@ _7 6q`TBqT*!!xbxU4`@p6` @% `$! !3CR"҈`@6a @"_8B"p_!! !Xc@a @b A! !`M`@ 7 @?q)$T!Q h! CR!_&@R^rjT;! CR!SV@R^rR rkT&@@?T.@A!@9?qT@ `TA! CR!@8>@R^rR rkT@@A@ `T,! CR!`#`@R^rR rkT`@@?Ta @A!@9?qT@n `aT! CR!3"`@ @SA{Ũ_`@ rT[r T! CR!`BcC  CR!`:|@@b҄@ @@h$8! CR!QR5[BcCR_qT7#@! CR!@h6 @C@` 4b@! !@@! !CR"Ҹy45 Rb$a@ \@ x7 @b$`@R'r"@A C@b|@c &cc|@@9S*! ! t! CR!ҍ! CR!8R`6a@"@7! ! \~5 KR&b@! !@@PKRyo! CR!`fhb@B@BB}! !8y! CR!@BNPa ! )KH{$*|AS@y# c`$!`=B|@@SA@{Ũ_({B====#='=+=/= # w@') B@@BҁT{C_ (#{BS[ =#='=+=/=3=7=;=@')  @!,!T ?q TBR{@cb@9@5ARR  @s"@!Rb9  @! !`,@sq$T7 6 "B8R Ղ@#!|@sQ?1TAR+@ @ @b9cF B@@BҁT{CSD[E_@U@@cg  C#R{CcBSd@ `$[#c! !@#R a@!,!T ?q TBRPc@R@%rc|Sce*Cc R" B| @@?T#RҔ`@,T qTBR)c@R@%rc|Sce*Cc" B  RUAR" RB@L B@@BT{ASB[C#@C_`@w @@!!B@"@cҡT{A! SB!C`@t @@[#  {S" B`s`@ 6`@@<@`4!@A R`$5 a@6a@$@d!<@4@@! #c|@R%r ARSA{èR#%r ! SA!@{è@# cc|@RR%r!r$@9@# {S" B` `$a@R'r"@A C@b|@c &cc|@@9S*SA! {¨!GARSA{¨: {S" B`R `$[! b@!V@)@6@@a<@`4!@"@! RR&r%rC B|@ cc|@@9@! ! a@R'r"@A C@b|@c &cc|@@9S*SA! [B! {èARSA{è  "# {CBBS[c k: sR@@@``$RZR@.r@ TT T~ TTTR@"7Ry|T 4R"@TTC`TR"u 06 B@@B!T{ASB[CcDkEsF_,TT3R$T(AT@"H 4|T! R!@Bҭ T! !u0T4T3R@"7RRTT@"W57R! R!@B҈@"@!TR3RRG~ !3R"sTTCT !@"R@"_q !@"@"@"` @! ?qTBR@fR҆k3R@" !3! R!`b5Z@@B@ {RS [`$t@QN@ @fRCT6  ՂzssATSA[B@{Ĩ_! CR!ғA  {"!B$ES!CB@ @A@?@ T`B@y q T a@G! @xa a@! ?q TT?|qTT?8qT`@a@9! !RSA{¨_?pq!T!!D @ @! ! ?qT?qHTAT`@V! !y? qT`@!R[?$q`T!! ?qhT \D@7RSA{¨_ւ`@! ! Y!R Aa@! ?qATl{S4vC@ [5c78^DCFvC`@@?`@@ 4o@3@sD`@?TE@! c@!D@^D@7^D@7^D@A07 @E@?TvC`@@?` E@5 (D9[BcCRSA{Ũ_o@7^D@`6vC@ ^D@76#vC@9@B7! !$EC!@@!@?T3sD`@!@! @xaBx!#@! R!@ B@?#@@5Y` !^ { @@y! r T?q T?(q T?q T a@XA" @xb  q`ThTqT)TqTqTR a@`R!(?T`@97 R @{¨_ր4qaT@R @{¨_q TT qA TR0q TT8q T@  D!y@ @&<H 5!yx('B4|S6*c4F"ltxJy kYT *R+R c!!*< !kbT _1 T D#j8qTC!c84\yEK(<>1@TAkTkCTqTBqT* 'a@* @'a#@* `'a'@`@96qTq$T5`@(T`@9szqT`@96qIT`@976 'e@#q(TqT`@9x@@(07@* (# (*қ  Z)9C)fOT !_T{x@$T<@6  )S`TzqiT*W`@96\e@@9@6@@@yp6@aTa* _e@d@z@T* !TR RL@<y1!RV CR!!;K CR!@!5E !`!0@ ! cGbxb   D!*CR "! #@ @ 1T CR"! !9 B?@a!:~@a!:@ @i @* @#s@* e@)eB@94 * CR!"`C@yw6 CR!" CR!`"`C@yo6 CR! ""`C@yg6 CR!!ҿ`C@y`_6R?`@* $@# %`@4f@ #*`@9 6 `)e@s@x@ @**ح sB9** *| g@fA*qT`@9U @(* %a*X@* @&OD* &GbS@ !& !5 @`R#%r@ c cc|@R%rR#%r# Є+{CS[c*k@y@9* @9 B99"B@R@R0@9m&@_(qAT! @Q!T@ @ @! K,*B@`5@  @c$s B@@u7u7a@`@#(q T@7<@c4@B@"06"_(qT@7@7B7!?(q`T@77RsC|sB@Td@j`Ta@sBT`@Ec$@@* Є`.a @?qT!Qa sFB@y&@ |q T* Є/&@ a@@y!8N!Q.@B@6* Є@/.@ {Aa@@ySB!8N![CcDkE9e @*{A SB/[CcDkEe CR!,c CR!,]U6{ASB[CcDkE_* Є.I @C@7C<@c4@ @!@7 @!@7 @!@a7 @@6 CR!@.4m CR! .-a2@9`@?(qT@ @!@!6 CR!-a@`@"_(qAT CR!-ba2@9`@?(qT@a6 CR!-Ba@`@7CR !-a@`@#(qT @* Є`, CR!@-Ba@`@sF<cҸ_ { R @{¨. ҉{ R @{¨ C!{CBBS @C@t @_ @qT5 RB 0@\@ 7@`!B@"@c!T{ASBC@#\@C 7!@ _ @qT$QqTc$QqHT @5[ b$R#Rҧ#R@!,!T ?q TBR V@R@%rc|Sce*CcR B/@[C\@#@a6<Ѐ@BB@C@AT{A SBB@0(@@RCjB@@BAT{ASBC_BB@C@ҡT{A SBB0CRO@ @@[#  RW  {SL#Rҧ @R B00` @@@@SA{¨0SA {¨B0R {[6c@VB @a7RS @3w3t @@X6 @0@9_4q`T!?$qT@5@* @!@aRb@A@!QA!! @9?q Ts@S@ @kMTSA[BcC{Ĩ_@B\@6@ !?$qT @ @@@`T@!@*  @!B@B_  @!@aR_  { xD@@TB@@!@* @{¨ @{¨_C@{^D@@TB@@!@{Rp{_{ B@+c|A* `$* 3f@yE`A)A@|*0A7B7R*EC@T@j`T@CT DX7dLzAGT@R*[C|{C@Ta@j`Ta@{CTx7.qTT2qyT6QqȁT@RC#\@**jT ՜CT@j`T@2qvT@? @q`AT.q`TR? j`T !5CR.qT&Qqh|T@"*_ @q@T @?q@z+T2q`T@ v7a@b @ @Bh`8_qT `@a @@?h 8CR" !> *B5| @Bq2TBB * !5Bxdr,4"qQqEz6T@? @q@9T@_#xT#@u7 B6*ARPqQDz:T@? @q7T@?"`tT@C@m4@* #RB6@@ @5X7 q%T*qHkT@_ @quT @? q@nTRBR r  r?k`mTRR`6_8Gz* B`7{@* B7s@@7q`2T@@xo5 @fRFrq@_bTkb8 {4b @ ! @!7R qT !@* B 8c@F*q|j/T@* B8c @;@/7@@B@9@**>@@ B9*jq Gz-T@!T6qT>T.qTh,T"q`hT&QqT*q*T@  qsTRCR r"  r_kfT!? @qT$QqT `$R@R'r"@A C@b|@c &cc|@@9S*" *B?@* B@ c@c@* B c@@* B c@ @* B @@ @* B @* B` c@ @* B c@ @* Bc@ @* B`c@ @* Bc@ @* Bc@ @* B c@ @* Bc @c|S @* Bc @cx~ @* B@c$@d t @ *Bc@ua @?qT!Qa BA@Ba@TAAAAAAAAAA {Ǩ_ CR!3"ؽ6 CR! 4@ !6a @?qTBA@c!;TAAAAAAAAAA {Ǩ CR!@4@Rr!jaT CR!`4qT@*X7@O CR!4!$Q?qhT.qTT6Q?qIT!$Q?qTB!$Q?qT _6 Ճ @* B 7@kT@9 @*VF qT@*@ !x* B Z@ B 8*c@@* B9c @@6@ @q T6qTT.qT3T2qT@F7 @* B@:@@;5AR>** B`= @Ҡ@" @ C ccC@?c_bT* B=@* B`;c @@@7@_kT@@!<K !/ @@5xb5QqT*/@@7@ @Rr! ?qT@BR@fRFr @cc @ *M`@7@ 6@@T !@ *C@TAR@9@@*@Q1T>qTBqT@* B "c@@* B"c@@_kT@@@!@?MT@ @" !@*!8@;@{w@@*:xw@9***Y`@@T@T @p:qT@* Bc@@\@7@5aX6* B @@ *B@+@@_$@z(T\@@ x7 B@*@* Bc @@* Bc`@* B c\@@* B` cX@@\@$@7* B @k+T@(@@ \@87BGB@T 1@6* B` u@@(@_ YzjT\@rT@9#*R<F!F"@*C뀌T@j`T@BBAC@T  B2{ǨF CR!5J>qT*q R@ B6#R*@-R@ !`5CRb Հ@"!R**"qT&QqHT* B`6U@B9 06@w@!@!H@9?qTAR@a"@B@H@9q TAR@@0fRFr"$Q_qhT& CR!4Ү $Q_q)KT$QqIT*2@9@(qAT@ `$V@ R+A*B0S*C@ T@j`T@ic * B?s_.Rv@@ |T CR! 5s@@ |TCR" !3hR@B C$@C*CT@j`T@5 CR!BN"@* B`@* B "@* B"@ !1>@  5 [2 *8`$R Մ"@_kX>@_kTCRb !@ B`*&@* B&@ !:@  5 [2 *8`$R&@_kXs:@_kTCRb !@ B`**@* B*@ !:@  8`$2 *; R*@_kXG:@_kTCRb !@^ B`*@* B@* B|2@* B`v6@* Bp:@* BjV@* c @B@cb@* B]f@* BWj@* B@QZ@5Rb@C= B*B@* B@<>@* B6B@* B 0N@* B` *N@ B ! g  :@5  !2{2*RR ՅN@_k2hc@:@kiT@ B`*n@* B!^@* B`!@* B!@koT@o@9*VufRFrb @ !7sc CR!5ҜR!jOT @!CB_D@NT B 1@1 B!`8Ve@B@BBӝ !H@R@\@ sh7@W6R `$@P6@ @b@4q TCc|SR&r** B&Q?q0T@c RB$B$@**C{`:T@j`T@ @* B@:f@ @!@@oT !:BC@ B:*c@T@* B ;c@M@* B`;c @FҢ@@7k7`@ #`$@`c @c* B;3@?kXT @UX@@W @mWT #<8*zw@9***@@T@aT@ CR!;@ @* B@* Bc@@* B@c@@* Bc@@* Bc@@* Bc @@* B`c$@@(@* B@,@`0@9$q`T* B`@@9*@,@#&@0@* B@4@`0@9$q@T* B`@@9*@4@# @8@* B@<@`0@9$q`T* B`@@9*@<@#@B9`@xT B*m@* B cB9f B *`@(@5@ \@@87BGB@_zT 1* B9L@@a%!H@9?qTAR$@@ *B::@* B c@/@uTc@* B`'@9@*@c @ B@9c*c_8U* B y* B * B  P@@a @b@B@BB@* B} @ !* B`@ 1[ `$jD R@**BT@j`T@p* Bxa@d @ @`тh`8_qT `@a @@?h 8d @@* B 1'@"*_ @qT @* B=c8@`6@@* B >@`6@H@* B>@6@I)?k T8@1T @9D#E+F|SK#R&`dA@9:5@@9qTJRC9;@4A RG9qTbJGRE` ?%jT@@8A`!jTq@*T$4@* RR$@ R)R4@@9q@zTsJG``xP@q TV4` *1$@9w @!,!T ?qT#BR&G@ TR#E@2#Eh&8ZqT@9?q @zTb(5рhe8qTh%8a @R!2##@L@ RJ C9 9@ @9@T_8?q`&T@RsJGR"9T@9at" !jT@8at_!jTARC9C@!4A RG9qaT@9@4R3%#&RRRG#3@R"{65R)RK@4RG9 S@!4RG9_8qT`dA@915@@9*)RG9K@4RG9:)R@@9q` TZ@R;65@@9@zTaJGR `_ jTbJGR@@8@x`? jT65@@9$(TRR3L3@0@9!$Q?qT@@@ @3+1g 3@"T3$3@ "T3"3@0T@B9qT/5 R;@3CR C@3@\ a ! 2@R3RR3@S@4RG9R@!@G@   R%#&RRRGW#R)R~q)T`JGRB@9xb? j@T@@ @!@7!p7@@9$IT@C@ C@@@94aJGqR ` BzT'@R@"9Zqh#TR)R3"@3@R49F@@94aJGqR ` BzT3"@R3@q"9T` СR4k###E#@dA@94a !2#+#@+@ џ8dJGR?T?8?T"_8xb"j@TA@9RcJGea _%j`T@9ba"j`Toa !3-@ 9@Z ;31R3@R)ARCc b c3B0a R!0RX RCC@4@@ @ Rr! BHQ?kTARCAC@RR;@;! 5@**RR";@ 6R@R9 4*RS@4RG9#3@R3@"94$#CW!rC@`TG@{@T4<R*#CG!rC@!T5a !37lB@9E7@p!R3@@9q` @zTdA@9 4a !2;'U;@'@U*@**RR+";@7*3,#R3@@@;'/";@'@/@_@R9u` СR4q"@` `3!B9l"R {*@45{**B|@{*B|@` Ё|@@5S"  {ST@[vb@AB9?q@ T?qTA@?jT5` @1 `@ 4 @!R` 6RS@a ! 6R[B*SA{è_֔4R!R*SA{è_ 4R_*SA[B{è_` @` @ `@5*SA[B{è_`5`@@1  _3144Tr!B*cA"*qA?q cbcGBA`A!R` 6Ra РR!7*SA[B{è_`@R@`@@*R{S[ckYRs@#`@R!`@RA`@Ra`@R`@R @@@*B@ R@rA @ Rr! z@?k`TARv!T*R+b@A @!4!L ?qTAR  ATt47@@**R#6e@ RqAzT@**c@ 7 @**!@ @7*SA[BcCkDsE{Ǩ_@@@v T @o7 @bo@**"@@@@*R!@ 4/@ RqAz TY5@@&@!` :!@ RqAzT@A@Y 4@@Rv*SA[BcCkDsE{Ǩ_@@k5`@ RqAz@T@A@95*R 7@@`@T@3@ ` 7 a@+r T@@5a@ rT@!@9@5a@r`T@!@5v*R @7@@3@ ` 8 `@ RqAzTa@r`T@@@ RqAzaT@@  {S @R[ @ @B4BL _q`TAR  @`LA@qT`A@`5R5[BRSA{Ĩ_R`@@ @!4!L ?q`TAR T@5RSA[B{Ĩ_@@@@`@!R!@3@@ [B@BR`7@C@ RqAz!T@ {S3 @"_ @qT!!$Q?qT@a4@4[е RA@*[ Rf4@@@ @$@R*9[B*SA{è_`A@4R!R*SA{è_4k R!R*RҘ b{BB[uSEk9@@@o` @@@AR`R`xA@M@@ B9_ q@DT`xA@@!@!@?@BTa` @"Ba@!BC?`GaczsRr8dA @W+C! 7@@ ` @@RS@9;5` @@7BR` @@ @87! ?q@TCBRM!E@@Y 5f#@9RHGc 'jT C@8c$jTq0Tq!2T@@9RHGB` 'jT@@8`#jTqa0THGB@@9Rf` &jT@@8d`$jT.5Ra !: ` @@ @!6|@ E@@9b@@B9`962@9!9`@B96` B@@!@BR"R@ @2_cQsS.d @a !:%R"r#TRrT@T+Cc@*7k@  @q)T@a R!;P@@@@+E@+@cRR\r`T`dA@945+@ 0T`k@s@Bw@)" _ @q&T`B@3ab@ D@!c!a`B,@@1cB@b,`Eb@@_`@`@ `@ `@x2`@94q +TAR^@`.AR A+C+@!@<#?nb @`xA@@!@' @! ?q`(TBRX R&@@B@a CR!<ҢR*;@@*;@3*3@A7*a !<'@a !<RRRbR`rT@!ARA`Ba|@` @&u`xA@@ @@`$@BR`RxAcҢ R@@@L@9!2L9a @?q"T!Qa `xA`@@@@va4B7`B@!@+@s@kT/@w@kT` E)B@` @cQ@sS@a!Bo@"@cT{NSO[PkR_@@9RHGB` 'jT @@8`#jTqT+@Rҗr@TR@BR@(` @@ @Ƿ6 ն` @@ @8A+C*4@a !=Rk` @@WB+CRa !;B@lR\R@@F REx 9@@`a`!xF B!@"@B"@@@?qiT@!Q#@A+C@4@wRa !`==Ra @?qIT!Qa (acQsSw@+C@@9qTR"R@ @2e@94@ R2"Rҍ@a !<@a !;Y`RZcrh@@@+CCRW@CR@@+@M@AR@@@@94la @?qT!Qa cQsSR@@@cQsScs {[0@9!$Q?qhT@!S4@c@!B9?q TvwvCA @96@TR @|4 @lT@ @V*1Tx @l`4 @m4 @T @iSAcC R[B{Ĩ_ R_SA @:xRSAcCRSAcC0@9$QqT @@@@{ "R"{_{0@9c$Qq)T"RR*{_@c@c@cV *!|S  {0@9$QqT`@@@@S* 7q` @T*SA{¨~S!R{¨_MRSA {S@94[uJGRqT` jT`AR\a @95[BRSA{è_`@9qTqaT` @9q`TqT`@9qaT`@9qT`@9q@zT`!j!Ts 5`@9s5` @9`@9qaT`@9q@zTs5R_֡`!jTb{BBSA@@ @" ! `?`Tc,cT q T#BR4`@@ 6R@fre@rT @T@B@uqa!B@"@cA T{DSE_a@cc"@@BT'`@6`$E@8@ 7c#C#RrAT`tC@@@y! ?qTa@!F@ @@R@a @@ @c# @ Rb B@>ARf Ca{C!B[uS*vC @c@a@9 6`s@hE@@Ta \E@ `2@9$QqiT \Edc\Fe"RcHE@҅ysa!\B38"R*"0`@9R! ?qT`C@@a@7  @q@ TAX6c @b @@(qT<qAT`edf"R\Eҥ\F҄HE@y @ g7a!Fa!\B a!B@"@cҁT{ASB[CC_7B_ @qT !,#!T ?qT2@scs^EcHE`@tvCab@c"R!\F@#y@@@yV@! ?qTa@!G @7x`TbR`as!Fma^B `7#@ $QqT`hE@@Tace @d \Ec\Ff"RcHE@Ҷ@ysRv @@@ss^B`@`6!R`@!6 a@esARRb a B0!0 `^B RrT~`_8(qTab RB>!Es^B#@`@d`\B@``@t @@w!R| c @` @? @qT $QqiTa@A_6`0@9,dce"R҄\FcHEy=a$R*!\Bd"1{#,Cca{CcC[vS*vC!B@ @c@@9t@ 6`@hE@_!T`\F@yHqTss^B`@6 !R`@a!B@"@caT{ASB[CC_ր@9R! ?q`Ta`cB"R!\FHE@"yx3X6 @@? @qT<qT` @qTs.sV q T2`\E@TvC@@@@y! ?q@ Ta@!G @6x`TR@at!F^B @7cD`\F@yHqT`\B@`$QqTRrTX 5 @a R!?B@_BB@B@@tARRb a B0!0 ^B RrTs`_8(qTab RB`!E Ք^BcD@i@ @@!R$Q?qTRrTR~r`Ta R!@u@@da \B!?@Rcb@B@ G"R*": @c:a ` !> c4Ce{ BS T[ cs*@WUCHT""aRT"w b$kCRr ՠz| @! ?qTBRS9aRz<T@@kO @,T q` TBRңSaR`@9qT`dA@9 5aCR!E!@`@9`5@R@` `$@*`BW@@BaTR{KSL[McNsPC_@@@9qT`dA@9`4CaR!E!@aCR!E!@@ARR @a` k!GmkiCaR!E!@~aRk`@9}  c{ cBS *[ *sc a@OU{aR@9RcJG5 @8@4a`_!jTqT@9`x`_ j Ta !` 4@9 RcJGbvD "jT  @8b`"jTq@ Tk4z Z߂q@T dT*5 @85XA! }?TaRh986aR@9hJGRE4|@yf!j T@8 yf)jT 5_@@ sRaE!@@R@ q`T@**kN`JGR@9xb? j!TssERa@ssAb B! !23R**`BO@@Ba TR{JSK[LcM_D4|@yf@9&j!T?95kNkN*qTqT@9qaT @9qTT_8qAT`JGR_8xb? jT@95AR R1T8d@94skN*Ga` !G\9U:[kTbJGRCx`d ?#jT @8`4@x` jT Cdc{ BcxS *gAscG@WҤ@9wt=5q&T- Tq/TqqT[ v*D@9J5 Tkt"`@ @!,!T ?qZTBR@9R_q@XT!!?dYT@_LqDT* m7*D@9 c5t|BCT`C}`*DsgA@ @A57?rT`i4@ @ @6@@@95** 4 @4ќ#AT`E@ _5 [MkO`BW@@BfT{KSLcNsPC_֟qTqeT[ v*D@9=5tu"CRT`#k}z@R{ sarZE 7;@ @qTѡR"T@ @! ?qTBRb*D!@95@_TBR@@9`4 qp 4ѝR@9@4@94+@@ @*D!@9A4gA@94k@ARB A B0!0R [M}ѱ[ v*D@9@J5`@Tk`@ @!4!L ?q@-TAR` @tB @!4!L ?qETAR*D@9@N5tzbC_T`cR{ }aCrsA !0  @@ @77"_ @q#TX6@b @D(q)3T! ?q0TR*D@965@_TBR2;**= @4Z#AT[ v*D@9 >5t"CT`@ @!4!L ?q"TARg*D@9C5t|BCh6T`CRk}`z sZ#Y r!0@ @a-7"_ @q@TX6@b @D(q'T! ?q&TR*D@9,5@_TBR 3*@4ќ#aT[ v*D@935`@TkatB`@!@!`?A5T~ @!4!L ?qTAR @4L q`+TAR*D@955tzbC_T`cR{ }{A s!0r @@ @ 7A? @qTX6@a @$(q)TB _q`TR+*D@9 5@_TBR qZ#ATqt@ @T[ 5 _TV }B6"T@ @? r@TrT`gA(D!@99[M[MA!$Q?qHT@@@@**D @9 5+6 !R"B$Q_qT@@@@k**D @95*6 !RO"B$Q_qT@@@@U**D @95;(6 !R@@U@9_$qAT@9_qT! @@@@gA@9 4҅ gA@9@4~ gA@9@4w gA@9 4p gA@94i @@ @N@ARA R!0Q!7"_ @q`T @3!!$Q?qhTn@@ @@@ @"7A? @q`T @A!$Q?qhTn7A? @q`T @cA!$Q?qhTx@@ @gA@94 @ @@@ @AgA@94 gA@9@4 F@9!!?dT@:R!@93@@!@*`@ @!4!L ?q` TAR*6K:R, @@[MT0BR@ @A @!0Rѥ`! !BR@ @A R!0Q_@@gA@9@4һ ^gA@94Ҵ gA@94ҭ @@@a @Sh@@gA@94қ @B@?[MkO@@@b @\gA@9 4҇ M@@b @CgA@9`4z gA@94s *Wqg**q***Pq˪@ [ ka@@ `{S*?rTD5 RqTa@" R R?jT! ?@qSA{Ĩ_[u@2k!T`@[BjSA{Ĩ_` 4[u@\ k`Tu@ kTR*qlT`@[BTjSA{Ĩ_u@|~&*Q"7d_BQkTp@`@[B TjSA{Ĩ_f@{S*[ @ @!0!P ?qTARAxZqTsBu@`@ @!4!L ?qTAR& *ZqTnqTJq@TSA[B@{Ĩ_@@xZqAT` @s" @!4!L ?qAT@@ *ZqaT**SA[B@{Ĩ@ Rr R rkTAR***SA[B@{Ĩ2@4L qTARZ**SA[B@{Ĩ @@@@B{BBS*[c 7 k @A@/ @B4BL _q TAR5Rrq T@ @B4BL _q TAR)q* @^q Trq TNq T@7r!T ^qTrqTNq@ T@B/@@B!T*{FSG[HcIkJ_ @6@@ ^qT**U*Q@ @@q*^q!TQ_qHT@ 5Rr qTBR @_TA@ !@@ @|@ A{C!BS[@"@ @!4!L ?q@TAR=A @!4!L ?q TAR4@Rr qTBR- @_ITU ѫ c*7**r A!B@"@cT{ASB[C_@@A @!4!L ?q!T@Rr@@ qAT@ @@RAx @ u{S[@ @!4!L ?q TAR @`@r T@ @!4!L ?q TAR@ @!4!L ?q TAR@ @!4!L ?q TARa@R 4r qTRҭ @ *?q@ T`@&7`@ @T**lb@ RRr@`@b@ *`a @@@?h 8`@7@dA@95SA[B@{Ĩ_a @@@@@@@@ @@`@rATҫ R҂RҼ RCA{C!BS[@"@ @!4!L ?q@ TARQR` @r @! ?q TBRJ @ TbUCU~!?T~›R#TBVB~!44Qd e@yseycexexexexT* *#@A!B@"@!T*{ASB[CC_@Rr@` @ @! ?q!T@@4@R#z  B{BBS *[ c @A@? @!4!L ?q@ TARuA @!4!L ?q TAR`@ @!4!L ?q@ TART {@T AR#*1 T@c TRqT*R9@ T@Rr qTBR @뵒ihT A!B?@"@c T{HSI[JcK_֠@ @@뵒OTbˀR@@@@@@*RT @x7@dA@94R҂Rҭ RR  CB{CBBS[#A@Ғ @@,T q` TBR@_TBR WRe A !)BRy CRA "! F@ @@@U еRR"R @FR!@c@u@#R} @Ra@B"@@a @3 @Q S@B@@BaT{ASB[C#@C_ր@ @@R6 @@Z @HA ЀR!Q AR c;B`.A R!0>  $RB{BB[ VS vCE@? @?jd@@9rj}T!,k !T ?q%TcBR/@c 5`@#0b@A6TvC@x\R*a@#4s"R@w "R!r A"Rm @ @!0!P ?qCTAR @`vC@@@@9@? qa@375@9 t]@ @ x@BD7@@LDT`55vC@@9q3@3!,!T ?q=TR3@!f@3@>4@1T'@v9E#s SB A@ x` @q!*4@@052T87@{)-T`@|@9@6\187@7|{`? *TZ?T7@@67@{_q@RTR>a@3@|6vC@@9q<TҟT `@9 y`7Z`9{Ta@7 cKsM@B?@@BҡbT{HSI[JkL_vC@@4"Rs !"R a@@!,!T @@?q`,TR3@ISTX7ER !@7z`7@ZT`@@9`6A?6 a8`+ b8!|@XT)STEBRTC@9%zc8D9T QBB7@@/s B B2 @jT_q?TRa@@3@x@9!6 qT @6@ qMT I T @ @El  Ձ@9786a8R{({ b8{@_FTBT@Ec_ATa@9dza8BBD9_T@cc7i0T y@1610T10T7@#T @ @@? qDT9a@ `@2`6m cKsM"a@ ,T q`(TR93@a@t!17ҟ T`@8y Z@ATcKR 4r@ qTcRb@RvC@x\*a@5\4@Td Z_k`T*8!@(T#@9"#By6_1(TZ@R*487@{(T@sM3@ 49`@`@@c$@z!T17cKs@ҏ |`@67@ 7@SBt#@R@|8`( Aa8|@?6T`/TBCE.T@9azbb8!!D9?Ta-7X`@9`8787@@@`@a @@3`@| @@3`@@/!a~n h(b(by @T@Q  qMT"Ra"@ Rr Rr @! ?kTARa@ TZ8!@T#@9"#By6_1T_1Zq@&TҟITV@ԊER `@9 86`8"*c b8c|@?ITb_"TĊEBT@@9ez`8!!D9?T!BB7T7@ 7@{T@q`T9a@ `@2a2`&`a@m|Sd2!!`2@$897@`@s @@3@a@@Y 7c@9#aya7!<@Қ Z7@{@@57@s 7@~<@q`ST 7@p 7@9` 9`@ `@w@y[d88Wb@{ @B@3 `@{ @@3rvC@@9Ts Xa@9ER86a8%+ b8|@Td"TET@9@zAa8D9T ˄7iTqZsɪTa@9A?7$7e@9y Z@@DR;@CDRy;@cKsM7}cKs@2DRfF '@DRX;@@DRN;@G@1 눲T @~ @" T@o L^ GcKc s s:c k s sD{CBS[cxk Cs " @@'A,!T ?qTBRC b@R6@$E@8@{}{CӹS##T @T<: 2@9qT@! @?TTRcr @  @7X6@d @6c@c@c @7_rTB _q TBR @R@r յ"lT@7@ @T }@@dA"x@95TA@BRSC @#u? TWRcr&EBRs c@@d @R6@R8@}cs"T`@ @ ?q!T@"@@T @<qRR?LT@` 7@B'@@B T{ESF[GcHkIsJ_Y#Ru9'EcrBR1 c@@d @R6$@R8@}cs"T @*x`@ @ ?qT@"@@ h<8aR @<:l`@v @@ aR@1R @@N? r`T`CC{cBS[B@d@C @`,T qTCBR @?9C @ r!Tb@Bxb@ @6@$E@8@`7B2b @ф"?C`@`7?@94@dA@95@B@@BT{BSC[DC_@@?9V@@  r TR rT@dA@9 4@tC@ @! ?qT@@y qT@GakR҂R| A !A !CDC{CtCS[*#cB@d@@9(7@9BRR7@,T qTN @ `$q T`QjT@ 7"q,TR@ |@ ?i T~j`8 @ Ӛ!(!|@ A!B@"@cT{ASB[C#@C_@BRR,T qT@ @@v~q T~@#T@4|Ё T T TTAT" @9`QB B @9cbQ Ú!@9bBQ! š!jt8s"Q Ӛ TTT T"@9 @9@ ҭT"@9@#@9`R!Rdr`T@,T qT* qRS2h@ @@uA R!*Ұ@ @ `A{C!BS@"@$A9 @4[c6@ @k [R 4rc@ qTBR'@7R Rr! R!*r R`@r kTARa@5LCqT`Qj!Tqm T"qT`~|@!!?T~c~@@ccCT?T!"k_ T9:с@! 7@! @? T @"R @kEqT ju8 ӚQ  "ؚ*j58@ 7[CcD@B@@B! T{ASB_@ kORc~@ ~ @|@ qTT"qTBqTaBQ&9s"Q&Ӛj58qT RA !qHPX9999bQabQ&š 9&9@a@6@v@ @@6!RRi@X|[CcD@ k[ck  D{BS[*ck@ҟTҗa@!,!T ?q` TR @R"4r ! ?qTR?@!,!T ?q@T#R a@ 6U&E@8@7CCR@sR6@8@@7#cCRRs*S/5@5R@RrRA !*@@@?8 @0] Tvq`T?3 !` R@ @T @T @?@Tzq@T~qTvq!Tqa@` @!@@ 6@$E@8@` 7Rzq`T~qTvq TU5@(D@9 5@B@@Bҡ%T{CSD[EcFkG_tq T@rT `@R!4r q` TR @!,!T ?qT@ @@hR 4R_jTRҐ@ @?T@R@@B`@Rjzq T~qTvq!T @d @@@ #@@9!@9 `8T99@@T@EzqT~q@Tvq@ T~a@` @ !@ @cc @ @ @!@9@@9!*a8T@_)T@@TB!R@ @@?h 8] @c @ @ @!@9@@9!Ja8T@_(T@_T @TBR@ @E@dA@94R҂RS. @fѪb{ @^cf^^f__f__fTs"b{ @^cf^^f__f__fTg{h f@BD^csdf^D^dD_f_dD_f_dT"A@ !RB@3A;SA[B{Ĩ_ր@6 @?qT!Q ҠҾ?9{S @7s@@T @xs@ @6! RBSA{Ĩ_[B Հ@@s3RSA{Ĩ_ R[BRBSa@+T@7@@ෟ[B@*=RB @ 6C|@[B[B RSA{Ĩ_[B0@? T@rTP7@@7X6 @ @!6@@ @6R8[BrT@C|@R[B@@hT @[B@9q@[B@[B {R GB @{¨_֣RcFRcBL@9!208 @{¨_ {R +B` @{¨_֣RcFRcBL@9`!28 @{¨_ {BBSS@`@@bD@@@ ]>`R" RҾESA{è_SA{è::;@{!DS[G"@dCC#@B@@Ub""BC5F@TG@`5sC@5uSA[B{è_"ҧ>@ !`$C {!DS[G"@dCC#@B@@Ub""BC"5F@TG@sC`5@5uSA[B{è_"v>@ !`$uC{!DS[cG"@CE%c@B@@Ub""BC5F@T~@~},E@@sGv@9Cz7`@SA[B@{Ĩ_"?> !`$?C  {!DS[cG"@CE%c@B@@Ub""BC5F@T~@~},D@@sGv@x9Cz7`@SA[B@{Ĩ_"> !`$C  {!DSG"@dCE%c@B@@Ub"@!!Cb(@?qT_xqT_|qT\GsC5@`SA@{è_= A|@7 !B{DS[cG@!tCEC@@@"@a@ @@93rsCaTD@@(@@7B@ R#@9q TqTkyzS 7F@? TsQ@t~@37@+S3XGs}}Ӡjx{"AR#Ѯ@`SA[B{è_֡ !B@_qTBQ !B*={ RrS[ R@ @r kTARL=`@9@5!Ҁ #QCR>6tB@yt4@ @@yp65@B@yp6@@@yp6SA[B{è_!@ @@y@w7SA[B{è_@@@`@94b@ РR! >"R=a@93<**q T; @ `@92`9SA[B{è>ѡ{C!DSBB[ckcGD@"@CE%c@A@@7a!!C?q(TtC@ @9 6! @A@xa@@$7_r!T RBrT6 !`$$E@8@@7<@7 @x @!7sGCa@B!7@@Bҁ"T{ASB[CcDkE_ !`$;@@6 @!$E!@!8@72?@7@/T qTRC@@7HG!b? T @9x` W7@HGB hb8`x``W7@<$E@8@7BBT!GHG@9# 87cP6 c8B_T#RR_?@}dRT e_8$QqDzTqTqTq T|qTqT`_8qT$c d˟TTaTd_8$QqDzTc(Ě7`_8qT`_8qT CBJd_8$QqDzTqFzT`_8qThqT`_8qTDc`@E T c8LTqTqTq!T@9qT @9q4`_8TDT@9qT`d3@x`W7@9hqT @9qT`_8qaT@9q`TqT @9|q#4s`_8qT@ @@6Je=3@b @9cQcqhT(Ú6X !P@_;{SAR63}ӔA@" x`@?qT!Q` @` SSA@{è_;@B { RrS Rr@ @ kTARd;@9a5!Ҁ jAR<SA@{è4@@@@94@ R! < { RrS[ R@ @r k TAR8;`@95Ҡ `$=AR<4a@?TT?Ts@:RSAR[B{è7? aT,D@M=s@s@@@`@9`4b@ R! <,E@9= 3{!DS[G"@CC#@C@@s##BBC_qT6ss~}!@B7P7@G C@SA[B@{Ĩ_RC @q!TR"jTТ @cCBBB2@@! !f? {!DS[G#@Cd$@c@B@s##BBC_qT6ss~}!@7rTcP7Rb @_qTR_#jTТ @cCBBB@G CA@!SA[B@{Ĩ_\2@@! !?{ S D@s5 >@m5 @",BT _qTBR@@!=SA@{è@ ?{S2?е:Bq2BRsbF@`@B@B$@B@B@;@A!@!$@!@!@a!@SA@{è_{СDS[ B cszk@QszGs  @aa{{ !@kTkD6SA[BcCsE{ǨD8 a>] !  kX> kT>{6{/8  {S`vC[@ @9 6д! @A@xaC@@@7X6 @;CsvC@`@SA@[B{è_֡BR!@!`8І9C@@@6B1@{S`vC[@ @96д! @A@xaC@@@ 7 X6 @R`62CsvC@`@SA@[B{è_֡BR!@!`I8N9C@@@ 6 1@{SЀvC@ @96! @A@xaРC@@ @!0!P ?qTAR9`@Rd!(D"0r _q!@9!R_jTa@@R*` CvC@@SA@@{è_@@ 9[0 {SЀvC@ @96! @A@xaРC@@ @!0!P ?qTAR9`@R@e!(D"0r _q!@9!R_jTa@@R*` CvC@@SA@@{è_@@80  {!DS[ЃG"@vCD$d@A@@5!@a"C(@_q T?q`T T?q@TT?q TGsC@5uSA[B{è_?tqTmT?q!T?qT?qaTL?qT?pqTС ! RBGBpF9&zLtC@ @96! @A@xaa@BR;@ 7`C@d8@9 !|@@ 1 !<  {c Ss" s"B b [k< D8Z A kT=R(>t_4e9sv]xRl=`T@ x`0@9?4qT@ @@:5t_4SA[BcCkD{Ũ_  CѠ{DScB[d@G@!BdBC@t@!@S@4sˡsCq- Tc kR  rsBRI>]: 4`@9q TJk T@t@ qAT@ @@@c#{`:rT@@9?qT W<C:rT @hT@@9?qTT@ *<Q!<? qTNk!TcFkGsH4B@@BT{CSD[EC 6:rT@(T@ <  < cks/T+@jE`@@@(a@!@!@! @7wC`@9!7@SA[BcCkD{ƨ_@?qTwC!Q`@9!6jER@@@-@2@92qTwCSA@[B@cCkD{ƨ_Ҋ.9A @@%#@ @*B t.`@-k+\@@x6? B$ @%@,2 @@k %+@@B@!@ 2{S @@6@P@7@<@4!@Ҁ ,3Z(a@ ,T qTBR3a@!/  @B 7@@@`UҢ6@R@!<@ 5! $@9S `(3R.a@!,!T ?q TBRҠ3* B(!Gq++@$sb2@B2b23RR2*RBҀ (@@\@ 2\,R!Ҁ (,t0`6F0B@kTSA@{è_ւ@*SA@{è'` @` @0|@ @ !T &1B6@@<@@4!@ `'z1a{S"@@yB r`T_qT @@@yap6@s@]`B@y@w7@SA{èr,USA{èm,_Cт{BGS[k@@!BC9"@Y@/5c9!Bs8F!@)A@@. 7@R2!BB!@@!@!$@!@4@UD@ D@!`B!ҁ0@CsB#@Rc2r?@?@?@" @ %7@2ҁRC Sҿ -@?MT@xs@9B(6 @@U1@'Q1RRR01@s TR4R$ R1"@R RW@t,"RRn,BRR2@(!RR- R17+@җ )@T @xt@@; @@96@cC@yc $qT%@qTqTRR;,C@RR@c(R RW,@ @97@7R4Rz'AR+R@>$*`a@9"R!2a9 @! :@@!+`*@`*SA[B{è_ֵ-*a{S"@@yB r`T_qT @@@yap6@s@`B@y@w7@SA{è{(SA{èv(_{S5< @ @k(@ !*S "@@9qTqTqTAR(R)@R R!`q TqT@ @92 9SA@{è_(aRv(@ @92 9SA@{è_{S[@&@SA[B{è},B@3b@ D@!!aB,@B@.``@`@`@ `@ `@x2`&SA[B{èQ,$`R&!B!@!@!\@A6_{ *,{SbvC[!ACFC@@"@@c @W@Uxc-T5# C @"R#svC[B`@SA@@{Ĩ_"ҏ'@с{!BB"@)@@BҁT{C_֊' _R_ Ձ!$EC!@@!@?@T{, !,j R{_ր\D@7R__   {S[ck0@9$Qq TR1*@@R9BE?!R @A@"B9_qAT ?SA[BcCkD{Ũ_֚(*AD @9T@ @ B9q`T @T`%* @%1`T@` @@t @@@@B99@ZD@@kjTTD@0@9?$qT,b @ !@,B@_BB@B@@@@@@@5(*%*%*у{CcBS**`@%@+ ! -R5B@@BҡT{ASB@_*'*^,&уR{ CcBS d@G"'@`a@9@?q@T` #@&R$ 7@@?!T@ @?TBG@@BҁT R{ISJ_ւ B-.+& { @@?q T!QR @{¨_T&  "RAR& RAR& Ձ!D!@?kKT_"RAR&!D!@?kJT_RAR&  Ձ!D!@?kTRAR&"RAR& {[rBS@qT qT*RR&*1 T!R&1T6 R*SA[B@{Ĩ_SAR[BR@{Ĩ&I#*1T*"R&*SA[B@{Ĩ_rBAR*"R&%@XQxrAT*.#1TAR*"R&@XQxrT@R  {cDS@qT q`TR[***1T!Rl&1`T@6 R[B*SAcC{Ĩ_SARcC{Ĩl!*1`T*"RU&*SAcC{Ĩ_DAR*"RJ&[B$@XQxr`T[B**!1TAR*"R6&[B@XQxrT@R[B{OS[cksc)BCH9(@AH9A"*R+rT`@B9qTq T&a@*!B9?q@z⷟?q$@z_j T!`T($_kT7**~!`7A@"R` B@%@@3@94c B@D@"R`@@%@@3@94@@@@4&*6t@g# *&*a@t B9x 9 B 4a@ B9qTqA @zT4 R7@ABC!B@"@cTSA[BcCkDsE{ƨ_$7+@ 0@qT@5`@B9xqT RSc*u+7 `@aR9+@ @q!T!@9cRR*?$q$CzR9@)9RRx@r) #t@ u Ra@;9\(TB @ R!/B@_BB@B@$K#!Rt@4@B9qT R*rT@*`@_8(qT RB3!E#t@/T)T`@B9!!R#P!R#@E* 7Q#**D@kT**H A @ .B.#@B R!.cc@c@#*RAR$j#@`q!Ta${cES*[@qT q@T! 2!*1T!R$1T6 R*SA[BcC{Ĩ_SA! 2[BcC{Ĩ!!*1 T*"R$*SA[BcC{Ĩ_EAR*"R$*#@XQxraT*!1TAR*"R$@XQxrT@R  {#c8'AS*[@qT qT*! 2)*1`T!R$1T6 R*SA[BcC#@{Ũ_SA! 2[BcC#@{Ũ))*1T*"Rh$*SA[BcC#@{Ũ_9'AAR*"R![$"@XQxrT**)1TAR*"RI$@XQxrT@R{[CS@qT q@TRV*1T!R-$1T6 R*SA[B@{Ĩ_SAR[B@{Ĩ@*1 T*"R$*SA[B@{Ĩ_CAR*"R $"@XQxraT1TAR*"R#@XQxrT@R{cCS*[@qT q@T! 2*1T!R#1T6 R*SA[BcC{Ĩ_SA! 2[BcC{Ĩ*1 T*"R#*SA[BcC{Ĩ_CAR*"R#."@XQxraT*1TAR*"R#@XQxrT@R  {[CS@qT q@TR$*1T`@!R#1@T 6 R*SA[B@{Ĩ_SAR[B@{Ĩ$*1 T`@*"Ro#`@*"Rk#*SA[B@{Ĩ_CTR"R*`@!@XQxrT1TTR**`@"R@XQxrT@R {#c8GS*[@qT qT**! 2*1`T!R.#1T6 R*SA[BcC#@{Ũ_SA! 2[BcC#@{Ũ*1T*"R#*SA[BcC#@{Ũ_9GAR*"R!#}!@XQxrT***1TAR*"R"@XQxrT@R{#c8DS@q@T qTR[*&*1@T!R"1T6 R[B*SAcC#@{Ũ_SARcC#@{Ũ&o&*1 T*"R"*SAcC#@{Ũ_9DAR*"R!"[B&!@XQxr`T[B*O&1TAR*"R"[B@XQxrT@R[B {kYGS*[5@q`T qT! 2c**R"*1T`@!Rx"1`T@6 R cC*SA[BkD{Ũ_SA! 2[BkD{Ũ:"9"*1 T`@*"R^"`@*"RZ"*SA[BkD{Ũ_ZGTR*"RT`@M"`@*"RI"cC @XQxr`TcC***"1TTR4**`@"R@XQxrT@R cCц{ƀBS*[ c k @7*C#G`ȀRjTdA@95cR*9'@*Rd9'**c&R/%DH) @99C9!B7@"@cҡT{GSH[IcJkK_a !0B! ц{ ƀBS [ c *ksC@O!tC @@@y! ?qT;CKS$w h48VaR"B@9RaJG\$xb $jT@@8 x`_ jTbJGR_T8_T_8@x`? j@T 4@G@@!4X!KA$ ҷ$9aR"A@9@ RE9?q! TB@9@xq TF24c1T(4?q! T@@9qT@9Z A=4?qcTdA!@9Ah5@RC9C@[4@ RG9q[T@*;r#@R;@"9sJGR@@9c`b ?#jT @@8a`_!jTR` 43q3@b@A@9 R9?q T?qT?qT?qaTdJGR @@8`_!jTARC9C@54A RG9qJTq?Tv!4@*RR; %;@@@9qqjTsJG``xP@q!TR%@@9V5sJGRA@8ba"jTv5A.4dAB@9?qT<5V4RC9;@4@ RG9q)T@*"@@9R)R5G w@A99C9!BO@"@cҁVT{JSK[LcMkNsO_R@]{!A !@F@[GB@@!Cbx3@ 3 @{¨_  {S[*c#@8 @X@v]RR4e!R*SA[BcC#@{Ũ_**  @!6@ @!<@?qmT@#" '@DR@9e5c@ __@R?1TT@@@} {DSBG@CdD@s@ F SsC@S  T_` ҙ\_@ҕ\CSA@{è_Bk_{S !#e;Ya @?qIT!Qa @ @@yp7"@@@@yp7SA{¨_3@SbB@yw6b@B@@yw7"R?`h_SA{¨_'_ {CDSBB[c+!GC@@CC#@B@@A`"vaCC ˟ qT c$R@ rT_TB€Rr^!Rb qTC3B@@Bҡ T{ASB[CcD+@_ RbcHZ qT@T !4a4"2*c6WBsb`@7rT b 4 @@@ @ 6 @@8<@`4@ @T!@ @@!<@a4@$@99S@ /T qTBR{e@9@ @@RV`@#^ c {!DS[cG"@CE%@V@t@"6@˔C(@qlTs~}Cs"!SA[BcC{Ũ_ky~@s~} xy @!,!T ?q TBR.e !Aa@4 !`rTvaWYqT` @ R!RBR^WW@6@@<@@4@WW TaG @!xyNa !4R`rT XG3@W`z9 `B!Ba,@`R7EJ@A@A@` x9cCkD{Scs @7@@B@8sb@ D@!!aB,@B@.``@`@`@ `@ `@x2`SAcCsE{ƨ_[kb@ D@!!aB,@B@.``@`@`@ `@ `@x2`T}ӀIb@4F@#C` d@с@c@  T!FAb @x @:@ Tc@{` @ @lT6TT@@T @xuAR@b@a @@@}T xt6@?qT!QaT9F @ TZ:SA[BcCkDsE{ƨ_Db@a @I|@J BS`R_DU)E`RXDxAn@b  @,T5TRE@ARP@`@a @@t}T xt5 @?q T!QC`@a @A@a@` x:[BkD%I@_D{Sc![Rks @A 7=|@5TB@b@ D@!B!a,@ B@/``@`@`@ `@ `@x2`h!T}Hd@R` c@v bK4F!C@!@?- T!FbA@ B@cSx :@R> w 4!FAR?c@a @`@ T` @T< v'GAR?b@a @@@ T@ @LT6 TR]> 9F @TZ:[BkDsESAcC{Ǩ_B@!A!Ba,@@ `RmC|@r@c@a @`@jT` @T< v @ARl?`@a @@T}_T @LT6 xv<  @?q T!Q xv< @?qI T!Q xt6 @?qiT!Q xt6@?qTC7Bc@a @7@7Bc@a @7@lB`@a @Bb@a @r RFB@b@ D@!!aB,@`B@/``@`@`@ `@ `@x2`SAcC{Ǩ_7C7@/7C7@t8{A@a@` x:[BkDsEA9H@i@`RB {!RS @j!T`6@C!@@y_q$@! T<@ @@!6[cF!C@@s!@ @? T @FBA b@Tx 7@ssѠzsz3@?q T!Q@@ @"@_T " @@ F@T @?qT!Q [BcCSA{Ĩ_@ @A@T A @ @ SA{Ĩ_C!H@9?$qTB2ySA[BcC{ĨCG@A@@` x7[c< {"RS @?jT6 R[FRE&@b$RSAR[B{èq[Ba@SA{è!@!`B R,C&[<  {S[@SA[B{èTGB@3b@ D@!!aB,@B@.``@`@`@ `@ `@x2`SA[B{è'Gr?`RA  {"R @S?jA T7a@ @b @Tx`#_x `@7SA{è_ RE`@6F6@bSA{è_RE*@RRSAAR@{è=bD4a@b @ @Tx`#_x `@6@ RB*<  {"RS @?jA T7-T`@@7 7a@` @"@T" @CДB" b@A@!Aa @ ` aTSA{è_ R[7ERE2@B*@RSA[B{è[5@񶢟@a@ @ u @_T}B}ӗGRHa@ @ a@ @ ` @ v SA[B{è_[B?[a@ R B2d[; {S[@s!zFҀ@SA[B{è7AB@b@ D@!!aB,@ B@.``@`@`@ `@ `@x2`g>`R@{"R @S?ja Ta7`@@ a@` @@a6` @ a@` @ a@ @ `@7SA{è_ RD`@ 6E 6@bSA{è_RE.@bRR@SAAR@{è<NC4@ R A. ; @7@@_{E|@{_ {?S4[ @7@ @?+T@@ @6T zs@?qT!Qz3sџT@@7SA[B{è_֟ TsRB}G RDtAD9RE@$RSAR[B{èlSA[B{è]@@SA[B{èB R@"A  {S @ 7@6[F!C@@s!@?M T @FBA b@Tx 7@s @sxs@?q)T!Q@@E@? @ @ @`7F@Tѷ @?qiT!Q [B@SA{Ĩ_@E@? @ @ @@6SA{Ĩ9q@ RCA@9F@TA@@` x7E@SA[B@{ĨQ@{#RS[* @_jaT7A@@T@@7 7 @xsx3@ @ T@7V 7@ 7SA[B{Ĩ_ր@@sS SA[B{Ĩ_s @!x`a @3@s3@`6B5 R/C"R p7 o9dA@95"RBdFB@7\~q@TT 4qAT#$"!cCdFBA9!Gc@y@ _y 3AsVB@a@@T`@@!!!A ! !FE!@@?MTL|! _Cy!CdF7@#y  qT!$"!FC9@dF%@@y_y#" ?cGAEtCb@?@? C@B2#" cGBC9dFB@yc@_y`?!!C @@""@BGB@A C@(7 |D@@@Sa@ R?j Ta @?q)T!Qa `$҅_Cy @7@@h7#"@cGBCc@ @a A q T # $C@` _Cy !7@dF!C@#y4$#" GcFBEC@@B@c@ MT{1~"!@BtC!B@C@"@cҁT{\S]_#!cC9 dFa@y_y9~a@RrR *`? rT_Cy"a@ !9{_Cy~ / "#_Cy|DBC@cdFDy@aA@a߁@@@ȃ{S*4GzAR!!C"@@_"SA{¨_ARa @?qiT!Qa !!C"@@_"SA{¨_~{S4[Dc@ @ @@  65֚D7 @8Cx GR@R@ @ :@@@ˆ@CF@D@ @ @@ yR@@b@@@c@A@C`#@ @ @`  @@` SA[BcC{Ĩ_ARR<@ " {x{R[v  {S*[M}**y*4kk@*5RqT@"@9_qTSA[B@{Ĩ_ @9SAxPq[B@{Ĩ_  {cRBR `:SlzaR@4E@a@7!x!2aSA{¨_x`@ 7@a@!x!2aSA{¨_ R" : { CS3[aA@5@@!aA #R BR ;1z@% cR@;DBRAҤ#z@%RBRҥD ;zR@%A cR$G;BR6z@FB@ @! @64R҃FBRcFB y@ @ 7! cR;BRy@6~C@ @@6FRcBRm~C!R y@ @7A cR A!)+/ ЄXG'Э@.ХTAcpE*BB,!G0)BF$kEE?bE_A DA@mCC@B eEl&!"#Ѐ4A%ƔCҥF c0GB$C D_99 !$E!Bt"(&$B|G R9AIC @)0Dc*DGEP !  J )!! @AD@!`B!ҁ0@<bB$@RD0r?@?@?@# @ a07@"2BB 7  `$V3CG6zbzzRA@947C@% R#PEÁ A@A@RIbELT ҁB5@5 Т@"D@!`B!ҁ0@a0bB$@RD0r?@?@?@# @  7@"2BxCa 6п =U)!G!B@ ByR K1T2TҜ~" ДB!@9BA9@@"@!@99* С@D@!`B!ҁ0@*sB#@Rc2r?@?@?@" @ 7!2 EҢ@A @  B@@Ba*T{A RSB[CcDC}D@!!G!@k;@7Cx B)aNR2C) r-R_kRAJ卬rcrDR!kJckdJR@,R RerkJ&Х*LṋFm.** iҍ̭.-LI R5 % !L!KJ$J\e cHJcKJpKqaT!Jc#J?qB$JR!q%JRc_qDRBqRCJ!L!K\"J` HJccKBpJBKqaTF()*******Jt@J*0DJJDT TF!Jt@J7!0AJ"R J CRA@9B6@ @"D@!`B!ҁ0@bB$@RD0r?@?@?@# @ 7@2C @Bxdr}@{ u*|kT4F@4 <}@R@sw~qaT@"!B F`4J!BD@JCJ F@`4 =|@R@sV~qaT@ҀRxyҀRx-v*v`B!ҁ0@AҀRwxvY`Rnxv@ =|va@5 !`< =C~ >?~>yҀRNxU <|s%~  C({B+bRcR@Ru@5@@@T B@@BT{C+@C_C)SS@@<}<!}@ @e}#R"R$u#@@A6 #qT @sas4!@#?q TA<!}SD` aR{@@Sx  {"BES4 [Qc@@94q T 8"R cR2tA@ @@Bb@Bb@!@sqT5#9Ж6AbA9{B Ҁ@"|@@@@}@a06 @94(6`@2`A87T#@ E@A@@@ @a7@@TSA[BcC{Ũ_b @94|`cR"RUt@@s"qT@Rb@9_qTb@94_qT|`cR"RbR!Rs@!@p E@`SA [B!`>cCR{Ũy|1TSA[BcC{Ũ_aR{@@Q"n#{CcBS*[k3`@ҠR#c"Rl&sGV sblBq!TD@Dl#sD!@`@"$@B ?)tF@t0F@{tsA`@xt!FBC @?_otD@`@  @DD`@s @^t@\tSA@UtnOA 2* 9f@9x95!AG?!AG3k{ =StHf !`fa @?qT!Qa  !f ! fRkm{S-f B@!sbB@B@f ! #ha@Rk  {!BS@9"@qITQ"_q(T?qT B BXaxa""@+ `jr!"! ?T"4DT+q!T>E@@?qVT!Q`@9q!DT` @9C4` a @9W4 a@85gRsRRR|f@@@)PTB@o>ER"(D`@?@@!@h!8 @B@9!x!\!* BR5` @ҕr!ҟ TڡRRr|bӠ>E@@A @!2 !Re>EBR@\l@@+@sab@9N4B@@BҁMT{CSD_ +q!dA!@9)5* B`$+q+5+BBFR @!XBFD9AC=TBsF"+@!RsE9+BBFdR @ZB!FD9CA:TBsZB"+@`Ra@9bHG5@9/4Aa!j@TbHGRa@95Ma@8a)4Aa!jTc@9Ec%jT c@8Ec%jTqd@zT!R`@9qs!RsC9z!RstG9ts"RbGD`@"9@?q8T!QbG`@9$+TE@@?q/T!Q!R>EB@B`d@BRhk@+@s!Rs$D9"Rs!PGtG"99`a@9?qT?qR$BzT+@9?q#T a.r@qЅ@9&R`HGqe! $Fz(T e@8qe Fz Tq TCRf`@,T q #TBRr }ga @?qI$T!Qa +@ F@a4@R@s#b!`A @G6@F9F@9?raT!29s!RsF9!RsE9+BPGucAtG!RA9b@9a994s R`HGb@84b"jaTД.A@p@s`/oh38f@+@gR ! m@!RS`HGB@9xbb ?#jT sa@9xa_!j`TP+A@!jTaqT  @8qTq=@s2RRdRdd\xTС>E@`  `+pS`|@5@H T!oo9Tq>E b @9!RHGxb? jTs !f@@9! ;qbGs@RR@!@9dR2?q  d@!@ 9@@si@i@+A @qCRe@ !Be A@qbG@4|@@?`y TڡRRr|bxa @ `$p>E j@J|j mwj@=sj+@H!dA!@94R҂RPqf+j* `+|o{S[*cks B@oRCbBG!F@V@5J5@qd@5T!FG!@9A.5sD`@ijG!B@?@?q T!Q!G4B?c#dFRBFcFB@@9+xhqT,AT@65BЄCХdFcLA'RBF!@g@@y 9yT@3@UТ@ D@!!ҁB0@$@RBBrD0?@?@?@# @ 7@2 RTB @RcA `uSfR hF"R҅ f@@@?qT!QЂR RVB!`@xo@ @@!@%RcR"R@a '*eaRlRl!G @!@!cR"R @e!C @!@!cR"R @e!hE @!! cR"Re!|D @!@!cR"R @e!@A @!@ !`$b@Bbfe~DR@6l@ @@l|D@@@U@ R?jT @?qT!Q `$oЃRBR!TB B %@҅Qs"feЃRBR %@@Cҥ@Ze!Rc@BDc@Cb "!hqT5 dT/@l5ҠRpRcBBGaA#@b\@B2b\6@e_!B&6@@"D@!!ҁB0@$@RBBrD0?@?@?@# @ !7@2 DAA f/* B@/!P `/k@`@?!R _" !8+fcR "R9!b@  )AƠ//G҃( B 0`0KRR"R `2bR!dB @A@!A@@@9i cR"R 0bR"R @2@@ @ @b@ @ @ @@@9^@ AdcR"R 0jbR"R 2@@ @ @Zb!TD @A@!A@@@9.k@ cR 0A"RDb `$D@@c @c B@VJlBF!\EB@9 l4`A@406xB@94!6dB@0@9B$Q_qiJT!6xF@0@9B$Q_qIGT!6TD@0@9B$Q_qyT?r@T cR 1"Rb@@3`A@ y6 !z4!bXe`@`6gF@@s4 @1i@kRl@s !1h@X5\C@!2*Rh! @?qpT!Q! `k!A 7@`5d@ R?{*`x5G@C9w5!$EAVB!@@@?$T@?qIpT!Q@@@AF@ @?q nT!QFF@9X5!RF@9?jUT3d!FE!@@?VT~j!ABEF!@_a+@F`B@+@CRBLAC<`Eyج54qT{g@9 PqT R99@9Q& ?T$qTqT ` j4qT@95a@agQs"-q@TTqHTTQ!Ҧ! š?!TXq` TqT*F@ 9@9`5a@acQs"F@b CR!F"@`LqAT R3@9qT@9QqTqTQ(qT!Ңt& !T(q`TqT gA@95cC"R gA"99@9g@9؜5 8@9@9@q/`@9q,T j ZCB_@9j*!C&9@9 5w@@9Qs" 4jR`"S}F@wbvd@RrR *? r`dTi BR @9 4+bjRj@˗k@WQs"O@951@T* !\ueQ7c7@ @qPTR4a"!}tT@9a4a@85!G!@# T@"R a TTITa"!}T@94 @85Bb@sv4@@9 5 R@&!eF@b@-h @)h@9PqT"R!dA`C"99F !rcu `h>Zi!{z9 @`}/ 3e#@xz+i/@'&+@`^`{:@'@Z9?T{:!GA;@@@@@ AB9 Rc1b`A@@@b@@ A@ Rc1!B9b`A@fcB 2C @y@9 9y65`R 2{.Z.g1@9?qT@9?qTG`B`AR7h7@RHGA@95@9a4a?qBa $DzT@9?q$IzT@8?q$IzT?qT@@qd6@ .8h RR Qi:i"R `$7ni1@9#RQ{D`&iC ! ';`5@#@9R$}T@#fr|T?@{@(#T;@* @9"4q'T @9@'4:if5^`@hzlz@Zl ZC_ !1e"5\C@!x:_Re@@}ҀRaRҌiTc"dc@"7g]b"7g@kTA_kTkxTA_kAxTAxW6F@9w5 @+g&E@[@L`TB@iH]RZ>^K @*f\Ei@!$E!@3@a@3@s*rg @*ygXbb@,RTRb@R !`-Z R"i~Pa*dkYT]*ekXTZf*@\GZҀRga __8!Q!?qhTbbA(7_8!Q!?q)T !._ 5d &ebb@ @!eG @"e "}eW @1xenaA_7_az)7@@@@@@AB9 Rc1A FaB68@ёRnR 7`*bB$EA8@b8@@|Sr T$qhT!2<q T!xvB: @@` 67 4rT:@Ru 5 `B!x807`B!x887`B!x8NB@yqT`B8@xNByt @r!T3ARRR 5@ RRZ RŐRR RRR Ru`5V*XvW@ FXR9.R 6@ FLR-"R6@ F@R!R 6@ F4R R6@ F(R 7RX6`P@6!2e@ RR?q@T@ zRRR@@@`7@@R @ 7@@Tt4uNB@y$qTz TbBA8@ *qT`5!2A807`B!2887`B!28qTvF@9?r!T`BwbZB @BFCB!TF!2`BZB9 q T/V*@XVqT`B8@2- Ru@5!R@ @!4!L ?qTART*< @9q Tqh T*qARAzT! R!đQ|@Rn@ @!4!L ?q@TARnSR;|@}2@@@@`BU8@ 5 ה FgRH=7R ǔ FWR8- 7R   FDR% *!|S!Ss {S[*cϔ@$E̎"RHRR*RR@929RR7a@`@U67<!}a@5**SA[BcC{ĨM7<!}a@}`@"RR Ra@d@" <6b<_qTd@!@@929" b_qT`@!" b_q T`@!H{B====#='=+=/= # w@')@B@@BҁT{C_{S[c# URJG Հ@9z` j`Ts@8sѢzb"j`T3@8sѢzb"jaT/RR R3A !ْRRjRR R RSAR[BcC#@{ŨRRԋ RԒ {SV@96@!@@y p6@86A9 F@ @B@ Ab@ D@! B B`$RTR]RR} Ra @?q T!Qa @9@6@s@`B@y`w7SA{¨_֠Ё;]`@9A9 F@ A @Ru,@B@  Rg@9@9AR RB`29GRR2R RR RRRRR ! SA{¨_  {S[6@<@A4@"A IRR RRλ Rҍ R΍SAR[B{è  {DGS[@%Ay|qTRC95d@fB@y  rT`@TqAz@T<q$q`q!* @zATPQqT0qhTcA(Ě#`7Cz@ T@y8Ba@@@xa@@G@ @@@! R!@RRA8 @ @`_TAՓRR@6@ @!<@A4@R Ry@RRRRZG RK RGRR щ R<RR_ Rw!RR@ Ro`@9qa@9d2`2!2a9`9cC#@SA[B{Ũ_s4Rc߄qaTt@KB@yw6@4`RUb@@@@y q`T`@92`9SA[B{Ũ_@@y@T@<q`T@5B@"@@@$E@8@"tZ_<qAT!6P@(6R! !`@cC#@ `@"@R@@8 A&@RJ@A@1B@aR@@R@@*R@@ c# B{CBBS@@"@@yARB2bByg@@@y $q@T@@y qT RߑA@!GB!@?y?@@BT{ASB_֔@4B@y  qT"Rf@ R@9`2`9k  {[c*W@97WSGk@3LT`_8qTSAkD5RRfG@?y?[BcC{Ǩ_o@4`@9RQj TSAkDsE}G@?y?[BcC{Ǩ_RSrkTa@95 5a@8!4N`z@9z4Cs; {*|HG4Rbo@`@94`!j@T86b @9s 4 Հb j@T86b@8b5SAkDsE4a@95a@84"`z@9:4k@*bo@5_qTo@4`@9RQjTSAkDsEo@A4QRjTx4 Ayhq`T|q B:B! R!SAkDsE4" B" B   FE{BS[c k s B C@@/#% @ aB+@}"8@u(@B2"8@@$@@`@@xe @97 U(@3|}Ӣ@C$@c@e@@Xa!@9a6!#@5@`@q|}A"Gah`@@7@#C9#4@@ @a,!T ?qGTBR7@# @B@yaB2ByAR@BC@yARB2BCy@G@`C9`\5@@`@4@ \@@(6C8 @B@@\@ ?7C@y q?T@\@87`@\@!87RR @8Ҵ@9q@ @UT'`@@!@9R @t@#@:#-VC'@>@(@MT @9`M7 @?qZT!Q @ \@2 \;L`@\@Tb@@B ,DdR (@bDr$ R" @!0L!c\@c*\@`@c(@(@`@cX@X@`@c$@$@ (@ $@`@c@@@`\@ `\@`\@*`\AO5`@$@_@ F@6@XF@! @?qINT!Q @Ba@ \@2 \`@\@!x7 @``_ a@ \@x6 @`a@ @ a@ \@2 \Xw@$@`@@xa@@"4jso @?qDT!Q @@@ `@q@@z#T@G@`@ @B@kLT@@B/@@B!IT{FSG[HcIkJsK_!@9R @R @9 7`@\@6x6@ A8 `@`P6!@9R @@#@\@`@4@\@@"(7AA)B!2)\މb@!!@Xb@Ab@A\@!2A\b@A\@!2A\@c@"\@a\@B!*a\+ @?q8T!Q @+@Ba@ \@2 \`@\@!6@X.@9-@Q`q|@ ,7T *!R!K !|@ Ja@ @`"\@`7\Ѐ'E@@@@( Xc@Ab\@!@Bxb\׈#@j@56@lE@!`@a@ \@x \`@@@,Tр@]@ F@'6@AC!@@?T R@#BRم'E @@!@!@!(B$@ B8FB@A @ @6@@!<@`4!@<! CR!BҦ j3@߳R!RR R[@8"@96|@T!QT@ $@a @@!xt@@hsa [h3@?qT.ӉC@y qT@G@#@WR@@#@@ @#A@ @! @@ F@'6r'@ R[bA)R!2Bb),A!$E!@!@!@!@!(@BBAa @A@b\@Bxb\@`@2`6 a@XA@ @! @X! !`Bҁ"@9!@BQRB|@!@R$GRR@@@ @@@!@RRR @@AB!DBC @B@ TVCBCcGA@c@BF!!C@@A@mTC" 4R +@.@9-@Q`q|@ T*!R!K !|@P@ @@@ \@2 \@@ \@2 \/@\@ 7@RK@B@@?q T!Q@BA @" @@B\@BDB@B*\`@ @r`@ );&R@@o`BJGR`BJ*"A@p@(@T" @97{R_@\@6R@R0ARR{R`2R{R@R" ʀ {SҁRSA@{è{ST G~B9@ @4SA{¨_ {CcGS[6<`@4AB@95@sb@@UB@y @aT@9`6RqTqDS`@9R2`9@`@@v@R R׌SA[B{è_ SA[B{è_RRh`@   {BBGS*@@4AB@95s@B9ғ@RÈ RSA@{è_ !gs@uB9SA@{è_  {A!GS!@34At@`@`R@Rd@ddB@9d@9 RR RR R9R@R&SA{¨_ R_  {S**D*&A"dAB@94kk`*qB!dA"9SA@{è_@?qT!Q_ֽ{S[c 5#!@9?qT 5CRt@9$RcHGbt"jTqaTbe@9qT Rt@9bt"jTbqTb @T`5CRyq`T"Á߶qT@CISA[BcC#@{Ũ_a@95! CR!8bҮb4 CRҢaCRBCRBҘ 7p *aK6j *5f {[UFSAR@@@S@sTbCRp@} RSA[B{è_MRSA[B{è_{@AD[USC!F@t@C @S@s@mTVs~}sBVC.Rr R`k R 8eAC!G @SA[B{è_bC{ CS aB[` @"@G#7@ @q@T@a@B@"A!BG@"@cҡT{ISJ[@_GAR҅ {SSsF[`@`TSB`D!@@?@TWVUCGRaD@@"fDC@@@@!@@!CaF@B@@ @d $@!@a T@ @`7ʂR<@B@qmTR@dF@@ AR]@A@m@D@${AS* B[c@ Ab@ D@!!R.QaR)k(TU*Bxw B@z7``@a@.qaT a@ `@ `@x2`SA[BcC{Ũ_U*#6 BB~}xwBjx8Rd@z7׋ @9 ccSA[BcC#@{Ũ_ށ?Ra@r" a@ `A7a@2`  ! !}!@#*!hb8b@`@jx8*"@  {!R\A!E {_  {!RPA!E {_  @C@ 5{@ D@?{e_{!'A!@D"@b{_ {_ _A!C!@A4_ւ {SSTs"E[^Aa@@!!||Άa!|h!@`@b SA[B{è_{bR`@@{_  {CcGS[UcXkYZ`@@7@W"Ȋ(6@@ T45AR7X7a @?q!T!Qa 5 4 @?q !T!Q SA[BcCkD{Ǩ_ @ŅRra@?kTR 8s9}@@!@B @Ba{@R @7@`@ŅR @!@97@|?T a@y?kT 9K @?qT!Q S`fA@94*΅kTsfA`@94R҂Rߊ @?qT!Q sESA[BcCkD{Ǩs@@7@@q4XRgsC@d@dLT @?qT!Q 55SA[BcCkD{Ǩ_@B@TA@ D@!S!a`B,@sB@b.@@@ AR@ @x2~6 CR! !9~4CR! !9~CR! !`9~6a @9?qaT@ @7@BB7@ @94?qTs9?TG@9?qTCaRL@@͂p|@fA<>SA[BcCkD{Ǩ644`Rb|'sE~*rkT-  {S[*a@ARYT*atARK` T*SA[B@{ĨSA[B@{Ĩ_ {bR *G~zr!T`@@ @{¨_@!@AaRԅ@@{R */~zr!T`@@ @{¨_@!@AR@@{R *  @@X7cRrj T"@B5!@ @{¨_"@b5!@cRrjT@ @R{¨"0@9_4qaT{S**SA{¨{CBSS[cBBdFd@svC/B@/@`@TE9!7/@?@ TOC/@cGB|/@R`V@9A'6^ {S[ @@y $qT RR`B@y#3RRBG` 3`ByRBdFb ^@3R:@A@@y!2A@y@5B@y!xBy@SA[BR{è2R Cѡ{!BS*#$@D@@y c`9R@ 7dQ@q<aRAzqAz*4@RR,R`R` RR RC#RR 5 @@" @ @ T@9a*9@9!`29!B@"@cҡT{BSC#@C_@ @@@ @ T@@ @`@@y @TqT5RqTA@ @@y qT@@95R6"@@y@ p65"@@@@y qZzAT@@976 @9qT R`RRRRqTB _qDYzT5 @dTRRU@@@ 7@? ) T@r T`P7 @7X6 @ @A6@@ @6R"rT@D@@y 5 @dT@96@ @!@ @n@@`@T @@9q 5мf5@U@@ 7@? ) T@rTP7@7X6 @ @6@@ @`6R@r!T@@y5R @@@@@@5R@@y _@q`RD@z@T @@`@T @@9q5@@y5R @@@@] @!@ ѡ{'BS*[*+@#g@@y`R dQ@q=Az臟q@z*(4@RRR`Rw  @z!T@4 RRɼ p@T@ RR R; RV @@CR#R9@? T @?`Tb@ @R`R`&v@9@9! **99!B@"@c!T{BSC[D+@_ R @ @RRl @@yBR!G@ 3`By@ HCs` 9@@y qTw@@ 7@? )T@r@T P7` @7X6 @ @6@@ @6Rܴr@!T@5` @dT`@96a@"@@y`@ Bp64qTB _qDYzT5 @dT R`RaF@RRR@ @k"@"@@@y qZzT@@9@76 @9qT@@(T @@9qT_@q`RD@z`T@@`c@`T5{S*[cks/!@@y <qT$qT 4qAT`@`:@@y" _ q:T!;p6@:@@y" _$q8T @ap7 , .RA 3aCyGa@8@` z@9 @@yZ qTC@yR k$qKzT5@96@ @@y q`T9_SRRRR R*R@@y9!P7 Һ@ @@yx @y@k@4@929* Rb*s R!RSA[BcCkDsE{Ȩa@9`@9a&7kw@ ;B@@xw,C@y 9;B!@!@!xw"@9!@_q@TaTq!T@@ @@y @AT!@ @ q@"T,qT! @A@xa"`@\@6@#?!T@@@ya)p6@@@@yp6 @@@yw7;<!C@y!x!Cyz;@?TЀC@y!RBG 3CyxBBRCy@9!x9cC@y $qKzT"R!R9_SRRRSY`@TTЀ b@/!` ={S@B@y qTSA{¨D@9R qT`@@@yw6@`@@y"w6@@@yC qaT@d @W6d@@9qaT@9qTqT@9qaTBw6@T$E@8@CtZqIT<qTb6P@7@@Ҿ@9!x9@9qT@9{@96@C@@yp6B@bB@@ybp7@"@@yp6!@"@@yB _8q`T{Ĩ_"@9Bx"9{Ĩ_S$R[@@yG 3@ybC@ZA# @5 VxcV7v6`@ `@ZA @ za(6!B!8@!6bB@y! G" 3bByaa qTa@ @9x 9SA[B@{Ĩ*AR `  { @96b@A@@y# raTap6B@ @{¨A@@y#  qTC@9/6o7`2`9!$E@@9#@x@9a8@ tZq)T<qTa6`P@7@@@@  { v@96`@9qT @{¨_`@@@y? @TRR̫w6@@  {[@96@?"@$@@yB_@T"@@yB _8qT{_p6!@"@9B2"9{_@@y} {S@9@6`RB @ 0q`TTq@T,qaT?Lq T?Tq T!R*bB@yGb 3bBya` SA{¨$q T`qT?LqTRr`T@9 6@@@y!?8qT@9A6U@@y qTa ЀR!`?@9qT@ @X6@0@9,QqT` 7BrT 5{@aC@y p7C@C@@yw7_T"RS3a 'a@!3SAP2TT!T[BRcC 5RkDsE{ƨS4t@B@yp6s@bB@yw7`9R7 OQ qhT"R̨! T,A2"XA:y qTT5*R?'q`TSA[BcCkDsE{ƨd`@@@yp6`@,QXrT*SAR[BcCkDsE{ƨߢ9@7 OQ q T ?_q%R$@zZcSSA[BRcCkDsE{ƨB@B`4  T"Ra 'a@!B@yp7*R?'qT@[$E@@@@(h[BRcCRkDsE{ƨA@a" @6!@ @!<@a4@ h !$E!@!$@c**SA[BcCkDsE{ƨ$"RRFSB@B`**`@@y}   {  @@2 @{¨: {[U|@*S**R9VR@ 0F@`u85!@0F!Gzb"3~@y99@!xeAs8s~@5@!U@w9b:@R`"@Bxb:o`"@q`a"Y>RF@ @7@@RF@!@!xss!@!@"@6!@*A ?aT*SA[B{è_ߩ|@{cS[*ks*G z"@AI9!xA 9! F @6&E@$@` 5aB@yBRGA 3aBy(C&E` B|9{>:@s`:@ @`"@ $@š`&@ P@`RZ:@aRB2:@G@dB_1`Tb& @@B9A"@b`B@y ,qT687SA R[BcCkDsE{ƨ @@@@a&@R@!@!`_TA @ R!*A @@6?6'!AC!@@?TaB@ybRGA 3aBy,C@1Tc& $@`& т{CBBcS*[BA@v8@I!G @`I97RF@ + @7@@RF @!@!xs!@!@"@6!@a ?saT+@B@kl T4B:@2:&w@9`6tB R1RL@@ RʨTB@y p6@R1R<`@@ R@ RqRF@ @!7@@RF ա@!@!xs!@!@"@6! @a ?saT@!B@"@cT{ASB[CcD_*s|@|@Rȥr@ RzyҤ+L{S[*ARysa@9?qT?q T?Tq!T? q T?$qATa ! 5@@ @A6@ @!<@a4@`@?PqTs s" @5` ck+a ! *R4SA[B{ƨ_a ! 5ck+@FbC!\@@W@x74B@k,T#!R` Ӝ @?rT!4!L ?q@TAR\`RD@_Tڝ@9'E`B6@ TyCڎD7@@ @"@@ #  9D@ @ZGx@ @"@֎DD@B@@C"@wFC@CsC@@{B @` `D@"@a a`DxDC @*@_@@#"@A@`@B@a@C@"@B @ @@  @!@@ `VSAC[B@9cCRkD+@{ƨ_RSA[B{ƨ_a !` B*R5B@a R! B @@p4W}ҁ@aD@\@ x7 @R?SA[B{ƨ_րB@a R!` qEݝa ! *Ra5A٠f}R}:*&&ARRѦ@@ 7@ H@9w &@AR@@y$c2@y4`  {S[c*k2R+@@S@@5`@@\@7`Rr TB 2':RRRRخ @  @@@ @6@"@!<@?qTA@ @!@?q)TXF@!+@?1 TaT +@a@776 b@CA\@!2A\a@8a@ $uRDrT5SA[BcCkD{ƨ_a@ \@2 \\SA[BcCkD{ƨ_րa@lG@ A@`` ңRRRs+"\@B2"\f{@"`#+@a @?qT!QRa @!@!7RK+@` A A@+@Rk  {S`3RSA@{è${S[*`*SA[B@{Ĩ   {SSAR{¨{[7&ESck*+@@`@@s*&EB`@`T@#@R`@ @z@#BuG@@@&E@$?B:@x:6AƧ @ 7@Ri2@9,q`TBB@ `$&2`$7@@ @ Aa@ \@2 \pSA[BcCkD+@{Ǩ_BB$Cц{ƀBc  GS[ k s b@@7+@C94;RR3U5@ @!,!T ?q`9TBR% 55@@t]v:5B$E!ABB@!@_뀂T@@ T*R<R2@9$qaT#R#@`!3RYRt?4RR R 52@9$qT"@##Ru"C@yARB2"CyϢ'@B@yARB2ByǢ#@BC@yARB2BCy43@ARza ! ٣`5a R!;a R!`6f53+Җ@ $qfTX6 @`3@94q@TS+@B@@\@@n7`B@y q rT@B@@\@ 27`@\@070RR`@`tU@95#@׃@/P6Y!@+@@2̜@X6G!$E@!@"$@3@1@T $R@B@S`RraT`R)rT @`T2@9?,qT0@9?,qTBR4"@A `R! ğFB@@$E@ @ 3@@$ @@?qT!Q;`@@@+@ctSV/@B@v>@Z_'qqTX7R 0r_jT_ qDAzT_ qT@ @7 @d@ @@Rr@ B72 A@ @96@"@B9!<@?q TA@?a84"G@9!'6@977`&@!6OR\@@?qiT!Q4Gӹ  @@y? @AT_{ b@aB@yG!XB @baBy@` @{¨_  {cW[6'ESkaB@y (qT? @T`@(T `@9`7BGB@bBC95$ RtqbRCzBzTt2b9`@ qHT c#cX`xe#` 9 !R ՟ TaB@ys@aw6s!TSA[BcCkD{Ũ_<qhT`qITdQ?q(T c&cXaxa##` pqT#c ŚeL@mero cU5@97@929@8B@@xb,@9C@y! r T?qTARU !@"@@y_ @T!@"@@yp6!@!@R9"@@yB _qT_,qT @? @@9@9!x9@9R!29 @`B8B!RB@B@Cxcb@9c@!@ @@y r@TqT @ @"_$qTA_6@0@9?4qT@!\@a77R B@@RBG"3@yBxeDybB@ytB2bByB@y!xBySA@{è_RRRR {S[*y@@y>@ւG"3@yzcaB@y? @!TB@y!2ByB@y!2By`@wSA[B@{Ĩ_@@yR!X@y@9FyaBC@@ySc2C@yabB@yB2bBy  @@yx @yRR>{S@! ?$qT ?q AzT@?8qAT@@y!p7 !$ECB#@9BBx92B8@_x 9SA{è_?@@@yp6@sa@?Ta@!(?IT@?@R R? R R {S[**q T{@@y>@"G"3@yBxc29@TSaB@yt!2aBy@9@!29aB@y!xaBy@ !0F!@!w8~@5SA!@B0FG"3cByB@xa` b@v8 5SA!@BXA!G"3@yBxv!xdDy 7B8@6aB@!2aB7&E@8@ X6 7`B@p2`B@B8@70F@`t8@ 5SA!@BXA"3!G@yXxw!xdDyX7x70F@`t8@5SA!@!G"3`By xb` a@9*a94`B@y2`By!0F!@a w8 5!@a"3@y2x>axy9>H 29B@y!2ByB@yp7!xBy@"@@yp7!0F!@!s8s~@a 5!@#XA"3BG@yv]xxwBxe!S99X7x70F@`t8@5SA!XWC`@@y hqT`@976@@9qT`@ ?@q`R$@z!T@@ 0 !@hv853@a{s ?@AR2Ru@! ?kTZA3xs7s6@ @@@@ZA @ za(6!B!8@A6D@@y! cG$ 3D@yaaAqTA@ @9x 9 SA[BcCkDsE{Ǩ_a@B@yxBy`B@yx`ByAR2RHRR@y77@36*AR7[7@@ @! kTZA5xuu7u6@@@ZA @ za(6!B!8@A6B@y! BG# 3ByAa qT@ @9x 9SA[BcC{Ǩ*AR)- !@ PB@ PF@" PJ@B PN@b PR@ PV@ PZ@ P^@ Pb@ Pf@" Pj@B Pn@b Pr@ Pv@ Pz@ P~@ P@ P@" P@B P@b P@ P@ P@ P@ P@ P@" P@B P@b P@ P@ P@ P@ P@ P@" P@B P@b P@ P@ P@ P@ P@ P@" P@B P@b P@ P@ P@ P@ PA PA" P AB PAb PA PA PA PA P"A P&A" P*AB P.Ab P2A P6A P:A P>A PBA PFA" PJAB PNAb PRA PVA PZA P^A PbA PfA" PjAB PnAb PrA PvA PzA P~A PA PA" PAB PAb PA PA PA PA PA PA" PAB PAb PA PA PA PA PA PA" PAB PAb PA PA PA PA PA PA" PAB PAb PA PA PA PA PB PB" P BB PBb PB PB PB PB P"B P&B" P*BB P.Bb P2B P6B P:B P>B PBB PFB" PJBB PNBb PRB PVB PZB P^B PbB PfB" PjBB PnBb PrB PvB PzB P~B PB PB" PBB PBb PB PB PB PB PB PB" PBB PBb PB PB PB PB PB PB" PBB PBb PB PB PB PB PB PB" PBB PBb PB PB PB PB PC PC" P CB PCb PC PC PC PC P"C P&C" P*CB P.Cb P2C P6C P:C P>C PBC PFC" PJCB PNCb PRC PVC PZC P^C PbC PfC" PjCB PnCb PrC PvC PzC P~C PC PC" PCB PCb PC PC PC PC PC PC" PCB PCb PC PC PC PC PC PC" PCB PCb PC PC PC PC PC PC" PCB PCb PC PC PC PC PD PD" P DB PDb PD PD PD PD P"D! P&D"! P*DB! P.Db! P2D! P6D! P:D! P>D! PBD" PFD"" PJDB" PNDb" PRD" PVD" PZD" P^D" PbD# PfD"# PjDB# PnDb# PrD# PvD# PzD# P~D# PD$ PD"$ PDB$ PDb$ PD$ PD$ PD$ PD$ PD% PD"% PDB% PDb% PD% PD% PD% PD% PD& PD"& PDB& PDb& PD& PD& PD& PD& PD' PD"' PDB' PDb' PD' PD' PD' PD' PE( PE"( P EB( PEb( PE( PE( PE( PE( P"E) P&E") P*EB) P.Eb) P2E) P6E) P:E) P>E) PBE* PFE"* PJEB* PNEb* PRE* PVE* PZE* P^E* PbE+ PfE"+ PjEB+ PnEb+ PrE+ PvE+ PzE+ P~E+ PE, PE", PEB, PEb, PE, PE, PE, PE, PE- PE"- PEB- PEb- PE- PE- PE- PE- PE. PE". PEB. PEb. PE. PE. PE. PE. PE/ PE"/ PEB/ PEb/ PE/ PE/ PE/ PE/ PF0 PF"0 P FB0 PFb0 PF0 PF0 PF0 PF0 P"F1 P&F"1 P*FB1 P.Fb1 P2F1 P6F1 P:F1 P>F1 PBF2 PFF"2 PJFB2 PNFb2 PRF2 PVF2 PZF2 P^F2 PbF3 PfF"3 PjFB3 PnFb3 PrF3 PvF3 PzF3 P~F3 PF4 PF"4 PFB4 PFb4 PF4 PF4 PF4 PF4 PF5 PF"5 PFB5 PFb5 PF5 PF5 PF5 PF5 PF6 PF"6 PFB6 PFb6 PF6 PF6 PF6 PF6 PF7 PF"7 PFB7 PFb7 PF7 PF7 PF7 PF7 PG8 PG"8 P GB8 PGb8 PG8 PG8 PG8 PG8 P"G9 P&G"9 P*GB9  A@_   @@6A!@6?T!!,Ca_@@6A!@6!"A !A"BCb_ { S`Bv9@5 C@,G R`B69 @{¨_     !@9!BC29!@7!@!(@"@B$@B@B@B@@X`@9C29b6 @@5_? qT?q-T!Q"D*B _T_?qlT?qT!Q+ 2 ?q$0_!Q Ҁ?Lq$0__aTR_`@@y 8q_ R_ @ qT(TqTTxq TR_ qT0q`Tq!T?q_qTR R?qT?q%!"R'Х8B$!F@"9(G @? Tw2@xd`@9!4{@97 @_1T$@@1Tkᗟk㇟_k"*! !5@ @?T@xd @94@96e@ @?T{_֠@ @?T_kTcKkHTR_kTN_@! ?q@THT!5@96@@! ?qT_?$qT!! ?qhT@9a7_@A@! ?(q T?4qT4@TA@@yap6B@"@@96@ "@@y_ @bp6!@a__ {S[@!_x"QS<@@ykIT*zb @x"SA[B{Ĩ_!Q7<!<}B@yRK. B|}x By@ Q<By<@  . {! !G  {S@@y@9! ?Tq T4@R! ?q T?q T"7?PqTT!$Q?HqT 3R$7*@@@yA p6@B@y*Ap6@qq?q@z`T3R*SA{¨_b6@@9?0q T*?<qT*SA{¨_3R?(qT*@#@a@d@9! *7c@@yRc $qd,QdEz<`AzhTSRCRB_qaT9 6*R?kT .kUҔ@@y} {S@@6`*@ @?q`T? rT PC@?TSA{¨_SA{¨_AR2 @@CQ*CxcDL!!QT*?1!TAX`|}Ӂ5@6@@y*RRB _$qqDKza_`q@zT@@@@y qT@@,9_# @`B@#9  {S2 [5Va@! ?qT?qT?q`TT?|qT?qSA[B{è_?qT?Xq)T""š_AT_T?qTRSA[B{è_ !! ?q R$0!x5`@96s@!"*#B _!T_KT`@9E R`@@rT!b@!@ __*#"CR{cdFBBc@D@*qTLT4q!T C@y"! BC!dFBCy@"@@BaT*{V@_ q T /^#" #cGKBC39dFB@yc@y`?ByM{!!DS4[5C"@GD$a@@S@@s@V F@TGV3C@3SA[B@{Ĩ_֔CS3s"ѓSA[B@{Ĩ_"@C"{CBS@a@B B(Q_qT`@9@6s@`B@y`p6s@S B@@BҡT{BSCC_3C@ @#?RRRR+@M#@#{!!DS3[6cG"@CE%c@B@@W@b"4@BC  @ 7 tC@@9raT D@@(@7B@ R#@9 q!T@@BT F@_ ,T_TuGB}Ӂ @~@@7@@!@c CSA[B@{Ĩ_ F@mT@~@~}@sGt@z5Cc@cSA[B@{Ĩ_Cc7c SA[B@{Ĩ_T@@B"M 0\@"\@bx7 @_֞ "'}(BF%HC@AAT@dcÓA"ʁc$b!ATq TT qT qT@9@@9 @9ʃdA"cÓ`$ʣʃ!!@`A"cÓc bc!`A"cÓc bc!A`"baÓ _qTqT@9@9@9 @9`qTqT@9 @9`"DF @?`hT?`qTBF$VRDr(}iED)J@G<ʄ@ K@KB4JD @ EDKJ?(Tdҟ !f6ghh0fK#@` T `TTBR" KchBJBcJ  c A !8a J0! bJ l! K!(BKJSA@{è  {S@c8@#9Wc9;B[Rs@c@c rd BzdCzTqTq Tq T$qjT @a@@xa@96s@ յ5SA[BcC#@{Ũ_t@4[BcC#@SA{Ũ_`@95 B@T!@ D@! ҟRU@ \@2 \SA[BcC#@{Ũ_G@?R$Ra"@@yC B <qD@zdDzT!@_ {!!BS4@@ @ SA{è[5@U \@` X6@ @t>JSB@yQ_kTC<? "k)T!Kd<@! ,# !A c ?Td@@`R@@y2@y(@saJ@y?kT?qHTvF@yqTzS>|}!҅DyHy@`aJ@y!K`!|}#CD Cyh!x`J@yK`Jy@@y2@ySA[B{è_[BR!Eb 2Bҵ"@@ \@2 \`@y㿀BRJy aRy*Vy`ya@@ybP7`6_{ C5Rb 3$_xL$ @"@y`@T` @{¨_֙` @s@ {S4bF@5@R| A` @~ s@zSA@{èSA@{è_{ @j s@f @{¨_ {   @1a@`@9x`9 @{¨_ { ! 2 f4 !@2a5 @{¨_ !`2Y 4`@9|qaT`@94 !2O4 !2J@4 !2E4 2| @{¨u{[6Gc@wAyS_xrTX7 a@9HGxaxP@q Tjq T 4`AyBR|qT qBlSc@QG@!Ay?|qTSA[BcC{Ũ_? Tb@9B87 HGb@Pӟ Tu@9~q!TjqTc@A@a@yR"R?k!T"RTB@%G@!Ay?|qT !B!@"@A\@?6!2A\SA[BcC{Ũ_c@A@D"R Tu@9`AyRk T|q 4 44qT* 6*NG@k87@@xT *`5 QZR_g$@8RB Q 5MGkD@tD@џhTџTd @9qTDd3@HGxd@P_kD#RRR@U B44=@M#RRGR#@F *4k __  @@y@w7_{S*@@y>@!G"3@y!xcsR9s@aB@yw7!x`aBySA@{è_A@_ TA@@yB@Aw7A@9a6A@!$@d$@@yp6!@A bA@A@97B_!T@@_B@  !R(  CBrR{CS R[v R#bR @@ywb:! ?q`Ta @! q7!6 *!**RT{ASB[C#@C_@@@P7rTa @! q`9!8  :U@f@R @B@La @!  {cBSck*`@җ@ @@y $qT<q TR ZC1sRr[RRaB@y qT`@9 q T|@R@ _kT?qTrTu$ @zAT5aB@yap6s@[DsGB@@BT{BSCcEkF_@Ra@@RR@@ @@9@E @a@6B@@@B<@B4@"R ;x q@ TCBR9 @{@? T@Rc!Z @?qT!Q b44!@ @@y $qT R! @8B@G@8 R!:RRR@0@9?$qAT@@u@! @!44a@PK`@9x`9yRe@ @!@ @b :[s  Հ@9!29_{q{@PF{S[7$E4aB4@@"D@!!ҁB0@ B@R$0r@@@ @ `7@B2Rb `B@b@ D@!B!ҁ0@B@R2r``@`@`@ `@ b7c@B2bRb  e!RSA[B@{Ĩ{U@Qb@ҀRIB!ҁ0@` ҀR;{k@A@kD {Ȩ!'kT~@*5{vklT3ts;8 *!<R2R(TڂR!|S! R#! q!o@8BBK;@T !=)T !=Rk@8BBK !`=@{v!T !>kTSA[BcCkDsE{Ȩ_@ RoRk !@> !=ss~SaRR#! q!ڂR!|S! R#! q!oTRkiR keRk|S RQ?$1T SA[BcCsE4{ST|@*"@R$@9b~B2 s*99SA{è_@{S[ck* @ X6 @" @C4qT`P6@ b$aZ@4qT`R rTSA[BcCkD{ƨ_P6@ @Z@a4q@TA`RrT@`TR@fRHG a@9a"jTA8sT9R@u˒@RHG Ձ@9da$j@TA8!T_9@@Z J` 66;@4 ՄW+@ $q@TA P7! * 5 !>bҦ  !@? +@@ !?Bt] !?CR"w]!aSA!<[B`RcCkD{ƨ.bW6"@4@@\@Z@ h7a@\@o6@ @q Ҕb$n_T5W @@9_qT@!" 2a@!*A\@@?s!A!@" @6!@ @`!<@a 5 CR!B@X6 @@\@x6@RRA B$@9@ !>b$+@CR !? !?CRҡ CR!Қ b!> j#R|`5@@BR1@} 0@9B4Q_q(T!@"\@6 @0@9?,q__  ` @X7@"\@B6 @_@__{RS4= @  @?5@@` @a7@7!$E!@!@ @@!(c@BAa c@A@b\@Bxb\ @A@!ASA@{è_ARR @x @"@!<@?qTA@ @!@?qTXF@!?1kT@TA@!{ B! ea @{¨_ {!B @9 8@S`907`@  qHTa@ @@y@p6"@ @ 4qT @9@7`B@yA R |qAz@Ttq RAzTxq! RAzTqTq BB B R! @{¨_@@ 4qT@@97 B  B@ B`  @A@@y! ? q@T_A@9'7A@!@9a/7D@yR!*Dy_{S@@y@9c t@`qaT`9!B!8@!*`9B@y! ?qTSA{è_[@@a X6"R?j T$,q T`6@9!(6a@! ?$q T?`q T?<q TDqT@9bR!|!D<qTbR$qT`qR RB0@9$qT`@9(7 @0@94qT ЀB@yR!G@ 3By@!@ @?qT!Q @ 9@xSA[B{è_"$_ @qT$Q_qTSA[B{è_(7@9@RR!|!D!*RRRAR B @ B  B __  !8BB!@@ @xe @C @(@@$@@@@4*"xe@@977@@@_ր@$@@@@xe_ @q-TQ|}# !L&T#@! уg@9F@9kTF@g@T {?lr T*@@y! ?DqT@97@9A6@ @ qT,q TqT{_!@ @`_6"@A0@9?4qT76B@A\@?rT?y@T@@ @ @ @C$qTX6@A0@9?4qaT~D@\@a$!\A4@x7@@C@c5B@6"@9B2"9{ @={S*[ @? rTsBSA[B@{Ĩ_֡ R+`@@L@9*SA[B@{Ĩ_!R{CB@(B@@BҁT{A_{BS[*? TRҢ R@` RL@97t^ T @ aN@9!2aN9!x!*!2aN9SA[B@{Ĩ_aN@9`@@?qT!Q`N@9t^x`N9AT_TRҢ R!@!` RL@97t^A @? rTSA R[B@{ĨJ#R @#D@A @T6D@C@ @!2A @c8A @#R!*A _RR#r# kTD@AcBTC@e_8qT {[SvD3@3RRRҮ SA[B{Ĩ_B@b@ D@!!ҁB0@B#@R2ra?a@?a@?a@" a@ `a7b@2vDaA  @`@ҀR7 @{CBBS*[c@A@l[vD @RRRK@ @!4!L ?qTARr4`@j@TqT(TqT qaT` @iD@@RRR(  k^ @A @!,!T ?qTBR@:xh98`b@ EA2a@ RRR@ @!,!T ?q TBRo@:n h98a@` 2` @vDRRR@@Rc`RHkE5 !B@"@cA T{ASB[CcD_t5 s.s""q@TBqaT`@q T(TqT qATqiTDtC@?TSAcC#@[B{Ũ_@@97B@y9r! 9;ST?q`TB@y@! ?,qT@?q T!Q"@BXB!FBA T&@$E@?aT@! ?qT?qIT"`$š6@ ?qHT?xqHT`@96:`B@ys@p7TSA!LA!@?qT@@"@&@R @@T@@aT ՠ@?qT@`y"_]aRV@@@?|qT-s@a@! {[SJ@yF@y  Ta@ysTaR@y" _q T_7`"k@aT @ @SA[B{è_@@)TѠ{S@! ?|q #T T?tqT?lq(T?qT`@ `@ TSA{è_?q( T?qh T?q(T?xqhT?qTT!! ?qTa?qT`@9'6`B@y HQ<qiT?qT T!d! ?qiT?qT$@`B@6.&`@@?qT!Q`@mT !SA{è_ց5?qT!! ?qT@9R?jTaB@y`@! !Q!<?qhTa@907?(qT?pqaT[@@@TiT,` TT0T4T4R"|@TT@aT 506`@ l[B| `T~TTTR@"ҳ4R$T(T@"ȳ` TR@T"@?qT[@@@u@V T;[BK?|qHT@@?q T!Q?|qAT`@@@?q T!Q5?qT@9 '6!! ?hqITI AT|@TT@aT@z" @?qI T!Q4G @T)4RT" V77GR@g`.@C2|TT`@T77G~;~;~;~;~;~;~;%~;~;;;;\; ; (;0;8;@;*H;P;X;`;%h;p;x;T;;;a;;;;;x;;;;:;;J;; ;Ȟ;`;1;;;s ;A(;0;s8;@;H;yP;jX;k`;h;8p;x;;X;b;;@;5;;J;;rȀ;dЀ;؀;';V;;;e;;;;: ;(;0;18;@;H;OP;X;v`; h; p; x;;;l;;;;n;v;N;/ȁ;=Ё;؁;>;; ;o;q;V;A;L; ;(;0;8;y@;H;P;^X;`;h;p;x;f;8;N;;$;;;;;&Ȃ;Ђ;5؂;;;;;;;;,; ;(;j0;8;[@;H;PP;"X;`;h;p;x; ;;;;;;;;f;ȃ; Ѓ;؃;;;;A;;;;t;n ; (; 0;a8;i@;H;!P;"X;`;h;p;x;#;;;;';$;O;%;&;;eȄ;Є;b؄;2;;';(;);;;*; ;(;0;8;+@;H;6P;X;`;h;p;ix;,;-;.;;;/;!;Q;C;ȅ;Ѕ;؅;0;;;;;;1;; ;(;0;8;"@;7H;-P;2X;^`;h;\p;x;;;;~;;F;|;; ;1Ȇ;І;؆;;;;4;5;#;;!; ;7(; 0;88;@;yH;P;0X;`;h;9p;:x;;;;o;<;;;D;=;;>ȇ;Ї;؇;?;@;F; ;;;;l; ;(;90;8;A@;CH;\P;X;`;h;p;Bx;C;;D;;;E;;F;;GȈ;Ј;Y؈;;H;;I;;;J;;K ;(;/0;8;@;H;LP;X;`;Mh; p;Nx;~;1;;O;;P;a;]; ;Qȉ;mЉ;u؉;R;;S;p;T;;U;;V ;(;0;8;@;H;P;,X;X`;h;bp;x;;o;Y;;Z;l;[;G;;\Ȋ;Њ;؊;;>;];;;;;?;M ;^(;%0;_8;@;`H;aP;X;`;h;:p;x;;;?;b;^;d;L;J;S;ȋ;_Ћ;؋;;V;e;;f;g;;;h ;j(;0;8;k@;lH;9P;X;(`;h;.p;x;;;m;X;;j;(;;;zȌ;Ќ;،;n;; ;;;r;K;o; ;(;p0;e8; @;(H;qP;rX;s`;h;#p;x;t; ;;u;;v;w;);&;ȍ;Ѝ;*؍;;x;;;;y;z;{; ;|(;20;8;@;LH;P;\X;`;_h;}p;x;;7;;~;;;F;;;4Ȏ;HЎ;؎;;z;%;;};;`;;& ;(;W0;8;B@;H; P;X;n`;h;p;x;*;;;;;;[;a;;bȏ;UЏ;k؏;; ;;H;;;;; ;(;0;88;@;H;P;X;`;h;p;x;;;;;;3;;+;;Ȑ;А;fؐ;;;@;t;;;;[; ;(;W0;q8;@;"H;P;X;`;h;_p;x;;w; ;;a;K;7;;G;ȑ;)Б;ؑ;;;;E;;;; ;Y ;(;0;8;@;H;P;X;"`;h;Tp;x;;M;;;;8;;m;W;Ȓ;В;ؒ;;;;;;;;%;7 ;l(;/0;*8;@;H;NP;X;`;h;p;x;;;;;h;;A;f;x;gȓ;JГ;ؓ;Z;;;;;{;;;m ;(;0;8;@;H;OP;X;`;h;bp;x;g;;;;9;";;w;;0Ȕ;Д;ؔ;;c;;;S;;;; ;(;0;8;}@;H;!P;X;y`;h;Dp;x;;;i;;;/;;;s;fȕ;iЕ;ؕ;;;;;2;;g;; ;~(;Z0;8;@;KH;P;X;`;h;p;Xx;;3;;;;<;';`;;Ȗ;Ж;4ؖ;;;~;;;;;; ;(;0;8;@;H;P;X;`;dh;%p;x;);";;;;;;;; ȗ;@З;ؗ;;;;;j;R;;k; ;(;0;8;@;H;XP;X;`;h;p;x;;;;;;;;\;;Ș;И;ؘ;;;;;;;;; ;(;0;8;U@;H;P;X;`;h; p;x;;;;`;;Y;;h;;ș;Й;jؙ;/;;;B;p;W;;; ;(;0;8;@;H;P;X;`;h;p;Tx;;;;5;;;+;;;;Ț;К;ؚ;;;;;;;;; ;(;0;8;@;H;tP;{X;v`;h;p;x;;@;O;;;;;;;;6ț;CЛ;؛;;;&;;;;;E;;< ;d(;0;8;@;H;P;%X;`;/h;p;ux;;;;;c;;;;;Ȝ;М;؜;A;!;Q;;;,;;; ;I(;T0;8;@;"H;P;X;`;h;p;x;;};;;;;m;;;ȝ;Н;؝;;h;;;;Y;U;; ;(;:0;L8;@;H;P; {7{_{PG?    P@ P@" P @B P@b P@ P@ P@ P@ P"@ P&@" P*@B P.@b P2@ P6@ P:@ P>@ PB@ PF@" PJ@B PN@b PR@ PV@ PZ@ P^@ Pb@ Pf@" Pj@B Pn@b Pr@ Pv@ Pz@ P~@ P@ P@" P@B P@b P@ P@ P@ P@ P@ P@" P@B P@b P@ P@ P@ P@ P@ P@" P@B P@b P@ P@ P@ P@ P@ P@" P@B P@b P@ P@ P@ P@ PA PA" P AB PAb PA PA PA PA P"A P&A" P*AB P.Ab P2A P6A P:A P>A PBA PFA" PJAB PNAb PRA PVA PZA P^A PbA PfA" PjAB PnAb PrA PvA PzA P~A PA PA" PAB PAb PA PA PA PA PA PA" PAB PAb PA PA PA PA PA PA" PAB PAb PA PA PA PA PA PA" PAB PAb PA PA PA PA PB PB" P BB PBb PB PB PB PB P"B P&B" P*BB P.Bb P2B P6B P:B P>B PBB PFB" PJBB PNBb PRB PVB PZB P^B PbB PfB" PjBB PnBb PrB PvB PzB P~B PB PB" PBB PBb PB PB PB PB PB PB" PBB PBb PB PB PB PB PB PB" PBB PBb PB PB PB PB PB PB" PBB PBb PB PB PB PB PC PC" P CB PCb PC PC PC PC P"C P&C" P*CB P.Cb P2C P6C P:C P>C PBC PFC" PJCB PNCb PRC PVC PZC P^C PbC PfC" PjCB PnCb PrC PvC PzC P~C PC PC" PCB PCb PC PC PC PC PC PC" PCB PCb PC PC PC PC PC PC" PCB PCb PC PC PC PC PC PC" PCB PCb PC PC PC PC PD PD" P DB PDb PD PD PD PD P"D! P&D"! P*DB! P.Db! P2D! P6D! P:D! P>D! PBD" PFD"" PJDB" PNDb" PRD" PVD" PZD" P^D" PbD# PfD"# PjDB# PnDb# PrD# PvD# PzD# P~D# PD$ PD"$ PDB$ PDb$ PD$ PD$ PD$ PD$ PD% PD"% PDB% PDb% PD% PD% PD% PD% PD& PD"& PDB& PDb& PD& PD& PD& PD& PD' PD"' PDB' PDb' PD' PD' PD' PD' PE( PE"( P EB( PEb( PE( PE( PE( PE( P"E) P&E") P*EB) P.Eb) P2E) P6E) P:E) P>E) PBE* PFE"* PJEB* PNEb* PRE* PVE* PZE* P^E* PbE+ PfE"+ PjEB+ PnEb+ PrE+ PvE+ PzE+ P~E+ PE, PE", PEB, PEb, PE, PE, PE, PE, PE- PE"- PEB- PEb- PE- PE- PE- PE- PE. PE". PEB. PEb. PE. PE. PE. PE. PE/ PE"/ PEB/ PEb/ PE/ PE/ PE/ PE/ PF0 PF"0 P FB0 PFb0 PF0 PF0 PF0 PF0 P"F1 P&F"1 P*FB1 P.Fb1 P2F1 P6F1 P:F1 P>F1 PBF2 PFF"2 PJFB2 PNFb2 PRF2 PVF2 PZF2 P^F2 PbF3 PfF"3 PjFB3 PnFb3 PrF3 PvF3 PzF3 P~F3 PF4 PF"4 PFB4 PFb4 PF4 PF4 PF4 PF4 PF5 PF"5 PFB5 PFb5 PF5 PF5 PF5 PF5 PF6 PF"6 PFB6 PFb6 PF6 PF6 PF6 PF6 PF7 PF"7 PFB7 PFb7 PF7 PF7 PF7 PF7 PG8 PG"8 P GB8 PGb8 PG8 PG8 PG8 PG8 P"G9 P&G"9 P*GB9 P.Gb9 P2G9 P6G9 P:G9 P>G9 PBG: PFG": PJGB: PNGb: PRG: PVG: PZG: P^G: PbG; PfG"; PjGB; PnGb; PrG; PvG; PzG; P~G; PG< PG"< PGB< PGb< PG< PG< PG< PG< PG= PG"= PGB= PGb= PG= PG= PG= PG= PG> PG"> PGB> PGb> PG> PG> PG> PG> PG? PG"? PGB? PGb? PG? PG? PG? PG? P@ P@" P @B P@b P@ P@ P@ P@ P"@ P&@" P*@B $Y;$Y;$Y;$Y;$Y; ;$Y(;$Y0;$Y8;$Y@;$YH;D/P;D/X;D/`;D/h;$Yp;$Yx;$Y;$Y;$Y;$Y;$Y;$Y;$Y;$Y;$Y;dȥ;$YХ;$Yإ;$Y;$Y;$Y;D/;f;$Y;$Y;$Y;$Y ;$Y(;$Y0;$Y8;$Y@;$YH;$YP;BX;D/`;D/h;D/p;D/x;D/;D/;D/;D/;D/;D/;0C;0C;K;D/Ȧ;D/Ц;$Yئ;;;;D/;D/;D/;D/;K;E ;E(;D0;D/8;D/@;D/H;D/P;D/X;D/`;D/h;D/p;D/x;D/;D/;D/;D/;D/;D/;D/;-;-;-ȧ;-Ч;-ا;-;-;-;-;-;-;-;-;- ;-(;-0;-8;-@;-H;-P;-X;-`;-h;-p;-x;-;-;-;-;D;D/;D/;D/;D/;D/Ȩ;D/Ш;D/ب;D/;D/;D/;D/;D/;D/;D/;D/;D/ ;D/(;$Y0;$Y8;D/@;@;H;@;P;D/X;$Y`;D/h;D/p;D/x;D/;$Y;$Y;D/;D/;D/;D/;D/;D/;D/ȩ;D/Щ;D/ة;D/;D/;D/;D/;D/;D/;S;D/;^ ;((;$Y0;(8;$Y@;D/H;D/P;$YX;D/`;D/h;$Yp;D/x;D/;$Y;D/;D/;$Y;D/;D/;D/;D/;$YȪ;$YЪ;$Yت;$Y;D/;D/;$Y;$Y;$Y;D/;D/;$Y ;$Y(;$Y0;$Y8;D/@;0AH;$YP;$YX;$Y`;$Yh;$Yp;D/x;$Y;$Y;$Y;$Y;@O;$Y;$Y;$Y;$Y;`jȫ;$YЫ;$Yث;+;$Y;$Y;$Y;$Y;$Y;$Y;$Y;$Y ;$Y(;$Y0;$Y8;$Y@;$YH;$YP;<X;$Y`;$Yh; ap;bx; ;b;b;p;T`;a;c;4 ;; dȬ;pЬ;ج;;` ; ;P ; ;P ; ;d ; ;p (; 0;8;@;0H;PP;bX;`; h;p;x;0;; ; ;f;Ԙ; ;P ; ;P ȭ;Э;t ح;0 ;P ;~;~;p;p;` ;` ;` ;` (;` 0; 8;T @;p H;P; X;p`;p h; p;$x;d ;;l;m;c;` ; ; ;T; Ȯ;TЮ; خ;T;@ ;T;};T;p ;T; ;T ; (; 0; 8; @; H;T P; X; `; h; p; x;P;P; ;;; ;;; ; ȯ; Я;5د;;;;";#;;;;% ;+(;+0;)8;$/@;3H;:P;>X;PA`;PAh;Gp;@x;H;@K;N;P;P;\; i;ps; ;PȰ;Pа;eذ;P;@;;;;;;; ;Б(;0; 8;t@;0H;PP;`X;`;h;p;x;;p;;;p;`;;0;0;Pȱ;б;ر;;0;;;;;D;;P ;(;U0; 8;@;H;djP;UX; `;h;p;0x;;4;;P;;p;0;0;b;`Ȳ;в;lز;;d;b;;0;;;0/; ;(; 0;8;@; H;P;X;d`;4h;p;02x;$4;5;8;;;0:;`;ľ;t;;tȳ;г;س;;;$;;;P;;; ;(;0;8;@;PH;p P;X;`;h;P p;p x; ;0;0;0;;;;;t;tȴ;tд;ش;!;4#;4#;&;&;`(;`(; 0; 0 ; 0(; 00; 08; 0@;4H;4P;4X;4`;4h;8p;8x;8;8;8;8;8;8;8;8;8;8ȵ;<е;P>ص;pA;pA;@P;dT;U;dT;dT;dT;V ;@X(;@X0;Y8; [@;]H;_P;$aX;c`;eh;Dfp;Dgx;ph;j;0m;o;u;dT;@x;0y;z;P|ȶ;}ж;`ض;`;;;;P;;;p;p ;(;0;p8;p@;pH;P;X;@[`;@[h;$"p; x;";+;T,;P;P;P;;;;ȷ;з;ط;;;;;;;;Ę;Ę ;Ę(;Ę0;8;@;H;ĘP;ĘX;P`;Ph;Pp;Ęx;Ę;p;T;@;;;$; ;p;@{ȸ; и;4 ظ;p ;0{;;$;;;0;d; ;(;%0;&8;$2@;&H;4<P;X;P `; h; p;` x;P;$;;;p ;; I;B;Pa;h й;x ;P; ;  ; 0;( @;8 P;H `;X ; ; ; ; ;( к;8 ;H ;X ;p ;  ; 0; @; P; p;9x; ;;|;(;P;x;H1;0;; Ȼ;yл;ػ;8;1;2;h;xv;x;1;; ;(;0;x8;@;H;P;X;`;h;p;x;;;;;; ;9;y;9; ȼ;(м;ؼ;0;8;|;U;@;H;P;X;` ;h(;p0;x8;H1@;H;P; X;`;h;1p;2x;h;xv;xY;v;Z;0Z;PZ;{pZ;{^;^;_;(0_;P_;p_;n_;_;t_;_;`;0`;P`;]p`;`;6`;`;`;a;0a;RPa;pa;a;a;a;a;b;0b;>Pb;>pb;Cb;b;b;(c;Xc; c; d; Hd; xd; d; d; e; he; s; c;0c;0y;08e;Ue;e;=e;VXf;qf;f;z;f;Tf;f;f;f;f;:f;rf;ef;g;g0{;gg;gg;Cv;C;CPg;li;li;lj;lk;lg;g;h;xi;Xj;l;g;nh;ni;n`j;n l;ng;th;ti;thj;t(l;th; h;@i;@i;@(h;i;0h;4@h; i;j;Hh;x(i;xj;xPh;j;Xh;J`h;hh;(j;ph;bPi;b0j;bxh;8j;h;Dh;Hj;h;pi;Pj;l;h;Ki;Kpj;Kh;ri;rxj;rh;i;j;h;h;ph;0i;8i;j;@i; j;Hi;Xi;`i;,hi;i;j;i;wi;@@j;Qj;j;j;k;l;j;j;1j;j;j;$k;pk;k;5k; k;(k;0k;8k;@k;Hk;xk;k;k;k;k;k;k;k;k;4k;pl;l;xl;l;hm;Hn;(o;Xm;8n;o;9q;mq;q;q;q;q;r;r;r;r; r;o(r;J0r;8r;@r;Hr;Pr;Xr;v`r;Xhr;pr;8xr;r;r;;r;r;r;Rr;r;r;r;8r; r; r;~r;r;Br;wr;as;s;s;$s;z s;&(s;N0s;<8s;@s;Hs;~Ps;=Xs;Z`s;hs;ps;xs;\s;s;-s;(s;3s;s;s;s;!s;ts;;;s;s;s;Xs;Ts;$t;t;t;Nt; t;(t;M0t;8t;@t;jHt;Pt;Xt;`t;ht;|pt;xt;ot;t;[t;Gt;@t;?t;t;t;t;t;t;3t;Yt;t;t;Ht;u;6u;u;u; u;(u;0u; 8u;.@u;Hu;Pu;4Xu;e`u;Dhu;[pu;xu;u;u;]О;]u;u;u;u;u;u;!u;u;u;[u; u;u;Wu;u;7v;Sv;Fv;S v;S(v;-0v;8v;@v;}Hv;UPv;Xv;W`v;Uhv;(pv;ixv;v;{v;v;v;!v;$v;v;>v;v;v;v;P;Pv;v;v;v;w;w;w;Rw;c w;#(w;0w;;8w;@w;]Hw;iPw;Xw;`w;=hw;<pw;xw;w;Hw;^w;w;Dw;)w;^w;sw;w;Lw;Bw;w; w;w;w;Pw;x;hx;'x;#x;v x;;(x;0x;8x;@x;Hx; Px;Xx;`x;zhx;px;xx;_x;3x;x;x;Ax;x;x;x;x;x;x;x;x; x;6x;x;>y;y;dy;y; y;(y;0y;|8y;}@y;YHy;DPy;_Xy;`y;mhy;py;xy;y;y;Zy;y;y;Qy;y;y;y;y;yy;y;y;y;oy;z;z;Oz;Gz;) z;(z;0z;8z;@z;Hz;KPz;Xz;I`z;hz;Ipz;xz;z;z;z;Lz;z;z;z;.z;#z;z;؞;z;z;z;hz;z;{;z{;{;={; {;({;8{;E@{;H{;P{;X{;k`{;h{;p{;`x{;{;{;{;?{;{;{;{;{;{;{;{;}{;V{;l{;{;{;_|;|;F|;B|; |;(|;K0|;+8|;@|;{H|; P|;EX|;`|;Ch|;wp|;x|;H|;|;|;|; |;|;c|;|;|;|;|;|;|;|;|;|;0}; };};}; };4(};0};8};@};H};P};hX};w`};)h};p};ix};5};};};2};k}; };};$};};};};|};G};};};};~;Z~;~; ~; ~;(~;0~;8~;@~;H~;P~;X~;`~;h~;'p~;x~;~;~;~;q~;]~;~;0~;q:;p&:;&:;&:;`&:;&:;Ы&:;@&:;&:;&:;&;;&;;P&;;&;;& ;;`&(;;0&0;;&8;;Ш&@;;@&H;;&P;;&X;;P&`;; &h;;&p;;&x;;&;;`&;;&;;&;;&;;`&;;P&;;l&;;pl&;;@l&;;j&;;j&;;`j&;;0j&;;j&;;i&;;i&<;Pi&<;h&<;f&<;e& <;e&(<;`e&0<;e&8<;d&@<;@c&H<;c&P<;b&X<;08&`<;7&h<;6&p<;6&x<;6&<;`6&<;06&<;6&<;5&<;5&<;p5&<;@5&<;1&<;@*&<;(&<;%<;%<;P%<;%<;%<;P%=;%=;%=;%=;% =;%(=;%0=;%8=;8%@=;%H=;%P=;x%X=;%`=;%h=;%p=;(%x=;%=;X%=;(%=;%=;h%=;%=;؀%=;(%=;8~%=;{%=;{%=;{%=;h{%=;8{%=;z%=;hz%=;N%>;N%>;N%>;@N%>;N% >;M%(>;0M%0>;pL%8>;@L%@>;L%H>;K%P>;pK%X>;F%`>;%%h>;$%p>;8c2x>;$%>;$%>; $%>;%>;%>;`%>;0%>;%>;%>;@%>;p%>;@%>;%>;%>;$>;0$>;$?;$?;`$?; $?;$ ?;$(?;@$0?;$8?;$@?;$H?;$P?;P$X?; $`?;@$h?;$p?;$x?;P$?; $?;$?;`$?;$?;$?;@$?;$?;$?;$?;$?;$?;$?;$?;$?;$?;$@;H$@;$@;$@;H$ @;$(@;$0@;$8@;Xu$@@;t$H@;s$P@;Xo$X@;o$`@;m$h@;xc$p@;Hc$x@;]$@;S$@;I$@;F$@;XE$@;hD$@;C$@;C$@;C$@;8C$@;C$@;B$@;B$@;xB$@;A$@;A$@;hA$A;@$A;(@$A;?$A;h?$ A;>$(A;>$0A;>$8A;h=$@A;8=$HA;<$PA;;$XA;XS$`A;(S$hA;R$pA;xR$xA;HQ$A;Q$A;P$A;XP$A;P$A;(O$A;N$A;N$A;8N$A;N$A;M$A;HM$A;M$A;L$A;h2$A;H/$A;.$B;H.$B;-$B;-$B;x-$ B;H-$(B;-$0B;,$8B;,$@B;,$HB;X,$PB;(,$XB;+$`B;+$hB;+$pB;1$xB;1$B;h"$B;$B;($B;$B;h$B;8$B;$B;$B;$B;x$B;H$B;$B;$B;$B;$B;!$C;!$C;!$C; $C; $ C;x $(C;H $0C; $8C;$@C;X$HC;$PC;h$XC;$`C;$hC;$pC;x$xC;H$C;$C;$C;$C;$C;X$C;($C; $C;$C;$C;x$C;$C;$C;h$C;8$C;$C;$D;h$D;8$D;H#D;X# D;#(D;h#0D;#8D;#@D;#HD;#PD;#XD;#`D;H#hD;#pD;#xD;#D;x#D;#D;#D;(#D;#D;h#D;8#D;h#D;X#D;#D;h#D;#D;#D;8#D;#D;c$E;h#E;8#E;#E;# E;h#(E;8#0E;#8E;x#@E;8#HE;#PE;#XE;8#`E;#hE;(#pE;#xE;x#E;#E;#E;#E;(#E;h#E;#E;Ȭ#E;#E;(#E;#E;#E;#E;#E;#E;X#E;(F;xF;F;F;0 F;`(F;0F;8F;@F;PHF;PF;XF; `F;#hF;#pF;ؘ#xF;#F;#F;#F;#F;H#F;#F;#F;X#F;x#F;(#F;#F;#F;X#F;h#F;m#F;k#F;H#G;#G;#G;8#G;# G;H#(G;#0G;"8G;"@G;H"HG;"PG;"XG;"`G;"hG;H"pG;H"xG;"G;"G;"G;H"G;"G;ȩ"G;x"G;H"G;Ȩ"G;"G;"G;h"G;"G;Ȧ"G;h"G;"G;X"H;آ"H;X"H;ȡ"H;" H;"(H;("0H;("8H;"@H;؛"HH;X"PH;X"XH;("`H;x"hH;"pH;"xH;X"H;"H;"H;ؕ"H;"H;"H;"H;"H;X"H;Ȑ"H;"H;X"H;"H;"H;"H;h"H;8"I;"I;h"I;"I;x" I;"(I;Ȍ"0I;"8I;H"@I;"HI;"PI;؊"XI;"`I;x"hI;H"pI;"xI;"I;ȇ"I;"I;H"I;"I;"I;"I;"I;"I;H"I;"I;"I;h"I;("I;"I;"I;H"J;X"J;"J;Ȁ"J;" J;X"(J;"0J;"8J;X"@J;("HJ;X~"PJ;~"XJ;}"`J;r"hJ;p"pJ;@p"xJ;p"J;o"J;0o"J;n"J;n"J;m"J;Pm"J;@k"J;g"J;f"J;f"J;Z"J;Z"J;pZ"J;0Z"J;Z"J;Y"K;0T"K;S"K;S"K; S" K;R"(K;R"0K;R"8K;`R"@K;0R"HK;R"PK;Q"XK;Q"`K;pQ"hK;@Q"pK;P"xK;P"K;P"K;`P"K;O"K;N"K;N"K;PN"K; N"K;M"K;@M"K;L"K;L"K;K"K;J"K;PJ"K; J"K;I"L;H"L;PA"L;@"L;p@" L;?"(L;`?"0L;>"8L;@>"@L;xb2HL;>"PL;p="XL;0="`L;="hL;;"pL;;"xL;;"L;P;"L;;"L;9"L;92L;9"L;9"L;P9"L;XL;8"L;3"L;2"L;/"L;'"L;`'"L;0'"L;&"M;&"M;&"M;&"M;" M;"(M;"0M;X!8M;!@M;(!HM;H!PM;!XM;!`M;!hM;H!pM;!xM;ȯ!M;}!M;R!M;R!M;h2M;1M;M;M;ؑM;ȩ1M;x1M;Q1M;hM;M;h(1M;0M;N;(R!N;Q!N;Q!N;P! N;P!(N;xP!0N;O!8N;O!@N;xO!HN;HO!PN;O!XN;N!`N;D!hN;!pN;xN;0N;X0N;N;(g0N;(<0N;вN;!N;(!N;@;0N;X:0N;70N;!N;yN;N;XN;`5O;@5O;05O;(5O; 5 O;5(O;50O;ت58O;Ȫ5@O;5HO;5PO;`5XO;P5`O;(5hO;5pO;5xO;5O;ة5O;ȩ5O;5O;5O;5O;5O;5O;x5O;h5O;X5O;H5O;05O;(5O;5O;5O;5P;5P;5P;5P;Ȩ5 P;5(P;50P;p58P;h5@P;X5HP;P5PP;5XP;5`P;5hP;05pP; 5xP;5P;5P;5P;5P;5P;ئ5P;Ȧ5P;5P;5P;5P;5P;5P;5P;x5P;`5P;X5P;(5Q; 5Q;5Q;5Q;5 Q;5(Q;Х50Q;58Q;5@Q;5HQ;5PQ;5XQ;p5`Q;`5hQ;H5pQ; 5xQ;5Q;Ф5Q;5Q;p5Q;H5Q;05Q; 5Q;5Q;5Q;5Q;5Q;5Q;`5Q;05Q;5Q;5Q;5R;آ5R;Т5R;Ȣ5R;5 R;5(R;50R;58R;5@R;5HR;>6PR;>6XR;?`R;>6pR;yxR;R;yR;sR;R;yR;l6R;yR;l6R;m6R;yR;R;yR;l6R;l6R;ؒ6R;В6S;Ȓ6S;6S;6S;6 S;6(S;60S;68S;6@S;x6HS;p6PS;`6XS;P6`S;@6hS;86pS;06xS;(6S; 6S;6S;6S;6S;6S;6S;6S;6S;6S;ؑ6S;Б6S;ȑ6S;6S;6S;6S;6T;6T;6T;6T;6 T;6(T;x60T;p68T;h6@T;`6HT;P6PT;H6XT;@6`T;86hT;06pT; 6xT;6T;6T;6T;6T;6T;ؐ6T;Ȑ6T;6T;6T;6T;6T;6T;6T;6T;6T;p6T;`6U;X6U;P6U;H6U;@6 U;86(U;068U;6@U;6HU;6PU;6XU;ة6`U;Щ6hU;ȩ6pU;6xU;6U;6U;6U;6U;6U;6U;p6U;h6U;`6U;X6U;H6U;@6U;86U;06U; 6U;6U;6V;6V;6V;6V;ب6 V;Ȩ6(V;60V;68V;6@V;6HV;6PV;6XV;6`V;x6hV;h6pV;`6xV;X6V;P6V;H6V;@6V;86V;6V;6V;6V;6V;6V;6V;6V;6V;x6V;p6W;h6W;X6W;H6W;@6 W;86(W;060W;(68W; 6@W;6HW;6PW;6XW;6`W;6hW;6pW;6xW;6W;6W;6W;6W;7W;7W;7W;7W;7W;7W;7W;7W;7W;7W;x7W;p7X;h7X;X7X;H7X;87 X;07(X;(70X; 78X;7@X;7HX;7PX;7XX;7`X;7hX;7pX;7xX;7X;7X;7X;7X;7X;7X;7X;7X;7X;7X;7X;7X;x7X;p7X;h7X;`7X;X7Y;H7Y;@7Y;87Y;07 Y;(7(Y;70Y;78Y;7@Y;6HY;6PY;6XY;6`Y;6hY;6pY;6xY;6Y;6Y;6Y;6Y;6Y;x6Y;h6Y;X6Y;P6Y;H6Y;@6Y;86Y;06Y;(6Y;hZZ;Z(Z;ZHZ;ZhZ;ZZ;[Z;Z;([Z;Z;@[Z;Z;P[Z;[;`[[;([;p[0[;H[;[P[;h[;[p[;[;[[;[;[[;P[;[[;p[;[[;\;\\;$(\;\0\;$H\; \P\;$h\;0\p\;0\;@\\;0\;X\\;\;h\\;\;x\\;];\];(];\0];H];\P];h];\p];];\];];\];];\];];]];^;]^; (^;(]0^;pH^;8]P^;ph^;P]p^;^;`]^;d^;p]^;0^;]^;]_;](_;]H_;]h_;]_;Z_;xZ_;]_;^_;^_;^`;(^`;P^(`;X^H`;x^X`;^h`;^x`;^`;^`;(`;^`;^`;^`;^`;^`;ya;_a;((a;(_Ha;P_ha;x_a;_a;_a;_a;_b;`(b;8`Hb;``hb;`b;Pcb;Pb;(db;Pb;0dc;Pc;8d0c;PHc;@d`c; xc;Hdc; c;Pdc; c;`dc; d;hd d; 8d;pdPd; hd;xdd; d;dd; d;dd; d;de; (e;d@e; Xe;dpe; e;de; e;de; e;df; f;d(f;0f;Hf;b g;8g;0 @g; Hg; Xg;% `g;D hg; ( pg;? g; g; g;P g;0 g;` g; g; g; g;@ g; g;0 h;$h;$i;$j;$k;$`l;$@m;$ n;Xo;X;X;; ; ;0? ;$Y(;$Y0;D/8;$Y@;$YH;^P;$YX;$Y`;$Yh;$Yp;Mx;$Y;$Y;$Y;V;V;$Y;V;U;O;pJȟ;$YП;D/؟;D/;TI;;L;$Y;D/;D/;$Y; Y ; Y(; Y0;$Y8; Y@; YH;MP;$YX;pJ`;$Yh;pJp;$Yx;A;D/;D/;D/;@;@;@;@;@;@Ƞ;@Р;@ؠ;$Y;$Y;$Y;$Y;$Y;$Y;$Y;t;$Y ;$Y(;$Y0;$Y8;V@;$YH;]P;PUX;PU`;%h;%p;%x;%;%;%;%;%;%;%;%;%;$Yȡ;$YС;iء;i;i;i;i;i;$Y;PU;PU;PU ;PU(;PU0;PU8;PU@;PUH;PUP;$YX;$Y`;$Yh;PUp;PUx;$Y;;D/;D/;D/;D/;D/;D/;D/;D/Ȣ;D/Т;D/آ;D/;D/;PH;`E;`E;D/;P?;P?;@ ;D/(;D/0;D/8;D/@;D/H;D/P;D/X;D/`;D/h;Vp;$Yx;$Y;$Y;$Y;$Y;$Y;DF;DF;DF;DF;DFȣ;DFУ;`:أ;;;V;$Y;$Y;$Y;$Y;D/;D/; ;0^(;$Y0;$Y8;D/@;D/H;D/P;D/X;D/`;0Wh;0Wp;D/x;W;D/;0=;$Y;0=;0=;$Y;0=;$Y;$YȤ;$YФ;$Yؤ;$Y;$Y;$Y;];];(];8];H];H;P;h;p ;x(;0;X]8;`]@;h]H;x]P;]X;`;h;p;x;;;;(;H;P;];X;h;];];];];^;8^;P^;h^;^;^;^;^ ;^(;x0;8;^@;H;P;^X;^`;_h; _p;8_x;P_;;;`_;;0;x_;@;X;p;x;_;_;_;_;`;(`;P`;x`;`;` ;`(;`0;a8;8a@;XaH;aP;aX;a`;ah;bp;bx;0b;Hb;`b;xb;b;b;b;b;b;;;@k;b;b;c; c;;;8c;Hc;Xc ;pc(;c0;8;@;H;P;cX;y`;ch;cp;cx;; ;c;c;c;d;d;(d;8d;Pd;hd;d;d;d;d;d;d;8;H;e;h ;x(;0;8; e@;'H;P;X;(e`;h;p;8ex;;@e;Pe;Xe;he;xe;8;@;e;H;`;e;e;;;e;;;e;; ;e(;0;8;e@;H;P;eX;(`;8h;fp;Hx;X;f;h;x;(f;;;@f;;;Pf;;;`f;;;hf;f;f;; ;f(;f0;f8;@@;HH;pP;xX;g`;(gh;@gp;Xgx;;;;;hg;;;xg;0;@;g;g;g;g;g;x;;g;g;g;h ;W(;(h0;Hh8;hh@;hH;hP;hX;h`;hh;`$p;p$x;h;h;i; i;;;0i;8i;:;$;;;@i;Hi;Pi;hi;i;(;0;H;X ;(;0;8;@;H;P;iX;i`;ih;p; x;h;p;i;j; j;8j;Hj;Xj;pj;j;j;j;j;j;j;;;k;;; ;(;k0;8k8;Xk@;pkH;kP;X;`;kh;kp;kx;k;k;8;@;k;l;l;(l;8l;Hl;Xl;hl;xl;l;l;l;l;m; m;8m;Pm ;hm(;m0;m8;m@;mH;mP;nX;0n`;Xnh;xnp;nx;n;n;o;(o;Po;xo;o;o;o;p;p; p;0p;8p;Hp;Xp;xp;p;p;p;p ;X(;h0;p8;q@;0qH;XqP;qX;q`;qh;qp;rx;(r;Hr;pr;r;;;r;r;r;r;s;;;;;(s;0s;8s;;;@s ;(;0;Ps8;@;H;`sP;psX;s`;sh;sp;(x;0;X;`;s;s;s;t;t;;;;;(t;@t;Xt;pt;t;t;t;t; ;(;0;8;@; H;(P;0X;H`;Xh;xp;x;;;;;t;t;u; u;@u;Xu;;;hu;pu;xu;u;u;u;;;u ;u(;v0;(v8;Xv@;vH;vP;vX;(w`;8h;@p;Xwx;pw;w;w;w;w;x;x; x;8x;Px;`x;px;x;h;x;x;x;x;x;; ;x(;0;8;@;H;xP;xX;x`;xh;yp;yx;(y;8y;Hy;Xy;hy;xy;8;P;y;y;y;y;y;;.;z ;  ;z ; z ;0z ;@z( ;H10 ; E8 ;Pz@ ;XzH ;`zP ;xzX ;z` ;zh ;zp ;6x ;z ;q ;z ;h ;z ; ;z ;z ;z ;{ ; { ;8{ ;P{ ;h{ ;{ ;{ ;U!;!;{!;{!;{ !;{(!;{0!;{8!;|@!;(|H!;@|P!;H|X!;P|`!;X|h!;`|p!;h|x!;8#!;H#!;p|!;x|!; [!;k!;|!;|!;#!;$!;|!;|!;|!;|!;|!;|!;|";}";P";d"; } ";0}(";@}0";X}8";p}@";}H";}P";}X";}`";}h";}p";}x";}";}";";pA6";~";~";0~";@~";P~";_";x9";8";X~";(d";";@#;H#;P#;h#;6 #;`~(#;Pc0#;X`8#;}@#;XH#;`X#;h~`#;dh#;p~p#;x~x#;~#;~#;~#;~#;~#;~#;~#;~#;~#;~#;~#;~#;~#;~#;~#;~#;$;$;$;$;  $;(($;00$;8$;@$;@%H$;P%P$;8X$;@`$;Hh$;Pp$;Xx$;`$;h$;p$;x$;$;$;$;$;$;$;$;$;$;$;$;$;%;%;%;%; %;(%;0%;8%; @%;(H%;0P%;8X%;@`%;Hh%;Pp%;Xx%;`%;h%;p%;x%;%;%;%;%;%;%;%;%;%;Ȁ%;Ѐ%;؀%;&;@70&;70 &;p40(&;000&;,08&;,0@&;(0H&;#0P&;!0X&;P!0`&;@0h&;P0p&;0x&;`0&;0&;00&;@ 0&;0&;p0&;/&;/&;@/&;/&;`/&; /&;0/&;`/&;/&;/&;@/';/';/';/';/ ';`/(';0/0';/8';x/@';H/H';/P';/X';/`';/h';X/p';(/x';/';x/';H/';Ȇ';2';/';/';h/';8/';/';/';/';/';/';/';/';/(;/(;P/(; /(;/ (;/((;/0(;/8(;h/@(;/H(;/P(;/X(;؀/`(;/h(;x/p(;H/x(;/(;h/(;}/(;8}/(;|/(;u/(;hu/(;Xt/(;(t/(;s/(;o/(;m/(;i/(;hi/(;8i/(;h/(;h/);xh/);h:/);:/);9/ );H9/();0);28);,/@);,/H);+/P);+/X);+/`);X+/h);(+/p);*/x);*/);*/);h*/);*/);)/);)/);)/);X)/);()/);(/);(/);(/);8(/);(/);'/);x'/);H'/*;'/*;&/*;&/*;&/ *;H&/(*;&/0*;%/8*;%/@*;H%/H*;%/P*;$/X*;$/`*;x$/h*;H$/p*;$/x*;X"/*;("/*;!/*;8/*;/*;/*;X/*;/*;X/*;/*;/*;h/*;/*; /*; /*;x /*;H /+; /+;x /+;/+;/ +;x/(+;H/0+;.8+;.@+;.H+;X.P+;(.X+;.`+;.h+;.p+;h.x+;8.+;.+;.+;.+;x.+;H.+;.+;.+;.+;.+;+;.+;.+;.+; .+;.+;.,;.,;г.,;.,;p. ,;0.(,;.0,;O.8,;(.@,;.H,;-P,;`-X,;0-`,;-h,;-p,;-x,;p-,;0-,;-,;-,;@-,;-,;-,;-,;0-,;-,;-,;-,;p-,;-,;-,;P-,; --;--;--;--;P- -; -(-;-0-;`-8-;-@-;P-H-;Г-P-;P-X-;-`-;-h-;m-p-;l-x-;l--;k--;i--; i--;`h--;B--;]--;\--;0\--;pJ--;I--;0B--;`?--;>--;`>--;0>--;>-.;=-.;=-.;P=-.;3- .;3-(.;p3-0.;@3-8.;3-@.;2-H.;--P.;P+-X.; +-`.;*-h.;*-p.;*-x.;'-.;"-.;`"-.;!-.;x -.;8 -.;-.;H,.;,.;,.;@,.;,.;,.;,.;,.;,.;p,/;@,/;,/;,/;, /;,(/;,0/;,8/;Ц,@/;@,H/;,P/;Ѝ,X/;,`/;P,h/; ,p/;`,x/;,/;,/;p,/;,/;,/;P,/; ,/;,/;,/; ,/;,/;p,/;,/; ,/;pP,/;0O,/;@N,0;5,0; ,0;,0;` , 0;` ,(0;,00;+80;+@0;+H0;0+P0;+X0;+`0;+h0;+p0;p+x0;Z+0;Y+0;Y+0;PY+0;P'0; '0;'0;'0;'0;`'0;0'0;'0;Ж'0;'0;p'0;@'0;'1;'1;'1;'1;P' 1; '(1;`'01;|'81;{'@1;b'H1;`b'P1;0b'X1;b'`1;a'h1;a'p1;pa'x1;@a'1;a'1;`'1;`'1;`'1;P`'1; `'1;_'1;_'1;_'1;`_'1;0_'1;_'1;^'1;^'1;p^'1;@^'2;^'2;]'2;]'2;]' 2;P]'(2; ]'02;\'82;\'@2;\'H2;`\'P2;0\'X2;\'`2;['h2;['p2;p['x2;@['2;['2;Z'2;Z'2;Z'2;PZ'2; Z'2;Y'2;Y'2;Y'2;`Y'2;0Y'2;Y'2;X'2;X'2;pX'2;@X'3;X'3;W'3;W'3;W' 3;PW'(3; W'03;V'83;V'@3;V'H3;`V'P3;0V'X3;V'`3;U'h3;U'p3;pU'x3;@U'3;U'3;T'3;T'3;T'3;PT'3; T'3;S'3;S'3;S'3;`S'3;0S'3;S'3;R'3;R'3;pR'3;@R'4;R'4;Q'4;Q'4;Q' 4;PQ'(4; Q'04;P'84;P'@4;0G'H4;G'P4;F'X4;PC'`4;@B'h4;3'p4;P3'x4; ('4;0'4;'4;p'4;@'4;'4;`'4;'4;p'4;@'4;'4;'4;'4;'4;P'4; '4;'5;'5;'5;'5;' 5;'(5;'05;'85;'@5;p'H5;P'P5;@'X5;'`5;p'h5;'p5;`'x5;'5;&5;&5;`&5;0&5;P&5; &5;&5;&5;&5;&5;@&5;&5;&5;&5;&5; &6;&6;&6;&6;& 6;p&(6;@&06;&86;&@6;&H6;&P6;P&X6; &`6;&h6;&p6;&x6;`&6;0&6;&6;&6;&6;p&6;@&6;&6;&6;&6;&6;P&6; &6;&6;&6;&6;`&7;0&7;&7;&7;& 7;p&(7;+07;*87;*@7;X*H7;`t*P7;(H*X7;`*`7;)h7;P)p7;8G+x7;)7; )7;)7;h)7;O)7;6)7;)7;p(7;(7;(7;أ(7;p(7;_(7;<(7;h(7;`'7;'8;'8;@&8;&8;& 8;&(8;p&08; &88;&@8;&H8;&P8;&X8;&`8;@&h8;&p8;`&x8;0&8;&8;`&8;0&8;о&8;&8;@&8;&8;`&8; &8;P&8; &8;&8;p&8;@&8;&8;&9;&9;@&9;&9;& 9;&(9;p&09;&89;и&@9;&H9;p&P9;@&X9;&`9;&h9;&p9;&x9;P&9; &9;&9;&9;&9;`&9;0&9;&9;е&9;&9;p&9;@&9;&9;&9;&9;&9;P&:; &:;&:;&:;& :;`&(:;0&0:;&8:;в&@:;&H:;p&P:;@&X:;&`:;&h:;&p:;`&x:;0&:;&:;&:;p&:;@&:;&:;&@:P:`:p:::::: :(:(0:88:P@:`H:xP:X:`:h:p:x::(:H:h:::::::::: :0:@:H:`!:z:P:` :(:0:p8:@:H:P:X:`:h:p:x:(:8:H:X :` :X:`:h:p:x::::P::p:::: :(:0:8:@:H:P:(X:(`:8h:@p:0x:H:X:h:::::::: :0:@:X:@:P:::h:p :8(: 8:x@:H:P:X:`:h:p:x:::(:8:H:X:`:h:p:::::::::::(:U0:8: @:0H:@P:X:H`:Xh:hp:px:x::::::h:6::::::: : : : :P:X :(:0:8:@:H:P:X:`:h:p:x::::::P:X:`:p:U::::@::h:p::: :(  :0 (:8 0:8:@:H:P:@ X:H `:P h:` p:hx:6:::$:8:@:H:1:8<5:p : : : : : :x:: : :  : (: 0: 8:@:H: P: X: `: h:!p:6x:!: !:0!:H!:X!:h!:(:0:x!:!:!:!:|::!:!:U::!::" :#(:"0:"8:("@:8"H:H"P: X:P"`:X"h:`"p:x:h":":"::":}:x::%:":":":":":"::":h:":":# :#(:0:@8:(#@:`H:0#P:X:H`:Ph:8#p:H#x:`!:z:H :` :::X#:h#:x#:#:#:#:#:#:xv:H:#:$:$: $:($ :0$(:P0:8:8$@:@$H:H$P:P$X:X$`:h:`$p:p$x:$:$:$:$:::$::pA6:$:Pl:~:{:$:$:$:H :$:$:$:$:% :` (: 0: 8:%@: #H:%P:0%X:@%`:P%h:`%p:x%x:%:%:%:%:%:%:%:%:1:D:: :x9:8:%:%:x:p4:%:% :(:@0:&8:@:&H:&P: &X:z`:(&h:hp:0&x:8&:@&:H&:P&:`&:p&:x&:&:&:&:&:&:&:&:&:&:&:&:&:& :&(:&0:'8:'@:'H: 'P:('X:0'`:8'h:@'p:P'x:`':h':p':x':':':&:&:':':':':':':':':8: :':':( :((:(0:(8: (@:((H:0(P:plX:[`:Eh:8(p:@(x:H(:P(:X(:h(:0&:8&:I:E::::::(::::::  :((:00:88:@@:HH:PP:XX:``:hh:pp:xx:::::::::x(:(:(:(:(:(:(:(:(:(:P:(:( :((:(0:(8:(@:(H:)P:)X:)`:)h: )p:()x:0):1:D:8):):@):P):`):*::.:p):x):):):):):):):):) :)(:)0:)8:)@:*H: *P:0*X:H*`:H1h: Ep:`*x:(*:h*:P*:x*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:+:+:+ :+(: +0:(+8:0+@:8+H:@+P:H+X:P+`:X+h:`+p:h+x:p+:x+:+:+:+:+:+:+:+:+:+:+:+:+:+:+:+:+:,:,:, :,(: ,0:(,8:0,@:8,H:@,P:H,X:P,`:X,h:`,p:h,x:p,:x,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:,:-:-:- :-(: -0:(-8:8-@:H-H:X-P:h-X:p-`:x-h:-p:-x:-:::-:-:-:-:U::::-:-:-:.:.: .:@:H:(.:0. :8.(:@.0:P8:d@:(H:8P:X X:` `:H.h:P.x:8<5::Ȭ:@:8: :pQ:X.:l:::`.:p.:.: :(:.:.:.:. :.(:.0:/8:/@:8/H:X/P:x/X:0`:Hh:/p:/x:/:/:0: 0:80:P0:h0:x0:0:p:x:0:0:0:0:0:0:0:1:(1:81 :P1(:h10:x18:1@:1H:1P:1X:1`:2h:(2p:P2x:`2:p2:2:2:2:2:2:3:03:P3:`3:p3:3:3:::3:3:3:3: :(:0:8: @:(H:3P:3X:3`:4h:(4p:84x:H4:X4:h4:@:P:`:h:::::x4:4:4:::4:4:4:4:4 :5(: 50:058:@:H:0P:8X:@5`:X5h:p5p:Px:`:::5:5:5:5:5:5:6:::(6:::0:8:@:H:`:p :@6(:P60:`68:x6@:6H:6P:6X:6`:h:p:6x:K:6:6:7:7:(7:@7:X7:p7:7:7:7:7:7:8:@8:h8;8;8;8;8 ;8(;90;98; 9@;(9H;89P;@9X;P9`;X9h;h9p;p9x;9;9;9;9;9;9;9;9;9;9;:;(:;@:;P:;`:;p:;:;:;:;:;: ;;(; ;0;8;8;`;@;;H;;P;;X;;`;<h;@<p;h<x;<;<;<;<; =;H=;h=;=;=;=;>;(>;H>;p>;>;>;>;?;(?;H?;h? ;?(;?0;?8;@@;(@H;P@P;x@X;@`;@h;@p;Ax; A;8A;XA;xA;A;A;A;A;A;B; B;;0P;0B;HB;`B;xB;B;B;B;B ;(;0;B8;B@;CH;8CP;`CX;C`;Ch;Cp;Cx;C;C;D;(;8;H;X;D;(D;8D;HD;XD;hD;xD;D;D;D;D;D;D;E ;(E(;@E0;XE8;pE@;EH;EP;EX;E`;Eh;Ep;Fx; F;8F;x;;;;PF;`F;pF;F;F;F;F;F;F;G;(G;8G;HG;`G;pG ;G(;G0;G8;G@;GH;GP;X;`;h;p;Hx;H;H; H;0H;(;8;@H;`H;H;H;H;H;I;X;p;(I;HI;`I;I;I; ;(;0;8;I@;IH;IP;IX;J`;(Jh;@Jp;XJx;J;J;J;J;J;K;K;8K;XK;xK;K;K;K;K;;;L; L;0L;@L;PL ;`L(;pL0;L8;L@;LH;LP;LX;M`;Mh;0Mp;HMx;XM;hM;M;M;;;M;M;M;M;N;(N;8N;PN;hN;N;N;(;8;N;N ;N(;N0;O8;(O@;8OH;HOP;`OX;xO`;Xh;hp;Ox;O;O;O;O;;;;;;;O;P;(P;8P;HP;XP;hP ;xP ; ; ;P ;8( ;H0 ;X8 ;h@ ;PH ;P ;X ;P` ;Ph ;Pp ;Px ;P ;Q ;8Q ; ; ;XQ ;xQ ;Q ;Q ;Q ;Q ;Q ;Q ;R ;(R ;@R ;XR ;pR ;R ;R ;R ;( ;0 ;8 ; @ ;8H ;@P ;XX ;`` ;Rh ;Rp ;Sx ; S ;8S ;PS ;`S ;pS ;x ; ;S ;S ;S ;S ;S ;T ; T ;8T ;`T ;T ;T ; ; ;T ;T( ;T0 ;U8 ;(U@ ;@UH ; P ;8X ;XU` ;Ph ;hp ;pUx ;xU ;U ;U ;U ;( ; ;U ;U ;U ;U ; ; ; ; ;U ;V ; V ;8V ;HV ;XV ;hV ;xV( ;V0 ;V8 ;V@ ;VH ;VP ;VX ;V` ;Vh ;Wp ;Wx ; W ;(W ;0W ;8W ;@W ;PW ;`W ; ; ; ; ;pW ;W ;W ;W ;W ; ; ;W ; ;  ;8( ;H0 ;X8 ;X@ ;pH ;P ;X ;X` ;(Xh ;8Xp ;x ; ; ; ;HX ; ; ;X ;` ;XX ;`X ;hX ;xX ;X ;X ;X ;X ;X;X;X;Y;Y ;(Y(;8Y0;PY8;hY@;xYH;YP;YX;Y`;Yh;Zp;Zx;(Z;@Z;PZ;hZ;Z;Z;Z;Z;Z;Z;[;[;([;@[;P[;`[;p[;[;[;[;[ ;[(;[0;8;@;[H;\P;(\X;`;h;@\p;x;;P\;h\;\;\;\;\;(;0;\;\;\;й:ع::::::::: :(:(0:$8:8@:@H:HX:P`:dh:Pp:Xx:`:h:p:::::::r6Ⱥ:к:::::::: :( :0(:H0:`8:h@:pH:xP:X:`:h:p:x::::::::::Ȼ:л: ػ:(:0:8:@:P:`:h:p:x :(:0:8:@:H:P:X:`:h:p:x:::::: :(:0:8:@ȼ:Hм:Pؼ:`:p:x:::::: :(:0:8:@:H:P:X:`:0h:8p:@x:H:P:X:`:p:::::Ƚ:н:ؽ:::0P:::::: :(: 0:(8:8@:HH:XP:hX:p`:xh:p:x::::::::::Ⱦ:о:ؾ::: :(:8:H:P:X:p :(:0:8:@:H:P:X:`:h:p:x::::::: :(:8:Hȿ:Pп:Xؿ:h:x::::::: :(:0:8:@:H:P:X:`:h:p:x: :(:0:8:H:X:h:x::::::::::::: :(:0:8: @:(H:0P:8X:@`:Hh:Pp:Xx:`:h:p:x:::::::::::::: :8:P:h :(:0:8:@:H:P:X:`:h:p:x::::::::: :(:0:8:H:X:p:::::: :(:0:8:@:H:P:X:`:h: p:(x:0:8:@:H:P:X:`:h:p:x::::::::::: :(:0:8:@:H:P:X: `:(h:0p:8x:@:H:P:X:`:h:p:x::::::::::::: :(:0:8:(@:8H:@P:HX:P`:Xh:hp:xx:::::::::::::::0:@:X:p:x:: :(:0:8:`g@:H:P:X:`:h:p:x::::::: :(:0:8:H:X:`:h:x:::::: :(:0:8:@:H:P:X:`:h: p:(x:0:8:@:H:`:x::::::::::::::(:8 :H(:X0:h8:x@:H:P:X:`:h:p:x:::::: :(:0:8:@:H:P:X:`:h:p:x:::: :(:0:8:@:H:P:X:`:h:p: x:(:0:@:H:P:X:`:h:p:x::::::::::: :(:0:8:@:H: P:(X:0`:8h:@p:Hx:X:h:p:x::::::::::::::::: :(: 0:(8:8@:HH:PP:XX:``:hh:pp:xx::::::::::::::::::(:0:8:@ :H(:P0:X8:h@:xH:P:X:`:h:p:x::::::::::: :(:0:8:@:H:P:X:`:h:p :x(:0:8:@:H:P:X:`:h:p:x::::::::::: :(:0:8:@:H:X:h:p:x: :(:0:8:@:H:P:X:`:h:p:x::::::(:0:8:@:H:P:X:`:h:x:::::: :(:0:8:@:H:P:X:`:h:p:x: :(:0:8:P:`:h:p:x::::::6::::: :Ȭ(:P0:X8:@:H:P:X:@`:Hh:|p:x::#::::::::: :::::::Pl:::  :0g(:P0:(8:0@:8H:@P:X{X:г`:Hh:Pp:Xx:r:`:h:$:8:p:I:x:::::::::::: :(:0:8:@:H:P:X:`: h:(p:0x:8:@:H:P:X:`:h:p:x::E:::::::::: :(:0:8:@:H:P:X:(`:h:p:x::: :(:0:8:@:H:P:X:`:h:p:x::::::: :(:0:8:@:H:P:X:`:h:p:x:::: :(:0:8:@:H:P:X:`:h:p:x:::::: :(:0:8:@:H:P:X:`:h:p:x:::: :(:0:8:@:H:P:X:`:h:p:x:::::: :(:0:8d@:H:26P:X:`:h: p:(x:0:8: :@:: :::@:H:P:X`:}:X:`:x::h:p :(:@0:H8:P@:X`H:}P:XX:`h:xp:x::::::::::.:::: :0:8:@:H:P:X:` :h(:00:p8:x@:H:P:X:`:h:p:x:::::(:0:8:@:::H:`:x:::::::: :(:80:P8:`@:hH:PP:XX:`:h:p:x:::::::p:::::::::::::: :(:0:8:@:H:P:X:`:`4h: p:0x:@:P:`:p::::::::::::::: : : :(: 0:0 8:@ @:WH:P:X: `:h:@p:P~x:H :` :p ::x : : :8l6: : : : : : :::::j:l:  : (:00:@8: @:@H: P: X:( `:0 h:(p:0x:8 :@ :H :P :X :` :h :x : : : : :$:8: : :@:H: :  :1(:8<50:|8:E@: H: P: X: `:Uh:p: x:( :8 :H :P:d:X :h :h:6:x : ::r6: : : : : : :  : (: 0: 8: @: H:( P:0 X:8 `:@ h:H p:` x:x : : : :x:: : : : : : : : : : : : : :( :0  :H (:X 0:x 8: @: H: P: X:X`: h: p: x: : ::::: :0:@:H:P:`:p:x::::::: :(:0:8:@: H:0P:@X:P`:`h:pp:x::::::::::(:8:H:X:p::::::: :(: 0:88:P@:`H:pP:X:`:h:p:x::::: :0:@:P:`:x::::::::::0:H :`(:x0:8:@:H:P:X:`:h:p:x::: :(:0:8:@:H:P:: :X:`:h:p:x::::: :(:0:8:@:H:P:X:`:h:p: x:0:@:P:`:p:x::::::::::::: :(:( :(:00:@8:P@:`H:pP:xX:`:h:p:x::::::::::(:p:x:ȅ:Ѕ:؅:::::::ș:Й:ؙ :(:0:8:@:H:P:X:`: h:(p:0x:8:@:H:P:X:`:h:p:x:Ȇ:І:H؆:::::Ț:ؚ::: :(:0:(8:@@:XH:hP:xX:`:h:p:țx:؛::::(:@:P:h:x:ȇ:Ї:؇::Ȝ:؜::::(:@:P :h(:x0:8:@:H:P:НX:`:D h: : :0 : H: h:p : : : : : (:` :t:r :s :o :Pr 8: h:p x: :v :0w :4t :Tv (:x 8:w h:x :P : : :y (:y h:Ĕ : :0 : : (: 8: `:p h: :_ :` :a (:` h:s :0 : : : : :d (: `: h:P : :$ :@o : : (: `:h:p:x:: :0:8:H:P:`:h:p:xȑ:Б:ؑ:::::::Ȟ:Ȝ:О :(:0:8:@:H:P:X:0X`: h:Xp:(x:0:8:H::P:`:p:::Ȓ:В:ȟؒ:::::(:@:P:h: :(:0:Ƞ8:@:H:.6P:X:`:0h:Hp:`x:x::::ء:ء:X1:|::ȓ:Г:ؓ: :8:H:P:h:`::: :(:Ȣ0:8:@:H:P: X:`:8h:0p:Hx:`:X:x:p:::a:::أȔ:Д:ؔ:::(:8:H:X:h:x: :(:0:ؤ8:@:H:P:X:(`:8h:Xp:px::P:h::::ȥ:::ȕ:Е:ؕ: :@:P:X:`:h:p:x: :(:0:s8:@:H:P:X:`:0h:p:x:Ȧ::Ц:ئ::::::Ȗ:Ж:0ؖ:H:h::::ȧ:ا:: :(:0:8:@: H:8P:HX:X`:ph:p:Ȝx:::7::#:#::Ш:ب:ȗ:З:ؗ::::::Ѝ::0:8 :H(:X0:h8:x@:H:P:X:`:ةh:p:x:8:P:`:::::::Ș:И:ؘ:(:@:X:h:X:x::: : (:0:8:ȫ@:ЫH:ثP:X:`:h:p:(x:H:p:x:::::l:Ȭ:Ьș:جЙ:ؙ::::::: :8:@ :H(:P0:X8:`q@:oH:`P: lX:h`:ph:xp:x:::::::ȭ:Э:ح:Ț:К:ؚ:::: :0:@:P:p:o :`(:h0:p8:x@:H:LP:X:`:h:Hdp:dx:::::@p::Ȯ:Ю::خț:Л:؛::::d::Pp::p:Hp :p(:0: 8:(@:0H:@P:HX:P`:Xh:`p:hx:p:::::: p:::Ȝ:ȯМ:Я؜::::::: :(:0 :8(:@0:P8:X@:`H:hP:pX:x`:h:1p:x::::а:::::(:8ȝ:HН:X؝:h::::::б:: :(:0: 8:0@:@H:PP:`X:p`:h:p:x:::в:::::::(Ȟ:0О:؞:@:@:@:X:x:x:x:: :(:س0:8:@:H:0P:8X:H`:`h:xp:x::hd:pd:xd:d:d:d::ش:ȟ:П:؟:h|:H::P:`:^: :(:0 :8(:@0:P8:X@:`H:hP:pX:x`:h:p:Xx:::::":.6::ȵ:ص:Ƞ:Р:ؠ::::(:0:8:@::H :(:P0:,8:@:HH:P:XX:``:ph:xp:x::::::ж::::ȡ:С:ء: :(:8:H:P:d:`:p: :(:0:8:#@:H:HP:X:`:h:>p:x:ȷ:з:ط:::::::Ȣ:Т: آ:(:8:H:P:`:p:x:: :(:0:8:@:PH:XP:`X:h`:ph:xp:x:::s::::::0:ȣ:У:Ȧأ::Ц:ئ:::::: :и(:ظ0:8:@:H:P: X:0`:8h:@p:x:::::H:P:X:`:p:Ȥ:ȜФ:ؤ::7:::::Ш:ب: :(:0:8:@:H:йP:X:`:h:p: x:0:8:@:H:::P:X:h:xȥ:Х:إ:::Ⱥ:غ:::::X :(:0:8:@:H: P:(X:0`:@h:Hp:Xx: :::ȫ:Ы:ث::0f:h:xȦ:Ц:ئ:::л::::l:Ȭ: :ج(:0:8:@:H:P:X:`:h:8p:@x:H::: :o:`: l:h:p:xȧ:Ч:ا::::::ȭ:Э:ح:( :(:0:8:@:H:8P:HX:@`:Ph:pp:ox:X:`:p:x::::::Ȩ:Ш:ب:м:::::::: : (:(0:08:8@:@H:HP:X:Pp`:h:pp:Hpx:p:: :(:0:@:H:X:X:`ȩ:hЩ:pة:::::: p::: :ȯ(:Я0:8:@:hH:P:X:`: h:(p:0x:8:@:P:X:`:h:p:x::1Ȫ:pЪ:xت:":::::Ƚ:ؽ:: :(:0: 8:0@:@H:PP:`X:p`:h:p:x::::о::::::ȫ:Ы:ث: :(:::::0:8:H :X(:0:`8:h@:pH:xP:X:`:h:p:x:::п::::::@d:`dȬ:HdЬ:Pdج:hd:pd:xd:d:d:d::(:8 :H(:X0:`8:p@:2H:3P:xX:2`:h: +p:x:::::::::: ȭ:Э:ح:: :(:0:8:@:H:P:X :`(:h0:p8:x@:H:P:X:`:h:p:x::::::::::ؓȮ:Ю:خ::: :(:0:8:@:H:P :X(:`0:h8:p@:xH:P:X:`:h:p:x::::::::::ȯ:Я:د::: :(:v::: :(:0:8:@:H:P:X:`:h:p:x::: :(:0:8:@:H:P:XȰ:`а:hذ:p:x::::::: :(:0:8:@:H:P:X:`:h:p:x:: :(:0:8:@:H:P:X:`ȱ:hб:pر:x:::::::: :(:0:8:@:H:P:X:`: h: p: x: : : : : : : :( :8:0 Ȳ:/ в: ز: (: 8: @:P: h::::(ȳ:8:H:X:p(:@:X:p::؍::д:(:@:X:h0:H:`:x::Ȏ:؎ص: :h(:0:8:Ȍ@:،H:P:X: `:(h:0p:8x:@:H:P:X:`:h:p:x::ȶ:ж:ض::X#;:";:;:::x::::: ::(::0::8:(:@::H:8:P::X::`::h::p: :x:h::::::@::::::::X::::@ȷ:Hз:Pط:X:`:p:::::: :(:0:8:@:H:P:X:`:h:p:x:: :0:@:H:|::P:X:`ȸ:pи:ظ:::::::::# :(:0:8:@:H:P: X:(`:0h:@p:Px:X:`:h:p:x::::: ȹ:inus_cPerl_PerlIO_stdoutPerl_PerlIO_flushPerl_my_fflush_allPL_main_cvPerlIO_destructPerlIO_cleanupPerl_PerlIO_closePL_minus_FPL_minus_nPL_minus_pPL_minus_lPL_unsafePL_ofsgvPL_ors_svPL_efloatbufPL_statgvPL_efloatsizePL_argvoutgvPL_last_in_gvPL_DBcontrolPL_replgvPL_argvout_stackPL_subnamePL_collation_namePL_numeric_namePL_numeric_radix_svPL_underlying_radix_svPL_warn_localePL_AboveLatin1PL_Assigned_invlistPL_GCB_invlistPL_HasMultiCharFoldPL_InMultiCharFoldPL_Latin1PL_LB_invlistPL_SB_invlistPL_SCX_invlistPL_UpperLatin1PL_in_some_foldPL_utf8_foldclosuresPL_utf8_idcontPL_utf8_idstartPL_utf8_perl_idcontPL_utf8_perl_idstartPL_utf8_xidcontPL_utf8_xidstartPL_WB_invlistPL_utf8_toupperPL_utf8_totitlePL_utf8_tolowerPL_utf8_tofoldPL_utf8_tosimplefoldPL_utf8_charname_beginPL_utf8_charname_continuePL_utf8_markPL_CCC_non0_non230PL_Private_UsePL_XPosix_ptrsPL_Posix_ptrsPerl_sv_clearPL_psig_namePL_psig_pendPL_psig_ptrPL_taint_warnPL_debugPL_mess_svPerl_PerlIO_restore_errnoPerl_my_exitabortPL_origargvPerlIO_putsPerl_moreswitchesPerl_grok_bin_oct_hexPerl_newSVPL_do_undumpperl_parsePL_origalenPL_origargcPL_basetimePerl_hv_name_setPL_globalstashPerl_set_caret_XPerl_gv_fetchfilePerl_PerlIO_stdinPerl_rsignal_statePerl_pad_newPerl_setdefoutPL_defoutgvPL_signalsPerl_sv_catpvPL_minus_EPerlIO_fdopenPerl_PerlIO_filenofstat64PerlIO_openPL_my_environPerlIO_binmodePerl_sv_getsstrstrPerlIO_ungetcPerl_gv_checkPerl_filter_addPerl_rsignalperl_runPerl_my_failure_exitPerl_xs_boot_epilogPerl_mro_meta_initPerl_mro_get_linear_isaXS_NamedCapture_flagsPerl_sv_setuvPerl_gv_stashpvnPerl_sv_blessPerl_sv_isobjectXS_UNIVERSAL_import_unimportPerl_sv_reftypePerl_sv_derived_from_svPerl_sv_derived_from_pvPerl_sv_derived_from_pvnPerl_vnormalPerl_vstringifyPerl_sv_derived_from_hvPerl_sv_isa_svPerl_gv_fetchmeth_pvnPerl_sv_does_svPerl_sv_eq_flagsPL_isa_DOESPerl_sv_refPerl_tmps_grow_pXS_UNIVERSAL_DOESPerl_sv_doesPerl_sv_does_pvPerl_sv_does_pvnPerl_croak_xs_usageXS_UNIVERSAL_isaXS_UNIVERSAL_canPerl_gv_fetchmethod_sv_flagsXS_utf8_is_utf8XS_utf8_validPL_extended_utf8_dfa_tabPerl_is_utf8_FF_helper_XS_utf8_encodePerl_sv_utf8_encodeXS_utf8_decodePerl_sv_pvn_force_flagsXS_utf8_upgradePerl_sv_utf8_upgrade_flags_growPerl_sv_setiv_mgXS_utf8_downgradePerl_sv_utf8_downgrade_flagsXS_utf8_native_to_unicodePerl_sv_2uv_flagsXS_utf8_unicode_to_nativeXS_Internals_SvREADONLYXS_constant__make_constXS_Internals_SvREFCNTXS_Internals_hv_clear_placeholdPerl_hv_clear_placeholdersXS_Internals_stack_refcountedXS_PerlIO_get_layersXS_re_is_regexpPerl_get_re_argXS_re_regnames_countXS_re_regnameXS_re_regnamesXS_re_regexp_patternXS_NamedCapture_tie_itPerl_sv_setrv_noincPerl_sv_unmagicXS_NamedCapture_TIEHASHPerl_newSVrvXS_NamedCapture_FETCHPerl_croak_no_modifyXS_NamedCapture_FIRSTKEYPerl_vnumifyPerl_av_reifyPerl_av_extendPerl_newSVpv_sharePerl_mg_copyPerl_av_makePerl_newAVavPerl_newAVhvPerl_hv_iterkeysvPerl_hv_itervalPerl_mg_clearPerl_av_popPerl_av_lenPerl_av_fillPerl_av_undefPerl_av_deletePerl_av_existsPerl_av_arylen_pPerl_av_iter_pXS_builtin_trueXS_builtin_falseXS_builtin_infPL_infXS_builtin_nanPL_nanXS_builtin_func1_voidXS_builtin_load_moduleXS_builtin_trimPerl_report_uninitPerl_pad_add_name_svXS_builtin_created_as_stringXS_builtin_created_as_numberXS_builtin_export_lexicallyPerl_sv_setuv_mgPerl_sv_setpv_mgPerl_sv_setnv_mgXS_builtin_func1_scalarPerl_pad_findmy_svXS_builtin_importreadlinkPerl_valid_identifier_svPerl_scan_versionPerl_save_set_svflagsPerl_newHVhvPerl_croak_kw_unless_classPerl_newSVobjectinjected_constructorPerl_save_clearsvPerl_find_runcvPerl_class_setup_stashPerl_suspend_compcvPerl_class_apply_attributesPerl_class_seal_stashPerl_resume_compcvPerl_padnamelist_freePerl_class_prepare_initfield_parsePerl_class_prepare_method_parsePerl_class_add_fieldPerl_padnamelist_storePerl_newPADNAMELISTPerl_class_apply_field_attributesPerl_class_set_field_defopPerl_class_add_ADJUSTPerl_debPerl_vdebPerl_debstackptrsPerl_debstackPL_forkprocessPerl_my_pclosefcntl64PL_strategy_dupPL_strategy_dup2dup3Perl_PerlIO_clearerrgetsocknamePerlIO_opennPL_warn_nlPL_strategy_open__open64_2PL_strategy_open3PL_strategy_mkstempmkostemp64mkstemp64PL_strategy_pipepipe2PL_strategy_socketPL_strategy_acceptaccept4PL_strategy_socketpairPerlIO_intmode2strPerl_my_popen_listPerlIO_apply_layersPerl_my_popenPerlIO_fdupopenPerl_sv_2ioPerl_taint_envPerl_looks_like_numberPerl_do_opennPerl_PerlIO_errorPerl_my_dirfdrenameatfchmodunlinkatunlinkrenameclosedirPerl_do_closePerl_mg_findextPerl_mg_freeextPL_lastfdPL_filemodePL_oldnameumaskopendirfchownPerl_sv_untaintPerlIO_has_cntptrPerl_PerlIO_get_cntPerlIO_getcPerlIO_canset_cntPerl_PerlIO_set_cntPerl_PerlIO_tellPerl_PerlIO_seeklseek64PerlIO_isutf8Perl_uiv_2bufPerl_PerlIO_writePerl_utf8_to_bytes_Perl_bytes_to_utf8_free_mePerl_my_stat_flagsPL_statcachePerl_my_lstat_flagslstat64execvpPL_sh_pathexeclPerl_whichsig_pvnkillpgPerl_sv_taintedfutimes__getgroups_chkmsggetshmgetsemgetmsgctlPerl_sv_2pvbyte_flagssemctlshmctlmsgsndmsgrcvsemopshmatshmdtPerl_save_helem_flagsPL_strict_utf8_dfa_tabPerl_utf8_to_uv_msgs_helper_Perl_do_joinPerl_do_sprintfPerl_sv_vsetpvfnPerl_is_lvalue_subPerl_sv_usepvn_flagsPerl_hv_placeholders_getPerl_grok_bslash_cPerl_form_alien_digit_msgPerl_pv_uni_displayPerl_form_cp_too_large_msgPerl_grok_bslash_oPerl_grok_bslash_xPerl_gv_fullname4PL_op_sequencePL_op_seqPerlIO_vprintfPerl_pv_escapePerl__is_uni_FOOPerl_my_snprintfPerl_pv_displayPerl_sv_peekPerl_set_numeric_standardPerl_set_numeric_underlyingPerl_sv_uni_displayPerl_dump_vindentPerl_dump_indentPerl_opdump_printfPerl_vnewSVpvfPerl_gv_dumpPerlIO_putcPerl_do_hv_dumpPerl_do_gv_dumpPerl_do_gvgv_dumpPerl_multideref_stringifyPerl_multiconcat_stringifyPerl_debopPerl_runops_debugPL_watchokPerl_op_classop_class_namesop_flags_namesPL_op_private_bitdef_ixPL_op_private_labelsPL_op_private_bitdefsPL_op_private_bitfieldspmflags_flags_namesPerl_do_pmop_dumpPerl_pmop_dumpPerl_do_op_dumpPerl_op_dumpPerl_dump_subPerl_dump_formPerl_dump_packsubsPerl_PerlIO_setlinebufPerl_dump_evalPerl_dump_allPerl_do_sv_dumpfirst_sv_flags_namessecond_sv_flags_namescv_flags_namesPerl_do_magic_dumpPerl__invlist_dumphv_flags_namesregexp_extflags_namesgp_flags_imported_namesPL_core_reg_enginegp_flags_namesregexp_core_intflags_namesPL_magic_vtable_namesPerl_magic_dumpPerl_sv_dump_depthPerl_sv_dumpPerl_av_dumpPerl_hv_dumpPerl_debprofdumpPL_EXACT_REQ8_bitmaskPL_EXACTFish_bitmaskPL_simple_bitmaskPL_simplePL_varies_bitmaskPL_variesPL_reg_intflags_namePL_reg_extflags_namePL_regnode_infoPL_regnode_namePL_c9_utf8_dfa_tabPL_deBruijn_bitpos_tab64PL_deBruijn_bitpos_tab32PL_valid_types_NV_setPL_valid_types_IV_setPL_valid_types_RVPL_valid_types_PVXPL_valid_types_NVXPL_valid_types_IVXPL_magic_dataPL_runops_dbgPL_runops_stdPL_user_def_propsPL_infix_pluginPL_keyword_pluginPL_watch_pvxPL_perlio_debug_fdPL_perlio_fd_refcnt_sizePL_perlio_fd_refcntPL_csighandler3pPL_csighandler1pPL_csighandlerpPL_wcrtomb_psPL_mbrtowc_psPL_mbrlen_psPL_fold_localePL_random_statePL_body_arenasPL_ptr_tablePL_pad_reset_pendingPL_colorsetPL_in_utf8_COLLATE_localePL_collxfrm_basePL_padix_floorPL_constpadixPL_padixPL_max_intro_pendingPL_min_intro_pendingPL_delaymagic_egidPL_delaymagic_gidPL_delaymagic_euidPL_delaymagic_uidPL_nomemokPL_comppad_name_floorPL_comppad_name_fillPL_reentrant_retintPL_colorsPL_secondgvPL_firstgvPL_sortstashPL_sortcopPL_lastgotoprobePL_hv_fetch_ent_mhPL_naPL_SvPL_padname_constPL_padname_undefPL_regmatch_statePL_sv_arenarootPL_localizingPL_curpm_underPL_multideref_pcPL_op_private_validPL_phase_namesPL_block_typePL_mod_latin1_ucPL_latin1_lcPL_fold_latin1PL_foldPL_sig_numPL_sig_namePL_bitcountPL_uudmapPL_uuemapPL_subversionPL_versionPL_revisionPL_hexdigitPL_ZeroPL_extended_cp_formatPL_no_localize_refPL_no_myglobPL_no_funcPL_no_dir_funcPL_no_sock_funcPL_no_securityPL_no_modifyPL_no_helem_svPL_no_aelemPL_no_usymPL_no_symref_svPL_no_symrefPL_no_wrongrefPL_warn_reservedPL_warn_nosemiPL_warn_uninit_svPL_warn_uninitPerl_infix_plugin_standardPerl_keyword_plugin_standardPerl_csighandler3Perl_csighandler1Perl_csighandlerPerl_re_compilePerl_regexec_flagsPerl_re_intuit_startPerl_re_intuit_stringPerl_regfree_internalPerl_reg_numbered_buff_fetchPerl_reg_numbered_buff_storePerl_reg_numbered_buff_lengthPerl_reg_named_buffPerl_reg_named_buff_iterPerl_reg_qr_packagePerl_gv_const_svPerl_newGPPerl_sv_del_backrefPerl_gp_refPerl_gp_freePerl_gv_name_setPerl_gv_init_pvPerl_mro_package_movedPerl_hv_clearPerl_gv_fetchfile_flagsPerl_fatal_warnerPerl_gv_stashpvPerl_save_scalarPerl_gv_fetchmeth_pvPerl_gv_fetchmeth_pvn_autoloadPerl_gv_fetchmeth_sv_autoloadPerl_gv_fetchmeth_pv_autoloadPerl_gv_autoload_pvnPerl_gv_autoload_svPerl_gv_autoload_pvPerl_gv_fetchmethod_pvn_flagsPerl_gv_fetchmethod_pv_flagsPerl_gv_fetchmethod_autoloadPerl_Gv_AMupdatePerl_amagic_appliesPerl_amagic_callPerl_try_amagic_unPerl_try_amagic_binPerl_amagic_deref_callPerl_gv_handlerPerl_gv_fetchmeth_svPerl_newGVgen_flagsPerl_hv_fillPerl_hv_riter_pPerl_hv_eiter_pPerl_hv_riter_setPerl_hv_rand_setPerl_hv_eiter_setPerl_hv_iterkeyPerl_unsharepvnPerl_hv_free_entPerl_hv_delayfree_entPerl_hv_placeholders_pPerl_hv_scalarPerl_hv_bucket_ratioPerl_hv_iternextsvPerl_hv_placeholders_setPerl_sv_setpvn_freshPerl_hv_undef_flagsPerl_refcounted_he_chain_2hvPerl_refcounted_he_fetch_pvPerl_refcounted_he_fetch_svPerl_refcounted_he_new_pvnPerl_refcounted_he_new_pvPerl_refcounted_he_new_svPerl_locale_panicPerl_mini_mktimenl_langinfostrpbrkPerl__byte_dump_stringPerl_newSVpvzPerl_warn_problematic_localePerl_setlocalePerl_mbtowc_mbtowcPerl_localeconvPerl_sv_langinfoPerl_langinfoPerl_langinfo8Perl_my_strftimePerl_sv_strftime_intsPerl_sv_strftime_tmPerl_utf8_length__ctype_b_locPerl_strxfrmtowupper__ctype_get_mb_cur_max__ctype_tolower_loc__ctype_toupper_loctowlowerPerl_switch_to_global_localePerl_sync_localePerl_refPerl_sv_unrefPerl_sv_unref_flagsPerl_sv_taintPerl_sv_2ivPerl_sv_2uvPerl_sv_2nvPerl_sv_2pvPerl_sv_2pv_nolenPerl_sv_2pvbyte_nolenPerl_sv_2pvutf8_nolenPerl_sv_2pvutf8_flagsPerl_sv_force_normalPerl_sv_setsvPerl_sv_catpvnPerl_sv_catpvn_mgPerl_sv_catsvPerl_sv_catsv_mgPerl_sv_pvPerl_sv_pvn_forcePerl_sv_pvbytePerl_sv_pvutf8Perl_sv_utf8_upgradePerl_hugePerl_gv_fullname3Perl_gv_efullname3Perl_gv_fetchmethodPerl_hv_iternextPerl_hv_magicPerl_do_openPerl_do_aexecPerl_sv_nolockingPerl_sv_usepvn_mgPerl_sv_usepvnPerl_hv_store_entPerl_hv_exists_entPerl_hv_fetch_entPerl_hv_delete_entPerl_hv_store_flagsPerl_hv_storePerl_hv_existsPerl_hv_fetchPerl_hv_deletePerl_newAVPerl_newHVPerl_sv_insertPerl_save_freesvPerl_save_mortalizesvPerl_save_freeopPerl_save_freepvPerl_save_opPerl_gv_SVaddPerl_gv_AVaddPerl_gv_HVaddPerl_gv_IOaddPerl_newIOPerl_my_statPerl_my_lstatPerl_sv_eqPerl_sv_collxfrmPerl_sv_collxfrm_flagsPerl_sv_2boolPerl_newSUBPerl_sv_mortalcopyPerl_sv_copypvPerl_is_utf8_char_bufPerl_utf8_to_uvuniPerl_newSVsvPerl_sv_utf8_downgradePerl_sv_2pvutf8Perl_sv_2pvbytePerl_uvuni_to_utf8Perl_utf8n_to_uvuniPerl_utf8_to_uvchrstrnlensigprocmaskPerl_mg_magicalPerl_save_allocPerl_sv_set_undefPerl_emulate_cop_ioPerl_sv_string_from_errnumPerl_sv_setrv_incPerl_sv_rvweakenPerl_delimcpy_no_escapePerl_my_clearenvPerl_save_re_contextPerl_sv_regex_global_pos_getPerl_sv_regex_global_pos_setPerl_sv_regex_global_pos_clearPerl_sv_len_utf8Perl_sv_pos_u2b_flagsPerl_sv_len_utf8_nomgPerl_vivify_defelemPerl_mg_find_mglobprctlsetegidsetgroupsseteuidsetreuidsetregidPerl_new_warnings_bitfieldsigemptysetsigaddsetPerl_whichsig_svPerl_whichsig_pvPerl_perly_sighandlerPerl_sv_2cvsigactionPerl_die_svsigismemberPerl_mro_get_private_dataPerl_mro_set_private_dataPerl_mro_get_from_namePerl_mro_registerXS_mro_method_changed_inPerl_mro_set_mroPerl_my_strtodPerl_cast_ulongPerl_cast_i32Perl_cast_ivPerl_cast_uvPerl_grok_binPerl_grok_hexPerl_grok_octPerl_scan_binPerl_scan_octPerl_scan_hexPerl_grok_numeric_radixPerl_grok_number_flagsPerl_grok_infnanPerl_my_atof3Perl_my_atofPerl_my_atof2Perl_isinfnanPerl_find_rundefsvPerl_save_strlenPerl_pad_pushPerl_newPADNAMEpvnPerl_newPADNAMEouterPerl_padname_freePerl_save_boolPerl_pad_add_name_pvPerl_pad_findmy_pvXS_PerlIO__Layer__NoWarningsPerlIOUtf8_pushedPerlIOBase_noop_okPerlIOBase_noop_failPerlIOBase_eofPerlIOBase_errorPerlIOBase_setlinebufPerlIOUnix_filenoPerlIOBuf_get_basePerlIOUnix_tellPerlIOStdio_errorferrorPerlIOStdio_readfreadfgetcPerlIOStdio_seekfseeko64PerlIOStdio_tellftello64PerlIOStdio_flushfflushPerlIOStdio_fillPerlIOStdio_eoffeofPerlIOStdio_clearerrPerlIOStdio_setlinebufPerlIOUnix_seekPerlIOStdio_writefwritePerlIOBase_poppedPerlIOBuf_poppedPerlIOStdio_filenoPerlIOScalar_eofperlsio_binmodePerlIO_debugPerlIO_allocatePerlIO_list_allocPerlIO_list_freePerlIO_list_pushPerlIO_clone_listPerlIO_clonePerlIO_popPerlIOBase_binmodePerlIOPending_flushPerlIOCrlf_binmodePerlIO_find_layerPerlIO_tab_svXS_PerlIO__Layer__findPerlIO_define_layerPerlIO_parse_layersPerlIO_default_bufferPerlIO_perlioPerlIO_arg_fetchPerlIO_layer_fetchPerlIO_default_layersPerlIO_unixPerlIO_rawPerlIO_stdioPerlIO_crlfPerlIO_utf8PerlIO_removePerlIO_bytePerlIO_default_layerPerlIO_pushPerlIO_apply_layeraPerlIOBase_filenoPerlIOPop_pushedPerlIORaw_pushedPerlIOBuf_seekPerlIOBuf_tellPerlIOPending_fillPerlIOPending_seekPerlIOBase_flush_linebufPerl_PerlIO_fillPerl_PerlIO_eofPerlIOBase_clearerrPerlIO_has_basePerlIO_fast_getsPerl_PerlIO_get_basePerlIOBuf_unreadPerlIOBase_unreadPerlIO_pendingPerl_PerlIO_unreadPerlIOStdio_unreadPerlIOBuf_writePerlIOBuf_get_ptrPerlIOBuf_get_cntPerlIOBuf_bufsizPerlIOBuf_set_ptrcntPerlIOPending_set_ptrcntPerlIOCrlf_unreadPerlIOCrlf_get_cntPerlIOCrlf_set_ptrcntPerlIOCrlf_writePerl_PerlIO_get_bufsizPerl_PerlIO_get_ptrPerl_PerlIO_set_ptrcntPerlIO_modestrPerlIOBase_pushedPerl_sv_lenPerlIOBuf_pushedisattyPerlIOCrlf_pushedPerlIOPending_pushedPerlIOBase_closePerlIO__closePerlIO_cleantablePerlIOBase_openPerlIOBuf_openPerlIOPending_closePerlIOBuf_closePerlIO_sv_dupPerlIOBase_dupPerlIOBuf_dupPerlIOUnix_refcnt_incPerlIOUnix_dupPerlIOStdio_dupPerlIOUnix_refcnt_decPerlIOUnix_closePerlIOStdio_closefclosePerlIOUnix_refcntPerlIOUnix_oflagsPerlIOUnix_pushedPerlIOUnix_openPerlIOStdio_modePerlIOStdio_pushedPerlIOStdio_openfreopen64fopen64PerlIO_importFILEPerlIO_exportFILEPerlIO_findFILEPerlIO_releaseFILEPerlIO_getnamePerlIO_rewindPerl_PerlIO_save_errnoPerlIOBase_readPerl_PerlIO_readPerlIOBuf_readPerlIOPending_readPerlIOUnix_readPerlIOUnix_writePerlIOBuf_flushPerlIOCrlf_flushPerlIOBuf_fillPerl_PerlIO_context_layersPerlIO_resolve_layersPerlIO_tmpfile_flagsPerlIO_stdstreamsPerlIO_stdoutfPerlIO_tmpfilePerlIO_reopenPerlIO_setposPerlIO_getposPerl_noperl_die__vfprintf_chkPerl_save_pptrPerl_yylexPerl_scan_numPerl_init_named_cvPerl_apply_builtin_cv_attributesPerl_sv_dec_nomgPerl_sv_inc_nomgPerl_save_hdeletePerl_save_pushptrptrPerl_save_hashPerl_save_aryPerl_clear_defarrayPerl_save_aelem_flagsPerl_save_adeletePerl_sv_setrv_noinc_mgPerl_save_padsv_and_mortalizePerl_save_gpPerl_softref2xvPerl_sv_pos_b2u_flagsPerl_block_gimmepowfmodPerl_repeatcpyPerl_sv_cmp_locale_flagsatan2sqrtcossinPerl_drand48_rPerl_rninstrPerl_fbm_instrPerl_sv_setsv_mgcryptPerl__to_utf8_lower_flagsPerl__to_utf8_title_flagsPerl__to_utf8_upper_flagsPerl__to_utf8_fold_flagsPerl__to_uni_fold_flagsPerl_sv_can_swipe_pv_bufPerl_sv_rvunweakenPerl_cxincPerl_filter_readPerl_save_I16Perl_sv_streq_flagsPerl_mortal_destructor_svPerl__is_utf8_perl_idcontmemmemPerl_reg_temp_copyPerl_sv_magicext_mglobPerl_dowantarrayPerl_was_lvalue_subPerl_caller_cxPerl_savestack_grow_cntPerl_leave_adjust_stacksPerl_get_db_subPerl_save_deletePerl_sv_pvbyten_forcePerl_rpp_free_2_setresuidsetresgidPerl_sv_grow_freshPerl_vcroakmodfPerl_unpackstringPerl_packlistPerl_sv_cmp_localePerl_sv_cmpPerl_sortsv_flagsPerl_sortsvPerl_warn_svselectPerl_sv_pvutf8n_forcerecvfromsendtosendftruncate64ioctlflockconnectbindlistenshutdowngetsockoptsetsockoptgetpeernameeaccessfchdirchrootsymlinkmkdirrmdirreaddir64telldirseekdirrewinddirsigfillsetPerl_my_forksleepgetppidgetpgidsetpgidgetprioritysetpriorityPerl_gmtime64_rPerl_sv_setpvf_mgPerl_localtime64_ralarmpausegethostent__h_errno_locationgethostbyaddrgethostbynamegetnetentgetnetbyaddrgetnetbynamegetprotoentgetprotobynumbergetprotobynamegetserventgetservbyportgetservbynamesetnetentsetserventsetprotoentsethostentendserventendnetentendgrentendpwentendhostentsetgrentsetpwentendprotoentgetspnamgetpwuidgetpwnamgetpwentgetgrentgetgrgidgetgrnamgetloginsyscallPerl_reentrant_sizePerl_reentrant_initPerl_reentrant_freePerl_reentrant_retryPerl__is_utf8_FOOPerl__invlist_intersection_maybe_complement_2ndPerl_vmessPerl_reginitcolorsPerl_pregcompPerl_regcurlyPerl__to_fold_latin1Perl__inverse_foldsPerl__invlistEQPerl_invlist_clonePerl_pregfreePerl_pregfree2match_unipropPerl__new_invlist_C_arrayPerl_do_uniprop_matchPerl_get_prop_definitionPerl_get_prop_valuesPerl_get_deprecated_property_msgdeprecated_property_msgsPerl__invlist_union_maybe_complement_2ndPerl_load_charnamesstrspnPerl_cntrl_to_mnemonicPerl_get_and_check_backslash_N_namestrcspnPerl_regdumpPerl_regpropPerl__setup_canned_invlistPerl_sv_setsv_cowPerl_isSCRIPT_RUNPerl_foldEQ_utf8_flagsPerl_pregexecPerl_reg_named_buff_existsPerl_reg_named_buff_firstkeyPerl_reg_named_buff_nextkeyPerl_reg_named_buff_scalarPerl_reg_named_buff_allPerl_reg_numbered_buff_fetch_flagsPerl_reg_named_buff_fetchPerl_new_stackinfoPerl_savestack_growPerl_save_rcpvPerl_save_generic_pvrefPerl_save_shared_pvrefPerl_save_pushi32ptrPerl_save_I8Perl_save_ivPerl_save_hptrPerl_save_aptrPerl_save_freercpvPerl_save_destructorPerl_save_svrefPerl_sv_replacePerl_cx_dumpPerl_mortal_svfunc_xfrexpPerl_sv_report_usedPerl_sv_get_backrefsPerl_sv_newrefPerl_sv_numeq_flagsPerl_sv_freePerl_sv_unmagicextPerl_sv_truePerl_sv_isaPerl_ptr_table_newPerl_ptr_table_fetchPerl_ptr_table_splitPerl_ptr_table_storePerl_ptr_table_freePerl_sv_vstring_getPerl_sv_set_truePerl_sv_set_falsePerl_sv_set_bool__sprintf_chkPerl_sv_resetPerl_sv_setrv_inc_mgPerl_sv_pos_u2bPerl_sv_pos_b2uPerl_sv_setpvn_mgPerl_sv_setref_pvnPerl_sv_cat_decodePerl_sv_setref_uvPerl_sv_setref_pvPerl_sv_setref_ivPerl_sv_setref_nvPerl_sv_catpv_mgPerl_sv_catpv_flagsPerl_sv_vcatpvfn_flagsPerl_scan_vstringPerl_sv_vcatpvfPerl_sv_catpvf_mgPerl_sv_vsetpvfPerl_sv_vsetpvf_mgPerl_sv_vcatpvfnPerl_sv_vcatpvf_mgPerl_newSVboolPerl_newSV_truePerl_newSV_falsePerl_sv_recode_to_utf8localtimePerl_lex_bufutf8Perl_lex_grow_linestrPerl_lex_stuff_pvnPerl_lex_stuff_pvPerl_lex_stuff_svPerl_lex_unstuffPerl_lex_read_toPerl_lex_discard_toPerl_str_to_versionPerl_utf16_to_utf8_basePerl_scan_wordPerl_lex_next_chunkPerl_lex_peek_unicharPerl_lex_read_unicharPerl_lex_read_spacePerl_skipspace_flagsexecvPerl_prescan_versionPerl_scan_strPerl_delimcpyldexpPerl_wrap_keyword_pluginPerl_wrap_infix_pluginPerl_parse_arithexprPerl_parse_termexprPerl_parse_listexprPerl_parse_fullexprPerl_parse_blockPerl_parse_barestmtPerl_parse_labelPerl_parse_fullstmtPerl_parse_stmtseqPerl_parse_subsignaturePerl_valid_identifier_pvePerl_valid_identifier_pvnnonchar_cp_formatsuper_cp_formatsurrogate_cp_formatPerl_uvoffuni_to_utf8_flagsPerl_is_utf8_char_helper_Perl_utf8_to_bytesPerl_bytes_from_utf8Perl_utf16_to_utf8Perl_utf16_to_utf8_reversedPerl_utf8_to_utf16_basePerl__is_uni_perl_idcontPerl__is_uni_perl_idstartPerl_to_uni_upperPerl_to_uni_titlePerl_to_uni_lowerPerl_mallocPerl_callocPerl_reallocPerl_mfreePerl_ninstrPerl_savesharedpvnPerl_mess_svPerl_vformPerl_vwarnPerl_vfatal_warnerPerl_vwarnerunsetenvPerl_atfork_lockPerl_atfork_unlockwaitpidPerl_set_contextPerl_get_op_namesPerl_get_op_descsPerl_get_ppaddrPerl_init_tmPerl_getcwd_svgetcwdPerl_vverifyPerl_my_socketpairgettimeofday__vsnprintf_chkPerl_my_vsnprintfPerl_xs_handshakeXS_DynaLoader_dl_undef_symbolsXS_DynaLoader_dl_errorXS_DynaLoader_dl_unload_filedlclosedlerrorXS_DynaLoader_dl_install_xsubXS_DynaLoader_dl_load_filedlopenXS_DynaLoader_dl_find_symboldlsymboot_DynaLoader__environlibm.so.6libcrypt.so.1libc.so.6ld-linux-aarch64.so.1XCRYPT_2.0GLIBC_2.17GLIBC_2.29GLIBC_2.28GLIBC_2.33GLIBC_2.34 r `]rr rr0rrr rrrrv:v:8v:d0Xv:C`v:Lhv:0Opv:Qxv:`Rv:ev:/v:jv:@*v:jv:t,w:w:pf(w:h0w:p8w:x@w:Hw:Pw:Xw:`w:hw:pw:xw:w:w:w:ȓw:Гw:ؓw:w: +w:pw:xw:w:w:w:w:w:w:x:x:x:x: x:(x:0x: @x:ЈPx:`x:px:ȏx:؏x:x:x:x:x:x:0x:@y:Py:X y:h0y:p@y:Py:`y:py:y:y:Ȑy:ؐy:y:y:y: y:(z:8z:H z:P0z:X@z:hPz:x`z:pz:z:z:z:z:z:Бz:z:z:{:{: {:(0{:8P{:(`{:0p{:@{:P{:`{:p{:{:{:{:{:|:ȋ|:؋ |:0|:@|:P|:`|:0p|:@|:P|:`|:x|:|:|:|:|:Ќ}:}: }:0}:@}:P}:(`}:8p}:@}:H}:P}:X}:`}:h}:p}:x}:~:~: ~:0~:ȍ@~:؍P~:`~:p~:~:~:~:~:~:0~:@~:P~:`:p: :0:@:P:`:p:Ў::::: :(:8:H:P:X :`0:h@:pP:x`:p::::: +:@:H:PȀ:XЀ:`؀:h:p:x::::: :0:@:P:Ȓ`:Вp::::::Ё:(:0:@:H:`:H :P(:`0:h8:x@:H:P:yX:`:h:p:Дx::::: :0:8:H:X:hȂ:xЂ:؂:::::ȕ:ؕ::: : (:@0:P8:`@:pH:P:X:`:h:p:Ȗx:ؖ:: +:2::::::ȃ: Ѓ:(؃:0:8:@:H:P:X:`:h:p :x(:0:8:@:H:P:X:`:h:ȗp:Зx::::::::: :(Ȅ:0Є:8؄:@:H:P:X:`:h:p:: :(:0:Ș8:ؘ@:H:P:X:`:h: p:0x:8:@:H:P:X:`:h:` tHd c(O4  <  H#<?(,<5 hA  , [ 0 Z `^ ['< q\ H `M @G hP  Z . lG :- U d7 pa @D  ^ 0<%F 8 _K A "!<+ LE  d# <" bi H] 3a _ d(N  {{* O  4VXl;; ``,<XVn;%a V  hl dJ!  ! *< `x  i P$&< 0@h&<#<%< x  p2* T ^Z , A     : G=;S I > >8 4   0\ TU I xq '<' 0d+<.L D ' Ё i + 0le@ 0B  hf 3Z 0 ] =#<yg bY $ d6 #`!<*) D  ye  L TE i `L P&<"!<8  @t 4+ paN c ]H  \c!<,m b "5 PQ$<  d#0 <7 . X[ '<U  iI p> I > =<`d  p @% dX) T6 x%  P# ; x  TEq 0vj P3DhR \* D  D~0%<DW  `Wh; x,8 P3 X{0'<:A XDX  3,&<9 [ 1Q @. k%<:B :|!P(<W P DN H ' prfo ^ 8 T%'<" `>7#<( P;R T $$  w@[ D z tBpA `@j\ $N tO 4J% #  ,<  $ pJ 4+W   @@p;P h `3 &<,! pa* A & xd2 *< dP;E [ A T( i,<I+ @ &<&< %'<+1 pb`cP dKP 0 M *<i p b7 , p91&<a ph>o YQ 0 da K A $&D (}P  ;i \$ Lo bt00 @YLv) P[ `e[ E B t\ 2; % HBe `g >M G   0<"'<B @ ml \0 ',<GO $R8B ?' P $_n ,;`;>( ďdC+<5 d((<P0 ^"  0a 4Li- lY " X  \2 HZ P, | t \P " 5  xQ H @P з R  <0,<] 38Y  D d[ 0s, P D$H9 U ,>0$<( ԗ<,h z0; h69 U 8 2  Ci! TyW P 0+<&  PhLH  , @u 0 V  HL pE  tUi;2K @ $7&'<p#<5Y  m T!<  phN%<-e @c1 ;p @(<lG  \zX   ,<!8*<D P x&<  f pt|,<&<Y  ;$<   DNq h. j8l \   DY"#<J ? z` pZ `4 @ %<g  `(  H,< _1Ƚ;@ \ V !*<& H  vx<X<NL E  ?(<0p#<%<LX  PF+ pb` @w;#X!<j?*<  &<P  e 4) UW  \Ir 0k4  XS !#<j w@6X,<X  `*@ @ zl ^q 7"($<0 \ zS @m tA3  wq td 6O `I8\ H V F N `"; H PP-A (,g  0@ {c  `@#@ <; =$<M 0H b/ 9\d `Rp PH)< @< 4  `M PH - phd t@ R $<P+<`U PC%<w3 $_ G P %&<`% $1 Lp Ы$<i #C T @ )<% P Dh) `?+<\  W?(<!  AR Z x'i ` ] r4,<N @M t8 4= `n ri'<,<ef  PfK @  pzD [\ $x\ h ԫY ! P<X  PVe sC ԝ  ,<V P ,% = 8l;wR @| H7@  05F 4 <?K @ h $< MQ , ]4 ,- aS  zh 4us htG;  h :8<g;o;Y $  p82  [Q 0, 1;]  \ V I- XL `E ; MdE  0E t3 @P @ <SC S  0#</  > 3 P X$ V  D T DN@  1 n y6FE<  : ` $W' ԁU P Lk pIA B:X $M G 4 [>S ` l 7#^ 0 K pB DR d, Z ( PL F j [4 T?- t -  #<M D4 'r '<#<$#<&U tK B HS,<G Co d`4W 4 d~ lT P`2 0HA ('<e m  @H1 qm _ 4jD $<X `  ;X p HY ! d&j _ X| aX  Z `) !(    $^ \l )<$<1;;"p!<sO $ N Id&,<8 `= __ i=Ȟ;{+ 0@ g F J P@ \ gx#<0#H <&  @1;  c 0$N T p;M pH Xq2 @ 1 dbH 4H s8 09 Sh z !* 8S(*<n P,+ P _ X/ NV ` ,"9x:' H `j `SO>X$<m q$<B @n m $p?*<67 0* 4}+< 8 P1 LL F Q C H $ XU Q `= 4# #fN;. | ED  E`<OI = dI[ $< | $& zTr^ P^T 4?+<8  ЬW 0 f Ppi U\ $R |& @4@*<A 92J ? 0 ` N#<8  F 0E <:/ i x lP&h'<{!j'<$&<l 0o%<) :- T] ău  p `, l+< x@x0&<K @A 4y[ ? 4H " <H  ( & < ] hk PMK @ l;:H{:L E  wT   @l ^\g PbF>P$<Y@ح:({( (H @ xRa +< D  '< F s7 > X  <^; 8=h<OJ 0?  `'<Z 5 h D"!<gC ` tJ ? G  ;?p(<t k'<h T? n  o'<3^ S,<Z$<P  `: F tw T >H%<S @ / LkH P \_T  L B LW7 # Po ^ l 0SH9:>'<%< P0'[ : !l'<v %<!n'<.` p$K A ) !m'<) 5P p$n p,<G PG7 $# 8:`T D Dm;&;u $<[+ PI > e D)  ,9 @[  /VF @: G.  Y (E 3 0qT d 00$8'< 4o1Ľ;[ d9 , d m' D9 X 7 $JH'<J , P,<h w ! P DJ ? Xp; HP (6H<C k 0& g `gk p P68$<n;% %/؟:X J p@ ' ?\ N 1 |  41  ?8,<6 Л P9 LP] @~8 4; ,, 8 , 8 |c^ 0n 1U  Pq @/q Dm;{' p#<s] 4yP / D8, О @h:p& @]   @|n 3 Zp$#<h;%P'<~7 0  >  X+ / @D |e '<Y `$ , @ dL E 3 DU DD N } @&<;P#<?0:8)X  L  $P-p&<Y ` \rB `,I; 4$<^ j rV8m; @,<!<;h zW dA 0&<l#<< Fa lr @*. 3g a)Z P* R 0 Ttm 9 4 p2M G sn x7*<?` $F?x(<[ ",<wQ - e p. $8. \[ < @ ! `  oJ P? 5 :;) D T @  `,U#8 <^ k\  TG  `=#<;%$<uL 4E ,< v?*<8.p m $)>@$<] ~Qx;#<` pfe 4n py65P { + l TH<\ TW + 1N S P  tS d #<x% Vp# d) #<8'<A  tT P n <* (' D#\)< 'j @h8m }p @] Ԕ\( x$/ {X`I `> S l?+<cD LW'< 481 h 8!&<.R Z dp dTn y6O  o 3R $` `- Pz; he 84%<@ '<& f_E  X  XR p D$Q # HD ԥ A6 E ,{  ĭ; t 0J @  k 4 e( q <(+ Ъ6@<yk T v  &<x_   G l \L?] `Ij =<*<8Z @+ oZ - ", PM  h. !#P!<,' @0*<W Q 6 x- >D%<?,<5F P9 $'<C __gmon_start___ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalizePL_compcvPL_comppad_namePL_cv_has_evalPL_cop_seqmaxmemsetPL_memory_wrapPerl_croakPL_curpmPerl_mg_findPerl_safesysfreePL_sv_immortalsPL_top_env__stack_chk_guard__sigsetjmpPL_delaymagicPL_runops__stack_chk_failPL_markstack_ptrPL_stack_spPL_stack_basePL_stack_maxPerl_stack_growPerl_cop_fetch_labelPerl_newSVpvn_flagsPerl_save_pushptrPerl_hv_commonPerl_sv_incPL_opPL_curstackinfomemcpyPerl_newSVivPerl_sv_2mortalPerl_cvgv_from_hekPL_hash_state_wPerl_sv_2iv_flagsPL_sv_rootPL_sv_countPL_body_rootsPerl_more_svPerl_more_bodiesPerl_sv_backoffPerl_optimize_optreePL_peeppPerl_finalize_optreePerl_pad_tidyPL_in_evalPL_main_startPL_eval_startPerl_sv_decPL_curcopPerl_newSVpvnPerl_newSVpvPL_op_namePerl_sv_free2Perl_gv_try_downgradePerl_Slab_AllocPerl_Slab_FreePL_comppadPerl_push_scopePL_curpadPerl_pop_scopePerl_messPerl_qerrorstrcmpPL_parserPL_charclassPerl_pad_add_name_pvnPL_curstashPL_defstashPerl_formmemchrPerl_force_out_malformed_utf8_message_Perl__is_utf8_perl_idstartPerl_op_refcnt_lockPerl_op_refcnt_unlockPerl_op_parentPL_ppaddrPerl_op_linklistPerl_sv_chopPerl_warnerPerl_sv_newmortalPerl_pv_prettyPerl_sv_2pv_flagsPerl_newSVpvn_sharePerl_padnamelist_fetchPerl_hv_common_key_lenPerl_blockhook_registerPL_blockhooksPerl_av_create_and_pushPerl_forbid_outofblock_opsPerl_save_vptrPerl_PerlIO_stderrPerlIO_printfPerl_newARGDEFELEMOPPerl_cv_ckproto_len_flagsPerl_ckwarn_dPerl_bytes_cmp_utf8Perl_sv_setpvnPerl_sv_catpvfPerl_sv_catpvn_flagsmemcmpPerl_newSVhek_mortalPerl_gv_efullname4Perl_sv_catsv_flagsPerl_cv_const_svPerl_cvgv_setPerl_cvstash_setPerl_gv_fetchsvPL_sub_generationPerl_mro_method_changed_inPerl_pad_add_anonPL_compilingPerl_ck_warnerPerl_rv2cv_op_cvPerl_cv_get_call_checker_flagsPerl_ck_entersub_args_proto_or_listPerl_cv_get_call_checkerPerl_cv_set_call_checker_flagsPerl_sv_magicPerl_mg_free_typePerl_cv_set_call_checkerPerl_custom_op_registerPL_custom_opsPerl_custom_op_get_fieldPL_custom_op_namesPerl_safesyscallocPerl_safesysmallocPL_custom_op_descsPerl_sv_magicextPL_op_descPerl_op_sibling_splicePL_opargsPL_NoPL_YesPerl_cv_namePerl_ckwarnPerl_sv_cmp_flagsPerl_wrap_op_checkerPL_checkPerl_rcpv_newPerl_rcpv_freePerl_op_freePL_opfreehookPerl_op_clearPL_WARN_ALLPL_WARN_NONEPerl_refcounted_he_freePL_phasePerl_av_fetchPerl_gv_add_by_typePerl_op_nullPerl_newSVpvfPerl_sv_2nv_flagsPerl_dorefPerl_ck_warner_dPerl_op_lvalue_flagsPL_modcountPerl_newOPPL_op_maskPerl_pad_allocPerl_newNULLLISTPerl_newLISTOPPerl_op_append_elemPerl_op_prepend_elemPerl_op_append_listPerl_op_scopePL_perldbPL_taintingPerl_op_force_listPerl_newUNOP_AUXPerl_newMETHOPPerl_newPMOPPerl_refcounted_he_fetch_pvnPerl_is_in_locale_category_Perl_newSVOPPerl_newGVOPPL_dowarnPL_warnhookPL_diehookPL_sv_placeholderPL_errgvPL_markstack_maxPerl_sv_setpv_bufsizePerl_mg_freePerl_markstack_growPerl_op_contextualizePerl_ck_entersub_args_listPL_debstashPerl_op_convert_listPerl_newLISTOPnPerl_newANONLISTPerl_newANONHASHPerl_newUNOPPerl_newPROGPL_eval_rootPL_main_rootPerl_get_cvn_flagsPerl_call_svPL_savestack_ixPerl_newRANGEPerl_sv_upgradePerl_newDEFEROPPerl_op_wrap_finallyPerl_newAVREFPerl_newGVREFPerl_newHVREFPerl_newCVREFPerl_newSVREFPerl_gv_fetchpvn_flagsPerl_newDEFSVOPPL_defgvPerl_gv_overridePerl_ck_entersub_args_protoPerl_newBINOPPerl_newSLICEOPPerl_newPVOPPL_curstnamePerl_save_generic_svrefPerl_save_itemPerl_gv_stashsvPerl_sv_setsv_flagsPerl_sv_2bool_flagsPerl_mg_getPerl_newLOGOPPerl_newCONDOPPerl_newSVuvPerl_newASSIGNOPPerl_sv_setivPerl_newTRYCATCHOPPerl_newLOOPOPPerl_newWHILEOPPerl_newFOROPPerl_newLOOPEXPerl_savesharedpvPerl_validate_protoPerl_sv_mortalcopy_flagsPerl_newFORMPerl_leave_scopePL_prevailing_versionPL_hintgvPerl_hv_copy_hints_hvPL_stdingvPL_taintedPerl_fbm_compilePerl_sv_copypv_flagsPL_argvgvPerl_gv_init_svmemmovePerl_share_hekPerl_sv_sethekPerl_unshare_hekPerl_diePerl_sv_force_normal_flags__memcpy_chkPerl_pad_findmy_pvnPerl_newSVhekPerl_newWHENOPPerl_newGIVENOPPerl_newMETHOP_namedPerl_sv_insert_flagsstrncmpPerl_rcpv_copyPerl_dup_warningsPerl_block_startPerl_save_hintsPerl_save_I32Perl_mg_sizePerl_newSTATEOPPerl_intro_myPerl_refcounted_he_incPerl_cop_store_labelPerl_block_endstrrchrPerl_warnPL_scopestack_ixPerl_get_svPL_eval_begin_nest_depthPerl_save_intPL_curstackPerl_save_sptrPL_beginavPerl_call_listPL_savebeginPL_checkavPerl_av_create_and_unshift_onePL_endavPL_initavPL_unitcheckavPerl_new_stackinfo_flagsPerl_croak_popstackPerl_sv_setpvPL_xsubfilenamePerl_cv_undefPerl_newXSPerl_newXS_flagsPerl_newXS_deffilePerl_newCONSTSUB_flagsPerl_newATTRSUB_xmemrchrPL_breakable_sub_genPL_sublinePL_DBsubPerl_class_wrap_method_bodyPerl_gv_init_pvnPerl_sv_setpvfPerl_current_re_enginePerl__new_invlistPerl__add_range_to_invlistPerl_sv_growPL_utf8skipPerl__invlist_searchPerl_av_pushPerl_newSVnvPerl_safesysreallocPerl__invlist_invertPerl_uvoffuni_to_utf8_flags_msgsPerl_re_op_compilePerl_newSVsv_flagsPerl_new_versionPerl_sv_setnvPerl_upg_versionPerl_vcmpPerl_sv_derived_fromPerl_vload_modulePerl_lex_startPerl_start_subparsePerl_load_modulePerl_apply_attrs_stringPerl_newRVPL_globhookPL_incgvPerl_newMYSUBPerl_cv_clonePerl_newANONATTRSUBPerl_newANONSUBPerl_newCONSTSUBPerl_save_destructor_xPerl_nothreadhookgetuidgeteuidgetgidgetegidPL_preambleavPL_e_scriptPerl_filter_delPL_bincompat_optionsPL_mainstackPerl_dounwindPerl_rpp_obliterate_stack_to__longjmp_chkPL_statusvaluePerl_sys_initPL_sigfpe_savedPerl_sys_init3Perl_sys_termPL_veto_cleanupPL_shutdownhookPerlIO_teardownperl_allocPL_curinterpPerl_noshutdownhookperl_freePerl_call_atexitPL_exitlistlenPL_exitlistPerl_gv_fetchpvPerl_av_unshiftPerl_av_storePerl_get_avPerl_get_hvPerl_get_cvPL_DBcvPL_tmps_ixPL_tmps_floorPerl_free_tmpsPerl_savetmpsPL_statusvalue_posixPL_restartopPL_restartjmpenvPerl_call_pvPerl_call_argvPerl_call_methodPerl_eval_svPerl_taint_properPerl_croak_svPerl_eval_pvPerl_require_pvgetpidkillPerl_doing_taintPL_dbargsPerl_av_clearPL_DBgvPL_DBlinePL_DBsinglePL_magic_vtablesPL_DBtracePL_DBsignalPerl_mg_setPerl_init_stacksPL_tmps_stackPL_tmps_maxPL_markstackPL_scopestackPL_scopestack_maxPL_savestackPL_savestack_maxperl_constructPL_perl_destruct_levelPL_clocktickPL_errorsPL_chopsetPL_statnamePL_in_utf8_turkic_localePL_hash_rand_bits_enabledPL_utf8cachePL_hash_rand_bitsPL_reg_curpmPL_regmatch_slabPL_dumpindentPL_in_utf8_CTYPE_localePL_rpeeppPL_laststatvalPL_splitstrPL_maxsysfdPL_curcopdbPL_hook__require__beforePL_laststypePL_sig_pendingPL_hook__require__afterPL_watchaddrPL_gensymPL_profiledataPL_generationPL_padlist_generationPL_strxfrm_NUL_replacementPL_collxfrm_multPL_evalseqPL_collation_ixPL_anPL_in_clean_allPL_in_clean_objsPL_strxfrm_is_behavedPerl_runops_standardPL_numeric_underlying_is_standardPL_numeric_underlyingPL_numeric_standardPL_collation_standardPL_langinfo_svPL_scratch_langinfoPL_setlocale_bufsizePL_in_load_modulePL_srand_calledPL_srand_overridePL_strxfrm_max_cpPL_setlocale_bufPL_srand_override_nextPL_ctype_namePL_beginav_savePL_lockhookPL_sharehookPL_known_layersPL_threadhookPL_perlioPL_def_layerlistPL_checkav_savePL_unitcheckav_savePL_signalhookPL_destroyhookPL_unlockhookPerl_sv_nosharingPL_isarevPerl_despatch_signalsPerl_sv_destroyablePerl_sv_nounlockingPL_dump_re_max_lenPL_scopestack_namePL_in_warnhookPL_in_diehookPL_InBitmapPL_sighandlerpPL_sighandler1pPL_sighandler3pPL_rsPerl_seedPL_internal_random_statePerl_drand48_init_rPL_start_envPL_TR_SPECIAL_HANDLING_UTF8PL_localpatchesPerlIO_initPL_fdpidPL_modglobalPL_debug_padPL_hash_seed_setPL_strtabPL_sv_constsPL_origenvironsysconfPL_stashcachePL_mmap_page_sizePL_patchlevel__errno_locationPL_osnamePL_registered_mrosPerl_init_i18nl10nPL_hash_seed_wPerl_hv_ksplitgetenvPerl_grok_numberstrerrorPL_doswitchesPL_unicodePL_utf8localePL_inplacestrchrPerl_sv_utf8_decodePL_bodytargetPL_toptargetPL_formtargetPL_origfilenamePL_envgvPL_minus_aPerl_hv_iterinitPerl_hv_iternext_flagsPerl_my_setenvPerl_av_shiftPL_stderrgvperl_destructPerl_grok_atoUVPL_exit_flagsPL_mELF@0=@8@t9t9v9v:v:Gжo:o;o;$$Ptd 7 7 7tFtFQtdRtdv9v:v:  GNU繐7Q Ĉ J#` BZ  4 )B @@ @!r0H (@20 IP䁠(t % "( * @@  A&!B$0@P`80""a0 P0$ؐPB a 0#!@<@F `a  PA% .  ( Q@0 @a &00BB +"@P h@ H@ 02 P B@ @`Jh#PA8HC0D@@P!@! #B|`BE4P!P  + 1@TDFhQ &4E0D @b@X@@h @@ J@Pb"@""  D(6@ D0!a@PB  D$A(P X "P  - ) 0HH A "daHB0D@!s(8R"89@@(@@#tbH ' I($"$  8($d  0 B`U$ @U !$ #@G^P 0H$  "$bh` 0! `DA Ӣ@0$  A @ PH ! H @ !0 $ "@@)HIdBR@@" @ T@$@4@$ 1(hB G0 ` ("AT   E"@` b $!  4hAD"!8@!Ԡ$ $T 4\ PQ ( DFA@ @Q@p$ !0 "@ "@ HL#4(  A@ 0 `@ P3  H 1@@H @ U8p DH@!W eH $b TAd A%#@`   L F'p 8 $@hTHP!D@`HdB87$(J @ @P8@$0$2  @Pp  9 @(AE!@ - ,A)D a+P  @AL@@8 2 6   A@(Q h T   !#$'(+-/1358=?ADFGHJKMNPQSTVWXZ[\]_abdegilnoqsuvwz|}    #$&(*,0145789:<>?@BDFGJLOPRUXY[^abcdefhijlnoqstwxz|~ !"#$&*+,-/012457;=>@ACEFHILMNOPRTUXYZ[^adfhjmoqruvwxyz{}   #$&(-.0145679:;<>?@ACDFGIKMOQRTUVX[\^aeilmnorsvwyz|~   !#&'*-.13568:=>@ABDGJMPRUWXZ\]^_`abeijlmorstvy|~  "$'(,-.0137<=?ABCEFJLMNORUVX[]aefhjkorstuvxy|}   !#$&()+Q蛠bloM5Wd͙῀!e;3%ia<=e͜&[iuzT?_3N{.a<-ۦo7^]x!7T0Z<mh.F~R5;o8 ͤvTqvTk:\+(G#_e΀^lĒ8hI\nJd`#j_w-o?k7gap;?j/n7)z76Y8:|]D)u vExy[,sga]#_V&ǹPoF 96a) Q޶zR+^M,ɛ[m2-P-s1m3~Eיִ飉l^.4>15x-E%%y(d9őG3Qn Vn' u%TN4-]~E ے̼aY^[&eϿ@jXHĝ^FΡL86]]u,3D*(bh*E<b7Q蓞B5RtATYҙZ,ko^Oh FBV&q\9,VQc )Vc~OnqT$}1r]nY$E|Zg(9G-YVTh?C'T ğVYŰҥ$j/`Io\HZ#_'Z瓭A16\W g]}:ݭ$3 fB}qЛ/N٩Ilt"z+(PnΎhnDNgo*-hLc2 "(QqtQ(d]_B%'+k(,еv"_ s5W\dt Qc.¢0SZ *;RE.dS A]jHWrA(G 0m&.4w>yw}jX\<=}L-2^L}Akj btzΎl'q)5#IaF,?jP? WY~pȳn;eJyN + N L~,eOJ;6P$rYnWH uTW=HNOr- *kQIWx D1I@ER~z] ԛC bFN, ;=~)d7Ivt]2iީE}vkX~Ӟզ֗МGLOG5QFKr;Jb'20Oߗga ޻J=z 2_b<ȇ'gꖷ`tz*J_ ȞH3 8ha7Qq|l}tT~mk$DxT:v@r3b);w,ix31((k oJJUk[?biM?BDӠӲ qYU Zt5Ň55\![5kOE״KRUM4̉N1= 9F]Sw *>2GPֶ(q*ԛ])DFI6x9-c%:\f+QftH“ȇղ1q֎~'V 4!| ,4;{0>1ԇm̄.zF?& >2!nY❡V Sg@h1{o;?ݙuRr9\AdVC u+ΗL7z&GUIp>dӻT1ʵ);|udlBuu<=O5ѼkOy,as6F pݙmc +C:sK [jPCȊh 働HDAsf/tN(9AS2Fʕ7օ ORGWCɒG Ǒ&Gs ;y9>.ޅ Onѹ)ԣa Ohzߨ9f 9l "Hx#WYn'R|P=ڜ@_ԣto8haMht^Eۜ& k5V0@B4(h|+A).XsJhFAtv23F4ZAdO=nivY<7a..[FG1_"~Ӑtpb $EyzEWTd ppUsx4': csrX;@5 [~Y\ha_5/jRy1@vX r7QUL=p>o !;9錜gFn >T6i`l2V-}ˎ1M ;2LQL_0<\Ύ Z)RrmHTwb{j 'N;d,SƮu ddMjOR߆MLh}òV[>i086Wqt] Z/@|`$ ?y4Y=fk=`2}а̥ L\(ĉk x}p!hO7nd65ek}~HvTI"hY_7K봶UNQ0U@xÙ)F~ uB "_=yC],>Ok`aL˙)YMy\ᾁHlYdž+I j={ kSI翟aдr`VZRۂ",l7*ӥ Q簍gT'QUB}ZEl[1s('ɍיf }$jJJ(98l.5z'åJɬxHoY/ɰ9+JLrP(,'4w{uEHYn',3@Pk/Ӷwz="F6y ;Ԓk6)Jr<-_DT6XlVN2 F_e}zz )?P"]s߇{yv}L-6۳W#lZ&:dWQI ,CG)zt}_oq&WUI٘L'ҩ^7#*R/xZzc_F۠h/+6(@KiN:FƿRHɢ}ڲ,(6IhUe Gq.S#*_FۮDcD; "BDUy7E>I0;#ɮsKQ(c;o( ab*w7Zj*Jao5?VHnژ  rB cħޟ[ߺ!9zct wJFβUV 00LV%>]'c>o4m Oܗ"ac)X,HIp̒$95]4L[{{6MtKnMKCqz^Rw}_?,YtVMu?|?߫ʟ}}N.BD-9A^ vHӌ_e24ϽTk;{!)+shP5S՛Y1^LB[ޱ,}_ϽG|+'BۼKJIR!S #x`>;vG'y<;{*u +('ZM/~Z` #S vp[M/S9)zIv+&'%r!Wx|$2]UJ:]lK_:M&TGv7}!`r^CuEH^$AIL2 jPF:g6buvJ_ZRGvyWGq& YW 97aopvĿ{qcOnq"BvDe(XQ WwT3ٞhazJkGEs]݌vo72 dud%(Tctyʖ#F 6³D71鄾׮II 'P`wSZx,)?A.-6-  n.燥3,q96 ԣ Z\y3}v(!4Fjv2CWM+GWYIƍ.ؤP}1&)YOQ9Sn9 1\mX`Ei+*EXh{aTP(*,i+@9( UI)bPnӣKqBzU[; #T]A1՜BD ՌGHs(s'STz`.GލqMQ͹ Lڗ|ABNzw gNzCuFtQh % b2 n&DG\vb "Cg&0]q2EO` g_4___pTh- FpW/EZMG X;H9gbrb5.B3rf+5!223rqabb&TbG4"dmc)lBb%1a2mcu& Mc`I3P5>qm3N.`82dcGV5!AP4dHcSbcc_bO3p'^WPaa{1Hb#3I 2G4}a0bF"lb[a &O5'aZ('3d^1, P3}&'cb^^%5!icyf*b33sS:bNSS`Hs5cb5HeO5O[N%bc5cXd|&Jbgb5pHdBrbaxc%cb\w4f2W1AHOGa<cTbUOp154cOzbOaa&2cpZFYbaOdaSA54^^3,+d'pakmeqz5 Fd$bS)I4=d/K2H5a*5R21)33^93 frcXTH^cb)5u!c|ra[Z^AcI}r!RZj [&~rc1b;3Oq\ ,<,`#<>`%<f, _ si  k p;:L F $o P6 p9 ._ s4{@ 8A9 P[ Pk '<?X(<4 %7 0`4y=<;^ `. ԇ e "  r m 0D Z 04 ,9[ ; t@'<@ yxO%<"<HL F   R S HN+<UA -;.    dh $X@ +2 XV( 0zH  T 0\`8&<j Thj D08k 8DU T H^$<; - @,2 `$ E 2 T ]XU HC O T=L E ( YP%<MN a B `n0% ?  i4D 0 M, PI > ^ `{>h%<Q ? hX8 `8 Bm t#( <G,<h ,<p /1(< p;< |N @3` P`"!<>@%< pq   4G,%<6   0Z EF 9 Ux%< x' hF F C L6  ` :8~:p  @z k+ dh3 @C d& T e 0)M I  C c(F 3 D: # ^ <;B& t  v"&<Vm yo ^ [& N FT d. 0U '<* 7j 8 !'<T p ?2;_ @f L C a,<8% `J4 N \. 8n I > d `lF D X%<}U D* V Rdp %(%<_ dj L \d- p|;@ !Z p) ]O Gw (- , 0C 0  " g3 [ @1 PK T d 0 l sE  PО;Fp  b 2 `` tx- R $%<I^ l Bh VR `[ 0s0 ]N  Y % G/ 9<S 0  x h$<V p s/ P;X( й0 c1 `b  X0 iQG } \6T dLVg; (W9 U f P"x!<` e d p#?`(<G_ x[ D  Nn _ @u&<&  H( @D0 PL, dg dDl @WTY p t~ P' `w ,<  `a,_b ԫJ `? +k 48j e,QM 0G  `X  XE 4Z2;G 0| LQ< `A BM `H J `@ ) 2 ' q@ 07 p, 64  `M @H ?!X&<^ 01Q +  ?!,<: 0) T<X#<d  X'<H 0 W 8m Y3 <, tR D8>H$<[ B d2 k[ = ,Z6 2I 1 !H(<$  7C Ę LPi T 1 1 b\)Y 9#<aJ @? | (<l d]Qo PZF tr 7 - a :`: 6  %<_Y 0 L^ o i T `Z +&*<A P " H Pirp \6 P $=#<=l<MY p K A 4l g jH&<k   TdVn;G  @ ep A x!a] H %L  K A ^ :$  v< 6 - 0 0pI > "q QS i </ xy><%<$%<C  I  Q D:n p,L%< '<$\ J  ^tJ d  - `&<3(&<:f;`H:}:P( 0 $,< < X 7 T Zl Xm6 d `  p\}4 TUhb8%<C   <8:p]B d7(<@ 8#z 4  `(Vxk;F @9+<` 0L5 0 j ĥI"#<g @]5 g,%4 P Xk PRq S` D$D y5G | h#<{ ] ~( ` z fAg a  ;P iQ , vM G hp  jh PTHC  f pB - JB Hgk pd$$&<:}:0i&  \;# <}&< Ж8  T | ('<D p Pf p  p` Pdl 0p @@ `! C   LS $> P |`#<<g;] p X0(<Pk >gx<  P< ;F@ q f T Ћ<L @E  tU  H7&<d>`$< t9 X  Dq  "p ;:O |#L C |\ Q 1 /W:|:p Љ &<@ t\c< P P ' 0 `_i p  x"h!<g cZ 1 |K tA $.?h(<    Pjl#<b  ; @# < $ T ` m"#<h t8B 0n: <d  ;:x/ <  _h,<K e : @9(:f T)) V 0  o apL E 0T 0 0 hp P.( ` 4e Hq  9 Z '<T 0 ,6 _) `;[ C \5 `>M%<<н;) 485 ,"'< + O HE D3 0,"p$<_p%<\ T $x$<F  ' 0P=P <(#< @X  |4 p3=p<,2;h pPH 0 p_ @hXF PK `": 7$<3; 0=!<X=; ~V p 8X- plo `4% ,^؞;E  `?Vj;Z 1 3 8%<X-x,<  Lg9 U ,A P"J ? X# <x'<3 TQ C (xX%<] DE  5: 4l v(?Q , 0 xL,< Q # PkU 0 S0 Y\ A(<+N 7  "$dest_name"...]); ($member->extractToFileNamed($dest_name) == Archive::Zip::AZ_OK()) or die qq[Error extracting zip member to "$dest_name"]; chmod(0555, $dest_name) if $^O eq "hpux"; } } } } unless ($PAR::LibCache{$progname}) { die << "." unless @ARGV; Usage: $0 [ -Alib.par ] [ -Idir ] [ -Mmodule ] [ src.par ] [ program.pl ] $0 [ -B|-b ] [-Ooutfile] src.par . $ENV{PAR_PROGNAME} = $progname = $0 = shift(@ARGV); } sub CreatePath { my ($name) = @_; require File::Basename; my ($basename, $path, $ext) = File::Basename::fileparse($name, ('\..*')); require File::Path; File::Path::mkpath($path) unless(-e $path); # mkpath dies with error } sub require_modules { require lib; require DynaLoader; require integer; require strict; require warnings; require vars; require Carp; require Carp::Heavy; require Errno; require Exporter::Heavy; require Exporter; require Fcntl; require File::Temp; require File::Spec; require XSLoader; require Config; require IO::Handle; require IO::File; require Compress::Zlib; require Archive::Zip; require Digest::SHA; require PAR; require PAR::Heavy; require PAR::Dist; require PAR::Filter::PodStrip; require PAR::Filter::PatchContent; require attributes; eval { require Cwd }; eval { require Win32 }; eval { require Scalar::Util }; eval { require Archive::Unzip::Burst }; eval { require Tie::Hash::NamedCapture }; eval { require PerlIO; require PerlIO::scalar }; eval { require utf8 }; } sub _set_par_temp { if (defined $ENV{PAR_TEMP} and $ENV{PAR_TEMP} =~ /(.+)/) { $par_temp = $1; return; } foreach my $path ( (map $ENV{$_}, qw( PAR_TMPDIR TMPDIR TEMPDIR TEMP TMP )), qw( C:\\TEMP /tmp . ) ) { next unless defined $path and -d $path and -w $path; my $username; my $pwuid; eval {($pwuid) = getpwuid($>) if defined $>;}; if ( defined(&Win32::LoginName) ) { $username = &Win32::LoginName; } elsif (defined $pwuid) { $username = $pwuid; } else { $username = $ENV{USERNAME} || $ENV{USER} || 'SYSTEM'; } my $stmpdir = "$path$sys{_delim}par-".unpack("H*", $username); mkdir $stmpdir, 0755; my $cache_dir; if ($ENV{PAR_CLEAN}) { $cache_dir = "temp-$$"; } else { open my $fh, "<:raw", $progname or die qq[Can't read "$progname": $!]; if ((my $magic_pos = find_par_magic($fh)) >= 0) { seek $fh, $magic_pos - $FILE_offset_size - length("\0CACHE"), 0; my $buf; read $fh, $buf, length("\0CACHE"); if ($buf eq "\0CACHE") { seek $fh, $magic_pos - $FILE_offset_size - length("\0CACHE") - $cache_name_size, 0; read $fh, $buf, $cache_name_size; $buf =~ s/\0//g; $cache_dir = "cache-$buf"; } } close $fh; } if (!$cache_dir) { $cache_dir = "temp-$$"; $ENV{PAR_CLEAN} = 1; } $stmpdir .= "$sys{_delim}$cache_dir"; mkdir $stmpdir, 0755; $ENV{PAR_TEMP} = $stmpdir; last; } $par_temp = $1 if $ENV{PAR_TEMP} and $ENV{PAR_TEMP} =~ /(.+)/; } sub _save_as { my ($name, $contents, $mode) = @_; my $fullname = "$par_temp/$name"; unless (-e $fullname) { my $tempname = "$fullname.$$"; my $fh; (open $fh, '>:raw', $tempname) && (print $fh $contents) && (close $fh) or die qq[Error writing "$tempname": $!]; chmod $mode, $tempname if defined $mode; rename($tempname, $fullname) or unlink($tempname); } return $fullname; } sub _set_progname { if (defined $ENV{PAR_PROGNAME} and $ENV{PAR_PROGNAME} =~ /(.+)/) { $progname = $1; } $progname ||= $0; if ($ENV{PAR_TEMP} and index($progname, $ENV{PAR_TEMP}) >= 0) { $progname = substr($progname, rindex($progname, $sys{_delim}) + 1); } if (!$ENV{PAR_PROGNAME} or index($progname, $sys{_delim}) >= 0) { if (open my $fh, '<', $progname) { return if -s $fh; } if (-s "$progname$sys{_exe}") { $progname .= $sys{_exe}; return; } } foreach my $dir (split /\Q$sys{path_sep}\E/, $ENV{PATH}) { next if exists $ENV{PAR_TEMP} and $dir eq $ENV{PAR_TEMP}; $dir =~ s/\Q$sys{_delim}\E$//; (($progname = "$dir$sys{_delim}$progname$sys{_exe}"), last) if -s "$dir$sys{_delim}$progname$sys{_exe}"; (($progname = "$dir$sys{_delim}$progname"), last) if -s "$dir$sys{_delim}$progname"; } } sub _fix_progname { $0 = $progname ||= $ENV{PAR_PROGNAME}; if (index($progname, $sys{_delim}) < 0) { $progname = ".$sys{_delim}$progname"; } my $pwd = (defined &Cwd::getcwd) ? Cwd::getcwd() : ((defined &Win32::GetCwd) ? Win32::GetCwd() : `pwd`); chomp($pwd); $progname =~ s/^(?=\.\.?\Q$sys{_delim}\E)/$pwd$sys{_delim}/; $ENV{PAR_PROGNAME} = $progname; } sub _par_init_env { if ( $ENV{PAR_INITIALIZED}++ == 1 ) { return; } else { $ENV{PAR_INITIALIZED} = 2; } for (qw( SPAWNED TEMP CLEAN DEBUG CACHE PROGNAME ) ) { delete $ENV{"PAR_$_"}; } for (qw/ TMPDIR TEMP CLEAN DEBUG /) { $ENV{"PAR_$_"} = $ENV{"PAR_GLOBAL_$_"} if exists $ENV{"PAR_GLOBAL_$_"}; } if ($ENV{PAR_TEMP}) { delete $ENV{PAR_CLEAN}; } } sub outs { return if $quiet; if ($logfh) { print $logfh "@_\n"; } else { print "@_\n"; } } sub init_inc { require Config; push @INC, grep defined, map $Config::Config{$_}, qw( archlibexp privlibexp sitearchexp sitelibexp vendorarchexp vendorlibexp ); } package main; require PAR; unshift @INC, \&PAR::find_par; PAR->import(@par_args); die qq[par.pl: Can't open perl script "$progname": No such file or directory\n] unless -e $progname; do $progname; CORE::exit($1) if ($@ =~/^_TK_EXIT_\((\d+)\)/); die $@ if $@; }; $::__ERROR = $@ if $@; } CORE::exit($1) if ($::__ERROR =~/^_TK_EXIT_\((\d+)\)/); die $::__ERROR if $::__ERROR; 1; __END__ perlxsi.cCACHE;0(DhX|ȍHX(xL(h<LlXؗ Xx(X8̠XءP|ػ<zRx 4A,0@܋< THA BNx4d0A@BBFVACA@OAAA@BB\ABGDIADDr AAA IAAA0TA0E k 0CA LAI$ĎACCV A P<4A`B CKA A H_ A IBCAB$,8$A0E@m 0DA hؑd|БPAP E!_ PCA HBCCe AAAA f AAAA CAAAA ,A CFhēA0C HDAfAAA0AA AK0AA N AAA AAAA8tؔA`B CBE A lxA ET A șAF@\TA@EBЀ{ A@DA 4l AF8Tl A@CCBX A _ A <AF C CEVe AA [DaNA  ` A BAAAA0ԡAPECCBR A 0LA0CCZ A Z A 0A`BHBW A (8AD AA TAS4̴A@CCCc A 08A@CCBU A P"" @ SpxoH   pH ooooo``````````````````````````````````````````````````````````@ PAR.pm WSTVVVWVVWGCC: (Ubuntu 11.4.0-1ubuntu1~22.04.2) 11.4.0.shstrtab.interp.note.gnu.build-id.note.ABI-tag.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.dynamic.got.data.bss.comment 88TT$&xx 4o>  FH H No[o`jHHtBp~@@y``@@3@SS(S(SoAlppxx `(0-ELF@!@@8 @@@@888 ppp@  TTTDDPtdQtdRtdppp/lib/ld-linux-aarch64.so.1GNUW'VĊf9eHV"GNUJ!(@ AJKNRS\]^`abcdg4nG-k|.śd|vT p6 @ )3 <; )P& @,,I 2x(S pP () d5 R @3m p,"H @!4 PT  D5 W )y QZ -__gmon_start___ITM_deregisterTMCloneTable_ITM_registerTMCloneTablePerl_sys_termPerl_sys_init3perl_constructPerl_get_svPL_exit_flagsPerl_sv_setpvnPL_do_undumpPerl_newXS_flagsPL_taintingperl_freePerl_mg_setPerl_sv_setpvPL_taintedPerl_gv_fetchpvperl_runPerl_newXSperl_destructPL_perl_destruct_levelboot_DynaLoaderPerl_croakperl_parsePerl_safesysmallocperl_alloc__cxa_finalizereadstrchrgetpidmemmove__libc_start_main__fprintf_chkstrcmpopen64unlinkstrtokmemsetstrncmpgetuidmemchrclosedirrmdirstrlenstrdup__memcpy_chkreallocreaddir64abort__sprintf_chkstderrmemcpystrrchrlstat64opendirlseek64__vfprintf_chk__errno_locationexitreadlink__stack_chk_failaccessmkdir__environ__stack_chk_guardlibperl.solibc.so.6ld-linux-aarch64.so.1par_current_execpar_basenameXS_Internals_PAR_BOOTpar_env_cleanpar_current_exec_procpar_dirnamesha_finalget_username_from_getpwuidpar_cleanup_IO_stdin_used__data_start__bss_start__sha_updatexs_init__end____bss_end____bss_startsha_init_endpar_mktmpdir_edatapar_setup_libpathpar_findprogmy_par_plpar_diepar_init_envGLIBC_2.17GLIBC_2.34GLIBC_2.33/opt/hostedtoolcache/perl/5.42.0/arm64/lib/5.42.0/aarch64-linux/CORE gr}gpP"x"@ W(S8T@VHVPVXWhVpVW  ȯЯ!د$&<HȭЭح     (08@HPX`hp x"#%'()*+,-Ȯ.Ю/خ012345678 9(:0;8=@>H?P@XA`BhDpFxGI {{_{F6    F6 F7 F"7 FB7 Fb7 F7 F7 F7 F7 G8 G"8  GB8 Gb8 G8 G8 G8 G8 "G9 &G"9 *GB9 .Gb9 2G9 6G9 :G9 >G9 BG: FG": JGB: NGb: RG: VG: ZG: ^G: bG; fG"; jGB; nGb; rG; vG; zG; ~G; G< G"< GB< Gb< G< G< G< G< G= G"= GB= Gb= G= G= G= G= G> {cG#CSs[d@G@9@5GbB@ fG9@!G@T |}"@9B2"9 @bB@@@!@! gCdqT!  xa!d klT uB%*!Ҡ@4uB@S*`vsB`@G@@BAT*{CSD[E_֠@ @`jY `bR R         @#GYG@_   ! ?T!Ga_ ! !"A !ABGb_ { `"B9@5G@ R`"9 @{¨_     {ScG@8[R@9q@zT@~@ 5`ju8qT@[BcCSA{Ĩ_@8q@zTK˵sCSA[BcC{Ĩ_cCC{ C!G"@GS @95SJGG@@BA T{IC_֗`c # [ .`L@9L?qaT@94L@9q@T |@k!R%1T@ @qT  #SJ[KcL@9qT @94S [ c 2 { S[c-#BG@@ q TQb854S|@RF GH@B!T c-SA[B{è_*{"!GB 0{c!@2R  #{ CBGSC@G@5@R! ?@q$BzT!GG@"@cҡT{IS@_RARq {CBGS[c @9A@q`)T}`@9q@z` T Ճ@8qd@zT˄|@G @j8@#hx@8a9?q$@zT @8b8_qD@zTRa8j`8bh 85G@@BҡT{ASB[CcD_҂ja8j!8!5kG@@@R @*@ |}"@"5"R"[~}G? kEG @~}ҥRk2kE"B!G i{ Sc-c!G#@Ұ*c "!Rgҟ7|@s~@j38GP@BT c-SA@{è_  { S[c-BGC@G R`!GGH"@cҡ T c-SA[B{Ũ_Kc#g#k9co `@944bT _8T@@9q`T?TcHgHkHoHT@9qT:@94c@!R#E5@  @qT!RA5cHgHkHoH:cgkoY{R  ` @{¨r { c-!G"@`@94_@T#R`рT8T@9?q`TRTC!GH"@cT HHHc-{è_HGH@B!T` c-{è'9GH@BT`HHH{CG[Scb+G@ @@ @Ax# @ @G@@ @Ax#@ `G@@ @Ax#@ `G@@ @Ax#@ `"G@@ @Ax#@ `bG@@ @Ax#@ `зG@@ @Ax#@ v`آGn@@ @Ax#@ ``GX@@ @Ax#@ J`#9GB"@@ @Ax#@ 4`9G,"@@ @Ax#@ ```)  `G@@BҁT"{A!SB[CcD+@@Ѣ{CBGC@@9q@z!G@"@cT{A_R  Ѫ{JG#='=+=/=3=7=;=?=!R)G@@7/) @@#uR#  {S[C@CC@cG*BRe@>@<@ DdT5*RT*91T|@T `TT @@_ATC@!Gd@"@aTCC@SA[B@{Ĩ_B@B@aT` {@@{_Ѣ{CBGS[жC@0@95G@@BT{ASB[C2@=!RХc@4G@@BT{ASB[CB@DC{H$ASFE[!Gcs@= @E@D4@ad '`=@9!5k?@y$@94Z!Rs $@8$5c  @@ `@9!44 е~@|%# c@!R8R1TO@Dq Tm*`4@GB!R@EG@@BaT{TSU[VcWkX_Ry`@9`49R 4Wyҳ@ @qaT@_kT@ q@T@R`vH`@9!48``v9d Rr@GB!R@G@@BҡT{TSU[VcW  @ 4 qT|@!`5_qTZQ`z8qT Ѐ@9q@zTR*5!4#P9*c!R@DqAT?s**!R8R1T@B@ (R* *tTA`R hr?k!Ta @yR?kTAR*#*`T%#c!R9@ )T! jq{@JkG  Cѣ {CcGSBG[#GE@c@99_@9?q T>bR`!R@@!@` @@ @! 7bR!R@>` @@!R! BG9+ 8R%?qQzaTG@@BaT{ASB[C#@C_@9 4@ @Bb @@@@!@B*@!@  Ѣ{CBGSC@ @9q@z?jTG@@BT{ASB_`@94SRTЂ! a5G@@BT{ASB  {C !G##@Gҡ@@@!Za`ghx&x!SpC!!TEA@B C@D@cA0@!!#_a!|@A<_aT(@$3$ADP@#t[BBy!#ۭ! ! ʥ"@"AB!x B @-|@B ! N[OBӥ !y A! ʮ[!B!! }@ .[  z E @B|@0Bӥ [ z ʥ@ }@!! By![!Bӂ. By}@CB B [ӭ|@!BM !!Bx! [Ӧ|@! ʥB/ x B DBB[ӌB!B!}@!L z![!B |@B B- EBx [, ! }@!!BBL z ! B |@Bʅ[B F. Bӥx [,!}@! BBL z!!B |@Bʆ[B  G/ Bx [,!}@!BBL z!!B |@Bʅ[B H- Bӥx [, ! }@!BBL z !! ʆ[ӥ|@B  B. BBIx [!B !}@! B y!F@&W@!E[ӄJ MBӰ y[@%@%[%JA@, B yB_@@&D [ӄJ&@. !BE@%c@y$[EJ&BӐ xg@$@$ʬ@2$J[ӂ Bӆ@- yk@E@%"[BJB@/BӍ yBo@$@$ʥ[!J !@1 !BE@%s@y  [ӄEJBӑ xw@$@$ʬ@0$J%[ӂ,Bӆ@. y{@E@% [BJB@- Bӎ By@$@$[!J!@/ !BE@%@yʤ[ӄ EJBӏ z @$@$ ʬ@,$J[ӥ@&Bz E@%BJ[B@.Bӄ y ;Q $@$ [!J!@-ByB E@%@[BJ!B@& Bӎ Ey@$@$[$J@,B z@@&Eʬ[ӥJ @/Bӎ y @@,$[ӌ JA"B By@&ʥJBӰ[ӡ@! y 7TB NBӆC[c!!  fyA/-[c @c M  /ByA$m[ӭL@ - oBӌ [ӅA%y- @  Bӥ @"m[y@ M oBӄ @![yC . @cBcyc@,[,c @c  BӂA"m[yB B @ oBӌyA!N[ӌ! ! n NByA%X/BӬ-[ӭ l M  yA$[L@ -  BA#[y% c@c  Bӥ y@"m[ӅB@B  oBӥ @!M[y!NB! cy ;[cl@,#[c/Bӭ  M y m[ӄA$ L. A% 3\mBӭy[% c  By@"l[ӌBnBӥB y ;]@!A[!OBӌ  a yP A-[! m@ ,@,BӤA$B[ӄ y @A ! J:EL!@#C[z! c@&@q #@#J@"LB$[ӒyB@ D@$#Jl@-&B[xcAo BʃA#DJ"@.[Bx!A. $BӄJC@2[ӏyB@! AM BJf#@1[ӎyc! @"A2 a@!JL@0BB[x BAQ  LBaJ&@/![y!@"A0  a@!JD@..B[ӄByAO ʂ@"aJ#@- B[Ӱyc!A- a@!JL@,BӢ[yB #AN ʂ@"aJ&@&B[!y 'A- a@!JD@0BӢ[z B +AQ ʂ@"aJ#@/B![y c !/A0  /BӂJL@&[ӆBya@!3AO  @"aJ$@.B[ӄ!y7A. ʁ@!JF@-B[ӯyB;AP d@"J@,B[ӌy?A @/J&A#A[!cc BCA!xA$d[ӬJEBxG!  c  B  GA@ҁTC {_d{l&`%qğÎ>ҦDCBz |x{_  {B|@S[cBx@  cbtB5qTQ~Sjzw `@`AsTK~@zSA[BcC{Ĩ_RKk Җ~@z@ zqTKs  {S[5 @6(@70@ S Z Z 8!?q TRBKRB|@Lj6O =wZ)ca@!XӁ9a@!PӁ9a@!HӁ 9a@9a@!XӁ9a@!PӁ9a@!HӁ9a@9a @!XӁ"9a @!PӁ&9a @!HӁ*9a @.9a@!XӁ29a@!PӁ69a@!HӁ:9a@>9a@!XӁB9a@!PӁF9a@!HӁJ9a@N9SA[B@{ĨRBKRB|@ {{_%s/%s/proc/self/exeDynaLoader::boot_DynaLoaderInternals::PAR::BOOTexe/proc/%i/%s.PAR_TEMPPAR_PROGNAME:/%s%s%sPERL5LIBPERLLIBPERL5OPTPERLIOPAR_INITIALIZEDPAR_SPAWNEDPAR_CLEANPAR_DEBUGPAR_CACHEPAR_GLOBAL_DEBUGPAR_GLOBAL_TMPDIRPAR_TMPDIRPAR_GLOBAL_TEMPPAR_GLOBAL_CLEAN1lseek failedread failedLD_LIBRARY_PATHSYSTEM%02xpar-%s%s%s%s%s: creation of private subdirectory %s failed (errno=%i) %s: private subdirectory %s is unsafe (please remove it and retry your operation) PATHparl.parshort read%s%scache-%s%s%s%stemp-%u%s%s%stemp-%u-%u%sperl0PAR::Packer::VERSION1.064Unable to create cache directory%s: creation of private cache subdirectory %s failed (errno=%i) -e--USERUSERNAMETMPDIRTEMPDIRTEMPTMP/tmpeval 'exec /usr/bin/perl -S $0 ${1+"$@"}' if 0; # not running under some shell package __par_pl; my ($PAR_MAGIC, $FILE_offset_size, $cache_name_size); BEGIN { $PAR_MAGIC = "\nPAR.pm\n"; $FILE_offset_size = 4; # pack("N") $cache_name_size = 40; $PKZIP_MAGIC = "PK\003\004"; } sub find_par_magic { my ($fh) = @_; my $chunk_size = 64 * 1024; my $buf; my $size = -s $fh; my $pos = ($size-1) - ($size-1) % $chunk_size; # NOTE: $pos is a multiple of $chunk_size while ($pos >= 0) { seek $fh, $pos, 0; read $fh, $buf, $chunk_size + length($PAR_MAGIC); if ((my $i = rindex($buf, $PAR_MAGIC)) >= 0) { return $pos + $i; } $pos -= $chunk_size; } return -1; } my ($par_temp, $progname, @tmpfile, %ModuleCache); END { if ($ENV{PAR_CLEAN}) { require File::Temp; require File::Basename; require File::Spec; my $topdir = File::Basename::dirname($par_temp); outs(qq[Removing files in "$par_temp"]); File::Find::finddepth(sub { ( -d ) ? rmdir : unlink }, $par_temp); rmdir $par_temp; if (-d $par_temp && $^O ne 'MSWin32') { my $tmp = new File::Temp( TEMPLATE => 'tmpXXXXX', DIR => File::Basename::dirname($topdir), SUFFIX => '.cmd', UNLINK => 0, ); my $filename = $tmp->filename; print $tmp <<"..."; x=1; while [ \$x -lt 10 ]; do rm -rf '$par_temp' if [ \! -d '$par_temp' ]; then break fi sleep 1 x=`expr \$x + 1` done rm '$filename' ... close $tmp; chmod 0700, $filename; my $cmd = "$filename >/dev/null 2>&1 &"; system($cmd); outs(qq[Spawned background process to perform cleanup: $filename]); } } } BEGIN { Internals::PAR::BOOT() if defined &Internals::PAR::BOOT; eval { _par_init_env(); my $quiet = !$ENV{PAR_DEBUG}; my %sys = ( path_sep => ($^O =~ /^MSWin/ ? ';' : ':'), _exe => ($^O =~ /^(?:MSWin|OS2|cygwin)/ ? '.exe' : ''), _delim => ($^O =~ /^MSWin|OS2/ ? '\\' : '/'), ); _set_progname(); outs(qq[\$progname = "$progname"]); _set_par_temp(); outs(qq[\$ENV{PAR_TEMP} = "$ENV{PAR_TEMP}"]); my ($start_pos, $start_of_FILE_section); MAGIC: { local $SIG{__WARN__} = sub {}; unless (open _FH, '<:raw', $progname) { outs(qq[Can't read from file "$progname"]); # don't use $! here as it requires Errno.pm last MAGIC; } my $magic_pos = find_par_magic(*_FH); if ($magic_pos < 0) { outs(qq[Can't find magic string "$PAR_MAGIC" in file "$progname"]); last MAGIC; } outs("Found PAR magic at position $magic_pos"); seek _FH, $magic_pos - $FILE_offset_size - length("\0CACHE"), 0; read _FH, $buf, length("\0CACHE"); if ($buf ne "\0CACHE" && $buf ne "\0CLEAN") { outs("No cache marker found"); last MAGIC; } outs(qq[Cache marker "$buf" found]); seek _FH, $magic_pos - $FILE_offset_size, 0; read _FH, $buf, $FILE_offset_size; my $offset = unpack("N", $buf); outs("Offset from start of FILEs is $offset"); seek _FH, $magic_pos - $FILE_offset_size - $offset, 0; $start_of_FILE_section = tell _FH; my %require_list; read _FH, $buf, 4; # read the first "FILE" while ($buf eq "FILE") { read _FH, $buf, 4; read _FH, $buf, unpack("N", $buf); my $fullname = $buf; outs(qq[Unpacking FILE "$fullname"...]); my $crc = ( $fullname =~ s|^([a-f\d]{8})/|| ) ? $1 : undef; my ($basename, $ext) = ($buf =~ m|(?:.*/)?(.*)(\..*)|); read _FH, $buf, 4; read _FH, $buf, unpack("N", $buf); if (defined($ext) and $ext !~ /\.(?:pm|pl|ix|al)$/i) { my $filename = _save_as("$crc$ext", $buf, 0755); $PAR::Heavy::FullCache{$fullname} = $filename; $PAR::Heavy::FullCache{$filename} = $fullname; } else { $ModuleCache{$fullname} = { buf => $buf, crc => $crc, name => $fullname, }; $require_list{$fullname}++; } read _FH, $buf, 4; } local @INC = (sub { my ($self, $module) = @_; return if ref $module or !$module; my $info = $ModuleCache{$module}; return unless $info; delete $require_list{$module}; $INC{$module} = "/loader/$info/$module"; if ($ENV{PAR_CLEAN} and defined(&IO::File::new)) { my $fh = IO::File->new_tmpfile or die "Can't create temp file: $!"; $fh->binmode(); $fh->print($info->{buf}); $fh->seek(0, 0); return $fh; } else { my $filename = _save_as("$info->{crc}.pm", $info->{buf}); $info->{file} = $filename; open my $fh, '<:raw', $filename or die qq[Can't read "$filename": $!]; return $fh; } die "Bootstrapping failed: can't find module $module!"; }, @INC); require XSLoader; require PAR::Heavy; require Carp::Heavy; require Exporter::Heavy; PAR::Heavy::_init_dynaloader(); require IO::File; while (my $filename = (sort keys %require_list)[0]) { unless ($INC{$filename} or $filename =~ /BSDPAN/) { if ($filename =~ /\.pmc?$/i) { require $filename; } else { do $filename unless $filename =~ /sitecustomize\.pl$/; } } delete $require_list{$filename}; } if ($buf ne $PKZIP_MAGIC) { outs(qq[No zip found after FILE section in file "$progname"]); last MAGIC ; } $start_pos = (tell _FH) - 4; # start of zip } my @par_args; my ($out, $bundle, $logfh, $cache_name); delete $ENV{PAR_APP_REUSE}; # sanitize (REUSE may be a security problem) if (!$start_pos or ($ARGV[0] eq '--par-options' && shift)) { my %dist_cmd = qw( p blib_to_par i install_par u uninstall_par s sign_par v verify_par ); if (@ARGV and $ARGV[0] eq '--reuse') { shift @ARGV; $ENV{PAR_APP_REUSE} = shift @ARGV; } else { # normal parl behaviour my @add_to_inc; while (@ARGV) { $ARGV[0] =~ /^-([AIMOBLbqpiusTv])(.*)/ or last; if ($1 eq 'I') { push @add_to_inc, $2; } elsif ($1 eq 'M') { eval "use $2"; } elsif ($1 eq 'A') { unshift @par_args, $2; } elsif ($1 eq 'O') { $out = $2; } elsif ($1 eq 'b') { $bundle = 'site'; } elsif ($1 eq 'B') { $bundle = 'all'; } elsif ($1 eq 'q') { $quiet = 1; } elsif ($1 eq 'L') { open $logfh, ">>", $2 or die qq[Can't open log file "$2": $!]; } elsif ($1 eq 'T') { $cache_name = $2; } shift(@ARGV); if (my $cmd = $dist_cmd{$1}) { delete $ENV{'PAR_TEMP'}; init_inc(); require PAR::Dist; &{"PAR::Dist::$cmd"}() unless @ARGV; &{"PAR::Dist::$cmd"}($_) for @ARGV; exit; } } unshift @INC, @add_to_inc; } } if ($out) { { require IO::File; require Archive::Zip; require Digest::SHA; } my $par = shift(@ARGV); my $zip; if (defined $par) { open my $fh, '<:raw', $par or die qq[Can't find par file "$par": $!]; bless($fh, 'IO::File'); $zip = Archive::Zip->new; ( $zip->readFromFileHandle($fh, $par) == Archive::Zip::AZ_OK() ) or die qq[Error reading zip archive "$par"]; } my %meta_par = do { if ($zip and my $meta = $zip->contents('META.yml')) { $meta =~ s/.*^par:$//ms; $meta =~ s/^\S.*//ms; $meta =~ /^ ([^:]+): (.+)$/mg; } }; if (defined $par) { open my $ph, '<:raw', $par or die qq[Can't read par file "$par": $!]; my $buf; read $ph, $buf, 4; die qq["$par" is not a par file] unless $buf eq $PKZIP_MAGIC; close $ph; } CreatePath($out) ; my $fh = IO::File->new( $out, IO::File::O_CREAT() | IO::File::O_RDWR() | IO::File::O_TRUNC(), 0777, ) or die qq[Can't create file "$out": $!]; $fh->binmode(); seek _FH, 0, 0; my $loader; if (defined $start_of_FILE_section) { read _FH, $loader, $start_of_FILE_section; } else { local $/ = undef; $loader = <_FH>; } if (!$ENV{PAR_VERBATIM} and $loader =~ /^(?:#!|\@rem)/) { require PAR::Filter::PodStrip; PAR::Filter::PodStrip->apply(\$loader, $0); } $fh->print($loader) or die qq[Error writing loader to "$out": $!]; if ($bundle) { require PAR::Heavy; PAR::Heavy::_init_dynaloader(); init_inc(); require_modules(); my @inc = grep { !/BSDPAN/ } grep { ($bundle ne 'site') or ($_ ne $Config::Config{archlibexp} and $_ ne $Config::Config{privlibexp}); } @INC; s|/+|/|g, s|/$|| foreach @inc; my %files; $files{$_}++ for @DynaLoader::dl_shared_objects, values %INC; my $lib_ext = $Config::Config{lib_ext}; # XXX lib_ext vs dlext ? my %written; foreach my $key (sort keys %files) { my ($file, $name); if (defined(my $fc = $PAR::Heavy::FullCache{$key})) { ($file, $name) = ($key, $fc); } else { foreach my $dir (@inc) { if ($key =~ m|^\Q$dir\E/(.*)$|i) { ($file, $name) = ($key, $1); last; } if ($key =~ m|^/loader/[^/]+/(.*)$|) { if (my $ref = $ModuleCache{$1}) { ($file, $name) = ($ref, $1); last; } if (-f "$dir/$1") { ($file, $name) = ("$dir/$1", $1); last; } } } } next unless defined $name; next if $written{$name}++; next if !ref($file) and $file =~ /\.\Q$lib_ext\E$/i; outs(sprintf(qq[Packing FILE "%s"...], ref $file ? $file->{name} : $file)); my $content; if (ref($file)) { $content = $file->{buf}; } else { local $/ = undef; open my $th, '<:raw', $file or die qq[Can't read "$file": $!]; $content = <$th>; close $th; PAR::Filter::PodStrip->apply(\$content, "/$name") if !$ENV{PAR_VERBATIM} and $name =~ /\.(?:pm|ix|al)$/i; PAR::Filter::PatchContent->new->apply(\$content, $file, $name); } $fh->print("FILE", pack('N', length($name) + 9), sprintf("%08x/%s", Archive::Zip::computeCRC32($content), $name), pack('N', length($content)), $content) or die qq[Error writing embedded FILE to "$out": $!]; outs(qq[Written as "$name"]); } } if ($zip) { $zip->writeToFileHandle($fh) == Archive::Zip::AZ_OK or die qq[Error writing zip part of "$out"]; } if ($meta_par{clean}) { $fh->print("\0CLEAN"); } else { if (!defined $cache_name) { my $ctx = Digest::SHA->new(1); seek $fh, 0, 0; $ctx->addfile($fh); seek $fh, 0, 2; $cache_name = $ctx->hexdigest; } $cache_name = substr $cache_name, 0, $cache_name_size; $cache_name .= "\0" x ($cache_name_size - length $cache_name); $fh->print($cache_name, "\0CACHE"); } my $offset = $fh->tell - length($loader); $fh->print(pack('N', $offset), $PAR_MAGIC); $fh->close or die qq[Error writing trailer of "$out": $!]; chmod 0755, $out; exit; } { last unless defined $start_pos; _fix_progname(); require PAR; PAR::Heavy::_init_dynaloader(); { require File::Find; require Archive::Zip; } my $fh = IO::File->new; # Archive::Zip operates on an IO::Handle $fh->fdopen(fileno(_FH), 'r') or die qq[fdopen() failed: $!]; Archive::Zip::setChunkSize(-s _FH); my $zip = Archive::Zip->new; ($zip->readFromFileHandle($fh, $progname) == Archive::Zip::AZ_OK()) or die qq[Error reading zip archive "$progname"]; Archive::Zip::setChunkSize(64 * 1024); push @PAR::LibCache, $zip; $PAR::LibCache{$progname} = $zip; outs("Extracting zip..."); if (defined $ENV{PAR_TEMP}) { # should be set at this point! foreach my $member ( $zip->members ) { next if $member->isDirectory; my $member_name = $member->fileName; next unless $member_name =~ m{ ^ /?shlib/ (?:$Config::Config{archname}/)? ([^/]+) $ }x; my $extract_name = $1; my $dest_name = File::Spec->catfile($ENV{PAR_TEMP}, $extract_name); if (-f $dest_name && -s _ == $member->uncompressedSize()) { outs(qq[Skipping "$member_name" since it already exists at "$dest_name"]); } else { outs(qq[Extracting "$member_name" toZ 5@Z0>8-@>t>=t=<t<;t;x:pt:h9`t9X8Pt8H7@t7860t6(5 t54t43t32s21s10s0/s/.s.-s-,s,+s+x*ps*h)`s)X(Ps(H'@s'8&0s&(% s%$s$#s#"r"!r! r rrrrrxprh`rXPrH@r80r( rrrqqqqq q q q x pq h `q XPqH@q80q( qqqpp0p? 8t?GCC: (Ubuntu 11.4.0-1ubuntu1~22.04.2) 11.4.0.shstrtab.interp.note.gnu.build-id.note.ABI-tag.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.dynamic.got.data.bss.comment 88TT$&xx 4o> F0 0 No[ohh`j(tB ~""y0"0"@%@%d1@VVVVZZ[[ l l(l(l0l0l@n@nppH>H5@H5?0H5?-u5?FILEda9b579d/File/GlobMapper.pm=?package File::GlobMapper; use strict; use warnings; use Carp; our ($CSH_GLOB); BEGIN { if ($] < 5.006) { require File::BSDGlob; File::BSDGlob->import(':glob'); $CSH_GLOB = File::BSDGlob::GLOB_CSH(); *globber = \&File::BSDGlob::csh_glob; } else { require File::Glob; File::Glob->import(':glob'); $CSH_GLOB = File::Glob::GLOB_CSH(); #*globber = \&File::Glob::bsd_glob; *globber = \&File::Glob::csh_glob; } } our ($Error); our ($VERSION, @EXPORT_OK); $VERSION = '1.001'; @EXPORT_OK = qw( globmap ); our ($noPreBS, $metachars, $matchMetaRE, %mapping, %wildCount); $noPreBS = '(? '([^/]*)', '?' => '([^/])', '.' => '\.', '[' => '([', '(' => '(', ')' => ')', ); %wildCount = map { $_ => 1 } qw/ * ? . { ( [ /; sub globmap ($$;) { my $inputGlob = shift ; my $outputGlob = shift ; my $obj = File::GlobMapper->new($inputGlob, $outputGlob, @_) or croak "globmap: $Error" ; return $obj->getFileMap(); } sub new { my $class = shift ; my $inputGlob = shift ; my $outputGlob = shift ; # TODO -- flags needs to default to whatever File::Glob does my $flags = shift || $CSH_GLOB ; #my $flags = shift ; $inputGlob =~ s/^\s*\<\s*//; $inputGlob =~ s/\s*\>\s*$//; $outputGlob =~ s/^\s*\<\s*//; $outputGlob =~ s/\s*\>\s*$//; my %object = ( InputGlob => $inputGlob, OutputGlob => $outputGlob, GlobFlags => $flags, Braces => 0, WildCount => 0, Pairs => [], Sigil => '#', ); my $self = bless \%object, ref($class) || $class ; $self->_parseInputGlob() or return undef ; $self->_parseOutputGlob() or return undef ; my @inputFiles = globber($self->{InputGlob}, $flags) ; if (GLOB_ERROR) { $Error = $!; return undef ; } #if (whatever) { my $missing = grep { ! -e $_ } @inputFiles ; if ($missing) { $Error = "$missing input files do not exist"; return undef ; } } $self->{InputFiles} = \@inputFiles ; $self->_getFiles() or return undef ; return $self; } sub _retError { my $string = shift ; $Error = "$string in input fileglob" ; return undef ; } sub _unmatched { my $delimeter = shift ; _retError("Unmatched $delimeter"); return undef ; } sub _parseBit { my $self = shift ; my $string = shift ; my $out = ''; my $depth = 0 ; while ($string =~ s/(.*?)$noPreBS(,|$matchMetaRE)//) { $out .= quotemeta($1) ; $out .= $mapping{$2} if defined $mapping{$2}; ++ $self->{WildCount} if $wildCount{$2} ; if ($2 eq ',') { return _unmatched("(") if $depth ; $out .= '|'; } elsif ($2 eq '(') { ++ $depth ; } elsif ($2 eq ')') { return _unmatched(")") if ! $depth ; -- $depth ; } elsif ($2 eq '[') { # TODO -- quotemeta & check no '/' # TODO -- check for \] & other \ within the [] $string =~ s#(.*?\])## or return _unmatched("["); $out .= "$1)" ; } elsif ($2 eq ']') { return _unmatched("]"); } elsif ($2 eq '{' || $2 eq '}') { return _retError("Nested {} not allowed"); } } $out .= quotemeta $string; return _unmatched("(") if $depth ; return $out ; } sub _parseInputGlob { my $self = shift ; my $string = $self->{InputGlob} ; my $inGlob = ''; # Multiple concatenated *'s don't make sense #$string =~ s#\*\*+#*# ; # TODO -- Allow space to delimit patterns? #my @strings = split /\s+/, $string ; #for my $str (@strings) my $out = ''; my $depth = 0 ; while ($string =~ s/(.*?)$noPreBS($matchMetaRE)//) { $out .= quotemeta($1) ; $out .= $mapping{$2} if defined $mapping{$2}; ++ $self->{WildCount} if $wildCount{$2} ; if ($2 eq '(') { ++ $depth ; } elsif ($2 eq ')') { return _unmatched(")") if ! $depth ; -- $depth ; } elsif ($2 eq '[') { # TODO -- quotemeta & check no '/' or '(' or ')' # TODO -- check for \] & other \ within the [] $string =~ s#(.*?\])## or return _unmatched("["); $out .= "$1)" ; } elsif ($2 eq ']') { return _unmatched("]"); } elsif ($2 eq '}') { return _unmatched("}"); } elsif ($2 eq '{') { # TODO -- check no '/' within the {} # TODO -- check for \} & other \ within the {} my $tmp ; unless ( $string =~ s/(.*?)$noPreBS\}//) { return _unmatched("{"); } #$string =~ s#(.*?)\}##; #my $alt = join '|', # map { quotemeta $_ } # split "$noPreBS,", $1 ; my $alt = $self->_parseBit($1); defined $alt or return 0 ; $out .= "($alt)" ; ++ $self->{Braces} ; } } return _unmatched("(") if $depth ; $out .= quotemeta $string ; $self->{InputGlob} =~ s/$noPreBS[\(\)]//g; $self->{InputPattern} = $out ; #print "# INPUT '$self->{InputGlob}' => '$out'\n"; return 1 ; } sub _parseOutputGlob { my $self = shift ; my $string = $self->{OutputGlob} ; my $maxwild = $self->{WildCount}; if ($self->{GlobFlags} & GLOB_TILDE) #if (1) { $string =~ s{ ^ ~ # find a leading tilde ( # save this in $1 [^/] # a non-slash character * # repeated 0 or more times (0 means me) ) }{ $1 ? (getpwnam($1))[7] : ( $ENV{HOME} || $ENV{LOGDIR} ) }ex; } # max #1 must be == to max no of '*' in input while ( $string =~ m/#(\d)/g ) { croak "Max wild is #$maxwild, you tried #$1" if $1 > $maxwild ; } my $noPreBS = '(?{OutputGlob}' => '$string'\n"; $self->{OutputPattern} = $string ; return 1 ; } sub _getFiles { my $self = shift ; my %outInMapping = (); my %inFiles = () ; foreach my $inFile (@{ $self->{InputFiles} }) { next if $inFiles{$inFile} ++ ; my $outFile = $inFile ; if ( $inFile =~ m/$self->{InputPattern}/ ) { no warnings 'uninitialized'; eval "\$outFile = $self->{OutputPattern};" ; if (defined $outInMapping{$outFile}) { $Error = "multiple input files map to one output file"; return undef ; } $outInMapping{$outFile} = $inFile; push @{ $self->{Pairs} }, [$inFile, $outFile]; } } return 1 ; } sub getFileMap { my $self = shift ; return $self->{Pairs} ; } sub getHash { my $self = shift ; return { map { $_->[0] => $_->[1] } @{ $self->{Pairs} } } ; } 1; __END__ =head1 NAME File::GlobMapper - Extend File Glob to Allow Input and Output Files =head1 SYNOPSIS use File::GlobMapper qw( globmap ); my $aref = globmap $input => $output or die $File::GlobMapper::Error ; my $gm = File::GlobMapper->new( $input => $output ) or die $File::GlobMapper::Error ; =head1 DESCRIPTION This module needs Perl5.005 or better. This module takes the existing C module as a starting point and extends it to allow new filenames to be derived from the files matched by C. This can be useful when carrying out batch operations on multiple files that have both an input filename and output filename and the output file can be derived from the input filename. Examples of operations where this can be useful include, file renaming, file copying and file compression. =head2 Behind The Scenes To help explain what C does, consider what code you would write if you wanted to rename all files in the current directory that ended in C<.tar.gz> to C<.tgz>. So say these files are in the current directory alpha.tar.gz beta.tar.gz gamma.tar.gz and they need renamed to this alpha.tgz beta.tgz gamma.tgz Below is a possible implementation of a script to carry out the rename (error cases have been omitted) foreach my $old ( glob "*.tar.gz" ) { my $new = $old; $new =~ s#(.*)\.tar\.gz$#$1.tgz# ; rename $old => $new or die "Cannot rename '$old' to '$new': $!\n; } Notice that a file glob pattern C<*.tar.gz> was used to match the C<.tar.gz> files, then a fairly similar regular expression was used in the substitute to allow the new filename to be created. Given that the file glob is just a cut-down regular expression and that it has already done a lot of the hard work in pattern matching the filenames, wouldn't it be handy to be able to use the patterns in the fileglob to drive the new filename? Well, that's I what C does. Here is same snippet of code rewritten using C for my $pair (globmap '<*.tar.gz>' => '<#1.tgz>' ) { my ($from, $to) = @$pair; rename $from => $to or die "Cannot rename '$old' to '$new': $!\n; } So how does it work? Behind the scenes the C function does a combination of a file glob to match existing filenames followed by a substitute to create the new filenames. Notice how both parameters to C are strings that are delimited by <>. This is done to make them look more like file globs - it is just syntactic sugar, but it can be handy when you want the strings to be visually distinctive. The enclosing <> are optional, so you don't have to use them - in fact the first thing globmap will do is remove these delimiters if they are present. The first parameter to C, C<*.tar.gz>, is an I. Once the enclosing "< ... >" is removed, this is passed (more or less) unchanged to C to carry out a file match. Next the fileglob C<*.tar.gz> is transformed behind the scenes into a full Perl regular expression, with the additional step of wrapping each transformed wildcard metacharacter sequence in parenthesis. In this case the input fileglob C<*.tar.gz> will be transformed into this Perl regular expression ([^/]*)\.tar\.gz Wrapping with parenthesis allows the wildcard parts of the Input File Glob to be referenced by the second parameter to C, C<#1.tgz>, the I. This parameter operates just like the replacement part of a substitute command. The difference is that the C<#1> syntax is used to reference sub-patterns matched in the input fileglob, rather than the C<$1> syntax that is used with perl regular expressions. In this case C<#1> is used to refer to the text matched by the C<*> in the Input File Glob. This makes it easier to use this module where the parameters to C are typed at the command line. The final step involves passing each filename matched by the C<*.tar.gz> file glob through the derived Perl regular expression in turn and expanding the output fileglob using it. The end result of all this is a list of pairs of filenames. By default that is what is returned by C. In this example the data structure returned will look like this ( ['alpha.tar.gz' => 'alpha.tgz'], ['beta.tar.gz' => 'beta.tgz' ], ['gamma.tar.gz' => 'gamma.tgz'] ) Each pair is an array reference with two elements - namely the I filename, that C has matched, and a I filename that is derived from the I filename. =head2 Limitations C has been kept simple deliberately, so it isn't intended to solve all filename mapping operations. Under the hood C (or for older versions of Perl, C) is used to match the files, so you will never have the flexibility of full Perl regular expression. =head2 Input File Glob The syntax for an Input FileGlob is identical to C, except for the following =over 5 =item 1. No nested {} =item 2. Whitespace does not delimit fileglobs. =item 3. The use of parenthesis can be used to capture parts of the input filename. =item 4. If an Input glob matches the same file more than once, only the first will be used. =back The syntax =over 5 =item B<~> =item B<~user> =item B<.> Matches a literal '.'. Equivalent to the Perl regular expression \. =item B<*> Matches zero or more characters, except '/'. Equivalent to the Perl regular expression [^/]* =item B Matches zero or one character, except '/'. Equivalent to the Perl regular expression [^/]? =item B<\> Backslash is used, as usual, to escape the next character. =item B<[]> Character class. =item B<{,}> Alternation =item B<()> Capturing parenthesis that work just like perl =back Any other character it taken literally. =head2 Output File Glob The Output File Glob is a normal string, with 2 glob-like features. The first is the '*' metacharacter. This will be replaced by the complete filename matched by the input file glob. So *.c *.Z The second is Output FileGlobs take the =over 5 =item "*" The "*" character will be replaced with the complete input filename. =item #1 Patterns of the form /#\d/ will be replaced with the =back =head2 Returned Data =head1 EXAMPLES =head2 A Rename script Below is a simple "rename" script that uses C to determine the source and destination filenames. use File::GlobMapper qw(globmap) ; use File::Copy; die "rename: Usage rename 'from' 'to'\n" unless @ARGV == 2 ; my $fromGlob = shift @ARGV; my $toGlob = shift @ARGV; my $pairs = globmap($fromGlob, $toGlob) or die $File::GlobMapper::Error; for my $pair (@$pairs) { my ($from, $to) = @$pair; move $from => $to ; } Here is an example that renames all c files to cpp. $ rename '*.c' '#1.cpp' =head2 A few example globmaps Below are a few examples of globmaps To copy all your .c file to a backup directory '' '' If you want to compress all '' '<*.gz>' To uncompress '' '' =head1 SEE ALSO L =head1 AUTHOR The I module was written by Paul Marquess, F. =head1 COPYRIGHT AND LICENSE Copyright (c) 2005 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. FILEb585357c/File/Find.pmIpackage File::Find; use 5.006; use strict; use warnings; use warnings::register; use Exporter 'import'; require Cwd; require File::Basename; require File::Spec; our $VERSION = '1.44'; our @EXPORT = qw(find finddepth); my $Is_VMS = $^O eq 'VMS'; my $Is_Win32 = $^O eq 'MSWin32'; # Should ideally be my() not our() but local() currently # refuses to operate on lexicals our %SLnkSeen; our ($wanted_callback, $avoid_nlink, $bydepth, $no_chdir, $follow, $follow_skip, $full_check, $untaint, $untaint_skip, $untaint_pat, $pre_process, $post_process, $dangling_symlinks); sub contract_name { my ($cdir,$fn) = @_; return substr($cdir,0,rindex($cdir,'/')) if $fn eq $File::Find::current_dir; $cdir = substr($cdir,0,rindex($cdir,'/')+1); $fn =~ s|^\./||; my $abs_name= $cdir . $fn; if (substr($fn,0,3) eq '../') { 1 while $abs_name =~ s!/[^/]*/\.\./+!/!; } return $abs_name; } sub _is_absolute { return $_[0] =~ m|^(?:[A-Za-z]:)?/| if $Is_Win32; return substr($_[0], 0, 1) eq '/'; } sub _is_root { return $_[0] =~ m|^(?:[A-Za-z]:)?/\z| if $Is_Win32; return $_[0] eq '/'; } sub PathCombine($$) { my ($Base,$Name) = @_; my $AbsName; if (_is_absolute($Name)) { $AbsName= $Name; } else { $AbsName= contract_name($Base,$Name); } # (simple) check for recursion my $newlen= length($AbsName); if ($newlen <= length($Base)) { if (($newlen == length($Base) || substr($Base,$newlen,1) eq '/') && $AbsName eq substr($Base,0,$newlen)) { return undef; } } return $AbsName; } sub Follow_SymLink($) { my ($AbsName) = @_; my ($NewName,$DEV, $INO); ($DEV, $INO)= lstat $AbsName; while (-l _) { if ($SLnkSeen{$DEV, $INO}++) { if ($follow_skip < 2) { die "$AbsName is encountered a second time"; } else { return undef; } } my $Link = readlink($AbsName); # canonicalize directory separators $Link =~ s|\\|/|g if $Is_Win32; $NewName= PathCombine($AbsName, $Link); unless(defined $NewName) { if ($follow_skip < 2) { die "$AbsName is a recursive symbolic link"; } else { return undef; } } else { $AbsName= $NewName; } ($DEV, $INO) = lstat($AbsName); return undef unless defined $DEV; # dangling symbolic link } if ($full_check && defined $DEV && $SLnkSeen{$DEV, $INO}++) { if ( ($follow_skip < 1) || ((-d _) && ($follow_skip < 2)) ) { die "$AbsName encountered a second time"; } else { return undef; } } return $AbsName; } our($dir, $name, $fullname, $prune); sub _find_dir_symlnk($$$); sub _find_dir($$$); # check whether or not a scalar variable is tainted # (code straight from the Camel, 3rd ed., page 561) sub is_tainted_pp { my $arg = shift; my $nada = substr($arg, 0, 0); # zero-length local $@; eval { eval "# $nada" }; return length($@) != 0; } sub _find_opt { my $wanted = shift; return unless @_; die "invalid top directory" unless defined $_[0]; # This function must local()ize everything because callbacks may # call find() or finddepth() local %SLnkSeen; local ($wanted_callback, $avoid_nlink, $bydepth, $no_chdir, $follow, $follow_skip, $full_check, $untaint, $untaint_skip, $untaint_pat, $pre_process, $post_process, $dangling_symlinks); local($dir, $name, $fullname, $prune); local *_ = \my $a; my $cwd = $wanted->{bydepth} ? Cwd::fastcwd() : Cwd::getcwd(); if ($Is_VMS) { # VMS returns this by default in VMS format which just doesn't # work for the rest of this module. $cwd = VMS::Filespec::unixpath($cwd); # Apparently this is not expected to have a trailing space. # To attempt to make VMS/UNIX conversions mostly reversible, # a trailing slash is needed. The run-time functions ignore the # resulting double slash, but it causes the perl tests to fail. $cwd =~ s#/\z##; # This comes up in upper case now, but should be lower. # In the future this could be exact case, no need to change. } my $cwd_untainted = $cwd; my $check_t_cwd = 1; $wanted_callback = $wanted->{wanted}; $bydepth = $wanted->{bydepth}; $pre_process = $wanted->{preprocess}; $post_process = $wanted->{postprocess}; $no_chdir = $wanted->{no_chdir}; $full_check = $wanted->{follow}; $follow = $full_check || $wanted->{follow_fast}; $follow_skip = $wanted->{follow_skip}; $untaint = $wanted->{untaint}; $untaint_pat = $wanted->{untaint_pattern}; $untaint_skip = $wanted->{untaint_skip}; $dangling_symlinks = $wanted->{dangling_symlinks}; # for compatibility reasons (find.pl, find2perl) local our ($topdir, $topdev, $topino, $topmode, $topnlink); # a symbolic link to a directory doesn't increase the link count $avoid_nlink = $follow || $File::Find::dont_use_nlink; my ($abs_dir, $Is_Dir); Proc_Top_Item: foreach my $TOP (@_) { my $top_item = $TOP; $top_item = VMS::Filespec::unixify($top_item) if $Is_VMS; ($topdev,$topino,$topmode,$topnlink) = $follow ? stat $top_item : lstat $top_item; # canonicalize directory separators $top_item =~ s|[/\\]|/|g if $Is_Win32; # no trailing / unless path is root $top_item =~ s|/\z|| unless _is_root($top_item); $Is_Dir= 0; if ($follow) { if (_is_absolute($top_item)) { $abs_dir = $top_item; } elsif ($top_item eq $File::Find::current_dir) { $abs_dir = $cwd; } else { # care about any ../ $top_item =~ s/\.dir\z//i if $Is_VMS; $abs_dir = contract_name("$cwd/",$top_item); } $abs_dir= Follow_SymLink($abs_dir); unless (defined $abs_dir) { if ($dangling_symlinks) { if (ref $dangling_symlinks eq 'CODE') { $dangling_symlinks->($top_item, $cwd); } else { warnings::warnif "$top_item is a dangling symbolic link\n"; } } next Proc_Top_Item; } if (-d _) { $top_item =~ s/\.dir\z//i if $Is_VMS; _find_dir_symlnk($wanted, $abs_dir, $top_item); $Is_Dir= 1; } } else { # no follow $topdir = $top_item; unless (defined $topnlink) { warnings::warnif "Can't stat $top_item: $!\n"; next Proc_Top_Item; } if (-d _) { $top_item =~ s/\.dir\z//i if $Is_VMS; _find_dir($wanted, $top_item, $topnlink); $Is_Dir= 1; } else { $abs_dir= $top_item; } } unless ($Is_Dir) { unless (($_,$dir) = File::Basename::fileparse($abs_dir)) { ($dir,$_) = ('./', $top_item); } $abs_dir = $dir; if (( $untaint ) && (is_tainted($dir) )) { ( $abs_dir ) = $dir =~ m|$untaint_pat|; unless (defined $abs_dir) { if ($untaint_skip == 0) { die "directory $dir is still tainted"; } else { next Proc_Top_Item; } } } unless ($no_chdir || chdir $abs_dir) { warnings::warnif "Couldn't chdir $abs_dir: $!\n"; next Proc_Top_Item; } $name = $abs_dir . $_; # $File::Find::name $_ = $name if $no_chdir; { $wanted_callback->() }; # protect against wild "next" } unless ( $no_chdir ) { if ( ($check_t_cwd) && (($untaint) && (is_tainted($cwd) )) ) { ( $cwd_untainted ) = $cwd =~ m|$untaint_pat|; unless (defined $cwd_untainted) { die "insecure cwd in find(depth)"; } $check_t_cwd = 0; } unless (chdir $cwd_untainted) { die "Can't cd to $cwd: $!\n"; } } } } # API: # $wanted # $p_dir : "parent directory" # $nlink : what came back from the stat # preconditions: # chdir (if not no_chdir) to dir sub _find_dir($$$) { my ($wanted, $p_dir, $nlink) = @_; my ($CdLvl,$Level) = (0,0); my @Stack; my @filenames; my ($subcount,$sub_nlink); my $SE= []; my $dir_name= $p_dir; my $dir_pref; my $dir_rel = $File::Find::current_dir; my $tainted = 0; my $no_nlink; if ($Is_VMS) { # VMS is returning trailing .dir on directories # and trailing . on files and symbolic links # in UNIX syntax. # $p_dir =~ s/\.(dir)?$//i unless $p_dir eq '.'; $dir_pref = ($p_dir =~ m/[\]>]+$/ ? $p_dir : "$p_dir/" ); } else { $dir_pref = _is_root($p_dir) ? $p_dir : "$p_dir/"; } local ($dir, $name, $prune); unless ( $no_chdir || ($p_dir eq $File::Find::current_dir)) { my $udir = $p_dir; if (( $untaint ) && (is_tainted($p_dir) )) { ( $udir ) = $p_dir =~ m|$untaint_pat|; unless (defined $udir) { if ($untaint_skip == 0) { die "directory $p_dir is still tainted"; } else { return; } } } unless (chdir ($Is_VMS && $udir !~ /[\/\[<]+/ ? "./$udir" : $udir)) { warnings::warnif "Can't cd to $udir: $!\n"; return; } } # push the starting directory push @Stack,[$CdLvl,$p_dir,$dir_rel,-1] if $bydepth; while (defined $SE) { unless ($bydepth) { $dir= $p_dir; # $File::Find::dir $name= $dir_name; # $File::Find::name $_= ($no_chdir ? $dir_name : $dir_rel ); # $_ # prune may happen here $prune= 0; { $wanted_callback->() }; # protect against wild "next" next if $prune; } # change to that directory unless ($no_chdir || ($dir_rel eq $File::Find::current_dir)) { my $udir= $dir_rel; if ( ($untaint) && (($tainted) || ($tainted = is_tainted($dir_rel) )) ) { ( $udir ) = $dir_rel =~ m|$untaint_pat|; unless (defined $udir) { if ($untaint_skip == 0) { die "directory (" . ($p_dir ne '/' ? $p_dir : '') . "/) $dir_rel is still tainted"; } else { # $untaint_skip == 1 next; } } } unless (chdir ($Is_VMS && $udir !~ /[\/\[<]+/ ? "./$udir" : $udir)) { warnings::warnif "Can't cd to (" . ($p_dir ne '/' ? $p_dir : '') . "/) $udir: $!\n"; next; } $CdLvl++; } $dir= $dir_name; # $File::Find::dir # Get the list of files in the current directory. my $dh; unless (opendir $dh, ($no_chdir ? $dir_name : $File::Find::current_dir)) { warnings::warnif "Can't opendir($dir_name): $!\n"; next; } @filenames = readdir $dh; closedir($dh); @filenames = $pre_process->(@filenames) if $pre_process; push @Stack,[$CdLvl,$dir_name,"",-2] if $post_process; # default: use whatever was specified # (if $nlink >= 2, and $avoid_nlink == 0, this will switch back) $no_nlink = $avoid_nlink; # if dir has wrong nlink count, force switch to slower stat method $no_nlink = 1 if ($nlink < 2); if ($nlink == 2 && !$no_nlink) { # This dir has no subdirectories. for my $FN (@filenames) { if ($Is_VMS) { # Big hammer here - Compensate for VMS trailing . and .dir # No win situation until this is changed, but this # will handle the majority of the cases with breaking the fewest $FN =~ s/\.dir\z//i; $FN =~ s#\.$## if ($FN ne '.'); } next if $FN =~ $File::Find::skip_pattern; $name = $dir_pref . $FN; # $File::Find::name $_ = ($no_chdir ? $name : $FN); # $_ { $wanted_callback->() }; # protect against wild "next" } } else { # This dir has subdirectories. $subcount = $nlink - 2; # HACK: insert directories at this position, so as to preserve # the user pre-processed ordering of files (thus ensuring # directory traversal is in user sorted order, not at random). my $stack_top = @Stack; for my $FN (@filenames) { next if $FN =~ $File::Find::skip_pattern; if ($subcount > 0 || $no_nlink) { # Seen all the subdirs? # check for directoriness. # stat is faster for a file in the current directory $sub_nlink = (lstat ($no_chdir ? $dir_pref . $FN : $FN))[3]; if (-d _) { --$subcount; $FN =~ s/\.dir\z//i if $Is_VMS; # HACK: replace push to preserve dir traversal order #push @Stack,[$CdLvl,$dir_name,$FN,$sub_nlink]; splice @Stack, $stack_top, 0, [$CdLvl,$dir_name,$FN,$sub_nlink]; } else { $name = $dir_pref . $FN; # $File::Find::name $_= ($no_chdir ? $name : $FN); # $_ { $wanted_callback->() }; # protect against wild "next" } } else { $name = $dir_pref . $FN; # $File::Find::name $_= ($no_chdir ? $name : $FN); # $_ { $wanted_callback->() }; # protect against wild "next" } } } } continue { while ( defined ($SE = pop @Stack) ) { ($Level, $p_dir, $dir_rel, $nlink) = @$SE; if ($CdLvl > $Level && !$no_chdir) { my $tmp; if ($Is_VMS) { $tmp = '[' . ('-' x ($CdLvl-$Level)) . ']'; } else { $tmp = join('/',('..') x ($CdLvl-$Level)); } die "Can't cd to $tmp from $dir_name: $!" unless chdir ($tmp); $CdLvl = $Level; } if ($^O eq 'VMS') { if ($p_dir =~ m/[\]>]+$/) { $dir_name = $p_dir; $dir_name =~ s/([\]>]+)$/.$dir_rel$1/; $dir_pref = $dir_name; } else { $dir_name = "$p_dir/$dir_rel"; $dir_pref = "$dir_name/"; } } else { $dir_name = _is_root($p_dir) ? "$p_dir$dir_rel" : "$p_dir/$dir_rel"; $dir_pref = "$dir_name/"; } if ( $nlink == -2 ) { $name = $dir = $p_dir; # $File::Find::name / dir $_ = $File::Find::current_dir; $post_process->(); # End-of-directory processing } elsif ( $nlink < 0 ) { # must be finddepth, report dirname now $name = $dir_name; if ( substr($name,-2) eq '/.' ) { substr($name, length($name) == 2 ? -1 : -2) = ''; } $dir = $p_dir; $_ = ($no_chdir ? $dir_name : $dir_rel ); if ( substr($_,-2) eq '/.' ) { substr($_, length($_) == 2 ? -1 : -2) = ''; } { $wanted_callback->() }; # protect against wild "next" } else { push @Stack,[$CdLvl,$p_dir,$dir_rel,-1] if $bydepth; last; } } } } # API: # $wanted # $dir_loc : absolute location of a dir # $p_dir : "parent directory" # preconditions: # chdir (if not no_chdir) to dir sub _find_dir_symlnk($$$) { my ($wanted, $dir_loc, $p_dir) = @_; # $dir_loc is the absolute directory my @Stack; my @filenames; my $new_loc; my $updir_loc = $dir_loc; # untainted parent directory my $SE = []; my $dir_name = $p_dir; my $dir_pref; my $loc_pref; my $dir_rel = $File::Find::current_dir; my $byd_flag; # flag for pending stack entry if $bydepth my $tainted = 0; my $ok = 1; $dir_pref = _is_root($p_dir) ? $p_dir : "$p_dir/"; $loc_pref = _is_root($dir_loc) ? $dir_loc : "$dir_loc/"; local ($dir, $name, $fullname, $prune); unless ($no_chdir) { # untaint the topdir if (( $untaint ) && (is_tainted($dir_loc) )) { ( $updir_loc ) = $dir_loc =~ m|$untaint_pat|; # parent dir, now untainted # once untainted, $updir_loc is pushed on the stack (as parent directory); # hence, we don't need to untaint the parent directory every time we chdir # to it later unless (defined $updir_loc) { if ($untaint_skip == 0) { die "directory $dir_loc is still tainted"; } else { return; } } } $ok = chdir($updir_loc) unless ($p_dir eq $File::Find::current_dir); unless ($ok) { warnings::warnif "Can't cd to $updir_loc: $!\n"; return; } } push @Stack,[$dir_loc,$updir_loc,$p_dir,$dir_rel,-1] if $bydepth; while (defined $SE) { unless ($bydepth) { # change (back) to parent directory (always untainted) unless ($no_chdir) { unless (chdir $updir_loc) { warnings::warnif "Can't cd to $updir_loc: $!\n"; next; } } $dir= $p_dir; # $File::Find::dir $name= $dir_name; # $File::Find::name $_= ($no_chdir ? $dir_name : $dir_rel ); # $_ $fullname= $dir_loc; # $File::Find::fullname # prune may happen here $prune= 0; lstat($_); # make sure file tests with '_' work { $wanted_callback->() }; # protect against wild "next" next if $prune; } # change to that directory unless ($no_chdir || ($dir_rel eq $File::Find::current_dir)) { $updir_loc = $dir_loc; if ( ($untaint) && (($tainted) || ($tainted = is_tainted($dir_loc) )) ) { # untaint $dir_loc, what will be pushed on the stack as (untainted) parent dir ( $updir_loc ) = $dir_loc =~ m|$untaint_pat|; unless (defined $updir_loc) { if ($untaint_skip == 0) { die "directory $dir_loc is still tainted"; } else { next; } } } unless (chdir $updir_loc) { warnings::warnif "Can't cd to $updir_loc: $!\n"; next; } } $dir = $dir_name; # $File::Find::dir # Get the list of files in the current directory. my $dh; unless (opendir $dh, ($no_chdir ? $dir_loc : $File::Find::current_dir)) { warnings::warnif "Can't opendir($dir_loc): $!\n"; next; } @filenames = readdir $dh; closedir($dh); for my $FN (@filenames) { if ($Is_VMS) { # Big hammer here - Compensate for VMS trailing . and .dir # No win situation until this is changed, but this # will handle the majority of the cases with breaking the fewest. $FN =~ s/\.dir\z//i; $FN =~ s#\.$## if ($FN ne '.'); } next if $FN =~ $File::Find::skip_pattern; # follow symbolic links / do an lstat $new_loc = Follow_SymLink($loc_pref.$FN); # ignore if invalid symlink unless (defined $new_loc) { if (!defined -l _ && $dangling_symlinks) { $fullname = undef; if (ref $dangling_symlinks eq 'CODE') { $dangling_symlinks->($FN, $dir_pref); } else { warnings::warnif "$dir_pref$FN is a dangling symbolic link\n"; } } else { $fullname = $loc_pref . $FN; } $name = $dir_pref . $FN; $_ = ($no_chdir ? $name : $FN); { $wanted_callback->() }; next; } if (-d _) { if ($Is_VMS) { $FN =~ s/\.dir\z//i; $FN =~ s#\.$## if ($FN ne '.'); $new_loc =~ s/\.dir\z//i; $new_loc =~ s#\.$## if ($new_loc ne '.'); } push @Stack,[$new_loc,$updir_loc,$dir_name,$FN,1]; } else { $fullname = $new_loc; # $File::Find::fullname $name = $dir_pref . $FN; # $File::Find::name $_ = ($no_chdir ? $name : $FN); # $_ { $wanted_callback->() }; # protect against wild "next" } } } continue { while (defined($SE = pop @Stack)) { ($dir_loc, $updir_loc, $p_dir, $dir_rel, $byd_flag) = @$SE; $dir_name = _is_root($p_dir) ? "$p_dir$dir_rel" : "$p_dir/$dir_rel"; $dir_pref = "$dir_name/"; $loc_pref = "$dir_loc/"; if ( $byd_flag < 0 ) { # must be finddepth, report dirname now unless ($no_chdir || ($dir_rel eq $File::Find::current_dir)) { unless (chdir $updir_loc) { # $updir_loc (parent dir) is always untainted warnings::warnif "Can't cd to $updir_loc: $!\n"; next; } } $fullname = $dir_loc; # $File::Find::fullname $name = $dir_name; # $File::Find::name if ( substr($name,-2) eq '/.' ) { substr($name, length($name) == 2 ? -1 : -2) = ''; # $File::Find::name } $dir = $p_dir; # $File::Find::dir $_ = ($no_chdir ? $dir_name : $dir_rel); # $_ if ( substr($_,-2) eq '/.' ) { substr($_, length($_) == 2 ? -1 : -2) = ''; } lstat($_); # make sure file tests with '_' work { $wanted_callback->() }; # protect against wild "next" } else { push @Stack,[$dir_loc, $updir_loc, $p_dir, $dir_rel,-1] if $bydepth; last; } } } } sub wrap_wanted { my $wanted = shift; if ( ref($wanted) eq 'HASH' ) { # RT #122547 my %valid_options = map {$_ => 1} qw( wanted bydepth preprocess postprocess follow follow_fast follow_skip dangling_symlinks no_chdir untaint untaint_pattern untaint_skip ); my @invalid_options = (); for my $v (keys %{$wanted}) { push @invalid_options, $v unless exists $valid_options{$v}; } warn "Invalid option(s): @invalid_options" if @invalid_options; unless( exists $wanted->{wanted} and ref( $wanted->{wanted} ) eq 'CODE' ) { die 'no &wanted subroutine given'; } if ( $wanted->{follow} || $wanted->{follow_fast}) { $wanted->{follow_skip} = 1 unless defined $wanted->{follow_skip}; } if ( $wanted->{untaint} ) { $wanted->{untaint_pattern} = $File::Find::untaint_pattern unless defined $wanted->{untaint_pattern}; $wanted->{untaint_skip} = 0 unless defined $wanted->{untaint_skip}; } return $wanted; } elsif( ref( $wanted ) eq 'CODE' ) { return { wanted => $wanted }; } else { die 'no &wanted subroutine given'; } } sub find { my $wanted = shift; _find_opt(wrap_wanted($wanted), @_); } sub finddepth { my $wanted = wrap_wanted(shift); $wanted->{bydepth} = 1; _find_opt($wanted, @_); } # default $File::Find::skip_pattern = qr/^\.{1,2}\z/; $File::Find::untaint_pattern = qr|^([-+@\w./]+)$|; # this _should_ work properly on all platforms # where File::Find can be expected to work $File::Find::current_dir = File::Spec->curdir || '.'; $File::Find::dont_use_nlink = 1; # We need a function that checks if a scalar is tainted. Either use the # Scalar::Util module's tainted() function or our (slower) pure Perl # fallback is_tainted_pp() { local $@; eval { require Scalar::Util }; *is_tainted = $@ ? \&is_tainted_pp : \&Scalar::Util::tainted; } 1; __END__ =head1 NAME File::Find - Traverse a directory tree. =head1 SYNOPSIS use File::Find; find(\&wanted, @directories_to_search); sub wanted { ... } use File::Find; finddepth(\&wanted, @directories_to_search); sub wanted { ... } use File::Find; find({ wanted => \&process, follow => 1 }, '.'); =head1 DESCRIPTION These are functions for searching through directory trees doing work on each file found similar to the Unix L command. C exports two functions, C and C. They work similarly but have subtle differences. =over 4 =item B find(\&wanted, @directories); find(\%options, @directories); C does a depth-first search over the given C<@directories> in the order they are given. For each file or directory found, it calls the C<&wanted> subroutine. (See below for details on how to use the C<&wanted> function). Additionally, for each directory found, it will C into that directory and continue the search, invoking the C<&wanted> function on each file or subdirectory in the directory. =item B finddepth(\&wanted, @directories); finddepth(\%options, @directories); C works just like C except that it invokes the C<&wanted> function for a directory I invoking it for the directory's contents. It does a postorder traversal instead of a preorder traversal, working from the bottom of the directory tree up where C works from the top of the tree down. =back Despite the name of the C function, both C and C perform a depth-first search of the directory hierarchy. =head2 C<%options> The first argument to C is either a code reference to your C<&wanted> function, or a hash reference describing the operations to be performed for each file. The code reference is described in L below. Here are the possible B for the hash: =over 4 =item C The value should be a code reference. This code reference is described in L below. The C<&wanted> subroutine is mandatory. =item C Reports the name of a directory only AFTER all its entries have been reported. Entry point C is a shortcut for specifying C<< { bydepth => 1 } >> in the first argument of C. =item C The value should be a code reference. This code reference is used to preprocess the current directory. The name of the currently processed directory is in C<$File::Find::dir>. Your preprocessing function is called after C, but before the loop that calls the C function. It is called with a list of strings (actually file/directory names) and is expected to return a list of strings. The code can be used to sort the file/directory names alphabetically, numerically, or to filter out directory entries based on their name alone. When C or C are in effect, C is a no-op. =item C The value should be a code reference. It is invoked just before leaving the currently processed directory. It is called in void context with no arguments. The name of the current directory is in C<$File::Find::dir>. This hook is handy for summarizing a directory, such as calculating its disk usage. When C or C are in effect, C is a no-op. =item C Causes symbolic links to be followed. Since directory trees with symbolic links (followed) may contain files more than once and may even have cycles, a hash has to be built up with an entry for each file. This might be expensive both in space and time for a large directory tree. See L and L below. If either C or C is in effect: =over 4 =item * It is guaranteed that an C has been called before the user's C function is called. This enables fast file checks involving C<_>. Note that this guarantee no longer holds if C or C are not set. =item * There is a variable C<$File::Find::fullname> which holds the absolute pathname of the file with all symbolic links resolved. If the link is a dangling symbolic link, then fullname will be set to C. =back =item C This is similar to C except that it may report some files more than once. It does detect cycles, however. Since only symbolic links have to be hashed, this is much cheaper both in space and time. If processing a file more than once (by the user's C function) is worse than just taking time, the option C should be used. =item C C, which is the default, causes all files which are neither directories nor symbolic links to be ignored if they are about to be processed a second time. If a directory or a symbolic link are about to be processed a second time, C dies. C causes C to die if any file is about to be processed a second time. C causes C to ignore any duplicate files and directories but to proceed normally otherwise. =item C Specifies what to do with symbolic links whose target doesn't exist. If true and a code reference, will be called with the symbolic link name and the directory it lives in as arguments. Otherwise, if true and warnings are on, a warning of the form C<"symbolic_link_name is a dangling symbolic link\n"> will be issued. If false, the dangling symbolic link will be silently ignored. =item C Does not C to each directory as it recurses. The C function will need to be aware of this, of course. In this case, C<$_> will be the same as C<$File::Find::name>. =item C If find is used in L (C<-T> command line switch or C or C), then internally directory names have to be untainted before they can be C'd to. Therefore they are checked against a regular expression C. Note that all names passed to the user's C function are still tainted. If this option is used while not in taint-mode, C is a no-op. =item C See above. This should be set using the C quoting operator. The default is set to C. Note that the parentheses are vital. =item C If set, a directory which fails the C is skipped, including all its sub-directories. The default is to C in such a case. =back =head2 The wanted function The C function does whatever verifications you want on each file and directory. Note that despite its name, the C function is a generic callback function, and does B tell C if a file is "wanted" or not. In fact, its return value is ignored. The C function takes no arguments but rather does its work through a collection of variables. =over 4 =item C<$File::Find::dir> is the current directory name, =item C<$_> is the current filename within that directory =item C<$File::Find::name> is the complete pathname to the file. =back The above variables have all been localized and may be changed without affecting data outside of the wanted function. For example, when examining the file F you will have: $File::Find::dir = /some/path/ $_ = foo.ext $File::Find::name = /some/path/foo.ext You are C'd to C<$File::Find::dir> when the function is called, unless C was specified. Note that when changing to directories is in effect, the root directory (F) is a somewhat special case inasmuch as the concatenation of C<$File::Find::dir>, C<'/'> and C<$_> is not literally equal to C<$File::Find::name>. The table below summarizes all variants: $File::Find::name $File::Find::dir $_ default / / . no_chdir=>0 /etc / etc /etc/x /etc x no_chdir=>1 / / / /etc / /etc /etc/x /etc /etc/x When C or C are in effect, there is also a C<$File::Find::fullname>. The function may set C<$File::Find::prune> to prune the tree unless C was specified. Unless C or C is specified, for compatibility reasons (C, L) there are in addition the following globals available: C<$File::Find::topdir>, C<$File::Find::topdev>, C<$File::Find::topino>, C<$File::Find::topmode> and C<$File::Find::topnlink>. This library is useful for the C tool (distributed with the L CPAN module), which when fed: find2perl / -name .nfs\* -mtime +7 \ -exec rm -f {} \; -o -fstype nfs -prune produces something like: sub wanted { /^\.nfs.*\z/s && (($dev, $ino, $mode, $nlink, $uid, $gid) = lstat($_)) && int(-M _) > 7 && unlink($_) || ($nlink || (($dev, $ino, $mode, $nlink, $uid, $gid) = lstat($_))) && $dev < 0 && ($File::Find::prune = 1); } Notice the C<_> in the above C: the C<_> is a magical filehandle that caches the information from the preceding C, C, or filetest. Here's another interesting wanted function. It will find all symbolic links that don't resolve: sub wanted { -l && !-e && print "bogus link: $File::Find::name\n"; } Note that you may mix directories and (non-directory) files in the list of directories to be searched by the C function. find(\&wanted, "./foo", "./bar", "./baz/epsilon"); In the example above, no file in F<./baz/> other than F<./baz/epsilon> will be evaluated by C. See also the script C on CPAN for a nice application of this module. =head1 WARNINGS If you run your program with the C<-w> switch, or if you use the C pragma, File::Find will report warnings for several weird situations. You can disable these warnings by putting the statement no warnings 'File::Find'; in the appropriate scope. See L for more info about lexical warnings. =head1 BUGS AND CAVEATS =over 4 =item C<$dont_use_nlink> You can set the variable C<$File::Find::dont_use_nlink> to C<0> if you are sure the filesystem you are scanning reflects the number of subdirectories in the parent directory's C count. If you do set C<$File::Find::dont_use_nlink> to 0, you may notice an improvement in speed at the risk of not recursing into subdirectories if a filesystem doesn't populate C as expected. C<$File::Find::dont_use_nlink> now defaults to 1 on all platforms. =item Symlinks Be aware that the option to follow symbolic links can be dangerous. Depending on the structure of the directory tree (including symbolic links to directories) you might traverse a given (physical) directory more than once (only if C is in effect). Furthermore, deleting or changing files in a symbolically linked directory might cause very unpleasant surprises, since you delete or change files in an unknown directory. =back =head1 HISTORY C used to produce incorrect results if called recursively. During the development of perl 5.8 this bug was fixed. The first fixed version of C was 1.01. =head1 SEE ALSO L, L =cut FILEcbb56b69/File/Copy.pm?0# File/Copy.pm. Written in 1994 by Aaron Sherman . This # source code has been placed in the public domain by the author. # Please be kind and preserve the documentation. # # Additions copyright 1996 by Charles Bailey. Permission is granted # to distribute the revised code under the same terms as Perl itself. package File::Copy; use 5.035007; use strict; use warnings; no warnings 'newline'; no warnings 'experimental::builtin'; use builtin 'blessed'; use overload; use File::Spec; use Config; # We want HiRes stat and utime if available BEGIN { eval q{ use Time::HiRes qw( stat utime ) } }; our(@ISA, @EXPORT, @EXPORT_OK, $VERSION, $Too_Big, $Syscopy_is_copy); sub copy; sub syscopy; sub cp; sub mv; $VERSION = '2.41'; require Exporter; @ISA = qw(Exporter); @EXPORT = qw(copy move); @EXPORT_OK = qw(cp mv); $Too_Big = 1024 * 1024 * 2; sub croak { require Carp; goto &Carp::croak; } sub carp { require Carp; goto &Carp::carp; } sub _catname { my($from, $to) = @_; if (not defined &basename) { require File::Basename; File::Basename->import( 'basename' ); } return File::Spec->catfile($to, basename($from)); } # _eq($from, $to) tells whether $from and $to are identical sub _eq { my ($from, $to) = map { blessed($_) && overload::Method($_, q{""}) ? "$_" : $_ } (@_); return '' if ( (ref $from) xor (ref $to) ); return $from == $to if ref $from; return $from eq $to; } sub copy { croak("Usage: copy(FROM, TO [, BUFFERSIZE]) ") unless(@_ == 2 || @_ == 3); my $from = shift; my $to = shift; my $size; if (@_) { $size = shift(@_) + 0; croak("Bad buffer size for copy: $size\n") unless ($size > 0); } my $from_a_handle = (ref($from) ? (ref($from) eq 'GLOB' || UNIVERSAL::isa($from, 'GLOB') || UNIVERSAL::isa($from, 'IO::Handle')) : (ref(\$from) eq 'GLOB')); my $to_a_handle = (ref($to) ? (ref($to) eq 'GLOB' || UNIVERSAL::isa($to, 'GLOB') || UNIVERSAL::isa($to, 'IO::Handle')) : (ref(\$to) eq 'GLOB')); if (_eq($from, $to)) { # works for references, too carp("'$from' and '$to' are identical (not copied)"); return 0; } if (!$from_a_handle && !$to_a_handle && -d $to && ! -d $from) { $to = _catname($from, $to); } if ((($Config{d_symlink} && $Config{d_readlink}) || $Config{d_link}) && !($^O eq 'os2')) { my @fs = stat($from); if (@fs) { my @ts = stat($to); if (@ts && $fs[0] == $ts[0] && $fs[1] eq $ts[1] && !-p $from) { carp("'$from' and '$to' are identical (not copied)"); return 0; } } } elsif (_eq($from, $to)) { carp("'$from' and '$to' are identical (not copied)"); return 0; } if (defined &syscopy && !$Syscopy_is_copy && !$to_a_handle && !($from_a_handle && $^O eq 'os2' ) # OS/2 cannot handle handles && !($from_a_handle && $^O eq 'MSWin32') ) { if ($^O eq 'VMS' && -e $from && ! -d $to && ! -d $from) { # VMS natively inherits path components from the source of a # copy, but we want the Unixy behavior of inheriting from # the current working directory. Also, default in a trailing # dot for null file types. $to = VMS::Filespec::rmsexpand(VMS::Filespec::vmsify($to), '.'); # Get rid of the old versions to be like UNIX 1 while unlink $to; } return syscopy($from, $to) || 0; } my $closefrom = 0; my $closeto = 0; my ($status, $r, $buf); local($\) = ''; my $from_h; if ($from_a_handle) { $from_h = $from; } else { open $from_h, "<", $from or goto fail_open1; binmode $from_h or die "($!,$^E)"; $closefrom = 1; } # Seems most logical to do this here, in case future changes would want to # make this croak for some reason. unless (defined $size) { $size = tied(*$from_h) ? 0 : -s $from_h || 0; $size = 1024 if ($size < 512); $size = $Too_Big if ($size > $Too_Big); } my $to_h; if ($to_a_handle) { $to_h = $to; } else { $to_h = \do { local *FH }; # XXX is this line obsolete? open $to_h, ">", $to or goto fail_open2; binmode $to_h or die "($!,$^E)"; $closeto = 1; } $! = 0; for (;;) { my ($r, $w, $t); defined($r = sysread($from_h, $buf, $size)) or goto fail_inner; last unless $r; for ($w = 0; $w < $r; $w += $t) { $t = syswrite($to_h, $buf, $r - $w, $w) or goto fail_inner; } } close($to_h) || goto fail_open2 if $closeto; close($from_h) || goto fail_open1 if $closefrom; # Use this idiom to avoid uninitialized value warning. return 1; # All of these contortions try to preserve error messages... fail_inner: if ($closeto) { $status = $!; $! = 0; close $to_h; $! = $status unless $!; } fail_open2: if ($closefrom) { $status = $!; $! = 0; close $from_h; $! = $status unless $!; } fail_open1: return 0; } sub cp { my($from,$to) = @_; my(@fromstat) = stat $from; my(@tostat) = stat $to; my $perm; return 0 unless copy(@_) and @fromstat; if (@tostat) { $perm = $tostat[2]; } else { $perm = $fromstat[2] & ~(umask || 0); @tostat = stat $to; } # Might be more robust to look for S_I* in Fcntl, but we're # trying to avoid dependence on any XS-containing modules, # since File::Copy is used during the Perl build. $perm &= 07777; if ($perm & 06000) { croak("Unable to check setuid/setgid permissions for $to: $!") unless @tostat; if ($perm & 04000 and # setuid $fromstat[4] != $tostat[4]) { # owner must match $perm &= ~06000; } if ($perm & 02000 && $> != 0) { # if not root, setgid my $ok = $fromstat[5] == $tostat[5]; # group must match if ($ok) { # and we must be in group $ok = grep { $_ == $fromstat[5] } split /\s+/, $) } $perm &= ~06000 unless $ok; } } return 0 unless @tostat; return 1 if $perm == ($tostat[2] & 07777); return eval { chmod $perm, $to; } ? 1 : 0; } sub _move { croak("Usage: move(FROM, TO) ") unless @_ == 3; my($from,$to,$fallback) = @_; my($fromsz,$tosz1,$tomt1,$tosz2,$tomt2,$sts,$ossts); if (-d $to && ! -d $from) { $to = _catname($from, $to); } ($tosz1,$tomt1) = (stat($to))[7,9]; $fromsz = -s $from; if ($^O eq 'os2' and defined $tosz1 and defined $fromsz) { # will not rename with overwrite unlink $to; } if ($^O eq 'VMS' && -e $from && ! -d $to && ! -d $from) { # VMS natively inherits path components from the source of a # copy, but we want the Unixy behavior of inheriting from # the current working directory. Also, default in a trailing # dot for null file types. $to = VMS::Filespec::rmsexpand(VMS::Filespec::vmsify($to), '.'); # Get rid of the old versions to be like UNIX 1 while unlink $to; } return 1 if rename $from, $to; # Did rename return an error even though it succeeded, because $to # is on a remote NFS file system, and NFS lost the server's ack? return 1 if defined($fromsz) && !-e $from && # $from disappeared (($tosz2,$tomt2) = (stat($to))[7,9]) && # $to's there ((!defined $tosz1) || # not before or ($tosz1 != $tosz2 or $tomt1 != $tomt2)) && # was changed $tosz2 == $fromsz; # it's all there ($tosz1,$tomt1) = (stat($to))[7,9]; # just in case rename did something { local $@; eval { local $SIG{__DIE__}; $fallback->($from,$to) or die; my($atime, $mtime) = (stat($from))[8,9]; utime($atime, $mtime, $to); unlink($from) or die; }; return 1 unless $@; } ($sts,$ossts) = ($! + 0, $^E + 0); ($tosz2,$tomt2) = ((stat($to))[7,9],0,0) if defined $tomt1; unlink($to) if !defined($tomt1) or $tomt1 != $tomt2 or $tosz1 != $tosz2; ($!,$^E) = ($sts,$ossts); return 0; } sub move { _move(@_,\©); } sub mv { _move(@_,\&cp); } # &syscopy is an XSUB under OS/2 unless (defined &syscopy) { if ($^O eq 'VMS') { *syscopy = \&rmscopy; } elsif ($^O eq 'MSWin32' && defined &DynaLoader::boot_DynaLoader) { # Win32::CopyFile() fill only work if we can load Win32.xs *syscopy = sub { return 0 unless @_ == 2; return Win32::CopyFile(@_, 1); }; } else { $Syscopy_is_copy = 1; *syscopy = \© } } 1; __END__ =head1 NAME File::Copy - Copy files or filehandles =head1 SYNOPSIS use File::Copy; copy("sourcefile", "destinationfile") or die "Copy failed: $!"; copy("Copy.pm", \*STDOUT); move("/dev1/sourcefile", "/dev2/destinationfile"); use File::Copy "cp"; my $n = FileHandle->new("/a/file", "r"); cp($n, "x"); =head1 DESCRIPTION The File::Copy module provides two basic functions, C and C, which are useful for getting the contents of a file from one place to another. =over 4 =item copy X X The C function takes two parameters: a file to copy from and a file to copy to. Either argument may be a string, a FileHandle reference or a FileHandle glob. Obviously, if the first argument is a filehandle of some sort, it will be read from, and if it is a file I it will be opened for reading. Likewise, the second argument will be written to. If the second argument does not exist but the parent directory does exist, then it will be created. Trying to copy a file into a non-existent directory is an error. Trying to copy a file on top of itself is also an error. C will not overwrite read-only files. If the destination (second argument) already exists and is a directory, and the source (first argument) is not a filehandle, then the source file will be copied into the directory specified by the destination, using the same base name as the source file. It's a failure to have a filehandle as the source when the destination is a directory. B Files are opened in binary mode where applicable. To get a consistent behaviour when copying from a filehandle to a file, use C on the filehandle. An optional third parameter can be used to specify the buffer size used for copying. This is the number of bytes from the first file, that will be held in memory at any given time, before being written to the second file. The default buffer size depends upon the file, but will generally be the whole file (up to 2MB), or 1k for filehandles that do not reference files (eg. sockets). You may use the syntax C to get at the C alias for this function. The syntax is I the same. The behavior is nearly the same as well: as of version 2.15, C will preserve the source file's permission bits like the shell utility C would do with default options, while C uses the default permissions for the target file (which may depend on the process' C, file ownership, inherited ACLs, etc.). That is, if the destination file already exists, C will leave its permissions unchanged; otherwise the permissions are taken from the source file and modified by the C. If an error occurs in setting permissions, C will return 0, regardless of whether the file was successfully copied. =item move X X X The C function also takes two parameters: the current name and the intended name of the file to be moved. If the destination already exists and is a directory, and the source is not a directory, then the source file will be renamed into the directory specified by the destination. If possible, move() will simply rename the file. Otherwise, it copies the file to the new location and deletes the original. If an error occurs during this copy-and-delete process, you may be left with a (possibly partial) copy of the file under the destination name. You may use the C alias for this function in the same way that you may use the C alias for C. =item syscopy X File::Copy also provides the C routine, which copies the file specified in the first parameter to the file specified in the second parameter, preserving OS-specific attributes and file structure. For Unix systems, this is equivalent to the simple C routine, which doesn't preserve OS-specific attributes. For VMS systems, this calls the C routine (see below). For OS/2 systems, this calls the C XSUB directly. For Win32 systems, this calls C. B is defined (OS/2, VMS and Win32)>: If both arguments to C are not file handles, then C will perform a "system copy" of the input file to a new output file, in order to preserve file attributes, indexed file structure, I The buffer size parameter is ignored. If either argument to C is a handle to an opened file, then data is copied using Perl operators, and no effort is made to preserve file attributes or record structure. The system copy routine may also be called directly under VMS and OS/2 as C (or under VMS as C, which is the routine that does the actual work for syscopy). =item rmscopy($from,$to[,$date_flag]) X The first and second arguments may be strings, typeglobs, typeglob references, or objects inheriting from IO::Handle; they are used in all cases to obtain the I of the input and output files, respectively. The name and type of the input file are used as defaults for the output file, if necessary. A new version of the output file is always created, which inherits the structure and RMS attributes of the input file, except for owner and protections (and possibly timestamps; see below). All data from the input file is copied to the output file; if either of the first two parameters to C is a file handle, its position is unchanged. (Note that this means a file handle pointing to the output file will be associated with an old version of that file after C returns, not the newly created version.) The third parameter is an integer flag, which tells C how to handle timestamps. If it is E 0, none of the input file's timestamps are propagated to the output file. If it is E 0, then it is interpreted as a bitmask: if bit 0 (the LSB) is set, then timestamps other than the revision date are propagated; if bit 1 is set, the revision date is propagated. If the third parameter to C is 0, then it behaves much like the DCL COPY command: if the name or type of the output file was explicitly specified, then no timestamps are propagated, but if they were taken implicitly from the input filespec, then all timestamps other than the revision date are propagated. If this parameter is not supplied, it defaults to 0. C is VMS specific and cannot be exported; it must be referenced by its full name, e.g.: File::Copy::rmscopy($from, $to) or die $!; Like C, C returns 1 on success. If an error occurs, it sets C<$!>, deletes the output file, and returns 0. =back =head1 RETURN All functions return 1 on success, 0 on failure. $! will be set if an error was encountered. =head1 NOTES Before calling copy() or move() on a filehandle, the caller should close or flush() the file to avoid writes being lost. Note that this is the case even for move(), because it may actually copy the file, depending on the OS-specific implementation, and the underlying filesystem(s). =head1 AUTHOR File::Copy was written by Aaron Sherman Iajs@ajs.comE> in 1995, and updated by Charles Bailey Ibailey@newman.upenn.eduE> in 1996. =cut FILE75585812/File/Basename.pm+=head1 NAME File::Basename - Parse file paths into directory, filename and suffix. =head1 SYNOPSIS use File::Basename; my ($name, $path, $suffix) = fileparse($fullname, @suffixlist); my $name = fileparse($fullname, @suffixlist); my $basename = basename($fullname, @suffixlist); my $dirname = dirname($fullname); =head1 DESCRIPTION These routines allow you to parse file paths into their directory, filename and suffix. B: C and C emulate the behaviours, and quirks, of the shell and C functions of the same name. See each function's documentation for details. If your concern is just parsing paths it is safer to use L's C and C methods. It is guaranteed that # Where $path_separator is / for Unix, \ for Windows, etc... dirname($path) . $path_separator . basename($path); is equivalent to the original path for all systems but VMS. =cut package File::Basename; # File::Basename is used during the Perl build, when the re extension may # not be available, but we only actually need it if running under tainting. BEGIN { if (${^TAINT}) { require re; re->import('taint'); } } use strict; use 5.006; use warnings; our(@ISA, @EXPORT, $VERSION, $Fileparse_fstype, $Fileparse_igncase); require Exporter; @ISA = qw(Exporter); @EXPORT = qw(fileparse fileparse_set_fstype basename dirname); $VERSION = "2.86"; fileparse_set_fstype($^O); =over 4 =item C X my($filename, $dirs, $suffix) = fileparse($path); my($filename, $dirs, $suffix) = fileparse($path, @suffixes); my $filename = fileparse($path, @suffixes); The C routine divides a file path into its $dirs, $filename and (optionally) the filename $suffix. $dirs contains everything up to and including the last directory separator in the $path including the volume (if applicable). The remainder of the $path is the $filename. # On Unix returns ("baz", "/foo/bar/", "") fileparse("/foo/bar/baz"); # On Windows returns ("baz", 'C:\foo\bar\', "") fileparse('C:\foo\bar\baz'); # On Unix returns ("", "/foo/bar/baz/", "") fileparse("/foo/bar/baz/"); If @suffixes are given each element is a pattern (either a string or a C) matched against the end of the $filename. The matching portion is removed and becomes the $suffix. # On Unix returns ("baz", "/foo/bar/", ".txt") fileparse("/foo/bar/baz.txt", qr/\.[^.]*/); If type is non-Unix (see L) then the pattern matching for suffix removal is performed case-insensitively, since those systems are not case-sensitive when opening existing files. You are guaranteed that C<$dirs . $filename . $suffix> will denote the same location as the original $path. =cut sub fileparse { my($fullname,@suffices) = @_; unless (defined $fullname) { require Carp; Carp::croak("fileparse(): need a valid pathname"); } my $orig_type = ''; my($type,$igncase) = ($Fileparse_fstype, $Fileparse_igncase); my($taint) = substr($fullname,0,0); # Is $fullname tainted? if ($type eq "VMS" and $fullname =~ m{/} ) { # We're doing Unix emulation $orig_type = $type; $type = 'Unix'; } my($dirpath, $basename); if (grep { $type eq $_ } qw(MSDOS DOS MSWin32 Epoc)) { ($dirpath,$basename) = ($fullname =~ /^((?:.*[:\\\/])?)(.*)/s); $dirpath .= '.\\' unless $dirpath =~ /[\\\/]\z/; } elsif ($type eq "OS2") { ($dirpath,$basename) = ($fullname =~ m#^((?:.*[:\\/])?)(.*)#s); $dirpath = './' unless $dirpath; # Can't be 0 $dirpath .= '/' unless $dirpath =~ m#[\\/]\z#; } elsif ($type eq "MacOS") { ($dirpath,$basename) = ($fullname =~ /^(.*:)?(.*)/s); $dirpath = ':' unless $dirpath; } elsif ($type eq "AmigaOS") { ($dirpath,$basename) = ($fullname =~ /(.*[:\/])?(.*)/s); $dirpath = './' unless $dirpath; } elsif ($type eq 'VMS' ) { ($dirpath,$basename) = ($fullname =~ /^(.*[:>\]])?(.*)/s); $dirpath ||= ''; # should always be defined } else { # Default to Unix semantics. ($dirpath,$basename) = ($fullname =~ m{^(.*/)?(.*)}s); if ($orig_type eq 'VMS' and $fullname =~ m{^(/[^/]+/000000(/|$))(.*)}) { # dev:[000000] is top of VMS tree, similar to Unix '/' # so strip it off and treat the rest as "normal" my $devspec = $1; my $remainder = $3; ($dirpath,$basename) = ($remainder =~ m{^(.*/)?(.*)}s); $dirpath ||= ''; # should always be defined $dirpath = $devspec.$dirpath; } $dirpath = './' unless $dirpath; } my $tail = ''; my $suffix = ''; if (@suffices) { foreach $suffix (@suffices) { my $pat = ($igncase ? '(?i)' : '') . "($suffix)\$"; if ($basename =~ s/$pat//s) { $taint .= substr($suffix,0,0); $tail = $1 . $tail; } } } # Ensure taint is propagated from the path to its pieces. $tail .= $taint; wantarray ? ($basename .= $taint, $dirpath .= $taint, $tail) : ($basename .= $taint); } =item C X X my $filename = basename($path); my $filename = basename($path, @suffixes); This function is provided for compatibility with the Unix shell command C. It does B always return the file name portion of a path as you might expect. To be safe, if you want the file name portion of a path use C. C returns the last level of a filepath even if the last level is clearly directory. In effect, it is acting like C for paths. This differs from C's behaviour. # Both return "bar" basename("/foo/bar"); basename("/foo/bar/"); @suffixes work as in C except all regex metacharacters are quoted. # These two function calls are equivalent. my $filename = basename("/foo/bar/baz.txt", ".txt"); my $filename = fileparse("/foo/bar/baz.txt", qr/\Q.txt\E/); Also note that in order to be compatible with the shell command, C does not strip off a suffix if it is identical to the remaining characters in the filename. =cut sub basename { my($path) = shift; # From BSD basename(1) # The basename utility deletes any prefix ending with the last slash '/' # character present in string (after first stripping trailing slashes) _strip_trailing_sep($path); my($basename, $dirname, $suffix) = fileparse( $path, map("\Q$_\E",@_) ); # From BSD basename(1) # The suffix is not stripped if it is identical to the remaining # characters in string. if( length $suffix and !length $basename ) { $basename = $suffix; } # Ensure that basename '/' == '/' if( !length $basename ) { $basename = $dirname; } return $basename; } =item C X This function is provided for compatibility with the Unix shell command C and has inherited some of its quirks. In spite of its name it does B always return the directory name as you might expect. To be safe, if you want the directory name of a path use C. Only on VMS (where there is no ambiguity between the file and directory portions of a path) and AmigaOS (possibly due to an implementation quirk in this module) does C work like C, returning just the $dirs. # On VMS and AmigaOS my $dirs = dirname($path); When using Unix or MSDOS syntax this emulates the C shell function which is subtly different from how C works. It returns all but the last level of a file path even if the last level is clearly a directory. In effect, it is not returning the directory portion but simply the path one level up acting like C for file paths. Also unlike C, C does not include a trailing slash on its returned path. # returns /foo/bar. fileparse() would return /foo/bar/ dirname("/foo/bar/baz"); # also returns /foo/bar despite the fact that baz is clearly a # directory. fileparse() would return /foo/bar/baz/ dirname("/foo/bar/baz/"); # returns '.'. fileparse() would return 'foo/' dirname("foo/"); Under VMS, if there is no directory information in the $path, then the current default device and directory is used. =cut sub dirname { my $path = shift; my($type) = $Fileparse_fstype; if( $type eq 'VMS' and $path =~ m{/} ) { # Parse as Unix local($File::Basename::Fileparse_fstype) = ''; return dirname($path); } my($basename, $dirname) = fileparse($path); if ($type eq 'VMS') { $dirname ||= $ENV{DEFAULT}; } elsif ($type eq 'MacOS') { if( !length($basename) && $dirname !~ /^[^:]+:\z/) { _strip_trailing_sep($dirname); ($basename,$dirname) = fileparse $dirname; } $dirname .= ":" unless $dirname =~ /:\z/; } elsif (grep { $type eq $_ } qw(MSDOS DOS MSWin32 OS2)) { _strip_trailing_sep($dirname); unless( length($basename) ) { ($basename,$dirname) = fileparse $dirname; _strip_trailing_sep($dirname); } } elsif ($type eq 'AmigaOS') { if ( $dirname =~ /:\z/) { return $dirname } chop $dirname; $dirname =~ s{[^:/]+\z}{} unless length($basename); } else { _strip_trailing_sep($dirname); unless( length($basename) ) { ($basename,$dirname) = fileparse $dirname; _strip_trailing_sep($dirname); } } $dirname; } # Strip the trailing path separator. sub _strip_trailing_sep { my $type = $Fileparse_fstype; if ($type eq 'MacOS') { $_[0] =~ s/([^:]):\z/$1/s; } elsif (grep { $type eq $_ } qw(MSDOS DOS MSWin32 OS2)) { $_[0] =~ s/([^:])[\\\/]*\z/$1/; } else { $_[0] =~ s{(.)/*\z}{$1}s; } } =item C X my $type = fileparse_set_fstype(); my $previous_type = fileparse_set_fstype($type); Normally File::Basename will assume a file path type native to your current operating system (ie. /foo/bar style on Unix, \foo\bar on Windows, etc...). With this function you can override that assumption. Valid $types are "MacOS", "VMS", "AmigaOS", "OS2", "RISCOS", "MSWin32", "DOS" (also "MSDOS" for backwards bug compatibility), "Epoc" and "Unix" (all case-insensitive). If an unrecognized $type is given "Unix" will be assumed. If you've selected VMS syntax, and the file specification you pass to one of these routines contains a "/", they assume you are using Unix emulation and apply the Unix syntax rules instead, for that function call only. =back =cut BEGIN { my @Ignore_Case = qw(MacOS VMS AmigaOS OS2 RISCOS MSWin32 MSDOS DOS Epoc); my @Types = (@Ignore_Case, qw(Unix)); sub fileparse_set_fstype { my $old = $Fileparse_fstype; if (@_) { my $new_type = shift; $Fileparse_fstype = 'Unix'; # default foreach my $type (@Types) { $Fileparse_fstype = $type if $new_type =~ /^$type/i; } $Fileparse_igncase = (grep $Fileparse_fstype eq $_, @Ignore_Case) ? 1 : 0; } return $old; } } 1; =head1 SEE ALSO L, L, L FILEffbea4bc/Exporter/Heavy.pm9package Exporter::Heavy; use strict; no strict 'refs'; our $VERSION = '5.79'; =head1 NAME Exporter::Heavy - Exporter guts =head1 SYNOPSIS (internal use only) =head1 DESCRIPTION No user-serviceable parts inside. =cut # # We go to a lot of trouble not to 'require Carp' at file scope, # because Carp requires Exporter, and something has to give. # sub _rebuild_cache { my ($pkg, $exports, $cache) = @_; s/^&// foreach @$exports; @{$cache}{@$exports} = (1) x @$exports; my $ok = \@{"${pkg}::EXPORT_OK"}; if (@$ok) { s/^&// foreach @$ok; @{$cache}{@$ok} = (1) x @$ok; } } sub heavy_export { # Save the old __WARN__ handler in case it was defined my $oldwarn = $SIG{__WARN__} || sub { warn $_[0] }; # First make import warnings look like they're coming from the "use". local $SIG{__WARN__} = sub { my $text = shift; if ($text =~ s/ at \S*Exporter\S*.pm line \d+.*\n//) { require Carp; local $Carp::CarpLevel = 1; # ignore package calling us too. $oldwarn->(Carp::shortmess($text)); } else { $oldwarn->($text); } }; local $SIG{__DIE__} = sub { require Carp; local $Carp::CarpLevel = 1; # ignore package calling us too. Carp::croak("$_[0]Illegal null symbol in \@${1}::EXPORT") if $_[0] =~ /^Unable to create sub named "(.*?)::"/; }; my($pkg, $callpkg, @imports) = @_; my($type, $sym, $cache_is_current, $oops); my($exports, $export_cache) = (\@{"${pkg}::EXPORT"}, $Exporter::Cache{$pkg} ||= {}); if (@imports) { if (!%$export_cache) { _rebuild_cache ($pkg, $exports, $export_cache); $cache_is_current = 1; } if (grep m{^[/!:]}, @imports) { my $tagsref = \%{"${pkg}::EXPORT_TAGS"}; my $tagdata; my %imports; my($remove, $spec, @names, @allexports); # negated first item implies starting with default set: unshift @imports, ':DEFAULT' if $imports[0] =~ m/^!/; foreach $spec (@imports){ $remove = $spec =~ s/^!//; if ($spec =~ s/^://){ if ($spec eq 'DEFAULT'){ @names = @$exports; } elsif ($tagdata = $tagsref->{$spec}) { @names = @$tagdata; } else { warn qq["$spec" is not defined in %${pkg}::EXPORT_TAGS]; ++$oops; next; } } elsif ($spec =~ m:^/(.*)/$:){ my $patn = $1; @allexports = keys %$export_cache unless @allexports; # only do keys once @names = grep(/$patn/, @allexports); # not anchored by default } else { @names = ($spec); # is a normal symbol name } warn "Import ".($remove ? "del":"add").": @names " if $Exporter::Verbose; if ($remove) { foreach $sym (@names) { delete $imports{$sym} } } else { @imports{@names} = (1) x @names; } } @imports = keys %imports; } my @carp; foreach $sym (@imports) { if (!$export_cache->{$sym}) { if ($sym =~ m/^\d/) { $pkg->VERSION($sym); # inherit from UNIVERSAL # If the version number was the only thing specified # then we should act as if nothing was specified: if (@imports == 1) { @imports = @$exports; last; } # We need a way to emulate 'use Foo ()' but still # allow an easy version check: "use Foo 1.23, ''"; if (@imports == 2 and !$imports[1]) { @imports = (); last; } } elsif ($sym !~ s/^&// || !$export_cache->{$sym}) { # Last chance - see if they've updated EXPORT_OK since we # cached it. unless ($cache_is_current) { %$export_cache = (); _rebuild_cache ($pkg, $exports, $export_cache); $cache_is_current = 1; } if (!$export_cache->{$sym}) { # accumulate the non-exports push @carp, qq["$sym" is not exported by the $pkg module]; $oops++; } } } } if ($oops) { require Carp; Carp::croak(join("\n", @carp, "Can't continue after import errors")); } } else { @imports = @$exports; } my($fail, $fail_cache) = (\@{"${pkg}::EXPORT_FAIL"}, $Exporter::FailCache{$pkg} ||= {}); if (@$fail) { if (!%$fail_cache) { # Build cache of symbols. Optimise the lookup by adding # barewords twice... both with and without a leading &. # (Technique could be applied to $export_cache at cost of memory) my @expanded = map { /^\w/ ? ($_, '&'.$_) : $_ } @$fail; warn "${pkg}::EXPORT_FAIL cached: @expanded" if $Exporter::Verbose; @{$fail_cache}{@expanded} = (1) x @expanded; } my @failed; foreach $sym (@imports) { push(@failed, $sym) if $fail_cache->{$sym} } if (@failed) { @failed = $pkg->export_fail(@failed); foreach $sym (@failed) { require Carp; Carp::carp(qq["$sym" is not implemented by the $pkg module ], "on this architecture"); } if (@failed) { require Carp; Carp::croak("Can't continue after import errors"); } } } warn "Importing into $callpkg from $pkg: ", join(", ",sort @imports) if $Exporter::Verbose; foreach $sym (@imports) { # shortcut for the common case of no type character (*{"${callpkg}::$sym"} = \&{"${pkg}::$sym"}, next) unless $sym =~ s/^(\W)//; $type = $1; no warnings 'once'; *{"${callpkg}::$sym"} = $type eq '&' ? \&{"${pkg}::$sym"} : $type eq '$' ? \${"${pkg}::$sym"} : $type eq '@' ? \@{"${pkg}::$sym"} : $type eq '%' ? \%{"${pkg}::$sym"} : $type eq '*' ? *{"${pkg}::$sym"} : do { require Carp; Carp::croak("Can't export symbol: $type$sym") }; } } sub heavy_export_to_level { my $pkg = shift; my $level = shift; (undef) = shift; # XXX redundant arg my $callpkg = caller($level); $pkg->export($callpkg, @_); } # Utility functions sub _push_tags { my($pkg, $var, $syms) = @_; my @nontag = (); my $export_tags = \%{"${pkg}::EXPORT_TAGS"}; push(@{"${pkg}::$var"}, map { $export_tags->{$_} ? @{$export_tags->{$_}} : scalar(push(@nontag,$_),$_) } (@$syms) ? @$syms : keys %$export_tags); if (@nontag and $^W) { # This may change to a die one day require Carp; Carp::carp(join(", ", @nontag)." are not tags of $pkg"); } } sub heavy_require_version { my($self, $wanted) = @_; my $pkg = ref $self || $self; return ${pkg}->VERSION($wanted); } sub heavy_export_tags { _push_tags((caller)[0], "EXPORT", \@_); } sub heavy_export_ok_tags { _push_tags((caller)[0], "EXPORT_OK", \@_); } 1; FILE3f6ee9b5/Exporter.pmK package Exporter; use strict; no strict 'refs'; our $Debug = 0; our $ExportLevel = 0; our $Verbose ||= 0; our $VERSION = '5.79'; our %Cache; sub as_heavy { require Exporter::Heavy; # Unfortunately, this does not work if the caller is aliased as *name = \&foo # Thus the need to create a lot of identical subroutines my $c = (caller(1))[3]; $c =~ s/.*:://; \&{"Exporter::Heavy::heavy_$c"}; } sub export { goto &{as_heavy()}; } sub import { my $pkg = shift; my $callpkg = caller($ExportLevel); if ($pkg eq "Exporter" and @_ and $_[0] eq "import") { *{$callpkg."::import"} = \&import; return; } # We *need* to treat @{"$pkg\::EXPORT_FAIL"} since Carp uses it :-( my $exports = \@{"$pkg\::EXPORT"}; # But, avoid creating things if they don't exist, which saves a couple of # hundred bytes per package processed. my $fail = ${$pkg . '::'}{EXPORT_FAIL} && \@{"$pkg\::EXPORT_FAIL"}; return export $pkg, $callpkg, @_ if $Verbose or $Debug or $fail && @$fail > 1; my $export_cache = ($Cache{$pkg} ||= {}); my $args = @_ or @_ = @$exports; if ($args and not %$export_cache) { s/^&//, $export_cache->{$_} = 1 foreach (@$exports, @{"$pkg\::EXPORT_OK"}); } my $heavy; # Try very hard not to use {} and hence have to enter scope on the foreach # We bomb out of the loop with last as soon as heavy is set. if ($args or $fail) { ($heavy = (/\W/ or $args and not exists $export_cache->{$_} or $fail and @$fail and $_ eq $fail->[0])) and last foreach (@_); } else { ($heavy = /\W/) and last foreach (@_); } return export $pkg, $callpkg, ($args ? @_ : ()) if $heavy; local $SIG{__WARN__} = sub {require Carp; &Carp::carp} if not $SIG{__WARN__}; # shortcut for the common case of no type character *{"$callpkg\::$_"} = \&{"$pkg\::$_"} foreach @_; } # Default methods sub export_fail { my $self = shift; @_; } # Unfortunately, caller(1)[3] "does not work" if the caller is aliased as # *name = \&foo. Thus the need to create a lot of identical subroutines # Otherwise we could have aliased them to export(). sub export_to_level { goto &{as_heavy()}; } sub export_tags { goto &{as_heavy()}; } sub export_ok_tags { goto &{as_heavy()}; } sub require_version { goto &{as_heavy()}; } 1; __END__ =head1 NAME Exporter - Implements default import method for modules =head1 SYNOPSIS In module F: package YourModule; use Exporter 'import'; our @EXPORT_OK = qw(munge frobnicate); # symbols to export on request or package YourModule; require Exporter; our @ISA = qw(Exporter); # inherit all of Exporter's methods our @EXPORT_OK = qw(munge frobnicate); # symbols to export on request or package YourModule; use parent 'Exporter'; # inherit all of Exporter's methods our @EXPORT_OK = qw(munge frobnicate); # symbols to export on request In other files which wish to use C: use YourModule qw(frobnicate); # import listed symbols frobnicate ($left, $right) # calls YourModule::frobnicate Take a look at L for some variants you will like to use in modern Perl code. =head1 DESCRIPTION The Exporter module implements an C method which allows a module to export functions and variables to its users' namespaces. Many modules use Exporter rather than implementing their own C method because Exporter provides a highly flexible interface, with an implementation optimised for the common case. Perl automatically calls the C method when processing a C statement for a module. Modules and C are documented in L and L. Understanding the concept of modules and how the C statement operates is important to understanding the Exporter. =head2 How to Export The arrays C<@EXPORT> and C<@EXPORT_OK> in a module hold lists of symbols that are going to be exported into the users name space by default, or which they can request to be exported, respectively. The symbols can represent functions, scalars, arrays, hashes, or typeglobs. The symbols must be given by full name with the exception that the ampersand in front of a function is optional, e.g. our @EXPORT = qw(afunc $scalar @array); # afunc is a function our @EXPORT_OK = qw(&bfunc %hash *typeglob); # explicit prefix on &bfunc If you are only exporting function names it is recommended to omit the ampersand, as the implementation is faster this way. =head2 Selecting What to Export Do B export method names! Do B export anything else by default without a good reason! Exports pollute the namespace of the module user. If you must export try to use C<@EXPORT_OK> in preference to C<@EXPORT> and avoid short or common symbol names to reduce the risk of name clashes. Generally anything not exported is still accessible from outside the module using the C (or C<< $blessed_ref->method >>) syntax. By convention you can use a leading underscore on names to informally indicate that they are 'internal' and not for public use. (It is actually possible to get private functions by saying: my $subref = sub { ... }; $subref->(@args); # Call it as a function $obj->$subref(@args); # Use it as a method However if you use them for methods it is up to you to figure out how to make inheritance work.) As a general rule, if the module is trying to be object oriented then export nothing. If it's just a collection of functions then C<@EXPORT_OK> anything but use C<@EXPORT> with caution. For function and method names use barewords in preference to names prefixed with ampersands for the export lists. Other module design guidelines can be found in L. =head2 How to Import In other files which wish to use your module there are three basic ways for them to load your module and import its symbols: =over 4 =item C This imports all the symbols from YourModule's C<@EXPORT> into the namespace of the C statement. =item C This causes perl to load your module but does not import any symbols. =item C This imports only the symbols listed by the caller into their namespace. All listed symbols must be in your C<@EXPORT> or C<@EXPORT_OK>, else an error occurs. The advanced export features of Exporter are accessed like this, but with list entries that are syntactically distinct from symbol names. =back Unless you want to use its advanced features, this is probably all you need to know to use Exporter. =head1 Advanced Features =head2 Specialised Import Lists If any of the entries in an import list begins with !, : or / then the list is treated as a series of specifications which either add to or delete from the list of names to import. They are processed left to right. Specifications are in the form: [!]name This name only [!]:DEFAULT All names in @EXPORT [!]:tag All names in $EXPORT_TAGS{tag} anonymous array [!]/pattern/ All names in @EXPORT and @EXPORT_OK which match A leading ! indicates that matching names should be deleted from the list of names to import. If the first specification is a deletion it is treated as though preceded by :DEFAULT. If you just want to import extra names in addition to the default set you will still need to include :DEFAULT explicitly. e.g., F defines: our @EXPORT = qw(A1 A2 A3 A4 A5); our @EXPORT_OK = qw(B1 B2 B3 B4 B5); our %EXPORT_TAGS = (T1 => [qw(A1 A2 B1 B2)], T2 => [qw(A1 A2 B3 B4)]); Note that you cannot use tags in @EXPORT or @EXPORT_OK. Names in EXPORT_TAGS must also appear in @EXPORT or @EXPORT_OK. An application using Module can say something like: use Module qw(:DEFAULT :T2 !B3 A3); Other examples include: use Socket qw(!/^[AP]F_/ !SOMAXCONN !SOL_SOCKET); use POSIX qw(:errno_h :termios_h !TCSADRAIN !/^EXIT/); Remember that most patterns (using //) will need to be anchored with a leading ^, e.g., C rather than C. You can say C to see how the specifications are being processed and what is actually being imported into modules. =head2 Exporting Without Using Exporter's import Method Exporter has a special method, 'export_to_level' which is used in situations where you can't directly call Exporter's import method. The export_to_level method looks like: MyPackage->export_to_level( $where_to_export, $package, @what_to_export ); where C<$where_to_export> is an integer telling how far up the calling stack to export your symbols, and C<@what_to_export> is an array telling what symbols *to* export (usually this is C<@_>). The C<$package> argument is currently unused. For example, suppose that you have a module, A, which already has an import function: package A; our @ISA = qw(Exporter); our @EXPORT_OK = qw($b); sub import { $A::b = 1; # not a very useful import method } and you want to Export symbol C<$A::b> back to the module that called package A. Since Exporter relies on the import method to work, via inheritance, as it stands Exporter::import() will never get called. Instead, say the following: package A; our @ISA = qw(Exporter); our @EXPORT_OK = qw($b); sub import { $A::b = 1; A->export_to_level(1, @_); } This will export the symbols one level 'above' the current package - ie: to the program or module that used package A. Note: Be careful not to modify C<@_> at all before you call export_to_level - or people using your package will get very unexplained results! =head2 Exporting Without Inheriting from Exporter By including Exporter in your C<@ISA> you inherit an Exporter's import() method but you also inherit several other helper methods which you probably don't want and complicate the inheritance tree. To avoid this you can do: package YourModule; use Exporter qw(import); which will export Exporter's own import() method into YourModule. Everything will work as before but you won't need to include Exporter in C<@YourModule::ISA>. Note: This feature was introduced in version 5.57 of Exporter, released with perl 5.8.3. =head2 Module Version Checking The Exporter module will convert an attempt to import a number from a module into a call to C<< $module_name->VERSION($value) >>. This can be used to validate that the version of the module being used is greater than or equal to the required version. For historical reasons, Exporter supplies a C method that simply delegates to C. Originally, before C existed, Exporter would call C. Since the C method treats the C<$VERSION> number as a simple numeric value it will regard version 1.10 as lower than 1.9. For this reason it is strongly recommended that you use numbers with at least two decimal places, e.g., 1.09. =head2 Managing Unknown Symbols In some situations you may want to prevent certain symbols from being exported. Typically this applies to extensions which have functions or constants that may not exist on some systems. The names of any symbols that cannot be exported should be listed in the C<@EXPORT_FAIL> array. If a module attempts to import any of these symbols the Exporter will give the module an opportunity to handle the situation before generating an error. The Exporter will call an export_fail method with a list of the failed symbols: @failed_symbols = $module_name->export_fail(@failed_symbols); If the C method returns an empty list then no error is recorded and all the requested symbols are exported. If the returned list is not empty then an error is generated for each symbol and the export fails. The Exporter provides a default C method which simply returns the list unchanged. Uses for the C method include giving better error messages for some symbols and performing lazy architectural checks (put more symbols into C<@EXPORT_FAIL> by default and then take them out if someone actually tries to use them and an expensive check shows that they are usable on that platform). =head2 Tag Handling Utility Functions Since the symbols listed within C<%EXPORT_TAGS> must also appear in either C<@EXPORT> or C<@EXPORT_OK>, two utility functions are provided which allow you to easily add tagged sets of symbols to C<@EXPORT> or C<@EXPORT_OK>: our %EXPORT_TAGS = (foo => [qw(aa bb cc)], bar => [qw(aa cc dd)]); Exporter::export_tags('foo'); # add aa, bb and cc to @EXPORT Exporter::export_ok_tags('bar'); # add aa, cc and dd to @EXPORT_OK Any names which are not tags are added to C<@EXPORT> or C<@EXPORT_OK> unchanged but will trigger a warning (with C<-w>) to avoid misspelt tags names being silently added to C<@EXPORT> or C<@EXPORT_OK>. Future versions may make this a fatal error. =head2 Generating Combined Tags If several symbol categories exist in C<%EXPORT_TAGS>, it's usually useful to create the utility ":all" to simplify "use" statements. The simplest way to do this is: our %EXPORT_TAGS = (foo => [qw(aa bb cc)], bar => [qw(aa cc dd)]); # add all the other ":class" tags to the ":all" class, # deleting duplicates { my %seen; push @{$EXPORT_TAGS{all}}, grep {!$seen{$_}++} @{$EXPORT_TAGS{$_}} foreach keys %EXPORT_TAGS; } F creates an ":all" tag which contains some (but not really all) of its categories. That could be done with one small change: # add some of the other ":class" tags to the ":all" class, # deleting duplicates { my %seen; push @{$EXPORT_TAGS{all}}, grep {!$seen{$_}++} @{$EXPORT_TAGS{$_}} foreach qw/html2 html3 netscape form cgi internal/; } Note that the tag names in C<%EXPORT_TAGS> don't have the leading ':'. =head2 Ced Constants Many modules make use of Cing for constant subroutines to avoid having to compile and waste memory on rarely used values (see L for details on constant subroutines). Calls to such constant subroutines are not optimized away at compile time because they can't be checked at compile time for constancy. Even if a prototype is available at compile time, the body of the subroutine is not (it hasn't been Ced yet). perl needs to examine both the C<()> prototype and the body of a subroutine at compile time to detect that it can safely replace calls to that subroutine with the constant value. A workaround for this is to call the constants once in a C block: package My ; use Socket ; foo( SO_LINGER ); ## SO_LINGER NOT optimized away; called at runtime BEGIN { SO_LINGER } foo( SO_LINGER ); ## SO_LINGER optimized away at compile time. This forces the C for C to take place before SO_LINGER is encountered later in C package. If you are writing a package that Cs, consider forcing an C for any constants explicitly imported by other packages or which are usually used when your package is Cd. =head1 Good Practices =head2 Declaring C<@EXPORT_OK> and Friends When using C with the standard C and C pragmas, the C keyword is needed to declare the package variables C<@EXPORT_OK>, C<@EXPORT>, C<@ISA>, etc. our @ISA = qw(Exporter); our @EXPORT_OK = qw(munge frobnicate); If backward compatibility for Perls B 5.6 is important, one must write instead a C statement. use vars qw(@ISA @EXPORT_OK); @ISA = qw(Exporter); @EXPORT_OK = qw(munge frobnicate); =head2 Playing Safe There are some caveats with the use of runtime statements like C and the assignment to package variables, which can be very subtle for the unaware programmer. This may happen for instance with mutually recursive modules, which are affected by the time the relevant constructions are executed. The ideal way to never have to think about that is to use C blocks and the simple import method. So the first part of the L code could be rewritten as: package YourModule; use strict; use warnings; use Exporter 'import'; BEGIN { our @EXPORT_OK = qw(munge frobnicate); # symbols to export on request } Or if you need to inherit from Exporter: package YourModule; use strict; use warnings; BEGIN { require Exporter; our @ISA = qw(Exporter); # inherit all of Exporter's methods our @EXPORT_OK = qw(munge frobnicate); # symbols to export on request } The C will assure that the loading of F and the assignments to C<@ISA> and C<@EXPORT_OK> happen immediately like C, leaving no room for something to get awry or just plain wrong. With respect to loading C and inheriting, there are alternatives with the use of modules like C and C. use base qw(Exporter); # or use parent qw(Exporter); Any of these statements are nice replacements for C with the same compile-time effect. The basic difference is that C code interacts with declared C while C is a streamlined version of the older C code to just establish the IS-A relationship. For more details, see the documentation and code of L and L. Another thorough remedy to that runtime vs. compile-time trap is to use L, which is a wrapper of Exporter that allows all boilerplate code at a single gulp in the use statement. use Exporter::Easy ( OK => [ qw(munge frobnicate) ], ); # @ISA setup is automatic # all assignments happen at compile time =head2 What Not to Export You have been warned already in L to not export: =over 4 =item * method names (because you don't need to and that's likely to not do what you want), =item * anything by default (because you don't want to surprise your users... badly) =item * anything you don't need to (because less is more) =back There's one more item to add to this list. Do B export variable names. Just because C lets you do that, it does not mean you should. @EXPORT_OK = qw($svar @avar %hvar); # DON'T! Exporting variables is not a good idea. They can change under the hood, provoking horrible effects at-a-distance that are too hard to track and to fix. Trust me: they are not worth it. To provide the capability to set/get class-wide settings, it is best instead to provide accessors as subroutines or class methods instead. =head1 SEE ALSO C is definitely not the only module with symbol exporter capabilities. At CPAN, you may find a bunch of them. Some are lighter. Some provide improved APIs and features. Pick the one that fits your needs. The following is a sample list of such modules. Exporter::Easy Exporter::Lite Exporter::Renaming Exporter::Tidy Sub::Exporter / Sub::Installer Perl6::Export / Perl6::Export::Attrs =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut FILE81b1434e/Carp.pmpackage Carp; { use 5.006; } use strict; use warnings; BEGIN { # Very old versions of warnings.pm load Carp. This can go wrong due # to the circular dependency. If warnings is invoked before Carp, # then warnings starts by loading Carp, then Carp (above) tries to # invoke warnings, and gets nothing because warnings is in the process # of loading and hasn't defined its import method yet. If we were # only turning on warnings ("use warnings" above) this wouldn't be too # bad, because Carp would just gets the state of the -w switch and so # might not get some warnings that it wanted. The real problem is # that we then want to turn off Unicode warnings, but "no warnings # 'utf8'" won't be effective if we're in this circular-dependency # situation. So, if warnings.pm is an affected version, we turn # off all warnings ourselves by directly setting ${^WARNING_BITS}. # On unaffected versions, we turn off just Unicode warnings, via # the proper API. if(!defined($warnings::VERSION) || eval($warnings::VERSION) < 1.06) { ${^WARNING_BITS} = ""; } else { "warnings"->unimport("utf8"); } } sub _fetch_sub { # fetch sub without autovivifying my($pack, $sub) = @_; $pack .= '::'; # only works with top-level packages return unless exists($::{$pack}); for ($::{$pack}) { return unless ref \$_ eq 'GLOB' && *$_{HASH} && exists $$_{$sub}; for ($$_{$sub}) { return ref \$_ eq 'GLOB' ? *$_{CODE} : undef } } } # UTF8_REGEXP_PROBLEM is a compile-time constant indicating whether Carp # must avoid applying a regular expression to an upgraded (is_utf8) # string. There are multiple problems, on different Perl versions, # that require this to be avoided. All versions prior to 5.13.8 will # load utf8_heavy.pl for the swash system, even if the regexp doesn't # use character classes. Perl 5.6 and Perls [5.11.2, 5.13.11) exhibit # specific problems when Carp is being invoked in the aftermath of a # syntax error. BEGIN { if("$]" < 5.013011) { *UTF8_REGEXP_PROBLEM = sub () { 1 }; } else { *UTF8_REGEXP_PROBLEM = sub () { 0 }; } } # is_utf8() is essentially the utf8::is_utf8() function, which indicates # whether a string is represented in the upgraded form (using UTF-8 # internally). As utf8::is_utf8() is only available from Perl 5.8 # onwards, extra effort is required here to make it work on Perl 5.6. BEGIN { if(defined(my $sub = _fetch_sub utf8 => 'is_utf8')) { *is_utf8 = $sub; } else { # black magic for perl 5.6 *is_utf8 = sub { unpack("C", "\xaa".$_[0]) != 170 }; } } # The downgrade() function defined here is to be used for attempts to # downgrade where it is acceptable to fail. It must be called with a # second argument that is a true value. BEGIN { if(defined(my $sub = _fetch_sub utf8 => 'downgrade')) { *downgrade = \&{"utf8::downgrade"}; } else { *downgrade = sub { my $r = ""; my $l = length($_[0]); for(my $i = 0; $i != $l; $i++) { my $o = ord(substr($_[0], $i, 1)); return if $o > 255; $r .= chr($o); } $_[0] = $r; }; } } # is_safe_printable_codepoint() indicates whether a character, specified # by integer codepoint, is OK to output literally in a trace. Generally # this is if it is a printable character in the ancestral character set # (ASCII or EBCDIC). This is used on some Perls in situations where a # regexp can't be used. BEGIN { *is_safe_printable_codepoint = "$]" >= 5.007_003 ? eval(q(sub ($) { my $u = utf8::native_to_unicode($_[0]); $u >= 0x20 && $u <= 0x7e; })) : ord("A") == 65 ? sub ($) { $_[0] >= 0x20 && $_[0] <= 0x7e } : sub ($) { # Early EBCDIC # 3 EBCDIC code pages supported then; all controls but one # are the code points below SPACE. The other one is 0x5F on # POSIX-BC; FF on the other two. # FIXME: there are plenty of unprintable codepoints other # than those that this code and the comment above identifies # as "controls". $_[0] >= ord(" ") && $_[0] <= 0xff && $_[0] != (ord ("^") == 106 ? 0x5f : 0xff); } ; } sub _univ_mod_loaded { return 0 unless exists($::{"UNIVERSAL::"}); for ($::{"UNIVERSAL::"}) { return 0 unless ref \$_ eq "GLOB" && *$_{HASH} && exists $$_{"$_[0]::"}; for ($$_{"$_[0]::"}) { return 0 unless ref \$_ eq "GLOB" && *$_{HASH} && exists $$_{"VERSION"}; for ($$_{"VERSION"}) { return 0 unless ref \$_ eq "GLOB"; return ${*$_{SCALAR}}; } } } } # _maybe_isa() is usually the UNIVERSAL::isa function. We have to avoid # the latter if the UNIVERSAL::isa module has been loaded, to avoid infi- # nite recursion; in that case _maybe_isa simply returns true. my $isa; BEGIN { if (_univ_mod_loaded('isa')) { *_maybe_isa = sub { 1 } } else { # Since we have already done the check, record $isa for use below # when defining _StrVal. *_maybe_isa = $isa = _fetch_sub(UNIVERSAL => "isa"); } } # We need an overload::StrVal or equivalent function, but we must avoid # loading any modules on demand, as Carp is used from __DIE__ handlers and # may be invoked after a syntax error. # We can copy recent implementations of overload::StrVal and use # overloading.pm, which is the fastest implementation, so long as # overloading is available. If it is not available, we use our own pure- # Perl StrVal. We never actually use overload::StrVal, for various rea- # sons described below. # overload versions are as follows: # undef-1.00 (up to perl 5.8.0) uses bless (avoid!) # 1.01-1.17 (perl 5.8.1 to 5.14) uses Scalar::Util # 1.18+ (perl 5.16+) uses overloading # The ancient 'bless' implementation (that inspires our pure-Perl version) # blesses unblessed references and must be avoided. Those using # Scalar::Util use refaddr, possibly the pure-Perl implementation, which # has the same blessing bug, and must be avoided. Also, Scalar::Util is # loaded on demand. Since we avoid the Scalar::Util implementations, we # end up having to implement our own overloading.pm-based version for perl # 5.10.1 to 5.14. Since it also works just as well in more recent ver- # sions, we use it there, too. BEGIN { if (eval { require "overloading.pm" }) { *_StrVal = eval 'sub { no overloading; "$_[0]" }' } else { # Work around the UNIVERSAL::can/isa modules to avoid recursion. # _mycan is either UNIVERSAL::can, or, in the presence of an # override, overload::mycan. *_mycan = _univ_mod_loaded('can') ? do { require "overload.pm"; _fetch_sub overload => 'mycan' } : \&UNIVERSAL::can; # _blessed is either UNIVERSAL::isa(...), or, in the presence of an # override, a hideous, but fairly reliable, workaround. *_blessed = $isa ? sub { &$isa($_[0], "UNIVERSAL") } : sub { my $probe = "UNIVERSAL::Carp_probe_" . rand; no strict 'refs'; local *$probe = sub { "unlikely string" }; local $@; local $SIG{__DIE__} = sub{}; (eval { $_[0]->$probe } || '') eq 'unlikely string' }; *_StrVal = sub { my $pack = ref $_[0]; # Perl's overload mechanism uses the presence of a special # "method" named "((" or "()" to signal it is in effect. # This test seeks to see if it has been set up. "((" post- # dates overloading.pm, so we can skip it. return "$_[0]" unless _mycan($pack, "()"); # Even at this point, the invocant may not be blessed, so # check for that. return "$_[0]" if not _blessed($_[0]); bless $_[0], "Carp"; my $str = "$_[0]"; bless $_[0], $pack; $pack . substr $str, index $str, "="; } } } our $VERSION = '1.54'; $VERSION =~ tr/_//d; our $MaxEvalLen = 0; our $Verbose = 0; our $CarpLevel = 0; our $MaxArgLen = 64; # How much of each argument to print. 0 = all. our $MaxArgNums = 8; # How many arguments to print. 0 = all. our $RefArgFormatter = undef; # allow caller to format reference arguments require Exporter; our @ISA = ('Exporter'); our @EXPORT = qw(confess croak carp); our @EXPORT_OK = qw(cluck verbose longmess shortmess); our @EXPORT_FAIL = qw(verbose); # hook to enable verbose mode # The members of %Internal are packages that are internal to perl. # Carp will not report errors from within these packages if it # can. The members of %CarpInternal are internal to Perl's warning # system. Carp will not report errors from within these packages # either, and will not report calls *to* these packages for carp and # croak. They replace $CarpLevel, which is deprecated. The # $Max(EvalLen|(Arg(Len|Nums)) variables are used to specify how the eval # text and function arguments should be formatted when printed. our %CarpInternal; our %Internal; # disable these by default, so they can live w/o require Carp $CarpInternal{Carp}++; $CarpInternal{warnings}++; $Internal{Exporter}++; $Internal{'Exporter::Heavy'}++; # if the caller specifies verbose usage ("perl -MCarp=verbose script.pl") # then the following method will be called by the Exporter which knows # to do this thanks to @EXPORT_FAIL, above. $_[1] will contain the word # 'verbose'. sub export_fail { shift; $Verbose = shift if $_[0] eq 'verbose'; @_ } sub _cgc { no strict 'refs'; return \&{"CORE::GLOBAL::caller"} if defined &{"CORE::GLOBAL::caller"}; return; } sub longmess { local($!, $^E); # Icky backwards compatibility wrapper. :-( # # The story is that the original implementation hard-coded the # number of call levels to go back, so calls to longmess were off # by one. Other code began calling longmess and expecting this # behaviour, so the replacement has to emulate that behaviour. my $cgc = _cgc(); my $call_pack = $cgc ? $cgc->() : caller(); if ( $Internal{$call_pack} or $CarpInternal{$call_pack} ) { return longmess_heavy(@_); } else { local $CarpLevel = $CarpLevel + 1; return longmess_heavy(@_); } } our @CARP_NOT; sub shortmess { local($!, $^E); my $cgc = _cgc(); # Icky backwards compatibility wrapper. :-( local @CARP_NOT = scalar( $cgc ? $cgc->() : caller() ); shortmess_heavy(@_); } sub croak { die shortmess @_ } sub confess { die longmess @_ } sub carp { warn shortmess @_ } sub cluck { warn longmess @_ } BEGIN { if("$]" >= 5.015002 || ("$]" >= 5.014002 && "$]" < 5.015) || ("$]" >= 5.012005 && "$]" < 5.013)) { *CALLER_OVERRIDE_CHECK_OK = sub () { 1 }; } else { *CALLER_OVERRIDE_CHECK_OK = sub () { 0 }; } } sub caller_info { my $i = shift(@_) + 1; my %call_info; my $cgc = _cgc(); { # Some things override caller() but forget to implement the # @DB::args part of it, which we need. We check for this by # pre-populating @DB::args with a sentinel which no-one else # has the address of, so that we can detect whether @DB::args # has been properly populated. However, on earlier versions # of perl this check tickles a bug in CORE::caller() which # leaks memory. So we only check on fixed perls. @DB::args = \$i if CALLER_OVERRIDE_CHECK_OK; package DB; @call_info{ qw(pack file line sub has_args wantarray evaltext is_require) } = $cgc ? $cgc->($i) : caller($i); } unless ( defined $call_info{file} ) { return (); } my $sub_name = Carp::get_subname( \%call_info ); if ( $call_info{has_args} ) { # Guard our serialization of the stack from stack refcounting bugs # NOTE this is NOT a complete solution, we cannot 100% guard against # these bugs. However in many cases Perl *is* capable of detecting # them and throws an error when it does. Unfortunately serializing # the arguments on the stack is a perfect way of finding these bugs, # even when they would not affect normal program flow that did not # poke around inside the stack. Inside of Carp.pm it makes little # sense reporting these bugs, as Carp's job is to report the callers # errors, not the ones it might happen to tickle while doing so. # See: https://rt.perl.org/Public/Bug/Display.html?id=131046 # and: https://rt.perl.org/Public/Bug/Display.html?id=52610 # for more details and discussion. - Yves my @args = map { my $arg; local $@= $@; eval { $arg = $_; 1; } or do { $arg = '** argument not available anymore **'; }; $arg; } @DB::args; if (CALLER_OVERRIDE_CHECK_OK && @args == 1 && ref $args[0] eq ref \$i && $args[0] == \$i ) { @args = (); # Don't let anyone see the address of $i local $@; my $where = eval { my $func = $cgc or return ''; my $gv = (_fetch_sub B => 'svref_2object' or return '') ->($func)->GV; my $package = $gv->STASH->NAME; my $subname = $gv->NAME; return unless defined $package && defined $subname; # returning CORE::GLOBAL::caller isn't useful for tracing the cause: return if $package eq 'CORE::GLOBAL' && $subname eq 'caller'; " in &${package}::$subname"; } || ''; @args = "** Incomplete caller override detected$where; \@DB::args were not set **"; } else { my $overflow; if ( $MaxArgNums and @args > $MaxArgNums ) { # More than we want to show? $#args = $MaxArgNums - 1; $overflow = 1; } @args = map { Carp::format_arg($_) } @args; if ($overflow) { push @args, '...'; } } # Push the args onto the subroutine $sub_name .= '(' . join( ', ', @args ) . ')'; } $call_info{sub_name} = $sub_name; return wantarray() ? %call_info : \%call_info; } # Transform an argument to a function into a string. our $in_recurse; sub format_arg { my $arg = shift; if ( my $pack= ref($arg) ) { # legitimate, let's not leak it. if (!$in_recurse && _maybe_isa( $arg, 'UNIVERSAL' ) && do { local $@; local $in_recurse = 1; local $SIG{__DIE__} = sub{}; eval {$arg->can('CARP_TRACE') } }) { return $arg->CARP_TRACE(); } elsif (!$in_recurse && defined($RefArgFormatter) && do { local $@; local $in_recurse = 1; local $SIG{__DIE__} = sub{}; eval {$arg = $RefArgFormatter->($arg); 1} }) { return $arg; } else { # Argument may be blessed into a class with overloading, and so # might have an overloaded stringification. We don't want to # risk getting the overloaded stringification, so we need to # use _StrVal, our overload::StrVal()-equivalent. return _StrVal $arg; } } return "undef" if !defined($arg); downgrade($arg, 1); return $arg if !(UTF8_REGEXP_PROBLEM && is_utf8($arg)) && $arg =~ /\A-?[0-9]+(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?\z/; my $suffix = ""; if ( 2 < $MaxArgLen and $MaxArgLen < length($arg) ) { substr ( $arg, $MaxArgLen - 3 ) = ""; $suffix = "..."; } if(UTF8_REGEXP_PROBLEM && is_utf8($arg)) { for(my $i = length($arg); $i--; ) { my $c = substr($arg, $i, 1); my $x = substr($arg, 0, 0); # work around bug on Perl 5.8.{1,2} if($c eq "\"" || $c eq "\\" || $c eq "\$" || $c eq "\@") { substr $arg, $i, 0, "\\"; next; } my $o = ord($c); substr $arg, $i, 1, sprintf("\\x{%x}", $o) unless is_safe_printable_codepoint($o); } } else { $arg =~ s/([\"\\\$\@])/\\$1/g; # This is all the ASCII printables spelled-out. It is portable to all # Perl versions and platforms (such as EBCDIC). There are other more # compact ways to do this, but may not work everywhere every version. $arg =~ s/([^ !"#\$\%\&'()*+,\-.\/0123456789:;<=>?\@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]^_`abcdefghijklmnopqrstuvwxyz\{|}~])/sprintf("\\x{%x}",ord($1))/eg; } downgrade($arg, 1); return "\"".$arg."\"".$suffix; } sub Regexp::CARP_TRACE { my $arg = "$_[0]"; downgrade($arg, 1); if(UTF8_REGEXP_PROBLEM && is_utf8($arg)) { for(my $i = length($arg); $i--; ) { my $o = ord(substr($arg, $i, 1)); my $x = substr($arg, 0, 0); # work around bug on Perl 5.8.{1,2} substr $arg, $i, 1, sprintf("\\x{%x}", $o) unless is_safe_printable_codepoint($o); } } else { # See comment in format_arg() about this same regex. $arg =~ s/([^ !"#\$\%\&'()*+,\-.\/0123456789:;<=>?\@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]^_`abcdefghijklmnopqrstuvwxyz\{|}~])/sprintf("\\x{%x}",ord($1))/eg; } downgrade($arg, 1); my $suffix = ""; if($arg =~ /\A\(\?\^?([a-z]*)(?:-[a-z]*)?:(.*)\)\z/s) { ($suffix, $arg) = ($1, $2); } if ( 2 < $MaxArgLen and $MaxArgLen < length($arg) ) { substr ( $arg, $MaxArgLen - 3 ) = ""; $suffix = "...".$suffix; } return "qr($arg)$suffix"; } # Takes an inheritance cache and a package and returns # an anon hash of known inheritances and anon array of # inheritances which consequences have not been figured # for. sub get_status { my $cache = shift; my $pkg = shift; $cache->{$pkg} ||= [ { $pkg => $pkg }, [ trusts_directly($pkg) ] ]; return @{ $cache->{$pkg} }; } # Takes the info from caller() and figures out the name of # the sub/require/eval sub get_subname { my $info = shift; if ( defined( $info->{evaltext} ) ) { my $eval = $info->{evaltext}; if ( $info->{is_require} ) { return "require $eval"; } else { $eval =~ s/([\\\'])/\\$1/g; return "eval '" . str_len_trim( $eval, $MaxEvalLen ) . "'"; } } # this can happen on older perls when the sub (or the stash containing it) # has been deleted if ( !defined( $info->{sub} ) ) { return '__ANON__::__ANON__'; } return ( $info->{sub} eq '(eval)' ) ? 'eval {...}' : $info->{sub}; } # Figures out what call (from the point of view of the caller) # the long error backtrace should start at. sub long_error_loc { my $i; my $lvl = $CarpLevel; { ++$i; my $cgc = _cgc(); my @caller = $cgc ? $cgc->($i) : caller($i); my $pkg = $caller[0]; unless ( defined($pkg) ) { # This *shouldn't* happen. if (%Internal) { local %Internal; $i = long_error_loc(); last; } elsif (defined $caller[2]) { # this can happen when the stash has been deleted # in that case, just assume that it's a reasonable place to # stop (the file and line data will still be intact in any # case) - the only issue is that we can't detect if the # deleted package was internal (so don't do that then) # -doy redo unless 0 > --$lvl; last; } else { return 2; } } redo if $CarpInternal{$pkg}; redo unless 0 > --$lvl; redo if $Internal{$pkg}; } return $i - 1; } sub longmess_heavy { if ( ref( $_[0] ) ) { # don't break references as exceptions return wantarray ? @_ : $_[0]; } my $i = long_error_loc(); return ret_backtrace( $i, @_ ); } BEGIN { if("$]" >= 5.017004) { # The LAST_FH constant is a reference to the variable. $Carp::{LAST_FH} = \eval '\${^LAST_FH}'; } else { eval '*LAST_FH = sub () { 0 }'; } } # Returns a full stack backtrace starting from where it is # told. sub ret_backtrace { my ( $i, @error ) = @_; my $mess; my $err = join '', @error; $i++; my $tid_msg = ''; if ( defined &threads::tid ) { my $tid = threads->tid; $tid_msg = " thread $tid" if $tid; } my %i = caller_info($i); $mess = "$err at $i{file} line $i{line}$tid_msg"; if( $. ) { # Use ${^LAST_FH} if available. if (LAST_FH) { if (${+LAST_FH}) { $mess .= sprintf ", <%s> %s %d", *${+LAST_FH}{NAME}, ($/ eq "\n" ? "line" : "chunk"), $. } } else { local $@ = ''; local $SIG{__DIE__}; eval { CORE::die; }; if($@ =~ /^Died at .*(, <.*?> (?:line|chunk) \d+).$/ ) { $mess .= $1; } } } $mess .= "\.\n"; while ( my %i = caller_info( ++$i ) ) { $mess .= "\t$i{sub_name} called at $i{file} line $i{line}$tid_msg\n"; } return $mess; } sub ret_summary { my ( $i, @error ) = @_; my $err = join '', @error; $i++; my $tid_msg = ''; if ( defined &threads::tid ) { my $tid = threads->tid; $tid_msg = " thread $tid" if $tid; } my %i = caller_info($i); return "$err at $i{file} line $i{line}$tid_msg\.\n"; } sub short_error_loc { # You have to create your (hash)ref out here, rather than defaulting it # inside trusts *on a lexical*, as you want it to persist across calls. # (You can default it on $_[2], but that gets messy) my $cache = {}; my $i = 1; my $lvl = $CarpLevel; { my $cgc = _cgc(); my $called = $cgc ? $cgc->($i) : caller($i); $i++; my $caller = $cgc ? $cgc->($i) : caller($i); if (!defined($caller)) { my @caller = $cgc ? $cgc->($i) : caller($i); if (@caller) { # if there's no package but there is other caller info, then # the package has been deleted - treat this as a valid package # in this case redo if defined($called) && $CarpInternal{$called}; redo unless 0 > --$lvl; last; } else { return 0; } } redo if $Internal{$caller}; redo if $CarpInternal{$caller}; redo if $CarpInternal{$called}; redo if trusts( $called, $caller, $cache ); redo if trusts( $caller, $called, $cache ); redo unless 0 > --$lvl; } return $i - 1; } sub shortmess_heavy { return longmess_heavy(@_) if $Verbose; return @_ if ref( $_[0] ); # don't break references as exceptions my $i = short_error_loc(); if ($i) { ret_summary( $i, @_ ); } else { longmess_heavy(@_); } } # If a string is too long, trims it with ... sub str_len_trim { my $str = shift; my $max = shift || 0; if ( 2 < $max and $max < length($str) ) { substr( $str, $max - 3 ) = '...'; } return $str; } # Takes two packages and an optional cache. Says whether the # first inherits from the second. # # Recursive versions of this have to work to avoid certain # possible endless loops, and when following long chains of # inheritance are less efficient. sub trusts { my $child = shift; my $parent = shift; my $cache = shift; my ( $known, $partial ) = get_status( $cache, $child ); # Figure out consequences until we have an answer while ( @$partial and not exists $known->{$parent} ) { my $anc = shift @$partial; next if exists $known->{$anc}; $known->{$anc}++; my ( $anc_knows, $anc_partial ) = get_status( $cache, $anc ); my @found = keys %$anc_knows; @$known{@found} = (); push @$partial, @$anc_partial; } return exists $known->{$parent}; } # Takes a package and gives a list of those trusted directly sub trusts_directly { my $class = shift; no strict 'refs'; my $stash = \%{"$class\::"}; for my $var (qw/ CARP_NOT ISA /) { # Don't try using the variable until we know it exists, # to avoid polluting the caller's namespace. if ( $stash->{$var} && ref \$stash->{$var} eq 'GLOB' && *{$stash->{$var}}{ARRAY} && @{$stash->{$var}} ) { return @{$stash->{$var}} } } return; } if(!defined($warnings::VERSION) || do { no warnings "numeric"; $warnings::VERSION < 1.03 }) { # Very old versions of warnings.pm import from Carp. This can go # wrong due to the circular dependency. If Carp is invoked before # warnings, then Carp starts by loading warnings, then warnings # tries to import from Carp, and gets nothing because Carp is in # the process of loading and hasn't defined its import method yet. # So we work around that by manually exporting to warnings here. no strict "refs"; *{"warnings::$_"} = \&$_ foreach @EXPORT; } 1; __END__ =head1 NAME Carp - alternative warn and die for modules =head1 SYNOPSIS use Carp; # warn user (from perspective of caller) carp "string trimmed to 80 chars"; # die of errors (from perspective of caller) croak "We're outta here!"; # die of errors with stack backtrace confess "not implemented"; # cluck, longmess and shortmess not exported by default use Carp qw(cluck longmess shortmess); cluck "This is how we got here!"; # warn with stack backtrace my $long_message = longmess( "message from cluck() or confess()" ); my $short_message = shortmess( "message from carp() or croak()" ); =head1 DESCRIPTION The Carp routines are useful in your own modules because they act like C or C, but with a message which is more likely to be useful to a user of your module. In the case of C and C, that context is a summary of every call in the call-stack; C returns the contents of the error message. For a shorter message you can use C or C which report the error as being from where your module was called. C returns the contents of this error message. There is no guarantee that that is where the error was, but it is a good educated guess. C takes care not to clobber the status variables C<$!> and C<$^E> in the course of assembling its error messages. This means that a C<$SIG{__DIE__}> or C<$SIG{__WARN__}> handler can capture the error information held in those variables, if it is required to augment the error message, and if the code calling C left useful values there. Of course, C can't guarantee the latter. You can also alter the way the output and logic of C works, by changing some global variables in the C namespace. See the section on L below. Here is a more complete description of how C and C work. What they do is search the call-stack for a function call stack where they have not been told that there shouldn't be an error. If every call is marked safe, they give up and give a full stack backtrace instead. In other words they presume that the first likely looking potential suspect is guilty. Their rules for telling whether a call shouldn't generate errors work as follows: =over 4 =item 1. Any call from a package to itself is safe. =item 2. Packages claim that there won't be errors on calls to or from packages explicitly marked as safe by inclusion in C<@CARP_NOT>, or (if that array is empty) C<@ISA>. The ability to override what @ISA says is new in 5.8. =item 3. The trust in item 2 is transitive. If A trusts B, and B trusts C, then A trusts C. So if you do not override C<@ISA> with C<@CARP_NOT>, then this trust relationship is identical to, "inherits from". =item 4. Any call from an internal Perl module is safe. (Nothing keeps user modules from marking themselves as internal to Perl, but this practice is discouraged.) =item 5. Any call to Perl's warning system (eg Carp itself) is safe. (This rule is what keeps it from reporting the error at the point where you call C or C.) =item 6. C<$Carp::CarpLevel> can be set to skip a fixed number of additional call levels. Using this is not recommended because it is very difficult to get it to behave correctly. =back =head2 Forcing a Stack Trace As a debugging aid, you can force Carp to treat a croak as a confess and a carp as a cluck across I modules. In other words, force a detailed stack trace to be given. This can be very helpful when trying to understand why, or from where, a warning or error is being generated. This feature is enabled by 'importing' the non-existent symbol 'verbose'. You would typically enable it by saying perl -MCarp=verbose script.pl or by including the string C<-MCarp=verbose> in the PERL5OPT environment variable. Alternately, you can set the global variable C<$Carp::Verbose> to true. See the L section below. =head2 Stack Trace formatting At each stack level, the subroutine's name is displayed along with its parameters. For simple scalars, this is sufficient. For complex data types, such as objects and other references, this can simply display C<'HASH(0x1ab36d8)'>. Carp gives two ways to control this. =over 4 =item 1. For objects, a method, C, will be called, if it exists. If this method doesn't exist, or it recurses into C, or it otherwise throws an exception, this is skipped, and Carp moves on to the next option, otherwise checking stops and the string returned is used. It is recommended that the object's type is part of the string to make debugging easier. =item 2. For any type of reference, C<$Carp::RefArgFormatter> is checked (see below). This variable is expected to be a code reference, and the current parameter is passed in. If this function doesn't exist (the variable is undef), or it recurses into C, or it otherwise throws an exception, this is skipped, and Carp moves on to the next option, otherwise checking stops and the string returned is used. =item 3. Otherwise, if neither C nor C<$Carp::RefArgFormatter> is available, stringify the value ignoring any overloading. =back =head1 GLOBAL VARIABLES =head2 $Carp::MaxEvalLen This variable determines how many characters of a string-eval are to be shown in the output. Use a value of C<0> to show all text. Defaults to C<0>. =head2 $Carp::MaxArgLen This variable determines how many characters of each argument to a function to print. Use a value of C<0> to show the full length of the argument. Defaults to C<64>. =head2 $Carp::MaxArgNums This variable determines how many arguments to each function to show. Use a false value to show all arguments to a function call. To suppress all arguments, use C<-1> or C<'0 but true'>. Defaults to C<8>. =head2 $Carp::Verbose This variable makes C and C generate stack backtraces just like C and C. This is how C is implemented internally. Defaults to C<0>. =head2 $Carp::RefArgFormatter This variable sets a general argument formatter to display references. Plain scalars and objects that implement C will not go through this formatter. Calling C from within this function is not supported. local $Carp::RefArgFormatter = sub { require Data::Dumper; Data::Dumper->Dump($_[0]); # not necessarily safe }; =head2 @CARP_NOT This variable, I, says which packages are I to be considered as the location of an error. The C and C functions will skip over callers when reporting where an error occurred. NB: This variable must be in the package's symbol table, thus: # These work our @CARP_NOT; # file scope use vars qw(@CARP_NOT); # package scope @My::Package::CARP_NOT = ... ; # explicit package variable # These don't work sub xyz { ... @CARP_NOT = ... } # w/o declarations above my @CARP_NOT; # even at top-level Example of use: package My::Carping::Package; use Carp; our @CARP_NOT; sub bar { .... or _error('Wrong input') } sub _error { # temporary control of where'ness, __PACKAGE__ is implicit local @CARP_NOT = qw(My::Friendly::Caller); carp(@_) } This would make C report the error as coming from a caller not in C, nor from C. Also read the L section above, about how C decides where the error is reported from. Use C<@CARP_NOT>, instead of C<$Carp::CarpLevel>. Overrides C's use of C<@ISA>. =head2 %Carp::Internal This says what packages are internal to Perl. C will never report an error as being from a line in a package that is internal to Perl. For example: $Carp::Internal{ (__PACKAGE__) }++; # time passes... sub foo { ... or confess("whatever") }; would give a full stack backtrace starting from the first caller outside of __PACKAGE__. (Unless that package was also internal to Perl.) =head2 %Carp::CarpInternal This says which packages are internal to Perl's warning system. For generating a full stack backtrace this is the same as being internal to Perl, the stack backtrace will not start inside packages that are listed in C<%Carp::CarpInternal>. But it is slightly different for the summary message generated by C or C. There errors will not be reported on any lines that are calling packages in C<%Carp::CarpInternal>. For example C itself is listed in C<%Carp::CarpInternal>. Therefore the full stack backtrace from C will not start inside of C, and the short message from calling C is not placed on the line where C was called. =head2 $Carp::CarpLevel This variable determines how many additional call frames are to be skipped that would not otherwise be when reporting where an error occurred on a call to one of C's functions. It is fairly easy to count these call frames on calls that generate a full stack backtrace. However it is much harder to do this accounting for calls that generate a short message. Usually people skip too many call frames. If they are lucky they skip enough that C goes all of the way through the call stack, realizes that something is wrong, and then generates a full stack backtrace. If they are unlucky then the error is reported from somewhere misleading very high in the call stack. Therefore it is best to avoid C<$Carp::CarpLevel>. Instead use C<@CARP_NOT>, C<%Carp::Internal> and C<%Carp::CarpInternal>. Defaults to C<0>. =head1 BUGS The Carp routines don't handle exception objects currently. If called with a first argument that is a reference, they simply call die() or warn(), as appropriate. =head1 SEE ALSO L, L =head1 CONTRIBUTING L is maintained by the perl 5 porters as part of the core perl 5 version control repository. Please see the L perldoc for how to submit patches and contribute to it. =head1 AUTHOR The Carp module first appeared in Larry Wall's perl 5.000 distribution. Since then it has been modified by several of the perl 5 porters. Andrew Main (Zefram) divested Carp into an independent distribution. =head1 COPYRIGHT Copyright (C) 1994-2013 Larry Wall Copyright (C) 2011, 2012, 2013 Andrew Main (Zefram) =head1 LICENSE This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. FILEfc7a47f7/Compress/Zlib.pm/ package Compress::Zlib; require 5.006 ; require Exporter; use Carp ; use IO::Handle ; use Scalar::Util qw(dualvar); use IO::Compress::Base::Common 2.213 ; use Compress::Raw::Zlib 2.213 ; use IO::Compress::Gzip 2.213 ; use IO::Uncompress::Gunzip 2.213 ; use strict ; use warnings ; use bytes ; our ($VERSION, $XS_VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS); $VERSION = '2.213'; $XS_VERSION = $VERSION; $VERSION = eval $VERSION; @ISA = qw(Exporter); # Items to export into callers namespace by default. Note: do not export # names by default without a very good reason. Use EXPORT_OK instead. # Do not simply export all your public functions/methods/constants. @EXPORT = qw( deflateInit inflateInit compress uncompress gzopen $gzerrno ); push @EXPORT, @Compress::Raw::Zlib::EXPORT ; @EXPORT_OK = qw(memGunzip memGzip zlib_version); %EXPORT_TAGS = ( ALL => \@EXPORT ); BEGIN { *zlib_version = \&Compress::Raw::Zlib::zlib_version; } use constant FLAG_APPEND => 1 ; use constant FLAG_CRC => 2 ; use constant FLAG_ADLER => 4 ; use constant FLAG_CONSUME_INPUT => 8 ; our (@my_z_errmsg); @my_z_errmsg = ( "need dictionary", # Z_NEED_DICT 2 "stream end", # Z_STREAM_END 1 "", # Z_OK 0 "file error", # Z_ERRNO (-1) "stream error", # Z_STREAM_ERROR (-2) "data error", # Z_DATA_ERROR (-3) "insufficient memory", # Z_MEM_ERROR (-4) "buffer error", # Z_BUF_ERROR (-5) "incompatible version",# Z_VERSION_ERROR(-6) ); sub _set_gzerr { my $value = shift ; if ($value == 0) { $Compress::Zlib::gzerrno = 0 ; } elsif ($value == Z_ERRNO() || $value > 2) { $Compress::Zlib::gzerrno = $! ; } else { $Compress::Zlib::gzerrno = dualvar($value+0, $my_z_errmsg[2 - $value]); } return $value ; } sub _set_gzerr_undef { _set_gzerr(@_); return undef; } sub _save_gzerr { my $gz = shift ; my $test_eof = shift ; my $value = $gz->errorNo() || 0 ; my $eof = $gz->eof() ; if ($test_eof) { # gzread uses Z_STREAM_END to denote a successful end $value = Z_STREAM_END() if $gz->eof() && $value == 0 ; } _set_gzerr($value) ; } sub gzopen($$) { my ($file, $mode) = @_ ; my $gz ; my %defOpts = (Level => Z_DEFAULT_COMPRESSION(), Strategy => Z_DEFAULT_STRATEGY(), ); my $writing ; $writing = ! ($mode =~ /r/i) ; $writing = ($mode =~ /[wa]/i) ; $defOpts{Level} = $1 if $mode =~ /(\d)/; $defOpts{Strategy} = Z_FILTERED() if $mode =~ /f/i; $defOpts{Strategy} = Z_HUFFMAN_ONLY() if $mode =~ /h/i; $defOpts{Append} = 1 if $mode =~ /a/i; my $infDef = $writing ? 'deflate' : 'inflate'; my @params = () ; croak "gzopen: file parameter is not a filehandle or filename" unless isaFilehandle $file || isaFilename $file || (ref $file && ref $file eq 'SCALAR'); return undef unless $mode =~ /[rwa]/i ; _set_gzerr(0) ; if ($writing) { $gz = IO::Compress::Gzip->new($file, Minimal => 1, AutoClose => 1, %defOpts) or $Compress::Zlib::gzerrno = $IO::Compress::Gzip::GzipError; } else { $gz = IO::Uncompress::Gunzip->new($file, Transparent => 1, Append => 0, AutoClose => 1, MultiStream => 1, Strict => 0) or $Compress::Zlib::gzerrno = $IO::Uncompress::Gunzip::GunzipError; } return undef if ! defined $gz ; bless [$gz, $infDef], 'Compress::Zlib::gzFile'; } sub Compress::Zlib::gzFile::gzread { my $self = shift ; return _set_gzerr(Z_STREAM_ERROR()) if $self->[1] ne 'inflate'; my $len = defined $_[1] ? $_[1] : 4096 ; my $gz = $self->[0] ; if ($self->gzeof() || $len == 0) { # Zap the output buffer to match ver 1 behaviour. $_[0] = "" ; _save_gzerr($gz, 1); return 0 ; } my $status = $gz->read($_[0], $len) ; _save_gzerr($gz, 1); return $status ; } sub Compress::Zlib::gzFile::gzreadline { my $self = shift ; my $gz = $self->[0] ; { # Maintain backward compatibility with 1.x behaviour # It didn't support $/, so this can't either. local $/ = "\n" ; $_[0] = $gz->getline() ; } _save_gzerr($gz, 1); return defined $_[0] ? length $_[0] : 0 ; } sub Compress::Zlib::gzFile::gzwrite { my $self = shift ; my $gz = $self->[0] ; return _set_gzerr(Z_STREAM_ERROR()) if $self->[1] ne 'deflate'; $] >= 5.008 and (utf8::downgrade($_[0], 1) or croak "Wide character in gzwrite"); my $status = $gz->write($_[0]) ; _save_gzerr($gz); return $status ; } sub Compress::Zlib::gzFile::gztell { my $self = shift ; my $gz = $self->[0] ; my $status = $gz->tell() ; _save_gzerr($gz); return $status ; } sub Compress::Zlib::gzFile::gzseek { my $self = shift ; my $offset = shift ; my $whence = shift ; my $gz = $self->[0] ; my $status ; eval { local $SIG{__DIE__}; $status = $gz->seek($offset, $whence) ; }; if ($@) { my $error = $@; $error =~ s/^.*: /gzseek: /; $error =~ s/ at .* line \d+\s*$//; croak $error; } _save_gzerr($gz); return $status ; } sub Compress::Zlib::gzFile::gzflush { my $self = shift ; my $f = shift ; my $gz = $self->[0] ; my $status = $gz->flush($f) ; my $err = _save_gzerr($gz); return $status ? 0 : $err; } sub Compress::Zlib::gzFile::gzclose { my $self = shift ; my $gz = $self->[0] ; my $status = $gz->close() ; my $err = _save_gzerr($gz); return $status ? 0 : $err; } sub Compress::Zlib::gzFile::gzeof { my $self = shift ; my $gz = $self->[0] ; return 0 if $self->[1] ne 'inflate'; my $status = $gz->eof() ; _save_gzerr($gz); return $status ; } sub Compress::Zlib::gzFile::gzsetparams { my $self = shift ; croak "Usage: Compress::Zlib::gzFile::gzsetparams(file, level, strategy)" unless @_ eq 2 ; my $gz = $self->[0] ; my $level = shift ; my $strategy = shift; return _set_gzerr(Z_STREAM_ERROR()) if $self->[1] ne 'deflate'; my $status = *$gz->{Compress}->deflateParams(-Level => $level, -Strategy => $strategy); _save_gzerr($gz); return $status ; } sub Compress::Zlib::gzFile::gzerror { my $self = shift ; my $gz = $self->[0] ; return $Compress::Zlib::gzerrno ; } sub compress($;$) { my ($x, $output, $err, $in) =('', '', '', '') ; if (ref $_[0] ) { $in = $_[0] ; croak "not a scalar reference" unless ref $in eq 'SCALAR' ; } else { $in = \$_[0] ; } $] >= 5.008 and (utf8::downgrade($$in, 1) or croak "Wide character in compress"); my $level = (@_ == 2 ? $_[1] : Z_DEFAULT_COMPRESSION() ); $x = Compress::Raw::Zlib::_deflateInit(FLAG_APPEND, $level, Z_DEFLATED, MAX_WBITS, MAX_MEM_LEVEL, Z_DEFAULT_STRATEGY, 4096, '') or return undef ; $err = $x->deflate($in, $output) ; return undef unless $err == Z_OK() ; $err = $x->flush($output) ; return undef unless $err == Z_OK() ; return $output ; } sub uncompress($) { my ($output, $in) =('', '') ; if (ref $_[0] ) { $in = $_[0] ; croak "not a scalar reference" unless ref $in eq 'SCALAR' ; } else { $in = \$_[0] ; } $] >= 5.008 and (utf8::downgrade($$in, 1) or croak "Wide character in uncompress"); my ($obj, $status) = Compress::Raw::Zlib::_inflateInit(0, MAX_WBITS, 4096, "") ; $status == Z_OK or return undef; $obj->inflate($in, $output) == Z_STREAM_END or return undef; return $output; } sub deflateInit(@) { my ($got) = ParseParameters(0, { 'bufsize' => [IO::Compress::Base::Common::Parse_unsigned, 4096], 'level' => [IO::Compress::Base::Common::Parse_signed, Z_DEFAULT_COMPRESSION()], 'method' => [IO::Compress::Base::Common::Parse_unsigned, Z_DEFLATED()], 'windowbits' => [IO::Compress::Base::Common::Parse_signed, MAX_WBITS()], 'memlevel' => [IO::Compress::Base::Common::Parse_unsigned, MAX_MEM_LEVEL()], 'strategy' => [IO::Compress::Base::Common::Parse_unsigned, Z_DEFAULT_STRATEGY()], 'dictionary' => [IO::Compress::Base::Common::Parse_any, ""], }, @_ ) ; croak "Compress::Zlib::deflateInit: Bufsize must be >= 1, you specified " . $got->getValue('bufsize') unless $got->getValue('bufsize') >= 1; my $obj ; my $status = 0 ; ($obj, $status) = Compress::Raw::Zlib::_deflateInit(0, $got->getValue('level'), $got->getValue('method'), $got->getValue('windowbits'), $got->getValue('memlevel'), $got->getValue('strategy'), $got->getValue('bufsize'), $got->getValue('dictionary')) ; my $x = ($status == Z_OK() ? bless $obj, "Zlib::OldDeflate" : undef) ; return wantarray ? ($x, $status) : $x ; } sub inflateInit(@) { my ($got) = ParseParameters(0, { 'bufsize' => [IO::Compress::Base::Common::Parse_unsigned, 4096], 'windowbits' => [IO::Compress::Base::Common::Parse_signed, MAX_WBITS()], 'dictionary' => [IO::Compress::Base::Common::Parse_any, ""], }, @_) ; croak "Compress::Zlib::inflateInit: Bufsize must be >= 1, you specified " . $got->getValue('bufsize') unless $got->getValue('bufsize') >= 1; my $status = 0 ; my $obj ; ($obj, $status) = Compress::Raw::Zlib::_inflateInit(FLAG_CONSUME_INPUT, $got->getValue('windowbits'), $got->getValue('bufsize'), $got->getValue('dictionary')) ; my $x = ($status == Z_OK() ? bless $obj, "Zlib::OldInflate" : undef) ; wantarray ? ($x, $status) : $x ; } package Zlib::OldDeflate ; our (@ISA); @ISA = qw(Compress::Raw::Zlib::deflateStream); sub deflate { my $self = shift ; my $output ; my $status = $self->SUPER::deflate($_[0], $output) ; wantarray ? ($output, $status) : $output ; } sub flush { my $self = shift ; my $output ; my $flag = shift || Compress::Zlib::Z_FINISH(); my $status = $self->SUPER::flush($output, $flag) ; wantarray ? ($output, $status) : $output ; } package Zlib::OldInflate ; our (@ISA); @ISA = qw(Compress::Raw::Zlib::inflateStream); sub inflate { my $self = shift ; my $output ; my $status = $self->SUPER::inflate($_[0], $output) ; wantarray ? ($output, $status) : $output ; } package Compress::Zlib ; use IO::Compress::Gzip::Constants 2.213 ; sub memGzip($) { _set_gzerr(0); my $x = Compress::Raw::Zlib::_deflateInit(FLAG_APPEND|FLAG_CRC, Z_BEST_COMPRESSION, Z_DEFLATED, -MAX_WBITS(), MAX_MEM_LEVEL, Z_DEFAULT_STRATEGY, 4096, '') or return undef ; # if the deflation buffer isn't a reference, make it one my $string = (ref $_[0] ? $_[0] : \$_[0]) ; $] >= 5.008 and (utf8::downgrade($$string, 1) or croak "Wide character in memGzip"); my $out; my $status ; $x->deflate($string, $out) == Z_OK or return undef ; $x->flush($out) == Z_OK or return undef ; return IO::Compress::Gzip::Constants::GZIP_MINIMUM_HEADER . $out . pack("V V", $x->crc32(), $x->total_in()); } sub _removeGzipHeader($) { my $string = shift ; return Z_DATA_ERROR() if length($$string) < GZIP_MIN_HEADER_SIZE ; my ($magic1, $magic2, $method, $flags, $time, $xflags, $oscode) = unpack ('CCCCVCC', $$string); return Z_DATA_ERROR() unless $magic1 == GZIP_ID1 and $magic2 == GZIP_ID2 and $method == Z_DEFLATED() and !($flags & GZIP_FLG_RESERVED) ; substr($$string, 0, GZIP_MIN_HEADER_SIZE) = '' ; # skip extra field if ($flags & GZIP_FLG_FEXTRA) { return Z_DATA_ERROR() if length($$string) < GZIP_FEXTRA_HEADER_SIZE ; my ($extra_len) = unpack ('v', $$string); $extra_len += GZIP_FEXTRA_HEADER_SIZE; return Z_DATA_ERROR() if length($$string) < $extra_len ; substr($$string, 0, $extra_len) = ''; } # skip orig name if ($flags & GZIP_FLG_FNAME) { my $name_end = index ($$string, GZIP_NULL_BYTE); return Z_DATA_ERROR() if $name_end == -1 ; substr($$string, 0, $name_end + 1) = ''; } # skip comment if ($flags & GZIP_FLG_FCOMMENT) { my $comment_end = index ($$string, GZIP_NULL_BYTE); return Z_DATA_ERROR() if $comment_end == -1 ; substr($$string, 0, $comment_end + 1) = ''; } # skip header crc if ($flags & GZIP_FLG_FHCRC) { return Z_DATA_ERROR() if length ($$string) < GZIP_FHCRC_SIZE ; substr($$string, 0, GZIP_FHCRC_SIZE) = ''; } return Z_OK(); } sub _ret_gun_error { $Compress::Zlib::gzerrno = $IO::Uncompress::Gunzip::GunzipError; return undef; } sub memGunzip($) { # if the buffer isn't a reference, make it one my $string = (ref $_[0] ? $_[0] : \$_[0]); $] >= 5.008 and (utf8::downgrade($$string, 1) or croak "Wide character in memGunzip"); _set_gzerr(0); my $status = _removeGzipHeader($string) ; $status == Z_OK() or return _set_gzerr_undef($status); my $bufsize = length $$string > 4096 ? length $$string : 4096 ; my $x = Compress::Raw::Zlib::_inflateInit(FLAG_CRC | FLAG_CONSUME_INPUT, -MAX_WBITS(), $bufsize, '') or return _ret_gun_error(); my $output = '' ; $status = $x->inflate($string, $output); if ( $status == Z_OK() ) { _set_gzerr(Z_DATA_ERROR()); return undef; } return _ret_gun_error() if ($status != Z_STREAM_END()); if (length $$string >= 8) { my ($crc, $len) = unpack ("VV", substr($$string, 0, 8)); substr($$string, 0, 8) = ''; return _set_gzerr_undef(Z_DATA_ERROR()) unless $len == length($output) and $crc == Compress::Raw::Zlib::crc32($output); } else { $$string = ''; } return $output; } # Autoload methods go after __END__, and are processed by the autosplit program. 1; __END__ =head1 NAME Compress::Zlib - Interface to zlib compression library =head1 SYNOPSIS use Compress::Zlib ; ($d, $status) = deflateInit( [OPT] ) ; $status = $d->deflate($input, $output) ; $status = $d->flush([$flush_type]) ; $d->deflateParams(OPTS) ; $d->deflateTune(OPTS) ; $d->dict_adler() ; $d->crc32() ; $d->adler32() ; $d->total_in() ; $d->total_out() ; $d->msg() ; $d->get_Strategy(); $d->get_Level(); $d->get_BufSize(); ($i, $status) = inflateInit( [OPT] ) ; $status = $i->inflate($input, $output [, $eof]) ; $status = $i->inflateSync($input) ; $i->dict_adler() ; $d->crc32() ; $d->adler32() ; $i->total_in() ; $i->total_out() ; $i->msg() ; $d->get_BufSize(); $dest = compress($source) ; $dest = uncompress($source) ; $gz = gzopen($filename or filehandle, $mode) ; $bytesread = $gz->gzread($buffer [,$size]) ; $bytesread = $gz->gzreadline($line) ; $byteswritten = $gz->gzwrite($buffer) ; $status = $gz->gzflush($flush) ; $offset = $gz->gztell() ; $status = $gz->gzseek($offset, $whence) ; $status = $gz->gzclose() ; $status = $gz->gzeof() ; $status = $gz->gzsetparams($level, $strategy) ; $errstring = $gz->gzerror() ; $gzerrno $dest = Compress::Zlib::memGzip($buffer) ; $dest = Compress::Zlib::memGunzip($buffer) ; $crc = adler32($buffer [,$crc]) ; $crc = crc32($buffer [,$crc]) ; $crc = crc32_combine($crc1, $crc2, $len2); $adler = adler32_combine($adler1, $adler2, $len2); my $version = Compress::Raw::Zlib::zlib_version(); =head1 DESCRIPTION The I module provides a Perl interface to the I compression library (see L for details about where to get I). The C module can be split into two general areas of functionality, namely a simple read/write interface to I files and a low-level in-memory compression/decompression interface. Each of these areas will be discussed in the following sections. =head2 Notes for users of Compress::Zlib version 1 The main change in C version 2.x is that it does not now interface directly to the zlib library. Instead it uses the C and C modules for reading/writing gzip files, and the C module for some low-level zlib access. The interface provided by version 2 of this module should be 100% backward compatible with version 1. If you find a difference in the expected behaviour please contact the author (See L). See L With the creation of the C and C modules no new features are planned for C - the new modules do everything that C does and then some. Development on C will be limited to bug fixes only. If you are writing new code, your first port of call should be one of the new C or C modules. =head1 GZIP INTERFACE A number of functions are supplied in I for reading and writing I files that conform to RFC 1952. This module provides an interface to most of them. If you have previously used C 1.x, the following enhancements/changes have been made to the C interface: =over 5 =item 1 If you want to open either STDIN or STDOUT with C, you can now optionally use the special filename "C<->" as a synonym for C<\*STDIN> and C<\*STDOUT>. =item 2 In C version 1.x, C used the zlib library to open the underlying file. This made things especially tricky when a Perl filehandle was passed to C. Behind the scenes the numeric C file descriptor had to be extracted from the Perl filehandle and this passed to the zlib library. Apart from being non-portable to some operating systems, this made it difficult to use C in situations where you wanted to extract/create a gzip data stream that is embedded in a larger file, without having to resort to opening and closing the file multiple times. It also made it impossible to pass a perl filehandle that wasn't associated with a real filesystem file, like, say, an C. In C version 2.x, the C interface has been completely rewritten to use the L for writing gzip files and L for reading gzip files. None of the limitations mentioned above apply. =item 3 Addition of C to provide a restricted C interface. =item 4. Added C. =back A more complete and flexible interface for reading/writing gzip files/buffers is included with the module C. See L and L for more details. =over 5 =item B<$gz = gzopen($filename, $mode)> =item B<$gz = gzopen($filehandle, $mode)> This function opens either the I file C<$filename> for reading or writing or attaches to the opened filehandle, C<$filehandle>. It returns an object on success and C on failure. When writing a gzip file this interface will I create the smallest possible gzip header (exactly 10 bytes). If you want greater control over what gets stored in the gzip header (like the original filename or a comment) use L instead. Similarly if you want to read the contents of the gzip header use L. The second parameter, C<$mode>, is used to specify whether the file is opened for reading or writing and to optionally specify a compression level and compression strategy when writing. The format of the C<$mode> parameter is similar to the mode parameter to the 'C' function C, so "rb" is used to open for reading, "wb" for writing and "ab" for appending (writing at the end of the file). To specify a compression level when writing, append a digit between 0 and 9 to the mode string -- 0 means no compression and 9 means maximum compression. If no compression level is specified Z_DEFAULT_COMPRESSION is used. To specify the compression strategy when writing, append 'f' for filtered data, 'h' for Huffman only compression, or 'R' for run-length encoding. If no strategy is specified Z_DEFAULT_STRATEGY is used. So, for example, "wb9" means open for writing with the maximum compression using the default strategy and "wb4R" means open for writing with compression level 4 and run-length encoding. Refer to the I documentation for the exact format of the C<$mode> parameter. =item B<$bytesread = $gz-Egzread($buffer [, $size]) ;> Reads C<$size> bytes from the compressed file into C<$buffer>. If C<$size> is not specified, it will default to 4096. If the scalar C<$buffer> is not large enough, it will be extended automatically. Returns the number of bytes actually read. On EOF it returns 0 and in the case of an error, -1. =item B<$bytesread = $gz-Egzreadline($line) ;> Reads the next line from the compressed file into C<$line>. Returns the number of bytes actually read. On EOF it returns 0 and in the case of an error, -1. It is legal to intermix calls to C and C. To maintain backward compatibility with version 1.x of this module C ignores the C<$/> variable - it I uses the string C<"\n"> as the line delimiter. If you want to read a gzip file a line at a time and have it respect the C<$/> variable (or C<$INPUT_RECORD_SEPARATOR>, or C<$RS> when C is in use) see L. =item B<$byteswritten = $gz-Egzwrite($buffer) ;> Writes the contents of C<$buffer> to the compressed file. Returns the number of bytes actually written, or 0 on error. =item B<$status = $gz-Egzflush($flush_type) ;> Flushes all pending output into the compressed file. This method takes an optional parameter, C<$flush_type>, that controls how the flushing will be carried out. By default the C<$flush_type> used is C. Other valid values for C<$flush_type> are C, C, C and C. It is strongly recommended that you only set the C parameter if you fully understand the implications of what it does - overuse of C can seriously degrade the level of compression achieved. See the C documentation for details. Returns 0 on success. =item B<$offset = $gz-Egztell() ;> Returns the uncompressed file offset. =item B<$status = $gz-Egzseek($offset, $whence) ;> Provides a sub-set of the C functionality, with the restriction that it is only legal to seek forward in the compressed file. It is a fatal error to attempt to seek backward. When opened for writing, empty parts of the file will have NULL (0x00) bytes written to them. The C<$whence> parameter should be one of SEEK_SET, SEEK_CUR or SEEK_END. Returns 1 on success, 0 on failure. =item B<$gz-Egzclose> Closes the compressed file. Any pending data is flushed to the file before it is closed. Returns 0 on success. =item B<$gz-Egzsetparams($level, $strategy> Change settings for the deflate stream C<$gz>. The list of the valid options is shown below. Options not specified will remain unchanged. Note: This method is only available if you are running zlib 1.0.6 or better. =over 5 =item B<$level> Defines the compression level. Valid values are 0 through 9, C, C, C, and C. =item B<$strategy> Defines the strategy used to tune the compression. The valid values are C, C and C. =back =item B<$gz-Egzerror> Returns the I error message or number for the last operation associated with C<$gz>. The return value will be the I error number when used in a numeric context and the I error message when used in a string context. The I error number constants, shown below, are available for use. Z_OK Z_STREAM_END Z_ERRNO Z_STREAM_ERROR Z_DATA_ERROR Z_MEM_ERROR Z_BUF_ERROR =item B<$gzerrno> The C<$gzerrno> scalar holds the error code associated with the most recent I routine. Note that unlike C, the error is I associated with a particular file. As with C it returns an error number in numeric context and an error message in string context. Unlike C though, the error message will correspond to the I message when the error is associated with I itself, or the UNIX error message when it is not (i.e. I returned C). As there is an overlap between the error numbers used by I and UNIX, C<$gzerrno> should only be used to check for the presence of I error in numeric context. Use C to check for specific I errors. The I example below shows how the variable can be used safely. =back =head2 Examples Here is an example script which uses the interface. It implements a I function. use strict ; use warnings ; use Compress::Zlib ; # use stdin if no files supplied @ARGV = '-' unless @ARGV ; foreach my $file (@ARGV) { my $buffer ; my $gz = gzopen($file, "rb") or die "Cannot open $file: $gzerrno\n" ; print $buffer while $gz->gzread($buffer) > 0 ; die "Error reading from $file: $gzerrno" . ($gzerrno+0) . "\n" if $gzerrno != Z_STREAM_END ; $gz->gzclose() ; } Below is a script which makes use of C. It implements a very simple I like script. use strict ; use warnings ; use Compress::Zlib ; die "Usage: gzgrep pattern [file...]\n" unless @ARGV >= 1; my $pattern = shift ; # use stdin if no files supplied @ARGV = '-' unless @ARGV ; foreach my $file (@ARGV) { my $gz = gzopen($file, "rb") or die "Cannot open $file: $gzerrno\n" ; while ($gz->gzreadline($_) > 0) { print if /$pattern/ ; } die "Error reading from $file: $gzerrno\n" if $gzerrno != Z_STREAM_END ; $gz->gzclose() ; } This script, I, does the opposite of the I script above. It reads from standard input and writes a gzip data stream to standard output. use strict ; use warnings ; use Compress::Zlib ; binmode STDOUT; # gzopen only sets it on the fd my $gz = gzopen(\*STDOUT, "wb") or die "Cannot open stdout: $gzerrno\n" ; while (<>) { $gz->gzwrite($_) or die "error writing: $gzerrno\n" ; } $gz->gzclose ; =head2 Compress::Zlib::memGzip This function is used to create an in-memory gzip file with the minimum possible gzip header (exactly 10 bytes). $dest = Compress::Zlib::memGzip($buffer) or die "Cannot compress: $gzerrno\n"; If successful, it returns the in-memory gzip file. Otherwise it returns C and the C<$gzerrno> variable will store the zlib error code. The C<$buffer> parameter can either be a scalar or a scalar reference. See L for an alternative way to carry out in-memory gzip compression. =head2 Compress::Zlib::memGunzip This function is used to uncompress an in-memory gzip file. $dest = Compress::Zlib::memGunzip($buffer) or die "Cannot uncompress: $gzerrno\n"; If successful, it returns the uncompressed gzip file. Otherwise it returns C and the C<$gzerrno> variable will store the zlib error code. The C<$buffer> parameter can either be a scalar or a scalar reference. The contents of the C<$buffer> parameter are destroyed after calling this function. If C<$buffer> consists of multiple concatenated gzip data streams only the first will be uncompressed. Use C with the C option in the C module if you need to deal with concatenated data streams. See L for an alternative way to carry out in-memory gzip uncompression. =head1 COMPRESS/UNCOMPRESS Two functions are provided to perform in-memory compression/uncompression of RFC 1950 data streams. They are called C and C. =over 5 =item B<$dest = compress($source [, $level] ) ;> Compresses C<$source>. If successful it returns the compressed data. Otherwise it returns I. The source buffer, C<$source>, can either be a scalar or a scalar reference. The C<$level> parameter defines the compression level. Valid values are 0 through 9, C, C, C, and C. If C<$level> is not specified C will be used. =item B<$dest = uncompress($source) ;> Uncompresses C<$source>. If successful it returns the uncompressed data. Otherwise it returns I. The source buffer can either be a scalar or a scalar reference. =back Please note: the two functions defined above are I compatible with the Unix commands of the same name. See L and L included with this distribution for an alternative interface for reading/writing RFC 1950 files/buffers. =head1 Deflate Interface This section defines an interface that allows in-memory compression using the I interface provided by zlib. Here is a definition of the interface available: =head2 B<($d, $status) = deflateInit( [OPT] )> Initialises a deflation stream. It combines the features of the I functions C, C and C. If successful, it will return the initialised deflation stream, C<$d> and C<$status> of C in a list context. In scalar context it returns the deflation stream, C<$d>, only. If not successful, the returned deflation stream (C<$d>) will be I and C<$status> will hold the exact I error code. The function optionally takes a number of named options specified as C<< -Name=>value >> pairs. This allows individual options to be tailored without having to specify them all in the parameter list. For backward compatibility, it is also possible to pass the parameters as a reference to a hash containing the name=>value pairs. The function takes one optional parameter, a reference to a hash. The contents of the hash allow the deflation interface to be tailored. Here is a list of the valid options: =over 5 =item B<-Level> Defines the compression level. Valid values are 0 through 9, C, C, C, and C. The default is Z_DEFAULT_COMPRESSION. =item B<-Method> Defines the compression method. The only valid value at present (and the default) is Z_DEFLATED. =item B<-WindowBits> To create an RFC 1950 data stream, set C to a positive number. To create an RFC 1951 data stream, set C to C<-MAX_WBITS>. For a full definition of the meaning and valid values for C refer to the I documentation for I. Defaults to MAX_WBITS. =item B<-MemLevel> For a definition of the meaning and valid values for C refer to the I documentation for I. Defaults to MAX_MEM_LEVEL. =item B<-Strategy> Defines the strategy used to tune the compression. The valid values are C, C and C. The default is Z_DEFAULT_STRATEGY. =item B<-Dictionary> When a dictionary is specified I will automatically call C directly after calling C. The Adler32 value for the dictionary can be obtained by calling the method C<< $d->dict_adler() >>. The default is no dictionary. =item B<-Bufsize> Sets the initial size for the deflation buffer. If the buffer has to be reallocated to increase the size, it will grow in increments of C. The default is 4096. =back Here is an example of using the C optional parameter list to override the default buffer size and compression level. All other options will take their default values. deflateInit( -Bufsize => 300, -Level => Z_BEST_SPEED ) ; =head2 B<($out, $status) = $d-Edeflate($buffer)> Deflates the contents of C<$buffer>. The buffer can either be a scalar or a scalar reference. When finished, C<$buffer> will be completely processed (assuming there were no errors). If the deflation was successful it returns the deflated output, C<$out>, and a status value, C<$status>, of C. On error, C<$out> will be I and C<$status> will contain the I error code. In a scalar context C will return C<$out> only. As with the I function in I, it is not necessarily the case that any output will be produced by this method. So don't rely on the fact that C<$out> is empty for an error test. =head2 B<($out, $status) = $d-Eflush()> =head2 B<($out, $status) = $d-Eflush($flush_type)> Typically used to finish the deflation. Any pending output will be returned via C<$out>. C<$status> will have a value C if successful. In a scalar context C will return C<$out> only. Note that flushing can seriously degrade the compression ratio, so it should only be used to terminate a decompression (using C) or when you want to create a I (using C). By default the C used is C. Other valid values for C are C, C, C and C. It is strongly recommended that you only set the C parameter if you fully understand the implications of what it does. See the C documentation for details. =head2 B<$status = $d-EdeflateParams([OPT])> Change settings for the deflate stream C<$d>. The list of the valid options is shown below. Options not specified will remain unchanged. =over 5 =item B<-Level> Defines the compression level. Valid values are 0 through 9, C, C, C, and C. =item B<-Strategy> Defines the strategy used to tune the compression. The valid values are C, C and C. =back =head2 B<$d-Edict_adler()> Returns the adler32 value for the dictionary. =head2 B<$d-Emsg()> Returns the last error message generated by zlib. =head2 B<$d-Etotal_in()> Returns the total number of bytes uncompressed bytes input to deflate. =head2 B<$d-Etotal_out()> Returns the total number of compressed bytes output from deflate. =head2 Example Here is a trivial example of using C. It simply reads standard input, deflates it and writes it to standard output. use strict ; use warnings ; use Compress::Zlib ; binmode STDIN; binmode STDOUT; my $x = deflateInit() or die "Cannot create a deflation stream\n" ; my ($output, $status) ; while (<>) { ($output, $status) = $x->deflate($_) ; $status == Z_OK or die "deflation failed\n" ; print $output ; } ($output, $status) = $x->flush() ; $status == Z_OK or die "deflation failed\n" ; print $output ; =head1 Inflate Interface This section defines the interface available that allows in-memory uncompression using the I interface provided by zlib. Here is a definition of the interface: =head2 B<($i, $status) = inflateInit()> Initialises an inflation stream. In a list context it returns the inflation stream, C<$i>, and the I status code in C<$status>. In a scalar context it returns the inflation stream only. If successful, C<$i> will hold the inflation stream and C<$status> will be C. If not successful, C<$i> will be I and C<$status> will hold the I error code. The function optionally takes a number of named options specified as C<< -Name=>value >> pairs. This allows individual options to be tailored without having to specify them all in the parameter list. For backward compatibility, it is also possible to pass the parameters as a reference to a hash containing the name=>value pairs. The function takes one optional parameter, a reference to a hash. The contents of the hash allow the deflation interface to be tailored. Here is a list of the valid options: =over 5 =item B<-WindowBits> To uncompress an RFC 1950 data stream, set C to a positive number. To uncompress an RFC 1951 data stream, set C to C<-MAX_WBITS>. For a full definition of the meaning and valid values for C refer to the I documentation for I. Defaults to MAX_WBITS. =item B<-Bufsize> Sets the initial size for the inflation buffer. If the buffer has to be reallocated to increase the size, it will grow in increments of C. Default is 4096. =item B<-Dictionary> The default is no dictionary. =back Here is an example of using the C optional parameter to override the default buffer size. inflateInit( -Bufsize => 300 ) ; =head2 B<($out, $status) = $i-Einflate($buffer)> Inflates the complete contents of C<$buffer>. The buffer can either be a scalar or a scalar reference. Returns C if successful and C if the end of the compressed data has been successfully reached. If not successful, C<$out> will be I and C<$status> will hold the I error code. The C<$buffer> parameter is modified by C. On completion it will contain what remains of the input buffer after inflation. This means that C<$buffer> will be an empty string when the return status is C. When the return status is C the C<$buffer> parameter will contains what (if anything) was stored in the input buffer after the deflated data stream. This feature is useful when processing a file format that encapsulates a compressed data stream (e.g. gzip, zip). =head2 B<$status = $i-EinflateSync($buffer)> Scans C<$buffer> until it reaches either a I or the end of the buffer. If a I is found, C is returned and C<$buffer> will be have all data up to the flush point removed. This can then be passed to the C method. Any other return code means that a flush point was not found. If more data is available, C can be called repeatedly with more compressed data until the flush point is found. =head2 B<$i-Edict_adler()> Returns the adler32 value for the dictionary. =head2 B<$i-Emsg()> Returns the last error message generated by zlib. =head2 B<$i-Etotal_in()> Returns the total number of bytes compressed bytes input to inflate. =head2 B<$i-Etotal_out()> Returns the total number of uncompressed bytes output from inflate. =head2 Example Here is an example of using C. use strict ; use warnings ; use Compress::Zlib ; my $x = inflateInit() or die "Cannot create a inflation stream\n" ; my $input = '' ; binmode STDIN; binmode STDOUT; my ($output, $status) ; while (read(STDIN, $input, 4096)) { ($output, $status) = $x->inflate(\$input) ; print $output if $status == Z_OK or $status == Z_STREAM_END ; last if $status != Z_OK ; } die "inflation failed\n" unless $status == Z_STREAM_END ; =head1 CHECKSUM FUNCTIONS Two functions are provided by I to calculate checksums. For the Perl interface, the order of the two parameters in both functions has been reversed. This allows both running checksums and one off calculations to be done. $crc = adler32($buffer [,$crc]) ; $crc = crc32($buffer [,$crc]) ; The buffer parameters can either be a scalar or a scalar reference. If the $crc parameters is C, the crc value will be reset. If you have built this module with zlib 1.2.3 or better, two more CRC-related functions are available. $crc = crc32_combine($crc1, $crc2, $len2); $adler = adler32_combine($adler1, $adler2, $len2); These functions allow checksums to be merged. Refer to the I documentation for more details. =head1 Misc =head2 my $version = Compress::Zlib::zlib_version(); Returns the version of the zlib library. =head1 CONSTANTS All the I constants are automatically imported when you make use of I. =head1 SUPPORT General feedback/questions/bug reports should be sent to L (preferred) or L. =head1 SEE ALSO L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L L L, L, L, L For RFC 1950, 1951 and 1952 see L, L and L The I compression library was written by Jean-loup Gailly C and Mark Adler C. The primary site for the I compression library is L. The primary site for the I compression library is L. The primary site for gzip is L. =head1 AUTHOR This module was written by Paul Marquess, C. =head1 MODIFICATION HISTORY See the Changes file. =head1 COPYRIGHT AND LICENSE Copyright (c) 1995-2024 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. FILE57006cdb/Carp/Heavy.pmpackage Carp::Heavy; use Carp (); our $VERSION = '1.54'; $VERSION =~ tr/_//d; # Carp::Heavy was merged into Carp in version 1.12. Any mismatched versions # after this point are not significant and can be ignored. if(($Carp::VERSION || 0) < 1.12) { my $cv = defined($Carp::VERSION) ? $Carp::VERSION : "undef"; die "Version mismatch between Carp $cv ($INC{q(Carp.pm)}) and Carp::Heavy $VERSION ($INC{q(Carp/Heavy.pm)}). Did you alter \@INC after Carp was loaded?\n"; } 1; # Most of the machinery of Carp used to be here. # It has been moved in Carp.pm now, but this placeholder remains for # the benefit of modules that like to preload Carp::Heavy directly. # This must load Carp, because some modules rely on the historical # behaviour of Carp::Heavy loading Carp. FILEb956cb79/Digest/base.pmpackage Digest::base; use strict; use warnings; our $VERSION = "1.20"; # subclass is supposed to implement at least these sub new; sub clone; sub add; sub digest; sub reset { my $self = shift; $self->new(@_); # ugly } sub addfile { my ( $self, $handle ) = @_; my $n; my $buf = ""; while ( ( $n = read( $handle, $buf, 4 * 1024 ) ) ) { $self->add($buf); } unless ( defined $n ) { require Carp; Carp::croak("Read failed: $!"); } $self; } sub add_bits { my $self = shift; my $bits; my $nbits; if ( @_ == 1 ) { my $arg = shift; $bits = pack( "B*", $arg ); $nbits = length($arg); } else { ( $bits, $nbits ) = @_; } if ( ( $nbits % 8 ) != 0 ) { require Carp; Carp::croak("Number of bits must be multiple of 8 for this algorithm"); } return $self->add( substr( $bits, 0, $nbits / 8 ) ); } sub hexdigest { my $self = shift; return unpack( "H*", $self->digest(@_) ); } sub b64digest { my $self = shift; my $b64 = $self->base64_padded_digest; $b64 =~ s/=+$//; return $b64; } sub base64_padded_digest { my $self = shift; require MIME::Base64; return MIME::Base64::encode( $self->digest(@_), "" ); } 1; __END__ =head1 NAME Digest::base - Digest base class =head1 SYNOPSIS package Digest::Foo; use base 'Digest::base'; =head1 DESCRIPTION The C class provide implementations of the methods C and C in terms of C, and of the methods C and C in terms of C. Digest implementations might want to inherit from this class to get this implementations of the alternative I and I methods. A minimal subclass needs to implement the following methods by itself: new clone add digest The arguments and expected behaviour of these methods are described in L. =head1 SEE ALSO L FILE8902686e/File/Path.pmpackage File::Path; use 5.005_04; use strict; use Cwd 'getcwd'; use File::Basename (); use File::Spec (); BEGIN { if ( $] < 5.006 ) { # can't say 'opendir my $dh, $dirname' # need to initialise $dh eval 'use Symbol'; } } use Exporter (); use vars qw($VERSION @ISA @EXPORT @EXPORT_OK); $VERSION = '2.18'; $VERSION = eval $VERSION; @ISA = qw(Exporter); @EXPORT = qw(mkpath rmtree); @EXPORT_OK = qw(make_path remove_tree); BEGIN { for (qw(VMS MacOS MSWin32 os2)) { no strict 'refs'; *{"_IS_\U$_"} = $^O eq $_ ? sub () { 1 } : sub () { 0 }; } # These OSes complain if you want to remove a file that you have no # write permission to: *_FORCE_WRITABLE = ( grep { $^O eq $_ } qw(amigaos dos epoc MSWin32 MacOS os2) ) ? sub () { 1 } : sub () { 0 }; # Unix-like systems need to stat each directory in order to detect # race condition. MS-Windows is immune to this particular attack. *_NEED_STAT_CHECK = !(_IS_MSWIN32()) ? sub () { 1 } : sub () { 0 }; } sub _carp { require Carp; goto &Carp::carp; } sub _croak { require Carp; goto &Carp::croak; } sub _error { my $arg = shift; my $message = shift; my $object = shift; if ( $arg->{error} ) { $object = '' unless defined $object; $message .= ": $!" if $!; push @{ ${ $arg->{error} } }, { $object => $message }; } else { _carp( defined($object) ? "$message for $object: $!" : "$message: $!" ); } } sub __is_arg { my ($arg) = @_; # If client code blessed an array ref to HASH, this will not work # properly. We could have done $arg->isa() wrapped in eval, but # that would be expensive. This implementation should suffice. # We could have also used Scalar::Util:blessed, but we choose not # to add this dependency return ( ref $arg eq 'HASH' ); } sub make_path { push @_, {} unless @_ and __is_arg( $_[-1] ); goto &mkpath; } sub mkpath { my $old_style = !( @_ and __is_arg( $_[-1] ) ); my $data; my $paths; if ($old_style) { my ( $verbose, $mode ); ( $paths, $verbose, $mode ) = @_; $paths = [$paths] unless UNIVERSAL::isa( $paths, 'ARRAY' ); $data->{verbose} = $verbose; $data->{mode} = defined $mode ? $mode : oct '777'; } else { my %args_permitted = map { $_ => 1 } ( qw| chmod error group mask mode owner uid user verbose | ); my %not_on_win32_args = map { $_ => 1 } ( qw| group owner uid user | ); my @bad_args = (); my @win32_implausible_args = (); my $arg = pop @_; for my $k (sort keys %{$arg}) { if (! $args_permitted{$k}) { push @bad_args, $k; } elsif ($not_on_win32_args{$k} and _IS_MSWIN32) { push @win32_implausible_args, $k; } else { $data->{$k} = $arg->{$k}; } } _carp("Unrecognized option(s) passed to mkpath() or make_path(): @bad_args") if @bad_args; _carp("Option(s) implausible on Win32 passed to mkpath() or make_path(): @win32_implausible_args") if @win32_implausible_args; $data->{mode} = delete $data->{mask} if exists $data->{mask}; $data->{mode} = oct '777' unless exists $data->{mode}; ${ $data->{error} } = [] if exists $data->{error}; unless (@win32_implausible_args) { $data->{owner} = delete $data->{user} if exists $data->{user}; $data->{owner} = delete $data->{uid} if exists $data->{uid}; if ( exists $data->{owner} and $data->{owner} =~ /\D/ ) { my $uid = ( getpwnam $data->{owner} )[2]; if ( defined $uid ) { $data->{owner} = $uid; } else { _error( $data, "unable to map $data->{owner} to a uid, ownership not changed" ); delete $data->{owner}; } } if ( exists $data->{group} and $data->{group} =~ /\D/ ) { my $gid = ( getgrnam $data->{group} )[2]; if ( defined $gid ) { $data->{group} = $gid; } else { _error( $data, "unable to map $data->{group} to a gid, group ownership not changed" ); delete $data->{group}; } } if ( exists $data->{owner} and not exists $data->{group} ) { $data->{group} = -1; # chown will leave group unchanged } if ( exists $data->{group} and not exists $data->{owner} ) { $data->{owner} = -1; # chown will leave owner unchanged } } $paths = [@_]; } return _mkpath( $data, $paths ); } sub _mkpath { my $data = shift; my $paths = shift; my ( @created ); foreach my $path ( @{$paths} ) { next unless defined($path) and length($path); $path .= '/' if _IS_OS2 and $path =~ /^\w:\z/s; # feature of CRT # Logic wants Unix paths, so go with the flow. if (_IS_VMS) { next if $path eq '/'; $path = VMS::Filespec::unixify($path); } next if -d $path; my $parent = File::Basename::dirname($path); # Coverage note: It's not clear how we would test the condition: # '-d $parent or $path eq $parent' unless ( -d $parent or $path eq $parent ) { push( @created, _mkpath( $data, [$parent] ) ); } print "mkdir $path\n" if $data->{verbose}; if ( mkdir( $path, $data->{mode} ) ) { push( @created, $path ); if ( exists $data->{owner} ) { # NB: $data->{group} guaranteed to be set during initialisation if ( !chown $data->{owner}, $data->{group}, $path ) { _error( $data, "Cannot change ownership of $path to $data->{owner}:$data->{group}" ); } } if ( exists $data->{chmod} ) { # Coverage note: It's not clear how we would trigger the next # 'if' block. Failure of 'chmod' might first result in a # system error: "Permission denied". if ( !chmod $data->{chmod}, $path ) { _error( $data, "Cannot change permissions of $path to $data->{chmod}" ); } } } else { my $save_bang = $!; # From 'perldoc perlvar': $EXTENDED_OS_ERROR ($^E) is documented # as: # Error information specific to the current operating system. At the # moment, this differs from "$!" under only VMS, OS/2, and Win32 # (and for MacPerl). On all other platforms, $^E is always just the # same as $!. my ( $e, $e1 ) = ( $save_bang, $^E ); $e .= "; $e1" if $e ne $e1; # allow for another process to have created it meanwhile if ( ! -d $path ) { $! = $save_bang; if ( $data->{error} ) { push @{ ${ $data->{error} } }, { $path => $e }; } else { _croak("mkdir $path: $e"); } } } } return @created; } sub remove_tree { push @_, {} unless @_ and __is_arg( $_[-1] ); goto &rmtree; } sub _is_subdir { my ( $dir, $test ) = @_; my ( $dv, $dd ) = File::Spec->splitpath( $dir, 1 ); my ( $tv, $td ) = File::Spec->splitpath( $test, 1 ); # not on same volume return 0 if $dv ne $tv; my @d = File::Spec->splitdir($dd); my @t = File::Spec->splitdir($td); # @t can't be a subdir if it's shorter than @d return 0 if @t < @d; return join( '/', @d ) eq join( '/', splice @t, 0, +@d ); } sub rmtree { my $old_style = !( @_ and __is_arg( $_[-1] ) ); my ($arg, $data, $paths); if ($old_style) { my ( $verbose, $safe ); ( $paths, $verbose, $safe ) = @_; $data->{verbose} = $verbose; $data->{safe} = defined $safe ? $safe : 0; if ( defined($paths) and length($paths) ) { $paths = [$paths] unless UNIVERSAL::isa( $paths, 'ARRAY' ); } else { _carp("No root path(s) specified\n"); return 0; } } else { my %args_permitted = map { $_ => 1 } ( qw| error keep_root result safe verbose | ); my @bad_args = (); my $arg = pop @_; for my $k (sort keys %{$arg}) { if (! $args_permitted{$k}) { push @bad_args, $k; } else { $data->{$k} = $arg->{$k}; } } _carp("Unrecognized option(s) passed to remove_tree(): @bad_args") if @bad_args; ${ $data->{error} } = [] if exists $data->{error}; ${ $data->{result} } = [] if exists $data->{result}; # Wouldn't it make sense to do some validation on @_ before assigning # to $paths here? # In the $old_style case we guarantee that each path is both defined # and non-empty. We don't check that here, which means we have to # check it later in the first condition in this line: # if ( $ortho_root_length && _is_subdir( $ortho_root, $ortho_cwd ) ) { # Granted, that would be a change in behavior for the two # non-old-style interfaces. $paths = [@_]; } $data->{prefix} = ''; $data->{depth} = 0; my @clean_path; $data->{cwd} = getcwd() or do { _error( $data, "cannot fetch initial working directory" ); return 0; }; for ( $data->{cwd} ) { /\A(.*)\Z/s; $_ = $1 } # untaint for my $p (@$paths) { # need to fixup case and map \ to / on Windows my $ortho_root = _IS_MSWIN32 ? _slash_lc($p) : $p; my $ortho_cwd = _IS_MSWIN32 ? _slash_lc( $data->{cwd} ) : $data->{cwd}; my $ortho_root_length = length($ortho_root); $ortho_root_length-- if _IS_VMS; # don't compare '.' with ']' if ( $ortho_root_length && _is_subdir( $ortho_root, $ortho_cwd ) ) { local $! = 0; _error( $data, "cannot remove path when cwd is $data->{cwd}", $p ); next; } if (_IS_MACOS) { $p = ":$p" unless $p =~ /:/; $p .= ":" unless $p =~ /:\z/; } elsif ( _IS_MSWIN32 ) { $p =~ s{[/\\]\z}{}; } else { $p =~ s{/\z}{}; } push @clean_path, $p; } @{$data}{qw(device inode)} = ( lstat $data->{cwd} )[ 0, 1 ] or do { _error( $data, "cannot stat initial working directory", $data->{cwd} ); return 0; }; return _rmtree( $data, \@clean_path ); } sub _rmtree { my $data = shift; my $paths = shift; my $count = 0; my $curdir = File::Spec->curdir(); my $updir = File::Spec->updir(); my ( @files, $root ); ROOT_DIR: foreach my $root (@$paths) { # since we chdir into each directory, it may not be obvious # to figure out where we are if we generate a message about # a file name. We therefore construct a semi-canonical # filename, anchored from the directory being unlinked (as # opposed to being truly canonical, anchored from the root (/). my $canon = $data->{prefix} ? File::Spec->catfile( $data->{prefix}, $root ) : $root; my ( $ldev, $lino, $perm ) = ( lstat $root )[ 0, 1, 2 ] or next ROOT_DIR; if ( -d _ ) { $root = VMS::Filespec::vmspath( VMS::Filespec::pathify($root) ) if _IS_VMS; if ( !chdir($root) ) { # see if we can escalate privileges to get in # (e.g. funny protection mask such as -w- instead of rwx) # This uses fchmod to avoid traversing outside of the proper # location (CVE-2017-6512) my $root_fh; if (open($root_fh, '<', $root)) { my ($fh_dev, $fh_inode) = (stat $root_fh )[0,1]; $perm &= oct '7777'; my $nperm = $perm | oct '700'; local $@; if ( !( $data->{safe} or $nperm == $perm or !-d _ or $fh_dev ne $ldev or $fh_inode ne $lino or eval { chmod( $nperm, $root_fh ) } ) ) { _error( $data, "cannot make child directory read-write-exec", $canon ); next ROOT_DIR; } close $root_fh; } if ( !chdir($root) ) { _error( $data, "cannot chdir to child", $canon ); next ROOT_DIR; } } my ( $cur_dev, $cur_inode, $perm ) = ( stat $curdir )[ 0, 1, 2 ] or do { _error( $data, "cannot stat current working directory", $canon ); next ROOT_DIR; }; if (_NEED_STAT_CHECK) { ( $ldev eq $cur_dev and $lino eq $cur_inode ) or _croak( "directory $canon changed before chdir, expected dev=$ldev ino=$lino, actual dev=$cur_dev ino=$cur_inode, aborting." ); } $perm &= oct '7777'; # don't forget setuid, setgid, sticky bits my $nperm = $perm | oct '700'; # notabene: 0700 is for making readable in the first place, # it's also intended to change it to writable in case we have # to recurse in which case we are better than rm -rf for # subtrees with strange permissions if ( !( $data->{safe} or $nperm == $perm or chmod( $nperm, $curdir ) ) ) { _error( $data, "cannot make directory read+writeable", $canon ); $nperm = $perm; } my $d; $d = gensym() if $] < 5.006; if ( !opendir $d, $curdir ) { _error( $data, "cannot opendir", $canon ); @files = (); } else { if ( !defined ${^TAINT} or ${^TAINT} ) { # Blindly untaint dir names if taint mode is active @files = map { /\A(.*)\z/s; $1 } readdir $d; } else { @files = readdir $d; } closedir $d; } if (_IS_VMS) { # Deleting large numbers of files from VMS Files-11 # filesystems is faster if done in reverse ASCIIbetical order. # include '.' to '.;' from blead patch #31775 @files = map { $_ eq '.' ? '.;' : $_ } reverse @files; } @files = grep { $_ ne $updir and $_ ne $curdir } @files; if (@files) { # remove the contained files before the directory itself my $narg = {%$data}; @{$narg}{qw(device inode cwd prefix depth)} = ( $cur_dev, $cur_inode, $updir, $canon, $data->{depth} + 1 ); $count += _rmtree( $narg, \@files ); } # restore directory permissions of required now (in case the rmdir # below fails), while we are still in the directory and may do so # without a race via '.' if ( $nperm != $perm and not chmod( $perm, $curdir ) ) { _error( $data, "cannot reset chmod", $canon ); } # don't leave the client code in an unexpected directory chdir( $data->{cwd} ) or _croak("cannot chdir to $data->{cwd} from $canon: $!, aborting."); # ensure that a chdir upwards didn't take us somewhere other # than we expected (see CVE-2002-0435) ( $cur_dev, $cur_inode ) = ( stat $curdir )[ 0, 1 ] or _croak( "cannot stat prior working directory $data->{cwd}: $!, aborting." ); if (_NEED_STAT_CHECK) { ( $data->{device} eq $cur_dev and $data->{inode} eq $cur_inode ) or _croak( "previous directory $data->{cwd} " . "changed before entering $canon, " . "expected dev=$ldev ino=$lino, " . "actual dev=$cur_dev ino=$cur_inode, aborting." ); } if ( $data->{depth} or !$data->{keep_root} ) { if ( $data->{safe} && ( _IS_VMS ? !&VMS::Filespec::candelete($root) : !-w $root ) ) { print "skipped $root\n" if $data->{verbose}; next ROOT_DIR; } if ( _FORCE_WRITABLE and !chmod $perm | oct '700', $root ) { _error( $data, "cannot make directory writeable", $canon ); } print "rmdir $root\n" if $data->{verbose}; if ( rmdir $root ) { push @{ ${ $data->{result} } }, $root if $data->{result}; ++$count; } else { _error( $data, "cannot remove directory", $canon ); if ( _FORCE_WRITABLE && !chmod( $perm, ( _IS_VMS ? VMS::Filespec::fileify($root) : $root ) ) ) { _error( $data, sprintf( "cannot restore permissions to 0%o", $perm ), $canon ); } } } } else { # not a directory $root = VMS::Filespec::vmsify("./$root") if _IS_VMS && !File::Spec->file_name_is_absolute($root) && ( $root !~ m/(?]+/ ); # not already in VMS syntax if ( $data->{safe} && ( _IS_VMS ? !&VMS::Filespec::candelete($root) : !( -l $root || -w $root ) ) ) { print "skipped $root\n" if $data->{verbose}; next ROOT_DIR; } my $nperm = $perm & oct '7777' | oct '600'; if ( _FORCE_WRITABLE and $nperm != $perm and not chmod $nperm, $root ) { _error( $data, "cannot make file writeable", $canon ); } print "unlink $canon\n" if $data->{verbose}; # delete all versions under VMS for ( ; ; ) { if ( unlink $root ) { push @{ ${ $data->{result} } }, $root if $data->{result}; } else { _error( $data, "cannot unlink file", $canon ); _FORCE_WRITABLE and chmod( $perm, $root ) or _error( $data, sprintf( "cannot restore permissions to 0%o", $perm ), $canon ); last; } ++$count; last unless _IS_VMS && lstat $root; } } } return $count; } sub _slash_lc { # fix up slashes and case on MSWin32 so that we can determine that # c:\path\to\dir is underneath C:/Path/To my $path = shift; $path =~ tr{\\}{/}; return lc($path); } 1; __END__ =head1 NAME File::Path - Create or remove directory trees =head1 VERSION 2.18 - released November 4 2020. =head1 SYNOPSIS use File::Path qw(make_path remove_tree); @created = make_path('foo/bar/baz', '/zug/zwang'); @created = make_path('foo/bar/baz', '/zug/zwang', { verbose => 1, mode => 0711, }); make_path('foo/bar/baz', '/zug/zwang', { chmod => 0777, }); $removed_count = remove_tree('foo/bar/baz', '/zug/zwang', { verbose => 1, error => \my $err_list, safe => 1, }); # legacy (interface promoted before v2.00) @created = mkpath('/foo/bar/baz'); @created = mkpath('/foo/bar/baz', 1, 0711); @created = mkpath(['/foo/bar/baz', 'blurfl/quux'], 1, 0711); $removed_count = rmtree('foo/bar/baz', 1, 1); $removed_count = rmtree(['foo/bar/baz', 'blurfl/quux'], 1, 1); # legacy (interface promoted before v2.06) @created = mkpath('foo/bar/baz', '/zug/zwang', { verbose => 1, mode => 0711 }); $removed_count = rmtree('foo/bar/baz', '/zug/zwang', { verbose => 1, mode => 0711 }); =head1 DESCRIPTION This module provides a convenient way to create directories of arbitrary depth and to delete an entire directory subtree from the filesystem. The following functions are provided: =over =item make_path( $dir1, $dir2, .... ) =item make_path( $dir1, $dir2, ...., \%opts ) The C function creates the given directories if they don't exist before, much like the Unix command C. The function accepts a list of directories to be created. Its behaviour may be tuned by an optional hashref appearing as the last parameter on the call. The function returns the list of directories actually created during the call; in scalar context the number of directories created. The following keys are recognised in the option hash: =over =item mode => $num The numeric permissions mode to apply to each created directory (defaults to C<0777>), to be modified by the current C. If the directory already exists (and thus does not need to be created), the permissions will not be modified. C is recognised as an alias for this parameter. =item chmod => $num Takes a numeric mode to apply to each created directory (not modified by the current C). If the directory already exists (and thus does not need to be created), the permissions will not be modified. =item verbose => $bool If present, will cause C to print the name of each directory as it is created. By default nothing is printed. =item error => \$err If present, it should be a reference to a scalar. This scalar will be made to reference an array, which will be used to store any errors that are encountered. See the L section for more information. If this parameter is not used, certain error conditions may raise a fatal error that will cause the program to halt, unless trapped in an C block. =item owner => $owner =item user => $owner =item uid => $owner If present, will cause any created directory to be owned by C<$owner>. If the value is numeric, it will be interpreted as a uid; otherwise a username is assumed. An error will be issued if the username cannot be mapped to a uid, the uid does not exist or the process lacks the privileges to change ownership. Ownership of directories that already exist will not be changed. C and C are aliases of C. =item group => $group If present, will cause any created directory to be owned by the group C<$group>. If the value is numeric, it will be interpreted as a gid; otherwise a group name is assumed. An error will be issued if the group name cannot be mapped to a gid, the gid does not exist or the process lacks the privileges to change group ownership. Group ownership of directories that already exist will not be changed. make_path '/var/tmp/webcache', {owner=>'nobody', group=>'nogroup'}; =back =item mkpath( $dir ) =item mkpath( $dir, $verbose, $mode ) =item mkpath( [$dir1, $dir2,...], $verbose, $mode ) =item mkpath( $dir1, $dir2,..., \%opt ) The C function provide the legacy interface of C with a different interpretation of the arguments passed. The behaviour and return value of the function is otherwise identical to C. =item remove_tree( $dir1, $dir2, .... ) =item remove_tree( $dir1, $dir2, ...., \%opts ) The C function deletes the given directories and any files and subdirectories they might contain, much like the Unix command C or the Windows commands C and C. The function accepts a list of directories to be removed. (In point of fact, it will also accept filesystem entries which are not directories, such as regular files and symlinks. But, as its name suggests, its intent is to remove trees rather than individual files.) C's behaviour may be tuned by an optional hashref appearing as the last parameter on the call. If an empty string is passed to C, an error will occur. B For security reasons, we strongly advise use of the hashref-as-final-argument syntax -- specifically, with a setting of the C element to a true value. remove_tree( $dir1, $dir2, ...., { safe => 1, ... # other key-value pairs }, ); The function returns the number of files successfully deleted. The following keys are recognised in the option hash: =over =item verbose => $bool If present, will cause C to print the name of each file as it is unlinked. By default nothing is printed. =item safe => $bool When set to a true value, will cause C to skip the files for which the process lacks the required privileges needed to delete files, such as delete privileges on VMS. In other words, the code will make no attempt to alter file permissions. Thus, if the process is interrupted, no filesystem object will be left in a more permissive mode. =item keep_root => $bool When set to a true value, will cause all files and subdirectories to be removed, except the initially specified directories. This comes in handy when cleaning out an application's scratch directory. remove_tree( '/tmp', {keep_root => 1} ); =item result => \$res If present, it should be a reference to a scalar. This scalar will be made to reference an array, which will be used to store all files and directories unlinked during the call. If nothing is unlinked, the array will be empty. remove_tree( '/tmp', {result => \my $list} ); print "unlinked $_\n" for @$list; This is a useful alternative to the C key. =item error => \$err If present, it should be a reference to a scalar. This scalar will be made to reference an array, which will be used to store any errors that are encountered. See the L section for more information. Removing things is a much more dangerous proposition than creating things. As such, there are certain conditions that C may encounter that are so dangerous that the only sane action left is to kill the program. Use C to trap all that is reasonable (problems with permissions and the like), and let it die if things get out of hand. This is the safest course of action. =back =item rmtree( $dir ) =item rmtree( $dir, $verbose, $safe ) =item rmtree( [$dir1, $dir2,...], $verbose, $safe ) =item rmtree( $dir1, $dir2,..., \%opt ) The C function provide the legacy interface of C with a different interpretation of the arguments passed. The behaviour and return value of the function is otherwise identical to C. B For security reasons, we strongly advise use of the hashref-as-final-argument syntax, specifically with a setting of the C element to a true value. rmtree( $dir1, $dir2, ...., { safe => 1, ... # other key-value pairs }, ); =back =head2 ERROR HANDLING =over 4 =item B The following error handling mechanism is consistent throughout all code paths EXCEPT in cases where the ROOT node is nonexistent. In version 2.11 the maintainers attempted to rectify this inconsistency but too many downstream modules encountered problems. In such case, if you require root node evaluation or error checking prior to calling C or C, you should take additional precautions. =back If C or C encounters an error, a diagnostic message will be printed to C via C (for non-fatal errors) or via C (for fatal errors). If this behaviour is not desirable, the C attribute may be used to hold a reference to a variable, which will be used to store the diagnostics. The variable is made a reference to an array of hash references. Each hash contain a single key/value pair where the key is the name of the file, and the value is the error message (including the contents of C<$!> when appropriate). If a general error is encountered the diagnostic key will be empty. An example usage looks like: remove_tree( 'foo/bar', 'bar/rat', {error => \my $err} ); if ($err && @$err) { for my $diag (@$err) { my ($file, $message) = %$diag; if ($file eq '') { print "general error: $message\n"; } else { print "problem unlinking $file: $message\n"; } } } else { print "No error encountered\n"; } Note that if no errors are encountered, C<$err> will reference an empty array. This means that C<$err> will always end up TRUE; so you need to test C<@$err> to determine if errors occurred. =head2 NOTES C blindly exports C and C into the current namespace. These days, this is considered bad style, but to change it now would break too much code. Nonetheless, you are invited to specify what it is you are expecting to use: use File::Path 'rmtree'; The routines C and C are B exported by default. You must specify which ones you want to use. use File::Path 'remove_tree'; Note that a side-effect of the above is that C and C are no longer exported at all. This is due to the way the C module works. If you are migrating a codebase to use the new interface, you will have to list everything explicitly. But that's just good practice anyway. use File::Path qw(remove_tree rmtree); =head3 API CHANGES The API was changed in the 2.0 branch. For a time, C and C tried, unsuccessfully, to deal with the two different calling mechanisms. This approach was considered a failure. The new semantics are now only available with C and C. The old semantics are only available through C and C. Users are strongly encouraged to upgrade to at least 2.08 in order to avoid surprises. =head3 SECURITY CONSIDERATIONS There were race conditions in the 1.x implementations of File::Path's C function (although sometimes patched depending on the OS distribution or platform). The 2.0 version contains code to avoid the problem mentioned in CVE-2002-0435. See the following pages for more information: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286905 http://www.nntp.perl.org/group/perl.perl5.porters/2005/01/msg97623.html http://www.debian.org/security/2005/dsa-696 Additionally, unless the C parameter is set (or the third parameter in the traditional interface is TRUE), should a C be interrupted, files that were originally in read-only mode may now have their permissions set to a read-write (or "delete OK") mode. The following CVE reports were previously filed against File-Path and are believed to have been addressed: =over 4 =item * L =item * L =back In February 2017 the cPanel Security Team reported an additional vulnerability in File-Path. The C logic to make directories traversable can be abused to set the mode on an attacker-chosen file to an attacker-chosen value. This is due to the time-of-check-to-time-of-use (TOCTTOU) race condition (L) between the C that decides the inode is a directory and the C that tries to make it user-rwx. CPAN versions 2.13 and later incorporate a patch provided by John Lightsey to address this problem. This vulnerability has been reported as CVE-2017-6512. =head1 DIAGNOSTICS FATAL errors will cause the program to halt (C), since the problem is so severe that it would be dangerous to continue. (This can always be trapped with C, but it's not a good idea. Under the circumstances, dying is the best thing to do). SEVERE errors may be trapped using the modern interface. If the they are not trapped, or if the old interface is used, such an error will cause the program will halt. All other errors may be trapped using the modern interface, otherwise they will be Ced about. Program execution will not be halted. =over 4 =item mkdir [path]: [errmsg] (SEVERE) C was unable to create the path. Probably some sort of permissions error at the point of departure or insufficient resources (such as free inodes on Unix). =item No root path(s) specified C was not given any paths to create. This message is only emitted if the routine is called with the traditional interface. The modern interface will remain silent if given nothing to do. =item No such file or directory On Windows, if C gives you this warning, it may mean that you have exceeded your filesystem's maximum path length. =item cannot fetch initial working directory: [errmsg] C attempted to determine the initial directory by calling C, but the call failed for some reason. No attempt will be made to delete anything. =item cannot stat initial working directory: [errmsg] C attempted to stat the initial directory (after having successfully obtained its name via C), however, the call failed for some reason. No attempt will be made to delete anything. =item cannot chdir to [dir]: [errmsg] C attempted to set the working directory in order to begin deleting the objects therein, but was unsuccessful. This is usually a permissions issue. The routine will continue to delete other things, but this directory will be left intact. =item directory [dir] changed before chdir, expected dev=[n] ino=[n], actual dev=[n] ino=[n], aborting. (FATAL) C recorded the device and inode of a directory, and then moved into it. It then performed a C on the current directory and detected that the device and inode were no longer the same. As this is at the heart of the race condition problem, the program will die at this point. =item cannot make directory [dir] read+writeable: [errmsg] C attempted to change the permissions on the current directory to ensure that subsequent unlinkings would not run into problems, but was unable to do so. The permissions remain as they were, and the program will carry on, doing the best it can. =item cannot read [dir]: [errmsg] C tried to read the contents of the directory in order to acquire the names of the directory entries to be unlinked, but was unsuccessful. This is usually a permissions issue. The program will continue, but the files in this directory will remain after the call. =item cannot reset chmod [dir]: [errmsg] C, after having deleted everything in a directory, attempted to restore its permissions to the original state but failed. The directory may wind up being left behind. =item cannot remove [dir] when cwd is [dir] The current working directory of the program is F and you are attempting to remove an ancestor, such as F. The directory tree is left untouched. The solution is to C out of the child directory to a place outside the directory tree to be removed. =item cannot chdir to [parent-dir] from [child-dir]: [errmsg], aborting. (FATAL) C, after having deleted everything and restored the permissions of a directory, was unable to chdir back to the parent. The program halts to avoid a race condition from occurring. =item cannot stat prior working directory [dir]: [errmsg], aborting. (FATAL) C was unable to stat the parent directory after having returned from the child. Since there is no way of knowing if we returned to where we think we should be (by comparing device and inode) the only way out is to C. =item previous directory [parent-dir] changed before entering [child-dir], expected dev=[n] ino=[n], actual dev=[n] ino=[n], aborting. (FATAL) When C returned from deleting files in a child directory, a check revealed that the parent directory it returned to wasn't the one it started out from. This is considered a sign of malicious activity. =item cannot make directory [dir] writeable: [errmsg] Just before removing a directory (after having successfully removed everything it contained), C attempted to set the permissions on the directory to ensure it could be removed and failed. Program execution continues, but the directory may possibly not be deleted. =item cannot remove directory [dir]: [errmsg] C attempted to remove a directory, but failed. This may be because some objects that were unable to be removed remain in the directory, or it could be a permissions issue. The directory will be left behind. =item cannot restore permissions of [dir] to [0nnn]: [errmsg] After having failed to remove a directory, C was unable to restore its permissions from a permissive state back to a possibly more restrictive setting. (Permissions given in octal). =item cannot make file [file] writeable: [errmsg] C attempted to force the permissions of a file to ensure it could be deleted, but failed to do so. It will, however, still attempt to unlink the file. =item cannot unlink file [file]: [errmsg] C failed to remove a file. Probably a permissions issue. =item cannot restore permissions of [file] to [0nnn]: [errmsg] After having failed to remove a file, C was also unable to restore the permissions on the file to a possibly less permissive setting. (Permissions given in octal). =item unable to map [owner] to a uid, ownership not changed"); C was instructed to give the ownership of created directories to the symbolic name [owner], but C did not return the corresponding numeric uid. The directory will be created, but ownership will not be changed. =item unable to map [group] to a gid, group ownership not changed C was instructed to give the group ownership of created directories to the symbolic name [group], but C did not return the corresponding numeric gid. The directory will be created, but group ownership will not be changed. =back =head1 SEE ALSO =over 4 =item * L Allows files and directories to be moved to the Trashcan/Recycle Bin (where they may later be restored if necessary) if the operating system supports such functionality. This feature may one day be made available directly in C. =item * L When removing directory trees, if you want to examine each file to decide whether to delete it (and possibly leaving large swathes alone), F offers a convenient and flexible approach to examining directory trees. =back =head1 BUGS AND LIMITATIONS The following describes F limitations and how to report bugs. =head2 MULTITHREADED APPLICATIONS F C and C will not work with multithreaded applications due to its use of C. At this time, no warning or error is generated in this situation. You will certainly encounter unexpected results. The implementation that surfaces this limitation will not be changed. See the F module for functionality similar to F but which does not C. =head2 NFS Mount Points F is not responsible for triggering the automounts, mirror mounts, and the contents of network mounted filesystems. If your NFS implementation requires an action to be performed on the filesystem in order for F to perform operations, it is strongly suggested you assure filesystem availability by reading the root of the mounted filesystem. =head2 REPORTING BUGS Please report all bugs on the RT queue, either via the web interface: L or by email: bug-File-Path@rt.cpan.org In either case, please B patches to the bug report rather than including them inline in the web post or the body of the email. You can also send pull requests to the Github repository: L =head1 ACKNOWLEDGEMENTS Paul Szabo identified the race condition originally, and Brendan O'Dea wrote an implementation for Debian that addressed the problem. That code was used as a basis for the current code. Their efforts are greatly appreciated. Gisle Aas made a number of improvements to the documentation for 2.07 and his advice and assistance is also greatly appreciated. =head1 AUTHORS Prior authors and maintainers: Tim Bunce, Charles Bailey, and David Landgren >. Current maintainers are Richard Elberger > and James (Jim) Keenan >. =head1 CONTRIBUTORS Contributors to File::Path, in alphabetical order by first name. =over 1 =item > =item Charlie Gonzalez > =item Craig A. Berry > =item James E Keenan > =item John Lightsey > =item Nigel Horne > =item Richard Elberger > =item Ryan Yee > =item Skye Shaw > =item Tom Lutz > =item Will Sheppard > =back =head1 COPYRIGHT This module is copyright (C) Charles Bailey, Tim Bunce, David Landgren, James Keenan and Richard Elberger 1995-2020. All rights reserved. =head1 LICENSE This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut FILE66058cac/File/Temp.pm]package File::Temp; # git description: v0.2310-3-gc7148fe # ABSTRACT: return name and handle of a temporary file safely our $VERSION = '0.2311'; #pod =begin :__INTERNALS #pod #pod =head1 PORTABILITY #pod #pod This section is at the top in order to provide easier access to #pod porters. It is not expected to be rendered by a standard pod #pod formatting tool. Please skip straight to the SYNOPSIS section if you #pod are not trying to port this module to a new platform. #pod #pod This module is designed to be portable across operating systems and it #pod currently supports Unix, VMS, DOS, OS/2, Windows and Mac OS #pod (Classic). When porting to a new OS there are generally three main #pod issues that have to be solved: #pod #pod =over 4 #pod #pod =item * #pod #pod Can the OS unlink an open file? If it can not then the #pod C<_can_unlink_opened_file> method should be modified. #pod #pod =item * #pod #pod Are the return values from C reliable? By default all the #pod return values from C are compared when unlinking a temporary #pod file using the filename and the handle. Operating systems other than #pod unix do not always have valid entries in all fields. If utility function #pod C fails then the C comparison should be #pod modified accordingly. #pod #pod =item * #pod #pod Security. Systems that can not support a test for the sticky bit #pod on a directory can not use the MEDIUM and HIGH security tests. #pod The C<_can_do_level> method should be modified accordingly. #pod #pod =back #pod #pod =end :__INTERNALS #pod #pod =head1 SYNOPSIS #pod #pod use File::Temp qw/ tempfile tempdir /; #pod #pod $fh = tempfile(); #pod ($fh, $filename) = tempfile(); #pod #pod ($fh, $filename) = tempfile( $template, DIR => $dir); #pod ($fh, $filename) = tempfile( $template, SUFFIX => '.dat'); #pod ($fh, $filename) = tempfile( $template, TMPDIR => 1 ); #pod #pod binmode( $fh, ":utf8" ); #pod #pod $dir = tempdir( CLEANUP => 1 ); #pod ($fh, $filename) = tempfile( DIR => $dir ); #pod #pod Object interface: #pod #pod require File::Temp; #pod use File::Temp (); #pod use File::Temp qw/ :seekable /; #pod #pod $fh = File::Temp->new(); #pod $fname = $fh->filename; #pod #pod $fh = File::Temp->new(TEMPLATE => $template); #pod $fname = $fh->filename; #pod #pod $tmp = File::Temp->new( UNLINK => 0, SUFFIX => '.dat' ); #pod print $tmp "Some data\n"; #pod print "Filename is $tmp\n"; #pod $tmp->seek( 0, SEEK_END ); #pod #pod $dir = File::Temp->newdir(); # CLEANUP => 1 by default #pod #pod The following interfaces are provided for compatibility with #pod existing APIs. They should not be used in new code. #pod #pod MkTemp family: #pod #pod use File::Temp qw/ :mktemp /; #pod #pod ($fh, $file) = mkstemp( "tmpfileXXXXX" ); #pod ($fh, $file) = mkstemps( "tmpfileXXXXXX", $suffix); #pod #pod $tmpdir = mkdtemp( $template ); #pod #pod $unopened_file = mktemp( $template ); #pod #pod POSIX functions: #pod #pod use File::Temp qw/ :POSIX /; #pod #pod $file = tmpnam(); #pod $fh = tmpfile(); #pod #pod ($fh, $file) = tmpnam(); #pod #pod Compatibility functions: #pod #pod $unopened_file = File::Temp::tempnam( $dir, $pfx ); #pod #pod =head1 DESCRIPTION #pod #pod C can be used to create and open temporary files in a safe #pod way. There is both a function interface and an object-oriented #pod interface. The File::Temp constructor or the tempfile() function can #pod be used to return the name and the open filehandle of a temporary #pod file. The tempdir() function can be used to create a temporary #pod directory. #pod #pod The security aspect of temporary file creation is emphasized such that #pod a filehandle and filename are returned together. This helps guarantee #pod that a race condition can not occur where the temporary file is #pod created by another process between checking for the existence of the #pod file and its opening. Additional security levels are provided to #pod check, for example, that the sticky bit is set on world writable #pod directories. See L<"safe_level"> for more information. #pod #pod For compatibility with popular C library functions, Perl implementations of #pod the mkstemp() family of functions are provided. These are, mkstemp(), #pod mkstemps(), mkdtemp() and mktemp(). #pod #pod Additionally, implementations of the standard L #pod tmpnam() and tmpfile() functions are provided if required. #pod #pod Implementations of mktemp(), tmpnam(), and tempnam() are provided, #pod but should be used with caution since they return only a filename #pod that was valid when function was called, so cannot guarantee #pod that the file will not exist by the time the caller opens the filename. #pod #pod Filehandles returned by these functions support the seekable methods. #pod #pod =cut # Toolchain targets v5.8.1, but we'll try to support back to v5.6 anyway. # It might be possible to make this v5.5, but many v5.6isms are creeping # into the code and tests. use 5.006; use strict; use Carp; use File::Spec 0.8; use Cwd (); use File::Path 2.06 qw/ rmtree /; use Fcntl 1.03; use IO::Seekable; # For SEEK_* use Errno; use Scalar::Util 'refaddr'; require VMS::Stdio if $^O eq 'VMS'; # pre-emptively load Carp::Heavy. If we don't when we run out of file # handles and attempt to call croak() we get an error message telling # us that Carp::Heavy won't load rather than an error telling us we # have run out of file handles. We either preload croak() or we # switch the calls to croak from _gettemp() to use die. eval { require Carp::Heavy; }; # Need the Symbol package if we are running older perl require Symbol if $] < 5.006; ### For the OO interface use parent 0.221 qw/ IO::Handle IO::Seekable /; use overload '""' => "STRINGIFY", '0+' => "NUMIFY", fallback => 1; our $DEBUG = 0; our $KEEP_ALL = 0; # We are exporting functions use Exporter 5.57 'import'; # 5.57 lets us import 'import' # Export list - to allow fine tuning of export table our @EXPORT_OK = qw{ tempfile tempdir tmpnam tmpfile mktemp mkstemp mkstemps mkdtemp unlink0 cleanup SEEK_SET SEEK_CUR SEEK_END }; # Groups of functions for export our %EXPORT_TAGS = ( 'POSIX' => [qw/ tmpnam tmpfile /], 'mktemp' => [qw/ mktemp mkstemp mkstemps mkdtemp/], 'seekable' => [qw/ SEEK_SET SEEK_CUR SEEK_END /], ); # add contents of these tags to @EXPORT Exporter::export_tags('POSIX','mktemp','seekable'); # This is a list of characters that can be used in random filenames my @CHARS = (qw/ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 _ /); # Maximum number of tries to make a temp file before failing use constant MAX_TRIES => 1000; # Minimum number of X characters that should be in a template use constant MINX => 4; # Default template when no template supplied use constant TEMPXXX => 'X' x 10; # Constants for the security level use constant STANDARD => 0; use constant MEDIUM => 1; use constant HIGH => 2; # OPENFLAGS. If we defined the flag to use with Sysopen here this gives # us an optimisation when many temporary files are requested my $OPENFLAGS = O_CREAT | O_EXCL | O_RDWR; my $LOCKFLAG; unless ($^O eq 'MacOS') { for my $oflag (qw/ NOFOLLOW BINARY LARGEFILE NOINHERIT /) { my ($bit, $func) = (0, "Fcntl::O_" . $oflag); no strict 'refs'; $OPENFLAGS |= $bit if eval { # Make sure that redefined die handlers do not cause problems # e.g. CGI::Carp local $SIG{__DIE__} = sub {}; local $SIG{__WARN__} = sub {}; $bit = &$func(); 1; }; } # Special case O_EXLOCK $LOCKFLAG = eval { local $SIG{__DIE__} = sub {}; local $SIG{__WARN__} = sub {}; &Fcntl::O_EXLOCK(); }; } # On some systems the O_TEMPORARY flag can be used to tell the OS # to automatically remove the file when it is closed. This is fine # in most cases but not if tempfile is called with UNLINK=>0 and # the filename is requested -- in the case where the filename is to # be passed to another routine. This happens on windows. We overcome # this by using a second open flags variable my $OPENTEMPFLAGS = $OPENFLAGS; unless ($^O eq 'MacOS') { for my $oflag (qw/ TEMPORARY /) { my ($bit, $func) = (0, "Fcntl::O_" . $oflag); local($@); no strict 'refs'; $OPENTEMPFLAGS |= $bit if eval { # Make sure that redefined die handlers do not cause problems # e.g. CGI::Carp local $SIG{__DIE__} = sub {}; local $SIG{__WARN__} = sub {}; $bit = &$func(); 1; }; } } # Private hash tracking which files have been created by each process id via the OO interface my %FILES_CREATED_BY_OBJECT; # INTERNAL ROUTINES - not to be used outside of package # Generic routine for getting a temporary filename # modelled on OpenBSD _gettemp() in mktemp.c # The template must contain X's that are to be replaced # with the random values # Arguments: # TEMPLATE - string containing the XXXXX's that is converted # to a random filename and opened if required # Optionally, a hash can also be supplied containing specific options # "open" => if true open the temp file, else just return the name # default is 0 # "mkdir"=> if true, we are creating a temp directory rather than tempfile # default is 0 # "suffixlen" => number of characters at end of PATH to be ignored. # default is 0. # "unlink_on_close" => indicates that, if possible, the OS should remove # the file as soon as it is closed. Usually indicates # use of the O_TEMPORARY flag to sysopen. # Usually irrelevant on unix # "use_exlock" => Indicates that O_EXLOCK should be used. Default is false. # "file_permissions" => file permissions for sysopen(). Default is 0600. # Optionally a reference to a scalar can be passed into the function # On error this will be used to store the reason for the error # "ErrStr" => \$errstr # "open" and "mkdir" can not both be true # "unlink_on_close" is not used when "mkdir" is true. # The default options are equivalent to mktemp(). # Returns: # filehandle - open file handle (if called with doopen=1, else undef) # temp name - name of the temp file or directory # For example: # ($fh, $name) = _gettemp($template, "open" => 1); # for the current version, failures are associated with # stored in an error string and returned to give the reason whilst debugging # This routine is not called by any external function sub _gettemp { croak 'Usage: ($fh, $name) = _gettemp($template, OPTIONS);' unless scalar(@_) >= 1; # the internal error string - expect it to be overridden # Need this in case the caller decides not to supply us a value # need an anonymous scalar my $tempErrStr; # Default options my %options = ( "open" => 0, "mkdir" => 0, "suffixlen" => 0, "unlink_on_close" => 0, "use_exlock" => 0, "ErrStr" => \$tempErrStr, "file_permissions" => undef, ); # Read the template my $template = shift; if (ref($template)) { # Use a warning here since we have not yet merged ErrStr carp "File::Temp::_gettemp: template must not be a reference"; return (); } # Check that the number of entries on stack are even if (scalar(@_) % 2 != 0) { # Use a warning here since we have not yet merged ErrStr carp "File::Temp::_gettemp: Must have even number of options"; return (); } # Read the options and merge with defaults %options = (%options, @_) if @_; # Make sure the error string is set to undef ${$options{ErrStr}} = undef; # Can not open the file and make a directory in a single call if ($options{"open"} && $options{"mkdir"}) { ${$options{ErrStr}} = "doopen and domkdir can not both be true\n"; return (); } # Find the start of the end of the Xs (position of last X) # Substr starts from 0 my $start = length($template) - 1 - $options{"suffixlen"}; # Check that we have at least MINX x X (e.g. 'XXXX") at the end of the string # (taking suffixlen into account). Any fewer is insecure. # Do it using substr - no reason to use a pattern match since # we know where we are looking and what we are looking for if (substr($template, $start - MINX + 1, MINX) ne 'X' x MINX) { ${$options{ErrStr}} = "The template must end with at least ". MINX . " 'X' characters\n"; return (); } # Replace all the X at the end of the substring with a # random character or just all the XX at the end of a full string. # Do it as an if, since the suffix adjusts which section to replace # and suffixlen=0 returns nothing if used in the substr directly # and generate a full path from the template my $path = _replace_XX($template, $options{"suffixlen"}); # Split the path into constituent parts - eventually we need to check # whether the directory exists # We need to know whether we are making a temp directory # or a tempfile my ($volume, $directories, $file); my $parent; # parent directory if ($options{"mkdir"}) { # There is no filename at the end ($volume, $directories, $file) = File::Spec->splitpath( $path, 1); # The parent is then $directories without the last directory # Split the directory and put it back together again my @dirs = File::Spec->splitdir($directories); # If @dirs only has one entry (i.e. the directory template) that means # we are in the current directory if ($#dirs == 0) { $parent = File::Spec->curdir; } else { if ($^O eq 'VMS') { # need volume to avoid relative dir spec $parent = File::Spec->catdir($volume, @dirs[0..$#dirs-1]); $parent = 'sys$disk:[]' if $parent eq ''; } else { # Put it back together without the last one $parent = File::Spec->catdir(@dirs[0..$#dirs-1]); # ...and attach the volume (no filename) $parent = File::Spec->catpath($volume, $parent, ''); } } } else { # Get rid of the last filename (use File::Basename for this?) ($volume, $directories, $file) = File::Spec->splitpath( $path ); # Join up without the file part $parent = File::Spec->catpath($volume,$directories,''); # If $parent is empty replace with curdir $parent = File::Spec->curdir unless $directories ne ''; } # Check that the parent directories exist # Do this even for the case where we are simply returning a name # not a file -- no point returning a name that includes a directory # that does not exist or is not writable unless (-e $parent) { ${$options{ErrStr}} = "Parent directory ($parent) does not exist"; return (); } unless (-d $parent) { ${$options{ErrStr}} = "Parent directory ($parent) is not a directory"; return (); } # Check the stickiness of the directory and chown giveaway if required # If the directory is world writable the sticky bit # must be set if (File::Temp->safe_level == MEDIUM) { my $safeerr; unless (_is_safe($parent,\$safeerr)) { ${$options{ErrStr}} = "Parent directory ($parent) is not safe ($safeerr)"; return (); } } elsif (File::Temp->safe_level == HIGH) { my $safeerr; unless (_is_verysafe($parent, \$safeerr)) { ${$options{ErrStr}} = "Parent directory ($parent) is not safe ($safeerr)"; return (); } } my $perms = $options{file_permissions}; my $has_perms = defined $perms; $perms = 0600 unless $has_perms; # Now try MAX_TRIES time to open the file for (my $i = 0; $i < MAX_TRIES; $i++) { # Try to open the file if requested if ($options{"open"}) { my $fh; # If we are running before perl5.6.0 we can not auto-vivify if ($] < 5.006) { $fh = &Symbol::gensym; } # Try to make sure this will be marked close-on-exec # XXX: Win32 doesn't respect this, nor the proper fcntl, # but may have O_NOINHERIT. This may or may not be in Fcntl. local $^F = 2; # Attempt to open the file my $open_success = undef; if ( $^O eq 'VMS' and $options{"unlink_on_close"} && !$KEEP_ALL) { # make it auto delete on close by setting FAB$V_DLT bit $fh = VMS::Stdio::vmssysopen($path, $OPENFLAGS, $perms, 'fop=dlt'); $open_success = $fh; } else { my $flags = ( ($options{"unlink_on_close"} && !$KEEP_ALL) ? $OPENTEMPFLAGS : $OPENFLAGS ); $flags |= $LOCKFLAG if (defined $LOCKFLAG && $options{use_exlock}); $open_success = sysopen($fh, $path, $flags, $perms); } if ( $open_success ) { # in case of odd umask force rw chmod($perms, $path) unless $has_perms; # Opened successfully - return file handle and name return ($fh, $path); } else { # Error opening file - abort with error # if the reason was anything but EEXIST unless ($!{EEXIST}) { ${$options{ErrStr}} = "Could not create temp file $path: $!"; return (); } # Loop round for another try } } elsif ($options{"mkdir"}) { # Open the temp directory if (mkdir( $path, 0700)) { # in case of odd umask chmod(0700, $path); return undef, $path; } else { # Abort with error if the reason for failure was anything # except EEXIST unless ($!{EEXIST}) { ${$options{ErrStr}} = "Could not create directory $path: $!"; return (); } # Loop round for another try } } else { # Return true if the file can not be found # Directory has been checked previously return (undef, $path) unless -e $path; # Try again until MAX_TRIES } # Did not successfully open the tempfile/dir # so try again with a different set of random letters # No point in trying to increment unless we have only # 1 X say and the randomness could come up with the same # file MAX_TRIES in a row. # Store current attempt - in principle this implies that the # 3rd time around the open attempt that the first temp file # name could be generated again. Probably should store each # attempt and make sure that none are repeated my $original = $path; my $counter = 0; # Stop infinite loop my $MAX_GUESS = 50; do { # Generate new name from original template $path = _replace_XX($template, $options{"suffixlen"}); $counter++; } until ($path ne $original || $counter > $MAX_GUESS); # Check for out of control looping if ($counter > $MAX_GUESS) { ${$options{ErrStr}} = "Tried to get a new temp name different to the previous value $MAX_GUESS times.\nSomething wrong with template?? ($template)"; return (); } } # If we get here, we have run out of tries ${ $options{ErrStr} } = "Have exceeded the maximum number of attempts (" . MAX_TRIES . ") to open temp file/dir"; return (); } # Internal routine to replace the XXXX... with random characters # This has to be done by _gettemp() every time it fails to # open a temp file/dir # Arguments: $template (the template with XXX), # $ignore (number of characters at end to ignore) # Returns: modified template sub _replace_XX { croak 'Usage: _replace_XX($template, $ignore)' unless scalar(@_) == 2; my ($path, $ignore) = @_; # Do it as an if, since the suffix adjusts which section to replace # and suffixlen=0 returns nothing if used in the substr directly # Alternatively, could simply set $ignore to length($path)-1 # Don't want to always use substr when not required though. my $end = ( $] >= 5.006 ? "\\z" : "\\Z" ); if ($ignore) { substr($path, 0, - $ignore) =~ s/X(?=X*$end)/$CHARS[ int( rand( @CHARS ) ) ]/ge; } else { $path =~ s/X(?=X*$end)/$CHARS[ int( rand( @CHARS ) ) ]/ge; } return $path; } # Internal routine to force a temp file to be writable after # it is created so that we can unlink it. Windows seems to occasionally # force a file to be readonly when written to certain temp locations sub _force_writable { my $file = shift; chmod 0600, $file; } # internal routine to check to see if the directory is safe # First checks to see if the directory is not owned by the # current user or root. Then checks to see if anyone else # can write to the directory and if so, checks to see if # it has the sticky bit set # Will not work on systems that do not support sticky bit #Args: directory path to check # Optionally: reference to scalar to contain error message # Returns true if the path is safe and false otherwise. # Returns undef if can not even run stat() on the path # This routine based on version written by Tom Christiansen # Presumably, by the time we actually attempt to create the # file or directory in this directory, it may not be safe # anymore... Have to run _is_safe directly after the open. sub _is_safe { my $path = shift; my $err_ref = shift; # Stat path my @info = stat($path); unless (scalar(@info)) { $$err_ref = "stat(path) returned no values"; return 0; } ; return 1 if $^O eq 'VMS'; # owner delete control at file level # Check to see whether owner is neither superuser (or a system uid) nor me # Use the effective uid from the $> variable # UID is in [4] if ($info[4] > File::Temp->top_system_uid() && $info[4] != $>) { Carp::cluck(sprintf "uid=$info[4] topuid=%s euid=$> path='$path'", File::Temp->top_system_uid()); $$err_ref = "Directory owned neither by root nor the current user" if ref($err_ref); return 0; } # check whether group or other can write file # use 066 to detect either reading or writing # use 022 to check writability # Do it with S_IWOTH and S_IWGRP for portability (maybe) # mode is in info[2] if (($info[2] & &Fcntl::S_IWGRP) || # Is group writable? ($info[2] & &Fcntl::S_IWOTH) ) { # Is world writable? # Must be a directory unless (-d $path) { $$err_ref = "Path ($path) is not a directory" if ref($err_ref); return 0; } # Must have sticky bit set unless (-k $path) { $$err_ref = "Sticky bit not set on $path when dir is group|world writable" if ref($err_ref); return 0; } } return 1; } # Internal routine to check whether a directory is safe # for temp files. Safer than _is_safe since it checks for # the possibility of chown giveaway and if that is a possibility # checks each directory in the path to see if it is safe (with _is_safe) # If _PC_CHOWN_RESTRICTED is not set, does the full test of each # directory anyway. # Takes optional second arg as scalar ref to error reason sub _is_verysafe { # Need POSIX - but only want to bother if really necessary due to overhead require POSIX; my $path = shift; print "_is_verysafe testing $path\n" if $DEBUG; return 1 if $^O eq 'VMS'; # owner delete control at file level my $err_ref = shift; # Should Get the value of _PC_CHOWN_RESTRICTED if it is defined # and If it is not there do the extensive test local($@); my $chown_restricted; $chown_restricted = &POSIX::_PC_CHOWN_RESTRICTED() if eval { &POSIX::_PC_CHOWN_RESTRICTED(); 1}; # If chown_resticted is set to some value we should test it if (defined $chown_restricted) { # Return if the current directory is safe return _is_safe($path,$err_ref) if POSIX::sysconf( $chown_restricted ); } # To reach this point either, the _PC_CHOWN_RESTRICTED symbol # was not available or the symbol was there but chown giveaway # is allowed. Either way, we now have to test the entire tree for # safety. # Convert path to an absolute directory if required unless (File::Spec->file_name_is_absolute($path)) { $path = File::Spec->rel2abs($path); } # Split directory into components - assume no file my ($volume, $directories, undef) = File::Spec->splitpath( $path, 1); # Slightly less efficient than having a function in File::Spec # to chop off the end of a directory or even a function that # can handle ../ in a directory tree # Sometimes splitdir() returns a blank at the end # so we will probably check the bottom directory twice in some cases my @dirs = File::Spec->splitdir($directories); # Concatenate one less directory each time around foreach my $pos (0.. $#dirs) { # Get a directory name my $dir = File::Spec->catpath($volume, File::Spec->catdir(@dirs[0.. $#dirs - $pos]), '' ); print "TESTING DIR $dir\n" if $DEBUG; # Check the directory return 0 unless _is_safe($dir,$err_ref); } return 1; } # internal routine to determine whether unlink works on this # platform for files that are currently open. # Returns true if we can, false otherwise. # Currently WinNT, OS/2 and VMS can not unlink an opened file # On VMS this is because the O_EXCL flag is used to open the # temporary file. Currently I do not know enough about the issues # on VMS to decide whether O_EXCL is a requirement. sub _can_unlink_opened_file { if (grep $^O eq $_, qw/MSWin32 os2 VMS dos MacOS haiku/) { return 0; } else { return 1; } } # internal routine to decide which security levels are allowed # see safe_level() for more information on this # Controls whether the supplied security level is allowed # $cando = _can_do_level( $level ) sub _can_do_level { # Get security level my $level = shift; # Always have to be able to do STANDARD return 1 if $level == STANDARD; # Currently, the systems that can do HIGH or MEDIUM are identical if ( $^O eq 'MSWin32' || $^O eq 'os2' || $^O eq 'cygwin' || $^O eq 'dos' || $^O eq 'MacOS' || $^O eq 'mpeix') { return 0; } else { return 1; } } # This routine sets up a deferred unlinking of a specified # filename and filehandle. It is used in the following cases: # - Called by unlink0 if an opened file can not be unlinked # - Called by tempfile() if files are to be removed on shutdown # - Called by tempdir() if directories are to be removed on shutdown # Arguments: # _deferred_unlink( $fh, $fname, $isdir ); # # - filehandle (so that it can be explicitly closed if open # - filename (the thing we want to remove) # - isdir (flag to indicate that we are being given a directory) # [and hence no filehandle] # Status is not referred to since all the magic is done with an END block { # Will set up two lexical variables to contain all the files to be # removed. One array for files, another for directories They will # only exist in this block. # This means we only have to set up a single END block to remove # all files. # in order to prevent child processes inadvertently deleting the parent # temp files we use a hash to store the temp files and directories # created by a particular process id. # %files_to_unlink contains values that are references to an array of # array references containing the filehandle and filename associated with # the temp file. my (%files_to_unlink, %dirs_to_unlink); # Set up an end block to use these arrays END { local($., $@, $!, $^E, $?); cleanup(at_exit => 1); } # Cleanup function. Always triggered on END (with at_exit => 1) but # can be invoked manually. sub cleanup { my %h = @_; my $at_exit = delete $h{at_exit}; $at_exit = 0 if not defined $at_exit; { my @k = sort keys %h; die "unrecognized parameters: @k" if @k } if (!$KEEP_ALL) { # Files my @files = (exists $files_to_unlink{$$} ? @{ $files_to_unlink{$$} } : () ); foreach my $file (@files) { # close the filehandle without checking its state # in order to make real sure that this is closed # if its already closed then I don't care about the answer # probably a better way to do this close($file->[0]); # file handle is [0] if (-f $file->[1]) { # file name is [1] _force_writable( $file->[1] ); # for windows unlink $file->[1] or warn "Error removing ".$file->[1]; } } # Dirs my @dirs = (exists $dirs_to_unlink{$$} ? @{ $dirs_to_unlink{$$} } : () ); my ($cwd, $cwd_to_remove); foreach my $dir (@dirs) { if (-d $dir) { # Some versions of rmtree will abort if you attempt to remove # the directory you are sitting in. For automatic cleanup # at program exit, we avoid this by chdir()ing out of the way # first. If not at program exit, it's best not to mess with the # current directory, so just let it fail with a warning. if ($at_exit) { $cwd = Cwd::abs_path(File::Spec->curdir) if not defined $cwd; my $abs = Cwd::abs_path($dir); if ($abs eq $cwd) { $cwd_to_remove = $dir; next; } } eval { rmtree($dir, $DEBUG, 0); }; warn $@ if ($@ && $^W); } } if (defined $cwd_to_remove) { # We do need to clean up the current directory, and everything # else is done, so get out of there and remove it. chdir $cwd_to_remove or die "cannot chdir to $cwd_to_remove: $!"; my $updir = File::Spec->updir; chdir $updir or die "cannot chdir to $updir: $!"; eval { rmtree($cwd_to_remove, $DEBUG, 0); }; warn $@ if ($@ && $^W); } # clear the arrays @{ $files_to_unlink{$$} } = () if exists $files_to_unlink{$$}; @{ $dirs_to_unlink{$$} } = () if exists $dirs_to_unlink{$$}; } } # This is the sub called to register a file for deferred unlinking # This could simply store the input parameters and defer everything # until the END block. For now we do a bit of checking at this # point in order to make sure that (1) we have a file/dir to delete # and (2) we have been called with the correct arguments. sub _deferred_unlink { croak 'Usage: _deferred_unlink($fh, $fname, $isdir)' unless scalar(@_) == 3; my ($fh, $fname, $isdir) = @_; warn "Setting up deferred removal of $fname\n" if $DEBUG; # make sure we save the absolute path for later cleanup # OK to untaint because we only ever use this internally # as a file path, never interpolating into the shell $fname = Cwd::abs_path($fname); ($fname) = $fname =~ /^(.*)$/; # If we have a directory, check that it is a directory if ($isdir) { if (-d $fname) { # Directory exists so store it # first on VMS turn []foo into [.foo] for rmtree $fname = VMS::Filespec::vmspath($fname) if $^O eq 'VMS'; $dirs_to_unlink{$$} = [] unless exists $dirs_to_unlink{$$}; push (@{ $dirs_to_unlink{$$} }, $fname); } else { carp "Request to remove directory $fname could not be completed since it does not exist!\n" if $^W; } } else { if (-f $fname) { # file exists so store handle and name for later removal $files_to_unlink{$$} = [] unless exists $files_to_unlink{$$}; push(@{ $files_to_unlink{$$} }, [$fh, $fname]); } else { carp "Request to remove file $fname could not be completed since it is not there!\n" if $^W; } } } } # normalize argument keys to upper case and do consistent handling # of leading template vs TEMPLATE sub _parse_args { my $leading_template = (scalar(@_) % 2 == 1 ? shift(@_) : '' ); my %args = @_; %args = map +(uc($_) => $args{$_}), keys %args; # template (store it in an array so that it will # disappear from the arg list of tempfile) my @template = ( exists $args{TEMPLATE} ? $args{TEMPLATE} : $leading_template ? $leading_template : () ); delete $args{TEMPLATE}; return( \@template, \%args ); } #pod =head1 OBJECT-ORIENTED INTERFACE #pod #pod This is the primary interface for interacting with #pod C. Using the OO interface a temporary file can be created #pod when the object is constructed and the file can be removed when the #pod object is no longer required. #pod #pod Note that there is no method to obtain the filehandle from the #pod C object. The object itself acts as a filehandle. The object #pod isa C and isa C so all those methods are #pod available. #pod #pod Also, the object is configured such that it stringifies to the name of the #pod temporary file and so can be compared to a filename directly. It numifies #pod to the C the same as other handles and so can be compared to other #pod handles with C<==>. #pod #pod $fh eq $filename # as a string #pod $fh != \*STDOUT # as a number #pod #pod Available since 0.14. #pod #pod =over 4 #pod #pod =item B #pod #pod Create a temporary file object. #pod #pod my $tmp = File::Temp->new(); #pod #pod by default the object is constructed as if C #pod was called without options, but with the additional behaviour #pod that the temporary file is removed by the object destructor #pod if UNLINK is set to true (the default). #pod #pod Supported arguments are the same as for C: UNLINK #pod (defaulting to true), DIR, EXLOCK, PERMS and SUFFIX. #pod Additionally, the filename #pod template is specified using the TEMPLATE option. The OPEN option #pod is not supported (the file is always opened). #pod #pod $tmp = File::Temp->new( TEMPLATE => 'tempXXXXX', #pod DIR => 'mydir', #pod SUFFIX => '.dat'); #pod #pod Arguments are case insensitive. #pod #pod Can call croak() if an error occurs. #pod #pod Available since 0.14. #pod #pod TEMPLATE available since 0.23 #pod #pod =cut sub new { my $proto = shift; my $class = ref($proto) || $proto; my ($maybe_template, $args) = _parse_args(@_); # see if they are unlinking (defaulting to yes) my $unlink = (exists $args->{UNLINK} ? $args->{UNLINK} : 1 ); delete $args->{UNLINK}; # Protect OPEN delete $args->{OPEN}; # Open the file and retain file handle and file name my ($fh, $path) = tempfile( @$maybe_template, %$args ); print "Tmp: $fh - $path\n" if $DEBUG; # Store the filename in the scalar slot ${*$fh} = $path; # Cache the filename by pid so that the destructor can decide whether to remove it $FILES_CREATED_BY_OBJECT{$$}{$path} = 1; # Store unlink information in hash slot (plus other constructor info) %{*$fh} = %$args; # create the object bless $fh, $class; # final method-based configuration $fh->unlink_on_destroy( $unlink ); return $fh; } #pod =item B #pod #pod Create a temporary directory using an object oriented interface. #pod #pod $dir = File::Temp->newdir(); #pod #pod By default the directory is deleted when the object goes out of scope. #pod #pod Supports the same options as the C function. Note that directories #pod created with this method default to CLEANUP => 1. #pod #pod $dir = File::Temp->newdir( $template, %options ); #pod #pod A template may be specified either with a leading template or #pod with a TEMPLATE argument. #pod #pod Available since 0.19. #pod #pod TEMPLATE available since 0.23. #pod #pod =cut sub newdir { my $self = shift; my ($maybe_template, $args) = _parse_args(@_); # handle CLEANUP without passing CLEANUP to tempdir my $cleanup = (exists $args->{CLEANUP} ? $args->{CLEANUP} : 1 ); delete $args->{CLEANUP}; my $tempdir = tempdir( @$maybe_template, %$args); # get a safe absolute path for cleanup, just like # happens in _deferred_unlink my $real_dir = Cwd::abs_path( $tempdir ); ($real_dir) = $real_dir =~ /^(.*)$/; return bless { DIRNAME => $tempdir, REALNAME => $real_dir, CLEANUP => $cleanup, LAUNCHPID => $$, }, "File::Temp::Dir"; } #pod =item B #pod #pod Return the name of the temporary file associated with this object #pod (if the object was created using the "new" constructor). #pod #pod $filename = $tmp->filename; #pod #pod This method is called automatically when the object is used as #pod a string. #pod #pod Current API available since 0.14 #pod #pod =cut sub filename { my $self = shift; return ${*$self}; } sub STRINGIFY { my $self = shift; return $self->filename; } # For reference, can't use '0+'=>\&Scalar::Util::refaddr directly because # refaddr() demands one parameter only, whereas overload.pm calls with three # even for unary operations like '0+'. sub NUMIFY { return refaddr($_[0]); } #pod =item B #pod #pod Return the name of the temporary directory associated with this #pod object (if the object was created using the "newdir" constructor). #pod #pod $dirname = $tmpdir->dirname; #pod #pod This method is called automatically when the object is used in string context. #pod #pod =item B #pod #pod Control whether the file is unlinked when the object goes out of scope. #pod The file is removed if this value is true and $KEEP_ALL is not. #pod #pod $fh->unlink_on_destroy( 1 ); #pod #pod Default is for the file to be removed. #pod #pod Current API available since 0.15 #pod #pod =cut sub unlink_on_destroy { my $self = shift; if (@_) { ${*$self}{UNLINK} = shift; } return ${*$self}{UNLINK}; } #pod =item B #pod #pod When the object goes out of scope, the destructor is called. This #pod destructor will attempt to unlink the file (using L) #pod if the constructor was called with UNLINK set to 1 (the default state #pod if UNLINK is not specified). #pod #pod No error is given if the unlink fails. #pod #pod If the object has been passed to a child process during a fork, the #pod file will be deleted when the object goes out of scope in the parent. #pod #pod For a temporary directory object the directory will be removed unless #pod the CLEANUP argument was used in the constructor (and set to false) or #pod C was modified after creation. Note that if a temp #pod directory is your current directory, it cannot be removed - a warning #pod will be given in this case. C out of the directory before #pod letting the object go out of scope. #pod #pod If the global variable $KEEP_ALL is true, the file or directory #pod will not be removed. #pod #pod =cut sub DESTROY { local($., $@, $!, $^E, $?); my $self = shift; # Make sure we always remove the file from the global hash # on destruction. This prevents the hash from growing uncontrollably # and post-destruction there is no reason to know about the file. my $file = $self->filename; my $was_created_by_proc; if (exists $FILES_CREATED_BY_OBJECT{$$}{$file}) { $was_created_by_proc = 1; delete $FILES_CREATED_BY_OBJECT{$$}{$file}; } if (${*$self}{UNLINK} && !$KEEP_ALL) { print "# ---------> Unlinking $self\n" if $DEBUG; # only delete if this process created it return unless $was_created_by_proc; # The unlink1 may fail if the file has been closed # by the caller. This leaves us with the decision # of whether to refuse to remove the file or simply # do an unlink without test. Seems to be silly # to do this when we are trying to be careful # about security _force_writable( $file ); # for windows unlink1( $self, $file ) or unlink($file); } } #pod =back #pod #pod =head1 FUNCTIONS #pod #pod This section describes the recommended interface for generating #pod temporary files and directories. #pod #pod =over 4 #pod #pod =item B #pod #pod This is the basic function to generate temporary files. #pod The behaviour of the file can be changed using various options: #pod #pod $fh = tempfile(); #pod ($fh, $filename) = tempfile(); #pod #pod Create a temporary file in the directory specified for temporary #pod files, as specified by the tmpdir() function in L. #pod #pod ($fh, $filename) = tempfile($template); #pod #pod Create a temporary file in the current directory using the supplied #pod template. Trailing `X' characters are replaced with random letters to #pod generate the filename. At least four `X' characters must be present #pod at the end of the template. #pod #pod ($fh, $filename) = tempfile($template, SUFFIX => $suffix) #pod #pod Same as previously, except that a suffix is added to the template #pod after the `X' translation. Useful for ensuring that a temporary #pod filename has a particular extension when needed by other applications. #pod But see the WARNING at the end. #pod #pod ($fh, $filename) = tempfile($template, DIR => $dir); #pod #pod Translates the template as before except that a directory name #pod is specified. #pod #pod ($fh, $filename) = tempfile($template, TMPDIR => 1); #pod #pod Equivalent to specifying a DIR of "File::Spec->tmpdir", writing the file #pod into the same temporary directory as would be used if no template was #pod specified at all. #pod #pod ($fh, $filename) = tempfile($template, UNLINK => 1); #pod #pod Return the filename and filehandle as before except that the file is #pod automatically removed when the program exits (dependent on #pod $KEEP_ALL). Default is for the file to be removed if a file handle is #pod requested and to be kept if the filename is requested. In a scalar #pod context (where no filename is returned) the file is always deleted #pod either (depending on the operating system) on exit or when it is #pod closed (unless $KEEP_ALL is true when the temp file is created). #pod #pod Use the object-oriented interface if fine-grained control of when #pod a file is removed is required. #pod #pod If the template is not specified, a template is always #pod automatically generated. This temporary file is placed in tmpdir() #pod (L) unless a directory is specified explicitly with the #pod DIR option. #pod #pod $fh = tempfile( DIR => $dir ); #pod #pod If called in scalar context, only the filehandle is returned and the #pod file will automatically be deleted when closed on operating systems #pod that support this (see the description of tmpfile() elsewhere in this #pod document). This is the preferred mode of operation, as if you only #pod have a filehandle, you can never create a race condition by fumbling #pod with the filename. On systems that can not unlink an open file or can #pod not mark a file as temporary when it is opened (for example, Windows #pod NT uses the C flag) the file is marked for deletion when #pod the program ends (equivalent to setting UNLINK to 1). The C #pod flag is ignored if present. #pod #pod (undef, $filename) = tempfile($template, OPEN => 0); #pod #pod This will return the filename based on the template but #pod will not open this file. Cannot be used in conjunction with #pod UNLINK set to true. Default is to always open the file #pod to protect from possible race conditions. A warning is issued #pod if warnings are turned on. Consider using the tmpnam() #pod and mktemp() functions described elsewhere in this document #pod if opening the file is not required. #pod #pod To open the temporary filehandle with O_EXLOCK (open with exclusive #pod file lock) use C<< EXLOCK=>1 >>. This is supported only by some #pod operating systems (most notably BSD derived systems). By default #pod EXLOCK will be false. Former C versions set EXLOCK to #pod true, so to be sure to get an unlocked filehandle also with older #pod versions, explicitly set C<< EXLOCK=>0 >>. #pod #pod ($fh, $filename) = tempfile($template, EXLOCK => 1); #pod #pod By default, the temp file is created with 0600 file permissions. #pod Use C to change this: #pod #pod ($fh, $filename) = tempfile($template, PERMS => 0666); #pod #pod Options can be combined as required. #pod #pod Will croak() if there is an error. #pod #pod Available since 0.05. #pod #pod UNLINK flag available since 0.10. #pod #pod TMPDIR flag available since 0.19. #pod #pod EXLOCK flag available since 0.19. #pod #pod PERMS flag available since 0.2310. #pod #pod =cut sub tempfile { if ( @_ && $_[0] eq 'File::Temp' ) { croak "'tempfile' can't be called as a method"; } # Can not check for argument count since we can have any # number of args # Default options my %options = ( "DIR" => undef, # Directory prefix "SUFFIX" => '', # Template suffix "UNLINK" => 0, # Do not unlink file on exit "OPEN" => 1, # Open file "TMPDIR" => 0, # Place tempfile in tempdir if template specified "EXLOCK" => 0, # Open file with O_EXLOCK "PERMS" => undef, # File permissions ); # Check to see whether we have an odd or even number of arguments my ($maybe_template, $args) = _parse_args(@_); my $template = @$maybe_template ? $maybe_template->[0] : undef; # Read the options and merge with defaults %options = (%options, %$args); # First decision is whether or not to open the file if (! $options{"OPEN"}) { warn "tempfile(): temporary filename requested but not opened.\nPossibly unsafe, consider using tempfile() with OPEN set to true\n" if $^W; } if ($options{"DIR"} and $^O eq 'VMS') { # on VMS turn []foo into [.foo] for concatenation $options{"DIR"} = VMS::Filespec::vmspath($options{"DIR"}); } # Construct the template # Have a choice of trying to work around the mkstemp/mktemp/tmpnam etc # functions or simply constructing a template and using _gettemp() # explicitly. Go for the latter # First generate a template if not defined and prefix the directory # If no template must prefix the temp directory if (defined $template) { # End up with current directory if neither DIR not TMPDIR are set if ($options{"DIR"}) { $template = File::Spec->catfile($options{"DIR"}, $template); } elsif ($options{TMPDIR}) { $template = File::Spec->catfile(_wrap_file_spec_tmpdir(), $template ); } } else { if ($options{"DIR"}) { $template = File::Spec->catfile($options{"DIR"}, TEMPXXX); } else { $template = File::Spec->catfile(_wrap_file_spec_tmpdir(), TEMPXXX); } } # Now add a suffix $template .= $options{"SUFFIX"}; # Determine whether we should tell _gettemp to unlink the file # On unix this is irrelevant and can be worked out after the file is # opened (simply by unlinking the open filehandle). On Windows or VMS # we have to indicate temporary-ness when we open the file. In general # we only want a true temporary file if we are returning just the # filehandle - if the user wants the filename they probably do not # want the file to disappear as soon as they close it (which may be # important if they want a child process to use the file) # For this reason, tie unlink_on_close to the return context regardless # of OS. my $unlink_on_close = ( wantarray ? 0 : 1); # Create the file my ($fh, $path, $errstr); croak "Error in tempfile() using template $template: $errstr" unless (($fh, $path) = _gettemp($template, "open" => $options{OPEN}, "mkdir" => 0, "unlink_on_close" => $unlink_on_close, "suffixlen" => length($options{SUFFIX}), "ErrStr" => \$errstr, "use_exlock" => $options{EXLOCK}, "file_permissions" => $options{PERMS}, ) ); # Set up an exit handler that can do whatever is right for the # system. This removes files at exit when requested explicitly or when # system is asked to unlink_on_close but is unable to do so because # of OS limitations. # The latter should be achieved by using a tied filehandle. # Do not check return status since this is all done with END blocks. _deferred_unlink($fh, $path, 0) if $options{"UNLINK"}; # Return if (wantarray()) { if ($options{'OPEN'}) { return ($fh, $path); } else { return (undef, $path); } } else { # Unlink the file. It is up to unlink0 to decide what to do with # this (whether to unlink now or to defer until later) unlink0($fh, $path) or croak "Error unlinking file $path using unlink0"; # Return just the filehandle. return $fh; } } # On Windows under taint mode, File::Spec could suggest "C:\" as a tempdir # which might not be writable. If that is the case, we fallback to a # user directory. See https://rt.cpan.org/Ticket/Display.html?id=60340 { my ($alt_tmpdir, $checked); sub _wrap_file_spec_tmpdir { return File::Spec->tmpdir unless $^O eq "MSWin32" && ${^TAINT}; if ( $checked ) { return $alt_tmpdir ? $alt_tmpdir : File::Spec->tmpdir; } # probe what File::Spec gives and find a fallback my $xxpath = _replace_XX( "X" x 10, 0 ); # First, see if File::Spec->tmpdir is writable my $tmpdir = File::Spec->tmpdir; my $testpath = File::Spec->catdir( $tmpdir, $xxpath ); if (mkdir( $testpath, 0700) ) { $checked = 1; rmdir $testpath; return $tmpdir; } # Next, see if CSIDL_LOCAL_APPDATA is writable require Win32; my $local_app = File::Spec->catdir( Win32::GetFolderPath( Win32::CSIDL_LOCAL_APPDATA() ), 'Temp' ); $testpath = File::Spec->catdir( $local_app, $xxpath ); if ( -e $local_app or mkdir( $local_app, 0700 ) ) { if (mkdir( $testpath, 0700) ) { $checked = 1; rmdir $testpath; return $alt_tmpdir = $local_app; } } # Can't find something writable croak << "HERE"; Couldn't find a writable temp directory in taint mode. Tried: $tmpdir $local_app Try setting and untainting the TMPDIR environment variable. HERE } } #pod =item B #pod #pod This is the recommended interface for creation of temporary #pod directories. By default the directory will not be removed on exit #pod (that is, it won't be temporary; this behaviour can not be changed #pod because of issues with backwards compatibility). To enable removal #pod either use the CLEANUP option which will trigger removal on program #pod exit, or consider using the "newdir" method in the object interface which #pod will allow the directory to be cleaned up when the object goes out of #pod scope. #pod #pod The behaviour of the function depends on the arguments: #pod #pod $tempdir = tempdir(); #pod #pod Create a directory in tmpdir() (see L). #pod #pod $tempdir = tempdir( $template ); #pod #pod Create a directory from the supplied template. This template is #pod similar to that described for tempfile(). `X' characters at the end #pod of the template are replaced with random letters to construct the #pod directory name. At least four `X' characters must be in the template. #pod #pod $tempdir = tempdir ( DIR => $dir ); #pod #pod Specifies the directory to use for the temporary directory. #pod The temporary directory name is derived from an internal template. #pod #pod $tempdir = tempdir ( $template, DIR => $dir ); #pod #pod Prepend the supplied directory name to the template. The template #pod should not include parent directory specifications itself. Any parent #pod directory specifications are removed from the template before #pod prepending the supplied directory. #pod #pod $tempdir = tempdir ( $template, TMPDIR => 1 ); #pod #pod Using the supplied template, create the temporary directory in #pod a standard location for temporary files. Equivalent to doing #pod #pod $tempdir = tempdir ( $template, DIR => File::Spec->tmpdir); #pod #pod but shorter. Parent directory specifications are stripped from the #pod template itself. The C option is ignored if C is set #pod explicitly. Additionally, C is implied if neither a template #pod nor a directory are supplied. #pod #pod $tempdir = tempdir( $template, CLEANUP => 1); #pod #pod Create a temporary directory using the supplied template, but #pod attempt to remove it (and all files inside it) when the program #pod exits. Note that an attempt will be made to remove all files from #pod the directory even if they were not created by this module (otherwise #pod why ask to clean it up?). The directory removal is made with #pod the rmtree() function from the L module. #pod Of course, if the template is not specified, the temporary directory #pod will be created in tmpdir() and will also be removed at program exit. #pod #pod Will croak() if there is an error. #pod #pod Current API available since 0.05. #pod #pod =cut # ' sub tempdir { if ( @_ && $_[0] eq 'File::Temp' ) { croak "'tempdir' can't be called as a method"; } # Can not check for argument count since we can have any # number of args # Default options my %options = ( "CLEANUP" => 0, # Remove directory on exit "DIR" => '', # Root directory "TMPDIR" => 0, # Use tempdir with template ); # Check to see whether we have an odd or even number of arguments my ($maybe_template, $args) = _parse_args(@_); my $template = @$maybe_template ? $maybe_template->[0] : undef; # Read the options and merge with defaults %options = (%options, %$args); # Modify or generate the template # Deal with the DIR and TMPDIR options if (defined $template) { # Need to strip directory path if using DIR or TMPDIR if ($options{'TMPDIR'} || $options{'DIR'}) { # Strip parent directory from the filename # # There is no filename at the end $template = VMS::Filespec::vmspath($template) if $^O eq 'VMS'; my ($volume, $directories, undef) = File::Spec->splitpath( $template, 1); # Last directory is then our template $template = (File::Spec->splitdir($directories))[-1]; # Prepend the supplied directory or temp dir if ($options{"DIR"}) { $template = File::Spec->catdir($options{"DIR"}, $template); } elsif ($options{TMPDIR}) { # Prepend tmpdir $template = File::Spec->catdir(_wrap_file_spec_tmpdir(), $template); } } } else { if ($options{"DIR"}) { $template = File::Spec->catdir($options{"DIR"}, TEMPXXX); } else { $template = File::Spec->catdir(_wrap_file_spec_tmpdir(), TEMPXXX); } } # Create the directory my $tempdir; my $suffixlen = 0; if ($^O eq 'VMS') { # dir names can end in delimiters $template =~ m/([\.\]:>]+)$/; $suffixlen = length($1); } if ( ($^O eq 'MacOS') && (substr($template, -1) eq ':') ) { # dir name has a trailing ':' ++$suffixlen; } my $errstr; croak "Error in tempdir() using $template: $errstr" unless ((undef, $tempdir) = _gettemp($template, "open" => 0, "mkdir"=> 1 , "suffixlen" => $suffixlen, "ErrStr" => \$errstr, ) ); # Install exit handler; must be dynamic to get lexical if ( $options{'CLEANUP'} && -d $tempdir) { _deferred_unlink(undef, $tempdir, 1); } # Return the dir name return $tempdir; } #pod =back #pod #pod =head1 MKTEMP FUNCTIONS #pod #pod The following functions are Perl implementations of the #pod mktemp() family of temp file generation system calls. #pod #pod =over 4 #pod #pod =item B #pod #pod Given a template, returns a filehandle to the temporary file and the name #pod of the file. #pod #pod ($fh, $name) = mkstemp( $template ); #pod #pod In scalar context, just the filehandle is returned. #pod #pod The template may be any filename with some number of X's appended #pod to it, for example F. The trailing X's are replaced #pod with unique alphanumeric combinations. #pod #pod Will croak() if there is an error. #pod #pod Current API available since 0.05. #pod #pod =cut sub mkstemp { croak "Usage: mkstemp(template)" if scalar(@_) != 1; my $template = shift; my ($fh, $path, $errstr); croak "Error in mkstemp using $template: $errstr" unless (($fh, $path) = _gettemp($template, "open" => 1, "mkdir"=> 0 , "suffixlen" => 0, "ErrStr" => \$errstr, ) ); if (wantarray()) { return ($fh, $path); } else { return $fh; } } #pod =item B #pod #pod Similar to mkstemp(), except that an extra argument can be supplied #pod with a suffix to be appended to the template. #pod #pod ($fh, $name) = mkstemps( $template, $suffix ); #pod #pod For example a template of C and suffix of C<.dat> #pod would generate a file similar to F. #pod #pod Returns just the filehandle alone when called in scalar context. #pod #pod Will croak() if there is an error. #pod #pod Current API available since 0.05. #pod #pod =cut sub mkstemps { croak "Usage: mkstemps(template, suffix)" if scalar(@_) != 2; my $template = shift; my $suffix = shift; $template .= $suffix; my ($fh, $path, $errstr); croak "Error in mkstemps using $template: $errstr" unless (($fh, $path) = _gettemp($template, "open" => 1, "mkdir"=> 0 , "suffixlen" => length($suffix), "ErrStr" => \$errstr, ) ); if (wantarray()) { return ($fh, $path); } else { return $fh; } } #pod =item B #pod #pod Create a directory from a template. The template must end in #pod X's that are replaced by the routine. #pod #pod $tmpdir_name = mkdtemp($template); #pod #pod Returns the name of the temporary directory created. #pod #pod Directory must be removed by the caller. #pod #pod Will croak() if there is an error. #pod #pod Current API available since 0.05. #pod #pod =cut #' # for emacs sub mkdtemp { croak "Usage: mkdtemp(template)" if scalar(@_) != 1; my $template = shift; my $suffixlen = 0; if ($^O eq 'VMS') { # dir names can end in delimiters $template =~ m/([\.\]:>]+)$/; $suffixlen = length($1); } if ( ($^O eq 'MacOS') && (substr($template, -1) eq ':') ) { # dir name has a trailing ':' ++$suffixlen; } my ($junk, $tmpdir, $errstr); croak "Error creating temp directory from template $template\: $errstr" unless (($junk, $tmpdir) = _gettemp($template, "open" => 0, "mkdir"=> 1 , "suffixlen" => $suffixlen, "ErrStr" => \$errstr, ) ); return $tmpdir; } #pod =item B #pod #pod Returns a valid temporary filename but does not guarantee #pod that the file will not be opened by someone else. #pod #pod $unopened_file = mktemp($template); #pod #pod Template is the same as that required by mkstemp(). #pod #pod Will croak() if there is an error. #pod #pod Current API available since 0.05. #pod #pod =cut sub mktemp { croak "Usage: mktemp(template)" if scalar(@_) != 1; my $template = shift; my ($tmpname, $junk, $errstr); croak "Error getting name to temp file from template $template: $errstr" unless (($junk, $tmpname) = _gettemp($template, "open" => 0, "mkdir"=> 0 , "suffixlen" => 0, "ErrStr" => \$errstr, ) ); return $tmpname; } #pod =back #pod #pod =head1 POSIX FUNCTIONS #pod #pod This section describes the re-implementation of the tmpnam() #pod and tmpfile() functions described in L #pod using the mkstemp() from this module. #pod #pod Unlike the L implementations, the directory used #pod for the temporary file is not specified in a system include #pod file (C) but simply depends on the choice of tmpdir() #pod returned by L. On some implementations this #pod location can be set using the C environment variable, which #pod may not be secure. #pod If this is a problem, simply use mkstemp() and specify a template. #pod #pod =over 4 #pod #pod =item B #pod #pod When called in scalar context, returns the full name (including path) #pod of a temporary file (uses mktemp()). The only check is that the file does #pod not already exist, but there is no guarantee that that condition will #pod continue to apply. #pod #pod $file = tmpnam(); #pod #pod When called in list context, a filehandle to the open file and #pod a filename are returned. This is achieved by calling mkstemp() #pod after constructing a suitable template. #pod #pod ($fh, $file) = tmpnam(); #pod #pod If possible, this form should be used to prevent possible #pod race conditions. #pod #pod See L for information on the choice of temporary #pod directory for a particular operating system. #pod #pod Will croak() if there is an error. #pod #pod Current API available since 0.05. #pod #pod =cut sub tmpnam { # Retrieve the temporary directory name my $tmpdir = _wrap_file_spec_tmpdir(); # XXX I don't know under what circumstances this occurs, -- xdg 2016-04-02 croak "Error temporary directory is not writable" if $tmpdir eq ''; # Use a ten character template and append to tmpdir my $template = File::Spec->catfile($tmpdir, TEMPXXX); if (wantarray() ) { return mkstemp($template); } else { return mktemp($template); } } #pod =item B #pod #pod Returns the filehandle of a temporary file. #pod #pod $fh = tmpfile(); #pod #pod The file is removed when the filehandle is closed or when the program #pod exits. No access to the filename is provided. #pod #pod If the temporary file can not be created undef is returned. #pod Currently this command will probably not work when the temporary #pod directory is on an NFS file system. #pod #pod Will croak() if there is an error. #pod #pod Available since 0.05. #pod #pod Returning undef if unable to create file added in 0.12. #pod #pod =cut sub tmpfile { # Simply call tmpnam() in a list context my ($fh, $file) = tmpnam(); # Make sure file is removed when filehandle is closed # This will fail on NFS unlink0($fh, $file) or return undef; return $fh; } #pod =back #pod #pod =head1 ADDITIONAL FUNCTIONS #pod #pod These functions are provided for backwards compatibility #pod with common tempfile generation C library functions. #pod #pod They are not exported and must be addressed using the full package #pod name. #pod #pod =over 4 #pod #pod =item B #pod #pod Return the name of a temporary file in the specified directory #pod using a prefix. The file is guaranteed not to exist at the time #pod the function was called, but such guarantees are good for one #pod clock tick only. Always use the proper form of C #pod with C if you must open such a filename. #pod #pod $filename = File::Temp::tempnam( $dir, $prefix ); #pod #pod Equivalent to running mktemp() with $dir/$prefixXXXXXXXX #pod (using unix file convention as an example) #pod #pod Because this function uses mktemp(), it can suffer from race conditions. #pod #pod Will croak() if there is an error. #pod #pod Current API available since 0.05. #pod #pod =cut sub tempnam { croak 'Usage tempnam($dir, $prefix)' unless scalar(@_) == 2; my ($dir, $prefix) = @_; # Add a string to the prefix $prefix .= 'XXXXXXXX'; # Concatenate the directory to the file my $template = File::Spec->catfile($dir, $prefix); return mktemp($template); } #pod =back #pod #pod =head1 UTILITY FUNCTIONS #pod #pod Useful functions for dealing with the filehandle and filename. #pod #pod =over 4 #pod #pod =item B #pod #pod Given an open filehandle and the associated filename, make a safe #pod unlink. This is achieved by first checking that the filename and #pod filehandle initially point to the same file and that the number of #pod links to the file is 1 (all fields returned by stat() are compared). #pod Then the filename is unlinked and the filehandle checked once again to #pod verify that the number of links on that file is now 0. This is the #pod closest you can come to making sure that the filename unlinked was the #pod same as the file whose descriptor you hold. #pod #pod unlink0($fh, $path) #pod or die "Error unlinking file $path safely"; #pod #pod Returns false on error but croaks() if there is a security #pod anomaly. The filehandle is not closed since on some occasions this is #pod not required. #pod #pod On some platforms, for example Windows NT, it is not possible to #pod unlink an open file (the file must be closed first). On those #pod platforms, the actual unlinking is deferred until the program ends and #pod good status is returned. A check is still performed to make sure that #pod the filehandle and filename are pointing to the same thing (but not at #pod the time the end block is executed since the deferred removal may not #pod have access to the filehandle). #pod #pod Additionally, on Windows NT not all the fields returned by stat() can #pod be compared. For example, the C and C fields seem to be #pod different. Also, it seems that the size of the file returned by stat() #pod does not always agree, with C being more accurate than #pod C, presumably because of caching issues even when #pod using autoflush (this is usually overcome by waiting a while after #pod writing to the tempfile before attempting to C it). #pod #pod Finally, on NFS file systems the link count of the file handle does #pod not always go to zero immediately after unlinking. Currently, this #pod command is expected to fail on NFS disks. #pod #pod This function is disabled if the global variable $KEEP_ALL is true #pod and an unlink on open file is supported. If the unlink is to be deferred #pod to the END block, the file is still registered for removal. #pod #pod This function should not be called if you are using the object oriented #pod interface since the it will interfere with the object destructor deleting #pod the file. #pod #pod Available Since 0.05. #pod #pod If can not unlink open file, defer removal until later available since 0.06. #pod #pod =cut sub unlink0 { croak 'Usage: unlink0(filehandle, filename)' unless scalar(@_) == 2; # Read args my ($fh, $path) = @_; cmpstat($fh, $path) or return 0; # attempt remove the file (does not work on some platforms) if (_can_unlink_opened_file()) { # return early (Without unlink) if we have been instructed to retain files. return 1 if $KEEP_ALL; # XXX: do *not* call this on a directory; possible race # resulting in recursive removal croak "unlink0: $path has become a directory!" if -d $path; unlink($path) or return 0; # Stat the filehandle my @fh = stat $fh; print "Link count = $fh[3] \n" if $DEBUG; # Make sure that the link count is zero # - Cygwin provides deferred unlinking, however, # on Win9x the link count remains 1 # On NFS the link count may still be 1 but we can't know that # we are on NFS. Since we can't be sure, we'll defer it return 1 if $fh[3] == 0 || $^O eq 'cygwin'; } # fall-through if we can't unlink now _deferred_unlink($fh, $path, 0); return 1; } #pod =item B #pod #pod Compare C of filehandle with C of provided filename. This #pod can be used to check that the filename and filehandle initially point #pod to the same file and that the number of links to the file is 1 (all #pod fields returned by stat() are compared). #pod #pod cmpstat($fh, $path) #pod or die "Error comparing handle with file"; #pod #pod Returns false if the stat information differs or if the link count is #pod greater than 1. Calls croak if there is a security anomaly. #pod #pod On certain platforms, for example Windows, not all the fields returned by stat() #pod can be compared. For example, the C and C fields seem to be #pod different in Windows. Also, it seems that the size of the file #pod returned by stat() does not always agree, with C being more #pod accurate than C, presumably because of caching issues #pod even when using autoflush (this is usually overcome by waiting a while #pod after writing to the tempfile before attempting to C it). #pod #pod Not exported by default. #pod #pod Current API available since 0.14. #pod #pod =cut sub cmpstat { croak 'Usage: cmpstat(filehandle, filename)' unless scalar(@_) == 2; # Read args my ($fh, $path) = @_; warn "Comparing stat\n" if $DEBUG; # Stat the filehandle - which may be closed if someone has manually # closed the file. Can not turn off warnings without using $^W # unless we upgrade to 5.006 minimum requirement my @fh; { local ($^W) = 0; @fh = stat $fh; } return unless @fh; if ($fh[3] > 1 && $^W) { carp "unlink0: fstat found too many links; SB=@fh" if $^W; } # Stat the path my @path = stat $path; unless (@path) { carp "unlink0: $path is gone already" if $^W; return; } # this is no longer a file, but may be a directory, or worse unless (-f $path) { confess "panic: $path is no longer a file: SB=@fh"; } # Do comparison of each member of the array # On WinNT dev and rdev seem to be different # depending on whether it is a file or a handle. # Cannot simply compare all members of the stat return # Select the ones we can use my @okstat = (0..$#fh); # Use all by default if ($^O eq 'MSWin32') { @okstat = (1,2,3,4,5,7,8,9,10); } elsif ($^O eq 'os2') { @okstat = (0, 2..$#fh); } elsif ($^O eq 'VMS') { # device and file ID are sufficient @okstat = (0, 1); } elsif ($^O eq 'dos') { @okstat = (0,2..7,11..$#fh); } elsif ($^O eq 'mpeix') { @okstat = (0..4,8..10); } # Now compare each entry explicitly by number for (@okstat) { print "Comparing: $_ : $fh[$_] and $path[$_]\n" if $DEBUG; # Use eq rather than == since rdev, blksize, and blocks (6, 11, # and 12) will be '' on platforms that do not support them. This # is fine since we are only comparing integers. unless ($fh[$_] eq $path[$_]) { warn "Did not match $_ element of stat\n" if $DEBUG; return 0; } } return 1; } #pod =item B #pod #pod Similar to C except after file comparison using cmpstat, the #pod filehandle is closed prior to attempting to unlink the file. This #pod allows the file to be removed without using an END block, but does #pod mean that the post-unlink comparison of the filehandle state provided #pod by C is not available. #pod #pod unlink1($fh, $path) #pod or die "Error closing and unlinking file"; #pod #pod Usually called from the object destructor when using the OO interface. #pod #pod Not exported by default. #pod #pod This function is disabled if the global variable $KEEP_ALL is true. #pod #pod Can call croak() if there is a security anomaly during the stat() #pod comparison. #pod #pod Current API available since 0.14. #pod #pod =cut sub unlink1 { croak 'Usage: unlink1(filehandle, filename)' unless scalar(@_) == 2; # Read args my ($fh, $path) = @_; cmpstat($fh, $path) or return 0; # Close the file close( $fh ) or return 0; # Make sure the file is writable (for windows) _force_writable( $path ); # return early (without unlink) if we have been instructed to retain files. return 1 if $KEEP_ALL; # remove the file return unlink($path); } #pod =item B #pod #pod Calling this function will cause any temp files or temp directories #pod that are registered for removal to be removed. This happens automatically #pod when the process exits but can be triggered manually if the caller is sure #pod that none of the temp files are required. This method can be registered as #pod an Apache callback. #pod #pod Note that if a temp directory is your current directory, it cannot be #pod removed. C out of the directory first before calling #pod C. (For the cleanup at program exit when the CLEANUP flag #pod is set, this happens automatically.) #pod #pod On OSes where temp files are automatically removed when the temp file #pod is closed, calling this function will have no effect other than to remove #pod temporary directories (which may include temporary files). #pod #pod File::Temp::cleanup(); #pod #pod Not exported by default. #pod #pod Current API available since 0.15. #pod #pod =back #pod #pod =head1 PACKAGE VARIABLES #pod #pod These functions control the global state of the package. #pod #pod =over 4 #pod #pod =item B #pod #pod Controls the lengths to which the module will go to check the safety of the #pod temporary file or directory before proceeding. #pod Options are: #pod #pod =over 8 #pod #pod =item STANDARD #pod #pod Do the basic security measures to ensure the directory exists and is #pod writable, that temporary files are opened only if they do not already #pod exist, and that possible race conditions are avoided. Finally the #pod L function is used to remove files safely. #pod #pod =item MEDIUM #pod #pod In addition to the STANDARD security, the output directory is checked #pod to make sure that it is owned either by root or the user running the #pod program. If the directory is writable by group or by other, it is then #pod checked to make sure that the sticky bit is set. #pod #pod Will not work on platforms that do not support the C<-k> test #pod for sticky bit. #pod #pod =item HIGH #pod #pod In addition to the MEDIUM security checks, also check for the #pod possibility of ``chown() giveaway'' using the L #pod sysconf() function. If this is a possibility, each directory in the #pod path is checked in turn for safeness, recursively walking back to the #pod root directory. #pod #pod For platforms that do not support the L #pod C<_PC_CHOWN_RESTRICTED> symbol (for example, Windows NT) it is #pod assumed that ``chown() giveaway'' is possible and the recursive test #pod is performed. #pod #pod =back #pod #pod The level can be changed as follows: #pod #pod File::Temp->safe_level( File::Temp::HIGH ); #pod #pod The level constants are not exported by the module. #pod #pod Currently, you must be running at least perl v5.6.0 in order to #pod run with MEDIUM or HIGH security. This is simply because the #pod safety tests use functions from L that are not #pod available in older versions of perl. The problem is that the version #pod number for Fcntl is the same in perl 5.6.0 and in 5.005_03 even though #pod they are different versions. #pod #pod On systems that do not support the HIGH or MEDIUM safety levels #pod (for example Win NT or OS/2) any attempt to change the level will #pod be ignored. The decision to ignore rather than raise an exception #pod allows portable programs to be written with high security in mind #pod for the systems that can support this without those programs failing #pod on systems where the extra tests are irrelevant. #pod #pod If you really need to see whether the change has been accepted #pod simply examine the return value of C. #pod #pod $newlevel = File::Temp->safe_level( File::Temp::HIGH ); #pod die "Could not change to high security" #pod if $newlevel != File::Temp::HIGH; #pod #pod Available since 0.05. #pod #pod =cut { # protect from using the variable itself my $LEVEL = STANDARD; sub safe_level { my $self = shift; if (@_) { my $level = shift; if (($level != STANDARD) && ($level != MEDIUM) && ($level != HIGH)) { carp "safe_level: Specified level ($level) not STANDARD, MEDIUM or HIGH - ignoring\n" if $^W; } else { # Don't allow this on perl 5.005 or earlier if ($] < 5.006 && $level != STANDARD) { # Cant do MEDIUM or HIGH checks croak "Currently requires perl 5.006 or newer to do the safe checks"; } # Check that we are allowed to change level # Silently ignore if we can not. $LEVEL = $level if _can_do_level($level); } } return $LEVEL; } } #pod =item TopSystemUID #pod #pod This is the highest UID on the current system that refers to a root #pod UID. This is used to make sure that the temporary directory is #pod owned by a system UID (C, C, C etc) rather than #pod simply by root. #pod #pod This is required since on many unix systems C is not owned #pod by root. #pod #pod Default is to assume that any UID less than or equal to 10 is a root #pod UID. #pod #pod File::Temp->top_system_uid(10); #pod my $topid = File::Temp->top_system_uid; #pod #pod This value can be adjusted to reduce security checking if required. #pod The value is only relevant when C is set to MEDIUM or higher. #pod #pod Available since 0.05. #pod #pod =cut { my $TopSystemUID = 10; $TopSystemUID = 197108 if $^O eq 'interix'; # "Administrator" sub top_system_uid { my $self = shift; if (@_) { my $newuid = shift; croak "top_system_uid: UIDs should be numeric" unless $newuid =~ /^\d+$/s; $TopSystemUID = $newuid; } return $TopSystemUID; } } #pod =item B<$KEEP_ALL> #pod #pod Controls whether temporary files and directories should be retained #pod regardless of any instructions in the program to remove them #pod automatically. This is useful for debugging but should not be used in #pod production code. #pod #pod $File::Temp::KEEP_ALL = 1; #pod #pod Default is for files to be removed as requested by the caller. #pod #pod In some cases, files will only be retained if this variable is true #pod when the file is created. This means that you can not create a temporary #pod file, set this variable and expect the temp file to still be around #pod when the program exits. #pod #pod =item B<$DEBUG> #pod #pod Controls whether debugging messages should be enabled. #pod #pod $File::Temp::DEBUG = 1; #pod #pod Default is for debugging mode to be disabled. #pod #pod Available since 0.15. #pod #pod =back #pod #pod =head1 WARNING #pod #pod For maximum security, endeavour always to avoid ever looking at, #pod touching, or even imputing the existence of the filename. You do not #pod know that that filename is connected to the same file as the handle #pod you have, and attempts to check this can only trigger more race #pod conditions. It's far more secure to use the filehandle alone and #pod dispense with the filename altogether. #pod #pod If you need to pass the handle to something that expects a filename #pod then on a unix system you can use C<"/dev/fd/" . fileno($fh)> for #pod arbitrary programs. Perl code that uses the 2-argument version of #pod C<< open >> can be passed C<< "+<=&" . fileno($fh) >>. Otherwise you #pod will need to pass the filename. You will have to clear the #pod close-on-exec bit on that file descriptor before passing it to another #pod process. #pod #pod use Fcntl qw/F_SETFD F_GETFD/; #pod fcntl($tmpfh, F_SETFD, 0) #pod or die "Can't clear close-on-exec flag on temp fh: $!\n"; #pod #pod =head2 Temporary files and NFS #pod #pod Some problems are associated with using temporary files that reside #pod on NFS file systems and it is recommended that a local filesystem #pod is used whenever possible. Some of the security tests will most probably #pod fail when the temp file is not local. Additionally, be aware that #pod the performance of I/O operations over NFS will not be as good as for #pod a local disk. #pod #pod =head2 Forking #pod #pod In some cases files created by File::Temp are removed from within an #pod END block. Since END blocks are triggered when a child process exits #pod (unless C is used by the child) File::Temp takes care #pod to only remove those temp files created by a particular process ID. This #pod means that a child will not attempt to remove temp files created by the #pod parent process. #pod #pod If you are forking many processes in parallel that are all creating #pod temporary files, you may need to reset the random number seed using #pod srand(EXPR) in each child else all the children will attempt to walk #pod through the same set of random file names and may well cause #pod themselves to give up if they exceed the number of retry attempts. #pod #pod =head2 Directory removal #pod #pod Note that if you have chdir'ed into the temporary directory and it is #pod subsequently cleaned up (either in the END block or as part of object #pod destruction), then you will get a warning from File::Path::rmtree(). #pod #pod =head2 Taint mode #pod #pod If you need to run code under taint mode, updating to the latest #pod L is highly recommended. On Windows, if the directory #pod given by L isn't writable, File::Temp will attempt #pod to fallback to the user's local application data directory or croak #pod with an error. #pod #pod =head2 BINMODE #pod #pod The file returned by File::Temp will have been opened in binary mode #pod if such a mode is available. If that is not correct, use the C #pod function to change the mode of the filehandle. #pod #pod Note that you can modify the encoding of a file opened by File::Temp #pod also by using C. #pod #pod =head1 HISTORY #pod #pod Originally began life in May 1999 as an XS interface to the system #pod mkstemp() function. In March 2000, the OpenBSD mkstemp() code was #pod translated to Perl for total control of the code's #pod security checking, to ensure the presence of the function regardless of #pod operating system and to help with portability. The module was shipped #pod as a standard part of perl from v5.6.1. #pod #pod Thanks to Tom Christiansen for suggesting that this module #pod should be written and providing ideas for code improvements and #pod security enhancements. #pod #pod =head1 SEE ALSO #pod #pod L, L, L, L #pod #pod See L and L, L for #pod different implementations of temporary file handling. #pod #pod See L for an alternative object-oriented wrapper for #pod the C function. #pod #pod =cut package ## hide from PAUSE File::Temp::Dir; our $VERSION = '0.2311'; use File::Path qw/ rmtree /; use strict; use overload '""' => "STRINGIFY", '0+' => \&File::Temp::NUMIFY, fallback => 1; # private class specifically to support tempdir objects # created by File::Temp->newdir # ostensibly the same method interface as File::Temp but without # inheriting all the IO::Seekable methods and other cruft # Read-only - returns the name of the temp directory sub dirname { my $self = shift; return $self->{DIRNAME}; } sub STRINGIFY { my $self = shift; return $self->dirname; } sub unlink_on_destroy { my $self = shift; if (@_) { $self->{CLEANUP} = shift; } return $self->{CLEANUP}; } sub DESTROY { my $self = shift; local($., $@, $!, $^E, $?); if ($self->unlink_on_destroy && $$ == $self->{LAUNCHPID} && !$File::Temp::KEEP_ALL) { if (-d $self->{REALNAME}) { # Some versions of rmtree will abort if you attempt to remove # the directory you are sitting in. We protect that and turn it # into a warning. We do this because this occurs during object # destruction and so can not be caught by the user. eval { rmtree($self->{REALNAME}, $File::Temp::DEBUG, 0); }; warn $@ if ($@ && $^W); } } } 1; # vim: ts=2 sts=2 sw=2 et: __END__ =pod =encoding UTF-8 =head1 NAME File::Temp - return name and handle of a temporary file safely =head1 VERSION version 0.2311 =head1 SYNOPSIS use File::Temp qw/ tempfile tempdir /; $fh = tempfile(); ($fh, $filename) = tempfile(); ($fh, $filename) = tempfile( $template, DIR => $dir); ($fh, $filename) = tempfile( $template, SUFFIX => '.dat'); ($fh, $filename) = tempfile( $template, TMPDIR => 1 ); binmode( $fh, ":utf8" ); $dir = tempdir( CLEANUP => 1 ); ($fh, $filename) = tempfile( DIR => $dir ); Object interface: require File::Temp; use File::Temp (); use File::Temp qw/ :seekable /; $fh = File::Temp->new(); $fname = $fh->filename; $fh = File::Temp->new(TEMPLATE => $template); $fname = $fh->filename; $tmp = File::Temp->new( UNLINK => 0, SUFFIX => '.dat' ); print $tmp "Some data\n"; print "Filename is $tmp\n"; $tmp->seek( 0, SEEK_END ); $dir = File::Temp->newdir(); # CLEANUP => 1 by default The following interfaces are provided for compatibility with existing APIs. They should not be used in new code. MkTemp family: use File::Temp qw/ :mktemp /; ($fh, $file) = mkstemp( "tmpfileXXXXX" ); ($fh, $file) = mkstemps( "tmpfileXXXXXX", $suffix); $tmpdir = mkdtemp( $template ); $unopened_file = mktemp( $template ); POSIX functions: use File::Temp qw/ :POSIX /; $file = tmpnam(); $fh = tmpfile(); ($fh, $file) = tmpnam(); Compatibility functions: $unopened_file = File::Temp::tempnam( $dir, $pfx ); =head1 DESCRIPTION C can be used to create and open temporary files in a safe way. There is both a function interface and an object-oriented interface. The File::Temp constructor or the tempfile() function can be used to return the name and the open filehandle of a temporary file. The tempdir() function can be used to create a temporary directory. The security aspect of temporary file creation is emphasized such that a filehandle and filename are returned together. This helps guarantee that a race condition can not occur where the temporary file is created by another process between checking for the existence of the file and its opening. Additional security levels are provided to check, for example, that the sticky bit is set on world writable directories. See L<"safe_level"> for more information. For compatibility with popular C library functions, Perl implementations of the mkstemp() family of functions are provided. These are, mkstemp(), mkstemps(), mkdtemp() and mktemp(). Additionally, implementations of the standard L tmpnam() and tmpfile() functions are provided if required. Implementations of mktemp(), tmpnam(), and tempnam() are provided, but should be used with caution since they return only a filename that was valid when function was called, so cannot guarantee that the file will not exist by the time the caller opens the filename. Filehandles returned by these functions support the seekable methods. =begin :__INTERNALS =head1 PORTABILITY This section is at the top in order to provide easier access to porters. It is not expected to be rendered by a standard pod formatting tool. Please skip straight to the SYNOPSIS section if you are not trying to port this module to a new platform. This module is designed to be portable across operating systems and it currently supports Unix, VMS, DOS, OS/2, Windows and Mac OS (Classic). When porting to a new OS there are generally three main issues that have to be solved: =over 4 =item * Can the OS unlink an open file? If it can not then the C<_can_unlink_opened_file> method should be modified. =item * Are the return values from C reliable? By default all the return values from C are compared when unlinking a temporary file using the filename and the handle. Operating systems other than unix do not always have valid entries in all fields. If utility function C fails then the C comparison should be modified accordingly. =item * Security. Systems that can not support a test for the sticky bit on a directory can not use the MEDIUM and HIGH security tests. The C<_can_do_level> method should be modified accordingly. =back =end :__INTERNALS =head1 OBJECT-ORIENTED INTERFACE This is the primary interface for interacting with C. Using the OO interface a temporary file can be created when the object is constructed and the file can be removed when the object is no longer required. Note that there is no method to obtain the filehandle from the C object. The object itself acts as a filehandle. The object isa C and isa C so all those methods are available. Also, the object is configured such that it stringifies to the name of the temporary file and so can be compared to a filename directly. It numifies to the C the same as other handles and so can be compared to other handles with C<==>. $fh eq $filename # as a string $fh != \*STDOUT # as a number Available since 0.14. =over 4 =item B Create a temporary file object. my $tmp = File::Temp->new(); by default the object is constructed as if C was called without options, but with the additional behaviour that the temporary file is removed by the object destructor if UNLINK is set to true (the default). Supported arguments are the same as for C: UNLINK (defaulting to true), DIR, EXLOCK, PERMS and SUFFIX. Additionally, the filename template is specified using the TEMPLATE option. The OPEN option is not supported (the file is always opened). $tmp = File::Temp->new( TEMPLATE => 'tempXXXXX', DIR => 'mydir', SUFFIX => '.dat'); Arguments are case insensitive. Can call croak() if an error occurs. Available since 0.14. TEMPLATE available since 0.23 =item B Create a temporary directory using an object oriented interface. $dir = File::Temp->newdir(); By default the directory is deleted when the object goes out of scope. Supports the same options as the C function. Note that directories created with this method default to CLEANUP => 1. $dir = File::Temp->newdir( $template, %options ); A template may be specified either with a leading template or with a TEMPLATE argument. Available since 0.19. TEMPLATE available since 0.23. =item B Return the name of the temporary file associated with this object (if the object was created using the "new" constructor). $filename = $tmp->filename; This method is called automatically when the object is used as a string. Current API available since 0.14 =item B Return the name of the temporary directory associated with this object (if the object was created using the "newdir" constructor). $dirname = $tmpdir->dirname; This method is called automatically when the object is used in string context. =item B Control whether the file is unlinked when the object goes out of scope. The file is removed if this value is true and $KEEP_ALL is not. $fh->unlink_on_destroy( 1 ); Default is for the file to be removed. Current API available since 0.15 =item B When the object goes out of scope, the destructor is called. This destructor will attempt to unlink the file (using L) if the constructor was called with UNLINK set to 1 (the default state if UNLINK is not specified). No error is given if the unlink fails. If the object has been passed to a child process during a fork, the file will be deleted when the object goes out of scope in the parent. For a temporary directory object the directory will be removed unless the CLEANUP argument was used in the constructor (and set to false) or C was modified after creation. Note that if a temp directory is your current directory, it cannot be removed - a warning will be given in this case. C out of the directory before letting the object go out of scope. If the global variable $KEEP_ALL is true, the file or directory will not be removed. =back =head1 FUNCTIONS This section describes the recommended interface for generating temporary files and directories. =over 4 =item B This is the basic function to generate temporary files. The behaviour of the file can be changed using various options: $fh = tempfile(); ($fh, $filename) = tempfile(); Create a temporary file in the directory specified for temporary files, as specified by the tmpdir() function in L. ($fh, $filename) = tempfile($template); Create a temporary file in the current directory using the supplied template. Trailing `X' characters are replaced with random letters to generate the filename. At least four `X' characters must be present at the end of the template. ($fh, $filename) = tempfile($template, SUFFIX => $suffix) Same as previously, except that a suffix is added to the template after the `X' translation. Useful for ensuring that a temporary filename has a particular extension when needed by other applications. But see the WARNING at the end. ($fh, $filename) = tempfile($template, DIR => $dir); Translates the template as before except that a directory name is specified. ($fh, $filename) = tempfile($template, TMPDIR => 1); Equivalent to specifying a DIR of "File::Spec->tmpdir", writing the file into the same temporary directory as would be used if no template was specified at all. ($fh, $filename) = tempfile($template, UNLINK => 1); Return the filename and filehandle as before except that the file is automatically removed when the program exits (dependent on $KEEP_ALL). Default is for the file to be removed if a file handle is requested and to be kept if the filename is requested. In a scalar context (where no filename is returned) the file is always deleted either (depending on the operating system) on exit or when it is closed (unless $KEEP_ALL is true when the temp file is created). Use the object-oriented interface if fine-grained control of when a file is removed is required. If the template is not specified, a template is always automatically generated. This temporary file is placed in tmpdir() (L) unless a directory is specified explicitly with the DIR option. $fh = tempfile( DIR => $dir ); If called in scalar context, only the filehandle is returned and the file will automatically be deleted when closed on operating systems that support this (see the description of tmpfile() elsewhere in this document). This is the preferred mode of operation, as if you only have a filehandle, you can never create a race condition by fumbling with the filename. On systems that can not unlink an open file or can not mark a file as temporary when it is opened (for example, Windows NT uses the C flag) the file is marked for deletion when the program ends (equivalent to setting UNLINK to 1). The C flag is ignored if present. (undef, $filename) = tempfile($template, OPEN => 0); This will return the filename based on the template but will not open this file. Cannot be used in conjunction with UNLINK set to true. Default is to always open the file to protect from possible race conditions. A warning is issued if warnings are turned on. Consider using the tmpnam() and mktemp() functions described elsewhere in this document if opening the file is not required. To open the temporary filehandle with O_EXLOCK (open with exclusive file lock) use C<< EXLOCK=>1 >>. This is supported only by some operating systems (most notably BSD derived systems). By default EXLOCK will be false. Former C versions set EXLOCK to true, so to be sure to get an unlocked filehandle also with older versions, explicitly set C<< EXLOCK=>0 >>. ($fh, $filename) = tempfile($template, EXLOCK => 1); By default, the temp file is created with 0600 file permissions. Use C to change this: ($fh, $filename) = tempfile($template, PERMS => 0666); Options can be combined as required. Will croak() if there is an error. Available since 0.05. UNLINK flag available since 0.10. TMPDIR flag available since 0.19. EXLOCK flag available since 0.19. PERMS flag available since 0.2310. =item B This is the recommended interface for creation of temporary directories. By default the directory will not be removed on exit (that is, it won't be temporary; this behaviour can not be changed because of issues with backwards compatibility). To enable removal either use the CLEANUP option which will trigger removal on program exit, or consider using the "newdir" method in the object interface which will allow the directory to be cleaned up when the object goes out of scope. The behaviour of the function depends on the arguments: $tempdir = tempdir(); Create a directory in tmpdir() (see L). $tempdir = tempdir( $template ); Create a directory from the supplied template. This template is similar to that described for tempfile(). `X' characters at the end of the template are replaced with random letters to construct the directory name. At least four `X' characters must be in the template. $tempdir = tempdir ( DIR => $dir ); Specifies the directory to use for the temporary directory. The temporary directory name is derived from an internal template. $tempdir = tempdir ( $template, DIR => $dir ); Prepend the supplied directory name to the template. The template should not include parent directory specifications itself. Any parent directory specifications are removed from the template before prepending the supplied directory. $tempdir = tempdir ( $template, TMPDIR => 1 ); Using the supplied template, create the temporary directory in a standard location for temporary files. Equivalent to doing $tempdir = tempdir ( $template, DIR => File::Spec->tmpdir); but shorter. Parent directory specifications are stripped from the template itself. The C option is ignored if C is set explicitly. Additionally, C is implied if neither a template nor a directory are supplied. $tempdir = tempdir( $template, CLEANUP => 1); Create a temporary directory using the supplied template, but attempt to remove it (and all files inside it) when the program exits. Note that an attempt will be made to remove all files from the directory even if they were not created by this module (otherwise why ask to clean it up?). The directory removal is made with the rmtree() function from the L module. Of course, if the template is not specified, the temporary directory will be created in tmpdir() and will also be removed at program exit. Will croak() if there is an error. Current API available since 0.05. =back =head1 MKTEMP FUNCTIONS The following functions are Perl implementations of the mktemp() family of temp file generation system calls. =over 4 =item B Given a template, returns a filehandle to the temporary file and the name of the file. ($fh, $name) = mkstemp( $template ); In scalar context, just the filehandle is returned. The template may be any filename with some number of X's appended to it, for example F. The trailing X's are replaced with unique alphanumeric combinations. Will croak() if there is an error. Current API available since 0.05. =item B Similar to mkstemp(), except that an extra argument can be supplied with a suffix to be appended to the template. ($fh, $name) = mkstemps( $template, $suffix ); For example a template of C and suffix of C<.dat> would generate a file similar to F. Returns just the filehandle alone when called in scalar context. Will croak() if there is an error. Current API available since 0.05. =item B Create a directory from a template. The template must end in X's that are replaced by the routine. $tmpdir_name = mkdtemp($template); Returns the name of the temporary directory created. Directory must be removed by the caller. Will croak() if there is an error. Current API available since 0.05. =item B Returns a valid temporary filename but does not guarantee that the file will not be opened by someone else. $unopened_file = mktemp($template); Template is the same as that required by mkstemp(). Will croak() if there is an error. Current API available since 0.05. =back =head1 POSIX FUNCTIONS This section describes the re-implementation of the tmpnam() and tmpfile() functions described in L using the mkstemp() from this module. Unlike the L implementations, the directory used for the temporary file is not specified in a system include file (C) but simply depends on the choice of tmpdir() returned by L. On some implementations this location can be set using the C environment variable, which may not be secure. If this is a problem, simply use mkstemp() and specify a template. =over 4 =item B When called in scalar context, returns the full name (including path) of a temporary file (uses mktemp()). The only check is that the file does not already exist, but there is no guarantee that that condition will continue to apply. $file = tmpnam(); When called in list context, a filehandle to the open file and a filename are returned. This is achieved by calling mkstemp() after constructing a suitable template. ($fh, $file) = tmpnam(); If possible, this form should be used to prevent possible race conditions. See L for information on the choice of temporary directory for a particular operating system. Will croak() if there is an error. Current API available since 0.05. =item B Returns the filehandle of a temporary file. $fh = tmpfile(); The file is removed when the filehandle is closed or when the program exits. No access to the filename is provided. If the temporary file can not be created undef is returned. Currently this command will probably not work when the temporary directory is on an NFS file system. Will croak() if there is an error. Available since 0.05. Returning undef if unable to create file added in 0.12. =back =head1 ADDITIONAL FUNCTIONS These functions are provided for backwards compatibility with common tempfile generation C library functions. They are not exported and must be addressed using the full package name. =over 4 =item B Return the name of a temporary file in the specified directory using a prefix. The file is guaranteed not to exist at the time the function was called, but such guarantees are good for one clock tick only. Always use the proper form of C with C if you must open such a filename. $filename = File::Temp::tempnam( $dir, $prefix ); Equivalent to running mktemp() with $dir/$prefixXXXXXXXX (using unix file convention as an example) Because this function uses mktemp(), it can suffer from race conditions. Will croak() if there is an error. Current API available since 0.05. =back =head1 UTILITY FUNCTIONS Useful functions for dealing with the filehandle and filename. =over 4 =item B Given an open filehandle and the associated filename, make a safe unlink. This is achieved by first checking that the filename and filehandle initially point to the same file and that the number of links to the file is 1 (all fields returned by stat() are compared). Then the filename is unlinked and the filehandle checked once again to verify that the number of links on that file is now 0. This is the closest you can come to making sure that the filename unlinked was the same as the file whose descriptor you hold. unlink0($fh, $path) or die "Error unlinking file $path safely"; Returns false on error but croaks() if there is a security anomaly. The filehandle is not closed since on some occasions this is not required. On some platforms, for example Windows NT, it is not possible to unlink an open file (the file must be closed first). On those platforms, the actual unlinking is deferred until the program ends and good status is returned. A check is still performed to make sure that the filehandle and filename are pointing to the same thing (but not at the time the end block is executed since the deferred removal may not have access to the filehandle). Additionally, on Windows NT not all the fields returned by stat() can be compared. For example, the C and C fields seem to be different. Also, it seems that the size of the file returned by stat() does not always agree, with C being more accurate than C, presumably because of caching issues even when using autoflush (this is usually overcome by waiting a while after writing to the tempfile before attempting to C it). Finally, on NFS file systems the link count of the file handle does not always go to zero immediately after unlinking. Currently, this command is expected to fail on NFS disks. This function is disabled if the global variable $KEEP_ALL is true and an unlink on open file is supported. If the unlink is to be deferred to the END block, the file is still registered for removal. This function should not be called if you are using the object oriented interface since the it will interfere with the object destructor deleting the file. Available Since 0.05. If can not unlink open file, defer removal until later available since 0.06. =item B Compare C of filehandle with C of provided filename. This can be used to check that the filename and filehandle initially point to the same file and that the number of links to the file is 1 (all fields returned by stat() are compared). cmpstat($fh, $path) or die "Error comparing handle with file"; Returns false if the stat information differs or if the link count is greater than 1. Calls croak if there is a security anomaly. On certain platforms, for example Windows, not all the fields returned by stat() can be compared. For example, the C and C fields seem to be different in Windows. Also, it seems that the size of the file returned by stat() does not always agree, with C being more accurate than C, presumably because of caching issues even when using autoflush (this is usually overcome by waiting a while after writing to the tempfile before attempting to C it). Not exported by default. Current API available since 0.14. =item B Similar to C except after file comparison using cmpstat, the filehandle is closed prior to attempting to unlink the file. This allows the file to be removed without using an END block, but does mean that the post-unlink comparison of the filehandle state provided by C is not available. unlink1($fh, $path) or die "Error closing and unlinking file"; Usually called from the object destructor when using the OO interface. Not exported by default. This function is disabled if the global variable $KEEP_ALL is true. Can call croak() if there is a security anomaly during the stat() comparison. Current API available since 0.14. =item B Calling this function will cause any temp files or temp directories that are registered for removal to be removed. This happens automatically when the process exits but can be triggered manually if the caller is sure that none of the temp files are required. This method can be registered as an Apache callback. Note that if a temp directory is your current directory, it cannot be removed. C out of the directory first before calling C. (For the cleanup at program exit when the CLEANUP flag is set, this happens automatically.) On OSes where temp files are automatically removed when the temp file is closed, calling this function will have no effect other than to remove temporary directories (which may include temporary files). File::Temp::cleanup(); Not exported by default. Current API available since 0.15. =back =head1 PACKAGE VARIABLES These functions control the global state of the package. =over 4 =item B Controls the lengths to which the module will go to check the safety of the temporary file or directory before proceeding. Options are: =over 8 =item STANDARD Do the basic security measures to ensure the directory exists and is writable, that temporary files are opened only if they do not already exist, and that possible race conditions are avoided. Finally the L function is used to remove files safely. =item MEDIUM In addition to the STANDARD security, the output directory is checked to make sure that it is owned either by root or the user running the program. If the directory is writable by group or by other, it is then checked to make sure that the sticky bit is set. Will not work on platforms that do not support the C<-k> test for sticky bit. =item HIGH In addition to the MEDIUM security checks, also check for the possibility of ``chown() giveaway'' using the L sysconf() function. If this is a possibility, each directory in the path is checked in turn for safeness, recursively walking back to the root directory. For platforms that do not support the L C<_PC_CHOWN_RESTRICTED> symbol (for example, Windows NT) it is assumed that ``chown() giveaway'' is possible and the recursive test is performed. =back The level can be changed as follows: File::Temp->safe_level( File::Temp::HIGH ); The level constants are not exported by the module. Currently, you must be running at least perl v5.6.0 in order to run with MEDIUM or HIGH security. This is simply because the safety tests use functions from L that are not available in older versions of perl. The problem is that the version number for Fcntl is the same in perl 5.6.0 and in 5.005_03 even though they are different versions. On systems that do not support the HIGH or MEDIUM safety levels (for example Win NT or OS/2) any attempt to change the level will be ignored. The decision to ignore rather than raise an exception allows portable programs to be written with high security in mind for the systems that can support this without those programs failing on systems where the extra tests are irrelevant. If you really need to see whether the change has been accepted simply examine the return value of C. $newlevel = File::Temp->safe_level( File::Temp::HIGH ); die "Could not change to high security" if $newlevel != File::Temp::HIGH; Available since 0.05. =item TopSystemUID This is the highest UID on the current system that refers to a root UID. This is used to make sure that the temporary directory is owned by a system UID (C, C, C etc) rather than simply by root. This is required since on many unix systems C is not owned by root. Default is to assume that any UID less than or equal to 10 is a root UID. File::Temp->top_system_uid(10); my $topid = File::Temp->top_system_uid; This value can be adjusted to reduce security checking if required. The value is only relevant when C is set to MEDIUM or higher. Available since 0.05. =item B<$KEEP_ALL> Controls whether temporary files and directories should be retained regardless of any instructions in the program to remove them automatically. This is useful for debugging but should not be used in production code. $File::Temp::KEEP_ALL = 1; Default is for files to be removed as requested by the caller. In some cases, files will only be retained if this variable is true when the file is created. This means that you can not create a temporary file, set this variable and expect the temp file to still be around when the program exits. =item B<$DEBUG> Controls whether debugging messages should be enabled. $File::Temp::DEBUG = 1; Default is for debugging mode to be disabled. Available since 0.15. =back =head1 WARNING For maximum security, endeavour always to avoid ever looking at, touching, or even imputing the existence of the filename. You do not know that that filename is connected to the same file as the handle you have, and attempts to check this can only trigger more race conditions. It's far more secure to use the filehandle alone and dispense with the filename altogether. If you need to pass the handle to something that expects a filename then on a unix system you can use C<"/dev/fd/" . fileno($fh)> for arbitrary programs. Perl code that uses the 2-argument version of C<< open >> can be passed C<< "+<=&" . fileno($fh) >>. Otherwise you will need to pass the filename. You will have to clear the close-on-exec bit on that file descriptor before passing it to another process. use Fcntl qw/F_SETFD F_GETFD/; fcntl($tmpfh, F_SETFD, 0) or die "Can't clear close-on-exec flag on temp fh: $!\n"; =head2 Temporary files and NFS Some problems are associated with using temporary files that reside on NFS file systems and it is recommended that a local filesystem is used whenever possible. Some of the security tests will most probably fail when the temp file is not local. Additionally, be aware that the performance of I/O operations over NFS will not be as good as for a local disk. =head2 Forking In some cases files created by File::Temp are removed from within an END block. Since END blocks are triggered when a child process exits (unless C is used by the child) File::Temp takes care to only remove those temp files created by a particular process ID. This means that a child will not attempt to remove temp files created by the parent process. If you are forking many processes in parallel that are all creating temporary files, you may need to reset the random number seed using srand(EXPR) in each child else all the children will attempt to walk through the same set of random file names and may well cause themselves to give up if they exceed the number of retry attempts. =head2 Directory removal Note that if you have chdir'ed into the temporary directory and it is subsequently cleaned up (either in the END block or as part of object destruction), then you will get a warning from File::Path::rmtree(). =head2 Taint mode If you need to run code under taint mode, updating to the latest L is highly recommended. On Windows, if the directory given by L isn't writable, File::Temp will attempt to fallback to the user's local application data directory or croak with an error. =head2 BINMODE The file returned by File::Temp will have been opened in binary mode if such a mode is available. If that is not correct, use the C function to change the mode of the filehandle. Note that you can modify the encoding of a file opened by File::Temp also by using C. =head1 HISTORY Originally began life in May 1999 as an XS interface to the system mkstemp() function. In March 2000, the OpenBSD mkstemp() code was translated to Perl for total control of the code's security checking, to ensure the presence of the function regardless of operating system and to help with portability. The module was shipped as a standard part of perl from v5.6.1. Thanks to Tom Christiansen for suggesting that this module should be written and providing ideas for code improvements and security enhancements. =head1 SEE ALSO L, L, L, L See L and L, L for different implementations of temporary file handling. See L for an alternative object-oriented wrapper for the C function. =for Pod::Coverage STRINGIFY NUMIFY top_system_uid =head1 SUPPORT Bugs may be submitted through L (or L). There is also a mailing list available for users of this distribution, at L. There is also an irc channel available for users of this distribution, at L on C|irc://irc.perl.org/#toolchain>. =head1 AUTHOR Tim Jenness =head1 CONTRIBUTORS =for stopwords Tim Jenness Karen Etheridge David Golden Slaven Rezic mohawk2 Roy Ivy III Peter Rabbitson Olivier Mengué John Acklam Gim Yee Nicolas R Brian Mowrey Dagfinn Ilmari Mannsåker Steinbrunner Ed Avis Guillem Jover James E. Keenan Kevin Ryde Ben Tilly =over 4 =item * Tim Jenness =item * Karen Etheridge =item * David Golden =item * Slaven Rezic =item * mohawk2 =item * Roy Ivy III =item * Peter Rabbitson =item * Olivier Mengué =item * Peter John Acklam =item * Tim Gim Yee =item * Nicolas R =item * Brian Mowrey =item * Dagfinn Ilmari Mannsåker =item * David Steinbrunner =item * Ed Avis =item * Guillem Jover =item * James E. Keenan =item * Kevin Ryde =item * Ben Tilly =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2020 by Tim Jenness and the UK Particle Physics and Astronomy Research Council. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut FILE6c0dc0cf/FileHandle.pmpackage FileHandle; use 5.006; use strict; our($VERSION, @ISA, @EXPORT, @EXPORT_OK); $VERSION = "2.05"; require IO::File; @ISA = qw(IO::File); @EXPORT = qw(_IOFBF _IOLBF _IONBF); @EXPORT_OK = qw( pipe autoflush output_field_separator output_record_separator input_record_separator input_line_number format_page_number format_lines_per_page format_lines_left format_name format_top_name format_line_break_characters format_formfeed print printf getline getlines ); # # Everything we're willing to export, we must first import. # IO::Handle->import( grep { !defined(&$_) } @EXPORT, @EXPORT_OK ); # # Some people call "FileHandle::function", so all the functions # that were in the old FileHandle class must be imported, too. # { no strict 'refs'; my %import = ( 'IO::Handle' => [qw(DESTROY new_from_fd fdopen close fileno getc ungetc gets eof flush error clearerr setbuf setvbuf _open_mode_string)], 'IO::Seekable' => [qw(seek tell getpos setpos)], 'IO::File' => [qw(new new_tmpfile open)] ); for my $pkg (keys %import) { for my $func (@{$import{$pkg}}) { my $c = *{"${pkg}::$func"}{CODE} or die "${pkg}::$func missing"; *$func = $c; } } } # # Specialized importer for Fcntl magic. # sub import { my $pkg = shift; my $callpkg = caller; require Exporter; Exporter::export($pkg, $callpkg, @_); # # If the Fcntl extension is available, # export its constants. # eval { require Fcntl; Exporter::export('Fcntl', $callpkg); }; } ################################################ # This is the only exported function we define; # the rest come from other classes. # sub pipe { my $r = IO::Handle->new; my $w = IO::Handle->new; CORE::pipe($r, $w) or return undef; ($r, $w); } # Rebless standard file handles bless *STDIN{IO}, "FileHandle" if ref *STDIN{IO} eq "IO::Handle"; bless *STDOUT{IO}, "FileHandle" if ref *STDOUT{IO} eq "IO::Handle"; bless *STDERR{IO}, "FileHandle" if ref *STDERR{IO} eq "IO::Handle"; 1; __END__ =head1 NAME FileHandle - supply object methods for filehandles =head1 SYNOPSIS use FileHandle; my $fh = FileHandle->new; if ($fh->open("< file")) { print <$fh>; $fh->close; } my $fh = FileHandle->new("> FOO"); if (defined $fh) { print $fh "bar\n"; $fh->close; } my $fh = FileHandle->new("file", "r"); if (defined $fh) { print <$fh>; undef $fh; # automatically closes the file } my $fh = FileHandle->new("file", O_WRONLY|O_APPEND); if (defined $fh) { print $fh "corge\n"; undef $fh; # automatically closes the file } my $pos = $fh->getpos; $fh->setpos($pos); $fh->setvbuf(my $buffer_var, _IOLBF, 1024); my ($readfh, $writefh) = FileHandle::pipe; autoflush STDOUT 1; =head1 DESCRIPTION NOTE: This class is now a front-end to the IO::* classes. C creates a C, which is a reference to a newly created symbol (see the L package). If it receives any parameters, they are passed to C; if the open fails, the C object is destroyed. Otherwise, it is returned to the caller. C creates a C like C does. It requires two parameters, which are passed to C; if the fdopen fails, the C object is destroyed. Otherwise, it is returned to the caller. C accepts one parameter or two. With one parameter, it is just a front end for the built-in C function. With two parameters, the first parameter is a filename that may include whitespace or other special characters, and the second parameter is the open mode, optionally followed by a file permission value. If C receives a Perl mode string (">", "+<", etc.) or a POSIX fopen() mode string ("w", "r+", etc.), it uses the basic Perl C operator. If C is given a numeric mode, it passes that mode and the optional permissions value to the Perl C operator. For convenience, C tries to import the O_XXX constants from the Fcntl module. If dynamic loading is not available, this may fail, but the rest of FileHandle will still work. C is like C except that its first parameter is not a filename but rather a file handle name, a FileHandle object, or a file descriptor number. If the C functions fgetpos() and fsetpos() are available, then C returns an opaque value that represents the current position of the FileHandle, and C uses that value to return to a previously visited position. If the C function setvbuf() is available, then C sets the buffering policy for the FileHandle. The calling sequence for the Perl function is the same as its C counterpart, including the macros C<_IOFBF>, C<_IOLBF>, and C<_IONBF>, except that the buffer parameter specifies a scalar variable to use as a buffer. WARNING: A variable used as a buffer by C must not be modified in any way until the FileHandle is closed or until C is called again, or memory corruption may result! See L for complete descriptions of each of the following supported C methods, which are just front ends for the corresponding built-in functions: close fileno getc gets eof clearerr seek tell See L for complete descriptions of each of the following supported C methods: autoflush output_field_separator output_record_separator input_record_separator input_line_number format_page_number format_lines_per_page format_lines_left format_name format_top_name format_line_break_characters format_formfeed Furthermore, for doing normal I/O you might need these: =over 4 =item $fh->print See L. =item $fh->printf See L. =item $fh->getline This works like <$fh> described in L except that it's more readable and can be safely called in a list context but still returns just one line. =item $fh->getlines This works like <$fh> when called in a list context to read all the remaining lines in a file, except that it's more readable. It will also croak() if accidentally called in a scalar context. =back There are many other functions available since FileHandle is descended from IO::File, IO::Seekable, and IO::Handle. Please see those respective pages for documentation on more functions. =head1 SEE ALSO The B extension, L, L. =cut FILE'17dda43c/IO/Compress/Adapter/Deflate.pmpackage IO::Compress::Adapter::Deflate ; use strict; use warnings; use bytes; use IO::Compress::Base::Common 2.213 qw(:Status); use Compress::Raw::Zlib 2.213 qw( !crc32 !adler32 ) ; require Exporter; our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, @EXPORT, %DEFLATE_CONSTANTS); $VERSION = '2.213'; @ISA = qw(Exporter); @EXPORT_OK = @Compress::Raw::Zlib::DEFLATE_CONSTANTS; %EXPORT_TAGS = %Compress::Raw::Zlib::DEFLATE_CONSTANTS; @EXPORT = @EXPORT_OK; %DEFLATE_CONSTANTS = %EXPORT_TAGS ; sub mkCompObject { my $crc32 = shift ; my $adler32 = shift ; my $level = shift ; my $strategy = shift ; my ($def, $status) = Compress::Raw::Zlib::Deflate->new( -AppendOutput => 1, -CRC32 => $crc32, -ADLER32 => $adler32, -Level => $level, -Strategy => $strategy, -WindowBits => - MAX_WBITS); return (undef, "Cannot create Deflate object: $status", $status) if $status != Z_OK; return bless {'Def' => $def, 'Error' => '', } ; } sub mkCompObject1 { my $crc32 = shift ; my $adler32 = shift ; my $level = shift ; my $strategy = shift ; my ($def, $status) = Compress::Raw::Zlib::Deflate->new( -AppendOutput => 1, -CRC32 => $crc32, -ADLER32 => $adler32, -Level => $level, -Strategy => $strategy, -WindowBits => MAX_WBITS); return (undef, "Cannot create Deflate object: $status", $status) if $status != Z_OK; return bless {'Def' => $def, 'Error' => '', } ; } sub compr { my $self = shift ; my $def = $self->{Def}; my $status = $def->deflate($_[0], $_[1]) ; $self->{ErrorNo} = $status; if ($status != Z_OK) { $self->{Error} = "Deflate Error: $status"; return STATUS_ERROR; } return STATUS_OK; } sub flush { my $self = shift ; my $def = $self->{Def}; my $opt = $_[1] || Z_FINISH; my $status = $def->flush($_[0], $opt); $self->{ErrorNo} = $status; if ($status != Z_OK) { $self->{Error} = "Deflate Error: $status"; return STATUS_ERROR; } return STATUS_OK; } sub close { my $self = shift ; my $def = $self->{Def}; $def->flush($_[0], Z_FINISH) if defined $def ; } sub reset { my $self = shift ; my $def = $self->{Def}; my $status = $def->deflateReset() ; $self->{ErrorNo} = $status; if ($status != Z_OK) { $self->{Error} = "Deflate Error: $status"; return STATUS_ERROR; } return STATUS_OK; } sub deflateParams { my $self = shift ; my $def = $self->{Def}; my $status = $def->deflateParams(@_); $self->{ErrorNo} = $status; if ($status != Z_OK) { $self->{Error} = "deflateParams Error: $status"; return STATUS_ERROR; } return STATUS_OK; } #sub total_out #{ # my $self = shift ; # $self->{Def}->total_out(); #} # #sub total_in #{ # my $self = shift ; # $self->{Def}->total_in(); #} sub compressedBytes { my $self = shift ; $self->{Def}->compressedBytes(); } sub uncompressedBytes { my $self = shift ; $self->{Def}->uncompressedBytes(); } sub crc32 { my $self = shift ; $self->{Def}->crc32(); } sub adler32 { my $self = shift ; $self->{Def}->adler32(); } 1; __END__ FILEa804e732/IO/Compress/Base.pm] package IO::Compress::Base ; require 5.006 ; use strict ; use warnings; use IO::Compress::Base::Common 2.213 ; use IO::File (); ; use Scalar::Util (); #use File::Glob; #require Exporter ; use Carp() ; use Symbol(); #use bytes; our (@ISA, $VERSION); @ISA = qw(IO::File Exporter); $VERSION = '2.213'; #Can't locate object method "SWASHNEW" via package "utf8" (perhaps you forgot to load "utf8"?) at .../ext/Compress-Zlib/Gzip/blib/lib/Compress/Zlib/Common.pm line 16. sub saveStatus { my $self = shift ; ${ *$self->{ErrorNo} } = shift() + 0 ; ${ *$self->{Error} } = '' ; return ${ *$self->{ErrorNo} } ; } sub saveErrorString { my $self = shift ; my $retval = shift ; ${ *$self->{Error} } = shift ; ${ *$self->{ErrorNo} } = shift() + 0 if @_ ; return $retval; } sub croakError { my $self = shift ; $self->saveErrorString(0, $_[0]); Carp::croak $_[0]; } sub closeError { my $self = shift ; my $retval = shift ; my $errno = *$self->{ErrorNo}; my $error = ${ *$self->{Error} }; $self->close(); *$self->{ErrorNo} = $errno ; ${ *$self->{Error} } = $error ; return $retval; } sub error { my $self = shift ; return ${ *$self->{Error} } ; } sub errorNo { my $self = shift ; return ${ *$self->{ErrorNo} } ; } sub writeAt { my $self = shift ; my $offset = shift; my $data = shift; if (defined *$self->{FH}) { my $here = tell(*$self->{FH}); return $self->saveErrorString(undef, "Cannot seek to end of output filehandle: $!", $!) if $here < 0 ; seek(*$self->{FH}, $offset, IO::Handle::SEEK_SET) or return $self->saveErrorString(undef, "Cannot seek to end of output filehandle: $!", $!) ; defined *$self->{FH}->write($data, length $data) or return $self->saveErrorString(undef, $!, $!) ; seek(*$self->{FH}, $here, IO::Handle::SEEK_SET) or return $self->saveErrorString(undef, "Cannot seek to end of output filehandle: $!", $!) ; } else { substr(${ *$self->{Buffer} }, $offset, length($data)) = $data ; } return 1; } sub outputPayload { my $self = shift ; return $self->output(@_); } sub output { my $self = shift ; my $data = shift ; my $last = shift ; return 1 if length $data == 0 && ! $last ; if ( *$self->{FilterContainer} ) { *_ = \$data; &{ *$self->{FilterContainer} }(); } if (length $data) { if ( defined *$self->{FH} ) { defined *$self->{FH}->write( $data, length $data ) or return $self->saveErrorString(0, $!, $!); } else { ${ *$self->{Buffer} } .= $data ; } } return 1; } sub getOneShotParams { return ( 'multistream' => [IO::Compress::Base::Common::Parse_boolean, 1], ); } our %PARAMS = ( # Generic Parameters 'autoclose' => [IO::Compress::Base::Common::Parse_boolean, 0], 'encode' => [IO::Compress::Base::Common::Parse_any, undef], 'strict' => [IO::Compress::Base::Common::Parse_boolean, 1], 'append' => [IO::Compress::Base::Common::Parse_boolean, 0], 'binmodein' => [IO::Compress::Base::Common::Parse_boolean, 0], 'filtercontainer' => [IO::Compress::Base::Common::Parse_code, undef], ); sub checkParams { my $self = shift ; my $class = shift ; my $got = shift || IO::Compress::Base::Parameters::new(); $got->parse( { %PARAMS, $self->getExtraParams(), *$self->{OneShot} ? $self->getOneShotParams() : (), }, @_) or $self->croakError("${class}: " . $got->getError()) ; return $got ; } sub _create { my $obj = shift; my $got = shift; *$obj->{Closed} = 1 ; my $class = ref $obj; $obj->croakError("$class: Missing Output parameter") if ! @_ && ! $got ; my $outValue = shift ; my $oneShot = 1 ; if (! $got) { $oneShot = 0 ; $got = $obj->checkParams($class, undef, @_) or return undef ; } my $lax = ! $got->getValue('strict') ; my $outType = IO::Compress::Base::Common::whatIsOutput($outValue); $obj->ckOutputParam($class, $outValue) or return undef ; if ($outType eq 'buffer') { *$obj->{Buffer} = $outValue; } else { my $buff = "" ; *$obj->{Buffer} = \$buff ; } # Merge implies Append my $merge = $got->getValue('merge') ; my $appendOutput = $got->getValue('append') || $merge ; *$obj->{Append} = $appendOutput; *$obj->{FilterContainer} = $got->getValue('filtercontainer') ; if ($merge) { # Switch off Merge mode if output file/buffer is empty/doesn't exist if (($outType eq 'buffer' && length $$outValue == 0 ) || ($outType ne 'buffer' && (! -e $outValue || (-w _ && -z _))) ) { $merge = 0 } } # If output is a file, check that it is writable #no warnings; #if ($outType eq 'filename' && -e $outValue && ! -w _) # { return $obj->saveErrorString(undef, "Output file '$outValue' is not writable" ) } $obj->ckParams($got) or $obj->croakError("${class}: " . $obj->error()); if ($got->getValue('encode')) { my $want_encoding = $got->getValue('encode'); *$obj->{Encoding} = IO::Compress::Base::Common::getEncoding($obj, $class, $want_encoding); my $x = *$obj->{Encoding}; } else { *$obj->{Encoding} = undef; } $obj->saveStatus(STATUS_OK) ; my $status ; if (! $merge) { *$obj->{Compress} = $obj->mkComp($got) or return undef; *$obj->{UnCompSize} = U64->new; *$obj->{CompSize} = U64->new; if ( $outType eq 'buffer') { ${ *$obj->{Buffer} } = '' unless $appendOutput ; } else { if ($outType eq 'handle') { *$obj->{FH} = $outValue ; setBinModeOutput(*$obj->{FH}) ; #$outValue->flush() ; *$obj->{Handle} = 1 ; if ($appendOutput) { seek(*$obj->{FH}, 0, IO::Handle::SEEK_END) or return $obj->saveErrorString(undef, "Cannot seek to end of output filehandle: $!", $!) ; } } elsif ($outType eq 'filename') { no warnings; my $mode = '>' ; $mode = '>>' if $appendOutput; *$obj->{FH} = IO::File->new( "$mode $outValue" ) or return $obj->saveErrorString(undef, "cannot open file '$outValue': $!", $!) ; *$obj->{StdIO} = ($outValue eq '-'); setBinModeOutput(*$obj->{FH}) ; } } *$obj->{Header} = $obj->mkHeader($got) ; $obj->output( *$obj->{Header} ) or return undef; $obj->beforePayload(); } else { *$obj->{Compress} = $obj->createMerge($outValue, $outType) or return undef; } *$obj->{Closed} = 0 ; *$obj->{AutoClose} = $got->getValue('autoclose') ; *$obj->{Output} = $outValue; *$obj->{ClassName} = $class; *$obj->{Got} = $got; *$obj->{OneShot} = 0 ; return $obj ; } sub ckOutputParam { my $self = shift ; my $from = shift ; my $outType = IO::Compress::Base::Common::whatIsOutput($_[0]); $self->croakError("$from: output parameter not a filename, filehandle or scalar ref") if ! $outType ; #$self->croakError("$from: output filename is undef or null string") #if $outType eq 'filename' && (! defined $_[0] || $_[0] eq '') ; $self->croakError("$from: output buffer is read-only") if $outType eq 'buffer' && Scalar::Util::readonly(${ $_[0] }); return 1; } sub _def { my $obj = shift ; my $class= (caller)[0] ; my $name = (caller(1))[3] ; $obj->croakError("$name: expected at least 1 parameters\n") unless @_ >= 1 ; my $input = shift ; my $haveOut = @_ ; my $output = shift ; my $x = IO::Compress::Base::Validator->new($class, *$obj->{Error}, $name, $input, $output) or return undef ; push @_, $output if $haveOut && $x->{Hash}; *$obj->{OneShot} = 1 ; my $got = $obj->checkParams($name, undef, @_) or return undef ; $x->{Got} = $got ; # if ($x->{Hash}) # { # while (my($k, $v) = each %$input) # { # $v = \$input->{$k} # unless defined $v ; # # $obj->_singleTarget($x, 1, $k, $v, @_) # or return undef ; # } # # return keys %$input ; # } if ($x->{GlobMap}) { $x->{oneInput} = 1 ; foreach my $pair (@{ $x->{Pairs} }) { my ($from, $to) = @$pair ; $obj->_singleTarget($x, 1, $from, $to, @_) or return undef ; } return scalar @{ $x->{Pairs} } ; } if (! $x->{oneOutput} ) { my $inFile = ($x->{inType} eq 'filenames' || $x->{inType} eq 'filename'); $x->{inType} = $inFile ? 'filename' : 'buffer'; foreach my $in ($x->{oneInput} ? $input : @$input) { my $out ; $x->{oneInput} = 1 ; $obj->_singleTarget($x, $inFile, $in, \$out, @_) or return undef ; push @$output, \$out ; #if ($x->{outType} eq 'array') # { push @$output, \$out } #else # { $output->{$in} = \$out } } return 1 ; } # finally the 1 to 1 and n to 1 return $obj->_singleTarget($x, 1, $input, $output, @_); Carp::croak "should not be here" ; } sub _singleTarget { my $obj = shift ; my $x = shift ; my $inputIsFilename = shift; my $input = shift; if ($x->{oneInput}) { $obj->getFileInfo($x->{Got}, $input) if isaScalar($input) || (isaFilename($input) and $inputIsFilename) ; my $z = $obj->_create($x->{Got}, @_) or return undef ; defined $z->_wr2($input, $inputIsFilename) or return $z->closeError(undef) ; return $z->close() ; } else { my $afterFirst = 0 ; my $inputIsFilename = ($x->{inType} ne 'array'); my $keep = $x->{Got}->clone(); #for my $element ( ($x->{inType} eq 'hash') ? keys %$input : @$input) for my $element ( @$input) { my $isFilename = isaFilename($element); if ( $afterFirst ++ ) { defined addInterStream($obj, $element, $isFilename) or return $obj->closeError(undef) ; } else { $obj->getFileInfo($x->{Got}, $element) if isaScalar($element) || $isFilename; $obj->_create($x->{Got}, @_) or return undef ; } defined $obj->_wr2($element, $isFilename) or return $obj->closeError(undef) ; *$obj->{Got} = $keep->clone(); } return $obj->close() ; } } sub _wr2 { my $self = shift ; my $source = shift ; my $inputIsFilename = shift; my $input = $source ; if (! $inputIsFilename) { $input = \$source if ! ref $source; } if ( ref $input && ref $input eq 'SCALAR' ) { return $self->syswrite($input, @_) ; } if ( ! ref $input || isaFilehandle($input)) { my $isFilehandle = isaFilehandle($input) ; my $fh = $input ; if ( ! $isFilehandle ) { $fh = IO::File->new( "<$input" ) or return $self->saveErrorString(undef, "cannot open file '$input': $!", $!) ; } binmode $fh ; my $status ; my $buff ; my $count = 0 ; while ($status = read($fh, $buff, 16 * 1024)) { $count += length $buff; defined $self->syswrite($buff, @_) or return undef ; } return $self->saveErrorString(undef, $!, $!) if ! defined $status ; if ( (!$isFilehandle || *$self->{AutoClose}) && $input ne '-') { $fh->close() or return undef ; } return $count ; } Carp::croak "Should not be here"; return undef; } sub addInterStream { my $self = shift ; my $input = shift ; my $inputIsFilename = shift ; if (*$self->{Got}->getValue('multistream')) { $self->getFileInfo(*$self->{Got}, $input) #if isaFilename($input) and $inputIsFilename ; if isaScalar($input) || isaFilename($input) ; # TODO -- newStream needs to allow gzip/zip header to be modified return $self->newStream(); } elsif (*$self->{Got}->getValue('autoflush')) { #return $self->flush(Z_FULL_FLUSH); } return 1 ; } sub getFileInfo { } sub TIEHANDLE { return $_[0] if ref($_[0]); die "OOPS\n" ; } sub UNTIE { my $self = shift ; } sub DESTROY { my $self = shift ; local ($., $@, $!, $^E, $?); $self->close() ; # TODO - memory leak with 5.8.0 - this isn't called until # global destruction # %{ *$self } = () ; undef $self ; } sub filterUncompressed { } sub syswrite { my $self = shift ; my $buffer ; if (ref $_[0] ) { $self->croakError( *$self->{ClassName} . "::write: not a scalar reference" ) unless ref $_[0] eq 'SCALAR' ; $buffer = $_[0] ; } else { $buffer = \$_[0] ; } if (@_ > 1) { my $slen = defined $$buffer ? length($$buffer) : 0; my $len = $slen; my $offset = 0; $len = $_[1] if $_[1] < $len; if (@_ > 2) { $offset = $_[2] || 0; $self->croakError(*$self->{ClassName} . "::write: offset outside string") if $offset > $slen; if ($offset < 0) { $offset += $slen; $self->croakError( *$self->{ClassName} . "::write: offset outside string") if $offset < 0; } my $rem = $slen - $offset; $len = $rem if $rem < $len; } $buffer = \substr($$buffer, $offset, $len) ; } return 0 if (! defined $$buffer || length $$buffer == 0) && ! *$self->{FlushPending}; # *$self->{Pending} .= $$buffer ; # # return length $$buffer # if (length *$self->{Pending} < 1024 * 16 && ! *$self->{FlushPending}) ; # # $$buffer = *$self->{Pending} ; # *$self->{Pending} = ''; if (*$self->{Encoding}) { $$buffer = *$self->{Encoding}->encode($$buffer); } else { $] >= 5.008 and ( utf8::downgrade($$buffer, 1) or Carp::croak "Wide character in " . *$self->{ClassName} . "::write:"); } $self->filterUncompressed($buffer); my $buffer_length = defined $$buffer ? length($$buffer) : 0 ; *$self->{UnCompSize}->add($buffer_length) ; my $outBuffer=''; my $status = *$self->{Compress}->compr($buffer, $outBuffer) ; return $self->saveErrorString(undef, *$self->{Compress}{Error}, *$self->{Compress}{ErrorNo}) if $status == STATUS_ERROR; *$self->{CompSize}->add(length $outBuffer) ; $self->outputPayload($outBuffer) or return undef; return $buffer_length; } sub print { my $self = shift; #if (ref $self) { # $self = *$self{GLOB} ; #} if (defined $\) { if (defined $,) { defined $self->syswrite(join($,, @_) . $\); } else { defined $self->syswrite(join("", @_) . $\); } } else { if (defined $,) { defined $self->syswrite(join($,, @_)); } else { defined $self->syswrite(join("", @_)); } } } sub printf { my $self = shift; my $fmt = shift; defined $self->syswrite(sprintf($fmt, @_)); } sub _flushCompressed { my $self = shift ; my $outBuffer=''; my $status = *$self->{Compress}->flush($outBuffer, @_) ; return $self->saveErrorString(0, *$self->{Compress}{Error}, *$self->{Compress}{ErrorNo}) if $status == STATUS_ERROR; if ( defined *$self->{FH} ) { *$self->{FH}->clearerr(); } *$self->{CompSize}->add(length $outBuffer) ; $self->outputPayload($outBuffer) or return 0; return 1; } sub flush { my $self = shift ; $self->_flushCompressed(@_) or return 0; if ( defined *$self->{FH} ) { defined *$self->{FH}->flush() or return $self->saveErrorString(0, $!, $!); } return 1; } sub beforePayload { } sub _newStream { my $self = shift ; my $got = shift; my $class = ref $self; $self->_writeTrailer() or return 0 ; $self->ckParams($got) or $self->croakError("newStream: $self->{Error}"); if ($got->getValue('encode')) { my $want_encoding = $got->getValue('encode'); *$self->{Encoding} = IO::Compress::Base::Common::getEncoding($self, $class, $want_encoding); } else { *$self->{Encoding} = undef; } *$self->{Compress} = $self->mkComp($got) or return 0; *$self->{Header} = $self->mkHeader($got) ; $self->output(*$self->{Header} ) or return 0; *$self->{UnCompSize}->reset(); *$self->{CompSize}->reset(); $self->beforePayload(); return 1 ; } sub newStream { my $self = shift ; my $got = $self->checkParams('newStream', *$self->{Got}, @_) or return 0 ; $self->_newStream($got); # *$self->{Compress} = $self->mkComp($got) # or return 0; # # *$self->{Header} = $self->mkHeader($got) ; # $self->output(*$self->{Header} ) # or return 0; # # *$self->{UnCompSize}->reset(); # *$self->{CompSize}->reset(); # # $self->beforePayload(); # # return 1 ; } sub reset { my $self = shift ; return *$self->{Compress}->reset() ; } sub _writeTrailer { my $self = shift ; my $trailer = ''; my $status = *$self->{Compress}->close($trailer) ; return $self->saveErrorString(0, *$self->{Compress}{Error}, *$self->{Compress}{ErrorNo}) if $status == STATUS_ERROR; *$self->{CompSize}->add(length $trailer) ; $trailer .= $self->mkTrailer(); defined $trailer or return 0; return $self->output($trailer); } sub _writeFinalTrailer { my $self = shift ; return $self->output($self->mkFinalTrailer()); } sub close { my $self = shift ; return 1 if *$self->{Closed} || ! *$self->{Compress} ; *$self->{Closed} = 1 ; untie *$self if $] >= 5.008 ; *$self->{FlushPending} = 1 ; $self->_writeTrailer() or return 0 ; $self->_writeFinalTrailer() or return 0 ; $self->output( "", 1 ) or return 0; if (defined *$self->{FH}) { if ((! *$self->{Handle} || *$self->{AutoClose}) && ! *$self->{StdIO}) { $! = 0 ; *$self->{FH}->close() or return $self->saveErrorString(0, $!, $!); } delete *$self->{FH} ; # This delete can set $! in older Perls, so reset the errno $! = 0 ; } return 1; } #sub total_in #sub total_out #sub msg # #sub crc #{ # my $self = shift ; # return *$self->{Compress}->crc32() ; #} # #sub msg #{ # my $self = shift ; # return *$self->{Compress}->msg() ; #} # #sub dict_adler #{ # my $self = shift ; # return *$self->{Compress}->dict_adler() ; #} # #sub get_Level #{ # my $self = shift ; # return *$self->{Compress}->get_Level() ; #} # #sub get_Strategy #{ # my $self = shift ; # return *$self->{Compress}->get_Strategy() ; #} sub tell { my $self = shift ; return *$self->{UnCompSize}->get32bit() ; } sub eof { my $self = shift ; return *$self->{Closed} ; } sub seek { my $self = shift ; my $position = shift; my $whence = shift ; my $here = $self->tell() ; my $target = 0 ; #use IO::Handle qw(SEEK_SET SEEK_CUR SEEK_END); use IO::Handle ; if ($whence == IO::Handle::SEEK_SET) { $target = $position ; } elsif ($whence == IO::Handle::SEEK_CUR || $whence == IO::Handle::SEEK_END) { $target = $here + $position ; } else { $self->croakError(*$self->{ClassName} . "::seek: unknown value, $whence, for whence parameter"); } # short circuit if seeking to current offset return 1 if $target == $here ; # Outlaw any attempt to seek backwards $self->croakError(*$self->{ClassName} . "::seek: cannot seek backwards") if $target < $here ; # Walk the file to the new offset my $offset = $target - $here ; my $buffer ; defined $self->syswrite("\x00" x $offset) or return 0; return 1 ; } sub binmode { 1; # my $self = shift ; # return defined *$self->{FH} # ? binmode *$self->{FH} # : 1 ; } sub fileno { my $self = shift ; return defined *$self->{FH} ? *$self->{FH}->fileno() : undef ; } sub opened { my $self = shift ; return ! *$self->{Closed} ; } sub autoflush { my $self = shift ; return defined *$self->{FH} ? *$self->{FH}->autoflush(@_) : undef ; } sub input_line_number { return undef ; } sub _notAvailable { my $name = shift ; return sub { Carp::croak "$name Not Available: File opened only for output" ; } ; } { no warnings 'once'; *read = _notAvailable('read'); *READ = _notAvailable('read'); *readline = _notAvailable('readline'); *READLINE = _notAvailable('readline'); *getc = _notAvailable('getc'); *GETC = _notAvailable('getc'); *FILENO = \&fileno; *PRINT = \&print; *PRINTF = \&printf; *WRITE = \&syswrite; *write = \&syswrite; *SEEK = \&seek; *TELL = \&tell; *EOF = \&eof; *CLOSE = \&close; *BINMODE = \&binmode; } #*sysread = \&_notAvailable; #*syswrite = \&_write; 1; __END__ =head1 NAME IO::Compress::Base - Base Class for IO::Compress modules =head1 SYNOPSIS use IO::Compress::Base ; =head1 DESCRIPTION This module is not intended for direct use in application code. Its sole purpose is to be sub-classed by IO::Compress modules. =head1 SUPPORT General feedback/questions/bug reports should be sent to L (preferred) or L. =head1 SEE ALSO L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L L L, L, L, L =head1 AUTHOR This module was written by Paul Marquess, C. =head1 MODIFICATION HISTORY See the Changes file. =head1 COPYRIGHT AND LICENSE Copyright (c) 2005-2024 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. FILE#8c7adf5e/IO/Compress/Base/Common.pmXpackage IO::Compress::Base::Common; use strict ; use warnings; use bytes; use Carp; use Scalar::Util qw(blessed readonly); use File::GlobMapper; require Exporter; our ($VERSION, @ISA, @EXPORT, %EXPORT_TAGS, $HAS_ENCODE); @ISA = qw(Exporter); $VERSION = '2.213'; @EXPORT = qw( isaFilehandle isaFilename isaScalar whatIsInput whatIsOutput isaFileGlobString cleanFileGlobString oneTarget setBinModeInput setBinModeOutput ckInOutParams createSelfTiedObject isGeMax32 MAX32 WANT_CODE WANT_EXT WANT_UNDEF WANT_HASH STATUS_OK STATUS_ENDSTREAM STATUS_EOF STATUS_ERROR ); %EXPORT_TAGS = ( Status => [qw( STATUS_OK STATUS_ENDSTREAM STATUS_EOF STATUS_ERROR )]); use constant STATUS_OK => 0; use constant STATUS_ENDSTREAM => 1; use constant STATUS_EOF => 2; use constant STATUS_ERROR => -1; use constant MAX16 => 0xFFFF ; use constant MAX32 => 0xFFFFFFFF ; use constant MAX32cmp => 0xFFFFFFFF + 1 - 1; # for 5.6.x on 32-bit need to force an non-IV value sub isGeMax32 { return $_[0] >= MAX32cmp ; } sub hasEncode() { if (! defined $HAS_ENCODE) { eval { require Encode; Encode->import(); }; $HAS_ENCODE = $@ ? 0 : 1 ; } return $HAS_ENCODE; } sub getEncoding($$$) { my $obj = shift; my $class = shift ; my $want_encoding = shift ; $obj->croakError("$class: Encode module needed to use -Encode") if ! hasEncode(); my $encoding = Encode::find_encoding($want_encoding); $obj->croakError("$class: Encoding '$want_encoding' is not available") if ! $encoding; return $encoding; } our ($needBinmode); $needBinmode = ($^O eq 'MSWin32' || ($] >= 5.006 && eval ' ${^UNICODE} || ${^UTF8LOCALE} ')) ? 1 : 1 ; sub setBinModeInput($) { my $handle = shift ; binmode $handle if $needBinmode; } sub setBinModeOutput($) { my $handle = shift ; binmode $handle if $needBinmode; } sub isaFilehandle($) { use utf8; # Pragma needed to keep Perl 5.6.0 happy return (defined $_[0] and (UNIVERSAL::isa($_[0],'GLOB') or UNIVERSAL::isa($_[0],'IO::Handle') or UNIVERSAL::isa(\$_[0],'GLOB')) ) } sub isaScalar { return ( defined($_[0]) and ref($_[0]) eq 'SCALAR' and defined ${ $_[0] } ) ; } sub isaFilename($) { return (defined $_[0] and ! ref $_[0] and UNIVERSAL::isa(\$_[0], 'SCALAR')); } sub isaFileGlobString { return defined $_[0] && $_[0] =~ /^<.*>$/; } sub cleanFileGlobString { my $string = shift ; $string =~ s/^\s*<\s*(.*)\s*>\s*$/$1/; return $string; } use constant WANT_CODE => 1 ; use constant WANT_EXT => 2 ; use constant WANT_UNDEF => 4 ; #use constant WANT_HASH => 8 ; use constant WANT_HASH => 0 ; sub whatIsInput($;$) { my $got = whatIs(@_); if (defined $got && $got eq 'filename' && defined $_[0] && $_[0] eq '-') { #use IO::File; $got = 'handle'; $_[0] = *STDIN; #$_[0] = IO::File->new("<-"); } return $got; } sub whatIsOutput($;$) { my $got = whatIs(@_); if (defined $got && $got eq 'filename' && defined $_[0] && $_[0] eq '-') { $got = 'handle'; $_[0] = *STDOUT; #$_[0] = IO::File->new(">-"); } return $got; } sub whatIs ($;$) { return 'handle' if isaFilehandle($_[0]); my $wantCode = defined $_[1] && $_[1] & WANT_CODE ; my $extended = defined $_[1] && $_[1] & WANT_EXT ; my $undef = defined $_[1] && $_[1] & WANT_UNDEF ; my $hash = defined $_[1] && $_[1] & WANT_HASH ; return 'undef' if ! defined $_[0] && $undef ; if (ref $_[0]) { return '' if blessed($_[0]); # is an object #return '' if UNIVERSAL::isa($_[0], 'UNIVERSAL'); # is an object return 'buffer' if UNIVERSAL::isa($_[0], 'SCALAR'); return 'array' if UNIVERSAL::isa($_[0], 'ARRAY') && $extended ; return 'hash' if UNIVERSAL::isa($_[0], 'HASH') && $hash ; return 'code' if UNIVERSAL::isa($_[0], 'CODE') && $wantCode ; return ''; } return 'fileglob' if $extended && isaFileGlobString($_[0]); return 'filename'; } sub oneTarget { return $_[0] =~ /^(code|handle|buffer|filename)$/; } sub IO::Compress::Base::Validator::new { my $class = shift ; my $Class = shift ; my $error_ref = shift ; my $reportClass = shift ; my %data = (Class => $Class, Error => $error_ref, reportClass => $reportClass, ) ; my $obj = bless \%data, $class ; local $Carp::CarpLevel = 1; my $inType = $data{inType} = whatIsInput($_[0], WANT_EXT|WANT_HASH); my $outType = $data{outType} = whatIsOutput($_[1], WANT_EXT|WANT_HASH); my $oneInput = $data{oneInput} = oneTarget($inType); my $oneOutput = $data{oneOutput} = oneTarget($outType); if (! $inType) { $obj->croakError("$reportClass: illegal input parameter") ; #return undef ; } # if ($inType eq 'hash') # { # $obj->{Hash} = 1 ; # $obj->{oneInput} = 1 ; # return $obj->validateHash($_[0]); # } if (! $outType) { $obj->croakError("$reportClass: illegal output parameter") ; #return undef ; } if ($inType ne 'fileglob' && $outType eq 'fileglob') { $obj->croakError("Need input fileglob for outout fileglob"); } # if ($inType ne 'fileglob' && $outType eq 'hash' && $inType ne 'filename' ) # { # $obj->croakError("input must ne filename or fileglob when output is a hash"); # } if ($inType eq 'fileglob' && $outType eq 'fileglob') { $data{GlobMap} = 1 ; $data{inType} = $data{outType} = 'filename'; my $mapper = File::GlobMapper->new($_[0], $_[1]); if ( ! $mapper ) { return $obj->saveErrorString($File::GlobMapper::Error) ; } $data{Pairs} = $mapper->getFileMap(); return $obj; } $obj->croakError("$reportClass: input and output $inType are identical") if $inType eq $outType && $_[0] eq $_[1] && $_[0] ne '-' ; if ($inType eq 'fileglob') # && $outType ne 'fileglob' { my $glob = cleanFileGlobString($_[0]); my @inputs = glob($glob); if (@inputs == 0) { # TODO -- legal or die? die "globmap matched zero file -- legal or die???" ; } elsif (@inputs == 1) { $obj->validateInputFilenames($inputs[0]) or return undef; $_[0] = $inputs[0] ; $data{inType} = 'filename' ; $data{oneInput} = 1; } else { $obj->validateInputFilenames(@inputs) or return undef; $_[0] = [ @inputs ] ; $data{inType} = 'filenames' ; } } elsif ($inType eq 'filename') { $obj->validateInputFilenames($_[0]) or return undef; } elsif ($inType eq 'array') { $data{inType} = 'filenames' ; $obj->validateInputArray($_[0]) or return undef ; } return $obj->saveErrorString("$reportClass: output buffer is read-only") if $outType eq 'buffer' && readonly(${ $_[1] }); if ($outType eq 'filename' ) { $obj->croakError("$reportClass: output filename is undef or null string") if ! defined $_[1] || $_[1] eq '' ; if (-e $_[1]) { if (-d _ ) { return $obj->saveErrorString("output file '$_[1]' is a directory"); } } } return $obj ; } sub IO::Compress::Base::Validator::saveErrorString { my $self = shift ; ${ $self->{Error} } = shift ; return undef; } sub IO::Compress::Base::Validator::croakError { my $self = shift ; $self->saveErrorString($_[0]); croak $_[0]; } sub IO::Compress::Base::Validator::validateInputFilenames { my $self = shift ; foreach my $filename (@_) { $self->croakError("$self->{reportClass}: input filename is undef or null string") if ! defined $filename || $filename eq '' ; next if $filename eq '-'; if (! -e $filename ) { return $self->saveErrorString("input file '$filename' does not exist"); } if (-d _ ) { return $self->saveErrorString("input file '$filename' is a directory"); } # if (! -r _ ) # { # return $self->saveErrorString("cannot open file '$filename': $!"); # } } return 1 ; } sub IO::Compress::Base::Validator::validateInputArray { my $self = shift ; if ( @{ $_[0] } == 0 ) { return $self->saveErrorString("empty array reference") ; } foreach my $element ( @{ $_[0] } ) { my $inType = whatIsInput($element); if (! $inType) { $self->croakError("unknown input parameter") ; } elsif($inType eq 'filename') { $self->validateInputFilenames($element) or return undef ; } else { $self->croakError("not a filename") ; } } return 1 ; } #sub IO::Compress::Base::Validator::validateHash #{ # my $self = shift ; # my $href = shift ; # # while (my($k, $v) = each %$href) # { # my $ktype = whatIsInput($k); # my $vtype = whatIsOutput($v, WANT_EXT|WANT_UNDEF) ; # # if ($ktype ne 'filename') # { # return $self->saveErrorString("hash key not filename") ; # } # # my %valid = map { $_ => 1 } qw(filename buffer array undef handle) ; # if (! $valid{$vtype}) # { # return $self->saveErrorString("hash value not ok") ; # } # } # # return $self ; #} sub createSelfTiedObject { my $class = shift || (caller)[0] ; my $error_ref = shift ; my $obj = bless Symbol::gensym(), ref($class) || $class; tie *$obj, $obj if $] >= 5.005; *$obj->{Closed} = 1 ; $$error_ref = ''; *$obj->{Error} = $error_ref ; my $errno = 0 ; *$obj->{ErrorNo} = \$errno ; return $obj; } #package Parse::Parameters ; # # #require Exporter; #our ($VERSION, @ISA, @EXPORT); #$VERSION = '2.000_08'; #@ISA = qw(Exporter); $EXPORT_TAGS{Parse} = [qw( ParseParameters Parse_any Parse_unsigned Parse_signed Parse_boolean Parse_string Parse_code Parse_writable_scalar ) ]; push @EXPORT, @{ $EXPORT_TAGS{Parse} } ; use constant Parse_any => 0x01; use constant Parse_unsigned => 0x02; use constant Parse_signed => 0x04; use constant Parse_boolean => 0x08; use constant Parse_string => 0x10; use constant Parse_code => 0x20; #use constant Parse_store_ref => 0x100 ; #use constant Parse_multiple => 0x100 ; use constant Parse_writable => 0x200 ; use constant Parse_writable_scalar => 0x400 | Parse_writable ; use constant OFF_PARSED => 0 ; use constant OFF_TYPE => 1 ; use constant OFF_DEFAULT => 2 ; use constant OFF_FIXED => 3 ; #use constant OFF_FIRST_ONLY => 4 ; #use constant OFF_STICKY => 5 ; use constant IxError => 0; use constant IxGot => 1 ; sub ParseParameters { my $level = shift || 0 ; my $sub = (caller($level + 1))[3] ; local $Carp::CarpLevel = 1 ; return $_[1] if @_ == 2 && defined $_[1] && UNIVERSAL::isa($_[1], "IO::Compress::Base::Parameters"); my $p = IO::Compress::Base::Parameters->new(); $p->parse(@_) or croak "$sub: $p->[IxError]" ; return $p; } use strict; use warnings; use Carp; sub Init { my $default = shift ; my %got ; my $obj = IO::Compress::Base::Parameters::new(); while (my ($key, $v) = each %$default) { croak "need 2 params [@$v]" if @$v != 2 ; my ($type, $value) = @$v ; # my ($first_only, $sticky, $type, $value) = @$v ; my $sticky = 0; my $x ; $obj->_checkType($key, \$value, $type, 0, \$x) or return undef ; $key = lc $key; # if (! $sticky) { # $x = [] # if $type & Parse_multiple; # $got{$key} = [0, $type, $value, $x, $first_only, $sticky] ; $got{$key} = [0, $type, $value, $x] ; # } # # $got{$key}[OFF_PARSED] = 0 ; } return bless \%got, "IO::Compress::Base::Parameters::Defaults" ; } sub IO::Compress::Base::Parameters::new { #my $class = shift ; my $obj; $obj->[IxError] = ''; $obj->[IxGot] = {} ; return bless $obj, 'IO::Compress::Base::Parameters' ; } sub IO::Compress::Base::Parameters::setError { my $self = shift ; my $error = shift ; my $retval = @_ ? shift : undef ; $self->[IxError] = $error ; return $retval; } sub IO::Compress::Base::Parameters::getError { my $self = shift ; return $self->[IxError] ; } sub IO::Compress::Base::Parameters::parse { my $self = shift ; my $default = shift ; my $got = $self->[IxGot] ; my $firstTime = keys %{ $got } == 0 ; my (@Bad) ; my @entered = () ; # Allow the options to be passed as a hash reference or # as the complete hash. if (@_ == 0) { @entered = () ; } elsif (@_ == 1) { my $href = $_[0] ; return $self->setError("Expected even number of parameters, got 1") if ! defined $href or ! ref $href or ref $href ne "HASH" ; foreach my $key (keys %$href) { push @entered, $key ; push @entered, \$href->{$key} ; } } else { my $count = @_; return $self->setError("Expected even number of parameters, got $count") if $count % 2 != 0 ; for my $i (0.. $count / 2 - 1) { push @entered, $_[2 * $i] ; push @entered, \$_[2 * $i + 1] ; } } foreach my $key (keys %$default) { my ($type, $value) = @{ $default->{$key} } ; if ($firstTime) { $got->{$key} = [0, $type, $value, $value] ; } else { $got->{$key}[OFF_PARSED] = 0 ; } } my %parsed = (); for my $i (0.. @entered / 2 - 1) { my $key = $entered[2* $i] ; my $value = $entered[2* $i+1] ; #print "Key [$key] Value [$value]" ; #print defined $$value ? "[$$value]\n" : "[undef]\n"; $key =~ s/^-// ; my $canonkey = lc $key; if ($got->{$canonkey}) { my $type = $got->{$canonkey}[OFF_TYPE] ; my $parsed = $parsed{$canonkey}; ++ $parsed{$canonkey}; return $self->setError("Muliple instances of '$key' found") if $parsed ; my $s ; $self->_checkType($key, $value, $type, 1, \$s) or return undef ; $value = $$value ; $got->{$canonkey} = [1, $type, $value, $s] ; } else { push (@Bad, $key) } } if (@Bad) { my ($bad) = join(", ", @Bad) ; return $self->setError("unknown key value(s) $bad") ; } return 1; } sub IO::Compress::Base::Parameters::_checkType { my $self = shift ; my $key = shift ; my $value = shift ; my $type = shift ; my $validate = shift ; my $output = shift; #local $Carp::CarpLevel = $level ; #print "PARSE $type $key $value $validate $sub\n" ; if ($type & Parse_writable_scalar) { return $self->setError("Parameter '$key' not writable") if readonly $$value ; if (ref $$value) { return $self->setError("Parameter '$key' not a scalar reference") if ref $$value ne 'SCALAR' ; $$output = $$value ; } else { return $self->setError("Parameter '$key' not a scalar") if ref $value ne 'SCALAR' ; $$output = $value ; } return 1; } $value = $$value ; if ($type & Parse_any) { $$output = $value ; return 1; } elsif ($type & Parse_unsigned) { return $self->setError("Parameter '$key' must be an unsigned int, got 'undef'") if ! defined $value ; return $self->setError("Parameter '$key' must be an unsigned int, got '$value'") if $value !~ /^\d+$/; $$output = defined $value ? $value : 0 ; return 1; } elsif ($type & Parse_signed) { return $self->setError("Parameter '$key' must be a signed int, got 'undef'") if ! defined $value ; return $self->setError("Parameter '$key' must be a signed int, got '$value'") if $value !~ /^-?\d+$/; $$output = defined $value ? $value : 0 ; return 1 ; } elsif ($type & Parse_boolean) { return $self->setError("Parameter '$key' must be an int, got '$value'") if defined $value && $value !~ /^\d*$/; $$output = defined $value && $value != 0 ? 1 : 0 ; return 1; } elsif ($type & Parse_string) { $$output = defined $value ? $value : "" ; return 1; } elsif ($type & Parse_code) { return $self->setError("Parameter '$key' must be a code reference, got '$value'") if (! defined $value || ref $value ne 'CODE') ; $$output = defined $value ? $value : "" ; return 1; } $$output = $value ; return 1; } sub IO::Compress::Base::Parameters::parsed { return $_[0]->[IxGot]{$_[1]}[OFF_PARSED] ; } sub IO::Compress::Base::Parameters::getValue { return $_[0]->[IxGot]{$_[1]}[OFF_FIXED] ; } sub IO::Compress::Base::Parameters::setValue { $_[0]->[IxGot]{$_[1]}[OFF_PARSED] = 1; $_[0]->[IxGot]{$_[1]}[OFF_DEFAULT] = $_[2] ; $_[0]->[IxGot]{$_[1]}[OFF_FIXED] = $_[2] ; } sub IO::Compress::Base::Parameters::valueRef { return $_[0]->[IxGot]{$_[1]}[OFF_FIXED] ; } sub IO::Compress::Base::Parameters::valueOrDefault { my $self = shift ; my $name = shift ; my $default = shift ; my $value = $self->[IxGot]{$name}[OFF_DEFAULT] ; return $value if defined $value ; return $default ; } sub IO::Compress::Base::Parameters::wantValue { return defined $_[0]->[IxGot]{$_[1]}[OFF_DEFAULT] ; } sub IO::Compress::Base::Parameters::clone { my $self = shift ; my $obj = [] ; my %got ; my $hash = $self->[IxGot] ; for my $k (keys %{ $hash }) { $got{$k} = [ @{ $hash->{$k} } ]; } $obj->[IxError] = $self->[IxError]; $obj->[IxGot] = \%got ; return bless $obj, 'IO::Compress::Base::Parameters' ; } package U64; use constant MAX32 => 0xFFFFFFFF ; use constant HI_1 => MAX32 + 1 ; use constant LOW => 0 ; use constant HIGH => 1; sub new { return bless [ 0, 0 ], $_[0] if @_ == 1 ; return bless [ $_[1], 0 ], $_[0] if @_ == 2 ; return bless [ $_[2], $_[1] ], $_[0] if @_ == 3 ; } sub newUnpack_V64 { my ($low, $hi) = unpack "V V", $_[0] ; bless [ $low, $hi ], "U64"; } sub newUnpack_V32 { my $string = shift; my $low = unpack "V", $string ; bless [ $low, 0 ], "U64"; } sub reset { $_[0]->[HIGH] = $_[0]->[LOW] = 0; } sub clone { bless [ @{$_[0]} ], ref $_[0] ; } sub getHigh { return $_[0]->[HIGH]; } sub getLow { return $_[0]->[LOW]; } sub get32bit { return $_[0]->[LOW]; } sub get64bit { # Not using << here because the result will still be # a 32-bit value on systems where int size is 32-bits return $_[0]->[HIGH] * HI_1 + $_[0]->[LOW]; } sub add { # my $self = shift; my $value = $_[1]; if (ref $value eq 'U64') { $_[0]->[HIGH] += $value->[HIGH] ; $value = $value->[LOW]; } elsif ($value > MAX32) { $_[0]->[HIGH] += int($value / HI_1) ; $value = $value % HI_1; } my $available = MAX32 - $_[0]->[LOW] ; if ($value > $available) { ++ $_[0]->[HIGH] ; $_[0]->[LOW] = $value - $available - 1; } else { $_[0]->[LOW] += $value ; } } sub add32 { # my $self = shift; my $value = $_[1]; if ($value > MAX32) { $_[0]->[HIGH] += int($value / HI_1) ; $value = $value % HI_1; } my $available = MAX32 - $_[0]->[LOW] ; if ($value > $available) { ++ $_[0]->[HIGH] ; $_[0]->[LOW] = $value - $available - 1; } else { $_[0]->[LOW] += $value ; } } sub subtract { my $self = shift; my $value = shift; if (ref $value eq 'U64') { if ($value->[HIGH]) { die "bad" if $self->[HIGH] == 0 || $value->[HIGH] > $self->[HIGH] ; $self->[HIGH] -= $value->[HIGH] ; } $value = $value->[LOW] ; } if ($value > $self->[LOW]) { -- $self->[HIGH] ; $self->[LOW] = MAX32 - $value + $self->[LOW] + 1 ; } else { $self->[LOW] -= $value; } } sub equal { my $self = shift; my $other = shift; return $self->[LOW] == $other->[LOW] && $self->[HIGH] == $other->[HIGH] ; } sub isZero { my $self = shift; return $self->[LOW] == 0 && $self->[HIGH] == 0 ; } sub gt { my $self = shift; my $other = shift; return $self->cmp($other) > 0 ; } sub cmp { my $self = shift; my $other = shift ; if ($self->[LOW] == $other->[LOW]) { return $self->[HIGH] - $other->[HIGH] ; } else { return $self->[LOW] - $other->[LOW] ; } } sub is64bit { return $_[0]->[HIGH] > 0 ; } sub isAlmost64bit { return $_[0]->[HIGH] > 0 || $_[0]->[LOW] == MAX32 ; } sub getPacked_V64 { return pack "V V", @{ $_[0] } ; } sub getPacked_V32 { return pack "V", $_[0]->[LOW] ; } sub pack_V64 { return pack "V V", $_[0], 0; } sub full32 { return $_[0] == MAX32 ; } sub Value_VV64 { my $buffer = shift; my ($lo, $hi) = unpack ("V V" , $buffer); no warnings 'uninitialized'; return $hi * HI_1 + $lo; } package IO::Compress::Base::Common; 1; FILE93589457/IO/Compress/Gzip.pmpackage IO::Compress::Gzip ; require 5.006 ; use strict ; use warnings; use bytes; require Exporter ; use IO::Compress::RawDeflate 2.213 () ; use IO::Compress::Adapter::Deflate 2.213 ; use IO::Compress::Base::Common 2.213 qw(:Status ); use IO::Compress::Gzip::Constants 2.213 ; use IO::Compress::Zlib::Extra 2.213 ; BEGIN { if (defined &utf8::downgrade ) { *noUTF8 = \&utf8::downgrade } else { *noUTF8 = sub {} } } our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $GzipError); $VERSION = '2.213'; $GzipError = '' ; @ISA = qw(IO::Compress::RawDeflate Exporter); @EXPORT_OK = qw( $GzipError gzip ) ; %EXPORT_TAGS = %IO::Compress::RawDeflate::DEFLATE_CONSTANTS ; push @{ $EXPORT_TAGS{all} }, @EXPORT_OK ; Exporter::export_ok_tags('all'); sub new { my $class = shift ; my $obj = IO::Compress::Base::Common::createSelfTiedObject($class, \$GzipError); $obj->_create(undef, @_); } sub gzip { my $obj = IO::Compress::Base::Common::createSelfTiedObject(undef, \$GzipError); return $obj->_def(@_); } #sub newHeader #{ # my $self = shift ; # #return GZIP_MINIMUM_HEADER ; # return $self->mkHeader(*$self->{Got}); #} sub getExtraParams { my $self = shift ; return ( # zlib behaviour $self->getZlibParams(), # Gzip header fields 'minimal' => [IO::Compress::Base::Common::Parse_boolean, 0], 'comment' => [IO::Compress::Base::Common::Parse_any, undef], 'name' => [IO::Compress::Base::Common::Parse_any, undef], 'time' => [IO::Compress::Base::Common::Parse_any, undef], 'textflag' => [IO::Compress::Base::Common::Parse_boolean, 0], 'headercrc' => [IO::Compress::Base::Common::Parse_boolean, 0], 'os_code' => [IO::Compress::Base::Common::Parse_unsigned, $Compress::Raw::Zlib::gzip_os_code], 'extrafield'=> [IO::Compress::Base::Common::Parse_any, undef], 'extraflags'=> [IO::Compress::Base::Common::Parse_any, undef], ); } sub ckParams { my $self = shift ; my $got = shift ; # gzip always needs crc32 $got->setValue('crc32' => 1); return 1 if $got->getValue('merge') ; my $strict = $got->getValue('strict') ; { if (! $got->parsed('time') ) { # Modification time defaults to now. $got->setValue(time => time) ; } # Check that the Name & Comment don't have embedded NULLs # Also check that they only contain ISO 8859-1 chars. if ($got->parsed('name') && defined $got->getValue('name')) { my $name = $got->getValue('name'); return $self->saveErrorString(undef, "Null Character found in Name", Z_DATA_ERROR) if $strict && $name =~ /\x00/ ; return $self->saveErrorString(undef, "Non ISO 8859-1 Character found in Name", Z_DATA_ERROR) if $strict && $name =~ /$GZIP_FNAME_INVALID_CHAR_RE/o ; } if ($got->parsed('comment') && defined $got->getValue('comment')) { my $comment = $got->getValue('comment'); return $self->saveErrorString(undef, "Null Character found in Comment", Z_DATA_ERROR) if $strict && $comment =~ /\x00/ ; return $self->saveErrorString(undef, "Non ISO 8859-1 Character found in Comment", Z_DATA_ERROR) if $strict && $comment =~ /$GZIP_FCOMMENT_INVALID_CHAR_RE/o; } if ($got->parsed('os_code') ) { my $value = $got->getValue('os_code'); return $self->saveErrorString(undef, "OS_Code must be between 0 and 255, got '$value'") if $value < 0 || $value > 255 ; } # gzip only supports Deflate at present $got->setValue('method' => Z_DEFLATED) ; if ( ! $got->parsed('extraflags')) { $got->setValue('extraflags' => 2) if $got->getValue('level') == Z_BEST_COMPRESSION ; $got->setValue('extraflags' => 4) if $got->getValue('level') == Z_BEST_SPEED ; } my $data = $got->getValue('extrafield') ; if (defined $data) { my $bad = IO::Compress::Zlib::Extra::parseExtraField($data, $strict, 1) ; return $self->saveErrorString(undef, "Error with ExtraField Parameter: $bad", Z_DATA_ERROR) if $bad ; $got->setValue('extrafield' => $data) ; } } return 1; } sub mkTrailer { my $self = shift ; return pack("V V", *$self->{Compress}->crc32(), *$self->{UnCompSize}->get32bit()); } sub getInverseClass { no warnings 'once'; return ('IO::Uncompress::Gunzip', \$IO::Uncompress::Gunzip::GunzipError); } sub getFileInfo { my $self = shift ; my $params = shift; my $filename = shift ; return if IO::Compress::Base::Common::isaScalar($filename); my $defaultTime = (stat($filename))[9] ; $params->setValue('name' => $filename) if ! $params->parsed('name') ; $params->setValue('time' => $defaultTime) if ! $params->parsed('time') ; } sub mkHeader { my $self = shift ; my $param = shift ; # short-circuit if a minimal header is requested. return GZIP_MINIMUM_HEADER if $param->getValue('minimal') ; # METHOD my $method = $param->valueOrDefault('method', GZIP_CM_DEFLATED) ; # FLAGS my $flags = GZIP_FLG_DEFAULT ; $flags |= GZIP_FLG_FTEXT if $param->getValue('textflag') ; $flags |= GZIP_FLG_FHCRC if $param->getValue('headercrc') ; $flags |= GZIP_FLG_FEXTRA if $param->wantValue('extrafield') ; $flags |= GZIP_FLG_FNAME if $param->wantValue('name') ; $flags |= GZIP_FLG_FCOMMENT if $param->wantValue('comment') ; # MTIME my $time = $param->valueOrDefault('time', GZIP_MTIME_DEFAULT) ; # EXTRA FLAGS my $extra_flags = $param->valueOrDefault('extraflags', GZIP_XFL_DEFAULT); # OS CODE my $os_code = $param->valueOrDefault('os_code', GZIP_OS_DEFAULT) ; my $out = pack("C4 V C C", GZIP_ID1, # ID1 GZIP_ID2, # ID2 $method, # Compression Method $flags, # Flags $time, # Modification Time $extra_flags, # Extra Flags $os_code, # Operating System Code ) ; # EXTRA if ($flags & GZIP_FLG_FEXTRA) { my $extra = $param->getValue('extrafield') ; $out .= pack("v", length $extra) . $extra ; } # NAME if ($flags & GZIP_FLG_FNAME) { my $name .= $param->getValue('name') ; $name =~ s/\x00.*$//; $out .= $name ; # Terminate the filename with NULL unless it already is $out .= GZIP_NULL_BYTE if !length $name or substr($name, 1, -1) ne GZIP_NULL_BYTE ; } # COMMENT if ($flags & GZIP_FLG_FCOMMENT) { my $comment .= $param->getValue('comment') ; $comment =~ s/\x00.*$//; $out .= $comment ; # Terminate the comment with NULL unless it already is $out .= GZIP_NULL_BYTE if ! length $comment or substr($comment, 1, -1) ne GZIP_NULL_BYTE; } # HEADER CRC $out .= pack("v", Compress::Raw::Zlib::crc32($out) & 0x00FF ) if $param->getValue('headercrc') ; noUTF8($out); return $out ; } sub mkFinalTrailer { return ''; } 1; __END__ =head1 NAME IO::Compress::Gzip - Write RFC 1952 files/buffers =head1 SYNOPSIS use IO::Compress::Gzip qw(gzip $GzipError) ; my $status = gzip $input => $output [,OPTS] or die "gzip failed: $GzipError\n"; my $z = IO::Compress::Gzip->new( $output [,OPTS] ) or die "gzip failed: $GzipError\n"; $z->print($string); $z->printf($format, $string); $z->write($string); $z->syswrite($string [, $length, $offset]); $z->flush(); $z->tell(); $z->eof(); $z->seek($position, $whence); $z->binmode(); $z->fileno(); $z->opened(); $z->autoflush(); $z->input_line_number(); $z->newStream( [OPTS] ); $z->deflateParams(); $z->close() ; $GzipError ; # IO::File mode print $z $string; printf $z $format, $string; tell $z eof $z seek $z, $position, $whence binmode $z fileno $z close $z ; =head1 DESCRIPTION This module provides a Perl interface that allows writing compressed data to files or buffer as defined in RFC 1952. All the gzip headers defined in RFC 1952 can be created using this module. For reading RFC 1952 files/buffers, see the companion module L. =head1 Functional Interface A top-level function, C, is provided to carry out "one-shot" compression between buffers and/or files. For finer control over the compression process, see the L section. use IO::Compress::Gzip qw(gzip $GzipError) ; gzip $input_filename_or_reference => $output_filename_or_reference [,OPTS] or die "gzip failed: $GzipError\n"; The functional interface needs Perl5.005 or better. =head2 gzip $input_filename_or_reference => $output_filename_or_reference [, OPTS] C expects at least two parameters, C<$input_filename_or_reference> and C<$output_filename_or_reference> and zero or more optional parameters (see L) =head3 The C<$input_filename_or_reference> parameter The parameter, C<$input_filename_or_reference>, is used to define the source of the uncompressed data. It can take one of the following forms: =over 5 =item A filename If the C<$input_filename_or_reference> parameter is a simple scalar, it is assumed to be a filename. This file will be opened for reading and the input data will be read from it. =item A filehandle If the C<$input_filename_or_reference> parameter is a filehandle, the input data will be read from it. The string '-' can be used as an alias for standard input. =item A scalar reference If C<$input_filename_or_reference> is a scalar reference, the input data will be read from C<$$input_filename_or_reference>. =item An array reference If C<$input_filename_or_reference> is an array reference, each element in the array must be a filename. The input data will be read from each file in turn. The complete array will be walked to ensure that it only contains valid filenames before any data is compressed. =item An Input FileGlob string If C<$input_filename_or_reference> is a string that is delimited by the characters "<" and ">" C will assume that it is an I. The input is the list of files that match the fileglob. See L for more details. =back If the C<$input_filename_or_reference> parameter is any other type, C will be returned. In addition, if C<$input_filename_or_reference> is a simple filename, the default values for the C and C
argument: my @layer_and_args_and_flags = PerlIO::get_layers($fh, details => 1); The result will be up to be three times the number of layers: the first element will be a name, the second element the arguments (unspecified arguments will be C), the third element the flags, the fourth element a name again, and so forth. B =head1 AUTHOR Nick Ing-Simmons Enick@ing-simmons.netE =head1 SEE ALSO L, L, L, L, L =cut FILEaab145f8/PerlIO/scalar.pmpackage PerlIO::scalar; our $VERSION = '0.32'; 1; __END__ =head1 NAME PerlIO::scalar - in-memory IO, scalar IO =head1 SYNOPSIS my $scalar = ''; ... open my $fh, "<", \$scalar or die; open my $fh, ">", \$scalar or die; open my $fh, ">>", \$scalar or die; or my $scalar = ''; ... open my $fh, "<:scalar", \$scalar or die; open my $fh, ">:scalar", \$scalar or die; open my $fh, ">>:scalar", \$scalar or die; =head1 DESCRIPTION A filehandle is opened but the file operations are performed "in-memory" on a scalar variable. All the normal file operations can be performed on the handle. The scalar is considered a stream of bytes. Currently fileno($fh) returns -1. Attempting to open a read-only scalar for writing will fail, and if warnings are enabled, produce a warning. =head1 IMPLEMENTATION NOTE C only exists as a stub. One does not need to explicitly C. =cut FILE4a50329b/SelectSaver.pm4package SelectSaver; our $VERSION = '1.02'; =head1 NAME SelectSaver - save and restore selected file handle =head1 SYNOPSIS use SelectSaver; { my $saver = SelectSaver->new(FILEHANDLE); # FILEHANDLE is selected } # previous handle is selected { my $saver = SelectSaver->new; # new handle may be selected, or not } # previous handle is selected =head1 DESCRIPTION A C object contains a reference to the file handle that was selected when it was created. If its C method gets an extra parameter, then that parameter is selected; otherwise, the selected file handle remains unchanged. When a C is destroyed, it re-selects the file handle that was selected when it was created. =cut require 5.000; use Carp; use Symbol; sub new { @_ >= 1 && @_ <= 2 or croak 'usage: SelectSaver->new( [FILEHANDLE] )'; my $fh = select; my $self = bless \$fh, $_[0]; select qualify($_[1], caller) if @_ > 1; $self; } sub DESTROY { my $self = $_[0]; select $$self; } 1; FILE477ebe95/Symbol.pm)package Symbol; use strict; use warnings; =head1 NAME Symbol - manipulate Perl symbols and their names =head1 SYNOPSIS use Symbol; $sym = gensym; open($sym, '<', "filename"); $_ = <$sym>; # etc. ungensym $sym; # no effect # replace *FOO{IO} handle but not $FOO, %FOO, etc. *FOO = geniosym; print qualify("x"), "\n"; # "main::x" print qualify("x", "FOO"), "\n"; # "FOO::x" print qualify("BAR::x"), "\n"; # "BAR::x" print qualify("BAR::x", "FOO"), "\n"; # "BAR::x" print qualify("STDOUT", "FOO"), "\n"; # "main::STDOUT" (global) print qualify(\*x), "\n"; # returns \*x print qualify(\*x, "FOO"), "\n"; # returns \*x use strict refs; print { qualify_to_ref $fh } "foo!\n"; $ref = qualify_to_ref $name, $pkg; use Symbol qw(delete_package); delete_package('Foo::Bar'); print "deleted\n" unless exists $Foo::{'Bar::'}; =head1 DESCRIPTION C creates an anonymous glob and returns a reference to it. Such a glob reference can be used as a file or directory handle. For backward compatibility with older implementations that didn't support anonymous globs, C is also provided. But it doesn't do anything. C creates an anonymous IO handle. This can be assigned into an existing glob without affecting the non-IO portions of the glob. C turns unqualified symbol names into qualified variable names (e.g. "myvar" -E "MyPackage::myvar"). If it is given a second parameter, C uses it as the default package; otherwise, it uses the package of its caller. Regardless, global variable names (e.g. "STDOUT", "ENV", "SIG") are always qualified with "main::". Qualification applies only to symbol names (strings). References are left unchanged under the assumption that they are glob references, which are qualified by their nature. C is just like C except that it returns a glob ref rather than a symbol name, so you can use the result even if C is in effect. C wipes out a whole package namespace. Note this routine is not exported by default--you may want to import it explicitly. =head1 BUGS C is a bit too powerful. It undefines every symbol that lives in the specified package. Since perl, for performance reasons, does not perform a symbol table lookup each time a function is called or a global variable is accessed, some code that has already been loaded and that makes use of symbols in package C may stop working after you delete C, even if you reload the C module afterwards. =cut require Exporter; our @ISA = qw(Exporter); our @EXPORT = qw(gensym ungensym qualify qualify_to_ref); our @EXPORT_OK = qw(delete_package geniosym); our $VERSION = '1.09'; my $genpkg = "Symbol::"; my $genseq = 0; my %global = map {$_ => 1} qw(ARGV ARGVOUT ENV INC SIG STDERR STDIN STDOUT); # # Note that we never _copy_ the glob; we just make a ref to it. # If we did copy it, then SVf_FAKE would be set on the copy, and # glob-specific behaviors (e.g. C<*$ref = \&func>) wouldn't work. # sub gensym () { my $name = "GEN" . $genseq++; no strict 'refs'; my $ref = \*{$genpkg . $name}; delete $$genpkg{$name}; $ref; } sub geniosym () { my $sym = gensym(); # force the IO slot to be filled select(select $sym); *$sym{IO}; } sub ungensym ($) {} sub qualify ($;$) { my ($name) = @_; if (!ref($name) && index($name, '::') == -1 && index($name, "'") == -1) { my $pkg; # Global names: special character, "^xyz", or other. if ($name =~ /^(([^a-z])|(\^[a-z_]+))\z/i || $global{$name}) { # RGS 2001-11-05 : translate leading ^X to control-char $name =~ s/^\^([a-z_])/'qq(\c'.$1.')'/eei; $pkg = "main"; } else { $pkg = (@_ > 1) ? $_[1] : caller; } $name = $pkg . "::" . $name; } $name; } sub qualify_to_ref ($;$) { no strict 'refs'; return \*{ qualify $_[0], @_ > 1 ? $_[1] : caller }; } # # of Safe.pm lineage # sub delete_package ($) { my $pkg = shift; # expand to full symbol table name if needed unless ($pkg =~ /^main::.*::$/) { $pkg = "main$pkg" if $pkg =~ /^::/; $pkg = "main::$pkg" unless $pkg =~ /^main::/; $pkg .= '::' unless $pkg =~ /::$/; } my($stem, $leaf) = $pkg =~ m/(.*::)(\w+::)$/; no strict 'refs'; my $stem_symtab = *{$stem}{HASH}; return unless defined $stem_symtab and exists $stem_symtab->{$leaf}; # free all the symbols in the package my $leaf_symtab = *{$stem_symtab->{$leaf}}{HASH}; foreach my $name (keys %$leaf_symtab) { undef *{$pkg . $name}; } use strict 'refs'; # delete the symbol table %$leaf_symtab = (); delete $stem_symtab->{$leaf}; } 1; FILE!a90b71ff/Tie/Hash/NamedCapture.pm.use strict; package Tie::Hash::NamedCapture; our $VERSION = "0.13"; __END__ =head1 NAME Tie::Hash::NamedCapture - Named regexp capture buffers =head1 SYNOPSIS tie my %hash, "Tie::Hash::NamedCapture"; # %hash now behaves like %+ tie my %hash, "Tie::Hash::NamedCapture", all => 1; # %hash now access buffers from regexp in $qr like %- =head1 DESCRIPTION This module is used to implement the special hashes C<%+> and C<%->, but it can be used to tie other variables as you choose. When the C parameter is provided, then the tied hash elements will be array refs listing the contents of each capture buffer whose name is the same as the associated hash key. If none of these buffers were involved in the match, the contents of that array ref will be as many C values as there are capture buffers with that name. In other words, the tied hash will behave as C<%->. When the C parameter is omitted or false, then the tied hash elements will be the contents of the leftmost defined buffer with the name of the associated hash key. In other words, the tied hash will behave as C<%+>. The keys of C<%->-like hashes correspond to all buffer names found in the regular expression; the keys of C<%+>-like hashes list only the names of buffers that have captured (and that are thus associated to defined values). This implementation has been moved into the core executable, but you can still load this module for backward compatibility. =head1 SEE ALSO L, L, L, L, L. =cut FILE47a0bad1/Time/Local.pmCxpackage Time::Local; use strict; use Carp (); use Exporter; our $VERSION = '1.35'; use parent 'Exporter'; our @EXPORT = qw( timegm timelocal ); our @EXPORT_OK = qw( timegm_modern timelocal_modern timegm_nocheck timelocal_nocheck timegm_posix timelocal_posix ); my @MonthDays = ( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ); # Determine breakpoint for rolling century my $ThisYear = ( localtime() )[5]; my $Breakpoint = ( $ThisYear + 50 ) % 100; my $NextCentury = $ThisYear - $ThisYear % 100; $NextCentury += 100 if $Breakpoint < 50; my $Century = $NextCentury - 100; my $SecOff = 0; my ( %Options, %Cheat ); use constant SECS_PER_MINUTE => 60; use constant SECS_PER_HOUR => 3600; use constant SECS_PER_DAY => 86400; my $MaxDay; if ( $] < 5.012000 ) { require Config; ## no critic (Variables::ProhibitPackageVars) my $MaxInt; if ( $^O eq 'MacOS' ) { # time_t is unsigned... $MaxInt = ( 1 << ( 8 * $Config::Config{ivsize} ) ) - 1; ## no critic qw(ProhibitPackageVars) } else { $MaxInt = ( ( 1 << ( 8 * $Config::Config{ivsize} - 2 ) ) - 1 ) * 2 + 1; ## no critic qw(ProhibitPackageVars) } $MaxDay = int( ( $MaxInt - ( SECS_PER_DAY / 2 ) ) / SECS_PER_DAY ) - 1; } else { # recent localtime()'s limit is the year 2**31 $MaxDay = 365 * ( 2**31 ); # On (some?) 32-bit platforms this overflows and we end up with a negative # $MaxDay, which totally breaks this module. This is the old calculation # we used from the days before Perl always had 64-bit time_t. if ( $MaxDay < 0 ) { require Config; ## no critic (Variables::ProhibitPackageVars) my $max_int = ( ( 1 << ( 8 * $Config::Config{intsize} - 2 ) ) - 1 ) * 2 + 1; $MaxDay = int( ( $max_int - ( SECS_PER_DAY / 2 ) ) / SECS_PER_DAY ) - 1; } } # Determine the EPOC day for this machine my $Epoc = 0; if ( $^O eq 'vos' ) { # work around posix-977 -- VOS doesn't handle dates in the range # 1970-1980. $Epoc = _daygm( 0, 0, 0, 1, 0, 70, 4, 0 ); } elsif ( $^O eq 'MacOS' ) { $MaxDay *= 2; # time_t unsigned ... quick hack? # MacOS time() is seconds since 1 Jan 1904, localtime # so we need to calculate an offset to apply later $Epoc = 693901; $SecOff = timelocal( localtime(0) ) - timelocal( gmtime(0) ); $Epoc += _daygm( gmtime(0) ); } else { $Epoc = _daygm( gmtime(0) ); } %Cheat = (); # clear the cache as epoc has changed sub _daygm { # This is written in such a byzantine way in order to avoid # lexical variables and sub calls, for speed return $_[3] + ( $Cheat{ pack( 'ss', @_[ 4, 5 ] ) } ||= do { my $month = ( $_[4] + 10 ) % 12; my $year = $_[5] + 1900 - int( $month / 10 ); ( ( 365 * $year ) + int( $year / 4 ) - int( $year / 100 ) + int( $year / 400 ) + int( ( ( $month * 306 ) + 5 ) / 10 ) ) - $Epoc; } ); } sub _timegm { my $sec = $SecOff + $_[0] + ( SECS_PER_MINUTE * $_[1] ) + ( SECS_PER_HOUR * $_[2] ); return $sec + ( SECS_PER_DAY * &_daygm ); } sub timegm { my ( $sec, $min, $hour, $mday, $month, $year ) = @_; my $subsec = $sec - int($sec); $sec = int($sec); if ( $Options{no_year_munging} ) { $year -= 1900; } elsif ( !$Options{posix_year} ) { if ( $year >= 1000 ) { $year -= 1900; } elsif ( $year < 100 and $year >= 0 ) { $year += ( $year > $Breakpoint ) ? $Century : $NextCentury; } } unless ( $Options{no_range_check} ) { Carp::croak("Month '$month' out of range 0..11") if $month > 11 or $month < 0; my $md = $MonthDays[$month]; ++$md if $month == 1 && _is_leap_year( $year + 1900 ); Carp::croak("Day '$mday' out of range 1..$md") if $mday > $md or $mday < 1; Carp::croak("Hour '$hour' out of range 0..23") if $hour > 23 or $hour < 0; Carp::croak("Minute '$min' out of range 0..59") if $min > 59 or $min < 0; Carp::croak("Second '$sec' out of range 0..59") if $sec >= 60 or $sec < 0; } my $days = _daygm( undef, undef, undef, $mday, $month, $year ); if ( abs($days) > $MaxDay && !$Options{no_range_check} ) { my $msg = "Day too big - abs($days) > $MaxDay\n"; $year += 1900; $msg .= "Cannot handle date ($sec, $min, $hour, $mday, $month, $year)"; Carp::croak($msg); } # Adding in the $subsec value last seems to prevent floating point errors # from creeping in. return ( ( $sec + $SecOff + ( SECS_PER_MINUTE * $min ) + ( SECS_PER_HOUR * $hour ) + ( SECS_PER_DAY * $days ) ) + $subsec ); } sub _is_leap_year { return 0 if $_[0] % 4; return 1 if $_[0] % 100; return 0 if $_[0] % 400; return 1; } sub timegm_nocheck { local $Options{no_range_check} = 1; return &timegm; } sub timegm_modern { local $Options{no_year_munging} = 1; return &timegm; } sub timegm_posix { local $Options{posix_year} = 1; return &timegm; } sub timelocal { my $sec = shift; my $subsec = $sec - int($sec); $sec = int($sec); unshift @_, $sec; my $ref_t = &timegm; my $loc_for_ref_t = _timegm( localtime($ref_t) ); my $zone_off = $loc_for_ref_t - $ref_t or return $loc_for_ref_t + $subsec; # Adjust for timezone my $loc_t = $ref_t - $zone_off; # Are we close to a DST change or are we done my $dst_off = $ref_t - _timegm( localtime($loc_t) ); # If this evaluates to true, it means that the value in $loc_t is # the _second_ hour after a DST change where the local time moves # backward. if ( !$dst_off && ( ( $ref_t - SECS_PER_HOUR ) - _timegm( localtime( $loc_t - SECS_PER_HOUR ) ) < 0 ) ) { return ( $loc_t - SECS_PER_HOUR ) + $subsec; } # Adjust for DST change $loc_t += $dst_off; return $loc_t + $subsec if $dst_off > 0; # If the original date was a non-existent gap in a forward DST jump, we # should now have the wrong answer - undo the DST adjustment my ( $s, $m, $h ) = localtime($loc_t); $loc_t -= $dst_off if $s != $_[0] || $m != $_[1] || $h != $_[2]; return $loc_t + $subsec; } sub timelocal_nocheck { local $Options{no_range_check} = 1; return &timelocal; } sub timelocal_modern { local $Options{no_year_munging} = 1; return &timelocal; } sub timelocal_posix { local $Options{posix_year} = 1; return &timelocal; } 1; # ABSTRACT: Efficiently compute time from local and GMT time __END__ =pod =encoding UTF-8 =head1 NAME Time::Local - Efficiently compute time from local and GMT time =head1 VERSION version 1.35 =head1 SYNOPSIS use Time::Local qw( timelocal_posix timegm_posix ); my $time = timelocal_posix( $sec, $min, $hour, $mday, $mon, $year ); my $time = timegm_posix( $sec, $min, $hour, $mday, $mon, $year ); =head1 DESCRIPTION This module provides functions that are the inverse of built-in perl functions C and C. They accept a date as a six-element array, and return the corresponding C value in seconds since the system epoch (Midnight, January 1, 1970 GMT on Unix, for example). This value can be positive or negative, though POSIX only requires support for positive values, so dates before the system's epoch may not work on all operating systems. It is worth drawing particular attention to the expected ranges for the values provided. The value for the day of the month is the actual day (i.e. 1..31), while the month is the number of months since January (0..11). This is consistent with the values returned from C and C. =head1 FUNCTIONS =head2 C and C I These functions are the exact inverse of Perl's built-in C and C functions. That means that calling C<< timelocal_posix( localtime($value) ) >> will always give you the same C<$value> you started with. The same applies to C<< timegm_posix( gmtime($value) ) >>. The one exception is when the value returned from C represents an ambiguous local time because of a DST change. See the documentation below for more details. These functions expect the year value to be the number of years since 1900, which is what the C and C built-ins returns. They perform range checking by default on the input C<$sec>, C<$min>, C<$hour>, C<$mday>, and C<$mon> values and will croak (using C) if given a value outside the allowed ranges. While it would be nice to make this the default behavior, that would almost certainly break a lot of code, so you must explicitly import these functions and use them instead of the default C and C. You are B encouraged to use these functions in any new code which uses this module. It will almost certainly make your code's behavior less surprising. =head2 C and C I When C was first written, it was a common practice to represent years as a two-digit value like C<99> for C<1999> or C<1> for C<2001>. This caused all sorts of problems (google "Y2K problem" if you're very young) and developers eventually realized that this was a terrible idea. The default exports of C and C do a complicated calculation when given a year value less than 1000. This leads to surprising results in many cases. See L for details. The C functions do not do this year munging and simply take the year value as provided. They perform range checking by default on the input C<$sec>, C<$min>, C<$hour>, C<$mday>, and C<$mon> values and will croak (using C) if given a value outside the allowed ranges. =head2 C and C This module exports two functions by default, C and C. They perform range checking by default on the input C<$sec>, C<$min>, C<$hour>, C<$mday>, and C<$mon> values and will croak (using C) if given a value outside the allowed ranges. B or C<*_modern> functions if possible.> =head2 C and C If you are working with data you know to be valid, you can use the "nocheck" variants, C and C. These variants must be explicitly imported. If you supply data which is not valid (month 27, second 1,000) the results will be unpredictable (so don't do that). Note that my benchmarks show that this is just a 3% speed increase over the checked versions, so unless calling C is the hottest spot in your application, using these nocheck variants is unlikely to have much impact on your application. =head2 Year Value Interpretation B or C<*_modern> functions. Use those exports if you want to ensure consistent behavior as your code ages.> Strictly speaking, the year should be specified in a form consistent with C, i.e. the offset from 1900. In order to make the interpretation of the year easier for humans, however, who are more accustomed to seeing years as two-digit or four-digit values, the following conventions are followed: =over 4 =item * Years greater than 999 are interpreted as being the actual year, rather than the offset from 1900. Thus, 1964 would indicate the year Martin Luther King won the Nobel prize, not the year 3864. =item * Years in the range 100..999 are interpreted as offset from 1900, so that 112 indicates 2012. This rule also applies to years less than zero (but see note below regarding date range). =item * Years in the range 0..99 are interpreted as shorthand for years in the rolling "current century," defined as 50 years on either side of the current year. Thus, today, in 1999, 0 would refer to 2000, and 45 to 2045, but 55 would refer to 1955. Twenty years from now, 55 would instead refer to 2055. This is messy, but matches the way people currently think about two digit dates. Whenever possible, use an absolute four digit year instead. =back The scheme above allows interpretation of a wide range of dates, particularly if 4-digit years are used. But it also means that the behavior of your code changes as time passes, because the rolling "current century" changes each year. =head2 Limits of time_t On perl versions older than 5.12.0, the range of dates that can be actually be handled depends on the size of C (usually a signed integer) on the given platform. Currently, this is 32 bits for most systems, yielding an approximate range from Dec 1901 to Jan 2038. Both C and C croak if given dates outside the supported range. As of version 5.12.0, perl has stopped using the time implementation of the operating system it's running on. Instead, it has its own implementation of those routines with a safe range of at least +/- 2**52 (about 142 million years) =head2 Ambiguous Local Times (DST) Because of DST changes, there are many time zones where the same local time occurs for two different GMT times on the same day. For example, in the "Europe/Paris" time zone, the local time of 2001-10-28 02:30:00 can represent either 2001-10-28 00:30:00 GMT, B 2001-10-28 01:30:00 GMT. When given an ambiguous local time, the timelocal() function will always return the epoch for the I of the two possible GMT times. =head2 Non-Existent Local Times (DST) When a DST change causes a locale clock to skip one hour forward, there will be an hour's worth of local times that don't exist. Again, for the "Europe/Paris" time zone, the local clock jumped from 2001-03-25 01:59:59 to 2001-03-25 03:00:00. If the C function is given a non-existent local time, it will simply return an epoch value for the time one hour later. =head2 Negative Epoch Values On perl version 5.12.0 and newer, negative epoch values are fully supported. On older versions of perl, negative epoch (C) values, which are not officially supported by the POSIX standards, are known not to work on some systems. These include MacOS (pre-OSX) and Win32. On systems which do support negative epoch values, this module should be able to cope with dates before the start of the epoch, down the minimum value of time_t for the system. =head1 IMPLEMENTATION These routines are quite efficient and yet are always guaranteed to agree with C and C. We manage this by caching the start times of any months we've seen before. If we know the start time of the month, we can always calculate any time within the month. The start times are calculated using a mathematical formula. Unlike other algorithms that do multiple calls to C. The C function is implemented using the same cache. We just assume that we're translating a GMT time, and then fudge it when we're done for the timezone and daylight savings arguments. Note that the timezone is evaluated for each date because countries occasionally change their official timezones. Assuming that C corrects for these changes, this routine will also be correct. =head1 AUTHORS EMERITUS This module is based on a Perl 4 library, timelocal.pl, that was included with Perl 4.036, and was most likely written by Tom Christiansen. The current version was written by Graham Barr. =head1 BUGS The whole scheme for interpreting two-digit years can be considered a bug. Bugs may be submitted at L. There is a mailing list available for users of this distribution, L. =head1 SOURCE The source code repository for Time-Local can be found at L. =head1 AUTHOR Dave Rolsky =head1 CONTRIBUTORS =for stopwords Florian Ragwitz Gregory Oschwald J. Nick Koston Tom Wyant Unknown =over 4 =item * Florian Ragwitz =item * Gregory Oschwald =item * J. Nick Koston =item * Tom Wyant =item * Unknown =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 1997 - 2023 by Graham Barr & Dave Rolsky. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. The full text of the license can be found in the F file included with this distribution. =cut FILE092d256d/XSLoader.pm,^# Generated from XSLoader_pm.PL (resolved %Config::Config value) # This file is unique for every OS use strict; no strict 'refs'; package XSLoader; our $VERSION = "0.32"; # remember to update version in POD! package DynaLoader; # No prizes for guessing why we don't say 'bootstrap DynaLoader;' here. # NOTE: All dl_*.xs (including dl_none.xs) define a dl_error() XSUB boot_DynaLoader('DynaLoader') if defined(&boot_DynaLoader) && !defined(&dl_error); package XSLoader; sub load { package DynaLoader; my ($caller, $modlibname) = caller(); my $module = $caller; if (@_) { $module = $_[0]; } else { $_[0] = $module; } # work with static linking too my $boots = "$module\::bootstrap"; goto &$boots if defined &$boots; goto \&XSLoader::bootstrap_inherit; my @modparts = split(/::/,$module); my $modfname = $modparts[-1]; my $modfname_orig = $modfname; # For .bs file search my $modpname = join('/',@modparts); my $c = () = split(/::/,$caller,-1); $modlibname =~ s,[\\/][^\\/]+$,, while $c--; # Q&D basename # Does this look like a relative path? if ($modlibname !~ m{^/}) { # Someone may have a #line directive that changes the file name, or # may be calling XSLoader::load from inside a string eval. We cer- # tainly do not want to go loading some code that is not in @INC, # as it could be untrusted. # # We could just fall back to DynaLoader here, but then the rest of # this function would go untested in the perl core, since all @INC # paths are relative during testing. That would be a time bomb # waiting to happen, since bugs could be introduced into the code. # # So look through @INC to see if $modlibname is in it. A rela- # tive $modlibname is not a common occurrence, so this block is # not hot code. FOUND: { for (@INC) { if ($_ eq $modlibname) { last FOUND; } } # Not found. Fall back to DynaLoader. goto \&XSLoader::bootstrap_inherit; } } my $file = "$modlibname/auto/$modpname/$modfname.so"; # print STDERR "XSLoader::load for $module ($file)\n" if $dl_debug; # N.B. The .bs file does not following the naming convention used # by mod2fname, so use the unedited version of the name. my $bs = "$modlibname/auto/$modpname/$modfname_orig.bs"; # This calls DynaLoader::bootstrap, which will load the .bs file if present goto \&XSLoader::bootstrap_inherit if not -f $file or -s $bs; my $bootname = "boot_$module"; $bootname =~ s/\W/_/g; @DynaLoader::dl_require_symbols = ($bootname); my $boot_symbol_ref; # Many dynamic extension loading problems will appear to come from # this section of code: XYZ failed at line 123 of DynaLoader.pm. # Often these errors are actually occurring in the initialisation # C code of the extension XS file. Perl reports the error as being # in this perl code simply because this was the last perl code # it executed. my $libref = dl_load_file($file, 0) or do { require Carp; Carp::croak("Can't load '$file' for module $module: " . dl_error()); }; push(@DynaLoader::dl_librefs,$libref); # record loaded object $boot_symbol_ref = dl_find_symbol($libref, $bootname) or do { require Carp; Carp::croak("Can't find '$bootname' symbol in $file\n"); }; push(@DynaLoader::dl_modules, $module); # record loaded module boot: my $xs = dl_install_xsub($boots, $boot_symbol_ref, $file); # See comment block above push(@DynaLoader::dl_shared_objects, $file); # record files loaded return &$xs(@_); } # Can't test with DynaLoader->can('bootstrap_inherit') when building in the # core, as XSLoader gets built before DynaLoader. sub bootstrap_inherit { require DynaLoader; goto \&DynaLoader::bootstrap_inherit; } 1; __END__ =head1 NAME XSLoader - Dynamically load C libraries into Perl code =head1 VERSION Version 0.32 =head1 SYNOPSIS package YourPackage; require XSLoader; XSLoader::load(__PACKAGE__, $VERSION); =head1 DESCRIPTION This module defines a standard I interface to the dynamic linking mechanisms available on many platforms. Its primary purpose is to implement cheap automatic dynamic loading of Perl modules. For a more complicated interface, see L. Many (most) features of C are not implemented in C, like for example the C, not honored by C. =head2 Migration from C A typical module using L starts like this: package YourPackage; require DynaLoader; our @ISA = qw( OnePackage OtherPackage DynaLoader ); our $VERSION = '0.01'; __PACKAGE__->bootstrap($VERSION); Change this to package YourPackage; use XSLoader; our @ISA = qw( OnePackage OtherPackage ); our $VERSION = '0.01'; XSLoader::load(__PACKAGE__, $VERSION); In other words: replace C by C, remove C from C<@ISA>, change C by C. Do not forget to quote the name of your package on the C line, and add comma (C<,>) before the arguments (C<$VERSION> above). Of course, if C<@ISA> contained only C, there is no need to have the C<@ISA> assignment at all; moreover, if instead of C one uses the more backward-compatible use vars qw($VERSION @ISA); one can remove this reference to C<@ISA> together with the C<@ISA> assignment. If no C<$VERSION> was specified on the C line, the last line becomes XSLoader::load(__PACKAGE__); in which case it can be further simplified to XSLoader::load(); as C will use C to determine the package. =head2 Backward compatible boilerplate If you want to have your cake and eat it too, you need a more complicated boilerplate. package YourPackage; our @ISA = qw( OnePackage OtherPackage ); our $VERSION = '0.01'; eval { require XSLoader; XSLoader::load(__PACKAGE__, $VERSION); 1; } or do { require DynaLoader; push @ISA, 'DynaLoader'; __PACKAGE__->bootstrap($VERSION); }; The parentheses about C arguments are needed since we replaced C by C, so the compiler does not know that a function C is present. This boilerplate uses the low-overhead C if present; if used with an antique Perl which has no C, it falls back to using C. =head1 Order of initialization: early load() I section in your XS file (see L). What is described here is equally applicable to the L interface.> A sufficiently complicated module using XS would have both Perl code (defined in F) and XS code (defined in F). If this Perl code makes calls into this XS code, and/or this XS code makes calls to the Perl code, one should be careful with the order of initialization. The call to C (or C) calls the module's bootstrap code. For modules build by F (nearly all modules) this has three side effects: =over =item * A sanity check is done to ensure that the versions of the F<.pm> and the (compiled) F<.xs> parts are compatible. If C<$VERSION> was specified, this is used for the check. If not specified, it defaults to C<$XS_VERSION // $VERSION> (in the module's namespace) =item * the XSUBs are made accessible from Perl =item * if a C section was present in the F<.xs> file, the code there is called. =back Consequently, if the code in the F<.pm> file makes calls to these XSUBs, it is convenient to have XSUBs installed before the Perl code is defined; for example, this makes prototypes for XSUBs visible to this Perl code. Alternatively, if the C section makes calls to Perl functions (or uses Perl variables) defined in the F<.pm> file, they must be defined prior to the call to C (or C). The first situation being much more frequent, it makes sense to rewrite the boilerplate as package YourPackage; use XSLoader; our ($VERSION, @ISA); BEGIN { @ISA = qw( OnePackage OtherPackage ); $VERSION = '0.01'; # Put Perl code used in the BOOT: section here XSLoader::load(__PACKAGE__, $VERSION); } # Put Perl code making calls into XSUBs here =head2 The most hairy case If the interdependence of your C section and Perl code is more complicated than this (e.g., the C section makes calls to Perl functions which make calls to XSUBs with prototypes), get rid of the C section altogether. Replace it with a function C, and call it like this: package YourPackage; use XSLoader; our ($VERSION, @ISA); BEGIN { @ISA = qw( OnePackage OtherPackage ); $VERSION = '0.01'; XSLoader::load(__PACKAGE__, $VERSION); } # Put Perl code used in onBOOT() function here; calls to XSUBs are # prototype-checked. onBOOT; # Put Perl initialization code assuming that XS is initialized here =head1 DIAGNOSTICS =over =item C B<(F)> The bootstrap symbol could not be found in the extension module. =item C B<(F)> The loading or initialisation of the extension module failed. The detailed error follows. =item C B<(W)> As the message says, some symbols stay undefined although the extension module was correctly loaded and initialised. The list of undefined symbols follows. =back =head1 LIMITATIONS To reduce the overhead as much as possible, only one possible location is checked to find the extension DLL (this location is where C would put the DLL). If not found, the search for the DLL is transparently delegated to C, which looks for the DLL along the C<@INC> list. In particular, this is applicable to the structure of C<@INC> used for testing not-yet-installed extensions. This means that running uninstalled extensions may have much more overhead than running the same extensions after C. =head1 KNOWN BUGS The new simpler way to call C with no arguments at all does not work on Perl 5.8.4 and 5.8.5. =head1 BUGS Please report any bugs or feature requests via the perlbug(1) utility. =head1 SEE ALSO L =head1 AUTHORS Ilya Zakharevich originally extracted C from C. CPAN version is currently maintained by SEbastien Aperghis-Tramoni Esebastien@aperghis.netE. Previous maintainer was Michael G Schwern . =head1 COPYRIGHT & LICENSE Copyright (C) 1990-2011 by Larry Wall and others. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut FILE3c9c3528/Compress/Raw/Zlib.pm package Compress::Raw::Zlib; require 5.006 ; require Exporter; use Carp ; use strict ; use warnings ; use bytes ; our ($VERSION, $XS_VERSION, @ISA, @EXPORT, %EXPORT_TAGS, @EXPORT_OK, $AUTOLOAD, %DEFLATE_CONSTANTS, @DEFLATE_CONSTANTS); $VERSION = '2.213'; $XS_VERSION = $VERSION; $VERSION = eval $VERSION; @ISA = qw(Exporter); %EXPORT_TAGS = ( flush => [qw{ Z_NO_FLUSH Z_PARTIAL_FLUSH Z_SYNC_FLUSH Z_FULL_FLUSH Z_FINISH Z_BLOCK }], level => [qw{ Z_NO_COMPRESSION Z_BEST_SPEED Z_BEST_COMPRESSION Z_DEFAULT_COMPRESSION }], strategy => [qw{ Z_FILTERED Z_HUFFMAN_ONLY Z_RLE Z_FIXED Z_DEFAULT_STRATEGY }], status => [qw{ Z_OK Z_STREAM_END Z_NEED_DICT Z_ERRNO Z_STREAM_ERROR Z_DATA_ERROR Z_MEM_ERROR Z_BUF_ERROR Z_VERSION_ERROR }], ); %DEFLATE_CONSTANTS = %EXPORT_TAGS; # Items to export into callers namespace by default. Note: do not export # names by default without a very good reason. Use EXPORT_OK instead. # Do not simply export all your public functions/methods/constants. @DEFLATE_CONSTANTS = @EXPORT = qw( ZLIB_VERSION ZLIB_VERNUM OS_CODE MAX_MEM_LEVEL MAX_WBITS Z_ASCII Z_BEST_COMPRESSION Z_BEST_SPEED Z_BINARY Z_BLOCK Z_BUF_ERROR Z_DATA_ERROR Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY Z_DEFLATED Z_ERRNO Z_FILTERED Z_FIXED Z_FINISH Z_FULL_FLUSH Z_HUFFMAN_ONLY Z_MEM_ERROR Z_NEED_DICT Z_NO_COMPRESSION Z_NO_FLUSH Z_NULL Z_OK Z_PARTIAL_FLUSH Z_RLE Z_STREAM_END Z_STREAM_ERROR Z_SYNC_FLUSH Z_TREES Z_UNKNOWN Z_VERSION_ERROR ZLIBNG_VERSION ZLIBNG_VERNUM ZLIBNG_VER_MAJOR ZLIBNG_VER_MINOR ZLIBNG_VER_REVISION ZLIBNG_VER_STATUS ZLIBNG_VER_MODIFIED WANT_GZIP WANT_GZIP_OR_ZLIB ); push @EXPORT, qw(crc32 adler32 DEF_WBITS); use constant WANT_GZIP => 16; use constant WANT_GZIP_OR_ZLIB => 32; sub AUTOLOAD { my($constname); ($constname = $AUTOLOAD) =~ s/.*:://; my ($error, $val) = constant($constname); Carp::croak $error if $error; no strict 'refs'; *{$AUTOLOAD} = sub { $val }; goto &{$AUTOLOAD}; } use constant FLAG_APPEND => 1 ; use constant FLAG_CRC => 2 ; use constant FLAG_ADLER => 4 ; use constant FLAG_CONSUME_INPUT => 8 ; use constant FLAG_LIMIT_OUTPUT => 16 ; eval { require XSLoader; XSLoader::load('Compress::Raw::Zlib', $XS_VERSION); 1; } or do { require DynaLoader; local @ISA = qw(DynaLoader); bootstrap Compress::Raw::Zlib $XS_VERSION ; }; use constant Parse_any => 0x01; use constant Parse_unsigned => 0x02; use constant Parse_signed => 0x04; use constant Parse_boolean => 0x08; #use constant Parse_string => 0x10; #use constant Parse_custom => 0x12; #use constant Parse_store_ref => 0x100 ; use constant OFF_PARSED => 0 ; use constant OFF_TYPE => 1 ; use constant OFF_DEFAULT => 2 ; use constant OFF_FIXED => 3 ; use constant OFF_FIRST_ONLY => 4 ; use constant OFF_STICKY => 5 ; sub ParseParameters { my $level = shift || 0 ; my $sub = (caller($level + 1))[3] ; #local $Carp::CarpLevel = 1 ; my $p = new Compress::Raw::Zlib::Parameters() ; $p->parse(@_) or croak "$sub: $p->{Error}" ; return $p; } sub Compress::Raw::Zlib::Parameters::new { my $class = shift ; my $obj = { Error => '', Got => {}, } ; #return bless $obj, ref($class) || $class || __PACKAGE__ ; return bless $obj, 'Compress::Raw::Zlib::Parameters' ; } sub Compress::Raw::Zlib::Parameters::setError { my $self = shift ; my $error = shift ; my $retval = @_ ? shift : undef ; $self->{Error} = $error ; return $retval; } #sub getError #{ # my $self = shift ; # return $self->{Error} ; #} sub Compress::Raw::Zlib::Parameters::parse { my $self = shift ; my $default = shift ; my $got = $self->{Got} ; my $firstTime = keys %{ $got } == 0 ; my (@Bad) ; my @entered = () ; # Allow the options to be passed as a hash reference or # as the complete hash. if (@_ == 0) { @entered = () ; } elsif (@_ == 1) { my $href = $_[0] ; return $self->setError("Expected even number of parameters, got 1") if ! defined $href or ! ref $href or ref $href ne "HASH" ; foreach my $key (keys %$href) { push @entered, $key ; push @entered, \$href->{$key} ; } } else { my $count = @_; return $self->setError("Expected even number of parameters, got $count") if $count % 2 != 0 ; for my $i (0.. $count / 2 - 1) { push @entered, $_[2* $i] ; push @entered, \$_[2* $i+1] ; } } while (my ($key, $v) = each %$default) { croak "need 4 params [@$v]" if @$v != 4 ; my ($first_only, $sticky, $type, $value) = @$v ; my $x ; $self->_checkType($key, \$value, $type, 0, \$x) or return undef ; $key = lc $key; if ($firstTime || ! $sticky) { $got->{$key} = [0, $type, $value, $x, $first_only, $sticky] ; } $got->{$key}[OFF_PARSED] = 0 ; } for my $i (0.. @entered / 2 - 1) { my $key = $entered[2* $i] ; my $value = $entered[2* $i+1] ; #print "Key [$key] Value [$value]" ; #print defined $$value ? "[$$value]\n" : "[undef]\n"; $key =~ s/^-// ; my $canonkey = lc $key; if ($got->{$canonkey} && ($firstTime || ! $got->{$canonkey}[OFF_FIRST_ONLY] )) { my $type = $got->{$canonkey}[OFF_TYPE] ; my $s ; $self->_checkType($key, $value, $type, 1, \$s) or return undef ; #$value = $$value unless $type & Parse_store_ref ; $value = $$value ; $got->{$canonkey} = [1, $type, $value, $s] ; } else { push (@Bad, $key) } } if (@Bad) { my ($bad) = join(", ", @Bad) ; return $self->setError("unknown key value(s) @Bad") ; } return 1; } sub Compress::Raw::Zlib::Parameters::_checkType { my $self = shift ; my $key = shift ; my $value = shift ; my $type = shift ; my $validate = shift ; my $output = shift; #local $Carp::CarpLevel = $level ; #print "PARSE $type $key $value $validate $sub\n" ; # if ( $type & Parse_store_ref) # { # #$value = $$value # # if ref ${ $value } ; # # $$output = $value ; # return 1; # } $value = $$value ; if ($type & Parse_any) { $$output = $value ; return 1; } elsif ($type & Parse_unsigned) { return $self->setError("Parameter '$key' must be an unsigned int, got 'undef'") if $validate && ! defined $value ; return $self->setError("Parameter '$key' must be an unsigned int, got '$value'") if $validate && $value !~ /^\d+$/; $$output = defined $value ? $value : 0 ; return 1; } elsif ($type & Parse_signed) { return $self->setError("Parameter '$key' must be a signed int, got 'undef'") if $validate && ! defined $value ; return $self->setError("Parameter '$key' must be a signed int, got '$value'") if $validate && $value !~ /^-?\d+$/; $$output = defined $value ? $value : 0 ; return 1 ; } elsif ($type & Parse_boolean) { return $self->setError("Parameter '$key' must be an int, got '$value'") if $validate && defined $value && $value !~ /^\d*$/; $$output = defined $value ? $value != 0 : 0 ; return 1; } # elsif ($type & Parse_string) # { # $$output = defined $value ? $value : "" ; # return 1; # } $$output = $value ; return 1; } sub Compress::Raw::Zlib::Parameters::parsed { my $self = shift ; my $name = shift ; return $self->{Got}{lc $name}[OFF_PARSED] ; } sub Compress::Raw::Zlib::Parameters::value { my $self = shift ; my $name = shift ; if (@_) { $self->{Got}{lc $name}[OFF_PARSED] = 1; $self->{Got}{lc $name}[OFF_DEFAULT] = $_[0] ; $self->{Got}{lc $name}[OFF_FIXED] = $_[0] ; } return $self->{Got}{lc $name}[OFF_FIXED] ; } our $OPTIONS_deflate = { 'AppendOutput' => [1, 1, Parse_boolean, 0], 'CRC32' => [1, 1, Parse_boolean, 0], 'ADLER32' => [1, 1, Parse_boolean, 0], 'Bufsize' => [1, 1, Parse_unsigned, 4096], 'Level' => [1, 1, Parse_signed, Z_DEFAULT_COMPRESSION()], 'Method' => [1, 1, Parse_unsigned, Z_DEFLATED()], 'WindowBits' => [1, 1, Parse_signed, MAX_WBITS()], 'MemLevel' => [1, 1, Parse_unsigned, MAX_MEM_LEVEL()], 'Strategy' => [1, 1, Parse_unsigned, Z_DEFAULT_STRATEGY()], 'Dictionary' => [1, 1, Parse_any, ""], }; sub Compress::Raw::Zlib::Deflate::new { my $pkg = shift ; my ($got) = ParseParameters(0, $OPTIONS_deflate, @_); croak "Compress::Raw::Zlib::Deflate::new: Bufsize must be >= 1, you specified " . $got->value('Bufsize') unless $got->value('Bufsize') >= 1; my $flags = 0 ; $flags |= FLAG_APPEND if $got->value('AppendOutput') ; $flags |= FLAG_CRC if $got->value('CRC32') ; $flags |= FLAG_ADLER if $got->value('ADLER32') ; my $windowBits = $got->value('WindowBits'); $windowBits += MAX_WBITS() if ($windowBits & MAX_WBITS()) == 0 ; _deflateInit($flags, $got->value('Level'), $got->value('Method'), $windowBits, $got->value('MemLevel'), $got->value('Strategy'), $got->value('Bufsize'), $got->value('Dictionary')) ; } sub Compress::Raw::Zlib::deflateStream::STORABLE_freeze { my $type = ref shift; croak "Cannot freeze $type object\n"; } sub Compress::Raw::Zlib::deflateStream::STORABLE_thaw { my $type = ref shift; croak "Cannot thaw $type object\n"; } our $OPTIONS_inflate = { 'AppendOutput' => [1, 1, Parse_boolean, 0], 'LimitOutput' => [1, 1, Parse_boolean, 0], 'CRC32' => [1, 1, Parse_boolean, 0], 'ADLER32' => [1, 1, Parse_boolean, 0], 'ConsumeInput' => [1, 1, Parse_boolean, 1], 'Bufsize' => [1, 1, Parse_unsigned, 4096], 'WindowBits' => [1, 1, Parse_signed, MAX_WBITS()], 'Dictionary' => [1, 1, Parse_any, ""], } ; sub Compress::Raw::Zlib::Inflate::new { my $pkg = shift ; my ($got) = ParseParameters(0, $OPTIONS_inflate, @_); croak "Compress::Raw::Zlib::Inflate::new: Bufsize must be >= 1, you specified " . $got->value('Bufsize') unless $got->value('Bufsize') >= 1; my $flags = 0 ; $flags |= FLAG_APPEND if $got->value('AppendOutput') ; $flags |= FLAG_CRC if $got->value('CRC32') ; $flags |= FLAG_ADLER if $got->value('ADLER32') ; $flags |= FLAG_CONSUME_INPUT if $got->value('ConsumeInput') ; $flags |= FLAG_LIMIT_OUTPUT if $got->value('LimitOutput') ; my $windowBits = $got->value('WindowBits'); $windowBits += MAX_WBITS() if ($windowBits & MAX_WBITS()) == 0 ; _inflateInit($flags, $windowBits, $got->value('Bufsize'), $got->value('Dictionary')) ; } sub Compress::Raw::Zlib::inflateStream::STORABLE_freeze { my $type = ref shift; croak "Cannot freeze $type object\n"; } sub Compress::Raw::Zlib::inflateStream::STORABLE_thaw { my $type = ref shift; croak "Cannot thaw $type object\n"; } sub Compress::Raw::Zlib::InflateScan::new { my $pkg = shift ; my ($got) = ParseParameters(0, { 'CRC32' => [1, 1, Parse_boolean, 0], 'ADLER32' => [1, 1, Parse_boolean, 0], 'Bufsize' => [1, 1, Parse_unsigned, 4096], 'WindowBits' => [1, 1, Parse_signed, -MAX_WBITS()], 'Dictionary' => [1, 1, Parse_any, ""], }, @_) ; croak "Compress::Raw::Zlib::InflateScan::new: Bufsize must be >= 1, you specified " . $got->value('Bufsize') unless $got->value('Bufsize') >= 1; my $flags = 0 ; #$flags |= FLAG_APPEND if $got->value('AppendOutput') ; $flags |= FLAG_CRC if $got->value('CRC32') ; $flags |= FLAG_ADLER if $got->value('ADLER32') ; #$flags |= FLAG_CONSUME_INPUT if $got->value('ConsumeInput') ; _inflateScanInit($flags, $got->value('WindowBits'), $got->value('Bufsize'), '') ; } sub Compress::Raw::Zlib::inflateScanStream::createDeflateStream { my $pkg = shift ; my ($got) = ParseParameters(0, { 'AppendOutput' => [1, 1, Parse_boolean, 0], 'CRC32' => [1, 1, Parse_boolean, 0], 'ADLER32' => [1, 1, Parse_boolean, 0], 'Bufsize' => [1, 1, Parse_unsigned, 4096], 'Level' => [1, 1, Parse_signed, Z_DEFAULT_COMPRESSION()], 'Method' => [1, 1, Parse_unsigned, Z_DEFLATED()], 'WindowBits' => [1, 1, Parse_signed, - MAX_WBITS()], 'MemLevel' => [1, 1, Parse_unsigned, MAX_MEM_LEVEL()], 'Strategy' => [1, 1, Parse_unsigned, Z_DEFAULT_STRATEGY()], }, @_) ; croak "Compress::Raw::Zlib::InflateScan::createDeflateStream: Bufsize must be >= 1, you specified " . $got->value('Bufsize') unless $got->value('Bufsize') >= 1; my $flags = 0 ; $flags |= FLAG_APPEND if $got->value('AppendOutput') ; $flags |= FLAG_CRC if $got->value('CRC32') ; $flags |= FLAG_ADLER if $got->value('ADLER32') ; $pkg->_createDeflateStream($flags, $got->value('Level'), $got->value('Method'), $got->value('WindowBits'), $got->value('MemLevel'), $got->value('Strategy'), $got->value('Bufsize'), ) ; } sub Compress::Raw::Zlib::inflateScanStream::inflate { my $self = shift ; my $buffer = $_[1]; my $eof = $_[2]; my $status = $self->scan(@_); if ($status == Z_OK() && $_[2]) { my $byte = ' '; $status = $self->scan(\$byte, $_[1]) ; } return $status ; } sub Compress::Raw::Zlib::deflateStream::deflateParams { my $self = shift ; my ($got) = ParseParameters(0, { 'Level' => [1, 1, Parse_signed, undef], 'Strategy' => [1, 1, Parse_unsigned, undef], 'Bufsize' => [1, 1, Parse_unsigned, undef], }, @_) ; croak "Compress::Raw::Zlib::deflateParams needs Level and/or Strategy" unless $got->parsed('Level') + $got->parsed('Strategy') + $got->parsed('Bufsize'); croak "Compress::Raw::Zlib::Inflate::deflateParams: Bufsize must be >= 1, you specified " . $got->value('Bufsize') if $got->parsed('Bufsize') && $got->value('Bufsize') <= 1; my $flags = 0; $flags |= 1 if $got->parsed('Level') ; $flags |= 2 if $got->parsed('Strategy') ; $flags |= 4 if $got->parsed('Bufsize') ; $self->_deflateParams($flags, $got->value('Level'), $got->value('Strategy'), $got->value('Bufsize')); } 1; __END__ =head1 NAME Compress::Raw::Zlib - Low-Level Interface to zlib or zlib-ng compression library =head1 SYNOPSIS use Compress::Raw::Zlib ; ($d, $status) = new Compress::Raw::Zlib::Deflate( [OPT] ) ; $status = $d->deflate($input, $output) ; $status = $d->flush($output [, $flush_type]) ; $d->deflateReset() ; $d->deflateParams(OPTS) ; $d->deflateTune(OPTS) ; $d->dict_adler() ; $d->crc32() ; $d->adler32() ; $d->total_in() ; $d->total_out() ; $d->msg() ; $d->get_Strategy(); $d->get_Level(); $d->get_BufSize(); ($i, $status) = new Compress::Raw::Zlib::Inflate( [OPT] ) ; $status = $i->inflate($input, $output [, $eof]) ; $status = $i->inflateSync($input) ; $i->inflateReset() ; $i->dict_adler() ; $d->crc32() ; $d->adler32() ; $i->total_in() ; $i->total_out() ; $i->msg() ; $d->get_BufSize(); $crc = adler32($buffer [,$crc]) ; $crc = crc32($buffer [,$crc]) ; $crc = crc32_combine($crc1, $crc2, $len2); $adler = adler32_combine($adler1, $adler2, $len2); my $version = Compress::Raw::Zlib::zlib_version(); my $flags = Compress::Raw::Zlib::zlibCompileFlags(); is_zlib_native(); is_zlibng_native(); is_zlibng_compat(); is_zlibng(); =head1 DESCRIPTION The I module provides a Perl interface to the I or I compression libraries (see L for details about where to get I or I). In the text below all references to I are also applicable to I unless otherwise stated. =head1 Compress::Raw::Zlib::Deflate This section defines an interface that allows in-memory compression using the I interface provided by zlib. Here is a definition of the interface available: =head2 B<($d, $status) = new Compress::Raw::Zlib::Deflate( [OPT] ) > Initialises a deflation object. If you are familiar with the I library, it combines the features of the I functions C, C and C. If successful, it will return the initialised deflation object, C<$d> and a C<$status> of C in a list context. In scalar context it returns the deflation object, C<$d>, only. If not successful, the returned deflation object, C<$d>, will be I and C<$status> will hold the a I error code. The function optionally takes a number of named options specified as C<< Name => value >> pairs. This allows individual options to be tailored without having to specify them all in the parameter list. For backward compatibility, it is also possible to pass the parameters as a reference to a hash containing the name=>value pairs. Below is a list of the valid options: =over 5 =item B<-Level> Defines the compression level. Valid values are 0 through 9, C, C, C, and C. The default is C. =item B<-Method> Defines the compression method. The only valid value at present (and the default) is C. =item B<-WindowBits> To compress an RFC 1950 data stream, set C to a positive number between 8 and 15. To compress an RFC 1951 data stream, set C to C<-MAX_WBITS>. To compress an RFC 1952 data stream (i.e. gzip), set C to C. For a definition of the meaning and valid values for C refer to the I documentation for I. Defaults to C. =item B<-MemLevel> For a definition of the meaning and valid values for C refer to the I documentation for I. Defaults to MAX_MEM_LEVEL. =item B<-Strategy> Defines the strategy used to tune the compression. The valid values are C, C, C, C and C. The default is C. =item B<-Dictionary> When a dictionary is specified I will automatically call C directly after calling C. The Adler32 value for the dictionary can be obtained by calling the method C<$d-Edict_adler()>. The default is no dictionary. =item B<-Bufsize> Sets the initial size for the output buffer used by the C<$d-Edeflate> and C<$d-Eflush> methods. If the buffer has to be reallocated to increase the size, it will grow in increments of C. The default buffer size is 4096. =item B<-AppendOutput> This option controls how data is written to the output buffer by the C<$d-Edeflate> and C<$d-Eflush> methods. If the C option is set to false, the output buffers in the C<$d-Edeflate> and C<$d-Eflush> methods will be truncated before uncompressed data is written to them. If the option is set to true, uncompressed data will be appended to the output buffer in the C<$d-Edeflate> and C<$d-Eflush> methods. This option defaults to false. =item B<-CRC32> If set to true, a crc32 checksum of the uncompressed data will be calculated. Use the C<$d-Ecrc32> method to retrieve this value. This option defaults to false. =item B<-ADLER32> If set to true, an adler32 checksum of the uncompressed data will be calculated. Use the C<$d-Eadler32> method to retrieve this value. This option defaults to false. =back Here is an example of using the C optional parameter list to override the default buffer size and compression level. All other options will take their default values. my $d = new Compress::Raw::Zlib::Deflate ( -Bufsize => 300, -Level => Z_BEST_SPEED ) ; =head2 B<$status = $d-Edeflate($input, $output)> Deflates the contents of C<$input> and writes the compressed data to C<$output>. The C<$input> and C<$output> parameters can be either scalars or scalar references. When finished, C<$input> will be completely processed (assuming there were no errors). If the deflation was successful it writes the deflated data to C<$output> and returns a status value of C. On error, it returns a I error code. If the C option is set to true in the constructor for the C<$d> object, the compressed data will be appended to C<$output>. If it is false, C<$output> will be truncated before any compressed data is written to it. B: This method will not necessarily write compressed data to C<$output> every time it is called. So do not assume that there has been an error if the contents of C<$output> is empty on returning from this method. As long as the return code from the method is C, the deflate has succeeded. =head2 B<$status = $d-Eflush($output [, $flush_type]) > Typically used to finish the deflation. Any pending output will be written to C<$output>. Returns C if successful. Note that flushing can seriously degrade the compression ratio, so it should only be used to terminate a decompression (using C) or when you want to create a I (using C). By default the C used is C. Other valid values for C are C, C, C and C. It is strongly recommended that you only set the C parameter if you fully understand the implications of what it does. See the C documentation for details. If the C option is set to true in the constructor for the C<$d> object, the compressed data will be appended to C<$output>. If it is false, C<$output> will be truncated before any compressed data is written to it. =head2 B<$status = $d-EdeflateReset() > This method will reset the deflation object C<$d>. It can be used when you are compressing multiple data streams and want to use the same object to compress each of them. It should only be used once the previous data stream has been flushed successfully, i.e. a call to C<< $d->flush(Z_FINISH) >> has returned C. Returns C if successful. =head2 B<$status = $d-EdeflateParams([OPT])> Change settings for the deflate object C<$d>. The list of the valid options is shown below. Options not specified will remain unchanged. =over 5 =item B<-Level> Defines the compression level. Valid values are 0 through 9, C, C, C, and C. =item B<-Strategy> Defines the strategy used to tune the compression. The valid values are C, C and C. =item B<-BufSize> Sets the initial size for the output buffer used by the C<$d-Edeflate> and C<$d-Eflush> methods. If the buffer has to be reallocated to increase the size, it will grow in increments of C. =back =head2 B<$status = $d-EdeflateTune($good_length, $max_lazy, $nice_length, $max_chain)> Tune the internal settings for the deflate object C<$d>. This option is only available if you are running zlib 1.2.2.3 or better. Refer to the documentation in zlib.h for instructions on how to fly C. =head2 B<$d-Edict_adler()> Returns the adler32 value for the dictionary. =head2 B<$d-Ecrc32()> Returns the crc32 value for the uncompressed data to date. If the C option is not enabled in the constructor for this object, this method will always return 0; =head2 B<$d-Eadler32()> Returns the adler32 value for the uncompressed data to date. =head2 B<$d-Emsg()> Returns the last error message generated by zlib. =head2 B<$d-Etotal_in()> Returns the total number of bytes uncompressed bytes input to deflate. =head2 B<$d-Etotal_out()> Returns the total number of compressed bytes output from deflate. =head2 B<$d-Eget_Strategy()> Returns the deflation strategy currently used. Valid values are C, C and C. =head2 B<$d-Eget_Level()> Returns the compression level being used. =head2 B<$d-Eget_BufSize()> Returns the buffer size used to carry out the compression. =head2 Example Here is a trivial example of using C. It simply reads standard input, deflates it and writes it to standard output. use strict ; use warnings ; use Compress::Raw::Zlib ; binmode STDIN; binmode STDOUT; my $x = new Compress::Raw::Zlib::Deflate or die "Cannot create a deflation stream\n" ; my ($output, $status) ; while (<>) { $status = $x->deflate($_, $output) ; $status == Z_OK or die "deflation failed\n" ; print $output ; } $status = $x->flush($output) ; $status == Z_OK or die "deflation failed\n" ; print $output ; =head1 Compress::Raw::Zlib::Inflate This section defines an interface that allows in-memory uncompression using the I interface provided by zlib. Here is a definition of the interface: =head2 B< ($i, $status) = new Compress::Raw::Zlib::Inflate( [OPT] ) > Initialises an inflation object. In a list context it returns the inflation object, C<$i>, and the I status code (C<$status>). In a scalar context it returns the inflation object only. If successful, C<$i> will hold the inflation object and C<$status> will be C. If not successful, C<$i> will be I and C<$status> will hold the I error code. The function optionally takes a number of named options specified as C<< -Name => value >> pairs. This allows individual options to be tailored without having to specify them all in the parameter list. For backward compatibility, it is also possible to pass the parameters as a reference to a hash containing the C<< name=>value >> pairs. Here is a list of the valid options: =over 5 =item B<-WindowBits> To uncompress an RFC 1950 data stream, set C to a positive number between 8 and 15. To uncompress an RFC 1951 data stream, set C to C<-MAX_WBITS>. To uncompress an RFC 1952 data stream (i.e. gzip), set C to C. To auto-detect and uncompress an RFC 1950 or RFC 1952 data stream (i.e. gzip), set C to C. For a full definition of the meaning and valid values for C refer to the I documentation for I. Defaults to C. =item B<-Bufsize> Sets the initial size for the output buffer used by the C<$i-Einflate> method. If the output buffer in this method has to be reallocated to increase the size, it will grow in increments of C. Default is 4096. =item B<-Dictionary> The default is no dictionary. =item B<-AppendOutput> This option controls how data is written to the output buffer by the C<$i-Einflate> method. If the option is set to false, the output buffer in the C<$i-Einflate> method will be truncated before uncompressed data is written to it. If the option is set to true, uncompressed data will be appended to the output buffer by the C<$i-Einflate> method. This option defaults to false. =item B<-CRC32> If set to true, a crc32 checksum of the uncompressed data will be calculated. Use the C<$i-Ecrc32> method to retrieve this value. This option defaults to false. =item B<-ADLER32> If set to true, an adler32 checksum of the uncompressed data will be calculated. Use the C<$i-Eadler32> method to retrieve this value. This option defaults to false. =item B<-ConsumeInput> If set to true, this option will remove compressed data from the input buffer of the C<< $i->inflate >> method as the inflate progresses. This option can be useful when you are processing compressed data that is embedded in another file/buffer. In this case the data that immediately follows the compressed stream will be left in the input buffer. This option defaults to true. =item B<-LimitOutput> The C option changes the behavior of the C<< $i->inflate >> method so that the amount of memory used by the output buffer can be limited. When C is used the size of the output buffer used will either be the value of the C option or the amount of memory already allocated to C<$output>, whichever is larger. Predicting the output size available is tricky, so don't rely on getting an exact output buffer size. When C is not specified C<< $i->inflate >> will use as much memory as it takes to write all the uncompressed data it creates by uncompressing the input buffer. If C is enabled, the C option will also be enabled. This option defaults to false. See L for a discussion on why C is needed and how to use it. =back Here is an example of using an optional parameter to override the default buffer size. my ($i, $status) = new Compress::Raw::Zlib::Inflate( -Bufsize => 300 ) ; =head2 B< $status = $i-Einflate($input, $output [,$eof]) > Inflates the complete contents of C<$input> and writes the uncompressed data to C<$output>. The C<$input> and C<$output> parameters can either be scalars or scalar references. Returns C if successful and C if the end of the compressed data has been successfully reached. If not successful C<$status> will hold the I error code. If the C option has been set to true when the C object is created, the C<$input> parameter is modified by C. On completion it will contain what remains of the input buffer after inflation. In practice, this means that when the return status is C the C<$input> parameter will contain an empty string, and when the return status is C the C<$input> parameter will contains what (if anything) was stored in the input buffer after the deflated data stream. This feature is useful when processing a file format that encapsulates a compressed data stream (e.g. gzip, zip) and there is useful data immediately after the deflation stream. If the C option is set to true in the constructor for this object, the uncompressed data will be appended to C<$output>. If it is false, C<$output> will be truncated before any uncompressed data is written to it. The C<$eof> parameter needs a bit of explanation. Prior to version 1.2.0, zlib assumed that there was at least one trailing byte immediately after the compressed data stream when it was carrying out decompression. This normally isn't a problem because the majority of zlib applications guarantee that there will be data directly after the compressed data stream. For example, both gzip (RFC 1950) and zip both define trailing data that follows the compressed data stream. The C<$eof> parameter only needs to be used if B of the following conditions apply =over 5 =item 1 You are either using a copy of zlib that is older than version 1.2.0 or you want your application code to be able to run with as many different versions of zlib as possible. =item 2 You have set the C parameter to C<-MAX_WBITS> in the constructor for this object, i.e. you are uncompressing a raw deflated data stream (RFC 1951). =item 3 There is no data immediately after the compressed data stream. =back If B of these are the case, then you need to set the C<$eof> parameter to true on the final call (and only the final call) to C<$i-Einflate>. If you have built this module with zlib >= 1.2.0, the C<$eof> parameter is ignored. You can still set it if you want, but it won't be used behind the scenes. =head2 B<$status = $i-EinflateSync($input)> This method can be used to attempt to recover good data from a compressed data stream that is partially corrupt. It scans C<$input> until it reaches either a I or the end of the buffer. If a I is found, C is returned and C<$input> will be have all data up to the flush point removed. This data can then be passed to the C<$i-Einflate> method to be uncompressed. Any other return code means that a flush point was not found. If more data is available, C can be called repeatedly with more compressed data until the flush point is found. Note I are not present by default in compressed data streams. They must have been added explicitly when the data stream was created by calling C with C. =head2 B<$status = $i-EinflateReset() > This method will reset the inflation object C<$i>. It can be used when you are uncompressing multiple data streams and want to use the same object to uncompress each of them. Returns C if successful. =head2 B<$i-Edict_adler()> Returns the adler32 value for the dictionary. =head2 B<$i-Ecrc32()> Returns the crc32 value for the uncompressed data to date. If the C option is not enabled in the constructor for this object, this method will always return 0; =head2 B<$i-Eadler32()> Returns the adler32 value for the uncompressed data to date. If the C option is not enabled in the constructor for this object, this method will always return 0; =head2 B<$i-Emsg()> Returns the last error message generated by zlib. =head2 B<$i-Etotal_in()> Returns the total number of bytes compressed bytes input to inflate. =head2 B<$i-Etotal_out()> Returns the total number of uncompressed bytes output from inflate. =head2 B<$d-Eget_BufSize()> Returns the buffer size used to carry out the decompression. =head2 Examples Here is an example of using C. use strict ; use warnings ; use Compress::Raw::Zlib; my $x = new Compress::Raw::Zlib::Inflate() or die "Cannot create a inflation stream\n" ; my $input = '' ; binmode STDIN; binmode STDOUT; my ($output, $status) ; while (read(STDIN, $input, 4096)) { $status = $x->inflate($input, $output) ; print $output ; last if $status != Z_OK ; } die "inflation failed\n" unless $status == Z_STREAM_END ; The next example show how to use the C option. Notice the use of two nested loops in this case. The outer loop reads the data from the input source - STDIN and the inner loop repeatedly calls C until C<$input> is exhausted, we get an error, or the end of the stream is reached. One point worth remembering is by using the C option you also get C set as well - this makes the code below much simpler. use strict ; use warnings ; use Compress::Raw::Zlib; my $x = new Compress::Raw::Zlib::Inflate(LimitOutput => 1) or die "Cannot create a inflation stream\n" ; my $input = '' ; binmode STDIN; binmode STDOUT; my ($output, $status) ; OUTER: while (read(STDIN, $input, 4096)) { do { $status = $x->inflate($input, $output) ; print $output ; last OUTER unless $status == Z_OK || $status == Z_BUF_ERROR ; } while length $input; } die "inflation failed\n" unless $status == Z_STREAM_END ; =head1 CHECKSUM FUNCTIONS Two functions are provided by I to calculate checksums. For the Perl interface, the order of the two parameters in both functions has been reversed. This allows both running checksums and one off calculations to be done. $crc = adler32($buffer [,$crc]) ; $crc = crc32($buffer [,$crc]) ; The buffer parameters can either be a scalar or a scalar reference. If the $crc parameters is C, the crc value will be reset. If you have built this module with zlib 1.2.3 or better, two more CRC-related functions are available. $crc = crc32_combine($crc1, $crc2, $len2); $adler = adler32_combine($adler1, $adler2, $len2); These functions allow checksums to be merged. Refer to the I documentation for more details. =head1 Misc =head2 my $version = Compress::Raw::Zlib::zlib_version(); Returns the version of the I library if this module has been built with the I library. If this module has been built with I in native mode, this function will return a empty string. If this module has been built with I in compat mode, this function will return the Izlib> API verion that I is supporting. =head2 my $version = Compress::Raw::Zlib::zlibng_version(); Returns the version of the zlib-ng library if this module has been built with the I library. If this module has been built with I, this function will return a empty string. =head2 my $flags = Compress::Raw::Zlib::zlibCompileFlags(); Returns the flags indicating compile-time options that were used to build the zlib or zlib-ng library. See the zlib documentation for a description of the flags returned by C. Note that when the zlib sources are built along with this module the C flags (bits 24, 25 and 26) should be ignored. If you are using zlib 1.2.0 or older, C will return 0. =head2 is_zlib_native(); =head2 is_zlibng_native(); =head2 is_zlibng_compat(); =head2 is_zlibng(); These function can use used to check if C was been built with I or I. The function C returns true if C was built with I. The function C returns true if C was built with I. The I library has an option to build with a zlib-compataible API. The c function retuens true if zlib-ng has ben built with this API. Finally, C returns true if I was built with its native API. =head1 The LimitOutput option. By default C<< $i->inflate($input, $output) >> will uncompress I data in C<$input> and write I of the uncompressed data it has generated to C<$output>. This makes the interface to C much simpler - if the method has uncompressed C<$input> successfully I compressed data in C<$input> will have been dealt with. So if you are reading from an input source and uncompressing as you go the code will look something like this use strict ; use warnings ; use Compress::Raw::Zlib; my $x = new Compress::Raw::Zlib::Inflate() or die "Cannot create a inflation stream\n" ; my $input = '' ; my ($output, $status) ; while (read(STDIN, $input, 4096)) { $status = $x->inflate($input, $output) ; print $output ; last if $status != Z_OK ; } die "inflation failed\n" unless $status == Z_STREAM_END ; The points to note are =over 5 =item * The main processing loop in the code handles reading of compressed data from STDIN. =item * The status code returned from C will only trigger termination of the main processing loop if it isn't C. When C has not been used the C status means that the end of the compressed data stream has been reached or there has been an error in uncompression. =item * After the call to C I of the uncompressed data in C<$input> will have been processed. This means the subsequent call to C can overwrite it's contents without any problem. =back For most use-cases the behavior described above is acceptable (this module and it's predecessor, C, have used it for over 10 years without an issue), but in a few very specific use-cases the amount of memory required for C<$output> can prohibitively large. For example, if the compressed data stream contains the same pattern repeated thousands of times, a relatively small compressed data stream can uncompress into hundreds of megabytes. Remember C will keep allocating memory until I the uncompressed data has been written to the output buffer - the size of C<$output> is unbounded. The C option is designed to help with this use-case. The main difference in your code when using C is having to deal with cases where the C<$input> parameter still contains some uncompressed data that C hasn't processed yet. The status code returned from C will be C if uncompression took place and C if the output buffer is full. Below is typical code that shows how to use C. use strict ; use warnings ; use Compress::Raw::Zlib; my $x = new Compress::Raw::Zlib::Inflate(LimitOutput => 1) or die "Cannot create a inflation stream\n" ; my $input = '' ; binmode STDIN; binmode STDOUT; my ($output, $status) ; OUTER: while (read(STDIN, $input, 4096)) { do { $status = $x->inflate($input, $output) ; print $output ; last OUTER unless $status == Z_OK || $status == Z_BUF_ERROR ; } while length $input; } die "inflation failed\n" unless $status == Z_STREAM_END ; Points to note this time: =over 5 =item * There are now two nested loops in the code: the outer loop for reading the compressed data from STDIN, as before; and the inner loop to carry out the uncompression. =item * There are two exit points from the inner uncompression loop. Firstly when C has returned a status other than C or C. This means that either the end of the compressed data stream has been reached (C) or there is an error in the compressed data. In either of these cases there is no point in continuing with reading the compressed data, so both loops are terminated. The second exit point tests if there is any data left in the input buffer, C<$input> - remember that the C option is automatically enabled when C is used. When the input buffer has been exhausted, the outer loop can run again and overwrite a now empty C<$input>. =back =head1 ACCESSING ZIP FILES Although it is possible (with some effort on your part) to use this module to access .zip files, there are other perl modules available that will do all the hard work for you. Check out C, C, C and C. =head1 FAQ =head2 Compatibility with Unix compress/uncompress. This module is not compatible with Unix C. If you have the C program available, you can use this to read compressed files open F, "uncompress -c $filename |"; while () { ... Alternatively, if you have the C program available, you can use this to read compressed files open F, "gunzip -c $filename |"; while () { ... and this to write compress files, if you have the C program available open F, "| compress -c $filename "; print F "data"; ... close F ; =head2 Accessing .tar.Z files See previous FAQ item. If the C module is installed and either the C or C programs are available, you can use one of these workarounds to read C<.tar.Z> files. Firstly with C use strict; use warnings; use Archive::Tar; open F, "uncompress -c $filename |"; my $tar = Archive::Tar->new(*F); ... and this with C use strict; use warnings; use Archive::Tar; open F, "gunzip -c $filename |"; my $tar = Archive::Tar->new(*F); ... Similarly, if the C program is available, you can use this to write a C<.tar.Z> file use strict; use warnings; use Archive::Tar; use IO::File; my $fh = new IO::File "| compress -c >$filename"; my $tar = Archive::Tar->new(); ... $tar->write($fh); $fh->close ; =head2 Zlib Library Version Support By default C will build with a private copy of version 1.2.5 of the zlib library. (See the F file for details of how to override this behaviour) If you decide to use a different version of the zlib library, you need to be aware of the following issues =over 5 =item * First off, you must have zlib 1.0.5 or better. =item * You need to have zlib 1.2.1 or better if you want to use the C<-Merge> option with C, C and C. =back =head1 CONSTANTS All the I constants are automatically imported when you make use of I. =head1 SUPPORT General feedback/questions/bug reports should be sent to L (preferred) or L. =head1 SEE ALSO L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L L L, L, L, L For RFC 1950, 1951 and 1952 see L, L and L The I compression library was written by Jean-loup Gailly C and Mark Adler C. The primary site for the I compression library is L. The primary site for the I compression library is L. The primary site for gzip is L. =head1 AUTHOR This module was written by Paul Marquess, C. =head1 MODIFICATION HISTORY See the Changes file. =head1 COPYRIGHT AND LICENSE Copyright (c) 2005-2024 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. FILE702ffd44/Config.pm 1# This file was created by configpm when Perl was built. Any changes # made to this file will be lost the next time perl is built. # for a description of the variables, please have a look at the # Glossary file, as written in the Porting folder, or use the url: # https://github.com/Perl/perl5/blob/blead/Porting/Glossary package Config; use strict; use warnings; our ( %Config, $VERSION ); $VERSION = "5.042000"; # Skip @Config::EXPORT because it only contains %Config, which we special # case below as it's not a function. @Config::EXPORT won't change in the # lifetime of Perl 5. my %Export_Cache = (myconfig => 1, config_sh => 1, config_vars => 1, config_re => 1, compile_date => 1, local_patches => 1, bincompat_options => 1, non_bincompat_options => 1, header_files => 1); @Config::EXPORT = qw(%Config); @Config::EXPORT_OK = keys %Export_Cache; # Need to stub all the functions to make code such as print Config::config_sh # keep working sub bincompat_options; sub compile_date; sub config_re; sub config_sh; sub config_vars; sub header_files; sub local_patches; sub myconfig; sub non_bincompat_options; # Define our own import method to avoid pulling in the full Exporter: sub import { shift; @_ = @Config::EXPORT unless @_; my @funcs = grep $_ ne '%Config', @_; my $export_Config = @funcs < @_ ? 1 : 0; no strict 'refs'; my $callpkg = caller(0); foreach my $func (@funcs) { die qq{"$func" is not exported by the Config module\n} unless $Export_Cache{$func}; *{$callpkg.'::'.$func} = \&{$func}; } *{"$callpkg\::Config"} = \%Config if $export_Config; return; } die "$0: Perl lib version (5.42.0) doesn't match executable '$^X' version ($])" unless $^V; $^V eq 5.42.0 or die sprintf "%s: Perl lib version (5.42.0) doesn't match executable '$^X' version (%vd)", $0, $^V; sub FETCH { my($self, $key) = @_; # check for cached value (which may be undef so we use exists not defined) return exists $self->{$key} ? $self->{$key} : $self->fetch_string($key); } sub TIEHASH { bless $_[1], $_[0]; } sub DESTROY { } sub AUTOLOAD { require 'Config_heavy.pl'; goto \&launcher unless $Config::AUTOLOAD =~ /launcher$/; die "&Config::AUTOLOAD failed on $Config::AUTOLOAD"; } # tie returns the object, so the value returned to require will be true. tie %Config, 'Config', { archlibexp => '/opt/hostedtoolcache/perl/5.42.0/arm64/lib/5.42.0/aarch64-linux', archname => 'aarch64-linux', cc => 'cc', d_readlink => 'define', d_symlink => 'define', dlext => 'so', dlsrc => 'dl_dlopen.xs', dont_use_nlink => undef, exe_ext => '', inc_version_list => ' ', intsize => '4', ldlibpthname => 'LD_LIBRARY_PATH', libpth => '/usr/local/lib /usr/lib/aarch64-linux-gnu /usr/lib', osname => 'linux', osvers => '6.8.0-1044-azure', path_sep => ':', privlibexp => '/opt/hostedtoolcache/perl/5.42.0/arm64/lib/5.42.0', scriptdir => '/opt/hostedtoolcache/perl/5.42.0/arm64/bin', sitearchexp => '/opt/hostedtoolcache/perl/5.42.0/arm64/lib/site_perl/5.42.0/aarch64-linux', sitelibexp => '/opt/hostedtoolcache/perl/5.42.0/arm64/lib/site_perl/5.42.0', so => 'so', useithreads => undef, usevendorprefix => undef, version => '5.42.0', }; FILEc33fbebe/Config_git.pl###################################################################### # WARNING: 'lib/Config_git.pl' is generated by make_patchnum.pl # DO NOT EDIT DIRECTLY - edit make_patchnum.pl instead ###################################################################### $Config::Git_Data=<<'ENDOFGIT'; git_commit_id='' git_describe='' git_branch='' git_uncommitted_changes='' git_commit_id_title='' ENDOFGIT FILE37147fd8/Config_heavy.pl# This file was created by configpm when Perl was built. Any changes # made to this file will be lost the next time perl is built. package Config; use strict; use warnings; our %Config; sub bincompat_options { return split ' ', (Internals::V())[0]; } sub non_bincompat_options { return split ' ', (Internals::V())[1]; } sub compile_date { return (Internals::V())[2] } sub local_patches { my (undef, undef, undef, @patches) = Internals::V(); return @patches; } sub _V { die "Perl lib was built for 'linux' but is being run on '$^O'" unless "linux" eq $^O; my ($bincompat, $non_bincompat, $date, @patches) = Internals::V(); my @opts = sort split ' ', "$bincompat $non_bincompat"; print Config::myconfig(); print "\nCharacteristics of this binary (from libperl): \n"; print " Compile-time options:\n"; print " $_\n" for @opts; if (@patches) { print " Locally applied patches:\n"; print " $_\n" foreach @patches; } print " Built under linux\n"; print " $date\n" if defined $date; my @env = map { "$_=\"$ENV{$_}\"" } sort grep {/^PERL/} keys %ENV; if (@env) { print " \%ENV:\n"; print " $_\n" foreach @env; } print " \@INC:\n"; print " $_\n" foreach @INC; } sub header_files { return qw(EXTERN.h INTERN.h XSUB.h av.h config.h cop.h cv.h dosish.h embed.h embedvar.h form.h gv.h handy.h hv.h hv_func.h intrpvar.h iperlsys.h keywords.h mg.h nostdio.h op.h opcode.h pad.h parser.h patchlevel.h perl.h perlio.h perliol.h perlsdio.h perlvars.h perly.h pp.h pp_proto.h proto.h regcomp.h regexp.h regnodes.h scope.h sv.h thread.h time64.h unixish.h utf8.h util.h); } ## ## This file was produced by running the Configure script. It holds all the ## definitions figured out by Configure. Should you modify one of these values, ## do not forget to propagate your changes by running "Configure -der". You may ## instead choose to run each of the .SH files by yourself, or "Configure -S". ## # ## Package name : perl5 ## Source directory : . ## Configuration time: Mon Feb 16 01:50:14 UTC 2026 ## Configured by : runner ## Target system : linux runnervmet41j 6.8.0-1044-azure #50~22.04.1-ubuntu smp wed dec 3 15:16:03 utc 2025 aarch64 aarch64 aarch64 gnulinux # #: Configure command line arguments. # #: Variables propagated from previous config.sh file. our $summary = <<'!END!'; Summary of my $package (revision $revision $version_patchlevel_string) configuration: $git_commit_id_title $git_commit_id$git_ancestor_line Platform: osname=$osname osvers=$osvers archname=$archname uname='$myuname' config_args='$config_args' hint=$hint useposix=$useposix d_sigaction=$d_sigaction useithreads=$useithreads usemultiplicity=$usemultiplicity use64bitint=$use64bitint use64bitall=$use64bitall uselongdouble=$uselongdouble usemymalloc=$usemymalloc default_inc_excludes_dot=$default_inc_excludes_dot Compiler: cc='$cc' ccflags ='$ccflags' optimize='$optimize' cppflags='$cppflags' ccversion='$ccversion' gccversion='$gccversion' gccosandvers='$gccosandvers' intsize=$intsize longsize=$longsize ptrsize=$ptrsize doublesize=$doublesize byteorder=$byteorder doublekind=$doublekind d_longlong=$d_longlong longlongsize=$longlongsize d_longdbl=$d_longdbl longdblsize=$longdblsize longdblkind=$longdblkind ivtype='$ivtype' ivsize=$ivsize nvtype='$nvtype' nvsize=$nvsize Off_t='$lseektype' lseeksize=$lseeksize alignbytes=$alignbytes prototype=$prototype Linker and Libraries: ld='$ld' ldflags ='$ldflags' libpth=$libpth libs=$libs perllibs=$perllibs libc=$libc so=$so useshrplib=$useshrplib libperl=$libperl gnulibc_version='$gnulibc_version' Dynamic Linking: dlsrc=$dlsrc dlext=$dlext d_dlsymun=$d_dlsymun ccdlflags='$ccdlflags' cccdlflags='$cccdlflags' lddlflags='$lddlflags' !END! my $summary_expanded; sub myconfig { return $summary_expanded if $summary_expanded; ($summary_expanded = $summary) =~ s{\$(\w+)} { my $c; if ($1 eq 'git_ancestor_line') { if ($Config::Config{git_ancestor}) { $c= "\n Ancestor: $Config::Config{git_ancestor}"; } else { $c= ""; } } else { $c = $Config::Config{$1}; } defined($c) ? $c : 'undef' }ge; $summary_expanded; } local *_ = \my $a; $_ = <<'!END!'; Author='' CONFIG='true' Date='' Header='' Id='' Locker='' Log='' PATCHLEVEL='42' PERL_API_REVISION='5' PERL_API_SUBVERSION='0' PERL_API_VERSION='42' PERL_CONFIG_SH='true' PERL_PATCHLEVEL='' PERL_REVISION='5' PERL_SUBVERSION='0' PERL_VERSION='42' RCSfile='' Revision='' SUBVERSION='0' Source='' State='' _a='.a' _exe='' _o='.o' afs='false' afsroot='/afs' alignbytes='8' aphostname='/usr/bin/hostname' api_revision='5' api_subversion='0' api_version='42' api_versionstring='5.42.0' ar='ar' archlib='/opt/hostedtoolcache/perl/5.42.0/arm64/lib/5.42.0/aarch64-linux' archlibexp='/opt/hostedtoolcache/perl/5.42.0/arm64/lib/5.42.0/aarch64-linux' archname='aarch64-linux' archname64='' archobjs='' asctime_r_proto='0' awk='awk' baserev='5.0' bash='' bin='/opt/hostedtoolcache/perl/5.42.0/arm64/bin' bin_ELF='define' binexp='/opt/hostedtoolcache/perl/5.42.0/arm64/bin' bison='bison' byacc='byacc' byteorder='12345678' c='' castflags='1' cat='cat' cc='cc' cccdlflags='-fPIC' ccdlflags='-Wl,-E -Wl,-rpath,/opt/hostedtoolcache/perl/5.42.0/arm64/lib/5.42.0/aarch64-linux/CORE' ccflags='-fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccname='gcc' ccsymbols='' ccversion='' cf_by='runner' cf_email='runner@runnervmet41j.m4syskx0wvie1ngfvcemybhynh.jx.internal.cloudapp.net' cf_time='Mon Feb 16 01:50:14 UTC 2026' charbits='8' charsize='1' chgrp='' chmod='chmod' chown='' clocktype='clock_t' comm='comm' compiler_warning='grep -i warning' compress='' config_arg0='Configure' config_arg1='-Dprefix=/opt/hostedtoolcache/perl/5.42.0/arm64' config_arg2='-de' config_arg3='-Dman1dir=none' config_arg4='-Dman3dir=none' config_arg5='-Dcccdlflags=-fPIC' config_arg6='-Duseshrplib' config_arg7='-A'eval:scriptdir=/opt/hostedtoolcache/perl/5.42.0/arm64/bin'' config_argc='7' config_args='-Dprefix=/opt/hostedtoolcache/perl/5.42.0/arm64 -de -Dman1dir=none -Dman3dir=none -Dcccdlflags=-fPIC -Duseshrplib -A'eval:scriptdir=/opt/hostedtoolcache/perl/5.42.0/arm64/bin'' contains='grep' cp='cp' cpio='' cpp='cpp' cpp_stuff='42' cppccsymbols='' cppflags='-fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include' cpplast='-' cppminus='-' cpprun='cc -E' cppstdin='cc -E' cppsymbols='_FILE_OFFSET_BITS=64 _FORTIFY_SOURCE=2 _LARGEFILE_SOURCE=1 _LP64=1 _POSIX_C_SOURCE=200809L _POSIX_SOURCE=1 _STDC_PREDEF_H=1 __AARCH64EL__=1 __AARCH64_CMODEL_SMALL__=1 __ARM_64BIT_STATE=1 __ARM_ALIGN_MAX_PWR=28 __ARM_ALIGN_MAX_STACK_PWR=16 __ARM_ARCH=8 __ARM_ARCH_8A=1 __ARM_ARCH_ISA_A64=1 __ARM_ARCH_PROFILE=65 __ARM_FEATURE_CLZ=1 __ARM_FEATURE_FMA=1 __ARM_FEATURE_IDIV=1 __ARM_FEATURE_NUMERIC_MAXMIN=1 __ARM_FEATURE_UNALIGNED=1 __ARM_FP16_ARGS=1 __ARM_FP16_FORMAT_IEEE=1 __ARM_FP=14 __ARM_NEON=1 __ARM_PCS_AAPCS64=1 __ARM_SIZEOF_MINIMAL_ENUM=4 __ARM_SIZEOF_WCHAR_T=4 __ATOMIC_ACQUIRE=2 __ATOMIC_ACQ_REL=4 __ATOMIC_CONSUME=1 __ATOMIC_RELAXED=0 __ATOMIC_RELEASE=3 __ATOMIC_SEQ_CST=5 __BIGGEST_ALIGNMENT__=16 __BYTE_ORDER__=1234 __CHAR16_TYPE__=short\ unsigned\ int __CHAR32_TYPE__=unsigned\ int __CHAR_BIT__=8 __CHAR_UNSIGNED__=1 __DBL_DECIMAL_DIG__=17 __DBL_DENORM_MIN__=((double)4.94065645841246544176568792868221372e-324L) __DBL_DIG__=15 __DBL_EPSILON__=((double)2.22044604925031308084726333618164062e-16L) __DBL_HAS_DENORM__=1 __DBL_HAS_INFINITY__=1 __DBL_HAS_QUIET_NAN__=1 __DBL_IS_IEC_60559__=2 __DBL_MANT_DIG__=53 __DBL_MAX_10_EXP__=308 __DBL_MAX_EXP__=1024 __DBL_MAX__=((double)1.79769313486231570814527423731704357e+308L) __DBL_MIN_10_EXP__=(-307) __DBL_MIN_EXP__=(-1021) __DBL_MIN__=((double)2.22507385850720138309023271733240406e-308L) __DBL_NORM_MAX__=((double)1.79769313486231570814527423731704357e+308L) __DECIMAL_DIG__=36 __DEC_EVAL_METHOD__=2 __ELF__=1 __FINITE_MATH_ONLY__=0 __FLOAT_WORD_ORDER__=1234 __FLT128_DECIMAL_DIG__=36 __FLT128_DENORM_MIN__=6.47517511943802511092443895822764655e-4966F128 __FLT128_DIG__=33 __FLT128_EPSILON__=1.92592994438723585305597794258492732e-34F128 __FLT128_HAS_DENORM__=1 __FLT128_HAS_INFINITY__=1 __FLT128_HAS_QUIET_NAN__=1 __FLT128_IS_IEC_60559__=2 __FLT128_MANT_DIG__=113 __FLT128_MAX_10_EXP__=4932 __FLT128_MAX_EXP__=16384 __FLT128_MAX__=1.18973149535723176508575932662800702e+4932F128 __FLT128_MIN_10_EXP__=(-4931) __FLT128_MIN_EXP__=(-16381) __FLT128_MIN__=3.36210314311209350626267781732175260e-4932F128 __FLT128_NORM_MAX__=1.18973149535723176508575932662800702e+4932F128 __FLT16_DECIMAL_DIG__=5 __FLT16_DENORM_MIN__=5.96046447753906250000000000000000000e-8F16 __FLT16_DIG__=3 __FLT16_EPSILON__=9.76562500000000000000000000000000000e-4F16 __FLT16_HAS_DENORM__=1 __FLT16_HAS_INFINITY__=1 __FLT16_HAS_QUIET_NAN__=1 __FLT16_IS_IEC_60559__=2 __FLT16_MANT_DIG__=11 __FLT16_MAX_10_EXP__=4 __FLT16_MAX_EXP__=16 __FLT16_MAX__=6.55040000000000000000000000000000000e+4F16 __FLT16_MIN_10_EXP__=(-4) __FLT16_MIN_EXP__=(-13) __FLT16_MIN__=6.10351562500000000000000000000000000e-5F16 __FLT16_NORM_MAX__=6.55040000000000000000000000000000000e+4F16 __FLT32X_DECIMAL_DIG__=17 __FLT32X_DENORM_MIN__=4.94065645841246544176568792868221372e-324F32x __FLT32X_DIG__=15 __FLT32X_EPSILON__=2.22044604925031308084726333618164062e-16F32x __FLT32X_HAS_DENORM__=1 __FLT32X_HAS_INFINITY__=1 __FLT32X_HAS_QUIET_NAN__=1 __FLT32X_IS_IEC_60559__=2 __FLT32X_MANT_DIG__=53 __FLT32X_MAX_10_EXP__=308 __FLT32X_MAX_EXP__=1024 __FLT32X_MAX__=1.79769313486231570814527423731704357e+308F32x __FLT32X_MIN_10_EXP__=(-307) __FLT32X_MIN_EXP__=(-1021) __FLT32X_MIN__=2.22507385850720138309023271733240406e-308F32x __FLT32X_NORM_MAX__=1.79769313486231570814527423731704357e+308F32x __FLT32_DECIMAL_DIG__=9 __FLT32_DENORM_MIN__=1.40129846432481707092372958328991613e-45F32 __FLT32_DIG__=6 __FLT32_EPSILON__=1.19209289550781250000000000000000000e-7F32 __FLT32_HAS_DENORM__=1 __FLT32_HAS_INFINITY__=1 __FLT32_HAS_QUIET_NAN__=1 __FLT32_IS_IEC_60559__=2 __FLT32_MANT_DIG__=24 __FLT32_MAX_10_EXP__=38 __FLT32_MAX_EXP__=128 __FLT32_MAX__=3.40282346638528859811704183484516925e+38F32 __FLT32_MIN_10_EXP__=(-37) __FLT32_MIN_EXP__=(-125) __FLT32_MIN__=1.17549435082228750796873653722224568e-38F32 __FLT32_NORM_MAX__=3.40282346638528859811704183484516925e+38F32 __FLT64X_DECIMAL_DIG__=36 __FLT64X_DENORM_MIN__=6.47517511943802511092443895822764655e-4966F64x __FLT64X_DIG__=33 __FLT64X_EPSILON__=1.92592994438723585305597794258492732e-34F64x __FLT64X_HAS_DENORM__=1 __FLT64X_HAS_INFINITY__=1 __FLT64X_HAS_QUIET_NAN__=1 __FLT64X_IS_IEC_60559__=2 __FLT64X_MANT_DIG__=113 __FLT64X_MAX_10_EXP__=4932 __FLT64X_MAX_EXP__=16384 __FLT64X_MAX__=1.18973149535723176508575932662800702e+4932F64x __FLT64X_MIN_10_EXP__=(-4931) __FLT64X_MIN_EXP__=(-16381) __FLT64X_MIN__=3.36210314311209350626267781732175260e-4932F64x __FLT64X_NORM_MAX__=1.18973149535723176508575932662800702e+4932F64x __FLT64_DECIMAL_DIG__=17 __FLT64_DENORM_MIN__=4.94065645841246544176568792868221372e-324F64 __FLT64_DIG__=15 __FLT64_EPSILON__=2.22044604925031308084726333618164062e-16F64 __FLT64_HAS_DENORM__=1 __FLT64_HAS_INFINITY__=1 __FLT64_HAS_QUIET_NAN__=1 __FLT64_IS_IEC_60559__=2 __FLT64_MANT_DIG__=53 __FLT64_MAX_10_EXP__=308 __FLT64_MAX_EXP__=1024 __FLT64_MAX__=1.79769313486231570814527423731704357e+308F64 __FLT64_MIN_10_EXP__=(-307) __FLT64_MIN_EXP__=(-1021) __FLT64_MIN__=2.22507385850720138309023271733240406e-308F64 __FLT64_NORM_MAX__=1.79769313486231570814527423731704357e+308F64 __FLT_DECIMAL_DIG__=9 __FLT_DENORM_MIN__=1.40129846432481707092372958328991613e-45F __FLT_DIG__=6 __FLT_EPSILON__=1.19209289550781250000000000000000000e-7F __FLT_EVAL_METHOD_C99__=0 __FLT_EVAL_METHOD_TS_18661_3__=0 __FLT_EVAL_METHOD__=0 __FLT_HAS_DENORM__=1 __FLT_HAS_INFINITY__=1 __FLT_HAS_QUIET_NAN__=1 __FLT_IS_IEC_60559__=2 __FLT_MANT_DIG__=24 __FLT_MAX_10_EXP__=38 __FLT_MAX_EXP__=128 __FLT_MAX__=3.40282346638528859811704183484516925e+38F __FLT_MIN_10_EXP__=(-37) __FLT_MIN_EXP__=(-125) __FLT_MIN__=1.17549435082228750796873653722224568e-38F __FLT_NORM_MAX__=3.40282346638528859811704183484516925e+38F __FLT_RADIX__=2 __FP_FAST_FMA=1 __FP_FAST_FMAF32=1 __FP_FAST_FMAF32x=1 __FP_FAST_FMAF64=1 __FP_FAST_FMAF=1 __GCC_ASM_FLAG_OUTPUTS__=1 __GCC_ATOMIC_BOOL_LOCK_FREE=2 __GCC_ATOMIC_CHAR16_T_LOCK_FREE=2 __GCC_ATOMIC_CHAR32_T_LOCK_FREE=2 __GCC_ATOMIC_CHAR_LOCK_FREE=2 __GCC_ATOMIC_INT_LOCK_FREE=2 __GCC_ATOMIC_LLONG_LOCK_FREE=2 __GCC_ATOMIC_LONG_LOCK_FREE=2 __GCC_ATOMIC_POINTER_LOCK_FREE=2 __GCC_ATOMIC_SHORT_LOCK_FREE=2 __GCC_ATOMIC_TEST_AND_SET_TRUEVAL=1 __GCC_ATOMIC_WCHAR_T_LOCK_FREE=2 __GCC_HAVE_DWARF2_CFI_ASM=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8=1 __GCC_IEC_559=2 __GCC_IEC_559_COMPLEX=2 __GLIBC_MINOR__=35 __GLIBC__=2 __GNUC_EXECUTION_CHARSET_NAME="UTF-8" __GNUC_MINOR__=4 __GNUC_PATCHLEVEL__=0 __GNUC_STDC_INLINE__=1 __GNUC_WIDE_EXECUTION_CHARSET_NAME="UTF-32LE" __GNUC__=11 __GNU_LIBRARY__=6 __GXX_ABI_VERSION=1016 __HAVE_SPECULATION_SAFE_VALUE=1 __INT16_C=__INT16_C __INT16_MAX__=0x7fff __INT16_TYPE__=short\ int __INT32_C=__INT32_C __INT32_MAX__=0x7fffffff __INT32_TYPE__=int __INT64_C=__INT64_C __INT64_MAX__=0x7fffffffffffffffL __INT64_TYPE__=long\ int __INT8_C=__INT8_C __INT8_MAX__=0x7f __INT8_TYPE__=signed\ char __INTMAX_C=__INTMAX_C __INTMAX_MAX__=0x7fffffffffffffffL __INTMAX_TYPE__=long\ int __INTMAX_WIDTH__=64 __INTPTR_MAX__=0x7fffffffffffffffL __INTPTR_TYPE__=long\ int __INTPTR_WIDTH__=64 __INT_FAST16_MAX__=0x7fffffffffffffffL __INT_FAST16_TYPE__=long\ int __INT_FAST16_WIDTH__=64 __INT_FAST32_MAX__=0x7fffffffffffffffL __INT_FAST32_TYPE__=long\ int __INT_FAST32_WIDTH__=64 __INT_FAST64_MAX__=0x7fffffffffffffffL __INT_FAST64_TYPE__=long\ int __INT_FAST64_WIDTH__=64 __INT_FAST8_MAX__=0x7f __INT_FAST8_TYPE__=signed\ char __INT_FAST8_WIDTH__=8 __INT_LEAST16_MAX__=0x7fff __INT_LEAST16_TYPE__=short\ int __INT_LEAST16_WIDTH__=16 __INT_LEAST32_MAX__=0x7fffffff __INT_LEAST32_TYPE__=int __INT_LEAST32_WIDTH__=32 __INT_LEAST64_MAX__=0x7fffffffffffffffL __INT_LEAST64_TYPE__=long\ int __INT_LEAST64_WIDTH__=64 __INT_LEAST8_MAX__=0x7f __INT_LEAST8_TYPE__=signed\ char __INT_LEAST8_WIDTH__=8 __INT_MAX__=0x7fffffff __INT_WIDTH__=32 __LDBL_DECIMAL_DIG__=36 __LDBL_DENORM_MIN__=6.47517511943802511092443895822764655e-4966L __LDBL_DIG__=33 __LDBL_EPSILON__=1.92592994438723585305597794258492732e-34L __LDBL_HAS_DENORM__=1 __LDBL_HAS_INFINITY__=1 __LDBL_HAS_QUIET_NAN__=1 __LDBL_IS_IEC_60559__=2 __LDBL_MANT_DIG__=113 __LDBL_MAX_10_EXP__=4932 __LDBL_MAX_EXP__=16384 __LDBL_MAX__=1.18973149535723176508575932662800702e+4932L __LDBL_MIN_10_EXP__=(-4931) __LDBL_MIN_EXP__=(-16381) __LDBL_MIN__=3.36210314311209350626267781732175260e-4932L __LDBL_NORM_MAX__=1.18973149535723176508575932662800702e+4932L __LONG_LONG_MAX__=0x7fffffffffffffffLL __LONG_LONG_WIDTH__=64 __LONG_MAX__=0x7fffffffffffffffL __LONG_WIDTH__=64 __LP64__=1 __ORDER_BIG_ENDIAN__=4321 __ORDER_LITTLE_ENDIAN__=1234 __ORDER_PDP_ENDIAN__=3412 __PIC__=2 __PIE__=2 __PRAGMA_REDEFINE_EXTNAME=1 __PTRDIFF_MAX__=0x7fffffffffffffffL __PTRDIFF_TYPE__=long\ int __PTRDIFF_WIDTH__=64 __REGISTER_PREFIX__= __SCHAR_MAX__=0x7f __SCHAR_WIDTH__=8 __SHRT_MAX__=0x7fff __SHRT_WIDTH__=16 __SIG_ATOMIC_MAX__=0x7fffffff __SIG_ATOMIC_MIN__=(-0x7fffffff\ -\ 1) __SIG_ATOMIC_TYPE__=int __SIG_ATOMIC_WIDTH__=32 __SIZEOF_DOUBLE__=8 __SIZEOF_FLOAT__=4 __SIZEOF_INT128__=16 __SIZEOF_INT__=4 __SIZEOF_LONG_DOUBLE__=16 __SIZEOF_LONG_LONG__=8 __SIZEOF_LONG__=8 __SIZEOF_POINTER__=8 __SIZEOF_PTRDIFF_T__=8 __SIZEOF_SHORT__=2 __SIZEOF_SIZE_T__=8 __SIZEOF_WCHAR_T__=4 __SIZEOF_WINT_T__=4 __SIZE_MAX__=0xffffffffffffffffUL __SIZE_TYPE__=long\ unsigned\ int __SIZE_WIDTH__=64 __SSP_STRONG__=3 __STDC_HOSTED__=1 __STDC_IEC_559_COMPLEX__=1 __STDC_IEC_559__=1 __STDC_IEC_60559_BFP__=201404L __STDC_IEC_60559_COMPLEX__=201404L __STDC_ISO_10646__=201706L __STDC_UTF_16__=1 __STDC_UTF_32__=1 __STDC_VERSION__=201710L __STDC__=1 __UINT16_C=__UINT16_C __UINT16_MAX__=0xffff __UINT16_TYPE__=short\ unsigned\ int __UINT32_C=__UINT32_C __UINT32_MAX__=0xffffffffU __UINT32_TYPE__=unsigned\ int __UINT64_C=__UINT64_C __UINT64_MAX__=0xffffffffffffffffUL __UINT64_TYPE__=long\ unsigned\ int __UINT8_C=__UINT8_C __UINT8_MAX__=0xff __UINT8_TYPE__=unsigned\ char __UINTMAX_C=__UINTMAX_C __UINTMAX_MAX__=0xffffffffffffffffUL __UINTMAX_TYPE__=long\ unsigned\ int __UINTPTR_MAX__=0xffffffffffffffffUL __UINTPTR_TYPE__=long\ unsigned\ int __UINT_FAST16_MAX__=0xffffffffffffffffUL __UINT_FAST16_TYPE__=long\ unsigned\ int __UINT_FAST32_MAX__=0xffffffffffffffffUL __UINT_FAST32_TYPE__=long\ unsigned\ int __UINT_FAST64_MAX__=0xffffffffffffffffUL __UINT_FAST64_TYPE__=long\ unsigned\ int __UINT_FAST8_MAX__=0xff __UINT_FAST8_TYPE__=unsigned\ char __UINT_LEAST16_MAX__=0xffff __UINT_LEAST16_TYPE__=short\ unsigned\ int __UINT_LEAST32_MAX__=0xffffffffU __UINT_LEAST32_TYPE__=unsigned\ int __UINT_LEAST64_MAX__=0xffffffffffffffffUL __UINT_LEAST64_TYPE__=long\ unsigned\ int __UINT_LEAST8_MAX__=0xff __UINT_LEAST8_TYPE__=unsigned\ char __USER_LABEL_PREFIX__= __USE_FILE_OFFSET64=1 __USE_LARGEFILE=1 __USE_MISC=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USE_POSIX=1 __VERSION__="11.4.0" __WCHAR_MAX__=0xffffffffU __WCHAR_MIN__=0U __WCHAR_TYPE__=unsigned\ int __WCHAR_WIDTH__=32 __WINT_MAX__=0xffffffffU __WINT_MIN__=0U __WINT_TYPE__=unsigned\ int __WINT_WIDTH__=32 __aarch64__=1 __gnu_linux__=1 __linux=1 __linux__=1 __pic__=2 __pie__=2 __unix=1 __unix__=1 linux=1 unix=1' crypt_r_proto='0' cryptlib='' csh='csh' ctermid_r_proto='0' ctime_r_proto='0' d_Gconvert='sprintf((b),"%.*g",(n),(x))' d_PRIEUldbl='define' d_PRIFUldbl='define' d_PRIGUldbl='define' d_PRIXU64='define' d_PRId64='define' d_PRIeldbl='define' d_PRIfldbl='define' d_PRIgldbl='define' d_PRIi64='define' d_PRIo64='define' d_PRIu64='define' d_PRIx64='define' d_SCNfldbl='define' d__fwalk='undef' d_accept4='define' d_access='define' d_accessx='undef' d_acosh='define' d_aintl='undef' d_alarm='define' d_archlib='define' d_asctime64='undef' d_asctime_r='undef' d_asinh='define' d_atanh='define' d_atolf='undef' d_atoll='define' d_attribute_always_inline='define' d_attribute_deprecated='define' d_attribute_format='define' d_attribute_malloc='define' d_attribute_nonnull='define' d_attribute_noreturn='define' d_attribute_pure='define' d_attribute_unused='define' d_attribute_visibility='define' d_attribute_warn_unused_result='define' d_backtrace='define' d_bsd='undef' d_bsdgetpgrp='undef' d_bsdsetpgrp='undef' d_builtin_add_overflow='define' d_builtin_choose_expr='define' d_builtin_expect='define' d_builtin_mul_overflow='define' d_builtin_sub_overflow='define' d_c99_variadic_macros='define' d_casti32='define' d_castneg='undef' d_cbrt='define' d_chown='define' d_chroot='define' d_chsize='undef' d_class='undef' d_clearenv='define' d_closedir='define' d_cmsghdr_s='define' d_copysign='define' d_copysignl='define' d_cplusplus='undef' d_crypt='define' d_crypt_r='undef' d_csh='undef' d_ctermid='define' d_ctermid_r='undef' d_ctime64='undef' d_ctime_r='undef' d_cuserid='define' d_dbminitproto='undef' d_difftime='define' d_difftime64='undef' d_dir_dd_fd='undef' d_dirfd='define' d_dirnamlen='undef' d_dladdr='define' d_dlerror='define' d_dlopen='define' d_dlsymun='undef' d_dosuid='undef' d_double_has_inf='define' d_double_has_nan='define' d_double_has_negative_zero='define' d_double_has_subnormals='define' d_double_style_cray='undef' d_double_style_ibm='undef' d_double_style_ieee='define' d_double_style_vax='undef' d_drand48_r='undef' d_drand48proto='define' d_dup2='define' d_dup3='define' d_duplocale='define' d_eaccess='define' d_endgrent='define' d_endgrent_r='undef' d_endhent='define' d_endhostent_r='undef' d_endnent='define' d_endnetent_r='undef' d_endpent='define' d_endprotoent_r='undef' d_endpwent='define' d_endpwent_r='undef' d_endsent='define' d_endservent_r='undef' d_eofnblk='define' d_erf='define' d_erfc='define' d_eunice='undef' d_exp2='define' d_expm1='define' d_faststdio='undef' d_fchdir='define' d_fchmod='define' d_fchmodat='define' d_fchown='define' d_fcntl='define' d_fcntl_can_lock='define' d_fd_macros='define' d_fd_set='define' d_fdclose='undef' d_fdim='define' d_fdopendir='define' d_fds_bits='undef' d_fegetround='define' d_ffs='define' d_ffsl='define' d_fgetpos='define' d_finite='define' d_finitel='define' d_flexfnam='define' d_flock='define' d_flockproto='define' d_fma='define' d_fmax='define' d_fmin='define' d_fork='define' d_fp_class='undef' d_fp_classify='undef' d_fp_classl='undef' d_fpathconf='define' d_fpclass='undef' d_fpclassify='define' d_fpclassl='undef' d_fpgetround='undef' d_fpos64_t='undef' d_freelocale='define' d_frexpl='define' d_fs_data_s='undef' d_fseeko='define' d_fsetpos='define' d_fstatfs='define' d_fstatvfs='define' d_fsync='define' d_ftello='define' d_ftime='undef' d_futimes='define' d_gai_strerror='define' d_gdbm_ndbm_h_uses_prototypes='undef' d_gdbmndbm_h_uses_prototypes='undef' d_getaddrinfo='define' d_getcwd='define' d_getenv_preserves_other_thread='define' d_getespwnam='undef' d_getfsstat='undef' d_getgrent='define' d_getgrent_r='undef' d_getgrgid_r='undef' d_getgrnam_r='undef' d_getgrps='define' d_gethbyaddr='define' d_gethbyname='define' d_gethent='define' d_gethname='define' d_gethostbyaddr_r='undef' d_gethostbyname_r='undef' d_gethostent_r='undef' d_gethostprotos='define' d_getitimer='define' d_getlogin='define' d_getlogin_r='undef' d_getmnt='undef' d_getmntent='define' d_getnameinfo='define' d_getnbyaddr='define' d_getnbyname='define' d_getnent='define' d_getnetbyaddr_r='undef' d_getnetbyname_r='undef' d_getnetent_r='undef' d_getnetprotos='define' d_getpagsz='define' d_getpbyname='define' d_getpbynumber='define' d_getpent='define' d_getpgid='define' d_getpgrp='define' d_getpgrp2='undef' d_getppid='define' d_getprior='define' d_getprotobyname_r='undef' d_getprotobynumber_r='undef' d_getprotoent_r='undef' d_getprotoprotos='define' d_getprpwnam='undef' d_getpwent='define' d_getpwent_r='undef' d_getpwnam_r='undef' d_getpwuid_r='undef' d_getsbyname='define' d_getsbyport='define' d_getsent='define' d_getservbyname_r='undef' d_getservbyport_r='undef' d_getservent_r='undef' d_getservprotos='define' d_getspnam='define' d_getspnam_r='undef' d_gettimeod='define' d_gmtime64='undef' d_gmtime_r='undef' d_gnulibc='define' d_grpasswd='define' d_has_C_UTF8='true' d_hasmntopt='define' d_htonl='define' d_hypot='define' d_ilogb='define' d_ilogbl='define' d_inc_version_list='undef' d_inetaton='define' d_inetntop='define' d_inetpton='define' d_int64_t='define' d_ip_mreq='define' d_ip_mreq_source='define' d_ipv6_mreq='define' d_ipv6_mreq_source='undef' d_isascii='define' d_isblank='define' d_isfinite='define' d_isfinitel='undef' d_isinf='define' d_isinfl='define' d_isless='define' d_isnan='define' d_isnanl='define' d_isnormal='define' d_j0='define' d_j0l='define' d_killpg='define' d_lc_monetary_2008='define' d_lchown='define' d_ldbl_dig='define' d_ldexpl='define' d_lgamma='define' d_lgamma_r='define' d_libm_lib_version='undef' d_libname_unique='undef' d_link='define' d_linkat='define' d_llrint='define' d_llrintl='define' d_llround='define' d_llroundl='define' d_localeconv_l='undef' d_localtime64='undef' d_localtime_r='undef' d_localtime_r_needs_tzset='undef' d_locconv='define' d_lockf='define' d_log1p='define' d_log2='define' d_logb='define' d_long_double_style_ieee='define' d_long_double_style_ieee_doubledouble='undef' d_long_double_style_ieee_extended='undef' d_long_double_style_ieee_std='define' d_long_double_style_vax='undef' d_longdbl='define' d_longlong='define' d_lrint='define' d_lrintl='define' d_lround='define' d_lroundl='define' d_lseekproto='define' d_lstat='define' d_madvise='define' d_malloc_good_size='undef' d_malloc_size='undef' d_malloc_usable_size='define' d_mblen='define' d_mbrlen='define' d_mbrtowc='define' d_mbstowcs='define' d_mbtowc='define' d_memmem='define' d_memrchr='define' d_mkdir='define' d_mkdtemp='define' d_mkfifo='define' d_mkostemp='define' d_mkstemp='define' d_mkstemps='define' d_mktime='define' d_mktime64='undef' d_mmap='define' d_modfl='define' d_modflproto='define' d_mprotect='define' d_msg='define' d_msg_ctrunc='define' d_msg_dontroute='define' d_msg_oob='define' d_msg_peek='define' d_msg_proxy='define' d_msgctl='define' d_msgget='define' d_msghdr_s='define' d_msgrcv='define' d_msgsnd='define' d_msync='define' d_munmap='define' d_mymalloc='undef' d_nan='define' d_nanosleep='define' d_ndbm='undef' d_ndbm_h_uses_prototypes='undef' d_nearbyint='define' d_newlocale='define' d_nextafter='define' d_nexttoward='define' d_nice='define' d_nl_langinfo='define' d_nl_langinfo_l='define' d_non_int_bitfields='define' d_nv_preserves_uv='undef' d_nv_zero_is_allbits_zero='define' d_off64_t='undef' d_old_pthread_create_joinable='undef' d_oldpthreads='undef' d_oldsock='undef' d_open3='define' d_openat='define' d_pathconf='define' d_pause='define' d_perl_lc_all_category_positions_init='undef' d_perl_lc_all_separator='undef' d_perl_lc_all_uses_name_value_pairs='define' d_perl_otherlibdirs='undef' d_phostname='undef' d_pipe='define' d_pipe2='define' d_poll='define' d_portable='define' d_prctl='define' d_prctl_set_name='define' d_printf_format_null='define' d_procselfexe='define' d_pseudofork='undef' d_pthread_atfork='define' d_pthread_attr_setscope='define' d_pthread_yield='undef' d_ptrdiff_t='define' d_pwage='undef' d_pwchange='undef' d_pwclass='undef' d_pwcomment='undef' d_pwexpire='undef' d_pwgecos='define' d_pwpasswd='define' d_pwquota='undef' d_qgcvt='define' d_quad='define' d_querylocale='undef' d_random_r='undef' d_re_comp='undef' d_readdir='define' d_readdir64_r='undef' d_readdir_r='undef' d_readlink='define' d_readv='define' d_recvmsg='define' d_regcmp='undef' d_regcomp='define' d_remainder='define' d_remquo='define' d_rename='define' d_renameat='define' d_rewinddir='define' d_rint='define' d_rmdir='define' d_round='define' d_sbrkproto='define' d_scalbn='define' d_scalbnl='define' d_sched_yield='define' d_scm_rights='define' d_seekdir='define' d_select='define' d_sem='define' d_semctl='define' d_semctl_semid_ds='define' d_semctl_semun='define' d_semget='define' d_semop='define' d_sendmsg='define' d_setegid='define' d_setenv='define' d_seteuid='define' d_setgrent='define' d_setgrent_r='undef' d_setgrps='define' d_sethent='define' d_sethostent_r='undef' d_setitimer='define' d_setlinebuf='define' d_setlocale='define' d_setlocale_accepts_any_locale_name='undef' d_setlocale_r='undef' d_setnent='define' d_setnetent_r='undef' d_setpent='define' d_setpgid='define' d_setpgrp='define' d_setpgrp2='undef' d_setprior='define' d_setproctitle='undef' d_setprotoent_r='undef' d_setpwent='define' d_setpwent_r='undef' d_setregid='define' d_setresgid='define' d_setresuid='define' d_setreuid='define' d_setrgid='undef' d_setruid='undef' d_setsent='define' d_setservent_r='undef' d_setsid='define' d_setvbuf='define' d_shm='define' d_shmat='define' d_shmatprototype='define' d_shmctl='define' d_shmdt='define' d_shmget='define' d_sigaction='define' d_siginfo_si_addr='define' d_siginfo_si_band='define' d_siginfo_si_errno='define' d_siginfo_si_fd='define' d_siginfo_si_pid='define' d_siginfo_si_status='define' d_siginfo_si_uid='define' d_siginfo_si_value='define' d_signbit='define' d_sigprocmask='define' d_sigsetjmp='define' d_sin6_scope_id='define' d_sitearch='define' d_snprintf='define' d_sockaddr_in6='define' d_sockaddr_sa_len='undef' d_sockaddr_storage='define' d_sockatmark='define' d_sockatmarkproto='define' d_socket='define' d_socklen_t='define' d_sockpair='define' d_socks5_init='undef' d_sqrtl='define' d_srand48_r='undef' d_srandom_r='undef' d_sresgproto='undef' d_sresuproto='undef' d_stat='define' d_statblks='define' d_statfs_f_flags='define' d_statfs_s='define' d_static_inline='define' d_statvfs='define' d_stdio_cnt_lval='undef' d_stdio_ptr_lval='undef' d_stdio_ptr_lval_nochange_cnt='undef' d_stdio_ptr_lval_sets_cnt='undef' d_stdio_stream_array='undef' d_stdiobase='undef' d_stdstdio='undef' d_strcoll='define' d_strerror_l='define' d_strerror_r='undef' d_strftime='define' d_strlcat='undef' d_strlcpy='undef' d_strnlen='define' d_strtod='define' d_strtod_l='define' d_strtol='define' d_strtold='define' d_strtold_l='define' d_strtoll='define' d_strtoq='define' d_strtoul='define' d_strtoull='define' d_strtouq='define' d_strxfrm='define' d_strxfrm_l='define' d_suidsafe='undef' d_symlink='define' d_syscall='define' d_syscallproto='define' d_sysconf='define' d_sysernlst='' d_syserrlst='undef' d_system='define' d_tcgetpgrp='define' d_tcsetpgrp='define' d_telldir='define' d_telldirproto='define' d_tgamma='define' d_thread_local='define' d_time='define' d_timegm='define' d_times='define' d_tm_tm_gmtoff='define' d_tm_tm_zone='define' d_tmpnam_r='undef' d_towlower='define' d_towupper='define' d_trunc='define' d_truncate='define' d_truncl='define' d_ttyname_r='undef' d_tzname='define' d_u32align='define' d_ualarm='define' d_umask='define' d_uname='define' d_union_semun='undef' d_unlinkat='define' d_unordered='undef' d_unsetenv='define' d_uselocale='define' d_usleep='define' d_usleepproto='define' d_ustat='undef' d_vendorarch='undef' d_vendorbin='undef' d_vendorlib='undef' d_vendorscript='undef' d_vfork='undef' d_void_closedir='undef' d_voidsig='define' d_voidtty='' d_vsnprintf='define' d_wait4='define' d_waitpid='define' d_wcrtomb='define' d_wcscmp='define' d_wcstombs='define' d_wcsxfrm='define' d_wctomb='define' d_writev='define' d_xenix='undef' date='date' db_hashtype='u_int32_t' db_prefixtype='size_t' db_version_major='' db_version_minor='' db_version_patch='' default_inc_excludes_dot='define' direntrytype='struct dirent' dlext='so' dlsrc='dl_dlopen.xs' doubleinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f' doublekind='3' doublemantbits='52' doublenanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f' doublesize='8' drand01='Perl_drand48()' drand48_r_proto='0' dtrace='' dtraceobject='' dtracexnolibs='' dynamic_ext='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared' eagain='EAGAIN' ebcdic='undef' echo='echo' egrep='egrep' emacs='' endgrent_r_proto='0' endhostent_r_proto='0' endnetent_r_proto='0' endprotoent_r_proto='0' endpwent_r_proto='0' endservent_r_proto='0' eunicefix=':' exe_ext='' expr='expr' extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/scalar PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Term/Table Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' extern_C='extern' extras='' fflushNULL='define' fflushall='undef' find='' firstmakefile='makefile' flex='' fpossize='16' fpostype='fpos_t' freetype='void' from=':' full_ar='/usr/bin/ar' full_csh='csh' full_sed='/usr/bin/sed' gccansipedantic='' gccosandvers='' gccversion='11.4.0' getgrent_r_proto='0' getgrgid_r_proto='0' getgrnam_r_proto='0' gethostbyaddr_r_proto='0' gethostbyname_r_proto='0' gethostent_r_proto='0' getlogin_r_proto='0' getnetbyaddr_r_proto='0' getnetbyname_r_proto='0' getnetent_r_proto='0' getprotobyname_r_proto='0' getprotobynumber_r_proto='0' getprotoent_r_proto='0' getpwent_r_proto='0' getpwnam_r_proto='0' getpwuid_r_proto='0' getservbyname_r_proto='0' getservbyport_r_proto='0' getservent_r_proto='0' getspnam_r_proto='0' gidformat='"u"' gidsign='1' gidsize='4' gidtype='gid_t' glibpth='/usr/shlib /lib /usr/lib /usr/lib/386 /lib/386 /usr/ccs/lib /usr/ucblib /usr/local/lib ' gmake='gmake' gmtime_r_proto='0' gnulibc_version='2.35' grep='grep' groupcat='cat /etc/group' groupstype='gid_t' gzip='gzip' h_fcntl='false' h_sysfile='true' hint='recommended' hostcat='cat /etc/hosts' hostgenerate='' hostosname='' hostperl='' html1dir=' ' html1direxp='' html3dir=' ' html3direxp='' i16size='2' i16type='short' i32dformat='"d"' i32size='4' i32type='int' i64size='8' i64type='long' i8size='1' i8type='signed char' i_arpainet='define' i_bfd='undef' i_bsdioctl='' i_crypt='define' i_db='undef' i_dbm='undef' i_dirent='define' i_dlfcn='define' i_execinfo='define' i_fcntl='undef' i_fenv='define' i_fp='undef' i_fp_class='undef' i_gdbm='undef' i_gdbm_ndbm='undef' i_gdbmndbm='undef' i_grp='define' i_ieeefp='undef' i_inttypes='define' i_langinfo='define' i_libutil='undef' i_limits='define' i_locale='define' i_machcthr='undef' i_malloc='define' i_mallocmalloc='undef' i_mntent='define' i_ndbm='undef' i_netdb='define' i_neterrno='undef' i_netinettcp='define' i_niin='define' i_poll='define' i_prot='undef' i_pthread='define' i_pwd='define' i_quadmath='undef' i_rpcsvcdbm='undef' i_sgtty='undef' i_shadow='define' i_socks='undef' i_stdbool='define' i_stdint='define' i_stdlib='define' i_string='define' i_sunmath='undef' i_sysaccess='undef' i_sysdir='define' i_sysfile='define' i_sysfilio='undef' i_sysin='undef' i_sysioctl='define' i_syslog='define' i_sysmman='define' i_sysmode='undef' i_sysmount='define' i_sysndir='undef' i_sysparam='define' i_syspoll='define' i_sysresrc='define' i_syssecrt='undef' i_sysselct='define' i_syssockio='undef' i_sysstat='define' i_sysstatfs='define' i_sysstatvfs='define' i_syssyscall='define' i_systime='define' i_systimek='undef' i_systimes='define' i_systypes='define' i_sysuio='define' i_sysun='define' i_sysutsname='define' i_sysvfs='define' i_syswait='define' i_termio='undef' i_termios='define' i_time='define' i_unistd='define' i_ustat='undef' i_utime='define' i_vfork='undef' i_wchar='define' i_wctype='define' i_xlocale='undef' ignore_versioned_solibs='y' inc_version_list=' ' inc_version_list_init='0' incpath='' incpth='/usr/lib/gcc/aarch64-linux-gnu/11/include /usr/local/include /usr/include/aarch64-linux-gnu /usr/include' inews='' initialinstalllocation='/opt/hostedtoolcache/perl/5.42.0/arm64/bin' installarchlib='/opt/hostedtoolcache/perl/5.42.0/arm64/lib/5.42.0/aarch64-linux' installbin='/opt/hostedtoolcache/perl/5.42.0/arm64/bin' installhtml1dir='' installhtml3dir='' installman1dir='' installman3dir='' installprefix='/opt/hostedtoolcache/perl/5.42.0/arm64' installprefixexp='/opt/hostedtoolcache/perl/5.42.0/arm64' installprivlib='/opt/hostedtoolcache/perl/5.42.0/arm64/lib/5.42.0' installscript='/opt/hostedtoolcache/perl/5.42.0/arm64/bin' installsitearch='/opt/hostedtoolcache/perl/5.42.0/arm64/lib/site_perl/5.42.0/aarch64-linux' installsitebin='/opt/hostedtoolcache/perl/5.42.0/arm64/bin' installsitehtml1dir='' installsitehtml3dir='' installsitelib='/opt/hostedtoolcache/perl/5.42.0/arm64/lib/site_perl/5.42.0' installsiteman1dir='' installsiteman3dir='' installsitescript='/opt/hostedtoolcache/perl/5.42.0/arm64/bin' installstyle='lib' installusrbinperl='undef' installvendorarch='' installvendorbin='' installvendorhtml1dir='' installvendorhtml3dir='' installvendorlib='' installvendorman1dir='' installvendorman3dir='' installvendorscript='' intsize='4' issymlink='test -h' ivdformat='"ld"' ivsize='8' ivtype='long' known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Term/Table Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version ' ksh='' ld='cc' ld_can_script='define' lddlflags='-shared -O2 -L/usr/local/lib -fstack-protector-strong' ldflags=' -fstack-protector-strong -L/usr/local/lib' ldflags_uselargefiles='' ldlibpthname='LD_LIBRARY_PATH' less='less' lib_ext='.a' libc='/lib/aarch64-linux-gnu/libc.so.6' libdb_needs_pthread='N' libperl='libperl.so' libpth='/usr/local/lib /usr/lib/aarch64-linux-gnu /usr/lib' libs='-lpthread -ldl -lm -lcrypt -lutil -lc' libsdirs=' /usr/lib/aarch64-linux-gnu' libsfiles=' libpthread.a libdl.a libm.so libcrypt.so libutil.a libc.so' libsfound=' /usr/lib/aarch64-linux-gnu/libpthread.a /usr/lib/aarch64-linux-gnu/libdl.a /usr/lib/aarch64-linux-gnu/libm.so /usr/lib/aarch64-linux-gnu/libcrypt.so /usr/lib/aarch64-linux-gnu/libutil.a /usr/lib/aarch64-linux-gnu/libc.so' libspath=' /usr/local/lib /usr/lib/aarch64-linux-gnu /usr/lib' libswanted='cl pthread socket inet gdbm dbm db malloc dl ld sun m crypt sec util c cposix posix ucb BSD gdbm_compat' libswanted_uselargefiles='' line='' lint='' lkflags='' ln='ln' lns='/usr/bin/ln -s' localtime_r_proto='0' locincpth='/usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include' loclibpth='/usr/local/lib /opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib' longdblinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x7f' longdblkind='1' longdblmantbits='112' longdblnanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f' longdblsize='16' longlongsize='8' longsize='8' lp='' lpr='' ls='ls' lseeksize='8' lseektype='off_t' mail='' mailx='' make='make' make_set_make='#' mallocobj='' mallocsrc='' malloctype='void *' man1dir=' ' man1direxp='' man1ext='0' man3dir=' ' man3direxp='' man3ext='0' mips_type='' mistrustnm='' mkdir='mkdir' mmaptype='void *' modetype='mode_t' more='more' multiarch='undef' mv='' myarchname='aarch64-linux' mydomain='.m4syskx0wvie1ngfvcemybhynh.jx.internal.cloudapp.net' myhostname='runnervmet41j' myuname='linux runnervmet41j 6.8.0-1044-azure #50~22.04.1-ubuntu smp wed dec 3 15:16:03 utc 2025 aarch64 aarch64 aarch64 gnulinux ' n='-n' need_va_copy='undef' netdb_hlen_type='size_t' netdb_host_type='char *' netdb_name_type='const char *' netdb_net_type='in_addr_t' nm='nm' nm_opt='' nm_so_opt='--dynamic' nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/scalar PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Term/Table Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version' nroff='nroff' nvEUformat='"E"' nvFUformat='"F"' nvGUformat='"G"' nv_overflows_integers_at='256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0' nv_preserves_uv_bits='53' nveformat='"e"' nvfformat='"f"' nvgformat='"g"' nvmantbits='52' nvsize='8' nvtype='double' o_nonblock='O_NONBLOCK' obj_ext='.o' old_pthread_create_joinable='' optimize='-O2' orderlib='false' osname='linux' osvers='6.8.0-1044-azure' otherlibdirs=' ' package='perl5' pager='/usr/bin/less -R' passcat='cat /etc/passwd' patchlevel='42' path_sep=':' perl='perl' perl5='/usr/bin/perl' perl_lc_all_category_positions_init='' perl_lc_all_separator='' perl_patchlevel='' perl_static_inline='static __inline__' perl_thread_local='_Thread_local' perladmin='runner@runnervmet41j.m4syskx0wvie1ngfvcemybhynh.jx.internal.cloudapp.net' perllibs='-lpthread -ldl -lm -lcrypt -lutil -lc' perlpath='/opt/hostedtoolcache/perl/5.42.0/arm64/bin/perl' pg='pg' phostname='hostname' pidtype='pid_t' plibpth='/lib/aarch64-linux-gnu/11 /lib/aarch64-linux-gnu /lib/../lib /usr/lib/aarch64-linux-gnu/11 /usr/lib/aarch64-linux-gnu /usr/lib/../lib /lib /usr/lib' pmake='' pr='' prefix='/opt/hostedtoolcache/perl/5.42.0/arm64' prefixexp='/opt/hostedtoolcache/perl/5.42.0/arm64' privlib='/opt/hostedtoolcache/perl/5.42.0/arm64/lib/5.42.0' privlibexp='/opt/hostedtoolcache/perl/5.42.0/arm64/lib/5.42.0' procselfexe='"/proc/self/exe"' prototype='define' ptrsize='8' quadkind='2' quadtype='long' randbits='48' randfunc='Perl_drand48' random_r_proto='0' randseedtype='U32' ranlib=':' rd_nodata='-1' readdir64_r_proto='0' readdir_r_proto='0' revision='5' rm='rm' rm_try='/usr/bin/rm -f try try a.out .out try.[cho] try..o core core.try* try.core*' rmail='' run='' runnm='false' sGMTIME_max='67768036191676799' sGMTIME_min='-62167219200' sLOCALTIME_max='67768036191676799' sLOCALTIME_min='-62167219200' sPRIEUldbl='"LE"' sPRIFUldbl='"LF"' sPRIGUldbl='"LG"' sPRIXU64='"lX"' sPRId64='"ld"' sPRIeldbl='"Le"' sPRIfldbl='"Lf"' sPRIgldbl='"Lg"' sPRIi64='"li"' sPRIo64='"lo"' sPRIu64='"lu"' sPRIx64='"lx"' sSCNfldbl='"Lf"' sched_yield='sched_yield()' scriptdir='/opt/hostedtoolcache/perl/5.42.0/arm64/bin' scriptdirexp='/opt/hostedtoolcache/perl/5.42.0/arm64/bin' sed='sed' seedfunc='Perl_drand48_init' selectminbits='64' selecttype='fd_set *' sendmail='' setgrent_r_proto='0' sethostent_r_proto='0' setlocale_r_proto='0' setnetent_r_proto='0' setprotoent_r_proto='0' setpwent_r_proto='0' setservent_r_proto='0' sh='/bin/sh' shar='' sharpbang='#!' shmattype='void *' shortsize='2' shrpenv='' shsharp='true' sig_count='65' sig_name='ZERO HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS NUM32 NUM33 RTMIN NUM35 NUM36 NUM37 NUM38 NUM39 NUM40 NUM41 NUM42 NUM43 NUM44 NUM45 NUM46 NUM47 NUM48 NUM49 NUM50 NUM51 NUM52 NUM53 NUM54 NUM55 NUM56 NUM57 NUM58 NUM59 NUM60 NUM61 NUM62 NUM63 RTMAX IOT CLD POLL ' sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "TRAP", "ABRT", "BUS", "FPE", "KILL", "USR1", "SEGV", "USR2", "PIPE", "ALRM", "TERM", "STKFLT", "CHLD", "CONT", "STOP", "TSTP", "TTIN", "TTOU", "URG", "XCPU", "XFSZ", "VTALRM", "PROF", "WINCH", "IO", "PWR", "SYS", "NUM32", "NUM33", "RTMIN", "NUM35", "NUM36", "NUM37", "NUM38", "NUM39", "NUM40", "NUM41", "NUM42", "NUM43", "NUM44", "NUM45", "NUM46", "NUM47", "NUM48", "NUM49", "NUM50", "NUM51", "NUM52", "NUM53", "NUM54", "NUM55", "NUM56", "NUM57", "NUM58", "NUM59", "NUM60", "NUM61", "NUM62", "NUM63", "RTMAX", "IOT", "CLD", "POLL", 0' sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 6 17 29 ' sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 17, 29, 0' sig_size='68' signal_t='void' sitearch='/opt/hostedtoolcache/perl/5.42.0/arm64/lib/site_perl/5.42.0/aarch64-linux' sitearchexp='/opt/hostedtoolcache/perl/5.42.0/arm64/lib/site_perl/5.42.0/aarch64-linux' sitebin='/opt/hostedtoolcache/perl/5.42.0/arm64/bin' sitebinexp='/opt/hostedtoolcache/perl/5.42.0/arm64/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' sitelib='/opt/hostedtoolcache/perl/5.42.0/arm64/lib/site_perl/5.42.0' sitelib_stem='/opt/hostedtoolcache/perl/5.42.0/arm64/lib/site_perl' sitelibexp='/opt/hostedtoolcache/perl/5.42.0/arm64/lib/site_perl/5.42.0' siteman1dir='' siteman1direxp='' siteman3dir='' siteman3direxp='' siteprefix='/opt/hostedtoolcache/perl/5.42.0/arm64' siteprefixexp='/opt/hostedtoolcache/perl/5.42.0/arm64' sitescript='/opt/hostedtoolcache/perl/5.42.0/arm64/bin' sitescriptexp='/opt/hostedtoolcache/perl/5.42.0/arm64/bin' sizesize='8' sizetype='size_t' sleep='' smail='' so='so' sockethdr='' socketlib='' socksizetype='socklen_t' sort='sort' spackage='Perl5' spitshell='cat' srand48_r_proto='0' srandom_r_proto='0' src='.' ssizetype='ssize_t' st_dev_sign='1' st_dev_size='8' st_ino_sign='1' st_ino_size='8' startperl='#!/opt/hostedtoolcache/perl/5.42.0/arm64/bin/perl' startsh='#!/bin/sh' static_ext=' ' stdchar='char' stdio_base='((fp)->_base)' stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)' stdio_cnt='((fp)->_cnt)' stdio_filbuf='' stdio_ptr='((fp)->_ptr)' stdio_stream_array='' strerror_r_proto='0' submit='' subversion='0' sysman='/usr/share/man/man1' sysroot='' tail='' taint_disabled='' taint_support='' tar='' targetarch='' targetdir='' targetenv='' targethost='' targetmkdir='' targetport='' targetsh='/bin/sh' tbl='' tee='' test='test' timeincl='/usr/include/aarch64-linux-gnu/sys/time.h ' timetype='time_t' tmpnam_r_proto='0' to=':' touch='touch' tr='tr' trnl='\n' troff='' ttyname_r_proto='0' u16size='2' u16type='unsigned short' u32XUformat='"X"' u32oformat='"o"' u32size='4' u32type='unsigned int' u32uformat='"u"' u32xformat='"x"' u64size='8' u64type='unsigned long' u8size='1' u8type='unsigned char' uidformat='"u"' uidsign='1' uidsize='4' uidtype='uid_t' uname='uname' uniq='uniq' uquadtype='unsigned long' use64bitall='define' use64bitint='define' usecbacktrace='undef' usecrosscompile='undef' usedefaultstrict='undef' usedevel='undef' usedl='define' usedtrace='undef' usefaststdio='undef' useithreads='undef' usekernprocpathname='undef' uselanginfo='true' uselargefiles='define' uselongdouble='undef' usemallocwrap='define' usemorebits='undef' usemultiplicity='undef' usemymalloc='n' usenm='false' usensgetexecutablepath='undef' useopcode='true' useperlio='define' useposix='true' usequadmath='undef' usereentrant='undef' userelocatableinc='undef' useshrplib='true' usesitecustomize='undef' usesocks='undef' usethreads='undef' usevendorprefix='undef' useversionedarchname='undef' usevfork='false' usrinc='/usr/include' uuname='' uvXUformat='"lX"' uvoformat='"lo"' uvsize='8' uvtype='unsigned long' uvuformat='"lu"' uvxformat='"lx"' vendorarch='' vendorarchexp='' vendorbin='' vendorbinexp='' vendorhtml1dir=' ' vendorhtml1direxp='' vendorhtml3dir=' ' vendorhtml3direxp='' vendorlib='' vendorlib_stem='' vendorlibexp='' vendorman1dir=' ' vendorman1direxp='' vendorman3dir=' ' vendorman3direxp='' vendorprefix='' vendorprefixexp='' vendorscript='' vendorscriptexp='' version='5.42.0' version_patchlevel_string='version 42 subversion 0' versiononly='undef' vi='' xlibpth='/usr/lib/386 /lib/386' xlocale_needed='undef' yacc='yacc' yaccflags='' zcat='' zip='zip' !END! my $i = ord(8); foreach my $c (7,6,5,4,3,2,1) { $i <<= 8; $i |= ord($c); } our $byteorder = join('', unpack('aaaaaaaa', pack('L!', $i))); s/(byteorder=)(['"]).*?\2/$1$2$Config::byteorder$2/m; { # We have to set this up late as Win32 does not build miniperl # with the same defines and CC flags as it builds perl itself. my $defines = join " ", (Internals::V)[0,1]; if ( $defines =~ /\b(SILENT_NO_TAINT_SUPPORT)\b/ || $defines =~ /\b(NO_TAINT_SUPPORT)\b/ ){ my $which = $1; my $taint_disabled = ($which eq "SILENT_NO_TAINT_SUPPORT") ? "silent" : "define"; s/^(taint_disabled=['"])(["'])/$1$taint_disabled$2/m; } else { my $taint_support = 'define'; s/^(taint_support=['"])(["'])/$1$taint_support$2/m; } } my $config_sh_len = length $_; our $Config_SH_expanded = "\n$_" . << 'EOVIRTUAL'; ccflags_nolargefiles='-fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include ' ldflags_nolargefiles=' -fstack-protector-strong -L/usr/local/lib' libs_nolargefiles='-lpthread -ldl -lm -lcrypt -lutil -lc' libswanted_nolargefiles='cl pthread socket inet gdbm dbm db malloc dl ld sun m crypt sec util c cposix posix ucb BSD gdbm_compat' ccwarnflags=' -Wall -Werror=pointer-arith -Werror=vla -Wextra -Wno-long-long -Wno-declaration-after-statement -Wc++-compat -Wwrite-strings' ccstdflags=' -std=c99' EOVIRTUAL eval { # do not have hairy conniptions if this isnt available require 'Config_git.pl'; $Config_SH_expanded .= $Config::Git_Data; 1; } or warn "Warning: failed to load Config_git.pl, something strange about this perl...\n"; # Search for it in the big string sub fetch_string { my($self, $key) = @_; return undef unless $Config_SH_expanded =~ /\n$key=\'(.*?)\'\n/s; # So we can say "if $Config{'foo'}". $self->{$key} = $1 eq 'undef' ? undef : $1; } my $prevpos = 0; sub FIRSTKEY { $prevpos = 0; substr($Config_SH_expanded, 1, index($Config_SH_expanded, '=') - 1 ); } sub NEXTKEY { my $pos = index($Config_SH_expanded, qq('\n), $prevpos) + 2; my $len = index($Config_SH_expanded, "=", $pos) - $pos; $prevpos = $pos; $len > 0 ? substr($Config_SH_expanded, $pos, $len) : undef; } sub EXISTS { return 1 if exists($_[0]->{$_[1]}); return(index($Config_SH_expanded, "\n$_[1]='") != -1 ); } sub STORE { die "\%Config::Config is read-only\n" } *DELETE = *CLEAR = \*STORE; # Typeglob aliasing uses less space sub config_sh { substr $Config_SH_expanded, 1, $config_sh_len; } sub config_re { my $re = shift; return map { chomp; $_ } grep eval{ /^(?:$re)=/ }, split /^/, $Config_SH_expanded; } sub config_vars { # implements -V:cfgvar option (see perlrun -V:) foreach (@_) { # find optional leading, trailing colons; and query-spec my ($notag,$qry,$lncont) = m/^(:)?(.*?)(:)?$/; # flags fore and aft, # map colon-flags to print decorations my $prfx = $notag ? '': "$qry="; # tag-prefix for print my $lnend = $lncont ? ' ' : ";\n"; # line ending for print # all config-vars are by definition \w only, any \W means regex if ($qry =~ /\W/) { my @matches = config_re($qry); print map "$_$lnend", @matches ? @matches : "$qry: not found" if !$notag; print map { s/\w+=//; "$_$lnend" } @matches ? @matches : "$qry: not found" if $notag; } else { my $v = (exists $Config::Config{$qry}) ? $Config::Config{$qry} : 'UNKNOWN'; $v = 'undef' unless defined $v; print "${prfx}'${v}'$lnend"; } } } # Called by the real AUTOLOAD sub launcher { undef &AUTOLOAD; goto \&$Config::AUTOLOAD; } 1; FILE8a6b1b6e/Cwd.pmTopackage Cwd; use strict; use Exporter; our $VERSION = '3.94'; my $xs_version = $VERSION; $VERSION =~ tr/_//d; our @ISA = qw/ Exporter /; our @EXPORT = qw(cwd getcwd fastcwd fastgetcwd); push @EXPORT, qw(getdcwd) if $^O eq 'MSWin32'; our @EXPORT_OK = qw(chdir abs_path fast_abs_path realpath fast_realpath); # sys_cwd may keep the builtin command # All the functionality of this module may provided by builtins, # there is no sense to process the rest of the file. # The best choice may be to have this in BEGIN, but how to return from BEGIN? if ($^O eq 'os2') { local $^W = 0; *cwd = defined &sys_cwd ? \&sys_cwd : \&_os2_cwd; *getcwd = \&cwd; *fastgetcwd = \&cwd; *fastcwd = \&cwd; *fast_abs_path = \&sys_abspath if defined &sys_abspath; *abs_path = \&fast_abs_path; *realpath = \&fast_abs_path; *fast_realpath = \&fast_abs_path; return 1; } # Need to look up the feature settings on VMS. The preferred way is to use the # VMS::Feature module, but that may not be available to dual life modules. my $use_vms_feature; BEGIN { if ($^O eq 'VMS') { if (eval { local $SIG{__DIE__}; local @INC = @INC; pop @INC if $INC[-1] eq '.'; require VMS::Feature; }) { $use_vms_feature = 1; } } } # Need to look up the UNIX report mode. This may become a dynamic mode # in the future. sub _vms_unix_rpt { my $unix_rpt; if ($use_vms_feature) { $unix_rpt = VMS::Feature::current("filename_unix_report"); } else { my $env_unix_rpt = $ENV{'DECC$FILENAME_UNIX_REPORT'} || ''; $unix_rpt = $env_unix_rpt =~ /^[ET1]/i; } return $unix_rpt; } # Need to look up the EFS character set mode. This may become a dynamic # mode in the future. sub _vms_efs { my $efs; if ($use_vms_feature) { $efs = VMS::Feature::current("efs_charset"); } else { my $env_efs = $ENV{'DECC$EFS_CHARSET'} || ''; $efs = $env_efs =~ /^[ET1]/i; } return $efs; } # If loading the XS stuff doesn't work, we can fall back to pure perl if(! defined &getcwd && defined &DynaLoader::boot_DynaLoader) { # skipped on miniperl require XSLoader; XSLoader::load( __PACKAGE__, $xs_version); } # Big nasty table of function aliases my %METHOD_MAP = ( VMS => { cwd => '_vms_cwd', getcwd => '_vms_cwd', fastcwd => '_vms_cwd', fastgetcwd => '_vms_cwd', abs_path => '_vms_abs_path', fast_abs_path => '_vms_abs_path', }, MSWin32 => { # We assume that &_NT_cwd is defined as an XSUB or in the core. cwd => '_NT_cwd', getcwd => '_NT_cwd', fastcwd => '_NT_cwd', fastgetcwd => '_NT_cwd', abs_path => 'fast_abs_path', realpath => 'fast_abs_path', }, dos => { cwd => '_dos_cwd', getcwd => '_dos_cwd', fastgetcwd => '_dos_cwd', fastcwd => '_dos_cwd', abs_path => 'fast_abs_path', }, # QNX4. QNX6 has a $os of 'nto'. qnx => { cwd => '_qnx_cwd', getcwd => '_qnx_cwd', fastgetcwd => '_qnx_cwd', fastcwd => '_qnx_cwd', abs_path => '_qnx_abs_path', fast_abs_path => '_qnx_abs_path', }, cygwin => { getcwd => 'cwd', fastgetcwd => 'cwd', fastcwd => 'cwd', abs_path => 'fast_abs_path', realpath => 'fast_abs_path', }, amigaos => { getcwd => '_backtick_pwd', fastgetcwd => '_backtick_pwd', fastcwd => '_backtick_pwd', abs_path => 'fast_abs_path', } ); $METHOD_MAP{NT} = $METHOD_MAP{MSWin32}; # Find the pwd command in the expected locations. We assume these # are safe. This prevents _backtick_pwd() consulting $ENV{PATH} # so everything works under taint mode. my $pwd_cmd; if($^O ne 'MSWin32') { foreach my $try ('/bin/pwd', '/usr/bin/pwd', '/QOpenSys/bin/pwd', # OS/400 PASE. ) { if( -x $try ) { $pwd_cmd = $try; last; } } } # Android has a built-in pwd. Using $pwd_cmd will DTRT if # this perl was compiled with -Dd_useshellcmds, which is the # default for Android, but the block below is needed for the # miniperl running on the host when cross-compiling, and # potentially for native builds with -Ud_useshellcmds. if ($^O =~ /android/) { # If targetsh is executable, then we're either a full # perl, or a miniperl for a native build. if ( exists($Config::Config{targetsh}) && -x $Config::Config{targetsh}) { $pwd_cmd = "$Config::Config{targetsh} -c pwd" } else { my $sh = $Config::Config{sh} || (-x '/system/bin/sh' ? '/system/bin/sh' : 'sh'); $pwd_cmd = "$sh -c pwd" } } my $found_pwd_cmd = defined($pwd_cmd); # Lazy-load Carp sub _carp { require Carp; Carp::carp(@_) } sub _croak { require Carp; Carp::croak(@_) } # The 'natural and safe form' for UNIX (pwd may be setuid root) sub _backtick_pwd { # Localize %ENV entries in a way that won't create new hash keys. # Under AmigaOS we don't want to localize as it stops perl from # finding 'sh' in the PATH. my @localize = grep exists $ENV{$_}, qw(IFS CDPATH ENV BASH_ENV) if $^O ne "amigaos"; local @ENV{@localize} if @localize; # empty PATH is the same as "." on *nix, so localize it to /something/ # we won't *use* the path as code above turns $pwd_cmd into a specific # executable, but it will blow up anyway under taint. We could set it to # anything absolute. Perhaps "/" would be better. local $ENV{PATH}= "/usr/bin" if $^O ne "amigaos"; my $cwd = `$pwd_cmd`; # Belt-and-suspenders in case someone said "undef $/". local $/ = "\n"; # `pwd` may fail e.g. if the disk is full chomp($cwd) if defined $cwd; $cwd; } # Since some ports may predefine cwd internally (e.g., NT) # we take care not to override an existing definition for cwd(). unless ($METHOD_MAP{$^O}{cwd} or defined &cwd) { if( $found_pwd_cmd ) { *cwd = \&_backtick_pwd; } else { # getcwd() might have an empty prototype *cwd = sub { getcwd(); }; } } if ($^O eq 'cygwin') { # We need to make sure cwd() is called with no args, because it's # got an arg-less prototype and will die if args are present. local $^W = 0; my $orig_cwd = \&cwd; *cwd = sub { &$orig_cwd() } } # set a reasonable (and very safe) default for fastgetcwd, in case it # isn't redefined later (20001212 rspier) *fastgetcwd = \&cwd; # A non-XS version of getcwd() - also used to bootstrap the perl build # process, when miniperl is running and no XS loading happens. sub _perl_getcwd { abs_path('.'); } # By John Bazik # # Usage: $cwd = &fastcwd; # # This is a faster version of getcwd. It's also more dangerous because # you might chdir out of a directory that you can't chdir back into. sub fastcwd_ { my($odev, $oino, $cdev, $cino, $tdev, $tino); my(@path, $path); local(*DIR); my($orig_cdev, $orig_cino) = stat('.'); ($cdev, $cino) = ($orig_cdev, $orig_cino); for (;;) { my $direntry; ($odev, $oino) = ($cdev, $cino); CORE::chdir('..') || return undef; ($cdev, $cino) = stat('.'); last if $odev == $cdev && $oino eq $cino; opendir(DIR, '.') || return undef; for (;;) { $direntry = readdir(DIR); last unless defined $direntry; next if $direntry eq '.'; next if $direntry eq '..'; ($tdev, $tino) = lstat($direntry); last unless $tdev != $odev || $tino ne $oino; } closedir(DIR); return undef unless defined $direntry; # should never happen unshift(@path, $direntry); } $path = '/' . join('/', @path); if ($^O eq 'apollo') { $path = "/".$path; } # At this point $path may be tainted (if tainting) and chdir would fail. # Untaint it then check that we landed where we started. $path =~ /^(.*)\z/s # untaint && CORE::chdir($1) or return undef; ($cdev, $cino) = stat('.'); die "Unstable directory path, current directory changed unexpectedly" if $cdev != $orig_cdev || $cino ne $orig_cino; $path; } if (not defined &fastcwd) { *fastcwd = \&fastcwd_ } # Keeps track of current working directory in PWD environment var # Usage: # use Cwd 'chdir'; # chdir $newdir; my $chdir_init = 0; sub chdir_init { if ($ENV{'PWD'} and $^O ne 'os2' and $^O ne 'dos' and $^O ne 'MSWin32') { my($dd,$di) = stat('.'); my($pd,$pi) = stat($ENV{'PWD'}); if (!defined $dd or !defined $pd or $di ne $pi or $dd != $pd) { $ENV{'PWD'} = cwd(); } } else { my $wd = cwd(); $wd = Win32::GetFullPathName($wd) if $^O eq 'MSWin32'; $ENV{'PWD'} = $wd; } # Strip an automounter prefix (where /tmp_mnt/foo/bar == /foo/bar) if ($^O ne 'MSWin32' and $ENV{'PWD'} =~ m|(/[^/]+(/[^/]+/[^/]+))(.*)|s) { my($pd,$pi) = stat($2); my($dd,$di) = stat($1); if (defined $pd and defined $dd and $di ne $pi and $dd == $pd) { $ENV{'PWD'}="$2$3"; } } $chdir_init = 1; } sub chdir { my $newdir = @_ ? shift : ''; # allow for no arg (chdir to HOME dir) if ($^O eq "cygwin") { $newdir =~ s|\A///+|//|; $newdir =~ s|(?<=[^/])//+|/|g; } elsif ($^O ne 'MSWin32') { $newdir =~ s|///*|/|g; } chdir_init() unless $chdir_init; my $newpwd; if ($^O eq 'MSWin32') { # get the full path name *before* the chdir() $newpwd = Win32::GetFullPathName($newdir); } return 0 unless CORE::chdir $newdir; if ($^O eq 'VMS') { return $ENV{'PWD'} = $ENV{'DEFAULT'} } elsif ($^O eq 'MSWin32') { $ENV{'PWD'} = $newpwd; return 1; } if (ref $newdir eq 'GLOB') { # in case a file/dir handle is passed in $ENV{'PWD'} = cwd(); } elsif ($newdir =~ m#^/#s) { $ENV{'PWD'} = $newdir; } else { my @curdir = split(m#/#,$ENV{'PWD'}); @curdir = ('') unless @curdir; my $component; foreach $component (split(m#/#, $newdir)) { next if $component eq '.'; pop(@curdir),next if $component eq '..'; push(@curdir,$component); } $ENV{'PWD'} = join('/',@curdir) || '/'; } 1; } sub _perl_abs_path { my $start = @_ ? shift : '.'; my($dotdots, $cwd, @pst, @cst, $dir, @tst); unless (@cst = stat( $start )) { return undef; } unless (-d _) { # Make sure we can be invoked on plain files, not just directories. # NOTE that this routine assumes that '/' is the only directory separator. my ($dir, $file) = $start =~ m{^(.*)/(.+)$} or return cwd() . '/' . $start; # Can't use "-l _" here, because the previous stat was a stat(), not an lstat(). if (-l $start) { my $link_target = readlink($start); die "Can't resolve link $start: $!" unless defined $link_target; require File::Spec; $link_target = $dir . '/' . $link_target unless File::Spec->file_name_is_absolute($link_target); return abs_path($link_target); } return $dir ? abs_path($dir) . "/$file" : "/$file"; } $cwd = ''; $dotdots = $start; do { $dotdots .= '/..'; @pst = @cst; local *PARENT; unless (opendir(PARENT, $dotdots)) { return undef; } unless (@cst = stat($dotdots)) { my $e = $!; closedir(PARENT); $! = $e; return undef; } if ($pst[0] == $cst[0] && $pst[1] eq $cst[1]) { $dir = undef; } else { do { unless (defined ($dir = readdir(PARENT))) { closedir(PARENT); require Errno; $! = Errno::ENOENT(); return undef; } $tst[0] = $pst[0]+1 unless (@tst = lstat("$dotdots/$dir")) } while ($dir eq '.' || $dir eq '..' || $tst[0] != $pst[0] || $tst[1] ne $pst[1]); } $cwd = (defined $dir ? "$dir" : "" ) . "/$cwd" ; closedir(PARENT); } while (defined $dir); chop($cwd) unless $cwd eq '/'; # drop the trailing / $cwd; } my $Curdir; sub fast_abs_path { local $ENV{PWD} = $ENV{PWD} || ''; # Guard against clobberage my $cwd = getcwd(); defined $cwd or return undef; require File::Spec; my $path = @_ ? shift : ($Curdir ||= File::Spec->curdir); # Detaint else we'll explode in taint mode. This is safe because # we're not doing anything dangerous with it. ($path) = $path =~ /(.*)/s; ($cwd) = $cwd =~ /(.*)/s; unless (-e $path) { require Errno; $! = Errno::ENOENT(); return undef; } unless (-d _) { # Make sure we can be invoked on plain files, not just directories. my ($vol, $dir, $file) = File::Spec->splitpath($path); return File::Spec->catfile($cwd, $path) unless length $dir; if (-l $path) { my $link_target = readlink($path); defined $link_target or return undef; $link_target = File::Spec->catpath($vol, $dir, $link_target) unless File::Spec->file_name_is_absolute($link_target); return fast_abs_path($link_target); } return $dir eq File::Spec->rootdir ? File::Spec->catpath($vol, $dir, $file) : fast_abs_path(File::Spec->catpath($vol, $dir, '')) . '/' . $file; } if (!CORE::chdir($path)) { return undef; } my $realpath = getcwd(); if (! ((-d $cwd) && (CORE::chdir($cwd)))) { _croak("Cannot chdir back to $cwd: $!"); } $realpath; } # added function alias to follow principle of least surprise # based on previous aliasing. --tchrist 27-Jan-00 *fast_realpath = \&fast_abs_path; # --- PORTING SECTION --- # VMS: $ENV{'DEFAULT'} points to default directory at all times # 06-Mar-1996 Charles Bailey bailey@newman.upenn.edu # Note: Use of Cwd::chdir() causes the logical name PWD to be defined # in the process logical name table as the default device and directory # seen by Perl. This may not be the same as the default device # and directory seen by DCL after Perl exits, since the effects # the CRTL chdir() function persist only until Perl exits. sub _vms_cwd { return $ENV{'DEFAULT'}; } sub _vms_abs_path { return $ENV{'DEFAULT'} unless @_; my $path = shift; my $efs = _vms_efs; my $unix_rpt = _vms_unix_rpt; if (defined &VMS::Filespec::vmsrealpath) { my $path_unix = 0; my $path_vms = 0; $path_unix = 1 if ($path =~ m#(?<=\^)/#); $path_unix = 1 if ($path =~ /^\.\.?$/); $path_vms = 1 if ($path =~ m#[\[<\]]#); $path_vms = 1 if ($path =~ /^--?$/); my $unix_mode = $path_unix; if ($efs) { # In case of a tie, the Unix report mode decides. if ($path_vms == $path_unix) { $unix_mode = $unix_rpt; } else { $unix_mode = 0 if $path_vms; } } if ($unix_mode) { # Unix format return VMS::Filespec::unixrealpath($path); } # VMS format my $new_path = VMS::Filespec::vmsrealpath($path); # Perl expects directories to be in directory format $new_path = VMS::Filespec::pathify($new_path) if -d $path; return $new_path; } # Fallback to older algorithm if correct ones are not # available. if (-l $path) { my $link_target = readlink($path); die "Can't resolve link $path: $!" unless defined $link_target; return _vms_abs_path($link_target); } # may need to turn foo.dir into [.foo] my $pathified = VMS::Filespec::pathify($path); $path = $pathified if defined $pathified; return VMS::Filespec::rmsexpand($path); } sub _os2_cwd { my $pwd = `cmd /c cd`; chomp $pwd; $pwd =~ s:\\:/:g ; $ENV{'PWD'} = $pwd; return $pwd; } sub _win32_cwd_simple { my $pwd = `cd`; chomp $pwd; $pwd =~ s:\\:/:g ; $ENV{'PWD'} = $pwd; return $pwd; } sub _win32_cwd { my $pwd; $pwd = Win32::GetCwd(); $pwd =~ s:\\:/:g ; $ENV{'PWD'} = $pwd; return $pwd; } *_NT_cwd = defined &Win32::GetCwd ? \&_win32_cwd : \&_win32_cwd_simple; sub _dos_cwd { my $pwd; if (!defined &Dos::GetCwd) { chomp($pwd = `command /c cd`); $pwd =~ s:\\:/:g ; } else { $pwd = Dos::GetCwd(); } $ENV{'PWD'} = $pwd; return $pwd; } sub _qnx_cwd { local $ENV{PATH} = ''; local $ENV{CDPATH} = ''; local $ENV{ENV} = ''; my $pwd = `/usr/bin/fullpath -t`; chomp $pwd; $ENV{'PWD'} = $pwd; return $pwd; } sub _qnx_abs_path { local $ENV{PATH} = ''; local $ENV{CDPATH} = ''; local $ENV{ENV} = ''; my $path = @_ ? shift : '.'; local *REALPATH; defined( open(REALPATH, '-|') || exec '/usr/bin/fullpath', '-t', $path ) or die "Can't open /usr/bin/fullpath: $!"; my $realpath = ; close REALPATH; chomp $realpath; return $realpath; } # Now that all the base-level functions are set up, alias the # user-level functions to the right places if (exists $METHOD_MAP{$^O}) { my $map = $METHOD_MAP{$^O}; foreach my $name (keys %$map) { local $^W = 0; # assignments trigger 'subroutine redefined' warning no strict 'refs'; *{$name} = \&{$map->{$name}}; } } # built-in from 5.30 *getcwd = \&Internals::getcwd if !defined &getcwd && defined &Internals::getcwd; # In case the XS version doesn't load. *abs_path = \&_perl_abs_path unless defined &abs_path; *getcwd = \&_perl_getcwd unless defined &getcwd; # added function alias for those of us more # used to the libc function. --tchrist 27-Jan-00 *realpath = \&abs_path; 1; __END__ =head1 NAME Cwd - get pathname of current working directory =head1 SYNOPSIS use Cwd; my $dir = getcwd; use Cwd 'abs_path'; my $abs_path = abs_path($file); =head1 DESCRIPTION This module provides functions for determining the pathname of the current working directory. It is recommended that getcwd (or another *cwd() function) be used in I code to ensure portability. By default, it exports the functions cwd(), getcwd(), fastcwd(), and fastgetcwd() (and, on Win32, getdcwd()) into the caller's namespace. =head2 getcwd and friends Each of these functions are called without arguments and return the absolute path of the current working directory. =over 4 =item getcwd my $cwd = getcwd(); Returns the current working directory. On error returns C, with C<$!> set to indicate the error. Exposes the POSIX function getcwd(3) or re-implements it if it's not available. =item cwd my $cwd = cwd(); The cwd() is the most natural form for the current architecture. For most systems it is identical to `pwd` (but without the trailing line terminator). =item fastcwd my $cwd = fastcwd(); A more dangerous version of getcwd(), but potentially faster. It might conceivably chdir() you out of a directory that it can't chdir() you back into. If fastcwd encounters a problem it will return undef but will probably leave you in a different directory. For a measure of extra security, if everything appears to have worked, the fastcwd() function will check that it leaves you in the same directory that it started in. If it has changed it will C with the message "Unstable directory path, current directory changed unexpectedly". That should never happen. =item fastgetcwd my $cwd = fastgetcwd(); The fastgetcwd() function is provided as a synonym for cwd(). =item getdcwd my $cwd = getdcwd(); my $cwd = getdcwd('C:'); The getdcwd() function is also provided on Win32 to get the current working directory on the specified drive, since Windows maintains a separate current working directory for each drive. If no drive is specified then the current drive is assumed. This function simply calls the Microsoft C library _getdcwd() function. =back =head2 abs_path and friends These functions are exported only on request. They each take a single argument and return the absolute pathname for it. If no argument is given they'll use the current working directory. =over 4 =item abs_path my $abs_path = abs_path($file); Uses the same algorithm as getcwd(). Symbolic links and relative-path components ("." and "..") are resolved to return the canonical pathname, just like realpath(3). On error returns C, with C<$!> set to indicate the error. =item realpath my $abs_path = realpath($file); A synonym for abs_path(). =item fast_abs_path my $abs_path = fast_abs_path($file); A more dangerous, but potentially faster version of abs_path. =back =head2 $ENV{PWD} If you ask to override your chdir() built-in function, use Cwd qw(chdir); then your PWD environment variable will be kept up to date. Note that it will only be kept up to date if all packages which use chdir import it from Cwd. =head1 NOTES =over 4 =item * Since the path separators are different on some operating systems ('/' on Unix, ':' on MacPerl, etc...) we recommend you use the File::Spec modules wherever portability is a concern. =item * Actually, on Mac OS, the C, C and C functions are all aliases for the C function, which, on Mac OS, calls `pwd`. Likewise, the C function is an alias for C. =back =head1 AUTHOR Maintained by perl5-porters >. =head1 COPYRIGHT Copyright (c) 2004 by the Perl 5 Porters. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. Portions of the C code in this library are copyright (c) 1994 by the Regents of the University of California. All rights reserved. The license on this code is compatible with the licensing of the rest of the distribution - please see the source code in F for the details. =head1 SEE ALSO L =cut FILEb56a5696/Digest/SHA.pmW2package Digest::SHA; require 5.003000; use strict; use warnings; use vars qw($VERSION @ISA @EXPORT_OK $errmsg); use Fcntl qw(O_RDONLY O_RDWR); use Cwd qw(getcwd); use integer; $VERSION = '6.04'; require Exporter; @ISA = qw(Exporter); @EXPORT_OK = qw( $errmsg hmac_sha1 hmac_sha1_base64 hmac_sha1_hex hmac_sha224 hmac_sha224_base64 hmac_sha224_hex hmac_sha256 hmac_sha256_base64 hmac_sha256_hex hmac_sha384 hmac_sha384_base64 hmac_sha384_hex hmac_sha512 hmac_sha512_base64 hmac_sha512_hex hmac_sha512224 hmac_sha512224_base64 hmac_sha512224_hex hmac_sha512256 hmac_sha512256_base64 hmac_sha512256_hex sha1 sha1_base64 sha1_hex sha224 sha224_base64 sha224_hex sha256 sha256_base64 sha256_hex sha384 sha384_base64 sha384_hex sha512 sha512_base64 sha512_hex sha512224 sha512224_base64 sha512224_hex sha512256 sha512256_base64 sha512256_hex); # Inherit from Digest::base if possible eval { require Digest::base; push(@ISA, 'Digest::base'); }; # The following routines aren't time-critical, so they can be left in Perl sub new { my($class, $alg) = @_; $alg =~ s/\D+//g if defined $alg; if (ref($class)) { # instance method if (!defined($alg) || ($alg == $class->algorithm)) { sharewind($class); return($class); } return shainit($class, $alg) ? $class : undef; } $alg = 1 unless defined $alg; return $class->newSHA($alg); } BEGIN { *reset = \&new } sub add_bits { my($self, $data, $nbits) = @_; unless (defined $nbits) { $nbits = length($data); $data = pack("B*", $data); } $nbits = length($data) * 8 if $nbits > length($data) * 8; shawrite($data, $nbits, $self); return($self); } sub _bail { my $msg = shift; $errmsg = $!; $msg .= ": $!"; require Carp; Carp::croak($msg); } { my $_can_T_filehandle; sub _istext { local *FH = shift; my $file = shift; if (! defined $_can_T_filehandle) { local $^W = 0; my $istext = eval { -T FH }; $_can_T_filehandle = $@ ? 0 : 1; return $_can_T_filehandle ? $istext : -T $file; } return $_can_T_filehandle ? -T FH : -T $file; } } sub _addfile { my ($self, $handle) = @_; my $n; my $buf = ""; while (($n = read($handle, $buf, 4096))) { $self->add($buf); } _bail("Read failed") unless defined $n; $self; } sub addfile { my ($self, $file, $mode) = @_; return(_addfile($self, $file)) unless ref(\$file) eq 'SCALAR'; $mode = defined($mode) ? $mode : ""; my ($binary, $UNIVERSAL, $BITS) = map { $_ eq $mode } ("b", "U", "0"); ## Always interpret "-" to mean STDIN; otherwise use ## sysopen to handle full range of POSIX file names. ## If $file is a directory, force an EISDIR error ## by attempting to open with mode O_RDWR local *FH; if ($file eq '-') { if (-d STDIN) { sysopen(FH, getcwd(), O_RDWR) or _bail('Open failed'); } open(FH, '< -') or _bail('Open failed'); } else { sysopen(FH, $file, -d $file ? O_RDWR : O_RDONLY) or _bail('Open failed'); } if ($BITS) { my ($n, $buf) = (0, ""); while (($n = read(FH, $buf, 4096))) { $buf =~ tr/01//cd; $self->add_bits($buf); } _bail("Read failed") unless defined $n; close(FH); return($self); } binmode(FH) if $binary || $UNIVERSAL; if ($UNIVERSAL && _istext(*FH, $file)) { $self->_addfileuniv(*FH); } else { $self->_addfilebin(*FH) } close(FH); $self; } sub getstate { my $self = shift; my $alg = $self->algorithm or return; my $state = $self->_getstate or return; my $nD = $alg <= 256 ? 8 : 16; my $nH = $alg <= 256 ? 32 : 64; my $nB = $alg <= 256 ? 64 : 128; my($H, $block, $blockcnt, $lenhh, $lenhl, $lenlh, $lenll) = $state =~ /^(.{$nH})(.{$nB})(.{4})(.{4})(.{4})(.{4})(.{4})$/s; for ($alg, $H, $block, $blockcnt, $lenhh, $lenhl, $lenlh, $lenll) { return unless defined $_; } my @s = (); push(@s, "alg:" . $alg); push(@s, "H:" . join(":", unpack("H*", $H) =~ /.{$nD}/g)); push(@s, "block:" . join(":", unpack("H*", $block) =~ /.{2}/g)); push(@s, "blockcnt:" . unpack("N", $blockcnt)); push(@s, "lenhh:" . unpack("N", $lenhh)); push(@s, "lenhl:" . unpack("N", $lenhl)); push(@s, "lenlh:" . unpack("N", $lenlh)); push(@s, "lenll:" . unpack("N", $lenll)); join("\n", @s) . "\n"; } sub putstate { my($class, $state) = @_; my %s = (); for (split(/\n/, $state)) { s/^\s+//; s/\s+$//; next if (/^(#|$)/); my @f = split(/[:\s]+/); my $tag = shift(@f); $s{$tag} = join('', @f); } # H and block may contain arbitrary values, but check everything else grep { $_ == $s{'alg'} } (1,224,256,384,512,512224,512256) or return; length($s{'H'}) == ($s{'alg'} <= 256 ? 64 : 128) or return; length($s{'block'}) == ($s{'alg'} <= 256 ? 128 : 256) or return; { no integer; for (qw(blockcnt lenhh lenhl lenlh lenll)) { 0 <= $s{$_} or return; $s{$_} <= 4294967295 or return; } $s{'blockcnt'} < ($s{'alg'} <= 256 ? 512 : 1024) or return; } my $packed_state = ( pack("H*", $s{'H'}) . pack("H*", $s{'block'}) . pack("N", $s{'blockcnt'}) . pack("N", $s{'lenhh'}) . pack("N", $s{'lenhl'}) . pack("N", $s{'lenlh'}) . pack("N", $s{'lenll'}) ); return $class->new($s{'alg'})->_putstate($packed_state); } sub dump { my $self = shift; my $file = shift; my $state = $self->getstate or return; $file = "-" if (!defined($file) || $file eq ""); local *FH; open(FH, "> $file") or return; print FH $state; close(FH); return($self); } sub load { my $class = shift; my $file = shift; $file = "-" if (!defined($file) || $file eq ""); local *FH; open(FH, "< $file") or return; my $str = join('', ); close(FH); $class->putstate($str); } eval { require XSLoader; XSLoader::load('Digest::SHA', $VERSION); 1; } or do { require DynaLoader; push @ISA, 'DynaLoader'; Digest::SHA->bootstrap($VERSION); }; 1; __END__ =head1 NAME Digest::SHA - Perl extension for SHA-1/224/256/384/512 =head1 SYNOPSIS In programs: # Functional interface use Digest::SHA qw(sha1 sha1_hex sha1_base64 ...); $digest = sha1($data); $digest = sha1_hex($data); $digest = sha1_base64($data); $digest = sha256($data); $digest = sha384_hex($data); $digest = sha512_base64($data); # Object-oriented use Digest::SHA; $sha = Digest::SHA->new($alg); $sha->add($data); # feed data into stream $sha->addfile(*F); $sha->addfile($filename); $sha->add_bits($bits); $sha->add_bits($data, $nbits); $sha_copy = $sha->clone; # make copy of digest object $state = $sha->getstate; # save current state to string $sha->putstate($state); # restore previous $state $digest = $sha->digest; # compute digest $digest = $sha->hexdigest; $digest = $sha->b64digest; From the command line: $ shasum files $ shasum --help =head1 SYNOPSIS (HMAC-SHA) # Functional interface only use Digest::SHA qw(hmac_sha1 hmac_sha1_hex ...); $digest = hmac_sha1($data, $key); $digest = hmac_sha224_hex($data, $key); $digest = hmac_sha256_base64($data, $key); =head1 ABSTRACT Digest::SHA is a complete implementation of the NIST Secure Hash Standard. It gives Perl programmers a convenient way to calculate SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, and SHA-512/256 message digests. The module can handle all types of input, including partial-byte data. =head1 DESCRIPTION Digest::SHA is written in C for speed. If your platform lacks a C compiler, you can install the functionally equivalent (but much slower) L module. The programming interface is easy to use: it's the same one found in CPAN's L module. So, if your applications currently use L and you'd prefer the stronger security of SHA, it's a simple matter to convert them. The interface provides two ways to calculate digests: all-at-once, or in stages. To illustrate, the following short program computes the SHA-256 digest of "hello world" using each approach: use Digest::SHA qw(sha256_hex); $data = "hello world"; @frags = split(//, $data); # all-at-once (Functional style) $digest1 = sha256_hex($data); # in-stages (OOP style) $state = Digest::SHA->new(256); for (@frags) { $state->add($_) } $digest2 = $state->hexdigest; print $digest1 eq $digest2 ? "whew!\n" : "oops!\n"; To calculate the digest of an n-bit message where I is not a multiple of 8, use the I method. For example, consider the 446-bit message consisting of the bit-string "110" repeated 148 times, followed by "11". Here's how to display its SHA-1 digest: use Digest::SHA; $bits = "110" x 148 . "11"; $sha = Digest::SHA->new(1)->add_bits($bits); print $sha->hexdigest, "\n"; Note that for larger bit-strings, it's more efficient to use the two-argument version I, where I<$data> is in the customary packed binary format used for Perl strings. The module also lets you save intermediate SHA states to a string. The I method generates portable, human-readable text describing the current state of computation. You can subsequently restore that state with I to resume where the calculation left off. To see what a state description looks like, just run the following: use Digest::SHA; print Digest::SHA->new->add("Shaw" x 1962)->getstate; As an added convenience, the Digest::SHA module offers routines to calculate keyed hashes using the HMAC-SHA-1/224/256/384/512 algorithms. These services exist in functional form only, and mimic the style and behavior of the I, I, and I functions. # Test vector from draft-ietf-ipsec-ciph-sha-256-01.txt use Digest::SHA qw(hmac_sha256_hex); print hmac_sha256_hex("Hi There", chr(0x0b) x 32), "\n"; =head1 UNICODE AND SIDE EFFECTS Perl supports Unicode strings as of version 5.6. Such strings may contain wide characters, namely, characters whose ordinal values are greater than 255. This can cause problems for digest algorithms such as SHA that are specified to operate on sequences of bytes. The rule by which Digest::SHA handles a Unicode string is easy to state, but potentially confusing to grasp: the string is interpreted as a sequence of byte values, where each byte value is equal to the ordinal value (viz. code point) of its corresponding Unicode character. That way, the Unicode string 'abc' has exactly the same digest value as the ordinary string 'abc'. Since a wide character does not fit into a byte, the Digest::SHA routines croak if they encounter one. Whereas if a Unicode string contains no wide characters, the module accepts it quite happily. The following code illustrates the two cases: $str1 = pack('U*', (0..255)); print sha1_hex($str1); # ok $str2 = pack('U*', (0..256)); print sha1_hex($str2); # croaks Be aware that the digest routines silently convert UTF-8 input into its equivalent byte sequence in the native encoding (cf. utf8::downgrade). This side effect influences only the way Perl stores the data internally, but otherwise leaves the actual value of the data intact. =head1 NIST STATEMENT ON SHA-1 NIST acknowledges that the work of Prof. Xiaoyun Wang constitutes a practical collision attack on SHA-1. Therefore, NIST encourages the rapid adoption of the SHA-2 hash functions (e.g. SHA-256) for applications requiring strong collision resistance, such as digital signatures. ref. L =head1 PADDING OF BASE64 DIGESTS By convention, CPAN Digest modules do B pad their Base64 output. Problems can occur when feeding such digests to other software that expects properly padded Base64 encodings. For the time being, any necessary padding must be done by the user. Fortunately, this is a simple operation: if the length of a Base64-encoded digest isn't a multiple of 4, simply append "=" characters to the end of the digest until it is: while (length($b64_digest) % 4) { $b64_digest .= '='; } To illustrate, I is computed to be ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0 which has a length of 43. So, the properly padded version is ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0= =head1 EXPORT None by default. =head1 EXPORTABLE FUNCTIONS Provided your C compiler supports a 64-bit type (e.g. the I of C99, or I<__int64> used by Microsoft C/C++), all of these functions will be available for use. Otherwise, you won't be able to perform the SHA-384 and SHA-512 transforms, both of which require 64-bit operations. I =over 4 =item B =item B =item B =item B =item B =item B =item B Logically joins the arguments into a single string, and returns its SHA-1/224/256/384/512 digest encoded as a binary string. =item B =item B =item B =item B =item B =item B =item B Logically joins the arguments into a single string, and returns its SHA-1/224/256/384/512 digest encoded as a hexadecimal string. =item B =item B =item B =item B =item B =item B =item B Logically joins the arguments into a single string, and returns its SHA-1/224/256/384/512 digest encoded as a Base64 string. It's important to note that the resulting string does B contain the padding characters typical of Base64 encodings. This omission is deliberate, and is done to maintain compatibility with the family of CPAN Digest modules. See L for details. =back I =over 4 =item B Returns a new Digest::SHA object. Allowed values for I<$alg> are 1, 224, 256, 384, 512, 512224, or 512256. It's also possible to use common string representations of the algorithm (e.g. "sha256", "SHA-384"). If the argument is missing, SHA-1 will be used by default. Invoking I as an instance method will reset the object to the initial state associated with I<$alg>. If the argument is missing, the object will continue using the same algorithm that was selected at creation. =item B This method has exactly the same effect as I. In fact, I is just an alias for I. =item B Returns the number of digest bits for this object. The values are 160, 224, 256, 384, 512, 224, and 256 for SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 and SHA-512/256, respectively. =item B Returns the digest algorithm for this object. The values are 1, 224, 256, 384, 512, 512224, and 512256 for SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, and SHA-512/256, respectively. =item B Returns a duplicate copy of the object. =item B Logically joins the arguments into a single string, and uses it to update the current digest state. In other words, the following statements have the same effect: $sha->add("a"); $sha->add("b"); $sha->add("c"); $sha->add("a")->add("b")->add("c"); $sha->add("a", "b", "c"); $sha->add("abc"); The return value is the updated object itself. =item B =item B Updates the current digest state by appending bits to it. The return value is the updated object itself. The first form causes the most-significant I<$nbits> of I<$data> to be appended to the stream. The I<$data> argument is in the customary binary format used for Perl strings. The second form takes an ASCII string of "0" and "1" characters as its argument. It's equivalent to $sha->add_bits(pack("B*", $bits), length($bits)); So, the following two statements do the same thing: $sha->add_bits("111100001010"); $sha->add_bits("\xF0\xA0", 12); Note that SHA-1 and SHA-2 use I for their internal state. This means that $sha3->add_bits("110"); is equivalent to $sha3->add_bits("1")->add_bits("1")->add_bits("0"); =item B Reads from I until EOF, and appends that data to the current state. The return value is the updated object itself. =item B Reads the contents of I<$filename>, and appends that data to the current state. The return value is the updated object itself. By default, I<$filename> is simply opened and read; no special modes or I/O disciplines are used. To change this, set the optional I<$mode> argument to one of the following values: "b" read file in binary mode "U" use universal newlines "0" use BITS mode The "U" mode is modeled on Python's "Universal Newlines" concept, whereby DOS and Mac OS line terminators are converted internally to UNIX newlines before processing. This ensures consistent digest values when working simultaneously across multiple file systems. B, namely those passing Perl's I<-T> test; binary files are processed with no translation whatsoever. The BITS mode ("0") interprets the contents of I<$filename> as a logical stream of bits, where each ASCII '0' or '1' character represents a 0 or 1 bit, respectively. All other characters are ignored. This provides a convenient way to calculate the digest values of partial-byte data by using files, rather than having to write separate programs employing the I method. =item B Returns a string containing a portable, human-readable representation of the current SHA state. =item B Returns a Digest::SHA object representing the SHA state contained in I<$str>. The format of I<$str> matches the format of the output produced by method I. If called as a class method, a new object is created; if called as an instance method, the object is reset to the state contained in I<$str>. =item B Writes the output of I to I<$filename>. If the argument is missing, or equal to the empty string, the state information will be written to STDOUT. =item B Returns a Digest::SHA object that results from calling I on the contents of I<$filename>. If the argument is missing, or equal to the empty string, the state information will be read from STDIN. =item B Returns the digest encoded as a binary string. Note that the I method is a read-once operation. Once it has been performed, the Digest::SHA object is automatically reset in preparation for calculating another digest value. Call I<$sha-Eclone-Edigest> if it's necessary to preserve the original digest state. =item B Returns the digest encoded as a hexadecimal string. Like I, this method is a read-once operation. Call I<$sha-Eclone-Ehexdigest> if it's necessary to preserve the original digest state. =item B Returns the digest encoded as a Base64 string. Like I, this method is a read-once operation. Call I<$sha-Eclone-Eb64digest> if it's necessary to preserve the original digest state. It's important to note that the resulting string does B contain the padding characters typical of Base64 encodings. This omission is deliberate, and is done to maintain compatibility with the family of CPAN Digest modules. See L for details. =back I =over 4 =item B =item B =item B =item B =item B =item B =item B Returns the HMAC-SHA-1/224/256/384/512 digest of I<$data>/I<$key>, with the result encoded as a binary string. Multiple I<$data> arguments are allowed, provided that I<$key> is the last argument in the list. =item B =item B =item B =item B =item B =item B =item B Returns the HMAC-SHA-1/224/256/384/512 digest of I<$data>/I<$key>, with the result encoded as a hexadecimal string. Multiple I<$data> arguments are allowed, provided that I<$key> is the last argument in the list. =item B =item B =item B =item B =item B =item B =item B Returns the HMAC-SHA-1/224/256/384/512 digest of I<$data>/I<$key>, with the result encoded as a Base64 string. Multiple I<$data> arguments are allowed, provided that I<$key> is the last argument in the list. It's important to note that the resulting string does B contain the padding characters typical of Base64 encodings. This omission is deliberate, and is done to maintain compatibility with the family of CPAN Digest modules. See L for details. =back =head1 SEE ALSO L, L The Secure Hash Standard (Draft FIPS PUB 180-4) can be found at: L The Keyed-Hash Message Authentication Code (HMAC): L =head1 AUTHOR Mark Shelor =head1 ACKNOWLEDGMENTS The author is particularly grateful to Gisle Aas H. Merijn Brand Sean Burke Chris Carey Alexandr Ciornii Chris David Jim Doble Thomas Drugeon Julius Duque Jeffrey Friedl Robert Gilmour Brian Gladman Jarkko Hietaniemi Adam Kennedy Mark Lawrence Andy Lester Alex Muntada Steve Peters Chris Skiscim Martin Thurn Gunnar Wolf Adam Woodbury "who by trained skill rescued life from such great billows and such thick darkness and moored it in so perfect a calm and in so brilliant a light" - Lucretius =head1 COPYRIGHT AND LICENSE Copyright (C) 2003-2022 Mark Shelor This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. L =cut FILE9f170389/DynaLoader.pme # Generated from DynaLoader_pm.PL, this file is unique for every OS use strict; package DynaLoader; # And Gandalf said: 'Many folk like to know beforehand what is to # be set on the table; but those who have laboured to prepare the # feast like to keep their secret; for wonder makes the words of # praise louder.' # (Quote from Tolkien suggested by Anno Siegel.) # # See pod text at end of file for documentation. # See also ext/DynaLoader/README in source tree for other information. # # Tim.Bunce@ig.co.uk, August 1994 BEGIN { our $VERSION = '1.57'; } # Note: in almost any other piece of code "our" would have been a better # option than "use vars", but DynaLoader's bootstrap files need the # side effect of the variable being declared in any scope whose current # package is DynaLoader, not just the current lexical one. use vars qw(@dl_library_path @dl_resolve_using @dl_require_symbols $dl_debug @dl_librefs @dl_modules @dl_shared_objects $dl_dlext $dl_so $dlsrc @args $module @dirs $file $bscode); use Config; # enable debug/trace messages from DynaLoader perl code $dl_debug = $ENV{PERL_DL_DEBUG} || 0 unless defined $dl_debug; # # Flags to alter dl_load_file behaviour. Assigned bits: # 0x01 make symbols available for linking later dl_load_file's. # (only known to work on Solaris 2 using dlopen(RTLD_GLOBAL)) # (ignored under VMS; effect is built-in to image linking) # (ignored under Android; the linker always uses RTLD_LOCAL) # # This is called as a class method $module->dl_load_flags. The # definition here will be inherited and result on "default" loading # behaviour unless a sub-class of DynaLoader defines its own version. # sub dl_load_flags { 0x00 } ($dl_dlext, $dl_so, $dlsrc) = @Config::Config{qw(dlext so dlsrc)}; # Some systems need special handling to expand file specifications # (VMS support by Charles Bailey ) # See dl_expandspec() for more details. Should be harmless but # inefficient to define on systems that don't need it. use vars qw($do_expand); $do_expand = 0; @dl_require_symbols = (); # names of symbols we need @dl_library_path = (); # path to look for files #XSLoader.pm may have added elements before we were required #@dl_shared_objects = (); # shared objects for symbols we have #@dl_librefs = (); # things we have loaded #@dl_modules = (); # Modules we have loaded # Initialise @dl_library_path with the 'standard' library path # for this platform as determined by Configure. push(@dl_library_path, split(' ', $Config::Config{libpth})); my $ldlibpthname = $Config::Config{ldlibpthname}; my $ldlibpthname_defined = defined $Config::Config{ldlibpthname}; my $pthsep = $Config::Config{path_sep}; # Add to @dl_library_path any extra directories we can gather from environment # during runtime. if ($ldlibpthname_defined && exists $ENV{$ldlibpthname}) { push(@dl_library_path, split(/$pthsep/, $ENV{$ldlibpthname})); } # E.g. HP-UX supports both its native SHLIB_PATH *and* LD_LIBRARY_PATH. if ($ldlibpthname_defined && $ldlibpthname ne 'LD_LIBRARY_PATH' && exists $ENV{LD_LIBRARY_PATH}) { push(@dl_library_path, split(/$pthsep/, $ENV{LD_LIBRARY_PATH})); } # No prizes for guessing why we don't say 'bootstrap DynaLoader;' here. # NOTE: All dl_*.xs (including dl_none.xs) define a dl_error() XSUB boot_DynaLoader('DynaLoader') if defined(&boot_DynaLoader) && !defined(&dl_error); if ($dl_debug) { print STDERR "DynaLoader.pm loaded (@INC, @dl_library_path)\n"; print STDERR "DynaLoader not linked into this perl\n" unless defined(&boot_DynaLoader); } 1; # End of main code sub croak { require Carp; Carp::croak(@_) } sub bootstrap_inherit { my $module = $_[0]; no strict qw/refs vars/; local *isa = *{"$module\::ISA"}; local @isa = (@isa, 'DynaLoader'); # Cannot goto due to delocalization. Will report errors on a wrong line? bootstrap(@_); } sub bootstrap { # use local vars to enable $module.bs script to edit values local(@args) = @_; local($module) = $args[0]; local(@dirs, $file); unless ($module) { require Carp; Carp::confess("Usage: DynaLoader::bootstrap(module)"); } # A common error on platforms which don't support dynamic loading. # Since it's fatal and potentially confusing we give a detailed message. croak("Can't load module $module, dynamic loading not available in this perl.\n". " (You may need to build a new perl executable which either supports\n". " dynamic loading or has the $module module statically linked into it.)\n") unless defined(&dl_load_file); my @modparts = split(/::/,$module); my $modfname = $modparts[-1]; my $modfname_orig = $modfname; # For .bs file search # Some systems have restrictions on files names for DLL's etc. # mod2fname returns appropriate file base name (typically truncated) # It may also edit @modparts if required. $modfname = &mod2fname(\@modparts) if defined &mod2fname; my $modpname = join('/',@modparts); print STDERR "DynaLoader::bootstrap for $module ", "(auto/$modpname/$modfname.$dl_dlext)\n" if $dl_debug; my $dir; foreach (@INC) { $dir = "$_/auto/$modpname"; next unless -d $dir; # skip over uninteresting directories # check for common cases to avoid autoload of dl_findfile my $try = "$dir/$modfname.$dl_dlext"; last if $file = ($do_expand) ? dl_expandspec($try) : ((-f $try) && $try); # no luck here, save dir for possible later dl_findfile search push @dirs, $dir; } # last resort, let dl_findfile have a go in all known locations $file = dl_findfile(map("-L$_",@dirs,@INC), $modfname) unless $file; croak("Can't locate loadable object for module $module in \@INC (\@INC contains: @INC)") unless $file; # wording similar to error from 'require' my $bootname = "boot_$module"; $bootname =~ s/\W/_/g; @dl_require_symbols = ($bootname); # Execute optional '.bootstrap' perl script for this module. # The .bs file can be used to configure @dl_resolve_using etc to # match the needs of the individual module on this architecture. # N.B. The .bs file does not following the naming convention used # by mod2fname. my $bs = "$dir/$modfname_orig"; $bs =~ s/(\.\w+)?(;\d*)?$/\.bs/; # look for .bs 'beside' the library if (-s $bs) { # only read file if it's not empty print STDERR "BS: $bs ($^O, $dlsrc)\n" if $dl_debug; eval { local @INC = ('.'); do $bs; }; warn "$bs: $@\n" if $@; } my $boot_symbol_ref; # Many dynamic extension loading problems will appear to come from # this section of code: XYZ failed at line 123 of DynaLoader.pm. # Often these errors are actually occurring in the initialisation # C code of the extension XS file. Perl reports the error as being # in this perl code simply because this was the last perl code # it executed. my $flags = $module->dl_load_flags; my $libref = dl_load_file($file, $flags) or croak("Can't load '$file' for module $module: ".dl_error()); push(@dl_librefs,$libref); # record loaded object $boot_symbol_ref = dl_find_symbol($libref, $bootname) or croak("Can't find '$bootname' symbol in $file\n"); push(@dl_modules, $module); # record loaded module boot: my $xs = dl_install_xsub("${module}::bootstrap", $boot_symbol_ref, $file); # See comment block above push(@dl_shared_objects, $file); # record files loaded &$xs(@args); } sub dl_findfile { # This function does not automatically consider the architecture # or the perl library auto directories. my (@args) = @_; my (@dirs, $dir); # which directories to search my (@found); # full paths to real files we have found #my $dl_ext= 'so'; # $Config::Config{'dlext'} suffix for perl extensions #my $dl_so = 'so'; # $Config::Config{'so'} suffix for shared libraries print STDERR "dl_findfile(@args)\n" if $dl_debug; # accumulate directories but process files as they appear arg: foreach(@args) { # Special fast case: full filepath requires no search if (m:/: && -f $_) { push(@found,$_); last arg unless wantarray; next; } # Deal with directories first: # Using a -L prefix is the preferred option (faster and more robust) if ( s{^-L}{} ) { push(@dirs, $_); next; } # Otherwise we try to try to spot directories by a heuristic # (this is a more complicated issue than it first appears) if (m:/: && -d $_) { push(@dirs, $_); next; } # Only files should get this far... my(@names, $name); # what filenames to look for if ( s{^-l}{} ) { # convert -lname to appropriate library name push(@names, "lib$_.$dl_so", "lib$_.a"); } else { # Umm, a bare name. Try various alternatives: # these should be ordered with the most likely first push(@names,"$_.$dl_dlext") unless m/\.$dl_dlext$/o; push(@names,"$_.$dl_so") unless m/\.$dl_so$/o; push(@names,"lib$_.$dl_so") unless m:/:; push(@names, $_); } my $dirsep = '/'; foreach $dir (@dirs, @dl_library_path) { next unless -d $dir; foreach $name (@names) { my($file) = "$dir$dirsep$name"; print STDERR " checking in $dir for $name\n" if $dl_debug; if ($do_expand && ($file = dl_expandspec($file))) { push @found, $file; next arg; # no need to look any further } elsif (-f $file) { push(@found, $file); next arg; # no need to look any further } } } } if ($dl_debug) { foreach(@dirs) { print STDERR " dl_findfile ignored non-existent directory: $_\n" unless -d $_; } print STDERR "dl_findfile found: @found\n"; } return $found[0] unless wantarray; @found; } sub dl_expandspec { my($spec) = @_; # Optional function invoked if DynaLoader.pm sets $do_expand. # Most systems do not require or use this function. # Some systems may implement it in the dl_*.xs file in which case # this Perl version should be excluded at build time. # This function is designed to deal with systems which treat some # 'filenames' in a special way. For example VMS 'Logical Names' # (something like unix environment variables - but different). # This function should recognise such names and expand them into # full file paths. # Must return undef if $spec is invalid or file does not exist. my $file = $spec; # default output to input return undef unless -f $file; print STDERR "dl_expandspec($spec) => $file\n" if $dl_debug; $file; } sub dl_find_symbol_anywhere { my $sym = shift; my $libref; foreach $libref (@dl_librefs) { my $symref = dl_find_symbol($libref,$sym,1); return $symref if $symref; } return undef; } __END__ =head1 NAME DynaLoader - Dynamically load C libraries into Perl code =head1 SYNOPSIS package YourPackage; require DynaLoader; @ISA = qw(... DynaLoader ...); __PACKAGE__->bootstrap; # optional method for 'global' loading sub dl_load_flags { 0x01 } =head1 DESCRIPTION This document defines a standard generic interface to the dynamic linking mechanisms available on many platforms. Its primary purpose is to implement automatic dynamic loading of Perl modules. This document serves as both a specification for anyone wishing to implement the DynaLoader for a new platform and as a guide for anyone wishing to use the DynaLoader directly in an application. The DynaLoader is designed to be a very simple high-level interface that is sufficiently general to cover the requirements of SunOS, HP-UX, Linux, VMS and other platforms. It is also hoped that the interface will cover the needs of OS/2, NT etc and also allow pseudo-dynamic linking (using C at runtime). It must be stressed that the DynaLoader, by itself, is practically useless for accessing non-Perl libraries because it provides almost no Perl-to-C 'glue'. There is, for example, no mechanism for calling a C library function or supplying arguments. A C::DynaLib module is available from CPAN sites which performs that function for some common system types. And since the year 2000, there's also Inline::C, a module that allows you to write Perl subroutines in C. Also available from your local CPAN site. DynaLoader Interface Summary @dl_library_path @dl_resolve_using @dl_require_symbols $dl_debug $dl_dlext @dl_librefs @dl_modules @dl_shared_objects Implemented in: bootstrap($modulename) Perl @filepaths = dl_findfile(@names) Perl $flags = $modulename->dl_load_flags Perl $symref = dl_find_symbol_anywhere($symbol) Perl $libref = dl_load_file($filename, $flags) C $status = dl_unload_file($libref) C $symref = dl_find_symbol($libref, $symbol) C @symbols = dl_undef_symbols() C dl_install_xsub($name, $symref [, $filename]) C $message = dl_error C =over 4 =item @dl_library_path The standard/default list of directories in which dl_findfile() will search for libraries etc. Directories are searched in order: $dl_library_path[0], [1], ... etc @dl_library_path is initialised to hold the list of 'normal' directories (F, etc) determined by B (C<$Config{'libpth'}>). This should ensure portability across a wide range of platforms. @dl_library_path should also be initialised with any other directories that can be determined from the environment at runtime (such as LD_LIBRARY_PATH for SunOS). After initialisation @dl_library_path can be manipulated by an application using push and unshift before calling dl_findfile(). Unshift can be used to add directories to the front of the search order either to save search time or to override libraries with the same name in the 'normal' directories. The load function that dl_load_file() calls may require an absolute pathname. The dl_findfile() function and @dl_library_path can be used to search for and return the absolute pathname for the library/object that you wish to load. =item @dl_resolve_using A list of additional libraries or other shared objects which can be used to resolve any undefined symbols that might be generated by a later call to load_file(). This is only required on some platforms which do not handle dependent libraries automatically. For example the Socket Perl extension library (F) contains references to many socket functions which need to be resolved when it's loaded. Most platforms will automatically know where to find the 'dependent' library (e.g., F). A few platforms need to be told the location of the dependent library explicitly. Use @dl_resolve_using for this. Example usage: @dl_resolve_using = dl_findfile('-lsocket'); =item @dl_require_symbols A list of one or more symbol names that are in the library/object file to be dynamically loaded. This is only required on some platforms. =item @dl_librefs An array of the handles returned by successful calls to dl_load_file(), made by bootstrap, in the order in which they were loaded. Can be used with dl_find_symbol() to look for a symbol in any of the loaded files. =item @dl_modules An array of module (package) names that have been bootstrap'ed. =item @dl_shared_objects An array of file names for the shared objects that were loaded. =item dl_error() Syntax: $message = dl_error(); Error message text from the last failed DynaLoader function. Note that, similar to errno in unix, a successful function call does not reset this message. Implementations should detect the error as soon as it occurs in any of the other functions and save the corresponding message for later retrieval. This will avoid problems on some platforms (such as SunOS) where the error message is very temporary (e.g., dlerror()). =item $dl_debug Internal debugging messages are enabled when $dl_debug is set true. Currently setting $dl_debug only affects the Perl side of the DynaLoader. These messages should help an application developer to resolve any DynaLoader usage problems. $dl_debug is set to C<$ENV{'PERL_DL_DEBUG'}> if defined. For the DynaLoader developer/porter there is a similar debugging variable added to the C code (see dlutils.c) and enabled if Perl was built with the B<-DDEBUGGING> flag. This can also be set via the PERL_DL_DEBUG environment variable. Set to 1 for minimal information or higher for more. =item $dl_dlext When specified (localised) in a module's F<.pm> file, indicates the extension which the module's loadable object will have. For example: local $DynaLoader::dl_dlext = 'unusual_ext'; would indicate that the module's loadable object has an extension of C instead of the more usual C<$Config{dlext}>. NOTE: This also requires that the module's F specify (in C): DLEXT => 'unusual_ext', =item dl_findfile() Syntax: @filepaths = dl_findfile(@names) Determine the full paths (including file suffix) of one or more loadable files given their generic names and optionally one or more directories. Searches directories in @dl_library_path by default and returns an empty list if no files were found. Names can be specified in a variety of platform independent forms. Any names in the form B<-lname> are converted into F, where F<.*> is an appropriate suffix for the platform. If a name does not already have a suitable prefix and/or suffix then the corresponding file will be searched for by trying combinations of prefix and suffix appropriate to the platform: "$name.o", "lib$name.*" and "$name". If any directories are included in @names they are searched before @dl_library_path. Directories may be specified as B<-Ldir>. Any other names are treated as filenames to be searched for. Using arguments of the form C<-Ldir> and C<-lname> is recommended. Example: @dl_resolve_using = dl_findfile(qw(-L/usr/5lib -lposix)); =item dl_expandspec() Syntax: $filepath = dl_expandspec($spec) Some unusual systems, such as VMS, require special filename handling in order to deal with symbolic names for files (i.e., VMS's Logical Names). To support these systems a dl_expandspec() function can be implemented either in the F file or code can be added to the dl_expandspec() function in F. See F for more information. =item dl_load_file() Syntax: $libref = dl_load_file($filename, $flags) Dynamically load $filename, which must be the path to a shared object or library. An opaque 'library reference' is returned as a handle for the loaded object. Returns undef on error. The $flags argument to alters dl_load_file behaviour. Assigned bits: 0x01 make symbols available for linking later dl_load_file's. (only known to work on Solaris 2 using dlopen(RTLD_GLOBAL)) (ignored under VMS; this is a normal part of image linking) (On systems that provide a handle for the loaded object such as SunOS and HPUX, $libref will be that handle. On other systems $libref will typically be $filename or a pointer to a buffer containing $filename. The application should not examine or alter $libref in any way.) This is the function that does the real work. It should use the current values of @dl_require_symbols and @dl_resolve_using if required. SunOS: dlopen($filename) HP-UX: shl_load($filename) Linux: dld_create_reference(@dl_require_symbols); dld_link($filename) VMS: lib$find_image_symbol($filename,$dl_require_symbols[0]) (The dlopen() function is also used by Solaris and some versions of Linux, and is a common choice when providing a "wrapper" on other mechanisms as is done in the OS/2 port.) =item dl_unload_file() Syntax: $status = dl_unload_file($libref) Dynamically unload $libref, which must be an opaque 'library reference' as returned from dl_load_file. Returns one on success and zero on failure. This function is optional and may not necessarily be provided on all platforms. If it is defined and perl is compiled with the C macro C defined, then it is called automatically when the interpreter exits for every shared object or library loaded by DynaLoader::bootstrap. All such library references are stored in @dl_librefs by DynaLoader::Bootstrap as it loads the libraries. The files are unloaded in last-in, first-out order. This unloading is usually necessary when embedding a shared-object perl (e.g. one configured with -Duseshrplib) within a larger application, and the perl interpreter is created and destroyed several times within the lifetime of the application. In this case it is possible that the system dynamic linker will unload and then subsequently reload the shared libperl without relocating any references to it from any files DynaLoaded by the previous incarnation of the interpreter. As a result, any shared objects opened by DynaLoader may point to a now invalid 'ghost' of the libperl shared object, causing apparently random memory corruption and crashes. This behaviour is most commonly seen when using Apache and mod_perl built with the APXS mechanism. SunOS: dlclose($libref) HP-UX: ??? Linux: ??? VMS: ??? (The dlclose() function is also used by Solaris and some versions of Linux, and is a common choice when providing a "wrapper" on other mechanisms as is done in the OS/2 port.) =item dl_load_flags() Syntax: $flags = dl_load_flags $modulename; Designed to be a method call, and to be overridden by a derived class (i.e. a class which has DynaLoader in its @ISA). The definition in DynaLoader itself returns 0, which produces standard behavior from dl_load_file(). =item dl_find_symbol() Syntax: $symref = dl_find_symbol($libref, $symbol) Return the address of the symbol $symbol or C if not found. If the target system has separate functions to search for symbols of different types then dl_find_symbol() should search for function symbols first and then other types. The exact manner in which the address is returned in $symref is not currently defined. The only initial requirement is that $symref can be passed to, and understood by, dl_install_xsub(). SunOS: dlsym($libref, $symbol) HP-UX: shl_findsym($libref, $symbol) Linux: dld_get_func($symbol) and/or dld_get_symbol($symbol) VMS: lib$find_image_symbol($libref,$symbol) =item dl_find_symbol_anywhere() Syntax: $symref = dl_find_symbol_anywhere($symbol) Applies dl_find_symbol() to the members of @dl_librefs and returns the first match found. =item dl_undef_symbols() Example @symbols = dl_undef_symbols() Return a list of symbol names which remain undefined after load_file(). Returns C<()> if not known. Don't worry if your platform does not provide a mechanism for this. Most do not need it and hence do not provide it, they just return an empty list. =item dl_install_xsub() Syntax: dl_install_xsub($perl_name, $symref [, $filename]) Create a new Perl external subroutine named $perl_name using $symref as a pointer to the function which implements the routine. This is simply a direct call to newXS()/newXS_flags(). Returns a reference to the installed function. The $filename parameter is used by Perl to identify the source file for the function if required by die(), caller() or the debugger. If $filename is not defined then "DynaLoader" will be used. =item bootstrap() Syntax: bootstrap($module [...]) This is the normal entry point for automatic dynamic loading in Perl. It performs the following actions: =over 8 =item * locates an auto/$module directory by searching @INC =item * uses dl_findfile() to determine the filename to load =item * sets @dl_require_symbols to C<("boot_$module")> =item * executes an F file if it exists (typically used to add to @dl_resolve_using any files which are required to load the module on the current platform) =item * calls dl_load_flags() to determine how to load the file. =item * calls dl_load_file() to load the file =item * calls dl_undef_symbols() and warns if any symbols are undefined =item * calls dl_find_symbol() for "boot_$module" =item * calls dl_install_xsub() to install it as "${module}::bootstrap" =item * calls &{"${module}::bootstrap"} to bootstrap the module (actually it uses the function reference returned by dl_install_xsub for speed) =back All arguments to bootstrap() are passed to the module's bootstrap function. The default code generated by F expects $module [, $version] If the optional $version argument is not given, it defaults to C<$XS_VERSION // $VERSION> in the module's symbol table. The default code compares the Perl-space version with the version of the compiled XS code, and croaks with an error if they do not match. =back =head1 AUTHOR Tim Bunce, 11 August 1994. This interface is based on the work and comments of (in no particular order): Larry Wall, Robert Sanders, Dean Roehrich, Jeff Okamoto, Anno Siegel, Thomas Neumann, Paul Marquess, Charles Bailey, myself and others. Larry Wall designed the elegant inherited bootstrap mechanism and implemented the first Perl 5 dynamic loader using it. Solaris global loading added by Nick Ing-Simmons with design/coding assistance from Tim Bunce, January 1996. =cut FILEb96d29f9/Encode.pm}# # $Id: Encode.pm,v 3.21 2024/02/25 22:17:32 dankogai Exp $ # package Encode; use strict; use warnings; use constant DEBUG => !!$ENV{PERL_ENCODE_DEBUG}; our $VERSION; BEGIN { $VERSION = sprintf "%d.%02d", q$Revision: 3.21 $ =~ /(\d+)/g; require XSLoader; XSLoader::load( __PACKAGE__, $VERSION ); } use Exporter 5.57 'import'; use Carp (); our @CARP_NOT = qw(Encode::Encoder); # Public, encouraged API is exported by default our @EXPORT = qw( decode decode_utf8 encode encode_utf8 str2bytes bytes2str encodings find_encoding find_mime_encoding clone_encoding ); our @FB_FLAGS = qw( DIE_ON_ERR WARN_ON_ERR RETURN_ON_ERR LEAVE_SRC PERLQQ HTMLCREF XMLCREF STOP_AT_PARTIAL ); our @FB_CONSTS = qw( FB_DEFAULT FB_CROAK FB_QUIET FB_WARN FB_PERLQQ FB_HTMLCREF FB_XMLCREF ); our @EXPORT_OK = ( qw( _utf8_off _utf8_on define_encoding from_to is_16bit is_8bit is_utf8 perlio_ok resolve_alias utf8_downgrade utf8_upgrade ), @FB_FLAGS, @FB_CONSTS, ); our %EXPORT_TAGS = ( all => [ @EXPORT, @EXPORT_OK ], default => [ @EXPORT ], fallbacks => [ @FB_CONSTS ], fallback_all => [ @FB_CONSTS, @FB_FLAGS ], ); # Documentation moved after __END__ for speed - NI-S our $ON_EBCDIC = ( ord("A") == 193 ); use Encode::Alias (); use Encode::MIME::Name; use Storable; # Make a %Encoding package variable to allow a certain amount of cheating our %Encoding; our %ExtModule; require Encode::Config; # See # https://bugzilla.redhat.com/show_bug.cgi?id=435505#c2 # to find why sig handlers inside eval{} are disabled. eval { local $SIG{__DIE__}; local $SIG{__WARN__}; local @INC = @INC; pop @INC if @INC && $INC[-1] eq '.'; require Encode::ConfigLocal; }; sub encodings { my %enc; my $arg = $_[1] || ''; if ( $arg eq ":all" ) { %enc = ( %Encoding, %ExtModule ); } else { %enc = %Encoding; for my $mod ( map { m/::/ ? $_ : "Encode::$_" } @_ ) { DEBUG and warn $mod; for my $enc ( keys %ExtModule ) { $ExtModule{$enc} eq $mod and $enc{$enc} = $mod; } } } return sort { lc $a cmp lc $b } grep { !/^(?:Internal|Unicode|Guess)$/o } keys %enc; } sub perlio_ok { my $obj = ref( $_[0] ) ? $_[0] : find_encoding( $_[0] ); $obj->can("perlio_ok") and return $obj->perlio_ok(); return 0; # safety net } sub define_encoding { my $obj = shift; my $name = shift; $Encoding{$name} = $obj; my $lc = lc($name); define_alias( $lc => $obj ) unless $lc eq $name; while (@_) { my $alias = shift; define_alias( $alias, $obj ); } my $class = ref($obj); push @Encode::CARP_NOT, $class unless grep { $_ eq $class } @Encode::CARP_NOT; push @Encode::Encoding::CARP_NOT, $class unless grep { $_ eq $class } @Encode::Encoding::CARP_NOT; return $obj; } sub getEncoding { my ( $class, $name, $skip_external ) = @_; defined($name) or return; $name =~ s/\s+//g; # https://rt.cpan.org/Ticket/Display.html?id=65796 ref($name) && $name->can('renew') and return $name; exists $Encoding{$name} and return $Encoding{$name}; my $lc = lc $name; exists $Encoding{$lc} and return $Encoding{$lc}; my $oc = $class->find_alias($name); defined($oc) and return $oc; $lc ne $name and $oc = $class->find_alias($lc); defined($oc) and return $oc; unless ($skip_external) { if ( my $mod = $ExtModule{$name} || $ExtModule{$lc} ) { $mod =~ s,::,/,g; $mod .= '.pm'; eval { require $mod; }; exists $Encoding{$name} and return $Encoding{$name}; } } return; } # HACK: These two functions must be defined in Encode and because of # cyclic dependency between Encode and Encode::Alias, Exporter does not work sub find_alias { goto &Encode::Alias::find_alias; } sub define_alias { goto &Encode::Alias::define_alias; } sub find_encoding($;$) { my ( $name, $skip_external ) = @_; return __PACKAGE__->getEncoding( $name, $skip_external ); } sub find_mime_encoding($;$) { my ( $mime_name, $skip_external ) = @_; my $name = Encode::MIME::Name::get_encode_name( $mime_name ); return find_encoding( $name, $skip_external ); } sub resolve_alias($) { my $obj = find_encoding(shift); defined $obj and return $obj->name; return; } sub clone_encoding($) { my $obj = find_encoding(shift); ref $obj or return; return Storable::dclone($obj); } onBOOT; if ($ON_EBCDIC) { package Encode::UTF_EBCDIC; use parent 'Encode::Encoding'; my $obj = bless { Name => "UTF_EBCDIC" } => "Encode::UTF_EBCDIC"; Encode::define_encoding($obj, 'Unicode'); sub decode { my ( undef, $str, $chk ) = @_; my $res = ''; for ( my $i = 0 ; $i < length($str) ; $i++ ) { $res .= chr( utf8::unicode_to_native( ord( substr( $str, $i, 1 ) ) ) ); } $_[1] = '' if $chk; return $res; } sub encode { my ( undef, $str, $chk ) = @_; my $res = ''; for ( my $i = 0 ; $i < length($str) ; $i++ ) { $res .= chr( utf8::native_to_unicode( ord( substr( $str, $i, 1 ) ) ) ); } $_[1] = '' if $chk; return $res; } } { # https://rt.cpan.org/Public/Bug/Display.html?id=103253 package Encode::XS; use parent 'Encode::Encoding'; } { package Encode::utf8; use parent 'Encode::Encoding'; my %obj = ( 'utf8' => { Name => 'utf8' }, 'utf-8-strict' => { Name => 'utf-8-strict', strict_utf8 => 1 } ); for ( keys %obj ) { bless $obj{$_} => __PACKAGE__; Encode::define_encoding( $obj{$_} => $_ ); } sub cat_decode { # ($obj, $dst, $src, $pos, $trm, $chk) # currently ignores $chk my ( undef, undef, undef, $pos, $trm ) = @_; my ( $rdst, $rsrc, $rpos ) = \@_[ 1, 2, 3 ]; use bytes; if ( ( my $npos = index( $$rsrc, $trm, $pos ) ) >= 0 ) { $$rdst .= substr( $$rsrc, $pos, $npos - $pos + length($trm) ); $$rpos = $npos + length($trm); return 1; } $$rdst .= substr( $$rsrc, $pos ); $$rpos = length($$rsrc); return ''; } } 1; __END__ =head1 NAME Encode - character encodings in Perl =head1 SYNOPSIS use Encode qw(decode encode); $characters = decode('UTF-8', $octets, Encode::FB_CROAK); $octets = encode('UTF-8', $characters, Encode::FB_CROAK); =head2 Table of Contents Encode consists of a collection of modules whose details are too extensive to fit in one document. This one itself explains the top-level APIs and general topics at a glance. For other topics and more details, see the documentation for these modules: =over 2 =item L - Alias definitions to encodings =item L - Encode Implementation Base Class =item L - List of Supported Encodings =item L - Simplified Chinese Encodings =item L - Japanese Encodings =item L - Korean Encodings =item L - Traditional Chinese Encodings =back =head1 DESCRIPTION The C module provides the interface between Perl strings and the rest of the system. Perl strings are sequences of I. The repertoire of characters that Perl can represent is a superset of those defined by the Unicode Consortium. On most platforms the ordinal values of a character as returned by C)> is the I for that character. The exceptions are platforms where the legacy encoding is some variant of EBCDIC rather than a superset of ASCII; see L. During recent history, data is moved around a computer in 8-bit chunks, often called "bytes" but also known as "octets" in standards documents. Perl is widely used to manipulate data of many types: not only strings of characters representing human or computer languages, but also "binary" data, being the machine's representation of numbers, pixels in an image, or just about anything. When Perl is processing "binary data", the programmer wants Perl to process "sequences of bytes". This is not a problem for Perl: because a byte has 256 possible values, it easily fits in Perl's much larger "logical character". This document mostly explains the I. L and L explain the I. =head2 TERMINOLOGY =head3 character A character in the range 0 .. 2**32-1 (or more); what Perl's strings are made of. =head3 byte A character in the range 0..255; a special case of a Perl character. =head3 octet 8 bits of data, with ordinal values 0..255; term for bytes passed to or from a non-Perl context, such as a disk file, standard I/O stream, database, command-line argument, environment variable, socket etc. =head1 THE PERL ENCODING API =head2 Basic methods =head3 encode $octets = encode(ENCODING, STRING[, CHECK]) Encodes the scalar value I from Perl's internal form into I and returns a sequence of octets. I can be either a canonical name or an alias. For encoding names and aliases, see L. For CHECK, see L. B: the input scalar I might be modified in-place depending on what is set in CHECK. See L if you want your inputs to be left unchanged. For example, to convert a string from Perl's internal format into ISO-8859-1, also known as Latin1: $octets = encode("iso-8859-1", $string); B: When you run C<$octets = encode("UTF-8", $string)>, then $octets I $string. Though both contain the same data, the UTF8 flag for $octets is I off. When you encode anything, the UTF8 flag on the result is always off, even when it contains a completely valid UTF-8 string. See L below. If the $string is C, then C is returned. C may be used as an alias for C. =head3 decode $string = decode(ENCODING, OCTETS[, CHECK]) This function returns the string that results from decoding the scalar value I, assumed to be a sequence of octets in I, into Perl's internal form. As with encode(), I can be either a canonical name or an alias. For encoding names and aliases, see L; for I, see L. B: the input scalar I might be modified in-place depending on what is set in CHECK. See L if you want your inputs to be left unchanged. For example, to convert ISO-8859-1 data into a string in Perl's internal format: $string = decode("iso-8859-1", $octets); B: When you run C<$string = decode("UTF-8", $octets)>, then $string I $octets. Though both contain the same data, the UTF8 flag for $string is on. See L below. If the $string is C, then C is returned. C may be used as an alias for C. =head3 find_encoding [$obj =] find_encoding(ENCODING) Returns the I corresponding to I. Returns C if no matching I is find. The returned object is what does the actual encoding or decoding. $string = decode($name, $bytes); is in fact $string = do { $obj = find_encoding($name); croak qq(encoding "$name" not found) unless ref $obj; $obj->decode($bytes); }; with more error checking. You can therefore save time by reusing this object as follows; my $enc = find_encoding("iso-8859-1"); while(<>) { my $string = $enc->decode($_); ... # now do something with $string; } Besides L and L, other methods are available as well. For instance, C returns the canonical name of the encoding object. find_encoding("latin1")->name; # iso-8859-1 See L for details. =head3 find_mime_encoding [$obj =] find_mime_encoding(MIME_ENCODING) Returns the I corresponding to I. Acts same as C but C of returned object must match to I. So as opposite of C canonical names and aliases are not used when searching for object. find_mime_encoding("utf8"); # returns undef because "utf8" is not a valid MIME_ENCODING find_mime_encoding("utf-8"); # returns encode object "utf-8-strict" find_mime_encoding("UTF-8"); # same as "utf-8" because MIME_ENCODING is case insensitive find_mime_encoding("utf-8-strict"); returns undef because "utf-8-strict" is not a valid MIME_ENCODING =head3 from_to [$length =] from_to($octets, FROM_ENC, TO_ENC [, CHECK]) Converts I data between two encodings. The data in $octets must be encoded as octets and I as characters in Perl's internal format. For example, to convert ISO-8859-1 data into Microsoft's CP1250 encoding: from_to($octets, "iso-8859-1", "cp1250"); and to convert it back: from_to($octets, "cp1250", "iso-8859-1"); Because the conversion happens in place, the data to be converted cannot be a string constant: it must be a scalar variable. C returns the length of the converted string in octets on success, and C on error. B: The following operations may look the same, but are not: from_to($data, "iso-8859-1", "UTF-8"); #1 $data = decode("iso-8859-1", $data); #2 Both #1 and #2 make $data consist of a completely valid UTF-8 string, but only #2 turns the UTF8 flag on. #1 is equivalent to: $data = encode("UTF-8", decode("iso-8859-1", $data)); See L below. Also note that: from_to($octets, $from, $to, $check); is equivalent to: $octets = encode($to, decode($from, $octets), $check); Yes, it does I respect the $check during decoding. It is deliberately done that way. If you need minute control, use C followed by C as follows: $octets = encode($to, decode($from, $octets, $check_from), $check_to); =head3 encode_utf8 $octets = encode_utf8($string); B: L Do not use it for data exchange. Unless you want Perl's older "lax" mode, prefer C<$octets = encode("UTF-8", $string)>. Equivalent to C<$octets = encode("utf8", $string)>. The characters in $string are encoded in Perl's internal format, and the result is returned as a sequence of octets. Because all possible characters in Perl have a (loose, not strict) utf8 representation, this function cannot fail. =head3 decode_utf8 $string = decode_utf8($octets [, CHECK]); B: L Do not use it for data exchange. Unless you want Perl's older "lax" mode, prefer C<$string = decode("UTF-8", $octets [, CHECK])>. Equivalent to C<$string = decode("utf8", $octets [, CHECK])>. The sequence of octets represented by $octets is decoded from (loose, not strict) utf8 into a sequence of logical characters. Because not all sequences of octets are valid not strict utf8, it is quite possible for this function to fail. For CHECK, see L. B: the input I<$octets> might be modified in-place depending on what is set in CHECK. See L if you want your inputs to be left unchanged. =head2 Listing available encodings use Encode; @list = Encode->encodings(); Returns a list of canonical names of available encodings that have already been loaded. To get a list of all available encodings including those that have not yet been loaded, say: @all_encodings = Encode->encodings(":all"); Or you can give the name of a specific module: @with_jp = Encode->encodings("Encode::JP"); When "C<::>" is not in the name, "C" is assumed. @ebcdic = Encode->encodings("EBCDIC"); To find out in detail which encodings are supported by this package, see L. =head2 Defining Aliases To add a new alias to a given encoding, use: use Encode; use Encode::Alias; define_alias(NEWNAME => ENCODING); After that, I can be used as an alias for I. I may be either the name of an encoding or an I. Before you do that, first make sure the alias is nonexistent using C, which returns the canonical name thereof. For example: Encode::resolve_alias("latin1") eq "iso-8859-1" # true Encode::resolve_alias("iso-8859-12") # false; nonexistent Encode::resolve_alias($name) eq $name # true if $name is canonical C does not need C; it can be imported via C. See L for details. =head2 Finding IANA Character Set Registry names The canonical name of a given encoding does not necessarily agree with IANA Character Set Registry, commonly seen as C<< Content-Type: text/plain; charset=I >>. For most cases, the canonical name works, but sometimes it does not, most notably with "utf-8-strict". As of C version 2.21, a new method C is therefore added. use Encode; my $enc = find_encoding("UTF-8"); warn $enc->name; # utf-8-strict warn $enc->mime_name; # UTF-8 See also: L =head1 Encoding via PerlIO If your perl supports C (which is the default), you can use a C layer to decode and encode directly via a filehandle. The following two examples are fully identical in functionality: ### Version 1 via PerlIO open(INPUT, "< :encoding(shiftjis)", $infile) || die "Can't open < $infile for reading: $!"; open(OUTPUT, "> :encoding(euc-jp)", $outfile) || die "Can't open > $output for writing: $!"; while () { # auto decodes $_ print OUTPUT; # auto encodes $_ } close(INPUT) || die "can't close $infile: $!"; close(OUTPUT) || die "can't close $outfile: $!"; ### Version 2 via from_to() open(INPUT, "< :raw", $infile) || die "Can't open < $infile for reading: $!"; open(OUTPUT, "> :raw", $outfile) || die "Can't open > $output for writing: $!"; while () { from_to($_, "shiftjis", "euc-jp", 1); # switch encoding print OUTPUT; # emit raw (but properly encoded) data } close(INPUT) || die "can't close $infile: $!"; close(OUTPUT) || die "can't close $outfile: $!"; In the first version above, you let the appropriate encoding layer handle the conversion. In the second, you explicitly translate from one encoding to the other. Unfortunately, it may be that encodings are not C-savvy. You can check to see whether your encoding is supported by C by invoking the C method on it: Encode::perlio_ok("hz"); # false find_encoding("euc-cn")->perlio_ok; # true wherever PerlIO is available use Encode qw(perlio_ok); # imported upon request perlio_ok("euc-jp") Fortunately, all encodings that come with C core are C-savvy except for C and C. For the gory details, see L and L. =head1 Handling Malformed Data The optional I argument tells C what to do when encountering malformed data. Without I, C (== 0) is assumed. As of version 2.12, C supports coderef values for C; see below. B Not all encodings support this feature. Some encodings ignore the I argument. For example, L ignores I and it always croaks on error. =head2 List of I values =head3 FB_DEFAULT CHECK = Encode::FB_DEFAULT ( == 0) If I is 0, encoding and decoding replace any malformed character with a I. When you encode, I is used. When you decode, the Unicode REPLACEMENT CHARACTER, code point U+FFFD, is used. If the data is supposed to be UTF-8, an optional lexical warning of warning category C<"utf8"> is given. =head3 FB_CROAK CHECK = Encode::FB_CROAK ( == 1) If I is 1, methods immediately die with an error message. Therefore, when I is 1, you should trap exceptions with C, unless you really want to let it C. =head3 FB_QUIET CHECK = Encode::FB_QUIET If I is set to C, encoding and decoding immediately return the portion of the data that has been processed so far when an error occurs. The data argument is overwritten with everything after that point; that is, the unprocessed portion of the data. This is handy when you have to call C repeatedly in the case where your source data may contain partial multi-byte character sequences, (that is, you are reading with a fixed-width buffer). Here's some sample code to do exactly that: my($buffer, $string) = ("", ""); while (read($fh, $buffer, 256, length($buffer))) { $string .= decode($encoding, $buffer, Encode::FB_QUIET); # $buffer now contains the unprocessed partial character } =head3 FB_WARN CHECK = Encode::FB_WARN This is the same as C above, except that instead of being silent on errors, it issues a warning. This is handy for when you are debugging. B: All warnings from Encode module are reported, independently of L settings. If you want to follow settings of lexical warnings configured by L then append also check value C. This value is available since Encode version 2.99. =head3 FB_PERLQQ FB_HTMLCREF FB_XMLCREF =over 2 =item perlqq mode (I = Encode::FB_PERLQQ) =item HTML charref mode (I = Encode::FB_HTMLCREF) =item XML charref mode (I = Encode::FB_XMLCREF) =back For encodings that are implemented by the C module, C C<==> C puts C and C into C fallback mode. When you decode, C<\xI> is inserted for a malformed character, where I is the hex representation of the octet that could not be decoded to utf8. When you encode, C<\x{I}> will be inserted, where I is the Unicode code point (in any number of hex digits) of the character that cannot be found in the character repertoire of the encoding. The HTML/XML character reference modes are about the same. In place of C<\x{I}>, HTML uses C<&#I;> where I is a decimal number, and XML uses C<&#xI;> where I is the hexadecimal number. In C 2.10 or later, C is also implied. =head3 The bitmask These modes are all actually set via a bitmask. Here is how the C> constants are laid out. You can import the C> constants via C, and you can import the generic bitmask constants via C. FB_DEFAULT FB_CROAK FB_QUIET FB_WARN FB_PERLQQ DIE_ON_ERR 0x0001 X WARN_ON_ERR 0x0002 X RETURN_ON_ERR 0x0004 X X LEAVE_SRC 0x0008 X PERLQQ 0x0100 X HTMLCREF 0x0200 XMLCREF 0x0400 =head3 LEAVE_SRC Encode::LEAVE_SRC If the C bit is I set but I is set, then the source string to encode() or decode() will be overwritten in place. If you're not interested in this, then bitwise-OR it with the bitmask. =head2 coderef for CHECK As of C 2.12, C can also be a code reference which takes the ordinal value of the unmapped character as an argument and returns octets that represent the fallback character. For instance: $ascii = encode("ascii", $utf8, sub{ sprintf "", shift }); Acts like C but U+I is used instead of C<\x{I}>. Fallback for C must return decoded string (sequence of characters) and takes a list of ordinal values as its arguments. So for example if you wish to decode octets as UTF-8, and use ISO-8859-15 as a fallback for bytes that are not valid UTF-8, you could write $str = decode 'UTF-8', $octets, sub { my $tmp = join '', map chr, @_; return decode 'ISO-8859-15', $tmp; }; =head1 Defining Encodings To define a new encoding, use: use Encode qw(define_encoding); define_encoding($object, CANONICAL_NAME [, alias...]); I will be associated with I<$object>. The object should provide the interface described in L. If more than two arguments are provided, additional arguments are considered aliases for I<$object>. See L for details. =head1 The UTF8 flag Before the introduction of Unicode support in Perl, the C operator just compared the strings represented by two scalars. Beginning with Perl 5.8, C compares two strings with simultaneous consideration of I. To explain why we made it so, I quote from page 402 of I =over 2 =item Goal #1: Old byte-oriented programs should not spontaneously break on the old byte-oriented data they used to work on. =item Goal #2: Old byte-oriented programs should magically start working on the new character-oriented data when appropriate. =item Goal #3: Programs should run just as fast in the new character-oriented mode as in the old byte-oriented mode. =item Goal #4: Perl should remain one language, rather than forking into a byte-oriented Perl and a character-oriented Perl. =back When I was written, not even Perl 5.6.0 had been born yet, many features documented in the book remained unimplemented for a long time. Perl 5.8 corrected much of this, and the introduction of the UTF8 flag is one of them. You can think of there being two fundamentally different kinds of strings and string-operations in Perl: one a byte-oriented mode for when the internal UTF8 flag is off, and the other a character-oriented mode for when the internal UTF8 flag is on. This UTF8 flag is not visible in Perl scripts, exactly for the same reason you cannot (or rather, you I) see whether a scalar contains a string, an integer, or a floating-point number. But you can still peek and poke these if you will. See the next section. =head2 Messing with Perl's Internals The following API uses parts of Perl's internals in the current implementation. As such, they are efficient but may change in a future release. =head3 is_utf8 is_utf8(STRING [, CHECK]) [INTERNAL] Tests whether the UTF8 flag is turned on in the I. If I is true, also checks whether I contains well-formed UTF-8. Returns true if successful, false otherwise. Typically only necessary for debugging and testing. Don't use this flag as a marker to distinguish character and binary data, that should be decided for each variable when you write your code. B: If I has UTF8 flag set, it does B mean that I is UTF-8 encoded and vice-versa. As of Perl 5.8.1, L also has the C function. =head3 _utf8_on _utf8_on(STRING) [INTERNAL] Turns the I's internal UTF8 flag B. The I is I checked for containing only well-formed UTF-8. Do not use this unless you I that the STRING holds only well-formed UTF-8. Returns the previous state of the UTF8 flag (so please don't treat the return value as indicating success or failure), or C if I is not a string. B: For security reasons, this function does not work on tainted values. =head3 _utf8_off _utf8_off(STRING) [INTERNAL] Turns the I's internal UTF8 flag B. Do not use frivolously. Returns the previous state of the UTF8 flag, or C if I is not a string. Do not treat the return value as indicative of success or failure, because that isn't what it means: it is only the previous setting. B: For security reasons, this function does not work on tainted values. =head1 UTF-8 vs. utf8 vs. UTF8 ....We now view strings not as sequences of bytes, but as sequences of numbers in the range 0 .. 2**32-1 (or in the case of 64-bit computers, 0 .. 2**64-1) -- Programming Perl, 3rd ed. That has historically been Perl's notion of UTF-8, as that is how UTF-8 was first conceived by Ken Thompson when he invented it. However, thanks to later revisions to the applicable standards, official UTF-8 is now rather stricter than that. For example, its range is much narrower (0 .. 0x10_FFFF to cover only 21 bits instead of 32 or 64 bits) and some sequences are not allowed, like those used in surrogate pairs, the 31 non-character code points 0xFDD0 .. 0xFDEF, the last two code points in I plane (0xI_FFFE and 0xI_FFFF), all non-shortest encodings, etc. The former default in which Perl would always use a loose interpretation of UTF-8 has now been overruled: From: Larry Wall Date: December 04, 2004 11:51:58 JST To: perl-unicode@perl.org Subject: Re: Make Encode.pm support the real UTF-8 Message-Id: <20041204025158.GA28754@wall.org> On Fri, Dec 03, 2004 at 10:12:12PM +0000, Tim Bunce wrote: : I've no problem with 'utf8' being perl's unrestricted uft8 encoding, : but "UTF-8" is the name of the standard and should give the : corresponding behaviour. For what it's worth, that's how I've always kept them straight in my head. Also for what it's worth, Perl 6 will mostly default to strict but make it easy to switch back to lax. Larry Got that? As of Perl 5.8.7, B<"UTF-8"> means UTF-8 in its current sense, which is conservative and strict and security-conscious, whereas B<"utf8"> means UTF-8 in its former sense, which was liberal and loose and lax. C version 2.10 or later thus groks this subtle but critically important distinction between C<"UTF-8"> and C<"utf8">. encode("utf8", "\x{FFFF_FFFF}", 1); # okay encode("UTF-8", "\x{FFFF_FFFF}", 1); # croaks This distinction is also important for decoding. In the following, C<$s> stores character U+200000, which exceeds UTF-8's allowed range. C<$s> thus stores an invalid Unicode code point: $s = decode("utf8", "\xf8\x88\x80\x80\x80"); C<"UTF-8">, by contrast, will either coerce the input to something valid: $s = decode("UTF-8", "\xf8\x88\x80\x80\x80"); # U+FFFD .. or croak: decode("UTF-8", "\xf8\x88\x80\x80\x80", FB_CROAK|LEAVE_SRC); In the C module, C<"UTF-8"> is actually a canonical name for C<"utf-8-strict">. That hyphen between the C<"UTF"> and the C<"8"> is critical; without it, C goes "liberal" and (perhaps overly-)permissive: find_encoding("UTF-8")->name # is 'utf-8-strict' find_encoding("utf-8")->name # ditto. names are case insensitive find_encoding("utf_8")->name # ditto. "_" are treated as "-" find_encoding("UTF8")->name # is 'utf8'. Perl's internal UTF8 flag is called "UTF8", without a hyphen. It indicates whether a string is internally encoded as "utf8", also without a hyphen. =head1 SEE ALSO L, L, L, L, L, L, L, L, L, L L, the Perl Unicode Mailing List L =head1 MAINTAINER This project was originated by the late Nick Ing-Simmons and later maintained by Dan Kogai I<< >>. See AUTHORS for a full list of people involved. For any questions, send mail to I<< >> so that we can all share. While Dan Kogai retains the copyright as a maintainer, credit should go to all those involved. See AUTHORS for a list of those who submitted code to the project. =head1 COPYRIGHT Copyright 2002-2014 Dan Kogai I<< >>. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut FILEb14b6a19/Encode/Alias.pm1package Encode::Alias; use strict; use warnings; our $VERSION = do { my @r = ( q$Revision: 2.25 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r }; use constant DEBUG => !!$ENV{PERL_ENCODE_DEBUG}; use Exporter 'import'; # Public, encouraged API is exported by default our @EXPORT = qw ( define_alias find_alias ); our @Alias; # ordered matching list our %Alias; # cached known aliases sub find_alias { my $class = shift; my $find = shift; unless ( exists $Alias{$find} ) { $Alias{$find} = undef; # Recursion guard for ( my $i = 0 ; $i < @Alias ; $i += 2 ) { my $alias = $Alias[$i]; my $val = $Alias[ $i + 1 ]; my $new; if ( ref($alias) eq 'Regexp' && $find =~ $alias ) { DEBUG and warn "eval $val"; $new = eval $val; DEBUG and $@ and warn "$val, $@"; } elsif ( ref($alias) eq 'CODE' ) { DEBUG and warn "$alias", "->", "($find)"; $new = $alias->($find); } elsif ( lc($find) eq lc($alias) ) { $new = $val; } if ( defined($new) ) { next if $new eq $find; # avoid (direct) recursion on bugs DEBUG and warn "$alias, $new"; my $enc = ( ref($new) ) ? $new : Encode::find_encoding($new); if ($enc) { $Alias{$find} = $enc; last; } } } # case insensitive search when canonical is not in all lowercase # RT ticket #7835 unless ( $Alias{$find} ) { my $lcfind = lc($find); for my $name ( keys %Encode::Encoding, keys %Encode::ExtModule ) { $lcfind eq lc($name) or next; $Alias{$find} = Encode::find_encoding($name); DEBUG and warn "$find => $name"; } } } if (DEBUG) { my $name; if ( my $e = $Alias{$find} ) { $name = $e->name; } else { $name = ""; } warn "find_alias($class, $find)->name = $name"; } return $Alias{$find}; } sub define_alias { while (@_) { my $alias = shift; my $name = shift; unshift( @Alias, $alias => $name ) # newer one has precedence if defined $alias; if ( ref($alias) ) { # clear %Alias cache to allow overrides my @a = keys %Alias; for my $k (@a) { if ( ref($alias) eq 'Regexp' && $k =~ $alias ) { DEBUG and warn "delete \$Alias\{$k\}"; delete $Alias{$k}; } elsif ( ref($alias) eq 'CODE' && $alias->($k) ) { DEBUG and warn "delete \$Alias\{$k\}"; delete $Alias{$k}; } } } elsif (defined $alias) { DEBUG and warn "delete \$Alias\{$alias\}"; delete $Alias{$alias}; } elsif (DEBUG) { require Carp; Carp::croak("undef \$alias"); } } } # HACK: Encode must be used after define_alias is declarated as Encode calls define_alias use Encode (); # Allow latin-1 style names as well # 0 1 2 3 4 5 6 7 8 9 10 our @Latin2iso = ( 0, 1, 2, 3, 4, 9, 10, 13, 14, 15, 16 ); # Allow winlatin1 style names as well our %Winlatin2cp = ( 'latin1' => 1252, 'latin2' => 1250, 'cyrillic' => 1251, 'greek' => 1253, 'turkish' => 1254, 'hebrew' => 1255, 'arabic' => 1256, 'baltic' => 1257, 'vietnamese' => 1258, ); init_aliases(); sub undef_aliases { @Alias = (); %Alias = (); } sub init_aliases { undef_aliases(); # Try all-lower-case version should all else fails define_alias( qr/^(.*)$/ => '"\L$1"' ); # UTF/UCS stuff define_alias( qr/^(unicode-1-1-)?UTF-?7$/i => '"UTF-7"' ); define_alias( qr/^UCS-?2-?LE$/i => '"UCS-2LE"' ); define_alias( qr/^UCS-?2-?(BE)?$/i => '"UCS-2BE"', qr/^UCS-?4-?(BE|LE|)?$/i => 'uc("UTF-32$1")', qr/^iso-10646-1$/i => '"UCS-2BE"' ); define_alias( qr/^UTF-?(16|32)-?BE$/i => '"UTF-$1BE"', qr/^UTF-?(16|32)-?LE$/i => '"UTF-$1LE"', qr/^UTF-?(16|32)$/i => '"UTF-$1"', ); # ASCII define_alias( qr/^(?:US-?)ascii$/i => '"ascii"' ); define_alias( 'C' => 'ascii' ); define_alias( qr/\b(?:ISO[-_]?)?646(?:[-_]?US)?$/i => '"ascii"' ); # Allow variants of iso-8859-1 etc. define_alias( qr/\biso[-_]?(\d+)[-_](\d+)$/i => '"iso-$1-$2"' ); # ISO-8859-8-I => ISO-8859-8 # https://en.wikipedia.org/wiki/ISO-8859-8-I define_alias( qr/\biso[-_]8859[-_]8[-_]I$/i => '"iso-8859-8"' ); # At least HP-UX has these. define_alias( qr/\biso8859(\d+)$/i => '"iso-8859-$1"' ); # More HP stuff. define_alias( qr/\b(?:hp-)?(arabic|greek|hebrew|kana|roman|thai|turkish)8$/i => '"${1}8"' ); # The Official name of ASCII. define_alias( qr/\bANSI[-_]?X3\.4[-_]?1968$/i => '"ascii"' ); # This is a font issue, not an encoding issue. # (The currency symbol of the Latin 1 upper half # has been redefined as the euro symbol.) define_alias( qr/^(.+)\@euro$/i => '"$1"' ); define_alias( qr/\b(?:iso[-_]?)?latin[-_]?(\d+)$/i => 'defined $Encode::Alias::Latin2iso[$1] ? "iso-8859-$Encode::Alias::Latin2iso[$1]" : undef' ); define_alias( qr/\bwin(latin[12]|cyrillic|baltic|greek|turkish| hebrew|arabic|baltic|vietnamese)$/ix => '"cp" . $Encode::Alias::Winlatin2cp{lc($1)}' ); # Common names for non-latin preferred MIME names define_alias( 'ascii' => 'US-ascii', 'cyrillic' => 'iso-8859-5', 'arabic' => 'iso-8859-6', 'greek' => 'iso-8859-7', 'hebrew' => 'iso-8859-8', 'thai' => 'iso-8859-11', ); # RT #20781 define_alias(qr/\btis-?620\b/i => '"iso-8859-11"'); # At least AIX has IBM-NNN (surprisingly...) instead of cpNNN. # And Microsoft has their own naming (again, surprisingly). # And windows-* is registered in IANA! define_alias( qr/\b(?:cp|ibm|ms|windows)[-_ ]?(\d{2,4})$/i => '"cp$1"' ); # Sometimes seen with a leading zero. # define_alias( qr/\bcp037\b/i => '"cp37"'); # Mac Mappings # predefined in *.ucm; unneeded # define_alias( qr/\bmacIcelandic$/i => '"macIceland"'); define_alias( qr/^(?:x[_-])?mac[_-](.*)$/i => '"mac$1"' ); # http://rt.cpan.org/Ticket/Display.html?id=36326 define_alias( qr/^macintosh$/i => '"MacRoman"' ); # https://rt.cpan.org/Ticket/Display.html?id=78125 define_alias( qr/^macce$/i => '"MacCentralEurRoman"' ); # Ououououou. gone. They are different! # define_alias( qr/\bmacRomanian$/i => '"macRumanian"'); # Standardize on the dashed versions. define_alias( qr/\bkoi8[\s\-_]*([ru])$/i => '"koi8-$1"' ); unless ($Encode::ON_EBCDIC) { # for Encode::CN define_alias( qr/\beuc.*cn$/i => '"euc-cn"' ); define_alias( qr/\bcn.*euc$/i => '"euc-cn"' ); # define_alias( qr/\bGB[- ]?(\d+)$/i => '"euc-cn"' ) # CP936 doesn't have vendor-addon for GBK, so they're identical. define_alias( qr/^gbk$/i => '"cp936"' ); # This fixes gb2312 vs. euc-cn confusion, practically define_alias( qr/\bGB[-_ ]?2312(?!-?raw)/i => '"euc-cn"' ); # for Encode::JP define_alias( qr/\bjis$/i => '"7bit-jis"' ); define_alias( qr/\beuc.*jp$/i => '"euc-jp"' ); define_alias( qr/\bjp.*euc$/i => '"euc-jp"' ); define_alias( qr/\bujis$/i => '"euc-jp"' ); define_alias( qr/\bshift.*jis$/i => '"shiftjis"' ); define_alias( qr/\bsjis$/i => '"shiftjis"' ); define_alias( qr/\bwindows-31j$/i => '"cp932"' ); # for Encode::KR define_alias( qr/\beuc.*kr$/i => '"euc-kr"' ); define_alias( qr/\bkr.*euc$/i => '"euc-kr"' ); # This fixes ksc5601 vs. euc-kr confusion, practically define_alias( qr/(?:x-)?uhc$/i => '"cp949"' ); define_alias( qr/(?:x-)?windows-949$/i => '"cp949"' ); define_alias( qr/\bks_c_5601-1987$/i => '"cp949"' ); # for Encode::TW define_alias( qr/\bbig-?5$/i => '"big5-eten"' ); define_alias( qr/\bbig5-?et(?:en)?$/i => '"big5-eten"' ); define_alias( qr/\btca[-_]?big5$/i => '"big5-eten"' ); define_alias( qr/\bbig5-?hk(?:scs)?$/i => '"big5-hkscs"' ); define_alias( qr/\bhk(?:scs)?[-_]?big5$/i => '"big5-hkscs"' ); } # https://github.com/dankogai/p5-encode/issues/37 define_alias(qr/cp65000/i => '"UTF-7"'); define_alias(qr/cp65001/i => '"utf-8-strict"'); # utf8 is blessed :) define_alias( qr/\bUTF-8$/i => '"utf-8-strict"' ); # At last, Map white space and _ to '-' define_alias( qr/^([^\s_]+)[\s_]+([^\s_]*)$/i => '"$1-$2"' ); } 1; __END__ # TODO: HP-UX '8' encodings arabic8 greek8 hebrew8 kana8 thai8 turkish8 # TODO: HP-UX '15' encodings japanese15 korean15 roi15 # TODO: Cyrillic encoding ISO-IR-111 (useful?) # TODO: Armenian encoding ARMSCII-8 # TODO: Hebrew encoding ISO-8859-8-1 # TODO: Thai encoding TCVN # TODO: Vietnamese encodings VPS # TODO: Mac Asian+African encodings: Arabic Armenian Bengali Burmese # ChineseSimp ChineseTrad Devanagari Ethiopic ExtArabic # Farsi Georgian Gujarati Gurmukhi Hebrew Japanese # Kannada Khmer Korean Laotian Malayalam Mongolian # Oriya Sinhalese Symbol Tamil Telugu Tibetan Vietnamese =head1 NAME Encode::Alias - alias definitions to encodings =head1 SYNOPSIS use Encode; use Encode::Alias; define_alias( "newName" => ENCODING); define_alias( qr/.../ => ENCODING); define_alias( sub { return ENCODING if ...; } ); =head1 DESCRIPTION Allows newName to be used as an alias for ENCODING. ENCODING may be either the name of an encoding or an encoding object (as described in L). Currently the first argument to define_alias() can be specified in the following ways: =over 4 =item As a simple string. =item As a qr// compiled regular expression, e.g.: define_alias( qr/^iso8859-(\d+)$/i => '"iso-8859-$1"' ); In this case, if I is not a reference, it is C-ed in order to allow C<$1> etc. to be substituted. The example is one way to alias names as used in X11 fonts to the MIME names for the iso-8859-* family. Note the double quotes inside the single quotes. (or, you don't have to do this yourself because this example is predefined) If you are using a regex here, you have to use the quotes as shown or it won't work. Also note that regex handling is tricky even for the experienced. Use this feature with caution. =item As a code reference, e.g.: define_alias( sub {shift =~ /^iso8859-(\d+)$/i ? "iso-8859-$1" : undef } ); The same effect as the example above in a different way. The coderef takes the alias name as an argument and returns a canonical name on success or undef if not. Note the second argument is ignored if provided. Use this with even more caution than the regex version. =back =head3 Changes in code reference aliasing As of Encode 1.87, the older form define_alias( sub { return /^iso8859-(\d+)$/i ? "iso-8859-$1" : undef } ); no longer works. Encode up to 1.86 internally used "local $_" to implement this older form. But consider the code below; use Encode; $_ = "eeeee" ; while (/(e)/g) { my $utf = decode('aliased-encoding-name', $1); print "position:",pos,"\n"; } Prior to Encode 1.86 this fails because of "local $_". =head2 Alias overloading You can override predefined aliases by simply applying define_alias(). The new alias is always evaluated first, and when necessary, define_alias() flushes the internal cache to make the new definition available. # redirect SHIFT_JIS to MS/IBM Code Page 932, which is a # superset of SHIFT_JIS define_alias( qr/shift.*jis$/i => '"cp932"' ); define_alias( qr/sjis$/i => '"cp932"' ); If you want to zap all predefined aliases, you can use Encode::Alias->undef_aliases; to do so. And Encode::Alias->init_aliases; gets the factory settings back. Note that define_alias() will not be able to override the canonical name of encodings. Encodings are first looked up by canonical name before potential aliases are tried. =head1 SEE ALSO L, L =cut FILE314fa882/Encode/Config.pm# # Demand-load module list # package Encode::Config; our $VERSION = do { my @r = ( q$Revision: 2.5 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r }; use strict; use warnings; our %ExtModule = ( # Encode::Byte #iso-8859-1 is in Encode.pm itself 'iso-8859-2' => 'Encode::Byte', 'iso-8859-3' => 'Encode::Byte', 'iso-8859-4' => 'Encode::Byte', 'iso-8859-5' => 'Encode::Byte', 'iso-8859-6' => 'Encode::Byte', 'iso-8859-7' => 'Encode::Byte', 'iso-8859-8' => 'Encode::Byte', 'iso-8859-9' => 'Encode::Byte', 'iso-8859-10' => 'Encode::Byte', 'iso-8859-11' => 'Encode::Byte', 'iso-8859-13' => 'Encode::Byte', 'iso-8859-14' => 'Encode::Byte', 'iso-8859-15' => 'Encode::Byte', 'iso-8859-16' => 'Encode::Byte', 'koi8-f' => 'Encode::Byte', 'koi8-r' => 'Encode::Byte', 'koi8-u' => 'Encode::Byte', 'viscii' => 'Encode::Byte', 'cp424' => 'Encode::Byte', 'cp437' => 'Encode::Byte', 'cp737' => 'Encode::Byte', 'cp775' => 'Encode::Byte', 'cp850' => 'Encode::Byte', 'cp852' => 'Encode::Byte', 'cp855' => 'Encode::Byte', 'cp856' => 'Encode::Byte', 'cp857' => 'Encode::Byte', 'cp858' => 'Encode::Byte', 'cp860' => 'Encode::Byte', 'cp861' => 'Encode::Byte', 'cp862' => 'Encode::Byte', 'cp863' => 'Encode::Byte', 'cp864' => 'Encode::Byte', 'cp865' => 'Encode::Byte', 'cp866' => 'Encode::Byte', 'cp869' => 'Encode::Byte', 'cp874' => 'Encode::Byte', 'cp1006' => 'Encode::Byte', 'cp1250' => 'Encode::Byte', 'cp1251' => 'Encode::Byte', 'cp1252' => 'Encode::Byte', 'cp1253' => 'Encode::Byte', 'cp1254' => 'Encode::Byte', 'cp1255' => 'Encode::Byte', 'cp1256' => 'Encode::Byte', 'cp1257' => 'Encode::Byte', 'cp1258' => 'Encode::Byte', 'AdobeStandardEncoding' => 'Encode::Byte', 'MacArabic' => 'Encode::Byte', 'MacCentralEurRoman' => 'Encode::Byte', 'MacCroatian' => 'Encode::Byte', 'MacCyrillic' => 'Encode::Byte', 'MacFarsi' => 'Encode::Byte', 'MacGreek' => 'Encode::Byte', 'MacHebrew' => 'Encode::Byte', 'MacIcelandic' => 'Encode::Byte', 'MacRoman' => 'Encode::Byte', 'MacRomanian' => 'Encode::Byte', 'MacRumanian' => 'Encode::Byte', 'MacSami' => 'Encode::Byte', 'MacThai' => 'Encode::Byte', 'MacTurkish' => 'Encode::Byte', 'MacUkrainian' => 'Encode::Byte', 'nextstep' => 'Encode::Byte', 'hp-roman8' => 'Encode::Byte', #'gsm0338' => 'Encode::Byte', 'gsm0338' => 'Encode::GSM0338', # Encode::EBCDIC 'cp37' => 'Encode::EBCDIC', 'cp500' => 'Encode::EBCDIC', 'cp875' => 'Encode::EBCDIC', 'cp1026' => 'Encode::EBCDIC', 'cp1047' => 'Encode::EBCDIC', 'posix-bc' => 'Encode::EBCDIC', # Encode::Symbol 'dingbats' => 'Encode::Symbol', 'symbol' => 'Encode::Symbol', 'AdobeSymbol' => 'Encode::Symbol', 'AdobeZdingbat' => 'Encode::Symbol', 'MacDingbats' => 'Encode::Symbol', 'MacSymbol' => 'Encode::Symbol', # Encode::Unicode 'UCS-2BE' => 'Encode::Unicode', 'UCS-2LE' => 'Encode::Unicode', 'UTF-16' => 'Encode::Unicode', 'UTF-16BE' => 'Encode::Unicode', 'UTF-16LE' => 'Encode::Unicode', 'UTF-32' => 'Encode::Unicode', 'UTF-32BE' => 'Encode::Unicode', 'UTF-32LE' => 'Encode::Unicode', 'UTF-7' => 'Encode::Unicode::UTF7', ); unless ( ord("A") == 193 ) { %ExtModule = ( %ExtModule, 'euc-cn' => 'Encode::CN', 'gb12345-raw' => 'Encode::CN', 'gb2312-raw' => 'Encode::CN', 'hz' => 'Encode::CN', 'iso-ir-165' => 'Encode::CN', 'cp936' => 'Encode::CN', 'MacChineseSimp' => 'Encode::CN', '7bit-jis' => 'Encode::JP', 'euc-jp' => 'Encode::JP', 'iso-2022-jp' => 'Encode::JP', 'iso-2022-jp-1' => 'Encode::JP', 'jis0201-raw' => 'Encode::JP', 'jis0208-raw' => 'Encode::JP', 'jis0212-raw' => 'Encode::JP', 'cp932' => 'Encode::JP', 'MacJapanese' => 'Encode::JP', 'shiftjis' => 'Encode::JP', 'euc-kr' => 'Encode::KR', 'iso-2022-kr' => 'Encode::KR', 'johab' => 'Encode::KR', 'ksc5601-raw' => 'Encode::KR', 'cp949' => 'Encode::KR', 'MacKorean' => 'Encode::KR', 'big5-eten' => 'Encode::TW', 'big5-hkscs' => 'Encode::TW', 'cp950' => 'Encode::TW', 'MacChineseTrad' => 'Encode::TW', #'big5plus' => 'Encode::HanExtra', #'euc-tw' => 'Encode::HanExtra', #'gb18030' => 'Encode::HanExtra', 'MIME-Header' => 'Encode::MIME::Header', 'MIME-B' => 'Encode::MIME::Header', 'MIME-Q' => 'Encode::MIME::Header', 'MIME-Header-ISO_2022_JP' => 'Encode::MIME::Header::ISO_2022_JP', ); } # # Why not export ? to keep ConfigLocal Happy! # while ( my ( $enc, $mod ) = each %ExtModule ) { $Encode::ExtModule{$enc} = $mod; } 1; __END__ =head1 NAME Encode::Config -- internally used by Encode =cut FILE2894aaa1/Encode/Encoding.pm#gpackage Encode::Encoding; # Base class for classes which implement encodings use strict; use warnings; our $VERSION = do { my @r = ( q$Revision: 2.8 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r }; our @CARP_NOT = qw(Encode Encode::Encoder); use Carp (); use Encode (); use Encode::MIME::Name; use constant DEBUG => !!$ENV{PERL_ENCODE_DEBUG}; sub Define { my $obj = shift; my $canonical = shift; $obj = bless { Name => $canonical }, $obj unless ref $obj; # warn "$canonical => $obj\n"; Encode::define_encoding( $obj, $canonical, @_ ); } sub name { return shift->{'Name'} } sub mime_name { return Encode::MIME::Name::get_mime_name(shift->name); } sub renew { my $self = shift; my $clone = bless {%$self} => ref($self); $clone->{renewed}++; # so the caller can see it DEBUG and warn $clone->{renewed}; return $clone; } sub renewed { return $_[0]->{renewed} || 0 } *new_sequence = \&renew; sub needs_lines { 0 } sub perlio_ok { return eval { require PerlIO::encoding } ? 1 : 0; } # (Temporary|legacy) methods sub toUnicode { shift->decode(@_) } sub fromUnicode { shift->encode(@_) } # # Needs to be overloaded or just croak # sub encode { my $obj = shift; my $class = ref($obj) ? ref($obj) : $obj; Carp::croak( $class . "->encode() not defined!" ); } sub decode { my $obj = shift; my $class = ref($obj) ? ref($obj) : $obj; Carp::croak( $class . "->encode() not defined!" ); } sub DESTROY { } 1; __END__ =head1 NAME Encode::Encoding - Encode Implementation Base Class =head1 SYNOPSIS package Encode::MyEncoding; use parent qw(Encode::Encoding); __PACKAGE__->Define(qw(myCanonical myAlias)); =head1 DESCRIPTION As mentioned in L, encodings are (in the current implementation at least) defined as objects. The mapping of encoding name to object is via the C<%Encode::Encoding> hash. Though you can directly manipulate this hash, it is strongly encouraged to use this base class module and add encode() and decode() methods. =head2 Methods you should implement You are strongly encouraged to implement methods below, at least either encode() or decode(). =over 4 =item -Eencode($string [,$check]) MUST return the octet sequence representing I<$string>. =over 2 =item * If I<$check> is true, it SHOULD modify I<$string> in place to remove the converted part (i.e. the whole string unless there is an error). If perlio_ok() is true, SHOULD becomes MUST. =item * If an error occurs, it SHOULD return the octet sequence for the fragment of string that has been converted and modify $string in-place to remove the converted part leaving it starting with the problem fragment. If perlio_ok() is true, SHOULD becomes MUST. =item * If I<$check> is false then C MUST make a "best effort" to convert the string - for example, by using a replacement character. =back =item -Edecode($octets [,$check]) MUST return the string that I<$octets> represents. =over 2 =item * If I<$check> is true, it SHOULD modify I<$octets> in place to remove the converted part (i.e. the whole sequence unless there is an error). If perlio_ok() is true, SHOULD becomes MUST. =item * If an error occurs, it SHOULD return the fragment of string that has been converted and modify $octets in-place to remove the converted part leaving it starting with the problem fragment. If perlio_ok() is true, SHOULD becomes MUST. =item * If I<$check> is false then C should make a "best effort" to convert the string - for example by using Unicode's "\x{FFFD}" as a replacement character. =back =back If you want your encoding to work with L pragma, you should also implement the method below. =over 4 =item -Ecat_decode($destination, $octets, $offset, $terminator [,$check]) MUST decode I<$octets> with I<$offset> and concatenate it to I<$destination>. Decoding will terminate when $terminator (a string) appears in output. I<$offset> will be modified to the last $octets position at end of decode. Returns true if $terminator appears output, else returns false. =back =head2 Other methods defined in Encode::Encodings You do not have to override methods shown below unless you have to. =over 4 =item -Ename Predefined As: sub name { return shift->{'Name'} } MUST return the string representing the canonical name of the encoding. =item -Emime_name Predefined As: sub mime_name{ return Encode::MIME::Name::get_mime_name(shift->name); } MUST return the string representing the IANA charset name of the encoding. =item -Erenew Predefined As: sub renew { my $self = shift; my $clone = bless { %$self } => ref($self); $clone->{renewed}++; return $clone; } This method reconstructs the encoding object if necessary. If you need to store the state during encoding, this is where you clone your object. PerlIO ALWAYS calls this method to make sure it has its own private encoding object. =item -Erenewed Predefined As: sub renewed { $_[0]->{renewed} || 0 } Tells whether the object is renewed (and how many times). Some modules emit C warning unless the value is numeric so return 0 for false. =item -Eperlio_ok() Predefined As: sub perlio_ok { return eval { require PerlIO::encoding } ? 1 : 0; } If your encoding does not support PerlIO for some reasons, just; sub perlio_ok { 0 } =item -Eneeds_lines() Predefined As: sub needs_lines { 0 }; If your encoding can work with PerlIO but needs line buffering, you MUST define this method so it returns true. 7bit ISO-2022 encodings are one example that needs this. When this method is missing, false is assumed. =back =head2 Example: Encode::ROT13 package Encode::ROT13; use strict; use parent qw(Encode::Encoding); __PACKAGE__->Define('rot13'); sub encode($$;$){ my ($obj, $str, $chk) = @_; $str =~ tr/A-Za-z/N-ZA-Mn-za-m/; $_[1] = '' if $chk; # this is what in-place edit means return $str; } # Jr pna or ynml yvxr guvf; *decode = \&encode; 1; =head1 Why the heck Encode API is different? It should be noted that the I<$check> behaviour is different from the outer public API. The logic is that the "unchecked" case is useful when the encoding is part of a stream which may be reporting errors (e.g. STDERR). In such cases, it is desirable to get everything through somehow without causing additional errors which obscure the original one. Also, the encoding is best placed to know what the correct replacement character is, so if that is the desired behaviour then letting low level code do it is the most efficient. By contrast, if I<$check> is true, the scheme above allows the encoding to do as much as it can and tell the layer above how much that was. What is lacking at present is a mechanism to report what went wrong. The most likely interface will be an additional method call to the object, or perhaps (to avoid forcing per-stream objects on otherwise stateless encodings) an additional parameter. It is also highly desirable that encoding classes inherit from C as a base class. This allows that class to define additional behaviour for all encoding objects. package Encode::MyEncoding; use parent qw(Encode::Encoding); __PACKAGE__->Define(qw(myCanonical myAlias)); to create an object with C<< bless {Name => ...}, $class >>, and call define_encoding. They inherit their C method from C. =head2 Compiled Encodings For the sake of speed and efficiency, most of the encodings are now supported via a I: XS modules generated from UCM files. Encode provides the enc2xs tool to achieve that. Please see L for more details. =head1 SEE ALSO L, L =begin future =over 4 =item Scheme 1 The fixup routine gets passed the remaining fragment of string being processed. It modifies it in place to remove bytes/characters it can understand and returns a string used to represent them. For example: sub fixup { my $ch = substr($_[0],0,1,''); return sprintf("\x{%02X}",ord($ch); } This scheme is close to how the underlying C code for Encode works, but gives the fixup routine very little context. =item Scheme 2 The fixup routine gets passed the original string, an index into it of the problem area, and the output string so far. It appends what it wants to the output string and returns a new index into the original string. For example: sub fixup { # my ($s,$i,$d) = @_; my $ch = substr($_[0],$_[1],1); $_[2] .= sprintf("\x{%02X}",ord($ch); return $_[1]+1; } This scheme gives maximal control to the fixup routine but is more complicated to code, and may require that the internals of Encode be tweaked to keep the original string intact. =item Other Schemes Hybrids of the above. Multiple return values rather than in-place modifications. Index into the string could be C allowing C. =back =end future =cut FILEd5ff5da4/Encode/MIME/Name.pmpackage Encode::MIME::Name; use strict; use warnings; our $VERSION = do { my @r = ( q$Revision: 1.3 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r }; # NOTE: This table must be 1:1 mapping our %MIME_NAME_OF = ( 'AdobeStandardEncoding' => 'Adobe-Standard-Encoding', 'AdobeSymbol' => 'Adobe-Symbol-Encoding', 'ascii' => 'US-ASCII', 'big5-hkscs' => 'Big5-HKSCS', 'cp1026' => 'IBM1026', 'cp1047' => 'IBM1047', 'cp1250' => 'windows-1250', 'cp1251' => 'windows-1251', 'cp1252' => 'windows-1252', 'cp1253' => 'windows-1253', 'cp1254' => 'windows-1254', 'cp1255' => 'windows-1255', 'cp1256' => 'windows-1256', 'cp1257' => 'windows-1257', 'cp1258' => 'windows-1258', 'cp37' => 'IBM037', 'cp424' => 'IBM424', 'cp437' => 'IBM437', 'cp500' => 'IBM500', 'cp775' => 'IBM775', 'cp850' => 'IBM850', 'cp852' => 'IBM852', 'cp855' => 'IBM855', 'cp857' => 'IBM857', 'cp860' => 'IBM860', 'cp861' => 'IBM861', 'cp862' => 'IBM862', 'cp863' => 'IBM863', 'cp864' => 'IBM864', 'cp865' => 'IBM865', 'cp866' => 'IBM866', 'cp869' => 'IBM869', 'cp936' => 'GBK', 'euc-cn' => 'EUC-CN', 'euc-jp' => 'EUC-JP', 'euc-kr' => 'EUC-KR', #'gb2312-raw' => 'GB2312', # no, you're wrong, I18N::Charset 'hp-roman8' => 'hp-roman8', 'hz' => 'HZ-GB-2312', 'iso-2022-jp' => 'ISO-2022-JP', 'iso-2022-jp-1' => 'ISO-2022-JP-1', 'iso-2022-kr' => 'ISO-2022-KR', 'iso-8859-1' => 'ISO-8859-1', 'iso-8859-10' => 'ISO-8859-10', 'iso-8859-13' => 'ISO-8859-13', 'iso-8859-14' => 'ISO-8859-14', 'iso-8859-15' => 'ISO-8859-15', 'iso-8859-16' => 'ISO-8859-16', 'iso-8859-2' => 'ISO-8859-2', 'iso-8859-3' => 'ISO-8859-3', 'iso-8859-4' => 'ISO-8859-4', 'iso-8859-5' => 'ISO-8859-5', 'iso-8859-6' => 'ISO-8859-6', 'iso-8859-7' => 'ISO-8859-7', 'iso-8859-8' => 'ISO-8859-8', 'iso-8859-9' => 'ISO-8859-9', #'jis0201-raw' => 'JIS_X0201', #'jis0208-raw' => 'JIS_C6226-1983', #'jis0212-raw' => 'JIS_X0212-1990', 'koi8-r' => 'KOI8-R', 'koi8-u' => 'KOI8-U', #'ksc5601-raw' => 'KS_C_5601-1987', 'shiftjis' => 'Shift_JIS', 'UTF-16' => 'UTF-16', 'UTF-16BE' => 'UTF-16BE', 'UTF-16LE' => 'UTF-16LE', 'UTF-32' => 'UTF-32', 'UTF-32BE' => 'UTF-32BE', 'UTF-32LE' => 'UTF-32LE', 'UTF-7' => 'UTF-7', 'utf-8-strict' => 'UTF-8', 'viscii' => 'VISCII', ); # NOTE: %MIME_NAME_OF is still 1:1 mapping our %ENCODE_NAME_OF = map { uc $MIME_NAME_OF{$_} => $_ } keys %MIME_NAME_OF; # Add additional 1:N mapping $MIME_NAME_OF{'utf8'} = 'UTF-8'; sub get_mime_name($) { $MIME_NAME_OF{$_[0]} }; sub get_encode_name($) { $ENCODE_NAME_OF{uc $_[0]} }; 1; __END__ =head1 NAME Encode::MIME::NAME -- internally used by Encode =head1 SEE ALSO L =cut FILEa6278d80/Errno.pm# -*- buffer-read-only: t -*- # # This file is auto-generated by ext/Errno/Errno_pm.PL. # ***ANY*** changes here will be lost. # package Errno; use Exporter 'import'; use strict; use Config; "$Config{'archname'}-$Config{'osvers'}" eq "aarch64\-linux-6\.8\.0\-1044\-azure" or die "Errno architecture (aarch64\-linux-6\.8\.0\-1044\-azure) does not match executable architecture ($Config{'archname'}-$Config{'osvers'})"; our $VERSION = "1.38"; $VERSION = eval $VERSION; my %err; BEGIN { %err = ( EPERM => 1, ENOENT => 2, ESRCH => 3, EINTR => 4, EIO => 5, ENXIO => 6, E2BIG => 7, ENOEXEC => 8, EBADF => 9, ECHILD => 10, EAGAIN => 11, EWOULDBLOCK => 11, ENOMEM => 12, EACCES => 13, EFAULT => 14, ENOTBLK => 15, EBUSY => 16, EEXIST => 17, EXDEV => 18, ENODEV => 19, ENOTDIR => 20, EISDIR => 21, EINVAL => 22, ENFILE => 23, EMFILE => 24, ENOTTY => 25, ETXTBSY => 26, EFBIG => 27, ENOSPC => 28, ESPIPE => 29, EROFS => 30, EMLINK => 31, EPIPE => 32, EDOM => 33, ERANGE => 34, EDEADLK => 35, EDEADLOCK => 35, ENAMETOOLONG => 36, ENOLCK => 37, ENOSYS => 38, ENOTEMPTY => 39, ELOOP => 40, ENOMSG => 42, EIDRM => 43, ECHRNG => 44, EL2NSYNC => 45, EL3HLT => 46, EL3RST => 47, ELNRNG => 48, EUNATCH => 49, ENOCSI => 50, EL2HLT => 51, EBADE => 52, EBADR => 53, EXFULL => 54, ENOANO => 55, EBADRQC => 56, EBADSLT => 57, EBFONT => 59, ENOSTR => 60, ENODATA => 61, ETIME => 62, ENOSR => 63, ENONET => 64, ENOPKG => 65, EREMOTE => 66, ENOLINK => 67, EADV => 68, ESRMNT => 69, ECOMM => 70, EPROTO => 71, EMULTIHOP => 72, EDOTDOT => 73, EBADMSG => 74, EOVERFLOW => 75, ENOTUNIQ => 76, EBADFD => 77, EREMCHG => 78, ELIBACC => 79, ELIBBAD => 80, ELIBSCN => 81, ELIBMAX => 82, ELIBEXEC => 83, EILSEQ => 84, ERESTART => 85, ESTRPIPE => 86, EUSERS => 87, ENOTSOCK => 88, EDESTADDRREQ => 89, EMSGSIZE => 90, EPROTOTYPE => 91, ENOPROTOOPT => 92, EPROTONOSUPPORT => 93, ESOCKTNOSUPPORT => 94, ENOTSUP => 95, EOPNOTSUPP => 95, EPFNOSUPPORT => 96, EAFNOSUPPORT => 97, EADDRINUSE => 98, EADDRNOTAVAIL => 99, ENETDOWN => 100, ENETUNREACH => 101, ENETRESET => 102, ECONNABORTED => 103, ECONNRESET => 104, ENOBUFS => 105, EISCONN => 106, ENOTCONN => 107, ESHUTDOWN => 108, ETOOMANYREFS => 109, ETIMEDOUT => 110, ECONNREFUSED => 111, EHOSTDOWN => 112, EHOSTUNREACH => 113, EALREADY => 114, EINPROGRESS => 115, ESTALE => 116, EUCLEAN => 117, ENOTNAM => 118, ENAVAIL => 119, EISNAM => 120, EREMOTEIO => 121, EDQUOT => 122, ENOMEDIUM => 123, EMEDIUMTYPE => 124, ECANCELED => 125, ENOKEY => 126, EKEYEXPIRED => 127, EKEYREVOKED => 128, EKEYREJECTED => 129, EOWNERDEAD => 130, ENOTRECOVERABLE => 131, ERFKILL => 132, EHWPOISON => 133, ); # Generate proxy constant subroutines for all the values. # Well, almost all the values. Unfortunately we can't assume that at this # point that our symbol table is empty, as code such as if the parser has # seen code such as C, it will have created the # typeglob. # Doing this before defining @EXPORT_OK etc means that even if a platform is # crazy enough to define EXPORT_OK as an error constant, everything will # still work, because the parser will upgrade the PCS to a real typeglob. # We rely on the subroutine definitions below to update the internal caches. # Don't use %each, as we don't want a copy of the value. foreach my $name (keys %err) { if ($Errno::{$name}) { # We expect this to be reached fairly rarely, so take an approach # which uses the least compile time effort in the common case: eval "sub $name() { $err{$name} }; 1" or die $@; } else { $Errno::{$name} = \$err{$name}; } } } our @EXPORT_OK = keys %err; our %EXPORT_TAGS = ( POSIX => [qw( E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EAFNOSUPPORT EAGAIN EALREADY EBADF EBUSY ECHILD ECONNABORTED ECONNREFUSED ECONNRESET EDEADLK EDESTADDRREQ EDOM EDQUOT EEXIST EFAULT EFBIG EHOSTDOWN EHOSTUNREACH EINPROGRESS EINTR EINVAL EIO EISCONN EISDIR ELOOP EMFILE EMLINK EMSGSIZE ENAMETOOLONG ENETDOWN ENETRESET ENETUNREACH ENFILE ENOBUFS ENODEV ENOENT ENOEXEC ENOLCK ENOMEM ENOPROTOOPT ENOSPC ENOSYS ENOTBLK ENOTCONN ENOTDIR ENOTEMPTY ENOTSOCK ENOTTY ENXIO EOPNOTSUPP EPERM EPFNOSUPPORT EPIPE EPROTONOSUPPORT EPROTOTYPE ERANGE EREMOTE ERESTART EROFS ESHUTDOWN ESOCKTNOSUPPORT ESPIPE ESRCH ESTALE ETIMEDOUT ETOOMANYREFS ETXTBSY EUSERS EWOULDBLOCK EXDEV )], ); sub TIEHASH { bless \%err } sub FETCH { my (undef, $errname) = @_; return "" unless exists $err{$errname}; my $errno = $err{$errname}; return $errno == $! ? $errno : 0; } sub STORE { require Carp; Carp::confess("ERRNO hash is read only!"); } # This is the true return value *CLEAR = *DELETE = \*STORE; # Typeglob aliasing uses less space sub NEXTKEY { each %err; } sub FIRSTKEY { my $s = scalar keys %err; # initialize iterator each %err; } sub EXISTS { my (undef, $errname) = @_; exists $err{$errname}; } sub _tie_it { tie %{$_[0]}, __PACKAGE__; } __END__ =head1 NAME Errno - System errno constants =head1 SYNOPSIS use Errno qw(EINTR EIO :POSIX); =head1 DESCRIPTION C defines and conditionally exports all the error constants defined in your system F include file. It has a single export tag, C<:POSIX>, which will export all POSIX defined error numbers. On Windows, C also defines and conditionally exports all the Winsock error constants defined in your system F include file. These are included in a second export tag, C<:WINSOCK>. C also makes C<%!> magic such that each element of C<%!> has a non-zero value only if C<$!> is set to that value. For example: my $fh; unless (open($fh, "<", "/fangorn/spouse")) { if ($!{ENOENT}) { warn "Get a wife!\n"; } else { warn "This path is barred: $!"; } } If a specified constant C does not exist on the system, C<$!{EFOO}> returns C<"">. You may use C to check whether the constant is available on the system. Perl automatically loads C the first time you use C<%!>, so you don't need an explicit C. =head1 CAVEATS Importing a particular constant may not be very portable, because the import will fail on platforms that do not have that constant. A more portable way to set C<$!> to a valid value is to use: if (exists &Errno::EFOO) { $! = &Errno::EFOO; } =head1 AUTHOR Graham Barr =head1 COPYRIGHT Copyright (c) 1997-8 Graham Barr. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut # ex: set ro: FILEab6f8fb8/Fcntl.pmJspackage Fcntl; use strict; use Exporter 'import'; require XSLoader; our $VERSION = '1.20'; XSLoader::load(); # Named groups of exports our %EXPORT_TAGS = ( 'flock' => [qw(LOCK_SH LOCK_EX LOCK_NB LOCK_UN)], 'Fcompat' => [qw(FAPPEND FASYNC FCREAT FDEFER FDSYNC FEXCL FLARGEFILE FNDELAY FNONBLOCK FRSYNC FSYNC FTRUNC)], 'seek' => [qw(SEEK_SET SEEK_CUR SEEK_END)], 'mode' => [qw(S_ISUID S_ISGID S_ISVTX S_ISTXT _S_IFMT S_IFREG S_IFDIR S_IFLNK S_IFSOCK S_IFBLK S_IFCHR S_IFIFO S_IFWHT S_ENFMT S_IRUSR S_IWUSR S_IXUSR S_IRWXU S_IRGRP S_IWGRP S_IXGRP S_IRWXG S_IROTH S_IWOTH S_IXOTH S_IRWXO S_IREAD S_IWRITE S_IEXEC S_ISREG S_ISDIR S_ISLNK S_ISSOCK S_ISBLK S_ISCHR S_ISFIFO S_ISWHT S_IFMT S_IMODE )], ); # Items to export into callers namespace by default # (move infrequently used names to @EXPORT_OK below) our @EXPORT = qw( FD_CLOEXEC F_ALLOCSP F_ALLOCSP64 F_COMPAT F_DUP2FD F_DUPFD F_EXLCK F_FREESP F_FREESP64 F_FSYNC F_FSYNC64 F_GETFD F_GETFL F_GETLK F_GETLK64 F_GETOWN F_NODNY F_POSIX F_RDACC F_RDDNY F_RDLCK F_RWACC F_RWDNY F_SETFD F_SETFL F_SETLK F_SETLK64 F_SETLKW F_SETLKW64 F_SETOWN F_SHARE F_SHLCK F_UNLCK F_UNSHARE F_WRACC F_WRDNY F_WRLCK O_ACCMODE O_ALIAS O_APPEND O_ASYNC O_BINARY O_CREAT O_DEFER O_DIRECT O_DIRECTORY O_DSYNC O_EXCL O_EXLOCK O_LARGEFILE O_NDELAY O_NOCTTY O_NOFOLLOW O_NOINHERIT O_NONBLOCK O_RANDOM O_RAW O_RDONLY O_RDWR O_RSRC O_RSYNC O_SEQUENTIAL O_SHLOCK O_SYNC O_TEMPORARY O_TEXT O_TRUNC O_WRONLY ); # Other items we are prepared to export if requested our @EXPORT_OK = (qw( DN_ACCESS DN_ATTRIB DN_CREATE DN_DELETE DN_MODIFY DN_MULTISHOT DN_RENAME F_ADD_SEALS F_GETLEASE F_GETPIPE_SZ F_GET_SEALS F_GETSIG F_NOTIFY F_SEAL_FUTURE_WRITE F_SEAL_GROW F_SEAL_SEAL F_SEAL_SHRINK F_SEAL_WRITE F_SETLEASE F_SETPIPE_SZ F_SETSIG LOCK_MAND LOCK_READ LOCK_RW LOCK_WRITE O_ALT_IO O_EVTONLY O_IGNORE_CTTY O_NOATIME O_NOLINK O_NOSIGPIPE O_NOTRANS O_SYMLINK O_TMPFILE O_TTY_INIT ), map {@{$_}} values %EXPORT_TAGS); 1; __END__ =head1 NAME Fcntl - various flag constants and helper functions from C's fcntl.h =head1 SYNOPSIS use Fcntl; use Fcntl qw(:DEFAULT :flock); use Fcntl qw(F_GETFD F_SETFD FD_CLOEXEC); =head1 DESCRIPTION This module provides flags and helper functions for use with L (S_*), L (F_*), L (LOCK_*), L (SEEK_*), L (S_*), L (O_*), and L (SEEK_*). They correspond to the C macros defined in F. Not all symbols are available on all systems. Except where noted otherwise, the constants and functions provided by this module will throw a runtime exception if the corresponding C macro is not available. Consult your system documentation to see the full description of each symbol and whether it is available on your platform: L, L, L, L, L, L. (In particular, some of the F_* symbols are highly non-portable because they only exist on a single platform or require system-specific C data structures to be passed as the third argument to C, which can't be portably constructed in pure Perl.) =head1 EXPORTED SYMBOLS =head2 Default exports and export tags The full list of default exports can be found below in L. In addition, the following export tags are available (see L for more information on export tags): =over =item C<:DEFAULT> Equivalent to the list of default export symbols (see L). =item C<:flock> Equivalent to all LOCK_* symbols listed below. =item C<:mode> Equivalent to all S_* symbols listed below. =item C<:seek> Equivalent to all SEEK_* symbols listed below. =item C<:Fcompat> Equivalent to C. These only exist for compatibility with old code (if your platform defines them at all) and should not be used in new code. =back =head2 Symbols for use with C =over =item C File storage manipulation. =item C File storage manipulation. =item C Duplicate a file descriptor to the number specified in the third argument to C (if it refers to an open file, it is automatically closed first). =item C Duplicate a file descriptor to the lowest unused number greater than or equal to the third argument of C. =item C File storage manipulation. =item C File storage manipulation. =item C Synchronize file data to disk. =item C Synchronize file data to disk. =item C Return (as a number) the set of file descriptor flags, in which the following bits may be set: =over =item C During a successful C call, the file descriptor will be closed automatically. =back =item C Return (as a number) the set of file description status flags (O_*) as set by C and C. To determine the file access mode, perform a bitwise AND with L> and see whether the result is equal to C, C, or C. =item C Indicate the type of lease associated with the filehandle (if any) by returning one of the following flags: =over =item C A read lease. =item C A write lease. =item C No lease. =back =item C Test for the existence of record locks on the file. =item C Test for the existence of record locks on the file. =item C Return the ID of the process (as a positive number) or group (as a negative number) that is currently receiving signals for events on the file descriptor. =item C Return the capacity of the pipe associated with the filehandle. =item C Return the number of the signal sent when input or output becomes possible on the filehandle. A return value of C<0> means C. =item C File and directory change notification with signals. =over =item C =item C =item C =item C =item C =item C =item C =back Z<> =item C Set the file descriptor flags. See L> for the list of available flags. =item C Set the file description status flags (O_*). Only some flags can be changed this way. =item C Set a file lease as specified by the third C argument, which must be one of the following: =over =item C Set a read lease. =item C Set a write lease. =item C Remove a lease. =back =item C Acquire a record lock. =item C Acquire a record lock. =item C Acquire a record lock and wait for conflicting locks to be released. =item C Acquire a record lock and wait for conflicting locks to be released. =item C Set the ID of the process (as a positive number) or group (as a negative number) that will receive signals for events on the file descriptor. =item C Set the capacity of the pipe associated with the filehandle. Return the actual capacity reserved for the pipe, which may be higher than requested. =item C Set the number of the signal sent when input or output becomes possible on the filehandle. An argument of C<0> means C. =item C Set share reservation. =item C Remove share reservation. =item C =item C =item C =item C =item C =item C =item C =item C =item C =item C =item C =back =head2 Symbols for use with C =over =item C Request an exclusive lock. =item C Request a mandatory lock. =item C Make lock request non-blocking (can be combined with other LOCK_* flags using bitwise OR). =item C With C: Allow concurrent reads. =item C With C: Allow concurrent reads and writes. =item C Request a shared lock. =item C Release a held lock. =item C With C: Allow concurrent writes. =back =head2 Symbols for use with C =over =item C Bit mask for extracting the file access mode (read-only, write-only, or read/write) from the other flags. This is mainly useful in combination with L>. =item C (Mac OS) Open alias file (instead of the file that the alias refers to). =item C (NetBSD) Use alternative I/O semantics. =item C Open the file in append mode. Writes always go to the end of the file. =item C Enable signal-based I/O. When the file becomes readable or writable, a signal is sent. =item C (Windows) Open the file in binary mode. =item C If the file to be opened does not exist yet, create it. =item C (AIX) Changes to the file are kept in memory and not written to disk until the program performs an explicit L<< C<< $fh->sync() >>|IO::Handle/$io->sync >>. =item C Perform direct I/O to/from user-space buffers; avoid caching at the OS level. =item C Fail if the filename to be opened does not refer to a directory. =item C Synchronize file data immediately, like calling L after each write. =item C (Mac OS) Open the file for event notifications, not reading or writing. =item C If the file already exists, fail and set C<$!> to L|Errno> (this only makes sense in combination with C). =item C When the file is opened, atomically obtain an exclusive lock. =item C (Hurd) If the file to be opened is the controlling terminal for this process, don't recognize it as such. Operations on this filehandle won't trigger job control signals. =item C On 32-bit platforms, allow opening files whose size exceeds 2 GiB (2,147,483,647 bytes). =item C Compatibility symbol. Use C instead. =item C Don't update the access time of the file when reading from it. =item C If the process does not have a controlling terminal and the file to be opened is a terminal device, don't make it the controlling terminal of the process. =item C If the final component of the filename is a symbolic link, fail and set C<$!> to L|Errno>. =item C (Windows) Don't let child processes inherit the opened file descriptor. =item C (Hurd) If the file to be opened is a symbolic link, don't follow it; open the link itself. =item C Open the file in non-blocking mode. Neither the open itself nor any read/write operations on the filehandle will block. (This is mainly useful for pipes and sockets. It has no effect on regular files.) =item C If the file to be opened is a pipe, then don't raise C for write operations when the read end of the pipe is closed; make the write fail with C instead. =item C (Hurd) If the file to be opened is specially translated, don't invoke the translator; open the bare file itself. =item C (Windows) Indicate that the program intends to access the file contents randomly (without a predictable pattern). This is an optimization hint for the file cache (but may cause excessive memory use on large files). =item C (Windows) Same as C. =item C Open the file for reading (only). =item C Open the file for reading and writing. =item C (Mac OS) Open the resource fork of the file. =item C Extend the effects of C and C to read operations. In particular, reading from a filehandle opened with C will wait until the access time of the file has been modified on disk. =item C (Windows) Indicate that the program intends to access the file contents sequentially. This is an optimization hint for the file cache. =item C When the file is opened, atomically obtain a shared lock. =item C If the file to be opened is a symbolic link, don't follow it; open the link itself. =item C Synchronize file data and metadata immediately, like calling L after each write. =item C (Windows) Delete the file when its last open file descriptor is closed. =item C (Windows) Open the file in text mode. =item C Create an unnamed temporary file. The filename argument specifies the directory the unnamed file should be placed in. =item C If the file already exists, truncate its contents to length 0. =item C If the file to be opened is a terminal that is not already open in any process, initialize its L> parameters. =item C Open the file for writing (only). =item C Compatibility symbol. Use C instead. =item C Compatibility symbol. Use C instead. =item C Compatibility symbol. Use C instead. =item C Compatibility symbol. Use C instead. =item C Compatibility symbol. Use C instead. =item C Compatibility symbol. Use C instead. =item C Compatibility symbol. Use C instead. =item C Compatibility symbol. Use C instead. =item C Compatibility symbol. Use C instead. =item C Compatibility symbol. Use C instead. =item C Compatibility symbol. Use C instead. =item C Compatibility symbol. Use C instead. =back =head2 Symbols for use with C and C =over =item C File offsets are relative to the current position in the file. =item C File offsets are relative to the end of the file (i.e. mostly negative). =item C File offsets are absolute (i.e. relative to the beginning of the file). =back =head2 Symbols for use with C and C =over =item C Enforce mandatory file locks. (This symbol typically shares its value with C.) =item C Compatibility symbol. Use C instead. =item C File type: Block device. =item C File type: Character device. =item C File type: Directory. =item C File type: Fifo/pipe. =item C File type: Symbolic link. =item C Bit mask for extracting the file type bits. This symbol can also be used as a function: C acts like C<$mode & S_IFMT>. The result will be equal to one of the other S_IF* constants. =item C<_S_IFMT> Bit mask for extracting the file type bits. This symbol is an actual constant and cannot be used as a function; otherwise it is identical to C. =item C File type: Regular file. =item C File type: Socket. =item C File type: Whiteout file (used to mark the absence/deletion of a file in overlays). =item C Function for extracting the permission bits from a file mode. =item C Compatibility symbol. Use C instead. =item C Permissions: Readable by group. =item C Permissions: Readable by others. =item C Permissions: Readable by owner. =item C Bit mask for extracting group permissions. =item C Bit mask for extracting other permissions. =item C Bit mask for extracting owner ("user") permissions. =item C Convenience function to check for block devices: C is equivalent to C. =item C Convenience function to check for character devices: C is equivalent to C. =item C Convenience function to check for directories: C is equivalent to C. =item C Convenience function to check for fifos: C is equivalent to C. =item C Permissions: Set effective group ID from file (when running executables); mandatory locking (on non-group-executable files); new files inherit their group from the directory (on directories). =item C Convenience function to check for symbolic links: C is equivalent to C. =item C Convenience function to check for regular files: C is equivalent to C. =item C Convenience function to check for sockets: C is equivalent to C. =item C Compatibility symbol. Use C instead. =item C Permissions: Set effective user ID from file (when running executables). =item C Permissions: Files in this directory can only be deleted/renamed by their owner (or the directory's owner), even if other users have write permissions to the directory ("sticky bit"). =item C Convenience function to check for whiteout files: C is equivalent to C. =item C Permissions: Writable by group. =item C Permissions: Writable by others. =item C Compatibility symbol. Use C instead. =item C Permissions: Writable by owner. =item C Permissions: Executable/searchable by group. =item C Permissions: Executable/searchable by others. =item C Permissions: Executable/searchable by owner. =back =head1 SEE ALSO L, L, L, L, L, L, L, L, L, L, L, L, L, L =head1 APPENDIX A By default, if you say C, the following symbols are exported: FD_CLOEXEC F_ALLOCSP F_ALLOCSP64 F_COMPAT F_DUP2FD F_DUPFD F_EXLCK F_FREESP F_FREESP64 F_FSYNC F_FSYNC64 F_GETFD F_GETFL F_GETLK F_GETLK64 F_GETOWN F_NODNY F_POSIX F_RDACC F_RDDNY F_RDLCK F_RWACC F_RWDNY F_SETFD F_SETFL F_SETLK F_SETLK64 F_SETLKW F_SETLKW64 F_SETOWN F_SHARE F_SHLCK F_UNLCK F_UNSHARE F_WRACC F_WRDNY F_WRLCK O_ACCMODE O_ALIAS O_APPEND O_ASYNC O_BINARY O_CREAT O_DEFER O_DIRECT O_DIRECTORY O_DSYNC O_EXCL O_EXLOCK O_LARGEFILE O_NDELAY O_NOCTTY O_NOFOLLOW O_NOINHERIT O_NONBLOCK O_RANDOM O_RAW O_RDONLY O_RDWR O_RSRC O_RSYNC O_SEQUENTIAL O_SHLOCK O_SYNC O_TEMPORARY O_TEXT O_TRUNC O_WRONLY =cut FILE52a960aa/File/Glob.pm1cpackage File::Glob; use strict; our($DEFAULT_FLAGS); require XSLoader; # NOTE: The glob() export is only here for compatibility with 5.6.0. # csh_glob() should not be used directly, unless you know what you're doing. our %EXPORT_TAGS = ( 'glob' => [ qw( GLOB_ABEND GLOB_ALPHASORT GLOB_ALTDIRFUNC GLOB_BRACE GLOB_CSH GLOB_ERR GLOB_ERROR GLOB_LIMIT GLOB_MARK GLOB_NOCASE GLOB_NOCHECK GLOB_NOMAGIC GLOB_NOSORT GLOB_NOSPACE GLOB_QUOTE GLOB_TILDE bsd_glob ) ], ); $EXPORT_TAGS{bsd_glob} = [@{$EXPORT_TAGS{glob}}]; our @EXPORT_OK = (@{$EXPORT_TAGS{'glob'}}, 'csh_glob'); our $VERSION = '1.42'; sub import { require Exporter; local $Exporter::ExportLevel = $Exporter::ExportLevel + 1; Exporter::import(grep { my $passthrough; if ($_ eq ':case') { $DEFAULT_FLAGS &= ~GLOB_NOCASE() } elsif ($_ eq ':nocase') { $DEFAULT_FLAGS |= GLOB_NOCASE(); } elsif ($_ eq ':globally') { no warnings 'redefine'; *CORE::GLOBAL::glob = \&File::Glob::csh_glob; } elsif ($_ eq ':bsd_glob') { no strict; *{caller."::glob"} = \&bsd_glob_override; $passthrough = 1; } else { $passthrough = 1; } $passthrough; } @_); } XSLoader::load(); $DEFAULT_FLAGS = GLOB_CSH(); if ($^O =~ /^(?:MSWin32|VMS|os2|riscos)$/) { $DEFAULT_FLAGS |= GLOB_NOCASE(); } 1; __END__ =head1 NAME File::Glob - Perl extension for BSD glob routine =head1 SYNOPSIS use File::Glob ':bsd_glob'; @list = bsd_glob('*.[ch]'); $homedir = bsd_glob('~gnat', GLOB_TILDE | GLOB_ERR); if (GLOB_ERROR) { # an error occurred reading $homedir } ## override the core glob (CORE::glob() does this automatically ## by default anyway, since v5.6.0) use File::Glob ':globally'; my @sources = <*.{c,h,y}>; ## override the core glob, forcing case sensitivity use File::Glob qw(:globally :case); my @sources = <*.{c,h,y}>; ## override the core glob forcing case insensitivity use File::Glob qw(:globally :nocase); my @sources = <*.{c,h,y}>; ## glob on all files in home directory use File::Glob ':globally'; my @sources = <~gnat/*>; =head1 DESCRIPTION The glob angle-bracket operator C<< <> >> is a pathname generator that implements the rules for file name pattern matching used by Unix-like shells such as the Bourne shell or C shell. File::Glob::bsd_glob() implements the FreeBSD glob(3) routine, which is a superset of the POSIX glob() (described in IEEE Std 1003.2 "POSIX.2"). bsd_glob() takes a mandatory C argument, and an optional C argument, and returns a list of filenames matching the pattern, with interpretation of the pattern modified by the C variable. Since v5.6.0, Perl's CORE::glob() is implemented in terms of bsd_glob(). Note that they don't share the same prototype--CORE::glob() only accepts a single argument. Due to historical reasons, CORE::glob() will also split its argument on whitespace, treating it as multiple patterns, whereas bsd_glob() considers them as one pattern. But see C<:bsd_glob> under L, below. =head2 META CHARACTERS \ Quote the next metacharacter [] Character class {} Multiple pattern * Match any string of characters ? Match any single character ~ User name home directory The metanotation C is a shorthand for C. Left to right order is preserved, with results of matches being sorted separately at a low level to preserve this order. As a special case C<{>, C<}>, and C<{}> are passed undisturbed. =head2 EXPORTS See also the L below, which can be exported individually. =head3 C<:bsd_glob> The C<:bsd_glob> export tag exports bsd_glob() and the constants listed below. It also overrides glob() in the calling package with one that behaves like bsd_glob() with regard to spaces (the space is treated as part of a file name), but supports iteration in scalar context; i.e., it preserves the core function's feature of returning the next item each time it is called. =head3 C<:glob> The C<:glob> tag, now discouraged, is the old version of C<:bsd_glob>. It exports the same constants and functions, but its glob() override does not support iteration; it returns the last file name in scalar context. That means this will loop forever: use File::Glob ':glob'; while (my $file = <* copy.txt>) { ... } =head3 C This function, which is included in the two export tags listed above, takes one or two arguments. The first is the glob pattern. The second, if given, is a set of flags ORed together. The available flags and the default set of flags are listed below under L. Remember that to use the named constants for flags you must import them, for example with C<:bsd_glob> described above. If not imported, and C is not in effect, then the constants will be treated as bareword strings, which won't do what you what. =head3 C<:nocase> and C<:case> These two export tags globally modify the default flags that bsd_glob() and, except on VMS, Perl's built-in C operator use. C is turned on or off, respectively. =head3 C The csh_glob() function can also be exported, but you should not use it directly unless you really know what you are doing. It splits the pattern into words and feeds each one to bsd_glob(). Perl's own glob() function uses this internally. =head2 POSIX FLAGS If no flags argument is given then C is set, and on VMS and Windows systems, C too. Otherwise the flags to use are determined solely by the flags argument. The POSIX defined flags are: =over 4 =item C Force bsd_glob() to return an error when it encounters a directory it cannot open or read. Ordinarily bsd_glob() continues to find matches. =item C Make bsd_glob() return an error (GLOB_NOSPACE) when the pattern expands to a size bigger than the system constant C (usually found in limits.h). If your system does not define this constant, bsd_glob() uses C or C<_POSIX_ARG_MAX> where available (in that order). You can inspect these values using the standard C extension. =item C Each pathname that is a directory that matches the pattern has a slash appended. =item C By default, file names are assumed to be case sensitive; this flag makes bsd_glob() treat case differences as not significant. =item C If the pattern does not match any pathname, then bsd_glob() returns a list consisting of only the pattern. If C is set, its effect is present in the pattern returned. =item C By default, the pathnames are sorted in ascending ASCII order; this flag prevents that sorting (speeding up bsd_glob()). =back The FreeBSD extensions to the POSIX standard are the following flags: =over 4 =item C Pre-process the string to expand C<{pat,pat,...}> strings like csh(1). The pattern '{}' is left unexpanded for historical reasons (and csh(1) does the same thing to ease typing of find(1) patterns). =item C Same as C but it only returns the pattern if it does not contain any of the special characters "*", "?" or "[". C is provided to simplify implementing the historic csh(1) globbing behaviour and should probably not be used anywhere else. =item C Use the backslash ('\') character for quoting: every occurrence of a backslash followed by a character in the pattern is replaced by that character, avoiding any special interpretation of the character. (But see below for exceptions on DOSISH systems). =item C Expand patterns that start with '~' to user name home directories. =item C For convenience, C is a synonym for C. =back The POSIX provided C, C, and the FreeBSD extensions C, and C flags have not been implemented in the Perl version because they involve more complex interaction with the underlying C structures. The following flag has been added in the Perl implementation for csh compatibility: =over 4 =item C If C is not in effect, sort filenames is alphabetical order (case does not matter) rather than in ASCII order. =back =head1 DIAGNOSTICS bsd_glob() returns a list of matching paths, possibly zero length. If an error occurred, &File::Glob::GLOB_ERROR will be non-zero and C<$!> will be set. &File::Glob::GLOB_ERROR is guaranteed to be zero if no error occurred, or one of the following values otherwise: =over 4 =item C An attempt to allocate memory failed. =item C The glob was stopped because an error was encountered. =back In the case where bsd_glob() has found some matching paths, but is interrupted by an error, it will return a list of filenames B set &File::Glob::ERROR. Note that bsd_glob() deviates from POSIX and FreeBSD glob(3) behaviour by not considering C and C as errors - bsd_glob() will continue processing despite those errors, unless the C flag is set. Be aware that all filenames returned from File::Glob are tainted. =head1 NOTES =over 4 =item * If you want to use multiple patterns, e.g. C, you should probably throw them in a set as in C. This is because the argument to bsd_glob() isn't subjected to parsing by the C shell. Remember that you can use a backslash to escape things. =item * On DOSISH systems, backslash is a valid directory separator character. In this case, use of backslash as a quoting character (via GLOB_QUOTE) interferes with the use of backslash as a directory separator. The best (simplest, most portable) solution is to use forward slashes for directory separators, and backslashes for quoting. However, this does not match "normal practice" on these systems. As a concession to user expectation, therefore, backslashes (under GLOB_QUOTE) only quote the glob metacharacters '[', ']', '{', '}', '-', '~', and backslash itself. All other backslashes are passed through unchanged. =item * Win32 users should use the real slash. If you really want to use backslashes, consider using Sarathy's File::DosGlob, which comes with the standard Perl distribution. =back =head1 SEE ALSO L, glob(3) =head1 AUTHOR The Perl interface was written by Nathan Torkington Egnat@frii.comE, and is released under the artistic license. Further modifications were made by Greg Bacon Egbacon@cs.uah.eduE, Gurusamy Sarathy Egsar@activestate.comE, and Thomas Wegner Ewegner_thomas@yahoo.comE. The C glob code has the following copyright: Copyright (c) 1989, 1993 The Regents of the University of California. All rights reserved. This code is derived from software contributed to Berkeley by Guido van Rossum. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: =over 4 =item 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. =item 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. =item 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. =back THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. =cut FILEd4f5eb3d/File/Spec.pm)package File::Spec; use strict; # Keep $VERSION consistent in all *.pm files in this distribution, including # Cwd.pm. our $VERSION = '3.94'; $VERSION =~ tr/_//d; my %module = ( MSWin32 => 'Win32', os2 => 'OS2', VMS => 'VMS', NetWare => 'Win32', # Yes, File::Spec::Win32 works on NetWare. symbian => 'Win32', # Yes, File::Spec::Win32 works on symbian. dos => 'OS2', # Yes, File::Spec::OS2 works on DJGPP. cygwin => 'Cygwin', amigaos => 'AmigaOS'); my $module = $module{$^O} || 'Unix'; require "File/Spec/$module.pm"; our @ISA = ("File::Spec::$module"); 1; __END__ =head1 NAME File::Spec - portably perform operations on file names =head1 SYNOPSIS use File::Spec; my $x = File::Spec->catfile('a', 'b', 'c'); which returns 'a/b/c' under Unix. Or: use File::Spec::Functions; my $x = catfile('a', 'b', 'c'); =head1 DESCRIPTION This module is designed to support operations commonly performed on file specifications (usually called "file names", but not to be confused with the contents of a file, or Perl's file handles), such as concatenating several directory and file names into a single path, or determining whether a path is rooted. It is based on code directly taken from MakeMaker 5.17, code written by Andreas KEnig, Andy Dougherty, Charles Bailey, Ilya Zakharevich, Paul Schinder, and others. Since these functions are different for most operating systems, each set of OS specific routines is available in a separate module, including: File::Spec::Unix File::Spec::Mac File::Spec::OS2 File::Spec::Win32 File::Spec::VMS The module appropriate for the current OS is automatically loaded by File::Spec. Since some modules (like VMS) make use of facilities available only under that OS, it may not be possible to load all modules under all operating systems. Since File::Spec is object oriented, subroutines should not be called directly, as in: File::Spec::catfile('a','b'); but rather as class methods: File::Spec->catfile('a','b'); For simple uses, L provides convenient functional forms of these methods. =head1 METHODS =over 2 =item canonpath X No physical check on the filesystem, but a logical cleanup of a path. $cpath = File::Spec->canonpath( $path ) ; Note that this does *not* collapse F sections into F. This is by design. If F on your system is a symlink to F, then F is actually F, not F as a naive F<../>-removal would give you. If you want to do this kind of processing, you probably want C's C function to actually traverse the filesystem cleaning up paths like this. =item catdir X Concatenate two or more directory names to form a complete path ending with a directory. But remove the trailing slash from the resulting string, because it doesn't look good, isn't necessary and confuses OS/2. Of course, if this is the root directory, don't cut off the trailing slash :-) $path = File::Spec->catdir( @directories ); =item catfile X Concatenate one or more directory names and a filename to form a complete path ending with a filename $path = File::Spec->catfile( @directories, $filename ); =item curdir X Returns a string representation of the current directory. $curdir = File::Spec->curdir(); =item devnull X Returns a string representation of the null device. $devnull = File::Spec->devnull(); =item rootdir X Returns a string representation of the root directory. $rootdir = File::Spec->rootdir(); =item tmpdir X Returns a string representation of the first writable directory from a list of possible temporary directories. Returns the current directory if no writable temporary directories are found. The list of directories checked depends on the platform; e.g. File::Spec::Unix checks C<$ENV{TMPDIR}> (unless taint is on) and F. $tmpdir = File::Spec->tmpdir(); =item updir X Returns a string representation of the parent directory. $updir = File::Spec->updir(); =item no_upwards Given a list of files in a directory (such as from C), strip out C<'.'> and C<'..'>. B This does NOT filter paths containing C<'..'>, like C<'../../../../etc/passwd'>, only literal matches to C<'.'> and C<'..'>. @paths = File::Spec->no_upwards( readdir $dirhandle ); =item case_tolerant Returns a true or false value indicating, respectively, that alphabetic case is not or is significant when comparing file specifications. Cygwin and Win32 accept an optional drive argument. $is_case_tolerant = File::Spec->case_tolerant(); =item file_name_is_absolute Takes as its argument a path, and returns true if it is an absolute path. $is_absolute = File::Spec->file_name_is_absolute( $path ); This does not consult the local filesystem on Unix, Win32, OS/2, or Mac OS (Classic). It does consult the working environment for VMS (see L). =item path X Takes no argument. Returns the environment variable C (or the local platform's equivalent) as a list. @PATH = File::Spec->path(); =item join X join is the same as catfile. =item splitpath X X Splits a path in to volume, directory, and filename portions. On systems with no concept of volume, returns '' for volume. ($volume,$directories,$file) = File::Spec->splitpath( $path ); ($volume,$directories,$file) = File::Spec->splitpath( $path, $no_file ); For systems with no syntax differentiating filenames from directories, assumes that the last file is a path unless C<$no_file> is true or a trailing separator or F or F is present. On Unix, this means that C<$no_file> true makes this return ( '', $path, '' ). The directory portion may or may not be returned with a trailing '/'. The results can be passed to L to get back a path equivalent to (usually identical to) the original path. =item splitdir X X The opposite of L. @dirs = File::Spec->splitdir( $directories ); C<$directories> must be only the directory portion of the path on systems that have the concept of a volume or that have path syntax that differentiates files from directories. Unlike just splitting the directories on the separator, empty directory names (C<''>) can be returned, because these are significant on some OSes. =item catpath() Takes volume, directory and file portions and returns an entire path. Under Unix, C<$volume> is ignored, and directory and file are concatenated. A '/' is inserted if need be. On other OSes, C<$volume> is significant. $full_path = File::Spec->catpath( $volume, $directory, $file ); =item abs2rel X X X Takes a destination path and an optional base path returns a relative path from the base path to the destination path: $rel_path = File::Spec->abs2rel( $path ) ; $rel_path = File::Spec->abs2rel( $path, $base ) ; If C<$base> is not present or '', then L is used. If C<$base> is relative, then it is converted to absolute form using L. This means that it is taken to be relative to L. On systems with the concept of volume, if C<$path> and C<$base> appear to be on two different volumes, we will not attempt to resolve the two paths, and we will instead simply return C<$path>. Note that previous versions of this module ignored the volume of C<$base>, which resulted in garbage results part of the time. On systems that have a grammar that indicates filenames, this ignores the C<$base> filename as well. Otherwise all path components are assumed to be directories. If C<$path> is relative, it is converted to absolute form using L. This means that it is taken to be relative to L. No checks against the filesystem are made. On VMS, there is interaction with the working environment, as logicals and macros are expanded. Based on code written by Shigio Yamaguchi. =item rel2abs() X X X Converts a relative path to an absolute path. $abs_path = File::Spec->rel2abs( $path ) ; $abs_path = File::Spec->rel2abs( $path, $base ) ; If C<$base> is not present or '', then L is used. If C<$base> is relative, then it is converted to absolute form using L. This means that it is taken to be relative to L. On systems with the concept of volume, if C<$path> and C<$base> appear to be on two different volumes, we will not attempt to resolve the two paths, and we will instead simply return C<$path>. Note that previous versions of this module ignored the volume of C<$base>, which resulted in garbage results part of the time. On systems that have a grammar that indicates filenames, this ignores the C<$base> filename as well. Otherwise all path components are assumed to be directories. If C<$path> is absolute, it is cleaned up and returned using L. No checks against the filesystem are made. On VMS, there is interaction with the working environment, as logicals and macros are expanded. Based on code written by Shigio Yamaguchi. =back For further information, please see L, L, L, L, or L. =head1 SEE ALSO L, L, L, L, L, L, L =head1 AUTHOR Maintained by perl5-porters >. The vast majority of the code was written by Kenneth Albanowski C<< >>, Andy Dougherty C<< >>, Andreas KEnig C<< >>, Tim Bunce C<< >>. VMS support by Charles Bailey C<< >>. OS/2 support by Ilya Zakharevich C<< >>. Mac support by Paul Schinder C<< >>, and Thomas Wegner C<< >>. abs2rel() and rel2abs() written by Shigio Yamaguchi C<< >>, modified by Barrie Slaymaker C<< >>. splitpath(), splitdir(), catpath() and catdir() by Barrie Slaymaker. =head1 COPYRIGHT Copyright (c) 2004-2013 by the Perl 5 Porters. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut FILEc3337512/File/Spec/Unix.pm> package File::Spec::Unix; use strict; use Cwd (); our $VERSION = '3.94'; $VERSION =~ tr/_//d; =head1 NAME File::Spec::Unix - File::Spec for Unix, base for other File::Spec modules =head1 SYNOPSIS require File::Spec::Unix; # Done automatically by File::Spec =head1 DESCRIPTION Methods for manipulating file specifications. Other File::Spec modules, such as File::Spec::Mac, inherit from File::Spec::Unix and override specific methods. =head1 METHODS =over 2 =item canonpath() No physical check on the filesystem, but a logical cleanup of a path. On UNIX eliminates successive slashes and successive "/.". $cpath = File::Spec->canonpath( $path ) ; Note that this does *not* collapse F sections into F. This is by design. If F on your system is a symlink to F, then F is actually F, not F as a naive F<../>-removal would give you. If you want to do this kind of processing, you probably want C's C function to actually traverse the filesystem cleaning up paths like this. =cut sub _pp_canonpath { my ($self,$path) = @_; return unless defined $path; # Handle POSIX-style node names beginning with double slash (qnx, nto) # (POSIX says: "a pathname that begins with two successive slashes # may be interpreted in an implementation-defined manner, although # more than two leading slashes shall be treated as a single slash.") my $node = ''; my $double_slashes_special = $^O eq 'qnx' || $^O eq 'nto'; if ( $double_slashes_special && ( $path =~ s{^(//[^/]+)/?\z}{}s || $path =~ s{^(//[^/]+)/}{/}s ) ) { $node = $1; } # This used to be # $path =~ s|/+|/|g unless ($^O eq 'cygwin'); # but that made tests 29, 30, 35, 46, and 213 (as of #13272) to fail # (Mainly because trailing "" directories didn't get stripped). # Why would cygwin avoid collapsing multiple slashes into one? --jhi $path =~ s|/{2,}|/|g; # xx////xx -> xx/xx $path =~ s{(?:/\.)+(?:/|\z)}{/}g; # xx/././xx -> xx/xx $path =~ s|^(?:\./)+||s unless $path eq "./"; # ./xx -> xx $path =~ s|^/(?:\.\./)+|/|; # /../../xx -> xx $path =~ s|^/\.\.$|/|; # /.. -> / $path =~ s|/\z|| unless $path eq "/"; # xx/ -> xx return "$node$path"; } *canonpath = \&_pp_canonpath unless defined &canonpath; =item catdir() Concatenate two or more directory names to form a complete path ending with a directory. But remove the trailing slash from the resulting string, because it doesn't look good, isn't necessary and confuses OS2. Of course, if this is the root directory, don't cut off the trailing slash :-) =cut sub _pp_catdir { my $self = shift; $self->canonpath(join('/', @_, '')); # '' because need a trailing '/' } *catdir = \&_pp_catdir unless defined &catdir; =item catfile Concatenate one or more directory names and a filename to form a complete path ending with a filename =cut sub _pp_catfile { my $self = shift; my $file = $self->canonpath(pop @_); return $file unless @_; my $dir = $self->catdir(@_); $dir .= "/" unless substr($dir,-1) eq "/"; return $dir.$file; } *catfile = \&_pp_catfile unless defined &catfile; =item curdir Returns a string representation of the current directory. "." on UNIX. =cut sub curdir { '.' } use constant _fn_curdir => "."; =item devnull Returns a string representation of the null device. "/dev/null" on UNIX. =cut sub devnull { '/dev/null' } use constant _fn_devnull => "/dev/null"; =item rootdir Returns a string representation of the root directory. "/" on UNIX. =cut sub rootdir { '/' } use constant _fn_rootdir => "/"; =item tmpdir Returns a string representation of the first writable directory from the following list or the current directory if none from the list are writable: $ENV{TMPDIR} /tmp If running under taint mode, and if $ENV{TMPDIR} is tainted, it is not used. =cut my ($tmpdir, %tmpenv); # Cache and return the calculated tmpdir, recording which env vars # determined it. sub _cache_tmpdir { @tmpenv{@_[2..$#_]} = @ENV{@_[2..$#_]}; return $tmpdir = $_[1]; } # Retrieve the cached tmpdir, checking first whether relevant env vars have # changed and invalidated the cache. sub _cached_tmpdir { shift; local $^W; return if grep $ENV{$_} ne $tmpenv{$_}, @_; return $tmpdir; } sub _tmpdir { my $self = shift; my @dirlist = @_; my $taint = do { no strict 'refs'; ${"\cTAINT"} }; if ($taint) { # Check for taint mode on perl >= 5.8.0 require Scalar::Util; @dirlist = grep { ! Scalar::Util::tainted($_) } @dirlist; } elsif ($] < 5.007) { # No ${^TAINT} before 5.8 @dirlist = grep { !defined($_) || eval { eval('1'.substr $_,0,0) } } @dirlist; } foreach (@dirlist) { next unless defined && -d && -w _; $tmpdir = $_; last; } $tmpdir = $self->curdir unless defined $tmpdir; $tmpdir = defined $tmpdir && $self->canonpath($tmpdir); if ( !$self->file_name_is_absolute($tmpdir) ) { # See [perl #120593] for the full details # If possible, return a full path, rather than '.' or 'lib', but # jump through some hoops to avoid returning a tainted value. ($tmpdir) = grep { $taint ? ! Scalar::Util::tainted($_) : $] < 5.007 ? eval { eval('1'.substr $_,0,0) } : 1 } $self->rel2abs($tmpdir), $tmpdir; } return $tmpdir; } sub tmpdir { my $cached = $_[0]->_cached_tmpdir('TMPDIR'); return $cached if defined $cached; $_[0]->_cache_tmpdir($_[0]->_tmpdir( $ENV{TMPDIR}, "/tmp" ), 'TMPDIR'); } =item updir Returns a string representation of the parent directory. ".." on UNIX. =cut sub updir { '..' } use constant _fn_updir => ".."; =item no_upwards Given a list of file names, strip out those that refer to a parent directory. (Does not strip symlinks, only '.', '..', and equivalents.) =cut sub no_upwards { my $self = shift; return grep(!/^\.{1,2}\z/s, @_); } =item case_tolerant Returns a true or false value indicating, respectively, that alphabetic is not or is significant when comparing file specifications. =cut sub case_tolerant { 0 } use constant _fn_case_tolerant => 0; =item file_name_is_absolute Takes as argument a path and returns true if it is an absolute path. This does not consult the local filesystem on Unix, Win32, OS/2 or Mac OS (Classic). It does consult the working environment for VMS (see L). =cut sub file_name_is_absolute { my ($self,$file) = @_; return scalar($file =~ m:^/:s); } =item path Takes no argument, returns the environment variable PATH as an array. =cut sub path { return () unless exists $ENV{PATH}; my @path = split(':', $ENV{PATH}, -1); foreach (@path) { $_ = '.' if $_ eq '' } return @path; } =item join join is the same as catfile. =cut sub join { my $self = shift; return $self->catfile(@_); } =item splitpath ($volume,$directories,$file) = File::Spec->splitpath( $path ); ($volume,$directories,$file) = File::Spec->splitpath( $path, $no_file ); Splits a path into volume, directory, and filename portions. On systems with no concept of volume, returns '' for volume. For systems with no syntax differentiating filenames from directories, assumes that the last file is a path unless $no_file is true or a trailing separator or /. or /.. is present. On Unix this means that $no_file true makes this return ( '', $path, '' ). The directory portion may or may not be returned with a trailing '/'. The results can be passed to L to get back a path equivalent to (usually identical to) the original path. =cut sub splitpath { my ($self,$path, $nofile) = @_; my ($volume,$directory,$file) = ('','',''); if ( $nofile ) { $directory = $path; } else { $path =~ m|^ ( (?: .* / (?: \.\.?\z )? )? ) ([^/]*) |xs; $directory = $1; $file = $2; } return ($volume,$directory,$file); } =item splitdir The opposite of L. @dirs = File::Spec->splitdir( $directories ); $directories must be only the directory portion of the path on systems that have the concept of a volume or that have path syntax that differentiates files from directories. Unlike just splitting the directories on the separator, empty directory names (C<''>) can be returned, because these are significant on some OSs. On Unix, File::Spec->splitdir( "/a/b//c/" ); Yields: ( '', 'a', 'b', '', 'c', '' ) =cut sub splitdir { return split m|/|, $_[1], -1; # Preserve trailing fields } =item catpath() Takes volume, directory and file portions and returns an entire path. Under Unix, $volume is ignored, and directory and file are concatenated. A '/' is inserted if needed (though if the directory portion doesn't start with '/' it is not added). On other OSs, $volume is significant. =cut sub catpath { my ($self,$volume,$directory,$file) = @_; if ( $directory ne '' && $file ne '' && substr( $directory, -1 ) ne '/' && substr( $file, 0, 1 ) ne '/' ) { $directory .= "/$file" ; } else { $directory .= $file ; } return $directory ; } =item abs2rel Takes a destination path and an optional base path returns a relative path from the base path to the destination path: $rel_path = File::Spec->abs2rel( $path ) ; $rel_path = File::Spec->abs2rel( $path, $base ) ; If $base is not present or '', then L is used. If $base is relative, then it is converted to absolute form using L. This means that it is taken to be relative to L. On systems that have a grammar that indicates filenames, this ignores the $base filename. Otherwise all path components are assumed to be directories. If $path is relative, it is converted to absolute form using L. This means that it is taken to be relative to L. No checks against the filesystem are made, so the result may not be correct if C<$base> contains symbolic links. (Apply L beforehand if that is a concern.) On VMS, there is interaction with the working environment, as logicals and macros are expanded. Based on code written by Shigio Yamaguchi. =cut sub abs2rel { my($self,$path,$base) = @_; $base = Cwd::getcwd() unless defined $base and length $base; ($path, $base) = map $self->canonpath($_), $path, $base; my $path_directories; my $base_directories; if (grep $self->file_name_is_absolute($_), $path, $base) { ($path, $base) = map $self->rel2abs($_), $path, $base; my ($path_volume) = $self->splitpath($path, 1); my ($base_volume) = $self->splitpath($base, 1); # Can't relativize across volumes return $path unless $path_volume eq $base_volume; $path_directories = ($self->splitpath($path, 1))[1]; $base_directories = ($self->splitpath($base, 1))[1]; # For UNC paths, the user might give a volume like //foo/bar that # strictly speaking has no directory portion. Treat it as if it # had the root directory for that volume. if (!length($base_directories) and $self->file_name_is_absolute($base)) { $base_directories = $self->rootdir; } } else { my $wd= ($self->splitpath(Cwd::getcwd(), 1))[1]; $path_directories = $self->catdir($wd, $path); $base_directories = $self->catdir($wd, $base); } # Now, remove all leading components that are the same my @pathchunks = $self->splitdir( $path_directories ); my @basechunks = $self->splitdir( $base_directories ); if ($base_directories eq $self->rootdir) { return $self->curdir if $path_directories eq $self->rootdir; shift @pathchunks; return $self->canonpath( $self->catpath('', $self->catdir( @pathchunks ), '') ); } my @common; while (@pathchunks && @basechunks && $self->_same($pathchunks[0], $basechunks[0])) { push @common, shift @pathchunks ; shift @basechunks ; } return $self->curdir unless @pathchunks || @basechunks; # @basechunks now contains the directories the resulting relative path # must ascend out of before it can descend to $path_directory. If there # are updir components, we must descend into the corresponding directories # (this only works if they are no symlinks). my @reverse_base; while( defined(my $dir= shift @basechunks) ) { if( $dir ne $self->updir ) { unshift @reverse_base, $self->updir; push @common, $dir; } elsif( @common ) { if( @reverse_base && $reverse_base[0] eq $self->updir ) { shift @reverse_base; pop @common; } else { unshift @reverse_base, pop @common; } } } my $result_dirs = $self->catdir( @reverse_base, @pathchunks ); return $self->canonpath( $self->catpath('', $result_dirs, '') ); } sub _same { $_[1] eq $_[2]; } =item rel2abs() Converts a relative path to an absolute path. $abs_path = File::Spec->rel2abs( $path ) ; $abs_path = File::Spec->rel2abs( $path, $base ) ; If $base is not present or '', then L is used. If $base is relative, then it is converted to absolute form using L. This means that it is taken to be relative to L. On systems that have a grammar that indicates filenames, this ignores the $base filename. Otherwise all path components are assumed to be directories. If $path is absolute, it is cleaned up and returned using L. No checks against the filesystem are made. On VMS, there is interaction with the working environment, as logicals and macros are expanded. Based on code written by Shigio Yamaguchi. =cut sub rel2abs { my ($self,$path,$base ) = @_; # Clean up $path if ( ! $self->file_name_is_absolute( $path ) ) { # Figure out the effective $base and clean it up. if ( !defined( $base ) || $base eq '' ) { $base = Cwd::getcwd(); } elsif ( ! $self->file_name_is_absolute( $base ) ) { $base = $self->rel2abs( $base ) ; } else { $base = $self->canonpath( $base ) ; } # Glom them together $path = $self->catdir( $base, $path ) ; } return $self->canonpath( $path ) ; } =back =head1 COPYRIGHT Copyright (c) 2004 by the Perl 5 Porters. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. Please submit bug reports at L. =head1 SEE ALSO L =cut # Internal method to reduce xx\..\yy -> yy sub _collapse { my($fs, $path) = @_; my $updir = $fs->updir; my $curdir = $fs->curdir; my($vol, $dirs, $file) = $fs->splitpath($path); my @dirs = $fs->splitdir($dirs); pop @dirs if @dirs && $dirs[-1] eq ''; my @collapsed; foreach my $dir (@dirs) { if( $dir eq $updir and # if we have an updir @collapsed and # and something to collapse length $collapsed[-1] and # and its not the rootdir $collapsed[-1] ne $updir and # nor another updir $collapsed[-1] ne $curdir # nor the curdir ) { # then pop @collapsed; # collapse } else { # else push @collapsed, $dir; # just hang onto it } } return $fs->catpath($vol, $fs->catdir(@collapsed), $file ); } 1; FILE30c8f929/IO.pm# package IO; use XSLoader (); use Carp; use strict; use warnings; our $VERSION = "1.55"; XSLoader::load 'IO', $VERSION; sub import { shift; warnings::warnif('deprecated', qq{Parameterless "use IO" deprecated}) if @_ == 0 ; my @l = @_ ? @_ : qw(Handle Seekable File Pipe Socket Dir); local @INC = @INC; pop @INC if $INC[-1] eq '.'; eval join("", map { "require IO::" . (/(\w+)/)[0] . ";\n" } @l) or croak $@; } 1; __END__ =head1 NAME IO - load various IO modules =head1 SYNOPSIS use IO qw(Handle File); # loads IO modules, here IO::Handle, IO::File use IO; # DEPRECATED =head1 DESCRIPTION C provides a simple mechanism to load several of the IO modules in one go. The IO modules belonging to the core are: IO::Handle IO::Seekable IO::File IO::Pipe IO::Socket IO::Dir IO::Select IO::Poll Some other IO modules don't belong to the perl core but can be loaded as well if they have been installed from CPAN. You can discover which ones exist with this query: L. For more information on any of these modules, please see its respective documentation. =head1 DEPRECATED use IO; # loads all the modules listed below The loaded modules are IO::Handle, IO::Seekable, IO::File, IO::Pipe, IO::Socket, IO::Dir. You should instead explicitly import the IO modules you want. =cut FILEc009e5ec/IO/File.pm:# package IO::File; =head1 NAME IO::File - supply object methods for filehandles =head1 SYNOPSIS use IO::File; my $fh = IO::File->new(); if ($fh->open("< file")) { print <$fh>; $fh->close; } my $fh = IO::File->new("> file"); if (defined $fh) { print $fh "bar\n"; $fh->close; } my $fh = IO::File->new("file", "r"); if (defined $fh) { print <$fh>; undef $fh; # automatically closes the file } my $fh = IO::File->new("file", O_WRONLY|O_APPEND); if (defined $fh) { print $fh "corge\n"; my $pos = $fh->getpos; $fh->setpos($pos); undef $fh; # automatically closes the file } autoflush STDOUT 1; =head1 DESCRIPTION C inherits from C and C. It extends these classes with methods that are specific to file handles. =head1 CONSTRUCTOR =over 4 =item new ( FILENAME [,MODE [,PERMS]] ) Creates an C. If it receives any parameters, they are passed to the method C; if the open fails, the object is destroyed. Otherwise, it is returned to the caller. =item new_tmpfile Creates an C opened for read/write on a newly created temporary file. On systems where this is possible, the temporary file is anonymous (i.e. it is unlinked after creation, but held open). If the temporary file cannot be created or opened, the C object is destroyed. Otherwise, it is returned to the caller. =back =head1 METHODS =over 4 =item open( FILENAME [,MODE [,PERMS]] ) =item open( FILENAME, IOLAYERS ) C accepts one, two or three parameters. With one parameter, it is just a front end for the built-in C function. With two or three parameters, the first parameter is a filename that may include whitespace or other special characters, and the second parameter is the open mode, optionally followed by a file permission value. If C receives a Perl mode string ("E", "+E", etc.) or an ANSI C fopen() mode string ("w", "r+", etc.), it uses the basic Perl C operator (but protects any special characters). If C is given a numeric mode, it passes that mode and the optional permissions value to the Perl C operator. The permissions default to 0666. If C is given a mode that includes the C<:> character, it passes all the three arguments to the three-argument C operator. For convenience, C exports the O_XXX constants from the Fcntl module, if this module is available. =back =head1 NOTE Some operating systems may perform C or C on a directory without errors. This behavior is not portable and not suggested for use. Using C and C or C are suggested instead. =head1 SEE ALSO L, L, L, L, L =head1 HISTORY Derived from FileHandle.pm by Graham Barr EFE. =cut use 5.008_001; use strict; use Carp; use Symbol; use SelectSaver; use IO::Seekable; require Exporter; our @ISA = qw(IO::Handle IO::Seekable Exporter); our $VERSION = "1.55"; our @EXPORT = @IO::Seekable::EXPORT; eval { # Make all Fcntl O_XXX constants available for importing require Fcntl; my @O = grep /^O_/, @Fcntl::EXPORT; Fcntl->import(@O); # first we import what we want to export push(@EXPORT, @O); }; ################################################ ## Constructor ## sub new { my $type = shift; my $class = ref($type) || $type || "IO::File"; @_ >= 0 && @_ <= 3 or croak "usage: $class->new([FILENAME [,MODE [,PERMS]]])"; my $fh = $class->SUPER::new(); if (@_) { $fh->open(@_) or return undef; } $fh; } ################################################ ## Open ## sub open { @_ >= 2 && @_ <= 4 or croak 'usage: $fh->open(FILENAME [,MODE [,PERMS]])'; my ($fh, $file) = @_; if (@_ > 2) { my ($mode, $perms) = @_[2, 3]; if ($mode =~ /^\d+$/) { defined $perms or $perms = 0666; return sysopen($fh, $file, $mode, $perms); } elsif ($mode =~ /:/) { return open($fh, $mode, $file) if @_ == 3; croak 'usage: $fh->open(FILENAME, IOLAYERS)'; } else { return open($fh, IO::Handle::_open_mode_string($mode), $file); } } open($fh, $file); } 1; FILE4f66e782/IO/Handle.pmBpackage IO::Handle; =head1 NAME IO::Handle - supply object methods for I/O handles =head1 SYNOPSIS use IO::Handle; my $io = IO::Handle->new(); if ($io->fdopen(fileno(STDIN),"r")) { print $io->getline; $io->close; } my $io = IO::Handle->new(); if ($io->fdopen(fileno(STDOUT),"w")) { $io->print("Some text\n"); } # setvbuf is not available by default on Perls 5.8.0 and later. use IO::Handle '_IOLBF'; $io->setvbuf(my $buffer_var, _IOLBF, 1024); undef $io; # automatically closes the file if it's open autoflush STDOUT 1; =head1 DESCRIPTION C is the base class for all other IO handle classes. It is not intended that objects of C would be created directly, but instead C is inherited from by several other classes in the IO hierarchy. If you are reading this documentation, looking for a replacement for the C package, then I suggest you read the documentation for C too. =head1 CONSTRUCTOR =over 4 =item new () Creates a new C object. =item new_from_fd ( FD, MODE ) Creates an C like C does. It requires two parameters, which are passed to the method C; if the fdopen fails, the object is destroyed. Otherwise, it is returned to the caller. =back =head1 METHODS See L for complete descriptions of each of the following supported C methods, which are just front ends for the corresponding built-in functions: $io->close $io->eof $io->fcntl( FUNCTION, SCALAR ) $io->fileno $io->format_write( [FORMAT_NAME] ) $io->getc $io->ioctl( FUNCTION, SCALAR ) $io->read ( BUF, LEN, [OFFSET] ) $io->print ( ARGS ) $io->printf ( FMT, [ARGS] ) $io->say ( ARGS ) $io->stat $io->sysread ( BUF, LEN, [OFFSET] ) $io->syswrite ( BUF, [LEN, [OFFSET]] ) $io->truncate ( LEN ) See L for complete descriptions of each of the following supported C methods. All of them return the previous value of the attribute and takes an optional single argument that when given will set the value. If no argument is given the previous value is unchanged (except for $io->autoflush will actually turn ON autoflush by default). $io->autoflush ( [BOOL] ) $| $io->format_page_number( [NUM] ) $% $io->format_lines_per_page( [NUM] ) $= $io->format_lines_left( [NUM] ) $- $io->format_name( [STR] ) $~ $io->format_top_name( [STR] ) $^ $io->input_line_number( [NUM]) $. The following methods are not supported on a per-filehandle basis. IO::Handle->format_line_break_characters( [STR] ) $: IO::Handle->format_formfeed( [STR]) $^L IO::Handle->output_field_separator( [STR] ) $, IO::Handle->output_record_separator( [STR] ) $\ IO::Handle->input_record_separator( [STR] ) $/ Furthermore, for doing normal I/O you might need these: =over 4 =item $io->fdopen ( FD, MODE ) C is like an ordinary C except that its first parameter is not a filename but rather a file handle name, an IO::Handle object, or a file descriptor number. (For the documentation of the C method, see L.) =item $io->opened Returns true if the object is currently a valid file descriptor, false otherwise. =item $io->getline This works like <$io> described in L except that it's more readable and can be safely called in a list context but still returns just one line. If used as the conditional within a C or C-style C loop, however, you will need to emulate the functionality of <$io> with C<< defined($_ = $io->getline) >>. =item $io->getlines This works like <$io> when called in a list context to read all the remaining lines in a file, except that it's more readable. It will also croak() if accidentally called in a scalar context. =item $io->ungetc ( ORD ) Pushes a character with the given ordinal value back onto the given handle's input stream. Only one character of pushback per handle is guaranteed. =item $io->write ( BUF, LEN [, OFFSET ] ) This C is somewhat like C found in C, in that it is the opposite of read. The wrapper for the perl C function is called C. However, whilst the C C function returns the number of bytes written, this C function simply returns true if successful (like C). A more C-like C is C (see above). =item $io->error Returns a true value if the given handle has experienced any errors since it was opened or since the last call to C, or if the handle is invalid. It only returns false for a valid handle with no outstanding errors. =item $io->clearerr Clear the given handle's error indicator. Returns -1 if the handle is invalid, 0 otherwise. =item $io->sync C synchronizes a file's in-memory state with that on the physical medium. C does not operate at the perlio api level, but operates on the file descriptor (similar to sysread, sysseek and systell). This means that any data held at the perlio api level will not be synchronized. To synchronize data that is buffered at the perlio api level you must use the flush method. C is not implemented on all platforms. Returns "0 but true" on success, C on error, C for an invalid handle. See L. =item $io->flush C causes perl to flush any buffered data at the perlio api level. Any unread data in the buffer will be discarded, and any unwritten data will be written to the underlying file descriptor. Returns "0 but true" on success, C on error. =item $io->printflush ( ARGS ) Turns on autoflush, print ARGS and then restores the autoflush status of the C object. Returns the return value from print. =item $io->blocking ( [ BOOL ] ) If called with an argument C will turn on non-blocking IO if C is false, and turn it off if C is true. C will return the value of the previous setting, or the current setting if C is not given. If an error occurs C will return undef and C<$!> will be set. =item binmode( [LAYER] ) C sets C on the underlying C object, as documented in C. C accepts one optional parameter, which is the layer to be passed on to the C call. =back If the C functions setbuf() and/or setvbuf() are available, then C and C set the buffering policy for an IO::Handle. The calling sequences for the Perl functions are the same as their C counterparts--including the constants C<_IOFBF>, C<_IOLBF>, and C<_IONBF> for setvbuf()--except that the buffer parameter specifies a scalar variable to use as a buffer. You should only change the buffer before any I/O, or immediately after calling flush. WARNING: The IO::Handle::setvbuf() is not available by default on Perls 5.8.0 and later because setvbuf() is rather specific to using the stdio library, while Perl prefers the new perlio subsystem instead. WARNING: A variable used as a buffer by C or C B in any way until the IO::Handle is closed or C or C is called again, or memory corruption may result! Remember that the order of global destruction is undefined, so even if your buffer variable remains in scope until program termination, it may be undefined before the file IO::Handle is closed. Note that you need to import the constants C<_IOFBF>, C<_IOLBF>, and C<_IONBF> explicitly. Like C, setbuf returns nothing. setvbuf returns "0 but true", on success, C on failure. Lastly, there is a special method for working under B<-T> and setuid/gid scripts: =over 4 =item $io->untaint Marks the object as taint-clean, and as such data read from it will also be considered taint-clean. Note that this is a very trusting action to take, and appropriate consideration for the data source and potential vulnerability should be kept in mind. Returns 0 on success, -1 if setting the taint-clean flag failed. (eg invalid handle) =back =head1 NOTE An C object is a reference to a symbol/GLOB reference (see the L package). Some modules that inherit from C may want to keep object related variables in the hash table part of the GLOB. In an attempt to prevent modules trampling on each other I propose the that any such module should prefix its variables with its own name separated by _'s. For example the IO::Socket module keeps a C variable in 'io_socket_timeout'. =head1 SEE ALSO L, L, L =head1 BUGS Due to backwards compatibility, all filehandles resemble objects of class C, or actually classes derived from that class. They actually aren't. Which means you can't derive your own class from C and inherit those methods. =head1 HISTORY Derived from FileHandle.pm by Graham Barr EFE =cut use 5.008_001; use strict; use Carp; use Symbol; use SelectSaver; use IO (); # Load the XS module require Exporter; our @ISA = qw(Exporter); our $VERSION = "1.55"; our @EXPORT_OK = qw( autoflush output_field_separator output_record_separator input_record_separator input_line_number format_page_number format_lines_per_page format_lines_left format_name format_top_name format_line_break_characters format_formfeed format_write print printf say getline getlines printflush flush SEEK_SET SEEK_CUR SEEK_END _IOFBF _IOLBF _IONBF ); ################################################ ## Constructors, destructors. ## sub new { my $class = ref($_[0]) || $_[0] || "IO::Handle"; if (@_ != 1) { # Since perl will automatically require IO::File if needed, but # also initialises IO::File's @ISA as part of the core we must # ensure IO::File is loaded if IO::Handle is. This avoids effect- # ively "half-loading" IO::File. if ($] > 5.013 && $class eq 'IO::File' && !$INC{"IO/File.pm"}) { require IO::File; shift; return IO::File::->new(@_); } croak "usage: $class->new()"; } my $io = gensym; bless $io, $class; } sub new_from_fd { my $class = ref($_[0]) || $_[0] || "IO::Handle"; @_ == 3 or croak "usage: $class->new_from_fd(FD, MODE)"; my $io = gensym; shift; IO::Handle::fdopen($io, @_) or return undef; bless $io, $class; } # # There is no need for DESTROY to do anything, because when the # last reference to an IO object is gone, Perl automatically # closes its associated files (if any). However, to avoid any # attempts to autoload DESTROY, we here define it to do nothing. # sub DESTROY {} ################################################ ## Open and close. ## sub _open_mode_string { my ($mode) = @_; $mode =~ /^\+?(<|>>?)$/ or $mode =~ s/^r(\+?)$/$1/ or $mode =~ s/^a(\+?)$/$1>>/ or croak "IO::Handle: bad open mode: $mode"; $mode; } sub fdopen { @_ == 3 or croak 'usage: $io->fdopen(FD, MODE)'; my ($io, $fd, $mode) = @_; local(*GLOB); if (ref($fd) && "$fd" =~ /GLOB\(/o) { # It's a glob reference; Alias it as we cannot get name of anon GLOBs my $n = qualify(*GLOB); *GLOB = *{*$fd}; $fd = $n; } elsif ($fd =~ m#^\d+$#) { # It's an FD number; prefix with "=". $fd = "=$fd"; } open($io, _open_mode_string($mode) . '&' . $fd) ? $io : undef; } sub close { @_ == 1 or croak 'usage: $io->close()'; my($io) = @_; close($io); } ################################################ ## Normal I/O functions. ## # flock # select sub opened { @_ == 1 or croak 'usage: $io->opened()'; defined fileno($_[0]); } sub fileno { @_ == 1 or croak 'usage: $io->fileno()'; fileno($_[0]); } sub getc { @_ == 1 or croak 'usage: $io->getc()'; getc($_[0]); } sub eof { @_ == 1 or croak 'usage: $io->eof()'; eof($_[0]); } sub print { @_ or croak 'usage: $io->print(ARGS)'; my $this = shift; print $this @_; } sub printf { @_ >= 2 or croak 'usage: $io->printf(FMT,[ARGS])'; my $this = shift; printf $this @_; } sub say { @_ or croak 'usage: $io->say(ARGS)'; my $this = shift; local $\ = "\n"; print $this @_; } sub truncate { @_ == 2 or croak 'usage: $io->truncate(LEN)'; truncate($_[0], $_[1]); } sub read { @_ == 3 || @_ == 4 or croak 'usage: $io->read(BUF, LEN [, OFFSET])'; read($_[0], $_[1], $_[2], $_[3] || 0); } sub sysread { @_ == 3 || @_ == 4 or croak 'usage: $io->sysread(BUF, LEN [, OFFSET])'; sysread($_[0], $_[1], $_[2], $_[3] || 0); } sub write { @_ >= 2 && @_ <= 4 or croak 'usage: $io->write(BUF [, LEN [, OFFSET]])'; local($\) = ""; $_[2] = length($_[1]) unless defined $_[2]; print { $_[0] } substr($_[1], $_[3] || 0, $_[2]); } sub syswrite { @_ >= 2 && @_ <= 4 or croak 'usage: $io->syswrite(BUF [, LEN [, OFFSET]])'; if (defined($_[2])) { syswrite($_[0], $_[1], $_[2], $_[3] || 0); } else { syswrite($_[0], $_[1]); } } sub stat { @_ == 1 or croak 'usage: $io->stat()'; stat($_[0]); } ################################################ ## State modification functions. ## sub autoflush { my $old = SelectSaver->new(qualify($_[0], caller)); my $prev = $|; $| = @_ > 1 ? $_[1] : 1; $prev; } sub output_field_separator { carp "output_field_separator is not supported on a per-handle basis" if ref($_[0]); my $prev = $,; $, = $_[1] if @_ > 1; $prev; } sub output_record_separator { carp "output_record_separator is not supported on a per-handle basis" if ref($_[0]); my $prev = $\; $\ = $_[1] if @_ > 1; $prev; } sub input_record_separator { carp "input_record_separator is not supported on a per-handle basis" if ref($_[0]); my $prev = $/; $/ = $_[1] if @_ > 1; $prev; } sub input_line_number { local $.; () = tell qualify($_[0], caller) if ref($_[0]); my $prev = $.; $. = $_[1] if @_ > 1; $prev; } sub format_page_number { my $old; $old = SelectSaver->new(qualify($_[0], caller)) if ref($_[0]); my $prev = $%; $% = $_[1] if @_ > 1; $prev; } sub format_lines_per_page { my $old; $old = SelectSaver->new(qualify($_[0], caller)) if ref($_[0]); my $prev = $=; $= = $_[1] if @_ > 1; $prev; } sub format_lines_left { my $old; $old = SelectSaver->new(qualify($_[0], caller)) if ref($_[0]); my $prev = $-; $- = $_[1] if @_ > 1; $prev; } sub format_name { my $old; $old = SelectSaver->new(qualify($_[0], caller)) if ref($_[0]); my $prev = $~; $~ = qualify($_[1], caller) if @_ > 1; $prev; } sub format_top_name { my $old; $old = SelectSaver->new(qualify($_[0], caller)) if ref($_[0]); my $prev = $^; $^ = qualify($_[1], caller) if @_ > 1; $prev; } sub format_line_break_characters { carp "format_line_break_characters is not supported on a per-handle basis" if ref($_[0]); my $prev = $:; $: = $_[1] if @_ > 1; $prev; } sub format_formfeed { carp "format_formfeed is not supported on a per-handle basis" if ref($_[0]); my $prev = $^L; $^L = $_[1] if @_ > 1; $prev; } sub formline { my $io = shift; my $picture = shift; local($^A) = $^A; local($\) = ""; formline($picture, @_); print $io $^A; } sub format_write { @_ < 3 || croak 'usage: $io->write( [FORMAT_NAME] )'; if (@_ == 2) { my ($io, $fmt) = @_; my $oldfmt = $io->format_name(qualify($fmt,caller)); CORE::write($io); $io->format_name($oldfmt); } else { CORE::write($_[0]); } } sub fcntl { @_ == 3 || croak 'usage: $io->fcntl( OP, VALUE );'; my ($io, $op) = @_; return fcntl($io, $op, $_[2]); } sub ioctl { @_ == 3 || croak 'usage: $io->ioctl( OP, VALUE );'; my ($io, $op) = @_; return ioctl($io, $op, $_[2]); } # this sub is for compatibility with older releases of IO that used # a sub called constant to determine if a constant existed -- GMB # # The SEEK_* and _IO?BF constants were the only constants at that time # any new code should just check defined(&CONSTANT_NAME) sub constant { no strict 'refs'; my $name = shift; (($name =~ /^(SEEK_(SET|CUR|END)|_IO[FLN]BF)$/) && defined &{$name}) ? &{$name}() : undef; } # so that flush.pl can be deprecated sub printflush { my $io = shift; my $old; $old = SelectSaver->new(qualify($io, caller)) if ref($io); local $| = 1; if(ref($io)) { print $io @_; } else { print @_; } } ################################################ ## Binmode ## sub binmode { ( @_ == 1 or @_ == 2 ) or croak 'usage $fh->binmode([LAYER])'; my($fh, $layer) = @_; return binmode $$fh unless $layer; return binmode $$fh, $layer; } 1; FILEd325c340/IO/Seekable.pm K# package IO::Seekable; =head1 NAME IO::Seekable - supply seek based methods for I/O objects =head1 SYNOPSIS use IO::Seekable; package IO::Something; @ISA = qw(IO::Seekable); =head1 DESCRIPTION C does not have a constructor of its own as it is intended to be inherited by other C based objects. It provides methods which allow seeking of the file descriptors. =over 4 =item $io->getpos Returns an opaque value that represents the current position of the IO::File, or C if this is not possible (eg an unseekable stream such as a terminal, pipe or socket). If the fgetpos() function is available in your C library it is used to implements getpos, else perl emulates getpos using C's ftell() function. =item $io->setpos Uses the value of a previous getpos call to return to a previously visited position. Returns "0 but true" on success, C on failure. =back See L for complete descriptions of each of the following supported C methods, which are just front ends for the corresponding built-in functions: =over 4 =item $io->seek ( POS, WHENCE ) Seek the IO::File to position POS, relative to WHENCE: =over 8 =item WHENCE=0 (SEEK_SET) POS is absolute position. (Seek relative to the start of the file) =item WHENCE=1 (SEEK_CUR) POS is an offset from the current position. (Seek relative to current) =item WHENCE=2 (SEEK_END) POS is an offset from the end of the file. (Seek relative to end) =back The SEEK_* constants can be imported from the C module if you don't wish to use the numbers C<0> C<1> or C<2> in your code. Returns C<1> upon success, C<0> otherwise. =item $io->sysseek( POS, WHENCE ) Similar to $io->seek, but sets the IO::File's position using the system call lseek(2) directly, so will confuse most perl IO operators except sysread and syswrite (see L for full details) Returns the new position, or C on failure. A position of zero is returned as the string C<"0 but true"> =item $io->tell Returns the IO::File's current position, or -1 on error. =back =head1 SEE ALSO L, L, L L =head1 HISTORY Derived from FileHandle.pm by Graham Barr Egbarr@pobox.comE =cut use 5.008_001; use Carp; use strict; use IO::Handle (); # XXX we can't get these from IO::Handle or we'll get prototype # mismatch warnings on C :-( use Fcntl qw(SEEK_SET SEEK_CUR SEEK_END); require Exporter; our @EXPORT = qw(SEEK_SET SEEK_CUR SEEK_END); our @ISA = qw(Exporter); our $VERSION = "1.55"; sub seek { @_ == 3 or croak 'usage: $io->seek(POS, WHENCE)'; seek($_[0], $_[1], $_[2]); } sub sysseek { @_ == 3 or croak 'usage: $io->sysseek(POS, WHENCE)'; sysseek($_[0], $_[1], $_[2]); } sub tell { @_ == 1 or croak 'usage: $io->tell()'; tell($_[0]); } 1; FILEfba8be79/List/Util.pmis# Copyright (c) 1997-2009 Graham Barr . All rights reserved. # This program is free software; you can redistribute it and/or # modify it under the same terms as Perl itself. # # Maintained since 2013 by Paul Evans package List::Util; use strict; use warnings; require Exporter; our @ISA = qw(Exporter); our @EXPORT_OK = qw( all any first min max minstr maxstr none notall product reduce reductions sum sum0 sample shuffle uniq uniqint uniqnum uniqstr zip zip_longest zip_shortest mesh mesh_longest mesh_shortest head tail pairs unpairs pairkeys pairvalues pairmap pairgrep pairfirst ); our $VERSION = "1.68_01"; our $XS_VERSION = $VERSION; $VERSION =~ tr/_//d; require XSLoader; XSLoader::load('List::Util', $XS_VERSION); # Used by shuffle() our $RAND; sub import { my $pkg = caller; # (RT88848) Touch the caller's $a and $b, to avoid the warning of # Name "main::a" used only once: possible typo" warning no strict 'refs'; ${"${pkg}::a"} = ${"${pkg}::a"}; ${"${pkg}::b"} = ${"${pkg}::b"}; goto &Exporter::import; } # For objects returned by pairs() sub List::Util::_Pair::key { shift->[0] } sub List::Util::_Pair::value { shift->[1] } sub List::Util::_Pair::TO_JSON { [ @{+shift} ] } =head1 NAME List::Util - A selection of general-utility list subroutines =head1 SYNOPSIS use List::Util qw( reduce any all none notall first reductions max maxstr min minstr product sum sum0 pairs unpairs pairkeys pairvalues pairfirst pairgrep pairmap shuffle uniq uniqint uniqnum uniqstr head tail zip mesh ); =head1 DESCRIPTION C contains a selection of subroutines that people have expressed would be nice to have in the perl core, but the usage would not really be high enough to warrant the use of a keyword, and the size so small such that being individual extensions would be wasteful. By default C does not export any subroutines. =cut =head1 LIST-REDUCTION FUNCTIONS The following set of functions all apply a given block of code to a list of values. =cut =head2 reduce $result = reduce { BLOCK } @list Reduces C<@list> by calling C in a scalar context multiple times, setting C<$a> and C<$b> each time. The first call will be with C<$a> and C<$b> set to the first two elements of the list, subsequent calls will be done by setting C<$a> to the result of the previous call and C<$b> to the next element in the list. Returns the result of the last call to the C. If C<@list> is empty then C is returned. If C<@list> only contains one element then that element is returned and C is not executed. The following examples all demonstrate how C could be used to implement the other list-reduction functions in this module. (They are not in fact implemented like this, but instead in a more efficient manner in individual C functions). $foo = reduce { defined($a) ? $a : $code->(local $_ = $b) ? $b : undef } undef, @list # first $foo = reduce { $a > $b ? $a : $b } 1..10 # max $foo = reduce { $a gt $b ? $a : $b } 'A'..'Z' # maxstr $foo = reduce { $a < $b ? $a : $b } 1..10 # min $foo = reduce { $a lt $b ? $a : $b } 'aa'..'zz' # minstr $foo = reduce { $a + $b } 1 .. 10 # sum $foo = reduce { $a . $b } @bar # concat $foo = reduce { $a || $code->(local $_ = $b) } 0, @bar # any $foo = reduce { $a && $code->(local $_ = $b) } 1, @bar # all $foo = reduce { $a && !$code->(local $_ = $b) } 1, @bar # none $foo = reduce { $a || !$code->(local $_ = $b) } 0, @bar # notall # Note that these implementations do not fully short-circuit If your algorithm requires that C produce an identity value, then make sure that you always pass that identity value as the first argument to prevent C being returned $foo = reduce { $a + $b } 0, @values; # sum with 0 identity value The above example code blocks also suggest how to use C to build a more efficient combined version of one of these basic functions and a C block. For example, to find the total length of all the strings in a list, we could use $total = sum map { length } @strings; However, this produces a list of temporary integer values as long as the original list of strings, only to reduce it down to a single value again. We can compute the same result more efficiently by using C with a code block that accumulates lengths by writing this instead as: $total = reduce { $a + length $b } 0, @strings The other scalar-returning list reduction functions are all specialisations of this generic idea. =head2 reductions @results = reductions { BLOCK } @list I Similar to C except that it also returns the intermediate values along with the final result. As before, C<$a> is set to the first element of the given list, and the C is then called once for remaining item in the list set into C<$b>, with the result being captured for return as well as becoming the new value for C<$a>. The returned list will begin with the initial value for C<$a>, followed by each return value from the block in order. The final value of the result will be identical to what the C function would have returned given the same block and list. reduce { "$a-$b" } "a".."d" # "a-b-c-d" reductions { "$a-$b" } "a".."d" # "a", "a-b", "a-b-c", "a-b-c-d" =head2 any my $bool = any { BLOCK } @list; I Similar to C in that it evaluates C setting C<$_> to each element of C<@list> in turn. C returns true if any element makes the C return a true value. If C never returns true or C<@list> was empty then it returns false. Many cases of using C in a conditional can be written using C instead, as it can short-circuit after the first true result. if( any { length > 10 } @strings ) { # at least one string has more than 10 characters } Note: Due to XS issues the block passed may be able to access the outer @_ directly. This is not intentional and will break under debugger. =head2 all my $bool = all { BLOCK } @list; I Similar to L, except that it requires all elements of the C<@list> to make the C return true. If any element returns false, then it returns false. If the C never returns false or the C<@list> was empty then it returns true. Note: Due to XS issues the block passed may be able to access the outer @_ directly. This is not intentional and will break under debugger. =head2 none =head2 notall my $bool = none { BLOCK } @list; my $bool = notall { BLOCK } @list; I Similar to L and L, but with the return sense inverted. C returns true only if no value in the C<@list> causes the C to return true, and C returns true only if not all of the values do. Note: Due to XS issues the block passed may be able to access the outer @_ directly. This is not intentional and will break under debugger. =head2 first my $val = first { BLOCK } @list; Similar to C in that it evaluates C setting C<$_> to each element of C<@list> in turn. C returns the first element where the result from C is a true value. If C never returns true or C<@list> was empty then C is returned. $foo = first { defined($_) } @list # first defined value in @list $foo = first { $_ > $value } @list # first value in @list which # is greater than $value =head2 max my $num = max @list; Returns the entry in the list with the highest numerical value. If the list is empty then C is returned. $foo = max 1..10 # 10 $foo = max 3,9,12 # 12 $foo = max @bar, @baz # whatever =head2 maxstr my $str = maxstr @list; Similar to L, but treats all the entries in the list as strings and returns the highest string as defined by the C operator. If the list is empty then C is returned. $foo = maxstr 'A'..'Z' # 'Z' $foo = maxstr "hello","world" # "world" $foo = maxstr @bar, @baz # whatever =head2 min my $num = min @list; Similar to L but returns the entry in the list with the lowest numerical value. If the list is empty then C is returned. $foo = min 1..10 # 1 $foo = min 3,9,12 # 3 $foo = min @bar, @baz # whatever =head2 minstr my $str = minstr @list; Similar to L, but treats all the entries in the list as strings and returns the lowest string as defined by the C operator. If the list is empty then C is returned. $foo = minstr 'A'..'Z' # 'A' $foo = minstr "hello","world" # "hello" $foo = minstr @bar, @baz # whatever =head2 product my $num = product @list; I Returns the numerical product of all the elements in C<@list>. If C<@list> is empty then C<1> is returned. $foo = product 1..10 # 3628800 $foo = product 3,9,12 # 324 =head2 sum my $num_or_undef = sum @list; Returns the numerical sum of all the elements in C<@list>. For backwards compatibility, if C<@list> is empty then C is returned. $foo = sum 1..10 # 55 $foo = sum 3,9,12 # 24 $foo = sum @bar, @baz # whatever =head2 sum0 my $num = sum0 @list; I Similar to L, except this returns 0 when given an empty list, rather than C. =cut =head1 KEY/VALUE PAIR LIST FUNCTIONS The following set of functions, all inspired by L, consume an even-sized list of pairs. The pairs may be key/value associations from a hash, or just a list of values. The functions will all preserve the original ordering of the pairs, and will not be confused by multiple pairs having the same "key" value - nor even do they require that the first of each pair be a plain string. B: At the time of writing, the following C functions that take a block do not modify the value of C<$_> within the block, and instead operate using the C<$a> and C<$b> globals instead. This has turned out to be a poor design, as it precludes the ability to provide a C function. Better would be to pass pair-like objects as 2-element array references in C<$_>, in a style similar to the return value of the C function. At some future version this behaviour may be added. Until then, users are alerted B to rely on the value of C<$_> remaining unmodified between the outside and the inside of the control block. In particular, the following example is B: my @kvlist = ... foreach (qw( some keys here )) { my @items = pairgrep { $a eq $_ } @kvlist; ... } Instead, write this using a lexical variable: foreach my $key (qw( some keys here )) { my @items = pairgrep { $a eq $key } @kvlist; ... } =cut =head2 pairs my @pairs = pairs @kvlist; I A convenient shortcut to operating on even-sized lists of pairs, this function returns a list of C references, each containing two items from the given list. It is a more efficient version of @pairs = pairmap { [ $a, $b ] } @kvlist It is most convenient to use in a C loop, for example: foreach my $pair ( pairs @kvlist ) { my ( $key, $value ) = @$pair; ... } Since version C<1.39> these C references are blessed objects, recognising the two methods C and C. The following code is equivalent: foreach my $pair ( pairs @kvlist ) { my $key = $pair->key; my $value = $pair->value; ... } Since version C<1.51> they also have a C method to ease serialisation. =head2 unpairs my @kvlist = unpairs @pairs I The inverse function to C; this function takes a list of C references containing two elements each, and returns a flattened list of the two values from each of the pairs, in order. This is notionally equivalent to my @kvlist = map { @{$_}[0,1] } @pairs except that it is implemented more efficiently internally. Specifically, for any input item it will extract exactly two values for the output list; using C if the input array references are short. Between C and C, a higher-order list function can be used to operate on the pairs as single scalars; such as the following near-equivalents of the other C higher-order functions: @kvlist = unpairs grep { FUNC } pairs @kvlist # Like pairgrep, but takes $_ instead of $a and $b @kvlist = unpairs map { FUNC } pairs @kvlist # Like pairmap, but takes $_ instead of $a and $b Note however that these versions will not behave as nicely in scalar context. Finally, this technique can be used to implement a sort on a keyvalue pair list; e.g.: @kvlist = unpairs sort { $a->key cmp $b->key } pairs @kvlist =head2 pairkeys my @keys = pairkeys @kvlist; I A convenient shortcut to operating on even-sized lists of pairs, this function returns a list of the first values of each of the pairs in the given list. It is a more efficient version of @keys = pairmap { $a } @kvlist =head2 pairvalues my @values = pairvalues @kvlist; I A convenient shortcut to operating on even-sized lists of pairs, this function returns a list of the second values of each of the pairs in the given list. It is a more efficient version of @values = pairmap { $b } @kvlist =head2 pairgrep my @kvlist = pairgrep { BLOCK } @kvlist; my $count = pairgrep { BLOCK } @kvlist; I Similar to perl's C keyword, but interprets the given list as an even-sized list of pairs. It invokes the C multiple times, in scalar context, with C<$a> and C<$b> set to successive pairs of values from the C<@kvlist>. Returns an even-sized list of those pairs for which the C returned true in list context, or the count of the B in scalar context. (Note, therefore, in scalar context that it returns a number half the size of the count of items it would have returned in list context). @subset = pairgrep { $a =~ m/^[[:upper:]]+$/ } @kvlist As with C aliasing C<$_> to list elements, C aliases C<$a> and C<$b> to elements of the given list. Any modifications of it by the code block will be visible to the caller. =head2 pairfirst my ( $key, $val ) = pairfirst { BLOCK } @kvlist; my $found = pairfirst { BLOCK } @kvlist; I Similar to the L function, but interprets the given list as an even-sized list of pairs. It invokes the C multiple times, in scalar context, with C<$a> and C<$b> set to successive pairs of values from the C<@kvlist>. Returns the first pair of values from the list for which the C returned true in list context, or an empty list of no such pair was found. In scalar context it returns a simple boolean value, rather than either the key or the value found. ( $key, $value ) = pairfirst { $a =~ m/^[[:upper:]]+$/ } @kvlist As with C aliasing C<$_> to list elements, C aliases C<$a> and C<$b> to elements of the given list. Any modifications of it by the code block will be visible to the caller. =head2 pairmap my @list = pairmap { BLOCK } @kvlist; my $count = pairmap { BLOCK } @kvlist; I Similar to perl's C keyword, but interprets the given list as an even-sized list of pairs. It invokes the C multiple times, in list context, with C<$a> and C<$b> set to successive pairs of values from the C<@kvlist>. Returns the concatenation of all the values returned by the C in list context, or the count of the number of items that would have been returned in scalar context. @result = pairmap { "The key $a has value $b" } @kvlist As with C aliasing C<$_> to list elements, C aliases C<$a> and C<$b> to elements of the given list. Any modifications of it by the code block will be visible to the caller. See L for a known-bug with C, and a workaround. =cut =head1 OTHER FUNCTIONS =cut =head2 shuffle my @values = shuffle @values; Returns the values of the input in a random order @cards = shuffle 0..51 # 0..51 in a random order This function is affected by the C<$RAND> variable. =cut =head2 sample my @items = sample $count, @values I Randomly select the given number of elements from the input list. Any given position in the input list will be selected at most once. If there are fewer than C<$count> items in the list then the function will return once all of them have been randomly selected; effectively the function behaves similarly to L. This function is affected by the C<$RAND> variable. =head2 uniq my @subset = uniq @values I Filters a list of values to remove subsequent duplicates, as judged by a DWIM-ish string equality or C test. Preserves the order of unique elements, and retains the first value of any duplicate set. my $count = uniq @values In scalar context, returns the number of elements that would have been returned as a list. The C value is treated by this function as distinct from the empty string, and no warning will be produced. It is left as-is in the returned list. Subsequent C values are still considered identical to the first, and will be removed. =head2 uniqint my @subset = uniqint @values I Filters a list of values to remove subsequent duplicates, as judged by an integer numerical equality test. Preserves the order of unique elements, and retains the first value of any duplicate set. Values in the returned list will be coerced into integers. my $count = uniqint @values In scalar context, returns the number of elements that would have been returned as a list. Note that C is treated much as other numerical operations treat it; it compares equal to zero but additionally produces a warning if such warnings are enabled (C). In addition, an C in the returned list is coerced into a numerical zero, so that the entire list of values returned by C are well-behaved as integers. =head2 uniqnum my @subset = uniqnum @values I Filters a list of values to remove subsequent duplicates, as judged by a numerical equality test. Preserves the order of unique elements, and retains the first value of any duplicate set. my $count = uniqnum @values In scalar context, returns the number of elements that would have been returned as a list. Note that C is treated much as other numerical operations treat it; it compares equal to zero but additionally produces a warning if such warnings are enabled (C). In addition, an C in the returned list is coerced into a numerical zero, so that the entire list of values returned by C are well-behaved as numbers. Note also that multiple IEEE C values are treated as duplicates of each other, regardless of any differences in their payloads, and despite the fact that C<< 0+'NaN' == 0+'NaN' >> yields false. =head2 uniqstr my @subset = uniqstr @values I Filters a list of values to remove subsequent duplicates, as judged by a string equality test. Preserves the order of unique elements, and retains the first value of any duplicate set. my $count = uniqstr @values In scalar context, returns the number of elements that would have been returned as a list. Note that C is treated much as other string operations treat it; it compares equal to the empty string but additionally produces a warning if such warnings are enabled (C). In addition, an C in the returned list is coerced into an empty string, so that the entire list of values returned by C are well-behaved as strings. =cut =head2 head my @values = head $size, @list; I Returns the first C<$size> elements from C<@list>. If C<$size> is negative, returns all but the last C<$size> elements from C<@list>. @result = head 2, qw( foo bar baz ); # foo, bar @result = head -2, qw( foo bar baz ); # foo =head2 tail my @values = tail $size, @list; I Returns the last C<$size> elements from C<@list>. If C<$size> is negative, returns all but the first C<$size> elements from C<@list>. @result = tail 2, qw( foo bar baz ); # bar, baz @result = tail -2, qw( foo bar baz ); # baz =head2 zip my @result = zip [1..3], ['a'..'c']; # [1, 'a'], [2, 'b'], [3, 'c'] I Returns a list of array references, composed of elements from the given list of array references. Each array in the returned list is composed of elements at that corresponding position from each of the given input arrays. If any input arrays run out of elements before others, then C will be inserted into the result to fill in the gaps. The C function is particularly handy for iterating over multiple arrays at the same time with a C loop, taking one element from each: foreach ( zip \@xs, \@ys, \@zs ) { my ($x, $y, $z) = @$_; ... } B to users of L: This function does not behave the same as C, but is actually a non-prototyped equivalent to C. This function does not apply a prototype, so make sure to invoke it with references to arrays. For a function similar to the C function from C, see L. my @result = zip_shortest ... A variation of the function that differs in how it behaves when given input arrays of differing lengths. C will stop as soon as any one of the input arrays run out of elements, discarding any remaining unused values from the others. my @result = zip_longest ... C is an alias to the C function, provided simply to be explicit about that behaviour as compared to C. =head2 mesh my @result = mesh [1..3], ['a'..'c']; # (1, 'a', 2, 'b', 3, 'c') I Returns a list of items collected from elements of the given list of array references. Each section of items in the returned list is composed of elements at the corresponding position from each of the given input arrays. If any input arrays run out of elements before others, then C will be inserted into the result to fill in the gaps. This is similar to L, except that all of the ranges in the result are returned in one long flattened list, instead of being bundled into separate arrays. Because it returns a flat list of items, the C function is particularly useful for building a hash out of two separate arrays of keys and values: my %hash = mesh \@keys, \@values; my $href = { mesh \@keys, \@values }; B to users of L: This function is a non-prototyped equivalent to C or C (themselves aliases of each other). This function does not apply a prototype, so make sure to invoke it with references to arrays. my @result = mesh_shortest ... my @result = mesh_longest ... These variations are similar to those of L, in that they differ in behaviour when one of the input lists runs out of elements before the others. =head1 CONFIGURATION VARIABLES =head2 $RAND local $List::Util::RAND = sub { ... }; I This package variable is used by code which needs to generate random numbers (such as the L and L functions). If set to a CODE reference it provides an alternative to perl's builtin C function. When a new random number is needed this function will be invoked with no arguments and is expected to return a floating-point value, of which only the fractional part will be used. =head1 KNOWN BUGS =head2 RT #95409 L If the block of code given to L contains lexical variables that are captured by a returned closure, and the closure is executed after the block has been re-used for the next iteration, these lexicals will not see the correct values. For example: my @subs = pairmap { my $var = "$a is $b"; sub { print "$var\n" }; } one => 1, two => 2, three => 3; $_->() for @subs; Will incorrectly print three is 3 three is 3 three is 3 This is due to the performance optimisation of using C for the code block, which means that fresh SVs do not get allocated for each call to the block. Instead, the same SV is re-assigned for each iteration, and all the closures will share the value seen on the final iteration. To work around this bug, surround the code with a second set of braces. This creates an inner block that defeats the C logic, and does get fresh SVs allocated each time: my @subs = pairmap { { my $var = "$a is $b"; sub { print "$var\n"; } } } one => 1, two => 2, three => 3; This bug only affects closures that are generated by the block but used afterwards. Lexical variables that are only used during the lifetime of the block's execution will take their individual values for each invocation, as normal. =head2 uniqnum() on oversized bignums Due to the way that C compares numbers, it cannot distinguish differences between bignums (especially bigints) that are too large to fit in the native platform types. For example, my $x = Math::BigInt->new( "1" x 100 ); my $y = $x + 1; say for uniqnum( $x, $y ); Will print just the value of C<$x>, believing that C<$y> is a numerically- equivalent value. This bug does not affect C, which will correctly observe that the two values stringify to different strings. =head1 SUGGESTED ADDITIONS The following are additions that have been requested, but I have been reluctant to add due to them being very simple to implement in perl # How many elements are true sub true { scalar grep { $_ } @_ } # How many elements are false sub false { scalar grep { !$_ } @_ } =head1 SEE ALSO L, L =head1 COPYRIGHT Copyright (c) 1997-2007 Graham Barr . All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. Recent additions and current maintenance by Paul Evans, . =cut 1; FILE51835385/Scalar/Util.pm+# Copyright (c) 1997-2007 Graham Barr . All rights reserved. # This program is free software; you can redistribute it and/or # modify it under the same terms as Perl itself. # # Maintained since 2013 by Paul Evans package Scalar::Util; use strict; use warnings; require Exporter; our @ISA = qw(Exporter); our @EXPORT_OK = qw( blessed refaddr reftype weaken unweaken isweak dualvar isdual isvstring looks_like_number openhandle readonly set_prototype tainted ); our $VERSION = "1.68_01"; $VERSION =~ tr/_//d; require List::Util; # List::Util loads the XS List::Util->VERSION( $VERSION ); # Ensure we got the right XS version (RT#100863) if( $] >= 5.040 ) { # On Perl 5.40 and above, these builtins are stable, so we can use them # instead of our own XS implementation # Using this instead of a globref means we don't create an empty # "builtins::" glob on older perls no strict 'refs'; my $builtins = \%{"builtin::"}; *$_ = \&{ $builtins->{$_} } for (qw( blessed refaddr reftype weaken unweaken )); *isweak = \&{ $builtins->{is_weak} }; # renamed } # populating @EXPORT_FAIL is done in the XS code sub export_fail { if (grep { /^isvstring$/ } @_ ) { require Carp; Carp::croak("Vstrings are not implemented in this version of perl"); } @_; } # set_prototype has been moved to Sub::Util with a different interface sub set_prototype(&$) { my ( $code, $proto ) = @_; return Sub::Util::set_prototype( $proto, $code ); } 1; __END__ =head1 NAME Scalar::Util - A selection of general-utility scalar subroutines =head1 SYNOPSIS use Scalar::Util qw(blessed dualvar isdual readonly refaddr reftype tainted weaken isweak isvstring looks_like_number set_prototype); # and other useful utils appearing below =head1 DESCRIPTION C contains a selection of subroutines that people have expressed would be nice to have in the perl core, but the usage would not really be high enough to warrant the use of a keyword, and the size would be so small that being individual extensions would be wasteful. By default C does not export any subroutines. =head2 Core Perl C Functions Many functions in this module have served as the inspiration for a new experimental facility in recent versions of Perl. From various development versions, starting at 5.35.7, equivalent functions to many of these utilities are available in the C package. use Scalar::Util qw(blessed); $class = blessed $obj; $class = builtin::blessed $obj; # equivalent For more information, see the documentation on L. =cut =head1 FUNCTIONS FOR REFERENCES The following functions all perform some useful activity on reference values. =head2 blessed my $pkg = blessed( $ref ); If C<$ref> is a blessed reference, the name of the package that it is blessed into is returned. Otherwise C is returned. $scalar = "foo"; $class = blessed $scalar; # undef $ref = []; $class = blessed $ref; # undef $obj = bless [], "Foo"; $class = blessed $obj; # "Foo" Take care when using this function simply as a truth test (such as in C) because the package name C<"0"> is defined yet false. I an equivalent function is available as C. =head2 refaddr my $addr = refaddr( $ref ); If C<$ref> is reference, the internal memory address of the referenced value is returned as a plain integer. Otherwise C is returned. $addr = refaddr "string"; # undef $addr = refaddr \$var; # eg 12345678 $addr = refaddr []; # eg 23456784 $obj = bless {}, "Foo"; $addr = refaddr $obj; # eg 88123488 I an equivalent function is available as C. =head2 reftype my $type = reftype( $ref ); If C<$ref> is a reference, the basic Perl type of the variable referenced is returned as a plain string (such as C or C). Otherwise C is returned. $type = reftype "string"; # undef $type = reftype \$var; # SCALAR $type = reftype []; # ARRAY $obj = bless {}, "Foo"; $type = reftype $obj; # HASH Note that for internal reasons, all precompiled regexps (C) are blessed references; thus C returns the package name string C<"Regexp"> on these but C will return the underlying C structure type of C<"REGEXP"> in all capitals. I an equivalent function is available as C. =head2 weaken weaken( $ref ); The lvalue C<$ref> will be turned into a weak reference. This means that it will not hold a reference count on the object it references. Also, when the reference count on that object reaches zero, the reference will be set to undef. This function mutates the lvalue passed as its argument and returns no value. This is useful for keeping copies of references, but you don't want to prevent the object being DESTROY-ed at its usual time. { my $var; $ref = \$var; weaken($ref); # Make $ref a weak reference } # $ref is now undef Note that if you take a copy of a scalar with a weakened reference, the copy will be a strong reference. my $var; my $foo = \$var; weaken($foo); # Make $foo a weak reference my $bar = $foo; # $bar is now a strong reference This may be less obvious in other situations, such as C, for instance when grepping through a list of weakened references to objects that may have been destroyed already: @object = grep { defined } @object; This will indeed remove all references to destroyed objects, but the remaining references to objects will be strong, causing the remaining objects to never be destroyed because there is now always a strong reference to them in the @object array. I an equivalent function is available as C. =head2 unweaken unweaken( $ref ); I The lvalue C will be turned from a weak reference back into a normal (strong) reference again. This function mutates the lvalue passed as its argument and returns no value. This undoes the action performed by L. This function is slightly neater and more convenient than the otherwise-equivalent code my $tmp = $REF; undef $REF; $REF = $tmp; (because in particular, simply assigning a weak reference back to itself does not work to unweaken it; C<$REF = $REF> does not work). I an equivalent function is available as C. =head2 isweak my $weak = isweak( $ref ); Returns true if C<$ref> is a weak reference. $ref = \$foo; $weak = isweak($ref); # false weaken($ref); $weak = isweak($ref); # true B: Copying a weak reference creates a normal, strong, reference. $copy = $ref; $weak = isweak($copy); # false I an equivalent function is available as C. =head1 OTHER FUNCTIONS =head2 dualvar my $var = dualvar( $num, $string ); Returns a scalar that has the value C<$num> in a numeric context and the value C<$string> in a string context. $foo = dualvar 10, "Hello"; $num = $foo + 2; # 12 $str = $foo . " world"; # Hello world =head2 isdual my $dual = isdual( $var ); I If C<$var> is a scalar that has both numeric and string values, the result is true. $foo = dualvar 86, "Nix"; $dual = isdual($foo); # true Note that a scalar can be made to have both string and numeric content through standard operations: $foo = "10"; $dual = isdual($foo); # false $bar = $foo + 0; $dual = isdual($foo); # true The C<$!> variable is commonly dual-valued, though it is also magical in other ways: $! = 1; $dual = isdual($!); # true print("$!\n"); # "Operation not permitted" B: This function is not as useful as it may seem. Dualvars are not a distinct concept in Perl, but a standard internal construct of all scalar values. Almost any value could be considered as a dualvar by this function through the course of normal operations. =head2 isvstring my $vstring = isvstring( $var ); If C<$var> is a scalar which was coded as a vstring, the result is true. $vs = v49.46.48; $fmt = isvstring($vs) ? "%vd" : "%s"; #true printf($fmt,$vs); =head2 looks_like_number my $isnum = looks_like_number( $var ); Returns true if perl thinks C<$var> is a number. See L. =head2 openhandle my $fh = openhandle( $fh ); Returns C<$fh> itself, if C<$fh> may be used as a filehandle and is open, or if it is a tied handle. Otherwise C is returned. $fh = openhandle(*STDIN); # \*STDIN $fh = openhandle(\*STDIN); # \*STDIN $fh = openhandle(*NOTOPEN); # undef $fh = openhandle("scalar"); # undef =head2 readonly my $ro = readonly( $var ); Returns true if C<$var> is readonly. sub foo { readonly($_[0]) } $readonly = foo($bar); # false $readonly = foo(0); # true =head2 set_prototype my $code = set_prototype( $code, $prototype ); Sets the prototype of the function given by the C<$code> reference, or deletes it if C<$prototype> is C. Returns the C<$code> reference itself. set_prototype \&foo, '$$'; =head2 tainted my $t = tainted( $var ); Return true if C<$var> is tainted. $taint = tainted("constant"); # false $taint = tainted($ENV{PWD}); # true if running under -T =head1 DIAGNOSTICS Module use may give one of the following errors during import. =over =item Vstrings are not implemented in this version of perl The version of perl that you are using does not implement Vstrings, to use L you will need to use a newer release of perl. =back =head1 KNOWN BUGS There is a bug in perl5.6.0 with UV's that are >= 1<<31. This will show up as tests 8 and 9 of dualvar.t failing =head1 SEE ALSO L =head1 COPYRIGHT Copyright (c) 1997-2007 Graham Barr . All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. Additionally L and L which are Copyright (c) 1999 Tuomas J. Lukka . All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as perl itself. Copyright (C) 2004, 2008 Matthijs van Duin. All rights reserved. Copyright (C) 2014 cPanel Inc. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut FILE5820ee25/Storable.pmǒ# # Copyright (c) 1995-2001, Raphael Manfredi # Copyright (c) 2002-2014 by the Perl 5 Porters # Copyright (c) 2015-2016 cPanel Inc # Copyright (c) 2017 Reini Urban # # You may redistribute only under the same terms as Perl 5, as specified # in the README file that comes with the distribution. # package Storable; use strict; use XSLoader (); use Exporter (); our @ISA = qw(Exporter); our @EXPORT = qw(store retrieve); our @EXPORT_OK = qw( nstore store_fd nstore_fd fd_retrieve freeze nfreeze thaw dclone retrieve_fd lock_store lock_nstore lock_retrieve file_magic read_magic BLESS_OK TIE_OK FLAGS_COMPAT stack_depth stack_depth_hash ); our ($canonical, $forgive_me); BEGIN { our $VERSION = '3.37'; } our $recursion_limit; our $recursion_limit_hash; $recursion_limit = 512 unless defined $recursion_limit; $recursion_limit_hash = 256 unless defined $recursion_limit_hash; use Carp; use Fcntl qw(LOCK_SH LOCK_EX); BEGIN { if (eval { local $SIG{__DIE__}; local @INC = @INC; pop @INC if $INC[-1] eq '.'; require Log::Agent; 1; }) { Log::Agent->import; } # # Use of Log::Agent is optional. If it hasn't imported these subs then # provide a fallback implementation. # unless ($Storable::{logcroak} && *{$Storable::{logcroak}}{CODE}) { *logcroak = \&Carp::croak; } else { # Log::Agent's logcroak always adds a newline to the error it is # given. This breaks refs getting thrown. We can just discard what # it throws (but keep whatever logging it does) and throw the original # args. no warnings 'redefine'; my $logcroak = \&logcroak; *logcroak = sub { my @args = @_; eval { &$logcroak }; Carp::croak(@args); }; } unless ($Storable::{logcarp} && *{$Storable::{logcarp}}{CODE}) { *logcarp = \&Carp::carp; } } sub CLONE { # clone context under threads Storable::init_perinterp(); } sub BLESS_OK () { 2 } sub TIE_OK () { 4 } sub FLAGS_COMPAT () { BLESS_OK | TIE_OK } # By default restricted hashes are downgraded on earlier perls. our $flags = FLAGS_COMPAT; our $downgrade_restricted = 1; our $accept_future_minor = 1; BEGIN { XSLoader::load('Storable') }; # # Determine whether locking is possible, but only when needed. # sub show_file_magic { print <4 byte >0 (net-order %d) >>4 byte &01 (network-ordered) >>4 byte =3 (major 1) >>4 byte =2 (major 1) 0 string pst0 perl Storable(v0.7) data >4 byte >0 >>4 byte &01 (network-ordered) >>4 byte =5 (major 2) >>4 byte =4 (major 2) >>5 byte >0 (minor %d) EOM } sub file_magic { my $file = shift; open(my $fh, "<", $file) || die "Can't open '$file': $!"; binmode($fh); defined(sysread($fh, my $buf, 32)) || die "Can't read from '$file': $!"; close($fh); $file = "./$file" unless $file; # ensure TRUE value return read_magic($buf, $file); } sub read_magic { my($buf, $file) = @_; my %info; my $buflen = length($buf); my $magic; if ($buf =~ s/^(pst0|perl-store)//) { $magic = $1; $info{file} = $file || 1; } else { return undef if $file; $magic = ""; } return undef unless length($buf); my $net_order; if ($magic eq "perl-store" && ord(substr($buf, 0, 1)) > 1) { $info{version} = -1; $net_order = 0; } else { $buf =~ s/(.)//s; my $major = (ord $1) >> 1; return undef if $major > 4; # sanity (assuming we never go that high) $info{major} = $major; $net_order = (ord $1) & 0x01; if ($major > 1) { return undef unless $buf =~ s/(.)//s; my $minor = ord $1; $info{minor} = $minor; $info{version} = "$major.$minor"; $info{version_nv} = sprintf "%d.%03d", $major, $minor; } else { $info{version} = $major; } } $info{version_nv} ||= $info{version}; $info{netorder} = $net_order; unless ($net_order) { return undef unless $buf =~ s/(.)//s; my $len = ord $1; return undef unless length($buf) >= $len; return undef unless $len == 4 || $len == 8; # sanity @info{qw(byteorder intsize longsize ptrsize)} = unpack "a${len}CCC", $buf; (substr $buf, 0, $len + 3) = ''; if ($info{version_nv} >= 2.002) { return undef unless $buf =~ s/(.)//s; $info{nvsize} = ord $1; } } $info{hdrsize} = $buflen - length($buf); return \%info; } sub BIN_VERSION_NV { sprintf "%d.%03d", BIN_MAJOR(), BIN_MINOR(); } sub BIN_WRITE_VERSION_NV { sprintf "%d.%03d", BIN_MAJOR(), BIN_WRITE_MINOR(); } # # store # # Store target object hierarchy, identified by a reference to its root. # The stored object tree may later be retrieved to memory via retrieve. # Returns undef if an I/O error occurred, in which case the file is # removed. # sub store { return _store(\&pstore, @_, 0); } # # nstore # # Same as store, but in network order. # sub nstore { return _store(\&net_pstore, @_, 0); } # # lock_store # # Same as store, but flock the file first (advisory locking). # sub lock_store { return _store(\&pstore, @_, 1); } # # lock_nstore # # Same as nstore, but flock the file first (advisory locking). # sub lock_nstore { return _store(\&net_pstore, @_, 1); } # Internal store to file routine sub _store { my $xsptr = shift; my $self = shift; my ($file, $use_locking) = @_; logcroak "not a reference" unless ref($self); logcroak "wrong argument number" unless @_ == 2; # No @foo in arglist my $FILE; if ($use_locking) { open($FILE, ">>", $file) || logcroak "can't write into $file: $!"; unless (CAN_FLOCK) { logcarp "Storable::lock_store: fcntl/flock emulation broken on $^O"; return undef; } flock($FILE, LOCK_EX) || logcroak "can't get exclusive lock on $file: $!"; truncate $FILE, 0; # Unlocking will happen when FILE is closed } else { open($FILE, ">", $file) || logcroak "can't create $file: $!"; } binmode $FILE; # Archaic systems... my $da = $@; # Don't mess if called from exception handler my $ret; # Call C routine nstore or pstore, depending on network order eval { $ret = &$xsptr($FILE, $self) }; # close will return true on success, so the or short-circuits, the () # expression is true, and for that case the block will only be entered # if $@ is true (ie eval failed) # if close fails, it returns false, $ret is altered, *that* is (also) # false, so the () expression is false, !() is true, and the block is # entered. if (!(close($FILE) or undef $ret) || $@) { unlink($file) or warn "Can't unlink $file: $!\n"; } if ($@) { $@ =~ s/\.?\n$/,/ unless ref $@; logcroak $@; } $@ = $da; return $ret; } # # store_fd # # Same as store, but perform on an already opened file descriptor instead. # Returns undef if an I/O error occurred. # sub store_fd { return _store_fd(\&pstore, @_); } # # nstore_fd # # Same as store_fd, but in network order. # sub nstore_fd { my ($self, $file) = @_; return _store_fd(\&net_pstore, @_); } # Internal store routine on opened file descriptor sub _store_fd { my $xsptr = shift; my $self = shift; my ($file) = @_; logcroak "not a reference" unless ref($self); logcroak "too many arguments" unless @_ == 1; # No @foo in arglist my $fd = fileno($file); logcroak "not a valid file descriptor" unless defined $fd; $file = do { no strict 'refs'; \*{ $file }; }; my $da = $@; # Don't mess if called from exception handler my $ret; # Call C routine nstore or pstore, depending on network order eval { $ret = &$xsptr($file, $self) }; logcroak $@ if $@ =~ s/\.?\n$/,/; local $\; print $file ''; # Autoflush the file if wanted $@ = $da; return $ret; } # # freeze # # Store object and its hierarchy in memory and return a scalar # containing the result. # sub freeze { _freeze(\&mstore, @_); } # # nfreeze # # Same as freeze but in network order. # sub nfreeze { _freeze(\&net_mstore, @_); } # Internal freeze routine sub _freeze { my $xsptr = shift; my $self = shift; logcroak "not a reference" unless ref($self); logcroak "too many arguments" unless @_ == 0; # No @foo in arglist my $da = $@; # Don't mess if called from exception handler my $ret; # Call C routine mstore or net_mstore, depending on network order eval { $ret = &$xsptr($self) }; if ($@) { $@ =~ s/\.?\n$/,/ unless ref $@; logcroak $@; } $@ = $da; return $ret ? $ret : undef; } # # retrieve # # Retrieve object hierarchy from disk, returning a reference to the root # object of that tree. # # retrieve(file, flags) # flags include by default BLESS_OK=2 | TIE_OK=4 # with flags=0 or the global $Storable::flags set to 0, no resulting object # will be blessed nor tied. # sub retrieve { _retrieve(shift, 0, @_); } # # lock_retrieve # # Same as retrieve, but with advisory locking. # sub lock_retrieve { _retrieve(shift, 1, @_); } # Internal retrieve routine sub _retrieve { my ($file, $use_locking, $flags) = @_; $flags = $Storable::flags unless defined $flags; my $FILE; open($FILE, "<", $file) || logcroak "can't open $file: $!"; binmode $FILE; # Archaic systems... my $self; my $da = $@; # Could be from exception handler if ($use_locking) { unless (CAN_FLOCK) { logcarp "Storable::lock_store: fcntl/flock emulation broken on $^O"; return undef; } flock($FILE, LOCK_SH) || logcroak "can't get shared lock on $file: $!"; # Unlocking will happen when FILE is closed } eval { $self = pretrieve($FILE, $flags) }; # Call C routine close($FILE); if ($@) { $@ =~ s/\.?\n$/,/ unless ref $@; logcroak $@; } $@ = $da; return $self; } # # fd_retrieve # # Same as retrieve, but perform from an already opened file descriptor instead. # sub fd_retrieve { my ($file, $flags) = @_; $flags = $Storable::flags unless defined $flags; my $fd = fileno($file); logcroak "not a valid file descriptor" unless defined $fd; my $self; my $da = $@; # Could be from exception handler eval { $self = pretrieve($file, $flags) }; # Call C routine if ($@) { $@ =~ s/\.?\n$/,/ unless ref $@; logcroak $@; } $@ = $da; return $self; } sub retrieve_fd { &fd_retrieve } # Backward compatibility # # thaw # # Recreate objects in memory from an existing frozen image created # by freeze. If the frozen image passed is undef, return undef. # # thaw(frozen_obj, flags) # flags include by default BLESS_OK=2 | TIE_OK=4 # with flags=0 or the global $Storable::flags set to 0, no resulting object # will be blessed nor tied. # sub thaw { my ($frozen, $flags) = @_; $flags = $Storable::flags unless defined $flags; return undef unless defined $frozen; my $self; my $da = $@; # Could be from exception handler eval { $self = mretrieve($frozen, $flags) }; # Call C routine if ($@) { $@ =~ s/\.?\n$/,/ unless ref $@; logcroak $@; } $@ = $da; return $self; } # # _make_re($re, $flags) # # Internal function used to thaw a regular expression. # my $re_flags; BEGIN { if ($] < 5.010) { $re_flags = qr/\A[imsx]*\z/; } elsif ($] < 5.014) { $re_flags = qr/\A[msixp]*\z/; } elsif ($] < 5.022) { $re_flags = qr/\A[msixpdual]*\z/; } else { $re_flags = qr/\A[msixpdualn]*\z/; } } sub _make_re { my ($re, $flags) = @_; $flags =~ $re_flags or die "regexp flags invalid"; my $qr = eval "qr/\$re/$flags"; die $@ if $@; $qr; } if ($] < 5.012) { eval <<'EOS' sub _regexp_pattern { my $re = "" . shift; $re =~ /\A\(\?([xism]*)(?:-[xism]*)?:(.*)\)\z/s or die "Cannot parse regexp /$re/"; return ($2, $1); } 1 EOS or die "Cannot define _regexp_pattern: $@"; } 1; __END__ =head1 NAME Storable - persistence for Perl data structures =head1 SYNOPSIS use Storable; store \%table, 'file'; $hashref = retrieve('file'); use Storable qw(nstore store_fd nstore_fd freeze thaw dclone); # Network order nstore \%table, 'file'; $hashref = retrieve('file'); # There is NO nretrieve() # Storing to and retrieving from an already opened file store_fd \@array, \*STDOUT; nstore_fd \%table, \*STDOUT; $aryref = fd_retrieve(\*SOCKET); $hashref = fd_retrieve(\*SOCKET); # Serializing to memory $serialized = freeze \%table; %table_clone = %{ thaw($serialized) }; # Deep (recursive) cloning $cloneref = dclone($ref); # Advisory locking use Storable qw(lock_store lock_nstore lock_retrieve) lock_store \%table, 'file'; lock_nstore \%table, 'file'; $hashref = lock_retrieve('file'); =head1 DESCRIPTION The Storable package brings persistence to your Perl data structures containing SCALAR, ARRAY, HASH or REF objects, i.e. anything that can be conveniently stored to disk and retrieved at a later time. It can be used in the regular procedural way by calling C with a reference to the object to be stored, along with the file name where the image should be written. The routine returns C for I/O problems or other internal error, a true value otherwise. Serious errors are propagated as a C exception. To retrieve data stored to disk, use C with a file name. The objects stored into that file are recreated into memory for you, and a I to the root object is returned. In case an I/O error occurs while reading, C is returned instead. Other serious errors are propagated via C. Since storage is performed recursively, you might want to stuff references to objects that share a lot of common data into a single array or hash table, and then store that object. That way, when you retrieve back the whole thing, the objects will continue to share what they originally shared. At the cost of a slight header overhead, you may store to an already opened file descriptor using the C routine, and retrieve from a file via C. Those names aren't imported by default, so you will have to do that explicitly if you need those routines. The file descriptor you supply must be already opened, for read if you're going to retrieve and for write if you wish to store. store_fd(\%table, *STDOUT) || die "can't store to stdout\n"; $hashref = fd_retrieve(*STDIN); You can also store data in network order to allow easy sharing across multiple platforms, or when storing on a socket known to be remotely connected. The routines to call have an initial C prefix for I, as in C and C. At retrieval time, your data will be correctly restored so you don't have to know whether you're restoring from native or network ordered data. Double values are stored stringified to ensure portability as well, at the slight risk of loosing some precision in the last decimals. When using C, objects are retrieved in sequence, one object (i.e. one recursive tree) per associated C. If you're more from the object-oriented camp, you can inherit from Storable and directly store your objects by invoking C as a method. The fact that the root of the to-be-stored tree is a blessed reference (i.e. an object) is special-cased so that the retrieve does not provide a reference to that object but rather the blessed object reference itself. (Otherwise, you'd get a reference to that blessed object). =head1 MEMORY STORE The Storable engine can also store data into a Perl scalar instead, to later retrieve them. This is mainly used to freeze a complex structure in some safe compact memory place (where it can possibly be sent to another process via some IPC, since freezing the structure also serializes it in effect). Later on, and maybe somewhere else, you can thaw the Perl scalar out and recreate the original complex structure in memory. Surprisingly, the routines to be called are named C and C. If you wish to send out the frozen scalar to another machine, use C instead to get a portable image. Note that freezing an object structure and immediately thawing it actually achieves a deep cloning of that structure: dclone(.) = thaw(freeze(.)) Storable provides you with a C interface which does not create that intermediary scalar but instead freezes the structure in some internal memory space and then immediately thaws it out. =head1 ADVISORY LOCKING The C and C routine are equivalent to C and C, except that they get an exclusive lock on the file before writing. Likewise, C does the same as C, but also gets a shared lock on the file before reading. As with any advisory locking scheme, the protection only works if you systematically use C and C. If one side of your application uses C whilst the other uses C, you will get no protection at all. The internal advisory locking is implemented using Perl's flock() routine. If your system does not support any form of flock(), or if you share your files across NFS, you might wish to use other forms of locking by using modules such as LockFile::Simple which lock a file using a filesystem entry, instead of locking the file descriptor. =head1 SPEED The heart of Storable is written in C for decent speed. Extra low-level optimizations have been made when manipulating perl internals, to sacrifice encapsulation for the benefit of greater speed. =head1 CANONICAL REPRESENTATION Normally, Storable stores elements of hashes in the order they are stored internally by Perl, i.e. pseudo-randomly. If you set C<$Storable::canonical> to some C value, Storable will store hashes with the elements sorted by their key. This allows you to compare data structures by comparing their frozen representations (or even the compressed frozen representations), which can be useful for creating lookup tables for complicated queries. Canonical order does not imply network order; those are two orthogonal settings. =head1 CODE REFERENCES Since Storable version 2.05, CODE references may be serialized with the help of L. To enable this feature, set C<$Storable::Deparse> to a true value. To enable deserialization, C<$Storable::Eval> should be set to a true value. Be aware that deserialization is done through C, which is dangerous if the Storable file contains malicious data. You can set C<$Storable::Eval> to a subroutine reference which would be used instead of C. See below for an example using a L compartment for deserialization of CODE references. If C<$Storable::Deparse> and/or C<$Storable::Eval> are set to false values, then the value of C<$Storable::forgive_me> (see below) is respected while serializing and deserializing. =head1 FORWARD COMPATIBILITY This release of Storable can be used on a newer version of Perl to serialize data which is not supported by earlier Perls. By default, Storable will attempt to do the right thing, by Cing if it encounters data that it cannot deserialize. However, the defaults can be changed as follows: =over 4 =item utf8 data Perl 5.6 added support for Unicode characters with code points > 255, and Perl 5.8 has full support for Unicode characters in hash keys. Perl internally encodes strings with these characters using utf8, and Storable serializes them as utf8. By default, if an older version of Perl encounters a utf8 value it cannot represent, it will C. To change this behaviour so that Storable deserializes utf8 encoded values as the string of bytes (effectively dropping the I flag) set C<$Storable::drop_utf8> to some C value. This is a form of data loss, because with C<$drop_utf8> true, it becomes impossible to tell whether the original data was the Unicode string, or a series of bytes that happen to be valid utf8. =item restricted hashes Perl 5.8 adds support for restricted hashes, which have keys restricted to a given set, and can have values locked to be read only. By default, when Storable encounters a restricted hash on a perl that doesn't support them, it will deserialize it as a normal hash, silently discarding any placeholder keys and leaving the keys and all values unlocked. To make Storable C instead, set C<$Storable::downgrade_restricted> to a C value. To restore the default set it back to some C value. The cperl PERL_PERTURB_KEYS_TOP hash strategy has a known problem with restricted hashes. =item huge objects On 64bit systems some data structures may exceed the 2G (i.e. I32_MAX) limit. On 32bit systems also strings between I32 and U32 (2G-4G). Since Storable 3.00 (not in perl5 core) we are able to store and retrieve these objects, even if perl5 itself is not able to handle them. These are strings longer then 4G, arrays with more then 2G elements and hashes with more then 2G elements. cperl forbids hashes with more than 2G elements, but this fail in cperl then. perl5 itself at least until 5.26 allows it, but cannot iterate over them. Note that creating those objects might cause out of memory exceptions by the operating system before perl has a chance to abort. =item files from future versions of Storable Earlier versions of Storable would immediately croak if they encountered a file with a higher internal version number than the reading Storable knew about. Internal version numbers are increased each time new data types (such as restricted hashes) are added to the vocabulary of the file format. This meant that a newer Storable module had no way of writing a file readable by an older Storable, even if the writer didn't store newer data types. This version of Storable will defer croaking until it encounters a data type in the file that it does not recognize. This means that it will continue to read files generated by newer Storable modules which are careful in what they write out, making it easier to upgrade Storable modules in a mixed environment. The old behaviour of immediate croaking can be re-instated by setting C<$Storable::accept_future_minor> to some C value. =back All these variables have no effect on a newer Perl which supports the relevant feature. =head1 ERROR REPORTING Storable uses the "exception" paradigm, in that it does not try to workaround failures: if something bad happens, an exception is generated from the caller's perspective (see L and C). Use eval {} to trap those exceptions. When Storable croaks, it tries to report the error via the C routine from the C package, if it is available. Normal errors are reported by having store() or retrieve() return C. Such errors are usually I/O errors (or truncated stream errors at retrieval). When Storable throws the "Max. recursion depth with nested structures exceeded" error we are already out of stack space. Unfortunately on some earlier perl versions cleaning up a recursive data structure recurses into the free calls, which will lead to stack overflows in the cleanup. This data structure is not properly cleaned up then, it will only be destroyed during global destruction. =head1 WIZARDS ONLY =head2 Hooks Any class may define hooks that will be called during the serialization and deserialization process on objects that are instances of that class. Those hooks can redefine the way serialization is performed (and therefore, how the symmetrical deserialization should be conducted). Since we said earlier: dclone(.) = thaw(freeze(.)) everything we say about hooks should also hold for deep cloning. However, hooks get to know whether the operation is a mere serialization, or a cloning. Therefore, when serializing hooks are involved, dclone(.) <> thaw(freeze(.)) Well, you could keep them in sync, but there's no guarantee it will always hold on classes somebody else wrote. Besides, there is little to gain in doing so: a serializing hook could keep only one attribute of an object, which is probably not what should happen during a deep cloning of that same object. Here is the hooking interface: =over 4 =item C I, I The serializing hook, called on the object during serialization. It can be inherited, or defined in the class itself, like any other method. Arguments: I is the object to serialize, I is a flag indicating whether we're in a dclone() or a regular serialization via store() or freeze(). Returned value: A LIST C<($serialized, $ref1, $ref2, ...)> where $serialized is the serialized form to be used, and the optional $ref1, $ref2, etc... are extra references that you wish to let the Storable engine serialize. At deserialization time, you will be given back the same LIST, but all the extra references will be pointing into the deserialized structure. The B the hook is hit in a serialization flow, you may have it return an empty list. That will signal the Storable engine to further discard that hook for this class and to therefore revert to the default serialization of the underlying Perl data. The hook will again be normally processed in the next serialization. Unless you know better, serializing hook should always say: sub STORABLE_freeze { my ($self, $cloning) = @_; return if $cloning; # Regular default serialization .... } in order to keep reasonable dclone() semantics. =item C I, I, I, ... The deserializing hook called on the object during deserialization. But wait: if we're deserializing, there's no object yet... right? Wrong: the Storable engine creates an empty one for you. If you know Eiffel, you can view C as an alternate creation routine. This means the hook can be inherited like any other method, and that I is your blessed reference for this particular instance. The other arguments should look familiar if you know C: I is true when we're part of a deep clone operation, I is the serialized string you returned to the engine in C, and there may be an optional list of references, in the same order you gave them at serialization time, pointing to the deserialized objects (which have been processed courtesy of the Storable engine). When the Storable engine does not find any C hook routine, it tries to load the class by requiring the package dynamically (using the blessed package name), and then re-attempts the lookup. If at that time the hook cannot be located, the engine croaks. Note that this mechanism will fail if you define several classes in the same file, but L warned you. It is up to you to use this information to populate I the way you want. Returned value: none. =item C I, I, I While C and C are useful for classes where each instance is independent, this mechanism has difficulty (or is incompatible) with objects that exist as common process-level or system-level resources, such as singleton objects, database pools, caches or memoized objects. The alternative C method provides a solution for these shared objects. Instead of C --E C, you implement C --E C instead. Arguments: I is the class we are attaching to, I is a flag indicating whether we're in a dclone() or a regular de-serialization via thaw(), and I is the stored string for the resource object. Because these resource objects are considered to be owned by the entire process/system, and not the "property" of whatever is being serialized, no references underneath the object should be included in the serialized string. Thus, in any class that implements C, the C method cannot return any references, and C will throw an error if C tries to return references. All information required to "attach" back to the shared resource object B be contained B in the C return string. Otherwise, C behaves as normal for C classes. Because C is passed the class (rather than an object), it also returns the object directly, rather than modifying the passed object. Returned value: object of type C =back =head2 Predicates Predicates are not exportable. They must be called by explicitly prefixing them with the Storable package name. =over 4 =item C The C predicate will tell you whether network order was used in the last store or retrieve operation. If you don't know how to use this, just forget about it. =item C Returns true if within a store operation (via STORABLE_freeze hook). =item C Returns true if within a retrieve operation (via STORABLE_thaw hook). =back =head2 Recursion With hooks comes the ability to recurse back to the Storable engine. Indeed, hooks are regular Perl code, and Storable is convenient when it comes to serializing and deserializing things, so why not use it to handle the serialization string? There are a few things you need to know, however: =over 4 =item * From Storable 3.05 to 3.13 we probed for the stack recursion limit for references, arrays and hashes to a maximal depth of ~1200-35000, otherwise we might fall into a stack-overflow. On JSON::XS this limit is 512 btw. With references not immediately referencing each other there's no such limit yet, so you might fall into such a stack-overflow segfault. This probing and the checks we performed have some limitations: =over =item * the stack size at build time might be different at run time, eg. the stack size may have been modified with ulimit(1). If it's larger at run time Storable may fail the freeze() or thaw() unnecessarily. If it's larger at build time Storable may segmentation fault when processing a deep structure at run time. =item * the stack size might be different in a thread. =item * array and hash recursion limits are checked separately against the same recursion depth, a frozen structure with a large sequence of nested arrays within many nested hashes may exhaust the processor stack without triggering Storable's recursion protection. =back So these now have simple defaults rather than probing at build-time. You can control the maximum array and hash recursion depths by modifying C<$Storable::recursion_limit> and C<$Storable::recursion_limit_hash> respectively. Either can be set to C<-1> to prevent any depth checks, though this isn't recommended. If you want to test what the limits are, the F tool is included in the C distribution. =item * You can create endless loops if the things you serialize via freeze() (for instance) point back to the object we're trying to serialize in the hook. =item * Shared references among objects will not stay shared: if we're serializing the list of object [A, C] where both object A and C refer to the SAME object B, and if there is a serializing hook in A that says freeze(B), then when deserializing, we'll get [A', C'] where A' refers to B', but C' refers to D, a deep clone of B'. The topology was not preserved. =item * The maximal stack recursion limit for your system is returned by C and C. The hash limit is usually half the size of the array and ref limit, as the Perl hash API is not optimal. =back That's why C lets you provide a list of references to serialize. The engine guarantees that those will be serialized in the same context as the other objects, and therefore that shared objects will stay shared. In the above [A, C] example, the C hook could return: ("something", $self->{B}) and the B part would be serialized by the engine. In C, you would get back the reference to the B' object, deserialized for you. Therefore, recursion should normally be avoided, but is nonetheless supported. =head2 Deep Cloning There is a Clone module available on CPAN which implements deep cloning natively, i.e. without freezing to memory and thawing the result. It is aimed to replace Storable's dclone() some day. However, it does not currently support Storable hooks to redefine the way deep cloning is performed. =head1 Storable magic Yes, there's a lot of that :-) But more precisely, in UNIX systems there's a utility called C, which recognizes data files based on their contents (usually their first few bytes). For this to work, a certain file called F needs to taught about the I of the data. Where that configuration file lives depends on the UNIX flavour; often it's something like F or F. Your system administrator needs to do the updating of the F file. The necessary signature information is output to STDOUT by invoking Storable::show_file_magic(). Note that the GNU implementation of the C utility, version 3.38 or later, is expected to contain support for recognising Storable files out-of-the-box, in addition to other kinds of Perl files. You can also use the following functions to extract the file header information from Storable images: =over =item $info = Storable::file_magic( $filename ) If the given file is a Storable image return a hash describing it. If the file is readable, but not a Storable image return C. If the file does not exist or is unreadable then croak. The hash returned has the following elements: =over =item C This returns the file format version. It is a string like "2.7". Note that this version number is not the same as the version number of the Storable module itself. For instance Storable v0.7 create files in format v2.0 and Storable v2.15 create files in format v2.7. The file format version number only increment when additional features that would confuse older versions of the module are added. Files older than v2.0 will have the one of the version numbers "-1", "0" or "1". No minor number was used at that time. =item C This returns the file format version as number. It is a string like "2.007". This value is suitable for numeric comparisons. The constant function C returns a comparable number that represents the highest file version number that this version of Storable fully supports (but see discussion of C<$Storable::accept_future_minor> above). The constant C function returns what file version is written and might be less than C in some configurations. =item C, C This also returns the file format version. If the version is "2.7" then major would be 2 and minor would be 7. The minor element is missing for when major is less than 2. =item C The is the number of bytes that the Storable header occupies. =item C This is TRUE if the image store data in network order. This means that it was created with nstore() or similar. =item C This is only present when C is FALSE. It is the $Config{byteorder} string of the perl that created this image. It is a string like "1234" (32 bit little endian) or "87654321" (64 bit big endian). This must match the current perl for the image to be readable by Storable. =item C, C, C, C These are only present when C is FALSE. These are the sizes of various C datatypes of the perl that created this image. These must match the current perl for the image to be readable by Storable. The C element is only present for file format v2.2 and higher. =item C The name of the file. =back =item $info = Storable::read_magic( $buffer ) =item $info = Storable::read_magic( $buffer, $must_be_file ) The $buffer should be a Storable image or the first few bytes of it. If $buffer starts with a Storable header, then a hash describing the image is returned, otherwise C is returned. The hash has the same structure as the one returned by Storable::file_magic(). The C element is true if the image is a file image. If the $must_be_file argument is provided and is TRUE, then return C unless the image looks like it belongs to a file dump. The maximum size of a Storable header is currently 21 bytes. If the provided $buffer is only the first part of a Storable image it should at least be this long to ensure that read_magic() will recognize it as such. =back =head1 EXAMPLES Here are some code samples showing a possible usage of Storable: use Storable qw(store retrieve freeze thaw dclone); %color = ('Blue' => 0.1, 'Red' => 0.8, 'Black' => 0, 'White' => 1); store(\%color, 'mycolors') or die "Can't store %a in mycolors!\n"; $colref = retrieve('mycolors'); die "Unable to retrieve from mycolors!\n" unless defined $colref; printf "Blue is still %lf\n", $colref->{'Blue'}; $colref2 = dclone(\%color); $str = freeze(\%color); printf "Serialization of %%color is %d bytes long.\n", length($str); $colref3 = thaw($str); which prints (on my machine): Blue is still 0.100000 Serialization of %color is 102 bytes long. Serialization of CODE references and deserialization in a safe compartment: =for example begin use Storable qw(freeze thaw); use Safe; use strict; my $safe = Safe->new; # because of opcodes used in "use strict": $safe->permit(qw(:default require)); local $Storable::Deparse = 1; local $Storable::Eval = sub { $safe->reval($_[0]) }; my $serialized = freeze(sub { 42 }); my $code = thaw($serialized); $code->() == 42; =for example end =for example_testing is( $code->(), 42 ); =head1 SECURITY WARNING B There is B way to configure Storable so that it can be used safely to process untrusted data. While there I various options that can be used to mitigate specific security issues these options do I comprise a complete safety net for the user, and processing untrusted data may result in segmentation faults, remote code execution, or privilege escalation. The following lists some known features which represent security issues that should be considered by users of this module. Most obviously, the optional (off by default) CODE reference serialization feature allows transfer of code to the deserializing process. Furthermore, any serialized object will cause Storable to helpfully load the module corresponding to the class of the object in the deserializing module. For manipulated module names, this can load almost arbitrary code. Finally, the deserialized object's destructors will be invoked when the objects get destroyed in the deserializing process. Maliciously crafted Storable documents may put such objects in the value of a hash key that is overridden by another key/value pair in the same hash, thus causing immediate destructor execution. To disable blessing objects while thawing/retrieving remove the flag C = 2 from C<$Storable::flags> or set the 2nd argument for thaw/retrieve to 0. To disable tieing data while thawing/retrieving remove the flag C = 4 from C<$Storable::flags> or set the 2nd argument for thaw/retrieve to 0. With the default setting of C<$Storable::flags> = 6, creating or destroying random objects, even renamed objects can be controlled by an attacker. See CVE-2015-1592 and its metasploit module. If your application requires accepting data from untrusted sources, you are best off with a less powerful and more-likely safe serialization format and implementation. If your data is sufficiently simple, L or L are fine alternatives. For more complex data structures containing various Perl specific data types like regular expressions or aliased data L is the best alternative and offers maximum interoperability. Note that Sereal is L, but you can configure the encoder and decoder to mitigate any security issues. =head1 WARNING If you're using references as keys within your hash tables, you're bound to be disappointed when retrieving your data. Indeed, Perl stringifies references used as hash table keys. If you later wish to access the items via another reference stringification (i.e. using the same reference that was used for the key originally to record the value into the hash table), it will work because both references stringify to the same string. It won't work across a sequence of C and C operations, however, because the addresses in the retrieved objects, which are part of the stringified references, will probably differ from the original addresses. The topology of your structure is preserved, but not hidden semantics like those. On platforms where it matters, be sure to call C on the descriptors that you pass to Storable functions. Storing data canonically that contains large hashes can be significantly slower than storing the same data normally, as temporary arrays to hold the keys for each hash have to be allocated, populated, sorted and freed. Some tests have shown a halving of the speed of storing -- the exact penalty will depend on the complexity of your data. There is no slowdown on retrieval. =head1 REGULAR EXPRESSIONS Storable now has experimental support for storing regular expressions, but there are significant limitations: =over =item * perl 5.8 or later is required. =item * regular expressions with code blocks, ie C or C will throw an exception when thawed. =item * regular expression syntax and flags have changed over the history of perl, so a regular expression that you freeze in one version of perl may fail to thaw or behave differently in another version of perl. =item * depending on the version of perl, regular expressions can change in behaviour depending on the context, but later perls will bake that behaviour into the regexp. =back Storable will throw an exception if a frozen regular expression cannot be thawed. =head1 BUGS You can't store GLOB, FORMLINE, etc.... If you can define semantics for those operations, feel free to enhance Storable so that it can deal with them. The store functions will C if they run into such references unless you set C<$Storable::forgive_me> to some C value. In that case, the fatal message is converted to a warning and some meaningless string is stored instead. Setting C<$Storable::canonical> may not yield frozen strings that compare equal due to possible stringification of numbers. When the string version of a scalar exists, it is the form stored; therefore, if you happen to use your numbers as strings between two freezing operations on the same data structures, you will get different results. When storing doubles in network order, their value is stored as text. However, you should also not expect non-numeric floating-point values such as infinity and "not a number" to pass successfully through a nstore()/retrieve() pair. As Storable neither knows nor cares about character sets (although it does know that characters may be more than eight bits wide), any difference in the interpretation of character codes between a host and a target system is your problem. In particular, if host and target use different code points to represent the characters used in the text representation of floating-point numbers, you will not be able be able to exchange floating-point data, even with nstore(). C is a blunt tool. There is no facility either to return B strings as utf8 sequences, or to attempt to convert utf8 data back to 8 bit and C if the conversion fails. Prior to Storable 2.01, no distinction was made between signed and unsigned integers on storing. By default Storable prefers to store a scalars string representation (if it has one) so this would only cause problems when storing large unsigned integers that had never been converted to string or floating point. In other words values that had been generated by integer operations such as logic ops and then not used in any string or arithmetic context before storing. =head2 64 bit data in perl 5.6.0 and 5.6.1 This section only applies to you if you have existing data written out by Storable 2.02 or earlier on perl 5.6.0 or 5.6.1 on Unix or Linux which has been configured with 64 bit integer support (not the default) If you got a precompiled perl, rather than running Configure to build your own perl from source, then it almost certainly does not affect you, and you can stop reading now (unless you're curious). If you're using perl on Windows it does not affect you. Storable writes a file header which contains the sizes of various C language types for the C compiler that built Storable (when not writing in network order), and will refuse to load files written by a Storable not on the same (or compatible) architecture. This check and a check on machine byteorder is needed because the size of various fields in the file are given by the sizes of the C language types, and so files written on different architectures are incompatible. This is done for increased speed. (When writing in network order, all fields are written out as standard lengths, which allows full interworking, but takes longer to read and write) Perl 5.6.x introduced the ability to optional configure the perl interpreter to use C's C type to allow scalars to store 64 bit integers on 32 bit systems. However, due to the way the Perl configuration system generated the C configuration files on non-Windows platforms, and the way Storable generates its header, nothing in the Storable file header reflected whether the perl writing was using 32 or 64 bit integers, despite the fact that Storable was storing some data differently in the file. Hence Storable running on perl with 64 bit integers will read the header from a file written by a 32 bit perl, not realise that the data is actually in a subtly incompatible format, and then go horribly wrong (possibly crashing) if it encountered a stored integer. This is a design failure. Storable has now been changed to write out and read in a file header with information about the size of integers. It's impossible to detect whether an old file being read in was written with 32 or 64 bit integers (they have the same header) so it's impossible to automatically switch to a correct backwards compatibility mode. Hence this Storable defaults to the new, correct behaviour. What this means is that if you have data written by Storable 1.x running on perl 5.6.0 or 5.6.1 configured with 64 bit integers on Unix or Linux then by default this Storable will refuse to read it, giving the error I. If you have such data then you should set C<$Storable::interwork_56_64bit> to a true value to make this Storable read and write files with the old header. You should also migrate your data, or any older perl you are communicating with, to this current version of Storable. If you don't have data written with specific configuration of perl described above, then you do not and should not do anything. Don't set the flag - not only will Storable on an identically configured perl refuse to load them, but Storable a differently configured perl will load them believing them to be correct for it, and then may well fail or crash part way through reading them. =head1 CREDITS Thank you to (in chronological order): Jarkko Hietaniemi Ulrich Pfeifer Benjamin A. Holzman Andrew Ford Gisle Aas Jeff Gresham Murray Nesbitt Marc Lehmann Justin Banks Jarkko Hietaniemi (AGAIN, as perl 5.7.0 Pumpkin!) Salvador Ortiz Garcia Dominic Dunlop Erik Haugan Benjamin A. Holzman Reini Urban Todd Rinaldo Aaron Crane for their bug reports, suggestions and contributions. Benjamin Holzman contributed the tied variable support, Andrew Ford contributed the canonical order for hashes, and Gisle Aas fixed a few misunderstandings of mine regarding the perl internals, and optimized the emission of "tags" in the output streams by simply counting the objects instead of tagging them (leading to a binary incompatibility for the Storable image starting at version 0.6--older images are, of course, still properly understood). Murray Nesbitt made Storable thread-safe. Marc Lehmann added overloading and references to tied items support. Benjamin Holzman added a performance improvement for overloaded classes; thanks to Grant Street Group for footing the bill. Reini Urban took over maintenance from p5p, and added security fixes and huge object support. =head1 AUTHOR Storable was written by Raphael Manfredi FRaphael_Manfredi@pobox.comE> Maintenance is now done by cperl L Please e-mail us with problems, bug fixes, comments and complaints, although if you have compliments you should send them to Raphael. Please don't e-mail Raphael with problems, as he no longer works on Storable, and your message will be delayed while he forwards it to us. =head1 SEE ALSO L. =cut FILEa7517d56/Time/HiRes.pmd4package Time::HiRes; { use 5.006; } use strict; require Exporter; use XSLoader (); our @ISA = qw(Exporter); our @EXPORT = qw( ); # More or less this same list is in Makefile.PL. Should unify. our @EXPORT_OK = qw (usleep sleep ualarm alarm gettimeofday time tv_interval getitimer setitimer nanosleep clock_gettime clock_getres clock clock_nanosleep CLOCKS_PER_SEC CLOCK_BOOTTIME CLOCK_HIGHRES CLOCK_MONOTONIC CLOCK_MONOTONIC_COARSE CLOCK_MONOTONIC_FAST CLOCK_MONOTONIC_PRECISE CLOCK_MONOTONIC_RAW CLOCK_PROCESS_CPUTIME_ID CLOCK_PROF CLOCK_REALTIME CLOCK_REALTIME_COARSE CLOCK_REALTIME_FAST CLOCK_REALTIME_PRECISE CLOCK_REALTIME_RAW CLOCK_SECOND CLOCK_SOFTTIME CLOCK_THREAD_CPUTIME_ID CLOCK_TIMEOFDAY CLOCK_UPTIME CLOCK_UPTIME_COARSE CLOCK_UPTIME_FAST CLOCK_UPTIME_PRECISE CLOCK_UPTIME_RAW CLOCK_VIRTUAL ITIMER_PROF ITIMER_REAL ITIMER_REALPROF ITIMER_VIRTUAL TIMER_ABSTIME d_usleep d_ualarm d_gettimeofday d_getitimer d_setitimer d_nanosleep d_clock_gettime d_clock_getres d_clock d_clock_nanosleep d_hires_stat d_futimens d_utimensat d_hires_utime stat lstat utime ); our $VERSION = '1.9778'; our $XS_VERSION = $VERSION; $VERSION = eval $VERSION; our $AUTOLOAD; sub AUTOLOAD { my $constname; ($constname = $AUTOLOAD) =~ s/.*:://; # print "AUTOLOAD: constname = $constname ($AUTOLOAD)\n"; die "&Time::HiRes::constant not defined" if $constname eq 'constant'; my ($error, $val) = constant($constname); # print "AUTOLOAD: error = $error, val = $val\n"; if ($error) { my (undef,$file,$line) = caller; die "$error at $file line $line.\n"; } { no strict 'refs'; *$AUTOLOAD = sub { $val }; } goto &$AUTOLOAD; } sub import { for my $i (@_[1 .. $#_]) { if (($i eq 'clock_getres' && !&d_clock_getres) || ($i eq 'clock_gettime' && !&d_clock_gettime) || ($i eq 'clock_nanosleep' && !&d_clock_nanosleep) || ($i eq 'clock' && !&d_clock) || ($i eq 'nanosleep' && !&d_nanosleep) || ($i eq 'usleep' && !&d_usleep) || ($i eq 'utime' && !&d_hires_utime) || ($i eq 'ualarm' && !&d_ualarm)) { require Carp; Carp::croak("Time::HiRes::$i(): unimplemented in this platform"); } } goto &Exporter::import; } XSLoader::load( 'Time::HiRes', $XS_VERSION ); # Preloaded methods go here. sub tv_interval { # probably could have been done in C my ($a, $b) = @_; $b = [gettimeofday()] unless defined($b); (${$b}[0] - ${$a}[0]) + ((${$b}[1] - ${$a}[1]) / 1_000_000); } # Autoload methods go after =cut, and are processed by the autosplit program. 1; __END__ =head1 NAME Time::HiRes - High resolution alarm, sleep, gettimeofday, interval timers =head1 SYNOPSIS use Time::HiRes qw( usleep ualarm gettimeofday tv_interval nanosleep clock_gettime clock_getres clock_nanosleep clock stat lstat utime); usleep ($microseconds); nanosleep ($nanoseconds); ualarm ($microseconds); ualarm ($microseconds, $interval_microseconds); $t0 = [gettimeofday]; ($seconds, $microseconds) = gettimeofday; $elapsed = tv_interval ( $t0, [$seconds, $microseconds]); $elapsed = tv_interval ( $t0, [gettimeofday]); $elapsed = tv_interval ( $t0 ); use Time::HiRes qw ( time alarm sleep ); $now_fractions = time; sleep ($floating_seconds); alarm ($floating_seconds); alarm ($floating_seconds, $floating_interval); use Time::HiRes qw( setitimer getitimer ); setitimer ($which, $floating_seconds, $floating_interval ); getitimer ($which); use Time::HiRes qw( clock_gettime clock_getres clock_nanosleep CLOCK_REALTIME ITIMER_REAL ITIMER_VIRTUAL ITIMER_PROF ITIMER_REALPROF ); $realtime = clock_gettime(CLOCK_REALTIME); $resolution = clock_getres(CLOCK_REALTIME); clock_nanosleep(CLOCK_REALTIME, 1.5e9); clock_nanosleep(CLOCK_REALTIME, time()*1e9 + 10e9, TIMER_ABSTIME); my $ticktock = clock(); use Time::HiRes qw( stat lstat ); my @stat = stat("file"); my @stat = stat(FH); my @stat = lstat("file"); use Time::HiRes qw( utime ); utime $floating_seconds, $floating_seconds, file...; =head1 DESCRIPTION The C module implements a Perl interface to the C, C, C, C, and C/C system calls, in other words, high resolution time and timers. See the L section below and the test scripts for usage; see your system documentation for the description of the underlying C or C, C, C, and C/C calls. If your system lacks C or an emulation of it you don't get C or the one-argument form of C. If your system lacks all of C, C, C, and C, you don't get C, C, or C. If your system lacks both C and C you don't get C or C. If you try to import an unimplemented function in the C statement it will fail at compile time. If your subsecond sleeping is implemented with C instead of C, you can mix subsecond sleeping with signals since C does not use signals. This, however, is not portable, and you should first check for the truth value of C<&Time::HiRes::d_nanosleep> to see whether you have nanosleep, and then carefully read your C C API documentation for any peculiarities. If you are using C for something else than mixing sleeping with signals, give some thought to whether Perl is the tool you should be using for work requiring nanosecond accuracies. Remember that unless you are working on a I system, any clocks and timers will be imprecise, especially so if you are working in a pre-emptive multiuser system. Understand the difference between I and process time (in UNIX-like systems the sum of I and I times). Any attempt to sleep for X seconds will most probably end up sleeping B than that, but don't be surprised if you end up sleeping slightly B. The following functions can be imported from this module. No functions are exported by default. =over 4 =item gettimeofday () In array context returns a two-element array with the seconds and microseconds since the epoch. In scalar context returns floating seconds like C (see below). =item usleep ( $useconds ) Sleeps for the number of microseconds (millionths of a second) specified. Returns the number of microseconds actually slept. Can sleep for more than one second, unlike the C system call. Can also sleep for zero seconds, which often works like a I. See also L|/sleep ( $floating_seconds )>, and L|/clock_nanosleep ( $which, $nanoseconds, $flags = 0)>. Do not expect usleep() to be exact down to one microsecond. =item nanosleep ( $nanoseconds ) Sleeps for the number of nanoseconds (1e9ths of a second) specified. Returns the number of nanoseconds actually slept (accurate only to microseconds, the nearest thousand of them). Can sleep for more than one second. Can also sleep for zero seconds, which often works like a I. See also L|/sleep ( $floating_seconds )>, L|/usleep ( $useconds )>, and L|/clock_nanosleep ( $which, $nanoseconds, $flags = 0)>. Do not expect nanosleep() to be exact down to one nanosecond. Getting even accuracy of one thousand nanoseconds is good. =item ualarm ( $useconds [, $interval_useconds ] ) Issues a C call; the C<$interval_useconds> is optional and will be zero if unspecified, resulting in C-like behaviour. Returns the remaining time in the alarm in microseconds, or C if an error occurred. ualarm(0) will cancel an outstanding ualarm(). Note that the interaction between alarms and sleeps is unspecified. =item tv_interval tv_interval ( $ref_to_gettimeofday [, $ref_to_later_gettimeofday] ) Returns the floating seconds between the two times, which should have been returned by C. If the second argument is omitted, then the current time is used. =item time () Returns a floating seconds since the epoch. This function can be imported, resulting in a nice drop-in replacement for the C described later. For example, the C above declared no subroutine for any of the operators C<-->, C (the overload key for unary minus), or C<-=>. Thus operation | generates a call to ============|====================== -$x | minus($x, 0, 1) $x-- | minus($x, 1, undef) $x -= 3 | minus($x, 3, undef) Note the Cs: where autogeneration results in the method for a standard operator which does not change either of its operands, such as C<->, being used to implement an operator which changes the operand ("mutators": here, C<--> and C<-=>), Perl passes undef as the third argument. This still evaluates as FALSE, consistent with the fact that the operands have not been swapped, but gives the subroutine a chance to alter its behaviour in these cases. In all the above examples, C is required only to return the result of the subtraction: Perl takes care of the assignment to $x. In fact, such methods should I modify their operands, even if C is passed as the third argument (see L). The same is not true of implementations of C<++> and C<-->: these are expected to modify their operand. An appropriate implementation of C<--> might look like use overload '--' => "decr", # ... sub decr { --${$_[0]}; } If the "bitwise" feature is enabled (see L), a fifth TRUE argument is passed to subroutines handling C<&>, C<|>, C<^> and C<~>. This indicates that the caller is expecting numeric behaviour. The fourth argument will be C, as that position (C<$_[3]>) is reserved for use by L. =head3 Mathemagic, Mutators, and Copy Constructors The term 'mathemagic' describes the overloaded implementation of mathematical operators. Mathemagical operations raise an issue. Consider the code: $a = $b; --$a; If C<$a> and C<$b> are scalars then after these statements $a == $b - 1 An object, however, is a reference to blessed data, so if C<$a> and C<$b> are objects then the assignment C<$a = $b> copies only the reference, leaving C<$a> and C<$b> referring to the same object data. One might therefore expect the operation C<--$a> to decrement C<$b> as well as C<$a>. However, this would not be consistent with how we expect the mathematical operators to work. Perl resolves this dilemma by transparently calling a copy constructor before calling a method defined to implement a mutator (C<-->, C<+=>, and so on.). In the above example, when Perl reaches the decrement statement, it makes a copy of the object data in C<$a> and assigns to C<$a> a reference to the copied data. Only then does it call C, which alters the copied data, leaving C<$b> unchanged. Thus the object metaphor is preserved as far as possible, while mathemagical operations still work according to the arithmetic metaphor. Note: the preceding paragraph describes what happens when Perl autogenerates the copy constructor for an object based on a scalar. For other cases, see L. =head2 Overloadable Operations The complete list of keys that can be specified in the C directive are given, separated by spaces, in the values of the hash C<%overload::ops>: with_assign => '+ - * / % ** << >> x .', assign => '+= -= *= /= %= **= <<= >>= x= .=', num_comparison => '< <= > >= == !=', '3way_comparison' => '<=> cmp', str_comparison => 'lt le gt ge eq ne', binary => '& &= | |= ^ ^= &. &.= |. |.= ^. ^.=', unary => 'neg ! ~ ~.', mutators => '++ --', func => 'atan2 cos sin exp abs log sqrt int', conversion => 'bool "" 0+ qr', iterators => '<>', filetest => '-X', dereferencing => '${} @{} %{} &{} *{}', matching => '~~', special => 'nomethod fallback =', Most of the overloadable operators map one-to-one to these keys. Exceptions, including additional overloadable operations not apparent from this hash, are included in the notes which follow. This list is subject to growth over time. A warning is issued if an attempt is made to register an operator not found above. =over 5 =item * C The operator C is not a valid key for C. However, if the operator C is overloaded then the same implementation will be used for C (since the two operators differ only in precedence). =item * C The key C is used for unary minus to disambiguate it from binary C<->. =item * C<++>, C<--> Assuming they are to behave analogously to Perl's C<++> and C<-->, overloaded implementations of these operators are required to mutate their operands. No distinction is made between prefix and postfix forms of the increment and decrement operators: these differ only in the point at which Perl calls the associated subroutine when evaluating an expression. =item * I += -= *= /= %= **= <<= >>= x= .= &= |= ^= &.= |.= ^.= Simple assignment is not overloadable (the C<'='> key is used for the L). Perl does have a way to make assignments to an object do whatever you want, but this involves using tie(), not overload - see L and the L examples below. The subroutine for the assignment variant of an operator is required only to return the result of the operation. It is permitted to change the value of its operand (this is safe because Perl calls the copy constructor first), but this is optional since Perl assigns the returned value to the left-hand operand anyway. An object that overloads an assignment operator does so only in respect of assignments to that object. In other words, Perl never calls the corresponding methods with the third argument (the "swap" argument) set to TRUE. For example, the operation $a *= $b cannot lead to C<$b>'s implementation of C<*=> being called, even if C<$a> is a scalar. (It can, however, generate a call to C<$b>'s method for C<*>). =item * I + - * / % ** << >> x . & | ^ &. |. ^. As described L, Perl may call methods for operators like C<+> and C<&> in the course of implementing missing operations like C<++>, C<+=>, and C<&=>. While these methods may detect this usage by testing the definedness of the third argument, they should in all cases avoid changing their operands. This is because Perl does not call the copy constructor before invoking these methods. =item * C Traditionally, the Perl function C rounds to 0 (see L), and so for floating-point-like types one should follow the same semantic. =item * I "" 0+ bool These conversions are invoked according to context as necessary. For example, the subroutine for C<'""'> (stringify) may be used where the overloaded object is passed as an argument to C, and that for C<'bool'> where it is tested in the condition of a flow control statement (like C) or the ternary C operation. Of course, in contexts like, for example, C<$obj + 1>, Perl will invoke C<$obj>'s implementation of C<+> rather than (in this example) converting C<$obj> to a number using the numify method C<'0+'> (an exception to this is when no method has been provided for C<'+'> and L is set to TRUE). The subroutines for C<'""'>, C<'0+'>, and C<'bool'> can return any arbitrary Perl value. If the corresponding operation for this value is overloaded too, the operation will be called again with this value. As a special case if the overload returns the object itself then it will be used directly. An overloaded conversion returning the object is probably a bug, because you're likely to get something that looks like C. qr The subroutine for C<'qr'> is used wherever the object is interpolated into or used as a regexp, including when it appears on the RHS of a C<=~> or C operator. C must return a compiled regexp, or a ref to a compiled regexp (such as C returns), and any further overloading on the return value will be ignored. =item * I If CE> is overloaded then the same implementation is used for both the I syntax C$varE> and I syntax C${var}E>. =item * I The key C<'-X'> is used to specify a subroutine to handle all the filetest operators (C<-f>, C<-x>, and so on: see L for the full list); it is not possible to overload any filetest operator individually. To distinguish them, the letter following the '-' is passed as the second argument (that is, in the slot that for binary operators is used to pass the second operand). Calling an overloaded filetest operator does not affect the stat value associated with the special filehandle C<_>. It still refers to the result of the last C, C or unoverloaded filetest. This overload was introduced in Perl 5.12. =item * I The key C<"~~"> allows you to override the smart matching logic used by the C<~~> operator and the switch construct (C/C). See L and L. Unusually, the overloaded implementation of the smart match operator does not get full control of the smart match behaviour. In particular, in the following code: package Foo; use overload '~~' => 'match'; my $obj = Foo->new(); $obj ~~ [ 1,2,3 ]; the smart match does I invoke the method call like this: $obj->match([1,2,3],0); rather, the smart match distributive rule takes precedence, so $obj is smart matched against each array element in turn until a match is found, so you may see between one and three of these calls instead: $obj->match(1,0); $obj->match(2,0); $obj->match(3,0); Consult the match table in L for details of when overloading is invoked. =item * I ${} @{} %{} &{} *{} If these operators are not explicitly overloaded then they work in the normal way, yielding the underlying scalar, array, or whatever stores the object data (or the appropriate error message if the dereference operator doesn't match it). Defining a catch-all C<'nomethod'> (see L) makes no difference to this as the catch-all function will not be called to implement a missing dereference operator. If a dereference operator is overloaded then it must return a I of the appropriate type (for example, the subroutine for key C<'${}'> should return a reference to a scalar, not a scalar), or another object which overloads the operator: that is, the subroutine only determines what is dereferenced and the actual dereferencing is left to Perl. As a special case, if the subroutine returns the object itself then it will not be called again - avoiding infinite recursion. =item * I nomethod fallback = See L>. =back =head2 Magic Autogeneration If a method for an operation is not found then Perl tries to autogenerate a substitute implementation from the operations that have been defined. Note: the behaviour described in this section can be disabled by setting C to FALSE (see L). In the following tables, numbers indicate priority. For example, the table below states that, if no implementation for C<'!'> has been defined then Perl will implement it using C<'bool'> (that is, by inverting the value returned by the method for C<'bool'>); if boolean conversion is also unimplemented then Perl will use C<'0+'> or, failing that, C<'""'>. operator | can be autogenerated from | | 0+ "" bool . x =========|========================== 0+ | 1 2 "" | 1 2 bool | 1 2 int | 1 2 3 ! | 2 3 1 qr | 2 1 3 . | 2 1 3 x | 2 1 3 .= | 3 2 4 1 x= | 3 2 4 1 <> | 2 1 3 -X | 2 1 3 Note: The iterator (C<'EE'>) and file test (C<'-X'>) operators work as normal: if the operand is not a blessed glob or IO reference then it is converted to a string (using the method for C<'""'>, C<'0+'>, or C<'bool'>) to be interpreted as a glob or filename. operator | can be autogenerated from | | < <=> neg -= - =========|========================== neg | 1 -= | 1 -- | 1 2 abs | a1 a2 b1 b2 [*] < | 1 <= | 1 > | 1 >= | 1 == | 1 != | 1 * one from [a1, a2] and one from [b1, b2] Just as numeric comparisons can be autogenerated from the method for C<< '<=>' >>, string comparisons can be autogenerated from that for C<'cmp'>: operators | can be autogenerated from ====================|=========================== lt gt le ge eq ne | cmp Similarly, autogeneration for keys C<'+='> and C<'++'> is analogous to C<'-='> and C<'--'> above: operator | can be autogenerated from | | += + =========|========================== += | 1 ++ | 1 2 And other assignment variations are analogous to C<'+='> and C<'-='> (and similar to C<'.='> and C<'x='> above): operator || *= /= %= **= <<= >>= &= ^= |= &.= ^.= |.= -------------------||------------------------------------------- autogenerated from || * / % ** << >> & ^ | &. ^. |. Note also that the copy constructor (key C<'='>) may be autogenerated, but only for objects based on scalars. See L. =head3 Minimal Set of Overloaded Operations Since some operations can be automatically generated from others, there is a minimal set of operations that need to be overloaded in order to have the complete set of overloaded operations at one's disposal. Of course, the autogenerated operations may not do exactly what the user expects. The minimal set is: + - * / % ** << >> x <=> cmp & | ^ ~ &. |. ^. ~. atan2 cos sin exp log sqrt int "" 0+ bool ~~ Of the conversions, only one of string, boolean or numeric is needed because each can be generated from either of the other two. =head2 Special Keys for C =head3 C The C<'nomethod'> key is used to specify a catch-all function to be called for any operator that is not individually overloaded. The specified function will be passed four parameters. The first three arguments coincide with those that would have been passed to the corresponding method if it had been defined. The fourth argument is the C key for that missing method. If the "bitwise" feature is enabled (see L), a fifth TRUE argument is passed to subroutines handling C<&>, C<|>, C<^> and C<~> to indicate that the caller is expecting numeric behaviour. For example, if C<$a> is an object blessed into a package declaring use overload 'nomethod' => 'catch_all', # ... then the operation 3 + $a could (unless a method is specifically declared for the key C<'+'>) result in a call catch_all($a, 3, 1, '+') See L. =head3 C The value assigned to the key C<'fallback'> tells Perl how hard it should try to find an alternative way to implement a missing operator. =over =item * defined, but FALSE use overload "fallback" => 0, # ... ; This disables L. =item * C In the default case where no value is explicitly assigned to C, magic autogeneration is enabled. =item * TRUE The same as for C, but if a missing operator cannot be autogenerated then, instead of issuing an error message, Perl is allowed to revert to what it would have done for that operator if there had been no C directive. Note: in most cases, particularly the L, this is unlikely to be appropriate behaviour. =back See L. =head3 Copy Constructor As mentioned L, this operation is called when a mutator is applied to a reference that shares its object with some other reference. For example, if C<$b> is mathemagical, and C<'++'> is overloaded with C<'incr'>, and C<'='> is overloaded with C<'clone'>, then the code $a = $b; # ... (other code which does not modify $a or $b) ... ++$b; would be executed in a manner equivalent to $a = $b; # ... $b = $b->clone(undef, ""); $b->incr(undef, ""); Note: =over =item * The subroutine for C<'='> does not overload the Perl assignment operator: it is used only to allow mutators to work as described here. (See L above.) =item * As for other operations, the subroutine implementing '=' is passed three arguments, though the last two are always C and C<''>. =item * The copy constructor is called only before a call to a function declared to implement a mutator, for example, if C<++$b;> in the code above is effected via a method declared for key C<'++'> (or 'nomethod', passed C<'++'> as the fourth argument) or, by autogeneration, C<'+='>. It is not called if the increment operation is effected by a call to the method for C<'+'> since, in the equivalent code, $a = $b; $b = $b + 1; the data referred to by C<$a> is unchanged by the assignment to C<$b> of a reference to new object data. =item * The copy constructor is not called if Perl determines that it is unnecessary because there is no other reference to the data being modified. =item * If C<'fallback'> is undefined or TRUE then a copy constructor can be autogenerated, but only for objects based on scalars. In other cases it needs to be defined explicitly. Where an object's data is stored as, for example, an array of scalars, the following might be appropriate: use overload '=' => sub { bless [ @{$_[0]} ] }, # ... =item * If C<'fallback'> is TRUE and no copy constructor is defined then, for objects not based on scalars, Perl may silently fall back on simple assignment - that is, assignment of the object reference. In effect, this disables the copy constructor mechanism since no new copy of the object data is created. This is almost certainly not what you want. (It is, however, consistent: for example, Perl's fallback for the C<++> operator is to increment the reference itself.) =back =head2 How Perl Chooses an Operator Implementation Which is checked first, C or C? If the two operands of an operator are of different types and both overload the operator, which implementation is used? The following are the precedence rules: =over =item 1. If the first operand has declared a subroutine to overload the operator then use that implementation. =item 2. Otherwise, if fallback is TRUE or undefined for the first operand then see if the L allows another of its operators to be used instead. =item 3. Unless the operator is an assignment (C<+=>, C<-=>, etc.), repeat step (1) in respect of the second operand. =item 4. Repeat Step (2) in respect of the second operand. =item 5. If the first operand has a "nomethod" method then use that. =item 6. If the second operand has a "nomethod" method then use that. =item 7. If C is TRUE for both operands then perform the usual operation for the operator, treating the operands as numbers, strings, or booleans as appropriate for the operator (see note). =item 8. Nothing worked - die. =back Where there is only one operand (or only one operand with overloading) the checks in respect of the other operand above are skipped. There are exceptions to the above rules for dereference operations (which, if Step 1 fails, always fall back to the normal, built-in implementations - see Dereferencing), and for C<~~> (which has its own set of rules - see C under L above). Note on Step 7: some operators have a different semantic depending on the type of their operands. As there is no way to instruct Perl to treat the operands as, e.g., numbers instead of strings, the result here may not be what you expect. See L. =head2 Losing Overloading The restriction for the comparison operation is that even if, for example, C should return a blessed reference, the autogenerated C function will produce only a standard logical value based on the numerical value of the result of C. In particular, a working numeric conversion is needed in this case (possibly expressed in terms of other conversions). Similarly, C<.=> and C operators lose their mathemagical properties if the string conversion substitution is applied. When you chop() a mathemagical object it is promoted to a string and its mathemagical properties are lost. The same can happen with other operations as well. =head2 Inheritance and Overloading Overloading respects inheritance via the @ISA hierarchy. Inheritance interacts with overloading in two ways. =over =item Method names in the C directive If C in use overload key => value; is a string, it is interpreted as a method name - which may (in the usual way) be inherited from another class. =item Overloading of an operation is inherited by derived classes Any class derived from an overloaded class is also overloaded and inherits its operator implementations. If the same operator is overloaded in more than one ancestor then the implementation is determined by the usual inheritance rules. For example, if C inherits from C and C (in that order), C overloads C<+> with C<\&D::plus_sub>, and C overloads C<+> by C<"plus_meth">, then the subroutine C will be called to implement operation C<+> for an object in package C. =back Note that in Perl version prior to 5.18 inheritance of the C key was not governed by the above rules. The value of C in the first overloaded ancestor was used. This was fixed in 5.18 to follow the usual rules of inheritance. =head2 Run-time Overloading Since all C directives are executed at compile-time, the only way to change overloading during run-time is to eval 'use overload "+" => \&addmethod'; You can also use eval 'no overload "+", "--", "<="'; though the use of these constructs during run-time is questionable. =head2 Public Functions Package C provides the following public functions: =over 5 =item overload::StrVal(arg) Gives the string value of C as in the absence of stringify overloading. If you are using this to get the address of a reference (useful for checking if two references point to the same thing) then you may be better off using C or C, which are faster. =item overload::Overloaded(arg) Returns true if C is subject to overloading of some operations. =item overload::Method(obj,op) Returns C or a reference to the method that implements C. Such a method always takes three arguments, which will be enforced if it is an XS method. =back =head2 Overloading Constants For some applications, the Perl parser mangles constants too much. It is possible to hook into this process via C and C functions. These functions take a hash as an argument. The recognized keys of this hash are: =over 8 =item integer to overload integer constants, =item float to overload floating point constants, =item binary to overload octal and hexadecimal constants, =item q to overload C-quoted strings, constant pieces of C- and C-quoted strings and here-documents, =item qr to overload constant pieces of regular expressions. =back The corresponding values are references to functions which take three arguments: the first one is the I string form of the constant, the second one is how Perl interprets this constant, the third one is how the constant is used. Note that the initial string form does not contain string delimiters, and has backslashes in backslash-delimiter combinations stripped (thus the value of delimiter is not relevant for processing of this string). The return value of this function is how this constant is going to be interpreted by Perl. The third argument is undefined unless for overloaded C- and C- constants, it is C in single-quote context (comes from strings, regular expressions, and single-quote HERE documents), it is C for arguments of C/C operators, it is C for right-hand side of C-operator, and it is C otherwise. Since an expression C<"ab$cd,,"> is just a shortcut for C<'ab' . $cd . ',,'>, it is expected that overloaded constant strings are equipped with reasonable overloaded catenation operator, otherwise absurd results will result. Similarly, negative numbers are considered as negations of positive constants. Note that it is probably meaningless to call the functions overload::constant() and overload::remove_constant() from anywhere but import() and unimport() methods. From these methods they may be called as sub import { shift; return unless @_; die "unknown import: @_" unless @_ == 1 and $_[0] eq ':constant'; overload::constant integer => sub {Math::BigInt->new(shift)}; } =head1 IMPLEMENTATION What follows is subject to change RSN. The table of methods for all operations is cached in magic for the symbol table hash for the package. The cache is invalidated during processing of C, C, new function definitions, and changes in @ISA. (Every SVish thing has a magic queue, and magic is an entry in that queue. This is how a single variable may participate in multiple forms of magic simultaneously. For instance, environment variables regularly have two forms at once: their %ENV magic and their taint magic. However, the magic which implements overloading is applied to the stashes, which are rarely used directly, thus should not slow down Perl.) If a package uses overload, it carries a special flag. This flag is also set when new functions are defined or @ISA is modified. There will be a slight speed penalty on the very first operation thereafter that supports overloading, while the overload tables are updated. If there is no overloading present, the flag is turned off. Thus the only speed penalty thereafter is the checking of this flag. It is expected that arguments to methods that are not explicitly supposed to be changed are constant (but this is not enforced). =head1 COOKBOOK Please add examples to what follows! =head2 Two-face Scalars Put this in F in your Perl library directory: package two_face; # Scalars with separate string and # numeric values. sub new { my $p = shift; bless [@_], $p } use overload '""' => \&str, '0+' => \&num, fallback => 1; sub num {shift->[1]} sub str {shift->[0]} Use it as follows: require two_face; my $seven = two_face->new("vii", 7); printf "seven=$seven, seven=%d, eight=%d\n", $seven, $seven+1; print "seven contains 'i'\n" if $seven =~ /i/; (The second line creates a scalar which has both a string value, and a numeric value.) This prints: seven=vii, seven=7, eight=8 seven contains 'i' =head2 Two-face References Suppose you want to create an object which is accessible as both an array reference and a hash reference. package two_refs; use overload '%{}' => \&gethash, '@{}' => sub { $ {shift()} }; sub new { my $p = shift; bless \ [@_], $p; } sub gethash { my %h; my $self = shift; tie %h, ref $self, $self; \%h; } sub TIEHASH { my $p = shift; bless \ shift, $p } my %fields; my $i = 0; $fields{$_} = $i++ foreach qw{zero one two three}; sub STORE { my $self = ${shift()}; my $key = $fields{shift()}; defined $key or die "Out of band access"; $$self->[$key] = shift; } sub FETCH { my $self = ${shift()}; my $key = $fields{shift()}; defined $key or die "Out of band access"; $$self->[$key]; } Now one can access an object using both the array and hash syntax: my $bar = two_refs->new(3,4,5,6); $bar->[2] = 11; $bar->{two} == 11 or die 'bad hash fetch'; Note several important features of this example. First of all, the I type of $bar is a scalar reference, and we do not overload the scalar dereference. Thus we can get the I non-overloaded contents of $bar by just using C<$$bar> (what we do in functions which overload dereference). Similarly, the object returned by the TIEHASH() method is a scalar reference. Second, we create a new tied hash each time the hash syntax is used. This allows us not to worry about a possibility of a reference loop, which would lead to a memory leak. Both these problems can be cured. Say, if we want to overload hash dereference on a reference to an object which is I as a hash itself, the only problem one has to circumvent is how to access this I hash (as opposed to the I hash exhibited by the overloaded dereference operator). Here is one possible fetching routine: sub access_hash { my ($self, $key) = (shift, shift); my $class = ref $self; bless $self, 'overload::dummy'; # Disable overloading of %{} my $out = $self->{$key}; bless $self, $class; # Restore overloading $out; } To remove creation of the tied hash on each access, one may an extra level of indirection which allows a non-circular structure of references: package two_refs1; use overload '%{}' => sub { ${shift()}->[1] }, '@{}' => sub { ${shift()}->[0] }; sub new { my $p = shift; my $a = [@_]; my %h; tie %h, $p, $a; bless \ [$a, \%h], $p; } sub gethash { my %h; my $self = shift; tie %h, ref $self, $self; \%h; } sub TIEHASH { my $p = shift; bless \ shift, $p } my %fields; my $i = 0; $fields{$_} = $i++ foreach qw{zero one two three}; sub STORE { my $a = ${shift()}; my $key = $fields{shift()}; defined $key or die "Out of band access"; $a->[$key] = shift; } sub FETCH { my $a = ${shift()}; my $key = $fields{shift()}; defined $key or die "Out of band access"; $a->[$key]; } Now if $baz is overloaded like this, then C<$baz> is a reference to a reference to the intermediate array, which keeps a reference to an actual array, and the access hash. The tie()ing object for the access hash is a reference to a reference to the actual array, so =over =item * There are no loops of references. =item * Both "objects" which are blessed into the class C are references to a reference to an array, thus references to a I. Thus the accessor expression C<$$foo-E[$ind]> involves no overloaded operations. =back =head2 Symbolic Calculator Put this in F in your Perl library directory: package symbolic; # Primitive symbolic calculator use overload nomethod => \&wrap; sub new { shift; bless ['n', @_] } sub wrap { my ($obj, $other, $inv, $meth) = @_; ($obj, $other) = ($other, $obj) if $inv; bless [$meth, $obj, $other]; } This module is very unusual as overloaded modules go: it does not provide any usual overloaded operators, instead it provides an implementation for C>. In this example the C subroutine returns an object which encapsulates operations done over the objects: C<< symbolic->new(3) >> contains C<['n', 3]>, C<< 2 + symbolic->new(3) >> contains C<['+', 2, ['n', 3]]>. Here is an example of the script which "calculates" the side of circumscribed octagon using the above package: require symbolic; my $iter = 1; # 2**($iter+2) = 8 my $side = symbolic->new(1); my $cnt = $iter; while ($cnt--) { $side = (sqrt(1 + $side**2) - 1)/$side; } print "OK\n"; The value of $side is ['/', ['-', ['sqrt', ['+', 1, ['**', ['n', 1], 2]], undef], 1], ['n', 1]] Note that while we obtained this value using a nice little script, there is no simple way to I this value. In fact this value may be inspected in debugger (see L), but only if C Bption is set, and not via C

command. If one attempts to print this value, then the overloaded operator C<""> will be called, which will call C operator. The result of this operator will be stringified again, but this result is again of type C, which will lead to an infinite loop. Add a pretty-printer method to the module F: sub pretty { my ($meth, $a, $b) = @{+shift}; $a = 'u' unless defined $a; $b = 'u' unless defined $b; $a = $a->pretty if ref $a; $b = $b->pretty if ref $b; "[$meth $a $b]"; } Now one can finish the script by print "side = ", $side->pretty, "\n"; The method C is doing object-to-string conversion, so it is natural to overload the operator C<""> using this method. However, inside such a method it is not necessary to pretty-print the I $a and $b of an object. In the above subroutine C<"[$meth $a $b]"> is a catenation of some strings and components $a and $b. If these components use overloading, the catenation operator will look for an overloaded operator C<.>; if not present, it will look for an overloaded operator C<"">. Thus it is enough to use use overload nomethod => \&wrap, '""' => \&str; sub str { my ($meth, $a, $b) = @{+shift}; $a = 'u' unless defined $a; $b = 'u' unless defined $b; "[$meth $a $b]"; } Now one can change the last line of the script to print "side = $side\n"; which outputs side = [/ [- [sqrt [+ 1 [** [n 1 u] 2]] u] 1] [n 1 u]] and one can inspect the value in debugger using all the possible methods. Something is still amiss: consider the loop variable $cnt of the script. It was a number, not an object. We cannot make this value of type C, since then the loop will not terminate. Indeed, to terminate the cycle, the $cnt should become false. However, the operator C for checking falsity is overloaded (this time via overloaded C<"">), and returns a long string, thus any object of type C is true. To overcome this, we need a way to compare an object to 0. In fact, it is easier to write a numeric conversion routine. Here is the text of F with such a routine added (and slightly modified str()): package symbolic; # Primitive symbolic calculator use overload nomethod => \&wrap, '""' => \&str, '0+' => \# sub new { shift; bless ['n', @_] } sub wrap { my ($obj, $other, $inv, $meth) = @_; ($obj, $other) = ($other, $obj) if $inv; bless [$meth, $obj, $other]; } sub str { my ($meth, $a, $b) = @{+shift}; $a = 'u' unless defined $a; if (defined $b) { "[$meth $a $b]"; } else { "[$meth $a]"; } } my %subr = ( n => sub {$_[0]}, sqrt => sub {sqrt $_[0]}, '-' => sub {shift() - shift()}, '+' => sub {shift() + shift()}, '/' => sub {shift() / shift()}, '*' => sub {shift() * shift()}, '**' => sub {shift() ** shift()}, ); sub num { my ($meth, $a, $b) = @{+shift}; my $subr = $subr{$meth} or die "Do not know how to ($meth) in symbolic"; $a = $a->num if ref $a eq __PACKAGE__; $b = $b->num if ref $b eq __PACKAGE__; $subr->($a,$b); } All the work of numeric conversion is done in %subr and num(). Of course, %subr is not complete, it contains only operators used in the example below. Here is the extra-credit question: why do we need an explicit recursion in num()? (Answer is at the end of this section.) Use this module like this: require symbolic; my $iter = symbolic->new(2); # 16-gon my $side = symbolic->new(1); my $cnt = $iter; while ($cnt) { $cnt = $cnt - 1; # Mutator '--' not implemented $side = (sqrt(1 + $side**2) - 1)/$side; } printf "%s=%f\n", $side, $side; printf "pi=%f\n", $side*(2**($iter+2)); It prints (without so many line breaks) [/ [- [sqrt [+ 1 [** [/ [- [sqrt [+ 1 [** [n 1] 2]]] 1] [n 1]] 2]]] 1] [/ [- [sqrt [+ 1 [** [n 1] 2]]] 1] [n 1]]]=0.198912 pi=3.182598 The above module is very primitive. It does not implement mutator methods (C<++>, C<-=> and so on), does not do deep copying (not required without mutators!), and implements only those arithmetic operations which are used in the example. To implement most arithmetic operations is easy; one should just use the tables of operations, and change the code which fills %subr to my %subr = ( 'n' => sub {$_[0]} ); foreach my $op (split " ", $overload::ops{with_assign}) { $subr{$op} = $subr{"$op="} = eval "sub {shift() $op shift()}"; } my @bins = qw(binary 3way_comparison num_comparison str_comparison); foreach my $op (split " ", "@overload::ops{ @bins }") { $subr{$op} = eval "sub {shift() $op shift()}"; } foreach my $op (split " ", "@overload::ops{qw(unary func)}") { print "defining '$op'\n"; $subr{$op} = eval "sub {$op shift()}"; } Since subroutines implementing assignment operators are not required to modify their operands (see L above), we do not need anything special to make C<+=> and friends work, besides adding these operators to %subr and defining a copy constructor (needed since Perl has no way to know that the implementation of C<'+='> does not mutate the argument - see L). To implement a copy constructor, add C<< '=' => \&cpy >> to C line, and code (this code assumes that mutators change things one level deep only, so recursive copying is not needed): sub cpy { my $self = shift; bless [@$self], ref $self; } To make C<++> and C<--> work, we need to implement actual mutators, either directly, or in C. We continue to do things inside C, thus add if ($meth eq '++' or $meth eq '--') { @$obj = ($meth, (bless [@$obj]), 1); # Avoid circular reference return $obj; } after the first line of wrap(). This is not a most effective implementation, one may consider sub inc { $_[0] = bless ['++', shift, 1]; } instead. As a final remark, note that one can fill %subr by my %subr = ( 'n' => sub {$_[0]} ); foreach my $op (split " ", $overload::ops{with_assign}) { $subr{$op} = $subr{"$op="} = eval "sub {shift() $op shift()}"; } my @bins = qw(binary 3way_comparison num_comparison str_comparison); foreach my $op (split " ", "@overload::ops{ @bins }") { $subr{$op} = eval "sub {shift() $op shift()}"; } foreach my $op (split " ", "@overload::ops{qw(unary func)}") { $subr{$op} = eval "sub {$op shift()}"; } $subr{'++'} = $subr{'+'}; $subr{'--'} = $subr{'-'}; This finishes implementation of a primitive symbolic calculator in 50 lines of Perl code. Since the numeric values of subexpressions are not cached, the calculator is very slow. Here is the answer for the exercise: In the case of str(), we need no explicit recursion since the overloaded C<.>-operator will fall back to an existing overloaded operator C<"">. Overloaded arithmetic operators I fall back to numeric conversion if C is not explicitly requested. Thus without an explicit recursion num() would convert C<['+', $a, $b]> to C<$a + $b>, which would just rebuild the argument of num(). If you wonder why defaults for conversion are different for str() and num(), note how easy it was to write the symbolic calculator. This simplicity is due to an appropriate choice of defaults. One extra note: due to the explicit recursion num() is more fragile than sym(): we need to explicitly check for the type of $a and $b. If components $a and $b happen to be of some related type, this may lead to problems. =head2 I Symbolic Calculator One may wonder why we call the above calculator symbolic. The reason is that the actual calculation of the value of expression is postponed until the value is I. To see it in action, add a method sub STORE { my $obj = shift; $#$obj = 1; @$obj->[0,1] = ('=', shift); } to the package C. After this change one can do my $a = symbolic->new(3); my $b = symbolic->new(4); my $c = sqrt($a**2 + $b**2); and the numeric value of $c becomes 5. However, after calling $a->STORE(12); $b->STORE(5); the numeric value of $c becomes 13. There is no doubt now that the module symbolic provides a I calculator indeed. To hide the rough edges under the hood, provide a tie()d interface to the package C. Add methods sub TIESCALAR { my $pack = shift; $pack->new(@_) } sub FETCH { shift } sub nop { } # Around a bug (the bug, fixed in Perl 5.14, is described in L<"BUGS">). One can use this new interface as tie $a, 'symbolic', 3; tie $b, 'symbolic', 4; $a->nop; $b->nop; # Around a bug my $c = sqrt($a**2 + $b**2); Now numeric value of $c is 5. After C<$a = 12; $b = 5> the numeric value of $c becomes 13. To insulate the user of the module add a method sub vars { my $p = shift; tie($_, $p), $_->nop foreach @_; } Now my ($a, $b); symbolic->vars($a, $b); my $c = sqrt($a**2 + $b**2); $a = 3; $b = 4; printf "c5 %s=%f\n", $c, $c; $a = 12; $b = 5; printf "c13 %s=%f\n", $c, $c; shows that the numeric value of $c follows changes to the values of $a and $b. =head1 AUTHOR Ilya Zakharevich EFE. =head1 SEE ALSO The C pragma can be used to enable or disable overloaded operations within a lexical scope - see L. =head1 DIAGNOSTICS When Perl is run with the B<-Do> switch or its equivalent, overloading induces diagnostic messages. Using the C command of Perl debugger (see L) one can deduce which operations are overloaded (and which ancestor triggers this overloading). Say, if C is overloaded, then the method C<(eq> is shown by debugger. The method C<()> corresponds to the C key (in fact a presence of this method shows that this package has overloading enabled, and it is what is used by the C function of module C). The module might issue the following warnings: =over 4 =item Odd number of arguments for overload::constant (W) The call to overload::constant contained an odd number of arguments. The arguments should come in pairs. =item '%s' is not an overloadable type (W) You tried to overload a constant type the overload package is unaware of. =item '%s' is not a code reference (W) The second (fourth, sixth, ...) argument of overload::constant needs to be a code reference. Either an anonymous subroutine, or a reference to a subroutine. =item overload arg '%s' is invalid (W) C was passed an argument it did not recognize. Did you mistype an operator? =back =head1 BUGS AND PITFALLS =over =item * A pitfall when fallback is TRUE and Perl resorts to a built-in implementation of an operator is that some operators have more than one semantic, for example C<|>: use overload '0+' => sub { $_[0]->{n}; }, fallback => 1; my $x = bless { n => 4 }, "main"; my $y = bless { n => 8 }, "main"; print $x | $y, "\n"; You might expect this to output "12". In fact, it prints "<": the ASCII result of treating "|" as a bitwise string operator - that is, the result of treating the operands as the strings "4" and "8" rather than numbers. The fact that numify (C<0+>) is implemented but stringify (C<"">) isn't makes no difference since the latter is simply autogenerated from the former. The only way to change this is to provide your own subroutine for C<'|'>. =item * Magic autogeneration increases the potential for inadvertently creating self-referential structures. Currently Perl will not free self-referential structures until cycles are explicitly broken. For example, use overload '+' => 'add'; sub add { bless [ \$_[0], \$_[1] ] }; is asking for trouble, since $obj += $y; will effectively become $obj = add($obj, $y, undef); with the same result as $obj = [\$obj, \$foo]; Even if no I assignment-variants of operators are present in the script, they may be generated by the optimizer. For example, "obj = $obj\n" may be optimized to my $tmp = 'obj = ' . $obj; $tmp .= "\n"; =item * The symbol table is filled with names looking like line-noise. =item * This bug was fixed in Perl 5.18, but may still trip you up if you are using older versions: For the purpose of inheritance every overloaded package behaves as if C is present (possibly undefined). This may create interesting effects if some package is not overloaded, but inherits from two overloaded packages. =item * Before Perl 5.14, the relation between overloading and tie()ing was broken. Overloading was triggered or not based on the I class of the tie()d variable. This happened because the presence of overloading was checked too early, before any tie()d access was attempted. If the class of the value FETCH()ed from the tied variable does not change, a simple workaround for code that is to run on older Perl versions is to access the value (via C<() = $foo> or some such) immediately after tie()ing, so that after this call the I class coincides with the current one. =item * Barewords are not covered by overloaded string constants. =item * The range operator C<..> cannot be overloaded. =back =cut # ex: set ts=8 sts=4 sw=4 et: FILEa0c659a5/overloading.pmpackage overloading; use warnings; our $VERSION = '0.02'; my $HINT_NO_AMAGIC = 0x01000000; # see perl.h require 5.010001; sub _ops_to_nums { require overload::numbers; map { exists $overload::numbers::names{"($_"} ? $overload::numbers::names{"($_"} : do { require Carp; Carp::croak("'$_' is not a valid overload") } } @_; } sub import { my ( $class, @ops ) = @_; if ( @ops ) { if ( $^H{overloading} ) { vec($^H{overloading} , $_, 1) = 0 for _ops_to_nums(@ops); } if ( $^H{overloading} !~ /[^\0]/ ) { delete $^H{overloading}; $^H &= ~$HINT_NO_AMAGIC; } } else { delete $^H{overloading}; $^H &= ~$HINT_NO_AMAGIC; } } sub unimport { my ( $class, @ops ) = @_; if ( exists $^H{overloading} or not $^H & $HINT_NO_AMAGIC ) { if ( @ops ) { vec($^H{overloading} ||= '', $_, 1) = 1 for _ops_to_nums(@ops); } else { delete $^H{overloading}; } } $^H |= $HINT_NO_AMAGIC; } 1; __END__ =head1 NAME overloading - perl pragma to lexically control overloading =head1 SYNOPSIS { no overloading; my $str = "$object"; # doesn't call stringification overload } # it's lexical, so this stringifies: warn "$object"; # it can be enabled per op no overloading qw(""); warn "$object"; # and also reenabled use overloading; =head1 DESCRIPTION This pragma allows you to lexically disable or enable overloading. =over 6 =item C Disables overloading entirely in the current lexical scope. =item C Disables only specific overloads in the current lexical scope. =item C Reenables overloading in the current lexical scope. =item C Reenables overloading only for specific ops in the current lexical scope. =back =cut FILE490999b1/parent.pm package parent; use strict; our $VERSION = '0.244'; sub import { my $class = shift; my $inheritor = caller(0); if ( @_ and $_[0] eq '-norequire' ) { shift @_; } else { for ( my @filename = @_ ) { local @_; # protect us against the loaded module changing @_ s{::|'}{/}g; require "$_.pm"; # dies if the file is not found } } { no strict 'refs'; push @{"$inheritor\::ISA"}, @_; # dies if a loop is detected }; }; 1; __END__ =encoding utf8 =head1 NAME parent - Establish an ISA relationship with base classes at compile time =head1 SYNOPSIS package Baz; use parent qw(Foo Bar); =head1 DESCRIPTION Allows you to both load one or more modules, while setting up inheritance from those modules at the same time. Mostly similar in effect to package Baz; BEGIN { require Foo; require Bar; push @ISA, qw(Foo Bar); } By default, every base class needs to live in a file of its own. If you want to have a subclass and its parent class in the same file, you can tell C not to load any modules by using the C<-norequire> switch: package Foo; sub exclaim { "I CAN HAS PERL" } package DoesNotLoadFooBar; use parent -norequire, 'Foo', 'Bar'; # will not go looking for Foo.pm or Bar.pm This is equivalent to the following code: package Foo; sub exclaim { "I CAN HAS PERL" } package DoesNotLoadFooBar; push @DoesNotLoadFooBar::ISA, 'Foo', 'Bar'; This is also helpful for the case where a package lives within a differently named file: package MyHash; use Tie::Hash; use parent -norequire, 'Tie::StdHash'; This is equivalent to the following code: package MyHash; require Tie::Hash; push @ISA, 'Tie::StdHash'; If you want to load a subclass from a file that C would not consider an eligible filename (that is, it does not end in either C<.pm> or C<.pmc>), use the following code: package MySecondPlugin; require './plugins/custom.plugin'; # contains Plugin::Custom use parent -norequire, 'Plugin::Custom'; =head1 HISTORY This module was forked from L to remove the cruft that had accumulated in it. =head1 CAVEATS =head1 SEE ALSO =over 4 =item L =item L A fork of L that provides version checking in parent class modules. =back =head1 AUTHORS AND CONTRIBUTORS Rafaël Garcia-Suarez, Bart Lateur, Max Maischein, Anno Siegel, Michael Schwern =head1 MAINTAINER Max Maischein C< corion@cpan.org > Copyright (c) 2007-2017 Max Maischein C<< >> Based on the idea of C, which was introduced with Perl 5.004_04. =head1 LICENSE This module is released under the same terms as Perl itself. =cut FILE95b29963/strict.pmspackage strict; $strict::VERSION = "1.14"; my ( %bitmask, %explicit_bitmask ); BEGIN { # Verify that we're called correctly so that strictures will work. # Can't use Carp, since Carp uses us! # see also warnings.pm. die sprintf "Incorrect use of pragma '%s' at %s line %d.\n", __PACKAGE__, +(caller)[1,2] if __FILE__ !~ ( '(?x) \b '.__PACKAGE__.' \.pmc? \z' ) && __FILE__ =~ ( '(?x) \b (?i:'.__PACKAGE__.') \.pmc? \z' ); # which strictures are actually in force %bitmask = ( refs => 0x00000002, subs => 0x00000200, vars => 0x00000400, ); # which strictures have at some point been turned on or off explicitly # and must therefore not be touched by any subsequent `use VERSION` or `no VERSION` %explicit_bitmask = ( refs => 0x00000020, subs => 0x00000040, vars => 0x00000080, ); my $bits = 0; $bits |= $_ for values %bitmask; my $inline_all_bits = $bits; *all_bits = sub () { $inline_all_bits }; $bits = 0; $bits |= $_ for values %explicit_bitmask; my $inline_all_explicit_bits = $bits; *all_explicit_bits = sub () { $inline_all_explicit_bits }; } sub bits { my $do_explicit = caller eq __PACKAGE__; my $bits = 0; my @wrong; foreach my $s (@_) { if (exists $bitmask{$s}) { $bits |= $explicit_bitmask{$s} if $do_explicit; $bits |= $bitmask{$s}; } else { push @wrong, $s; } } if (@wrong) { require Carp; Carp::croak("Unknown 'strict' tag(s) '@wrong'"); } $bits; } sub import { shift; $^H |= @_ ? &bits : all_bits | all_explicit_bits; } sub unimport { shift; if (@_) { my $bits = &bits; $^H &= ~$bits; $^H |= all_explicit_bits & $bits; } else { $^H &= ~all_bits; $^H |= all_explicit_bits; } } 1; __END__ =head1 NAME strict - Perl pragma to restrict unsafe constructs =head1 SYNOPSIS use strict; use strict "vars"; use strict "refs"; use strict "subs"; use strict; no strict "vars"; =head1 DESCRIPTION The C pragma disables certain Perl expressions that could behave unexpectedly or are difficult to debug, turning them into errors. The effect of this pragma is limited to the current file or scope block. If no import list is supplied, all possible restrictions are assumed. (This is the safest mode to operate in, but is sometimes too strict for casual programming.) Currently, there are three possible things to be strict about: "subs", "vars", and "refs". =over 6 =item C This generates a runtime error if you use symbolic references (see L). use strict 'refs'; $ref = \$foo; print $$ref; # ok $ref = "foo"; print $$ref; # runtime error; normally ok $file = "STDOUT"; print $file "Hi!"; # error; note: no comma after $file There is one exception to this rule: $bar = \&{'foo'}; &$bar; is allowed so that C would not break under stricture. =item C This generates a compile-time error if you access a variable that was neither explicitly declared (using any of C, C, C, or C) nor fully qualified. (Because this is to avoid variable suicide problems and subtle dynamic scoping issues, a merely C variable isn't good enough.) See L, L, L, L, and L. use strict 'vars'; $X::foo = 1; # ok, fully qualified my $foo = 10; # ok, my() var local $baz = 9; # blows up, $baz not declared before package Cinna; our $bar; # Declares $bar in current package $bar = 'HgS'; # ok, global declared via pragma The local() generated a compile-time error because you just touched a global name without fully qualifying it. Because of their special use by sort(), the variables $a and $b are exempted from this check. =item C This disables the poetry optimization, generating a compile-time error if you try to use a bareword identifier that's not a subroutine, unless it is a simple identifier (no colons) and that it appears in curly braces, on the left hand side of the C<< => >> symbol, or has the unary minus operator applied to it. use strict 'subs'; $SIG{PIPE} = Plumber; # blows up $SIG{PIPE} = "Plumber"; # fine: quoted string is always ok $SIG{PIPE} = \&Plumber; # preferred form =back See L. =head1 HISTORY C, with Perl 5.6.1, erroneously permitted to use an unquoted compound identifier (e.g. C) as a hash key (before C<< => >> or inside curlies), but without forcing it always to a literal string. Starting with Perl 5.8.1 strict is strict about its restrictions: if unknown restrictions are used, the strict pragma will abort with Unknown 'strict' tag(s) '...' As of version 1.04 (Perl 5.10), strict verifies that it is used as "strict" to avoid the dreaded Strict trap on case insensitive file systems. Beginning with Perl 5.12, use of "use VERSION" (where VERSION >= 5.11.0) now lexically enables strictures just like "use strict" (in addition to the normal "use VERSION" effects and features.) In other words, "use v5.011" or higher now implies "use strict" automatically, as noted in L and L|perlfunc/use VERSION>. =cut FILEefadda20/utf8.pm*package utf8; use strict; use warnings; our $utf8_hint_bits = 0x00800000; our $ascii_hint_bits = 0x00000010; # Turned off when utf8 turned on our $VERSION = '1.27'; our $AUTOLOAD; sub import { $^H |= $utf8_hint_bits; $^H &= ~$ascii_hint_bits; } sub unimport { $^H &= ~$utf8_hint_bits; } sub AUTOLOAD { goto &$AUTOLOAD if defined &$AUTOLOAD; require Carp; Carp::croak("Undefined subroutine $AUTOLOAD called"); } 1; __END__ =head1 NAME utf8 - Perl pragma to enable/disable UTF-8 (or UTF-EBCDIC) in source code =head1 SYNOPSIS use utf8; no utf8; # Convert the internal representation of a Perl scalar to/from UTF-8. $num_octets = utf8::upgrade($string); $success = utf8::downgrade($string[, $fail_ok]); # Change each character of a Perl scalar to/from a series of # characters that represent the UTF-8 bytes of each original character. utf8::encode($string); # "\x{100}" becomes "\xc4\x80" utf8::decode($string); # "\xc4\x80" becomes "\x{100}" # Convert a code point from the platform native character set to # Unicode, and vice-versa. $unicode = utf8::native_to_unicode(ord('A')); # returns 65 on both # ASCII and EBCDIC # platforms $native = utf8::unicode_to_native(65); # returns 65 on ASCII # platforms; 193 on # EBCDIC $flag = utf8::is_utf8($string); # since Perl 5.8.1 $flag = utf8::valid($string); =head1 DESCRIPTION The C pragma tells the Perl parser to allow UTF-8 in the program text in the current lexical scope. The C pragma tells Perl to switch back to treating the source text as literal bytes in the current lexical scope. (On EBCDIC platforms, technically it is allowing UTF-EBCDIC, and not UTF-8, but this distinction is academic, so in this document the term UTF-8 is used to mean both). B The utility functions described below are directly usable without C. Because it is not possible to reliably tell UTF-8 from native 8 bit encodings, you need either a Byte Order Mark at the beginning of your source code, or C, to instruct perl. When UTF-8 becomes the standard source format, this pragma will effectively become a no-op. See also the effects of the C<-C> switch and its cousin, the C environment variable, in L. Enabling the C pragma has the following effect: =over 4 =item * Bytes in the source text that are not in the ASCII character set will be treated as being part of a literal UTF-8 sequence. This includes most literals such as identifier names, string constants, and constant regular expression patterns. =back Note that if you have non-ASCII, non-UTF-8 bytes in your script (for example embedded Latin-1 in your string literals), C will be unhappy. If you want to have such bytes under C, you can disable this pragma until the end the block (or file, if at top level) by C. =head2 Utility functions The following functions are defined in the C package by the Perl core. You do not need to say C to use these and in fact you should not say that unless you really want to have UTF-8 source code. =over 4 =item * C<$num_octets = utf8::upgrade($string)> (Since Perl v5.8.0) Converts in-place the internal representation of the string from an octet sequence in the native encoding (Latin-1 or EBCDIC) to UTF-8. The logical character sequence itself is unchanged. If I<$string> is already upgraded, then this is a no-op. Returns the number of octets necessary to represent the string as UTF-8. Since Perl v5.38, if C<$string> is C no action is taken; prior to that, it would be converted to be defined and zero-length. If your code needs to be compatible with versions of perl without C, you can force Unicode semantics on a given string: # force unicode semantics for $string without the # "unicode_strings" feature utf8::upgrade($string); For example: # without explicit or implicit use feature 'unicode_strings' my $x = "\xDF"; # LATIN SMALL LETTER SHARP S $x =~ /ss/i; # won't match my $y = uc($x); # won't convert utf8::upgrade($x); $x =~ /ss/i; # matches my $z = uc($x); # converts to "SS" B; use L instead. =item * C<$success = utf8::downgrade($string[, $fail_ok])> (Since Perl v5.8.0) Converts in-place the internal representation of the string from UTF-8 to the equivalent octet sequence in the native encoding (Latin-1 or EBCDIC). The logical character sequence itself is unchanged. If I<$string> is already stored as native 8 bit, then this is a no-op. Can be used to make sure that the UTF-8 flag is off, e.g. when you want to make sure that the substr() or length() function works with the usually faster byte algorithm. Fails if the original UTF-8 sequence cannot be represented in the native 8 bit encoding. On failure dies or, if the value of I<$fail_ok> is true, returns false. Returns true on success. If your code expects an octet sequence this can be used to validate that you've received one: # throw an exception if not representable as octets utf8::downgrade($string) # or do your own error handling utf8::downgrade($string, 1) or die "string must be octets"; B; use L instead. =item * C (Since Perl v5.8.0) Converts in-place the character sequence to the corresponding octet sequence in Perl's extended UTF-8. That is, every (possibly wide) character gets replaced with a sequence of one or more characters that represent the individual UTF-8 bytes of the character. The UTF8 flag is turned off. Returns nothing. my $x = "\x{100}"; # $x contains one character, with ord 0x100 utf8::encode($x); # $x contains two characters, with ords (on # ASCII platforms) 0xc4 and 0x80. On EBCDIC # 1047, this would instead be 0x8C and 0x41. Similar to: use Encode; $x = Encode::encode("utf8", $x); B; use L instead. =item * C<$success = utf8::decode($string)> (Since Perl v5.8.0) Attempts to convert in-place the octet sequence encoded in Perl's extended UTF-8 to the corresponding character sequence. That is, it replaces each sequence of characters in the string whose ords represent a valid (extended) UTF-8 byte sequence, with the corresponding single character. The UTF-8 flag is turned on only if the source string contains multiple-byte UTF-8 characters. If I<$string> is invalid as extended UTF-8, returns false; otherwise returns true. my $x = "\xc4\x80"; # $x contains two characters, with ords # 0xc4 and 0x80 utf8::decode($x); # On ASCII platforms, $x contains one char, # with ord 0x100. Since these bytes aren't # legal UTF-EBCDIC, on EBCDIC platforms, $x is # unchanged and the function returns FALSE. my $y = "\xc3\x83\xc2\xab"; This has been encoded twice; this # example is only for ASCII platforms utf8::decode($y); # Converts $y to \xc3\xab, returns TRUE; utf8::decode($y); # Further converts to \xeb, returns TRUE; utf8::decode($y); # Returns FALSE, leaves $y unchanged B; use L instead. =item * C<$unicode = utf8::native_to_unicode($code_point)> (Since Perl v5.8.0) This takes an unsigned integer (which represents the ordinal number of a character (or a code point) on the platform the program is being run on) and returns its Unicode equivalent value. Since ASCII platforms natively use the Unicode code points, this function returns its input on them. On EBCDIC platforms it converts from EBCDIC to Unicode. A meaningless value will currently be returned if the input is not an unsigned integer. Since Perl v5.22.0, calls to this function are optimized out on ASCII platforms, so there is no performance hit in using it there. =item * C<$native = utf8::unicode_to_native($code_point)> (Since Perl v5.8.0) This is the inverse of C, converting the other direction. Again, on ASCII platforms, this returns its input, but on EBCDIC platforms it will find the native platform code point, given any Unicode one. A meaningless value will currently be returned if the input is not an unsigned integer. Since Perl v5.22.0, calls to this function are optimized out on ASCII platforms, so there is no performance hit in using it there. =item * C<$flag = utf8::is_utf8($string)> (Since Perl 5.8.1) Test whether I<$string> is marked internally as encoded in UTF-8. Functionally the same as C. Typically only necessary for debugging and testing, if you need to dump the internals of an SV, L Dump() provides more detail in a compact form. If you still think you need this outside of debugging, testing or dealing with filenames, you should probably read L and L. Don't use this flag as a marker to distinguish character and binary data: that should be decided for each variable when you write your code. To force unicode semantics in code portable to perl 5.8 and 5.10, call C unconditionally. =item * C<$flag = utf8::valid($string)> [INTERNAL] Test whether I<$string> is in a consistent state regarding UTF-8. Will return true if it is well-formed Perl extended UTF-8 and has the UTF-8 flag on B if I<$string> is held as bytes (both these states are 'consistent'). The main reason for this routine is to allow Perl's test suite to check that operations have left strings in a consistent state. =back C is like C, but the UTF8 flag is cleared. See L, and the C API functions C>, C>, C>, and C>, which are wrapped by the Perl functions C, C, C and C. Also, the functions C, C, C, C, C, and C are actually internal, and thus always available, without a C statement. =head1 BUGS Some filesystems may not support UTF-8 file names, or they may be supported incompatibly with Perl. Therefore UTF-8 names that are visible to the filesystem, such as module names may not work. =head1 SEE ALSO L, L, L, L, L =cut FILEab7f7a02/vars.pm package vars; use 5.006; our $VERSION = '1.05'; use warnings::register; use strict qw(vars subs); sub import { my $callpack = caller; my (undef, @imports) = @_; my ($sym, $ch); foreach (@imports) { if (($ch, $sym) = /^([\$\@\%\*\&])(.+)/) { if ($sym =~ /\W/) { # time for a more-detailed check-up if ($sym =~ /^\w+[[{].*[]}]$/) { require Carp; Carp::croak("Can't declare individual elements of hash or array"); } elsif (warnings::enabled() and length($sym) == 1 and $sym !~ tr/a-zA-Z//) { warnings::warn("No need to declare built-in vars"); } elsif (($^H & strict::bits('vars'))) { require Carp; Carp::croak("'$_' is not a valid variable name under strict vars"); } } $sym = "${callpack}::$sym" unless $sym =~ /::/; *$sym = ( $ch eq "\$" ? \$$sym : $ch eq "\@" ? \@$sym : $ch eq "\%" ? \%$sym : $ch eq "\*" ? \*$sym : $ch eq "\&" ? \&$sym : do { require Carp; Carp::croak("'$_' is not a valid variable name"); }); } else { require Carp; Carp::croak("'$_' is not a valid variable name"); } } }; 1; __END__ =head1 NAME vars - Perl pragma to predeclare global variable names =head1 SYNOPSIS use vars qw($frob @mung %seen); =head1 DESCRIPTION NOTE: For use with variables in the current package for a single scope, the functionality provided by this pragma has been superseded by C declarations, available in Perl v5.6.0 or later, and use of this pragma is discouraged. See L. This pragma will predeclare all the variables whose names are in the list, allowing you to use them under C, and disabling any typo warnings for them. Unlike pragmas that affect the C<$^H> hints variable, the C and C declarations are not lexically scoped to the block they appear in: they affect the entire package in which they appear. It is not possible to rescind these declarations with C or C. Packages such as the B and B that delay loading of subroutines within packages can create problems with package lexicals defined using C. While the B pragma cannot duplicate the effect of package lexicals (total transparency outside of the package), it can act as an acceptable substitute by pre-declaring global symbols, ensuring their availability to the later-loaded routines. See L. =cut FILE6812ffab/warnings.pm# -*- mode: Perl; buffer-read-only: t -*- # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! # This file is built by regen/warnings.pl. # Any changes made here will be lost! package warnings; our $VERSION = "1.74"; # Verify that we're called correctly so that warnings will work. # Can't use Carp, since Carp uses us! # String regexps because constant folding = smaller optree = less memory vs regexp literal # see also strict.pm. die sprintf "Incorrect use of pragma '%s' at %s line %d.\n", __PACKAGE__, +(caller)[1,2] if __FILE__ !~ ( '(?x) \b '.__PACKAGE__.' \.pmc? \z' ) && __FILE__ =~ ( '(?x) \b (?i:'.__PACKAGE__.') \.pmc? \z' ); our %Offsets = ( # Warnings Categories added in Perl 5.008 'all' => 0, 'closure' => 2, 'deprecated' => 4, 'exiting' => 6, 'glob' => 8, 'io' => 10, 'closed' => 12, 'exec' => 14, 'layer' => 16, 'newline' => 18, 'pipe' => 20, 'unopened' => 22, 'misc' => 24, 'numeric' => 26, 'once' => 28, 'overflow' => 30, 'pack' => 32, 'portable' => 34, 'recursion' => 36, 'redefine' => 38, 'regexp' => 40, 'severe' => 42, 'debugging' => 44, 'inplace' => 46, 'internal' => 48, 'malloc' => 50, 'signal' => 52, 'substr' => 54, 'syntax' => 56, 'ambiguous' => 58, 'bareword' => 60, 'digit' => 62, 'parenthesis' => 64, 'precedence' => 66, 'printf' => 68, 'prototype' => 70, 'qw' => 72, 'reserved' => 74, 'semicolon' => 76, 'taint' => 78, 'threads' => 80, 'uninitialized' => 82, 'unpack' => 84, 'untie' => 86, 'utf8' => 88, 'void' => 90, # Warnings Categories added in Perl 5.011 'imprecision' => 92, 'illegalproto' => 94, # Warnings Categories added in Perl 5.011003 'deprecated::goto_construct' => 96, 'deprecated::unicode_property_name' => 98, # Warnings Categories added in Perl 5.013 'non_unicode' => 100, 'nonchar' => 102, 'surrogate' => 104, # Warnings Categories added in Perl 5.017 'experimental' => 106, 'experimental::regex_sets' => 108, # Warnings Categories added in Perl 5.019 'syscalls' => 110, # Warnings Categories added in Perl 5.021 'experimental::re_strict' => 112, 'experimental::refaliasing' => 114, 'locale' => 116, 'missing' => 118, 'redundant' => 120, # Warnings Categories added in Perl 5.025 'experimental::declared_refs' => 122, # Warnings Categories added in Perl 5.025011 'deprecated::dot_in_inc' => 124, # Warnings Categories added in Perl 5.027 'shadow' => 126, # Warnings Categories added in Perl 5.029 'experimental::private_use' => 128, 'experimental::uniprop_wildcards' => 130, 'experimental::vlb' => 132, # Warnings Categories added in Perl 5.033 'experimental::try' => 134, # Warnings Categories added in Perl 5.035 'experimental::args_array_with_signatures'=> 136, 'experimental::builtin' => 138, 'experimental::defer' => 140, 'experimental::extra_paired_delimiters'=> 142, 'scalar' => 144, # Warnings Categories added in Perl 5.035009 'deprecated::version_downgrade' => 146, # Warnings Categories added in Perl 5.03501 'deprecated::delimiter_will_be_paired'=> 148, # Warnings Categories added in Perl 5.037 'experimental::class' => 150, # Warnings Categories added in Perl 5.039002 'deprecated::missing_import_called_with_args'=> 152, # Warnings Categories added in Perl 5.039008 'deprecated::subsequent_use_version'=> 154, # Warnings Categories added in Perl 5.041 'experimental::keyword_all' => 156, 'experimental::keyword_any' => 158, ); our %Bits = ( 'all' => "\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55", # [0..79] 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [29] 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [30] 'closed' => "\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6] 'closure' => "\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1] 'debugging' => "\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [22] 'deprecated' => "\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x10\x00\x00\x14\x05", # [2,48,49,62,73,74,76,77] 'deprecated::delimiter_will_be_paired'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00", # [74] 'deprecated::dot_in_inc' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00", # [62] 'deprecated::goto_construct' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00", # [48] 'deprecated::missing_import_called_with_args'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01", # [76] 'deprecated::subsequent_use_version'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04", # [77] 'deprecated::unicode_property_name' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00", # [49] 'deprecated::version_downgrade' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00", # [73] 'digit' => "\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [31] 'exec' => "\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7] 'exiting' => "\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3] 'experimental' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x05\x04\x55\x55\x40\x50", # [53,54,56,57,61,64..71,75,78,79] 'experimental::args_array_with_signatures'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00", # [68] 'experimental::builtin' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00", # [69] 'experimental::class' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00", # [75] 'experimental::declared_refs' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00", # [61] 'experimental::defer' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00", # [70] 'experimental::extra_paired_delimiters'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00", # [71] 'experimental::keyword_all' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10", # [78] 'experimental::keyword_any' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40", # [79] 'experimental::private_use' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00", # [64] 'experimental::re_strict' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00", # [56] 'experimental::refaliasing' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00", # [57] 'experimental::regex_sets' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00", # [54] 'experimental::try' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00", # [67] 'experimental::uniprop_wildcards' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00", # [65] 'experimental::vlb' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00", # [66] 'glob' => "\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4] 'illegalproto' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00", # [47] 'imprecision' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00", # [46] 'inplace' => "\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [23] 'internal' => "\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [24] 'io' => "\x00\x54\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00", # [5..11,55] 'layer' => "\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8] 'locale' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00", # [58] 'malloc' => "\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [25] 'misc' => "\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [12] 'missing' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00", # [59] 'newline' => "\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9] 'non_unicode' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00", # [50] 'nonchar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00", # [51] 'numeric' => "\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [13] 'once' => "\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [14] 'overflow' => "\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [15] 'pack' => "\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [16] 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [32] 'pipe' => "\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10] 'portable' => "\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [17] 'precedence' => "\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [33] 'printf' => "\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [34] 'prototype' => "\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [35] 'qw' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [36] 'recursion' => "\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [18] 'redefine' => "\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [19] 'redundant' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00", # [60] 'regexp' => "\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [20] 'reserved' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [37] 'scalar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00", # [72] 'semicolon' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [38] 'severe' => "\x00\x00\x00\x00\x00\x54\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [21..25] 'shadow' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00", # [63] 'signal' => "\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [26] 'substr' => "\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [27] 'surrogate' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00", # [52] 'syntax' => "\x00\x00\x00\x00\x00\x00\x00\x55\x55\x15\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00", # [28..38,47] 'syscalls' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00", # [55] 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [39] 'threads' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [40] 'uninitialized' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [41] 'unopened' => "\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11] 'unpack' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [42] 'untie' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [43] 'utf8' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x50\x01\x00\x00\x00\x00\x00\x00", # [44,50..52] 'void' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00", # [45] ); our %DeadBits = ( 'all' => "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", # [0..79] 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [29] 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [30] 'closed' => "\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6] 'closure' => "\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1] 'debugging' => "\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [22] 'deprecated' => "\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x20\x00\x00\x28\x0a", # [2,48,49,62,73,74,76,77] 'deprecated::delimiter_will_be_paired'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00", # [74] 'deprecated::dot_in_inc' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00", # [62] 'deprecated::goto_construct' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00", # [48] 'deprecated::missing_import_called_with_args'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02", # [76] 'deprecated::subsequent_use_version'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08", # [77] 'deprecated::unicode_property_name' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00", # [49] 'deprecated::version_downgrade' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00", # [73] 'digit' => "\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [31] 'exec' => "\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7] 'exiting' => "\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3] 'experimental' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x0a\x08\xaa\xaa\x80\xa0", # [53,54,56,57,61,64..71,75,78,79] 'experimental::args_array_with_signatures'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00", # [68] 'experimental::builtin' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00", # [69] 'experimental::class' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00", # [75] 'experimental::declared_refs' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00", # [61] 'experimental::defer' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00", # [70] 'experimental::extra_paired_delimiters'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00", # [71] 'experimental::keyword_all' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20", # [78] 'experimental::keyword_any' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80", # [79] 'experimental::private_use' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00", # [64] 'experimental::re_strict' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00", # [56] 'experimental::refaliasing' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00", # [57] 'experimental::regex_sets' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00", # [54] 'experimental::try' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00", # [67] 'experimental::uniprop_wildcards' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00", # [65] 'experimental::vlb' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00", # [66] 'glob' => "\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4] 'illegalproto' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00", # [47] 'imprecision' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00", # [46] 'inplace' => "\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [23] 'internal' => "\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [24] 'io' => "\x00\xa8\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00", # [5..11,55] 'layer' => "\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8] 'locale' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00", # [58] 'malloc' => "\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [25] 'misc' => "\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [12] 'missing' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00", # [59] 'newline' => "\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9] 'non_unicode' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00", # [50] 'nonchar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00", # [51] 'numeric' => "\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [13] 'once' => "\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [14] 'overflow' => "\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [15] 'pack' => "\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [16] 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [32] 'pipe' => "\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10] 'portable' => "\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [17] 'precedence' => "\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [33] 'printf' => "\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [34] 'prototype' => "\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [35] 'qw' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [36] 'recursion' => "\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [18] 'redefine' => "\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [19] 'redundant' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00", # [60] 'regexp' => "\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [20] 'reserved' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [37] 'scalar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00", # [72] 'semicolon' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [38] 'severe' => "\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [21..25] 'shadow' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00", # [63] 'signal' => "\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [26] 'substr' => "\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [27] 'surrogate' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00", # [52] 'syntax' => "\x00\x00\x00\x00\x00\x00\x00\xaa\xaa\x2a\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00", # [28..38,47] 'syscalls' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00", # [55] 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [39] 'threads' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [40] 'uninitialized' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [41] 'unopened' => "\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11] 'unpack' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [42] 'untie' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [43] 'utf8' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\xa0\x02\x00\x00\x00\x00\x00\x00", # [44,50..52] 'void' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00", # [45] ); our %NoOp = ( 'deprecated::smartmatch' => 1, 'experimental::alpha_assertions' => 1, 'experimental::bitwise' => 1, 'experimental::const_attr' => 1, 'experimental::for_list' => 1, 'experimental::isa' => 1, 'experimental::lexical_subs' => 1, 'experimental::postderef' => 1, 'experimental::script_run' => 1, 'experimental::signatures' => 1, 'experimental::smartmatch' => 1, ); # These are used by various things, including our own tests our $NONE = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; our $DEFAULT = "\x10\x01\x00\x00\x00\x50\x04\x00\x00\x00\x00\x00\x05\x00\x15\x14\x55\x55\x54\x55"; # [2,4,22,23,25,48,49,56..58,61,62,64..71,73..79] our $LAST_BIT = 160 ; our $BYTES = 20 ; sub Croaker { require Carp; # this initializes %CarpInternal local $Carp::CarpInternal{'warnings'}; delete $Carp::CarpInternal{'warnings'}; Carp::croak(@_); } sub _expand_bits { my $bits = shift; my $want_len = ($LAST_BIT + 7) >> 3; my $len = length($bits); if ($len != $want_len) { if ($bits eq "") { $bits = "\x00" x $want_len; } elsif ($len > $want_len) { substr $bits, $want_len, $len-$want_len, ""; } else { my $x = vec($bits, $Offsets{all} >> 1, 2); $x |= $x << 2; $x |= $x << 4; $bits .= chr($x) x ($want_len - $len); } } return $bits; } sub _bits { my $mask = shift ; my $catmask ; my $fatal = 0 ; my $no_fatal = 0 ; $mask = _expand_bits($mask); foreach my $word ( @_ ) { next if $NoOp{$word}; if ($word eq 'FATAL') { $fatal = 1; $no_fatal = 0; } elsif ($word eq 'NONFATAL') { $fatal = 0; $no_fatal = 1; } elsif ($catmask = $Bits{$word}) { $mask |= $catmask ; $mask |= $DeadBits{$word} if $fatal ; $mask = ~(~$mask | $DeadBits{$word}) if $no_fatal ; } else { Croaker("Unknown warnings category '$word'")} } return $mask ; } sub bits { # called from B::Deparse.pm push @_, 'all' unless @_ ; return _bits("", @_) ; } sub import { my $invocant = shift; # append 'all' when implied (empty import list or after a lone # "FATAL" or "NONFATAL") push @_, 'all' if !@_ || (@_==1 && ($_[0] eq 'FATAL' || $_[0] eq 'NONFATAL')); my @fatal = (); foreach my $warning (@_) { if($warning =~ /^(NON)?FATAL$/) { @fatal = ($warning); } elsif(substr($warning, 0, 1) ne '-') { my $mask = ${^WARNING_BITS} // ($^W ? $Bits{all} : $DEFAULT) ; ${^WARNING_BITS} = _bits($mask, @fatal, $warning); } else { $invocant->unimport(substr($warning, 1)); } } } sub unimport { shift; my $catmask ; my $mask = ${^WARNING_BITS} // ($^W ? $Bits{all} : $DEFAULT) ; # append 'all' when implied (empty import list or after a lone "FATAL") push @_, 'all' if !@_ || @_==1 && $_[0] eq 'FATAL'; $mask = _expand_bits($mask); foreach my $word ( @_ ) { next if $NoOp{$word}; if ($word eq 'FATAL') { next; } elsif ($catmask = $Bits{$word}) { $mask = ~(~$mask | $catmask | $DeadBits{$word}); } else { Croaker("Unknown warnings category '$word'")} } ${^WARNING_BITS} = $mask ; } my %builtin_type; @builtin_type{qw(SCALAR ARRAY HASH CODE REF GLOB LVALUE Regexp)} = (); sub LEVEL () { 8 }; sub MESSAGE () { 4 }; sub FATAL () { 2 }; sub NORMAL () { 1 }; sub __chk { my $category ; my $offset ; my $isobj = 0 ; my $wanted = shift; my $has_message = $wanted & MESSAGE; my $has_level = $wanted & LEVEL ; if ($has_level) { if (@_ != ($has_message ? 3 : 2)) { my $sub = (caller 1)[3]; my $syntax = $has_message ? "category, level, 'message'" : 'category, level'; Croaker("Usage: $sub($syntax)"); } } elsif (not @_ == 1 || @_ == ($has_message ? 2 : 0)) { my $sub = (caller 1)[3]; my $syntax = $has_message ? "[category,] 'message'" : '[category]'; Croaker("Usage: $sub($syntax)"); } my $message = pop if $has_message; if (@_) { # check the category supplied. $category = shift ; if (my $type = ref $category) { Croaker("not an object") if exists $builtin_type{$type}; $category = $type; $isobj = 1 ; } $offset = $Offsets{$category}; Croaker("Unknown warnings category '$category'") unless defined $offset; } else { $category = caller(1); $offset = $Offsets{$category}; Croaker("package '$category' not registered for warnings") unless defined $offset ; } my $i; if ($isobj) { my $pkg; $i = 2; while (do { { package DB; $pkg = (caller($i++))[0] } } ) { last unless @DB::args && $DB::args[0] =~ /^$category=/ ; } $i -= 2 ; } elsif ($has_level) { $i = 2 + shift; } else { $i = _error_loc(); # see where Carp will allocate the error } # Default to 0 if caller returns nothing. Default to $DEFAULT if it # explicitly returns undef. my(@callers_bitmask) = (caller($i))[9] ; my $callers_bitmask = @callers_bitmask ? $callers_bitmask[0] // $DEFAULT : 0 ; length($callers_bitmask) > ($offset >> 3) or $offset = $Offsets{all}; my @results; foreach my $type (FATAL, NORMAL) { next unless $wanted & $type; push @results, vec($callers_bitmask, $offset + $type - 1, 1); } # &enabled and &fatal_enabled return $results[0] unless $has_message; # &warnif, and the category is neither enabled as warning nor as fatal return if ($wanted & (NORMAL | FATAL | MESSAGE)) == (NORMAL | FATAL | MESSAGE) && !($results[0] || $results[1]); # If we have an explicit level, bypass Carp. if ($has_level and @callers_bitmask) { # logic copied from util.c:mess_sv my $stuff = " at " . join " line ", (caller $i)[1,2]; $stuff .= sprintf ", <%s> %s %d", *${^LAST_FH}{NAME}, ($/ eq "\n" ? "line" : "chunk"), $. if $. && ${^LAST_FH}; die "$message$stuff.\n" if $results[0]; return warn "$message$stuff.\n"; } require Carp; Carp::croak($message) if $results[0]; # will always get here for &warn. will only get here for &warnif if the # category is enabled Carp::carp($message); } sub _mkMask { my ($bit) = @_; my $mask = ""; vec($mask, $bit, 1) = 1; return $mask; } sub register_categories { my @names = @_; for my $name (@names) { if (! defined $Bits{$name}) { $Offsets{$name} = $LAST_BIT; $Bits{$name} = _mkMask($LAST_BIT++); $DeadBits{$name} = _mkMask($LAST_BIT++); if (length($Bits{$name}) > length($Bits{all})) { $Bits{all} .= "\x55"; $DeadBits{all} .= "\xaa"; } } } } sub _error_loc { require Carp; goto &Carp::short_error_loc; # don't introduce another stack frame } sub enabled { return __chk(NORMAL, @_); } sub fatal_enabled { return __chk(FATAL, @_); } sub warn { return __chk(FATAL | MESSAGE, @_); } sub warnif { return __chk(NORMAL | FATAL | MESSAGE, @_); } sub enabled_at_level { return __chk(NORMAL | LEVEL, @_); } sub fatal_enabled_at_level { return __chk(FATAL | LEVEL, @_); } sub warn_at_level { return __chk(FATAL | MESSAGE | LEVEL, @_); } sub warnif_at_level { return __chk(NORMAL | FATAL | MESSAGE | LEVEL, @_); } # These are not part of any public interface, so we can delete them to save # space. delete @warnings::{qw(NORMAL FATAL MESSAGE LEVEL)}; 1; __END__ =head1 NAME warnings - Perl pragma to control optional warnings =head1 SYNOPSIS use warnings; no warnings; # Standard warnings are enabled by use v5.35 or above use v5.35; use warnings "all"; no warnings "uninitialized"; # or equivalent to those last two ... use warnings qw(all -uninitialized); use warnings::register; if (warnings::enabled()) { warnings::warn("some warning"); } if (warnings::enabled("void")) { warnings::warn("void", "some warning"); } if (warnings::enabled($object)) { warnings::warn($object, "some warning"); } warnings::warnif("some warning"); warnings::warnif("void", "some warning"); warnings::warnif($object, "some warning"); =head1 DESCRIPTION The C pragma gives control over which warnings are enabled in which parts of a Perl program. It's a more flexible alternative for both the command line flag B<-w> and the equivalent Perl variable, C<$^W>. This pragma works just like the C pragma. This means that the scope of the warning pragma is limited to the enclosing block. It also means that the pragma setting will not leak across files (via C, C or C). This allows authors to independently define the degree of warning checks that will be applied to their module. By default, optional warnings are disabled, so any legacy code that doesn't attempt to control the warnings will work unchanged. All warnings are enabled in a block by either of these: use warnings; use warnings 'all'; Similarly all warnings are disabled in a block by either of these: no warnings; no warnings 'all'; For example, consider the code below: use warnings; my @x; { no warnings; my $y = @x[0]; } my $z = @x[0]; The code in the enclosing block has warnings enabled, but the inner block has them disabled. In this case that means the assignment to the scalar C<$z> will trip the C<"Scalar value @x[0] better written as $x[0]"> warning, but the assignment to the scalar C<$y> will not. All warnings are enabled automatically within the scope of a C> (or higher) declaration. =head2 Default Warnings and Optional Warnings Before the introduction of lexical warnings, Perl had two classes of warnings: mandatory and optional. As its name suggests, if your code tripped a mandatory warning, you would get a warning whether you wanted it or not. For example, the code below would always produce an C<"isn't numeric"> warning about the "2:". my $x = "2:" + 3; With the introduction of lexical warnings, mandatory warnings now become I warnings. The difference is that although the previously mandatory warnings are still enabled by default, they can then be subsequently enabled or disabled with the lexical warning pragma. For example, in the code below, an C<"isn't numeric"> warning will only be reported for the C<$x> variable. my $x = "2:" + 3; no warnings; my $y = "2:" + 3; Note that neither the B<-w> flag or the C<$^W> can be used to disable/enable default warnings. They are still mandatory in this case. =head2 "Negative warnings" As a convenience, you can (as of Perl 5.34) pass arguments to the C method both positively and negatively. Negative warnings are those with a C<-> sign prepended to their names; positive warnings are anything else. This lets you turn on some warnings and turn off others in one command. So, assuming that you've already turned on a bunch of warnings but want to tweak them a bit in some block, you can do this: { use warnings qw(uninitialized -redefine); ... } which is equivalent to: { use warnings qw(uninitialized); no warnings qw(redefine); ... } The argument list is processed in the order you specify. So, for example, if you don't want to be warned about use of experimental features, except for C that you really dislike, you can say this: use warnings qw(all -experimental experimental::somefeature); which is equivalent to: use warnings 'all'; no warnings 'experimental'; use warnings 'experimental::somefeature'; As experimental features become regular features of Perl, the corresponding warnings are not printed anymore. They also stop being listed in the L below. It is still possible to request turning on or off these warnings, but doing so has no effect. =head2 What's wrong with B<-w> and C<$^W> Although very useful, the big problem with using B<-w> on the command line to enable warnings is that it is all or nothing. Take the typical scenario when you are writing a Perl program. Parts of the code you will write yourself, but it's very likely that you will make use of pre-written Perl modules. If you use the B<-w> flag in this case, you end up enabling warnings in pieces of code that you haven't written. Similarly, using C<$^W> to either disable or enable blocks of code is fundamentally flawed. For a start, say you want to disable warnings in a block of code. You might expect this to be enough to do the trick: { local ($^W) = 0; my $x =+ 2; my $y; chop $y; } When this code is run with the B<-w> flag, a warning will be produced for the C<$x> line: C<"Reversed += operator">. The problem is that Perl has both compile-time and run-time warnings. To disable compile-time warnings you need to rewrite the code like this: { BEGIN { $^W = 0 } my $x =+ 2; my $y; chop $y; } And note that unlike the first example, this will permanently set C<$^W> since it cannot both run during compile-time and be localized to a run-time block. The other big problem with C<$^W> is the way you can inadvertently change the warning setting in unexpected places in your code. For example, when the code below is run (without the B<-w> flag), the second call to C will trip a C<"Use of uninitialized value"> warning, whereas the first will not. sub doit { my $y; chop $y; } doit(); { local ($^W) = 1; doit() } This is a side-effect of C<$^W> being dynamically scoped. Lexical warnings get around these limitations by allowing finer control over where warnings can or can't be tripped. =head2 Controlling Warnings from the Command Line There are three Command Line flags that can be used to control when warnings are (or aren't) produced: =over 5 =item B<-w> X<-w> This is the existing flag. If the lexical warnings pragma is B used in any of your code, or any of the modules that you use, this flag will enable warnings everywhere. See L for details of how this flag interacts with lexical warnings. =item B<-W> X<-W> If the B<-W> flag is used on the command line, it will enable all warnings throughout the program regardless of whether warnings were disabled locally using C or C<$^W =0>. This includes all files that get included via C, C or C. Think of it as the Perl equivalent of the "lint" command. =item B<-X> X<-X> Does the exact opposite to the B<-W> flag, i.e. it disables all warnings. =back =head2 Backward Compatibility If you are used to working with a version of Perl prior to the introduction of lexically scoped warnings, or have code that uses both lexical warnings and C<$^W>, this section will describe how they interact. How Lexical Warnings interact with B<-w>/C<$^W>: =over 5 =item 1. If none of the three command line flags (B<-w>, B<-W> or B<-X>) that control warnings is used and neither C<$^W> nor the C pragma are used, then default warnings will be enabled and optional warnings disabled. This means that legacy code that doesn't attempt to control the warnings will work unchanged. =item 2. The B<-w> flag just sets the global C<$^W> variable as in 5.005. This means that any legacy code that currently relies on manipulating C<$^W> to control warning behavior will still work as is. =item 3. Apart from now being a boolean, the C<$^W> variable operates in exactly the same horrible uncontrolled global way, except that it cannot disable/enable default warnings. =item 4. If a piece of code is under the control of the C pragma, both the C<$^W> variable and the B<-w> flag will be ignored for the scope of the lexical warning. =item 5. The only way to override a lexical warnings setting is with the B<-W> or B<-X> command line flags. =back The combined effect of 3 & 4 is that it will allow code which uses the C pragma to control the warning behavior of $^W-type code (using a C) if it really wants to, but not vice-versa. =head2 Category Hierarchy X A hierarchy of "categories" have been defined to allow groups of warnings to be enabled/disabled in isolation. The current hierarchy is: all -+ | +- closure | +- deprecated ----+ | | | +- deprecated::delimiter_will_be_paired | | | +- deprecated::dot_in_inc | | | +- deprecated::goto_construct | | | +- deprecated::missing_import_called_with_args | | | +- deprecated::subsequent_use_version | | | +- deprecated::unicode_property_name | | | +- deprecated::version_downgrade | +- exiting | +- experimental --+ | | | +- experimental::args_array_with_signatures | | | +- experimental::builtin | | | +- experimental::class | | | +- experimental::declared_refs | | | +- experimental::defer | | | +- experimental::extra_paired_delimiters | | | +- experimental::keyword_all | | | +- experimental::keyword_any | | | +- experimental::private_use | | | +- experimental::re_strict | | | +- experimental::refaliasing | | | +- experimental::regex_sets | | | +- experimental::try | | | +- experimental::uniprop_wildcards | | | +- experimental::vlb | +- glob | +- imprecision | +- io ------------+ | | | +- closed | | | +- exec | | | +- layer | | | +- newline | | | +- pipe | | | +- syscalls | | | +- unopened | +- locale | +- misc | +- missing | +- numeric | +- once | +- overflow | +- pack | +- portable | +- recursion | +- redefine | +- redundant | +- regexp | +- scalar | +- severe --------+ | | | +- debugging | | | +- inplace | | | +- internal | | | +- malloc | +- shadow | +- signal | +- substr | +- syntax --------+ | | | +- ambiguous | | | +- bareword | | | +- digit | | | +- illegalproto | | | +- parenthesis | | | +- precedence | | | +- printf | | | +- prototype | | | +- qw | | | +- reserved | | | +- semicolon | +- taint | +- threads | +- uninitialized | +- unpack | +- untie | +- utf8 ----------+ | | | +- non_unicode | | | +- nonchar | | | +- surrogate | +- void Just like the "strict" pragma any of these categories can be combined use warnings qw(void redefine); no warnings qw(io syntax untie); Also like the "strict" pragma, if there is more than one instance of the C pragma in a given scope the cumulative effect is additive. use warnings qw(void); # only "void" warnings enabled ... use warnings qw(io); # only "void" & "io" warnings enabled ... no warnings qw(void); # only "io" warnings enabled To determine which category a specific warning has been assigned to see L. Note: Before Perl 5.8.0, the lexical warnings category "deprecated" was a sub-category of the "syntax" category. It is now a top-level category in its own right. Note: Before 5.21.0, the "missing" lexical warnings category was internally defined to be the same as the "uninitialized" category. It is now a top-level category in its own right. =head2 Fatal Warnings X The presence of the word "FATAL" in the category list will escalate warnings in those categories into fatal errors in that lexical scope. B FATAL warnings should be used with care, particularly C<< FATAL => 'all' >>. Libraries using L for custom warning categories generally don't expect L to be fatal and can wind up in an unexpected state as a result. For XS modules issuing categorized warnings, such unanticipated exceptions could also expose memory leak bugs. Moreover, the Perl interpreter itself has had serious bugs involving fatalized warnings. For a summary of resolved and unresolved problems as of January 2015, please see L. While some developers find fatalizing some warnings to be a useful defensive programming technique, using C<< FATAL => 'all' >> to fatalize all possible warning categories -- including custom ones -- is particularly risky. Therefore, the use of C<< FATAL => 'all' >> is L. The L module on CPAN offers one example of a warnings subset that the module's authors believe is relatively safe to fatalize. B Users of FATAL warnings, especially those using C<< FATAL => 'all' >>, should be fully aware that they are risking future portability of their programs by doing so. Perl makes absolutely no commitments to not introduce new warnings or warnings categories in the future; indeed, we explicitly reserve the right to do so. Code that may not warn now may warn in a future release of Perl if the Perl5 development team deems it in the best interests of the community to do so. Should code using FATAL warnings break due to the introduction of a new warning we will NOT consider it an incompatible change. Users of FATAL warnings should take special caution during upgrades to check to see if their code triggers any new warnings and should pay particular attention to the fine print of the documentation of the features they use to ensure they do not exploit features that are documented as risky, deprecated, or unspecified, or where the documentation says "so don't do that", or anything with the same sense and spirit. Use of such features in combination with FATAL warnings is ENTIRELY AT THE USER'S RISK. The following documentation describes how to use FATAL warnings but the perl5 porters strongly recommend that you understand the risks before doing so, especially for library code intended for use by others, as there is no way for downstream users to change the choice of fatal categories. In the code below, the use of C