summaryrefslogtreecommitdiff
path: root/appl/demo/camera
diff options
context:
space:
mode:
authorCharles.Forsyth <devnull@localhost>2006-12-22 17:07:39 +0000
committerCharles.Forsyth <devnull@localhost>2006-12-22 17:07:39 +0000
commit37da2899f40661e3e9631e497da8dc59b971cbd0 (patch)
treecbc6d4680e347d906f5fa7fca73214418741df72 /appl/demo/camera
parent54bc8ff236ac10b3eaa928fd6bcfc0cdb2ba46ae (diff)
20060303a
Diffstat (limited to 'appl/demo/camera')
-rw-r--r--appl/demo/camera/camera.b2557
-rw-r--r--appl/demo/camera/camera.disbin0 -> 37619 bytes
-rw-r--r--appl/demo/camera/camera.sbl6687
-rw-r--r--appl/demo/camera/camload.bitbin0 -> 53700 bytes
-rw-r--r--appl/demo/camera/camproc.bitbin0 -> 7650 bytes
-rw-r--r--appl/demo/camera/mkfile42
-rwxr-xr-xappl/demo/camera/runcam.sh3
-rwxr-xr-xappl/demo/camera/runcamlocal.sh3
-rw-r--r--appl/demo/camera/tkinterface.b2508
-rw-r--r--appl/demo/camera/tkinterface.disbin0 -> 56826 bytes
-rw-r--r--appl/demo/camera/tkinterface.sbl7950
11 files changed, 19750 insertions, 0 deletions
diff --git a/appl/demo/camera/camera.b b/appl/demo/camera/camera.b
new file mode 100644
index 00000000..9bfff91b
--- /dev/null
+++ b/appl/demo/camera/camera.b
@@ -0,0 +1,2557 @@
+implement Camera;
+
+include "sys.m";
+ sys : Sys;
+include "daytime.m";
+ daytime: Daytime;
+include "styx.m";
+ styx: Styx;
+ Rmsg, Tmsg: import styx;
+include "styxservers.m";
+ styxservers: Styxservers;
+ Fid, Navigator, Navop: import styxservers;
+ Styxserver, Eexists, Eperm, Ebadfid, Enotdir, Enotfound, Ebadarg: import styxservers;
+ nametree: Nametree;
+ Tree: import nametree;
+include "string.m";
+ str : String;
+include "draw.m";
+include "arg.m";
+
+Camera : module {
+ init : fn (nil : ref Draw->Context, argv : list of string);
+};
+
+cdp_get_product_info: con 16r01;
+cdp_get_image_specifications: con 16r02;
+cdp_get_camera_status: con 16r03;
+cdp_set_product_info: con 16r05;
+cdp_get_camera_capabilities: con 16r10;
+cdp_get_camera_state: con 16r11;
+cdp_set_camera_state: con 16r12;
+cdp_get_camera_defaults: con 16r13;
+cdp_set_camera_defaults: con 16r14;
+cdp_restore_camera_states: con 16r15;
+cdp_get_scene_analysis: con 16r18;
+cdp_get_power_mode: con 16r19;
+cdp_set_power_mode: con 16r1a;
+cdp_get_s1_mode: con 16r1d;
+cdp_set_s1_mode: con 16r1e;
+cdp_start_capture: con 16r30;
+cdp_get_file_list: con 16r40;
+cdp_get_new_file_list: con 16r41;
+cdp_get_file_data: con 16r42;
+cdp_erase_file: con 16r43;
+cdp_get_storage_status: con 16r44;
+cdp_set_file_data: con 16r47;
+cdp_get_file_tag: con 16r48;
+cdp_set_user_file_tag: con 16r49;
+cdp_get_clock: con 16r70;
+cdp_set_clock: con 16r71;
+cdp_get_error: con 16r78;
+cdp_get_interface_timeout: con 16r90;
+cdp_set_interface_timeout: con 16r91;
+
+cdp_header_len: con 12;
+
+T_DIR: con 0;
+T_CTL: con 1;
+T_ABILITIES: con 2;
+T_TIME: con 3;
+T_JPGDIR: con 4;
+T_JPG: con 5;
+T_STORAGE: con 6;
+T_POWER: con 7;
+T_THUMB: con 8;
+T_THUMBDIR: con 9;
+T_STATE: con 10;
+T_INTERFACE: con 11;
+
+MAXFILESIZE : con 5000000;
+TIMEOUT : con 4000;
+
+nextjpgqid, nexttmbqid, dirqid, Qctl, Qabl, Qstore: int;
+Qstate, Qtime, Qjpgdir, Qpwr, Qthumbdir, Qinterface : int;
+
+error_table := array [] of {
+ "No Error",
+ "Unimplemented",
+ "Unsupported Version",
+ "Application Timeout",
+ "Internal Error",
+ "Parameter Error",
+ "File System Null",
+ "File Not Found",
+ "Data Section Not Found",
+ "Invalid File Type",
+ "Unknown Drive",
+ "Drive Not Mounted",
+ "System Busy",
+ "Battery Low",
+};
+
+bintro := array [] of {
+ byte 16ra5,
+ byte 16r5a,
+ byte 16r00,
+ byte 16rc8,
+ byte 16r00,
+ byte 16r02,
+ byte 16rc9,
+};
+
+bak := array [] of {
+ byte 16r5a, # 2 byte header
+ byte 16ra5,
+ byte 16r55, # I/F Type
+ byte 16r00, # Comm Flag
+ byte 16r00,
+ byte 16r00,
+ byte 16r00,
+ byte 16r00,
+ byte 16r00,
+ byte 16r00,
+ byte 16r00,
+ byte 16r00,
+ byte 16r00,
+};
+
+pwl := array[] of {
+ byte 0,
+ byte 0,
+};
+
+pak := array [] of {
+ byte 0,
+ byte 0,
+};
+
+SERIAL, USB, IRDA: con (1<<iota);
+BEACON, BEACONRESULT: con (1<<iota);
+
+Camera_adt: adt {
+ port_type: int;
+ port_num: int;
+ command: int;
+ mode: int;
+ fd: ref Sys->FD;
+ ctlfd: ref Sys->FD;
+ cdp: array of byte;
+ bufbytes: int;
+ baud: int;
+ dfs, hfs: int; # device and host frame sizes
+ stat: int; # eia status file
+};
+
+statopt := array[] of {
+ "status",
+ "stat",
+};
+
+DL_QUANTA: con 20000;
+
+TOUT: con -1729;
+
+Partialtag: adt {
+ offset, length, filesize: int;
+};
+
+Cfile: adt {
+ driveno: int;
+ pathname: array of byte;
+ dosname: array of byte;
+ filelength: int;
+ filestatus: int;
+ thumblength: int;
+ thumbqid: int;
+};
+
+Fitem : adt {
+ qid: Sys->Qid;
+ cf: Cfile;
+};
+
+C: Camera_adt;
+
+filelist: array of Fitem;
+reslength: int;
+currentstate := "";
+wait : int;
+usecache := 0;
+connected : int;
+recon := 0;
+verbosity := 4;
+interfacepath := "";
+interfacepaths : array of string;
+camname := "";
+gpid : int;
+
+init(nil : ref Draw->Context, argv : list of string)
+{
+ err: string;
+ sys = load Sys Sys->PATH;
+ gpid = sys->pctl(Sys->NEWPGRP, nil);
+
+ str = load String String->PATH;
+ daytime = load Daytime Daytime->PATH;
+
+ styx = load Styx Styx->PATH;
+ styx->init();
+ styxservers = load Styxservers Styxservers->PATH;
+ styxservers->init(styx);
+ nametree = load Nametree Nametree->PATH;
+ nametree->init();
+ arg := load Arg Arg->PATH;
+
+ filelist = array[200] of Fitem;
+ C.port_num = 0; # XXXXX from argv
+ C.port_type = SERIAL; # Serial only for now
+ C.baud = 115200;
+ C.dfs = C.hfs = 1023;
+ C.cdp = array [DL_QUANTA] of byte;
+ C.mode = BEACON;
+
+ ex.pnum = -1;
+ ex.offset = -1;
+ cachelist = nil;
+
+ nextjpgqid = getqid(1, T_JPG);
+ nexttmbqid = getqid(1, T_THUMB);
+ dirqid = getqid(1,T_JPGDIR);
+ Qctl = getqid(Qroot,T_CTL);
+ Qabl = getqid(Qroot,T_ABILITIES);
+ Qstore = getqid(Qroot,T_STORAGE);
+ Qtime = getqid(Qroot,T_TIME);
+ Qstate = getqid(Qroot,T_STATE);
+ Qpwr = getqid(Qroot,T_POWER);
+ Qjpgdir = getqid(Qroot,T_JPGDIR);
+ Qthumbdir = getqid(Qroot,T_THUMBDIR);
+ Qinterface = getqid(Qroot,T_INTERFACE);
+
+ camname = "Camera";
+ extrafilelist: list of string = nil;
+ arg->init(argv);
+ arg->setusage("camera [-b baud] [-F framesize] [-f extrafiles] [-p port] [-n name] [-v verbosity]");
+ while ((opt := arg->opt()) != 0) {
+ case opt {
+ 'n' =>
+ camname = arg->earg();
+ 'v' =>
+ verbosity = int arg->earg();
+ 'F' =>
+ C.dfs = C.hfs = int arg->earg();
+ 'b' =>
+ C.baud = int arg->earg();
+ 'p' =>
+ C.port_num = int arg->earg();
+ 'c' =>
+ usecache = 1;
+ 'f' =>
+ extrafilelist = arg->earg() :: extrafilelist;
+ * =>
+ arg->usage();
+ }
+ }
+ arg = nil;
+ interfacepaths = array[len extrafilelist] of string;
+ # sys->print("INTERFACEPATHS: %d\n", len extrafilelist);
+ for (i := 0; i < len interfacepaths; i++) {
+ interfacepaths[i] = hd extrafilelist;
+ # sys->print("INTERFACEPATH %d: %s\n", i, hd extrafilelist);
+ extrafilelist = tl extrafilelist;
+ }
+
+ print(sys->sprint("Trying to connect to eia%d...\n",C.port_num),2);
+ case C.port_type {
+ SERIAL =>
+ # open port and return fd
+ (C.fd, C.ctlfd, err) = serialport(C.port_num);
+ if (C.fd == nil) {
+ print("Could not open serial port\n",1);
+ exit;
+ }
+ USB =>
+ ;
+ IRDA =>
+ ;
+ * =>
+ ;
+ }
+ if (connect() != 0) {;
+ print("Connection failed\n",1);
+ exit;
+ }
+ recon = 0;
+ print("Connected!\n",2);
+ set_interface_timeout();
+ set_camera_properties();
+ get_file_list();
+ connected = 1;
+ ignoreabls = nil;
+ get_camera_capabilities();
+ sync := chan of int;
+ spawn serveloop(sys->fildes(0), sync);
+ <-sync;
+}
+
+set_camera_properties()
+{
+ for (i := 0; i < len set_camera_props; i++)
+ set_camera_state(set_camera_props[i].t0,set_camera_props[i].t1);
+}
+
+set_camera_props := array[] of {
+ ("mcap", 0),
+ ("acpd", 65535),
+ ("actc", 65535),
+ ("btpd", 65535),
+ ("bttc", 65535),
+ ("flty", 1246774599),
+ ("ssvl", 0),
+};
+
+argval(argv: list of string, arg: string): string
+{
+ if (arg == "") return "";
+ if (arg[0] != '-') arg = "-" + arg;
+ while (argv != nil) {
+ if (hd argv == arg && tl argv != nil && (hd tl argv)[0] != '-')
+ return tonext(tl argv);
+ argv = tl argv;
+ }
+ return "";
+}
+
+tonext(los: list of string): string
+{
+ s := "";
+ while (los != nil) {
+ if ((hd los)[0] != '-') s += " " + hd los;
+ else break;
+ los = tl los;
+ }
+ if (s != "") s = s[1:];
+ return s;
+}
+
+int2hex(i:int): int
+{
+ i2 := 0;
+ s := string i;
+ for (k := 0; k < len s; k++)
+ i2 = (i2 * 16) + int s[k:k+1];
+ return i2;
+}
+
+connect(): int
+{
+ connected = 0;
+ datain := chan of array of byte;
+ pchan := chan of int;
+ tick := chan of int;
+ reset(C.ctlfd);
+
+ spawn timer2(tick,TIMEOUT * 2);
+ tpid := <-tick;
+
+ spawn beacon_intro(datain, pchan, C.fd);
+ pid := <- pchan;
+ # beacon phase
+ Beacon: for (;;) {
+ alt {
+ buf := <- datain =>
+ # got some data
+ case C.mode {
+ BEACON =>
+ if (beacon_ok(buf)) {
+ print("Got beacon\n",3);
+ beacon_ack(C);
+ spawn beacon_result(datain, pchan, C.fd);
+ pid = <-pchan;
+ C.mode = BEACONRESULT;
+ break;
+ }
+ else {
+ print("resetting\n",3);
+ reset(C.ctlfd);
+ }
+ BEACONRESULT =>
+ kill(tpid);
+
+ print("Checking beacon result\n",3);
+ if (beacon_comp(buf, C) == 0) {
+ return 0;
+ break Beacon;
+ }
+ return -1;
+ }
+ <- tick =>
+ kill(pid);
+ return -1; # failure
+ }
+ }
+}
+
+CTL, ABILITIES, DATA, JPG, PIC, TIME, CONV: con iota;
+NAME, FSIZE, PHOTO, THUMB: con iota;
+
+Qdir : con iota;
+
+contains(s: string, test: string): int
+{
+ num :=0;
+ if (len test > len s) return 0;
+ for (i := 0; i < (1 + (len s) - (len test)); i++) {
+ if (test == s[i:i+len test]) num++;
+ }
+ return num;
+}
+
+abilitiesfilter := array[] of {
+ "Time Format",
+ "Date Format",
+ "File Type",
+ "Video",
+ "Media",
+ "Sound",
+ "Volume",
+ "Reset Camera",
+ "Slide",
+ "Timelapse",
+ "Burst",
+ "Power",
+ "Sleep",
+};
+
+ignoreabls : list of string;
+
+defattr : list of (string, int);
+defaultattr, currentattr: array of (string, int);
+
+filterabls(pname, desc: string): int
+{
+ for (i := 0; i < len abilitiesfilter; i++) {
+ if (contains(desc, abilitiesfilter[i])) {
+ ignoreabls = pname :: ignoreabls;
+ return 1;
+ }
+ }
+ return 0;
+}
+
+mountit(dfd, mountfd: ref sys->FD, sync: chan of int)
+{
+ sys->pctl(sys->NEWNS | sys->NEWFD, 2 :: dfd.fd :: mountfd.fd :: nil);
+ sync <-= 1;
+ mountfd = sys->fildes(mountfd.fd);
+ dfd = sys->fildes(dfd.fd);
+ if (sys->mount(mountfd, nil, "/", sys->MREPL | sys->MCREATE, nil) == -1) {
+ sys->fprint(sys->fildes(2), "cannot mount\n");
+ spawn exporterror(dfd, sys->sprint("%r"));
+ } else {
+ sync = chan of int;
+ spawn exportpath(sync, dfd);
+ <-sync;
+ }
+}
+
+exporterror(dfd: ref Sys->FD, error: string)
+{
+ tmsg := Tmsg.read(dfd, 0);
+ if (tmsg == nil) {
+ sys->fprint(sys->fildes(2), "exporterror() EOF\n");
+ exit;
+ }
+ pick t := tmsg {
+ Readerror =>
+ sys->fprint(sys->fildes(2), "exporterror() Readerror\n");
+ * =>
+ reply: ref Rmsg = ref Rmsg.Error(tmsg.tag, error);
+ data := reply.pack();
+ sys->write(dfd, data, len data);
+ }
+}
+
+exportpath(sync: chan of int, dfd: ref sys->FD)
+{
+ sync <-= 1;
+ sys->export(dfd, "/", Sys->EXPWAIT);
+}
+
+Qroot : con int iota;
+
+ss : ref Styxserver;
+uid: string;
+
+exitfid := -1;
+
+getuid()
+{
+ buf := array [100] of byte;
+ fd := sys->open("/dev/user", Sys->OREAD);
+ uidlen := sys->read(fd, buf, len buf);
+ uid = string buf[0: uidlen];
+}
+
+dir(name: string, perm: int, length: int, qid: int): Sys->Dir
+{
+ d := sys->zerodir;
+ d.name = name;
+ d.uid = uid;
+ d.gid = uid;
+ d.qid.path = big qid;
+ if (perm & Sys->DMDIR)
+ d.qid.qtype = Sys->QTDIR;
+ else {
+ d.qid.qtype = Sys->QTFILE;
+ d.length = big length;
+ }
+ d.mode = perm;
+ d.atime = d.mtime = daytime->now();
+ return d;
+}
+
+User: adt {
+ attachfid: int;
+ attr: array of (string, int);
+};
+
+users : array of User;
+
+getuser(fid: int): int
+{
+ for (i := 0; i < len users; i++)
+ if (users[i].attachfid == fid)
+ return i;
+ return -1;
+}
+
+getattr(pname: string): int
+{
+ for (i := 0; i < len defaultattr; i++)
+ if (defaultattr[i].t0 == pname)
+ return i;
+ return -1;
+}
+
+serveloop(fd : ref sys->FD, sync: chan of int)
+{
+ tchan: chan of ref Tmsg;
+ srv: ref Styxserver;
+ echan := chan of string;
+ users = array[20] of { * => User (-1, nil) };
+ sys->pctl(Sys->FORKNS, nil);
+ sync <-= 1;
+ print("serveloop\n",5);
+ getuid();
+ (tree, treeop) := nametree->start();
+ tree.create(big Qroot, dir(".",8r555 | sys->DMDIR,0,Qroot));
+ tree.create(big Qroot, dir("ctl",8r222,0,Qctl));
+ tree.create(big Qroot, dir("abilities",8r444,0,Qabl));
+ tree.create(big Qroot, dir("storage",8r444,0,Qstore));
+ tree.create(big Qroot, dir("power",8r444,0,Qpwr));
+ tree.create(big Qroot, dir("date",8r666,0,Qtime));
+ tree.create(big Qroot, dir("state",8r666,0,Qstate));
+ tree.create(big Qroot, dir("jpg",8r777 | sys->DMDIR,0,Qjpgdir));
+ tree.create(big Qroot, dir("thumb",8r777 | sys->DMDIR,0,Qthumbdir));
+ for (j := 0; j < len interfacepaths; j++) {
+ (n, idir) := sys->stat(interfacepaths[j]);
+ if (n != -1) {
+ idir.qid.path = big Qinterface;
+ # intdir := dir("",8r777,0,Qinterface);
+ # intdir.name = idir.name;
+ # intdir.length = idir.length;
+ # intdir.atime = idir.atime;
+ # intdir.mtime = idir.mtime;
+ tree.create(big Qroot, idir);
+ Qinterface += 1<<4;
+ }
+ }
+
+ tmsgqueue := Tmsgqueue.new(50);
+
+ (tchan, srv) = Styxserver.new(fd,Navigator.new(treeop), big Qroot);
+ fd = nil;
+
+ gm, lastgm: ref Tmsg;
+ gm = nil;
+
+ oldfiles = nil;
+ updatetree(tree);
+
+ print("serveloop loop\n",5);
+ alivechan := chan of int;
+ spawn keepalive(alivechan);
+ alivepid := <-alivechan;
+ retryit := 0;
+ notries := 0;
+ readfid := -1;
+ serveloop: for (;;) {
+ wait = daytime->now();
+ if (notries > 5) retryit = 0;
+ if (retryit) {
+ gm = lastgm;
+ notries++;
+ }
+ else {
+ notries = 0;
+ loop: for (;;) {
+ gm = tmsgqueue.pop(readfid);
+ if (gm != nil)
+ break;
+ alt {
+ gm = <-tchan =>
+ break loop;
+ c := <-alivechan =>
+ for (;;) {
+ s := get_clock();
+ wait = daytime->now();
+ # print(sys->sprint("got alivechan: %s",s),1);
+ if (recon) {
+ killchan := chan of int;
+ spawn noresponse(tchan,srv,killchan);
+ reconnect(-1);
+ killchan <-= 1;
+ }
+ else
+ break;
+ }
+ }
+ }
+ }
+ lastgm = gm;
+ retryit = 0;
+ if (gm == nil) {
+ sys->print("exiting!\n");
+ break serveloop; # nil => EOF => last mount was unmounted
+ }
+ print(sys->sprint("Got new GM %s tag: %d\n", gm.text(), gm.tag),4);
+ # print(sys->sprint("Got new GM %s tag: %d\n", gm.text(), gm.tag),2);
+
+ if (!connected) {
+ srv.reply(ref Rmsg.Error(gm.tag, "Could not connect to camera"));
+ print("Error: not connected to camera\n",1);
+ }
+ else pick m := gm {
+ Readerror =>
+ print(sys->sprint( "camera: fatal read error: %s\n", m.error),1);
+ break serveloop;
+ Attach =>
+ nu := getuser(-1);
+ if (nu == -1) {
+ srv.reply(ref Rmsg.Error(m.tag, "Camera in use"));
+ break;
+ }
+ m.uname = string nu;
+ srv.default(m);
+ myattr := array[len currentattr] of (string, int);
+ for (i := 0; i < len myattr; i++)
+ myattr[i] = currentattr[i];
+ users[nu] = User (m.fid, myattr);
+ print("adding user "+string nu, 2);
+ Clunk =>
+ nu := getuser(m.fid);
+ if (nu != -1) {
+ users[nu] = User (-1, nil);
+ print("removing user "+string nu, 2);
+ }
+ if (m.fid == readfid) {
+ # sys->print("readfid clunk: %d\n",readfid);
+ readfid = -1;
+ }
+ srv.default(gm);
+ Remove =>
+ print("Removing file\n",3);
+ f := srv.getfid(m.fid);
+ if (f == nil) {
+ print("Remove: Invalid fid\n",1);
+ srv.reply(ref Rmsg.Error(m.tag, Ebadfid));
+ break;
+ }
+ ftype := gettype(int f.path);
+ if (ftype != T_JPG) {
+ srv.reply(ref Rmsg.Error(m.tag, "Cannot remove file"));
+ break;
+ }
+ else {
+ for (i := 0; i < reslength; i++) {
+ if (f.path == filelist[i].qid.path) {
+ print("removing filelist\n",5);
+ if (erase_file(filelist[i].cf) != 0) {
+ if (!recon)
+ srv.reply(ref Rmsg.Error(m.tag, "Cannot remove file"));
+ break;
+ }
+
+ srv.delfid(f);
+ if (get_file_list() != 0)
+ srv.reply(ref Rmsg.Error(m.tag, "Cannot read files"));
+ else {
+ updatetree(tree);
+ srv.reply(ref Rmsg.Remove(m.tag));
+ }
+ break;
+ }
+ }
+ }
+ Read =>
+ print("got read request in serveloop\n",6);
+ (f,e) := srv.canread(m);
+ if(f == nil)
+ break;
+ if (f.qtype & Sys->QTDIR) {
+ print("reading directory\n",5);
+ srv.read(m);
+ break;
+ }
+ data : array of byte;
+ case gettype(int f.path) {
+ T_INTERFACE =>
+ (dir, intdata) := readinterface(int f.path, m.offset, m.count);
+ if (dir != nil && m.offset == big 0) {
+ dir.qid.path = f.path;
+ tree.wstat(f.path, *dir);
+ }
+ srv.reply(ref Rmsg.Read(m.tag, intdata));
+ T_POWER =>
+ print("reading power mode...\n",3);
+ data = array of byte get_power_mode();
+ if (!recon) srv.reply(styxservers->readbytes(m, data));
+
+ T_TIME =>
+ print("reading clock...\n",3);
+ data = array of byte get_clock();
+ if (!recon)
+ srv.reply(styxservers->readbytes(m, data));
+
+ T_ABILITIES =>
+ data = array of byte get_camera_capabilities();
+ if (!recon)
+ srv.reply(styxservers->readbytes(m, data));
+
+ T_JPG =>
+ # sys->print("Read Jpg: user %d\n", int f.uname);
+ if (readfid != -1 && readfid != m.fid) {
+ tmsgqueue.push(m);
+ # sys->print("in use!\n");
+ # srv.reply(ref Rmsg.Error(m.tag, "Camera in use, please wait"));
+ break;
+ }
+ readfid = m.fid;
+ data = photoread2(f.path, m,tree,0);
+ if (!recon)
+ srv.reply(ref Rmsg.Read(m.tag, data));
+
+ T_THUMB =>
+ if (readfid != -1 && readfid != m.fid) {
+ # srv.reply(ref Rmsg.Error(m.tag, "Camera in use, please wait"));
+ tmsgqueue.push(m);
+ break;
+ }
+ readfid = m.fid;
+ # sys->print("Read Thumb: user %d\n", int f.uname);
+ data = photoread2(f.path, m,tree,1);
+ if (!recon)
+ srv.reply(ref Rmsg.Read(m.tag, data));
+
+ T_STATE =>
+ if (currentstate == "") srv.reply(ref Rmsg.Error(m.tag, "No state requested"));
+ else {
+ data = array of byte get_camera_state(currentstate,int m.offset);
+ if (!recon)
+ srv.reply(ref Rmsg.Read(m.tag, data));
+ }
+
+ T_STORAGE =>
+ data = array of byte get_storage_status();
+ if (!recon) {
+ if (len data == 0)
+ srv.reply(ref Rmsg.Error(m.tag, "Could not read storage status"));
+ else
+ srv.reply(styxservers->readbytes(m, data));
+ }
+ * =>
+ srv.reply(ref Rmsg.Error(m.tag, "Cannot read file"));
+ }
+ # if (readfid != -1)
+ # sys->print("readfid set: %d\n",readfid);
+ Write =>
+ print("got write request in serveloop\n",6);
+
+ (f,e) := srv.canwrite(m);
+ if(f == nil) {
+ print("cannot write to file\n",1);
+ break;
+ }
+ wtype := gettype(int f.path);
+ (n, s) := sys->tokenize(string m.data, " \t\n");
+ if (wtype == T_TIME) {
+ if (set_clock(string m.data) != 0)
+ srv.reply(ref Rmsg.Error(m.tag, "Invalid date time format\n" +
+ "Usage: MM/DD/YY HH/MM/SS\n"));
+ else srv.reply(ref Rmsg.Write(m.tag, len m.data));
+
+ }
+ else if (wtype == T_CTL) {
+ err := "";
+ case hd s {
+ "refresh" =>
+ # for (i := 0; i < reslength; i++) {
+ # tree.remove(filelist[i].qid.path);
+ # tree.remove(big filelist[i].cf.thumbqid);
+ # }
+ if (get_file_list() != 0)
+ err = "Error: Could not read from camera";
+ else
+ updatetree(tree);
+ # for (i = 0; i < reslength; i++)
+ # buildfilelist(tree, i);
+ "snap" =>
+ nu := int f.uname;
+ print(sys->sprint("User %d taking photo\n",nu),2);
+ for (i := 0; i < len currentattr; i++) {
+ # sys->print("user: %s=%d current: %s=%d\n",
+ # users[nu].attr[i].t0,users[nu].attr[i].t1,
+ # currentattr[i].t0,currentattr[i].t1);
+ if (users[nu].attr[i].t1 != currentattr[i].t1) {
+ set_camera_state(users[nu].attr[i].t0, users[nu].attr[i].t1);
+ sys->sleep(100);
+ }
+ }
+ e1 := capture();
+ if (e1 == -1) {
+ err = "Cannot communicate with camera";
+ break;
+ }
+ if (e1 != 0) {
+ err = "Error: "+error_table[e1];
+ break;
+ }
+ sys->sleep(4000);
+ if (get_file_list() != 0) {
+ err = "Error: Could not read from camera";
+ break;
+ }
+ updatetree(tree);
+ * =>
+ if (n == 2) { # assume that it is a (string, int) tuple
+ na := getattr(hd s);
+ if (na == -1)
+ err = "Invalid command name '"+hd s+"'";
+ else {
+ e1 := set_camera_state(hd s, int hd tl s);
+ if (e1 != nil)
+ err = e;
+ else
+ users[int f.uname].attr[na].t1 = int hd tl s;
+ }
+ }
+
+ }
+
+ if (!recon) {
+ if (err != "") {
+ print(err+"\n",1);
+ srv.reply(ref Rmsg.Error(m.tag, err));
+ }
+ else srv.reply(ref Rmsg.Write(m.tag, len m.data));
+ }
+ }
+ else if (wtype == T_STATE) {
+ if (s != nil)
+ currentstate = hd s;
+ srv.reply(ref Rmsg.Write(m.tag, len m.data));
+ }
+ else srv.reply(ref Rmsg.Error(m.tag, "Could not write to file"));
+ Wstat =>
+ print("Got Wstat command in serveloop\n",6);
+ srv.reply(ref Rmsg.Error(m.tag, "Wstat failed"));
+ * =>
+ srv.default(gm);
+ }
+ if (recon) {
+ retryit = 1;
+ ok := reconnect(4);
+ if (!ok) {
+ srv.reply(ref Rmsg.Error(gm.tag, "Could not connect to camera"));
+ killchan := chan of int;
+ spawn noresponse(tchan,srv,killchan);
+ reconnect(-1);
+ killchan <-= 1;
+ retryit = 0;
+ sys->sleep(100);
+ }
+ }
+ }
+ tree.quit();
+ kill(alivepid);
+ killg(gpid);
+}
+
+Tmsgqueue: adt {
+ start, end, length: int;
+ a : array of ref Tmsg.Read;
+ new: fn (n: int): ref Tmsgqueue;
+ push: fn (t: self ref Tmsgqueue, t: ref Tmsg.Read): int;
+ pop: fn (t: self ref Tmsgqueue, readfid: int): ref Tmsg.Read;
+};
+
+Tmsgqueue.new(n: int): ref Tmsgqueue
+{
+ t : Tmsgqueue;
+ t.start = 0;
+ t.end = 0;
+ t.length = 0;
+ t.a = array[n] of ref Tmsg.Read;
+ return ref t;
+}
+
+Tmsgqueue.push(t: self ref Tmsgqueue,newt: ref Tmsg.Read): int
+{
+ if (t.length >= len t.a)
+ return -1;
+ t.a[t.end] = newt;
+ t.end++;
+ if (t.end >= len t.a)
+ t.end = 0;
+ t.length++;
+ return 0;
+}
+
+Tmsgqueue.pop(t: self ref Tmsgqueue, readfid: int): ref Tmsg.Read
+{
+ if (t.length == 0)
+ return nil;
+ m := t.a[t.start];
+ if (readfid != -1 && readfid != m.fid)
+ return nil;
+ t.start++;
+ if (t.start >= len t.a)
+ t.start = 0;
+ t.length--;
+ return m;
+}
+
+noresponse(tchan: chan of ref Tmsg, srv: ref Styxservers->Styxserver, killchan : chan of int)
+{
+ for (;;) alt {
+ k := <- killchan =>
+ return;
+ gm := <- tchan =>
+ print("noresponse: Returning Error\n",1);
+ srv.reply(ref Rmsg.Error(gm.tag, "Could not connect to camera"));
+ sys->sleep(100);
+ }
+}
+
+photoread2(qid: big, m: ref Tmsg.Read, tree: ref Nametree->Tree, isthumb: int): array of byte
+{
+ photonum := -1;
+ data : array of byte;
+ # sys->print("photoread: qid: %d resl: %d\n",int qid,reslength);
+ for (i := 0; i < reslength; i++) {
+ # sys->print("%d: %s %d\n",i, sconv(filelist[i].cf.dosname),int filelist[i].qid.path);
+ if (!isthumb && qid == filelist[i].qid.path) {
+ photonum = i;
+ break;
+ }
+ else if (isthumb && int qid == filelist[i].cf.thumbqid) {
+ photonum = i;
+ break;
+ }
+ }
+ if (photonum >= reslength || photonum < 0) {
+ print(sys->sprint( "error: photonum = %d (reslength = %d)\n", photonum,reslength),1);
+ return nil;
+ }
+ offset := int m.offset;
+ dosname := filelist[photonum].cf.dosname;
+ filelen := filelist[photonum].cf.filelength;
+ for (k := 0; k < 5; k++) {
+ if (filelen == 0) {
+ get_file_size(photonum);
+ print(sys->sprint("\tFilelen: %d => ",filelen),5);
+ filelen = filelist[photonum].cf.filelength;
+ print(sys->sprint("%d\n",filelen),5);
+ tree.wstat(qid,
+ dir(str->tolower(sconv(filelist[photonum].cf.dosname)),
+ 8r444,
+ filelen,
+ int qid));
+ sys->sleep(1000);
+ }
+ else break;
+ }
+ if (filelen == 0 && !isthumb) return nil; # doesn't matter if filesize is wrong for thumbnail
+ if (isthumb) filelen = filelist[photonum].cf.thumblength;
+ if (usecache && cachesize(dosname, isthumb) == filelen) {
+# print(sys->sprint("Is cached!\n");
+ n := m.count;
+ filesize := cachesize(dosname,isthumb);
+ if (offset >= filesize) return nil;
+ if (offset+m.count >= filesize) n = filesize - offset;
+ data = array[n] of byte;
+ fd := sys->open(cachename(dosname,isthumb), sys->OREAD);
+ if (fd == nil) cachedel(dosname,isthumb);
+ else {
+ sys->seek(fd,m.offset,sys->SEEKSTART);
+ sys->read(fd,data,len data);
+ fd = nil;
+ return data;
+ }
+ }
+# print(sys->sprint("Is NOT cached!\n");
+
+ if (photonum == ex.pnum && offset == ex.offset && ex.isthumb == isthumb)
+ data = ex.data;
+ else if (isthumb)
+ data = getthumb(photonum, offset, m.count);
+ else if (!isthumb)
+ data = getpicture2(photonum, offset, m.count);
+ if (len data > m.count) {
+ ex.pnum = photonum;
+ ex.offset = offset + m.count;
+ ex.data = array[len data - m.count] of byte;
+ ex.data[0:] = data[m.count:len data];
+ ex.isthumb = isthumb;
+ data = data[:m.count];
+ }
+ if (usecache) {
+ fd : ref sys->FD;
+ cname := cachename(dosname,isthumb);
+
+ if (offset == 0)
+ fd = sys->create(cname,sys->OWRITE,8r666);
+ else {
+ fd = sys->open(cname,sys->OWRITE);
+ if (fd != nil)
+ sys->seek(fd,big 0,sys->SEEKEND);
+ }
+ if (fd != nil) {
+ i = sys->write(fd,data,len data);
+ fd = nil;
+ }
+ (n, dir) := sys->stat(cname);
+ if (n == 0) {
+ cacheadd(dosname,isthumb,int dir.length);
+ }
+ }
+ return data;
+}
+
+cachelist : list of (string, int, int);
+
+cacheprint()
+{
+ tmp := cachelist;
+ print("cache:\n",3);
+ while (tmp != nil) {
+ (dn,i1,i2) := hd tmp;
+ print(sys->sprint("\t%s %d %d\n",dn,i1,i2),3);
+ tmp = tl tmp;
+ }
+}
+
+cacheclean()
+{
+ tmp : list of (string, int,int);
+ tmp = nil;
+ while (cachelist != nil) {
+ (dosnm,it,fl) := hd cachelist;
+ for (i := 0; i < reslength; i++) {
+ filelen := filelist[i].cf.filelength;
+ if (it) filelen = filelist[i].cf.thumblength;
+ if (sconv(filelist[i].cf.dosname) == dosnm && filelen == fl) {
+ tmp = (dosnm,it,fl) :: tmp;
+ break;
+ }
+ }
+ cachelist = tl cachelist;
+ }
+ cachelist = tmp;
+}
+
+cacheadd(dosname1: array of byte, isthumb, filelen: int)
+{
+ dosname := sconv(dosname1);
+ tmp : list of (string, int,int);
+ tmp = nil;
+ updated := 0;
+ while (cachelist != nil) {
+ (dosnm,it,fl) := hd cachelist;
+ if (dosname == dosnm && it == isthumb) {
+ updated = 1;
+ tmp = (dosnm,it,filelen) :: tmp;
+ }
+ else
+ tmp = (dosnm,it,fl) :: tmp;
+ cachelist = tl cachelist;
+ }
+ if (updated == 0)
+ tmp = (dosname,isthumb,filelen) :: tmp;
+ cachelist = tmp;
+}
+
+
+cachedel(dosname1: array of byte, isthumb: int)
+{
+ dosname := sconv(dosname1);
+ tmp : list of (string, int,int);
+ tmp = nil;
+ while (cachelist != nil) {
+ (dosnm,it,filelen) := hd cachelist;
+ if (dosname != dosnm || it != isthumb)
+ tmp = (dosnm,it,filelen) :: tmp;
+ cachelist = tl cachelist;
+ }
+ cachelist = tmp;
+}
+
+cachesize(dosname1: array of byte, isthumb: int): int
+{
+ dosname := sconv(dosname1);
+ tmp := cachelist;
+ while (tmp != nil) {
+ (dosnm,it,filelen) := hd tmp;
+ if (dosname == dosnm && isthumb == it) return filelen;
+ tmp = tl tmp;
+ }
+ return -1;
+}
+
+cachename(dosname: array of byte, isthumb: int): string
+{
+ name := "/tmp/" + str->tolower(sconv(dosname));
+ if (isthumb) name = jpg2bit(name);
+ name[len name - 1] = '~';
+ return name;
+}
+
+poll_and_wait(): int
+{
+ print("poll and wait\n",7);
+ write_n(C.fd, pwl, len pwl);
+# sys->sleep(100);
+ if (read_n_to(C.fd, pak, len pak,TIMEOUT) < 0) {
+ print("poll_and_wait: unexpected read failure, exiting...\n",1);
+ return -1;
+ }
+ return 0;
+}
+
+send_packet(): int
+{
+ # computing packet size
+ to_write := C.bufbytes;
+
+ # send the first packet
+ pwl[0] = byte ((1<<5)|(1<<4)|(1<<3)|(1<<2)|(to_write>>8));
+ pwl[1] = byte (to_write&16rff);
+
+ if (poll_and_wait() != 0)
+ return -1;
+# pak[1] == byte 2; ?
+ pak[1] = byte 2;
+
+ wrote_here := write_n(C.fd, C.cdp, to_write);
+ if (wrote_here != to_write)
+ return -1;
+ return 0;
+}
+
+send_message(): int
+{
+ v:= 0;
+ rc := chan of int;
+ tc := chan of int;
+
+ spawn timer2(tc,6000);
+ tpid := <- tc;
+ spawn write_message(rc);
+ rpid := <- rc;
+
+ try := 0;
+ alt {
+ <- tc =>
+ kill(rpid);
+ print("error: write timeout\n",1);
+ v = -2;
+ break;
+ v = <- rc =>
+ kill(tpid);
+ break;
+ }
+ return v;
+}
+
+write_message(rc: chan of int)
+{
+ print("writing msg...\n",6);
+ rc <- = sys->pctl(0, nil);
+ if (send_packet() != 0) {
+ rc <-= -1;
+ return;
+ }
+ pwl[0] = byte 0;
+ pwl[1] = byte 0;
+ wrote_here := write_n(C.fd, pwl, 2);
+ if (wrote_here != 2) {
+ rc <-= -1;
+ return;
+ }
+ rc <-= 0;
+ print("written\n",6);
+}
+
+extra: adt {
+ pnum: int;
+ offset: int;
+ length: int;
+ data: array of byte;
+ isthumb: int;
+};
+
+ex : extra;
+
+getthumb(photonum, offset, maxlength: int): array of byte
+{
+ if (offset != 0) return nil;
+ print("getting thumbnail\n",3);
+ thumbdata: array of byte;
+ err, h, w, ttype: int;
+ file := filelist[photonum].cf;
+ filesize := 13020;
+ if (offset > 0) {
+ filesize = file.thumblength;
+ if (offset >= filesize) return nil;
+ }
+ for(;;){
+ print(sys->sprint("Filesize: %d offset: %d\n",filesize, offset),5);
+ if (offset + maxlength > filesize)
+ maxlength = filesize - offset;
+ l := maxlength;
+
+ C.command = cdp_get_file_data;
+ C.bufbytes = build_cdp_header(C.cdp, 68);
+ off := cdp_header_len;
+ off = set_int(C.cdp[off:], file.driveno, off);
+ off = set_fstring(C.cdp[off:], file.pathname, off);
+ off = set_dosname(C.cdp[off:], file.dosname, off);
+ off = set_int(C.cdp[off:], 1, off);
+
+ off = set_int(C.cdp[off:], offset, off);
+ off = set_int(C.cdp[off:], l, off);
+ off = set_int(C.cdp[off:], filesize, off);
+
+ print(sys->sprint( "getthumbdata %d %d %d\n", offset, maxlength, filesize),5);
+ send_message();
+# sys->sleep(2000);
+ if ((err = receive_message()) != 0) {
+ print(sys->sprint("Error %d\n", err),1);
+ return nil;
+ }
+ off = cdp_header_len;
+ print(sys->sprint( "bufbytes = %d\n", C.bufbytes),5);
+ tmpoffset: int;
+ (tmpoffset, off) = get_int(C.cdp[off:], off);
+ (l, off) = get_int(C.cdp[off:], off);
+ (filesize, off) = get_int(C.cdp[off:], off);
+ print(sys->sprint( "getthumbdata returning %d %d %d\n", offset, l, filesize),5);
+
+ if (offset == 0) {
+ (filesize, off) = get_int(C.cdp[off:off+4], off);
+ (h, off) = get_int(C.cdp[off:off+4], off);
+ (w, off) = get_int(C.cdp[off:off+4], off);
+ (ttype, off) = get_int(C.cdp[off:off+4], off);
+ filelist[photonum].cf.thumblength = filesize;
+ thumbdata = array[filesize] of byte;
+ print(sys->sprint("Thumb (%d,%d) size: %d type: %d\n",w,h,filesize,ttype),5);
+ }
+ if (offset + l > filesize) l = filesize - offset;
+ print(sys->sprint( "Making array of size: %d\n", l),5);
+ thumbdata[offset:] = C.cdp[off:off+l];
+ offset += l;
+ if (offset >= filesize) break;
+ }
+ return thumb2bit(thumbdata,w,h);
+}
+
+getpicture2(photonum, offset, maxlength: int): array of byte
+{
+ file := filelist[photonum].cf;
+ filesize := int file.filelength;
+ print("getting image\n",3);
+ print(sys->sprint("Filesize: %d offset: %d\n",filesize, offset),5);
+ if (offset >= filesize) return nil;
+ if (offset + maxlength > filesize)
+ maxlength = filesize - offset;
+ l := maxlength;
+ C.command = cdp_get_file_data;
+ C.bufbytes = build_cdp_header(C.cdp, 68);
+ off := cdp_header_len;
+ off = set_int(C.cdp[off:], file.driveno, off);
+ off = set_fstring(C.cdp[off:], file.pathname, off);
+ off = set_dosname(C.cdp[off:], file.dosname, off);
+ off = set_int(C.cdp[off:], 0, off);
+
+ off = set_int(C.cdp[off:], offset, off);
+ off = set_int(C.cdp[off:], l, off);
+ off = set_int(C.cdp[off:], filesize, off);
+
+ print(sys->sprint( "getfiledata %d %d %d\n", offset, maxlength, filesize),5);
+ send_message();
+ if ((err := receive_message()) != 0) {
+ print(sys->sprint("Error %d\n", err),1);
+ return nil;
+ }
+ off = cdp_header_len;
+ print(sys->sprint( "bufbytes = %d\n", C.bufbytes),5);
+ (offset, off) = get_int(C.cdp[off:], off);
+ (l, off) = get_int(C.cdp[off:], off);
+ (filesize, off) = get_int(C.cdp[off:], off);
+ print(sys->sprint( "getfiledata returning %d %d %d\n", offset, maxlength, filesize),5);
+ filedata := array[l] of byte;
+ filedata[0:] = C.cdp[off:off+l];
+ return filedata;
+}
+
+erase_file(file: Cfile): int
+{
+ C.command = cdp_erase_file;
+ C.bufbytes = build_cdp_header(C.cdp, 52);
+
+ off := cdp_header_len;
+ off = set_int(C.cdp[off:], file.driveno, off);
+ off = set_fstring(C.cdp[off:], file.pathname, off);
+ off = set_dosname(C.cdp[off:], file.dosname, off);
+ send_message();
+# sys->sleep(1000);
+ if (receive_message() != 0)
+ return -1;
+ return 0;
+}
+
+
+set_power_mode(): int
+{
+ C.command = cdp_set_power_mode;
+ C.bufbytes = build_cdp_header(C.cdp, 0);
+ return (send_message());
+}
+
+get_storage_status(): string
+{
+ s := "";
+
+ C.command = cdp_get_storage_status;
+ C.bufbytes = build_cdp_header(C.cdp, 0);
+ send_message();
+# sys->sleep(2000);
+ if (receive_message() != 0) return "";
+ off := cdp_header_len;
+ taken, available, raw : int;
+ (taken, off) = get_int(C.cdp[off:], off);
+ (available, off) = get_int(C.cdp[off:], off);
+ (raw, off) = get_int(C.cdp[off:], off);
+ s += sys->sprint("Picture Memory\n\tused:\t%d\n\tfree:\t%d",taken,available);
+ if (raw == -1)
+ s += "\n";
+ else
+ s += sys->sprint(" (compressed)\n\t\t%d (raw)\n",raw);
+
+ return s;
+}
+
+get_power_mode(): string
+{
+ mode: int;
+
+ C.command = cdp_get_power_mode;
+ C.bufbytes = build_cdp_header(C.cdp, 0);
+ send_message();
+# sys->sleep(2000);
+ if (receive_message() != 0) return "Could not read power mode";
+ off := cdp_header_len;
+ (mode, off) = get_int(C.cdp[off:], off);
+ return sys->sprint("Power Mode = %d\n", mode);
+}
+
+set_clock_data(s:string): int
+{
+ err := 0;
+ if (s == "") {
+ tm := daytime->local(daytime->now());
+ off := cdp_header_len;
+ C.cdp[cdp_header_len+0] = byte 0;
+ C.cdp[cdp_header_len+1] = byte int2hex(tm.mon+1);
+ C.cdp[cdp_header_len+2] = byte int2hex(tm.mday);
+ C.cdp[cdp_header_len+3] = byte int2hex(tm.year);
+ C.cdp[cdp_header_len+4] = byte 0;
+ C.cdp[cdp_header_len+5] = byte int2hex(tm.hour);
+ C.cdp[cdp_header_len+6] = byte int2hex(tm.min);
+ C.cdp[cdp_header_len+7] = byte int2hex(tm.sec);
+ }
+ else {
+ (n,datetime) := sys->tokenize(s," ");
+ if (n != 2) return 1;
+ off := 0;
+ for (i := 0; i < 2; i++) {
+ (n2,data) := sys->tokenize(hd datetime, "./:");
+ if (n2 != 3) return 1;
+ off++;
+ for (i2 := 0; i2 < 3; i2++) {
+ C.cdp[cdp_header_len+off] = byte int2hex(int hd data);
+ off++;
+ data = tl data;
+ }
+ datetime = tl datetime;
+ }
+ }
+ return 0;
+}
+
+set_clock(s:string): int
+{
+ C.command = cdp_set_clock;
+ C.bufbytes = build_cdp_header(C.cdp, 8);
+ if (set_clock_data(s)) return 1;
+ send_message();
+ if (receive_message() != 0) return 1;
+ return 0;
+}
+
+addzeros(s: string): string
+{
+ s[len s] = ' ';
+ rs := "";
+ start := 0;
+ isnum := 0;
+ for (i := 0; i < len s; i++) {
+ if (s[i] < '0' || s[i] > '9') {
+ if (isnum && i - start < 2) rs[len rs] = '0';
+ rs += s[start:i+1];
+ start = i+1;
+ isnum = 0;
+ }
+ else isnum = 1;
+ }
+ i = len rs - 1;
+ while (i >= 0 && rs[i] == ' ') i--;
+ return rs[:i+1];
+}
+
+get_clock(): string
+{
+ C.command = cdp_get_clock;
+ C.bufbytes = build_cdp_header(C.cdp, 0);
+ send_message();
+ if (receive_message() != 0)
+ return "Could not read clock\n";
+ s := sys->sprint("%x/%x/%x %x:%x:%x", int C.cdp[13],int C.cdp[14],
+ int C.cdp[15], int C.cdp[17], int C.cdp[18], int C.cdp[19]);
+ return "date is "+addzeros(s)+"\n";
+}
+
+get_file_list(): int
+{
+ getoldfiledata();
+ print("getting file list\n",3);
+ C.command = cdp_get_file_list;
+ C.bufbytes = build_cdp_header(C.cdp, 56);
+ setfiledata();
+ send_message();
+ if (receive_message() != 0)
+ return -1;
+ display_filelist();
+ return 0;
+}
+
+setfiledata()
+{
+ off := cdp_header_len;
+ off = set_int(C.cdp[off:], 1, off); # ascending order
+ off = set_int(C.cdp[off:], 1, off); # drive a: internal RAM disk
+ off = set_fstring(C.cdp[off:], array of byte "", off); # set pathname to null
+ off = set_dosname(C.cdp[off:], array of byte "", off); # set Dos filename to null
+}
+
+get_file_size(i: int): int
+{
+ C.command = cdp_get_file_list;
+ C.bufbytes = build_cdp_header(C.cdp, 56);
+ setfiledata2(i);
+ send_message();
+ if (receive_message() != 0) return -1;
+ display_filelist();
+ return 0;
+}
+
+setfiledata2(i: int)
+{
+ off := cdp_header_len;
+ off = set_int(C.cdp[off:], 1, off); # ascending order
+ off = set_int(C.cdp[off:], 1, off); # drive a: internal RAM disk
+ off = set_fstring(C.cdp[off:], filelist[i].cf.pathname, off); # set pathname
+ off = set_dosname(C.cdp[off:], filelist[i].cf.dosname, off); # set Dos filename
+}
+
+set_interface_timeout()
+{
+ print("Setting Interface timeout\n",3);
+ C.command = cdp_set_interface_timeout;
+ C.bufbytes = build_cdp_header(C.cdp, 8);
+ off := cdp_header_len;
+ off = set_int(C.cdp[off:], 100, off);
+ off = set_int(C.cdp[off:], 5, off);
+ send_message();
+# sys->sleep(1000);
+ receive_message();
+}
+
+display_filelist(): string
+{
+ off, i: int;
+
+ off = cdp_header_len;
+ (reslength, off) = get_int(C.cdp[off:], off);
+ s := sys->sprint("Number of entries: %d\n", reslength);
+ for (i = 0; i < reslength; i++) {
+ (filelist[i].cf.driveno, off) = get_int(C.cdp[off:], off);
+ (filelist[i].cf.pathname, off) = get_fstring(C.cdp[off:], off);
+ (filelist[i].cf.dosname, off) = get_dosname(C.cdp[off:], off);
+ (filelist[i].cf.filelength, off) = get_int(C.cdp[off:], off);
+ (filelist[i].cf.filestatus, off) = get_int(C.cdp[off:], off);
+ if (filelist[i].cf.filelength < 0 || filelist[i].cf.filelength > MAXFILESIZE)
+ filelist[i].cf.filelength = 0;
+ s += sys->sprint("\t%d, %s, %s, %d\n", filelist[i].cf.driveno,
+ string filelist[i].cf.pathname,
+ string filelist[i].cf.dosname,
+ filelist[i].cf.filelength);
+ }
+ print(s,5);
+ if (usecache)
+ cacheclean();
+ return s;
+}
+
+get_camera_capabilities(): string
+{
+ print("Get capabilities\n",3);
+ C.command = cdp_get_camera_capabilities;
+ C.bufbytes = build_cdp_header(C.cdp, 0);
+ send_message();
+# sys->sleep(500);
+ if (receive_message() != -1)
+ return capabilities();
+ print("Error recieving abilities message\n",1);
+ return "";
+}
+
+Capability: adt {
+ pname: string;
+ d: string;
+ pick {
+ List =>
+ t: list of (string, int);
+ Range =>
+ min, max, default, current: int;
+ }
+};
+
+caplist: list of ref Capability;
+
+print_camera_capabilities(): string
+{
+ rs := "";
+# p : ref Capability;
+
+ pick p := hd caplist{
+ List =>
+ rs += sys->sprint("Pname = %s ", p.pname);
+ Range =>
+ rs += sys->sprint("Pname = %s min = %d max = %d default = %d ", p.pname,
+ p.min, p.max, p.default);
+ }
+# p := tl p;
+ return rs;
+}
+
+capabilities(): string
+{
+ off, i, ncaps, t: int;
+ l, m, n: int;
+ pname, desc: array of byte;
+ s: array of byte;
+ rs := "";
+ off = cdp_header_len;
+ (ncaps, off) = get_int(C.cdp[off:], off);
+ if (ncaps > 200)
+ return "error reading capabilities\n";
+ rs += sys->sprint("i = %d\n", i);
+ firsttime := 0;
+ if (ignoreabls == nil)
+ firsttime = 1;
+ for (j := 0; j < ncaps; j++) {
+ line := "";
+ (pname, off) = get_pname(C.cdp[off:], off);
+ line += sys->sprint("%s, ", string pname);
+ (t, off) = get_int(C.cdp[off:], off);
+ (desc, off) = get_fstring(C.cdp[off:], off);
+ line += sys->sprint("%s: ", string desc);
+ fact := "";
+ case t {
+ 1 =>
+ t: list of (string, int);
+
+ (l, off) = get_int(C.cdp[off:], off);
+ (m, off) = get_int(C.cdp[off:], off);
+ line += sys->sprint("items: %d factory: %d\n", l, m);
+
+ for (k := 0; k < l; k++) {
+ (s, off) = get_fstring(C.cdp[off:], off);
+ (n, off) = get_int(C.cdp[off:], off);
+ line += sys->sprint(" %s: %d\n", string s, n);
+ if (m == n)
+ fact = sconv(s);
+ t = (sconv(s), n) :: t;
+ }
+ cl := ref Capability.List (sconv(pname), sconv(desc), t);
+ 2 =>
+ (l, off) = get_int(C.cdp[off:], off);
+ (m, off) = get_int(C.cdp[off:], off);
+ (n, off) = get_int(C.cdp[off:], off);
+ line += sys->sprint("min: %d max: %d factory:%d\n", l, m, n);
+ fact = string n;
+ 3 =>
+ (l, off) = get_int(C.cdp[off:], off);
+ case l {
+ 7 =>
+ (s, off) = get_dosname(C.cdp[off:], off);
+ 8 =>
+ (s, off) = get_fstring(C.cdp[off:], off);
+ * =>
+ line += sys->sprint("Invalid type %d\n", l);
+ break;
+ }
+ fact = string s;
+ line += sys->sprint("%s\n", string s);
+ 4 to 8 =>
+ break;
+ 9 =>
+ break;
+ * =>
+ line += sys->sprint("Invalid type %d\n", t);
+ break;
+ }
+ if (firsttime) {
+ if (!filterabls(sconv(pname), string desc))
+ defattr = (sconv(pname), int fact) :: defattr;
+ }
+ if (!isin(ignoreabls, string pname))
+ rs += line;
+ }
+ if (firsttime) {
+ defaultattr = array[len defattr] of (string, int);
+ currentattr = array[len defattr] of (string, int);
+ i = 0;
+ for (;defattr != nil; defattr = tl defattr) {
+ defaultattr[i] = hd defattr;
+ currentattr[i++] = hd defattr;
+ }
+ }
+ return rs;
+}
+
+isin(los: list of string, s: string): int
+{
+ for (;los !=nil; los = tl los)
+ if (hd los == s)
+ return 1;
+ return 0;
+}
+
+set_capture_data(): int
+{
+ C.cdp[cdp_header_len+0] = byte 0;
+ C.cdp[cdp_header_len+1] = byte 0;
+ C.cdp[cdp_header_len+2] = byte 0;
+ C.cdp[cdp_header_len+3] = byte 0;
+ return 4;
+}
+
+get_camera_state(pname: string,offset: int): string
+{
+ if (offset != 0) return "";
+ print(sys->sprint( "get_camera_state(%s)\n", pname),3);
+ C.command = cdp_get_camera_state;
+ off := cdp_header_len;
+ if (pname == "")
+ C.bufbytes = build_cdp_header(C.cdp, 0);
+ else {
+ if (len pname != 4)
+ return "Invalid command name: "+pname+"\n";
+ C.cdp[off+0] = byte pname[0];
+ C.cdp[off+1] = byte pname[1];
+ C.cdp[off+2] = byte pname[2];
+ C.cdp[off+3] = byte pname[3];
+ C.bufbytes = build_cdp_header(C.cdp, 4);
+ }
+ send_message();
+ if (receive_message() != 0) return "Could not read state: "+pname+"\n";
+ off = cdp_header_len;
+ rlen: int;
+ (rlen, off) = get_int(C.cdp[off:],off);
+ s := "";
+ rlen = 1;
+ if (pname == "") {
+ for (q := off; q < len C.cdp; q++) {
+ s[0] = int C.cdp[q];
+ if (s[0] > 0) print(sys->sprint("%s",s),5);
+ }
+ print("\n",5);
+ }
+ for (i := 0; i < rlen; i++) {
+ name, data: array of byte;
+ type1, tmp: int;
+ (name,off) = get_pname(C.cdp[off:],off);
+ (type1,off) = get_int(C.cdp[off:],off);
+ print(sys->sprint( "%d: %s - %d\n", i,pname,type1),5);
+ case type1 {
+ 1 to 5 =>
+ (tmp,off) = get_int(C.cdp[off:],off);
+ data = array of byte string tmp;
+ 6 =>
+ (data,off) = get_pname(C.cdp[off:],off);
+ 7 =>
+ (data,off) = get_dosname(C.cdp[off:],off);
+ 8 =>
+ (data,off) = get_fstring(C.cdp[off:],off);
+ * =>
+ data = array of byte "!ERROR!";
+ }
+ # if (string data == "!ERROR!") return "";
+# if (rlen == 1)
+# s = string data;
+# else s += sys->sprint("%s: %s\n",string name, string data);
+ s += sys->sprint("%s: %s\n",string name, string data);
+ }
+ return s;
+}
+
+
+set_camera_state(pname: string, val: int): string
+{
+ print(sys->sprint( "set_camera_state(%s, %d)\n", pname, val),3);
+ if (len pname != 4)
+ return "Command name must be 4 characters";
+ off := cdp_header_len;
+ C.cdp[off+0] = byte pname[0];
+ C.cdp[off+1] = byte pname[1];
+ C.cdp[off+2] = byte pname[2];
+ C.cdp[off+3] = byte pname[3];
+ off += 4;
+ off = set_int(C.cdp[off:], val, off);
+
+ C.command = cdp_set_camera_state;
+ C.bufbytes = build_cdp_header(C.cdp, 8);
+ send_message();
+# sys->sleep(1000);
+ if ((e := receive_message()) == 0) {
+ na := getattr(pname);
+ if (na != -1)
+ currentattr[na].t1 = val;
+ return nil;
+ }
+ else
+ return error_table[e];
+}
+
+capture(): int
+{
+ C.command = cdp_get_camera_status;
+ C.bufbytes = build_cdp_header(C.cdp, 0);
+ send_message();
+# sys->sleep(1000);
+ if (receive_message() != 0)
+ return -1;
+
+ d := set_capture_data();
+ C.command = cdp_start_capture;
+ C.bufbytes = build_cdp_header(C.cdp, d);
+ send_message();
+# sys->sleep(3000);
+ return receive_message();
+}
+
+dump_message()
+{
+ print(sys->sprint(" Message length = %d\n", C.bufbytes),5);
+ print(sys->sprint(" CDP Length = %d\n", (int C.cdp[2]<<8)+(int C.cdp[3])),5);
+ print(sys->sprint(" CDP Version = %d\n", int C.cdp[4]),5);
+ print(sys->sprint(" CDP Command = %x\n", int ((C.cdp[8]<<8)|(C.cdp[9]))),5);
+ print(sys->sprint(" CDP Result Code = %d\n", int ((C.cdp[10]<<8)|(C.cdp[11]))),5);
+}
+
+build_cdp_header(cdp: array of byte, x: int): int
+{
+ cdp[4] = byte 0;
+ cdp[5] = byte 0;
+ cdp[6] = byte 0;
+ cdp[7] = byte 0;
+ cdp[8] = byte ((C.command>>8)&16rff);
+ cdp[9] = byte (C.command&16rff);
+ cdp[10] = byte 0;
+ cdp[11] = byte 0;
+
+ l := 8 + x;
+ cdp[0] = byte ((l>>24)&16rff);
+ cdp[1] = byte ((l>>16)&16rff);
+ cdp[2] = byte ((l>>8)&16rff);
+ cdp[3] = byte (l&16rff);
+
+ return 12+x;
+}
+
+poll_and_reply(nak: int): int
+{
+ print("poll and reply\n",7);
+ if ((read_n_to(C.fd, pwl, len pwl,TIMEOUT) < 0) && nak) {
+ pak[0] = byte 0;
+ pak[1] = byte 2; # reject
+ write_n(C.fd, pak, len pak);
+ return 0;
+ }
+ pak[0] = byte 0;
+ pak[1] = byte 1;
+ write_n(C.fd, pak, len pak);
+
+ return 1;
+}
+
+receive_packet(buf: array of byte): int
+{
+ print("receive_packet\n",6);
+ if (!poll_and_reply(!0)) {
+ print("Poll and reply failed\n",1);
+ return -1;
+ }
+
+ l := int (((int pwl[0]&3)<<8)|(int pwl[1]));
+ C.bufbytes += l;
+ r := read_n_to(C.fd, buf, l,TIMEOUT);
+ if (r != l) {
+ print(sys->sprint( "could not read packet (read %d, expected %d)\n", r, l),1);
+ return -1;
+ }
+ return 0;
+}
+
+receive_message(): int
+{
+ print("read_message\n",6);
+ C.bufbytes = 0;
+ if (receive_packet(C.cdp[0:]) != 0) {
+ recon = 1;
+ print("receive packet failed\n",1);
+ return 3;
+ # raise "error: receive packet failed";
+ }
+ dump_message();
+ rc := int C.cdp[9];
+ if ((~rc&16rff) != (C.command&16rff)) {
+ print("command & return are different\n",1);
+ consume(C.fd);
+ return 3;
+ # raise "error: command and return command are not the same\n";
+ }
+ message_len := (int C.cdp[2]<<8)+(int C.cdp[3]);
+
+ while (C.bufbytes < message_len) {
+ if (receive_packet(C.cdp[C.bufbytes:]) != 0) {
+ print("Packet is too short\n",1);
+ recon = 1;
+ return 3;
+ # raise "error: receive packet2 failed";
+ }
+ }
+# sys->sleep(500);
+ read_n_to(C.fd, pak, len pak, TIMEOUT);
+ return (int ((C.cdp[10]<<8)|(C.cdp[11]))); # result code
+}
+
+reset(fd: ref Sys->FD)
+{
+ sys->fprint(fd, "d1");
+ sys->sleep(20);
+ sys->fprint(fd, "d0");
+ sys->fprint(fd, "b9600");
+}
+
+kill(pid: int)
+{
+ pctl := sys->open("/prog/" + string pid + "/ctl", Sys->OWRITE);
+ if (pctl != nil)
+ sys->write(pctl, array of byte "kill", len "kill");
+}
+
+killg(pid: int)
+{
+ if ((fd := sys->open("/prog/" + string pid + "/ctl", Sys->OWRITE)) != nil)
+ sys->fprint(fd, "killgrp");
+}
+
+#dump_buf(buf: array of byte, i: int)
+#{
+# for (j := 0; j < i; j++)
+# sys->fprint(sys->fildes(2), "%x ", int buf[j]);
+# sys->fprint(sys->fildes(2), "\n");
+#}
+
+serialport(port : int) : (ref Sys->FD, ref Sys->FD, string)
+{
+ C.fd = nil;
+ C.ctlfd = nil;
+ C.mode = BEACON;
+
+ serport := "/dev/eia" + string port;
+ serctl := serport + "ctl";
+
+ for (i := 0; i < len statopt; i++) {
+ statfd := sys->open("/dev/eia"+string port+statopt[i],sys->OREAD);
+ if (statfd != nil)
+ C.stat = i;
+ statfd = nil;
+ }
+ readstat();
+
+ fd := sys->open(serport, Sys->ORDWR);
+ if (fd == nil)
+ return (nil, nil, sys->sprint("cannot read %s: %r", serport));
+ ctlfd := sys->open(serctl, Sys->OWRITE);
+ if (ctlfd == nil)
+ return (nil, nil, sys->sprint("cannot open %s: %r", serctl));
+
+ config := array [] of {
+ "b9600",
+ "l8",
+ "p0",
+ "m0",
+ "s1",
+ "r1",
+ "i1",
+ "f",
+ };
+
+ for (i = 0; i < len config; i++) {
+ if (sys->fprint(ctlfd,"%s", config[i]) < 0)
+ print(sys->sprint("serial config (%s): %r\n", config[i]),3);
+ }
+ sys->sleep(100);
+ consume(fd);
+ sys->fprint(ctlfd, "d1");
+ sys->sleep(40);
+ sys->fprint(ctlfd, "d0");
+ return (fd, ctlfd, nil);
+}
+
+consume(fd: ref sys->FD)
+{
+ if (fd != nil) {
+ print("Consuming...\n",6);
+ read_n_to(fd, array[1000] of byte, 1000, 1000);
+ }
+}
+
+beacon_intro(data: chan of array of byte, pchan: chan of int, fd: ref Sys->FD)
+{
+ buf := array[64] of byte;
+ cbuf: array of byte;
+ pid := sys->pctl(0, nil);
+# print(sys->sprint("b_intro: starting %d\n",pid);
+ pchan <-= pid;
+ failed := array[len bintro] of { * => byte 0 };
+ # discard characters until lead in character reached
+ print(sys->sprint("\tWaiting for: %d...\n",int bintro[0]),3);
+ do {
+ n := read_n_to(fd, buf, 1, TIMEOUT);
+ if (n == -1) {
+ data <- = failed;
+ return;
+ }
+ print(sys->sprint("\tGot: %d\n",int buf[0]),5);
+ } while (buf[0] != bintro[0]);
+ print("Getting beacon\n",3);
+ # read the next 6 bytes of beacon
+ i := read_n_to(fd, buf[1:], 6,TIMEOUT);
+ for (k := 0; k < i; k++)
+ print(sys->sprint("\tRead %d: %d (wanted %d)\n",k+1, int buf[1+k], int bintro[1+k]),5);
+ if (i != 6) {
+ print("Error reading beacon\n",3);
+ exit;
+ }
+ else {
+ print("sending beacon\n",3);
+ cbuf = buf[0:7];
+ data <- = cbuf;
+ }
+
+}
+
+beacon_result(data: chan of array of byte, pchan: chan of int, fd: ref Sys->FD)
+{
+ buf := array[64] of byte;
+ cbuf: array of byte;
+ pid := sys->pctl(0, nil);
+ pchan <-= pid;
+
+ # read the next 10 bytes of beacon
+ p := 0;
+ intro := 1;
+ for (;;) {
+ i := read_n_to(fd, buf[p:], 1, TIMEOUT);
+ if (intro) {
+ if (buf[p] != bintro[p]) {
+ intro = 0;
+ buf[0] = buf[p];
+ p = 1;
+ }
+ else {
+ p++;
+ if (p >= len bintro) p = 0;
+ }
+ }
+ else p++;
+ if (p == 10) break;
+ }
+
+ for (k := 0; k < p; k++) print(sys->sprint("\tRead %d: %d\n",k, int buf[k]),5);
+ if (p != 10) {
+ print("Error reading beacon result\n",3);
+ exit;
+ }
+ else {
+ print("reading beacon result\n",3);
+ cbuf = buf[0:10];
+ data <- = cbuf;
+ }
+}
+
+beacon_comp(buf: array of byte, C: Camera_adt): int
+{
+ speed: string;
+
+ case int buf[0] {
+ 0 =>
+ C.baud = (int buf[2]<<24)|(int buf[3]<<16)|(int buf[4]<<8)|(int buf[5]);
+ C.dfs = (int buf[6]<<8)|(int buf[7]);
+ C.hfs = (int buf[8]<<8)|(int buf[9]);
+ # do baud rate change here
+ sys->sleep(1000);
+
+ case C.baud {
+ 115200 =>
+ speed = "b115200";
+ 57600 =>
+ speed = "b57600";
+ 38400 =>
+ speed = "b38400";
+ 19200 =>
+ speed = "b19200";
+ * =>
+ speed = "b9600";
+ }
+ print(sys->sprint("Connection Details:\n Baud rate:\t%dbps\n",C.baud),3);
+ print(sys->sprint(" Host frame size:\t%dbytes\n",C.hfs),3);
+ print(sys->sprint(" Device frame size:\t%dbytes\n",C.dfs),3);
+ if (sys->fprint(C.ctlfd,"%s", speed) < 0) {
+ print(sys->sprint("Error setting baud rate %s\n", speed),3);
+ return -1;
+ }
+ -1 =>
+ print("Incompatible Data Rate\n",1);
+ return -1;
+ -2 =>
+ print("Device does not support these modes\n",1);
+ return -2;
+ * =>
+ print(sys->sprint("I'm here!? buf[0] = %d\n",int buf[0]),1);
+ return -1;
+ }
+ return 0;
+}
+
+read_n(fd: ref Sys->FD, buf: array of byte, n: int, res: chan of int)
+{
+ pid := sys->pctl(0, nil);
+# print(sys->sprint("read_n: starting %d\n",pid);
+ res <-= pid;
+ print(sys->sprint( "read_n %d\n", n),7);
+ nread := 0;
+ while (nread < n) {
+ i := sys->read(fd, buf[nread:], n-nread);
+ sys->sleep(1);
+ if (i <= 0)
+ break;
+ nread += i;
+ }
+ res <-= nread;
+# print(sys->sprint("read_n: ending %d\n",pid);
+}
+
+read_n2(fd: ref Sys->FD, buf: array of byte, n: int): int
+{
+ print(sys->sprint( "read_n2 %d\n", n),7);
+ nread := 0;
+ while (nread < n) {
+ i := sys->read(fd, buf[nread:], n-nread);
+ sys->sleep(1);
+ if (i <= 0)
+ break;
+ nread += i;
+ }
+ return nread;
+}
+
+read_n_to(fd: ref Sys->FD, buf: array of byte, n,t : int): int
+{
+ v:= 0;
+ rc := chan of int;
+ tc := chan of int;
+
+ spawn timer2(tc,t);
+ tpid := <- tc;
+ spawn read_n(fd, buf, n, rc);
+ rpid := <- rc;
+
+ try := 0;
+ alt {
+ <- tc =>
+ kill(rpid);
+ print(sys->sprint( "error: read_n timeout\n"),1);
+ recon = 1;
+ return -1;
+ v = <- rc =>
+ kill(tpid);
+ break;
+ }
+ return v;
+}
+
+write_n(fd: ref Sys->FD, buf: array of byte, n: int): int
+{
+ print(sys->sprint("write_n %d\n", n),7);
+ nwrite := 0;
+ while (nwrite < n) {
+ i := sys->write(fd, buf[nwrite:], n-nwrite);
+ sys->sleep(1);
+ if (i <= 0) {
+ print(sys->sprint("Error returned by write: %r\n"),1);
+ readstat();
+# recon = 1;
+ return nwrite;
+ }
+ nwrite += i;
+ }
+ print(sys->sprint("write_n returning %d\n", nwrite),7);
+ return nwrite;
+}
+
+readstat()
+{
+ consume(C.fd);
+ print("Serial status: ",5);
+ statfd := sys->open("/dev/eia"+string C.port_num+statopt[C.stat], sys->OREAD);
+ buf := array[100] of byte;
+ if (statfd != nil) {
+ for (;;) {
+ k := sys->read(statfd,buf,len buf);
+ if (k > 0) print(string buf[:k],2);
+ else break;
+ }
+ print("\n",2);
+ }
+ else print("cannot read serial status\n",1);
+}
+
+beacon_ack(C: Camera_adt)
+{
+ # set speed
+ i := C.baud;
+ bak[4] = byte ((i>>24)&16rff);
+ bak[5] = byte ((i>>16)&16rff);
+ bak[6] = byte ((i>>8)&16rff);
+ bak[7] = byte (i&16rff);
+
+ # set frame size to device
+ i = C.dfs;
+ bak[8] = byte ((i>>8)&16rff);
+ bak[9] = byte (i&16rff);
+
+ # set frame size to host
+ i = C.hfs;
+ bak[10] = byte ((i>>8)&16rff);
+ bak[11] = byte (i&16rff);
+ bak[12] = check_sum(bak, 12);
+
+ if (write_n(C.fd, bak, len bak) != len bak) {
+ print("Error writing beacon acknowledgement\n",3);
+ exit;
+ }
+ print("beacon acknowledgement written\n",3);
+}
+
+# timer thread send tick <- = 0 to kill
+
+timer2(tick: chan of int, delay: int)
+{
+ pid := sys->pctl(0, nil);
+ tick <-= pid;
+ sys->sleep(delay);
+ tick <- = TOUT;
+}
+
+beacon_ok(buf: array of byte): int
+{
+
+ for (i := 0; i < len bintro; i++) {
+ if (buf[i] != bintro[i]) {
+ print(sys->sprint("Beacon failed on byte %d: %d (wanted %d)\n",i,int buf[i],int bintro[i]),3);
+ return 0;
+ }
+ }
+ print("Beacon passed\n",3);
+ return 1;
+}
+
+check_sum(buf: array of byte, l: int): byte
+{
+ sum := 0;
+ for (i := 0; i < l; i++)
+ sum += int buf[i];
+ return byte (sum&16rff);
+}
+
+
+set_int(b: array of byte, i, off: int): int
+{
+ b[0] = byte (i>>24&16rff);
+ b[1] = byte (i>>16&16rff);
+ b[2] = byte (i>>8&16rff);
+ b[3] = byte (i&16rff);
+
+ return (off+4);
+}
+
+set_fstring(b: array of byte, s: array of byte, off: int): int
+{
+ for (i := 0; i < 32; i++)
+ b[i] = byte 0;
+ for (i = 0; i < len s; i++)
+ b[i] = s[i];
+ return (off+32);
+}
+
+set_dosname(b: array of byte, s: array of byte, off: int): int
+{
+ for (i := 0; i < 16; i++)
+ b[i] = byte 0;
+ for (i = 0; i < len s; i++)
+ b[i] = s[i];
+ return (off+16);
+}
+
+get_tag(b: array of byte, off: int): (int, Partialtag)
+{
+ tag: Partialtag;
+ (off, tag.offset) = get_int(b, off);
+ (off, tag.length) = get_int(b, off);
+ (off, tag.filesize) = get_int(b, off);
+ return (off, tag);
+}
+
+get_int(b: array of byte, off: int): (int, int)
+{
+ return (get_int2(b), off+4);
+}
+
+get_int2(b: array of byte): int
+{
+ i := (int b[0]<<24)|(int b[1]<<16)|(int b[2]<<8)|(int b[3]);
+ return i;
+}
+
+
+get_pname(b: array of byte, off: int): (array of byte, int)
+{
+ return get_string(b, off, 4);
+}
+
+get_dosname(b: array of byte, off: int): (array of byte, int)
+{
+ return get_string(b, off, 16);
+}
+
+get_string(b: array of byte, off: int, l: int): (array of byte, int)
+{
+ s := array[l] of byte;
+ s[0:] = b[0:l];
+ return (s, off+l);
+}
+
+get_fstring(b: array of byte, off: int): (array of byte, int)
+{
+ return get_string(b, off, 32);
+}
+
+sconv(b: array of byte): string
+{
+ s := string b;
+ i := len s-1;
+ while (i >= 0 && s[i] == 0)
+ i--;
+ return s[0:i+1];
+}
+
+name2dos(s: string): array of byte
+{
+ return array of byte str->toupper(s);
+}
+
+getqid(i, ftype: int): int
+{
+ qid := (i<<4) + ftype;
+ return qid;
+}
+
+gettype(qid: int): int
+{
+ ftype := qid & 15;
+ return ftype;
+}
+
+cutdir(ab:array of byte): string
+{
+ s := sconv(ab);
+ for (i := 0; i < len s-1; i++)
+ if (s[i] == '/')
+ return s[i+1:len s - 1];
+ return "";
+}
+
+convert_thumb(w,h: int, data: array of byte): array of byte
+{
+ rgb := array[w * h * 3] of byte;
+ index := 0;
+ rgbi := 0;
+ for (i := 0; i < (w * h) / 2; i++) {
+
+ cb := real data[index];
+ y := real data[index+1];
+ cr := real data[index+2];
+
+ rb := conv(y + (1.77200 * (cb - 128.0)));
+ gb := conv(y - (0.34414 * (cb - 128.0)) - (0.71414 * (cr - 128.0)));
+ bb := conv(y + (1.4020 * (cr - 128.0)));
+
+ for (loop := 0; loop < 2; loop++) {
+ rgb[rgbi++] = rb;
+ rgb[rgbi++] = gb;
+ rgb[rgbi++] = bb;
+ }
+ index += 4;
+ }
+ return rgb;
+}
+
+conv(a: real): byte
+{
+ r := int a;
+ if (r < 0) r = -r;
+ if (r > 255) r = 255;
+ return byte r;
+}
+
+thumb2bit(buf: array of byte, w,h: int): array of byte
+{
+ convbuf := convert_thumb(w,h,buf);
+ # assume thumbs are small so we wont gain much by compressing them
+ bitarray := array [60+len convbuf] of byte;
+ # assume chans = RGB24
+ bitarray[:] = array of byte sys->sprint("%11s %11d %11d %11d %11d ", "r8g8b8", 0, 0, w, h);
+ bitarray[60:] = convbuf;
+ return bitarray;
+}
+
+jpg2bit(s: string): string
+{
+ if (len s < 4) return s;
+ if (s[len s - 4:] != ".jpg") return s;
+ return s[:len s - 4]+".bit";
+}
+
+oldfiles : list of (string, int, int);
+
+getoldfiledata()
+{
+ oldfiles = nil;
+ for(i := 0; i < reslength; i++)
+ oldfiles = (str->tolower(sconv(filelist[i].cf.dosname)),
+ int filelist[i].qid.path,
+ filelist[i].cf.thumbqid) :: oldfiles;
+}
+
+updatetree(tree: ref Nametree->Tree)
+{
+ for (i := 0; i < reslength; i++) {
+ name := str->tolower(sconv(filelist[i].cf.dosname));
+ found := 0;
+ tmp : list of (string, int, int) = nil;
+ for (; oldfiles != nil; oldfiles = tl oldfiles) {
+ (oldname, oldqid, oldthumbqid) := hd oldfiles;
+ # sys->print("'%s' == '%s'?\n",name,oldname);
+ if (name == oldname) {
+ found = 1;
+ filelist[i].qid = (big oldqid, 0, sys->QTFILE);
+ filelist[i].cf.thumbqid = oldthumbqid;
+ }
+ else
+ tmp = hd oldfiles :: tmp;
+ }
+ oldfiles = tmp;
+ # sys->print("len oldfiles: %d\n",len oldfiles);
+ if (found)
+ updateintree(tree, name, i);
+ else
+ addtotree(tree, name, i);
+
+ }
+ for (; oldfiles != nil; oldfiles = tl oldfiles) {
+ (oldname, oldqid, oldthumbqid) := hd oldfiles;
+ # sys->print("remove from tree: %s\n",oldname);
+ tree.remove(big oldqid);
+ tree.remove(big oldthumbqid);
+ }
+}
+
+updateintree(tree: ref Nametree->Tree, name: string, i: int)
+{
+ # sys->print("update tree: %s\n",name);
+ tree.wstat(filelist[i].qid.path,
+ dir(name,
+ 8r444,
+ filelist[i].cf.filelength,
+ int filelist[i].qid.path));
+ tree.wstat(big filelist[i].cf.thumbqid,
+ dir(jpg2bit(name),
+ 8r444,
+ 13020,
+ filelist[i].cf.thumbqid));
+}
+
+addtotree(tree: ref Nametree->Tree, name: string, i: int)
+{
+ # sys->print("addtotree: %s\n",name);
+ nextjpgqid += 1<<4;
+ filelist[i].qid = (big nextjpgqid, 0, sys->QTFILE);
+ parentqid := Qjpgdir;
+ tree.create(big parentqid,
+ dir(name,
+ 8r444,
+ filelist[i].cf.filelength,
+ nextjpgqid));
+
+ nexttmbqid += 1<<4;
+ filelist[i].cf.thumbqid = nexttmbqid;
+ tree.create(big Qthumbdir,
+ dir(jpg2bit(name),
+ 8r444,
+ 13020,
+ nexttmbqid));
+}
+
+keepalive(alivechan: chan of int)
+{
+ alivechan <-= sys->pctl(0,nil);
+ for (;;) {
+ sys->sleep(300000);
+ now := daytime->now();
+ print(sys->sprint("Alive: %d idle seconds\n",now-wait),6);
+ if (now < wait)
+ wait = now - 300;
+ if (now - wait >= 300)
+ alivechan <-= 1;
+ }
+}
+
+reconnect(n: int): int
+{
+ attempt := 0;
+ connected = 0;
+ delay := 100;
+ to5 := 0;
+ for (;;) {
+ print(sys->sprint( "Attempting to reconnect (attempt %d)\n",++attempt),2);
+ sys->sleep(100);
+ (C.fd, C.ctlfd, nil) = serialport(C.port_num);
+ if (C.fd == nil || C.ctlfd == nil)
+ print(sys->sprint("Could not open serial port\n"),3);
+ else if (connect() == 0) {
+ set_interface_timeout();
+ connected = 1;
+ print("Reconnected!\n",2);
+ break;
+ }
+ if (n != -1 && attempt >= n)
+ break;
+ if (++to5 >= 5) {
+ delay *= 2;
+ to5 = 0;
+ if (delay > 600000)
+ delay = 600000;
+ }
+ sys->sleep(delay);
+ }
+ recon = 0;
+ return connected;
+}
+
+# 1: errors
+# 2: connection
+# 3: main procs
+
+print(s: string, v: int)
+{
+ if (s != nil && s[len s - 1] == '\n')
+ s = s[:len s - 1];
+ if (v <= verbosity)
+ sys->fprint(sys->fildes(2), "%s (%s)\n",s,camname);
+}
+
+readinterface(qid : int, offset: big, size: int): (ref sys->Dir, array of byte)
+{
+ i := qid >> 4;
+ buf := array[size] of byte;
+ fd := sys->open(interfacepaths[i], sys->OREAD);
+ if (fd == nil)
+ return (nil,nil);
+ (n, dir) := sys->fstat(fd);
+ if (offset >= dir.length)
+ return (nil,nil);
+ sys->seek(fd, offset, sys->SEEKSTART);
+ i = sys->read(fd,buf,size);
+ return (ref dir, buf[:i]);
+}
+
+readfile(f: string): string
+{
+ fd := sys->open(f, sys->OREAD);
+ if(fd == nil)
+ return nil;
+
+ buf := array[8192] of byte;
+ n := sys->read(fd, buf, len buf);
+ if(n < 0)
+ return nil;
+
+ return string buf[0:n];
+}
diff --git a/appl/demo/camera/camera.dis b/appl/demo/camera/camera.dis
new file mode 100644
index 00000000..c099686a
--- /dev/null
+++ b/appl/demo/camera/camera.dis
Binary files differ
diff --git a/appl/demo/camera/camera.sbl b/appl/demo/camera/camera.sbl
new file mode 100644
index 00000000..451ffc0c
--- /dev/null
+++ b/appl/demo/camera/camera.sbl
@@ -0,0 +1,6687 @@
+limbo .sbl 2.1
+Camera
+8
+camera.b
+sys.m
+daytime.m
+styx.m
+styxservers.m
+string.m
+draw.m
+arg.m
+5417
+192.1,25 0
+193.1,36 1
+18,30 1
+32,35 1
+1,36 1
+1,36 1
+195.1,31 2
+196.1,37 3
+198.1,28 4
+199.1,13 5
+1,13 5
+200.1,49 6
+201.1,24 7
+19,23 7
+1,24 7
+202.1,40 8
+203.1,17 9
+1,17 9
+204.1,26 10
+206.1,31 11
+207.1,15 12
+208.1,21 13
+209.1,16 14
+210.9,21 15
+1,21 15
+211.1,34 16
+212.1,16 17
+214.1,13 18
+215.1,15 19
+216.1,16 20
+218.1,30 21
+21,22 21
+24,29 21
+1,30 21
+1,30 21
+219.1,32 22
+21,22 22
+24,31 22
+1,32 22
+1,32 22
+220.1,28 23
+17,18 23
+19,27 23
+1,28 23
+1,28 23
+221.1,27 24
+15,20 24
+21,26 24
+1,27 24
+1,27 24
+222.1,33 25
+15,20 25
+21,32 25
+1,33 25
+1,33 25
+223.1,33 26
+17,22 26
+23,32 26
+1,33 26
+1,33 26
+224.1,29 27
+16,21 27
+22,28 27
+1,29 27
+1,29 27
+225.1,31 28
+17,22 28
+23,30 28
+1,31 28
+1,31 28
+226.1,29 29
+15,20 29
+21,28 29
+1,29 29
+1,29 29
+227.1,33 30
+18,23 30
+24,32 30
+1,33 30
+1,33 30
+228.1,37 31
+20,25 31
+26,36 31
+1,37 31
+1,37 31
+229.1,39 32
+21,26 32
+27,38 32
+1,39 32
+1,39 32
+231.1,19 33
+232.33,36 34
+233.1,16 35
+11,15 35
+1,16 35
+234.1,100 36
+15,99 36
+1,100 36
+235.8,27 37
+8,27 37
+8,27 37
+8,27 37
+8,32 37
+236.7,10 38
+238.3,24 39
+3,24 39
+3,24 39
+3,24 38
+240.19,30 40
+19,30 40
+19,30 40
+3,30 40
+3,30 41
+3,30 38
+242.23,34 42
+23,34 42
+23,34 42
+11,34 42
+11,34 43
+3,34 42
+3,34 38
+244.16,27 44
+16,27 44
+16,27 44
+3,27 44
+3,27 45
+3,27 38
+246.20,31 46
+20,31 46
+20,31 46
+3,31 46
+3,31 47
+3,31 38
+248.3,15 48
+3,15 38
+250.19,30 49
+19,30 49
+19,30 49
+3,47 49
+3,47 50
+3,47 38
+252.3,15 51
+3,15 51
+3,15 38
+255.1,10 52
+256.24,41 53
+1,52 53
+258.6,12 54
+18,36 55
+14,36 55
+259.2,19 56
+2,38 56
+261.2,34 57
+258.38,41 58
+38,41 58
+264.7,64 59
+19,52 59
+53,63 59
+7,64 59
+7,64 59
+1,67 59
+1,67 59
+1,67 60
+65,66 59
+1,67 59
+265.6,17 61
+6,17 61
+6,17 61
+6,17 61
+268.26,48 62
+37,47 62
+26,48 62
+26,48 62
+4,8 62
+10,17 62
+19,22 62
+19,22 63
+19,22 64
+19,22 65
+269.7,18 66
+270.4,43 67
+10,40 67
+41,42 67
+4,43 67
+271.4,8 68
+273.2,5 61
+275.2,6 61
+277.2,3 61
+280.5,14 69
+5,14 69
+5,14 69
+5,19 69
+281.2,32 70
+8,29 70
+30,31 70
+2,32 70
+282.2,6 71
+284.1,10 72
+285.1,24 73
+7,21 73
+22,23 73
+1,24 73
+286.1,24 74
+1,24 74
+287.1,24 75
+1,24 75
+288.1,16 76
+1,16 76
+1,16 76
+289.1,14 77
+290.1,17 78
+291.1,26 79
+1,26 79
+1,26 79
+1,26 80
+292.1,20 81
+293.17,31 82
+29,30 82
+17,31 82
+17,31 82
+1,38 82
+1,38 82
+1,38 83
+33,37 82
+1,38 82
+294.1,7 84
+295.0,1 85
+299.6,12 86
+18,38 87
+14,38 87
+300.2,65 88
+19,38 88
+19,41 88
+42,61 88
+42,64 88
+2,65 88
+2,65 88
+2,65 89
+299.40,43 90
+40,43 90
+301.0,1 91
+327.1,8 92
+328.8,18 93
+329.6,14 94
+6,17 94
+6,17 95
+6,24 94
+37,43 96
+31,43 96
+26,43 96
+26,43 97
+26,43 98
+331.2,14 99
+2,14 99
+333.5,12 100
+14,23 101
+14,23 101
+334.8,9 102
+1,9 102
+339.1,8 103
+340.1,14 104
+341.6,12 105
+18,23 106
+14,23 106
+342.7,16 107
+27,30 107
+23,24 107
+23,31 107
+19,31 107
+19,31 108
+2,31 107
+341.25,28 109
+25,28 109
+343.8,10 110
+1,10 110
+348.1,14 111
+349.1,32 112
+350.1,21 113
+351.1,20 114
+352.1,15 115
+7,14 115
+1,15 115
+354.1,31 116
+14,18 116
+19,30 116
+1,31 116
+355.1,15 117
+357.1,40 118
+20,26 118
+28,33 118
+35,39 118
+1,40 118
+358.1,16 119
+362.13,19 120
+13,19 120
+388.6,10 120
+6,10 120
+361.2,8 120
+2,8 120
+2,8 120
+2,8 120
+364.9,15 121
+366.10,24 122
+20,23 122
+10,24 122
+10,24 122
+10,24 122
+367.7,30 123
+13,27 123
+28,29 123
+7,30 123
+368.7,20 124
+18,19 124
+7,20 124
+369.7,47 125
+27,33 125
+35,40 125
+42,46 125
+7,47 125
+370.7,20 126
+371.7,28 127
+372.7,12 128
+375.7,29 129
+13,26 129
+27,28 129
+7,29 129
+376.7,21 130
+13,20 130
+7,21 130
+7,21 121
+379.6,16 131
+11,15 131
+6,16 131
+381.6,41 132
+12,38 132
+39,40 132
+6,41 132
+382.10,29 133
+22,25 133
+27,28 133
+10,29 133
+10,29 133
+10,34 133
+383.14,15 134
+7,15 134
+386.13,15 135
+6,15 135
+6,15 136
+6,15 120
+389.4,13 137
+9,12 137
+4,13 137
+390.11,13 138
+4,13 138
+402.1,8 139
+403.16,21 140
+5,13 140
+5,21 140
+30,31 141
+23,31 141
+404.6,12 142
+23,30 143
+19,30 143
+33,43 143
+18,44 143
+14,44 143
+405.20,28 144
+18,28 144
+14,15 144
+14,29 144
+6,29 144
+6,29 145
+31,36 146
+404.46,49 147
+46,49 147
+407.8,11 148
+1,11 148
+433.6,12 149
+18,37 150
+14,37 150
+434.6,40 151
+15,19 151
+21,39 151
+21,39 151
+6,40 151
+6,40 151
+6,40 151
+435.3,35 152
+436.10,11 153
+3,11 153
+433.39,42 154
+39,42 154
+439.8,9 155
+1,9 155
+460.1,26 156
+19,22 156
+24,25 156
+1,26 156
+1,26 156
+461.5,16 157
+462.14,28 158
+26,27 158
+14,28 158
+14,28 158
+2,52 158
+2,52 158
+2,52 159
+30,51 158
+2,52 158
+2,52 158
+463.2,6 160
+465.6,15 161
+6,15 161
+467.14,28 162
+26,27 162
+14,28 162
+14,28 162
+2,58 162
+2,58 162
+2,58 163
+30,57 162
+2,58 162
+2,58 162
+473.0,1 164
+469.20,51 165
+24,51 165
+35,43 165
+45,50 165
+20,51 165
+20,51 166
+470.2,22 167
+10,15 167
+2,22 167
+2,22 167
+471.2,33 168
+13,16 168
+18,22 168
+24,32 168
+2,33 168
+2,33 168
+2,33 169
+2,33 170
+473.0,1 164
+477.1,11 171
+478.1,36 172
+13,16 172
+18,21 172
+23,35 172
+1,36 172
+1,36 172
+479.0,1 173
+490.1,27 174
+491.1,41 175
+17,28 175
+30,40 175
+1,41 175
+1,41 175
+492.1,38 176
+21,23 176
+25,28 176
+30,37 176
+1,38 176
+1,38 176
+493.14,17 177
+14,28 177
+1,28 177
+1,28 178
+494.0,1 179
+1:41.18,21 180
+23,26 180
+28,31 180
+33,36 180
+39,44 180
+46,47 180
+49,50 180
+53,54 180
+56,57 180
+59,60 180
+62,67 180
+69,70 180
+72,73 180
+0:499.1,14 181
+500.1,12 182
+501.1,12 183
+502.1,21 184
+503.5,22 185
+5,22 185
+504.2,26 186
+2,26 187
+506.2,27 188
+507.2,23 189
+509.1,14 190
+510.11,35 191
+11,35 191
+11,35 191
+1,35 191
+511.8,9 192
+1,9 192
+523.6,12 193
+18,27 194
+14,27 194
+524.6,14 195
+6,31 195
+525.10,11 196
+3,11 196
+523.29,32 197
+29,32 197
+526.8,10 198
+1,10 198
+531.6,12 199
+18,33 200
+14,33 200
+532.6,20 201
+6,32 201
+533.10,11 202
+3,11 202
+531.35,38 203
+35,38 203
+534.8,10 204
+1,10 204
+541.1,24 205
+542.1,45 206
+29,43 206
+29,43 206
+29,43 206
+35,37 206
+39,42 206
+29,43 206
+29,43 206
+29,43 206
+543.1,28 207
+11,22 207
+24,27 207
+1,28 207
+1,28 207
+544.1,11 208
+545.1,23 209
+7,20 209
+21,22 209
+1,23 209
+546.1,9 210
+1,9 210
+547.19,36 211
+19,36 211
+19,36 211
+548.24,59 212
+28,31 212
+32,50 212
+51,52 212
+53,58 212
+24,59 212
+24,59 212
+1,60 212
+1,5 212
+13,22 212
+13,22 212
+13,22 213
+13,22 214
+13,22 215
+13,22 216
+1,60 212
+1,60 212
+1,60 217
+549.24,47 218
+28,33 218
+34,39 218
+40,41 218
+42,46 218
+24,47 218
+24,47 218
+1,48 218
+1,5 218
+13,22 218
+13,22 218
+13,22 219
+13,22 220
+13,22 221
+13,22 222
+1,48 218
+1,48 218
+1,48 223
+550.24,53 224
+28,39 224
+40,45 224
+46,47 224
+48,52 224
+24,53 224
+24,53 224
+1,54 224
+1,5 224
+13,22 224
+13,22 224
+13,22 225
+13,22 226
+13,22 227
+13,22 228
+1,54 224
+1,54 224
+1,54 229
+551.24,53 230
+28,37 230
+38,43 230
+44,45 230
+46,52 230
+24,53 230
+24,53 230
+1,54 230
+1,5 230
+13,22 230
+13,22 230
+13,22 231
+13,22 232
+13,22 233
+13,22 234
+1,54 230
+1,54 230
+1,54 235
+552.24,49 236
+28,35 236
+36,41 236
+42,43 236
+44,48 236
+24,49 236
+24,49 236
+1,50 236
+1,5 236
+13,22 236
+13,22 236
+13,22 237
+13,22 238
+13,22 239
+13,22 240
+1,50 236
+1,50 236
+1,50 241
+553.24,49 242
+28,34 242
+35,40 242
+41,42 242
+43,48 242
+24,49 242
+24,49 242
+1,50 242
+1,5 242
+13,22 242
+13,22 242
+13,22 243
+13,22 244
+13,22 245
+13,22 246
+1,50 242
+1,50 242
+1,50 247
+554.24,51 248
+28,35 248
+36,41 248
+42,43 248
+44,50 248
+24,51 248
+24,51 248
+1,52 248
+1,5 248
+13,22 248
+13,22 248
+13,22 249
+13,22 250
+13,22 251
+13,22 252
+1,52 248
+1,52 248
+1,52 253
+555.24,63 254
+28,33 254
+34,52 254
+53,54 254
+55,62 254
+24,63 254
+24,63 254
+1,64 254
+1,5 254
+13,22 254
+13,22 254
+13,22 255
+13,22 256
+13,22 257
+13,22 258
+1,64 254
+1,64 254
+1,64 259
+556.24,67 260
+28,35 260
+36,54 260
+55,56 260
+57,66 260
+24,67 260
+24,67 260
+1,68 260
+1,5 260
+13,22 260
+13,22 260
+13,22 261
+13,22 262
+13,22 263
+13,22 264
+1,68 260
+1,68 260
+1,68 265
+557.6,12 266
+18,36 267
+14,36 267
+558.15,43 268
+25,42 268
+25,42 268
+15,43 268
+15,43 268
+559.6,13 269
+560.3,33 270
+566.3,31 271
+3,7 271
+15,24 271
+26,30 271
+3,31 271
+3,31 271
+3,31 272
+567.3,21 273
+3,21 274
+3,21 275
+3,21 276
+3,21 277
+3,21 278
+3,21 279
+3,21 280
+3,21 281
+557.38,41 282
+38,41 282
+571.1,31 283
+28,30 283
+1,31 283
+1,31 283
+573.34,55 284
+48,54 284
+34,55 284
+34,55 284
+16,67 284
+31,33 284
+31,33 284
+31,33 285
+57,66 284
+16,67 284
+16,67 284
+2,7 284
+9,12 284
+9,12 286
+9,12 287
+574.1,9 288
+577.1,9 289
+579.1,15 290
+580.1,17 291
+12,16 291
+1,17 291
+582.1,28 292
+7,25 292
+26,27 292
+1,28 292
+583.1,25 293
+584.1,27 294
+17,26 294
+1,27 294
+585.1,24 295
+586.1,13 296
+587.1,13 297
+588.1,14 298
+590.2,23 299
+2,23 299
+2,23 299
+591.6,17 300
+19,30 301
+592.6,13 302
+593.3,14 303
+594.3,12 304
+3,12 305
+597.3,14 306
+599.4,31 307
+9,18 307
+23,30 307
+4,31 307
+4,31 307
+600.8,17 308
+601.5,10 309
+603.11,16 310
+11,16 310
+605.11,20 310
+11,20 310
+602.4,10 310
+4,10 310
+4,10 310
+4,10 310
+604.5,10 311
+607.6,22 312
+6,22 312
+6,22 312
+608.6,27 313
+6,27 313
+6,27 313
+610.10,15 314
+611.7,30 315
+612.7,43 316
+24,29 316
+30,33 316
+34,42 316
+7,43 316
+613.7,20 317
+17,19 317
+7,20 317
+7,20 317
+614.7,21 318
+7,21 319
+7,21 320
+7,21 321
+617.7,12 322
+7,12 323
+7,12 323
+622.2,13 324
+623.2,13 325
+624.6,15 326
+625.3,27 327
+14,26 327
+3,27 327
+3,27 327
+626.3,8 328
+628.47,56 329
+47,49 329
+47,56 329
+47,56 329
+8,65 329
+20,45 329
+20,45 329
+20,45 330
+58,64 329
+8,65 329
+8,65 329
+2,68 329
+2,68 329
+2,68 331
+66,67 329
+2,68 329
+631.7,16 332
+632.3,67 333
+3,6 333
+13,66 333
+17,66 333
+28,34 333
+36,65 333
+13,66 333
+13,66 334
+3,67 333
+3,67 333
+633.3,46 335
+9,43 335
+44,45 335
+3,46 335
+3,46 336
+635.12,19 337
+12,19 337
+637.9,64 338
+22,54 338
+56,63 338
+9,64 338
+9,64 338
+3,67 338
+3,67 338
+3,67 339
+65,66 338
+3,67 338
+638.3,8 340
+640.3,20 341
+17,19 341
+3,20 341
+3,20 341
+641.7,15 342
+642.4,53 343
+4,7 343
+14,52 343
+18,52 343
+29,34 343
+36,51 343
+14,52 343
+14,52 344
+4,53 343
+4,53 343
+4,53 345
+643.4,9 346
+645.3,22 347
+646.3,17 348
+3,6 348
+15,16 348
+3,17 348
+647.19,34 349
+3,52 349
+648.8,14 350
+20,30 351
+16,30 351
+649.4,13 352
+16,30 352
+4,30 352
+648.32,35 353
+32,35 353
+650.21,26 354
+28,34 354
+3,12 354
+3,35 354
+3,35 355
+651.3,37 356
+24,33 356
+9,33 356
+9,33 357
+35,36 356
+3,37 356
+3,37 358
+3,37 337
+653.3,23 359
+17,22 359
+3,23 359
+3,23 359
+654.7,15 360
+655.22,24 361
+26,29 361
+4,13 361
+4,30 361
+4,30 362
+656.4,40 363
+27,36 363
+10,36 363
+10,36 364
+38,39 363
+4,40 363
+658.7,23 365
+660.4,16 366
+662.3,18 367
+3,6 367
+15,17 367
+3,18 367
+3,18 337
+664.3,29 368
+9,26 368
+27,28 368
+3,29 368
+665.3,25 369
+8,11 369
+19,24 369
+3,25 369
+3,25 369
+666.7,15 370
+667.4,36 371
+10,33 371
+34,35 371
+4,36 371
+668.4,45 372
+4,7 372
+14,44 372
+18,44 372
+29,34 372
+36,43 372
+14,44 372
+14,44 373
+4,45 372
+4,45 372
+4,45 374
+669.4,9 375
+671.3,31 376
+20,30 376
+3,31 376
+3,31 376
+672.7,21 377
+673.4,58 378
+4,7 378
+14,57 378
+18,57 378
+29,34 378
+36,56 378
+14,57 378
+14,57 379
+4,58 378
+4,58 378
+4,58 380
+674.4,9 381
+677.9,15 382
+17,30 383
+678.19,30 384
+9,15 384
+9,39 384
+679.6,36 385
+12,33 385
+34,35 385
+6,36 385
+680.10,36 386
+21,32 386
+21,35 386
+10,36 386
+10,36 386
+10,41 386
+681.12,17 387
+682.8,62 388
+8,11 388
+18,61 388
+22,61 388
+33,38 388
+40,60 388
+18,61 388
+18,61 389
+8,62 388
+8,62 388
+683.7,12 390
+686.6,19 391
+6,9 391
+17,18 391
+6,19 391
+687.10,25 392
+10,25 392
+10,25 392
+10,30 392
+688.7,60 393
+7,10 393
+17,59 393
+21,59 393
+32,37 393
+39,58 393
+17,59 393
+17,59 394
+7,60 393
+7,60 393
+7,60 395
+690.7,23 396
+18,22 396
+7,23 396
+691.7,40 397
+7,10 397
+17,39 397
+21,39 397
+33,38 397
+17,39 397
+17,39 398
+7,40 397
+7,40 397
+693.6,11 399
+677.32,35 400
+32,35 400
+32,35 401
+32,35 337
+698.3,45 402
+9,42 402
+43,44 402
+3,45 402
+699.12,26 403
+12,15 403
+24,25 403
+12,26 403
+12,26 403
+700.6,14 404
+6,14 405
+6,14 406
+6,14 407
+6,14 408
+701.4,9 409
+702.7,27 410
+7,27 410
+703.4,34 411
+10,31 411
+32,33 411
+4,34 411
+704.4,15 412
+4,7 412
+13,14 412
+4,15 412
+4,15 412
+4,15 413
+4,15 414
+4,15 415
+4,15 416
+4,15 417
+705.4,9 418
+708.8,27 419
+16,26 419
+8,27 419
+8,27 419
+8,27 419
+8,27 419
+8,27 419
+8,27 419
+710.22,66 420
+36,46 420
+48,56 420
+58,65 420
+22,66 420
+22,66 420
+711.8,18 421
+22,39 421
+712.5,26 422
+713.5,29 423
+5,9 423
+16,22 423
+24,28 423
+5,29 423
+5,29 423
+5,29 424
+715.4,44 425
+4,7 425
+14,43 425
+18,43 425
+28,33 425
+35,42 425
+14,43 425
+14,43 426
+4,44 425
+4,44 425
+4,44 427
+4,44 428
+4,44 429
+4,44 419
+717.4,38 430
+10,35 430
+36,37 430
+4,38 430
+718.25,41 431
+25,41 431
+25,41 431
+4,41 431
+4,41 432
+719.9,14 433
+26,57 434
+49,50 434
+52,56 434
+26,57 434
+26,57 434
+16,58 434
+16,19 434
+16,19 434
+16,19 435
+16,58 434
+16,58 434
+16,58 419
+722.4,33 436
+10,30 436
+31,32 436
+4,33 436
+723.25,36 437
+25,36 437
+25,36 437
+4,36 437
+4,36 438
+724.9,14 439
+725.15,46 440
+38,39 440
+41,45 440
+15,46 440
+15,46 440
+5,47 440
+5,8 440
+5,8 440
+5,8 441
+5,47 440
+5,47 440
+5,47 419
+728.25,50 442
+25,50 442
+25,50 442
+4,50 442
+4,50 443
+729.9,14 444
+730.15,46 445
+38,39 445
+41,45 445
+15,46 445
+15,46 445
+5,47 445
+5,8 445
+5,8 445
+5,8 446
+5,47 445
+5,47 445
+5,47 419
+734.8,21 447
+25,41 447
+735.5,22 448
+5,14 448
+20,21 448
+5,22 448
+5,22 448
+738.5,10 449
+740.4,19 450
+741.4,39 451
+22,28 451
+30,31 451
+32,36 451
+37,38 451
+4,39 451
+4,39 451
+742.9,14 452
+743.5,42 453
+5,8 453
+15,41 453
+19,41 453
+29,34 453
+36,40 453
+15,41 453
+15,41 454
+5,42 453
+5,42 453
+5,42 419
+746.8,21 455
+25,41 455
+748.5,22 456
+5,14 456
+20,21 456
+5,22 456
+5,22 456
+749.5,10 457
+751.4,19 458
+753.4,39 459
+22,28 459
+30,31 459
+32,36 459
+37,38 459
+4,39 459
+4,39 459
+754.9,14 460
+755.5,42 461
+5,8 461
+15,41 461
+19,41 461
+29,34 461
+36,40 461
+15,41 461
+15,41 462
+5,42 461
+5,42 461
+5,42 419
+758.8,26 463
+28,82 464
+28,31 464
+38,81 464
+42,81 464
+53,58 464
+60,80 464
+38,81 464
+38,81 465
+28,82 464
+28,82 464
+28,82 466
+760.26,69 467
+43,55 467
+56,68 467
+26,69 467
+26,69 467
+5,69 467
+5,69 468
+761.10,15 469
+762.6,43 470
+6,9 470
+16,42 470
+20,42 470
+30,35 470
+37,41 470
+16,42 470
+16,42 471
+6,43 470
+6,43 470
+6,43 419
+766.25,45 472
+25,45 472
+25,45 472
+4,45 472
+4,45 473
+767.9,14 474
+768.9,17 475
+9,22 475
+769.6,71 476
+6,9 476
+16,70 476
+20,70 476
+31,36 476
+38,69 476
+16,70 476
+16,70 477
+6,71 476
+6,71 476
+6,71 478
+771.16,47 479
+39,40 479
+42,46 479
+16,47 479
+16,47 479
+6,48 479
+6,9 479
+6,9 479
+6,9 480
+6,48 479
+6,48 479
+6,48 419
+774.4,56 481
+4,7 481
+14,55 481
+18,55 481
+29,34 481
+36,54 481
+14,55 481
+14,55 482
+4,56 481
+4,56 481
+4,56 419
+4,56 483
+4,56 484
+4,56 485
+4,56 486
+4,56 337
+779.3,46 487
+9,43 487
+44,45 487
+3,46 487
+781.12,27 488
+12,15 488
+25,26 488
+12,27 488
+12,27 488
+782.6,14 489
+783.4,37 490
+10,34 490
+35,36 490
+4,37 490
+4,37 491
+4,37 492
+4,37 493
+4,37 494
+784.4,9 495
+786.3,31 496
+20,30 496
+3,31 496
+3,31 496
+787.13,50 497
+27,40 497
+42,49 497
+13,50 497
+13,50 497
+788.7,22 498
+789.8,32 499
+18,31 499
+8,32 499
+8,32 499
+8,37 499
+790.5,791.40 500
+790.5,8 500
+15,791.39 500
+790.19,791.39 500
+790.30,35 500
+37,791.38 500
+790.15,791.39 500
+790.15,791.39 501
+790.5,791.40 500
+790.5,791.40 500
+790.5,791.40 502
+792.9,53 503
+9,12 503
+19,52 503
+23,52 503
+34,39 503
+41,51 503
+19,52 503
+19,52 504
+9,53 503
+9,53 503
+9,53 505
+795.12,26 506
+796.4,13 507
+797.9,13 508
+9,13 508
+803.9,24 509
+9,24 509
+9,24 509
+9,29 509
+804.6,47 510
+6,47 511
+806.6,22 512
+17,21 512
+6,22 512
+6,22 508
+810.5,22 513
+811.11,51 514
+23,47 514
+48,50 514
+11,51 514
+11,51 514
+5,54 514
+5,54 514
+5,54 515
+52,53 514
+5,54 514
+812.10,16 516
+22,37 517
+18,37 517
+816.34,48 518
+34,51 518
+10,19 518
+10,27 518
+10,51 518
+817.7,67 519
+24,33 519
+24,41 519
+24,44 519
+46,55 519
+46,63 519
+46,66 519
+7,67 519
+7,67 519
+7,67 520
+818.7,22 521
+18,21 521
+7,22 521
+7,22 521
+812.39,42 522
+39,42 522
+821.5,20 523
+5,20 523
+5,20 523
+822.9,17 524
+823.6,44 525
+824.6,11 526
+826.9,16 527
+827.22,37 528
+6,37 528
+828.6,11 529
+830.5,21 530
+16,20 530
+5,21 530
+5,21 530
+831.9,24 531
+9,24 531
+9,24 531
+9,29 531
+832.6,47 532
+833.6,11 533
+835.5,21 534
+16,20 534
+5,21 534
+5,21 508
+837.9,15 535
+838.6,25 536
+20,24 536
+6,25 536
+6,25 536
+839.10,18 537
+840.38,42 538
+13,42 538
+7,46 538
+7,46 539
+7,46 540
+842.7,48 541
+30,34 541
+43,47 541
+40,47 541
+36,47 541
+36,47 542
+7,48 541
+7,48 541
+843.11,20 543
+844.8,15 544
+8,15 545
+846.14,25 546
+8,26 546
+8,35 546
+48,52 546
+45,52 546
+8,52 546
+8,52 547
+8,52 548
+8,52 508
+852.9,14 549
+853.9,18 550
+854.6,23 551
+12,20 551
+21,22 551
+6,23 551
+855.6,43 552
+6,9 552
+16,42 552
+20,42 552
+31,36 552
+38,41 552
+16,42 552
+16,42 553
+6,43 552
+6,43 552
+6,43 554
+857.10,54 555
+10,13 555
+20,53 555
+24,53 555
+35,40 555
+42,52 555
+20,53 555
+20,53 556
+10,54 555
+10,54 555
+10,54 557
+10,54 558
+860.12,28 559
+861.8,16 560
+862.5,24 561
+863.4,48 562
+4,7 562
+14,47 562
+18,47 562
+29,34 562
+36,46 562
+14,47 562
+14,47 563
+4,48 562
+4,48 562
+4,48 564
+865.8,67 565
+8,11 565
+18,66 565
+22,66 565
+33,38 565
+40,65 565
+18,66 565
+18,66 566
+8,67 565
+8,67 565
+8,67 567
+8,67 568
+8,67 569
+8,67 570
+8,67 571
+8,67 337
+867.3,46 572
+9,43 572
+44,45 572
+3,46 572
+868.3,51 573
+3,6 573
+13,50 573
+17,50 573
+28,33 573
+35,49 573
+13,50 573
+13,50 574
+3,51 573
+3,51 573
+3,51 337
+870.3,18 575
+3,6 575
+15,17 575
+3,18 575
+3,18 337
+872.6,11 576
+873.3,14 577
+874.3,21 578
+19,20 578
+3,21 578
+3,21 578
+875.8,10 579
+876.4,68 580
+4,7 580
+14,67 580
+18,67 580
+29,35 580
+37,66 580
+14,67 580
+14,67 581
+4,68 580
+4,68 580
+877.4,27 582
+878.4,40 583
+21,26 583
+27,30 583
+31,39 583
+4,40 583
+879.4,17 584
+14,16 584
+4,17 584
+4,17 584
+880.4,18 585
+881.4,15 586
+882.4,19 587
+15,18 587
+4,19 587
+4,19 587
+4,19 588
+4,19 588
+886.1,12 589
+1,5 589
+1,12 589
+887.1,15 590
+6,14 590
+1,15 590
+888.1,12 591
+7,11 591
+1,12 591
+889.0,1 592
+902.1,12 593
+903.1,10 594
+904.1,13 595
+905.1,32 596
+906.8,13 597
+8,13 597
+8,13 597
+8,13 598
+1,13 597
+911.17,24 599
+5,13 599
+5,24 599
+912.9,11 600
+2,11 600
+913.1,11 601
+1,18 601
+914.1,8 602
+915.14,21 603
+5,10 603
+5,21 603
+916.2,11 604
+917.1,11 605
+918.8,9 606
+1,9 606
+923.5,18 607
+924.9,12 608
+2,12 608
+925.6,18 609
+1,18 609
+926.5,18 610
+22,38 610
+927.9,12 611
+2,12 611
+928.1,10 612
+929.16,23 613
+5,12 613
+5,23 613
+930.2,13 614
+931.1,11 615
+932.8,9 616
+1,9 616
+938.10,18 617
+10,18 617
+940.11,16 617
+11,16 617
+937.10,16 617
+10,16 617
+10,16 617
+10,16 617
+939.3,9 618
+941.3,43 619
+9,40 619
+41,42 619
+3,43 619
+942.3,67 620
+3,6 620
+13,66 620
+17,66 620
+28,34 620
+36,65 620
+13,66 620
+13,66 621
+3,67 620
+3,67 620
+943.3,18 622
+14,17 622
+3,18 622
+3,18 622
+3,18 623
+3,18 617
+949.1,15 624
+952.6,12 625
+14,27 626
+954.7,14 627
+25,36 627
+18,45 627
+955.3,15 628
+956.3,8 629
+958.11,18 630
+33,44 630
+33,56 630
+22,29 630
+22,56 630
+959.3,15 631
+960.3,8 632
+952.29,32 633
+29,32 633
+963.5,26 634
+30,42 634
+964.8,83 635
+21,62 635
+64,72 635
+73,82 635
+8,83 635
+8,83 635
+2,86 635
+2,86 635
+2,86 636
+84,85 635
+2,86 635
+965.9,12 637
+2,12 637
+967.1,23 638
+968.12,30 639
+1,41 639
+969.12,30 640
+1,44 640
+970.6,12 641
+14,19 642
+971.6,18 643
+972.3,26 644
+17,25 644
+3,26 644
+3,26 644
+973.9,49 645
+21,40 645
+41,48 645
+9,49 645
+9,49 645
+3,52 645
+3,52 645
+3,52 646
+50,51 645
+3,52 645
+974.13,31 647
+3,45 647
+975.9,36 648
+21,27 648
+28,35 648
+9,36 648
+9,36 648
+3,39 648
+3,39 648
+3,39 649
+37,38 648
+3,39 648
+977.22,58 650
+28,46 650
+28,57 650
+22,58 650
+22,58 650
+9,59 650
+9,59 650
+9,59 651
+9,59 650
+9,59 650
+5,980.13 650
+977.5,980.13 650
+977.5,980.13 652
+978.5,10 650
+979.5,12 650
+980.5,12 650
+977.5,980.13 650
+977.5,980.13 650
+976.3,980.14 650
+976.3,7 650
+14,17 650
+14,17 650
+14,17 653
+14,17 654
+14,17 655
+14,17 656
+3,980.14 650
+976.3,980.14 650
+976.3,980.14 657
+981.3,19 658
+14,18 658
+3,19 658
+3,19 658
+3,19 659
+970.21,24 660
+21,24 660
+985.5,17 661
+22,29 661
+38,41 662
+31,41 662
+986.5,12 663
+24,42 664
+14,57 664
+987.5,13 665
+17,44 665
+27,34 665
+36,43 665
+17,44 665
+17,44 665
+17,55 665
+989.2,14 666
+990.2,40 667
+24,31 667
+32,39 667
+2,40 667
+2,40 667
+991.6,24 668
+33,36 669
+26,36 669
+992.6,20 670
+6,32 670
+34,55 671
+993.2,25 672
+994.18,44 673
+28,35 673
+36,43 673
+18,44 673
+18,44 673
+2,57 673
+2,57 673
+2,57 674
+46,56 673
+2,57 673
+2,57 673
+995.6,15 675
+17,42 676
+26,33 676
+34,41 676
+17,42 676
+17,42 677
+997.3,40 678
+13,15 678
+16,24 678
+25,39 678
+3,40 678
+3,40 678
+998.3,30 679
+13,15 679
+16,20 679
+21,29 679
+3,30 679
+3,30 679
+999.3,11 680
+1000.10,14 681
+3,14 681
+3,14 682
+1005.5,24 683
+28,47 683
+51,72 683
+1006.2,16 684
+2,16 685
+1007.10,17 686
+1008.2,44 687
+18,26 687
+28,34 687
+36,43 687
+2,44 687
+2,44 687
+2,44 688
+1009.11,18 689
+1010.2,47 690
+21,29 690
+31,37 690
+39,46 690
+2,47 690
+2,47 690
+1011.5,13 691
+16,23 691
+5,23 691
+1012.2,20 692
+1013.2,30 693
+1014.18,26 694
+18,36 694
+2,45 694
+1015.29,37 695
+16,20 695
+16,38 695
+2,38 695
+2,38 696
+1016.2,22 697
+1017.15,22 698
+2,23 698
+1019.5,13 699
+1021.2,37 700
+21,28 700
+29,36 700
+2,37 700
+2,37 700
+1023.6,17 701
+1024.3,44 702
+20,25 702
+26,37 702
+38,43 702
+3,44 702
+3,44 702
+3,44 703
+1026.3,36 704
+18,23 704
+24,35 704
+3,36 704
+3,36 704
+1027.7,16 705
+1028.4,36 706
+14,16 706
+17,22 706
+23,35 706
+4,36 706
+4,36 706
+1030.6,15 707
+1031.3,35 708
+18,20 708
+21,25 708
+26,34 708
+3,35 708
+3,35 708
+1032.3,11 709
+1034.14,30 710
+24,29 710
+14,30 710
+14,30 710
+3,4 710
+6,9 710
+6,9 711
+6,9 712
+6,9 713
+6,9 714
+1035.6,12 715
+1036.3,43 716
+12,19 716
+20,27 716
+28,42 716
+3,43 716
+3,43 717
+3,43 718
+3,43 719
+3,43 720
+3,43 721
+3,43 722
+1039.8,12 723
+1,12 723
+1058.1,10 724
+1059.8,24 725
+1060.19,31 726
+1061.7,13 727
+15,28 728
+1062.14,25 729
+3,39 729
+1063.7,9 730
+21,32 731
+11,47 731
+1064.7,36 732
+13,24 732
+13,35 732
+7,36 732
+7,36 732
+7,45 732
+7,45 733
+49,62 732
+1065.10,23 734
+4,30 734
+4,30 735
+1066.4,9 736
+1061.30,33 737
+30,33 737
+1069.2,26 738
+2,26 739
+2,26 739
+1071.1,16 740
+1072.0,1 741
+1076.1,27 742
+18,26 742
+1,27 742
+1,27 742
+1078.1,10 743
+1079.1,13 744
+1080.8,24 745
+1081.19,31 746
+1082.6,22 747
+26,39 747
+1083.3,14 748
+1084.10,15 749
+16,18 749
+19,26 749
+3,34 749
+3,34 750
+3,34 751
+1087.9,22 752
+3,29 752
+3,29 753
+1088.2,26 754
+2,26 755
+2,26 755
+1090.5,17 756
+1091.9,16 757
+17,24 757
+25,32 757
+2,40 757
+2,40 758
+1092.1,16 759
+1093.0,1 760
+1098.1,27 761
+18,26 761
+1,27 761
+1,27 761
+1100.1,10 762
+1101.8,24 763
+1102.24,36 764
+1103.6,22 765
+26,39 765
+1104.9,27 766
+3,34 766
+3,34 767
+1105.2,26 768
+2,26 769
+2,26 769
+1107.1,16 770
+1108.0,1 771
+1112.1,27 772
+18,26 772
+1,27 772
+1,27 772
+1113.1,17 773
+1114.8,18 774
+1115.24,30 775
+1116.6,22 776
+26,39 776
+48,55 777
+41,55 777
+1117.2,14 778
+2,14 779
+2,14 779
+1119.8,10 780
+1,10 780
+1124.32,46 781
+38,45 781
+32,46 781
+32,46 781
+19,47 781
+19,47 781
+19,47 782
+19,47 781
+19,47 781
+1,47 781
+1,47 783
+1125.5,12 784
+14,34 785
+29,33 785
+14,34 785
+14,34 785
+1126.6,14 786
+6,18 786
+1,25 786
+1127.8,12 787
+1,12 787
+1132.1,27 788
+7,24 788
+25,26 788
+1,27 788
+1133.1,28 789
+9,13 789
+15,18 789
+20,27 789
+1,28 789
+1,28 789
+1135.5,42 790
+15,19 790
+21,24 790
+26,33 790
+34,41 790
+5,42 790
+5,42 790
+5,46 790
+1136.3,66 791
+9,63 791
+64,65 791
+3,66 791
+1137.10,12 792
+3,12 792
+1139.8,9 793
+1,9 793
+1145.1,23 794
+1148.1,7 795
+44,57 795
+15,58 795
+1,58 795
+1149.1,7 796
+15,31 796
+1,31 796
+1151.5,20 797
+5,20 797
+5,20 797
+5,25 797
+1152.9,11 798
+2,11 798
+1154.1,7 799
+1,16 799
+1156.1,45 800
+23,27 800
+29,34 800
+36,44 800
+1,45 800
+1,45 800
+1157.5,27 801
+1158.9,11 802
+2,11 802
+1159.8,9 803
+1,9 803
+1164.1,6 804
+1165.1,18 805
+1166.1,18 806
+1168.1,22 807
+14,16 807
+17,21 807
+1,22 807
+1169.1,14 808
+1170.1,24 809
+21,23 809
+1,24 809
+1171.1,14 810
+1173.1,9 811
+1175.5,7 812
+5,7 812
+1180.9,11 812
+9,11 812
+1174.1,7 812
+1,7 812
+1,7 812
+1,7 812
+1176.3,13 813
+8,12 813
+3,13 813
+1177.3,36 814
+9,33 814
+34,35 814
+3,36 814
+1178.3,9 815
+1179.3,8 816
+1181.3,13 817
+8,12 817
+3,13 817
+1182.3,8 818
+1184.8,9 819
+1,9 819
+1189.1,28 820
+7,25 820
+26,27 820
+1,28 820
+1190.9,26 821
+19,20 821
+22,25 821
+9,26 821
+9,26 821
+1,26 821
+1191.5,18 822
+5,18 822
+5,18 822
+5,23 822
+1192.2,11 823
+1193.2,8 824
+1195.1,7 825
+1,16 825
+1196.1,7 826
+1,16 826
+1197.1,36 827
+23,27 827
+29,32 827
+34,35 827
+1,36 827
+1,36 827
+1198.5,20 828
+1199.2,11 829
+1200.2,8 830
+1202.1,9 831
+1203.1,21 832
+7,18 832
+19,20 832
+1,21 832
+1204.0,1 833
+1218.5,16 834
+25,28 835
+18,28 835
+1219.1,31 836
+7,28 836
+29,30 836
+1,31 836
+1222.9,27 837
+1,30 837
+1223.1,18 838
+1224.5,15 839
+1225.2,29 840
+1226.6,24 841
+33,36 842
+26,36 842
+1229.8,65 843
+20,47 843
+48,56 843
+58,64 843
+8,65 843
+8,65 843
+2,68 843
+2,68 843
+2,68 844
+66,67 843
+2,68 843
+1230.6,24 845
+6,35 845
+1231.3,32 846
+1232.2,16 847
+1234.2,31 848
+1235.2,42 849
+32,37 849
+39,41 849
+2,42 849
+2,42 849
+1236.2,23 850
+1237.2,47 851
+16,27 851
+16,21 851
+16,27 851
+29,41 851
+43,46 851
+2,47 851
+2,47 851
+1238.2,52 852
+20,31 852
+20,25 852
+20,31 852
+33,46 852
+48,51 852
+2,52 852
+2,52 852
+1239.2,51 853
+20,31 853
+20,25 853
+20,31 853
+33,45 853
+47,50 853
+2,51 853
+2,51 853
+1240.2,36 854
+16,27 854
+16,21 854
+16,27 854
+29,30 854
+32,35 854
+2,36 854
+2,36 854
+1242.2,41 855
+16,27 855
+16,21 855
+16,27 855
+29,35 855
+37,40 855
+2,41 855
+2,41 855
+1243.2,36 856
+16,27 856
+16,21 856
+16,27 856
+29,30 856
+32,35 856
+2,36 856
+2,36 856
+1244.2,43 857
+16,27 857
+16,21 857
+16,27 857
+29,37 857
+39,42 857
+2,43 857
+2,43 857
+1246.8,76 858
+21,46 858
+48,54 858
+56,65 858
+67,75 858
+8,76 858
+8,76 858
+2,79 858
+2,79 858
+2,79 859
+77,78 858
+2,79 858
+1247.2,16 860
+2,16 860
+2,16 860
+1249.6,31 861
+6,31 861
+6,31 861
+6,31 861
+6,36 861
+1250.9,39 862
+21,33 862
+35,38 862
+9,39 862
+9,39 862
+3,42 862
+3,42 862
+3,42 863
+40,41 862
+3,42 862
+1251.10,13 864
+3,13 864
+1253.2,22 865
+1254.8,52 866
+21,39 866
+41,51 866
+8,52 866
+8,52 866
+2,55 866
+2,55 866
+2,55 867
+53,54 866
+2,55 866
+1256.21,46 868
+29,40 868
+29,34 868
+29,40 868
+21,46 868
+21,46 868
+21,46 868
+3,12 868
+14,17 868
+1257.13,38 869
+21,32 869
+21,26 869
+21,32 869
+13,38 869
+13,38 869
+13,38 869
+3,4 869
+6,9 869
+1258.20,45 870
+28,39 870
+28,33 870
+28,39 870
+20,45 870
+20,45 870
+20,45 870
+3,11 870
+13,16 870
+1259.8,78 871
+21,56 871
+58,64 871
+66,67 871
+69,77 871
+8,78 871
+8,78 871
+2,81 871
+2,81 871
+2,81 872
+79,80 871
+2,81 871
+1261.6,17 873
+1262.21,51 874
+39,44 874
+29,34 874
+29,45 874
+21,51 874
+21,51 874
+21,51 874
+4,12 874
+14,17 874
+1263.14,44 875
+32,37 875
+22,27 875
+22,38 875
+14,44 875
+14,44 875
+14,44 875
+4,5 875
+7,10 875
+1264.14,44 876
+32,37 876
+22,27 876
+22,38 876
+14,44 876
+14,44 876
+14,44 876
+4,5 876
+7,10 876
+1265.18,48 877
+36,41 877
+26,31 877
+26,42 877
+18,48 877
+18,48 877
+18,48 877
+4,9 877
+11,14 877
+1266.3,21 878
+3,47 878
+1267.3,38 879
+1268.9,76 880
+21,56 880
+57,58 880
+59,60 880
+61,69 880
+70,75 880
+9,76 880
+9,76 880
+3,79 880
+3,79 880
+3,79 881
+77,78 880
+3,79 880
+1270.6,16 882
+6,27 882
+29,50 883
+1271.8,53 884
+21,49 884
+51,52 884
+8,53 884
+8,53 884
+2,56 884
+2,56 884
+2,56 885
+54,55 884
+2,56 884
+1272.33,38 886
+23,28 886
+23,39 886
+2,39 886
+2,39 887
+1273.2,13 888
+1274.6,24 889
+26,31 890
+1276.8,32 891
+18,27 891
+28,29 891
+30,31 891
+8,32 891
+8,32 891
+1,32 891
+1281.9,27 892
+1,30 892
+1282.1,32 893
+1283.1,27 894
+7,24 894
+25,26 894
+1,27 894
+1284.7,64 895
+19,46 895
+47,55 895
+57,63 895
+7,64 895
+7,64 895
+1,67 895
+1,67 895
+1,67 896
+65,66 895
+1,67 895
+1285.5,23 897
+32,35 898
+25,35 898
+1286.5,23 899
+5,34 899
+1287.2,31 900
+1288.1,15 901
+1289.1,30 902
+1290.1,41 903
+31,36 903
+38,40 903
+1,41 903
+1,41 903
+1291.1,22 904
+1292.1,46 905
+15,26 905
+15,20 905
+15,26 905
+28,40 905
+42,45 905
+1,46 905
+1,46 905
+1293.1,51 906
+19,30 906
+19,24 906
+19,30 906
+32,45 906
+47,50 906
+1,51 906
+1,51 906
+1294.1,50 907
+19,30 907
+19,24 907
+19,30 907
+32,44 907
+46,49 907
+1,50 907
+1,50 907
+1295.1,35 908
+15,26 908
+15,20 908
+15,26 908
+28,29 908
+31,34 908
+1,35 908
+1,35 908
+1297.1,40 909
+15,26 909
+15,20 909
+15,26 909
+28,34 909
+36,39 909
+1,40 909
+1,40 909
+1298.1,35 910
+15,26 910
+15,20 910
+15,26 910
+28,29 910
+31,34 910
+1,35 910
+1,35 910
+1299.1,42 911
+15,26 911
+15,20 911
+15,26 911
+28,36 911
+38,41 911
+1,42 911
+1,42 911
+1301.7,74 912
+20,44 912
+46,52 912
+54,63 912
+65,73 912
+7,74 912
+7,74 912
+1,77 912
+1,77 912
+1,77 913
+75,76 912
+1,77 912
+1302.1,15 914
+1,15 914
+1,15 914
+1303.5,31 915
+5,31 915
+5,31 915
+5,31 915
+5,36 915
+1304.8,38 916
+20,32 916
+34,37 916
+8,38 916
+8,38 916
+2,41 916
+2,41 916
+2,41 917
+39,40 916
+2,41 916
+1305.9,12 918
+2,12 918
+1307.1,21 919
+1308.7,51 920
+20,38 920
+40,50 920
+7,51 920
+7,51 920
+1,54 920
+1,54 920
+1,54 921
+52,53 920
+1,54 920
+1309.17,42 922
+25,36 922
+25,30 922
+25,36 922
+17,42 922
+17,42 922
+17,42 922
+2,8 922
+10,13 922
+1310.12,37 923
+20,31 923
+20,25 923
+20,31 923
+12,37 923
+12,37 923
+12,37 923
+2,3 923
+5,8 923
+1311.19,44 924
+27,38 924
+27,32 924
+27,38 924
+19,44 924
+19,44 924
+19,44 924
+2,10 924
+12,15 924
+1312.7,84 925
+20,54 925
+56,62 925
+64,73 925
+75,83 925
+7,84 925
+7,84 925
+1,87 925
+1,87 925
+1,87 926
+85,86 925
+1,87 925
+1313.1,29 927
+1314.26,31 928
+16,21 928
+16,32 928
+1,32 928
+1,32 929
+1315.8,16 930
+1,16 930
+1320.1,27 931
+1321.1,41 932
+31,36 932
+38,40 932
+1,41 932
+1,41 932
+1323.1,22 933
+1324.1,46 934
+15,26 934
+15,20 934
+15,26 934
+28,40 934
+42,45 934
+1,46 934
+1,46 934
+1325.1,51 935
+19,30 935
+19,24 935
+19,30 935
+32,45 935
+47,50 935
+1,51 935
+1,51 935
+1326.1,50 936
+19,30 936
+19,24 936
+19,30 936
+32,44 936
+46,49 936
+1,50 936
+1,50 936
+1327.1,15 937
+1,15 937
+1,15 937
+1329.5,22 938
+5,22 938
+5,22 938
+5,27 938
+1330.9,11 939
+2,11 939
+1331.8,9 940
+1,9 940
+1344.1,8 941
+1346.1,35 942
+1347.1,40 943
+31,36 943
+38,39 943
+1,40 943
+1,40 943
+1348.1,15 944
+1,15 944
+1,15 944
+1350.5,22 945
+5,22 945
+5,22 945
+5,27 945
+36,38 946
+29,38 946
+1351.1,22 947
+1353.16,41 948
+24,35 948
+24,29 948
+24,35 948
+16,41 948
+16,41 948
+16,41 948
+2,7 948
+9,12 948
+1354.20,45 949
+28,39 949
+28,33 949
+28,39 949
+20,45 949
+20,45 949
+20,45 949
+2,11 949
+13,16 949
+1355.14,39 950
+22,33 950
+22,27 950
+22,33 950
+14,39 950
+14,39 950
+14,39 950
+2,5 950
+7,10 950
+1356.6,77 951
+18,60 951
+61,66 951
+67,76 951
+6,77 951
+6,77 951
+1,77 951
+1,77 952
+1357.5,14 953
+1358.2,11 954
+2,11 955
+1360.7,55 956
+19,50 956
+51,54 956
+7,55 956
+7,55 956
+2,55 956
+2,55 957
+1362.8,9 958
+1,9 958
+1369.1,31 959
+1370.1,40 960
+31,36 960
+38,39 960
+1,40 960
+1,40 960
+1371.1,15 961
+1,15 961
+1,15 961
+1373.5,22 962
+5,22 962
+5,22 962
+5,27 962
+36,63 963
+29,63 963
+1374.1,22 964
+1375.15,40 965
+23,34 965
+23,28 965
+23,34 965
+15,40 965
+15,40 965
+15,40 965
+2,6 965
+8,11 965
+1376.8,46 966
+20,39 966
+41,45 966
+8,46 966
+8,46 966
+1,46 966
+1381.1,9 967
+1382.5,12 968
+1383.23,37 969
+23,37 969
+23,37 969
+2,38 969
+2,38 969
+2,38 969
+2,38 969
+1384.2,23 970
+1385.2,25 971
+2,34 971
+1386.2,25 972
+33,50 972
+41,49 972
+33,50 972
+33,50 972
+2,50 972
+1387.2,25 973
+33,49 973
+41,48 973
+33,49 973
+33,49 973
+2,49 973
+1388.2,25 974
+33,49 974
+41,48 974
+33,49 974
+33,49 974
+2,49 974
+1389.2,25 975
+2,34 975
+1390.2,25 976
+33,49 976
+41,48 976
+33,49 976
+33,49 976
+2,49 976
+1391.2,25 977
+33,48 977
+41,47 977
+33,48 977
+33,48 977
+2,48 977
+1392.2,25 978
+33,48 978
+41,47 978
+33,48 978
+33,48 978
+2,48 978
+2,48 979
+2,48 980
+1395.18,38 981
+32,33 981
+34,37 981
+18,38 981
+18,38 981
+1396.6,12 982
+21,22 983
+14,22 983
+1397.2,10 984
+1398.7,13 985
+15,20 986
+1399.16,49 987
+30,41 987
+43,48 987
+16,49 987
+16,49 987
+1400.7,14 988
+23,24 989
+16,24 989
+1401.3,8 990
+1402.8,15 991
+17,23 992
+1403.10,28 993
+4,29 993
+37,57 993
+49,56 993
+45,56 993
+45,56 994
+37,57 993
+37,57 993
+4,57 993
+1404.4,9 995
+1405.4,18 996
+1402.25,29 997
+25,29 997
+1407.3,25 998
+3,25 999
+3,25 1000
+1398.22,25 1001
+22,25 1001
+22,25 1002
+22,25 1003
+1410.8,9 1004
+1,9 1004
+1415.1,26 1005
+1416.1,40 1006
+31,36 1006
+38,39 1006
+1,40 1006
+1,40 1006
+1417.5,22 1007
+20,21 1007
+5,22 1007
+5,22 1007
+5,22 1007
+31,32 1008
+24,32 1008
+1418.1,15 1009
+1,15 1009
+1,15 1009
+1419.5,22 1010
+5,22 1010
+5,22 1010
+5,27 1010
+36,37 1011
+29,37 1011
+1420.8,9 1012
+1,9 1012
+1425.3,8 1013
+1,15 1013
+1426.1,9 1014
+1427.1,11 1015
+1428.1,11 1016
+1429.6,12 1017
+18,23 1018
+14,23 1018
+1430.6,10 1019
+6,16 1019
+20,24 1019
+20,30 1019
+1431.7,12 1020
+16,25 1020
+16,29 1020
+34,40 1021
+31,47 1021
+1432.17,20 1022
+9,10 1022
+9,21 1022
+3,21 1022
+3,21 1023
+1433.3,14 1024
+1434.3,12 1025
+3,12 1026
+1436.7,16 1027
+1429.25,28 1028
+25,28 1028
+1438.5,11 1029
+1,15 1029
+1439.8,14 1030
+18,23 1030
+18,30 1030
+32,35 1031
+32,35 1031
+1440.12,15 1032
+8,10 1032
+8,16 1032
+1,16 1032
+1445.1,26 1033
+1446.1,40 1034
+31,36 1034
+38,39 1034
+1,40 1034
+1,40 1034
+1447.1,15 1035
+1,15 1035
+1,15 1035
+1448.5,22 1036
+5,22 1036
+5,22 1036
+5,27 1036
+1449.9,33 1037
+2,33 1037
+1450.1,1451.61 1038
+1450.18,37 1038
+43,52 1038
+39,52 1038
+57,66 1038
+53,66 1038
+1451.6,15 1038
+2,15 1038
+21,30 1038
+17,30 1038
+36,45 1038
+32,45 1038
+51,60 1038
+47,60 1038
+1450.1,1451.61 1038
+1450.1,1451.61 1038
+1452.19,30 1039
+28,29 1039
+19,30 1039
+19,30 1039
+8,30 1039
+8,35 1039
+8,35 1040
+1,35 1039
+1457.1,17 1041
+1,17 1041
+1458.1,31 1042
+7,28 1042
+29,30 1042
+1,31 1042
+1459.1,30 1043
+1460.1,41 1044
+31,36 1044
+38,40 1044
+1,41 1044
+1,41 1044
+1461.1,14 1045
+1,14 1045
+1462.1,15 1046
+1,15 1046
+1,15 1046
+1463.5,22 1047
+5,22 1047
+5,22 1047
+5,27 1047
+1464.9,11 1048
+2,11 1048
+1465.1,19 1049
+1,19 1049
+1,19 1049
+1,19 1050
+1466.8,9 1051
+1,9 1051
+1471.1,22 1052
+1472.1,35 1053
+15,26 1053
+15,20 1053
+15,26 1053
+28,29 1053
+31,34 1053
+1,35 1053
+1,35 1053
+1473.1,35 1054
+15,26 1054
+15,20 1054
+15,26 1054
+28,29 1054
+31,34 1054
+1,35 1054
+1,35 1054
+1474.1,54 1055
+19,30 1055
+19,24 1055
+19,30 1055
+32,48 1055
+50,53 1055
+1,54 1055
+1,54 1055
+1475.1,54 1056
+19,30 1056
+19,24 1056
+19,30 1056
+32,48 1056
+50,53 1056
+1,54 1056
+1,54 1056
+1476.0,1 1057
+1480.1,30 1058
+1481.1,41 1059
+31,36 1059
+38,40 1059
+1,41 1059
+1,41 1059
+1482.1,16 1060
+14,15 1060
+1,16 1060
+1483.1,15 1061
+1,15 1061
+1,15 1061
+1484.5,22 1062
+5,22 1062
+5,22 1062
+5,27 1062
+36,38 1063
+29,38 1063
+1485.1,19 1064
+1,19 1064
+1,19 1064
+1,19 1065
+1486.8,9 1066
+1,9 1066
+1491.1,22 1067
+1492.1,35 1068
+15,26 1068
+15,20 1068
+15,26 1068
+28,29 1068
+31,34 1068
+1,35 1068
+1,35 1068
+1493.1,35 1069
+15,26 1069
+15,20 1069
+15,26 1069
+28,29 1069
+31,34 1069
+1,35 1069
+1,35 1069
+1494.1,61 1070
+19,30 1070
+19,24 1070
+19,30 1070
+32,43 1070
+32,55 1070
+57,60 1070
+1,61 1070
+1,61 1070
+1495.1,60 1071
+19,30 1071
+19,24 1071
+19,30 1071
+32,43 1071
+32,54 1071
+56,59 1071
+1,60 1071
+1,60 1071
+1496.0,1 1072
+1500.1,39 1073
+7,36 1073
+37,38 1073
+1,39 1073
+1501.1,38 1074
+1502.1,40 1075
+31,36 1075
+38,39 1075
+1,40 1075
+1,40 1075
+1503.1,22 1076
+1504.1,37 1077
+15,26 1077
+15,20 1077
+15,26 1077
+28,31 1077
+33,36 1077
+1,37 1077
+1,37 1077
+1505.1,35 1078
+15,26 1078
+15,20 1078
+15,26 1078
+28,29 1078
+31,34 1078
+1,35 1078
+1,35 1078
+1506.1,15 1079
+1,15 1079
+1,15 1079
+1508.1,18 1080
+1,18 1080
+1,18 1080
+1509.0,1 1081
+1515.1,21 1082
+1516.20,45 1083
+28,39 1083
+28,33 1083
+28,39 1083
+20,45 1083
+20,45 1083
+20,45 1083
+2,11 1083
+13,16 1083
+1517.1,55 1084
+18,43 1084
+45,54 1084
+1,55 1084
+1,55 1084
+1518.6,11 1085
+13,26 1086
+1519.34,59 1087
+42,53 1087
+42,47 1087
+42,53 1087
+34,59 1087
+34,59 1087
+34,59 1087
+3,14 1087
+3,25 1087
+27,30 1087
+1520.35,64 1088
+47,58 1088
+47,52 1088
+47,58 1088
+60,63 1088
+35,64 1088
+35,64 1088
+35,64 1088
+3,14 1088
+3,26 1088
+28,31 1088
+28,31 1089
+1521.34,63 1090
+46,57 1090
+46,51 1090
+46,57 1090
+59,62 1090
+34,63 1090
+34,63 1090
+34,63 1090
+3,14 1090
+3,25 1090
+27,30 1090
+27,30 1091
+1522.37,62 1092
+45,56 1092
+45,50 1092
+45,56 1092
+37,62 1092
+37,62 1092
+37,62 1092
+3,14 1092
+3,28 1092
+30,33 1092
+1523.37,62 1093
+45,56 1093
+45,50 1093
+45,56 1093
+37,62 1093
+37,62 1093
+37,62 1093
+3,14 1093
+3,28 1093
+30,33 1093
+1524.6,17 1094
+6,35 1094
+39,50 1094
+39,78 1094
+39,78 1094
+1525.3,14 1095
+3,32 1095
+1526.7,1529.30 1096
+1526.19,39 1096
+41,52 1096
+41,63 1096
+1527.11,22 1096
+4,34 1096
+1528.11,22 1096
+4,33 1096
+1529.4,15 1096
+4,29 1096
+1526.7,1529.30 1096
+1526.7,1529.30 1096
+1526.2,1529.30 1096
+1526.2,1529.30 1097
+1518.28,31 1098
+28,31 1098
+1531.1,11 1099
+7,8 1099
+9,10 1099
+1,11 1099
+1532.5,13 1100
+1533.2,14 1101
+2,14 1101
+1534.8,9 1102
+1,9 1102
+1539.1,30 1103
+7,27 1103
+28,29 1103
+1,30 1103
+1540.1,40 1104
+1541.1,40 1105
+31,36 1105
+38,39 1105
+1,40 1105
+1,40 1105
+1542.1,15 1106
+1,15 1106
+1,15 1106
+1544.5,22 1107
+5,22 1107
+5,22 1107
+5,28 1107
+1545.9,23 1108
+9,23 1108
+9,23 1108
+2,23 1108
+1546.1,47 1109
+7,44 1109
+45,46 1109
+1,47 1109
+1547.8,10 1110
+1,10 1110
+1585.1,9 1111
+1586.1,21 1112
+1587.16,41 1113
+24,35 1113
+24,29 1113
+24,35 1113
+16,41 1113
+16,41 1113
+16,41 1113
+2,7 1113
+9,12 1113
+1588.5,16 1114
+1589.9,39 1115
+2,39 1115
+1590.7,33 1116
+19,29 1116
+31,32 1116
+7,33 1116
+7,33 1116
+1,33 1116
+1,33 1117
+1591.1,15 1118
+1592.5,22 1119
+1593.2,15 1120
+1594.6,12 1121
+14,23 1122
+1595.2,12 1123
+1596.17,44 1124
+27,38 1124
+27,32 1124
+27,38 1124
+40,43 1124
+17,44 1124
+17,44 1124
+17,44 1124
+3,8 1124
+10,13 1124
+10,13 1125
+1597.10,44 1126
+22,29 1126
+31,43 1126
+10,44 1126
+10,44 1126
+2,44 1126
+2,44 1127
+1598.13,38 1128
+21,32 1128
+21,26 1128
+21,32 1128
+13,38 1128
+13,38 1128
+13,38 1128
+3,4 1128
+6,9 1128
+1599.16,45 1129
+28,39 1129
+28,33 1129
+28,39 1129
+41,44 1129
+16,45 1129
+16,45 1129
+16,45 1129
+3,7 1129
+9,12 1129
+9,12 1130
+1600.10,43 1131
+22,29 1131
+31,42 1131
+10,43 1131
+10,43 1131
+2,43 1131
+2,43 1132
+1601.2,12 1133
+1602.7,8 1134
+7,8 1134
+7,8 1134
+7,8 1134
+1606.15,40 1135
+23,34 1135
+23,28 1135
+23,34 1135
+15,40 1135
+15,40 1135
+15,40 1135
+5,6 1135
+8,11 1135
+1607.15,40 1136
+23,34 1136
+23,28 1136
+23,34 1136
+15,40 1136
+15,40 1136
+15,40 1136
+5,6 1136
+8,11 1136
+1608.12,57 1137
+24,50 1137
+52,53 1137
+55,56 1137
+12,57 1137
+12,57 1137
+4,57 1137
+4,57 1138
+1610.9,15 1139
+17,22 1140
+1611.16,45 1141
+28,39 1141
+28,33 1141
+28,39 1141
+41,44 1141
+16,45 1141
+16,45 1141
+16,45 1141
+6,7 1141
+9,12 1141
+9,12 1142
+1612.16,41 1143
+24,35 1143
+24,29 1143
+24,35 1143
+16,41 1143
+16,41 1143
+16,41 1143
+6,7 1143
+9,12 1143
+1613.13,51 1144
+25,37 1144
+39,47 1144
+49,50 1144
+13,51 1144
+13,51 1144
+5,51 1144
+5,51 1145
+1614.9,15 1146
+1615.6,21 1147
+19,20 1147
+6,21 1147
+6,21 1147
+1616.10,18 1148
+16,17 1148
+10,18 1148
+10,18 1148
+20,21 1148
+5,27 1148
+5,27 1149
+1610.24,27 1150
+24,27 1150
+1618.4,60 1151
+14,60 1151
+31,43 1151
+37,42 1151
+31,43 1151
+31,43 1151
+45,56 1151
+51,55 1151
+45,56 1151
+45,56 1151
+58,59 1151
+4,60 1151
+4,60 1152
+4,60 1153
+4,60 1154
+4,60 1134
+1620.15,40 1155
+23,34 1155
+23,28 1155
+23,34 1155
+15,40 1155
+15,40 1155
+15,40 1155
+5,6 1155
+8,11 1155
+1621.15,40 1156
+23,34 1156
+23,28 1156
+23,34 1156
+15,40 1156
+15,40 1156
+15,40 1156
+5,6 1156
+8,11 1156
+1622.15,40 1157
+23,34 1157
+23,28 1157
+23,34 1157
+15,40 1157
+15,40 1157
+15,40 1157
+5,6 1157
+8,11 1157
+1623.12,68 1158
+24,58 1158
+60,61 1158
+63,64 1158
+66,67 1158
+12,68 1158
+12,68 1158
+4,68 1158
+4,68 1159
+1624.4,19 1160
+4,19 1134
+1626.15,40 1161
+23,34 1161
+23,28 1161
+23,34 1161
+15,40 1161
+15,40 1161
+15,40 1161
+5,6 1161
+8,11 1161
+1627.9,10 1162
+1629.17,46 1163
+29,40 1163
+29,34 1163
+29,40 1163
+42,45 1163
+17,46 1163
+17,46 1163
+17,46 1163
+7,8 1163
+10,13 1163
+10,13 1164
+10,13 1162
+1631.17,46 1165
+29,40 1165
+29,34 1165
+29,40 1165
+42,45 1165
+17,46 1165
+17,46 1165
+17,46 1165
+7,8 1165
+10,13 1165
+10,13 1166
+10,13 1162
+1633.14,49 1167
+26,45 1167
+47,48 1167
+14,49 1167
+14,49 1167
+6,49 1167
+6,49 1168
+1634.6,11 1169
+1636.4,19 1170
+1637.12,41 1171
+24,30 1171
+32,40 1171
+12,41 1171
+12,41 1171
+4,41 1171
+4,41 1172
+4,41 1134
+1639.4,9 1173
+1641.4,9 1174
+1643.12,47 1175
+24,43 1175
+45,46 1175
+12,47 1175
+12,47 1175
+4,47 1175
+4,47 1176
+1644.4,9 1177
+1646.6,15 1178
+1647.19,31 1179
+25,30 1179
+19,31 1179
+19,31 1179
+8,45 1179
+8,45 1179
+8,45 1180
+33,44 1179
+8,45 1179
+8,45 1179
+8,45 1179
+1648.15,27 1181
+21,26 1181
+15,27 1181
+15,27 1181
+29,37 1181
+4,49 1181
+4,49 1182
+1650.7,37 1183
+12,22 1183
+24,36 1183
+7,37 1183
+7,37 1183
+7,37 1183
+1651.3,13 1184
+3,13 1185
+3,13 1186
+1594.25,28 1187
+25,28 1187
+1653.5,14 1188
+1654.22,33 1189
+2,51 1189
+1655.22,33 1190
+2,51 1190
+1656.2,7 1191
+1657.8,22 1192
+1658.3,17 1193
+3,30 1193
+1659.15,18 1194
+15,18 1194
+3,19 1194
+3,32 1194
+1657.24,44 1195
+24,44 1195
+1662.8,10 1196
+1,10 1196
+1667.7,16 1197
+1668.6,12 1198
+6,17 1198
+6,17 1199
+1669.10,11 1200
+3,11 1200
+1667.18,30 1201
+18,30 1201
+1670.8,9 1202
+1,9 1202
+1675.1,24 1203
+1,33 1203
+1676.1,24 1204
+1,33 1204
+1677.1,24 1205
+1,33 1205
+1678.1,24 1206
+1,33 1206
+1679.8,9 1207
+1,9 1207
+1684.5,16 1208
+25,27 1209
+18,27 1209
+1685.7,52 1210
+20,44 1210
+46,51 1210
+7,52 1210
+7,52 1210
+1,55 1210
+1,55 1210
+1,55 1211
+53,54 1210
+1,55 1210
+1686.1,33 1212
+1687.1,22 1213
+1688.5,16 1214
+1689.2,41 1215
+32,37 1215
+39,40 1215
+2,41 1215
+2,41 1215
+2,41 1216
+1691.6,15 1217
+6,20 1217
+1692.10,40 1218
+10,45 1218
+10,45 1219
+3,45 1218
+1693.2,14 1220
+22,30 1220
+2,30 1220
+1694.8,13 1221
+2,14 1221
+22,30 1221
+2,30 1221
+1695.8,13 1222
+2,14 1222
+22,30 1222
+2,30 1222
+1696.8,13 1223
+2,14 1223
+22,30 1223
+2,30 1223
+1697.2,41 1224
+32,37 1224
+39,40 1224
+2,41 1224
+2,41 1224
+1699.1,15 1225
+1,15 1225
+1,15 1225
+1700.5,22 1226
+5,22 1226
+5,22 1226
+5,27 1226
+36,66 1227
+36,71 1227
+36,71 1228
+29,71 1227
+1701.1,21 1229
+1703.15,39 1230
+23,34 1230
+23,28 1230
+23,34 1230
+15,39 1230
+15,39 1230
+15,39 1230
+2,6 1230
+8,11 1230
+1704.1,8 1231
+1705.1,9 1232
+1706.5,16 1233
+1707.7,15 1234
+21,30 1235
+17,30 1235
+1708.14,22 1236
+10,22 1236
+3,22 1236
+1709.7,11 1237
+7,15 1237
+23,42 1238
+35,39 1238
+40,41 1238
+23,42 1238
+23,42 1238
+17,45 1238
+17,45 1238
+17,45 1239
+43,44 1238
+17,45 1238
+1707.32,35 1240
+32,35 1240
+1711.2,15 1241
+8,12 1241
+13,14 1241
+2,15 1241
+1713.6,12 1242
+14,22 1243
+1716.15,41 1244
+25,36 1244
+25,30 1244
+25,36 1244
+37,40 1244
+15,41 1244
+15,41 1244
+15,41 1244
+3,7 1244
+8,11 1244
+8,11 1245
+1717.16,40 1246
+24,35 1246
+24,29 1246
+24,35 1246
+16,40 1246
+16,40 1246
+16,40 1246
+3,8 1246
+9,12 1246
+1718.8,52 1247
+21,36 1247
+38,39 1247
+40,45 1247
+46,51 1247
+8,52 1247
+8,52 1247
+2,55 1247
+2,55 1247
+2,55 1248
+53,54 1247
+2,55 1247
+1719.7,12 1249
+7,12 1249
+7,12 1249
+7,12 1249
+1721.16,40 1250
+24,35 1250
+24,29 1250
+24,35 1250
+16,40 1250
+16,40 1250
+16,40 1250
+5,8 1250
+9,12 1250
+1722.25,35 1251
+4,35 1251
+4,35 1252
+4,35 1249
+1724.17,43 1253
+27,38 1253
+27,32 1253
+27,38 1253
+39,42 1253
+17,43 1253
+17,43 1253
+17,43 1253
+5,9 1253
+10,13 1253
+10,13 1254
+10,13 1249
+1726.17,45 1255
+29,40 1255
+29,34 1255
+29,40 1255
+41,44 1255
+17,45 1255
+17,45 1255
+17,45 1255
+5,9 1255
+10,13 1255
+10,13 1256
+10,13 1249
+1728.17,45 1257
+29,40 1257
+29,34 1257
+29,40 1257
+41,44 1257
+17,45 1257
+17,45 1257
+17,45 1257
+5,9 1257
+10,13 1257
+10,13 1258
+10,13 1249
+1730.4,34 1259
+4,34 1249
+1736.7,55 1260
+19,29 1260
+30,41 1260
+43,54 1260
+7,55 1260
+7,55 1260
+2,55 1260
+2,55 1261
+2,55 1262
+2,55 1263
+1713.24,27 1264
+24,27 1264
+1738.8,9 1265
+1,9 1265
+1744.7,61 1266
+20,48 1266
+50,55 1266
+57,60 1266
+7,61 1266
+7,61 1266
+1,64 1266
+1,64 1266
+1,64 1267
+62,63 1266
+1,64 1266
+1745.5,14 1268
+5,19 1268
+1746.9,44 1269
+2,44 1269
+1747.1,22 1270
+1748.1,13 1271
+21,29 1271
+1,29 1271
+1749.7,12 1272
+1,13 1272
+21,29 1272
+1,29 1272
+1750.7,12 1273
+1,13 1273
+21,29 1273
+1,29 1273
+1751.7,12 1274
+1,13 1274
+21,29 1274
+1,29 1274
+1752.1,9 1275
+1753.1,37 1276
+15,26 1276
+15,20 1276
+15,26 1276
+28,31 1276
+33,36 1276
+1,37 1276
+1,37 1276
+1755.1,33 1277
+1756.1,40 1278
+31,36 1278
+38,39 1278
+1,40 1278
+1,40 1278
+1757.1,15 1279
+1,15 1279
+1,15 1279
+1759.5,29 1280
+5,29 1280
+5,29 1280
+5,29 1280
+5,34 1280
+1760.2,22 1281
+16,21 1281
+2,22 1281
+2,22 1281
+1761.6,14 1282
+1762.3,18 1283
+3,28 1283
+1763.9,12 1284
+2,12 1284
+1766.9,23 1285
+9,23 1285
+2,23 1285
+1771.1,34 1286
+1772.1,40 1287
+31,36 1287
+38,39 1287
+1,40 1287
+1,40 1287
+1773.1,15 1288
+1,15 1288
+1,15 1288
+1775.5,22 1289
+5,22 1289
+5,22 1289
+5,27 1289
+1776.9,11 1290
+2,11 1290
+1778.1,24 1291
+1,24 1291
+1,24 1291
+1779.1,30 1292
+1780.1,40 1293
+31,36 1293
+38,39 1293
+1,40 1293
+1,40 1293
+1781.1,15 1294
+1,15 1294
+1,15 1294
+1783.8,25 1295
+8,25 1295
+8,25 1295
+1,25 1295
+1788.7,56 1296
+19,43 1296
+45,55 1296
+7,56 1296
+7,56 1296
+1,59 1296
+1,59 1296
+1,59 1297
+57,58 1296
+1,59 1296
+1789.7,74 1298
+19,39 1298
+46,54 1298
+42,54 1298
+41,58 1298
+64,72 1298
+59,73 1298
+41,73 1298
+7,74 1298
+7,74 1298
+1,77 1298
+1,77 1298
+1,77 1299
+75,76 1298
+1,77 1298
+1790.7,55 1300
+19,40 1300
+46,54 1300
+42,54 1300
+7,55 1300
+7,55 1300
+1,58 1300
+1,58 1300
+1,58 1301
+56,57 1300
+1,58 1300
+1791.7,73 1302
+19,40 1302
+48,56 1302
+48,56 1302
+47,60 1302
+61,71 1302
+46,72 1302
+42,72 1302
+7,73 1302
+7,73 1302
+1,76 1302
+1,76 1302
+1,76 1303
+74,75 1302
+1,76 1302
+1792.7,79 1304
+19,44 1304
+52,61 1304
+52,61 1304
+51,65 1304
+66,77 1304
+50,78 1304
+46,78 1304
+7,79 1304
+7,79 1304
+1,82 1304
+1,82 1304
+1,82 1305
+80,81 1304
+1,82 1304
+1793.0,1 1306
+1797.1,7 1307
+1,16 1307
+1798.1,7 1308
+1,16 1308
+1799.1,7 1309
+1,16 1309
+1800.1,7 1310
+1,16 1310
+1801.1,7 1311
+16,30 1311
+15,37 1311
+1,37 1311
+1802.1,7 1312
+15,32 1312
+1,32 1312
+1803.1,8 1313
+1,17 1313
+1804.1,8 1314
+1,17 1314
+1806.1,11 1315
+1807.1,7 1316
+16,23 1316
+15,30 1316
+1,30 1316
+1808.1,7 1317
+16,23 1317
+15,30 1317
+1,30 1317
+1809.1,7 1318
+16,22 1318
+15,29 1318
+1,29 1318
+1810.1,7 1319
+15,24 1319
+1,24 1319
+1812.8,12 1320
+1,12 1320
+1817.1,28 1321
+7,25 1321
+26,27 1321
+1,28 1321
+1818.6,43 1322
+16,20 1322
+22,25 1322
+27,34 1322
+35,42 1322
+6,43 1322
+6,43 1322
+5,48 1322
+52,55 1322
+1819.2,8 1323
+2,17 1323
+1820.2,8 1324
+2,17 1324
+1821.2,29 1325
+10,14 1325
+16,19 1325
+21,28 1325
+2,29 1325
+2,29 1325
+1822.9,10 1326
+2,10 1326
+1824.1,7 1327
+1,16 1327
+1825.1,7 1328
+1,16 1328
+1826.1,28 1329
+9,13 1329
+15,18 1329
+20,27 1329
+1,28 1329
+1,28 1329
+1828.8,9 1330
+1,9 1330
+1833.1,28 1331
+7,25 1331
+26,27 1331
+1,28 1331
+1834.6,24 1332
+21,23 1332
+6,24 1332
+6,24 1332
+6,24 1332
+1835.2,36 1333
+8,33 1333
+34,35 1333
+2,36 1333
+1836.9,11 1334
+2,11 1334
+1839.17,23 1335
+13,23 1335
+12,26 1335
+11,30 1335
+36,42 1335
+31,43 1335
+1,44 1335
+1840.1,16 1336
+1841.1,37 1337
+16,20 1337
+22,25 1337
+27,28 1337
+29,36 1337
+1,37 1337
+1,37 1337
+1842.5,11 1338
+1843.8,76 1339
+21,69 1339
+71,72 1339
+74,75 1339
+8,76 1339
+8,76 1339
+2,79 1339
+2,79 1339
+2,79 1340
+77,78 1339
+2,79 1339
+1844.9,11 1341
+2,11 1341
+1846.8,9 1342
+1,9 1342
+1851.1,26 1343
+7,23 1343
+24,25 1343
+1,26 1343
+1852.1,15 1344
+1853.5,30 1345
+20,29 1345
+20,25 1345
+20,29 1345
+5,30 1345
+5,30 1345
+5,35 1345
+1854.2,11 1346
+1855.2,36 1347
+8,33 1347
+34,35 1347
+2,36 1347
+1856.9,10 1348
+2,10 1348
+1859.1,15 1349
+1,15 1349
+1860.11,19 1350
+1,19 1350
+1861.20,37 1351
+6,9 1351
+5,16 1351
+5,37 1351
+1862.2,45 1352
+8,42 1352
+43,44 1352
+2,45 1352
+1863.2,15 1353
+10,14 1353
+2,15 1353
+1864.9,10 1354
+2,10 1354
+1867.21,29 1355
+17,29 1355
+16,33 1355
+39,47 1355
+34,48 1355
+1,48 1355
+1869.8,32 1356
+1870.6,40 1357
+21,39 1357
+21,26 1357
+21,39 1357
+6,40 1357
+6,40 1357
+6,45 1357
+1871.3,35 1358
+9,32 1358
+33,34 1358
+3,35 1358
+1872.3,12 1359
+1873.10,11 1360
+3,11 1360
+1878.1,39 1361
+11,15 1361
+17,20 1361
+22,29 1361
+31,38 1361
+1,39 1361
+1,39 1361
+1879.16,25 1362
+16,25 1362
+15,29 1362
+30,41 1362
+14,42 1362
+9,43 1362
+1,43 1362
+1884.1,22 1363
+13,15 1363
+17,21 1363
+1,22 1363
+1,22 1363
+1885.1,15 1364
+12,14 1364
+1,15 1364
+1,15 1364
+1886.1,22 1365
+13,15 1365
+17,21 1365
+1,22 1365
+1,22 1365
+1887.1,25 1366
+13,15 1366
+17,24 1366
+1,25 1366
+1,25 1366
+1888.0,1 1367
+1892.1,63 1368
+30,40 1368
+19,40 1368
+19,49 1368
+19,49 1369
+51,62 1368
+1,63 1368
+1,63 1368
+1893.5,16 1370
+1894.2,52 1371
+13,17 1371
+19,39 1371
+41,51 1371
+2,52 1371
+2,52 1371
+1895.0,1 1372
+1899.5,67 1373
+33,43 1373
+22,43 1373
+22,52 1373
+22,52 1374
+54,65 1373
+5,67 1373
+5,67 1373
+5,67 1373
+5,74 1373
+5,74 1375
+1900.2,28 1376
+14,16 1376
+18,27 1376
+2,28 1376
+2,28 1376
+1901.0,1 1377
+1912.1,11 1378
+1913.1,14 1379
+1914.1,16 1380
+1916.25,36 1381
+1,36 1381
+1,36 1382
+1917.1,26 1383
+1919.6,12 1384
+18,29 1385
+14,29 1385
+1920.2,67 1386
+33,44 1386
+22,44 1386
+45,55 1386
+22,55 1386
+22,55 1387
+56,66 1386
+2,67 1386
+2,67 1386
+1921.6,19 1388
+1922.3,13 1389
+1923.2,14 1390
+2,14 1391
+1919.31,34 1392
+31,34 1392
+1925.1,11 1393
+1,11 1393
+1927.1,37 1394
+17,24 1394
+26,36 1394
+1,37 1394
+1,37 1394
+1928.5,14 1395
+1929.10,13 1396
+15,18 1396
+20,62 1396
+32,52 1396
+54,61 1396
+20,62 1396
+20,62 1396
+2,63 1396
+1930.1,40 1397
+20,26 1397
+28,39 1397
+1,40 1397
+1,40 1397
+1931.5,17 1398
+1932.10,13 1399
+15,18 1399
+20,61 1399
+32,52 1399
+54,60 1399
+20,61 1399
+20,61 1399
+2,62 1399
+1934.1,1943.2 1400
+1935.2,9 1400
+2,9 1400
+1936.2,6 1400
+2,6 1400
+1937.2,6 1400
+2,6 1400
+1938.2,6 1400
+2,6 1400
+1939.2,6 1400
+2,6 1400
+1940.2,6 1400
+2,6 1400
+1941.2,6 1400
+2,6 1400
+1942.2,5 1400
+2,5 1400
+1945.6,11 1401
+17,27 1402
+13,27 1402
+1946.6,40 1403
+18,23 1403
+24,28 1403
+30,39 1403
+30,39 1403
+6,40 1403
+6,40 1403
+6,44 1403
+1947.9,59 1404
+21,47 1404
+49,58 1404
+49,58 1404
+9,59 1404
+9,59 1404
+3,62 1404
+3,62 1404
+3,62 1405
+60,61 1404
+3,62 1404
+1945.29,32 1406
+29,32 1406
+1949.1,16 1407
+12,15 1407
+1,16 1407
+1,16 1407
+1950.1,12 1408
+9,11 1408
+1,12 1408
+1951.1,25 1409
+13,18 1409
+20,24 1409
+1,25 1409
+1,25 1409
+1952.1,15 1410
+12,14 1410
+1,15 1410
+1,15 1410
+1953.1,25 1411
+13,18 1411
+20,24 1411
+1,25 1411
+1,25 1411
+1954.9,11 1412
+13,18 1412
+20,23 1412
+1,24 1412
+1959.5,14 1413
+1960.2,27 1414
+8,24 1414
+25,26 1414
+2,27 1414
+1961.2,48 1415
+12,14 1415
+16,35 1415
+37,41 1415
+43,47 1415
+2,48 1415
+2,48 1415
+1963.0,1 1416
+1967.1,25 1417
+1969.1,25 1418
+18,19 1418
+21,24 1418
+1,25 1418
+1,25 1418
+1971.1,14 1419
+1972.17,27 1420
+1,47 1420
+39,45 1420
+39,45 1420
+39,45 1420
+39,45 1420
+39,45 1420
+39,45 1420
+1974.7,58 1421
+19,43 1421
+48,57 1421
+44,57 1421
+7,58 1421
+7,58 1421
+1,61 1421
+1,61 1421
+1,61 1422
+59,60 1421
+1,61 1421
+1976.2,37 1423
+17,19 1423
+21,24 1423
+26,27 1423
+29,36 1423
+2,37 1423
+2,37 1423
+1977.6,13 1424
+1978.3,19 1425
+1979.3,9 1426
+1981.8,45 1427
+20,33 1427
+38,44 1427
+34,44 1427
+8,45 1427
+8,45 1427
+2,48 1427
+2,48 1427
+2,48 1428
+46,47 1427
+2,48 1427
+1982.20,29 1429
+20,29 1429
+10,16 1429
+10,29 1429
+1983.1,28 1430
+7,25 1430
+26,27 1430
+1,28 1430
+1985.1,39 1431
+16,18 1431
+20,27 1431
+20,23 1431
+20,27 1431
+29,30 1431
+31,38 1431
+1,39 1431
+1,39 1431
+1986.6,12 1432
+14,19 1433
+1987.8,85 1434
+20,49 1434
+50,53 1434
+63,66 1434
+59,67 1434
+55,67 1434
+80,83 1434
+73,84 1434
+69,84 1434
+8,85 1434
+8,85 1434
+2,88 1434
+2,88 1434
+2,88 1435
+86,87 1434
+2,88 1434
+1986.21,24 1436
+21,24 1436
+1988.5,11 1437
+1989.2,35 1438
+8,32 1438
+33,34 1438
+2,35 1438
+1990.2,6 1439
+1993.2,29 1440
+8,26 1440
+27,28 1440
+2,29 1440
+1994.9,12 1441
+2,17 1441
+1995.2,16 1442
+1998.0,1 1443
+2002.1,25 1444
+2004.1,25 1445
+18,19 1445
+21,24 1445
+1,25 1445
+1,25 1445
+2005.1,14 1446
+2008.1,7 1447
+2009.1,11 1448
+2011.2,41 1449
+17,19 1449
+21,28 1449
+21,24 1449
+21,28 1449
+30,31 1449
+33,40 1449
+2,41 1449
+2,41 1449
+2012.6,11 1450
+2013.17,26 1451
+17,26 1451
+7,13 1451
+7,26 1451
+2014.4,13 1452
+2015.4,10 1453
+13,19 1453
+4,19 1453
+2016.4,9 1454
+4,9 1455
+2019.4,7 1456
+2020.13,23 1457
+8,23 1457
+25,30 1458
+25,30 1459
+2023.7,10 1460
+2024.6,13 1461
+15,20 1462
+2027.6,12 1463
+14,19 1464
+32,76 1465
+44,61 1465
+62,63 1465
+69,75 1465
+65,75 1465
+32,76 1465
+32,76 1465
+26,79 1465
+26,79 1465
+26,79 1466
+77,78 1465
+26,79 1465
+21,24 1467
+21,24 1467
+2028.5,12 1468
+2029.2,42 1469
+8,39 1469
+40,41 1469
+2,42 1469
+2030.2,6 1470
+2033.2,36 1471
+8,33 1471
+34,35 1471
+2,36 1471
+2034.9,12 1472
+2,18 1472
+2035.2,16 1473
+2037.0,1 1474
+2043.10,16 1475
+6,16 1475
+6,16 1475
+6,16 1475
+6,16 1475
+6,16 1475
+2045.17,23 1476
+13,23 1476
+12,28 1476
+34,40 1476
+30,40 1476
+29,45 1476
+12,45 1476
+51,57 1476
+47,57 1476
+46,61 1476
+12,61 1476
+67,73 1476
+62,74 1476
+3,74 1476
+2046.16,22 1477
+12,22 1477
+11,26 1477
+32,38 1477
+27,39 1477
+3,39 1477
+2047.16,22 1478
+12,22 1478
+11,26 1478
+32,38 1478
+27,39 1478
+3,39 1478
+2049.3,19 1479
+14,18 1479
+3,19 1479
+3,19 1479
+2051.8,14 1480
+2053.5,22 1481
+5,22 1480
+2055.5,21 1482
+5,21 1480
+2057.5,21 1483
+5,21 1480
+2059.5,21 1484
+5,21 1480
+2061.5,20 1485
+5,20 1480
+2063.9,73 1486
+21,65 1486
+66,72 1486
+9,73 1486
+9,73 1486
+3,76 1486
+3,76 1486
+3,76 1487
+74,75 1486
+3,76 1486
+2064.9,59 1488
+21,52 1488
+53,58 1488
+9,59 1488
+9,59 1488
+3,62 1488
+3,62 1488
+3,62 1489
+60,61 1488
+3,62 1488
+2065.9,61 1490
+21,54 1490
+55,60 1490
+9,61 1490
+9,61 1490
+3,64 1490
+3,64 1490
+3,64 1491
+62,63 1490
+3,64 1490
+2066.7,39 1492
+19,26 1492
+27,31 1492
+33,38 1492
+7,39 1492
+7,39 1492
+7,43 1492
+2067.10,60 1493
+22,52 1493
+54,59 1493
+10,60 1493
+10,60 1493
+4,63 1493
+4,63 1493
+4,63 1494
+61,62 1493
+4,63 1493
+2068.11,13 1495
+4,13 1495
+2071.3,38 1496
+9,35 1496
+36,37 1496
+3,38 1496
+2072.10,12 1497
+3,12 1497
+2074.3,51 1498
+9,48 1498
+49,50 1498
+3,51 1498
+2075.10,12 1499
+3,12 1499
+2077.9,59 1500
+21,47 1500
+52,58 1500
+48,58 1500
+9,59 1500
+9,59 1500
+3,62 1500
+3,62 1500
+3,62 1501
+60,61 1500
+3,62 1500
+2078.10,12 1502
+3,12 1502
+2080.8,9 1503
+1,9 1503
+2085.1,25 1504
+18,19 1504
+21,24 1504
+1,25 1504
+1,25 1504
+2087.1,12 1505
+2088.7,37 1506
+20,33 1506
+35,36 1506
+7,37 1506
+7,37 1506
+1,40 1506
+1,40 1506
+1,40 1507
+38,39 1506
+1,40 1506
+2089.1,11 1508
+2090.8,17 1509
+2091.2,42 1510
+17,19 1510
+21,32 1510
+21,24 1510
+21,32 1510
+34,41 1510
+2,42 1510
+2,42 1510
+2092.2,15 1511
+13,14 1511
+2,15 1511
+2,15 1511
+2093.6,12 1512
+2094.3,8 1513
+2095.2,12 1514
+2,12 1514
+2097.1,14 1515
+2099.0,1 1516
+2117.1,6 1517
+2118.1,18 1518
+2119.1,18 1519
+2121.1,19 1520
+14,16 1520
+17,18 1520
+1,19 1520
+2122.1,14 1521
+2123.1,29 1522
+14,16 1522
+18,21 1522
+23,24 1522
+26,28 1522
+1,29 1522
+2124.1,14 1523
+2126.1,9 1524
+2128.5,7 1525
+5,7 1525
+2133.9,11 1525
+9,11 1525
+2127.1,7 1525
+1,7 1525
+1,7 1525
+1,7 1525
+2129.3,13 1526
+8,12 1526
+3,13 1526
+2130.9,48 1527
+22,47 1527
+9,48 1527
+9,48 1527
+3,51 1527
+3,51 1527
+3,51 1528
+49,50 1527
+3,51 1527
+2131.3,12 1529
+2132.10,12 1530
+3,12 1530
+2134.3,13 1531
+8,12 1531
+3,13 1531
+2135.3,8 1532
+2137.8,9 1533
+1,9 1533
+2142.7,37 1534
+19,33 1534
+35,36 1534
+7,37 1534
+7,37 1534
+1,40 1534
+1,40 1534
+1,40 1535
+38,39 1534
+1,40 1534
+2143.1,12 1536
+2144.8,18 1537
+2145.2,45 1538
+18,20 1538
+22,34 1538
+22,25 1538
+22,34 1538
+36,44 1538
+2,45 1538
+2,45 1538
+2146.2,15 1539
+13,14 1539
+2,15 1539
+2,15 1539
+2147.6,12 1540
+2148.9,53 1541
+21,52 1541
+9,53 1541
+9,53 1541
+3,56 1541
+3,56 1541
+3,56 1542
+54,55 1541
+3,56 1541
+2149.3,13 1543
+3,13 1543
+2151.10,16 1544
+3,16 1544
+2153.2,13 1545
+2,13 1545
+2155.7,52 1546
+19,43 1546
+45,51 1546
+7,52 1546
+7,52 1546
+1,55 1546
+1,55 1546
+1,55 1547
+53,54 1546
+1,55 1546
+2156.8,14 1548
+1,14 1548
+2161.1,14 1549
+9,13 1549
+1,14 1549
+2162.1,27 1550
+7,24 1550
+25,26 1550
+1,27 1550
+2163.1,78 1551
+32,49 1551
+21,49 1551
+50,65 1551
+21,65 1551
+21,65 1552
+67,77 1551
+1,78 1551
+1,78 1551
+2164.1,26 1553
+2165.5,18 1554
+2167.3,37 1555
+18,24 1555
+25,28 1555
+29,36 1555
+3,37 1555
+3,37 1555
+2168.7,12 1556
+14,37 1557
+27,30 1557
+27,34 1557
+20,34 1557
+20,34 1558
+35,36 1557
+14,37 1557
+14,37 1559
+2171.2,15 1560
+8,12 1560
+13,14 1560
+2,15 1560
+2174.0,1 1561
+2173.6,44 1562
+12,41 1562
+42,43 1562
+6,44 1562
+2174.0,1 1561
+2179.1,12 1563
+2180.1,7 1564
+16,23 1564
+15,30 1564
+1,30 1564
+2181.1,7 1565
+16,23 1565
+15,30 1565
+1,30 1565
+2182.1,7 1566
+16,22 1566
+15,29 1566
+1,29 1566
+2183.1,7 1567
+15,24 1567
+1,24 1567
+2186.1,10 1568
+2187.1,7 1569
+16,22 1569
+15,29 1569
+1,29 1569
+2188.1,7 1570
+15,24 1570
+1,24 1570
+2191.1,10 1571
+2192.1,8 1572
+17,23 1572
+16,30 1572
+1,30 1572
+2193.1,8 1573
+16,25 1573
+1,25 1573
+2194.1,8 1574
+1,29 1574
+21,24 1574
+26,28 1574
+1,29 1574
+1,29 1574
+2196.5,32 1575
+13,17 1575
+19,22 1575
+24,31 1575
+5,32 1575
+5,32 1575
+36,43 1575
+5,43 1575
+2197.2,51 1576
+8,48 1576
+49,50 1576
+2,51 1576
+2198.2,6 1577
+2200.1,44 1578
+7,41 1578
+42,43 1578
+1,44 1578
+2201.0,1 1579
+2207.1,25 1580
+18,19 1580
+21,24 1580
+1,25 1580
+1,25 1580
+2208.1,13 1581
+2209.1,18 1582
+12,17 1582
+1,18 1582
+1,18 1582
+2210.1,15 1583
+2211.0,1 1584
+2216.6,12 1585
+18,28 1586
+14,28 1586
+2217.16,25 1587
+16,25 1587
+6,12 1587
+6,25 1587
+2218.9,93 1588
+21,65 1588
+66,67 1588
+72,78 1588
+68,78 1588
+83,92 1588
+79,92 1588
+9,93 1588
+9,93 1588
+3,96 1588
+3,96 1588
+3,96 1589
+94,95 1588
+3,96 1588
+2219.10,11 1590
+3,11 1590
+2216.30,33 1591
+30,33 1591
+2222.1,27 1592
+7,24 1592
+25,26 1592
+1,27 1592
+2223.8,9 1593
+1,9 1593
+2228.1,9 1594
+2229.7,13 1595
+15,20 1596
+2230.13,19 1597
+9,19 1597
+2,19 1597
+2229.22,25 1598
+22,25 1598
+2231.15,26 1599
+10,26 1599
+3,26 1599
+2237.1,5 1600
+14,19 1600
+13,26 1600
+1,26 1600
+2238.1,5 1601
+14,19 1601
+13,26 1601
+1,26 1601
+2239.1,5 1602
+14,18 1602
+13,25 1602
+1,25 1602
+2240.1,5 1603
+13,22 1603
+1,22 1603
+2242.8,15 1604
+1,15 1604
+2247.6,12 1605
+14,20 1606
+2248.2,6 1607
+2,15 1607
+2247.22,25 1608
+22,25 1608
+2249.6,11 1609
+17,22 1610
+13,22 1610
+2250.2,6 1611
+9,13 1611
+2,13 1611
+2249.24,27 1612
+24,27 1612
+2251.8,16 1613
+1,16 1613
+2256.6,12 1614
+14,20 1615
+2257.2,6 1616
+2,15 1616
+2256.22,25 1617
+22,25 1617
+2258.6,11 1618
+17,22 1619
+13,22 1619
+2259.2,6 1620
+9,13 1620
+2,13 1620
+2258.24,27 1621
+24,27 1621
+2260.8,16 1622
+1,16 1622
+2279.11,15 1623
+7,15 1623
+6,20 1623
+26,30 1623
+22,30 1623
+21,35 1623
+6,35 1623
+41,45 1623
+37,45 1623
+36,49 1623
+6,49 1623
+55,59 1623
+50,60 1623
+1,60 1623
+2280.8,9 1624
+1,9 1624
+2296.1,22 1625
+2297.9,10 1626
+9,15 1626
+1,15 1626
+1,15 1627
+2298.9,10 1628
+12,17 1628
+1,18 1628
+2308.1,14 1629
+2309.6,11 1630
+1,13 1630
+2310.8,14 1631
+18,22 1631
+18,27 1631
+2311.2,5 1632
+2,5 1632
+2312.12,15 1633
+8,9 1633
+8,16 1633
+1,16 1633
+2322.8,14 1634
+1,22 1634
+2323.8,11 1635
+1,11 1635
+2328.1,18 1636
+2329.8,13 1637
+1,13 1637
+2343.14,19 1638
+14,23 1638
+1,32 1638
+2344.1,11 1639
+2345.1,10 1640
+2346.6,12 1641
+18,25 1642
+18,29 1642
+14,29 1642
+2348.13,24 1643
+13,24 1643
+2,24 1643
+2349.17,24 1644
+12,25 1644
+12,25 1644
+2,25 1644
+2350.18,25 1645
+13,26 1645
+13,26 1645
+2,26 1645
+2352.2,42 1646
+28,40 1646
+17,41 1646
+13,41 1646
+2,42 1646
+2,42 1646
+2353.2,69 1647
+28,40 1647
+17,41 1647
+13,41 1647
+55,67 1647
+44,68 1647
+13,68 1647
+2,69 1647
+2,69 1647
+2354.2,41 1648
+27,39 1648
+17,40 1648
+13,40 1648
+2,41 1648
+2,41 1648
+2356.7,16 1649
+18,26 1650
+2357.7,13 1651
+7,13 1651
+3,14 1651
+3,19 1651
+2358.7,13 1652
+7,13 1652
+3,14 1652
+3,19 1652
+2359.7,13 1653
+7,13 1653
+3,14 1653
+3,19 1653
+2356.28,34 1654
+28,34 1654
+2361.2,12 1655
+2346.31,34 1656
+31,34 1656
+2363.8,11 1657
+1,11 1657
+2368.1,11 1658
+2369.5,10 1659
+12,18 1660
+2370.5,12 1661
+14,21 1662
+2371.8,14 1663
+1,14 1663
+2376.1,34 1664
+26,27 1664
+28,29 1664
+30,33 1664
+1,34 1664
+1,34 1664
+2378.23,34 1665
+20,34 1665
+1,43 1665
+2380.29,91 1666
+41,68 1666
+70,78 1666
+80,81 1666
+83,84 1666
+86,87 1666
+89,90 1666
+29,91 1666
+29,91 1666
+15,91 1666
+1,91 1666
+1,91 1667
+2381.1,24 1668
+2382.8,16 1669
+1,16 1669
+2387.5,10 1670
+5,14 1670
+23,24 1671
+16,24 1671
+2388.5,18 1672
+7,12 1672
+7,16 1672
+5,6 1672
+5,18 1672
+5,28 1672
+5,28 1673
+37,38 1674
+30,38 1674
+2389.11,16 1675
+11,20 1675
+8,9 1675
+8,21 1675
+8,28 1675
+8,28 1676
+1,28 1675
+2396.1,15 1677
+2397.5,11 1678
+13,26 1679
+2398.27,56 1680
+33,44 1680
+33,55 1680
+27,56 1680
+27,56 1680
+14,57 1680
+14,57 1680
+14,57 1681
+14,57 1680
+14,57 1680
+2399.8,19 1680
+4,28 1680
+2400.4,15 1680
+4,27 1680
+2398.2,2400.40 1680
+2398.2,2400.40 1682
+2397.28,31 1683
+28,31 1683
+2401.0,1 1684
+2405.6,12 1685
+14,27 1686
+2406.23,52 1687
+29,40 1687
+29,51 1687
+23,52 1687
+23,52 1687
+2,53 1687
+2,53 1687
+2,53 1688
+2,53 1687
+2,53 1687
+2407.2,12 1689
+2408.37,40 1690
+2409.9,24 1691
+2410.37,48 1692
+2412.7,22 1693
+2413.4,13 1694
+2414.23,33 1695
+35,36 1695
+38,49 1695
+4,15 1695
+4,50 1695
+2415.4,15 1696
+4,41 1696
+4,41 1697
+2418.10,21 1698
+4,28 1698
+4,28 1699
+4,28 1700
+2409.26,48 1701
+26,48 1701
+2420.2,16 1702
+2422.6,11 1703
+2423.3,30 1704
+16,20 1704
+22,26 1704
+28,29 1704
+3,30 1704
+3,30 1705
+2425.3,27 1706
+13,17 1706
+19,23 1706
+25,26 1706
+3,27 1706
+3,27 1707
+3,27 1708
+2405.29,32 1709
+29,32 1709
+2428.8,23 1710
+2429.36,47 1711
+2431.2,25 1712
+2,6 1712
+14,24 1712
+2,25 1712
+2,25 1712
+2,25 1713
+2432.2,30 1714
+2,6 1714
+14,29 1714
+2,30 1714
+2,30 1714
+2,30 1715
+2,30 1716
+2428.25,47 1717
+25,47 1717
+2434.0,1 1718
+2440.3,2443.29 1719
+2440.7,11 1719
+2441.4,9 1719
+2442.4,15 1719
+4,29 1719
+2443.8,19 1719
+4,28 1719
+2440.3,2443.29 1719
+2440.3,2443.29 1719
+2439.1,2443.30 1719
+2439.1,5 1719
+12,23 1719
+12,32 1719
+12,32 1719
+12,32 1720
+12,32 1721
+12,32 1722
+12,32 1723
+1,2443.30 1719
+2439.1,2443.30 1719
+2439.1,2443.30 1724
+2445.7,20 1725
+15,19 1725
+7,20 1725
+7,20 1725
+3,2448.28 1725
+2445.3,2448.28 1725
+2445.3,2448.28 1726
+2446.4,9 1725
+2447.4,9 1725
+2448.4,15 1725
+4,27 1725
+2445.3,2448.28 1725
+2445.3,2448.28 1725
+2444.1,2448.29 1725
+2444.1,5 1725
+16,27 1725
+12,39 1725
+12,39 1725
+12,39 1727
+12,39 1728
+12,39 1729
+12,39 1730
+1,2448.29 1725
+2444.1,2448.29 1725
+2444.1,2448.29 1731
+2449.0,1 1732
+2454.1,19 1733
+2455.20,34 1734
+36,37 1734
+39,50 1734
+1,12 1734
+1,51 1734
+2456.1,21 1735
+2458.4,2461.15 1736
+2458.8,12 1736
+2459.4,9 1736
+2460.4,15 1736
+4,29 1736
+2461.4,14 1736
+2458.4,2461.15 1736
+2458.4,2461.15 1736
+2457.1,2461.16 1736
+2457.1,5 1736
+13,26 1736
+13,26 1736
+13,26 1737
+13,26 1738
+13,26 1739
+13,26 1740
+1,2461.16 1736
+2457.1,2461.16 1736
+2457.1,2461.16 1741
+2463.1,19 1742
+2464.1,12 1743
+1,37 1743
+2466.7,20 1744
+15,19 1744
+7,20 1744
+7,20 1744
+3,2469.14 1744
+2466.3,2469.14 1744
+2466.3,2469.14 1745
+2467.3,8 1744
+2468.3,8 1744
+2469.3,13 1744
+2466.3,2469.14 1744
+2466.3,2469.14 1744
+2465.1,2469.15 1744
+2465.1,5 1744
+13,26 1744
+13,26 1744
+13,26 1746
+13,26 1747
+13,26 1748
+13,26 1749
+1,2469.15 1744
+2465.1,2469.15 1744
+2465.1,2469.15 1750
+2470.0,1 1751
+2474.15,31 1752
+25,26 1752
+27,30 1752
+15,31 1752
+15,31 1752
+1,31 1752
+2476.2,20 1753
+13,19 1753
+2,20 1753
+2,20 1753
+2477.2,23 1754
+2,23 1754
+2,23 1754
+2478.8,56 1755
+20,46 1755
+47,55 1755
+8,56 1755
+8,56 1755
+2,59 1755
+2,59 1755
+2,59 1756
+57,58 1755
+2,59 1755
+2479.6,16 1757
+2480.3,19 1758
+2481.6,16 1759
+6,23 1759
+2482.3,18 1760
+3,18 1760
+2488.1,13 1761
+2489.1,14 1762
+2490.1,13 1763
+2491.1,9 1764
+2493.8,72 1765
+21,61 1765
+62,71 1765
+62,71 1765
+8,72 1765
+8,72 1765
+2,75 1765
+2,75 1765
+2,75 1766
+73,74 1765
+2,75 1765
+2494.2,17 1767
+13,16 1767
+2,17 1767
+2,17 1767
+2495.25,47 1768
+36,46 1768
+25,47 1768
+25,47 1768
+3,7 1768
+9,16 1768
+9,16 1769
+9,16 1770
+9,16 1771
+2496.6,17 1772
+21,35 1772
+2497.9,52 1773
+21,51 1773
+9,52 1773
+9,52 1773
+3,55 1773
+3,55 1773
+3,55 1774
+53,54 1773
+3,55 1773
+3,55 1775
+2498.11,20 1776
+11,20 1776
+11,20 1776
+11,25 1776
+2499.3,26 1777
+3,26 1777
+2500.3,16 1778
+2501.3,28 1779
+9,25 1779
+26,27 1779
+3,28 1779
+2502.3,8 1780
+2504.6,13 1781
+17,29 1781
+2505.3,8 1782
+2506.6,11 1783
+6,11 1783
+6,16 1783
+2507.3,14 1784
+2508.3,10 1785
+2509.7,21 1786
+2510.4,18 1787
+2512.2,19 1788
+13,18 1788
+2,19 1788
+2,19 1788
+2,19 1788
+2514.1,10 1789
+2515.8,17 1790
+1,17 1790
+2524.5,13 1791
+19,24 1791
+19,28 1791
+17,29 1791
+17,37 1791
+2525.9,14 1792
+9,18 1792
+2,19 1792
+2526.5,19 1793
+2527.14,28 1794
+26,27 1794
+14,28 1794
+14,28 1794
+2,52 1794
+2,52 1794
+2,52 1795
+30,41 1794
+42,43 1794
+44,51 1794
+2,52 1794
+2,52 1794
+2528.0,1 1796
+2532.1,14 1797
+2533.1,27 1798
+2534.1,47 1799
+17,34 1799
+17,34 1799
+36,46 1799
+1,47 1799
+1,47 1799
+2535.5,14 1800
+2536.10,13 1801
+14,17 1801
+2,18 1801
+2537.13,27 1802
+24,26 1802
+13,27 1802
+13,27 1802
+2538.5,25 1803
+2539.10,13 1804
+14,17 1804
+2,18 1804
+2540.1,38 1805
+11,13 1805
+15,21 1805
+23,37 1805
+1,38 1805
+1,38 1805
+2541.1,27 1806
+15,17 1806
+18,21 1806
+22,26 1806
+1,27 1806
+1,27 1806
+2542.9,16 1807
+9,16 1807
+9,16 1807
+9,16 1808
+18,21 1807
+18,25 1807
+1,26 1807
+29
+aSys->Dir 1:26.1,39.2 64
+11
+0:name:28.2,6 s
+4:uid:29.2,5 s
+8:gid:30.2,5 s
+12:muid:31.2,6 s
+16:qid:32.2,5 @1
+
+32:mode:33.2,6 i
+36:atime:34.2,7 i
+40:mtime:35.2,7 i
+48:length:36.2,8 B
+56:dtype:37.2,7 i
+60:dev:38.2,5 i
+aSys->Qid 11.1,16.2 16
+3
+0:path:13.2,6 B
+8:vers:14.2,6 i
+12:qtype:15.2,7 i
+aDraw->Chans 6:70.1,82.2 4
+1
+0:desc:72.2,6 i
+aDraw->Context 274.1,279.2 12
+3
+0:display:276.2,9 R@4
+
+4:screen:277.2,8 R@8
+
+8:wm:278.2,4 Ct8.2
+0:t0:15,21 s
+4:t1:15,21 Ct8.2
+0:t0:32,38 s
+4:t1:32,38 R@9
+
+
+
+aDraw->Display 201.1,230.2 20
+5
+0:image:203.2,7 R@5
+
+4:white:204.2,7 R@5
+
+8:black:205.2,7 R@5
+
+12:opaque:206.2,8 R@5
+
+16:transparent:207.2,13 R@5
+
+aDraw->Image 142.1,198.2 56
+8
+0:r:146.2,3 @6
+
+16:clipr:147.2,7 @6
+
+32:depth:148.2,7 i
+36:chans:149.2,7 @2
+
+40:repl:150.2,6 i
+44:display:151.2,9 R@4
+
+48:screen:152.2,8 R@8
+
+52:iname:153.2,7 s
+aDraw->Rect 116.1,139.2 16
+2
+0:min:118.2,5 @7
+
+8:max:119.2,5 @7
+
+aDraw->Point 99.1,113.2 8
+2
+0:x:101.2,3 i
+4:y:102.2,3 i
+aDraw->Screen 249.1,263.2 16
+4
+0:id:251.2,4 i
+4:image:252.2,7 R@5
+
+8:fill:253.2,6 R@5
+
+12:display:254.2,9 R@4
+
+aDraw->Wmcontext 282.1,291.2 28
+7
+0:kbd:284.2,5 Ci
+4:ptr:285.2,5 CR@10
+
+8:ctl:286.2,5 Cs
+12:wctl:287.2,6 Cs
+16:images:288.2,8 CR@5
+
+20:connfd:289.2,8 R@11
+
+24:ctxt:290.2,6 R@3
+
+aDraw->Pointer 266.1,271.2 16
+3
+0:buttons:268.2,9 i
+4:xy:269.2,4 @7
+
+12:msec:270.2,6 i
+aSys->FD 1:45.1,48.2 4
+1
+0:fd:47.2,4 i
+aTmsgqueue 0:891.0,897.1 16
+4
+0:start:892.1,6 i
+4:end:8,11 i
+8:length:13,19 i
+12:a:893.1,2 AR@13
+
+pStyx->Tmsg 3:75.1,123.2 0
+1
+4:tag:76.2,5 i
+14
+Readerror:78.2,11 12
+1
+8:error:79.3,8 s
+Version:80.2,9 16
+2
+8:msize:81.3,8 i
+12:version:82.3,10 s
+Auth:83.2,6 20
+3
+8:afid:84.3,7 i
+12:uname:85.3,8 s
+16:aname:10,15 s
+Attach:86.2,8 24
+4
+8:fid:87.3,6 i
+12:afid:8,12 i
+16:uname:88.3,8 s
+20:aname:10,15 s
+Flush:89.2,7 12
+1
+8:oldtag:90.3,9 i
+Walk:91.2,6 20
+3
+8:fid:92.3,6 i
+12:newfid:8,14 i
+16:names:93.3,8 As
+Open:94.2,6 16
+2
+8:fid:95.3,6 i
+12:mode:8,12 i
+Create:96.2,8 24
+4
+8:fid:97.3,6 i
+12:name:98.3,7 s
+16:perm:99.3,7 i
+20:mode:9,13 i
+Read:100.2,6 32
+3
+8:fid:101.3,6 i
+16:offset:102.3,9 B
+24:count:103.3,8 i
+Write:104.2,7 32
+3
+8:fid:105.3,6 i
+16:offset:106.3,9 B
+24:data:107.3,7 Ab
+Clunk:108.2,7 12
+1
+8:fid:111.3,6 i
+Stat:109.2,6
+Remove:110.2,8
+Wstat:112.2,7 80
+2
+8:fid:113.3,6 i
+16:stat:114.3,7 @0
+
+aStyxservers->Styxserver 4:44.1,82.2 32
+7
+0:fd:45.2,4 R@11
+
+4:fids:46.2,6 ALR@15
+
+8:fidlock:47.2,9 Ci
+12:t:48.2,3 R@16
+
+16:rootpath:49.2,10 B
+24:msize:50.2,7 i
+28:replychan:51.2,11 CR@18
+
+aStyxservers->Fid 5.1,19.2 48
+9
+0:fid:6.2,5 i
+8:path:7.2,6 B
+16:qtype:8.2,7 i
+20:isopen:9.2,8 i
+24:mode:10.2,6 i
+28:doffset:11.2,9 t8.2
+0:t0:12,15 i
+4:t1:12,15 i
+
+36:uname:12.2,7 s
+40:param:13.2,7 s
+44:data:14.2,6 Ab
+aStyxservers->Navigator 21.1,29.2 8
+2
+0:c:22.2,3 CR@17
+
+4:reply:23.2,7 Ct8.2
+0:t0:18,30 R@0
+
+4:t1:18,30 s
+
+pStyxservers->Navop 31.1,42.2 0
+2
+4:reply:32.2,7 Ct8.2
+0:t0:18,30 R@0
+
+4:t1:18,30 s
+
+8:path:33.2,6 B
+3
+Stat:35.2,6 16
+0
+Walk:36.2,6 24
+1
+16:name:37.3,7 s
+Readdir:38.2,9 24
+2
+16:offset:39.3,9 i
+20:count:40.3,8 i
+pStyx->Rmsg 3:125.1,163.2 0
+1
+4:tag:126.2,5 i
+15
+Readerror:128.2,11 12
+1
+8:error:129.3,8 s
+Version:130.2,9 16
+2
+8:msize:131.3,8 i
+12:version:132.3,10 s
+Auth:133.2,6 24
+1
+8:aqid:134.3,7 @1
+
+Attach:135.2,8 24
+1
+8:qid:136.3,6 @1
+
+Flush:137.2,7 8
+0
+Error:138.2,7 12
+1
+8:ename:139.3,8 s
+Clunk:140.2,7 8
+0
+Remove:141.2,8
+Wstat:142.2,7
+Walk:143.2,6 12
+1
+8:qids:144.3,7 A@1
+
+Create:145.2,8 32
+2
+8:qid:147.3,6 @1
+
+24:iounit:148.3,9 i
+Open:146.2,6
+Read:149.2,6 12
+1
+8:data:150.3,7 Ab
+Write:151.2,7 12
+1
+8:count:152.3,8 i
+Stat:153.2,6 72
+1
+8:stat:154.3,7 @0
+
+aNametree->Tree 4:112.1,121.2 8
+2
+0:c:113.2,3 CR@20
+
+4:reply:114.2,7 Cs
+pNametree->Treeop 122.1,132.2 0
+2
+4:reply:123.2,7 Cs
+8:q:124.2,3 B
+4
+Create:126.2,8 80
+1
+16:d:128.3,4 @0
+
+Wstat:127.2,7
+Remove:129.2,8 16
+0
+Getpath:130.2,9 16
+0
+aCfile 0:159.0,167.1 28
+7
+0:driveno:160.1,8 i
+4:pathname:161.1,9 Ab
+8:dosname:162.1,8 Ab
+12:filelength:163.1,11 i
+16:filestatus:164.1,11 i
+20:thumblength:165.1,12 i
+24:thumbqid:166.1,9 i
+aCamera_adt 132.0,144.1 48
+12
+0:port_type:133.1,10 i
+4:port_num:134.1,9 i
+8:command:135.1,8 i
+12:mode:136.1,5 i
+16:fd:137.1,3 R@11
+
+20:ctlfd:138.1,6 R@11
+
+24:cdp:139.1,4 Ab
+28:bufbytes:140.1,9 i
+32:baud:141.1,5 i
+36:dfs:142.1,4 i
+40:hfs:6,9 i
+44:stat:143.1,5 i
+aPartialtag 155.0,157.1 12
+3
+0:offset:156.1,7 i
+4:length:9,15 i
+8:filesize:17,25 i
+aFitem 169.0,172.1 48
+2
+0:qid:170.1,4 @1
+
+16:cf:171.1,3 @21
+
+aextra 1206.0,1212.1 20
+5
+0:pnum:1207.1,5 i
+4:offset:1208.1,7 i
+8:length:1209.1,7 i
+12:data:1210.1,5 Ab
+16:isthumb:1211.1,8 i
+aUser 514.0,517.1 8
+2
+0:attachfid:515.1,10 i
+4:attr:516.1,5 At8.2
+0:t0:17,23 s
+4:t1:17,23 i
+
+aDaytime->Tm 2:5.1,16.2 40
+10
+0:sec:6.2,5 i
+4:min:7.2,5 i
+8:hour:8.2,6 i
+12:mday:9.2,6 i
+16:mon:10.2,5 i
+20:year:11.2,6 i
+24:wday:12.2,6 i
+28:yday:13.2,6 i
+32:zone:14.2,6 s
+36:tzoff:15.2,7 i
+pCapability 0:1550.0,1559.1 0
+2
+4:pname:1551.1,6 s
+8:d:1552.1,2 s
+2
+List:1554.2,6 16
+1
+12:t:1555.3,4 Lt8.2
+0:t0:15,21 s
+4:t1:15,21 i
+
+Range:1556.2,7 28
+4
+12:min:1557.3,6 i
+16:max:8,11 i
+20:default:13,20 i
+24:current:22,29 i
+91
+0:init
+1
+36:argv:189.30,34 Ls
+6
+40:arg:204.1,4 mArg
+7:1.0,14.1 0
+
+44:extrafilelist:0:232.1,14 Ls
+48:i:258.6,7 i
+52:sync:292.1,5 Ci
+56:opt:235.9,12 i
+72:err:191.1,4 s
+n227:set_camera_properties
+0
+1
+32:i:299.6,7 i
+n241:tonext
+1
+32:los:325.7,10 Ls
+1
+36:s:327.1,2 s
+s259:int2hex
+1
+32:i:337.8,9 i
+3
+36:k:341.6,7 i
+40:i2:339.1,3 i
+44:s:340.1,2 s
+i275:connect
+0
+6
+32:pchan:350.1,6 Ci
+36:datain:349.1,7 CAb
+40:tick:351.1,5 Ci
+44:buf:362.3,6 Ab
+48:pid:358.1,4 i
+52:tpid:355.1,5 i
+i354:contains
+2
+32:s:400.9,10 s
+36:test:20,24 s
+2
+40:i:404.6,7 i
+44:num:402.1,4 i
+i377:filterabls
+2
+32:pname:431.11,16 s
+36:desc:18,22 s
+1
+40:i:433.6,7 i
+i394:exporterror
+2
+32:dfd:458.12,15 R@11
+
+36:error:30,35 s
+4
+40:tmsg:460.1,5 R@13
+
+44:data:470.2,6 Ab
+48:reply:469.2,7 R@18
+
+52:t:465.6,7 R@13
+
+n443:exportpath
+2
+32:sync:475.11,15 Ci
+36:dfd:30,33 R@11
+
+0
+n451:getuid
+0
+3
+32:buf:490.1,4 Ab
+36:fd:491.1,3 R@11
+
+40:uidlen:492.1,7 i
+n468:dir
+4
+32:name:496.4,8 s
+36:perm:18,22 i
+40:length:29,35 i
+44:qid:42,45 i
+1
+56:d:498.1,2 @0
+
+@0
+498:getuser
+1
+32:fid:521.8,11 i
+1
+36:i:523.6,7 i
+i509:getattr
+1
+32:pname:529.8,13 s
+1
+36:i:531.6,7 i
+i520:serveloop
+2
+32:fd:537.10,12 R@11
+
+36:sync:28,32 Ci
+45
+40:m:635.12,13 R@13
+
+44:srv:540.1,4 R@14
+
+48:tree:547.2,6 R@19
+
+52:treeop:8,14 CR@17
+
+56:data:707.3,7 Ab
+60:gm:576.1,3 R@13
+
+64:err:796.4,7 s
+68:readfid:588.1,8 i
+72:f:699.4,5 R@15
+
+76:e:6,7 s
+80:i:812.10,11 i
+84:retryit:586.1,8 i
+88:f:665.3,4 R@15
+
+92:f:781.4,5 R@15
+
+96:e:6,7 s
+100:i:648.8,9 i
+104:alivechan:583.1,10 Ci
+108:dir:710.5,8 R@0
+
+112:intdata:10,17 Ab
+116:e1:821.5,7 i
+120:j:557.6,7 i
+124:myattr:647.3,9 At8.2
+0:t0:40,46 s
+4:t1:40,46 i
+
+128:notries:587.1,8 i
+132:tchan:539.1,6 CR@13
+
+136:tmsgqueue:571.1,10 R@12
+
+140:killchan:611.7,15 Ci
+144:killchan:877.4,12 Ci
+148:alivepid:585.1,9 i
+152:e1:842.7,9 s
+156:lastgm:576.5,11 R@13
+
+160:n:558.3,4 i
+168:idir:6,10 @0
+
+232:n:787.4,5 i
+236:s:7,8 Ls
+260:c:605.4,5 i
+264:echan:541.1,6 Cs
+268:s:607.6,7 s
+100:i:677.9,10 i
+260:nu:640.3,5 i
+100:nu:810.5,7 i
+260:nu:653.3,5 i
+260:wtype:786.3,8 i
+100:na:838.6,8 i
+260:ftype:671.3,8 i
+260:ok:874.3,5 i
+n1599:Tmsgqueue.new
+1
+32:n:899.14,15 i
+1
+40:t:901.1,2 @12
+
+R@12
+1608:Tmsgqueue.push
+2
+32:t:909.15,16 R@12
+
+36:newt:37,41 R@13
+
+0
+i1623:Tmsgqueue.pop
+2
+32:t:921.14,15 R@12
+
+36:readfid:37,44 i
+1
+40:m:925.1,2 R@13
+
+R@13
+1640:noresponse
+3
+32:tchan:935.11,16 CR@13
+
+36:srv:36,39 R@14
+
+40:killchan:70,78 Ci
+2
+44:gm:940.2,4 R@13
+
+60:k:938.2,3 i
+n1669:photoread2
+4
+32:qid:947.11,14 B
+40:m:21,22 R@13
+
+44:tree:39,43 R@19
+
+48:isthumb:65,72 i
+14
+52:data:950.1,5 Ab
+56:photonum:949.1,9 i
+60:filelen:969.1,8 i
+64:offset:967.1,7 i
+68:i:952.6,7 i
+72:dosname:968.1,8 Ab
+76:fd:1020.2,4 R@11
+
+80:fd:994.2,4 R@11
+
+84:cname:1021.2,7 s
+88:filesize:990.2,10 i
+92:k:970.6,7 i
+96:n:989.2,3 i
+104:n:1034.3,4 i
+112:dir:6,9 @0
+
+Ab1925:cacheclean
+0
+6
+32:i:1061.7,8 i
+36:tmp:1057.1,4 Lt12.3
+0:t0:16,22 s
+4:t1:16,22 i
+8:t2:16,22 i
+
+40:dosnm:1060.3,8 s
+44:it:9,11 i
+48:fl:12,14 i
+52:filelen:1062.3,10 i
+n1954:cacheadd
+3
+32:dosname1:1074.9,17 Ab
+36:isthumb:34,41 i
+40:filelen:43,50 i
+6
+44:tmp:1077.1,4 Lt12.3
+0:t0:16,22 s
+4:t1:16,22 i
+8:t2:16,22 i
+
+48:dosnm:1081.3,8 s
+52:it:9,11 i
+56:fl:12,14 i
+60:dosname:1076.1,8 s
+64:updated:1079.1,8 i
+n1985:cachedel
+2
+32:dosname1:1096.9,17 Ab
+36:isthumb:34,41 i
+5
+40:tmp:1099.1,4 Lt12.3
+0:t0:16,22 s
+4:t1:16,22 i
+8:t2:16,22 i
+
+44:dosnm:1102.3,8 s
+48:it:9,11 i
+52:filelen:12,19 i
+56:dosname:1098.1,8 s
+n2002:cachesize
+2
+32:dosname1:1110.10,18 Ab
+36:isthumb:35,42 i
+5
+40:tmp:1113.1,4 Lt12.3
+0:t0:1042.21,27 s
+4:t1:21,27 i
+8:t2:21,27 i
+
+44:dosname:1112.1,8 s
+48:dosnm:1115.3,8 s
+52:it:9,11 i
+56:filelen:12,19 i
+i2018:cachename
+2
+32:dosname:1122.10,17 Ab
+36:isthumb:34,41 i
+1
+40:name:1124.1,5 s
+s2039:poll_and_wait
+0
+0
+i2065:send_packet
+0
+2
+32:to_write:1145.1,9 i
+36:wrote_here:1156.1,11 i
+i2092:send_message
+0
+6
+32:rc:1165.1,3 Ci
+36:tc:1166.1,3 Ci
+40:v:1164.1,2 i
+44:rpid:1171.1,5 i
+48:tpid:1169.1,5 i
+60:try:1173.1,4 i
+i2128:write_message
+1
+32:rc:1187.14,16 Ci
+1
+36:wrote_here:1197.1,11 i
+n2163:getthumb
+3
+32:photonum:1216.9,17 i
+36:offset:19,25 i
+40:maxlength:27,36 i
+10
+44:off:1236.2,5 i
+48:filesize:1223.1,9 i
+52:l:1232.2,3 i
+56:h:1221.6,7 i
+60:thumbdata:1220.1,10 Ab
+64:w:1221.9,10 i
+68:err:1,4 i
+72:ttype:12,17 i
+88:tmpoffset:1255.2,11 i
+100:file:1222.1,5 @21
+
+Ab2419:getpicture2
+3
+32:photonum:1279.12,20 i
+36:offset:22,28 i
+40:maxlength:30,39 i
+6
+44:off:1291.1,4 i
+48:filesize:1282.1,9 i
+52:l:1288.1,2 i
+56:filedata:1313.1,9 Ab
+60:err:1303.6,9 i
+76:file:1281.1,5 @21
+
+Ab2597:erase_file
+1
+32:file:1318.11,15 @21
+
+1
+60:off:1323.1,4 i
+i2639:get_storage_status
+0
+5
+32:off:1351.1,4 i
+36:s:1344.1,2 s
+40:raw:1352.19,22 i
+44:available:8,17 i
+48:taken:1,6 i
+s2703:get_power_mode
+0
+2
+32:off:1374.1,4 i
+36:mode:1367.1,5 i
+s2734:set_clock_data
+1
+32:s:1379.15,16 s
+10
+36:tm:1383.2,4 R@27
+
+40:i:1398.7,8 i
+44:i2:1402.8,10 i
+48:n:1395.3,4 i
+52:datetime:5,13 Ls
+56:n2:1399.4,6 i
+60:data:7,11 Ls
+80:err:1381.1,4 i
+84:off:1384.2,5 i
+84:off:1397.2,5 i
+i2830:set_clock
+1
+32:s:1413.10,11 s
+0
+i2854:addzeros
+1
+32:s:1423.9,10 s
+4
+36:i:1429.6,7 i
+40:rs:1426.1,3 s
+44:isnum:1428.1,6 i
+48:start:1427.1,6 i
+s2893:get_clock
+0
+1
+32:s:1450.1,2 s
+s2932:get_file_list
+0
+0
+i2961:setfiledata
+0
+1
+32:off:1471.1,4 i
+n2995:get_file_size
+1
+32:i:1478.14,15 i
+0
+i3019:setfiledata2
+1
+32:i:1489.13,14 i
+1
+36:off:1491.1,4 i
+n3055:set_interface_timeout
+0
+1
+32:off:1503.1,4 i
+n3089:display_filelist
+0
+3
+32:off:1513.1,4 i
+36:i:6,7 i
+40:s:1517.1,2 s
+s3192:get_camera_capabilities
+0
+0
+s3219:capabilities
+0
+18
+32:off:1581.1,4 i
+36:line:1595.2,6 s
+40:l:1582.1,2 i
+44:s:1584.1,2 Ab
+48:n:1582.7,8 i
+52:pname:1583.1,6 Ab
+56:fact:1601.2,6 s
+60:m:1582.4,5 i
+64:desc:1583.8,12 Ab
+68:firsttime:1591.1,10 i
+72:i:1581.6,7 i
+76:rs:1585.1,3 s
+80:j:1594.6,7 i
+84:k:1610.9,10 i
+88:ncaps:1581.9,14 i
+92:t:16,17 i
+96:t:1604.4,5 Lt8.2
+0:t0:16,22 s
+4:t1:16,22 i
+
+116:cl:1618.4,6 R@28
+
+s3528:isin
+2
+32:los:1665.5,8 Ls
+36:s:26,27 s
+0
+i3538:set_capture_data
+0
+0
+i3548:get_camera_state
+2
+32:pname:1682.17,22 s
+36:offset:31,37 i
+9
+40:off:1687.1,4 i
+44:data:1714.8,12 Ab
+48:s:1704.1,2 s
+52:q:1707.7,8 i
+56:rlen:1702.1,5 i
+60:type1:1715.2,7 i
+64:name:1714.2,6 Ab
+68:tmp:1715.9,12 i
+52:i:1713.6,7 i
+s3747:set_camera_state
+2
+32:pname:1742.17,22 s
+36:val:32,35 i
+3
+40:off:1747.1,4 i
+44:na:1760.2,4 i
+48:e:1759.6,7 i
+s3813:capture
+0
+1
+32:d:1778.1,2 i
+i3844:dump_message
+0
+0
+n3911:build_cdp_header
+2
+32:cdp:1795.17,20 Ab
+36:x:37,38 i
+1
+40:l:1806.1,2 i
+i3948:poll_and_reply
+1
+32:nak:1815.15,18 i
+0
+i3985:receive_packet
+1
+32:buf:1831.15,18 Ab
+2
+36:l:1839.1,2 i
+40:r:1841.1,2 i
+i4031:receive_message
+0
+2
+36:message_len:1867.1,12 i
+40:rc:1860.1,3 i
+i4102:reset
+1
+32:fd:1882.6,8 R@11
+
+0
+n4122:kill
+1
+32:pid:1890.5,8 i
+1
+36:pctl:1892.1,5 R@11
+
+n4138:killg
+1
+32:pid:1897.6,9 i
+1
+36:fd:1899.6,8 R@11
+
+n4155:serialport
+1
+32:port:1910.11,15 i
+7
+36:i:1919.6,7 i
+40:ctlfd:1930.1,6 R@11
+
+44:config:1934.1,7 As
+48:fd:1927.1,3 R@11
+
+52:serport:1916.1,8 s
+56:serctl:1917.1,7 s
+60:statfd:1920.2,8 R@11
+
+t12.3
+0:t0:1910.26,37 R@11
+
+4:t1:26,37 R@11
+
+8:t2:26,37 s
+4276:consume
+1
+32:fd:1957.8,10 R@11
+
+0
+n4289:beacon_intro
+3
+32:data:1965.13,17 CAb
+36:pchan:42,47 Ci
+40:fd:62,64 R@11
+
+7
+48:buf:1967.1,4 Ab
+52:k:1986.6,7 i
+56:cbuf:1968.1,5 Ab
+60:failed:1972.1,7 Ab
+64:n:1976.2,3 i
+68:pid:1969.1,4 i
+64:i:1985.1,2 i
+n4387:beacon_result
+3
+32:data:2000.14,18 CAb
+36:pchan:43,48 Ci
+40:fd:63,65 R@11
+
+7
+48:p:2008.1,2 i
+52:buf:2002.1,4 Ab
+56:intro:2009.1,6 i
+60:cbuf:2003.1,5 Ab
+64:pid:2004.1,4 i
+84:i:2011.2,3 i
+84:k:2027.6,7 i
+n4454:beacon_comp
+2
+32:buf:2039.12,15 Ab
+36:C:32,33 @22
+
+1
+84:speed:2041.1,6 s
+i4577:read_n
+4
+32:fd:2083.7,9 R@11
+
+36:buf:24,27 Ab
+40:n:44,45 i
+44:res:52,55 Ci
+3
+48:nread:2089.1,6 i
+52:i:2091.2,3 i
+56:pid:2085.1,4 i
+n4613:read_n_to
+4
+32:fd:2115.10,12 R@11
+
+36:buf:27,30 Ab
+40:n:47,48 i
+44:t:49,50 i
+6
+48:rc:2118.1,3 Ci
+52:tc:2119.1,3 Ci
+56:v:2117.1,2 i
+60:rpid:2124.1,5 i
+64:tpid:2122.1,5 i
+80:try:2126.1,4 i
+i4658:write_n
+3
+32:fd:2140.8,10 R@11
+
+36:buf:25,28 Ab
+40:n:45,46 i
+2
+44:nwrite:2143.1,7 i
+48:i:2145.2,3 i
+i4710:readstat
+0
+3
+32:buf:2164.1,4 Ab
+36:k:2167.3,4 i
+40:statfd:2163.1,7 R@11
+
+n4753:beacon_ack
+1
+32:C:2176.11,12 @22
+
+1
+80:i:2179.1,2 i
+n4809:timer2
+2
+32:tick:2205.7,11 Ci
+36:delay:26,31 i
+1
+40:pid:2207.1,4 i
+n4821:beacon_ok
+1
+32:buf:2213.10,13 Ab
+1
+40:i:2216.6,7 i
+i4852:check_sum
+2
+32:buf:2226.10,13 Ab
+36:l:30,31 i
+2
+40:i:2229.7,8 i
+44:sum:2228.1,4 i
+b4863:set_int
+3
+32:b:2235.8,9 Ab
+36:i:26,27 i
+40:off:29,32 i
+0
+i4880:set_fstring
+3
+32:b:2245.12,13 Ab
+36:s:30,31 Ab
+40:off:48,51 i
+1
+44:i:2247.6,7 i
+i4896:set_dosname
+3
+32:b:2254.12,13 Ab
+36:s:30,31 Ab
+40:off:48,51 i
+1
+44:i:2256.6,7 i
+i4912:get_int2
+1
+32:b:2277.9,10 Ab
+1
+36:i:2279.1,2 i
+i4928:get_string
+3
+32:b:2294.11,12 Ab
+36:off:29,32 i
+40:l:39,40 i
+1
+44:s:2296.1,2 Ab
+t8.2
+0:t0:2294.49,62 Ab
+4:t1:49,62 i
+4936:sconv
+1
+32:b:2306.6,7 Ab
+2
+36:i:2309.1,2 i
+40:s:2308.1,2 s
+s4948:getqid
+2
+32:i:2320.7,8 i
+36:ftype:10,15 i
+1
+40:qid:2322.1,4 i
+i4952:gettype
+1
+32:qid:2326.8,11 i
+1
+36:ftype:2328.1,6 i
+i4955:convert_thumb
+3
+32:w:2341.14,15 i
+36:h:16,17 i
+40:data:24,28 Ab
+11
+44:bb:2354.2,4 b
+45:gb:2353.2,4 b
+46:rb:2352.2,4 b
+48:index:2344.1,6 i
+52:rgb:2343.1,4 Ab
+56:rgbi:2345.1,5 i
+60:i:2346.6,7 i
+64:loop:2356.7,11 i
+88:y:2349.2,3 f
+96:cb:2348.2,4 f
+104:cr:2350.2,4 f
+Ab5017:conv
+1
+32:a:2366.5,6 f
+1
+40:r:2368.1,2 i
+b5024:thumb2bit
+3
+32:buf:2374.10,13 Ab
+36:w:30,31 i
+40:h:32,33 i
+2
+44:bitarray:2378.1,9 Ab
+48:convbuf:2376.1,8 Ab
+Ab5048:jpg2bit
+1
+32:s:2385.8,9 s
+0
+s5068:getoldfiledata
+0
+1
+32:i:2397.5,6 i
+n5090:updatetree
+1
+32:tree:2403.11,15 R@19
+
+10
+36:i:2405.6,7 i
+40:name:2406.2,6 s
+44:tmp:2408.2,5 Lt12.3
+0:t0:17,23 s
+4:t1:17,23 i
+8:t2:17,23 i
+
+48:found:2407.2,7 i
+52:oldname:2410.4,11 s
+56:oldqid:13,19 i
+60:oldthumbqid:21,32 i
+80:oldname:2429.3,10 s
+84:oldqid:12,18 i
+88:oldthumbqid:20,31 i
+n5157:updateintree
+3
+32:tree:2436.13,17 R@19
+
+36:name:39,43 s
+40:i:53,54 i
+0
+n5204:addtotree
+3
+32:tree:2451.10,14 R@19
+
+36:name:36,40 s
+40:i:50,51 i
+1
+44:parentqid:2456.1,10 i
+n5257:keepalive
+1
+32:alivechan:2472.10,19 Ci
+1
+36:now:2477.2,5 i
+n5286:reconnect
+1
+32:n:2486.10,11 i
+3
+36:delay:2490.1,6 i
+40:attempt:2488.1,8 i
+44:to5:2491.1,4 i
+i5356:print
+2
+32:s:2522.6,7 s
+36:v:17,18 i
+0
+n5378:readinterface
+3
+32:qid:2530.14,17 i
+40:offset:25,31 B
+48:size:38,42 i
+5
+52:fd:2534.1,3 R@11
+
+56:i:2532.1,2 i
+60:buf:2533.1,4 Ab
+80:n:2537.2,3 i
+88:dir:5,8 @0
+
+t8.2
+0:t0:2530.51,63 R@0
+
+4:t1:51,63 Ab
+47
+868:C:174.0,1 @22
+
+1112:Qabl:73.38,42 i
+1116:Qctl:32,36 i
+1120:Qinterface:74.41,51 i
+1124:Qjpgdir:15,22 i
+1128:Qpwr:24,28 i
+1132:Qstate:0,6 i
+1136:Qstore:73.44,50 i
+1140:Qthumbdir:74.30,39 i
+1144:Qtime:8,13 i
+1188:abilitiesfilter:410.0,15 As
+1220:bak:103.0,3 Ab
+1228:bintro:93.0,6 Ab
+1236:cachelist:1042.0,9 Lt12.3
+0:t0:21,27 s
+4:t1:21,27 i
+8:t2:21,27 i
+
+1268:caplist:1561.0,7 LR@28
+
+1276:connected:181.0,9 i
+1288:currentattr:429.13,24 At8.2
+0:t0:36,42 s
+4:t1:36,42 i
+
+1312:daytime:6.1,8 mDaytime
+2:1.0,53.1 0
+
+1316:defattr:0:428.0,7 Lt8.2
+0:t0:19,25 s
+4:t1:19,25 i
+
+1320:defaultattr:429.0,11 At8.2
+0:t0:36,42 s
+4:t1:36,42 i
+
+1324:dirqid:73.24,30 i
+1344:error_table:76.0,11 As
+1348:ex:1214.0,2 @25
+
+1368:exitfid:486.0,7 i
+1388:filelist:176.0,8 A@24
+
+1432:gpid:187.0,4 i
+1444:ignoreabls:426.0,10 Ls
+1452:interfacepaths:185.0,14 As
+1484:nametree:14.1,9 mNametree
+4:110.0,135.1 0
+
+1488:nextjpgqid:0:73.0,10 i
+1492:nexttmbqid:12,22 i
+1504:oldfiles:2392.0,8 Lt12.3
+0:t0:20,26 s
+4:t1:20,26 i
+8:t2:20,26 i
+
+1512:pak:124.0,3 Ab
+1532:pwl:119.0,3 Ab
+1576:recon:182.0,5 i
+1592:reslength:177.0,9 i
+1616:set_camera_props:303.0,16 At8.2
+0:t0:304.2,8 s
+4:t1:10,11 i
+
+1628:statopt:146.0,7 As
+1636:str:17.1,4 mString
+5:1.0,39.1 0
+
+1640:styx:0:8.1,5 mStyx
+3:1.0,182.1 0
+
+1644:styxservers:0:11.1,12 mStyxservers
+4:1.0,108.1 0
+
+1648:sys:0:4.1,4 mSys
+1:0,160.1 0
+
+1656:uid:0:484.0,3 s
+1660:usecache:180.0,8 i
+1664:users:519.0,5 A@26
+
+1668:verbosity:183.0,9 i
+1672:wait:179.0,4 i
diff --git a/appl/demo/camera/camload.bit b/appl/demo/camera/camload.bit
new file mode 100644
index 00000000..fdad09af
--- /dev/null
+++ b/appl/demo/camera/camload.bit
Binary files differ
diff --git a/appl/demo/camera/camproc.bit b/appl/demo/camera/camproc.bit
new file mode 100644
index 00000000..ce078ab7
--- /dev/null
+++ b/appl/demo/camera/camproc.bit
Binary files differ
diff --git a/appl/demo/camera/mkfile b/appl/demo/camera/mkfile
new file mode 100644
index 00000000..9b393708
--- /dev/null
+++ b/appl/demo/camera/mkfile
@@ -0,0 +1,42 @@
+<../../../mkconfig
+
+TARG=\
+ camera.dis\
+ camload.bit\
+ camproc.bit\
+ tkinterface.dis\
+
+SHTARG=\
+ runcam.sh\
+
+MODULES=\
+
+SYSMODULES= \
+ arg.m\
+ bufio.m\
+ daytime.m\
+ draw.m\
+ grid/readjpg.m\
+ readdir.m\
+ selectfile.m\
+ string.m\
+ styx.m\
+ styxservers.m\
+ sys.m\
+ tk.m\
+ tkclient.m\
+
+DISBIN=$ROOT/dis/demo/camera
+
+<$ROOT/mkfiles/mkdis
+
+$DISBIN/%.bit: %.bit
+ rm -f $target && cp $stem.bit $target
+
+SHFILES=${SHTARG:%.sh=$DISBIN/%}
+install:V: $SHFILES
+%.install:V: $DISBIN/%
+%.installall:V: $DISBIN/%
+
+$DISBIN/%: %.sh
+ cp $stem.sh $target && chmod a+rx $target
diff --git a/appl/demo/camera/runcam.sh b/appl/demo/camera/runcam.sh
new file mode 100755
index 00000000..51948067
--- /dev/null
+++ b/appl/demo/camera/runcam.sh
@@ -0,0 +1,3 @@
+#!/dis/sh
+
+grid/register -a resource Camera -a name Y2K -a model 'Kodak DC260' -a 'Image resource' 1 {demo/camera/camera.dis -v 2 -p 0 -n Y2K -f /dis/demo/camera/tkinterface.dis -f /dis/demo/camera/readjpg.dis -f /dis/demo/camera/camload.bit -f /dis/demo/camera/camproc.bit}
diff --git a/appl/demo/camera/runcamlocal.sh b/appl/demo/camera/runcamlocal.sh
new file mode 100755
index 00000000..b31d6501
--- /dev/null
+++ b/appl/demo/camera/runcamlocal.sh
@@ -0,0 +1,3 @@
+#!/dis/sh
+
+mount -A {demo/camera/camera.dis -v 2 -p 0} /n/remote
diff --git a/appl/demo/camera/tkinterface.b b/appl/demo/camera/tkinterface.b
new file mode 100644
index 00000000..69be88e9
--- /dev/null
+++ b/appl/demo/camera/tkinterface.b
@@ -0,0 +1,2508 @@
+# Sort out timing with taking photo & getting jpg/thumbnail - make sure it gets the right one when 2photos have been taken & sort out 'cannot communicate with camera' error
+
+implement tkinterface;
+
+include "tk.m";
+ tk: Tk;
+include "tkclient.m";
+ tkclient: Tkclient;
+include "sys.m";
+ sys : Sys;
+include "daytime.m";
+ daytime: Daytime;
+include "readdir.m";
+ readdir: Readdir;
+include "bufio.m";
+ bufio: Bufio;
+ Iobuf: import bufio;
+include "selectfile.m";
+ selectfile: Selectfile;
+
+include "string.m";
+ str : String;
+include "draw.m";
+ draw: Draw;
+ Context, Display, Point, Rect, Image, Screen, Font: import draw;
+include "grid/readjpg.m";
+ readjpg: Readjpg;
+
+display : ref draw->Display;
+context : ref draw->Context;
+camerapath := "";
+savepath := "";
+tmppath := "/tmp/";
+usecache := 1;
+working := 0;
+processing := 0;
+coords: draw->Rect;
+DONE : con 1;
+KILLED : con 2;
+font: ref Draw->Font;
+tkfont := "";
+tkfontb := "";
+tkfontf := "";
+ssize := 3;
+maxsize : Point;
+nilrect := Draw->Rect((0,0),(0,0));
+runwithoutcam := 0;
+toplevels : list of (ref Tk->Toplevel, string, list of int, int) = nil;
+procimg : ref Draw->Image;
+loadimg: ref Draw->Image;
+
+tkinterface : module {
+ init : fn (ctxt : ref Draw->Context, argv : list of string);
+};
+
+init(ctxt : ref Draw->Context, argv : list of string)
+{
+ display = ctxt.display;
+ context = ctxt;
+
+ sys = load Sys Sys->PATH;
+# sys->pctl(Sys->NEWPGRP, nil);
+# sys->pctl(Sys->FORKNS, nil);
+
+ str = load String String->PATH;
+ readdir = load Readdir Readdir->PATH;
+ daytime = load Daytime Daytime->PATH;
+ bufio = load Bufio Bufio->PATH;
+
+ str = load String String->PATH;
+ draw = load Draw Draw->PATH;
+
+ tk = load Tk Tk->PATH;
+ tkclient = load Tkclient Tkclient->PATH;
+ tkclient->init();
+ selectfile = load Selectfile Selectfile->PATH;
+ selectfile->init();
+ readjpg = load Readjpg Readjpg->PATH;
+ readjpg->init(display);
+ font = draw->Font.open(display, "/fonts/charon/plain.small.font");
+ runfrom := hd argv;
+ p := isat2(runfrom,"/");
+ savepath = runfrom[:p+1];
+ argv = tl argv;
+ while (argv != nil) {
+ if (camerapath == "" && (hd argv)[0] == '/') camerapath = hd argv;
+ if (hd argv == "nocache") usecache = 0;
+ argv = tl argv;
+ }
+ if (camerapath == "")
+ camerapath = "./";
+ if (camerapath != "" && camerapath[len camerapath - 1] != '/')
+ camerapath[len camerapath] = '/';
+
+ r := display.image.r;
+# if (r.dx() < 800 || r.dy() < 600) ssize = 2;
+ if (r.dx() < 400 || r.dy() < 300) ssize = 1;
+ maxsize = (r.dx(), r.dy());
+
+ if (ssize == 1) {
+ tkfont = "/fonts/charon/plain.tiny.font";
+ tkfontb = "/fonts/charon/bold.tiny.font";
+ tkfontf = "/fonts/pelm/unicode.8.font";
+ }
+ else if (ssize == 2) {
+ tkfont = "/fonts/charon/plain.small.font";
+ tkfontb = "/fonts/charon/bold.small.font";
+ tkfontf = "/fonts/pelm/unicode.8.font";
+ }
+ else {
+ tkfont = "/fonts/charon/plain.normal.font";
+ tkfontb = "/fonts/charon/bold.normal.font";
+ tkfontf = "/fonts/pelm/unicode.8.font";
+ }
+ if ((sys->stat(tkfont)).t0 == -1)
+ tkfont = "";
+ else tkfont = " -font " + tkfont;
+ if ((sys->stat(tkfontb)).t0 == -1)
+ tkfontb = "";
+ else tkfontb = " -font " + tkfontb;
+ if ((sys->stat(tkfontf)).t0 == -1)
+ tkfontf = "";
+ else tkfontf = " -font " + tkfontf;
+
+ procimg = display.open("camproc.bit");
+ loadimg = display.open("camload.bit");
+
+ spawn tkstuff();
+}
+
+# Tk stuff
+
+thumbscr := array[] of {
+ "frame .f",
+ "frame .fthumb -bg white",
+ "frame .f.finfo",
+ "frame .f.fsnap",
+ "menubutton .f.fsnap.fsettings.mb2 -text {Selected\n(0 files)} -menu .m2 @",
+ "menu .m2 @",
+ ".m2 add command -text {Select All} -command {send butchan selectall 1}",
+ ".m2 add command -text {Select None} -command {send butchan selectall 0}",
+ ".m2 add command -text {Invert Selection} -command {send butchan invert}",
+ ".m2 add command -text {Refresh Files} -command {send butchan refresh}",
+ "menu .m @",
+
+ "frame .f.fsnap.fsettings -borderwidth 1 -relief raised",
+ "menubutton .f.fsnap.fsettings.mb -text {Settings} -menu .m &",
+ "button .f.fsnap.fsettings.b -text {Information} -command {send butchan info} &",
+ "grid .f.fsnap.fsettings.b -row 0 -column 0 -sticky ew",
+ "grid .f.fsnap.fsettings.mb -row 1 -column 0 -sticky ew",
+ "grid .f.fsnap.fsettings.mb2 -row 2 -column 0 -sticky ew",
+
+ "frame .f.fsnap.fstore -borderwidth 1 -relief raised",
+ "label .f.fsnap.fstore.l1 -text { Photos taken: } @",
+ "label .f.fsnap.fstore.l2 -text { Remaining: } @",
+ "label .f.fsnap.fstore.l3 -text { } @",
+ "label .f.fsnap.fstore.l4 -text { } @",
+ "grid .f.fsnap.fstore.l1 -row 0 -column 0 -sticky w",
+ "grid .f.fsnap.fstore.l2 -row 1 -column 0 -sticky w",
+ "grid .f.fsnap.fstore.l3 -row 0 -column 1 -sticky w",
+ "grid .f.fsnap.fstore.l4 -row 1 -column 1 -sticky w",
+
+ "frame .f.fsnap.ftime -borderwidth 1 -relief raised",
+ "label .f.fsnap.ftime.l1 -text {Local: } @",
+ "label .f.fsnap.ftime.l2 -text {Camera: } @",
+ "label .f.fsnap.ftime.l3",
+ "label .f.fsnap.ftime.l4",
+ "checkbutton .f.fsnap.ftime.cb -text {Set camera to local time} -variable time &",
+ "button .f.fsnap.ftime.b -text {refresh} -command {send butchan gettime} &",
+ "grid .f.fsnap.ftime.l1 -row 0 -column 0 -sticky w",
+ "grid .f.fsnap.ftime.l2 -row 1 -column 0 -sticky w",
+ "grid .f.fsnap.ftime.l3 -row 0 -column 1 -sticky w",
+ "grid .f.fsnap.ftime.l4 -row 1 -column 1 -sticky w",
+ "grid .f.fsnap.ftime.cb -row 2 -column 0 -columnspan 2",
+ "grid .f.fsnap.ftime.b -row 3 -column 0 -columnspan 2",
+
+ "button .f.fsnap.b -text {Take Photo} -command {send butchan snap} &",
+ "grid columnconfigure .f.fsnap 2 -minsize 150",
+ "frame .f.fcom",
+ "frame .f.f1 -background #0d0d0d1a",
+ "canvas .f.f1.c1 -yscrollcommand {.f.f1.sb1 set} -height 255 -width 542 -bg white",
+ ".f.f1.c1 create window 0 0 -window .fthumb -anchor nw",
+ "scrollbar .f.f1.sb1 -command {.f.f1.c1 yview}",
+
+# "frame .f.f2",
+# "canvas .f.f2.c1 -width 556 -height 304",
+# ".f.f2.c1 create window 0 0 -window .f.fsnap -anchor nw",
+
+ "grid .f.fsnap -column 0 -row 0",
+ "grid .f.f1 -column 0 -row 1",
+ "grid .f.f1.c1 -column 0 -row 0",
+ "grid .f.f1.sb1 -column 1 -row 0 -sticky ns",
+# "grid .f.f2 -column 0 -row 0",
+# "grid .f.f2.c1 -column 0 -row 0 -sticky ew",
+ "bind .Wm_t <ButtonPress-1> +{focus .}",
+ "bind .Wm_t.title <ButtonPress-1> +{focus .}",
+};
+
+lastpath := "";
+
+Aitem: adt {
+ pname,desc: string;
+ dtype,factory: int;
+ read, location: string;
+ data: list of (string, int);
+};
+LIST: con 0;
+MINMAX: con 1;
+OTHER: con 2;
+
+noabilities := 0;
+abilities : array of Aitem;
+
+getdesc(l : list of string): list of string
+{
+ s := "";
+ while(hd l != "min" && hd l != "items" && tl l != nil) {
+ s += hd l + " ";
+ l = tl l;
+ }
+ while (s[len s - 1] == ' ' || s[len s - 1] == '\n')
+ s = s[:len s -1];
+ l = s :: l;
+ return l;
+}
+
+inflist : list of (string, string);
+ablmenu : array of string;
+
+getabilities()
+{
+ inflist = nil;
+ abilities = array[200] of Aitem;
+ fd := bufio->open(camerapath+"abilities", bufio->OREAD);
+ if (runwithoutcam)
+ fd = bufio->open("/usr/danny/camera/abls", bufio->OREAD);
+ i := 0;
+ for (;;) {
+ take := 0;
+ s := fd.gets('\n');
+ if (s == "") break;
+ (n, lst) := sys->tokenize(s," ,:\t\n");
+ abilities[i].data = nil;
+ abilities[i].read = "";
+ if (lst != nil && len hd lst == 4) {
+ abilities[i].pname = hd lst;
+ lst = getdesc(tl lst);
+ abilities[i].desc = hd lst;
+ if (hd tl lst == "items") {
+ abilities[i].dtype = LIST;
+ abilities[i].factory = int hd tl tl tl tl lst;
+ noitems := int hd tl tl lst;
+ for (k := 0; k < noitems; k++) {
+ s = fd.gets('\n');
+ (n2, lst2) := sys->tokenize(s,",:\t\n");
+ name := hd lst2;
+ val := int hd tl lst2;
+ if (k == 0) {
+ if (abilities[i].pname == "ssiz")
+ abilities[i].factory = val;
+ else if (abilities[i].pname == "scpn")
+ abilities[i].factory = val;
+ }
+ if (val == abilities[i].factory && noitems > 1) name += " *";
+ abilities[i].data = (name, val) :: abilities[i].data;
+ }
+ if (noitems < 2) {
+ inflist = (abilities[i].desc, (hd abilities[i].data).t0) :: inflist;
+ take = 1;
+ }
+ }
+ else if (hd tl lst == "min") {
+ abilities[i].dtype = MINMAX;
+ abilities[i].factory = int hd tl tl tl tl tl tl lst;
+ min := int hd tl tl lst;
+ max := int hd tl tl tl tl lst;
+ mul := 1;
+ while (max > 200000) {
+ min /= 10;
+ max /= 10;
+ mul *= 10;
+ }
+ abilities[i].data = ("min", min) :: abilities[i].data;
+ abilities[i].data = ("max", max) :: abilities[i].data;
+ abilities[i].data = ("mul", mul) :: abilities[i].data;
+ }
+ else {
+ inflist = (abilities[i].desc,list2string(tl lst)) :: inflist;
+ take = 1;
+ }
+ if (take ||
+ abilities[i].desc == "Time Format" ||
+ abilities[i].desc == "Date Format" ||
+ abilities[i].desc == "File Type" ||
+ contains(abilities[i].desc,"Video") ||
+ contains(abilities[i].desc,"Media") ||
+ contains(abilities[i].desc,"Sound") ||
+ contains(abilities[i].desc,"Volume") ||
+ contains(abilities[i].desc,"Slide") ||
+ contains(abilities[i].desc,"Timelapse") ||
+ contains(abilities[i].desc,"Burst") ||
+ contains(abilities[i].desc,"Power") ||
+ contains(abilities[i].desc,"Sleep"))
+ i--;
+ i++;
+ }
+ }
+ noabilities = i;
+}
+
+isat(s: string, test: string): int
+{
+ num := -1;
+ if (len test > len s) return -1;
+ for (i := 0; i < (1 + (len s) - (len test)); i++) {
+ if (num == -1 && test == s[i:i+len test]) num = i;
+ }
+ return num;
+}
+
+isat2(s: string, test: string): int
+{
+ num := -1;
+ if (len test > len s) return -1;
+ for (i := len s - len test; i >= 0; i--) {
+ if (num == -1 && test == s[i:i+len test]) num = i;
+ }
+ return num;
+}
+
+
+nomatches(s: string): int
+{
+ n := 0;
+ for (i := 0; i < noabilities; i++) {
+ test := abilities[i].desc;
+ if (len s <= len test && test[:len s] == s) n++;
+ }
+ return n;
+}
+
+matches(s1,s2: string): int
+{
+ if (len s1 < len s2) return 0;
+ if (s1[:len s2] == s2) return 1;
+ return 0;
+}
+
+biggestmatch(nm: int, s: string, l: int): string
+{
+ bigmatch := s;
+ match := s[:l];
+ for (;;) {
+ if (bigmatch == match) break;
+ if (nomatches(bigmatch) == nm) return bigmatch;
+ p := isat2(bigmatch," ");
+ if (p < len match) break;
+ bigmatch = bigmatch[:p];
+ }
+ return match;
+}
+
+getabllist(): array of string
+{
+ los : list of string;
+ los = nil;
+ for (i := 0; i < noabilities; i++) {
+ p := 0;
+ p2 := 0;
+ nm : int;
+ for (;;) {
+ nm = -1;
+ tmpl := los;
+ while (tmpl != nil) {
+ if (matches(abilities[i].desc, hd tmpl)) nm = 0;
+ tmpl = tl tmpl;
+ }
+ if (nm == 0) break;
+ p += p2;
+ tmp := abilities[i].desc[p:];
+ p2 = isat(tmp, " ");
+ if (p2 == -1) p2 = len tmp;
+ else p2++;
+ nm = nomatches(abilities[i].desc[:p+p2]);
+ if (nm <= 5) break;
+ }
+ if (nm > 0) {
+ listitem := biggestmatch(nm, abilities[i].desc,p+p2);
+ los = listitem :: los;
+ }
+ }
+ ar := array[len los] of string;
+ for (i = len ar - 1; i >= 0; i--) {
+ ar[i] = hd los;
+ los = tl los;
+ }
+ return ar;
+}
+
+buildabilitiesframes(top: ref Tk->Toplevel)
+{
+ ablmenu = getabllist();
+ tkcmd(top, ".m add command -text {Refresh Main Screen} -command {send butchan refreshstate}");
+ tkcmd(top, ".m add command -text {Reset Camera} -command {send butchan reset}");
+ for (k := 0; k < len ablmenu; k++) {
+ if (len ablmenu[k] > 4 && (ablmenu[k][:4] == "Zoom" || ablmenu[k][:5] == "Still"))
+ buildabilitiesframe(top,k,"butchan");
+ else
+ tkcmd(top, ".m add command -text {"+ablmenu[k]+
+ "} -command {send butchan abls "+string k+"}");
+ }
+ tkcmd(top, "menu .mthumb "+tkfont);
+ tkcmd(top, ".mthumb add command -label {Selection (88 files)}");
+ tkcmd(top, ".mthumb add separator");
+ for (k = nothumbs; k < len menu; k++)
+ tkcmd(top, ".mthumb add command -text {"+menu[k].text+"} " +
+ "-command {send butchan}");
+
+}
+
+buildabilitiesframe(top: ref Tk->Toplevel,k: int, chanout: string)
+{
+ nm := string nomatches(ablmenu[k]);
+ count2 := 0;
+ for (i := 0; i < noabilities; i++) {
+ if (matches(abilities[i].desc,ablmenu[k])) {
+
+ frame : string;
+ case abilities[i].pname {
+ "scpn" or "ssiz" or "zpos" =>
+ frame = ".f.fsnap.f"+abilities[i].pname;
+ tkcmd(top, "frame "+frame+" -borderwidth 1 -relief raised");
+ * =>
+ frame = ".f";
+ if (count2 == 0) {
+ tkcmd(top, "frame "+frame);
+ tkcmd(top, "label "+frame+".l -text {"+ablmenu[k]+"}"+tkfontb);
+ tkcmd(top, "grid "+frame+".l -row 0 -column 0 -columnspan "+nm);
+ }
+ frame = frame + ".f"+string count2;
+ tkcmd(top, "frame "+frame+" -borderwidth 1 -relief raised");
+ tkcmd(top, "grid "+frame+" -row 1 -column "+string count2+ " -sticky nsew");
+ mul := getval(abilities[i].data,"mul");
+ s := abilities[i].desc[len ablmenu[k]:];
+ if (mul != 1 && abilities[i].dtype == MINMAX)
+ s += " (x"+string mul+")";
+ tkcmd(top, "label "+frame+".l -text {"+s+"}"+tkfont);
+ tkcmd(top, "grid "+frame+".l -row 0 -column 0 -sticky nw");
+ }
+
+ if (abilities[i].dtype == MINMAX) {
+ abilities[i].location = frame+".sc";
+ min := getval(abilities[i].data,"min");
+ max := getval(abilities[i].data,"max");
+ tkcmd(top, sys->sprint("scale %s.sc -to %d -from %d %s", frame,min,max,tkfont));
+ tkcmd(top, "bind "+frame+".sc <ButtonPress-3> {send " +
+ chanout + " scaleval " + string i + " %X %Y}");
+ tkcmd(top, "grid "+frame+".sc -row 1 -column 0");
+ }
+ else if (abilities[i].dtype == LIST) {
+ tkcmd(top, "frame "+frame+".frb");
+ tkcmd(top, "grid "+frame+".frb -row 1 -column 0");
+ tmp := abilities[i].data;
+ row := 0;
+ while (tmp != nil) {
+ (name, val) := hd tmp;
+ s := sys->sprint("radiobutton %s.frb.rb%d -text {%s} -value %d -variable %s -height %d %s",frame,row,name,val,abilities[i].pname,24 - (3*(3-ssize)), tkfont);
+ tkcmd(top,s);
+ tkcmd(top, sys->sprint("grid %s.frb.rb%d -row %d -column 0 -sticky w",
+ frame,row,row));
+ tmp = tl tmp;
+ row++;
+ }
+ }
+ tkcmd(top, "button "+frame+".bs -text {Set} -command "+
+ "{send "+chanout+" set "+string i+"}"+butheight+tkfont);
+ tkcmd(top, "grid "+frame+".bs -row 2 -column 0 -sticky ew");
+ if (abilities[i].dtype == MINMAX) {
+ tkcmd(top, "button "+frame+".bf -text {Default} -command "+
+ "{send "+chanout+" setdef "+string i+"}"+butheight+tkfont);
+ tkcmd(top, "grid "+frame+".bf -row 3 -column 0 -sticky ew");
+ }
+ count2++;
+ }
+ }
+}
+
+getvaluescr := array[] of {
+ "frame .f -height 84 -width 114 -borderwidth 2 -relief raised",
+ "label .f.l1 -text {Enter Value:} @",
+ "entry .f.e1 -width 100 -bg white @",
+ "button .f.b1 -text { ok } -command {send chanin ok} &",
+ "button .f.b2 -text cancel -command {send chanin cancel} &",
+ "grid .f.l1 -column 1 -row 0 -columnspan 2 -padx 0 -sticky w",
+ "grid .f.e1 -column 1 -row 1 -columnspan 2 -padx 0 -pady 5",
+ "grid .f.b1 -column 1 -row 2 -padx 0",
+ "grid .f.b2 -column 2 -row 2 -padx 0",
+ "grid columnconfigure .f 1 -minsize 20",
+ "grid columnconfigure .f 2 -minsize 20",
+ "grid columnconfigure .f 3 -minsize 5",
+ "grid rowconfigure .f 0 -minsize 20",
+ "grid rowconfigure .f 1 -minsize 20",
+ "grid rowconfigure .f 2 -minsize 20",
+ "grid columnconfigure .f 0 -minsize 5",
+ "bind .f.e1 <Key> {send chanin key %s}",
+ "focus .f.e1",
+ "pack .f",
+ "update",
+};
+
+getvaluescreen(x,y: string): int
+{
+ x = string ((int x) - 55);
+ y = string ((int y) - 30);
+ (top, nil) := tkclient->toplevel(context, "-x "+x+" -y "+y, nil, tkclient->Plain);
+ chanin := chan of string;
+ tk->namechan(top, chanin, "chanin");
+ for (tk1 := 0; tk1 < len getvaluescr; tk1++)
+ tkcmd(top, getvaluescr[tk1]);
+ tkclient->onscreen(top, "exact");
+ tkclient->startinput(top, "kbd"::"ptr"::nil);
+ for(;;) {
+ alt {
+ s := <-top.ctxt.kbd =>
+ tk->keyboard(top, s);
+ s := <-top.ctxt.ptr =>
+ tk->pointer(top, *s);
+ inp := <- chanin =>
+ if (inp == "ok") return int tkcmd(top, ".f.e1 get");
+ else if (inp == "cancel") return -1;
+ else if (inp[:3] == "key") {
+ s := " ";
+ s[0] = int inp[4:];
+ if (s[0] == '\n') return int tkcmd(top, ".f.e1 get");
+ if (s[0] >= '0' && s[0] <= '9') {
+ tkcmd(top, ".f.e1 delete sel.first sel.last");
+ tkcmd(top, ".f.e1 insert insert {"+s+"}; update");
+ }
+ }
+ }
+ }
+}
+
+infoscreen()
+{
+ (top, titlebar) := tkclient->toplevel(context, "", "Information", Tkclient->Hide);
+ tmp := inflist;
+ tkcmd(top, "frame .f");
+ tkcmd(top, "label .f.l -text {Information}");
+ tkcmd(top, "grid .f.l -row 0 -column 0 -columnspan 2");
+ tkcmd(top, "frame .f.finfo -borderwidth 1 -relief raised");
+ tkcmd(top, "grid .f.finfo");
+ infrow := 0;
+ while (tmp != nil) {
+ infrow++;
+ s := string infrow;
+ (d1,d2) := hd tmp;
+ tkcmd(top, "label .f.finfo.l"+s+"1 -text {"+d1+"}");
+ tkcmd(top, "label .f.finfo.l"+s+"2 -text {"+d2+"}");
+ tkcmd(top, "grid .f.finfo.l"+s+"1 -row "+s+" -column 0 -sticky w");
+ tkcmd(top, "grid .f.finfo.l"+s+"2 -row "+s+" -column 1 -sticky e");
+ tmp = tl tmp;
+ }
+ tkcmd(top, "pack .f; update");
+ tkclient->onscreen(top, nil);
+ tkclient->startinput(top, "kbd"::"ptr"::nil);
+ main: for(;;) {
+ alt {
+ s := <-top.ctxt.kbd =>
+ tk->keyboard(top, s);
+ s := <-top.ctxt.ptr =>
+ tk->pointer(top, *s);
+ title := <-top.ctxt.ctl or
+ title = <-top.wreq or
+ title = <- titlebar =>
+ if (title == "exit") break main;
+ tkclient->wmctl(top, title);
+ }
+ }
+}
+
+settingsscreen(k: int, ctlchan: chan of int)
+{
+ low := toplevels;
+ for (;low != nil; low = tl low) {
+ (tplvl, name, nil,nil) := hd low;
+ if (name == ablmenu[k]) {
+ tkcmd(tplvl, "raise .; focus .; update");
+ ctlchan <-= DONE;
+ return;
+ }
+ }
+ pid := sys->pctl(0, nil);
+ (top, titlebar) := tkclient->toplevel(context, "", "Config", Tkclient->Appl);
+ chanin := chan of string;
+ tk->namechan(top,chanin, "chanin");
+ buildabilitiesframe(top,k, "chanin");
+ tkcmd(top,"bind .Wm_t <ButtonPress-1> +{focus .}");
+ tkcmd(top,"bind .Wm_t.title <ButtonPress-1> +{focus .}");
+ tkcmd(top, "pack .f; update");
+ err := 0;
+ allread := 1;
+ l : list of int = nil;
+ for (i := 0; i < noabilities; i++) {
+ if (matches(abilities[i].desc, ablmenu[k])) {
+ l = i :: l;
+ if (abilities[i].read != "")
+ setmystate(top,i,abilities[i].read);
+ else
+ allread = 0;
+ }
+ }
+ tkclient->onscreen(top, nil);
+ tkclient->startinput(top, "kbd"::"ptr"::nil);
+ if (!allread) {
+ spawn workingscreen2(getcoords(top),pid, ctlchan,0);
+ ltmp := l;
+ for (;ltmp != nil; ltmp = tl ltmp) {
+ if (abilities[hd ltmp].read == "" && getstate(top, hd ltmp) == -1) {
+ err = 1;
+ break;
+ }
+ }
+ }
+ if (!err)
+ spawn settingsloop(top,chanin,titlebar,k,l);
+ ctlchan <-= DONE;
+}
+
+settingsloop(top: ref Tk->Toplevel, chanin,titlebar: chan of string, k: int, abls: list of int)
+{
+ tkcmd(top, "focus .Wm_t");
+ pid := sys->pctl(0,nil);
+ addtoplevel(top,ablmenu[k], abls, pid);
+ ctlchan := chan of int;
+ main: for(;;) {
+ alt {
+ s := <-top.ctxt.kbd =>
+ tk->keyboard(top, s);
+ s := <-top.ctxt.ptr =>
+ tk->pointer(top, *s);
+ inp := <- chanin =>
+ tkcmd(top, "focus .");
+ (n, lst) := sys->tokenize(inp, " \t\n");
+ case hd lst {
+ "scaleval" =>
+ i := int hd tl lst;
+ val := getvaluescreen(hd tl tl lst, hd tl tl tl lst);
+ if (val != -1) tkcmd(top, abilities[i].location+" set "+string val+";update");
+ "set" or "setdef" =>
+ if (working)
+ dialog(" Camera is busy! ", 2,-1,getcoords(top));
+ else {
+ spawn set(top, int hd tl lst, hd lst, ctlchan);
+ <-ctlchan;
+ working = 0;
+ }
+ }
+ clearbuffer(chanin);
+ title := <-top.ctxt.ctl or
+ title = <-top.wreq or
+ title = <- titlebar =>
+ if (title == "exit") break main;
+ tkclient->wmctl(top, title);
+ }
+ }
+ deltoplevel(top);
+}
+
+clearbuffer(c: chan of string)
+{
+ tc := chan of int;
+ spawn timer(tc);
+ main: for (;;) alt {
+ del := <-c => ;
+ tick := <-tc =>
+ break main;
+ }
+}
+
+timer(tick: chan of int)
+{
+ sys->sleep(100);
+ tick <- = 1;
+}
+
+getval(l: list of (string,int), s: string): int
+{
+ while (l != nil) {
+ (name,val) := hd l;
+ if (name == s) return val;
+ l = tl l;
+ }
+ return -2;
+}
+
+list2string(l : list of string): string
+{
+ s := "";
+ while (l != nil) {
+ s += " " + hd l;
+ l = tl l;
+ }
+ if (s != "") return s[1:];
+ return s;
+}
+
+JPG: con 0;
+THUMB: con 1;
+
+Imgloaded: adt {
+ name: string;
+ imgtype: int;
+};
+
+nofiles := 0;
+filelist := array[200] of string;
+thumbimg := array[200] of ref draw->Image;
+selected := array[200] of { * => 0 };
+noselected := 0;
+fnew : list of int;
+imgloaded : list of Imgloaded;
+maxwidth, maxheight: int;
+nothumbs := 0;
+
+nocamera(): int
+{
+ (n,dir) := sys->stat(camerapath+"ctl");
+ if (n != -1) return 0;
+ return 1;
+}
+
+startuptkstuff(top: ref Tk->Toplevel, ctlchan: chan of int)
+{
+ pid := sys->pctl(0, nil);
+ spawn workingscreen2(coords,pid, ctlchan,1);
+ getabilities();
+ (dirs,n) := readdir->init(camerapath+"thumb", readdir->NAME);
+ if (n == -1) nothumbs = 1;
+ buildabilitiesframes(top);
+ refreshfilelist(top,0);
+ ctlchan <-= DONE;
+}
+
+tibuild := 0;
+butheight := "";
+
+tkstuff()
+{
+ if (!runwithoutcam && nocamera()) {
+ dialog("Cannot find camera!",0,-1,nilrect);
+ exit;
+ }
+ (win, titlebar) := tkclient->toplevel(context, "", "Camera", Tkclient->Appl);
+ tkcmd(win, "frame .test");
+ if (tkcmd(win, ".test cget -bg") == "#ffffffff")
+ tibuild = 1;
+ tkcmd(win, "destroy .test");
+ butheight = " -height "+string (16 + (5*tibuild) - (3*(3-ssize)));
+ butchan := chan of string;
+ tk->namechan(win, butchan, "butchan");
+ for (tk1 := 0; tk1 < len thumbscr; tk1++)
+ tkcmd(win, thumbscr[tk1]);
+ coords = display.image.r;
+ ctlchan := chan of int;
+ imgloaded = nil;
+
+ spawn startuptkstuff(win, ctlchan);
+ e := <- ctlchan;
+ if (e == KILLED) {
+ dialog("Cancel during load!",0,-1,coords);
+ exit;
+ }
+ working = 0;
+ spawn mainscreen(win, 1, ctlchan);
+ <- ctlchan;
+ working = 0;
+
+ processing = 0;
+ tkcmd(win, "pack propagate . 0");
+ resizemain(win,1);
+ tkcmd(win, "pack .f; update; focus .");
+ coords = getcoords(win);
+ loadimg = nil;
+ tkclient->onscreen(win, nil);
+ tkclient->startinput(win, "kbd"::"ptr"::nil);
+ main: for (;;) {
+ alt {
+ s := <-win.ctxt.kbd =>
+ tk->keyboard(win, s);
+ s := <-win.ctxt.ptr =>
+ tk->pointer(win, *s);
+ inp := <-butchan =>
+ tkcmd(win, "focus .");
+ (n, lst) := sys->tokenize(inp, "\t\n ");
+ case hd lst {
+
+ # Communicates internally
+
+ "scaleval" =>
+ i := int hd tl lst;
+ val := getvaluescreen(hd tl tl lst, hd tl tl tl lst);
+ if (val != -1) tkcmd(win, abilities[i].location+" set "+string val);
+ "info" =>
+ spawn infoscreen();
+ "unload" =>
+ i := int hd tl lst;
+ for (k := 0; k < nofiles; k++) {
+ if (i == k || (i == -1 && selected[k])) {
+ delloaded(filelist[k],JPG);
+ delloaded(filelist[k],THUMB);
+ }
+ }
+ "invert" =>
+ nf := 0;
+ for (i := 0; i < nofiles; i++)
+ selected[i] = 1 - selected[i];
+ doselect(win);
+ "selectall" =>
+ val := int hd tl lst;
+ for (i := 0; i < nofiles; i++)
+ selected[i] = val;
+ doselect(win);
+ "select" =>
+ i := int hd tl lst;
+ selected[i] = 1 - selected[i];
+ doselect(win);
+ "selectonly" =>
+ i := int hd tl lst;
+ val := selected[i];
+ for (k := 0; k < nofiles; k++)
+ selected[k] = 0;
+ if (noselected - val == 0) selected[i] = 1 - val;
+ else selected[i] = 1;
+ doselect(win);
+ "menu" =>
+ i := int hd tl lst;
+ if (selected[i] && noselected > 1) i = -1;
+ title := "Selection ("+string noselected+" files)";
+ if (i != -1) title = filelist[i]+".jpg";
+ si := string i;
+ tkcmd(win, ".mthumb entryconfigure 0 -text {"+title+"}");
+ for (k := nothumbs; k < len menu; k++)
+ tkcmd(win, ".mthumb entryconfigure "+string (2+k-nothumbs)+
+ " -command {send butchan "+ menu[k].com+" "+si+"}");
+ tkcmd(win, ".mthumb post "+hd tl tl lst+" "+hd tl tl tl lst);
+ * =>
+ if (!processing)
+ spawn dealwithcamera(win, lst);
+ }
+ tkcmd(win, "update");
+ clearbuffer(butchan);
+ title := <-win.ctxt.ctl or
+ title = <-win.wreq or
+ title = <-titlebar =>
+ if (title == "exit")
+ break main;
+ err := tkclient->wmctl(win, title);
+ if (err == nil && title == "!size") {
+ (n, lst) := sys->tokenize(title, " ");
+ if (hd tl lst == ".")
+ resizemain(win,0);
+ }
+ coords = getcoords(win);
+ }
+ }
+ for (; toplevels != nil; toplevels = tl toplevels) {
+ (nil, nil, nil, pid) := hd toplevels;
+ if (pid != -1)
+ kill(pid);
+ }
+ while (imgloaded != nil) {
+ (fname, ftype) := hd imgloaded;
+ sys->remove(tmppath+fname+"."+string ftype+"~");
+ imgloaded = tl imgloaded;
+ }
+ tkcmd(win, "destroy .");
+ exit;
+}
+
+dealwithcamera(win: ref Tk->Toplevel, lst: list of string)
+{
+ ctlchan := chan of int;
+ processing = 1;
+ case hd lst {
+ "gettime" =>
+ spawn refreshtime(win, ctlchan);
+ <- ctlchan;
+ "show" =>
+ spawn loadthumb(win,int hd tl lst,ctlchan);
+ <- ctlchan;
+ "snap" =>
+ selected[nofiles+1] = 0;
+ spawn takephoto(win, ctlchan);
+ <- ctlchan;
+ working = 0;
+ if (fnew == nil)
+ break;
+ spawn waittilready(camerapath+"jpg/"+filelist[hd fnew]+".jpg", ctlchan);
+ e := <- ctlchan;
+ working = 0;
+ if (e == DONE) {
+ spawn loadnewthumb(win, ctlchan);
+ <- ctlchan;
+ working = 0;
+ }
+ "abls" =>
+ spawn settingsscreen(int hd tl lst, ctlchan);
+ <- ctlchan;
+ "set" or "setdef" =>
+ spawn set(win, int hd tl lst, hd lst, ctlchan);
+ <- ctlchan;
+ "del" =>
+ spawn delete(win, int hd tl lst, ctlchan);
+ <- ctlchan;
+ "view" =>
+ i := int hd tl lst;
+ unnew(win, i);
+ if (i == -1) multiview();
+ else vw(i);
+ "refresh" =>
+ spawn refresh(win, ctlchan);
+ <- ctlchan;
+ "refreshstate" =>
+ spawn mainscreen(win, 0, ctlchan);
+ <- ctlchan;
+ "dnld" =>
+ i := int hd tl lst;
+ unnew(win, i);
+ if (i == -1) multidownload();
+ else dnld(i, "");
+ "reset" =>
+ if (dialog("reset camera to default settings?",1,-1,coords)) {
+ spawn resetcam(win,1, ctlchan);
+ <- ctlchan;
+ }
+ }
+ processing = 0;
+ working = 0;
+}
+
+refresh(top: ref Tk->Toplevel, ctlchan: chan of int)
+{
+ pid := sys->pctl(0, nil);
+ spawn workingscreen2(coords,pid, ctlchan,0);
+ refreshfilelist(top,1);
+ ctlchan <-= DONE;
+}
+
+delete(top: ref Tk->Toplevel, i: int, ctlchan: chan of int)
+{
+ pid := sys->pctl(0, nil);
+ ok : int;
+ s := "";
+ loi : list of int;
+ loi = nil;
+ if (i == -1) {
+ for (k := 0; k < nofiles; k++)
+ if (selected[k]) s+= filelist[k]+".jpg\n";
+ if (!dialog("Delete Selected files?\n\n"+s,1,-1,coords)) {
+ ctlchan <-= DONE;
+ return;
+ }
+ }
+ else if (!dialog("Delete "+filelist[i]+".jpg?",1,i,coords)) {
+ ctlchan <-= DONE;
+ return;
+ }
+ spawn workingscreen2(coords,pid, ctlchan,0);
+ s = "";
+ for (k := 0; k < nofiles; k++) {
+ if ((i == -1 && selected[k]) || k == i) {
+ s += filelist[k]+".jpg ";
+ ok = sys->remove(camerapath+
+ "jpg/"+filelist[k]+".jpg");
+ if (ok == -1) s+="failed\n";
+ else {
+ s+="ok\n";
+ loi = k :: loi;
+ }
+ }
+ }
+ if (loi == nil && i != -1) {
+ dialog("cannot remove "+filelist[i]+".jpg?",0,i,coords);
+ ctlchan <-= DONE;
+ return;
+ }
+ while (loi != nil) {
+ delloaded(filelist[hd loi],JPG);
+ delloaded(filelist[hd loi],THUMB);
+ delselect(hd loi);
+ loi = tl loi;
+ }
+ refreshfilelist(top,0);
+ getstore(top);
+ if (i == -1) dialog("Files deleted:\n\n"+s,0,-1,coords);
+ ctlchan <-= DONE;
+}
+
+delselect(n: int)
+{
+ for (i := n; i < nofiles - 1; i++)
+ selected[i] = selected[i+1];
+ selected[nofiles - 1] = 0;
+}
+
+doselect(top: ref Tk->Toplevel)
+{
+ n := 0;
+ for (i := 0; i < nofiles; i++) {
+ col := "white";
+ if (selected[i]) {
+ col = "blue";
+ n++;
+ }
+ tkcmd(top,".fthumb.p"+string i+" configure -bg "+col);
+ }
+ noselected = n;
+ s := " files";
+ if (n == 1) s = " file";
+ tkcmd(top, ".f.fsnap.fsettings.mb2 configure -text {Selected\n("+string n+s+")}");
+}
+
+takephoto(top: ref Tk->Toplevel, ctlchan: chan of int)
+{
+ pid := sys->pctl(0, nil);
+ spawn workingscreen2(coords,pid, ctlchan,0);
+ fd := sys->open(camerapath+"ctl",sys->OWRITE);
+ if (fd != nil) {
+ e := sys->fprint(fd, "snap");
+ if (e < 0) {
+ dialog("Could not take photo",0,-1,coords);
+ getstore(top);
+ }
+ else {
+ getstore(top);
+ n := nofiles;
+ for (i := 0; i < 5; i++) {
+ refreshfilelist(top,1);
+ sys->sleep(1000);
+ if (nofiles > n)
+ break;
+ }
+ }
+ }
+ ctlchan <-= DONE;
+}
+
+unnew(top: ref Tk->Toplevel, i: int)
+{
+ if (fnew == nil)
+ return;
+ tmp : list of int = nil;
+ for (;fnew != nil; fnew = tl fnew) {
+ if (i == -1 && selected[hd fnew])
+ i = hd fnew;
+ if (hd fnew == i)
+ tkcmd(top, ".fthumb.mb"+string hd fnew+" configure -fg black; update");
+ else
+ tmp = hd fnew :: tmp;
+ }
+ fnew = tmp;
+}
+
+refreshtime(top: ref Tk->Toplevel, ctlchan: chan of int)
+{
+ pid := sys->pctl(0, nil);
+ spawn workingscreen2(coords,pid, ctlchan,0);
+ if (!samedate(top) && tkcmd(top, "variable time") == "1") settime();
+ gettime(top);
+ ctlchan <-= DONE;
+}
+
+addtoplevel(top: ref Tk->Toplevel, name: string, abls: list of int, pid: int)
+{
+ ltmp := toplevels;
+ isin := 0;
+ for (;ltmp != nil; ltmp = tl ltmp) {
+ (tplvl, nil, nil, nil) := hd ltmp;
+ if (tplvl == top) isin = 1;
+ }
+ if (!isin)
+ toplevels = (top, name, abls, pid) :: toplevels;
+}
+
+deltoplevel(top: ref Tk->Toplevel)
+{
+ ltmp : list of (ref Tk->Toplevel, string, list of int, int) = nil;;
+ for (;toplevels != nil; toplevels = tl toplevels) {
+ (tplvl, nm, loi, p) := hd toplevels;
+ if (tplvl != top)
+ ltmp = (tplvl, nm, loi, p) :: ltmp;
+ }
+ toplevels = ltmp;
+}
+
+resetcam(top: ref Tk->Toplevel, show: int, ctlchan: chan of int)
+{
+ pid := sys->pctl(0, nil);
+ spawn workingscreen2(coords,pid, ctlchan,0);
+ for (i := 0; i < noabilities; i++)
+ setstate(i, string abilities[i].factory);
+ if (show) {
+ ltmp := toplevels;
+ for (;ltmp != nil; ltmp = tl ltmp) {
+ (tplvl, nm, loi, p) := hd ltmp;
+ for (; loi != nil; loi = tl loi)
+ setmystate(tplvl, hd loi, string abilities[hd loi].factory);
+ }
+ if (top != nil)
+ getstore(top);
+ }
+ ctlchan <-= DONE;
+}
+
+set(top: ref Tk->Toplevel, i: int, s: string, ctlchan: chan of int)
+{
+ pid := sys->pctl(0, nil);
+ spawn workingscreen2(getcoords(top),pid, ctlchan,0);
+
+ val : string;
+ if (s == "setdef") {
+ val = string abilities[i].factory;
+ setmystate(top,i,val);
+ }
+ else {
+ if (abilities[i].dtype == MINMAX) {
+ val = tkcmd(top, abilities[i].location+" get");
+ mul := getval(abilities[i].data, "mul");
+ val = string (int val * mul);
+ }
+ else {
+ val = tkcmd(top, "variable "+abilities[i].pname);
+ }
+ }
+
+ e := setstate(i,val);
+ if (e == 2) getstore(top);
+ else if (e == 0)
+ dialog("cannot communicate with camera",0,-1,coords);
+ ctlchan <-= DONE;
+}
+
+setstate(i: int, val: string): int
+{
+ fd := sys->open(camerapath+"ctl",sys->OWRITE);
+ if (fd != nil) {
+ sys->fprint(fd, "%s %s",abilities[i].pname,val);
+ abilities[i].read = val;
+ if (abilities[i].pname == "ssiz" || abilities[i].pname == "scpn") return 2;
+ return 1;
+ }
+ else return 0;
+}
+
+getfirst(s: string): string
+{
+ (n, lst) := sys->tokenize(s," \n\t");
+ if (lst == nil) return "";
+ return hd lst;
+}
+
+getabl(pname: string): int
+{
+ for (i := 0; i < noabilities; i++)
+ if (abilities[i].pname == pname) return i;
+ return -1;
+}
+
+getstate(top: ref Tk->Toplevel, i: int): int
+{
+ fd := sys->open(camerapath+"state", sys->OWRITE);
+ if (fd != nil) {
+ sys->fprint(fd ,"%s", abilities[i].pname);
+ sys->sleep(500);
+ fdi := bufio->open(camerapath+"state",sys->OREAD);
+ if (fdi != nil) {
+ s := fdi.gets('\n');
+ if (s != nil) {
+ (n,lst) := sys->tokenize(s,":\n");
+ val := hd tl lst;
+ setmystate(top,i,val);
+ }
+ return 0;
+ }
+ }
+ dialog("cannot communicate with camera",0,-1,coords);
+ return -1;
+}
+
+setmystate(top: ref Tk->Toplevel, i: int, val: string)
+{
+ abilities[i].read = val;
+ if (abilities[i].dtype == LIST)
+ tkcmd(top, "variable "+abilities[i].pname+" "+val);
+ else if (abilities[i].dtype == MINMAX) {
+ mul := getval(abilities[i].data, "mul");
+ tkcmd(top, abilities[i].location+" set "+string((int val)/mul));
+ }
+ tkcmd(top, "update");
+}
+
+max(a,b: int): int
+{
+ if (a > b) return a;
+ return b;
+}
+
+refreshfilelist(win: ref Tk->Toplevel, refresh: int): int
+{
+ if (refresh) {
+ fd := sys->open(camerapath+"ctl",sys->OWRITE);
+ if (fd == nil) {
+ dialog("cannot communicate with camera",0,-1,coords);
+ return -1;
+ }
+ else
+ sys->fprint(fd, "refresh");
+ }
+ oldlist := filelist[:nofiles];
+ for (i := 0; i < nofiles; i++) {
+ si := string i;
+ tk->cmd(win, "grid forget .fthumb.mb"+si+" .fthumb.p"+si);
+ tk->cmd(win, "destroy .fthumb.mb"+si+" .fthumb.p"+si+" .mthumb"+si);
+ }
+ (dirs,n) := readdir->init(camerapath+"jpg", readdir->NAME);
+ if (n == -1)
+ return -1;
+ nofiles = n;
+ row := 0;
+ col := 0;
+ nocols := -1;
+ w1 := int tkcmd(win, ".f.f1.c1 cget -width");
+ w := 0;
+ fnew = nil;
+ for (i = 0; i < nofiles; i++) {
+ filelist[i] = dirs[i].name;
+ if (len filelist[i] > 3 && filelist[i][len filelist[i] - 4] == '.')
+ filelist[i] = filelist[i][:len filelist[i]-4];
+
+ isnew := 1;
+ for (k := 0; k < len oldlist; k++) {
+ if (filelist[i] == oldlist[k]) {
+ isnew = 0;
+ break;
+ }
+ }
+ si := string i;
+ tkcmd(win, "menubutton .fthumb.mb"+si+" -bg white " +
+ "-text {"+filelist[i]+".jpg} -menu .mthumb"+si+tkfontf);
+ if (isnew && refresh) {
+ fnew = i :: fnew;
+ tkcmd(win, ".fthumb.mb"+si+" configure -fg red");
+ }
+ thumbimg[i] = display.newimage(Rect((0,0),(90,90)),draw->RGB24,0,int 16rffcc00ff);
+ e := tkcmd(win,"panel .fthumb.p"+si+" -borderwidth 2 -bg white"+
+ " -height 90 -width 90 -relief raised");
+ tk->putimage(win,".fthumb.p"+si, thumbimg[i],nil);
+ tkcmd(win, "bind .fthumb.p"+si+" <Double-Button-1> {send butchan view "+si+"}");
+ tkcmd(win, "bind .fthumb.p"+si+" <ButtonPress-1> {send butchan selectonly "+si+"}");
+ tkcmd(win, "bind .fthumb.p"+si+" <ButtonPress-2> {send butchan select "+si+"}");
+ tkcmd(win, "bind .fthumb.p"+si+" <ButtonPress-3> {send butchan menu "+si+" %X %Y}");
+ thisw := int tkcmd(win, ".fthumb.mb"+si+" cget -width");
+ w += max(94, thisw);
+ if ((nocols == -1 && w >= w1-(col*2)) || col == nocols) {
+ nocols = col;
+ col = 0;
+ row+=2;
+ w = thisw;
+ }
+ if (col == 0)
+ tkcmd(win, "grid rowconfigure .fthumb "+string (row+1)+
+ " -minsize "+string (105 - 2*(3-ssize)));
+
+ tkcmd(win, "grid .fthumb.mb"+si+" -row "+string row+" -column "+string col);
+ tkcmd(win, "grid .fthumb.p"+si+" -row "+string (row+1)+" -column "+string col+" -sticky n");
+
+ tkcmd(win, "menu .mthumb"+si+tkfont);
+ for (k = nothumbs; k < len menu; k++)
+ tkcmd(win, ".mthumb"+si+" add command -text {"+menu[k].text+"} " +
+ "-command {send butchan "+menu[k].com+" "+si+"}");
+
+ if (isloaded(filelist[i],THUMB) && usecache)
+ loadthumbnail(win,i);
+ col++;
+ }
+ if (row == 0)
+ nocols = col;
+ doselect(win);
+ size := tkcmd(win, "grid size .fthumb");
+ csize := int size[:isat(size, " ")];
+ rsize := int size[isat(size, " ")+1:];
+ if (csize > nocols)
+ tkcmd(win, "grid columndelete .fthumb "+string nocols+" "+string csize);
+ if (rsize > row+1)
+ tkcmd(win, "grid rowdelete .fthumb "+string (row+2)+" "+string rsize);
+ height := string (2 + int tkcmd(win, ".fthumb cget -height"));
+ width := tkcmd(win, ".f.f1.c1 cget -width");
+ colsize : int;
+ if (nocols > 0) colsize = int width / nocols;
+ else colsize = int width;
+ for (i = 0; i < nocols; i++)
+ tkcmd(win, "grid columnconfigure .fthumb "+string i+" -minsize "+string colsize);
+
+ tkcmd(win, ".f.f1.c1 configure -scrollregion { 0 0 "+width+" "+height+"}");
+ tkcmd(win, "update");
+ return 0;
+}
+
+Mtype: adt {
+ text, com: string;
+};
+
+menu := array[] of {
+ Mtype ("Show Thumbnail", "show"),
+ Mtype ("Download", "dnld"),
+ Mtype ("View", "view"),
+ Mtype ("Delete", "del"),
+ Mtype ("Clear Cache", "unload"),
+ Mtype ("Refresh Files", "refresh"),
+};
+
+tkcmd(top: ref Tk->Toplevel, cmd: string): string
+{
+ if (cmd[len cmd - 1] == '$')
+ cmd = cmd[:len cmd - 1] + tkfontb;
+ else if (cmd[len cmd - 1] == '@')
+ cmd = cmd[:len cmd - 1] + tkfont;
+ if (cmd[len cmd - 1] == '&')
+ cmd = cmd[:len cmd - 1] + butheight+tkfont;
+
+ e := tk->cmd(top, cmd);
+ if (e != "" && e[0] == '!') sys->print("tk error: '%s': %s\n",cmd,e);
+ return e;
+}
+
+loadnewthumb(top: ref Tk->Toplevel, ctlchan: chan of int)
+{
+ pid := sys->pctl(0,nil);
+ spawn workingscreen2(coords,pid, ctlchan,0);
+ getstore(top);
+ for (tmp := fnew; tmp != nil; tmp = tl tmp)
+ loadthumbnail(top,hd tmp);
+ ctlchan <-= DONE;
+}
+
+loadthumb(top: ref Tk->Toplevel, i: int, ctlchan: chan of int)
+{
+ pid := sys->pctl(0, nil);
+ spawn workingscreen2(coords,pid, ctlchan,0);
+ if (i == -1) {
+ for (k := 0; k < nofiles; k++)
+ if (selected[k])
+ if (loadthumbnail(top, k) != 0) break;
+ }
+ else loadthumbnail(top, i);
+ ctlchan <-= DONE;
+}
+
+loadthumbnail(top: ref Tk->Toplevel, i: int): int
+{
+ fd : ref sys->FD;
+ if (usecache && isloaded(filelist[i],THUMB))
+ fd = sys->open(tmppath+filelist[i]+"."+string THUMB+"~",sys->OREAD);
+ else fd = sys->open(camerapath+"thumb/"+filelist[i]+".bit",sys->OREAD);
+ if (fd == nil) {
+ if (usecache && isloaded(filelist[i],THUMB)) {
+ delloaded(filelist[i],THUMB);
+ return loadthumbnail(top,i);
+ }
+ else dialog("cannot open "+filelist[i]+".bit",0,-1,coords);
+ return -2;
+ }
+ image := display.readimage(fd);
+ if (image == nil) {
+ if (usecache && isloaded(filelist[i],THUMB)) {
+ delloaded(filelist[i],THUMB);
+ return loadthumbnail(top,i);
+ }
+ else dialog("Could not load thumbnail: "+filelist[i]+".jpg",0,-1,coords);
+ return -1;
+ }
+ else {
+ p := Point((90-image.r.max.x)/2,(90-image.r.max.y)/2);
+ thumbimg[i].draw(image.r.addpt(p), image,nil,(0,0));
+ si := string i;
+ tkcmd(top,".fthumb.p"+si+" dirty");
+ fd = nil;
+ n := -1;
+ if (usecache) {
+ fd = sys->create(tmppath+filelist[i]+"."+string THUMB+"~",sys->OWRITE,8r666);
+ n = display.writeimage(fd, image);
+ }
+ x := int tkcmd(top, ".fthumb.mb"+string i+" cget -actx");
+ y := int tkcmd(top, ".fthumb.mb"+string i+" cget -acty");
+ h := int tkcmd(top, ".fthumb.mb"+string i+" cget -height");
+ x1 := int tkcmd(top, ".fthumb cget -actx");
+ y1 := int tkcmd(top, ".fthumb cget -acty");
+ tkcmd(top, ".f.f1.c1 see "+string (x-x1)+" " +string (y-y1)+
+ " "+string (x-x1+90)+" " +string (y-y1+h+102)+"; update");
+ if (!usecache || n == 0) imgloaded = (filelist[i],THUMB) :: imgloaded;
+ }
+ return 0;
+}
+
+isloaded(name: string, ftype: int): int
+{
+ tmp := imgloaded;
+ while (tmp != nil) {
+ ic := hd tmp;
+ if (ic.name == name && ic.imgtype == ftype) return 1;
+ tmp = tl tmp;
+ }
+ return 0;
+}
+
+delloaded(name: string, ftype: int)
+{
+ tmp : list of Imgloaded;
+ tmp = nil;
+ while (imgloaded != nil) {
+ ic := hd imgloaded;
+ if (ic.name != name || ic.imgtype != ftype)
+ tmp = ic :: tmp;
+ else sys->remove(tmppath+ic.name+"."+string ic.imgtype+"~");
+ imgloaded = tl imgloaded;
+ }
+ imgloaded = tmp;
+}
+
+dialog(msg: string, diagtype, img: int, r: Rect): int
+{
+ if (diagtype == 2)
+ diagtype = 0;
+ else
+ working = 0;
+ tmpimg : ref draw->Image;
+ out := 0;
+ title := "Dialog";
+ if (diagtype == 0) title = "Alert!";
+ (win, titlebar) := tkclient->toplevel(context, "" , title, Tkclient->Appl);
+ diagchan := chan of string;
+ tk->namechan(win, diagchan, "diagchan");
+ tkcmd(win, "frame .f");
+ tkcmd(win, "label .f.l -text {"+msg+"}"+tkfont);
+ tkcmd(win, "button .f.bo -text { ok } -command {send diagchan ok} "+butheight+tkfont);
+ tkcmd(win, "button .f.bc -text {cancel} -command {send diagchan cancel}"+butheight+tkfont);
+ if (img >= 0 && isloaded(filelist[img], THUMB) && usecache) {
+ fd := sys->open(tmppath+filelist[img]+"."+string THUMB+"~", sys->OREAD);
+ if (fd != nil) {
+ tmpimg = display.readimage(fd);
+ tkcmd(win,"panel .f.p -height "+string tmpimg.r.max.y+
+ " -width "+string tmpimg.r.max.x+" -borderwidth 2 -relief raised");
+ tk->putimage(win,".f.p", tmpimg, nil);
+ tkcmd(win, "grid .f.p -row 1 -column 0 -columnspan 2 -padx 5 -pady 5");
+ }
+ }
+ tkcmd(win, "grid .f.l -row 0 -column 0 -columnspan 2 -padx 10 -pady 5");
+ if (diagtype == 1) {
+ tkcmd(win, "grid .f.bo -row 2 -column 0 -padx 5 -pady 5");
+ tkcmd(win, "grid .f.bc -row 2 -column 1 -padx 5 -pady 5");
+ }
+ else tkcmd(win, "grid .f.bo -row 2 -column 0 -columnspan 2 -padx 5 -pady 5");
+ if (!r.eq(nilrect))
+ centrewin(win, r, 1);
+ else
+ tkcmd(win, "pack .f; focus .; update");
+ tkclient->onscreen(win, "exact");
+ tkclient->startinput(win, "kbd"::"ptr"::nil);
+ main: for (;;) {
+ alt {
+ s := <-win.ctxt.kbd =>
+ tk->keyboard(win, s);
+ s := <-win.ctxt.ptr =>
+ tk->pointer(win, *s);
+ inp := <-diagchan =>
+ if (inp == "ok") {
+ out = 1;
+ break main;
+ }
+ if (inp == "cancel")
+ break main;
+
+ title = <-win.ctxt.ctl or
+ title = <-win.wreq or
+ title = <-titlebar =>
+ if (title == "exit")
+ break main;
+ else
+ tkclient->wmctl(win, title);
+ }
+ }
+ return out;
+}
+
+snapscr := array[] of {
+ "label .f.fsnap.ltime -text {Date and Time} $",
+ "label .f.fsnap.lstore -text {Memory Status} $",
+ "label .f.fsnap.lzpos -text {Zoom} $",
+ "label .f.fsnap.lssiz -text {Resolution} $",
+ "label .f.fsnap.lscpn -text {Compression} $",
+ "grid .f.fsnap.ltime -row 0 -column 0 -sticky sw",
+ "grid .f.fsnap.lstore -row 0 -column 1 -sticky sw",
+ "grid .f.fsnap.lscpn -row 2 -column 0 -sticky sw",
+ "grid .f.fsnap.lssiz -row 2 -column 1 -sticky sw",
+ "grid .f.fsnap.lzpos -row 2 -column 2 -sticky sw",
+
+ "grid .f.fsnap.ftime -row 1 -column 0 -sticky nsew",
+ "grid .f.fsnap.fstore -row 1 -column 1 -sticky nsew",
+ "grid .f.fsnap.fsettings -row 1 -column 2 -sticky nsew",
+ "grid .f.fsnap.fscpn -row 3 -column 0 -sticky nsew",
+ "grid .f.fsnap.fssiz -row 3 -column 1 -sticky nsew",
+ "grid .f.fsnap.fzpos -row 3 -column 2 -sticky nsew",
+ "grid .f.fsnap.b -row 4 -column 0 -columnspan 3",
+ "grid rowconfigure .f.fsnap 0 -minsize 30",
+ "grid rowconfigure .f.fsnap 2 -minsize 30",
+ "grid rowconfigure .f.fsnap 4 -minsize 30",
+
+ "update",
+};
+
+mainscreen(win: ref Tk->Toplevel, opt: int, ctlchan: chan of int)
+{
+ pid := sys->pctl(0, nil);
+ spawn workingscreen2(coords, pid, ctlchan, opt);
+ if (opt == 1) {
+ for (tk1 := 0; tk1 < len snapscr; tk1++)
+ tkcmd(win, snapscr[tk1]);
+
+ gettime(win);
+ if (samedate(win)) tkcmd(win, "variable time 1; update");
+ }
+ getstore(win);
+ lst := getabl("scpn") :: getabl("ssiz") :: getabl("zpos") :: nil;
+ if (getstate(win, hd tl tl lst) == 0);
+ if (getstate(win, hd tl lst) == 0);
+ getstate(win, hd lst);
+ if (opt == 1) {
+ addtoplevel(win, "", lst, -1);
+ height := tkcmd(win, ".f.fsnap cget -height");
+ width := tkcmd(win, ".f.fsnap cget -width");
+# tkcmd(win, ".f.f2.c1 configure -scrollregion { 0 0 "+width+" "+height+"}");
+# tkcmd(win, ".f.f2.c1 configure -height "+height+"}");
+ }
+ ctlchan <-= DONE;
+}
+
+kill(pid: int)
+{
+ pctl := sys->open("/prog/" + string pid + "/ctl", Sys->OWRITE);
+ if (pctl != nil)
+ sys->write(pctl, array of byte "kill", len "kill");
+}
+
+gettime(win: ref Tk->Toplevel)
+{
+ tkcmd(win,".f.fsnap.ftime.l3 configure -text {}"+tkfont);
+ tkcmd(win,".f.fsnap.ftime.l4 configure -text {}"+tkfont);
+ fdi := bufio->open(camerapath+"date",sys->OREAD);
+ if (fdi != nil) {
+ s := fdi.gets('\n');
+ if (s != nil) {
+ if (s[len s - 1] == '\n') s = s[:len s - 1];
+ tm := daytime->local(daytime->now());
+ time := sys->sprint("%d/%d/%d %d:%d:%d", tm.mon+1, tm.mday, tm.year-100,
+ tm.hour,tm.min,tm.sec);
+ ltime = addzeros(time);
+ ctime = addzeros(s[len "date is ":]);
+ tk->cmd(win,".f.fsnap.ftime.l3 configure -text {"+ltime+"}");
+ tk->cmd(win,".f.fsnap.ftime.l4 configure -text {"+ctime+"}");
+ }
+ }
+ if (len ltime < 16)
+ ltime = "??/??/?? ??:??:??";
+ if (len ctime < 16)
+ ctime = "??/??/?? ??:??:??";
+ tkcmd(win, "update");
+}
+
+addzeros(s: string): string
+{
+ s[len s] = ' ';
+ rs := "";
+ start := 0;
+ isnum := 0;
+ for (i := 0; i < len s; i++) {
+ if (s[i] < '0' || s[i] > '9') {
+ if (isnum && i - start < 2) rs[len rs] = '0';
+ rs += s[start:i+1];
+ start = i+1;
+ isnum = 0;
+ }
+ else isnum = 1;
+ }
+ i = len rs - 1;
+ while (i >= 0 && rs[i] == ' ') i--;
+ return rs[:i+1];
+}
+
+samedate(win: ref Tk->Toplevel): int
+{
+ s1 := tkcmd(win, ".f.fsnap.ftime.l3 cget -text");
+ s2 := tkcmd(win, ".f.fsnap.ftime.l4 cget -text");
+ if (s1 == "" || s1 == "") return 0;
+ if (s1[:len s1 - 3] == s2[:len s2 - 3]) return 1;
+ return 0;
+}
+
+settime()
+{
+ tm := daytime->local(daytime->now());
+ fd := sys->open(camerapath+"date", sys->OWRITE);
+ if (fd != nil) {
+ sys->fprint(fd, "%s", addzeros(sys->sprint("%d/%d/%d %d:%d:%d"
+ ,tm.mon+1, tm.mday, tm.year-100, tm.hour,tm.min,tm.sec)));
+ }
+}
+
+getstore(win: ref Tk->Toplevel)
+{
+ fdi := bufio->open(camerapath+"storage",sys->OREAD);
+ if (fdi != nil) {
+ for(i := 0; i < 3; i++) {
+ s := fdi.gets('\n');
+ if (s == nil) break;
+ if (i > 0) {
+ (n,lst) := sys->tokenize(s,"\t\n:");
+ val := string int hd tl lst;
+ if (i == 2 && val == "0")
+ tkcmd(win, ".f.fsnap.b configure -state disabled");
+ else tkcmd(win, ".f.fsnap.b configure -state normal");
+ tkcmd(win,".f.fsnap.fstore.l"+string (2+i)+" configure -text {"+val+" }");
+ }
+ }
+ tkcmd(win, "update");
+ }
+}
+
+contains(s: string, test: string): int
+{
+ num :=0;
+ if (len test > len s) return 0;
+ for (i := 0; i < (1 + (len s) - (len test)); i++) {
+ if (test == s[i:i+len test]) num++;
+ }
+ return num;
+}
+
+multidownload()
+{
+ getpath := selectfile->filename(context,
+ display.image,
+ "Multiple download to directory...",
+ nil,
+ lastpath);
+ if (getpath == "" || getpath[0] != '/' || getpath[len getpath - 1] != '/')
+ return;
+ s := "";
+ for (k := 0; k < nofiles; k++) {
+ if (selected[k]) {
+ e := dnld(k,getpath);
+ if (e != 1)
+ s += filelist[k]+".jpg ";
+ if (e == 3) {
+ s += "cancelled\n";
+ break;
+ }
+ else if (e == 0)
+ s += "failed\n";
+ working = 0;
+ }
+ }
+ if (s != "") s = ":\n\n"+s;
+ dialog("Multiple download complete"+s,0,-1,coords);
+}
+
+downloading := "";
+
+dnld(i: int, path: string): int
+{
+ ctlchan := chan of int;
+ ctlchans := chan of string;
+ chanout := chan of string;
+ spawn downloadscreen(coords, i, ctlchans, chanout);
+ spawn download(i,path,ctlchan, ctlchans, chanout);
+ pid := <-ctlchan;
+ alt {
+ s := <-ctlchans =>
+ chanout <-= "!done!";
+ if (s == "kill") {
+ if (downloading != "") {
+ (n,lst) := sys->tokenize(downloading, " \t\n");
+ for(;lst != nil; lst = tl lst)
+ sys->remove(hd lst);
+ }
+ kill(pid);
+ return 3;
+ }
+ else return dnld(i, "!"+s);
+ e := <-ctlchan =>
+ chanout <-= "!show!";
+ chanout <-= "!done!";
+ return e;
+ }
+ return 0;
+}
+
+filelenrefresh(filename: string): int
+{
+ fd := sys->open(camerapath+"ctl",sys->OWRITE);
+ if (fd != nil) {
+ sys->fprint(fd, "refresh");
+ (n, dir) := sys->stat(filename);
+ if (n == -1)
+ return -1;
+ return int dir.length;
+ }
+ return -1;
+}
+
+testfilesize(filename: string): int
+{
+ e := filelenrefresh(filename);
+ if (e == 0) {
+ e2 := dialog("Camera is still processing image\nwait until ready?",1,-1,coords);
+ if (e2 == 0)
+ return 0;
+ ctlchan := chan of int;
+ spawn waittilready(filename, ctlchan);
+ e3 := <- ctlchan;
+ working = 0;
+ if (e3 == KILLED)
+ return 0;
+ return testfilesize(filename);
+ }
+ else return e;
+}
+
+waittilready(filename: string, ctlchan: chan of int)
+{
+ pid := sys->pctl(0, nil);
+ spawn workingscreen2(coords,pid,ctlchan,0);
+ for (;;) {
+ if (filelenrefresh(filename) != 0)
+ break;
+ sys->sleep(2000);
+ }
+ ctlchan <-= DONE;
+}
+
+download(i: int, path: string, ctlchan: chan of int, ctlchans, chanout: chan of string)
+{
+ ctlchan <-= sys->pctl(0, nil);
+ downloading = "";
+ savename : string;
+ if (path == "") {
+ savename = selectfile->filename(context,
+ display.image,
+ "Save "+filelist[i]+".jpg to directory...",
+ "*.jpg" :: "*.jpeg" :: nil,
+ lastpath);
+ if (savename == "" || savename[0] != '/') {
+ ctlchan <-= 0;
+ return;
+ }
+ }
+ else savename = path;
+
+ # Used when retrying due to cache copy failing
+ if (savename[0] == '!') {
+ delloaded(filelist[i],JPG);
+ savename = savename[1:];
+ path = "";
+ }
+ confirm := 1;
+ # Don't confirm overwrite
+ if (savename[0] == '$') {
+ confirm = 0;
+ savename = savename[1:];
+ }
+
+ if (savename[len savename - 1] == '/')
+ savename += filelist[i]+".jpg";
+
+ if (!hasext(savename, ".jpg"))
+ savename += ".jpg";
+
+ p := isat2(savename,"/");
+ lastpath = savename[:p+1];
+
+ filename := camerapath+"jpg/"+filelist[i]+".jpg";
+ filesize := testfilesize(filename);
+ cached := 0;
+ if (filesize > 0 && isloaded(filelist[i],JPG) && usecache) {
+ cachefilename := tmppath+filelist[i]+"."+string JPG+"~";
+ if (testfilesize(cachefilename) == filesize) {
+ cached = 1;
+ filename = cachefilename;
+ }
+ else delloaded(filelist[i],JPG);
+ }
+ fd := sys->open(filename, sys->OREAD);
+ if (filesize < 1 || fd == nil) {
+ ctlchan <-= -1;
+ return;
+ }
+
+ read := 0;
+ cancel : int;
+ buf : array of byte;
+ fd2, fd3 : ref sys->FD = nil;
+ cachename := tmppath+filelist[i]+"."+string JPG+"~";
+ if (confirm) (fd2, cancel) = create(savename, coords);
+ else fd2 = sys->create(savename,sys->OWRITE, 8r666);
+ if (fd2 == nil) {
+ ctlchan <-= cancel;
+ return;
+ }
+ if (usecache && !cached)
+ fd3 = sys->create(cachename,sys->OWRITE,8r666);
+ chanout <-= "!show!";
+ chanout <-= "l2 Downloading...";
+ chanout <-= "pc 0";
+ n : int;
+ downloading = savename;
+ if (fd3 != nil)
+ downloading += " "+cachename;
+ loop: for(;;) {
+ rlen := 8192;
+ if (read + rlen >= filesize) rlen = filesize - read;
+ buf = array[rlen] of byte;
+ n = sys->read(fd,buf,len buf);
+ read += n;
+ sout := "pc "+string ( (100*read)/filesize);
+ chanout <-= sout;
+ if (n < 1) break loop;
+ written := 0;
+ while (written < n) {
+ n2 := sys->write(fd2,buf,n);
+ if (n2 < 1) break loop;
+ if (fd3 != nil) sys->write(fd3,buf,n);
+ written += n2;
+ }
+ }
+ chanout <-= "pc 100";
+ downloading = "";
+ fd = nil;
+ fd2 = nil;
+ if (read < filesize || n == -1) {
+ if (cached) {
+ ctlchans <-= savename;
+ return;
+ }
+ sys->remove(savename);
+ sys->remove(cachename);
+ if (path == "")
+ dialog(sys->sprint("Download Failed: %s.jpg\nread %d of %d bytes\n",
+ filelist[i],read,filesize), 0, i,coords);
+ ctlchan <-= 0;
+ return;
+ }
+
+ # save it in cache
+ if (usecache)
+ imgloaded = (filelist[i],JPG) :: imgloaded;
+ if (path == "") dialog(filelist[i]+".jpg downloaded",0,i,coords);
+ ctlchan <-= 1;
+}
+
+downloadscr := array[] of {
+ "frame .f -borderwidth 2 -relief raised",
+ "label .f.l1 -text { } @",
+ "label .f.l2 -text {Waiting...} @",
+ "button .f.b -text {Cancel} -command {send ctlchans kill} &",
+ "grid .f.l1 -row 0 -column 0 -columnspan 2 -pady 5",
+ "grid .f.l2 -row 2 -column 1 -sticky w -padx 10",
+ "grid .f.p -row 3 -column 1 -columnspan 1 -padx 10",
+ "grid .f.b -row 4 -column 0 -pady 5 -columnspan 2",
+};
+
+downloadscreen(r: Rect, i: int, ctlchans, chanin: chan of string)
+{
+ working = 1;
+ <- chanin;
+ (top, nil) := tkclient->toplevel(context,"", nil, tkclient->Plain);
+ progr := Rect((0,0),(100,15));
+ imgbg := display.newimage(progr,draw->CMAP8,1,draw->Black);
+ black := display.newimage(progr,draw->CMAP8,1,draw->Black);
+ white := display.newimage(progr,draw->CMAP8,1,draw->White);
+ imgfg := display.newimage(progr,draw->CMAP8,1,draw->Blue);
+ tkcmd(top, "panel .f.p -width 100 -height 15 -bg white -borderwidth 2 - relief raised");
+ tk->putimage(top, ".f.p",imgbg,nil);
+ tk->namechan(top, ctlchans, "ctlchans");
+ for (tk1 := 0; tk1 < len downloadscr; tk1++)
+ tkcmd(top, downloadscr[tk1]);
+ tmpimg : ref Image = nil;
+ if (i >= 0 && isloaded(filelist[i], THUMB) && usecache)
+ tmpimg = display.open(tmppath+filelist[i]+"."+string THUMB+"~");
+ if (tmpimg == nil)
+ tmpimg = procimg;
+ if (tmpimg != nil) {
+ w := tmpimg.r.dx();
+ h := tmpimg.r.dy();
+ tkcmd(top, "panel .f.p2 -width "+string w+" -height "+string h+
+ " -borderwidth 2 -relief raised");
+ tk->putimage(top, ".f.p2", tmpimg, nil);
+ tkcmd(top, "grid .f.p2 -row 2 -column 0 -rowspan 2 -sticky e");
+ tkcmd(top, "grid columnconfigure .f 0 -minsize "+string (w + 14));
+ }
+
+ tkcmd(top, ".f.l1 configure -text {"+filelist[i]+".jpg}");
+ centrewin(top,r,1);
+ oldcoords := coords;
+ tkclient->onscreen(top, "exact");
+ tkclient->startinput(top, "kbd"::"ptr"::nil);
+
+ main: for (;;) {
+ alt {
+ s := <-top.ctxt.kbd =>
+ tk->keyboard(top, s);
+ s := <-top.ctxt.ptr =>
+ tk->pointer(top, *s);
+ text := <-chanin =>
+ if (!oldcoords.eq(coords)) {
+ centrewin(top,coords,0);
+ oldcoords = coords;
+ }
+ if (text == "!done!") break main;
+ if (text[:2] == "pc") {
+ val := int text[3:];
+ imgbg.draw(((0,0),(val,15)), imgfg,nil,(0,0));
+ if (val != 100)
+ imgbg.draw(((val+1,0),(100,15)), black,nil,(0,0));
+ imgbg.text((42,1),white,(0,0),font, text[3:]+"%");
+ tkcmd(top,".f.p dirty; update");
+ }
+ else if (text[:2] == "l2")
+ tkcmd(top, ".f.l2 configure -text {"+text[3:]+"}; update");
+ }
+ }
+ working = 0;
+}
+
+centrewin(top: ref Tk->Toplevel, r: Rect, first: int)
+{
+ s := "";
+ if (first)
+ s = "pack .f;";
+ w := int tkcmd(top, ".f cget -width");
+ h := int tkcmd(top, ".f cget -height");
+ tmp := tk->cmd(top, ".Wm_t cget -height");
+ if (tmp != "" && tmp[0] != '!') {
+ h += int tmp;
+ s += "focus .;";
+ }
+ px := r.min.x + ((r.max.x - r.min.x - w) / 2);
+ py := r.min.y + ((r.max.y - r.min.y - h) / 2);
+ tkcmd(top, ". configure -x "+string px+" -y "+string py);
+ tkcmd(top, s+"raise .; update");
+}
+
+workingscr2 := array[] of {
+ "frame .f -borderwidth 2 -relief raised",
+ "label .f.l3 -text { } -width 220 -height 2",
+ "label .f.l -text {Please Wait} @",
+ "label .f.l2 -text {|} -width 20 @",
+ "button .f.b -text {Cancel} -command {send chanin kill} &",
+ "grid .f.l -row 1 -column 0 -sticky e",
+ "grid .f.l2 -row 1 -column 1 -sticky w",
+ "grid .f.b -pady 5 -row 3 -column 0 -columnspan 2",
+ "grid .f.l3 -row 4 -column 0 -columnspan 2",
+ "grid rowconfigure .f 1 -minsize 80",
+};
+
+workingscreen2(r : Rect, pid: int, ctlchan: chan of int, loading: int)
+{
+ (top, nil) := tkclient->toplevel(context,"",nil, tkclient->Plain);
+ chanin := chan of string;
+ tk->namechan(top, chanin, "chanin");
+ for (tk1 := 0; tk1 < len workingscr2; tk1++)
+ tkcmd(top, workingscr2[tk1]);
+
+ if (loading) {
+# loadimg := display.open("camload.bit");
+ if (loadimg != nil) {
+ w := loadimg.r.dx();
+ h := loadimg.r.dy();
+ tkcmd(top, "panel .f.p -width "+string w+" -height "+string h+
+ " -borderwidth 2 -relief raised");
+ tk->putimage(top, ".f.p", loadimg, nil);
+ tkcmd(top, "grid .f.p -row 2 -column 0 -columnspan 2 -pady 5 -padx 20");
+ tkcmd(top, "grid forget .f.l .f.l2; grid rowconfigure .f 1 -minsize 20");
+ }
+ }
+ else {
+ if (procimg != nil) {
+ w := procimg.r.dx();
+ h := procimg.r.dy();
+ tkcmd(top, "panel .f.p -width "+string w+" -height "+string h+
+ " -borderwidth 2 -relief raised");
+ tk->putimage(top, ".f.p", procimg, nil);
+ tkcmd(top, "grid .f.p -row 2 -column 0 -columnspan 2");
+ tkcmd(top, "grid rowconfigure .f 1 -minsize 30");
+ tkcmd(top, "grid rowconfigure .f 2 -minsize 50");
+ }
+ }
+
+ centrewin(top,r,1);
+ spawn workingupdate(top,chanin);
+ tkclient->onscreen(top, "exact");
+ tkclient->startinput(top, "kbd"::"ptr"::nil);
+
+ main: for (;;) {
+ alt {
+ s := <-top.ctxt.kbd =>
+ tk->keyboard(top, s);
+ s := <-top.ctxt.ptr =>
+ tk->pointer(top, *s);
+ inp := <-chanin =>
+ if (inp == "done") break main;
+ if (inp == "kill") {
+ working = 0;
+ if (pid != -1) kill(pid);
+ ctlchan <-= KILLED;
+ <-chanin;
+ break main;
+ }
+ }
+ }
+}
+
+workingupdate(top: ref Tk->Toplevel, chanout: chan of string)
+{
+ show := array[] of { "/", "-", "\\\\", "|", };
+ if (working) {
+ chanout <-= "done";
+ return;
+ }
+ working = 1;
+ oldcoords := coords;
+ hidden := 0;
+ loop: for(;;) {
+ for (i := 0; i < 4; i++) {
+ sys->sleep(100);
+ tkcmd(top, ".f.l2 configure -text {"+show[i]+"}; update");
+ if (!working) break loop;
+ if (!oldcoords.eq(coords)) {
+ centrewin(top, coords,0);
+ oldcoords = coords;
+ }
+ }
+ }
+ chanout <-= "done";
+}
+
+scrollx := 0;
+scrolly := 0;
+
+resizemain(top: ref Tk->Toplevel, init: int)
+{
+ h, w: int;
+ if (init) {
+ growheight(top, 4000);
+ h = int tkcmd(top, ".f.fsnap cget -height") +
+ int tkcmd(top, ".Wm_t cget -height") +
+ 2 * (124 - (5*(3-ssize)));
+ if (h > display.image.r.dy())
+ h = display.image.r.dy();
+ w = display.image.r.dx();
+ }
+ else {
+ r := tk->rect(top, ".", 0);
+ h = r.dy();
+ w = r.dx();
+ }
+
+ ht := int tkcmd(top, ".Wm_t cget -height");
+
+ hf := int tkcmd(top, ".f cget -height");
+ wf := int tkcmd(top, ".f cget -width");
+ wsb := int tkcmd(top, ".f.f1.sb1 cget -width");
+
+ growwidth(top, w - 4);
+ ws := int tkcmd(top, ".f.fsnap cget -width");
+ if (w > ws + 4)
+ w = ws + 4;
+ shrinkwidth(top,w - 4);
+ ws = int tkcmd(top, ".f.fsnap cget -width");
+ if (w < ws || init)
+ w = ws + 4;
+
+ hmax := ((3*(h - ht))/5) - 4;
+ growheight(top, hmax);
+ shrinkheight(top, hmax);
+ hs := int tkcmd(top, ".f.fsnap cget -height");
+
+ hmb := int tkcmd(top, ".f.fsnap.fsettings.mb cget -height");
+ if (h < ht+hs + 107 + hmb) h = ht+hs+107 + hmb;
+
+# hc2 = int tkcmd(top, ".f.fsnap cget -height");
+ wc2 := int tkcmd(top, ".f.fsnap cget -width");
+
+ hc1 := h - ht - hs - 4;
+ wc1 := w-wsb-4;
+# wc1 = wc2 - wsb;
+ tkcmd(top, ".f.f1.c1 configure -height "+string hc1+" -width "+string wc1);
+# tkcmd(top, ".f.f2.c1 configure -height "+string hc2+" -width "+string wc2);
+ if (w < wc2 + 4)
+ w = wc2 + 4;
+ ws = int tkcmd(top, ".f.fsnap cget -width");
+ hs = int tkcmd(top, ".f.fsnap cget -height");
+
+ tkcmd(top, ". configure -height "+string h+" -width "+string w+"; update");
+ refreshfilelist(top, 0);
+}
+
+growwidth(top: ref Tk->Toplevel, wc2: int)
+{
+ ws := int tkcmd(top, ".f.fsnap cget -width");
+ if (wc2 > ws && reducew[2]) {
+ tkcmd(top, ".f.fsnap.ftime.l1 configure -text {Local:}");
+ tkcmd(top, ".f.fsnap.ftime.l2 configure -text {Camera:}");
+ tkcmd(top, ".f.fsnap.ftime.cb configure -text {Set to local time}");
+ reducew[2] = 0;
+ }
+ ws = int tkcmd(top, ".f.fsnap cget -width");
+ if (wc2 > ws && reducew[1]) {
+ tkcmd(top, ".f.fsnap.ftime.l3 configure -text {"+ltime+"}");
+ tkcmd(top, ".f.fsnap.ftime.l4 configure -text {"+ctime+"}");
+ tkcmd(top, ".f.fsnap.ftime.cb configure -text {Set camera to local time}");
+ reducew[1] = 0;
+ }
+ ws = int tkcmd(top, ".f.fsnap cget -width");
+ if (wc2 > ws && reducew[0]) {
+ tkcmd(top, ".f.fsnap.fstore.l1 configure -text { Photos taken:}");
+ reducew[0] = 0;
+ }
+ ws = int tkcmd(top, ".f.fsnap cget -width");
+ if (wc2 > ws) {
+ wfs += wc2 - ws;
+ if (wfs > 125-(20*(3-ssize))) wfs = 125-(20*(3-ssize));
+ tkcmd(top, "grid columnconfigure .f.fsnap 2 -minsize "+string wfs);
+ }
+}
+
+growheight(top: ref Tk->Toplevel, hc2: int)
+{
+ hs := int tkcmd(top, ".f.fsnap cget -height");
+ if (hc2 > hs) {
+ tk->cmd(top, "grid .f.fsnap.fsettings.mb2 -row 2 -column 0 -sticky ew");
+ tk->cmd(top, "grid .f.fsnap.ftime.cb -row 2 -column 0 -columnspan 2");
+ tk->cmd(top, "grid .f.fsnap.ftime.b -row 3 -column 0 -columnspan 2");
+ }
+ hs = int tkcmd(top, ".f.fsnap cget -height");
+ if (hc2 > hs) {
+ hsc := int tkcmd(top, ".f.fsnap.fzpos.sc cget -height");
+ hsc += hc2 - hs;
+ if (hsc > 88-(10*(3-ssize))) hsc = 88-(10*(3-ssize));
+ tkcmd(top, ".f.fsnap.fzpos.sc configure -height "+string hsc);
+ }
+ hs = int tkcmd(top, ".f.fsnap cget -height");
+ if (hc2 > hs) {
+ hfs += hc2 - hs;
+ if (hfs > 30 - (5*(3-ssize))) hfs = 30- (5*(3-ssize));
+ tkcmd(top, "grid rowconfigure .f.fsnap 0 -minsize "+string hfs);
+ tkcmd(top, "grid rowconfigure .f.fsnap 2 -minsize "+string hfs);
+ tkcmd(top, "grid rowconfigure .f.fsnap 4 -minsize "+string hfs);
+ }
+}
+
+shrinkheight(top: ref Tk->Toplevel, hc2: int)
+{
+ hs := int tkcmd(top, ".f.fsnap cget -height");
+ if (hc2 < hs) {
+ hfs -= hs - hc2;
+ if (hfs < 15) hfs = 15;
+ tkcmd(top, "grid rowconfigure .f.fsnap 0 -minsize "+string hfs);
+ tkcmd(top, "grid rowconfigure .f.fsnap 2 -minsize "+string hfs);
+ tkcmd(top, "grid rowconfigure .f.fsnap 4 -minsize "+string hfs);
+ }
+ hs = int tkcmd(top, ".f.fsnap cget -height");
+ if (hc2 < hs) {
+ hsc := int tkcmd(top, ".f.fsnap.fzpos.sc cget -height");
+ hsc -= hs - hc2;
+ if (hsc < 55-(5*(3-ssize))) hsc = 55-(5*(3-ssize));
+ tkcmd(top, ".f.fsnap.fzpos.sc configure -height "+string hsc);
+ }
+ hs = int tkcmd(top, ".f.fsnap cget -height");
+ if (hc2 < hs) {
+ tk->cmd(top, "grid forget .f.fsnap.fsettings.mb2");
+ tk->cmd(top, "grid forget .f.fsnap.ftime.cb");
+ tk->cmd(top, "grid forget .f.fsnap.ftime.b");
+ }
+}
+
+shrinkwidth(top: ref Tk->Toplevel, wc2: int)
+{
+ ws := int tkcmd(top, ".f.fsnap cget -width");
+ wib := int tkcmd(top, ".f.fsnap.fsettings.b cget -width");
+ if (wc2 < ws) {
+ diff := ws - wc2;
+ wfs -= diff;
+ if (wfs < wib) wfs = wib;
+ tkcmd(top, "grid columnconfigure .f.fsnap 2 -minsize "+string wfs);
+ }
+ ws = int tkcmd(top, ".f.fsnap cget -width");
+ if (wc2 < ws) {
+ tkcmd(top, ".f.fsnap.fstore.l1 configure -text { Taken:}");
+ reducew[0] = 1;
+ }
+ ws = int tkcmd(top, ".f.fsnap cget -width");
+ if (wc2 < ws) {
+ tkcmd(top, ".f.fsnap.ftime.l3 configure -text {"+ltime[len ltime - 8:]+"}");
+ tkcmd(top, ".f.fsnap.ftime.l4 configure -text {"+ctime[len ctime - 8:]+"}");
+ tkcmd(top, ".f.fsnap.ftime.cb configure -text {Set to local time}");
+ reducew[1] = 1;
+ }
+ ws = int tkcmd(top, ".f.fsnap cget -width");
+ if (wc2 < ws) {
+ tkcmd(top, ".f.fsnap.ftime.l1 configure -text {C:}");
+ tkcmd(top, ".f.fsnap.ftime.l2 configure -text {}");
+ tkcmd(top, ".f.fsnap.ftime.l3 configure -text {"+ctime[len ctime - 17:len ctime - 8]+"}");
+ tkcmd(top, ".f.fsnap.ftime.cb configure -text {Set local}");
+ reducew[2] = 1;
+ }
+ ws = int tkcmd(top, ".f.fsnap cget -width");
+ if (wc2 > ws) {
+ wfs = 125-(20*(3-ssize));
+ tkcmd(top, "grid columnconfigure .f.fsnap 2 -minsize "+string wfs);
+ }
+}
+
+ltime, ctime: string;
+wfs := 150;
+hfs := 30;
+reducew := array[10] of { * => 0 };
+
+getcoords(top: ref Tk->Toplevel): Rect
+{
+ h := int tkcmd(top, ". cget -height");
+ w := int tkcmd(top, ". cget -width");
+ x := int tkcmd(top, ". cget -actx");
+ y := int tkcmd(top, ". cget -acty");
+ r := Rect((x,y),(x+w,y+h));
+ return r;
+}
+
+viewscr := array[] of {
+ "frame .f -bg",
+ "canvas .f.c -yscrollcommand {.f.sy set} -xscrollcommand {.f.sx set} -height 300 -width 500",
+ "scrollbar .f.sx -command {.f.c xview} -orient horizontal",
+ "scrollbar .f.sy -command {.f.c yview}",
+ "grid .f.c -row 0 -column 0",
+ "grid .f.sy -row 0 -column 1 -sticky ns",
+ "grid .f.sx -row 1 -column 0 -sticky ew",
+ "bind .Wm_t <ButtonPress-1> +{focus .}",
+ "bind .Wm_t.title <ButtonPress-1> +{focus .}",
+ "pack propagate . 0",
+ "menu .m @",
+ ".m add command -text {Save As...}",
+ ".m add separator",
+ ".m add command -text {bit} -command {send butchan save bit}",
+ ".m add command -text {jpeg} -command {send butchan save jpg}",
+
+};
+
+resizeview(top: ref Tk->Toplevel, wp,hp: int)
+{
+ w := int tkcmd(top, ". cget -width");
+ h := int tkcmd(top, ". cget -height");
+ hs := int tkcmd(top, ".f.sx cget -height");
+ ws := int tkcmd(top, ".f.sy cget -width");
+ ht := int tkcmd(top, ".Wm_t cget -height");
+ wc := w - ws - 4;
+ hc := h - hs - ht - 6;
+ wpc := wc - wp;
+ hpc := hc - hp;
+ if (wpc > 0) {
+ wc -= wpc;
+ w -= wpc;
+ }
+ if (hpc > 0) {
+ hc -= hpc;
+ h -= hpc;
+ }
+ tkcmd(top, ". configure -height "+string h+" -width "+string w);
+ tkcmd(top, ".f.c configure -height "+string hc+" -width "+string wc);
+ tkcmd(top, "update");
+}
+
+multiview()
+{
+ s := "";
+ for (k := 0; k < nofiles; k++) {
+ if (selected[k]) {
+ e := vw(k);
+ if (e != 0)
+ s += filelist[k]+".jpg ";
+ if (e == 3) {
+ s += "cancelled\n";
+ break;
+ }
+ else if (e == -1)
+ s += "failed\n";
+ }
+ }
+ if (s != "")
+ dialog("Multiple view complete:\n\n"+s,0,-1,coords);
+}
+
+vw(i: int): int
+{
+ # raise window if it is already open
+ low := toplevels;
+ for(; low != nil; low = tl low) {
+ (tplvl, name, nil, nil) := hd low;
+ if (filelist[i]+".jpg" == name) {
+ tkcmd(tplvl, "raise .; focus .; update");
+ return 0;
+ }
+ }
+
+ ctlchan := chan of int;
+ ctlchans := chan of string;
+ chanout := chan of string;
+ chanin := chan of string;
+ spawn downloadscreen(coords, i, ctlchans, chanout);
+ chanout <-= "!show!";
+ spawn view(i,ctlchan, chanin, chanout);
+ pid := <-ctlchan;
+ killed := 0;
+ for (;;) alt {
+ s := <-ctlchans =>
+ if (s == "kill") {
+ chanin <-= "kill";
+ killed = 1;
+ }
+ e := <-ctlchan =>
+ chanout <-= "!done!";
+ if (killed)
+ return 3;
+ if (e == -1)
+ dialog(sys->sprint("Cannot read file: %s.jpg\n%r",filelist[i]),0,i,coords);
+ if (e == -2) return vw(i);
+ else return e;
+ }
+ return 0;
+}
+
+view(i: int, ctlchan: chan of int, chanin, chanout: chan of string)
+{
+ ctlchan <-= sys->pctl(0, nil);
+ titlename := filelist[i]+".jpg";
+
+ filename := camerapath+"jpg/"+filelist[i]+".jpg";
+ filesize := testfilesize(filename);
+ cached := 0;
+ if (filesize > 0 && isloaded(filelist[i],JPG) && usecache) {
+ cachefilename := tmppath+filelist[i]+"."+string JPG+"~";
+ if (testfilesize(cachefilename) == filesize) {
+ cached = 1;
+ filename = cachefilename;
+ }
+ else delloaded(filelist[i],JPG);
+ }
+ if (filesize < 1) {
+ ctlchan <-= -1;
+ return;
+ }
+
+ img: ref Image;
+ cachepath := "";
+ if (!cached && usecache)
+ cachepath = tmppath+filelist[i]+"."+string JPG+"~";
+ img = readjpg->jpg2img(filename, cachepath, chanin, chanout);
+ if(img == nil) {
+ if (cachepath != nil)
+ sys->remove(cachepath);
+ if (!cached)
+ ctlchan <-= -1;
+ else {
+ delloaded(filelist[i], JPG);
+ ctlchan <-= -2;
+ }
+ return;
+ }
+ else {
+ chanout <-= "l2 Displaying";
+ if (cachepath != "")
+ imgloaded = (filelist[i], JPG) :: imgloaded;
+ (t, titlechan) := tkclient->toplevel(context, "", titlename, Tkclient->Appl);
+ butchan := chan of string;
+ tk->namechan(t, butchan, "butchan");
+ tkcmd(t, "focus .Wm_t; update");
+ for (tk1 := 0; tk1 < len viewscr; tk1++)
+ tkcmd(t, viewscr[tk1]);
+ w := img.r.dx();
+ h := img.r.dy();
+ tkcmd(t, "panel .p -width "+string w+" -height "+string h);
+ tk->putimage(t, ".p",img,nil);
+ tkcmd(t, "bind .p <ButtonPress-2> {send butchan move %X %Y}");
+ tkcmd(t, "bind .p <ButtonRelease-2> {send butchan release}");
+ tkcmd(t, "bind .p <ButtonPress-3> {send butchan menu %X %Y}");
+ tkcmd(t, ".f.c create window 0 0 -window .p -anchor nw");
+ tkcmd(t, ".f.c configure -scrollregion {0 0 "+string w+" "+string h+"}");
+ ctlchan <-= 0;
+ addtoplevel(t,titlename,nil, sys->pctl(0,nil));
+
+ h1 := 300;
+ w1 := 500;
+ ht := int tkcmd(t, ".Wm_t cget -height");
+ if (h1 > display.image.r.dy() - ht) h1 = display.image.r.dy() - ht;
+ if (w1 > display.image.r.dx()) w1 = display.image.r.dx();
+ tkcmd(t, ". configure -width "+string w1+" -height "+string h1);
+ resizeview(t,w,h);
+ tkcmd(t, "pack .f; update");
+ scrolling := 0;
+ origin := Point (0,0);
+ tkclient->onscreen(t, nil);
+ tkclient->startinput(t, "kbd"::"ptr"::nil);
+
+ loop: for(;;) alt{
+ s := <-t.ctxt.kbd =>
+ tk->keyboard(t, s);
+ s := <-t.ctxt.ptr =>
+ tk->pointer(t, *s);
+ inp := <- butchan =>
+ (n, lst) := sys->tokenize(inp, " \t\n");
+ case hd lst {
+ "save" =>
+ ftype := "."+hd tl lst;
+ savename := selectfile->filename(context,
+ display.image,
+ "Save "+filelist[i]+ftype+" to directory...",
+ "*"+ftype :: nil,
+ lastpath);
+ if (savename != "" && savename[0] == '/') {
+ lastpath = savename[:isat2(savename,"/")+1];
+ if (savename[len savename - 1] == '/')
+ savename += filelist[i]+ftype;
+
+ if (!hasext(savename, ftype))
+ savename += ftype;
+ (fd, cancel) := create(savename, getcoords(t));
+ if (fd != nil) {
+ n2 := -1;
+ if (ftype == ".bit")
+ n2 = display.writeimage(fd,img);
+ if (ftype == ".jpg")
+ n2 = 1 - dnld(i, "$"+savename);
+ if (n2 == 0) {
+ dialog(filelist[i]+ftype+" saved",0,i,getcoords(t));
+ break;
+ }
+ dialog("Could not save: "+filelist[i]+ftype,0,i,getcoords(t));
+ }
+ if (!cancel)
+ dialog("Could not save: "+filelist[i]+ftype,0,i,getcoords(t));
+ break;
+ }
+
+ "menu" =>
+ tkcmd(t, ".m post "+hd tl lst+" "+hd tl tl lst);
+ "release" =>
+ scrolling = 0;
+ "move" =>
+ newpoint := Point (int hd tl lst, int hd tl tl lst);
+
+ if (scrolling) {
+ diff := (origin.sub(newpoint)).mul(2);
+ tkcmd(t, ".f.c xview scroll "+string diff.x+" units");
+ tkcmd(t, ".f.c yview scroll "+string diff.y+" units");
+ origin = newpoint;
+ # clearbuffer(butchan);
+ }
+ else {
+ origin = newpoint;
+ scrolling = 1;
+ }
+ }
+
+ s := <-t.ctxt.ctl or
+ s = <-t.wreq or
+ s = <-titlechan =>
+ if (s == "exit")
+ break loop;
+ e := tkclient->wmctl(t, s);
+ if (e == nil && s[0] == '!')
+ resizeview(t,w,h);
+ }
+ deltoplevel(t);
+ }
+}
+
+create(filename: string, co: Rect): (ref sys->FD, int)
+{
+ (n,dir) := sys->stat(filename);
+ if (n != -1 && !dialog("overwrite "+filename+"?",1,-1,co))
+ return (nil,1);
+ return (sys->create(filename,sys->OWRITE,8r666), 0);
+}
+
+hasext(name,ext: string): int
+{
+ if (len name >= len ext && name[len name - len ext:] == ext)
+ return 1;
+ return 0;
+}
diff --git a/appl/demo/camera/tkinterface.dis b/appl/demo/camera/tkinterface.dis
new file mode 100644
index 00000000..6306a8c1
--- /dev/null
+++ b/appl/demo/camera/tkinterface.dis
Binary files differ
diff --git a/appl/demo/camera/tkinterface.sbl b/appl/demo/camera/tkinterface.sbl
new file mode 100644
index 00000000..cc150fdc
--- /dev/null
+++ b/appl/demo/camera/tkinterface.sbl
@@ -0,0 +1,7950 @@
+limbo .sbl 2.1
+tkinterface
+11
+tkinterface.b
+tk.m
+tkclient.m
+sys.m
+daytime.m
+readdir.m
+bufio.m
+selectfile.m
+string.m
+draw.m
+readjpg.m
+6733
+58.1,23 0
+59.1,15 1
+61.1,25 2
+65.1,31 3
+66.1,37 4
+67.1,37 5
+68.1,31 6
+70.1,31 7
+71.1,28 8
+73.1,22 9
+74.1,40 10
+75.1,17 11
+1,17 11
+76.1,46 12
+77.1,19 13
+1,19 13
+1,19 13
+1,19 14
+78.1,37 15
+79.1,23 16
+15,22 16
+1,23 16
+80.1,66 17
+24,31 17
+33,65 17
+1,66 17
+1,66 17
+81.1,19 18
+82.1,24 19
+12,19 19
+20,23 19
+1,24 19
+1,24 19
+83.21,24 20
+12,19 20
+1,25 20
+84.1,15 21
+85.8,19 22
+86.6,22 23
+26,35 23
+26,38 23
+26,38 24
+26,45 23
+47,67 25
+87.6,13 26
+6,26 26
+6,26 27
+28,40 28
+88.2,16 29
+2,16 29
+90.5,21 30
+91.2,19 31
+92.5,21 32
+36,50 32
+36,54 32
+25,55 32
+25,62 32
+93.13,27 33
+2,34 33
+95.6,19 34
+1,21 34
+1,21 35
+97.5,11 36
+5,6 36
+5,11 36
+5,11 36
+5,17 36
+21,27 36
+21,22 36
+21,27 36
+21,27 36
+21,33 36
+35,44 37
+98.12,18 38
+12,13 38
+12,18 38
+12,18 38
+20,26 38
+20,21 38
+20,26 38
+20,26 38
+100.5,15 39
+101.2,42 40
+102.2,42 41
+103.2,40 42
+2,40 43
+105.10,20 44
+106.2,43 45
+107.2,43 46
+108.2,40 47
+2,40 48
+111.2,44 49
+112.2,44 50
+113.2,40 51
+115.5,24 52
+16,22 52
+5,24 52
+5,24 52
+5,33 52
+116.2,13 53
+2,13 54
+117.6,33 55
+118.5,25 56
+16,23 56
+5,25 56
+5,25 56
+5,34 56
+119.2,14 57
+2,14 58
+120.6,35 59
+121.5,25 60
+16,23 60
+5,25 60
+5,25 60
+5,34 60
+122.2,14 61
+2,14 62
+123.6,35 63
+125.1,38 64
+11,18 64
+24,37 64
+1,38 64
+1,38 64
+126.1,38 65
+11,18 65
+24,37 65
+1,38 65
+1,38 65
+128.1,16 66
+1,16 66
+129.0,1 67
+216.1,8 68
+217.7,11 69
+7,20 69
+7,20 70
+24,28 69
+24,39 69
+24,39 71
+43,47 69
+43,54 69
+43,54 72
+218.7,11 73
+7,17 73
+2,17 73
+2,17 74
+219.2,10 75
+2,10 75
+221.10,15 76
+10,19 76
+8,20 76
+8,27 76
+33,38 76
+33,42 76
+31,43 76
+31,51 76
+222.9,14 77
+9,17 77
+2,18 77
+2,18 77
+223.1,11 78
+224.8,9 79
+1,9 79
+232.1,14 80
+233.1,32 81
+234.1,56 82
+19,41 82
+43,55 82
+1,56 82
+1,56 82
+235.5,18 83
+236.2,58 84
+19,43 84
+45,57 84
+2,58 84
+2,58 84
+237.1,7 85
+239.2,11 86
+240.2,20 87
+7,9 87
+15,19 87
+2,20 87
+2,20 87
+241.6,13 88
+6,13 89
+6,13 90
+15,20 91
+242.14,40 92
+28,29 92
+30,39 92
+14,40 92
+14,40 92
+3,4 92
+6,9 92
+6,9 93
+243.2,14 94
+2,25 94
+244.2,14 95
+2,24 95
+245.6,16 96
+24,30 96
+20,30 96
+20,30 97
+20,35 96
+246.3,15 98
+3,30 98
+247.3,24 99
+17,23 99
+3,24 99
+3,24 99
+248.3,15 100
+3,29 100
+249.10,16 101
+7,16 101
+7,27 101
+7,27 102
+250.4,16 103
+4,29 103
+251.4,16 104
+43,49 104
+40,49 104
+37,49 104
+34,49 104
+31,49 104
+4,49 104
+4,49 105
+252.25,31 106
+22,31 106
+19,31 106
+4,31 106
+4,31 107
+253.9,15 108
+17,28 109
+254.5,22 110
+9,11 110
+17,21 110
+5,22 110
+5,22 110
+255.19,44 111
+33,34 111
+35,43 111
+19,44 111
+19,44 111
+256.5,20 112
+257.19,26 113
+16,26 113
+5,26 113
+5,26 114
+258.9,15 115
+259.10,22 116
+10,38 116
+260.7,19 117
+7,33 117
+7,33 118
+261.15,27 119
+15,43 119
+262.7,19 120
+7,33 120
+264.16,28 121
+9,36 121
+40,51 121
+53,65 122
+265.5,17 123
+26,30 123
+32,35 123
+40,52 123
+40,57 123
+5,57 123
+5,57 123
+5,57 124
+5,57 125
+5,57 126
+5,57 127
+5,57 128
+253.30,33 129
+30,33 129
+267.8,19 130
+268.16,28 131
+16,33 131
+39,51 131
+35,57 131
+35,60 131
+35,60 132
+5,72 131
+5,72 133
+5,72 134
+269.5,13 135
+5,13 136
+272.15,21 137
+12,21 137
+12,30 137
+12,30 138
+273.4,16 139
+4,31 139
+274.4,16 140
+49,55 140
+46,55 140
+43,55 140
+40,55 140
+37,55 140
+34,55 140
+31,55 140
+4,55 140
+4,55 141
+275.21,27 142
+18,27 142
+15,27 142
+4,27 142
+4,27 143
+276.27,33 144
+24,33 144
+21,33 144
+18,33 144
+15,33 144
+4,33 144
+4,33 145
+277.4,12 146
+278.11,23 147
+279.5,14 148
+280.5,14 149
+281.5,14 150
+5,14 150
+283.4,16 151
+25,30 151
+32,35 151
+40,52 151
+40,57 151
+4,57 151
+4,57 151
+4,57 152
+4,57 153
+284.4,16 154
+25,30 154
+32,35 154
+40,52 154
+40,57 154
+4,57 154
+4,57 154
+4,57 155
+4,57 156
+285.4,16 157
+25,30 157
+32,35 157
+40,52 157
+40,57 157
+4,57 157
+4,57 157
+4,57 158
+4,57 159
+4,57 160
+288.15,27 161
+15,32 161
+33,52 161
+45,51 161
+33,52 161
+33,52 161
+4,64 161
+4,64 162
+4,64 163
+289.4,12 164
+291.7,11 165
+292.4,16 165
+4,38 165
+293.4,16 165
+4,38 165
+294.4,16 165
+4,36 165
+295.4,39 165
+13,25 165
+13,30 165
+31,38 165
+4,39 165
+4,39 165
+4,39 165
+296.4,39 165
+13,25 165
+13,30 165
+31,38 165
+4,39 165
+4,39 165
+4,39 165
+297.4,39 165
+13,25 165
+13,30 165
+31,38 165
+4,39 165
+4,39 165
+4,39 165
+298.4,40 165
+13,25 165
+13,30 165
+31,39 165
+4,40 165
+4,40 165
+4,40 165
+299.4,39 165
+13,25 165
+13,30 165
+31,38 165
+4,39 165
+4,39 165
+4,39 165
+300.4,43 165
+13,25 165
+13,30 165
+31,42 165
+4,43 165
+4,43 165
+4,43 165
+301.4,39 165
+13,25 165
+13,30 165
+31,38 165
+4,39 165
+4,39 165
+4,39 165
+302.4,39 165
+13,25 165
+13,30 165
+31,38 165
+4,39 165
+4,39 165
+4,39 165
+303.4,39 165
+13,25 165
+13,30 165
+31,38 165
+4,39 165
+4,39 165
+4,39 165
+304.5,8 166
+305.3,6 167
+3,6 168
+3,6 169
+3,6 169
+308.1,16 170
+309.0,1 171
+313.1,10 172
+314.16,21 173
+5,13 173
+5,21 173
+30,32 174
+23,32 174
+315.6,12 175
+23,30 176
+19,30 176
+33,43 176
+18,44 176
+14,44 176
+316.6,15 177
+33,41 177
+31,41 177
+27,28 177
+27,42 177
+19,42 177
+19,42 178
+44,51 179
+315.46,49 180
+46,49 180
+318.8,11 181
+1,11 181
+323.1,10 182
+324.16,21 183
+5,13 183
+5,21 183
+30,32 184
+23,32 184
+325.11,16 185
+19,27 185
+6,27 185
+29,35 186
+326.6,15 187
+33,41 187
+31,41 187
+27,28 187
+27,42 187
+19,42 187
+19,42 188
+44,51 189
+325.37,40 190
+37,40 190
+328.8,11 191
+1,11 191
+334.1,7 192
+335.6,12 193
+14,29 194
+336.10,22 195
+2,27 195
+337.15,23 196
+6,11 196
+6,23 196
+33,38 196
+27,31 196
+27,39 196
+27,44 196
+27,44 197
+46,49 198
+46,49 199
+335.31,34 200
+31,34 200
+339.8,9 201
+1,9 201
+344.14,20 202
+5,11 202
+5,20 202
+29,30 203
+22,30 203
+345.9,15 204
+5,7 204
+5,16 204
+5,22 204
+5,22 205
+31,32 206
+24,32 206
+346.8,9 207
+1,9 207
+351.1,14 208
+352.10,11 209
+1,15 209
+354.6,23 210
+25,30 211
+355.6,25 212
+16,24 212
+6,25 212
+6,25 212
+6,31 212
+40,48 213
+33,48 213
+356.2,26 214
+13,21 214
+22,25 214
+2,26 214
+2,26 214
+357.10,19 215
+6,19 215
+21,26 216
+358.2,25 217
+2,25 217
+360.8,13 218
+1,13 218
+366.1,10 219
+367.6,12 220
+14,29 221
+368.2,8 222
+369.2,9 223
+372.3,10 224
+373.3,14 225
+374.10,21 226
+375.8,43 227
+16,28 227
+16,33 227
+35,42 227
+8,43 227
+8,43 227
+8,43 227
+45,51 228
+376.4,18 229
+4,18 229
+378.7,14 230
+7,14 231
+7,14 232
+16,21 233
+379.3,10 234
+380.10,22 235
+3,31 235
+10,27 235
+3,31 235
+381.3,22 236
+13,16 236
+18,21 236
+3,22 236
+3,22 236
+382.7,15 237
+17,29 238
+17,29 239
+383.8,12 240
+384.3,43 241
+18,30 241
+37,41 241
+18,35 241
+18,42 241
+3,43 241
+3,43 241
+385.7,14 242
+7,14 243
+7,14 244
+16,21 245
+16,21 246
+16,21 247
+16,21 247
+387.6,12 248
+388.3,55 249
+28,30 249
+32,44 249
+32,49 249
+50,54 249
+3,55 249
+3,55 249
+389.3,24 250
+3,24 251
+367.31,34 252
+31,34 252
+392.13,20 253
+1,31 253
+393.10,16 254
+6,20 254
+22,28 255
+394.2,7 256
+2,16 256
+395.2,14 257
+393.30,33 258
+30,33 258
+397.8,10 259
+1,10 259
+402.1,23 260
+1,23 260
+1,23 260
+403.1,94 261
+7,10 261
+12,93 261
+1,94 261
+1,94 261
+1,94 262
+404.1,80 263
+7,10 263
+12,79 263
+1,80 263
+1,80 263
+1,80 264
+405.6,12 265
+18,29 266
+14,29 266
+406.10,20 267
+6,20 267
+6,24 267
+29,39 267
+29,39 267
+29,43 267
+29,53 267
+29,53 268
+57,67 267
+57,67 267
+57,71 267
+57,82 267
+57,82 269
+407.4,40 270
+24,27 270
+28,29 270
+30,39 270
+4,40 270
+4,40 271
+409.3,410.50 272
+409.9,12 272
+39,49 272
+14,49 272
+14,410.36 272
+37,45 272
+409.14,410.45 272
+409.14,410.45 273
+409.14,410.49 272
+409.14,410.49 274
+409.3,410.50 272
+409.3,410.50 272
+409.3,410.50 275
+405.31,34 276
+31,34 276
+412.1,35 277
+7,10 277
+12,34 277
+1,35 277
+1,35 277
+1,35 278
+413.1,64 279
+7,10 279
+12,63 279
+1,64 279
+1,64 279
+1,64 280
+414.1,36 281
+7,10 281
+12,35 281
+1,36 281
+1,36 281
+1,36 282
+415.6,18 283
+24,32 284
+20,32 284
+416.3,417.30 285
+416.9,12 285
+44,51 285
+14,56 285
+14,61 285
+14,61 286
+3,417.30 285
+416.3,417.30 285
+416.3,417.30 287
+415.34,37 288
+34,37 288
+419.0,1 289
+423.14,35 290
+24,34 290
+24,34 290
+14,35 290
+14,35 290
+1,35 290
+424.1,12 291
+425.6,12 292
+14,29 293
+426.6,43 294
+14,26 294
+14,31 294
+32,42 294
+32,42 294
+6,43 294
+6,43 294
+6,43 294
+429.8,20 295
+8,26 295
+431.26,38 296
+5,44 296
+432.5,64 297
+11,14 297
+16,30 297
+16,63 297
+16,63 298
+5,64 297
+5,64 297
+5,64 299
+5,64 295
+434.5,17 300
+435.9,20 301
+436.6,32 302
+12,15 302
+17,31 302
+6,32 302
+6,32 302
+6,32 303
+437.6,68 304
+12,15 304
+17,31 304
+17,44 304
+45,55 304
+17,55 304
+17,59 304
+17,67 304
+17,67 305
+6,68 304
+6,68 304
+6,68 306
+438.6,69 307
+12,15 307
+17,30 307
+17,65 307
+17,68 307
+17,68 308
+6,69 307
+6,69 307
+6,69 309
+440.13,25 310
+26,39 310
+5,39 310
+5,39 311
+5,39 312
+441.5,64 313
+11,14 313
+16,30 313
+16,63 313
+16,63 314
+5,64 313
+5,64 313
+5,64 315
+442.5,80 316
+11,14 316
+16,29 316
+16,48 316
+49,62 316
+16,62 316
+16,62 317
+16,79 316
+16,79 318
+5,80 316
+5,80 316
+5,80 319
+443.5,43 320
+19,31 320
+19,36 320
+37,42 320
+5,43 320
+5,43 320
+444.10,22 321
+5,44 321
+32,42 321
+28,42 321
+10,27 321
+5,44 321
+445.9,17 322
+21,33 322
+21,49 322
+446.17,27 323
+11,27 323
+11,31 323
+6,31 323
+6,31 324
+447.5,57 325
+11,14 325
+16,30 325
+16,43 325
+16,45 325
+16,49 325
+16,56 325
+16,56 326
+5,57 325
+5,57 325
+5,57 327
+448.5,63 328
+11,14 328
+16,29 328
+16,62 328
+16,62 329
+5,63 328
+5,63 328
+5,63 330
+5,63 331
+5,63 295
+451.7,19 332
+7,35 332
+452.4,16 333
+4,39 333
+453.4,42 334
+18,30 334
+18,35 334
+36,41 334
+4,42 334
+4,42 334
+454.4,42 335
+18,30 335
+18,35 335
+36,41 335
+4,42 335
+4,42 335
+455.15,82 336
+27,59 336
+61,66 336
+67,70 336
+71,74 336
+75,81 336
+15,82 336
+15,82 336
+4,83 336
+10,13 336
+10,13 336
+10,13 337
+4,83 336
+4,83 336
+4,83 338
+456.4,457.51 339
+456.10,13 339
+15,28 339
+15,57 339
+15,457.12 339
+456.15,457.27 339
+30,38 339
+456.15,457.38 339
+456.15,457.38 340
+456.15,457.50 339
+456.15,457.50 341
+456.4,457.51 339
+456.4,457.51 339
+456.4,457.51 342
+458.4,52 343
+10,13 343
+15,28 343
+15,51 343
+15,51 344
+4,52 343
+4,52 343
+4,52 345
+4,52 346
+460.12,24 347
+12,38 347
+461.4,37 348
+10,13 348
+15,29 348
+15,36 348
+15,36 349
+4,37 348
+4,37 348
+4,37 350
+462.4,53 351
+10,13 351
+15,28 351
+15,52 351
+15,52 352
+4,53 351
+4,53 351
+4,53 353
+463.11,23 354
+4,28 354
+464.4,12 355
+465.11,21 356
+466.20,26 357
+467.5,162 358
+22,96 358
+97,102 358
+103,106 358
+107,111 358
+112,115 358
+116,128 358
+116,134 358
+143,152 358
+140,153 358
+135,153 358
+155,161 358
+5,162 358
+5,162 358
+468.5,17 359
+11,14 359
+15,16 359
+5,17 359
+5,17 359
+5,17 360
+469.16,470.20 361
+469.28,74 361
+470.6,11 361
+12,15 361
+16,19 361
+469.16,470.20 361
+469.16,470.20 361
+469.5,470.21 361
+469.11,14 361
+11,14 361
+11,14 362
+5,470.21 361
+469.5,470.21 361
+469.5,470.21 363
+471.5,17 364
+472.5,10 365
+5,10 366
+5,10 367
+5,10 367
+5,10 368
+475.3,476.59 369
+475.9,12 369
+14,29 369
+14,57 369
+14,476.20 369
+475.14,476.28 369
+29,37 369
+475.14,476.37 369
+475.14,476.37 370
+475.14,476.41 369
+475.14,476.51 369
+475.14,476.58 369
+475.14,476.58 371
+475.3,476.59 369
+475.3,476.59 369
+475.3,476.59 372
+477.3,62 373
+9,12 373
+14,27 373
+14,61 373
+14,61 374
+3,62 373
+3,62 373
+3,62 375
+478.7,19 376
+7,35 376
+479.4,480.63 377
+479.10,13 377
+15,30 377
+15,62 377
+15,480.21 377
+479.15,480.32 377
+33,41 377
+479.15,480.41 377
+479.15,480.41 378
+479.15,480.45 377
+479.15,480.55 377
+479.15,480.62 377
+479.15,480.62 379
+479.4,480.63 377
+479.4,480.63 377
+479.4,480.63 380
+481.4,63 381
+10,13 381
+15,28 381
+15,62 381
+15,62 382
+4,63 381
+4,63 381
+4,63 383
+483.3,11 384
+3,11 385
+425.31,34 386
+31,34 386
+486.0,1 387
+513.13,20 388
+12,26 388
+1,26 388
+514.13,20 389
+12,26 389
+1,26 389
+515.15,82 390
+34,41 390
+43,50 390
+43,57 390
+43,59 390
+43,59 391
+61,64 390
+66,81 390
+15,82 390
+15,82 390
+2,5 390
+2,5 392
+2,5 393
+516.1,25 394
+517.1,36 395
+14,17 395
+19,25 395
+27,35 395
+1,36 395
+1,36 395
+1,36 396
+518.6,14 397
+22,37 398
+16,37 398
+519.2,30 399
+8,11 399
+13,29 399
+13,29 399
+2,30 399
+2,30 399
+2,30 400
+518.39,44 401
+39,44 401
+520.1,33 402
+20,23 402
+25,32 402
+1,33 402
+521.1,45 403
+22,25 403
+41,44 403
+34,44 403
+27,44 403
+27,44 403
+27,44 404
+1,45 403
+524.9,17 405
+9,21 405
+9,21 406
+9,21 405
+526.9,17 405
+9,21 405
+9,21 407
+9,21 405
+528.12,18 405
+12,18 405
+523.2,8 405
+2,8 405
+2,8 405
+2,8 405
+525.3,23 408
+16,19 408
+21,22 408
+3,23 408
+3,23 405
+527.3,23 409
+15,18 409
+20,22 409
+3,23 409
+3,23 410
+3,23 405
+529.7,18 411
+31,54 412
+37,40 412
+42,53 412
+31,54 412
+31,54 412
+27,54 412
+27,54 413
+20,54 412
+530.12,27 414
+36,38 415
+29,38 415
+531.12,15 416
+12,19 416
+12,28 416
+12,28 417
+532.4,12 418
+533.15,22 419
+15,18 419
+15,22 419
+11,22 419
+11,22 420
+4,22 419
+534.8,12 421
+8,20 421
+33,56 422
+39,42 422
+44,55 422
+33,56 422
+33,56 422
+29,56 422
+29,56 423
+22,56 422
+535.8,12 424
+8,19 424
+23,27 424
+23,34 424
+536.5,50 425
+11,14 425
+16,49 425
+5,50 425
+5,50 425
+5,50 426
+537.5,54 427
+11,14 427
+16,41 427
+16,53 427
+16,53 428
+5,54 427
+5,54 427
+5,54 429
+5,54 430
+5,54 431
+5,54 405
+546.20,82 432
+39,46 432
+48,50 432
+52,65 432
+67,81 432
+20,82 432
+20,82 432
+547.1,15 433
+548.1,23 434
+7,10 434
+12,22 434
+1,23 434
+1,23 434
+1,23 435
+549.1,45 436
+7,10 436
+12,44 436
+1,45 436
+1,45 436
+1,45 437
+550.1,55 438
+7,10 438
+12,54 438
+1,55 438
+1,55 438
+1,55 439
+551.1,59 440
+7,10 440
+12,58 440
+1,59 440
+1,59 440
+1,59 441
+552.1,28 442
+7,10 442
+12,27 442
+1,28 442
+1,28 442
+1,28 443
+553.1,12 444
+554.8,18 445
+555.2,10 446
+556.2,20 447
+557.13,19 448
+558.2,53 449
+8,11 449
+13,33 449
+13,45 449
+13,48 449
+13,52 449
+13,52 450
+2,53 449
+2,53 449
+2,53 451
+559.2,53 452
+8,11 452
+13,33 452
+13,45 452
+13,48 452
+13,52 452
+13,52 453
+2,53 452
+2,53 452
+2,53 454
+560.2,68 455
+8,11 455
+13,32 455
+13,42 455
+13,44 455
+13,67 455
+13,67 456
+2,68 455
+2,68 455
+2,68 457
+561.2,68 458
+8,11 458
+13,32 458
+13,42 458
+13,44 458
+13,67 458
+13,67 459
+2,68 458
+2,68 458
+2,68 460
+562.2,14 461
+2,14 462
+2,14 463
+2,14 464
+2,14 465
+2,14 465
+564.1,30 466
+7,10 466
+12,29 466
+1,30 466
+1,30 466
+1,30 467
+565.1,29 468
+20,23 468
+25,28 468
+1,29 468
+566.1,45 469
+22,25 469
+41,44 469
+34,44 469
+27,44 469
+27,44 469
+27,44 470
+1,45 469
+569.9,17 471
+9,21 471
+9,21 472
+9,21 471
+571.9,17 471
+9,21 471
+9,21 473
+9,21 471
+573.13,21 471
+13,25 471
+13,25 474
+13,25 471
+574.12,20 471
+12,20 471
+575.13,21 471
+13,21 471
+568.2,8 471
+2,8 471
+2,8 471
+2,8 471
+570.3,23 475
+16,19 475
+21,22 475
+3,23 475
+3,23 471
+572.3,23 476
+15,18 476
+20,22 476
+3,23 476
+3,23 477
+3,23 471
+3,23 471
+3,23 471
+576.7,22 478
+7,22 479
+580.0,1 480
+577.3,30 481
+19,22 481
+24,29 481
+3,30 481
+3,30 481
+3,30 482
+3,30 483
+3,30 471
+584.1,17 484
+585.7,17 485
+586.28,34 486
+3,8 486
+10,14 486
+10,14 487
+10,14 488
+10,14 489
+587.14,24 490
+6,24 490
+588.3,43 491
+9,14 491
+16,42 491
+3,43 491
+3,43 491
+3,43 492
+589.3,19 493
+590.3,9 494
+3,9 495
+3,9 496
+585.19,31 497
+19,31 497
+593.1,25 498
+18,19 498
+21,24 498
+1,25 498
+1,25 498
+594.20,77 499
+39,46 499
+48,50 499
+52,60 499
+62,76 499
+20,77 499
+20,77 499
+595.1,25 500
+596.1,35 501
+14,17 501
+18,24 501
+26,34 501
+1,35 501
+1,35 501
+1,35 502
+597.1,37 503
+21,24 503
+25,26 503
+28,36 503
+1,37 503
+598.1,51 504
+7,10 504
+11,50 504
+1,51 504
+1,51 504
+1,51 505
+599.1,57 506
+7,10 506
+11,56 506
+1,57 506
+1,57 506
+1,57 507
+600.1,30 508
+7,10 508
+12,29 508
+1,30 508
+1,30 508
+1,30 509
+601.1,9 510
+602.1,13 511
+603.19,22 512
+604.6,12 513
+14,29 514
+605.6,44 515
+14,26 515
+14,31 515
+33,43 515
+33,43 515
+6,44 515
+6,44 515
+6,44 515
+606.3,13 516
+607.7,19 517
+7,30 517
+608.4,39 518
+15,18 518
+19,20 518
+21,33 518
+21,38 518
+4,39 518
+4,39 519
+610.4,15 520
+604.31,34 521
+31,34 521
+613.1,29 522
+20,23 522
+25,28 522
+1,29 522
+614.1,45 523
+22,25 523
+41,44 523
+34,44 523
+27,44 523
+27,44 523
+27,44 524
+1,45 523
+615.6,13 525
+616.23,37 526
+33,36 526
+23,37 526
+23,37 526
+2,53 526
+2,53 526
+38,41 526
+43,50 526
+51,52 526
+2,53 526
+617.2,11 527
+618.8,19 528
+619.17,24 529
+7,25 529
+7,36 529
+40,62 529
+49,52 529
+54,61 529
+40,62 529
+40,62 529
+40,68 529
+620.4,11 530
+621.4,9 531
+618.21,35 532
+21,35 532
+21,35 533
+625.6,9 534
+626.2,45 535
+21,24 535
+25,31 535
+32,40 535
+41,42 535
+43,44 535
+2,45 535
+627.1,17 536
+628.0,1 537
+632.1,26 538
+7,10 538
+12,25 538
+1,26 538
+1,26 538
+1,26 539
+633.1,24 540
+18,19 540
+20,23 540
+1,24 540
+1,24 540
+634.1,39 541
+13,16 541
+17,27 541
+17,27 541
+29,33 541
+35,38 541
+1,39 541
+635.1,23 542
+638.9,17 543
+9,21 543
+9,21 544
+9,21 543
+640.9,17 543
+9,21 543
+9,21 545
+9,21 543
+642.12,18 543
+12,18 543
+660.13,21 543
+13,25 543
+13,25 546
+13,25 543
+661.12,20 543
+12,20 543
+662.13,21 543
+13,21 543
+637.2,8 543
+2,8 543
+2,8 543
+2,8 543
+639.3,23 547
+16,19 547
+21,22 547
+3,23 547
+3,23 543
+641.3,23 548
+15,18 548
+20,22 548
+3,23 548
+3,23 549
+3,23 543
+643.3,24 550
+9,12 550
+14,23 550
+3,24 550
+3,24 550
+3,24 551
+644.15,42 552
+29,32 552
+34,41 552
+15,42 552
+15,42 552
+4,5 552
+7,10 552
+7,10 553
+645.8,14 554
+8,14 554
+647.17,23 555
+14,23 555
+5,23 555
+5,23 556
+648.5,57 557
+33,39 557
+30,39 557
+27,39 557
+27,39 558
+50,56 557
+47,56 557
+44,56 557
+41,56 557
+41,56 559
+5,57 557
+5,57 557
+649.9,18 560
+20,82 561
+26,29 561
+31,43 561
+31,52 561
+31,60 561
+61,71 561
+31,71 561
+31,71 562
+31,81 561
+31,81 563
+20,82 561
+20,82 561
+20,82 564
+20,82 554
+651.9,16 565
+652.39,53 566
+49,52 566
+39,53 566
+39,53 566
+6,54 566
+13,32 566
+34,35 566
+36,38 566
+36,38 566
+6,54 566
+6,54 566
+6,54 567
+654.6,52 568
+16,19 568
+28,34 568
+25,34 568
+21,34 568
+21,34 569
+36,42 568
+44,51 568
+6,52 568
+655.6,15 570
+656.6,17 571
+6,17 554
+659.3,22 572
+15,21 572
+3,22 572
+3,22 573
+3,22 574
+3,22 543
+3,22 543
+3,22 543
+663.7,22 575
+7,22 576
+24,29 577
+664.3,30 578
+19,22 578
+24,29 578
+3,30 578
+3,30 578
+3,30 579
+3,30 580
+3,30 543
+667.1,17 581
+13,16 581
+1,17 581
+668.0,1 582
+672.1,18 583
+673.1,16 584
+13,15 584
+1,16 584
+675.11,12 585
+11,12 585
+676.12,14 585
+12,14 585
+674.16,22 585
+16,22 585
+16,22 585
+16,22 585
+16,22 586
+16,22 585
+679.0,1 587
+683.1,16 588
+12,15 588
+1,16 588
+1,16 588
+684.1,12 589
+685.0,1 590
+689.8,16 591
+690.16,20 592
+691.6,15 593
+24,27 594
+17,27 594
+692.2,10 595
+2,10 596
+2,10 596
+694.8,10 597
+1,10 597
+699.1,8 598
+700.8,16 599
+701.13,17 600
+7,17 600
+2,17 600
+2,17 601
+702.2,10 602
+2,10 602
+704.5,12 603
+21,26 604
+21,22 604
+21,26 604
+14,26 604
+705.8,9 605
+1,9 605
+728.12,39 606
+22,38 606
+12,39 606
+12,39 606
+729.5,12 607
+21,22 608
+14,22 608
+730.8,9 609
+1,9 609
+735.1,25 610
+18,19 610
+21,24 610
+1,25 610
+1,25 610
+736.1,44 611
+22,28 611
+29,32 611
+34,41 611
+42,43 611
+1,44 611
+737.1,15 612
+1,15 612
+738.13,61 613
+27,45 613
+47,60 613
+13,61 613
+13,61 613
+739.5,12 614
+14,26 615
+740.1,26 616
+22,25 616
+1,26 616
+741.1,23 617
+17,20 617
+21,22 617
+1,23 617
+1,23 617
+742.1,17 618
+743.0,1 619
+750.6,19 620
+23,33 620
+23,33 620
+23,33 620
+23,33 620
+751.2,44 621
+9,30 621
+31,32 621
+33,35 621
+36,43 621
+2,44 621
+2,44 621
+752.2,6 622
+754.20,77 623
+39,46 623
+48,50 623
+52,60 623
+62,76 623
+20,77 623
+20,77 623
+755.1,26 624
+7,10 624
+12,25 624
+1,26 624
+1,26 624
+1,26 625
+756.5,33 626
+11,14 626
+16,32 626
+5,33 626
+5,33 626
+5,48 626
+5,48 627
+757.2,13 628
+758.1,28 629
+7,10 629
+12,27 629
+1,28 629
+1,28 629
+1,28 630
+759.38,49 631
+33,49 631
+55,64 631
+52,65 631
+32,66 631
+25,66 631
+1,66 631
+1,66 632
+760.1,26 633
+761.1,38 634
+14,17 634
+19,26 634
+28,37 634
+1,38 634
+1,38 634
+1,38 635
+762.6,14 636
+22,34 637
+16,34 637
+763.2,27 638
+8,11 638
+13,26 638
+13,26 638
+2,27 638
+2,27 638
+2,27 639
+762.36,41 640
+36,41 640
+764.10,23 641
+1,25 641
+1,25 642
+765.1,23 643
+766.1,16 644
+768.1,35 645
+22,25 645
+27,34 645
+1,35 645
+769.1,16 646
+770.5,16 647
+771.2,43 648
+9,30 648
+31,32 648
+33,35 648
+36,42 648
+2,43 648
+2,43 648
+772.2,6 649
+774.1,12 650
+775.1,34 651
+18,21 651
+23,24 651
+26,33 651
+1,34 651
+776.1,11 652
+777.1,12 653
+779.1,15 654
+780.1,33 655
+7,10 655
+12,32 655
+1,33 655
+1,33 655
+1,33 656
+781.1,18 657
+12,15 657
+16,17 657
+1,18 657
+782.1,39 658
+7,10 658
+12,38 658
+1,39 658
+1,39 658
+1,39 659
+783.1,24 660
+20,23 660
+1,24 660
+1,24 660
+784.1,14 661
+785.1,29 662
+20,23 662
+25,28 662
+1,29 662
+786.1,45 663
+22,25 663
+41,44 663
+34,44 663
+27,44 663
+27,44 663
+27,44 664
+1,45 663
+789.9,17 665
+9,21 665
+9,21 666
+9,21 665
+791.9,17 665
+9,21 665
+9,21 667
+9,21 665
+793.11,18 665
+11,18 665
+853.13,21 665
+13,25 665
+13,25 668
+13,25 665
+854.12,20 665
+12,20 665
+855.12,20 665
+12,20 665
+788.2,8 665
+2,8 665
+2,8 665
+2,8 665
+790.3,23 669
+16,19 669
+21,22 669
+3,23 669
+3,23 665
+792.3,23 670
+15,18 670
+20,22 670
+3,23 670
+3,23 671
+3,23 665
+794.3,24 672
+9,12 672
+14,23 672
+3,24 672
+3,24 672
+3,24 673
+795.15,42 674
+29,32 674
+34,41 674
+15,42 674
+15,42 674
+4,5 674
+7,10 674
+7,10 675
+796.8,14 676
+8,14 676
+801.17,23 677
+14,23 677
+5,23 677
+5,23 678
+802.5,57 679
+33,39 679
+30,39 679
+27,39 679
+27,39 680
+50,56 679
+47,56 679
+44,56 679
+41,56 679
+41,56 681
+5,57 679
+5,57 679
+803.9,18 682
+20,72 683
+26,29 683
+31,43 683
+31,52 683
+31,60 683
+61,71 683
+31,71 683
+31,71 684
+31,71 685
+20,72 683
+20,72 683
+20,72 686
+20,72 676
+805.5,23 687
+5,23 687
+5,23 676
+807.17,23 688
+14,23 688
+5,23 688
+5,23 689
+808.10,16 690
+18,29 691
+809.10,16 692
+21,28 692
+32,43 692
+32,43 692
+810.7,33 693
+17,28 693
+17,28 693
+29,32 693
+7,33 693
+811.7,35 694
+17,28 694
+17,28 694
+29,34 694
+7,35 694
+808.31,34 695
+31,34 695
+815.5,12 696
+816.10,16 697
+18,29 698
+817.6,17 699
+24,35 699
+6,35 699
+816.31,34 700
+31,34 700
+818.5,18 701
+14,17 701
+5,18 701
+5,18 676
+820.19,25 702
+16,25 702
+5,25 702
+5,25 703
+821.10,16 704
+18,29 705
+822.6,17 706
+6,23 706
+821.31,34 707
+31,34 707
+823.5,18 708
+14,17 708
+5,18 708
+5,18 676
+825.17,23 709
+14,23 709
+5,23 709
+5,23 710
+826.5,16 711
+23,34 711
+5,34 711
+827.5,18 712
+14,17 712
+5,18 712
+5,18 676
+829.17,23 713
+14,23 713
+5,23 713
+5,23 714
+830.12,23 715
+5,23 715
+831.10,16 716
+18,29 717
+832.6,17 718
+6,21 718
+831.31,34 719
+31,34 719
+833.9,25 720
+9,30 720
+32,43 721
+32,53 721
+32,53 722
+834.10,21 723
+10,25 723
+835.5,18 724
+14,17 724
+5,18 724
+5,18 676
+837.17,23 725
+14,23 725
+5,23 725
+5,23 726
+838.9,20 727
+9,20 727
+24,38 727
+40,46 728
+839.28,45 729
+14,45 729
+5,55 729
+5,55 730
+840.9,16 731
+26,37 732
+26,37 732
+18,44 732
+18,44 733
+841.5,19 734
+842.6,62 735
+12,15 735
+17,57 735
+17,61 735
+17,61 736
+6,62 735
+6,62 735
+6,62 737
+843.10,23 738
+29,37 739
+25,37 739
+844.6,845.58 740
+844.12,15 740
+51,54 740
+50,64 740
+43,64 740
+17,64 740
+17,845.33 740
+35,42 740
+844.17,845.46 740
+844.17,845.50 740
+844.17,845.53 740
+844.17,845.57 740
+844.17,845.57 741
+844.6,845.58 740
+844.6,845.58 740
+844.6,845.58 742
+843.39,42 743
+39,42 743
+846.5,65 744
+11,14 744
+38,44 744
+35,44 744
+32,44 744
+16,44 744
+16,48 744
+58,64 744
+55,64 744
+52,64 744
+49,64 744
+16,64 744
+16,64 745
+16,64 746
+5,65 744
+5,65 744
+5,65 747
+5,65 748
+5,65 749
+5,65 676
+848.10,20 750
+849.6,36 751
+27,30 751
+32,35 751
+6,36 751
+6,36 676
+851.3,23 752
+9,12 752
+14,22 752
+3,23 752
+3,23 752
+3,23 753
+852.3,23 754
+15,22 754
+3,23 754
+3,23 755
+3,23 756
+3,23 665
+3,23 665
+3,23 665
+856.7,22 757
+7,22 758
+7,22 759
+857.4,9 760
+858.3,37 761
+26,29 761
+31,36 761
+3,37 761
+3,37 761
+859.7,17 762
+21,37 762
+860.16,41 763
+30,35 763
+37,40 763
+16,41 763
+16,41 763
+861.11,17 764
+8,17 764
+8,24 764
+8,24 765
+862.5,22 766
+16,19 766
+20,21 766
+5,22 766
+5,22 767
+5,22 768
+864.3,26 769
+22,25 769
+3,26 769
+3,26 769
+3,26 770
+3,26 771
+3,26 665
+867.8,24 772
+868.26,38 773
+18,21 773
+18,21 774
+18,21 775
+18,21 776
+869.6,15 777
+870.3,12 778
+8,11 778
+3,12 778
+867.26,50 779
+26,50 779
+872.8,24 780
+873.20,32 781
+874.2,49 782
+14,27 782
+14,31 782
+32,44 782
+14,44 782
+14,44 783
+14,48 782
+14,48 784
+2,49 782
+2,49 782
+875.2,26 785
+2,26 786
+2,26 786
+877.1,24 787
+7,10 787
+12,23 787
+1,24 787
+1,24 787
+1,24 788
+878.1,5 789
+883.1,23 790
+884.1,15 791
+885.6,12 792
+6,12 792
+887.3,34 793
+21,24 793
+26,33 793
+3,34 793
+888.3,13 794
+3,13 792
+890.3,45 795
+19,22 795
+30,36 795
+27,36 795
+23,36 795
+23,36 796
+37,44 795
+3,45 795
+891.3,13 797
+3,13 792
+893.12,21 798
+3,22 798
+3,26 798
+894.3,32 799
+19,22 799
+24,31 799
+3,32 799
+895.3,13 800
+896.3,14 801
+897.7,18 802
+898.4,9 803
+899.3,74 804
+22,39 804
+49,56 804
+40,57 804
+22,57 804
+22,64 804
+22,64 805
+66,73 804
+3,74 804
+900.3,18 806
+901.3,14 807
+902.7,16 808
+903.4,36 809
+23,26 809
+28,35 809
+4,36 809
+904.5,15 810
+905.5,16 811
+5,16 792
+908.3,47 812
+31,37 812
+28,37 812
+24,37 812
+24,37 813
+39,46 812
+3,47 812
+909.3,13 814
+3,13 792
+911.3,49 815
+13,16 815
+25,31 815
+22,31 815
+18,31 815
+18,31 816
+33,39 815
+41,48 815
+3,49 815
+912.3,13 817
+3,13 792
+914.3,44 818
+16,19 818
+28,34 818
+25,34 818
+21,34 818
+21,34 819
+36,43 818
+3,44 818
+915.3,13 820
+3,13 792
+917.15,21 821
+12,21 821
+3,21 821
+3,21 822
+918.3,16 823
+9,12 823
+14,15 823
+3,16 823
+919.7,14 824
+16,27 825
+16,27 825
+16,27 826
+920.8,13 827
+11,12 827
+8,13 827
+8,13 827
+8,13 792
+922.3,30 828
+17,20 828
+22,29 828
+3,30 828
+923.3,13 829
+3,13 792
+925.3,36 830
+20,23 830
+25,26 830
+28,35 830
+3,36 830
+926.3,13 831
+3,13 792
+928.15,21 832
+12,21 832
+3,21 832
+3,21 833
+929.3,16 834
+9,12 834
+14,15 834
+3,16 834
+930.7,14 835
+16,31 836
+16,31 836
+16,31 837
+931.8,19 838
+13,14 838
+16,18 838
+8,19 838
+8,19 838
+8,19 792
+933.7,62 839
+14,49 839
+50,51 839
+52,54 839
+55,61 839
+7,62 839
+7,62 839
+7,62 839
+934.4,34 840
+19,22 840
+23,24 840
+26,33 840
+4,34 840
+935.4,14 841
+4,14 792
+938.1,15 842
+939.1,12 843
+940.0,1 844
+944.1,25 845
+18,19 845
+21,24 845
+1,25 845
+1,25 845
+945.1,44 846
+22,28 846
+29,32 846
+34,41 846
+42,43 846
+1,44 846
+946.1,23 847
+17,20 847
+21,22 847
+1,23 847
+1,23 847
+947.1,17 848
+948.0,1 849
+952.1,25 850
+18,19 850
+21,24 850
+1,25 850
+1,25 850
+954.1,8 851
+956.1,10 852
+957.5,12 853
+958.7,13 854
+15,26 855
+959.7,18 856
+7,18 856
+24,35 857
+24,35 857
+24,44 857
+20,44 857
+20,44 858
+958.28,31 859
+28,31 859
+960.7,57 860
+14,44 860
+45,46 860
+47,49 860
+50,56 860
+7,57 860
+7,57 860
+7,57 860
+961.3,19 861
+962.3,9 862
+965.11,59 863
+28,39 863
+18,39 863
+18,47 863
+18,47 864
+48,49 863
+50,51 863
+52,58 863
+11,59 863
+11,59 863
+11,59 863
+966.2,18 865
+967.2,8 866
+969.1,44 867
+22,28 867
+29,32 867
+34,41 867
+42,43 867
+1,44 867
+970.1,7 868
+971.6,12 869
+14,25 870
+972.7,14 871
+18,29 871
+18,29 871
+34,40 871
+973.8,19 872
+8,19 872
+8,27 872
+3,27 872
+3,27 873
+974.3,975.31 874
+974.20,975.11 874
+12,23 874
+974.20,975.23 874
+974.20,975.30 874
+974.20,975.30 875
+974.3,975.31 874
+974.3,975.31 874
+976.7,15 876
+17,30 877
+17,30 878
+978.4,13 879
+979.4,18 880
+971.27,30 881
+27,30 881
+983.5,15 882
+19,26 882
+984.2,57 883
+26,37 883
+9,37 883
+9,45 883
+9,45 884
+46,47 883
+48,49 883
+50,56 883
+2,57 883
+2,57 883
+985.2,18 885
+986.2,8 886
+988.8,18 887
+989.2,33 888
+21,27 888
+12,28 888
+12,28 888
+29,32 888
+2,33 888
+990.2,35 889
+21,27 889
+12,28 889
+12,28 889
+29,34 889
+2,35 889
+991.2,19 890
+12,18 890
+2,19 890
+992.2,14 891
+2,14 891
+994.1,23 892
+17,20 892
+21,22 892
+1,23 892
+1,23 892
+995.1,14 893
+10,13 893
+1,14 893
+996.5,12 894
+14,56 895
+21,43 895
+44,45 895
+46,48 895
+49,55 895
+14,56 895
+14,56 895
+997.1,17 896
+998.0,1 897
+1002.6,12 898
+18,29 899
+14,29 899
+1003.2,13 900
+25,28 900
+16,29 900
+2,29 900
+1002.31,34 901
+31,34 901
+1004.10,21 902
+1,22 902
+1,26 902
+1005.0,1 903
+1009.1,7 904
+1010.6,12 905
+14,25 906
+1011.2,16 907
+1012.6,17 908
+6,17 908
+1013.3,15 909
+1014.3,6 910
+1016.2,55 911
+8,11 911
+24,32 911
+12,32 911
+12,50 911
+12,54 911
+12,54 912
+2,55 911
+2,55 911
+2,55 913
+2,55 914
+1010.27,30 915
+27,30 915
+1018.1,15 916
+1019.1,14 917
+1020.5,11 918
+13,24 919
+1021.1,82 920
+7,10 920
+66,74 920
+12,74 920
+12,76 920
+12,81 920
+12,81 921
+1,82 920
+1,82 920
+1,82 922
+1022.0,1 923
+1026.1,25 924
+18,19 924
+21,24 924
+1,25 924
+1,25 924
+1027.1,44 925
+22,28 925
+29,32 925
+34,41 925
+42,43 925
+1,44 925
+1028.1,46 926
+17,33 926
+34,45 926
+1,46 926
+1,46 926
+1029.5,14 927
+1030.2,30 928
+19,21 928
+23,29 928
+2,30 928
+2,30 928
+1031.6,11 929
+1032.3,45 930
+10,32 930
+33,34 930
+35,37 930
+38,44 930
+3,45 930
+3,45 930
+1033.3,16 931
+12,15 931
+3,16 931
+3,16 932
+1036.3,16 933
+12,15 933
+3,16 933
+1037.3,15 934
+1038.8,14 935
+16,21 936
+1039.4,26 937
+20,23 937
+24,25 937
+4,26 937
+4,26 937
+1040.4,20 938
+15,19 938
+4,20 938
+4,20 938
+1041.8,19 939
+1042.5,10 940
+1038.23,26 941
+23,26 941
+1046.1,17 942
+1047.0,1 943
+1051.5,16 944
+1052.2,8 945
+1053.21,24 946
+1054.7,18 947
+1055.6,13 948
+26,33 948
+17,34 948
+17,34 948
+1056.3,14 949
+1057.6,13 950
+6,18 950
+1058.3,73 951
+9,12 951
+34,41 951
+27,41 951
+14,41 951
+14,72 951
+14,72 952
+3,73 951
+3,73 951
+3,73 953
+3,73 954
+1060.9,16 955
+3,23 955
+1054.20,34 956
+20,34 956
+1062.1,11 957
+1063.0,1 958
+1067.1,25 959
+18,19 959
+21,24 959
+1,25 959
+1,25 959
+1068.1,44 960
+22,28 960
+29,32 960
+34,41 960
+42,43 960
+1,44 960
+1069.6,19 961
+15,18 961
+6,19 961
+6,19 961
+6,19 961
+23,50 961
+29,32 961
+34,49 961
+23,50 961
+23,50 961
+23,57 961
+23,57 962
+59,68 963
+59,68 963
+1070.1,13 964
+9,12 964
+1,13 964
+1071.1,17 965
+1072.0,1 966
+1076.1,18 967
+1077.1,10 968
+1078.7,18 969
+1079.28,35 970
+3,8 970
+3,8 971
+3,8 972
+3,8 973
+1080.6,18 974
+20,28 975
+20,28 976
+1078.20,34 977
+20,34 977
+1082.6,10 978
+1083.15,18 979
+20,24 979
+26,30 979
+32,35 979
+2,49 979
+2,49 980
+2,49 981
+2,49 982
+1084.0,1 983
+1088.63,66 984
+1089.7,23 985
+1090.25,37 986
+1091.6,18 987
+1092.10,29 988
+3,37 988
+3,37 989
+3,37 990
+3,37 991
+3,37 992
+3,37 993
+3,37 994
+3,37 995
+3,37 996
+1089.25,49 997
+25,49 997
+1094.1,17 998
+1095.0,1 999
+1099.1,25 1000
+18,19 1000
+21,24 1000
+1,25 1000
+1,25 1000
+1100.1,44 1001
+22,28 1001
+29,32 1001
+34,41 1001
+42,43 1001
+1,44 1001
+1101.6,12 1002
+14,29 1003
+1102.2,42 1004
+11,12 1004
+21,33 1004
+14,41 1004
+2,42 1004
+2,42 1004
+1101.31,34 1005
+31,34 1005
+1103.5,9 1006
+1104.2,19 1007
+1105.8,19 1008
+1106.26,33 1009
+1107.10,20 1010
+1108.4,63 1011
+15,20 1011
+22,28 1011
+47,53 1011
+37,54 1011
+30,62 1011
+4,63 1011
+1107.22,34 1012
+22,34 1012
+22,34 1013
+22,34 1014
+22,34 1015
+22,34 1016
+22,34 1017
+1105.21,35 1018
+21,35 1018
+1110.6,16 1019
+1111.3,16 1020
+12,15 1020
+3,16 1020
+3,16 1021
+1113.1,17 1022
+1114.0,1 1023
+1118.1,25 1024
+18,19 1024
+21,24 1024
+1,25 1024
+1,25 1024
+1119.22,36 1025
+32,35 1025
+22,36 1025
+22,36 1025
+1,52 1025
+1,52 1025
+37,40 1025
+42,49 1025
+50,51 1025
+1,52 1025
+1122.5,18 1026
+1123.15,27 1027
+2,35 1027
+1124.2,23 1028
+13,16 1028
+17,18 1028
+19,22 1028
+2,23 1028
+2,23 1029
+1127.6,18 1030
+6,34 1030
+1128.3,49 1031
+15,18 1031
+20,32 1031
+20,41 1031
+20,48 1031
+20,48 1032
+3,49 1031
+3,49 1031
+1129.3,42 1033
+17,29 1033
+17,34 1033
+36,41 1033
+3,42 1033
+3,42 1033
+1130.17,24 1034
+16,31 1034
+3,31 1034
+3,31 1035
+1133.3,51 1036
+15,18 1036
+32,44 1036
+20,50 1036
+3,51 1036
+3,51 1036
+1137.1,21 1037
+15,16 1037
+17,20 1037
+1,21 1037
+1,21 1037
+1138.5,11 1038
+13,26 1039
+22,25 1039
+13,26 1039
+13,26 1040
+1139.10,16 1041
+1140.2,54 1042
+9,41 1042
+42,43 1042
+44,46 1042
+47,53 1042
+2,54 1042
+2,54 1042
+1141.1,17 1043
+1142.0,1 1044
+1146.1,46 1045
+17,33 1045
+34,45 1045
+1,46 1045
+1,46 1045
+1147.5,14 1046
+1148.2,49 1047
+14,16 1047
+18,25 1047
+26,38 1047
+26,44 1047
+45,48 1047
+2,49 1047
+2,49 1047
+1149.2,14 1048
+2,25 1048
+1150.6,18 1049
+6,34 1049
+38,50 1049
+38,66 1049
+75,76 1050
+68,76 1050
+1151.9,10 1051
+2,10 1051
+1153.13,14 1052
+6,14 1052
+1165.6,12 1053
+14,29 1054
+1166.6,18 1055
+6,33 1055
+42,43 1056
+35,43 1056
+1165.31,34 1057
+31,34 1057
+1167.8,10 1058
+1,10 1058
+1172.1,49 1059
+17,35 1059
+37,48 1059
+1,49 1059
+1,49 1059
+1173.5,14 1060
+1174.2,43 1061
+14,16 1061
+18,22 1061
+24,36 1061
+24,42 1061
+2,43 1061
+2,43 1061
+1175.2,17 1062
+13,16 1062
+2,17 1062
+2,17 1062
+1176.2,51 1063
+21,39 1063
+40,50 1063
+2,51 1063
+2,51 1063
+1177.6,16 1064
+1178.3,22 1065
+8,11 1065
+17,21 1065
+3,22 1065
+3,22 1065
+1179.7,15 1066
+1180.15,37 1067
+29,30 1067
+31,36 1067
+15,37 1067
+15,37 1067
+1181.14,20 1068
+4,20 1068
+4,20 1069
+1182.4,25 1070
+15,18 1070
+19,20 1070
+21,24 1070
+4,25 1070
+4,25 1071
+4,25 1072
+4,25 1073
+1184.10,11 1074
+3,11 1074
+3,11 1075
+1187.1,53 1076
+8,40 1076
+41,42 1076
+43,45 1076
+46,52 1076
+1,53 1076
+1,53 1076
+1188.8,10 1077
+1,10 1077
+1193.1,13 1078
+1,24 1078
+1194.5,17 1079
+5,31 1079
+1195.2,52 1080
+8,11 1080
+25,37 1080
+13,43 1080
+13,47 1080
+13,51 1080
+13,51 1081
+2,52 1080
+2,52 1080
+2,52 1082
+2,52 1083
+1196.10,22 1084
+10,38 1084
+1197.2,41 1085
+16,28 1085
+16,33 1085
+35,40 1085
+2,41 1085
+2,41 1085
+1198.2,65 1086
+8,11 1086
+13,25 1086
+13,34 1086
+13,42 1086
+50,59 1086
+49,64 1086
+43,64 1086
+13,64 1086
+13,64 1087
+13,64 1088
+2,65 1086
+2,65 1086
+2,65 1089
+1200.1,21 1090
+7,10 1090
+12,20 1090
+1,21 1090
+1,21 1090
+1,21 1091
+1201.0,1 1092
+1211.5,12 1093
+1212.2,47 1094
+18,34 1094
+35,46 1094
+2,47 1094
+2,47 1094
+1213.6,15 1095
+1214.3,55 1096
+10,42 1096
+43,44 1096
+45,47 1096
+48,54 1096
+3,55 1096
+3,55 1096
+1215.10,12 1097
+3,12 1097
+1218.3,29 1098
+15,17 1098
+19,28 1098
+3,29 1098
+3,29 1098
+3,29 1099
+1220.12,20 1100
+1,30 1100
+1221.6,12 1101
+14,25 1102
+1222.2,16 1103
+1223.2,59 1104
+10,13 1104
+15,42 1104
+15,55 1104
+15,58 1104
+15,58 1105
+2,59 1104
+2,59 1104
+2,59 1106
+1224.2,69 1107
+10,13 1107
+15,38 1107
+15,51 1107
+15,54 1107
+15,65 1107
+15,68 1107
+15,68 1108
+2,69 1107
+2,69 1107
+2,69 1109
+2,69 1110
+1221.27,30 1111
+27,30 1111
+1226.13,59 1112
+27,43 1112
+45,58 1112
+13,59 1112
+13,59 1112
+1227.5,12 1113
+1228.9,11 1114
+2,11 1114
+1229.1,12 1115
+1230.1,9 1116
+1231.1,9 1117
+1232.1,13 1118
+1233.11,45 1119
+17,20 1119
+22,44 1119
+11,45 1119
+11,45 1119
+1,45 1119
+1,45 1120
+1234.1,7 1121
+1235.1,11 1122
+1236.6,11 1123
+13,24 1124
+1237.2,13 1125
+16,23 1125
+16,23 1125
+2,28 1125
+2,28 1126
+1238.10,21 1127
+6,21 1127
+6,25 1127
+45,56 1127
+41,56 1127
+41,60 1127
+29,40 1127
+29,61 1127
+29,68 1127
+1239.3,14 1128
+17,28 1128
+34,45 1128
+30,45 1128
+30,47 1128
+17,28 1128
+3,48 1128
+1241.2,12 1129
+1242.7,13 1130
+19,30 1131
+15,30 1131
+1243.22,32 1132
+22,32 1132
+7,18 1132
+7,32 1132
+7,32 1133
+1244.4,13 1134
+1245.4,9 1135
+1242.32,35 1136
+32,35 1136
+1248.2,16 1137
+1249.2,1250.58 1138
+1249.8,11 1138
+13,39 1138
+13,53 1138
+1250.13,24 1138
+1249.13,1250.24 1138
+1249.13,1250.46 1138
+1249.13,1250.49 1138
+1249.13,1250.57 1138
+1249.13,1250.57 1139
+1249.2,1250.58 1138
+1249.2,1250.58 1138
+1249.2,1250.58 1140
+1251.6,11 1141
+15,22 1141
+1252.3,19 1142
+1253.3,51 1143
+9,12 1143
+14,29 1143
+14,50 1143
+14,50 1144
+3,51 1143
+3,51 1143
+3,51 1145
+1255.2,13 1146
+2,83 1146
+16,23 1146
+39,40 1146
+41,42 1146
+45,47 1146
+48,50 1146
+9:93.18,73 1146
+0:1255.65,66 1146
+67,82 1146
+2,83 1146
+2,83 1146
+1256.2,1257.44 1147
+1256.13,16 1147
+17,37 1147
+17,65 1147
+17,65 1148
+2,1257.44 1147
+1256.2,1257.44 1147
+1258.2,51 1149
+15,18 1149
+19,33 1149
+35,46 1149
+35,46 1149
+47,50 1149
+2,51 1149
+2,51 1149
+2,51 1150
+1259.2,81 1151
+8,11 1151
+13,32 1151
+13,73 1151
+13,76 1151
+13,80 1151
+13,80 1152
+2,81 1151
+2,81 1151
+2,81 1153
+1260.2,85 1154
+8,11 1154
+13,32 1154
+13,77 1154
+13,80 1154
+13,84 1154
+13,84 1155
+2,85 1154
+2,85 1154
+2,85 1156
+1261.2,81 1157
+8,11 1157
+13,32 1157
+13,73 1157
+13,76 1157
+13,80 1157
+13,80 1158
+2,81 1157
+2,81 1157
+2,81 1159
+1262.2,85 1160
+8,11 1160
+13,32 1160
+13,71 1160
+13,74 1160
+13,84 1160
+13,84 1161
+2,85 1160
+2,85 1160
+2,85 1162
+1263.15,57 1163
+21,24 1163
+26,41 1163
+26,56 1163
+26,56 1164
+15,57 1163
+15,57 1163
+2,57 1163
+2,57 1165
+1264.7,21 1166
+11,13 1166
+11,13 1166
+15,20 1166
+2,21 1166
+1265.7,19 1167
+31,38 1167
+28,38 1167
+23,38 1167
+43,56 1167
+1266.3,15 1168
+1267.3,10 1169
+1268.3,9 1170
+1269.3,12 1171
+1271.6,14 1172
+1272.3,1273.46 1173
+1272.9,12 1173
+50,57 1173
+43,57 1173
+14,57 1173
+14,1273.18 1173
+35,44 1173
+33,44 1173
+26,45 1173
+19,45 1173
+1272.14,1273.45 1173
+1272.14,1273.45 1174
+1272.14,1273.45 1175
+1272.3,1273.46 1173
+1272.3,1273.46 1173
+1272.3,1273.46 1176
+1275.2,77 1177
+8,11 1177
+13,33 1177
+13,42 1177
+43,53 1177
+13,53 1177
+13,53 1178
+13,65 1177
+66,76 1177
+13,76 1177
+13,76 1179
+13,76 1180
+2,77 1177
+2,77 1177
+2,77 1181
+1276.2,93 1182
+8,11 1182
+13,32 1182
+13,41 1182
+49,56 1182
+42,56 1182
+13,56 1182
+13,56 1183
+13,68 1182
+69,79 1182
+13,79 1182
+13,79 1184
+13,92 1182
+13,92 1185
+2,93 1182
+2,93 1182
+2,93 1186
+1278.2,38 1187
+8,11 1187
+13,30 1187
+13,37 1187
+13,37 1188
+2,38 1187
+2,38 1187
+2,38 1189
+1279.7,19 1190
+25,33 1191
+21,33 1191
+1280.3,1281.53 1192
+1280.9,12 1192
+14,26 1192
+14,49 1192
+50,57 1192
+14,62 1192
+14,67 1192
+1281.30,37 1192
+1280.14,1281.41 1192
+1280.14,1281.45 1192
+1280.14,1281.48 1192
+1280.14,1281.52 1192
+1280.14,1281.52 1193
+1280.3,1281.53 1192
+1280.3,1281.53 1192
+1280.3,1281.53 1194
+1279.35,38 1195
+35,38 1195
+1283.6,33 1196
+15,26 1196
+15,26 1196
+27,32 1196
+6,33 1196
+6,33 1196
+6,33 1196
+37,45 1196
+1284.3,23 1197
+17,20 1197
+21,22 1197
+3,23 1197
+3,23 1197
+1285.2,7 1198
+2,7 1199
+2,7 1200
+1236.26,29 1201
+26,29 1201
+1287.5,13 1202
+1288.2,14 1203
+1289.1,14 1204
+10,13 1204
+1,14 1204
+1290.1,40 1205
+15,18 1205
+20,39 1205
+1,40 1205
+1,40 1205
+1291.20,35 1206
+25,29 1206
+31,34 1206
+20,35 1206
+20,35 1206
+14,18 1206
+14,36 1206
+1,36 1206
+1,36 1207
+1292.19,34 1208
+24,28 1208
+30,33 1208
+19,34 1208
+19,34 1208
+19,36 1208
+14,38 1208
+14,18 1208
+14,38 1208
+1,38 1208
+1,38 1209
+1293.5,19 1210
+1294.2,73 1211
+8,11 1211
+42,55 1211
+13,55 1211
+13,59 1211
+60,72 1211
+13,72 1211
+13,72 1212
+13,72 1213
+2,73 1211
+2,73 1211
+2,73 1214
+1295.13,18 1215
+5,18 1215
+1296.2,71 1216
+8,11 1216
+46,53 1216
+39,53 1216
+13,53 1216
+13,57 1216
+58,70 1216
+13,70 1216
+13,70 1217
+13,70 1218
+2,71 1216
+2,71 1216
+2,71 1219
+1297.27,61 1220
+33,36 1220
+38,60 1220
+27,61 1220
+27,61 1220
+23,61 1220
+23,61 1221
+18,62 1220
+1,62 1220
+1298.1,44 1222
+16,19 1222
+21,43 1222
+1,44 1222
+1,44 1222
+1300.5,15 1223
+27,36 1224
+17,45 1224
+17,45 1225
+1301.6,25 1226
+1302.6,11 1227
+13,23 1228
+1303.3,83 1229
+9,12 1229
+46,54 1229
+14,54 1229
+14,67 1229
+68,82 1229
+14,82 1229
+14,82 1230
+14,82 1231
+3,83 1229
+3,83 1229
+3,83 1232
+1302.25,28 1233
+25,28 1233
+1305.1,75 1234
+7,10 1234
+12,59 1234
+12,63 1234
+12,70 1234
+12,74 1234
+12,74 1235
+1,75 1234
+1,75 1234
+1,75 1236
+1306.1,21 1237
+7,10 1237
+12,20 1237
+1,21 1237
+1,21 1237
+1,21 1238
+1307.8,9 1239
+1,9 1239
+1325.9,16 1240
+9,20 1240
+5,21 1240
+5,28 1240
+1326.13,20 1241
+13,24 1241
+8,11 1241
+8,25 1241
+2,35 1241
+2,35 1242
+2,35 1243
+1327.14,21 1244
+14,25 1244
+10,26 1244
+10,33 1244
+1328.13,20 1245
+13,24 1245
+8,11 1245
+8,25 1245
+2,34 1245
+2,34 1246
+1329.9,16 1247
+9,20 1247
+5,21 1247
+5,28 1247
+1330.13,20 1248
+13,24 1248
+8,11 1248
+8,25 1248
+8,37 1248
+2,44 1248
+2,44 1249
+1332.1,23 1250
+14,17 1250
+19,22 1250
+1,23 1250
+1,23 1250
+1333.5,12 1251
+16,20 1251
+16,27 1251
+29,69 1252
+40,62 1252
+63,66 1252
+67,68 1252
+29,69 1252
+29,69 1252
+1334.8,9 1253
+1,9 1253
+1339.1,24 1254
+18,19 1254
+20,23 1254
+1,24 1254
+1,24 1254
+1340.1,44 1255
+22,28 1255
+29,32 1255
+34,41 1255
+42,43 1255
+1,44 1255
+1341.1,14 1256
+10,13 1256
+1,14 1256
+1342.6,17 1257
+19,29 1258
+1343.2,27 1259
+16,19 1259
+20,26 1259
+2,27 1259
+2,27 1259
+1342.31,43 1260
+31,43 1260
+1344.1,17 1261
+1345.0,1 1262
+1349.1,25 1263
+18,19 1263
+21,24 1263
+1,25 1263
+1,25 1263
+1350.1,44 1264
+22,28 1264
+29,32 1264
+34,41 1264
+42,43 1264
+1,44 1264
+1351.5,12 1265
+1352.7,13 1266
+15,26 1267
+1353.7,18 1268
+7,18 1268
+1354.8,29 1269
+22,25 1269
+27,28 1269
+8,29 1269
+8,29 1269
+8,34 1269
+36,41 1270
+1352.28,31 1271
+28,31 1271
+1356.6,27 1272
+20,23 1272
+25,26 1272
+6,27 1272
+6,27 1272
+1357.1,17 1273
+1358.0,1 1274
+1363.5,13 1275
+17,44 1275
+26,37 1275
+26,37 1275
+38,43 1275
+17,44 1275
+17,44 1275
+17,44 1275
+1364.2,70 1276
+26,37 1276
+18,37 1276
+18,41 1276
+18,41 1277
+59,69 1276
+2,70 1276
+2,70 1276
+2,70 1278
+1365.6,71 1279
+21,40 1279
+41,52 1279
+21,52 1279
+21,59 1279
+21,59 1280
+60,70 1279
+6,71 1279
+6,71 1279
+1366.5,14 1281
+1367.6,14 1282
+18,45 1282
+27,38 1282
+27,38 1282
+39,44 1282
+18,45 1282
+18,45 1282
+18,45 1282
+1368.3,31 1283
+13,24 1283
+13,24 1283
+25,30 1283
+3,31 1283
+1369.10,30 1284
+24,27 1284
+28,29 1284
+10,30 1284
+10,30 1284
+3,30 1284
+1371.7,60 1285
+29,40 1285
+14,40 1285
+14,47 1285
+14,47 1286
+48,49 1285
+50,52 1285
+53,59 1285
+7,60 1285
+7,60 1285
+1372.9,11 1287
+2,11 1287
+1374.1,31 1288
+10,17 1288
+28,30 1288
+1,31 1288
+1,31 1288
+1375.5,17 1289
+1376.6,14 1290
+18,45 1290
+27,38 1290
+27,38 1290
+39,44 1290
+18,45 1290
+18,45 1290
+18,45 1290
+1377.3,31 1291
+13,24 1291
+13,24 1291
+25,30 1291
+3,31 1291
+1378.10,30 1292
+24,27 1292
+28,29 1292
+10,30 1292
+10,30 1292
+3,30 1292
+1380.7,74 1293
+43,54 1293
+14,54 1293
+14,61 1293
+14,61 1294
+62,63 1293
+64,66 1293
+67,73 1293
+7,74 1293
+7,74 1293
+1381.9,11 1295
+2,11 1295
+1384.13,31 1296
+13,33 1296
+34,52 1296
+34,54 1296
+1385.19,35 1297
+19,26 1297
+33,34 1297
+19,35 1297
+19,35 1297
+2,53 1297
+2,13 1297
+2,13 1297
+2,13 1297
+37,42 1297
+43,46 1297
+48,49 1297
+50,51 1297
+2,53 1297
+1386.2,16 1298
+1387.2,36 1299
+8,11 1299
+12,26 1299
+12,35 1299
+12,35 1300
+2,36 1299
+2,36 1299
+2,36 1301
+1388.2,10 1302
+1389.2,9 1303
+1390.6,14 1304
+1391.3,80 1305
+29,40 1305
+21,40 1305
+21,44 1305
+21,44 1306
+62,73 1305
+74,79 1305
+3,80 1305
+3,80 1305
+1392.3,36 1307
+7,14 1307
+26,28 1307
+30,35 1307
+3,36 1307
+3,36 1307
+1394.11,58 1308
+17,20 1308
+35,43 1308
+22,43 1308
+22,57 1308
+22,57 1309
+11,58 1308
+11,58 1308
+2,58 1308
+2,58 1310
+1395.11,58 1311
+17,20 1311
+35,43 1311
+22,43 1311
+22,57 1311
+22,57 1312
+11,58 1311
+11,58 1311
+2,58 1311
+2,58 1313
+1396.11,60 1314
+17,20 1314
+35,43 1314
+22,43 1314
+22,59 1314
+22,59 1315
+11,60 1314
+11,60 1314
+2,60 1314
+2,60 1316
+1397.12,44 1317
+18,21 1317
+23,43 1317
+12,44 1317
+12,44 1317
+2,44 1317
+2,44 1318
+1398.12,44 1319
+18,21 1319
+23,43 1319
+12,44 1319
+12,44 1319
+2,44 1319
+2,44 1320
+1399.2,1400.60 1321
+1399.8,11 1321
+36,42 1321
+29,42 1321
+13,42 1321
+13,46 1321
+55,61 1321
+48,61 1321
+13,61 1321
+13,61 1322
+13,1400.6 1321
+15,19 1321
+14,23 1321
+7,23 1321
+1399.13,1400.23 1321
+1399.13,1400.23 1323
+1399.13,1400.27 1321
+37,41 1321
+37,43 1321
+36,48 1321
+29,48 1321
+1399.13,1400.48 1321
+1399.13,1400.48 1324
+1399.13,1400.59 1321
+1399.13,1400.59 1325
+1399.2,1400.60 1321
+1399.2,1400.60 1321
+1399.2,1400.60 1326
+1401.7,15 1327
+19,25 1327
+40,51 1328
+40,51 1328
+52,57 1328
+27,71 1328
+27,71 1329
+27,71 1330
+1403.8,9 1331
+1,9 1331
+1408.1,17 1332
+1409.8,18 1333
+1410.2,14 1334
+1411.6,21 1335
+25,44 1335
+53,54 1336
+46,54 1336
+1412.2,14 1337
+2,14 1338
+2,14 1338
+1414.8,9 1339
+1,9 1339
+1420.1,10 1340
+1421.8,24 1341
+1422.2,20 1342
+1423.6,21 1343
+25,44 1343
+1424.3,18 1344
+3,18 1345
+1425.7,61 1346
+19,34 1346
+19,38 1346
+39,56 1346
+19,56 1346
+19,56 1347
+19,60 1346
+19,60 1348
+7,61 1346
+7,61 1346
+1426.2,26 1349
+2,26 1350
+2,26 1350
+1428.1,16 1351
+1429.0,1 1352
+1433.5,18 1353
+1434.2,14 1354
+2,14 1355
+1436.2,13 1356
+1438.1,9 1357
+1439.1,18 1358
+1440.5,18 1359
+20,36 1360
+1441.20,75 1361
+39,46 1361
+48,50 1361
+53,58 1361
+60,74 1361
+20,75 1361
+20,75 1361
+1442.1,27 1362
+1443.1,40 1363
+14,17 1363
+19,27 1363
+29,39 1363
+1,40 1363
+1,40 1363
+1,40 1364
+1444.1,23 1365
+7,10 1365
+12,22 1365
+1,23 1365
+1,23 1365
+1,23 1366
+1445.1,48 1367
+7,10 1367
+12,36 1367
+12,40 1367
+12,47 1367
+12,47 1368
+1,48 1367
+1,48 1367
+1,48 1369
+1446.1,86 1370
+7,10 1370
+12,78 1370
+12,85 1370
+12,85 1371
+1,86 1370
+1,86 1370
+1,86 1372
+1447.1,91 1373
+7,10 1373
+12,83 1373
+12,90 1373
+12,90 1374
+1,91 1373
+1,91 1373
+1,91 1375
+1448.5,13 1376
+17,47 1376
+26,39 1376
+26,39 1376
+41,46 1376
+17,47 1376
+17,47 1376
+17,47 1376
+51,59 1376
+1449.2,73 1377
+26,39 1377
+18,39 1377
+18,43 1377
+18,43 1378
+62,72 1377
+2,73 1377
+2,73 1377
+1450.6,15 1379
+1451.3,33 1380
+12,19 1380
+30,32 1380
+3,33 1380
+3,33 1380
+1452.3,1453.70 1381
+1452.9,12 1381
+35,56 1381
+13,56 1381
+13,1453.14 1381
+15,36 1381
+1452.13,1453.36 1381
+1452.13,1453.36 1382
+1452.13,1453.69 1381
+1452.13,1453.69 1383
+1452.3,1453.70 1381
+1452.3,1453.70 1381
+1452.3,1453.70 1384
+1454.3,40 1385
+16,19 1385
+20,26 1385
+28,34 1385
+36,39 1385
+3,40 1385
+3,40 1385
+3,40 1386
+1455.3,73 1387
+9,12 1387
+14,72 1387
+3,73 1387
+3,73 1387
+3,73 1388
+3,73 1389
+1458.1,72 1390
+7,10 1390
+12,71 1390
+1,72 1390
+1,72 1390
+1,72 1391
+1459.5,18 1392
+1460.2,59 1393
+8,11 1393
+13,58 1393
+2,59 1393
+2,59 1393
+2,59 1394
+1461.2,59 1395
+8,11 1395
+13,58 1395
+2,59 1395
+2,59 1395
+2,59 1396
+2,59 1397
+1463.7,78 1398
+13,16 1398
+18,77 1398
+7,78 1398
+7,78 1398
+7,78 1399
+1464.6,19 1400
+6,7 1400
+11,18 1400
+6,19 1400
+6,19 1400
+6,19 1400
+1465.2,22 1401
+12,15 1401
+17,18 1401
+20,21 1401
+2,22 1401
+2,22 1402
+1467.2,40 1403
+8,11 1403
+13,39 1403
+2,40 1403
+2,40 1403
+2,40 1404
+1468.1,33 1405
+20,23 1405
+25,32 1405
+1,33 1405
+1469.1,45 1406
+22,25 1406
+41,44 1406
+34,44 1406
+27,44 1406
+27,44 1406
+27,44 1407
+1,45 1406
+1472.9,17 1408
+9,21 1408
+9,21 1409
+9,21 1408
+1474.9,17 1408
+9,21 1408
+9,21 1410
+9,21 1408
+1476.11,19 1408
+11,19 1408
+1484.12,20 1408
+12,24 1408
+12,24 1411
+12,24 1408
+1485.12,20 1408
+12,20 1408
+1486.12,20 1408
+12,20 1408
+1471.2,8 1408
+2,8 1408
+2,8 1408
+2,8 1408
+1473.3,23 1412
+16,19 1412
+21,22 1412
+3,23 1412
+3,23 1408
+1475.3,23 1413
+15,18 1413
+20,22 1413
+3,23 1413
+3,23 1414
+3,23 1408
+1477.7,18 1415
+1478.4,11 1416
+4,11 1417
+1479.4,9 1418
+1481.7,22 1419
+7,22 1420
+1482.4,9 1421
+4,9 1422
+4,9 1408
+4,9 1408
+4,9 1408
+1487.7,22 1423
+1488.4,9 1424
+1490.4,31 1425
+20,23 1425
+25,30 1425
+4,31 1425
+4,31 1425
+4,31 1426
+4,31 1408
+1493.8,11 1427
+1,11 1427
+1524.1,25 1428
+18,19 1428
+21,24 1428
+1,25 1428
+1,25 1428
+1525.1,48 1429
+22,28 1429
+30,33 1429
+35,42 1429
+44,47 1429
+1,48 1429
+1526.5,13 1430
+1527.7,15 1431
+23,34 1432
+17,34 1432
+1528.3,27 1433
+9,12 1433
+14,26 1433
+14,26 1433
+3,27 1433
+3,27 1433
+3,27 1434
+1527.36,41 1435
+36,41 1435
+1530.2,14 1436
+10,13 1436
+2,14 1436
+1531.6,19 1437
+15,18 1437
+6,19 1437
+6,19 1437
+6,19 1437
+21,58 1438
+27,30 1438
+32,57 1438
+21,58 1438
+21,58 1438
+21,58 1439
+1533.1,14 1440
+10,13 1440
+1,14 1440
+1534.8,22 1441
+15,21 1441
+8,22 1441
+8,22 1441
+26,40 1441
+33,39 1441
+26,40 1441
+26,40 1441
+44,58 1441
+51,57 1441
+44,58 1441
+44,58 1441
+62,65 1441
+44,65 1441
+26,65 1441
+1,65 1441
+1,65 1441
+1,65 1442
+1535.5,32 1443
+14,17 1443
+25,31 1443
+22,31 1443
+19,31 1443
+19,31 1444
+5,32 1443
+5,32 1443
+5,37 1443
+1536.6,30 1445
+15,18 1445
+23,29 1445
+20,29 1445
+20,29 1446
+6,30 1445
+6,30 1445
+6,35 1445
+1537.3,24 1447
+12,15 1447
+17,23 1447
+3,24 1447
+3,24 1447
+1538.5,13 1448
+1539.2,31 1449
+14,17 1449
+19,21 1449
+23,26 1449
+28,30 1449
+2,31 1449
+1540.2,47 1450
+18,21 1450
+23,46 1450
+2,47 1450
+2,47 1450
+1541.2,45 1451
+17,20 1451
+22,44 1451
+2,45 1451
+2,45 1451
+2,45 1452
+2,45 1453
+1545.1,17 1454
+1546.0,1 1455
+1550.1,63 1456
+30,40 1456
+19,40 1456
+19,49 1456
+19,49 1457
+51,62 1456
+1,63 1456
+1,63 1456
+1551.5,16 1458
+1552.2,52 1459
+13,17 1459
+19,39 1459
+41,51 1459
+2,52 1459
+2,52 1459
+1553.0,1 1460
+1557.1,57 1461
+7,10 1461
+11,56 1461
+1,57 1461
+1,57 1461
+1,57 1462
+1558.1,57 1463
+7,10 1463
+11,56 1463
+1,57 1463
+1,57 1463
+1,57 1464
+1559.1,49 1465
+20,37 1465
+38,48 1465
+1,49 1465
+1,49 1465
+1560.5,15 1466
+1561.2,21 1467
+7,10 1467
+16,20 1467
+2,21 1467
+2,21 1467
+1562.6,14 1468
+1563.9,14 1469
+9,18 1469
+7,19 1469
+7,27 1469
+36,41 1470
+36,45 1470
+29,46 1470
+1564.24,38 1471
+24,38 1471
+24,38 1471
+3,39 1471
+3,39 1471
+3,39 1471
+3,39 1471
+1565.3,1566.29 1472
+1565.23,42 1472
+44,52 1472
+54,61 1472
+63,70 1472
+63,74 1472
+1566.7,14 1472
+15,21 1472
+22,28 1472
+1565.3,1566.29 1472
+1565.3,1566.29 1472
+1567.3,25 1473
+20,24 1473
+3,25 1473
+3,25 1473
+1568.3,39 1474
+20,38 1474
+20,21 1474
+20,38 1474
+3,39 1474
+3,39 1474
+1569.3,63 1475
+11,14 1475
+15,58 1475
+15,62 1475
+15,62 1476
+3,63 1475
+3,63 1475
+3,63 1477
+1570.3,63 1478
+11,14 1478
+15,58 1478
+15,62 1478
+15,62 1479
+3,63 1478
+3,63 1478
+3,63 1480
+3,63 1481
+3,63 1482
+3,63 1483
+1573.5,14 1484
+5,19 1484
+1574.2,29 1485
+1575.5,14 1486
+5,19 1486
+1576.2,29 1487
+1577.1,21 1488
+7,10 1488
+12,20 1488
+1,21 1488
+1,21 1488
+1,21 1489
+1578.0,1 1490
+1582.3,8 1491
+1,15 1491
+1583.1,9 1492
+1584.1,11 1493
+1585.1,11 1494
+1586.6,12 1495
+18,23 1496
+14,23 1496
+1587.6,10 1497
+6,16 1497
+20,24 1497
+20,30 1497
+1588.7,12 1498
+16,25 1498
+16,29 1498
+34,40 1499
+31,47 1499
+1589.17,20 1500
+9,10 1500
+9,21 1500
+3,21 1500
+3,21 1501
+1590.3,14 1502
+1591.3,12 1503
+3,12 1504
+1593.7,16 1505
+1586.25,28 1506
+25,28 1506
+1595.5,11 1507
+1,15 1507
+1596.8,14 1508
+18,23 1508
+18,30 1508
+32,35 1509
+32,35 1509
+1597.12,15 1510
+8,10 1510
+8,16 1510
+1,16 1510
+1602.1,49 1511
+13,16 1511
+18,48 1511
+1,49 1511
+1,49 1511
+1603.1,49 1512
+13,16 1512
+18,48 1512
+1,49 1512
+1,49 1512
+1604.5,13 1513
+34,35 1514
+27,35 1514
+1605.28,34 1515
+28,38 1515
+24,26 1515
+24,39 1515
+9,15 1515
+9,19 1515
+5,7 1515
+5,20 1515
+5,39 1515
+5,39 1516
+5,39 1517
+48,49 1518
+41,49 1518
+1606.8,9 1519
+1,9 1519
+1611.22,36 1520
+22,36 1520
+22,36 1520
+1,37 1520
+1,37 1520
+1,37 1520
+1,37 1520
+1612.1,48 1521
+17,34 1521
+36,47 1521
+1,48 1521
+1,48 1521
+1613.5,14 1522
+1614.33,1615.58 1523
+1614.45,64 1523
+1615.4,12 1523
+14,21 1523
+23,30 1523
+23,34 1523
+36,43 1523
+44,50 1523
+51,57 1523
+1614.33,1615.58 1523
+1614.33,1615.58 1523
+1614.24,1615.59 1523
+1614.24,1615.59 1523
+1614.24,1615.59 1524
+1614.24,1615.59 1523
+1614.24,1615.59 1523
+1614.2,1615.60 1523
+1614.14,16 1523
+18,22 1523
+18,22 1523
+18,22 1525
+2,1615.60 1523
+1614.2,1615.60 1523
+1617.0,1 1526
+1621.1,52 1527
+20,40 1527
+41,51 1527
+1,52 1527
+1,52 1527
+1622.5,15 1528
+1623.6,12 1529
+14,19 1530
+1624.3,22 1531
+8,11 1531
+17,21 1531
+3,22 1531
+3,22 1531
+1625.7,15 1532
+7,15 1533
+17,22 1534
+1626.7,12 1535
+1627.15,39 1536
+29,30 1536
+31,38 1536
+15,39 1536
+15,39 1536
+1628.25,31 1537
+22,31 1537
+18,31 1537
+18,31 1538
+4,31 1537
+1629.8,14 1539
+18,28 1539
+1630.5,55 1540
+11,14 1540
+16,54 1540
+5,55 1540
+5,55 1540
+5,55 1541
+5,55 1542
+1631.9,57 1543
+15,18 1543
+20,56 1543
+9,57 1543
+9,57 1543
+9,57 1544
+1632.4,78 1545
+10,13 1545
+41,46 1545
+34,46 1545
+14,46 1545
+14,67 1545
+14,71 1545
+14,77 1545
+14,77 1546
+4,78 1545
+4,78 1545
+4,78 1547
+4,78 1548
+4,78 1549
+4,78 1550
+4,78 1551
+1623.21,24 1552
+21,24 1552
+1635.2,22 1553
+8,11 1553
+13,21 1553
+2,22 1553
+2,22 1553
+2,22 1554
+1637.0,1 1555
+1641.1,8 1556
+1642.16,21 1557
+5,13 1557
+5,21 1557
+30,31 1558
+23,31 1558
+1643.6,12 1559
+23,30 1560
+19,30 1560
+33,43 1560
+18,44 1560
+14,44 1560
+1644.20,28 1561
+18,28 1561
+14,15 1561
+14,29 1561
+6,29 1561
+6,29 1562
+31,36 1563
+1643.46,49 1564
+46,49 1564
+1646.8,11 1565
+1,11 1565
+1651.1,1655.16 1566
+1651.33,40 1566
+1652.7,20 1566
+1653.7,42 1566
+1654.7,10 1566
+1655.7,15 1566
+1651.1,1655.16 1566
+1651.1,1655.16 1566
+1656.5,18 1567
+22,32 1567
+22,39 1567
+51,62 1567
+51,66 1567
+43,67 1567
+43,74 1567
+1657.2,8 1568
+1658.1,8 1569
+1659.6,12 1570
+14,25 1571
+1660.6,17 1572
+6,17 1572
+1661.3,23 1573
+13,14 1573
+15,22 1573
+3,23 1573
+3,23 1573
+1662.7,13 1574
+1663.9,20 1575
+9,20 1575
+9,28 1575
+4,28 1575
+4,28 1576
+1664.7,13 1577
+1665.4,22 1578
+1666.4,9 1579
+1668.12,18 1580
+1669.4,19 1581
+1670.3,14 1582
+1659.27,30 1583
+27,30 1583
+1673.5,12 1584
+14,27 1585
+1674.1,51 1586
+8,38 1586
+39,40 1586
+41,43 1586
+44,50 1586
+1,51 1586
+1,51 1586
+1675.0,1 1587
+1681.1,23 1588
+1682.1,27 1589
+1683.1,26 1590
+1684.1,51 1591
+22,28 1591
+30,31 1591
+33,41 1591
+43,50 1591
+1,51 1591
+1685.1,50 1592
+16,17 1592
+18,22 1592
+23,30 1592
+32,40 1592
+42,49 1592
+1,50 1592
+1686.1,17 1593
+1688.9,17 1594
+9,17 1594
+1700.9,16 1594
+9,16 1594
+1687.1,7 1594
+1,7 1594
+1,7 1594
+1,7 1594
+1689.3,23 1595
+1690.7,18 1596
+1691.8,25 1597
+1692.16,51 1598
+30,41 1598
+43,50 1598
+16,51 1598
+16,51 1598
+1693.10,20 1599
+1694.6,25 1600
+18,24 1600
+6,25 1600
+6,25 1600
+1693.22,34 1601
+22,34 1601
+22,34 1602
+22,34 1603
+1696.4,13 1604
+9,12 1604
+4,13 1604
+1697.11,12 1605
+4,12 1605
+1699.15,29 1606
+20,21 1606
+23,28 1606
+15,29 1606
+15,29 1606
+8,29 1606
+1701.3,23 1607
+1702.3,23 1608
+1703.10,11 1609
+3,11 1609
+1710.1,46 1610
+17,33 1610
+34,45 1610
+1,46 1610
+1,46 1610
+1711.5,14 1611
+1712.2,28 1612
+14,16 1612
+18,27 1612
+2,28 1612
+2,28 1612
+1713.14,33 1613
+24,32 1613
+14,33 1613
+14,33 1613
+1714.6,13 1614
+1715.10,12 1615
+3,12 1615
+1716.9,23 1616
+2,23 1616
+1718.8,10 1617
+1,10 1617
+1723.1,30 1618
+21,29 1618
+1,30 1618
+1,30 1618
+1724.5,11 1619
+1725.2,81 1620
+15,68 1620
+69,70 1620
+71,73 1620
+74,80 1620
+2,81 1620
+2,81 1620
+1726.6,13 1621
+1727.10,11 1622
+3,11 1622
+1728.2,24 1623
+1729.2,39 1624
+21,29 1624
+31,38 1624
+2,39 1624
+1730.2,18 1625
+1731.2,13 1626
+1732.6,18 1627
+1733.10,11 1628
+3,11 1628
+1734.9,31 1629
+22,30 1629
+9,31 1629
+9,31 1629
+2,31 1629
+1736.13,14 1630
+6,14 1630
+1741.1,25 1631
+18,19 1631
+21,24 1631
+1,25 1631
+1,25 1631
+1742.1,43 1632
+22,28 1632
+29,32 1632
+33,40 1632
+41,42 1632
+1,43 1632
+1744.6,30 1633
+21,29 1633
+6,30 1633
+6,30 1633
+6,35 1633
+1745.3,8 1634
+1746.2,18 1635
+13,17 1635
+2,18 1635
+2,18 1635
+2,18 1635
+1748.1,17 1636
+1749.0,1 1637
+1753.13,30 1638
+23,24 1638
+26,29 1638
+13,30 1638
+13,30 1638
+1,30 1638
+1754.1,17 1639
+1756.5,15 1640
+1757.2,1761.17 1641
+1757.34,41 1641
+1758.8,21 1641
+1759.16,27 1641
+8,27 1641
+8,50 1641
+8,50 1642
+1760.31,34 1641
+19,34 1641
+8,34 1641
+8,34 1641
+8,34 1643
+1761.8,16 1641
+1757.2,1761.17 1641
+1757.2,1761.17 1641
+1762.6,20 1644
+24,35 1644
+24,42 1644
+1763.3,16 1645
+1764.3,9 1646
+1767.6,21 1647
+1770.5,16 1648
+5,23 1648
+1771.2,28 1649
+12,23 1649
+12,23 1649
+24,27 1649
+2,28 1649
+1772.2,25 1650
+2,25 1650
+1773.2,11 1651
+1775.1,13 1652
+1777.5,16 1653
+5,23 1653
+1778.2,13 1654
+1779.2,25 1655
+2,25 1655
+1782.14,26 1656
+14,30 1656
+5,31 1656
+5,38 1656
+1783.14,25 1657
+14,25 1657
+14,32 1657
+2,32 1657
+2,32 1658
+1785.6,30 1659
+6,30 1659
+6,30 1659
+6,30 1659
+6,30 1659
+13,21 1659
+6,30 1659
+6,30 1659
+6,30 1660
+6,30 1659
+6,30 1659
+6,30 1659
+6,30 1659
+1786.2,20 1661
+1788.1,25 1662
+12,20 1662
+21,24 1662
+1,25 1662
+1,25 1662
+1789.22,25 1663
+12,20 1663
+1,26 1663
+1791.13,30 1664
+31,42 1664
+13,42 1664
+1,49 1664
+1,49 1665
+1792.1,35 1666
+26,34 1666
+1,35 1666
+1,35 1666
+1793.1,12 1667
+1794.5,17 1668
+21,46 1668
+30,41 1668
+30,41 1668
+42,45 1668
+21,46 1668
+21,46 1668
+21,46 1668
+50,58 1668
+1795.27,38 1669
+19,38 1669
+2,57 1669
+2,57 1670
+1796.6,33 1671
+19,32 1671
+6,33 1671
+6,33 1671
+6,45 1671
+1797.3,13 1672
+1798.3,27 1673
+3,27 1674
+1800.7,33 1675
+17,28 1675
+17,28 1675
+29,32 1675
+7,33 1675
+7,33 1676
+1802.1,38 1677
+17,25 1677
+27,37 1677
+1,38 1677
+1,38 1677
+1803.5,17 1678
+21,30 1678
+1804.2,16 1679
+1805.2,8 1680
+1808.1,10 1681
+1811.26,29 1682
+26,29 1682
+1812.22,33 1683
+14,33 1683
+1,52 1683
+1,52 1684
+1813.5,12 1685
+30,54 1686
+37,45 1686
+47,53 1686
+30,54 1686
+30,54 1686
+15,18 1686
+20,26 1686
+20,26 1687
+20,26 1688
+1814.6,52 1689
+24,32 1689
+33,44 1689
+46,51 1689
+6,52 1689
+6,52 1689
+1815.5,15 1690
+1816.2,20 1691
+1817.2,8 1692
+1819.5,13 1693
+18,24 1693
+1820.2,48 1694
+20,29 1694
+30,41 1694
+42,47 1694
+2,48 1694
+2,48 1694
+1821.1,21 1695
+1822.1,32 1696
+1823.1,19 1697
+1825.1,23 1698
+1826.5,15 1699
+1827.17,30 1700
+2,30 1700
+2,30 1701
+1829.2,14 1702
+1830.6,17 1703
+6,29 1703
+31,53 1704
+1831.2,27 1705
+1832.2,31 1706
+16,18 1706
+19,22 1706
+23,30 1706
+2,31 1706
+2,31 1706
+1833.2,11 1707
+1834.25,35 1708
+23,45 1708
+16,45 1708
+2,45 1708
+2,45 1709
+1835.2,18 1710
+1836.6,11 1711
+6,11 1712
+13,18 1713
+1837.2,14 1714
+1838.9,20 1715
+1839.3,30 1716
+20,23 1716
+24,27 1716
+28,29 1716
+3,30 1716
+3,30 1716
+1840.7,13 1717
+7,13 1718
+15,20 1719
+1841.7,17 1720
+19,40 1721
+30,33 1721
+34,37 1721
+38,39 1721
+19,40 1721
+19,40 1721
+1842.3,16 1722
+3,16 1722
+3,16 1723
+3,16 1723
+1845.1,21 1724
+1846.1,17 1725
+1847.1,9 1726
+1848.1,10 1727
+1849.5,20 1728
+24,31 1728
+1850.6,12 1729
+1851.3,24 1730
+1852.3,9 1731
+1854.2,23 1732
+14,22 1732
+2,23 1732
+2,23 1732
+1855.2,24 1733
+14,23 1733
+2,24 1733
+2,24 1733
+1856.6,16 1734
+1857.10,1858.31 1735
+1857.22,70 1735
+1858.5,16 1735
+5,16 1735
+17,21 1735
+22,30 1735
+1857.10,1858.31 1735
+1857.10,1858.31 1735
+1857.3,1858.45 1735
+1857.3,1858.45 1735
+1857.3,1858.45 1736
+33,34 1735
+36,37 1735
+38,44 1735
+1857.3,1858.45 1735
+1857.3,1858.45 1735
+1859.2,15 1737
+1860.2,8 1738
+1864.5,13 1739
+1865.15,26 1740
+15,26 1740
+27,30 1740
+2,44 1740
+2,44 1741
+1866.5,15 1742
+17,65 1743
+24,35 1743
+24,35 1743
+24,53 1743
+24,53 1744
+54,55 1743
+56,57 1743
+58,64 1743
+17,65 1743
+17,65 1743
+1867.1,14 1745
+1868.0,1 1746
+1883.1,12 1747
+1884.1,10 1748
+1,10 1749
+1885.15,67 1750
+34,41 1750
+42,44 1750
+46,49 1750
+51,66 1750
+15,67 1750
+15,67 1750
+2,5 1750
+2,5 1751
+2,5 1752
+1886.16,17 1753
+18,19 1753
+22,25 1753
+26,28 1753
+1887.1,59 1754
+10,17 1754
+27,32 1754
+9:90.18,31 1754
+0:1887.45,46 1754
+47,58 1754
+1,59 1754
+1,59 1754
+1888.1,59 1755
+10,17 1755
+27,32 1755
+9:90.18,31 1755
+0:1888.45,46 1755
+47,58 1755
+1,59 1755
+1,59 1755
+1889.1,59 1756
+10,17 1756
+27,32 1756
+9:90.18,31 1756
+0:1889.45,46 1756
+47,58 1756
+1,59 1756
+1,59 1756
+1890.1,58 1757
+10,17 1757
+27,32 1757
+9:90.18,31 1757
+0:1890.45,46 1757
+47,57 1757
+1,58 1757
+1,58 1757
+1891.1,88 1758
+7,10 1758
+12,87 1758
+1,88 1758
+1,88 1758
+1,88 1759
+1892.1,36 1760
+14,17 1760
+19,25 1760
+26,31 1760
+32,35 1760
+1,36 1760
+1,36 1760
+1,36 1761
+1893.1,40 1762
+14,17 1762
+19,27 1762
+29,39 1762
+1,40 1762
+1,40 1762
+1,40 1763
+1894.6,14 1764
+22,37 1765
+16,37 1765
+1895.2,30 1766
+8,11 1766
+13,29 1766
+13,29 1766
+2,30 1766
+2,30 1766
+2,30 1767
+1894.39,44 1768
+39,44 1768
+1896.22,25 1769
+1897.5,11 1770
+15,43 1770
+24,35 1770
+24,35 1770
+37,42 1770
+15,43 1770
+15,43 1770
+15,43 1770
+47,55 1770
+1898.2,65 1771
+11,18 1771
+32,43 1771
+24,43 1771
+24,47 1771
+24,47 1772
+2,65 1771
+2,65 1771
+1899.5,18 1773
+1900.2,18 1774
+1901.5,18 1775
+1902.2,20 1776
+7,15 1776
+2,20 1776
+2,20 1776
+1903.2,20 1777
+7,15 1777
+2,20 1777
+2,20 1777
+1904.2,1905.38 1778
+1904.8,11 1778
+35,43 1778
+13,43 1778
+13,55 1778
+56,64 1778
+13,64 1778
+13,64 1779
+13,1905.37 1778
+1904.13,1905.37 1780
+1904.2,1905.38 1778
+1904.2,1905.38 1778
+1904.2,1905.38 1781
+1906.2,41 1782
+15,18 1782
+20,27 1782
+29,35 1782
+37,40 1782
+2,41 1782
+2,41 1782
+2,41 1783
+1907.2,64 1784
+8,11 1784
+13,63 1784
+2,64 1784
+2,64 1784
+2,64 1785
+1908.2,67 1786
+8,11 1786
+58,66 1786
+51,66 1786
+13,66 1786
+13,66 1787
+2,67 1786
+2,67 1786
+2,67 1788
+1911.1,58 1789
+7,10 1789
+38,49 1789
+12,49 1789
+12,57 1789
+12,57 1790
+1,58 1789
+1,58 1789
+1,58 1791
+1912.1,19 1792
+11,14 1792
+15,16 1792
+17,18 1792
+1,19 1792
+1913.1,20 1793
+1914.1,33 1794
+20,23 1794
+25,32 1794
+1,33 1794
+1915.1,45 1795
+22,25 1795
+41,44 1795
+34,44 1795
+27,44 1795
+27,44 1795
+27,44 1796
+1,45 1795
+1919.9,17 1797
+9,21 1797
+9,21 1798
+9,21 1797
+1921.9,17 1797
+9,21 1797
+9,21 1799
+9,21 1797
+1923.12,18 1797
+12,18 1797
+1918.2,8 1797
+2,8 1797
+2,8 1797
+2,8 1797
+1920.3,23 1800
+16,19 1800
+21,22 1800
+3,23 1800
+3,23 1797
+1922.3,23 1801
+15,18 1801
+20,22 1801
+3,23 1801
+3,23 1802
+3,23 1797
+1924.8,28 1803
+8,17 1803
+21,27 1803
+8,28 1803
+8,28 1803
+8,28 1803
+1925.4,27 1804
+14,17 1804
+18,24 1804
+25,26 1804
+4,27 1804
+1926.4,22 1805
+1928.7,23 1806
+7,23 1807
+25,30 1808
+1929.7,11 1809
+7,15 1809
+7,23 1809
+7,23 1810
+1930.15,23 1811
+15,19 1811
+15,23 1811
+4,23 1811
+4,23 1812
+1931.4,49 1813
+4,9 1813
+17,18 1813
+19,20 1813
+23,26 1813
+27,29 1813
+33,38 1813
+39,42 1813
+44,45 1813
+46,47 1813
+4,49 1813
+1932.8,18 1814
+1933.5,54 1815
+5,10 1815
+18,23 1815
+24,25 1815
+28,31 1815
+32,34 1815
+38,43 1815
+44,47 1815
+49,50 1815
+51,52 1815
+5,54 1815
+1934.4,53 1816
+4,9 1816
+16,18 1816
+19,20 1816
+22,27 1816
+29,30 1816
+31,32 1816
+34,38 1816
+40,48 1816
+40,44 1816
+40,48 1816
+40,52 1816
+40,52 1817
+4,53 1816
+4,53 1816
+1935.4,35 1818
+10,13 1818
+14,34 1818
+4,35 1818
+4,35 1818
+4,35 1819
+4,35 1820
+1937.12,16 1821
+12,20 1821
+12,28 1821
+12,28 1822
+1938.4,62 1823
+10,13 1823
+41,49 1823
+41,45 1823
+41,49 1823
+15,49 1823
+15,61 1823
+15,61 1824
+4,62 1823
+4,62 1823
+4,62 1825
+4,62 1826
+4,62 1797
+1941.1,12 1827
+1942.0,1 1828
+1946.1,8 1829
+1947.5,10 1830
+1948.2,16 1831
+1949.10,38 1832
+16,19 1832
+21,37 1832
+10,38 1832
+10,38 1832
+1,38 1832
+1,38 1833
+1950.10,39 1834
+16,19 1834
+21,38 1834
+10,39 1834
+10,39 1834
+1,39 1834
+1,39 1835
+1951.1,42 1836
+16,19 1836
+21,41 1836
+1,42 1836
+1,42 1836
+1952.5,14 1837
+18,24 1837
+18,31 1837
+1953.7,14 1838
+2,14 1838
+1954.2,17 1839
+1956.19,36 1840
+18,41 1840
+17,46 1840
+1,46 1840
+1957.19,36 1841
+18,41 1841
+17,46 1841
+1,46 1841
+1958.1,57 1842
+7,10 1842
+30,39 1842
+12,39 1842
+12,46 1842
+47,56 1842
+12,56 1842
+12,56 1843
+12,56 1844
+1,57 1842
+1,57 1842
+1,57 1845
+1959.1,32 1846
+7,10 1846
+12,31 1846
+1,32 1846
+1,32 1846
+1,32 1847
+1960.0,1 1848
+1977.15,66 1849
+34,41 1849
+42,44 1849
+45,48 1849
+50,65 1849
+15,66 1849
+15,66 1849
+2,5 1849
+2,5 1850
+2,5 1851
+1978.1,25 1852
+1979.1,36 1853
+14,17 1853
+19,25 1853
+27,35 1853
+1,36 1853
+1,36 1853
+1,36 1854
+1980.6,14 1855
+22,37 1856
+16,37 1856
+1981.2,30 1857
+8,11 1857
+13,29 1857
+13,29 1857
+2,30 1857
+2,30 1857
+2,30 1858
+1980.39,44 1859
+39,44 1859
+1983.5,12 1860
+1985.6,20 1861
+1986.3,22 1862
+8,17 1862
+3,22 1862
+3,22 1862
+1987.3,22 1863
+8,17 1863
+3,22 1863
+3,22 1863
+1988.3,1989.39 1864
+1988.9,12 1864
+35,43 1864
+14,43 1864
+14,55 1864
+56,64 1864
+14,64 1864
+14,64 1865
+14,1989.38 1864
+1988.14,1989.38 1866
+1988.3,1989.39 1864
+1988.3,1989.39 1864
+1988.3,1989.39 1867
+1990.3,42 1868
+16,19 1868
+21,27 1868
+29,36 1868
+38,41 1868
+3,42 1868
+3,42 1868
+3,42 1869
+1991.3,74 1870
+9,12 1870
+14,73 1870
+3,74 1870
+3,74 1870
+3,74 1871
+1992.3,75 1872
+9,12 1872
+14,74 1872
+3,75 1872
+3,75 1872
+3,75 1873
+3,75 1874
+1996.6,20 1875
+1997.3,22 1876
+8,17 1876
+3,22 1876
+3,22 1876
+1998.3,22 1877
+8,17 1877
+3,22 1877
+3,22 1877
+1999.3,2000.39 1878
+1999.9,12 1878
+35,43 1878
+14,43 1878
+14,55 1878
+56,64 1878
+14,64 1878
+14,64 1879
+14,2000.38 1878
+1999.14,2000.38 1880
+1999.3,2000.39 1878
+1999.3,2000.39 1878
+1999.3,2000.39 1881
+2001.3,42 1882
+16,19 1882
+21,27 1882
+29,36 1882
+38,41 1882
+3,42 1882
+3,42 1882
+3,42 1883
+2002.3,57 1884
+9,12 1884
+14,56 1884
+3,57 1884
+3,57 1884
+3,57 1885
+2003.3,51 1886
+9,12 1886
+14,50 1886
+3,51 1886
+3,51 1886
+3,51 1887
+2004.3,51 1888
+9,12 1888
+14,50 1888
+3,51 1888
+3,51 1888
+3,51 1889
+2008.1,19 1890
+11,14 1890
+15,16 1890
+17,18 1890
+1,19 1890
+2009.1,32 1891
+21,24 1891
+25,31 1891
+1,32 1891
+2010.1,33 1892
+20,23 1892
+25,32 1892
+1,33 1892
+2011.1,45 1893
+22,25 1893
+41,44 1893
+34,44 1893
+27,44 1893
+27,44 1893
+27,44 1894
+1,45 1893
+2015.9,17 1895
+9,21 1895
+9,21 1896
+9,21 1895
+2017.9,17 1895
+9,21 1895
+9,21 1897
+9,21 1895
+2019.11,17 1895
+11,17 1895
+2014.2,8 1895
+2,8 1895
+2,8 1895
+2,8 1895
+2016.3,23 1898
+16,19 1898
+21,22 1898
+3,23 1898
+3,23 1895
+2018.3,23 1899
+15,18 1899
+20,22 1899
+3,23 1899
+3,23 1900
+3,23 1895
+2020.7,20 1901
+7,20 1902
+2030.0,1 1903
+2021.7,20 1904
+2022.4,15 1905
+2023.8,17 1906
+19,28 1907
+24,27 1907
+19,28 1907
+2024.4,22 1908
+2025.4,12 1909
+4,12 1910
+4,12 1911
+2030.0,1 1903
+0,1 1912
+0,1 1895
+2034.1,46 1913
+22,25 1913
+22,25 1913
+27,30 1913
+27,30 1913
+32,38 1913
+32,38 1913
+40,43 1913
+40,43 1913
+2035.5,12 1914
+2036.2,20 1915
+2037.2,8 1916
+2039.1,12 1917
+2040.1,20 1918
+2041.1,12 1919
+2043.7,13 1920
+15,20 1921
+2044.3,18 1922
+14,17 1922
+3,18 1922
+3,18 1922
+2045.3,60 1923
+9,12 1923
+40,47 1923
+14,47 1923
+14,59 1923
+14,59 1924
+3,60 1923
+3,60 1923
+3,60 1925
+2046.8,15 1926
+17,22 1927
+2047.8,28 1928
+8,17 1928
+21,27 1928
+8,28 1928
+8,28 1928
+8,28 1928
+2048.4,28 1929
+14,17 1929
+19,25 1929
+26,27 1929
+4,28 1929
+2049.4,22 1930
+2043.22,25 1931
+22,25 1931
+2053.1,19 1932
+2054.0,1 1933
+2062.5,9 1934
+2063.2,23 1935
+13,16 1935
+18,22 1935
+2,23 1935
+2064.10,45 1936
+16,19 1936
+21,44 1936
+10,45 1936
+10,45 1936
+6,45 1936
+6,45 1937
+2065.7,39 1936
+13,16 1936
+18,38 1936
+7,39 1936
+7,39 1936
+3,39 1936
+3,39 1938
+2064.6,2065.39 1936
+2066.17,26 1936
+14,27 1936
+7,28 1936
+3,28 1936
+2064.2,2066.28 1936
+2067.10,30 1939
+10,23 1939
+10,25 1939
+10,25 1940
+10,30 1939
+10,30 1939
+6,30 1939
+2068.3,27 1941
+7,20 1941
+7,22 1941
+7,22 1942
+3,27 1941
+3,27 1941
+2069.2,26 1943
+6,19 1943
+6,21 1943
+6,21 1944
+2,26 1943
+2,26 1943
+2,26 1945
+2072.2,28 1946
+16,19 1946
+21,24 1946
+26,27 1946
+2,28 1946
+2,28 1946
+2073.2,12 1947
+6,7 1947
+2,12 1947
+2,12 1947
+2074.2,12 1948
+6,7 1948
+2,12 1948
+2,12 1948
+2077.11,43 1949
+17,20 1949
+22,42 1949
+11,43 1949
+11,43 1949
+1,43 1949
+1,43 1950
+2079.11,40 1951
+17,20 1951
+22,39 1951
+11,40 1951
+11,40 1951
+1,40 1951
+1,40 1952
+2080.11,39 1953
+17,20 1953
+22,38 1953
+11,39 1953
+11,39 1953
+1,39 1953
+1,39 1954
+2081.12,47 1955
+18,21 1955
+23,46 1955
+12,47 1955
+12,47 1955
+1,47 1955
+1,47 1956
+2083.1,22 1957
+11,14 1957
+16,21 1957
+1,22 1957
+2084.11,45 1958
+17,20 1958
+22,44 1958
+11,45 1958
+11,45 1958
+1,45 1958
+1,45 1959
+2085.9,15 1960
+5,15 1960
+2086.2,12 1961
+2087.1,23 1962
+13,16 1962
+17,22 1962
+1,23 1962
+2088.10,44 1963
+16,19 1963
+21,43 1963
+10,44 1963
+10,44 1963
+1,44 1963
+1,44 1964
+2089.5,11 1965
+15,19 1965
+2090.2,12 1966
+2092.13,21 1967
+10,22 1967
+9,25 1967
+1,29 1967
+2093.1,22 1968
+12,15 1968
+17,21 1968
+1,22 1968
+2094.1,24 1969
+14,17 1969
+19,23 1969
+1,24 1969
+2095.11,46 1970
+17,20 1970
+22,45 1970
+11,46 1970
+11,46 1970
+1,46 1970
+1,46 1971
+2097.12,60 1972
+18,21 1972
+23,59 1972
+12,60 1972
+12,60 1972
+1,60 1972
+1,60 1973
+2098.9,14 1974
+9,20 1974
+9,26 1974
+5,26 1974
+32,37 1975
+32,41 1975
+28,47 1975
+2101.12,46 1976
+18,21 1976
+23,45 1976
+12,46 1976
+12,46 1976
+1,46 1976
+1,46 1977
+2103.8,14 1978
+8,19 1978
+1,23 1978
+2104.8,13 1979
+1,15 1979
+2106.1,75 1980
+7,10 1980
+42,52 1980
+12,52 1980
+12,63 1980
+64,74 1980
+12,74 1980
+12,74 1981
+12,74 1982
+1,75 1980
+1,75 1980
+1,75 1983
+2108.9,16 1984
+5,16 1984
+2109.2,13 1985
+2110.10,44 1986
+16,19 1986
+21,43 1986
+10,44 1986
+10,44 1986
+1,44 1986
+1,44 1987
+2111.10,45 1988
+16,19 1988
+21,44 1988
+10,45 1988
+10,45 1988
+1,45 1988
+1,45 1989
+2113.1,75 1990
+7,10 1990
+35,43 1990
+12,43 1990
+12,54 1990
+55,63 1990
+12,63 1990
+12,63 1991
+12,74 1990
+12,74 1992
+1,75 1990
+1,75 1990
+1,75 1993
+2114.1,24 1994
+17,20 1994
+22,23 1994
+1,24 1994
+1,24 1994
+2115.0,1 1995
+2119.11,45 1996
+17,20 1996
+22,44 1996
+11,45 1996
+11,45 1996
+1,45 1996
+1,45 1997
+2120.5,13 1998
+17,27 1998
+17,27 1998
+2121.2,58 1999
+8,11 1999
+13,57 1999
+2,58 1999
+2,58 1999
+2,58 2000
+2122.2,59 2001
+8,11 2001
+13,58 2001
+2,59 2001
+2,59 2001
+2,59 2002
+2123.2,69 2003
+8,11 2003
+13,68 2003
+2,69 2003
+2,69 2003
+2,69 2004
+2124.2,12 2005
+2,16 2005
+2126.10,44 2006
+16,19 2006
+21,43 2006
+10,44 2006
+10,44 2006
+1,44 2006
+1,44 2007
+2127.5,13 2008
+17,27 2008
+17,27 2008
+2128.2,61 2009
+8,11 2009
+13,56 2009
+13,60 2009
+13,60 2010
+2,61 2009
+2,61 2009
+2,61 2011
+2129.2,61 2012
+8,11 2012
+13,56 2012
+13,60 2012
+13,60 2013
+2,61 2012
+2,61 2012
+2,61 2014
+2130.2,76 2015
+8,11 2015
+13,75 2015
+2,76 2015
+2,76 2015
+2,76 2016
+2131.2,12 2017
+2,16 2017
+2133.10,44 2018
+16,19 2018
+21,43 2018
+10,44 2018
+10,44 2018
+1,44 2018
+1,44 2019
+2134.5,13 2020
+17,27 2020
+17,27 2020
+2135.2,68 2021
+8,11 2021
+13,67 2021
+2,68 2021
+2,68 2021
+2,68 2022
+2136.2,12 2023
+2,16 2023
+2138.10,44 2024
+16,19 2024
+21,43 2024
+10,44 2024
+10,44 2024
+1,44 2024
+1,44 2025
+2139.5,13 2026
+2140.9,17 2027
+2,17 2027
+2141.20,29 2028
+16,30 2028
+12,30 2028
+6,30 2028
+46,55 2029
+42,56 2029
+32,56 2029
+2142.2,68 2030
+8,11 2030
+57,67 2030
+13,67 2030
+13,67 2031
+2,68 2030
+2,68 2030
+2,68 2032
+2144.0,1 2033
+2148.11,46 2034
+17,20 2034
+22,45 2034
+11,46 2034
+11,46 2034
+1,46 2034
+1,46 2035
+2149.5,13 2036
+2150.2,73 2037
+10,13 2037
+15,72 2037
+2,73 2037
+2,73 2037
+2,73 2038
+2151.2,71 2039
+10,13 2039
+15,70 2039
+2,71 2039
+2,71 2039
+2,71 2040
+2152.2,70 2041
+10,13 2041
+15,69 2041
+2,70 2041
+2,70 2041
+2,70 2042
+2154.10,45 2043
+16,19 2043
+21,44 2043
+10,45 2043
+10,45 2043
+1,45 2043
+1,45 2044
+2155.5,13 2045
+2156.13,57 2046
+19,22 2046
+24,56 2046
+13,57 2046
+13,57 2046
+2,57 2046
+2,57 2047
+2157.9,17 2048
+2,17 2048
+2158.19,28 2049
+15,29 2049
+12,29 2049
+6,29 2049
+44,53 2050
+40,54 2050
+31,54 2050
+2159.2,63 2051
+8,11 2051
+52,62 2051
+13,62 2051
+13,62 2052
+2,63 2051
+2,63 2051
+2,63 2053
+2161.10,45 2054
+16,19 2054
+21,44 2054
+10,45 2054
+10,45 2054
+1,45 2054
+1,45 2055
+2162.5,13 2056
+2163.9,17 2057
+2,17 2057
+2164.20,29 2058
+17,30 2058
+12,30 2058
+6,30 2058
+45,54 2059
+42,55 2059
+32,55 2059
+2165.2,65 2060
+8,11 2060
+54,64 2060
+13,64 2060
+13,64 2061
+2,65 2060
+2,65 2060
+2,65 2062
+2166.2,65 2063
+8,11 2063
+54,64 2063
+13,64 2063
+13,64 2064
+2,65 2063
+2,65 2063
+2,65 2065
+2167.2,65 2066
+8,11 2066
+54,64 2066
+13,64 2066
+13,64 2067
+2,65 2066
+2,65 2066
+2,65 2068
+2169.0,1 2069
+2173.11,46 2070
+17,20 2070
+22,45 2070
+11,46 2070
+11,46 2070
+1,46 2070
+1,46 2071
+2174.5,13 2072
+2175.9,17 2073
+2,17 2073
+2176.6,14 2074
+16,24 2075
+2177.2,65 2076
+8,11 2076
+54,64 2076
+13,64 2076
+13,64 2077
+2,65 2076
+2,65 2076
+2,65 2078
+2178.2,65 2079
+8,11 2079
+54,64 2079
+13,64 2079
+13,64 2080
+2,65 2079
+2,65 2079
+2,65 2081
+2179.2,65 2082
+8,11 2082
+54,64 2082
+13,64 2082
+13,64 2083
+2,65 2082
+2,65 2082
+2,65 2084
+2181.10,45 2085
+16,19 2085
+21,44 2085
+10,45 2085
+10,45 2085
+1,45 2085
+1,45 2086
+2182.5,13 2087
+2183.13,57 2088
+19,22 2088
+24,56 2088
+13,57 2088
+13,57 2088
+2,57 2088
+2,57 2089
+2184.9,17 2090
+2,17 2090
+2185.18,27 2091
+15,28 2091
+12,28 2091
+6,28 2091
+42,51 2092
+39,52 2092
+30,52 2092
+2186.2,63 2093
+8,11 2093
+52,62 2093
+13,62 2093
+13,62 2094
+2,63 2093
+2,63 2093
+2,63 2095
+2188.10,45 2096
+16,19 2096
+21,44 2096
+10,45 2096
+10,45 2096
+1,45 2096
+1,45 2097
+2189.5,13 2098
+2190.2,52 2099
+10,13 2099
+15,51 2099
+2,52 2099
+2,52 2099
+2,52 2100
+2191.2,47 2101
+10,13 2101
+15,46 2101
+2,47 2101
+2,47 2101
+2,47 2102
+2192.2,46 2103
+10,13 2103
+15,45 2103
+2,46 2103
+2,46 2103
+2,46 2104
+2194.0,1 2105
+2198.11,45 2106
+17,20 2106
+22,44 2106
+11,45 2106
+11,45 2106
+1,45 2106
+1,45 2107
+2199.12,58 2108
+18,21 2108
+23,57 2108
+12,58 2108
+12,58 2108
+1,58 2108
+1,58 2109
+2200.5,13 2110
+2201.2,18 2111
+2202.2,13 2112
+2203.6,15 2113
+17,26 2114
+2204.2,68 2115
+8,11 2115
+57,67 2115
+13,67 2115
+13,67 2116
+2,68 2115
+2,68 2115
+2,68 2117
+2206.10,44 2118
+16,19 2118
+21,43 2118
+10,44 2118
+10,44 2118
+1,44 2118
+1,44 2119
+2207.5,13 2120
+2208.2,61 2121
+8,11 2121
+13,60 2121
+2,61 2121
+2,61 2121
+2,61 2122
+2209.2,12 2123
+2,16 2123
+2211.10,44 2124
+16,19 2124
+21,43 2124
+10,44 2124
+10,44 2124
+1,44 2124
+1,44 2125
+2212.5,13 2126
+2213.2,77 2127
+8,11 2127
+51,72 2127
+57,66 2127
+57,70 2127
+51,56 2127
+51,72 2127
+13,72 2127
+13,76 2127
+13,76 2128
+2,77 2127
+2,77 2127
+2,77 2129
+2214.2,77 2130
+8,11 2130
+51,72 2130
+57,66 2130
+57,70 2130
+51,56 2130
+51,72 2130
+13,72 2130
+13,76 2130
+13,76 2131
+2,77 2130
+2,77 2130
+2,77 2132
+2215.2,69 2133
+8,11 2133
+13,68 2133
+2,69 2133
+2,69 2133
+2,69 2134
+2216.2,12 2135
+2,16 2135
+2218.10,44 2136
+16,19 2136
+21,43 2136
+10,44 2136
+10,44 2136
+1,44 2136
+1,44 2137
+2219.5,13 2138
+2220.2,54 2139
+8,11 2139
+13,53 2139
+2,54 2139
+2,54 2139
+2,54 2140
+2221.2,52 2141
+8,11 2141
+13,51 2141
+2,52 2141
+2,52 2141
+2,52 2142
+2222.2,91 2143
+8,11 2143
+72,81 2143
+72,85 2143
+57,66 2143
+57,71 2143
+51,56 2143
+51,86 2143
+13,86 2143
+13,90 2143
+13,90 2144
+2,91 2143
+2,91 2143
+2,91 2145
+2223.2,61 2146
+8,11 2146
+13,60 2146
+2,61 2146
+2,61 2146
+2,61 2147
+2224.2,12 2148
+2,16 2148
+2226.10,44 2149
+16,19 2149
+21,43 2149
+10,44 2149
+10,44 2149
+1,44 2149
+1,44 2150
+2227.5,13 2151
+2228.16,25 2152
+12,26 2152
+2,26 2152
+2229.2,68 2153
+8,11 2153
+57,67 2153
+13,67 2153
+13,67 2154
+2,68 2153
+2,68 2153
+2,68 2155
+2231.0,1 2156
+2240.10,38 2157
+16,19 2157
+21,37 2157
+10,38 2157
+10,38 2157
+1,38 2157
+1,38 2158
+2241.10,37 2159
+16,19 2159
+21,36 2159
+10,37 2159
+10,37 2159
+1,37 2159
+1,37 2160
+2242.10,36 2161
+16,19 2161
+21,35 2161
+10,36 2161
+10,36 2161
+1,36 2161
+1,36 2162
+2243.10,36 2163
+16,19 2163
+21,35 2163
+10,36 2163
+10,36 2163
+1,36 2163
+1,36 2164
+2244.12,13 2165
+14,15 2165
+18,21 2165
+22,25 2165
+2245.8,9 2166
+1,9 2166
+2269.10,37 2167
+16,19 2167
+21,36 2167
+10,37 2167
+10,37 2167
+1,37 2167
+1,37 2168
+2270.10,38 2169
+16,19 2169
+21,37 2169
+10,38 2169
+10,38 2169
+1,38 2169
+1,38 2170
+2271.11,43 2171
+17,20 2171
+22,42 2171
+11,43 2171
+11,43 2171
+1,43 2171
+1,43 2172
+2272.11,42 2173
+17,20 2173
+22,41 2173
+11,42 2173
+11,42 2173
+1,42 2173
+1,42 2174
+2273.11,43 2175
+17,20 2175
+22,42 2175
+11,43 2175
+11,43 2175
+1,43 2175
+1,43 2176
+2274.7,13 2177
+1,17 2177
+2275.7,13 2178
+7,18 2178
+1,22 2178
+2276.1,15 2179
+2277.1,15 2180
+2278.5,12 2181
+2279.2,11 2182
+2280.2,10 2183
+2282.5,12 2184
+2283.2,11 2185
+2284.2,10 2186
+2286.1,64 2187
+7,10 2187
+35,43 2187
+12,43 2187
+12,54 2187
+55,63 2187
+12,63 2187
+12,63 2188
+12,63 2189
+1,64 2187
+1,64 2187
+1,64 2190
+2287.1,69 2191
+7,10 2191
+38,47 2191
+12,47 2191
+12,58 2191
+59,68 2191
+12,68 2191
+12,68 2192
+12,68 2193
+1,69 2191
+1,69 2191
+1,69 2194
+2288.1,21 2195
+7,10 2195
+12,20 2195
+1,21 2195
+1,21 2195
+1,21 2196
+2289.0,1 2197
+2293.1,8 2198
+2294.6,12 2199
+14,25 2200
+2295.6,17 2201
+6,17 2201
+2296.3,13 2202
+11,12 2202
+3,13 2202
+3,13 2202
+2297.7,13 2203
+2298.9,20 2204
+9,20 2204
+9,28 2204
+4,28 2204
+4,28 2205
+2299.7,13 2206
+2300.4,22 2207
+2301.4,9 2208
+2303.12,19 2209
+2304.4,19 2210
+2294.27,30 2211
+27,30 2211
+2307.5,12 2212
+2308.2,53 2213
+9,40 2213
+41,42 2213
+43,45 2213
+46,52 2213
+2,53 2213
+2,53 2213
+2309.0,1 2214
+2314.1,17 2215
+2315.7,17 2216
+2316.29,35 2217
+3,8 2217
+10,14 2217
+10,14 2218
+10,14 2219
+10,14 2220
+2317.6,17 2221
+6,17 2221
+6,24 2221
+6,32 2221
+6,32 2222
+2318.3,43 2223
+9,14 2223
+16,42 2223
+3,43 2223
+3,43 2223
+3,43 2224
+2319.10,11 2225
+3,11 2225
+3,11 2226
+3,11 2227
+2315.19,31 2228
+19,31 2228
+2323.1,23 2229
+2324.1,27 2230
+2325.1,26 2231
+2326.1,25 2232
+2327.1,51 2233
+22,28 2233
+30,31 2233
+33,41 2233
+43,50 2233
+1,51 2233
+2328.1,21 2234
+2329.1,39 2235
+12,13 2235
+14,21 2235
+23,29 2235
+31,38 2235
+1,39 2235
+2330.1,17 2236
+2331.1,12 2237
+2333.9,17 2238
+9,17 2238
+2338.9,16 2238
+9,16 2238
+2332.10,16 2238
+10,16 2238
+10,16 2238
+10,16 2238
+2334.7,18 2239
+2335.4,21 2240
+2336.4,14 2241
+4,14 2242
+4,14 2238
+2339.3,23 2243
+2340.7,13 2244
+2341.11,12 2245
+4,12 2245
+2342.7,14 2246
+2343.11,66 2247
+23,53 2247
+54,65 2247
+54,65 2247
+11,66 2247
+11,66 2247
+4,78 2247
+4,78 2247
+4,78 2248
+67,68 2247
+69,70 2247
+71,77 2247
+4,78 2247
+4,78 2247
+2344.7,14 2249
+23,28 2250
+26,27 2250
+23,28 2250
+23,28 2250
+16,28 2250
+2345.15,16 2251
+8,16 2251
+2352.13,30 2252
+23,24 2252
+26,29 2252
+13,30 2252
+13,30 2252
+1,30 2252
+2353.14,25 2253
+14,25 2253
+1,32 2253
+1,32 2254
+2355.13,30 2255
+31,42 2255
+13,42 2255
+1,49 2255
+1,49 2256
+2356.1,35 2257
+26,34 2257
+1,35 2257
+1,35 2257
+2357.1,12 2258
+2358.5,17 2259
+21,46 2259
+30,41 2259
+30,41 2259
+42,45 2259
+21,46 2259
+21,46 2259
+21,46 2259
+50,58 2259
+2359.27,38 2260
+19,38 2260
+2,57 2260
+2,57 2261
+2360.6,33 2262
+19,32 2262
+6,33 2262
+6,33 2262
+6,45 2262
+2361.3,13 2263
+2362.3,27 2264
+3,27 2265
+2364.7,33 2266
+17,28 2266
+17,28 2266
+29,32 2266
+7,33 2266
+7,33 2267
+2366.5,17 2268
+2367.2,16 2269
+2368.2,8 2270
+2372.1,16 2271
+2373.6,12 2272
+16,24 2272
+2374.22,33 2273
+14,33 2273
+2,52 2273
+2,52 2274
+2375.1,61 2275
+24,32 2275
+34,43 2275
+45,51 2275
+53,60 2275
+1,61 2275
+1,61 2275
+2376.4,14 2276
+2377.6,22 2277
+2378.3,25 2278
+15,24 2278
+3,25 2278
+3,25 2278
+2379.7,13 2279
+2380.3,17 2280
+2385.2,8 2281
+2382.3,30 2282
+13,24 2282
+13,24 2282
+26,29 2282
+3,30 2282
+2383.3,17 2283
+2385.2,8 2281
+2388.2,29 2284
+2389.6,21 2285
+2390.16,27 2286
+16,27 2286
+29,32 2286
+3,46 2286
+3,46 2287
+2391.20,78 2288
+39,46 2288
+48,50 2288
+52,61 2288
+63,77 2288
+20,78 2288
+20,78 2288
+2392.2,27 2289
+2393.2,37 2290
+15,16 2290
+18,25 2290
+27,36 2290
+2,37 2290
+2,37 2290
+2,37 2291
+2394.2,33 2292
+8,9 2292
+11,32 2292
+2,33 2292
+2,33 2292
+2,33 2293
+2395.7,15 2294
+23,34 2295
+17,34 2295
+2396.3,25 2296
+9,10 2296
+12,24 2296
+12,24 2296
+3,25 2296
+3,25 2296
+3,25 2297
+2395.36,41 2298
+36,41 2298
+2397.2,17 2299
+7,12 2299
+2,17 2299
+2,17 2299
+2398.2,18 2300
+8,13 2300
+2,18 2300
+2,18 2300
+2399.2,60 2301
+8,9 2301
+30,38 2301
+11,38 2301
+11,50 2301
+51,59 2301
+11,59 2301
+11,59 2302
+11,59 2303
+2,60 2301
+2,60 2301
+2,60 2304
+2400.2,31 2305
+15,16 2305
+18,22 2305
+23,26 2305
+27,30 2305
+2,31 2305
+2,31 2305
+2,31 2306
+2401.2,63 2307
+8,9 2307
+11,62 2307
+2,63 2307
+2,63 2307
+2,63 2308
+2402.2,62 2309
+8,9 2309
+11,61 2309
+2,62 2309
+2,62 2309
+2,62 2310
+2403.2,63 2311
+8,9 2311
+11,62 2311
+2,63 2311
+2,63 2311
+2,63 2312
+2404.2,58 2313
+8,9 2313
+11,57 2313
+2,58 2313
+2,58 2313
+2,58 2314
+2405.2,74 2315
+8,9 2315
+48,56 2315
+11,56 2315
+11,60 2315
+61,69 2315
+11,69 2315
+11,69 2316
+11,73 2315
+11,73 2317
+2,74 2315
+2,74 2315
+2,74 2318
+2406.2,15 2319
+2407.31,47 2320
+41,42 2320
+43,46 2320
+31,47 2320
+31,47 2320
+2,48 2320
+14,15 2320
+16,25 2320
+26,29 2320
+26,29 2320
+2,48 2320
+2409.2,11 2321
+2410.2,11 2322
+2411.12,42 2323
+18,19 2323
+21,41 2323
+12,42 2323
+12,42 2323
+2,42 2323
+2,42 2324
+2412.11,31 2325
+11,24 2325
+11,26 2325
+11,26 2326
+11,31 2325
+11,31 2325
+11,36 2325
+6,36 2325
+43,63 2327
+43,56 2327
+43,58 2327
+43,58 2328
+43,63 2327
+43,63 2327
+38,68 2327
+2413.11,31 2329
+11,24 2329
+11,26 2329
+11,26 2330
+11,31 2329
+11,31 2329
+6,31 2329
+33,58 2331
+38,51 2331
+38,53 2331
+38,53 2332
+33,58 2331
+33,58 2331
+2414.2,65 2333
+8,9 2333
+33,42 2333
+11,42 2333
+11,54 2333
+55,64 2333
+11,64 2333
+11,64 2334
+11,64 2335
+2,65 2333
+2,65 2333
+2,65 2336
+2415.2,19 2337
+13,14 2337
+15,16 2337
+17,18 2337
+2,19 2337
+2416.2,29 2338
+8,9 2338
+11,28 2338
+2,29 2338
+2,29 2338
+2,29 2339
+2417.2,16 2340
+2418.19,20 2341
+21,22 2341
+2419.2,28 2342
+21,22 2342
+24,27 2342
+2,28 2342
+2420.2,44 2343
+23,24 2343
+40,43 2343
+33,43 2343
+26,43 2343
+26,43 2343
+26,43 2344
+2,44 2343
+2423.10,16 2345
+10,20 2345
+10,20 2346
+10,20 2345
+2425.10,16 2345
+10,20 2345
+10,20 2347
+10,20 2345
+2427.13,20 2345
+13,20 2345
+2482.10,16 2345
+10,20 2345
+10,20 2348
+10,20 2345
+2483.9,15 2345
+9,15 2345
+2484.9,18 2345
+9,18 2345
+2422.16,22 2345
+16,22 2345
+16,22 2345
+16,22 2345
+2424.4,22 2349
+17,18 2349
+20,21 2349
+4,22 2349
+4,22 2345
+2426.4,22 2350
+16,17 2350
+19,21 2350
+4,22 2350
+4,22 2351
+4,22 2345
+2428.16,43 2352
+30,33 2352
+35,42 2352
+16,43 2352
+16,43 2352
+5,6 2352
+8,11 2352
+8,11 2353
+2429.9,15 2354
+9,15 2354
+2431.22,28 2355
+19,28 2355
+6,28 2355
+6,28 2356
+2432.6,2436.17 2357
+2432.39,46 2357
+2433.8,21 2357
+2434.16,27 2357
+8,27 2357
+8,33 2357
+8,52 2357
+8,52 2358
+2435.8,17 2357
+21,24 2357
+8,24 2357
+8,24 2357
+8,24 2359
+8,24 2360
+2436.8,16 2357
+2432.6,2436.17 2357
+2432.6,2436.17 2357
+2437.10,24 2361
+28,39 2361
+28,46 2361
+2438.28,47 2362
+34,42 2362
+43,46 2362
+28,47 2362
+28,47 2362
+28,49 2362
+18,26 2362
+7,50 2362
+2439.20,32 2363
+20,36 2363
+11,37 2363
+11,44 2363
+2440.20,31 2364
+20,31 2364
+20,37 2364
+8,37 2364
+8,37 2365
+2442.12,35 2366
+12,35 2366
+12,35 2366
+12,35 2366
+12,35 2366
+12,35 2366
+12,35 2366
+19,27 2366
+12,35 2366
+12,35 2366
+12,35 2367
+12,35 2366
+12,35 2366
+12,35 2366
+12,35 2366
+2443.8,25 2368
+2444.40,52 2369
+50,51 2369
+40,52 2369
+40,52 2369
+23,53 2369
+30,38 2369
+30,38 2369
+23,53 2369
+23,53 2369
+2445.11,20 2370
+2446.8,16 2371
+2447.12,27 2372
+2448.9,40 2373
+14,21 2373
+33,35 2373
+36,39 2373
+9,40 2373
+9,40 2373
+2449.12,27 2374
+2450.18,39 2375
+23,24 2375
+26,38 2375
+18,39 2375
+18,39 2375
+9,39 2375
+2451.12,19 2376
+2452.47,59 2377
+57,58 2377
+47,59 2377
+47,59 2377
+9,60 2377
+16,27 2377
+16,27 2377
+16,33 2377
+16,42 2377
+16,42 2378
+43,44 2377
+45,46 2377
+45,46 2377
+9,60 2377
+9,60 2377
+9,60 2379
+9,60 2380
+9,60 2381
+2453.9,14 2382
+2455.56,68 2383
+66,67 2383
+56,68 2383
+56,68 2383
+8,69 2383
+34,45 2383
+15,45 2383
+15,51 2383
+15,51 2384
+52,53 2383
+54,55 2383
+54,55 2383
+8,69 2383
+8,69 2383
+2457.12,18 2385
+2458.56,68 2386
+66,67 2386
+56,68 2386
+56,68 2386
+8,69 2386
+34,45 2386
+15,45 2386
+15,51 2386
+15,51 2387
+52,53 2386
+54,55 2386
+54,55 2386
+8,69 2386
+8,69 2386
+8,69 2388
+8,69 2389
+8,69 2390
+2459.7,12 2391
+7,12 2392
+7,12 2393
+7,12 2354
+2463.6,53 2394
+12,13 2394
+29,35 2394
+26,35 2394
+15,35 2394
+15,39 2394
+46,52 2394
+43,52 2394
+40,52 2394
+15,52 2394
+15,52 2395
+15,52 2396
+6,53 2394
+6,53 2394
+6,53 2397
+6,53 2354
+2465.6,19 2398
+6,19 2354
+2467.32,38 2399
+29,38 2399
+25,38 2399
+25,38 2400
+50,56 2399
+47,56 2399
+44,56 2399
+40,56 2399
+40,56 2401
+2469.10,19 2402
+2470.15,37 2403
+16,22 2403
+27,35 2403
+15,37 2403
+15,37 2403
+7,44 2403
+7,44 2403
+42,43 2403
+7,44 2403
+7,44 2403
+2471.7,60 2404
+13,14 2404
+37,50 2404
+16,50 2404
+16,59 2404
+16,59 2405
+7,60 2404
+7,60 2404
+7,60 2406
+2472.7,60 2407
+13,14 2407
+37,50 2407
+16,50 2407
+16,59 2407
+16,59 2408
+7,60 2407
+7,60 2407
+7,60 2409
+2473.7,24 2410
+7,24 2411
+2477.7,24 2412
+2478.7,20 2413
+7,20 2354
+7,20 2414
+7,20 2415
+7,20 2345
+7,20 2345
+7,20 2345
+2485.8,19 2416
+8,19 2417
+8,19 2418
+2486.5,10 2419
+2487.4,30 2420
+25,26 2420
+28,29 2420
+4,30 2420
+4,30 2420
+2488.8,16 2421
+20,24 2421
+20,31 2421
+2489.5,22 2422
+16,17 2422
+18,19 2422
+20,21 2422
+5,22 2422
+5,22 2423
+5,22 2424
+5,22 2345
+2491.2,16 2425
+14,15 2425
+2,16 2425
+2,16 2426
+2,16 2427
+2,16 2428
+2,16 2429
+2493.0,1 2430
+2497.12,31 2431
+22,30 2431
+12,31 2431
+12,31 2431
+2498.5,12 2432
+17,58 2432
+24,45 2432
+24,49 2432
+24,49 2433
+50,51 2432
+52,54 2432
+55,57 2432
+17,58 2432
+17,58 2432
+17,58 2432
+2499.10,13 2434
+14,15 2434
+2,16 2434
+2500.9,48 2435
+21,29 2435
+30,41 2435
+42,47 2435
+9,48 2435
+9,48 2435
+50,51 2435
+1,52 2435
+19
+aSys->Dir 3:26.1,39.2 64
+11
+0:name:28.2,6 s
+4:uid:29.2,5 s
+8:gid:30.2,5 s
+12:muid:31.2,6 s
+16:qid:32.2,5 @1
+
+32:mode:33.2,6 i
+36:atime:34.2,7 i
+40:mtime:35.2,7 i
+48:length:36.2,8 B
+56:dtype:37.2,7 i
+60:dev:38.2,5 i
+aSys->Qid 11.1,16.2 16
+3
+0:path:13.2,6 B
+8:vers:14.2,6 i
+12:qtype:15.2,7 i
+aDraw->Chans 9:70.1,82.2 4
+1
+0:desc:72.2,6 i
+aDraw->Rect 116.1,139.2 16
+2
+0:min:118.2,5 @4
+
+8:max:119.2,5 @4
+
+aDraw->Point 99.1,113.2 8
+2
+0:x:101.2,3 i
+4:y:102.2,3 i
+aTk->Toplevel 1:5.1,12.2 32
+5
+0:display:7.2,9 R@6
+
+4:wreq:8.2,6 Cs
+8:image:9.2,7 R@7
+
+12:ctxt:10.2,6 R@9
+
+16:screenr:11.2,9 @3
+
+aDraw->Display 9:201.1,230.2 20
+5
+0:image:203.2,7 R@7
+
+4:white:204.2,7 R@7
+
+8:black:205.2,7 R@7
+
+12:opaque:206.2,8 R@7
+
+16:transparent:207.2,13 R@7
+
+aDraw->Image 142.1,198.2 56
+8
+0:r:146.2,3 @3
+
+16:clipr:147.2,7 @3
+
+32:depth:148.2,7 i
+36:chans:149.2,7 @2
+
+40:repl:150.2,6 i
+44:display:151.2,9 R@6
+
+48:screen:152.2,8 R@8
+
+52:iname:153.2,7 s
+aDraw->Screen 249.1,263.2 16
+4
+0:id:251.2,4 i
+4:image:252.2,7 R@7
+
+8:fill:253.2,6 R@7
+
+12:display:254.2,9 R@6
+
+aDraw->Wmcontext 282.1,291.2 28
+7
+0:kbd:284.2,5 Ci
+4:ptr:285.2,5 CR@10
+
+8:ctl:286.2,5 Cs
+12:wctl:287.2,6 Cs
+16:images:288.2,8 CR@7
+
+20:connfd:289.2,8 R@11
+
+24:ctxt:290.2,6 R@12
+
+aDraw->Pointer 266.1,271.2 16
+3
+0:buttons:268.2,9 i
+4:xy:269.2,4 @4
+
+12:msec:270.2,6 i
+aSys->FD 3:45.1,48.2 4
+1
+0:fd:47.2,4 i
+aDraw->Context 9:274.1,279.2 12
+3
+0:display:276.2,9 R@6
+
+4:screen:277.2,8 R@8
+
+8:wm:278.2,4 Ct8.2
+0:t0:15,21 s
+4:t1:15,21 Ct8.2
+0:t0:32,38 s
+4:t1:32,38 R@9
+
+
+
+aMtype 0:1310.0,1312.1 8
+2
+0:text:1311.1,5 s
+4:com:7,10 s
+aDraw->Font 9:233.1,246.2 16
+4
+0:name:235.2,6 s
+4:height:236.2,8 i
+8:ascent:237.2,8 i
+12:display:238.2,9 R@6
+
+aAitem 0:201.0,206.1 28
+7
+0:pname:202.1,6 s
+4:desc:7,11 s
+8:dtype:203.1,6 i
+12:factory:7,14 i
+16:read:204.1,5 s
+20:location:7,15 s
+24:data:205.1,5 Lt8.2
+0:t0:16,22 s
+4:t1:16,22 i
+
+aBufio->Iobuf 6:16.1,50.2 48
+9
+0:fd:41.2,4 R@11
+
+4:buffer:42.2,8 Ab
+8:index:43.2,7 i
+12:size:44.2,6 i
+16:dirty:45.2,7 i
+24:bufpos:46.2,8 B
+32:filpos:47.2,8 B
+40:lastop:48.2,8 i
+44:mode:49.2,6 i
+aImgloaded 0:711.0,714.1 8
+2
+0:name:712.1,5 s
+4:imgtype:713.1,8 i
+aDaytime->Tm 4:5.1,16.2 40
+10
+0:sec:6.2,5 i
+4:min:7.2,5 i
+8:hour:8.2,6 i
+12:mday:9.2,6 i
+16:mon:10.2,5 i
+20:year:11.2,6 i
+24:wday:12.2,6 i
+28:yday:13.2,6 i
+32:zone:14.2,6 s
+36:tzoff:15.2,7 i
+75
+0:init
+2
+32:ctxt:0:56.5,9 R@12
+
+36:argv:31,35 Ls
+3
+40:runfrom:81.1,8 s
+44:p:82.1,2 i
+60:r:95.1,2 @3
+
+n131:getdesc
+1
+32:l:214.8,9 Ls
+1
+36:s:216.1,2 s
+Ls162:getabilities
+0
+15
+32:i:237.1,2 i
+36:s:240.2,3 s
+40:val:257.5,8 i
+44:fd:234.1,3 R@16
+
+48:k:253.9,10 i
+52:noitems:252.4,11 i
+56:take:239.2,6 i
+60:name:256.5,9 s
+80:n:242.3,4 i
+84:lst:6,9 Ls
+88:n2:255.6,8 i
+92:lst2:10,14 Ls
+52:max:276.4,7 i
+40:min:275.4,7 i
+48:mul:277.4,7 i
+n436:isat
+2
+32:s:311.5,6 s
+36:test:16,20 s
+2
+40:i:315.6,7 i
+44:num:313.1,4 i
+i460:isat2
+2
+32:s:321.6,7 s
+36:test:17,21 s
+2
+40:i:325.6,7 i
+44:num:323.1,4 i
+i482:nomatches
+1
+32:s:332.10,11 s
+3
+36:i:335.6,7 i
+40:n:334.1,2 i
+44:test:336.2,6 s
+i501:matches
+2
+32:s1:342.8,10 s
+36:s2:11,13 s
+0
+i515:biggestmatch
+3
+32:nm:349.13,15 i
+36:s:22,23 s
+40:l:33,34 i
+3
+44:bigmatch:351.1,9 s
+48:match:352.1,6 s
+52:p:356.2,3 i
+s539:getabllist
+0
+9
+32:i:367.6,7 i
+36:los:365.1,4 Ls
+40:p2:369.2,4 i
+44:nm:370.2,4 i
+48:p:368.2,3 i
+52:tmpl:373.3,7 Ls
+56:ar:392.1,3 As
+60:tmp:380.3,6 s
+64:listitem:388.3,11 s
+As613:buildabilitiesframes
+1
+32:top:400.21,24 R@5
+
+1
+36:k:405.6,7 i
+n698:buildabilitiesframe
+3
+32:top:421.20,23 R@5
+
+36:k:42,43 i
+40:chanout:50,57 s
+13
+44:frame:428.3,8 s
+48:i:425.6,7 i
+52:count2:424.1,7 i
+56:tmp:463.4,7 Lt8.2
+0:t0:205.16,22 s
+4:t1:16,22 i
+
+60:mul:443.5,8 i
+64:s:444.5,6 s
+68:max:454.4,7 i
+72:name:466.6,10 s
+76:val:12,15 i
+80:nm:423.1,3 s
+84:s:467.5,6 s
+60:row:464.4,7 i
+60:min:453.4,7 i
+n995:getvaluescreen
+2
+32:x:511.15,16 s
+36:y:17,18 s
+7
+40:top:515.2,5 R@5
+
+44:s:532.4,5 s
+48:inp:528.2,5 s
+52:tk1:518.6,9 i
+56:chanin:516.1,7 Cs
+60:s:524.2,3 i
+64:s:526.2,3 R@10
+
+i1125:infoscreen
+0
+10
+32:top:546.2,5 R@5
+
+36:titlebar:7,15 Cs
+40:s:556.2,3 s
+44:title:573.2,7 s
+48:tmp:547.1,4 Lt8.2
+0:t0:227.19,25 s
+4:t1:19,25 s
+
+52:infrow:553.1,7 i
+56:d1:557.3,5 s
+60:d2:6,8 s
+64:s:569.2,3 i
+68:s:571.2,3 R@10
+
+n1276:settingsscreen
+2
+32:k:582.15,16 i
+36:ctlchan:23,30 Ci
+12
+40:top:594.2,5 R@5
+
+44:titlebar:7,15 Cs
+48:i:604.6,7 i
+52:ltmp:617.2,6 Li
+56:l:603.1,2 Li
+60:low:584.1,4 Lt16.4
+0:t0:48.21,37 R@5
+
+4:t1:21,37 s
+8:t2:21,37 Li
+12:t3:21,37 i
+
+64:allread:602.1,8 i
+68:chanin:595.1,7 Cs
+72:err:601.1,4 i
+76:name:586.10,14 s
+80:pid:593.1,4 i
+84:tplvl:586.3,8 R@5
+
+n1416:settingsloop
+5
+32:top:630.13,16 R@5
+
+36:chanin:36,42 Cs
+40:titlebar:43,51 Cs
+44:k:69,70 i
+48:abls:77,81 Li
+10
+52:title:660.2,7 s
+56:ctlchan:635.1,8 Ci
+60:val:648.5,8 i
+64:inp:642.2,5 s
+68:pid:633.1,4 i
+72:s:638.2,3 i
+76:s:640.2,3 R@10
+
+104:n:644.4,5 i
+108:lst:7,10 Ls
+72:i:647.5,6 i
+n1563:clearbuffer
+1
+32:c:670.12,13 Cs
+3
+36:tc:672.1,3 Ci
+44:del:675.2,5 s
+48:tick:676.2,6 i
+n1578:timer
+1
+32:tick:681.6,10 Ci
+0
+n1584:getval
+2
+32:l:687.7,8 Lt8.2
+0:t0:19,25 s
+4:t1:19,25 i
+
+36:s:32,33 s
+2
+40:name:690.3,7 s
+44:val:8,11 i
+i1594:list2string
+1
+32:l:697.12,13 Ls
+1
+36:s:699.1,2 s
+s1609:nocamera
+0
+2
+32:n:728.2,3 i
+40:dir:4,7 @0
+
+i1618:startuptkstuff
+2
+32:top:733.15,18 R@5
+
+36:ctlchan:38,45 Ci
+3
+40:pid:735.1,4 i
+52:dirs:738.2,6 AR@0
+
+56:n:7,8 i
+n1648:tkstuff
+0
+34
+32:win:754.2,5 R@5
+
+36:titlebar:7,15 Cs
+40:title:853.2,7 s
+44:ctlchan:765.1,8 Ci
+48:butchan:760.1,8 Cs
+52:k:831.10,11 i
+56:tk1:762.6,9 i
+60:title:839.5,10 s
+64:val:802.5,8 i
+68:e:769.1,2 i
+72:err:858.3,6 s
+76:fname:873.3,8 s
+80:ftype:10,15 i
+84:inp:793.2,5 s
+88:s:789.2,3 i
+92:s:791.2,3 R@10
+
+96:si:841.5,7 s
+120:n:795.4,5 i
+124:lst:7,10 Ls
+128:n:860.5,6 i
+132:lst:8,11 Ls
+64:k:808.10,11 i
+88:i:837.5,6 i
+64:i:816.10,11 i
+64:k:843.10,11 i
+64:i:821.10,11 i
+88:i:829.5,6 i
+88:i:807.5,6 i
+88:i:825.5,6 i
+88:pid:868.18,21 i
+64:val:830.5,8 i
+88:i:801.5,6 i
+88:val:820.5,8 i
+88:nf:815.5,7 i
+n2095:dealwithcamera
+2
+32:win:881.15,18 R@5
+
+36:lst:38,41 Ls
+4
+40:ctlchan:883.1,8 Ci
+44:e:900.3,4 i
+44:i:917.3,4 i
+44:i:928.3,4 i
+n2241:refresh
+2
+32:top:942.8,11 R@5
+
+36:ctlchan:31,38 Ci
+1
+40:pid:944.1,4 i
+n2259:delete
+3
+32:top:950.7,10 R@5
+
+36:i:30,31 i
+40:ctlchan:38,45 Ci
+6
+44:loi:955.1,4 Li
+48:s:954.1,2 s
+52:k:958.7,8 i
+56:ok:953.1,3 i
+60:pid:952.1,4 i
+52:k:971.6,7 i
+n2384:delselect
+1
+32:n:1000.10,11 i
+1
+36:i:1002.6,7 i
+n2397:doselect
+1
+32:top:1007.9,12 R@5
+
+4
+36:i:1010.6,7 i
+40:n:1009.1,2 i
+44:col:1011.2,5 s
+48:s:1019.1,2 s
+n2433:takephoto
+2
+32:top:1024.10,13 R@5
+
+36:ctlchan:33,40 Ci
+5
+40:fd:1028.1,3 R@11
+
+44:i:1038.8,9 i
+48:e:1030.2,3 i
+52:n:1037.3,4 i
+56:pid:1026.1,4 i
+n2488:unnew
+2
+32:top:1049.6,9 R@5
+
+36:i:29,30 i
+1
+40:tmp:1053.1,4 Li
+n2516:refreshtime
+2
+32:top:1065.12,15 R@5
+
+36:ctlchan:35,42 Ci
+1
+40:pid:1067.1,4 i
+n2546:addtoplevel
+4
+32:top:1074.12,15 R@5
+
+36:name:35,39 s
+40:abls:49,53 Li
+44:pid:68,71 i
+3
+48:ltmp:1076.1,5 Lt16.4
+0:t0:48.21,37 R@5
+
+4:t1:21,37 s
+8:t2:21,37 Li
+12:t3:21,37 i
+
+52:isin:1077.1,5 i
+56:tplvl:1079.3,8 R@5
+
+n2569:deltoplevel
+1
+32:top:1086.12,15 R@5
+
+5
+36:ltmp:1088.1,5 Lt16.4
+0:t0:17,33 R@5
+
+4:t1:17,33 s
+8:t2:17,33 Li
+12:t3:17,33 i
+
+40:tplvl:1090.3,8 R@5
+
+44:nm:10,12 s
+48:loi:14,17 Li
+52:p:19,20 i
+n2587:resetcam
+3
+32:top:1097.9,12 R@5
+
+36:show:32,36 i
+40:ctlchan:43,50 Ci
+7
+44:i:1101.6,7 i
+48:ltmp:1104.2,6 Lt16.4
+0:t0:48.21,37 R@5
+
+4:t1:21,37 s
+8:t2:21,37 Li
+12:t3:21,37 i
+
+52:pid:1099.1,4 i
+56:tplvl:1106.4,9 R@5
+
+60:nm:11,13 s
+64:loi:15,18 Li
+68:p:20,21 i
+n2636:set
+4
+32:top:1116.4,7 R@5
+
+36:i:27,28 i
+40:s:35,36 s
+44:ctlchan:46,53 Ci
+4
+48:val:1121.1,4 s
+52:mul:1129.3,6 i
+56:pid:1118.1,4 i
+52:e:1137.1,2 i
+n2706:setstate
+2
+32:i:1144.9,10 i
+36:val:17,20 s
+1
+40:fd:1146.1,3 R@11
+
+i2732:getabl
+1
+32:pname:1163.7,12 s
+1
+36:i:1165.6,7 i
+i2742:getstate
+2
+32:top:1170.9,12 R@5
+
+36:i:32,33 i
+6
+40:fd:1172.1,3 R@11
+
+44:fdi:1176.2,5 R@16
+
+48:s:1178.3,4 s
+52:val:1181.4,7 s
+72:n:1180.5,6 i
+76:lst:7,10 Ls
+i2799:setmystate
+3
+32:top:1191.11,14 R@5
+
+36:i:34,35 i
+40:val:42,45 s
+1
+44:mul:1197.2,5 i
+n2843:refreshfilelist
+2
+32:win:1209.16,19 R@5
+
+36:refresh:39,46 i
+22
+40:i:1221.6,7 i
+44:si:1248.2,4 s
+48:col:1231.1,4 i
+52:nocols:1232.1,7 i
+56:k:1242.7,8 i
+60:row:1230.1,4 i
+64:si:1222.2,4 s
+68:size:1290.1,5 s
+72:w:1234.1,2 i
+76:width:1298.1,6 s
+80:fd:1212.2,4 R@11
+
+84:isnew:1241.2,7 i
+88:oldlist:1220.1,8 As
+92:thisw:1263.2,7 i
+96:dirs:1226.2,6 AR@0
+
+100:n:7,8 i
+104:height:1297.1,7 s
+108:w1:1233.1,3 i
+136:e:1256.2,3 s
+92:colsize:1299.1,8 i
+84:csize:1291.1,6 i
+56:rsize:1292.1,6 i
+i3273:tkcmd
+2
+32:top:1323.6,9 R@5
+
+36:cmd:29,32 s
+1
+40:e:1332.1,2 s
+s3321:loadnewthumb
+2
+32:top:1337.13,16 R@5
+
+36:ctlchan:36,43 Ci
+2
+40:tmp:1342.6,9 Li
+44:pid:1339.1,4 i
+n3346:loadthumb
+3
+32:top:1347.10,13 R@5
+
+36:i:33,34 i
+40:ctlchan:41,48 Ci
+2
+44:k:1352.7,8 i
+48:pid:1349.1,4 i
+n3378:loadthumbnail
+2
+32:top:1360.14,17 R@5
+
+36:i:37,38 i
+10
+40:fd:1362.1,3 R@11
+
+44:image:1374.1,6 R@7
+
+48:n:1389.2,3 i
+52:x:1394.2,3 i
+56:x1:1397.2,4 i
+60:y:1395.2,3 i
+64:y1:1398.2,4 i
+68:h:1396.2,3 i
+72:si:1386.2,4 s
+100:p:1384.2,3 @4
+
+i3600:isloaded
+2
+32:name:1406.9,13 s
+36:ftype:23,28 i
+2
+40:tmp:1408.1,4 L@17
+
+44:ic:1410.2,4 @17
+
+i3612:delloaded
+2
+32:name:1417.10,14 s
+36:ftype:24,29 i
+2
+40:tmp:1419.1,4 L@17
+
+60:ic:1422.2,4 @17
+
+n3634:dialog
+4
+32:msg:1431.7,10 s
+36:diagtype:20,28 i
+40:img:30,33 i
+44:r:40,41 @3
+
+10
+60:win:1441.2,5 R@5
+
+64:titlebar:7,15 Cs
+68:title:1439.1,6 s
+72:tmpimg:1437.1,7 R@7
+
+76:diagchan:1442.1,9 Cs
+80:fd:1449.2,4 R@11
+
+84:inp:1476.2,5 s
+88:out:1438.1,4 i
+92:s:1472.2,3 i
+96:s:1474.2,3 R@10
+
+i3850:mainscreen
+3
+32:win:1522.11,14 R@5
+
+36:opt:34,37 i
+40:ctlchan:44,51 Ci
+5
+44:lst:1534.1,4 Li
+48:tk1:1527.7,10 i
+52:pid:1524.1,4 i
+76:height:1540.2,8 s
+80:width:1541.2,7 s
+n3952:kill
+1
+32:pid:1548.5,8 i
+1
+36:pctl:1550.1,5 R@11
+
+n3968:gettime
+1
+32:win:1555.8,11 R@5
+
+4
+36:s:1561.2,3 s
+40:tm:1564.3,5 R@18
+
+44:fdi:1559.1,4 R@16
+
+48:time:1565.3,7 s
+n4059:addzeros
+1
+32:s:1580.9,10 s
+4
+36:i:1586.6,7 i
+40:rs:1583.1,3 s
+44:isnum:1585.1,6 i
+48:start:1584.1,6 i
+s4098:samedate
+1
+32:win:1600.9,12 R@5
+
+2
+36:s1:1602.1,3 s
+40:s2:1603.1,3 s
+i4126:settime
+0
+2
+32:tm:1611.1,3 R@18
+
+36:fd:1612.1,3 R@11
+
+n4163:getstore
+1
+32:win:1619.9,12 R@5
+
+6
+36:i:1623.6,7 i
+40:fdi:1621.1,4 R@16
+
+44:s:1624.3,4 s
+48:val:1628.4,7 s
+68:n:1627.5,6 i
+72:lst:7,10 Ls
+n4230:contains
+2
+32:s:1639.9,10 s
+36:test:20,24 s
+2
+40:i:1643.6,7 i
+44:num:1641.1,4 i
+i4253:multidownload
+0
+4
+32:s:1658.1,2 s
+36:getpath:1651.1,8 s
+40:k:1659.6,7 i
+44:e:1661.3,4 i
+n4303:dnld
+2
+32:i:1679.5,6 i
+36:path:13,17 s
+8
+40:chanout:1683.1,8 Cs
+44:ctlchan:1681.1,8 Ci
+48:ctlchans:1682.1,9 Cs
+52:s:1688.2,3 s
+56:e:1700.2,3 i
+60:pid:1686.1,4 i
+72:n:1692.6,7 i
+76:lst:8,11 Ls
+i4360:filelenrefresh
+1
+32:filename:1708.15,23 s
+3
+36:fd:1710.1,3 R@11
+
+40:n:1713.3,4 i
+48:dir:6,9 @0
+
+i4382:testfilesize
+1
+32:filename:1721.13,21 s
+4
+36:ctlchan:1728.2,9 Ci
+40:e:1723.1,2 i
+44:e2:1725.2,4 i
+48:e3:1730.2,4 i
+i4414:waittilready
+2
+32:filename:1739.13,21 s
+36:ctlchan:31,38 Ci
+1
+40:pid:1741.1,4 i
+n4438:download
+5
+32:i:1751.9,10 i
+36:path:17,21 s
+40:ctlchan:31,38 Ci
+44:ctlchans:53,61 Cs
+48:chanout:63,70 Cs
+19
+52:savename:1755.1,9 s
+56:filesize:1792.1,9 i
+60:n:1824.1,2 i
+64:read:1808.1,5 i
+68:fd2:1811.1,4 R@11
+
+72:buf:1810.1,4 Ab
+76:fd3:1811.6,9 R@11
+
+80:cached:1793.1,7 i
+84:cachename:1812.1,10 s
+88:fd:1802.1,3 R@11
+
+92:filename:1791.1,9 s
+96:rlen:1829.2,6 i
+100:cachefilename:1795.2,15 s
+104:confirm:1775.1,8 i
+108:n2:1839.3,5 i
+112:written:1837.2,9 i
+116:cancel:1809.1,7 i
+120:p:1788.1,2 i
+124:sout:1834.2,6 s
+n4700:downloadscreen
+4
+32:r:1881.15,16 @3
+
+48:i:24,25 i
+52:ctlchans:32,40 Cs
+56:chanin:42,48 Cs
+15
+60:top:1885.2,5 R@5
+
+64:tmpimg:1896.1,7 R@7
+
+68:text:1923.2,6 s
+72:imgbg:1887.1,6 R@7
+
+76:tk1:1894.6,9 i
+80:w:1902.2,3 i
+84:black:1888.1,6 R@7
+
+88:h:1903.2,3 i
+92:imgfg:1890.1,6 R@7
+
+96:s:1921.2,3 R@10
+
+100:white:1889.1,6 R@7
+
+128:progr:1886.1,6 @3
+
+144:oldcoords:1913.1,10 @3
+
+80:val:1930.4,7 i
+80:s:1919.2,3 i
+n4987:centrewin
+3
+32:top:1944.10,13 R@5
+
+36:r:33,34 @3
+
+52:first:42,47 i
+6
+56:s:1946.1,2 s
+60:tmp:1951.1,4 s
+64:h:1950.1,2 i
+68:px:1956.1,3 i
+72:py:1957.1,3 i
+76:w:1949.1,2 i
+n5042:workingscreen2
+4
+32:r:1975.15,16 @3
+
+48:pid:25,28 i
+52:ctlchan:35,42 Ci
+56:loading:57,64 i
+10
+60:top:1977.2,5 R@5
+
+64:chanin:1978.1,7 Cs
+68:tk1:1980.6,9 i
+72:inp:2019.2,5 s
+76:h:1987.3,4 i
+80:s:2017.2,3 R@10
+
+84:w:1986.3,4 i
+76:h:1998.3,4 i
+84:s:2015.2,3 i
+84:w:1997.3,4 i
+n5226:workingupdate
+2
+32:top:2032.14,17 R@5
+
+36:chanout:37,44 Cs
+4
+40:i:2043.7,8 i
+44:show:2034.1,5 As
+64:hidden:2041.1,7 i
+68:oldcoords:2040.1,10 @3
+
+n5274:resizemain
+2
+32:top:2059.11,14 R@5
+
+36:init:34,38 i
+14
+40:w:2061.4,5 i
+44:h:1,2 i
+48:ws:2084.1,3 i
+52:hs:2095.1,3 i
+56:ht:2077.1,3 i
+60:hmax:2092.1,5 i
+64:hmb:2097.1,4 i
+68:wc2:2101.1,4 i
+72:hc1:2103.1,4 i
+76:wc1:2104.1,4 i
+80:wsb:2081.1,4 i
+108:hf:2079.1,3 i
+112:wf:2080.1,3 i
+116:r:2072.2,3 @3
+
+n5482:growwidth
+2
+32:top:2117.10,13 R@5
+
+36:wc2:33,36 i
+1
+40:ws:2119.1,3 i
+n5590:growheight
+2
+32:top:2146.11,14 R@5
+
+36:hc2:34,37 i
+2
+40:hs:2148.1,3 i
+44:hsc:2156.2,5 i
+n5690:shrinkheight
+2
+32:top:2171.13,16 R@5
+
+36:hc2:36,39 i
+2
+40:hs:2173.1,3 i
+44:hsc:2183.2,5 i
+n5785:shrinkwidth
+2
+32:top:2196.12,15 R@5
+
+36:wc2:35,38 i
+3
+40:ws:2198.1,3 i
+44:wib:2199.1,4 i
+48:diff:2201.2,6 i
+n5932:getcoords
+1
+32:top:2238.10,13 R@5
+
+5
+36:x:2242.1,2 i
+40:y:2243.1,2 i
+44:h:2240.1,2 i
+48:w:2241.1,2 i
+60:r:2244.1,2 @3
+
+@3
+5966:resizeview
+3
+32:top:2267.11,14 R@5
+
+36:wp:34,36 i
+40:hp:37,39 i
+9
+44:h:2270.1,2 i
+48:hc:2275.1,3 i
+52:hpc:2277.1,4 i
+56:w:2269.1,2 i
+60:wc:2274.1,3 i
+64:wpc:2276.1,4 i
+68:hs:2271.1,3 i
+72:ht:2273.1,3 i
+76:ws:2272.1,3 i
+n6045:multiview
+0
+3
+32:k:2294.6,7 i
+36:s:2293.1,2 s
+40:e:2296.3,4 i
+n6076:vw
+1
+32:i:2311.3,4 i
+11
+36:chanout:2325.1,8 Cs
+40:low:2314.1,4 Lt16.4
+0:t0:48.21,37 R@5
+
+4:t1:21,37 s
+8:t2:21,37 Li
+12:t3:21,37 i
+
+44:ctlchan:2323.1,8 Ci
+48:e:2338.2,3 i
+52:chanin:2326.1,7 Cs
+56:ctlchans:2324.1,9 Cs
+60:killed:2331.1,7 i
+64:name:2316.10,14 s
+68:s:2333.2,3 s
+72:tplvl:2316.3,8 R@5
+
+96:pid:2330.1,4 i
+i6160:view
+4
+32:i:2350.5,6 i
+36:ctlchan:13,20 Ci
+40:chanin:35,41 Cs
+44:chanout:43,50 Cs
+32
+48:t:2391.3,4 R@5
+
+52:titlechan:6,15 Cs
+56:savename:2432.6,14 s
+60:ftype:2431.6,11 s
+64:cachepath:2372.1,10 s
+68:img:2371.1,4 R@7
+
+72:s:2482.3,4 s
+76:h:2398.2,3 i
+80:w:2397.2,3 i
+84:cached:2357.1,7 i
+88:filename:2355.1,9 s
+92:filesize:2356.1,9 i
+96:h1:2409.2,4 i
+100:scrolling:2417.2,11 i
+104:tk1:2395.7,10 i
+108:w1:2410.2,4 i
+112:butchan:2392.2,9 Cs
+116:cachefilename:2359.2,15 s
+120:fd:2444.8,10 R@11
+
+124:cancel:12,18 i
+128:ht:2411.2,4 i
+132:titlename:2353.1,10 s
+136:e:2487.4,5 s
+140:inp:2427.3,6 s
+144:s:2423.3,4 i
+148:s:2425.3,4 R@10
+
+176:n:2428.5,6 i
+180:lst:8,11 Ls
+184:newpoint:2467.6,14 @4
+
+192:origin:2418.2,8 @4
+
+216:diff:2470.7,11 @4
+
+144:n2:2446.8,10 i
+n6707:create
+2
+32:filename:2495.7,15 s
+36:co:25,27 @3
+
+2
+56:n:2497.2,3 i
+64:dir:4,7 @0
+
+t8.2
+0:t0:2495.37,48 R@11
+
+4:t1:37,48 i
+51
+1580:abilities:212.0,9 A@15
+
+1588:ablmenu:228.0,7 As
+1624:bufio:16.1,6 mBufio
+6:1.0,57.1 0
+
+1684:context:0:30.0,7 R@12
+
+1688:coords:37.0,6 @3
+
+1704:ctime:2233.7,12 s
+1720:daytime:12.1,8 mDaytime
+4:1.0,53.1 0
+
+1740:display:0:29.0,7 R@6
+
+1752:downloadscr:1870.0,11 As
+1756:draw:24.1,5 mDraw
+9:1.0,298.1 0
+
+1772:filelist:0:717.0,8 As
+1776:fnew:721.0,4 Li
+1796:font:40.0,4 R@14
+
+1816:getvaluescr:488.0,11 As
+1960:hfs:2235.0,3 i
+1964:imgloaded:722.0,9 L@17
+
+1968:inflist:227.0,7 Lt8.2
+0:t0:19,25 s
+4:t1:19,25 s
+
+2028:loadimg:50.0,7 R@7
+
+2032:ltime:2233.0,5 s
+2040:maxsize:45.0,7 @4
+
+2048:menu:1314.0,4 A@13
+
+2076:nilrect:46.0,7 @3
+
+2092:noabilities:211.0,11 i
+2100:nofiles:716.0,7 i
+2104:noselected:720.0,10 i
+2108:nothumbs:724.0,8 i
+2184:processing:36.0,10 i
+2188:procimg:49.0,7 R@7
+
+2208:readdir:14.1,8 mReaddir
+5:1.0,19.1 0
+
+2212:readjpg:0:27.1,8 mReadjpg
+10:1.0,95.1 0
+
+2216:reducew:0:2236.0,7 Ai
+2228:runwithoutcam:47.0,13 i
+2244:scrollx:2056.0,7 i
+2248:scrolly:2057.0,7 i
+2252:selected:719.0,8 Ai
+2256:selectfile:19.1,11 mSelectfile
+7:1.0,13.1 0
+
+2268:snapscr:0:1496.0,7 As
+2276:ssize:44.0,5 i
+2288:str:22.1,4 mString
+8:1.0,39.1 0
+
+2292:sys:0:10.1,4 mSys
+3:4.0,160.1 0
+
+2304:thumbimg:0:718.0,8 AR@7
+
+2308:thumbscr:133.0,8 As
+2312:tibuild:745.0,7 i
+2316:tk:6.1,3 mTk
+1:1.0,25.1 0
+
+2324:tkclient:0:8.1,9 mTkclient
+2:1.0,26.1 0
+
+2344:toplevels:0:48.0,9 Lt16.4
+0:t0:21,37 R@5
+
+4:t1:21,37 s
+8:t2:21,37 Li
+12:t3:21,37 i
+
+2352:usecache:34.0,8 i
+2368:viewscr:2248.0,7 As
+2372:wfs:2234.0,3 i
+2380:working:35.0,7 i
+2384:workingscr2:1962.0,11 As