David Nadlinger
292043a0a7
compiler: Raise AssertionErrors instead of abort()ing on all targets
2020-11-10 20:40:18 +01:00
Sebastien Bourdeauducq
840364cf0c
RELEASE_NOTES: fix typo
2020-10-15 16:57:53 +08:00
Sebastien Bourdeauducq
24259523bb
RELEASE_NOTES: link to issue consistently
2020-10-15 16:51:02 +08:00
Sebastien Bourdeauducq
0a37a3dbf7
RELEASE_NOTES: fix formatting
2020-10-15 16:45:17 +08:00
Sebastien Bourdeauducq
4027735a6d
RELEASE_NOTES: fix formatting
2020-10-15 16:42:43 +08:00
Sebastien Bourdeauducq
4000adfb21
RELEASE_NOTES: update ARTIQ-6 section
2020-10-15 16:42:28 +08:00
Sebastien Bourdeauducq
6baf3b2198
RELEASE_NOTES: fix indentation
2020-10-07 19:24:34 +08:00
Astro
45ae6202c0
build_soc: add identifier_str override option
...
Signed-off-by: Stephan Maka <stephan@spaceboyz.net>
2020-08-31 11:48:58 +08:00
pca006132
26bc5d2405
Updated release notes
2020-08-26 14:17:06 +08:00
David Nadlinger
ae999db8f6
compiler: Revert function call lifetime tracking fix
...
This reverts commits f8d1506922
and cf19c9512d
.
While the commit just fixes a clear typo in the implementation,
it turns out the original algorithm isn't flexible enough to
capture functions that transitively return references to
long-lived data. For instance, while cache_get() is special-cased
in the compiler to be recognised as returning a value of Global()
lifetime, a function just forwarding to it (as seen in the
embedding tests) isn't anymore.
A separate issue is also that this makes implementing functions
that take lists and return references to global data in user code
impossible, which central parts of the Oxford codebase rely on.
Just reverting for now to unblock master; a fix is easily designed,
but needs testing.
2020-07-30 16:40:39 +01:00
David Nadlinger
cf19c9512d
RELEASE_NOTES: Add entry for compiler lifetime tracking fix
...
I contemplated putting this in the "Breaking changes" section,
as it might break user code that has avoided being hit by
memory corruption from the use-after free by chance (even
though it was always an accepts-illegal bug).
2020-07-28 00:54:20 +01:00
Charles Baynham
9b44ec7bc6
parameters: Allow forcing a NumberValue to return a float
...
Signed-off-by: Charles Baynham <charles.baynham@npl.co.uk>
2020-07-27 12:25:51 +08:00
David Nadlinger
3f0cf6e683
runtime: Stop kernel CPU before restarting comms CPU on panic
...
Before, the system would enter a boot loop when a panic occurred
while the kernel CPU was active (and panic_reset == 1), as
kernel::start() for the startup kernel would panic.
2020-07-01 17:29:05 +08:00
David Nadlinger
f36692638c
dashboard: Add "Quick Open" dialog for experiments on global shortcut
...
This is similar to functionality in Sublime Text, VS Code, etc.
2020-06-26 10:11:33 +08:00
David Nadlinger
7955b63b00
master: Always write results to HDF5 once run stage is reached
...
Previously, a significant risk of losing experimental results would
be associated with long-running experiments, as any stray exceptions
while run()ing the experiment – for instance, due to infrequent
network glitches or hardware reliability issue – would cause no
HDF5 file to be written. This was especially troublesome as long
experiments would suffer from a higher probability of unanticipated
failures, while at the same time being more costly to re-take in
terms of wall-clock time.
Unanticipated uncaught exceptions like that were enough of an issue
that several Oxford codebases had come up with their own half-baked
mitigation strategies, from swallowing all exceptions in run() by
convention, to always broadcasting all results to uniquely named
datasets such that the partial results could be recovered and written
to HDF5 by manually run recovery experiments.
This commit addresses the problem at its source, changing the worker
behaviour such that an HDF5 file is always written as soon as run()
starts.
2020-06-18 17:47:26 +01:00
Robert Jördens
9822b88d9b
ad9910: fix asf range ( #1450 )
...
* ad9910: fix asf range
The ASF is a 14-bit word. The highest possible value is 0x3fff, not
0x3ffe. `int(round(1.0 * 0x3fff)) == 0x3fff`.
I don't remember and understand why this was 0x3ffe since the beginning.
0x3fff was already used as a default in `set_mu()`
Signed-off-by: Robert Jördens <rj@quartiq.de>
* RELEASE_NOTES: ad9910 asf scale change
Co-authored-by: David Nadlinger <code@klickverbot.at>
2020-05-29 11:13:26 +02:00
Charles Baynham
5db2afc7a7
dashboard: Release notes for #1453
2020-05-26 18:16:35 +08:00
Marius Weber
2538840756
Coredevice Input Validation ( #1447 )
...
* Input validation and masking of SI -> mu conversions (close #1446 )
Signed-off-by: Marius Weber <marius.weber@physics.ox.ac.uk>
* Update RELEASE_NOTES
Signed-off-by: Marius Weber <marius.weber@physics.ox.ac.uk>
Co-authored-by: Robert Jördens <rj@quartiq.de>
2020-05-17 15:09:11 +02:00
Marius Weber
b3b6cb8efe
ad53xx improvements ( #1445 )
...
* ad53xx: voltage_to_mu() validation & documentation (closes #1443 , #1444 )
The voltage input (float) is checked for validity. If we need more
speed, we may want to check the DAC-code for over/underflow instead.
Signed-off-by: Marius Weber <marius.weber@physics.ox.ac.uk>
* ad53xx documentation: voltage_to_mu is only valid for 16-bit DACs
Signed-off-by: Marius Weber <marius.weber@physics.ox.ac.uk>
* AD53xx: add voltage_to_mu method (closes #1341 )
Signed-off-by: Marius Weber <marius.weber@physics.ox.ac.uk>
* ad53xx: improve voltage_to_mu performance
Interger comparison is faster than floating point math.
Signed-off-by: Marius Weber <marius.weber@physics.ox.ac.uk>
* AD53xx: voltage_to_mu method now uses attribute values
Signed-off-by: Marius Weber <marius.weber@physics.ox.ac.uk>
* Fixup RELEASE_NOTES.rst
Signed-off-by: Marius Weber <marius.weber@physics.ox.ac.uk>
* ad53xx: documentation improvements
voltage_to_mu return value
14-bit DAC support
Signed-off-by: Marius Weber <marius.weber@physics.ox.ac.uk>
2020-05-08 19:23:43 +02:00
Robert Jördens
ea79ba4622
ttl_serdes: detect edges on short pulses
...
Edges on pulses shorter than the RTIO period were missed because the
reference sample and the last sample of the serdes word are the same.
This change enables detection of edges on pulses as short as the
serdes UI (and shorter as long as the pulse still hits a serdes sample
aperture).
In any RTIO period, only the leading event corresponding to the first
edge with slope according to sensitivity is registerd. If the channel is
sensitive to both rising and falling edges and if the pulse is contained
within an RTIO period, or if it is sensitive only to one edge slope and
there are multiple pulses in an RTIO period, only the leading event is
seen. Thus this possibility of lost events is still there. Only the
conditions under which loss occurs are reduced.
In testing with the kasli-ptb6 variant, this also improves resource
usage (a couple hundred LUT) and timing (0.1 ns WNS).
2020-04-13 13:21:03 +02:00
Sébastien Bourdeauducq
b7292f0195
RELEASE_NOTES: fix rst formatting further
2019-11-15 15:59:24 +08:00
Sébastien Bourdeauducq
cf6a7f243f
RELEASE_NOTES: fix rst formatting
2019-11-15 15:56:17 +08:00
Sebastien Bourdeauducq
57979da59a
RELEASE_NOTES: add ARTIQ-6 section
2019-11-15 13:49:54 +08:00
Sebastien Bourdeauducq
eefc6ae80d
update release notes
2019-11-15 13:07:16 +08:00
Sebastien Bourdeauducq
e65303cfe9
RELEASE_NOTES: sipyco
2019-11-11 12:24:50 +08:00
Sebastien Bourdeauducq
c96de7454d
remove artiq_devtool
2019-10-30 21:27:24 +08:00
Sebastien Bourdeauducq
98caaebade
consistent use of 'class name' terminology to select a class within an experiment file. Closes #1348
2019-09-09 15:16:33 +08:00
Astro
8fc5ce902f
firmware: let kasli obtain default hardware_addr from i2c_eeprom
2019-08-17 09:15:26 +08:00
Sebastien Bourdeauducq
1a898c423a
aqctl_corelog: filter log messages. Closes #1316
2019-06-13 18:17:52 +08:00
Sebastien Bourdeauducq
836dc9b927
RELEASE_NOTES: remove '5.0' section ( #1326 )
2019-06-13 18:15:50 +08:00
Sebastien Bourdeauducq
2ada5227f0
update documentation after moving controllers out-of-tree ( #887 )
2019-04-20 00:21:54 +08:00
Chris Ballance
8a5789d616
RELEASE_NOTES: mention methods to set experiment pipeline/priority/flush defaults
2019-03-12 10:54:15 +01:00
Sebastien Bourdeauducq
b219f8b5c7
artiq_flash: autodetect variant
2019-03-08 19:47:24 +08:00
David Nadlinger
bf84226c7d
language: Support appending to datasets
2019-02-09 20:50:38 +00:00
David Nadlinger
ef934ad958
Add test/release notes for command-less controllers
...
See eaa1b44b00
for the actual change.
2019-02-07 21:51:15 +00:00
David Nadlinger
05f6dafb2c
RELEASE_NOTES: Mention new edge counter RTIO PHY
2019-01-15 10:55:07 +00:00
David Nadlinger
6c52359e59
coredevice: Add _mu suffix to AD991x ref_time arguments
...
GitHub: Fixes #1243 .
2019-01-12 17:34:35 +00:00
Drew
f2c1d32e54
frontend: add --version flag to cmd line args ( #1181 )
2019-01-12 09:47:47 +08:00
Sebastien Bourdeauducq
bf50dcf76d
conda: use misoc release
2018-11-20 17:15:53 +08:00
Sebastien Bourdeauducq
8f9858be4c
ad9914: remove automatic continuous phase compensation (like Urukul)
2018-11-19 22:00:20 +08:00
David Nadlinger
abad916383
RELEASE_NOTES: Fix typo
2018-11-03 20:33:19 +08:00
David Nadlinger
8b5df9c151
RELEASE_NOTES: TTL timeline cursor API changes
2018-11-03 20:33:19 +08:00
Sebastien Bourdeauducq
7f11411127
RELEASE_NOTES: 3.7
2018-11-03 20:17:28 +08:00
Sebastien Bourdeauducq
9793632282
enviromnment: rename 'save' in set_dataset to 'archive'. Closes #1171
2018-10-21 12:08:34 +08:00
Sebastien Bourdeauducq
c172ec6de9
artiq_flash: target Kasli by default
2018-08-13 12:13:21 +08:00
Sebastien Bourdeauducq
b10d3ee4b4
make RTIO clock switch optional and simplify
...
Kasli no longer has an internal RTIO clock.
Switching clocks dynamically is no longer supported.
2018-05-18 17:41:34 +08:00
Sebastien Bourdeauducq
3027951dd8
integrate new AD9914 driver
...
moninj, analyzer, docs, examples, tests.
2018-05-13 23:29:35 +08:00
Sebastien Bourdeauducq
28ccca412a
doc: automatic artiq_flash proxy
2018-04-26 10:50:23 +08:00
Sebastien Bourdeauducq
d6a63ad165
RELEASE_NOTES: formatting
2018-03-25 11:19:25 +08:00
Robert Jördens
22557294ac
RELEASE_NOTES: ad53xx, zotino
2018-03-24 15:20:04 +01:00
Sebastien Bourdeauducq
9eb0218389
RELEASE_NOTES: add sections for major releases
2018-03-22 13:26:28 +08:00
Sebastien Bourdeauducq
06f24c6aa2
RELEASE_NOTES: update
2018-03-22 11:46:41 +08:00
Robert Jördens
1329e1a23e
RELEASE_NOTES: add note about spi2 port
2018-03-01 11:19:18 +01:00
Sebastien Bourdeauducq
be704b1533
RELEASE_NOTES: mention short options for artiq_flash
2018-02-22 01:32:12 +08:00
Sebastien Bourdeauducq
3231d8b235
RELEASE_NOTES: 3.3
2018-01-28 00:18:01 +08:00
Sebastien Bourdeauducq
25f3feeda8
refactor targets
2018-01-22 18:25:10 +08:00
Sebastien Bourdeauducq
5a79c9bc09
RELEASE_NOTES: add SED
2018-01-11 11:38:06 +08:00
Sebastien Bourdeauducq
bd47a0371f
RELEASE_NOTES: add 3.2 entry
2017-12-27 10:52:41 +08:00
Sebastien Bourdeauducq
cbd69287a7
artiq_flash: select Sayma standalone variant by default
2017-12-22 16:54:06 +08:00
Sebastien Bourdeauducq
e5d8314aa7
RELEASE_NOTES: 3.1
2017-12-07 13:23:11 +08:00
Chris Ballance
9a1adfe65c
RELEASE_NOTES: master friendly name, dashboard config one-per-master
2017-11-28 08:56:04 +08:00
Sebastien Bourdeauducq
5803ac9998
gateware: add Zotino SPI to NIST CLOCK target
2017-10-23 15:04:30 +08:00
Sebastien Bourdeauducq
84f27330e3
RELEASE_NOTES: 2.5
2017-10-02 12:17:25 +08:00
Sebastien Bourdeauducq
4bafdecd47
RELEASE_NOTES: formatting
2017-09-30 01:10:10 +08:00
Sebastien Bourdeauducq
c7cdd2016a
doc: no more win32 packages
2017-09-30 00:30:22 +08:00
Sebastien Bourdeauducq
e7594b540e
RELEASE_NOTES: add 4.0 section
2017-09-30 00:29:54 +08:00
Sebastien Bourdeauducq
6d72329d45
RELEASE_NOTES: 3.0
2017-09-29 16:37:36 +08:00
Robert Jördens
7085c1cccb
RELEASE_NOTES: clarify time/date
2017-08-03 13:56:15 +02:00
Robert Jördens
dd6c48fed2
Merge branch 'master' into epoch_time
2017-08-03 12:55:01 +02:00
Chris Ballance
cc289dd3a0
master: store run_time and start_time as doubles
2017-08-03 10:41:57 +01:00
Chris Ballance
810bb69989
master: rotate logs at midnight, rather than on log size
2017-08-03 00:31:04 +01:00
Robert Jördens
471605ec1e
pdq: move to https://github.com/m-labs/pdq
2017-07-19 17:35:28 +02:00
Sebastien Bourdeauducq
e3588c9e68
RELEASE_NOTES: 2.4
2017-06-22 00:38:49 +08:00
Robert Jördens
c399bec8da
RELEASE_NOTES: pipistrello discontinued by manufacturer
2017-06-20 06:18:34 +02:00
Sebastien Bourdeauducq
a20f5392a9
add pdq2→pdq rename to release notes
2017-06-03 18:36:41 +08:00
Sebastien Bourdeauducq
cf746cee5b
fix documentation formatting problems
2017-05-22 19:08:20 +08:00
Sebastien Bourdeauducq
e4a631a3d7
scheduler: consider the pipeline flushed if everything has a lower priority than us. Closes #640
2017-05-22 18:43:59 +08:00
Sebastien Bourdeauducq
6bdb76e9ea
core device logging controller WIP ( #691 )
2017-05-22 16:48:00 +08:00
Sebastien Bourdeauducq
5ccca74a3f
fold comm device into core device
2017-05-22 15:45:45 +08:00
Sebastien Bourdeauducq
3ed70afaa1
Use commandline prefix for controllers
...
This keeps them better organized and consistent with the artiq_* naming scheme.
Tab completion from aqctl_ also lists all the controllers installed on a machine.
2017-05-22 00:22:10 +08:00
Sebastien Bourdeauducq
cd757c0f16
generate device database from executable python file
2017-05-18 23:14:55 +08:00
Sebastien Bourdeauducq
c44f2da9fd
RELEASE_NOTES: formatting
2017-05-18 23:14:55 +08:00
Sebastien Bourdeauducq
9ab63920e0
Remove Pipistrello support
...
Closes #658
Closes #381
2017-05-15 17:17:44 +08:00
Sebastien Bourdeauducq
99196986c0
conda: use conda-forge and depend on pyqtgraph 0.10.0 ( #704 )
2017-04-13 00:55:16 +08:00
Sebastien Bourdeauducq
7ec14f26c2
examples: fix after introduction of RangeScan
2017-03-31 16:54:07 +08:00
Chris Ballance
07c71bf020
language,gui: combine LinearScan and RandomScan into RangeScan. Closes #679
2017-03-31 16:48:39 +08:00
Sebastien Bourdeauducq
432c6b99e2
master: still save results when analyze fails. Closes #684
2017-03-27 17:57:02 +08:00
Sebastien Bourdeauducq
b74d6fb9ba
make collision and busy asynchronous errors, and simplify CPU/gateware handshake for output errors and reads
2017-03-27 16:32:23 +08:00
Sebastien Bourdeauducq
7d6ebabc1b
reorganize core device communication code
2017-02-27 18:37:30 +08:00
Sebastien Bourdeauducq
efd8eadf2c
RELEASE_NOTES: 2.2
2017-02-02 18:09:19 +08:00
Sebastien Bourdeauducq
62274a6c0d
RELEASE_NOTES: targets.kc705_dds
2017-01-18 15:28:56 -06:00
Sebastien Bourdeauducq
ac792ec52b
RELEASE_NOTES: 2.1
2016-12-12 13:12:18 +08:00
Robert Jördens
d0a55e5c9b
RELEASE_NOTES: int(a, width=b) removal, use int32/64
2016-11-24 14:32:51 +01:00
Sebastien Bourdeauducq
ef971ef8ba
RELEASE_NOTES: update
2016-11-21 23:51:39 +08:00
Sebastien Bourdeauducq
69d96b0158
master: archive input datasets. Closes #587
2016-10-18 17:11:07 +08:00
Robert Jördens
fdadf550fb
RELEASE_NOTES: 2.0
2016-09-24 18:53:36 +02:00
Robert Jördens
e4d1d0a309
RELEASE_NOTES: 2.0rc2
2016-09-14 21:54:32 -04:00
Sebastien Bourdeauducq
c7c8ad126f
pc_rpc: raise AttributeError immediately for nonexistent RPC methods. Closes #534
2016-09-14 11:22:07 +08:00
Sebastien Bourdeauducq
73bbe2ae66
RELEASE_NOTES: clarify
2016-09-07 20:21:10 +08:00
Sebastien Bourdeauducq
5fbcdacec7
environment: call prepare for children by default, closes #545
2016-09-07 20:20:20 +08:00
Sebastien Bourdeauducq
549e09e06b
applets: simplify command lines
2016-09-04 23:32:09 +08:00
Robert Jördens
9fd9235e44
RELEASE_NOTES: 2.0rc1
2016-09-04 16:34:58 +02:00
Sebastien Bourdeauducq
019fe25594
RELEASE_NOTES: None arguments during experiment examination ( #545 )
2016-09-02 08:20:49 +08:00
Robert Jördens
5b8b6a9e34
RELEASE_NOTES: 1.3
2016-08-11 20:51:08 +02:00
Sebastien Bourdeauducq
a9e944f917
RELEASE_NOTES: add item about numpy ints
2016-08-03 14:17:38 +08:00
Sebastien Bourdeauducq
a7be325ebf
RELEASE_NOTES: inter-experiment seamless handover
2016-07-19 23:21:11 +08:00
Sebastien Bourdeauducq
c0a3996ce8
RELEASE_NOTES: remove outdated item
2016-07-19 23:20:03 +08:00
Robert Jördens
26b5981e2f
RELEASE_NOTES: add gui state file locations
2016-07-18 17:03:57 +02:00
Sebastien Bourdeauducq
40a6e87152
RELEASE_NOTES: 1.2
2016-07-15 11:14:06 +08:00
Sebastien Bourdeauducq
520b269a50
RELEASE_NOTES: artiq_client persist flag
2016-07-07 12:41:09 +08:00
Sebastien Bourdeauducq
18cc7647ea
RELEASE_NOTES: 1.1
2016-06-24 15:11:22 +08:00
Sebastien Bourdeauducq
b9c3edd49f
Revert "coredevice: automatically close on pause"
...
This reverts commit 1f50b3428e
.
2016-06-11 10:12:36 -06:00
Sebastien Bourdeauducq
0faa2d56b4
language/environment: autoset scale for common units. Closes #448
2016-05-28 13:37:18 -05:00
Sebastien Bourdeauducq
3d6f55104b
coredevice/TCA6424A: convert 'outputs' value to little endian. Closes #437
2016-05-22 06:53:18 -07:00
Robert Jördens
f70109f0ef
RELEASE_NOTES: 1.0
2016-05-10 12:53:33 +02:00
Sebastien Bourdeauducq
88740f687d
RELEASE_NOTES: 1.0rc4
2016-05-08 13:08:56 +02:00
Sebastien Bourdeauducq
597d7c389e
dashboard: support reloading arguments from HDF5
2016-05-05 00:51:30 +08:00
Sebastien Bourdeauducq
136dc7039e
language/environment: update kernel_invariants in setattr_argument and setattr_device
2016-05-03 16:27:42 +08:00
Sebastien Bourdeauducq
89f92a6131
RELEASE_NOTES: 1.0rc3
2016-04-18 23:38:34 +08:00
Sebastien Bourdeauducq
caf774579a
environment: refactor
2016-04-16 19:31:07 +08:00
Sebastien Bourdeauducq
dc44aad411
environment: make NumberValue return integers when appropriate. Closes #397
2016-04-16 14:20:45 +08:00
Sebastien Bourdeauducq
d4ba525c9d
gui,browser: save state in home folder
2016-04-15 19:05:12 +08:00
Sebastien Bourdeauducq
848c86e8a4
master: group results by hour, not by minute
2016-04-15 01:13:53 +08:00
Sebastien Bourdeauducq
1f50b3428e
coredevice: automatically close on pause
2016-04-12 15:46:21 +08:00
Sebastien Bourdeauducq
3a0c2066a9
do not open console windows for GUI applications on Windows
2016-04-10 16:28:25 +08:00
Sebastien Bourdeauducq
f530815305
gui/applets: use templates instead of formats
2016-04-06 17:02:26 +08:00
Robert Jördens
e7c58a7d62
RELEASE_NOTES: spelling
2016-04-05 18:09:30 +08:00
Robert Jördens
8af8365440
RELEASE_NOTES: HDF5 encoding
2016-04-05 17:22:16 +08:00
Robert Jördens
fbe89c8f25
RELEASE_NOTES: style
2016-04-05 17:18:15 +08:00
Robert Jördens
4e7b004a4e
worker, hdf5: move datasets to subgroup
2016-04-05 17:17:18 +08:00
Sebastien Bourdeauducq
ed1c368e73
gateware: name targets consistently. Closes #290
2016-04-05 16:07:29 +08:00
Sebastien Bourdeauducq
6304b3f319
RELEASE_NOTES: GUI -> dashboard
2016-04-05 13:59:58 +08:00
Sebastien Bourdeauducq
d2d43b53e1
RELEASE_NOTES: 1.0rc2
2016-03-31 16:05:41 +08:00
Sebastien Bourdeauducq
29a76bb02d
influxdb: simplify and document pattern matching. Closes #166
2016-03-31 00:28:28 +08:00
Sebastien Bourdeauducq
84d50c4caf
environment,worker_db: mutate datasets from experiments via dedicated method instead of Notifier. Closes #345
2016-03-29 16:26:14 +08:00
Robert Jördens
8a9c1d3043
RELEASE_NOTES: pipistrello speed change
2016-03-25 13:24:49 +01:00
Robert Jördens
8f67062543
start release-1 branch
2016-03-19 00:12:20 +01:00
Robert Jördens
7a294a2fd9
release_notes: add comment about sort
2016-03-18 23:49:45 +01:00
Robert Jördens
e2da0ae7fd
release notes formatting
2016-03-18 23:49:45 +01:00
Robert Jördens
33da27a749
experiment/gui: support reverse scan ( closes #246 )
2016-03-17 22:37:17 +01:00
Sebastien Bourdeauducq
f0b0b1bac7
support for multiple DDS buses (untested)
2016-03-09 17:12:50 +08:00
Sebastien Bourdeauducq
71105fd0d7
rtio: collision_error -> collision
2016-03-08 15:38:35 +08:00
Robert Jördens
10d78a5d0b
flash: grow runtime limit to 512 kB
2016-01-30 14:50:15 -07:00
Robert Jördens
3df67526b9
RELEASE_NOTES: update
2016-01-28 21:55:03 -07:00
Robert Jördens
0bbed9bcb6
RELEASING.rst, doc: show release notes in manual
2016-01-25 17:20:15 -07:00