Crash caused by signal #11: Segmentation fault Version: Dungeon Crawl Stone Soup 0.34-a0-1992-g2e14fdc65b Platform: unix Bits: 64 Game mode: tutorial Tiles: online Seed: 17137610680864292264, deterministic pregen: 1 Command line: /usr/games/crawl-git-2e14fdc65b -name Ronae -rc /dgldir/rcfiles/crawl-git/Ronae.rc -macro /dgldir/rcfiles/crawl-git/Ronae.macro -morgue /dgldir/morgue/Ronae/ -tutorial -webtiles-socket /crawl-master/webserver/sockets/Ronae:2026-01-14.09:40:56.sock -await-connection RC options: restart_after_game = false Crash caused by signal #11: Segmentation fault Obtained 12 stack frames. /usr/games/crawl-git-2e14fdc65b(_Z17write_stack_traceP8_IO_FILE+0x3e) [0x58d4565ec39e]: write_stack_trace(_IO_FILE*) /usr/games/crawl-git-2e14fdc65b(_Z13do_crash_dumpv+0x43a) [0x58d4565fa5da]: do_crash_dump() /usr/games/crawl-git-2e14fdc65b(_Z20crash_signal_handleri+0x1fa) [0x58d4565ec87a]: crash_signal_handler(int) /lib/x86_64-linux-gnu/libc.so.6(+0x45330) [0x76d70a9d4330]: /usr/games/crawl-git-2e14fdc65b(+0xcd079b) [0x58d456dcb79b]: /usr/games/crawl-git-2e14fdc65b(+0xcd64b6) [0x58d456dd14b6]: /usr/games/crawl-git-2e14fdc65b(_ZN4CLua5closeEv+0xbe) [0x58d4565d359e]: CLua::close() /usr/games/crawl-git-2e14fdc65b(+0x2f2c80) [0x58d4563edc80]: /usr/games/crawl-git-2e14fdc65b(+0x2f5c4c) [0x58d4563f0c4c]: /lib/x86_64-linux-gnu/libc.so.6(+0x2a1ca) [0x76d70a9b91ca]: /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x8b) [0x76d70a9b928b]: /usr/games/crawl-git-2e14fdc65b(_start+0x25) [0x58d45651ef45]: Trying to run gdb. GNU gdb (Ubuntu 15.0.50.20240403-0ubuntu1) 15.0.50.20240403-git Copyright (C) 2024 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: . Find the GDB manual and other documentation resources online at: . For help, type "help". Type "apropos word" to search for commands related to "word". [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". 0x000076d70aa9f7a7 in __GI___wait4 (pid=1022272, stat_loc=0x0, options=0, usage=0x0) at ../sysdeps/unix/sysv/linux/wait4.c:30 #0 0x000076d70aa9f7a7 in __GI___wait4 (pid=1022272, stat_loc=0x0, options=0, usage=0x0) at ../sysdeps/unix/sysv/linux/wait4.c:30 sc_ret = -512 sc_ret = #1 0x000058d4565eca4c in call_gdb (file=0x76d70ab934e0 <_IO_2_1_stderr_>) at crash.cc:438 gdb = attach_cmd = "attach 971927\000\000\000\000\000\000" #2 0x000058d4565fa5f8 in do_crash_dump () at dbg-asrt.cc:673 t = 1768384170 dir = "/dgldir/morgue/Ronae/" name = "/dgldir/morgue/Ronae/crash-Ronae-20260114-094930.txt", '\000' signal_info = "Crash caused by signal #11: Segmentation fault" cause_msg = "Crash caused by signal #11: Segmentation fault" file = 0x76d70ab934e0 <_IO_2_1_stderr_> #3 0x000058d4565ec87a in crash_signal_handler (sig_num=11) at crash.cc:198 No locals. #4 No locals. #5 0x000058d456dcb79b in luaC_freeallobjects () No symbol table info available. #6 0x000058d456dd14b6 in close_state () No symbol table info available. #7 0x000058d4565d359e in CLua::close (this=0x58d457497fe0 ) at clua.cc:84 slisteners = #8 0x000058d4563edc80 in _reset_game () at main.cc:355 No locals. #9 0x000058d4563f0c4c in _launch_game_loop () at main.cc:403 ge = @0x58d48683a790: { = {}, exit_reason = game_exit::win, message = ""} game_ended = true game_ended = ge = fe = #10 main (argc=13, argv=0x7ffd5e163408) at main.cc:343 echo = {prev_state = {value = maybe_bool::mbool_t::maybe, static maybe = Compilation info: <<<<<<<<<<< Compiled with GCC 13.3.0 Build platform: x86_64-linux-gnu Platform: x86_64-linux-gnu CFLAGS: -O2 -pipe -DUSE_TILE -DUSE_TILE_WEB -Wall -Wformat-security -Wundef -Wextra -Wno-missing-field-initializers -Wno-implicit-fallthrough -Wno-type-limits -Wno-uninitialized -Wno-array-bounds -Wno-format-zero-length -Wmissing-declarations -Wredundant-decls -Wno-parentheses -Wwrite-strings -Wshadow -pedantic -Wuninitialized -Iutil -I. -isystem contrib/install/x86_64-linux-gnu/include -g -DWIZARD -DASSERTS -DREGEX_PCRE -DCLUA_BINDINGS -DDGAMELAUNCH -DSAVE_DIR_PATH="/crawl-master/crawl-git-2e14fdc65b/saves" -DSHARED_DIR_PATH="/crawl-master/crawl-git/saves" -DDATA_DIR_PATH="/crawl-master/crawl-git-2e14fdc65b/data/" -DWEB_DIR_PATH="/crawl-master/crawl-git-2e14fdc65b/data/web/" -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600 LDFLAGS: -rdynamic -fuse-ld=gold -O2 >>>>>>>>>>> Place info: branch = 0, depth = 3 Level id: D:3 Level build method = random_map_for_place, level layout type = encompass, absdepth0 = 2 Level vaults: tutorial_lesson3_level3 Markers: <<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>> Messages: <<<<<<<<<<<<<<<<<<<<<< In this lesson you're going to learn about items and how to use them. You can reread all messages at any time with [Ctrl-P]. Also, press [Space] to clear the --more-- prompts. Found a pair of boots. Found three staircases leading out of the dungeon. Pick up these boots with [,] and wear them with [e]. You see here a +0 pair of boots. You start putting on your armour. You continue putting on your +0 pair of boots. x5 You finish putting on your +0 pair of boots. Found a scroll labelled IFUUXU CAANLO. Some types of items, marked with a green frame, are picked up automatically as you step on them. Many items are unidentified when you find them. One way to find out what they do is to use them. Try reading this scroll with [r]. c - a scroll labelled IFUUXU CAANLO As you read the scroll labelled IFUUXU CAANLO, it dissolves into smoke. It was a scroll of fog. As you open the door, it creaks loudly! You hear a shout! Found a scroll labelled XANNIA GASMI. There is an open door here. You encounter a goblin. You hit the goblin. Autopickup does not work if there's a monster around. You can either pick up this scroll now with [,] or you can fight the nearby enemy and pick it up afterwards. c - a scroll labelled XANNIA GASMI You see here a goblin corpse. Autopickup does not work if there's a monster around. You can either pick up this scroll now with [,] or you can fight the nearby enemy and pick it up afterwards. You see here a goblin corpse. As you open the door, it creaks loudly! Found a glowing flail. There is an open door here. An item described as runed or glowing will always be enchanted, or have special properties, or both. Once you step on top of such an item, its properties will be revealed to you. You see here a +2 flail of venom. Your +2 flail of venom begins to drip with poison! c - a +2 flail of venom (weapon) To view the description of your new weapon, find and select it in your inventory ([i]). Notice that all the item commands also work from the item description screens. Setting a skill training target for Maces & Flails at 14.0. Once you've successfully managed to poison a monster, it is sometimes best to retreat and let the poison do the work. Don't forget to retreat to heal too, if necessary. You open the door. You encounter a rat and 2 jackals. The jackal barks! The rat squeaks loudly. The jackal barks! You hear a bark! You hear a loud squeak. You encounter a jackal. The jackal barks! The jackal leaves your sight. You hit the rat. You kill the rat! You encounter a hobgoblin. You barely miss the jackal. The jackal barely misses you. The jackal closely misses you. You hit the jackal but do no damage. The jackal is poisoned. The jackal completely misses you. The jackal closely misses you. You hit the jackal. The jackal looks as sick as possible! The jackal is lightly wounded. The hobgoblin shouts! You kill the jackal! You encounter a rat. The jackal misses you. The rat leaves your sight. You closely miss the jackal. The jackal bites you. x2 You closely miss the jackal. The jackal bites you but does no damage. x2 You closely miss the jackal. The jackal misses you. The jackal closely misses you. You thump the jackal! You kill the jackal! The jackal bites you. You barely miss the jackal. The jackal bites you. You encounter a jackal. The jackal barely misses you. You barely miss the jackal. The jackal barely misses you. The jackal closely misses you. You hit the jackal. The jackal is poisoned. The jackal is heavily wounded. The jackal completely misses you. The jackal bites you but does no damage. The jackal bites you. The jackal bites you. You closely miss the jackal. The jackal is severely wounded. You kill the jackal! You thump the hobgoblin! You kill the hobgoblin! You have reached level 2! You see here a jackal corpse. Once you've successfully managed to poison a monster, it is sometimes best to retreat and let the poison do the work. Don't forget to retreat to heal too, if necessary. There is an open door, spattered with blood here. Things that are here: a jackal corpse; a rat corpse The jackal leaves your sight. There is an open door, spattered with blood here. Things that are here: a jackal corpse; a rat corpse Once you've successfully managed to poison a monster, it is sometimes best to retreat and let the poison do the work. Don't forget to retreat to heal too, if necessary. You start resting. A jackal comes into view. Once you've successfully managed to poison a monster, it is sometimes best to retreat and let the poison do the work. Don't forget to retreat to heal too, if necessary. The jackal leaves your sight. The jackal barks! You closely miss the jackal. The jackal closely misses you. x2 You hit the jackal. You kill the jackal! You hit the rat. The rat is poisoned. The rat is heavily wounded. You kill the rat! Once you've successfully managed to poison a monster, it is sometimes best to retreat and let the poison do the work. Don't forget to retreat to heal too, if necessary. Things that are here: a rat corpse; a jackal corpse You start resting. HP restored. There is an open door, spattered with blood here. Things that are here: a jackal corpse; a rat corpse Found two stone staircases leading down. Well fought! If necessary, rest up with [5], then continue downwards with [>]. There is a stone staircase leading down here. You climb downwards. If the many commands are too confusing, you can also look them up in the command help [?]. Rereading old messages with [Ctrl-P] is available as usual. There is a stone staircase leading up here. Traps can have a variety of unpleasant effects, such as alerting monsters or teleporting you into danger. Some traps are permanent and will always be revealed as part of the map, but other traps can be triggered by exploring new tiles, and won't exist after being triggered. If there's no way around, you'll have to trigger the trap and deal with the consequences. There is a stone staircase leading up here. You climb upwards. Well fought! If necessary, rest up with [5], then continue downwards with [>]. There is a stone staircase leading down here. Well fought! If necessary, rest up with [5], then continue downwards with [>]. There is a stone staircase leading down here. You climb downwards. There is a stone staircase leading up here. Traps can have a variety of unpleasant effects, such as alerting monsters or teleporting you into danger. Some traps are permanent and will always be revealed as part of the map, but other traps can be triggered by exploring new tiles, and won't exist after being triggered. If there's no way around, you'll have to trigger the trap and deal with the consequences. You hear a click... Luckily, nothing happens. There is a pressure plate here. Found a puce potion. Potions may provide vital healing or useful enchantments, but some have less desirable effects. You can quaff this potion with [q] to discover what it does. d - a puce potion You encounter a goblin. It is wielding a +0 sling, quivering stones and carrying a +0 dagger. The goblin shouts! The goblin shoots a sling bullet. The sling bullet barely misses you. The goblin shoots a sling bullet. The sling bullet barely misses you. You barely miss the goblin. The goblin unwields a +0 sling. The goblin wields a +0 dagger. The goblin hits you with a +0 dagger. You barely miss the goblin. The goblin barely misses you. x2 You barely miss the goblin. The goblin closely misses you. You sock the goblin! You kill the goblin! Items here: ( )) †. There are a lot of items here. You choose what to pick up from a menu: press , to enter the pickup menu. To leave the menu, confirm your selection with Enter. d - a +0 sling; e - 30 stones Okay, then. You start resting. HP restored. You open the door. Found the +1 cloak of Starlight {*Dazzle EV+4 Stlth--}. There is an open door here. Items with unusual names are artefacts. Artefacts can have a number of special properties. Some unique artefacts (such as this cloak) are always identified and may have special properties that cannot be found anywhere else! Others are generated with a random selection of properties, and are unidentified until you step on top of them. Try equipping this cloak with [e]. You see here the +1 cloak of Starlight {*Dazzle EV+4 Stlth--}. You start putting on your armour. You continue putting on the +1 cloak of Starlight {*Dazzle EV+4 Stlth--}. x5 You finish putting on the +1 cloak of Starlight {*Dazzle EV+4 Stlth--}. You open the door. Found a wand of flame (9). There is an open door here. You can evoke a wand with [V]. a - a wand of flame (9) As you open the door, it creaks loudly! You hear a shout! You encounter a gnoll. It is wielding a +0 spear. Aiming: Throw Flame Press: ? - help, Shift-Dir - straight line Aim: a gnoll, wielding a +0 spear (72% to hit) The puff of flame hits the gnoll. The gnoll is moderately wounded. Aiming: Throw Flame Press: ? - help, Shift-Dir - straight line Aim: a gnoll, wielding a +0 spear (moderately wounded, 72% to hit) The puff of flame hits the gnoll. The gnoll is heavily wounded. Aiming: Throw Flame Press: ? - help, Shift-Dir - straight line Aim: a gnoll, wielding a +0 spear (heavily wounded, 72% to hit) The puff of flame hits the gnoll. The gnoll is almost dead. Aiming: Throw Flame Press: ? - help, Shift-Dir - straight line Aim: a gnoll, wielding a +0 spear (almost dead, 72% to hit) The puff of flame hits the gnoll. You kill the gnoll! There is an open door here. You see here a +0 spear. Found a wand of digging (15). A wand of digging can destroy rock walls. Use [x][v] to check wall types. d - a wand of digging (15) Hit: c) +2 flail (venom) Press: ? - help, Dir - move target Your weapon can't reach that far! Okay, then. Press: ? - help, v - describe, . - travel A crystal wall. Aiming: Dig Press: ? - help, Shift-Dir - straight line A rock wall. The rock shatters into small pieces. Aiming: Dig Press: ? - help, Shift-Dir - straight line A rock wall. The rock shatters into small pieces. Found a lumpy garnet amulet. Jewellery is put on with [e]. g - an amulet of faith You start putting on your amulet. You continue putting on your amulet of faith. x5 You finish putting on your amulet of faith. You feel a strange surge of divine interest. g - an amulet of faith (worn) You open the door. Found a stone staircase leading down. There is an open door here. This amulet would be very powerful if your character had a god to worship, but here and now, it's useless. You may want to drop it with [d]. Autopickup disabled for amulets of faith. You start removing your amulet. You continue removing your amulet of faith. x5 You finish removing your amulet of faith. You drop an amulet of faith. There is a stone staircase leading down here. There is a stone staircase leading down here. You climb downwards. If the many commands are too confusing, you can also look them up in the command help [?]. Rereading old messages with [Ctrl-P] is available as usual. There is a stone staircase leading up here. Found 40 gold pieces. Gold can be spent in shops. It takes no inventory space and cannot be dropped. You now have 40 gold pieces. You enter the shallow water. Moving in this stuff is going to be slow. Shops offer a variety of items, but they don't buy items from anyone. Found Yfoajoum's General Store. To enter this shop, press [<]. To buy items, select them with their hotkey, hit [Enter] and confirm with [y]es. You can switch to description mode with [!]. There is an entrance to Yfoajoum's General Store here. Remember, you can explore the level automatically with [o]. You enter the shallow water. Moving in this stuff is going to be slow. Found an exit from the tutorial. You now have enough gold to do some serious shopping! The quickest way back to the shop is by searching for it. Type [Ctrl-F], and then enter “shop”. Select the result to start travelling. You now have 260 gold pieces (gained 220). Warning, this way leads to a difficult battle. You may choose to use what you've learned so far in a fight, or try to reach the other exit on the island. Either way, it may be a good idea to do some shopping, if you haven't already. You now have enough gold to do some serious shopping! The quickest way back to the shop is by searching for it. Type [Ctrl-F], and then enter “shop”. Select the result to start travelling. You enter the shallow water. Moving in this stuff is going to be slow. Remember, you can explore the level automatically with [o]. To enter this shop, press [<]. To buy items, select them with their hotkey, hit [Enter] and confirm with [y]es. You can switch to description mode with [!]. There is an entrance to Yfoajoum's General Store here. g - a ring of flight Thank you for shopping at Yfoajoum's General Store! You fly up into the air. g - a ring of flight (worn) Flight will allow you to cross deep water or lava. Items that allow you to fly will activate automatically when worn. Remember, you can explore the level automatically with [o]. Well done! To exit the tutorial, simply go down these stairs. There is an exit from the tutorial here. Warning, this way leads to a difficult battle. You may choose to use what you've learned so far in a fight, or try to reach the other exit on the island. Either way, it may be a good idea to do some shopping, if you haven't already. You reach down and open the door. You encounter 2 orcs, an ufetubus and 3 gnolls. The orc shouts! x2; The ufetubus shouts! The gnoll shouts! x3 The gnoll hits you but does no damage. Found two exits from the tutorial. Warning, this way leads to a difficult battle. You may choose to use what you've learned so far in a fight, or try to reach the other exit on the island. Either way, it may be a good idea to do some shopping, if you haven't already. Well done! To exit the tutorial, simply go down these stairs. There is an exit from the tutorial here. You can't go up here! notify_dgn_event: Lua error: ...wl-master/crawl-git-2e14fdc65b/data/dat/dlua/lm_trig.lua:240: Triggerable type TriggerableFunction at (28, 43) has no triggerers for dgn_event 0 >>>>>>>>>>>>>>>>>>>>>> Version history: No version history (current version is 0.34-a0-1992-g2e14fdc65b) Game state: mouse_enabled: 0, waiting_for_command: 0, terminal_resized: 0 io_inited: 1, need_save: 0, saving_game: 0, updating_scores: 0: seen_hups: 1, map_stat_gen: 0, type: 2, arena_suspended: 0 prev_cmd = CMD_GO_DOWNSTAIRS repeat_cmd = CMD_NO_CMD Player: {{{{{{{{{{{ Name: [Ronae] Species: Human Job: Fighter HP: 24/24; mods: 0/0 MP: 4/4; mod: 2 Stats: 16 8 12 Position: (28, 43), god: No God (0), turn_is_over: 0, banished: 0 Standing on/in/over feature: stone staircase leading down Delayed (1): type: descending_stairs duration: 0 Skills (mode: auto) Name | can_currently_train | train | training | level | points | progress Fighting | X | 1 | 29 | 3 | 397 | 97/200 Short Blades | X | 1 | 0 | 0 | 0 | 0/50 Long Blades | X | 1 | 0 | 0 | 0 | 0/50 Axes | X | 1 | 0 | 0 | 0 | 0/50 Maces & Flails | X | 1 | 12 | 0 | 13 | 13/50 Polearms | X | 1 | 0 | 0 | 0 | 0/50 Staves | X | 1 | 0 | 0 | 0 | 0/50 Ranged Weapons | X | 1 | 0 | 0 | 0 | 0/50 Throwing | X | 1 | 0 | 0 | 0 | 0/50 Armour | X | 1 | 23 | 3 | 362 | 62/200 Dodging | X | 1 | 6 | 0 | 4 | 4/50 Stealth | X | 1 | 18 | 0 | 13 | 13/42 Shields | X | 1 | 0 | 0 | 0 | 0/50 Unarmed Combat | X | 1 | 7 | 2 | 160 | 10/150 Spellcasting | X | 1 | 0 | 0 | 0 | 0/59 Conjurations | X | 1 | 0 | 0 | 0 | 0/50 Hexes | X | 1 | 0 | 0 | 0 | 0/50 Summonings | X | 1 | 0 | 0 | 0 | 0/50 Necromancy | X | 1 | 0 | 0 | 0 | 0/50 Translocations | X | 1 | 0 | 0 | 0 | 0/50 Forgecraft | X | 1 | 0 | 0 | 0 | 0/50 Fire Magic | X | 1 | 0 | 0 | 0 | 0/50 Ice Magic | X | 1 | 0 | 0 | 0 | 0/50 Air Magic | X | 1 | 0 | 0 | 0 | 0/50 Earth Magic | X | 1 | 0 | 0 | 0 | 0/50 Alchemy | X | 1 | 0 | 0 | 0 | 0/50 Invocations | X | 1 | 0 | 0 | 0 | 0/42 Evocations | X | 1 | 5 | 0 | 2 | 2/50 Shapeshifting | X | 1 | 0 | 0 | 0 | 0/59 Spell bugs: Durations: #114: 34 Attributes: #12: 260 #13: 227 #22: 1 #49: 260 Mutations: explore regen: 1 (innate) Inventory bugs: Equipment: eq slot #3, inv slot #0: +0 robe eq slot #6, inv slot #1: +0 pair of boots eq slot #1, inv slot #2: +2 flail of venom eq slot #8, inv slot #5: +1 cloak of Starlight {*Dazzle EV+4 Stlth--} eq slot #9, inv slot #6: ring of flight }}}}}}}}}}} Webtiles message buffer: Webtiles JSON stack: Screenshot: ♣♣..♣♣♣♣ ♣♣♣...♣..♣ ♣♣ ♣♣...j...♣♣♣.♣♣ ♣♣...o5j.......♣♣ ♣..≈≈≈≈≈≈....♣..♣ ♣♣♣♣ ♣♣.≈≈≈≈≈≈≈≈j...♣♣♣♣≈≈≈≈ ♣≈≈≈≈≈≈≈≈≈≈≈~.~≈≈≈≈≈≈♣ ♣≈≈≈≈...≈≈≈≈≈~~~≈≈≈≈♣ ≈≈≈≈≈...@...≈≈≈~~~♣♣♣♣ ♣ ≈≈≈≈≈≈≈....≈≈≈≈....♣♣ ♣♣♣ ≈≈≈≈≈≈≈≈≈≈≈≈≈≈......♣♣♣.. ♣♣♣≈≈≈≈≈≈≈≈♣....♣♣♣...♣♣ ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ ♣♣♣♣♣ dlua errors: ...wl-master/crawl-git-2e14fdc65b/data/dat/dlua/lm_trig.lua:240: Triggerable type TriggerableFunction at (28, 43) has no triggerers for dgn_event 0 [C], function error, line -1 lm_trig.lua, function (null), line 240 clua stack: dlua stack: Lua persistent data: <<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>> Lua marker contents: <<<<<<<<<<<<<<<<<<<<<< Lua marker 0 at (26, 25): {{{{ Unable to get table for lua marker.}}}} Lua marker 1 at (26, 25): {{{{ Unable to get table for lua marker.}}}} Lua marker 2 at (28, 43): {{{{ Unable to get table for lua marker.}}}} Lua marker 3 at (28, 43): {{{{ Unable to get table for lua marker.}}}} Lua marker 4 at (29, 34): {{{{ Unable to get table for lua marker.}}}} Lua marker 5 at (30, 25): {{{{ Unable to get table for lua marker.}}}} Lua marker 6 at (30, 25): {{{{ Unable to get table for lua marker.}}}} Lua marker 7 at (31, 38): {{{{ Unable to get table for lua marker.}}}} Lua marker 8 at (49, 43): {{{{ Unable to get table for lua marker.}}}} Lua marker 9 at (58, 32): {{{{ Unable to get table for lua marker.}}}} Lua marker 10 at (61, 44): {{{{ Unable to get table for lua marker.}}}} Lua marker 11 at (62, 42): {{{{ Unable to get table for lua marker.}}}} >>>>>>>>>>>>>>>>>>>>>>