GOOF----LE-8-2.0KA]œ4h€ ] gguile¤ ¤ gdefine-module*¤ ¤ ¤ gsrfi¤ gsrfi-18¤ ¤ gfilenameS¤ fsrfi/srfi-18.scm¤ gimportsS¤ gsrfi-34¤  ¤  ¤ ¤ gexportsS¤ g make-thread¤ g thread-name¤ gthread-specific¤ gthread-specific-set!¤ g thread-start!¤ g thread-yield!¤ g thread-sleep!¤ gthread-terminate!¤ g thread-join!¤ g make-mutex¤ g mutex-name¤ gmutex-specific¤ gmutex-specific-set!¤ g mutex-state¤ g mutex-lock!¤ g mutex-unlock!¤ !gmake-condition-variable¤ "gcondition-variable-name¤ #gcondition-variable-specific¤ $g condition-variable-specific-set!¤ %gcondition-variable-signal!¤ &gcondition-variable-broadcast!¤ 'gcondition-variable-wait!¤ (g current-time¤ )gtime?¤ *g time->seconds¤ +g seconds->time¤ ,gcurrent-exception-handler¤ -gwith-exception-handler¤ .graise¤ /gjoin-timeout-exception?¤ 0gabandoned-mutex-exception?¤ 1gterminated-thread-exception?¤ 2guncaught-exception?¤ 3guncaught-exception-reason¤ 4 !"#$%&'()*+,-./0123#¤ 5g re-exportsS¤ 6gcurrent-thread¤ 7gthread?¤ 8gmutex?¤ 9gcondition-variable?¤ :6789¤ ;g replacementsS¤ <(!.¤ =gset-current-module¤ >=¤ ?=¤ @g provided?¤ Agthreads¤ Bgerror¤ Cf+SRFI-18 requires Guile with threads support¤ Dgcond-expand-provide¤ Egcurrent-module¤ F¤ Gg scm-error¤ Hgwrong-type-arg¤ IfWrong type argument: ~S¤ Jgcheck-arg-type¤ Kgabandoned-mutex-exception¤ Lgjoin-timeout-exception¤ Mgterminated-thread-exception¤ Nguncaught-exception¤ Ogmake-weak-key-hash-table¤ Pg object-names¤ Qgobject-specifics¤ Rgthread-start-conds¤ Sgthread-exception-handlers¤ T .¤ U .¤ Vgsrfi-18-exception-preserver¤ Wginitial-handler¤ Xgmake-object-property¤ Ygthread->exception¤ Zgsetter¤ [Z¤ \Z¤ ]gsrfi-18-exception-handler¤ ^g hashq-ref¤ _g hashq-set!¤ `gcurrent-handler-stack¤ ag procedure?¤ bfwith-exception-handler¤ cgthunk?¤ d -¤ e -¤ ffuncaught-exception-reason¤ gg launch-mutex¤ hglaunch-condition-variable¤ ig start-mutex¤ jgstart-condition-variable¤ kg lock-mutex¤ lgcall-with-new-thread¤ mgsignal-condition-variable¤ ng unlock-mutex¤ ogwait-condition-variable¤ pf thread-name¤ qfthread-specific¤ rfthread-specific-set!¤ sf thread-start!¤ tg hashq-remove!¤ ugyield¤ vgnumber?¤ wf thread-sleep!¤ xginexact->exact¤ ygtruncate¤ zgsleep¤ {gusleep¤ |gwrap¤ }gthread-cleanup¤ ~gset-thread-cleanup!¤ g cancel-thread¤ €g join-thread¤ glength¤ ‚¤ ƒ¤ „gunchecked-unlock¤ …gallow-external-unlock¤ †g recursive¤ ‡f mutex-name¤ ˆfmutex-specific¤ ‰fmutex-specific-set!¤ Šg mutex-owner¤ ‹gthread-exited?¤ Œg abandoned¤ g mutex-level¤ Žg not-owned¤ g not-abandoned¤ gcatch¤ ‘gabandoned-mutex-error¤ ’!¤ “!¤ ”fcondition-variable-name¤ •fcondition-variable-specific¤ –f condition-variable-specific-set!¤ —gbroadcast-condition-variable¤ ˜g gettimeofday¤ ™ginteger?¤ šf time->seconds¤ ›f seconds->time¤C5h@0É]4   45:;<5 4?>"G4@iA5$"4BiC>"G4Di4Ei5F>"GGHIh Í]45$C6Ågpred  garg  gcaller   gfilenamefsrfi/srfi-18.scmŒ ` ŒŒ  a ŒŒ a ŒŒ  c ŒŒ  d ŒŒ  d +ŒŒ  d 6ŒŒ c ŒŒ  gnamegcheck-arg-typeŒCJRKKRLLRMMRNNR4Oi5PR4Oi5QR4Oi5RR4Oi5SRU.RVNh€]Œ6xgobj  gfilenamefsrfi/srfi-18.scmŒ s ŒŒ t ŒŒ t ŒŒ  gnameginitial-handlerŒCWR4Xi5YR12\Y6h8º] 45$"45$45456C²gobj  6gt gfilenamefsrfi/srfi-18.scmŒ x ŒŒ  y ŒŒ y ŒŒ  z ŒŒ $ y ŒŒ , { ŒŒ 4 { ŒŒ  6 gnamegsrfi-18-exception-preserverŒCVR VNh0Ã-13&C( Œ"ŒŒ6»gkey .gargs .gfilenamefsrfi/srfi-18.scmŒ } ŒŒ ƒ ŒŒ  ƒ ŒŒ  „ $ŒŒ … (ŒŒ + † (ŒŒ . „ ŒŒ . gnamegsrfi-18-exception-handlerŒC]R6^S_Wh0º]4545$C6²gct  *gt  *gfilenamefsrfi/srfi-18.scmŒ ˆ ŒŒ  ‰ ŒŒ  ‰ ŒŒ Š ŒŒ  Š ŒŒ ( ‹ 1ŒŒ * ‹ ŒŒ  * gnamegcurrent-handler-stackŒC`R6`Jabc_Se_Sh h]4LL>"GL6`gobj  gfilenamefsrfi/srfi-18.scmŒ ” ŒŒ  • ŒŒ  – ŒŒ   C_Sh0q]4L> G4LL>"GEigres *gfilenamefsrfi/srfi-18.scmŒ — ŒŒ  ˜ ŒŒ  š ŒŒ * › ŒŒ  * C hp$]45454>"G4>"G4Œ>"G  O O6ghandler  ogthunk  ogct  oghl  ogfilenamefsrfi/srfi-18.scmŒ ŒŒ  Ž ŒŒ  ŒŒ Ž ŒŒ  ŒŒ  'ŒŒ  ŒŒ ' ‘ ŒŒ / ‘ !ŒŒ 4 ‘ ŒŒ = ’ ŒŒ H ’ -ŒŒ M ’ ŒŒ o “ ŒŒ  o gnamegwith-exception-handlerŒC-R`h{]45Csgfilenamefsrfi/srfi-18.scmŒ ŒŒ  ž ŒŒ  ž ŒŒ  gnamegcurrent-exception-handlerŒC,RLh‚]‚Czgobj  gfilenamefsrfi/srfi-18.scmŒ   ŒŒ    &ŒŒ   gnamegjoin-timeout-exception?ŒC/RKh…]‚C}gobj  gfilenamefsrfi/srfi-18.scmŒ ¡ ŒŒ  ¡ )ŒŒ   gnamegabandoned-mutex-exception?ŒC0RNh™]ˆ$‚CC‘gobj  gfilenamefsrfi/srfi-18.scmŒ ¢ ŒŒ  £ ŒŒ £ ŒŒ £ ŒŒ  £ ŒŒ   gnameguncaught-exception?ŒC2RJ2fhŸ]45ŽC—gexc  gfilenamefsrfi/srfi-18.scmŒ ¤ ŒŒ  ¥ ŒŒ ¥ /ŒŒ ¥ ŒŒ  ¥ ŒŒ   gnameguncaught-exception-reasonŒC3RMh‡]‚Cgobj  gfilenamefsrfi/srfi-18.scmŒ ¦ ŒŒ  § ŒŒ   gnamegterminated-thread-exception?ŒC1Rg!hijklkmno-Whxƒ]4L>"G4L>"G4L>"G4L>"G4LL>"G4L>"GL6{gfilenamefsrfi/srfi-18.scmŒ ± ŒŒ  ² ŒŒ  ³ ŒŒ ' ´ ŒŒ 9 µ ŒŒ K ¶ ŒŒ _ · ŒŒ x ¸ ŒŒ  x C]_RPonhÐÀ-13ˆ$"454545454>"G4 O 54  Œ>"G$4  >"G"4>"G4>"GC¸gthunk Êgname Êgn  4 Êglm  4 Êglc  4 Êgsm  4 Êgsc  4 Êgt  f Êgfilenamefsrfi/srfi-18.scmŒ º ŒŒ » ŒŒ  » ŒŒ  » !ŒŒ  ½ ŒŒ  ½ ŒŒ  ½ ŒŒ ¾ ŒŒ $ ¾ )ŒŒ & ¾ ŒŒ ' ¿ ŒŒ + ¿ ŒŒ - ¿ ŒŒ . À ŒŒ 2 À )ŒŒ 4 À ŒŒ 4 » ŒŒ ?  ŒŒ Q à ŒŒ f à ŒŒ i Å ŒŒ t Å +ŒŒ y Å ŒŒ ‡ Æ ŒŒ ˆ Æ ŒŒ ¢ Ç ŒŒ ¶ È ŒŒ Ê CR^PJ7ph”]456Œgthread  gfilenamefsrfi/srfi-18.scmŒ Ë ŒŒ  Ì ŒŒ  Ì 9ŒŒ  Ì ŒŒ  Ì ŒŒ   gnameg thread-nameŒCR^QJ7qh˜]456gthread  gfilenamefsrfi/srfi-18.scmŒ Î ŒŒ  Ð ŒŒ  Ð ,ŒŒ  Ð ŒŒ  Ï ŒŒ   gnamegthread-specificŒCR_QJ7rh(·]445>"GC¯gthread  #gobj  #gfilenamefsrfi/srfi-18.scmŒ Ò ŒŒ  Ó ŒŒ  Ô ŒŒ  Ô -ŒŒ  Ô ŒŒ  Ó ŒŒ  # gnamegthread-specific-set!ŒCR^RJ7stkmn h€%]4455$^Ž4>"G4>"G4>"G4 >"G"Cgthread  }gx  }gsmutex  " vgscond  " vgfilenamefsrfi/srfi-18.scmŒ Ø ŒŒ  Ù ŒŒ  Ú ŒŒ  Ú 5ŒŒ  Ú ŒŒ  Ù ŒŒ  Ù ŒŒ  Û ŒŒ  Û ŒŒ " Ü ŒŒ " Û ŒŒ ' Ý ŒŒ ; Þ ŒŒ M ß ŒŒ _ à ŒŒ  } gnameg thread-start!ŒCRuhf]4>"GC^gfilenamefsrfi/srfi-18.scmŒ ã ŒŒ  ã ŒŒ   gnameg thread-yield!ŒCR*()vGHwIxyz{ h¸]!445545$45˜"%45$ ˜"454 4 554 4 ˜B@š55 ”$4 >"G" ”$4 >"G"Cügtimeout  µgct µgt  L µgsecs  Z µgusecs  u µgfilenamefsrfi/srfi-18.scmŒ å ŒŒ  æ ŒŒ  æ ŒŒ æ ŒŒ æ ŒŒ  ç ŒŒ  ç ŒŒ  ç &ŒŒ # ç #ŒŒ ( è ŒŒ 2 ç ŒŒ 7 è %ŒŒ < é ŒŒ @ é #ŒŒ B é 3ŒŒ D ê #ŒŒ I ë #ŒŒ J ì #ŒŒ L é ŒŒ L æ ŒŒ O í ŒŒ R í ŒŒ Z í ŒŒ Z æ ŒŒ ] î ŒŒ ` î ŒŒ g î -ŒŒ q î *ŒŒ s î ŒŒ u î ŒŒ u æ ŒŒ { ï ŒŒ  ï ŒŒ € ï ŒŒ ™ 𠌌 𠌌 ž 𠌌&  µ gnameg thread-sleep!ŒCR-,h z]445>"GL6rgobj  gfilenamefsrfi/srfi-18.scmŒ û ŒŒ  ü ŒŒ  ü ŒŒ  ü ŒŒ  ý ŒŒ   Chh]OL6`g continuation  gfilenamefsrfi/srfi-18.scmŒ ú ŒŒ  û ŒŒ   Chh]OC`gthunk  gfilenamefsrfi/srfi-18.scmŒ ù ŒŒ  gnamegwrapŒC|R}c~-WVMh V]4L>"G6Ngfilenamefsrfi/srfi-18.scmŒ  ŒŒ   !ŒŒ   !ŒŒ   CVMhM]6Egfilenamefsrfi/srfi-18.scmŒ  ŒŒ   *ŒŒ   Ch`Ñ] 4545$4O>"G"4>"G4>"GCÉgthread  [gcurrent-handler [gfilenamefsrfi/srfi-18.scmŒ  ŒŒ   ŒŒ  ŒŒ  ŒŒ   ŒŒ   ŒŒ 4  ŒŒ H  ŒŒ  [ gnamegthread-terminate!ŒCR|€Y.Lhh¼]4LL?4L54L5 ‘$ $"4>"G"$4>"G"C´gv  bge  bgfilenamefsrfi/srfi-18.scmŒ  ŒŒ   ŒŒ  ŒŒ   ŒŒ   ŒŒ   ŒŒ #  ŒŒ )  ŒŒ .  ŒŒ I  ŒŒ J  ŒŒ  b Ch ¶-13H4O5KJB®gthread gargs gthread-join-inner!  gfilenamefsrfi/srfi-18.scmŒ  ŒŒ  ŒŒ   ŒŒ  gnameg thread-join!ŒCRƒ„…†_PhPù-13ˆ$"45$4>"G"Cñgname Jgn # Jgm  # Jgfilenamefsrfi/srfi-18.scmŒ # ŒŒ $ ŒŒ  $ ŒŒ  $ ŒŒ  % ŒŒ  % ŒŒ  & ŒŒ  ' ŒŒ ! ( ŒŒ # % ŒŒ # $ ŒŒ - ) ŒŒ . ) ŒŒ J gnameg make-mutexŒCR^PJ8‡h’]456Šgmutex  gfilenamefsrfi/srfi-18.scmŒ + ŒŒ  , ŒŒ  , 7ŒŒ  , ŒŒ  , ŒŒ   gnameg mutex-nameŒCR^QJ8ˆh–]456Žgmutex  gfilenamefsrfi/srfi-18.scmŒ . ŒŒ  0 ŒŒ  0 *ŒŒ  0 ŒŒ  / ŒŒ   gnamegmutex-specificŒCR_QJ8‰h(µ]445>"GC­gmutex  #gobj  #gfilenamefsrfi/srfi-18.scmŒ 2 ŒŒ  3 ŒŒ  4 ŒŒ  4 +ŒŒ  4 ŒŒ  3 ŒŒ  # gnamegmutex-specific-set!ŒCRŠ‹ŒŽh8ä] 45$45$CC45 ”$CCÜgmutex  5gowner 5gfilenamefsrfi/srfi-18.scmŒ 8 ŒŒ  9 ŒŒ 9 ŒŒ  : ŒŒ  ; ŒŒ  ; ŒŒ  ; #ŒŒ # < ŒŒ + < ŒŒ / < ŒŒ 1 < &ŒŒ 4 < 1ŒŒ  5 gnameg mutex-stateŒCR|‘khM]LL@Egfilenamefsrfi/srfi-18.scmŒ B ŒŒ B ŒŒ  C.Khr-136jgkey gargs gfilenamefsrfi/srfi-18.scmŒ C ŒŒ  C (ŒŒ  ChV]LLO6Ngfilenamefsrfi/srfi-18.scmŒ @ ŒŒ  A ŒŒ  A ŒŒ   Ch ³-13H4O5KJB«gmutex gargs gmutex-lock-inner!  gfilenamefsrfi/srfi-18.scmŒ > ŒŒ @ ŒŒ  D ŒŒ  gnameg mutex-lock!ŒCRnh-13@…gmutex gargs gfilenamefsrfi/srfi-18.scmŒ F ŒŒ  G ŒŒ  gnameg mutex-unlock!ŒC R“_PhHë-13ˆ$"45$4>"G"Cãgname Dgn  Dgm   Dgfilenamefsrfi/srfi-18.scmŒ M ŒŒ N ŒŒ  N ŒŒ  N ŒŒ  O ŒŒ  O ŒŒ  O ŒŒ  N ŒŒ ' P ŒŒ ( P ŒŒ D gnamegmake-condition-variableŒC!R^PJ9”h¬]456¤gcondition-variable  gfilenamefsrfi/srfi-18.scmŒ R ŒŒ  S ŒŒ  U *ŒŒ  S ŒŒ  S ŒŒ   gnamegcondition-variable-nameŒC"R^QJ9•h°]456¨gcondition-variable  gfilenamefsrfi/srfi-18.scmŒ W ŒŒ  X ŒŒ  Z .ŒŒ  X ŒŒ  X ŒŒ   gnamegcondition-variable-specificŒC#R_QJ9–h(Ï]445>"GCÇgcondition-variable  #gobj  #gfilenamefsrfi/srfi-18.scmŒ \ ŒŒ  ] ŒŒ  ^ ŒŒ  ` ŒŒ  ^ ŒŒ  ] ŒŒ  # gnameg condition-variable-specific-set!ŒC$Rmh†]4>"GC~gcond  gfilenamefsrfi/srfi-18.scmŒ d ŒŒ  e ŒŒ   gnamegcondition-variable-signal!ŒC%R—h‰]4>"GCgcond  gfilenamefsrfi/srfi-18.scmŒ h ŒŒ  i ŒŒ   gnamegcondition-variable-broadcast!ŒC&R˜i(R™hHú] ˆ$945$ •"$Ž45$ •CCCCògobj  Dgco %gco , @gfilenamefsrfi/srfi-18.scmŒ o ŒŒ  p ŒŒ p ŒŒ q ŒŒ q ŒŒ  q "ŒŒ  q ŒŒ  q 0ŒŒ ) p ŒŒ , r ŒŒ , r ŒŒ / r "ŒŒ 9 r ŒŒ = r 0ŒŒ  D gnamegtime?ŒC)RJ)šh(¸]45$ŽB@›–CC°gtime  %gfilenamefsrfi/srfi-18.scmŒ t ŒŒ  u ŒŒ u "ŒŒ u ŒŒ  u ŒŒ  v ŒŒ  v ŒŒ ! v ŒŒ " v ŒŒ  % gnameg time->secondsŒC*RJv›yxh@ú] 45$+454544˜B@š55ŒCCògx  >gfx  <gfilenamefsrfi/srfi-18.scmŒ x ŒŒ  y ŒŒ y !ŒŒ y ŒŒ  y ŒŒ  z ŒŒ  z ŒŒ  { ŒŒ " | ŒŒ % | ŒŒ , | ,ŒŒ 6 | )ŒŒ 8 | ŒŒ : | ŒŒ ; { ŒŒ  > gnameg seconds->timeŒC+RCÁgm  4gfilenamefsrfi/srfi-18.scmŒ  ŒŒ 5 [ ŒŒ ; [ ŒŒ = [ ŒŒ A [ ŒŒ F \ ŒŒ L \ ŒŒ Q \ ŒŒ Z ^ ŒŒ _ ^ ŒŒ g ^ &ŒŒ l ^ ŒŒ x ` ŒŒ z f (ŒŒ } f "ŒŒ € f ŒŒ ‚ g %ŒŒ … g ŒŒ ˆ g ŒŒ Š h *ŒŒ  h $ŒŒ  h ŒŒ ’ i !ŒŒ • i ŒŒ ˜ i ŒŒ ™ k ŒŒ ¢ k ŒŒ £ l ŒŒ ¬ l ŒŒ ­ m ŒŒ ¶ m ŒŒ · n "ŒŒ À n ŒŒ Å r ŒŒ k s ŒŒ l v ŒŒ u v ŒŒ … x ŒŒ Ž } ŒŒ • ˆ ŒŒ § ŒŒ F ŒŒ å   ŒŒ ˆ ¡ ŒŒ L ¢ ŒŒ  ¤ ŒŒ º ¦ ŒŒ “ ¯ ŒŒ _ Ë ŒŒ + Î ŒŒ * Ò ŒŒ ø Ø ŒŒ ‰ ã ŒŒ o å ŒŒ 3 ù ŒŒ t  ŒŒ ™  ŒŒ  " ŒŒ Í + ŒŒ !™ . ŒŒ " 2 ŒŒ #Ï 8 ŒŒ &> > ŒŒ &ø F ŒŒ (F L ŒŒ )' R ŒŒ * W ŒŒ +" \ ŒŒ +Ù d ŒŒ ,Œ h ŒŒ ,“ n ŒŒ -í o ŒŒ .ã t ŒŒ 0= x ŒŒK  0? C6