All times are UTC.
00:02:02 <-- aleth has quit (Quit: :tiuQ) 00:06:26 <-- chrisccoulson has quit (Connection closed) 00:18:36 --> chrisccoulson has joined #instantbird 00:26:57 <-- chrisccoulson has quit (Quit: OSError: [Errno 130] Owner died) 00:35:05 <-- clokep has quit (Quit: Instantbird 1.6a1pre -- http://www.instantbird.com) 00:40:44 <-- bogdan_maris has quit (Ping timeout: 121 seconds) 00:46:13 <-- arlolra has quit (Client exited) 00:46:54 --> clokep has joined #instantbird 00:46:54 * ChanServ sets mode +o clokep 01:29:11 <-- myk has quit (Quit: Instantbird 1.6a1pre -- http://www.instantbird.com) 01:31:59 <-- clokep has quit (Ping timeout: 121 seconds) 01:33:29 --> clokep_work has joined #instantbird 01:33:29 * ChanServ sets mode +o clokep_work 01:46:50 --> bogdan_maris has joined #instantbird 02:14:49 <-- nhnt11 has quit (Quit: Instantbird 1.6a1pre -- http://www.instantbird.com) 02:58:42 <-- flo-retina has quit (Connection closed) 02:59:02 --> flo-retina has joined #instantbird 02:59:03 * ChanServ sets mode +qo flo-retina flo-retina 03:17:58 * clokep_work mumbles about our hacked up glib. 03:29:51 <instant-buildbot> build #3059 of macosx-nightly-default is complete: Failure [4failed compile] Build details are at http://buildbot.instantbird.org/builders/macosx-nightly-default/builds/3059 03:31:24 <-- Bollebib has quit (Quit: Instantbird 1.5 -- http://www.instantbird.com) 03:35:13 <clokep_work> So I have Pidgin's Facebook stuff like half compiling. 03:35:24 <clokep_work> But it requires json-glib, which isn't terrible...but that requires gio. 03:35:37 <clokep_work> I feel like there's some reason I 'can't' include that. 03:35:40 <clokep_work> Any idea flo-retina? 03:39:41 <-- clokep_work has quit (Ping timeout: 121 seconds) 03:49:05 <EionRobb> since when does json-glib require gio? 03:49:12 <EionRobb> what version of json-glib are you using? 04:07:32 <instant-buildbot> build #591 of linux64-nightly-default is complete: Failure [4failed compile] Build details are at http://buildbot.instantbird.org/builders/linux64-nightly-default/builds/591 04:25:42 <-- flo-retina has quit (Connection closed) 04:26:33 --> flo-retina has joined #instantbird 04:26:34 * ChanServ sets mode +qo flo-retina flo-retina 04:49:23 <-- bogdan_maris has quit (Ping timeout: 121 seconds) 05:01:29 <-- EionRobb has quit (Quit: Leaving.) 05:27:43 --> EionRobb has joined #instantbird 06:12:42 --> Alex2 has joined #instantbird 08:04:59 --> myk has joined #instantbird 08:29:11 <-- myk has quit (Ping timeout: 121 seconds) 08:55:38 --> chrisccoulson has joined #instantbird 09:47:18 --> BWMerlin has joined #instantbird 09:47:53 <-- flo-retina has quit (Quit: Instantbird 1.6a1pre -- http://www.instantbird.com) 09:49:49 --> bogdan_maris has joined #instantbird 09:52:58 --> Bollebib has joined #instantbird 09:57:46 <-- chrisccoulson has quit (Connection closed) 10:10:26 <-- bogdan_maris has quit (Quit: Instantbird 1.6a1pre -- http://www.instantbird.com) 10:14:07 <-- Alex2 has quit (Quit: Instantbird 1.5 -- http://www.instantbird.com) 10:22:27 --> bogdan_maris has joined #instantbird 10:29:37 --> mpmc has joined #instantbird 10:31:11 --> flo-retina has joined #instantbird 10:31:12 * ChanServ sets mode +qo flo-retina flo-retina 10:45:53 <-- flo-retina has quit (Quit: Instantbird 1.6a1pre -- http://www.instantbird.com) 10:45:56 --> flo-retina has joined #instantbird 10:45:56 * ChanServ sets mode +qo flo-retina flo-retina 10:48:39 --> chrisccoulson has joined #instantbird 11:09:17 --> gerard-majax has joined #instantbird 11:10:44 <-- pWnnn has quit (Client exited) 11:12:07 --> pWnnn has joined #instantbird 11:18:07 <-- gerard-majax has quit (Quit: Leaving) 11:18:11 --> gerard-majax has joined #instantbird 11:41:53 <-- gerard-majax has quit (Ping timeout: 121 seconds) 11:43:33 --> gerard-majax has joined #instantbird 12:03:06 <-- gerard-majax has quit (Ping timeout: 121 seconds) 12:03:56 --> gerard-majax has joined #instantbird 12:09:26 <-- gerard-majax has quit (Ping timeout: 121 seconds) 12:16:13 --> aleth has joined #instantbird 12:16:13 * ChanServ sets mode +o aleth 12:22:59 <-- BWMerlin has quit (Client exited) 12:34:44 <-- Tonnes has quit (Ping timeout: 121 seconds) 12:35:43 --> Tonnes has joined #instantbird 12:46:25 --> clokep has joined #instantbird 12:46:25 * ChanServ sets mode +o clokep 12:51:06 <clokep> EionRobb: What're pblite/protobuf-json/jsprotobuf? Are those libraries to do the same thing or...? 12:51:15 <clokep> I'm familiar with protobuf, but never seen those terms before. :) 12:52:10 <clokep> EionRobb: And I was using json-glib 0.14. 12:52:28 <clokep> And it's possible I got confused and it's actually the facebook code that requires gio. 12:52:30 <clokep> I was pretty tired. ;) 12:53:16 <aleth> clokep: pretty sure gio is enabled by default on Linux 12:53:39 * aleth search 12:53:52 <aleth> bug 713802 12:53:55 <instantbot> Bug https://bugzilla.mozilla.org/show_bug.cgi?id=713802 nor, P3, mozilla18, karlt, RESO FIXED, Build with GIO support (and drop GnomeVFS) 12:54:01 <clokep> aleth: But it's not compiled AT ALL for Windows or Mac. 12:54:05 <clokep> So...not sure how that helps us. ;) 12:54:28 <aleth> hmm, I thought it was a Linux-only thing anyway 12:54:56 <clokep> I'm not sure. 12:55:05 <clokep> I odn't remember enough at the moment of whta was happening. 12:55:08 <clokep> I'll be back in an hour 12:56:45 --> gerard-majax has joined #instantbird 12:59:10 <-- clokep has quit (Ping timeout: 121 seconds) 13:11:46 <-- Fallen has quit (Ping timeout: 121 seconds) 13:11:53 --> Fallen has joined #instantbird 13:37:06 --> clokep_work has joined #instantbird 13:37:06 * ChanServ sets mode +o clokep_work 13:40:13 <clokep_work> EionRobb: https://github.com/GNOME/json-glib/blob/0.14.2/json-glib/json-generator.h#L32 13:41:05 <clokep_work> I'm using that version due to https://github.com/jgeboski/purple-facebook/blob/master/Makefile.mingw#L16 13:41:28 <clokep_work> flo-retina: Ping 13:41:58 <aleth> iirc the 'g' in gio stands for 'gnome' and it depends on gtk 13:42:17 <clokep_work> Then why is that including gio? :P That would seem silly. 13:42:19 <aleth> hard to see how it could work on osx/win 13:42:42 <aleth> well, that json-glib seems to be in gnome repo 13:42:47 <aleth> according to your link 13:43:00 <clokep_work> Sure, but the Pidgin plugin is compiled for windows. 13:43:03 <clokep_work> So it *must* work. 13:43:08 <aleth> something is very weird there 13:45:36 <freaktechnik> the g in glib is also for gnome... 13:46:40 --> mpmc1 has joined #instantbird 13:46:58 <flo-retina> clokep_work: Hello? 13:47:10 <aleth> The json-glib changelog does mention supporting building on windows 13:48:38 <-- mpmc has quit (Ping timeout: 121 seconds) 13:48:38 * mpmc1 is now known as mpmc 13:49:00 <aleth> freaktechnik: yeah, but I thought gio was Linux file system specific. might be wrong though 13:50:42 <clokep_work> flo-retina: Have you followed this conversation at all? Maybe you could bring some light to it. :) 13:51:20 <flo-retina> clokep_work: I've read quickly, and the take away from it seems to be that json-glib is a PITA ;). 13:51:22 <-- Tonnes has quit (Quit: ChatZilla 0.9.92 [Firefox 44.0/20160123151951]) 13:52:11 * aleth wonders how hard it would be to shim 13:52:42 <aleth> probably harder than rewriting the prpl in js... 13:53:16 <flo-retina> I guess it depends how big the API is 13:54:15 <clokep_work> I was hoping it would be a couple of evenings to get it compiled vs. a few weeks of work to rewrite it in JS. 13:54:17 --> Tonnes has joined #instantbird 13:54:41 <flo-retina> clokep_work: I would be surprised if it took more than one evening 13:54:50 <flo-retina> but I haven't really looked at the problem 13:54:52 <clokep_work> flo-retina: I already spent one evening on it. 13:55:11 <clokep_work> So that's not really helpful. ;) 13:55:17 <flo-retina> clokep_work: I meant an evening of team work 13:55:50 <flo-retina> but my estimates have been dramatically off in the past for libotr :( 13:57:26 <clokep_work> I've pulled in the Facebook code and set up the build system. 13:57:33 <clokep_work> But then got to this gio thing and stopped... 13:59:20 <clokep_work> Of course it'd be easier to make a JS prpl out of it if things were actually documented. :) 14:01:04 <flo-retina> you mean C code isn't a valid form of documentation? 14:03:42 <clokep_work> No. 14:03:53 <flo-retina> and when I said "an evening" I meant for the json-glib thing, not for the whole "build the facebook prpl" proejct 14:05:15 <Fallen> I need a SlackerView tab: one tab that shows new messages from all channels I am in, prefixed by the channel in addition to time and nickname 14:06:05 <Fallen> that would stop me from spending so much time pointlessly switching between chat tabs when I need a break but won't admit it to myself 14:06:22 <clokep_work> I think...someone else asked for that at some point. 14:06:24 <aleth> Fallen: Yoric asked for the same thing. I think it would be a good idea 14:06:45 <aleth> someone just has to write it ;) 14:07:14 <clokep_work> That's who it was! :) 14:07:24 <Fallen> I'm busy switching between chat tabs 14:07:59 <flo-retina> I want that too (fwiw) 14:08:12 <aleth> The UI challenge is to implement that in a way that means you are not swamped by #developers stuff 14:08:16 <aleth> (e.g.) 14:08:35 <flo-retina> and it's even the very first idea in https://wiki.instantbird.org/Instantbird:extension_wish_list 14:08:48 <Fallen> "mute channel until things quiet down" 14:08:54 <flo-retina> aleth: right, we would need to throttle messages from busy channels 14:10:08 <Fallen> how hard can it be? There is surely an API to add a new tab and observer events when new messages are received? 14:10:33 <flo-retina> for an experienced developer like you or me, probably an afternoon of a rainy week-end ;) 14:10:42 <Fallen> I shouldn't get too excited about this, otherwise I know what I'm doing this evening instead of work 14:10:56 <flo-retina> it could keep a newcomer busy for a week though if the person has to discover everything 14:11:08 <flo-retina> Fallen: your evening plan seems exciting 14:11:10 <aleth> Fallen: yes, it's just a matter of writing a conversation binding that listens to all open conversation notifications 14:11:15 <flo-retina> evenings aren't to work anyway ;) 14:11:39 <Fallen> exam prep work :) 14:11:43 <flo-retina> :-/ 14:11:57 <clokep_work> flo-retina, aleth: Looks like https://hg.pidgin.im/pidgin/main/file/0fc4638f51ef/libpurple/protocols/facebook/json.h and https://hg.pidgin.im/pidgin/main/file/0fc4638f51ef/libpurple/protocols/facebook/api.c :( 14:12:06 <clokep_work> If it was just json.h that would have been sane... 14:14:06 <aleth> clokep_work: if you want to experiment with building gio on Windows, maybe https://dxr.mozilla.org/mozilla-central/source/toolkit/toolkit.mozbuild#150 14:14:30 <flo-retina> aleth: won't that depend on a glib event loop? 14:14:41 <aleth> that's why I said "experiment" 14:15:16 * clokep_work is very confused about the relationship between gio and glib. 14:15:54 <Fallen> how much of gio is it using? Maybe it makes sense to just write a shim for the functions needed? 14:16:43 <flo-retina> hmm, that's a possible approach yes, just built it with the gio headers 14:16:48 <flo-retina> and see what fails at link time 14:17:02 <clokep_work> Yeah I could possibly try that. 14:17:41 <aleth> good idea 14:18:22 <flo-retina> I've probably used that approach for glib/xml2 at the time 14:28:21 <clokep_work> flo-retina: Although I did have another question...how do I tell the build system to build json-glib after glib? 14:30:01 <flo-retina> does it really have to be "after"? 14:30:10 <flo-retina> I would be tempted to have both statically linked together 14:30:45 <flo-retina> assuming you really want to build it "after glib", I think you would do that by having json-glib depend on glib 14:33:13 <clokep_work> Oh duh, you're right! :0 14:33:37 <clokep_work> They only depend at link time, assuming they can find the proper headers, but those are all exported first. 14:33:50 <clokep_work> So I'm doing something wrong that it can't find glib.h. :) 14:35:57 <clokep_work> Great it's using a method we don't export apparently: g_object_class_install_properties 14:37:30 <flo-retina> do we even build gobject? 14:41:55 <clokep_work> I think so. 14:46:08 <flo-retina> I thought I had hacked something so that we have the headers but don't build/ship it 14:46:15 <flo-retina> I may be misremembering though :) 14:58:49 <clokep_work> We might only have *some* of the headers too? 15:00:19 <flo-retina> could be an outdated version 15:00:23 <flo-retina> (very likely) 15:04:05 <clokep_work> We're using a super old glib yeah. :-\ 15:05:00 <flo-retina> it was the oldest/lightest I could get away with, back in 2008 15:05:17 <flo-retina> I don't think I care as much about binary size now as I did back then. 15:07:01 <clokep_work> Yeah. 16:43:10 --> myk has joined #instantbird 16:55:17 <-- myk has quit (Ping timeout: 121 seconds) 16:56:22 <-- gerard-majax has quit (Ping timeout: 121 seconds) 16:57:09 --> myk has joined #instantbird 16:57:14 --> nhnt11 has joined #instantbird 16:57:14 * ChanServ sets mode +h nhnt11 16:57:20 <-- aleth has quit (Quit: :tiuQ) 16:58:50 --> myk1 has joined #instantbird 16:58:52 <-- myk has quit (Connection closed) 16:58:52 * myk1 is now known as myk 17:22:32 --> gerard-majax has joined #instantbird 17:49:01 --> MikkCZ has joined #instantbird 17:52:17 <-- gerard-majax has quit (Ping timeout: 121 seconds) 17:57:46 --> gerard-majax has joined #instantbird 17:57:53 <-- mpmc has quit (Quit: Instantbird 1.6a1pre -- http://www.instantbird.com) 18:16:21 --> arlolra has joined #instantbird 18:17:42 --> abdelrhman has joined #instantbird 18:18:56 <-- nhnt11 has quit (Ping timeout: 121 seconds) 18:21:39 --> sawrubh_ has joined #instantbird 18:24:37 <-- gerard-majax has quit (Ping timeout: 121 seconds) 18:25:33 --> gerard-majax has joined #instantbird 18:28:40 <-- abdelrhman has quit (Ping timeout: 121 seconds) 18:40:50 <-- gerard-majax has quit (Ping timeout: 121 seconds) 18:48:52 <-- flo-retina has quit (Quit: Instantbird 1.6a1pre -- http://www.instantbird.com) 18:55:56 <-- MikkCZ has quit (Quit: Instantbird 1.5 -- http://www.instantbird.com) 19:13:45 <EionRobb> clokep_work: "pblite/protobuf-json/jsprotobuf" is all one thing, it doesn't have a real name, hangups calls it pblite but other things call it other things. it's protobuf encoded as json. its dumb. 19:14:41 <clokep_work> EionRobb: Sounds fun! :-D Isn't that an actual supported encoding of protobuf3? 19:15:18 <clokep_work> But cool, thanks. :) 19:16:56 <EionRobb> clokep_work: nope, protobuf3 has sane json output, pblite is just the protobuf encoded as arrays that depend on the position of the property in the protobuf 19:17:32 <EionRobb> so {foo:bar, wibble:blarg} might end up as [1,null,null,"bar"] 19:17:56 <clokep_work> (o_O)... 19:18:08 <clokep_work> I'm going to put that back in a box and look back over here. 19:18:51 <EionRobb> unless foo was really really far towards the end of the protobuf object, in which case there's a 'shortcut' to use an object with numeric keys like [1,{45:"bar"}] as long as the object is the last element in the aray 19:19:06 <EionRobb> I just can't find anyone who has been brave enough to document it to link to :) 19:19:31 <EionRobb> also, if it helps, I compiled the json-glib 0.14 dll for jgeboski for the facebook prpl 19:30:44 --> nhnt11 has joined #instantbird 19:30:44 * ChanServ sets mode +h nhnt11 19:30:51 <-- EionRobb has quit (Quit: Leaving.) 19:33:16 --> flo-retina has joined #instantbird 19:33:16 * ChanServ sets mode +qo flo-retina flo-retina 19:36:25 <clokep_work> EionRobb: That could be helpful then! :P Does it really require gio? ;) 19:38:23 <clokep_work> And of course he's gone now. :P 19:42:30 --> gerard-majax has joined #instantbird 19:53:20 --> unghost has joined #instantbird 19:56:03 <-- nhnt11 has quit (Quit: Instantbird 1.6a1pre -- http://www.instantbird.com) 19:56:06 --> nhnt11 has joined #instantbird 19:56:06 * ChanServ sets mode +h nhnt11 20:09:28 <-- Tonnes has quit (Quit: ChatZilla 0.9.92 [Firefox 44.0/20160123151951]) 20:10:56 <freaktechnik> minitrayr is broken again? :( 20:15:43 --> Tonnes has joined #instantbird 20:17:09 --> EionRobb has joined #instantbird 20:20:21 --> Mnyromyr has joined #instantbird 20:28:09 --> aleth has joined #instantbird 20:28:09 * ChanServ sets mode +o aleth 20:37:49 --> spiffytech has joined #instantbird 20:40:39 <-- gerard-majax has quit (Ping timeout: 121 seconds) 20:59:30 <-- sawrubh_ has quit (Quit: Connection closed for inactivity) 21:05:32 <aleth> freaktechnik: you have to follow bug 1241764. patches welcome ;) 21:05:34 <instantbot> Bug https://bugzilla.mozilla.org/show_bug.cgi?id=1241764 nor, --, mozilla47, khuey, RESO FIXED, Replace nsPIDOMWindow with nsPIDOMWindowInner/Outer 21:06:32 <freaktechnik> I'd rather just make a local patch to disable building minitrayr and always apply that... 21:07:15 <aleth> lol 21:07:34 <aleth> sadly people really seem to care about tray icons... 21:07:49 <freaktechnik> which is weird, I'd rather have instantbird in my messaging indicator. 21:07:58 <freaktechnik> But I don't feel like messing with gnome libs ;) 21:15:03 <clokep_work> People *really* like the system tray. 21:15:09 <clokep_work> I really hope Microsoft kills it on Windows one day. :-D 21:15:18 <clokep_work> EionRobb: Well...does it really require gio? :P 21:15:28 <aleth> It'll be like trying to kill the start button. That went well ;) 21:15:29 <clokep_work> (it being json-glib) 21:17:01 <nhnt11> Is the fix for the OS X bustage checked in? 21:17:06 <nhnt11> aleth: did you say it landed on inbound? 21:17:19 <aleth> should be on central by now 21:17:25 <aleth> I pushed it yesterday 21:17:29 <nhnt11> cool, thanks! 21:17:35 <nhnt11> Just refreshing my memory 21:17:40 * nhnt11 wants the emoji panel :] 21:17:44 <nhnt11> (thanks for that too!) 21:21:14 <aleth> Someone with a Linux box has to fix mintrayr, it's not really enough to guess 21:21:47 <aleth> well, Linux or Windows 21:22:04 <freaktechnik> was the fix for nsIDOMEvent confirmed working? 21:22:15 <freaktechnik> because I remember it just fixing the build... 21:22:35 <aleth> no confirmations or complaints 21:22:48 <freaktechnik> so it probably works ;) 21:52:43 <-- arlolra has quit (Client exited) 21:55:41 --> abdelrhman has joined #instantbird 21:59:07 <EionRobb> clokep: I can see it linked in.... http://i.imgur.com/hBAFh41.png 22:00:25 <EionRobb> but if the question is "does the facebook/hangouts prpl use the parts of json-glib that use gio" then I'm not sure :) 22:00:52 <EionRobb> you chaps and chapettes should look at including gio though, since purple3 is moving towards it 22:03:20 <EionRobb> looking at how json-glib uses gio though (for reading and writing from gio streams) I wouldn't think its likely that facebook is using those parts, it'll be doing its own networking 22:03:43 <-- freaktechnik has quit (Ping timeout: 121 seconds) 22:04:52 --> freaktechnik has joined #instantbird 22:12:20 <clokep_work> EionRobb: Thanks. 22:17:28 <-- abdelrhman has quit (Quit: Leaving.) 22:20:59 <EionRobb> from memory, the only reason json-glib 0.14 was needed instead of 0.8 was to take advantage of the JsonPath functions, which makes working with json in C slightly more bearable, but none of that uses gio streams either, from the looks of it 22:21:39 <clokep_work> Neat, maybe I'll just include a dummy header than. ;) 22:21:51 <clokep_work> That was my plan anyway... I have other path issues at the moment. 22:22:19 <aleth> EionRobb: really you'd need c-jstypes to work with json from C ;) 22:22:46 <flo-retina> EionRobb: what is gio used for in libpurple3? How much work would it be to shim these use cases? 22:22:58 <clokep_work> I think it's used for sockets. 22:23:10 <EionRobb> flo-retina: as in, all of the purple networking code being dropped in favour of it 22:23:20 <EionRobb> there's a massive de-duplication going on 22:23:46 <flo-retina> how big is the gio API surface? Can we just reimplement that API using mozilla networking instead? 22:23:52 <EionRobb> :D 22:24:30 <EionRobb> libgio-2.0-0.dll exports 1,555 functions 22:24:52 <flo-retina> that's insane :( 22:25:19 * clokep_work isn't sure that's even reasonable to WANT to do with the changes going on the XUl/GEcko, etc... 22:26:16 <EionRobb> its all the bits of glib that you seem to dislike - file access, networking, proxying, dns 22:26:18 --> abdelrhman has joined #instantbird 22:27:08 <flo-retina> EionRobb: file access isn't desirable for a library focused on implementing network protocols. 22:27:57 <EionRobb> it is if its sending and receiving files over a network protocol :P 22:28:10 <EionRobb> although, that said, the xfer/ft api's allow the UI to handle that itself 22:29:23 <flo-retina> EionRobb: right, it should be receiving a data stream, and the UI should figure out if it's going to convert it to ascii art or a file on disk. 22:30:27 <EionRobb> yeah, that's what the xfer uiops exposes at the moment 22:31:53 <EionRobb> ok, so roughly only 250 functions of that 1500 in gio are related to file access, and I'm not 100% sure of how many are being used by libpurple 22:33:11 --> arlolra has joined #instantbird 22:33:28 <flo-retina> EionRobb: you know we've got some experience in figuring out which subset of a library is actually used by libpurple ;) 22:33:46 <EionRobb> :D 22:34:00 <EionRobb> I just don't know why you keep wanting to make so much extra work for yourselves :) 23:02:22 <-- unghost has quit (Quit: Ð£Ñ Ð¾Ð¶Ñ Ñ Ð¾Ñ Ð²Ð°Ñ (xchat 2.4.5 или ÑÑаÑÑе)) 23:03:25 <-- arlolra has quit (Client exited) 23:03:37 --> arlolra has joined #instantbird 23:03:46 <-- Mnyromyr has quit (Quit: ChatZilla 0.9.92 [SeaMonkey 2.39/20151103174305]) 23:26:14 <-- Bollebib has quit (Connection closed) 23:36:10 <-- EionRobb has quit (Ping timeout: 121 seconds) 23:39:06 --> EionRobb has joined #instantbird 23:40:52 <-- arlolra has quit (Client exited) 23:44:45 <-- myk has quit (Ping timeout: 121 seconds) 23:44:48 --> myk has joined #instantbird 23:46:38 <-- clokep_work has quit (Ping timeout: 121 seconds) 23:47:41 --> mpmc has joined #instantbird 23:57:42 <-- abdelrhman has quit (Ping timeout: 121 seconds)