master
bel 2021-09-12 22:02:07 -06:00
commit 66c7b284a1
37 changed files with 5865 additions and 0 deletions

2
copart/.dockerignore Executable file
View File

@ -0,0 +1,2 @@
**/testdata
**/*_test.go

3
copart/.gitattributes vendored Executable file
View File

@ -0,0 +1,3 @@
vendor/**/* -diff
vendor/vendor.json diff
**/testdata/* -diff

7
copart/.gitignore vendored Executable file
View File

@ -0,0 +1,7 @@
server
**.sw*
**.jp*g
**.png
selenium
*.db
vendor

27
copart/Dockerfile Executable file
View File

@ -0,0 +1,27 @@
FROM golang:1.12-alpine as builder
WORKDIR /go/src/local/sandbox/selenium/copart/
COPY main.go .
COPY copart copart
COPY vendor vendor
RUN CGO_ENABLED=0 go build -o /go/bin/copart -a -installsuffix cgo
FROM selenium/standalone-chrome:3.141.59
WORKDIR /work
RUN mkdir -p /mnt && sudo chmod -R 777 /mnt
ENV SCREEN_WIDTH=400
ENV SCREEN_HEIGHT=300
ENV SCREEN_DEPTH=8
ENV NODE_MAX_INSTANCES=500
ENV NODE_MAX_SESSION=5000
ENV NODE_MAX_SESSIONS=5000
COPY --from=builder /go/bin/copart ./copart
COPY public public
COPY ./entrypoint.sh ./entrypoint.sh
CMD []
ENTRYPOINT ["bash", "./entrypoint.sh"]

6
copart/build_dev.sh Executable file
View File

@ -0,0 +1,6 @@
#! /bin/bash
cd "$(dirname "${BASH_SOURCE[0]}")"
CGO_ENABLED=0 go build -o ./selenium/copart -a -installsuffix cgo
cp -r ./public ./selenium/public
cp ./bolt.db ./selenium/sample.db

553
copart/copart/.log Executable file
View File

@ -0,0 +1,553 @@
2019/06/14 13:44:33 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:32.100278808 -0600 MDT m=+549.472307556] == [bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:33.649979402 -0600 MDT m=+551.022008143])
2019/06/14 13:44:34 Blocking empty list...
2019/06/14 13:44:34 true = ([bid:$4,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:33.263653682 -0600 MDT m=+550.635682442] == [bid:$4,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:34.853057112 -0600 MDT m=+552.225085858])
2019/06/14 13:44:35 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:33.649979402 -0600 MDT m=+551.022008143] == [bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:35.209579405 -0600 MDT m=+552.581608152])
2019/06/14 13:44:35 Blocking empty list...
2019/06/14 13:44:36 Blocking empty list...
2019/06/14 13:44:36 true = ([bid:$4,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:34.853057112 -0600 MDT m=+552.225085858] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:36.442979544 -0600 MDT m=+553.815008292])
2019/06/14 13:44:36 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:35.209579405 -0600 MDT m=+552.581608152] == [bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:36.765530586 -0600 MDT m=+554.137559334])
2019/06/14 13:44:37 Blocking empty list...
2019/06/14 13:44:37 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:36.442979544 -0600 MDT m=+553.815008292] == [bid:$4,700 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:37.998799546 -0600 MDT m=+555.370828308])
2019/06/14 13:44:38 Blocking empty list...
2019/06/14 13:44:38 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:36.765530586 -0600 MDT m=+554.137559334] == [bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:38.309365279 -0600 MDT m=+555.681394016])
2019/06/14 13:44:39 Blocking empty list...
2019/06/14 13:44:39 true = ([bid:$4,700 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:37.998799546 -0600 MDT m=+555.370828308] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:39.632325485 -0600 MDT m=+557.004354235])
2019/06/14 13:44:39 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:38.309365279 -0600 MDT m=+555.681394016] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:39.876272196 -0600 MDT m=+557.248300968])
2019/06/14 13:44:40 Blocking empty list...
2019/06/14 13:44:41 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:39.632325485 -0600 MDT m=+557.004354235] == [bid:$4,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:41.210836371 -0600 MDT m=+558.582865114])
2019/06/14 13:44:41 Blocking empty list...
2019/06/14 13:44:41 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:39.876272196 -0600 MDT m=+557.248300968] == [bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:41.434892417 -0600 MDT m=+558.806921162])
2019/06/14 13:44:42 Blocking empty list...
2019/06/14 13:44:42 true = ([bid:$4,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:41.210836371 -0600 MDT m=+558.582865114] == [bid:$4,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:42.800903683 -0600 MDT m=+560.172932419])
2019/06/14 13:44:42 true = ([bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:41.434892417 -0600 MDT m=+558.806921162] == [bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:42.975489596 -0600 MDT m=+560.347518332])
2019/06/14 13:44:43 Blocking empty list...
2019/06/14 13:44:44 Blocking empty list...
2019/06/14 13:44:44 true = ([bid:$4,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:42.800903683 -0600 MDT m=+560.172932419] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:44.383681507 -0600 MDT m=+561.755710284])
2019/06/14 13:44:44 true = ([bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:42.975489596 -0600 MDT m=+560.347518332] == [bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:44.533291771 -0600 MDT m=+561.905320516])
2019/06/14 13:44:45 Blocking empty list...
2019/06/14 13:44:46 Blocking empty list...
2019/06/14 13:44:46 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:44.383681507 -0600 MDT m=+561.755710284] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:46.651673699 -0600 MDT m=+564.023702462])
2019/06/14 13:44:46 true = ([bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:44.533291771 -0600 MDT m=+561.905320516] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:46.71137253 -0600 MDT m=+564.083401292])
2019/06/14 13:44:47 Blocking empty list...
2019/06/14 13:44:48 Blocking empty list...
2019/06/14 13:44:49 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:46.651673699 -0600 MDT m=+564.023702462] == [bid:$5,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:49.04381699 -0600 MDT m=+566.415845754])
2019/06/14 13:44:49 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:46.71137253 -0600 MDT m=+564.083401292] == [bid:$800 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:49.075309089 -0600 MDT m=+566.447337833])
2019/06/14 13:44:49 Blocking empty list...
2019/06/14 13:44:50 Blocking empty list...
2019/06/14 13:44:50 true = ([bid:$5,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:49.04381699 -0600 MDT m=+566.415845754] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:50.626495561 -0600 MDT m=+567.998524315])
2019/06/14 13:44:50 true = ([bid:$800 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:49.075309089 -0600 MDT m=+566.447337833] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:50.637091128 -0600 MDT m=+568.009119874])
2019/06/14 13:44:51 Blocking empty list...
2019/06/14 13:44:52 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:50.637091128 -0600 MDT m=+568.009119874] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:52.201787818 -0600 MDT m=+569.573816555])
2019/06/14 13:44:52 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:50.626495561 -0600 MDT m=+567.998524315] == [bid:$5,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:52.210615356 -0600 MDT m=+569.582644106])
2019/06/14 13:44:52 Blocking empty list...
2019/06/14 13:44:53 Blocking empty list...
2019/06/14 13:44:53 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:52.201787818 -0600 MDT m=+569.573816555] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:53.785375027 -0600 MDT m=+571.157403770])
2019/06/14 13:44:53 true = ([bid:$5,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:52.210615356 -0600 MDT m=+569.582644106] == [bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:53.794478475 -0600 MDT m=+571.166507235])
2019/06/14 13:44:54 Blocking empty list...
2019/06/14 13:44:55 Blocking empty list...
2019/06/14 13:44:55 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:53.785375027 -0600 MDT m=+571.157403770] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:55.341663372 -0600 MDT m=+572.713692125])
2019/06/14 13:44:55 true = ([bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:53.794478475 -0600 MDT m=+571.166507235] == [bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:55.347619414 -0600 MDT m=+572.719648150])
2019/06/14 13:44:56 Blocking empty list...
2019/06/14 13:44:56 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:55.341663372 -0600 MDT m=+572.713692125] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:56.887273765 -0600 MDT m=+574.259302513])
2019/06/14 13:44:56 true = ([bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:55.347619414 -0600 MDT m=+572.719648150] == [bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:56.894005011 -0600 MDT m=+574.266033759])
2019/06/14 13:44:57 Blocking empty list...
2019/06/14 13:44:58 Blocking empty list...
2019/06/14 13:44:58 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:56.887273765 -0600 MDT m=+574.259302513] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:58.467862845 -0600 MDT m=+575.839891596])
2019/06/14 13:44:58 true = ([bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:56.894005011 -0600 MDT m=+574.266033759] == [bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:58.467875669 -0600 MDT m=+575.839904419])
2019/06/14 13:44:59 Blocking empty list...
2019/06/14 13:45:00 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:58.467862845 -0600 MDT m=+575.839891596] == [bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:00.029947727 -0600 MDT m=+577.401976473])
2019/06/14 13:45:00 true = ([bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:58.467875669 -0600 MDT m=+575.839904419] == [bid:$6,000 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:00.033625382 -0600 MDT m=+577.405654118])
2019/06/14 13:45:00 Blocking empty list...
2019/06/14 13:45:01 Blocking empty list...
2019/06/14 13:45:01 true = ([bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:00.029947727 -0600 MDT m=+577.401976473] == [bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:01.617679613 -0600 MDT m=+578.989708348])
2019/06/14 13:45:01 true = ([bid:$6,000 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:00.033625382 -0600 MDT m=+577.405654118] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:01.626412103 -0600 MDT m=+578.998440838])
2019/06/14 13:45:02 Blocking empty list...
2019/06/14 13:45:03 true = ([bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:01.617679613 -0600 MDT m=+578.989708348] == [bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:03.182911975 -0600 MDT m=+580.554940742])
2019/06/14 13:45:03 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:01.626412103 -0600 MDT m=+578.998440838] == [bid:$6,100 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:03.199787677 -0600 MDT m=+580.571816439])
2019/06/14 13:45:03 Blocking empty list...
2019/06/14 13:45:04 Blocking empty list...
2019/06/14 13:45:04 true = ([bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:03.182911975 -0600 MDT m=+580.554940742] == [bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:04.746031495 -0600 MDT m=+582.118060242])
2019/06/14 13:45:04 true = ([bid:$6,100 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:03.199787677 -0600 MDT m=+580.571816439] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:04.767179705 -0600 MDT m=+582.139208448])
2019/06/14 13:45:05 Blocking empty list...
2019/06/14 13:45:06 Blocking empty list...
2019/06/14 13:45:06 true = ([bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:04.746031495 -0600 MDT m=+582.118060242] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:06.310545892 -0600 MDT m=+583.682574636])
2019/06/14 13:45:06 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:04.767179705 -0600 MDT m=+582.139208448] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:06.335166826 -0600 MDT m=+583.707195567])
2019/06/14 13:45:07 Blocking empty list...
2019/06/14 13:45:07 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:06.310545892 -0600 MDT m=+583.682574636] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:07.883620143 -0600 MDT m=+585.255648901])
2019/06/14 13:45:07 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:06.335166826 -0600 MDT m=+583.707195567] == [bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:07.907584605 -0600 MDT m=+585.279613340])
2019/06/14 13:45:08 Blocking empty list...
2019/06/14 13:45:09 Blocking empty list...
2019/06/14 13:45:09 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:07.883620143 -0600 MDT m=+585.255648901] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:09.45518732 -0600 MDT m=+586.827216080])
2019/06/14 13:45:09 true = ([bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:07.907584605 -0600 MDT m=+585.279613340] == [bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:09.4663536 -0600 MDT m=+586.838382341])
2019/06/14 13:45:10 Blocking empty list...
2019/06/14 13:45:11 Blocking empty list...
2019/06/14 13:45:11 true = ([bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:09.4663536 -0600 MDT m=+586.838382341] == [bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:11.714388541 -0600 MDT m=+589.086417329])
2019/06/14 13:45:11 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:09.45518732 -0600 MDT m=+586.827216080] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:11.744893291 -0600 MDT m=+589.116922050])
2019/06/14 13:45:12 Blocking empty list...
2019/06/14 13:45:13 Blocking empty list...
2019/06/14 13:45:13 true = ([bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:11.714388541 -0600 MDT m=+589.086417329] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:13.45008916 -0600 MDT m=+590.822117920])
2019/06/14 13:45:13 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:11.744893291 -0600 MDT m=+589.116922050] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:13.467717253 -0600 MDT m=+590.839745995])
2019/06/14 13:45:14 Blocking empty list...
2019/06/14 13:45:15 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:13.45008916 -0600 MDT m=+590.822117920] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:15.028250727 -0600 MDT m=+592.400279501])
2019/06/14 13:45:15 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:13.467717253 -0600 MDT m=+590.839745995] == [bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:15.029365652 -0600 MDT m=+592.401394387])
2019/06/14 13:45:15 Blocking empty list...
2019/06/14 13:45:16 Blocking empty list...
2019/06/14 13:45:16 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:15.028250727 -0600 MDT m=+592.400279501] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:16.574778848 -0600 MDT m=+593.946807598])
2019/06/14 13:45:16 true = ([bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:15.029365652 -0600 MDT m=+592.401394387] == [bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:16.581757004 -0600 MDT m=+593.953785791])
2019/06/14 13:45:17 Blocking empty list...
2019/06/14 13:45:18 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:16.574778848 -0600 MDT m=+593.946807598] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:18.148148234 -0600 MDT m=+595.520177008])
2019/06/14 13:45:18 true = ([bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:16.581757004 -0600 MDT m=+593.953785791] == [bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:18.157707579 -0600 MDT m=+595.529736321])
2019/06/14 13:45:18 Blocking empty list...
2019/06/14 13:45:19 Blocking empty list...
2019/06/14 13:45:19 true = ([bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:18.157707579 -0600 MDT m=+595.529736321] == [bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:19.727213553 -0600 MDT m=+597.099242300])
2019/06/14 13:45:19 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:18.148148234 -0600 MDT m=+595.520177008] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:19.732192656 -0600 MDT m=+597.104221399])
2019/06/14 13:45:20 Blocking empty list...
2019/06/14 13:45:21 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:19.732192656 -0600 MDT m=+597.104221399] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:21.300980036 -0600 MDT m=+598.673008782])
2019/06/14 13:45:21 Blocking empty list...
2019/06/14 13:45:21 true = ([bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:19.727213553 -0600 MDT m=+597.099242300] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:21.307722352 -0600 MDT m=+598.679751090])
2019/06/14 13:45:22 Blocking empty list...
2019/06/14 13:45:23 Blocking empty list...
2019/06/14 13:45:23 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:21.300980036 -0600 MDT m=+598.673008782] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:23.379902263 -0600 MDT m=+600.751931031])
2019/06/14 13:45:23 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:21.307722352 -0600 MDT m=+598.679751090] == [bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:23.392826934 -0600 MDT m=+600.764855701])
2019/06/14 13:45:24 Blocking empty list...
2019/06/14 13:45:25 Blocking empty list...
2019/06/14 13:45:25 true = ([bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:23.392826934 -0600 MDT m=+600.764855701] == [bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:25.71438718 -0600 MDT m=+603.086415961])
2019/06/14 13:45:25 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:23.379902263 -0600 MDT m=+600.751931031] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:25.759869463 -0600 MDT m=+603.131898219])
2019/06/14 13:45:26 Blocking empty list...
2019/06/14 13:45:27 Blocking empty list...
2019/06/14 13:45:27 true = ([bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:25.71438718 -0600 MDT m=+603.086415961] == [bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:27.748442664 -0600 MDT m=+605.120471419])
2019/06/14 13:45:27 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:25.759869463 -0600 MDT m=+603.131898219] == [bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:27.762685583 -0600 MDT m=+605.134714377])
2019/06/14 13:45:28 Blocking empty list...
2019/06/14 13:45:29 Blocking empty list...
2019/06/14 13:45:29 true = ([bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:27.762685583 -0600 MDT m=+605.134714377] == [bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:29.693781661 -0600 MDT m=+607.065810420])
2019/06/14 13:45:29 true = ([bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:27.748442664 -0600 MDT m=+605.120471419] == [bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:29.7037451 -0600 MDT m=+607.075773851])
2019/06/14 13:45:30 Blocking empty list...
2019/06/14 13:45:31 Blocking empty list...
2019/06/14 13:45:31 true = ([bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:29.7037451 -0600 MDT m=+607.075773851] == [bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:31.581812917 -0600 MDT m=+608.953841681])
2019/06/14 13:45:31 true = ([bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:29.693781661 -0600 MDT m=+607.065810420] == [bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:31.603363109 -0600 MDT m=+608.975391926])
2019/06/14 13:45:32 Blocking empty list...
2019/06/14 13:45:33 true = ([bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:31.581812917 -0600 MDT m=+608.953841681] == [bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:33.129003954 -0600 MDT m=+610.501032706])
2019/06/14 13:45:33 true = ([bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:31.603363109 -0600 MDT m=+608.975391926] == [bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:33.154188308 -0600 MDT m=+610.526217074])
2019/06/14 13:45:33 Blocking empty list...
2019/06/14 13:45:34 Blocking empty list...
2019/06/14 13:45:34 true = ([bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:33.129003954 -0600 MDT m=+610.501032706] == [bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:34.698293537 -0600 MDT m=+612.070322308])
2019/06/14 13:45:34 true = ([bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:33.154188308 -0600 MDT m=+610.526217074] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:34.740571037 -0600 MDT m=+612.112599799])
2019/06/14 13:45:35 Blocking empty list...
2019/06/14 13:45:36 Blocking empty list...
2019/06/14 13:45:36 true = ([bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:34.698293537 -0600 MDT m=+612.070322308] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:36.670375341 -0600 MDT m=+614.042404108])
2019/06/14 13:45:36 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:34.740571037 -0600 MDT m=+612.112599799] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:36.714017157 -0600 MDT m=+614.086045966])
2019/06/14 13:45:37 Blocking empty list...
2019/06/14 13:45:38 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:36.670375341 -0600 MDT m=+614.042404108] == [bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:38.247777676 -0600 MDT m=+615.619806410])
2019/06/14 13:45:38 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:36.714017157 -0600 MDT m=+614.086045966] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:38.270868543 -0600 MDT m=+615.642897295])
2019/06/14 13:45:38 Blocking empty list...
2019/06/14 13:45:39 Blocking empty list...
2019/06/14 13:45:39 true = ([bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:38.247777676 -0600 MDT m=+615.619806410] == [bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:39.820522402 -0600 MDT m=+617.192551139])
2019/06/14 13:45:39 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:38.270868543 -0600 MDT m=+615.642897295] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:39.840696355 -0600 MDT m=+617.212725106])
2019/06/14 13:45:40 Blocking empty list...
2019/06/14 13:45:41 Blocking empty list...
2019/06/14 13:45:41 true = ([bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:39.820522402 -0600 MDT m=+617.192551139] == [bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:41.865548025 -0600 MDT m=+619.237576784])
2019/06/14 13:45:41 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:39.840696355 -0600 MDT m=+617.212725106] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:41.87975323 -0600 MDT m=+619.251782000])
2019/06/14 13:45:42 Blocking empty list...
2019/06/14 13:45:43 Blocking empty list...
2019/06/14 13:45:44 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:41.87975323 -0600 MDT m=+619.251782000] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:44.12899537 -0600 MDT m=+621.501024149])
2019/06/14 13:45:44 true = ([bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:41.865548025 -0600 MDT m=+619.237576784] == [bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:44.160166521 -0600 MDT m=+621.532195282])
2019/06/14 13:45:44 Blocking empty list...
2019/06/14 13:45:45 Blocking empty list...
2019/06/14 13:45:45 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:44.12899537 -0600 MDT m=+621.501024149] == [bid:Next Item on title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:45.698231339 -0600 MDT m=+623.070260115])
2019/06/14 13:45:45 true = ([bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:44.160166521 -0600 MDT m=+621.532195282] == [bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:45.730591096 -0600 MDT m=+623.102619832])
2019/06/14 13:45:46 Blocking empty list...
2019/06/14 13:45:47 true = ([bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:45.730591096 -0600 MDT m=+623.102619832] == [bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:47.300433357 -0600 MDT m=+624.672462125])
2019/06/14 13:45:47 Blocking empty list...
2019/06/14 13:45:47 DETAIL 8 6
2019/06/14 13:45:47 false = ([bid:Next Item on title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:45.698231339 -0600 MDT m=+623.070260115] == [bid:$950 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:47.326540361 -0600 MDT m=+624.698569101])
2019/06/14 13:45:47 DETAIL 8 6
2019/06/14 13:45:47 TOP
2019/06/14 13:45:47 C [bid:$950 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:47.970680447 -0600 MDT m=+625.342709201]
2019/06/14 13:45:48 Blocking empty list...
2019/06/14 13:45:48 true = ([bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:47.300433357 -0600 MDT m=+624.672462125] == [bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:48.875565095 -0600 MDT m=+626.247593841])
2019/06/14 13:45:49 Blocking empty list...
2019/06/14 13:45:49 true = ([bid:$950 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:47.970680447 -0600 MDT m=+625.342709201] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:49.530146108 -0600 MDT m=+626.902174848])
2019/06/14 13:45:50 Blocking empty list...
2019/06/14 13:45:50 true = ([bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:48.875565095 -0600 MDT m=+626.247593841] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:50.441141654 -0600 MDT m=+627.813170424])
2019/06/14 13:45:51 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:49.530146108 -0600 MDT m=+626.902174848] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:51.092703578 -0600 MDT m=+628.464732312])
2019/06/14 13:45:51 Blocking empty list...
2019/06/14 13:45:52 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:50.441141654 -0600 MDT m=+627.813170424] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:52.014105523 -0600 MDT m=+629.386134268])
2019/06/14 13:45:52 Blocking empty list...
2019/06/14 13:45:52 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:51.092703578 -0600 MDT m=+628.464732312] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:52.666563883 -0600 MDT m=+630.038592628])
2019/06/14 13:45:53 Blocking empty list...
2019/06/14 13:45:53 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:52.014105523 -0600 MDT m=+629.386134268] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:53.557551959 -0600 MDT m=+630.929580695])
2019/06/14 13:45:54 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:52.666563883 -0600 MDT m=+630.038592628] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:54.239611178 -0600 MDT m=+631.611639922])
2019/06/14 13:45:54 Blocking empty list...
2019/06/14 13:45:55 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:53.557551959 -0600 MDT m=+630.929580695] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:55.114075035 -0600 MDT m=+632.486103788])
2019/06/14 13:45:55 Blocking empty list...
2019/06/14 13:45:55 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:54.239611178 -0600 MDT m=+631.611639922] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:55.804221548 -0600 MDT m=+633.176250310])
2019/06/14 13:45:56 Blocking empty list...
2019/06/14 13:45:56 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:55.114075035 -0600 MDT m=+632.486103788] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:56.706568281 -0600 MDT m=+634.078597042])
2019/06/14 13:45:57 Blocking empty list...
2019/06/14 13:45:57 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:55.804221548 -0600 MDT m=+633.176250310] == [bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:57.361048223 -0600 MDT m=+634.733076974])
2019/06/14 13:45:58 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:56.706568281 -0600 MDT m=+634.078597042] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:58.261410026 -0600 MDT m=+635.633438778])
2019/06/14 13:45:58 Blocking empty list...
2019/06/14 13:45:58 true = ([bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:57.361048223 -0600 MDT m=+634.733076974] == [bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:58.912388766 -0600 MDT m=+636.284417514])
2019/06/14 13:45:59 Blocking empty list...
2019/06/14 13:45:59 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:58.261410026 -0600 MDT m=+635.633438778] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:59.82282752 -0600 MDT m=+637.194856272])
2019/06/14 13:46:00 Blocking empty list...
2019/06/14 13:46:00 true = ([bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:58.912388766 -0600 MDT m=+636.284417514] == [bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:00.465703716 -0600 MDT m=+637.837732454])
2019/06/14 13:46:01 Blocking empty list...
2019/06/14 13:46:01 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:59.82282752 -0600 MDT m=+637.194856272] == [bid:Bonus title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:01.397741474 -0600 MDT m=+638.769770221])
2019/06/14 13:46:02 true = ([bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:00.465703716 -0600 MDT m=+637.837732454] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:02.023624181 -0600 MDT m=+639.395652927])
2019/06/14 13:46:02 Blocking empty list...
2019/06/14 13:46:03 true = ([bid:Bonus title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:01.397741474 -0600 MDT m=+638.769770221] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:03.006045999 -0600 MDT m=+640.378074735])
2019/06/14 13:46:03 Blocking empty list...
2019/06/14 13:46:03 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:02.023624181 -0600 MDT m=+639.395652927] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:03.58135933 -0600 MDT m=+640.953388064])
2019/06/14 13:46:04 Blocking empty list...
2019/06/14 13:46:04 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:03.006045999 -0600 MDT m=+640.378074735] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:04.578964932 -0600 MDT m=+641.950993680])
2019/06/14 13:46:05 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:03.58135933 -0600 MDT m=+640.953388064] == [bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:05.140126563 -0600 MDT m=+642.512155309])
2019/06/14 13:46:05 Blocking empty list...
2019/06/14 13:46:06 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:04.578964932 -0600 MDT m=+641.950993680] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:06.178025052 -0600 MDT m=+643.550053786])
2019/06/14 13:46:06 Blocking empty list...
2019/06/14 13:46:06 true = ([bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:05.140126563 -0600 MDT m=+642.512155309] == [bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:06.697389814 -0600 MDT m=+644.069418561])
2019/06/14 13:46:07 Blocking empty list...
2019/06/14 13:46:07 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:06.178025052 -0600 MDT m=+643.550053786] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:07.780702876 -0600 MDT m=+645.152731610])
2019/06/14 13:46:08 true = ([bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:06.697389814 -0600 MDT m=+644.069418561] == [bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:08.248101491 -0600 MDT m=+645.620130237])
2019/06/14 13:46:08 Blocking empty list...
2019/06/14 13:46:09 Blocking empty list...
2019/06/14 13:46:09 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:07.780702876 -0600 MDT m=+645.152731610] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:09.386820437 -0600 MDT m=+646.758849193])
2019/06/14 13:46:09 true = ([bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:08.248101491 -0600 MDT m=+645.620130237] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:09.818455714 -0600 MDT m=+647.190484458])
2019/06/14 13:46:10 Blocking empty list...
2019/06/14 13:46:10 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:09.386820437 -0600 MDT m=+646.758849193] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:10.971483398 -0600 MDT m=+648.343512143])
2019/06/14 13:46:11 Blocking empty list...
2019/06/14 13:46:11 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:09.818455714 -0600 MDT m=+647.190484458] == [bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:11.378239494 -0600 MDT m=+648.750268245])
2019/06/14 13:46:12 Blocking empty list...
2019/06/14 13:46:12 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:10.971483398 -0600 MDT m=+648.343512143] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:12.537834103 -0600 MDT m=+649.909862840])
2019/06/14 13:46:12 true = ([bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:11.378239494 -0600 MDT m=+648.750268245] == [bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:12.921818006 -0600 MDT m=+650.293846777])
2019/06/14 13:46:13 Blocking empty list...
2019/06/14 13:46:14 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:12.537834103 -0600 MDT m=+649.909862840] == [bid:Next Item on title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:14.115315236 -0600 MDT m=+651.487343970])
2019/06/14 13:46:14 Blocking empty list...
2019/06/14 13:46:14 true = ([bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:12.921818006 -0600 MDT m=+650.293846777] == [bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:14.471067849 -0600 MDT m=+651.843096596])
2019/06/14 13:46:15 Blocking empty list...
2019/06/14 13:46:15 DETAIL FRONT END REAR END
2019/06/14 13:46:15 false = ([bid:Next Item on title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:14.115315236 -0600 MDT m=+651.487343970] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:15.765589239 -0600 MDT m=+653.137617986])
2019/06/14 13:46:15 DETAIL SIDE N/A
2019/06/14 13:46:15 TOP
2019/06/14 13:46:16 true = ([bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:14.471067849 -0600 MDT m=+651.843096596] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:16.02007468 -0600 MDT m=+653.392103448])
2019/06/14 13:46:16 Blocking empty list...
2019/06/14 13:46:16 C [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:16.390025771 -0600 MDT m=+653.762054512]
2019/06/14 13:46:17 Blocking empty list...
2019/06/14 13:46:17 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:16.02007468 -0600 MDT m=+653.392103448] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:17.651753355 -0600 MDT m=+655.023782106])
2019/06/14 13:46:17 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:16.390025771 -0600 MDT m=+653.762054512] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:17.945675122 -0600 MDT m=+655.317703865])
2019/06/14 13:46:18 Blocking empty list...
2019/06/14 13:46:19 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:17.651753355 -0600 MDT m=+655.023782106] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:19.255879024 -0600 MDT m=+656.627907787])
2019/06/14 13:46:19 Blocking empty list...
2019/06/14 13:46:19 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:17.945675122 -0600 MDT m=+655.317703865] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:19.503173988 -0600 MDT m=+656.875202744])
2019/06/14 13:46:20 Blocking empty list...
2019/06/14 13:46:20 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:19.255879024 -0600 MDT m=+656.627907787] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:20.879860426 -0600 MDT m=+658.251889173])
2019/06/14 13:46:21 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:19.503173988 -0600 MDT m=+656.875202744] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:21.074419533 -0600 MDT m=+658.446448280])
2019/06/14 13:46:21 Blocking empty list...
2019/06/14 13:46:22 Blocking empty list...
2019/06/14 13:46:22 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:20.879860426 -0600 MDT m=+658.251889173] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:22.472975892 -0600 MDT m=+659.845004657])
2019/06/14 13:46:22 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:21.074419533 -0600 MDT m=+658.446448280] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:22.638350764 -0600 MDT m=+660.010379508])
2019/06/14 13:46:23 Blocking empty list...
2019/06/14 13:46:24 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:22.472975892 -0600 MDT m=+659.845004657] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:24.039286396 -0600 MDT m=+661.411315153])
2019/06/14 13:46:24 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:22.638350764 -0600 MDT m=+660.010379508] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:24.210076006 -0600 MDT m=+661.582104749])
2019/06/14 13:46:24 Blocking empty list...
2019/06/14 13:46:25 Blocking empty list...
2019/06/14 13:46:25 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:24.039286396 -0600 MDT m=+661.411315153] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:25.623141495 -0600 MDT m=+662.995170232])
2019/06/14 13:46:25 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:24.210076006 -0600 MDT m=+661.582104749] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:25.77105872 -0600 MDT m=+663.143087460])
2019/06/14 13:46:26 Blocking empty list...
2019/06/14 13:46:27 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:25.623141495 -0600 MDT m=+662.995170232] == [bid:Bonus title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:27.217110188 -0600 MDT m=+664.589138960])
2019/06/14 13:46:27 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:25.77105872 -0600 MDT m=+663.143087460] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:27.316556146 -0600 MDT m=+664.688584889])
2019/06/14 13:46:27 Blocking empty list...
2019/06/14 13:46:28 Blocking empty list...
2019/06/14 13:46:28 true = ([bid:Bonus title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:27.217110188 -0600 MDT m=+664.589138960] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:28.804421116 -0600 MDT m=+666.176449864])
2019/06/14 13:46:28 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:27.316556146 -0600 MDT m=+664.688584889] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:28.874885439 -0600 MDT m=+666.246914183])
2019/06/14 13:46:29 Blocking empty list...
2019/06/14 13:46:30 Blocking empty list...
2019/06/14 13:46:30 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:28.804421116 -0600 MDT m=+666.176449864] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:30.378302778 -0600 MDT m=+667.750331525])
2019/06/14 13:46:30 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:28.874885439 -0600 MDT m=+666.246914183] == [bid:Bonus title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:30.430949455 -0600 MDT m=+667.802978198])
2019/06/14 13:46:31 Blocking empty list...
2019/06/14 13:46:31 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:30.378302778 -0600 MDT m=+667.750331525] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:31.953632384 -0600 MDT m=+669.325661131])
2019/06/14 13:46:31 true = ([bid:Bonus title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:30.430949455 -0600 MDT m=+667.802978198] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:31.996367484 -0600 MDT m=+669.368396221])
2019/06/14 13:46:32 Blocking empty list...
2019/06/14 13:46:33 Blocking empty list...
2019/06/14 13:46:33 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:31.953632384 -0600 MDT m=+669.325661131] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:33.521086939 -0600 MDT m=+670.893115677])
2019/06/14 13:46:33 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:31.996367484 -0600 MDT m=+669.368396221] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:33.571119989 -0600 MDT m=+670.943148735])
2019/06/14 13:46:34 Blocking empty list...
2019/06/14 13:46:35 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:33.521086939 -0600 MDT m=+670.893115677] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:35.111873847 -0600 MDT m=+672.483902604])
2019/06/14 13:46:35 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:33.571119989 -0600 MDT m=+670.943148735] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:35.140044919 -0600 MDT m=+672.512073682])
2019/06/14 13:46:35 Blocking empty list...
2019/06/14 13:46:36 Blocking empty list...
2019/06/14 13:46:36 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:35.111873847 -0600 MDT m=+672.483902604] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:36.691188678 -0600 MDT m=+674.063217431])
2019/06/14 13:46:36 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:35.140044919 -0600 MDT m=+672.512073682] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:36.72922032 -0600 MDT m=+674.101249074])
2019/06/14 13:46:37 Blocking empty list...
2019/06/14 13:46:38 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:36.691188678 -0600 MDT m=+674.063217431] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:38.271432569 -0600 MDT m=+675.643461305])
2019/06/14 13:46:38 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:36.72922032 -0600 MDT m=+674.101249074] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:38.298540491 -0600 MDT m=+675.670569229])
2019/06/14 13:46:38 Blocking empty list...
2019/06/14 13:46:39 Blocking empty list...
2019/06/14 13:46:39 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:38.271432569 -0600 MDT m=+675.643461305] == [bid:Next Item on title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:39.854917796 -0600 MDT m=+677.226946542])
2019/06/14 13:46:39 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:38.298540491 -0600 MDT m=+675.670569229] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:39.86269596 -0600 MDT m=+677.234724702])
2019/06/14 13:46:40 Blocking empty list...
2019/06/14 13:46:41 Blocking empty list...
2019/06/14 13:46:41 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:39.86269596 -0600 MDT m=+677.234724702] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:41.421462137 -0600 MDT m=+678.793490880])
2019/06/14 13:46:41 DETAIL 2.0L 4 4.8L 8
2019/06/14 13:46:41 false = ([bid:Next Item on title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:39.854917796 -0600 MDT m=+677.226946542] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:41.444806466 -0600 MDT m=+678.816835202])
2019/06/14 13:46:41 DETAIL $2,316 $5,782
2019/06/14 13:46:41 TOP
2019/06/14 13:46:42 C [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:42.058019248 -0600 MDT m=+679.430047994]
2019/06/14 13:46:42 Blocking empty list...
2019/06/14 13:46:42 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:41.421462137 -0600 MDT m=+678.793490880] == [bid:Sold on title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:42.978837839 -0600 MDT m=+680.350866588])
2019/06/14 13:46:43 Blocking empty list...
2019/06/14 13:46:43 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:42.058019248 -0600 MDT m=+679.430047994] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:43.652922025 -0600 MDT m=+681.024950771])
2019/06/14 13:46:44 stale element reference: stale element reference: element is not attached to the page document
(Session info: chrome=75.0.3770.80)
2019/06/14 13:46:44 Blocking empty list...
2019/06/14 13:46:45 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:43.652922025 -0600 MDT m=+681.024950771] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:45.212745952 -0600 MDT m=+682.584774692])
2019/06/14 13:46:45 Blocking empty list...
2019/06/14 13:46:46 Blocking empty list...
2019/06/14 13:46:46 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:45.212745952 -0600 MDT m=+682.584774692] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:46.779907351 -0600 MDT m=+684.151936105])
2019/06/14 13:46:47 Blocking empty list...
2019/06/14 13:46:48 Blocking empty list...
2019/06/14 13:46:48 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:46.779907351 -0600 MDT m=+684.151936105] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:48.37493185 -0600 MDT m=+685.746960593])
2019/06/14 13:46:49 Blocking empty list...
2019/06/14 13:46:50 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:48.37493185 -0600 MDT m=+685.746960593] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:50.006089325 -0600 MDT m=+687.378118062])
2019/06/14 13:46:50 Blocking empty list...
2019/06/14 13:46:51 Blocking empty list...
2019/06/14 13:46:51 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:50.006089325 -0600 MDT m=+687.378118062] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:51.571964801 -0600 MDT m=+688.943993546])
2019/06/14 13:46:52 Blocking empty list...
2019/06/14 13:46:53 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:51.571964801 -0600 MDT m=+688.943993546] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:53.168928243 -0600 MDT m=+690.540956989])
2019/06/14 13:46:53 Blocking empty list...
2019/06/14 13:46:54 Blocking empty list...
2019/06/14 13:46:54 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:53.168928243 -0600 MDT m=+690.540956989] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:54.746981537 -0600 MDT m=+692.119010284])
2019/06/14 13:46:55 Blocking empty list...
2019/06/14 13:46:56 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:54.746981537 -0600 MDT m=+692.119010284] == [bid:Sold! title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:56.312143023 -0600 MDT m=+693.684171758])
2019/06/14 13:46:56 Blocking empty list...
2019/06/14 13:46:57 Blocking empty list...
2019/06/14 13:46:57 DETAIL 107,847 - Actual 157,979 - Exempt
2019/06/14 13:46:57 false = ([bid:Sold! title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:56.312143023 -0600 MDT m=+693.684171758] == [bid:Next Item on title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:57.92401858 -0600 MDT m=+695.296047330])
2019/06/14 13:46:57 DETAIL 107,847 - Actual 157,979 - Exempt
2019/06/14 13:46:58 TOP
2019/06/14 13:46:58 Blocking empty list...
2019/06/14 13:46:58 C [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:46:58.636284949 -0600 MDT m=+696.008313695]
2019/06/14 13:46:59 Blocking empty list...
2019/06/14 13:47:00 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:46:58.636284949 -0600 MDT m=+696.008313695] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:00.228379187 -0600 MDT m=+697.600407934])
2019/06/14 13:47:00 Blocking empty list...
2019/06/14 13:47:01 Blocking empty list...
2019/06/14 13:47:01 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:00.228379187 -0600 MDT m=+697.600407934] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:01.828705581 -0600 MDT m=+699.200734322])
2019/06/14 13:47:02 Blocking empty list...
2019/06/14 13:47:03 Blocking empty list...
2019/06/14 13:47:03 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:01.828705581 -0600 MDT m=+699.200734322] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:03.404720678 -0600 MDT m=+700.776749424])
2019/06/14 13:47:04 Blocking empty list...
2019/06/14 13:47:04 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:03.404720678 -0600 MDT m=+700.776749424] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:04.995027354 -0600 MDT m=+702.367056092])
2019/06/14 13:47:05 Blocking empty list...
2019/06/14 13:47:06 Blocking empty list...
2019/06/14 13:47:06 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:04.995027354 -0600 MDT m=+702.367056092] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:06.553799294 -0600 MDT m=+703.925828028])
2019/06/14 13:47:07 Blocking empty list...
2019/06/14 13:47:08 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:06.553799294 -0600 MDT m=+703.925828028] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:08.135736901 -0600 MDT m=+705.507765668])
2019/06/14 13:47:08 Blocking empty list...
2019/06/14 13:47:09 Blocking empty list...
2019/06/14 13:47:09 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:08.135736901 -0600 MDT m=+705.507765668] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:09.740053433 -0600 MDT m=+707.112082171])
2019/06/14 13:47:10 Blocking empty list...
2019/06/14 13:47:11 Blocking empty list...
2019/06/14 13:47:11 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:09.740053433 -0600 MDT m=+707.112082171] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:11.355342645 -0600 MDT m=+708.727371404])
2019/06/14 13:47:12 Blocking empty list...
2019/06/14 13:47:12 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:11.355342645 -0600 MDT m=+708.727371404] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:12.953509692 -0600 MDT m=+710.325538426])
2019/06/14 13:47:13 Blocking empty list...
2019/06/14 13:47:14 Blocking empty list...
2019/06/14 13:47:14 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:12.953509692 -0600 MDT m=+710.325538426] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:14.544215968 -0600 MDT m=+711.916244711])
2019/06/14 13:47:15 Blocking empty list...
2019/06/14 13:47:16 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:14.544215968 -0600 MDT m=+711.916244711] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:16.111428829 -0600 MDT m=+713.483457570])
2019/06/14 13:47:16 Blocking empty list...
2019/06/14 13:47:17 Blocking empty list...
2019/06/14 13:47:17 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:16.111428829 -0600 MDT m=+713.483457570] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:17.744188889 -0600 MDT m=+715.116217639])
2019/06/14 13:47:18 Blocking empty list...
2019/06/14 13:47:19 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:17.744188889 -0600 MDT m=+715.116217639] == [bid:Next Item on title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:19.31997218 -0600 MDT m=+716.692000915])
2019/06/14 13:47:19 Blocking empty list...
2019/06/14 13:47:20 Blocking empty list...
2019/06/14 13:47:20 DETAIL $24,039 $7,664
2019/06/14 13:47:20 false = ([bid:Next Item on title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:19.31997218 -0600 MDT m=+716.692000915] == [bid:$7,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:20.975960694 -0600 MDT m=+718.347989437])
2019/06/14 13:47:20 DETAIL BLACK BLUE
2019/06/14 13:47:21 TOP
2019/06/14 13:47:21 Blocking empty list...
2019/06/14 13:47:21 C [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:21.632839693 -0600 MDT m=+719.004868430]
2019/06/14 13:47:22 Blocking empty list...
2019/06/14 13:47:23 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:21.632839693 -0600 MDT m=+719.004868430] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:23.246285645 -0600 MDT m=+720.618314400])
2019/06/14 13:47:23 Blocking empty list...
2019/06/14 13:47:24 Blocking empty list...
2019/06/14 13:47:24 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:23.246285645 -0600 MDT m=+720.618314400] == [bid:$8,000 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:24.857513644 -0600 MDT m=+722.229542387])
2019/06/14 13:47:25 Blocking empty list...
2019/06/14 13:47:26 Blocking empty list...
2019/06/14 13:47:26 true = ([bid:$8,000 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:24.857513644 -0600 MDT m=+722.229542387] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:26.442221476 -0600 MDT m=+723.814250212])
2019/06/14 13:47:27 Blocking empty list...
2019/06/14 13:47:27 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:26.442221476 -0600 MDT m=+723.814250212] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:27.9990393 -0600 MDT m=+725.371068068])
2019/06/14 13:47:28 Blocking empty list...
2019/06/14 13:47:29 Blocking empty list...
2019/06/14 13:47:29 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:27.9990393 -0600 MDT m=+725.371068068] == [bid:$8,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:29.61021549 -0600 MDT m=+726.982244236])
2019/06/14 13:47:30 Blocking empty list...
2019/06/14 13:47:31 true = ([bid:$8,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:29.61021549 -0600 MDT m=+726.982244236] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:31.217544509 -0600 MDT m=+728.589573280])
2019/06/14 13:47:31 Blocking empty list...
2019/06/14 13:47:32 Blocking empty list...
2019/06/14 13:47:32 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:31.217544509 -0600 MDT m=+728.589573280] == [bid:$8,400 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:32.789748968 -0600 MDT m=+730.161777737])
2019/06/14 13:47:33 Blocking empty list...
2019/06/14 13:47:34 Blocking empty list...
2019/06/14 13:47:34 true = ([bid:$8,400 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:32.789748968 -0600 MDT m=+730.161777737] == [bid:$8,400 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:34.359088515 -0600 MDT m=+731.731117253])
2019/06/14 13:47:35 Blocking empty list...
2019/06/14 13:47:36 Blocking empty list...
2019/06/14 13:47:36 true = ([bid:$8,400 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:34.359088515 -0600 MDT m=+731.731117253] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:36.560628194 -0600 MDT m=+733.932656950])
2019/06/14 13:47:37 Blocking empty list...
2019/06/14 13:47:38 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:36.560628194 -0600 MDT m=+733.932656950] == [bid:$8,600 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:38.175551491 -0600 MDT m=+735.547580230])
2019/06/14 13:47:38 Blocking empty list...
2019/06/14 13:47:39 Blocking empty list...
2019/06/14 13:47:39 true = ([bid:$8,600 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:38.175551491 -0600 MDT m=+735.547580230] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:39.73534806 -0600 MDT m=+737.107376830])
2019/06/14 13:47:40 Blocking empty list...
2019/06/14 13:47:41 Blocking empty list...
2019/06/14 13:47:41 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:39.73534806 -0600 MDT m=+737.107376830] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:41.333835964 -0600 MDT m=+738.705864712])
2019/06/14 13:47:42 Blocking empty list...
2019/06/14 13:47:42 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:41.333835964 -0600 MDT m=+738.705864712] == [bid:$8,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:42.926327488 -0600 MDT m=+740.298356250])
2019/06/14 13:47:43 Blocking empty list...
2019/06/14 13:47:44 Blocking empty list...
2019/06/14 13:47:44 true = ([bid:$8,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:42.926327488 -0600 MDT m=+740.298356250] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:44.493785479 -0600 MDT m=+741.865814216])
2019/06/14 13:47:45 Blocking empty list...
2019/06/14 13:47:46 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:44.493785479 -0600 MDT m=+741.865814216] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:46.092736556 -0600 MDT m=+743.464765324])
2019/06/14 13:47:46 Blocking empty list...
2019/06/14 13:47:47 Blocking empty list...
2019/06/14 13:47:47 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:46.092736556 -0600 MDT m=+743.464765324] == [bid:$9,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:47.67597531 -0600 MDT m=+745.048004045])
2019/06/14 13:47:48 Blocking empty list...
2019/06/14 13:47:49 true = ([bid:$9,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:47.67597531 -0600 MDT m=+745.048004045] == [bid:$9,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:49.283213406 -0600 MDT m=+746.655242158])
2019/06/14 13:47:49 Blocking empty list...
2019/06/14 13:47:50 Blocking empty list...
2019/06/14 13:47:50 true = ([bid:$9,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:49.283213406 -0600 MDT m=+746.655242158] == [bid:$9,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:50.867335397 -0600 MDT m=+748.239364160])
2019/06/14 13:47:51 Blocking empty list...
2019/06/14 13:47:52 Blocking empty list...
2019/06/14 13:47:52 true = ([bid:$9,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:50.867335397 -0600 MDT m=+748.239364160] == [bid:$9,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:52.436153467 -0600 MDT m=+749.808182224])
2019/06/14 13:47:53 Blocking empty list...
2019/06/14 13:47:54 true = ([bid:$9,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:52.436153467 -0600 MDT m=+749.808182224] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:54.03762827 -0600 MDT m=+751.409657021])
2019/06/14 13:47:54 Blocking empty list...
2019/06/14 13:47:55 Blocking empty list...
2019/06/14 13:47:55 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:54.03762827 -0600 MDT m=+751.409657021] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:55.599953643 -0600 MDT m=+752.971982388])
2019/06/14 13:47:56 Blocking empty list...
2019/06/14 13:47:57 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:55.599953643 -0600 MDT m=+752.971982388] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:57.206392983 -0600 MDT m=+754.578421720])
2019/06/14 13:47:57 Blocking empty list...
2019/06/14 13:47:58 Blocking empty list...
2019/06/14 13:47:58 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:57.206392983 -0600 MDT m=+754.578421720] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:58.788865612 -0600 MDT m=+756.160894358])
2019/06/14 13:47:59 Blocking empty list...
2019/06/14 13:48:00 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:58.788865612 -0600 MDT m=+756.160894358] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:00.334639215 -0600 MDT m=+757.706667963])
2019/06/14 13:48:00 Blocking empty list...
2019/06/14 13:48:01 Blocking empty list...
2019/06/14 13:48:01 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:00.334639215 -0600 MDT m=+757.706667963] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:01.910710068 -0600 MDT m=+759.282738803])
2019/06/14 13:48:02 Blocking empty list...
2019/06/14 13:48:03 Blocking empty list...
2019/06/14 13:48:03 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:01.910710068 -0600 MDT m=+759.282738803] == [bid:$9,600 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:03.504547263 -0600 MDT m=+760.876576007])
2019/06/14 13:48:04 Blocking empty list...
2019/06/14 13:48:05 true = ([bid:$9,600 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:03.504547263 -0600 MDT m=+760.876576007] == [bid:$9,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:05.075648795 -0600 MDT m=+762.447677531])
2019/06/14 13:48:05 Blocking empty list...
2019/06/14 13:48:06 Blocking empty list...
2019/06/14 13:48:06 true = ([bid:$9,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:05.075648795 -0600 MDT m=+762.447677531] == [bid:$9,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:06.677601587 -0600 MDT m=+764.049630333])
2019/06/14 13:48:07 Blocking empty list...
2019/06/14 13:48:08 true = ([bid:$9,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:06.677601587 -0600 MDT m=+764.049630333] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:08.243314838 -0600 MDT m=+765.615343582])
2019/06/14 13:48:08 Blocking empty list...
2019/06/14 13:48:09 Blocking empty list...
2019/06/14 13:48:09 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:08.243314838 -0600 MDT m=+765.615343582] == [bid:$9,800 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:09.816861858 -0600 MDT m=+767.188890627])
2019/06/14 13:48:10 Blocking empty list...
2019/06/14 13:48:11 Blocking empty list...
2019/06/14 13:48:11 true = ([bid:$9,800 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:09.816861858 -0600 MDT m=+767.188890627] == [bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:11.401970852 -0600 MDT m=+768.773999592])
2019/06/14 13:48:12 Blocking empty list...
2019/06/14 13:48:13 Blocking empty list...
2019/06/14 13:48:13 true = ([bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:11.401970852 -0600 MDT m=+768.773999592] == [bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:13.385943303 -0600 MDT m=+770.757972044])
2019/06/14 13:48:14 Blocking empty list...
2019/06/14 13:48:15 true = ([bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:13.385943303 -0600 MDT m=+770.757972044] == [bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:15.010900934 -0600 MDT m=+772.382929685])
2019/06/14 13:48:15 Blocking empty list...
2019/06/14 13:48:16 Blocking empty list...
2019/06/14 13:48:16 true = ([bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:15.010900934 -0600 MDT m=+772.382929685] == [bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:16.582646794 -0600 MDT m=+773.954675536])
2019/06/14 13:48:17 Blocking empty list...
2019/06/14 13:48:18 true = ([bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:16.582646794 -0600 MDT m=+773.954675536] == [bid:$10,000 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:18.158918859 -0600 MDT m=+775.530947603])
2019/06/14 13:48:18 Blocking empty list...
2019/06/14 13:48:19 Blocking empty list...
2019/06/14 13:48:19 true = ([bid:$10,000 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:18.158918859 -0600 MDT m=+775.530947603] == [bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:19.762418285 -0600 MDT m=+777.134447038])
2019/06/14 13:48:20 Blocking empty list...
2019/06/14 13:48:21 Blocking empty list...
2019/06/14 13:48:21 true = ([bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:19.762418285 -0600 MDT m=+777.134447038] == [bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:21.358132544 -0600 MDT m=+778.730161288])
2019/06/14 13:48:22 Blocking empty list...
2019/06/14 13:48:22 true = ([bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:21.358132544 -0600 MDT m=+778.730161288] == [bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:22.960404858 -0600 MDT m=+780.332433601])
2019/06/14 13:48:23 Blocking empty list...
2019/06/14 13:48:24 Blocking empty list...
2019/06/14 13:48:24 true = ([bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:22.960404858 -0600 MDT m=+780.332433601] == [bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:24.549422086 -0600 MDT m=+781.921450823])
2019/06/14 13:48:25 Blocking empty list...
2019/06/14 13:48:26 true = ([bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:24.549422086 -0600 MDT m=+781.921450823] == [bid:$10,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:26.125843233 -0600 MDT m=+783.497871975])
2019/06/14 13:48:26 Blocking empty list...
2019/06/14 13:48:27 Blocking empty list...
2019/06/14 13:48:27 true = ([bid:$10,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:26.125843233 -0600 MDT m=+783.497871975] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:27.690221589 -0600 MDT m=+785.062250326])
2019/06/14 13:48:28 Blocking empty list...
2019/06/14 13:48:29 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:27.690221589 -0600 MDT m=+785.062250326] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:29.264012162 -0600 MDT m=+786.636040912])
2019/06/14 13:48:29 Blocking empty list...
2019/06/14 13:48:30 Blocking empty list...
2019/06/14 13:48:30 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:29.264012162 -0600 MDT m=+786.636040912] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:30.816621488 -0600 MDT m=+788.188650236])
2019/06/14 13:48:31 Blocking empty list...
2019/06/14 13:48:32 Blocking empty list...
2019/06/14 13:48:33 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:30.816621488 -0600 MDT m=+788.188650236] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:33.096096709 -0600 MDT m=+790.468125473])
2019/06/14 13:48:33 Blocking empty list...
2019/06/14 13:48:34 Blocking empty list...
2019/06/14 13:48:34 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:33.096096709 -0600 MDT m=+790.468125473] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:34.681657183 -0600 MDT m=+792.053685940])
2019/06/14 13:48:35 Blocking empty list...
2019/06/14 13:48:36 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:34.681657183 -0600 MDT m=+792.053685940] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:36.241164634 -0600 MDT m=+793.613193386])
2019/06/14 13:48:36 Blocking empty list...
2019/06/14 13:48:37 Blocking empty list...
2019/06/14 13:48:37 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:36.241164634 -0600 MDT m=+793.613193386] == [bid:Bonus title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:37.85757393 -0600 MDT m=+795.229602667])
2019/06/14 13:48:38 Blocking empty list...
2019/06/14 13:48:39 Blocking empty list...
2019/06/14 13:48:39 true = ([bid:Bonus title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:37.85757393 -0600 MDT m=+795.229602667] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:39.441577958 -0600 MDT m=+796.813606720])
2019/06/14 13:48:40 Blocking empty list...
2019/06/14 13:48:41 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:39.441577958 -0600 MDT m=+796.813606720] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:41.061072437 -0600 MDT m=+798.433101174])
2019/06/14 13:48:41 Blocking empty list...
2019/06/14 13:48:42 Blocking empty list...
2019/06/14 13:48:42 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:41.061072437 -0600 MDT m=+798.433101174] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:42.682457336 -0600 MDT m=+800.054486086])
2019/06/14 13:48:43 Blocking empty list...
2019/06/14 13:48:44 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:42.682457336 -0600 MDT m=+800.054486086] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:44.256806707 -0600 MDT m=+801.628835462])
2019/06/14 13:48:44 Blocking empty list...
2019/06/14 13:48:45 Blocking empty list...
2019/06/14 13:48:45 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:44.256806707 -0600 MDT m=+801.628835462] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:45.967221097 -0600 MDT m=+803.339249831])
2019/06/14 13:48:46 Blocking empty list...
2019/06/14 13:48:47 Blocking empty list...
2019/06/14 13:48:47 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:45.967221097 -0600 MDT m=+803.339249831] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:47.517339333 -0600 MDT m=+804.889368069])
2019/06/14 13:48:48 Blocking empty list...
2019/06/14 13:48:48 parse watched
2019/06/14 13:48:49 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:47.517339333 -0600 MDT m=+804.889368069] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:49.118780967 -0600 MDT m=+806.490809704])
2019/06/14 13:48:49 Blocking empty list...
2019/06/14 13:48:50 parse watched
2019/06/14 13:48:50 Blocking empty list...
2019/06/14 13:48:50 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:49.118780967 -0600 MDT m=+806.490809704] == [bid:Next Item on title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:50.667028521 -0600 MDT m=+808.039057254])
2019/06/14 13:48:51 Blocking empty list...
2019/06/14 13:48:51 parse watched
2019/06/14 13:48:52 DETAIL $7,689 $24,039
2019/06/14 13:48:52 false = ([bid:Next Item on title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:50.667028521 -0600 MDT m=+808.039057254] == [bid:$1,650 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:52.297679181 -0600 MDT m=+809.669707932])
2019/06/14 13:48:52 DETAIL 1.8L 4 3.6L 6
2019/06/14 13:48:52 Blocking empty list...
2019/06/14 13:48:52 TOP
2019/06/14 13:48:52 parse watched
2019/06/14 13:48:52 C [bid:$1,650 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:52.994021004 -0600 MDT m=+810.366049754]
2019/06/14 13:48:53 Blocking empty list...
2019/06/14 13:48:54 parse watched
2019/06/14 13:48:54 Blocking empty list...
2019/06/14 13:48:54 true = ([bid:$1,650 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:52.994021004 -0600 MDT m=+810.366049754] == [bid:Bid title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:54.583269582 -0600 MDT m=+811.955298323])
2019/06/14 13:48:55 Blocking empty list...
2019/06/14 13:48:55 parse watched
2019/06/14 13:48:56 true = ([bid:Bid title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:54.583269582 -0600 MDT m=+811.955298323] == [bid:$1,700 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:56.181033887 -0600 MDT m=+813.553062652])
2019/06/14 13:48:56 Blocking empty list...
2019/06/14 13:48:57 parse watched
2019/06/14 13:48:57 Blocking empty list...
2019/06/14 13:48:57 true = ([bid:$1,700 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:56.181033887 -0600 MDT m=+813.553062652] == [bid:$1,800 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:57.784934977 -0600 MDT m=+815.156963727])
2019/06/14 13:48:58 Blocking empty list...
2019/06/14 13:48:58 parse watched
2019/06/14 13:48:59 Blocking empty list...
2019/06/14 13:48:59 true = ([bid:$1,800 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:57.784934977 -0600 MDT m=+815.156963727] == [bid:$1,850 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:59.373646279 -0600 MDT m=+816.745675026])
2019/06/14 13:49:00 Blocking empty list...
2019/06/14 13:49:00 parse watched
2019/06/14 13:49:00 true = ([bid:$1,850 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:59.373646279 -0600 MDT m=+816.745675026] == [bid:$1,900 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:49:00.956853996 -0600 MDT m=+818.328882743])
2019/06/14 13:49:01 Blocking empty list...
2019/06/14 13:49:02 parse watched
2019/06/14 13:49:02 Blocking empty list...
2019/06/14 13:49:02 true = ([bid:$1,900 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:49:00.956853996 -0600 MDT m=+818.328882743] == [bid:Bid title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:49:02.537892071 -0600 MDT m=+819.909920818])
2019/06/14 13:49:03 Blocking empty list...
2019/06/14 13:49:03 stale element reference: stale element reference: element is not attached to the page document
(Session info: chrome=75.0.3770.80)
2019/06/14 13:49:04 Blocking empty list...
2019/06/14 13:49:05 Blocking empty list...
2019/06/14 13:49:06 Blocking empty list...

132
copart/copart/auction/.auction.go Executable file
View File

@ -0,0 +1,132 @@
package auction
import (
"encoding/json"
"local/sandbox/selenium/copart/copart/browser"
"local/sandbox/selenium/copart/copart/config"
"log"
"time"
"github.com/tebeka/selenium"
)
type Auction struct {
browser *browser.Browser
cars []*Car
stop bool
stopped bool
}
func New(url string) (*Auction, error) {
b, err := browser.New()
if err != nil {
b.Close()
return nil, err
}
if err := b.Get(url); err != nil {
b.Close()
return nil, err
}
var elems []selenium.WebElement
deadline := time.Now().Add(time.Second * 10) // TODO ctx configurable and load more later
for deadline.After(time.Now()) {
time.Sleep(time.Second)
elems, err = b.Driver.FindElements("xpath", "//iframe")
if err != nil {
b.Close()
return nil, err
}
if len(elems) > 0 {
break
}
}
if time.Now().After(deadline) {
b.Close()
return nil, b.Close()
}
url, err = elems[0].GetAttribute("src")
if err != nil {
b.Close()
return nil, err
}
if err := b.Get(url); err != nil {
b.Close()
return nil, err
}
return &Auction{
browser: b,
cars: []*Car{},
}, nil
}
func (a *Auction) Start() error {
log.Println("START", a.stop)
go func() {
defer func() {
a.stopped = true
}()
for !a.stop {
log.Println("TOP")
c := NewCar()
if err := c.Parse(a.browser.Driver); err != nil {
log.Println(err)
return
}
log.Println("C", c)
for !a.stop {
time.Sleep(time.Second)
d := NewCar()
if err := d.Parse(a.browser.Driver); err != nil {
log.Println(err)
return
}
log.Printf("%v = (%v == %v)", c.Equals(d), c.String(), d.String())
if !c.Equals(d) {
break
}
c = d
}
b, err := c.Encode()
if err != nil {
log.Println(err)
return
}
if err := config.Values().DB.Set(c.String(), b); err != nil {
log.Println(err)
return
}
var list []string
if b, err := config.Values().DB.Get("LIST"); err != nil {
log.Println(err)
return
} else if err := json.Unmarshal(b, &list); err != nil {
log.Println(err)
return
} else {
list = append(list, c.String())
b, _ := json.Marshal(list)
if err := config.Values().DB.Set("LIST", b); err != nil {
log.Println(err)
return
}
}
}
}()
return nil
}
func (a *Auction) Stop() error {
if a == nil {
return nil
}
a.stop = true
for !a.stopped {
time.Sleep(time.Second)
}
if a.browser == nil || a.browser.Driver == nil {
return nil
}
return a.browser.Driver.Close()
}

222
copart/copart/auction/auction.go Executable file
View File

@ -0,0 +1,222 @@
package auction
import (
"context"
"encoding/json"
"errors"
"local/sandbox/selenium/copart/copart/browser"
"local/sandbox/selenium/copart/copart/config"
"local/storage"
"log"
"strconv"
"strings"
"time"
)
type Auction struct {
browser *browser.Browser
cars chan *Car
ctx context.Context
can context.CancelFunc
routines chan struct{}
}
func New(b *browser.Browser, url string) (*Auction, error) {
if err := b.Get(url); err != nil {
b.Close()
return nil, err
}
ctx, can := context.WithTimeout(context.Background(), time.Second*10)
defer can()
var elem WebElement
for err := ctx.Err(); err == nil; err = ctx.Err() {
elem, err = b.Driver.FindElement("xpath", "//iframe")
if err == nil {
break
}
time.Sleep(time.Second)
}
if err := ctx.Err(); err != nil {
b.Close()
return nil, err
}
iframeURL, err := elem.GetAttribute("src")
if err != nil {
b.Close()
return nil, err
} else if iframeURL == "" {
b.Close()
return nil, errors.New("auction iframe has no src")
}
if err := b.Get(iframeURL); err != nil {
b.Close()
return nil, err
}
ctx, can = context.WithCancel(context.Background())
return &Auction{
browser: b,
cars: make(chan *Car),
ctx: ctx,
can: can,
routines: make(chan struct{}, 5),
}, nil
}
func (a *Auction) Start() error {
go a.parseCars()
a.routines <- struct{}{}
go a.saveCars()
a.routines <- struct{}{}
return nil
}
func (a *Auction) parseCars() error {
log.Printf("[parseCars] starting")
defer func() {
if err := recover(); err != nil {
log.Println("[parseCars] recover:", err)
}
log.Printf("[parseCars] stopping")
close(a.cars)
a.can()
a.routines <- struct{}{}
}()
for err := a.ctx.Err(); err == nil; err = a.ctx.Err() {
c, err := a.nextCar()
if err != nil {
panic(err)
}
log.Printf("[parseCars] found car %v", c.String())
if !strings.Contains(c.Bid, "$") {
continue
}
if b, _ := c.MarshalJSON(); strings.Contains(strings.ToLower(string(b)), ", hi") {
continue
} else if strings.Contains(strings.ToLower(string(b)), "guam") {
continue
} else if len(c.Title) < 4 {
continue
} else if v, err := strconv.Atoi(c.Title[:4]); err != nil {
continue
} else if v+5 < time.Now().Year() {
continue
}
select {
case a.cars <- c:
case <-a.ctx.Done():
panic(a.ctx.Err())
}
}
return a.ctx.Err()
}
func (a *Auction) nextCar() (*Car, error) {
c := NewCar()
if err := c.Parse(a.browser.Driver); err != nil {
if !strings.Contains(err.Error(), "stale element") {
return nil, err
} else {
return a.nextCar()
}
}
for err := a.ctx.Err(); err == nil; err = a.ctx.Err() {
time.Sleep(time.Second * 2)
d := NewCar()
if err := d.Parse(a.browser.Driver); err != nil {
if !strings.Contains(err.Error(), "stale element") {
return nil, err
}
}
if !c.Equals(d) {
return c, nil
}
if d.Bid != "" {
c = d
}
}
return nil, a.ctx.Err()
}
func (a *Auction) saveCars() error {
log.Printf("[saveCars] starting")
defer func() {
if err := recover(); err != nil {
log.Println("[saveCars] recover:", err)
}
log.Printf("[saveCars] stopping")
a.can()
a.routines <- struct{}{}
}()
for err := a.ctx.Err(); err == nil; err = a.ctx.Err() {
select {
case <-a.ctx.Done():
panic(a.ctx.Err())
case c := <-a.cars:
go func(d *Car) {
if d == nil {
return
}
log.Printf("[saveCars] saving %v", d.String())
if err := a.saveCar(d); err != nil {
log.Printf("[saveCars] err: %v", err)
}
}(c)
}
}
return a.ctx.Err()
}
func (a *Auction) saveCar(c *Car) error {
db := config.Values().DB
b, err := c.Encode()
if err != nil {
return err
}
if err := db.Set(c.String(), b); err != nil {
return err
}
var list []string
b, err = db.Get("LIST")
if err == storage.ErrNotFound {
b = []byte("[]")
} else if err != nil {
return err
}
if err := json.Unmarshal(b, &list); err != nil {
return err
}
list = append([]string{c.String()}, list...)
if b, err := json.Marshal(list); err != nil {
return err
} else if err := db.Set("LIST", b); err != nil {
return err
}
return nil
}
func (a *Auction) Stop() error {
l := len(a.routines)
a.can()
ctx, can := context.WithTimeout(context.Background(), time.Second*5)
defer can()
for i := 0; i < 2*l; i++ {
select {
case <-a.routines:
case <-ctx.Done():
}
}
if len(a.routines) > 0 {
return errors.New("not all routines exited")
}
return nil
}

View File

@ -0,0 +1,185 @@
package auction
import (
"context"
"crypto/rand"
"fmt"
"local/sandbox/selenium/copart/copart/browser"
"local/sandbox/selenium/copart/copart/config"
"math/big"
"net/url"
"os"
"strings"
"sync"
"testing"
"time"
)
func randStr() string {
n := 3
letters := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
k := big.NewInt(int64(len(letters)))
b := make([]byte, n)
for i := 0; i < n; i++ {
j, _ := rand.Int(rand.Reader, k)
b[i] = letters[int(j.Int64())]
}
return string(b)
}
func randomAuctionBody() []browser.MockElement {
return []browser.MockElement{browser.MockElement{
Attrs: map[string]string{
"src": "anything",
},
Ret: map[string][]browser.MockElement{
"//bidding-dialer-refactor": []browser.MockElement{browser.MockElement{
Ret: map[string][]browser.MockElement{
"text": []browser.MockElement{browser.MockElement{
Txt: "$bid" + randStr(),
}},
},
}},
"//lot-details-primary-refactored": []browser.MockElement{browser.MockElement{
Ret: map[string][]browser.MockElement{
"label": []browser.MockElement{browser.MockElement{
Txt: "label" + randStr(),
Ret: map[string][]browser.MockElement{
"../div[1]": []browser.MockElement{browser.MockElement{
Txt: "value" + randStr(),
}},
},
}},
},
}},
"//lot-details-secondary-refactored": []browser.MockElement{browser.MockElement{
Ret: map[string][]browser.MockElement{
"label": []browser.MockElement{browser.MockElement{
Txt: "label" + randStr(),
Ret: map[string][]browser.MockElement{
"../div[1]": []browser.MockElement{browser.MockElement{
Txt: "value" + randStr(),
}},
},
}},
},
}},
"//ngx-carousel": []browser.MockElement{browser.MockElement{
Ret: map[string][]browser.MockElement{
"ngx-item": []browser.MockElement{},
},
}},
"//lot-header": []browser.MockElement{browser.MockElement{
Ret: map[string][]browser.MockElement{
"section": []browser.MockElement{browser.MockElement{
Ret: map[string][]browser.MockElement{
"div": []browser.MockElement{browser.MockElement{
Ret: map[string][]browser.MockElement{
"div": []browser.MockElement{browser.MockElement{
Txt: "title" + randStr(),
}},
},
}},
},
}},
},
}},
"//widget-header-sale": []browser.MockElement{browser.MockElement{
Ret: map[string][]browser.MockElement{
".//div[@class=\"watchlist\"]": []browser.MockElement{},
},
}},
},
}}
}
func mockAuction() (*Auction, context.CancelFunc) {
m := &sync.Map{}
r := randomAuctionBody()
m.Store("body", r)
go func() {
time.Sleep(time.Second * 2)
m.Store("//iframe", r)
}()
driver := browser.NewMockDriver(m)
ctx, can := context.WithCancel(context.Background())
go func() {
for ctx.Err() == nil {
time.Sleep(time.Millisecond * 100)
m.Store("body", randomAuctionBody())
}
}()
return &Auction{
browser: &browser.Browser{Driver: driver},
cars: make(chan *Car),
ctx: ctx,
can: can,
routines: make(chan struct{}, 5),
}, can
}
func TestNewAuction(t *testing.T) {
a, can := mockAuction()
defer can()
b := a.browser
if _, err := New(b, "any"); err != nil {
t.Fatal(err)
}
}
func TestAuctionStartStop(t *testing.T) {
a, can := mockAuction()
defer can()
if err := a.Start(); err != nil {
t.Fatal(err)
}
if len(a.routines) != 2 {
t.Fatal("not 2 routines")
}
if err := a.Stop(); err != nil {
t.Fatal(err)
}
}
func TestAuctionSaveCar(t *testing.T) {
os.Args = []string{"a", "-db", "map"}
config.New()
a, can := mockAuction()
defer can()
c := NewCar()
c.Bid = "123"
c.Title = "abc"
c.Details = map[string]string{
"x": "y",
}
c.Images = []*Image{&Image{Src: &url.URL{Host: "img"}}}
d := NewCar()
if err := a.saveCar(c); err != nil {
t.Fatal(err)
}
if b, err := config.Values().DB.Get("LIST"); err != nil {
t.Fatal(err)
} else if !strings.Contains(string(b), c.String()) {
t.Fatal("list does not contain new car")
}
if b, err := config.Values().DB.Get(c.String()); err != nil {
t.Fatal(err)
} else if err := d.Decode(b); err != nil {
t.Fatal(err)
} else if !c.Equals(d) {
t.Fatal("saved car != fetched car")
}
}
func TestAuctionNextCar(t *testing.T) {
os.Args = []string{"a", "-db", "map"}
config.New()
a, can := mockAuction()
defer can()
if c, err := a.nextCar(); err != nil {
t.Fatal(err)
} else if c == nil || fmt.Sprintf("%v", *c) == fmt.Sprintf("%v", Car{}) {
t.Fatal("parsed car is nil")
}
}

251
copart/copart/auction/car.go Executable file
View File

@ -0,0 +1,251 @@
package auction
import (
"bytes"
"encoding/gob"
"encoding/json"
"errors"
"fmt"
"net/url"
"strings"
"time"
)
type Car struct {
Bid string
Details map[string]string
Images []*Image
Title string
Watched bool
TS time.Time
}
type CarOption func(*Car)
func NewCar(options ...CarOption) *Car {
c := &Car{
Details: map[string]string{},
Images: []*Image{},
}
c.parseTS(nil)
for _, opt := range options {
opt(c)
}
return c
}
func (c *Car) MarshalJSON() ([]byte, error) {
m := map[string]interface{}{}
m["bid"] = c.Bid
m["details"] = c.Details
m["images"] = c.Images
m["title"] = c.Title
m["TS"] = c.TS.Format("2006-01-02")
return json.Marshal(m)
}
func (c *Car) Encode() ([]byte, error) {
buff := bytes.NewBuffer(nil)
enc := gob.NewEncoder(buff)
err := enc.Encode(c)
return buff.Bytes(), err
}
func (c *Car) Decode(b []byte) error {
buff := bytes.NewBuffer(b)
enc := gob.NewDecoder(buff)
return enc.Decode(c)
}
func (c *Car) Copy() *Car {
d := *c
return &d
}
func (c *Car) Equals(d *Car) bool {
if c == d {
return true
}
if d == nil && c != nil {
return false
}
if c == nil && d != nil {
return false
}
for k, v := range c.Details {
if w, ok := d.Details[k]; ok && w != v {
return false
}
}
for k, v := range c.Details {
if w, ok := c.Details[k]; ok && w != v {
return false
}
}
if c.Title != d.Title {
return false
}
return true
}
func (c *Car) String() string {
return fmt.Sprintf(
"[bid:%v title:%v watched:%v images:%v when:%v]",
c.Bid,
c.Title,
c.Watched,
len(c.Images),
c.TS,
)
}
func (c *Car) Parse(wd WebDriver) error {
we, err := wd.FindElement("tag name", "body")
if err != nil {
return err
}
do := []func(WebElement) error{
c.parseTitle,
c.parseBid,
c.parseWatched,
c.parseImages,
c.parseDetails,
c.parseTS,
}
for _, d := range do {
if err := d(we); err != nil {
return err
}
}
return nil
}
func (c *Car) parseTS(WebElement) error {
c.TS = time.Now()
return nil
}
func (c *Car) parseBid(wd WebElement) error {
elem := waitForXPath(wd, "//bidding-dialer-refactor")
elem, err := elem.FindElement("tag name", "text")
if err != nil {
return err
}
text, err := elem.Text()
if err != nil {
return err
}
if strings.Contains(text, "$") {
c.Bid = text
}
return nil
}
func (c *Car) parseDetails(wd WebElement) error {
details := make(map[string]string)
elems, err := wd.FindElements("tag name", "perfect-scrollbar")
if err != nil {
return err
}
if len(elems) > 2 {
elems = elems[:2]
}
for _, elem := range elems {
labels, err := elem.FindElements("tag name", "label")
if err != nil {
return err
}
for _, label := range labels {
ltext, err := label.Text()
if err != nil {
return err
}
if ltext == "" {
continue
}
value, err := label.FindElement("xpath", "../div[1]")
if err != nil {
return err
}
vtext, err := value.Text()
if err != nil {
return err
}
details[ltext] = vtext
}
}
if len(details) > 0 {
c.Details = details
}
return nil
}
func (c *Car) parseImages(wd WebElement) error {
elem := waitForXPath(wd, "//ngx-carousel")
elems, err := elem.FindElements("tag name", "ngx-item")
if err != nil {
return err
}
if len(elems) == 0 {
return err
}
images := make([]*Image, 0)
for _, elem := range elems {
elems, err := elem.FindElements("tag name", "img")
if err != nil {
return err
}
for _, img := range elems {
attr, err := img.GetAttribute("src")
if err != nil {
return err
}
url, err := url.Parse(attr)
if err != nil {
return err
}
images = append(images, NewImage(url))
}
}
c.Images = images
return nil
}
func (c *Car) parseTitle(wd WebElement) error {
elem := waitForXPath(wd, "//lot-header")
elem = followTags(elem, "section", "div", "div")
if elem == nil {
return errors.New("not found")
}
text, err := elem.Text()
if err != nil {
return err
}
c.Title = text
return nil
}
func (c *Car) parseWatched(wd WebElement) error {
elem := waitForXPath(wd, "//widget-header-sale")
elems, err := elem.FindElements("tag name", ".//div[@class=\"watchlist\"]")
if err != nil {
return err
}
c.Watched = len(elems) > 0
return nil
}

View File

@ -0,0 +1,36 @@
package auction
import "testing"
func TestCar(t *testing.T) {
c := NewCar()
c.Title = "title"
c.Bid = "bid"
c.Watched = true
c.Details = map[string]string{"a": "b"}
d := c.Copy()
if !c.Equals(d) {
t.Errorf("equals failed post copy")
}
c.Details = map[string]string{"a": "c"}
if c.Equals(d) {
t.Errorf("equals passes post edit")
}
t.Log(c.String())
b, err := c.Encode()
if err != nil {
t.Fatal(err)
}
e := NewCar()
if err := e.Decode(b); err != nil {
t.Fatal(err)
}
if !c.Equals(e) {
t.Fatalf("decoded != encoded: %v vs %v", c, e)
}
if _, err := c.MarshalJSON(); err != nil {
t.Fatal(err)
}
}

39
copart/copart/auction/image.go Executable file
View File

@ -0,0 +1,39 @@
package auction
import (
"encoding/json"
"io/ioutil"
"net/http"
"net/url"
"os"
)
type Image struct {
Raw []byte
Src *url.URL
}
func NewImage(url *url.URL) *Image {
return &Image{
Src: url,
}
}
func (img *Image) MarshalJSON() ([]byte, error) {
return json.Marshal(img.Src.String())
}
func (img *Image) Fetch() error {
resp, err := http.Get(img.Src.String())
if err != nil {
return err
}
defer resp.Body.Close()
Raw, err := ioutil.ReadAll(resp.Body)
img.Raw = Raw
return err
}
func (img *Image) Save(path string) error {
return ioutil.WriteFile(path, img.Raw, os.ModePerm)
}

231
copart/copart/auction/today.go Executable file
View File

@ -0,0 +1,231 @@
package auction
import (
"context"
"local/sandbox/selenium/copart/copart/browser"
"local/sandbox/selenium/copart/copart/config"
"local/storage"
"log"
"os"
"strings"
"syscall"
"time"
"golang.org/x/time/rate"
)
type Today struct {
today *browser.Browser
Auctions []*Auction
ctx context.Context
can context.CancelFunc
routines chan struct{}
sigc chan os.Signal
}
func NewToday(sigc chan os.Signal) (*Today, error) {
today, err := today()
if err != nil {
today.Close()
return nil, err
}
if _, err := config.Values().DB.Get("LIST"); err == storage.ErrNotFound {
if err := config.Values().DB.Set("LIST", []byte("[]")); err != nil {
today.Close()
return nil, err
}
} else if err != nil {
today.Close()
return nil, err
}
deadline := time.Now()
deadline = deadline.Add(time.Hour * 24)
deadline = deadline.Add(time.Duration(-1*time.Now().Hour()) * time.Hour)
ctx, can := context.WithDeadline(context.Background(), deadline)
return &Today{
today: today,
Auctions: make([]*Auction, 0),
ctx: ctx,
can: can,
routines: make(chan struct{}, 10),
sigc: sigc,
}, nil
}
func today() (*browser.Browser, error) {
today, err := browser.New()
if err != nil {
return today, err
}
if err := today.Get("https://www.copart.com/todaysAuction/"); err != nil {
return today, err
}
return today, nil
}
func (t *Today) Start() error {
ch := make(chan string)
go t.watchAuctionList(ch)
t.routines <- struct{}{}
go t.startAuctions(ch)
t.routines <- struct{}{}
return t.ctx.Err()
}
func (t *Today) watchAuctionList(ch chan string) {
log.Printf("[watchAuctionList] starting")
defer func() {
if err := recover(); err != nil {
log.Println("[watchAuctionList] recover:", err)
}
log.Printf("[watchAuctionList] stopping")
t.routines <- struct{}{}
t.Stop()
}()
found := make(map[string]struct{})
retryCD := 3
for err := t.ctx.Err(); err == nil; err = t.ctx.Err() {
elems, err := t.today.Driver.FindElements("link text", "Join Auction")
if err != nil {
panic(err)
}
log.Printf("[watchAuctionList] found %v", len(elems))
for _, elem := range elems {
url, err := elem.GetAttribute("href")
if err != nil {
panic(err)
}
key := time.Now().Format("2006-01-02") + url
if _, ok := found[key]; ok {
log.Printf("[watchAuctionList] skipping %v", url)
continue
}
found[key] = struct{}{}
log.Printf("[watchAuctionList] sending %v", len(url))
ch <- url
}
log.Printf("[watchAuctionList] blocking 5 minutes")
select {
case <-t.ctx.Done():
panic(t.ctx.Err())
case <-time.After(time.Minute * 5):
retryCD -= 1
if retryCD == 0 {
retryCD = 3
for {
if t.ctx.Err() != nil {
panic(t.ctx.Err())
}
err := t.today.Driver.Refresh()
if err == nil {
break
}
if strings.Contains(err.Error(), "timeout") {
select {
case <-time.After(time.Second * 15):
case <-t.ctx.Done():
panic(t.ctx.Err())
}
}
}
}
}
}
}
func (t *Today) startAuctions(ch chan string) {
log.Printf("[startAuctions] starting")
defer func() {
if err := recover(); err != nil {
log.Println("[startAuctions] recover:", err)
}
log.Printf("[startAuctions] stopping")
t.routines <- struct{}{}
t.Stop()
}()
limiter := rate.NewLimiter(rate.Every(time.Second*15), 1)
for {
select {
case <-t.ctx.Done():
panic(t.ctx.Err())
case url := <-ch:
if err := limiter.Wait(t.ctx); err != nil {
panic(err)
}
log.Printf("[startAuctions] spawning %v", url)
b, err := browser.New()
if err != nil {
time.Sleep(time.Second * 15)
if err := limiter.Wait(t.ctx); err != nil {
panic(err)
}
b, err = browser.New()
if err != nil {
panic(err)
}
}
a, err := New(b, url)
if a != nil {
t.Auctions = append(t.Auctions, a)
}
if err != nil {
log.Println("[startAuctions] failed to New:", err)
} else if err := a.Start(); err != nil {
log.Println("[startAuctions] failed to New().Start:", err)
} else {
log.Printf("[startAuctions] spawned %v", url)
}
}
}
}
func (t *Today) Stop() error {
last := make(chan error)
if t == nil {
return nil
}
l := len(t.routines)
t.can()
ctx, can := context.WithTimeout(context.Background(), time.Second*10)
defer can()
for i := 0; i < l*2; i++ {
select {
case <-t.routines:
case <-ctx.Done():
select {
case last <- ctx.Err():
default:
}
}
}
for _, a := range t.Auctions {
go func() {
if err := a.Stop(); err != nil {
select {
case last <- err:
case <-time.After(time.Second * 5):
}
}
}()
}
if err := t.today.Driver.Close(); err != nil {
select {
case last <- err:
default:
}
}
var err error
select {
case err = <-last:
case <-time.After(time.Second * 5):
}
select {
case t.sigc <- syscall.SIGHUP:
default:
}
return err
}

View File

@ -0,0 +1,46 @@
package auction
import (
"local/sandbox/selenium/copart/copart/browser"
"time"
"github.com/tebeka/selenium"
)
type WebDriver interface {
browser.WebDriver
}
type WebElement interface {
selenium.WebElement
}
func waitForXPath(wd WebElement, path string) selenium.WebElement {
var we selenium.WebElement
test := func() bool {
v, err := wd.FindElements("xpath", path)
if err != nil {
return false
}
if len(v) < 1 {
return false
}
we = v[0]
return true
}
for !test() {
time.Sleep(1)
}
return we
}
func followTags(wd WebElement, tag ...string) selenium.WebElement {
for _, t := range tag {
var err error
wd, err = wd.FindElement("tag name", t)
if err != nil {
return nil
}
}
return wd
}

View File

@ -0,0 +1,71 @@
package browser
import (
"fmt"
"strings"
"time"
"github.com/tebeka/selenium"
)
type WebDriver interface {
Get(string) error
Quit() error
Close() error
FindElement(string, string) (selenium.WebElement, error)
FindElements(string, string) ([]selenium.WebElement, error)
Refresh() error
}
type WebElement interface {
FindElement(string, string) (selenium.WebElement, error)
FindElements(string, string) ([]selenium.WebElement, error)
Text() (string, error)
GetAttribute(string) (string, error)
}
type Browser struct {
Driver WebDriver
}
func New() (*Browser, error) {
var Driver selenium.WebDriver
var err error
caps := selenium.Capabilities{"browserName": "chrome"}
//caps := selenium.Capabilities{"browserName": "firefox"}
for i := 0; i < 5; i++ {
Driver, err = selenium.NewRemote(caps, fmt.Sprintf("http://localhost:%v/wd/hub", 4444))
if err != nil {
if strings.Contains(err.Error(), "connection refused") {
time.Sleep(time.Second * time.Duration(i+1))
continue
}
if strings.Contains(err.Error(), "timeout") {
time.Sleep(time.Second * time.Duration(i+1))
continue
}
return nil, err
}
}
return &Browser{
Driver: Driver,
}, err
}
func (b *Browser) Get(addr string) error {
return b.Driver.Get(addr)
}
func (b *Browser) Close() error {
if b == nil || b.Driver == nil {
return nil
}
if err := b.Driver.Close(); err != nil {
return err
}
if err := b.Driver.Quit(); err != nil {
return err
}
return nil
}

View File

@ -0,0 +1,25 @@
package browser
import (
"testing"
)
func TestNew(t *testing.T) {
browser, err := New()
if err != nil {
t.Fatal(err)
}
defer browser.Close()
if err := browser.Driver.Get("https://www.google.com"); err != nil {
t.Fatal(err)
}
elem, err := browser.Driver.FindElement("tag name", "body")
if err != nil {
t.Fatal(err)
}
if elem == nil {
t.Fatal(err)
}
}

View File

@ -0,0 +1,91 @@
package browser
import (
"errors"
"local/storage"
"sync"
"github.com/tebeka/selenium"
)
type MockDriver struct {
Ret *sync.Map
}
var notImpl = errors.New("not impl")
func (wd MockDriver) Quit() error { return nil }
func (wd MockDriver) Close() error { return nil }
func (wd MockDriver) Get(string) error { return nil }
func (wd MockDriver) GetCookies() ([]selenium.Cookie, error) { return []selenium.Cookie{}, nil }
func (wd MockDriver) GetCookie(string) (selenium.Cookie, error) { return selenium.Cookie{}, nil }
func (wd MockDriver) AddCookie(*selenium.Cookie) error { return nil }
func (wd MockDriver) FindElement(_ string, key string) (selenium.WebElement, error) {
v, err := wd.FindElements("", key)
if err != nil {
return nil, err
}
return v[0], nil
}
func (wd MockDriver) FindElements(_ string, key string) ([]selenium.WebElement, error) {
we := []selenium.WebElement{}
if v, ok := wd.Ret.Load(key); ok {
w, _ := v.([]MockElement)
for i := range w {
we = append(we, w[i])
}
return we, nil
}
return nil, storage.ErrNotFound
}
type MockElement struct {
selenium.WebElement
Ret map[string][]MockElement
Txt string
Attrs map[string]string
}
func (we MockElement) FindElement(_ string, key string) (selenium.WebElement, error) {
v, err := we.FindElements("", key)
if err != nil {
return nil, err
}
return v[0], nil
}
func (we MockElement) FindElements(_ string, key string) ([]selenium.WebElement, error) {
elems := []selenium.WebElement{}
if v, ok := we.Ret[key]; ok {
for i := range v {
elems = append(elems, v[i])
}
return elems, nil
}
return nil, storage.ErrNotFound
}
func (we MockElement) Text() (string, error) { return we.Txt, nil }
func (we MockElement) GetAttribute(key string) (string, error) {
v, _ := we.Attrs[key]
return v, nil
}
func (we MockElement) Click() error { return notImpl }
func (we MockElement) SendKeys(keys string) error { return notImpl }
func (we MockElement) Submit() error { return notImpl }
func (we MockElement) Clear() error { return notImpl }
func (we MockElement) MoveTo(int, int) error { return notImpl }
func (we MockElement) TagName() (string, error) { return "", notImpl }
func (we MockElement) IsSelected() (bool, error) { return false, notImpl }
func (we MockElement) IsEnabled() (bool, error) { return false, notImpl }
func (we MockElement) IsDisplayed() (bool, error) { return false, notImpl }
func (we MockElement) Location() (*selenium.Point, error) { return nil, notImpl }
func (we MockElement) LocationInView() (*selenium.Point, error) { return nil, notImpl }
func (we MockElement) Size() (*selenium.Size, error) { return nil, notImpl }
func (we MockElement) CSSProperty(name string) (string, error) { return "", notImpl }
func (we MockElement) Screenshot(bool) ([]byte, error) { return nil, notImpl }
func NewMockDriver(elements *sync.Map) *MockDriver {
return &MockDriver{
Ret: elements,
}
}

View File

@ -0,0 +1,17 @@
package browser
import (
"testing"
"github.com/tebeka/selenium"
)
func TestMockSeleniumInterfaces(t *testing.T) {
var wd WebDriver
wd = MockDriver{}
var we selenium.WebElement
we = MockElement{}
t.Log(wd, we)
}

37
copart/copart/config/config.go Executable file
View File

@ -0,0 +1,37 @@
package config
import (
"fmt"
"local/storage"
"sync"
)
var config Config
var lock = &sync.RWMutex{}
type Config struct {
db string
DB storage.DB
Port string
Addr string
Username string
Password string
DefaultNamespace string
Public string
}
func Values() Config {
lock.RLock()
defer lock.RUnlock()
return config
}
func (c Config) String() string {
return fmt.Sprintf(
"port:%v db:%v addr:%v user:*** pass:*** public:%v",
c.Port,
c.db,
c.Addr,
c.Public,
)
}

43
copart/copart/config/new.go Executable file
View File

@ -0,0 +1,43 @@
package config
import (
"local/args"
"local/storage"
"os"
)
func New() error {
as := args.NewArgSet()
as.Append(args.STRING, "addr", "address/path to database/file", "")
as.Append(args.STRING, "user", "username to database", "")
as.Append(args.STRING, "pass", "password to database", "")
as.Append(args.STRING, "port", "port to listen on", "21412")
as.Append(args.STRING, "db", "database type code", storage.MAP.String())
as.Append(args.STRING, "ns", "namespace", storage.DefaultNamespace)
as.Append(args.STRING, "public", "public folder", "./public")
if err := as.Parse(); err != nil {
return err
}
config = Config{
db: as.Get("db").GetString(),
Addr: as.Get("addr").GetString(),
Username: as.Get("user").GetString(),
Password: as.Get("pass").GetString(),
Port: as.Get("port").GetString(),
DefaultNamespace: as.Get("ns").GetString(),
Public: as.Get("public").GetString(),
}
storage.DefaultNamespace = config.DefaultNamespace
DB, err := storage.New(storage.TypeFromString(config.db), config.Addr, config.Username, config.Password)
config.DB = DB
return err
}
func orEnv(def, key string, keys ...string) string {
for _, key := range append(keys, key) {
if v, ok := os.LookupEnv(key); ok {
return v
}
}
return def
}

View File

@ -0,0 +1,37 @@
package config
import (
"os"
"testing"
)
func TestNew(t *testing.T) {
invalidEnv := "&&&&&&"
keys := []string{
"DB",
"DATABASE",
"ADDR",
"PATH",
"USER",
"USERNAME",
"PASS",
"PASSWORD",
}
was := make(map[string]string)
for _, k := range keys {
v, ok := os.LookupEnv(k)
if !ok {
v = invalidEnv
}
was[k] = v
}
defer func() {
for k, v := range was {
if v != invalidEnv {
os.Setenv(k, v)
} else {
os.Unsetenv(k)
}
}
}()
}

84
copart/copart/endpoint_test.go Executable file
View File

@ -0,0 +1,84 @@
package copart
import (
"bytes"
"fmt"
"io/ioutil"
"local/router"
"net/http"
"net/http/httptest"
"os/exec"
"path"
"runtime"
"strings"
"testing"
"time"
)
func StartServer() *http.Server {
_, filename, _, _ := runtime.Caller(0)
dir := path.Dir(filename)
html := path.Join(dir, "testdata", "sample_auction_live.html")
b, _ := ioutil.ReadFile(html)
handler := func(w http.ResponseWriter, r *http.Request) {
w.Write(b)
}
s := router.New()
s.Add(router.Wildcard, handler)
s.Add("/", handler)
port := getPort()
cmd := exec.Command("bash", "-c", `ifconfig en0 | grep -o '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*' | head -n 1`)
out := bytes.NewBuffer(nil)
cmd.Stdout = out
if err := cmd.Run(); err != nil {
panic(err)
}
if len(out.Bytes()) < 1 {
cmd := exec.Command("bash", "-c", `ifconfig eno1 | grep -o '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*' | head -n 1`)
cmd.Stdout = out
if err := cmd.Run(); err != nil {
panic(err)
}
}
url := fmt.Sprintf("http://%s:%s", strings.TrimSpace(string(out.Bytes())), port)
srv := &http.Server{
Addr: ":" + port,
Handler: s,
}
go func() {
if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
panic(err)
}
}()
for {
if _, err := http.Get(url); err == nil {
break
}
time.Sleep(time.Millisecond * 250)
}
srv.Addr = url
return srv
}
func getPort() string {
s := httptest.NewServer(nil)
s.Close()
time.Sleep(time.Millisecond * 2500)
seg := strings.Split(s.URL, ":")
return seg[len(seg)-1]
}
func TestStartServer(t *testing.T) {
s := StartServer()
defer s.Close()
resp, _ := http.Get(s.Addr)
b, _ := ioutil.ReadAll(resp.Body)
if len(b) < 1 {
t.Fatalf("failed to start fake auction server")
}
}

90
copart/copart/selenium_test.go Executable file
View File

@ -0,0 +1,90 @@
package copart
import (
"encoding/json"
"local/sandbox/selenium/copart/copart/auction"
"local/sandbox/selenium/copart/copart/browser"
"local/sandbox/selenium/copart/copart/config"
"log"
"os"
"testing"
"time"
)
func TestSelenium(t *testing.T) {
s := StartServer()
defer s.Close()
log.Printf("started faux auctions on %s", s.Addr)
b, err := browser.New()
if err != nil {
t.Fatal(err)
}
log.Println("made browser", s.Addr)
if err := b.Get(s.Addr); err != nil {
t.Fatal(err)
}
log.Printf("navigated to %s", s.Addr)
c := auction.NewCar()
if err := c.Parse(b.Driver); err != nil {
t.Fatal(err)
}
log.Printf("parsed car %s", c.String())
log.Println(c.Details)
}
func TestReal(t *testing.T) {
os.Args = []string{
"a",
"-addr",
"./out2.db",
"-db",
"map",
}
if err := config.New(); err != nil {
t.Fatal(err)
}
log.Println("Creating today...")
today, err := auction.NewToday()
if err != nil {
t.Fatal(err)
}
log.Println("Starting today...")
if err := today.Start(); err != nil {
t.Fatal(err)
}
for {
log.Println("Blocking empty list...")
time.Sleep(time.Second)
var list []string
if b, err := config.Values().DB.Get("LIST"); err != nil {
t.Fatal(err)
} else if err := json.Unmarshal(b, &list); err != nil {
t.Fatal(err)
} else if len(list) < 2 {
continue
} else {
log.Println("Dumping from list...")
for _, id := range list {
c := auction.NewCar()
if b, err := config.Values().DB.Get(id); err != nil {
t.Fatal(err)
} else if err := c.Decode(b); err != nil {
t.Fatal(err)
} else {
log.Println(c.String())
}
}
break
}
}
if err := today.Stop(); err != nil {
t.Fatal(err)
}
}

106
copart/copart/testdata/fix.go vendored Executable file
View File

@ -0,0 +1,106 @@
package main
import (
"bufio"
"encoding/json"
"fmt"
"local/sandbox/selenium/copart/copart/auction"
"local/storage"
"log"
"net/url"
"os"
"regexp"
"strings"
"time"
)
func main() {
storage.DefaultNamespace = "namespace"
s, err := storage.New(storage.BOLT, "./bolt.db")
if err != nil {
panic(err)
}
log.Println(s)
f, err := os.Open("./log2")
if err != nil {
panic(err)
}
defer f.Close()
list := []string{}
scn := bufio.NewScanner(f)
for scn.Scan() {
line := scn.Text()
if strings.Contains(line, "true = ") {
continue
}
m := regexp.MustCompile("\\[[^\\]]+\\]").FindAllString(line, 2)[1]
between := func(l, a, b string) string {
form := fmt.Sprintf("%s:[^(%s)]*%s", a, b, b)
c := regexp.MustCompile(form).FindString(l)
c = strings.TrimPrefix(c, fmt.Sprintf("%s:", a))
c = strings.TrimSuffix(c, fmt.Sprintf("%s", b))
return strings.TrimSpace(c)
}
bid := between(m, "bid", "title")
title := between(m, "title", "watched")
when := between(m, "when", "\\]")
when = regexp.MustCompile(":[0-9][0-9]\\.[0-9].*$").ReplaceAllString(when, "")
c := auction.NewCar()
c.Bid = bid
c.Title = title
c.TS, _ = time.Parse("2006-01-02 15:04", regexp.MustCompile(":[0-9][0-9]\\.[0-9].*$").ReplaceAllString(when, ""))
c.Details = map[string]string{
"Year": strings.Split(title, " ")[0],
}
c.Images = []*auction.Image{}
srcs := []string{}
if strings.Contains(c.Title, "CHEVROLET") {
srcs = []string{
"https://cs.copart.com/v1/AUTH_svc.pdoc00001/PIX133/eb332bcb-4d51-422c-a317-8bfb3729f368.JPG",
"https://cs.copart.com/v1/AUTH_svc.pdoc00001/PIX133/fb3ac542-bb52-4554-98a9-3979fed5edb1.JPG",
"https://cs.copart.com/v1/AUTH_svc.pdoc00001/PIX133/5c974805-c917-495a-8481-5e697a46ac25.JPG",
}
} else if strings.Contains(c.Title, "YUKON") {
srcs = []string{
"https://cs.copart.com/v1/AUTH_svc.pdoc00001/PIX145/c64e1510-9e81-4128-a285-e4cc45036670.JPG",
"https://cs.copart.com/v1/AUTH_svc.pdoc00001/PIX145/1ef2b374-5245-458c-a540-11ed1ea81f9b.JPG",
}
} else if strings.Contains(c.Title, "JEEP") {
srcs = []string{
"https://cs.copart.com/v1/AUTH_svc.pdoc00001/PIX137/8c9d27d3-3642-499c-86de-0bee685e116e.JPG",
"https://cs.copart.com/v1/AUTH_svc.pdoc00001/PIX137/d7b160cc-c171-473d-851f-c92bf3a58ee6.JPG",
}
} else if strings.Contains(c.Title, "HONDA") {
srcs = []string{
"https://cs.copart.com/v1/AUTH_svc.pdoc00001/PIX133/c9504579-3f31-4278-b020-2b1b37867c82.JPG",
}
} else if strings.Contains(c.Title, "MAZDA 3") {
srcs = []string{
"https://cs.copart.com/v1/AUTH_svc.pdoc00001/PIX133/fbc946db-bb03-4624-b8d4-b7723722c0d5.JPG",
"https://cs.copart.com/v1/AUTH_svc.pdoc00001/PIX133/3892e997-ca0c-4270-86cb-94b98cdfd28e.JPG",
"https://cs.copart.com/v1/AUTH_svc.pdoc00001/PIX133/3bee196b-219f-4b6b-b8cf-9d2797ab5113.JPG",
}
}
for _, src := range srcs {
u, _ := url.Parse(src)
c.Images = append(c.Images, &auction.Image{Src: u})
}
log.Println(c)
if b, err := c.Encode(); err != nil {
panic(err)
} else if err := s.Set(c.String(), b); err != nil {
panic(err)
}
list = append(list, c.String())
}
if err := scn.Err(); err != nil {
panic(err)
}
b, _ := json.Marshal(list)
if err := s.Set("LIST", b); err != nil {
panic(err)
}
}

553
copart/copart/testdata/log vendored Executable file
View File

@ -0,0 +1,553 @@
2019/06/14 13:44:33 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:32.100278808 -0600 MDT m=+549.472307556] == [bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:33.649979402 -0600 MDT m=+551.022008143])
2019/06/14 13:44:34 Blocking empty list...
2019/06/14 13:44:34 true = ([bid:$4,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:33.263653682 -0600 MDT m=+550.635682442] == [bid:$4,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:34.853057112 -0600 MDT m=+552.225085858])
2019/06/14 13:44:35 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:33.649979402 -0600 MDT m=+551.022008143] == [bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:35.209579405 -0600 MDT m=+552.581608152])
2019/06/14 13:44:35 Blocking empty list...
2019/06/14 13:44:36 Blocking empty list...
2019/06/14 13:44:36 true = ([bid:$4,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:34.853057112 -0600 MDT m=+552.225085858] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:36.442979544 -0600 MDT m=+553.815008292])
2019/06/14 13:44:36 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:35.209579405 -0600 MDT m=+552.581608152] == [bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:36.765530586 -0600 MDT m=+554.137559334])
2019/06/14 13:44:37 Blocking empty list...
2019/06/14 13:44:37 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:36.442979544 -0600 MDT m=+553.815008292] == [bid:$4,700 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:37.998799546 -0600 MDT m=+555.370828308])
2019/06/14 13:44:38 Blocking empty list...
2019/06/14 13:44:38 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:36.765530586 -0600 MDT m=+554.137559334] == [bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:38.309365279 -0600 MDT m=+555.681394016])
2019/06/14 13:44:39 Blocking empty list...
2019/06/14 13:44:39 true = ([bid:$4,700 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:37.998799546 -0600 MDT m=+555.370828308] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:39.632325485 -0600 MDT m=+557.004354235])
2019/06/14 13:44:39 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:38.309365279 -0600 MDT m=+555.681394016] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:39.876272196 -0600 MDT m=+557.248300968])
2019/06/14 13:44:40 Blocking empty list...
2019/06/14 13:44:41 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:39.632325485 -0600 MDT m=+557.004354235] == [bid:$4,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:41.210836371 -0600 MDT m=+558.582865114])
2019/06/14 13:44:41 Blocking empty list...
2019/06/14 13:44:41 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:39.876272196 -0600 MDT m=+557.248300968] == [bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:41.434892417 -0600 MDT m=+558.806921162])
2019/06/14 13:44:42 Blocking empty list...
2019/06/14 13:44:42 true = ([bid:$4,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:41.210836371 -0600 MDT m=+558.582865114] == [bid:$4,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:42.800903683 -0600 MDT m=+560.172932419])
2019/06/14 13:44:42 true = ([bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:41.434892417 -0600 MDT m=+558.806921162] == [bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:42.975489596 -0600 MDT m=+560.347518332])
2019/06/14 13:44:43 Blocking empty list...
2019/06/14 13:44:44 Blocking empty list...
2019/06/14 13:44:44 true = ([bid:$4,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:42.800903683 -0600 MDT m=+560.172932419] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:44.383681507 -0600 MDT m=+561.755710284])
2019/06/14 13:44:44 true = ([bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:42.975489596 -0600 MDT m=+560.347518332] == [bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:44.533291771 -0600 MDT m=+561.905320516])
2019/06/14 13:44:45 Blocking empty list...
2019/06/14 13:44:46 Blocking empty list...
2019/06/14 13:44:46 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:44.383681507 -0600 MDT m=+561.755710284] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:46.651673699 -0600 MDT m=+564.023702462])
2019/06/14 13:44:46 true = ([bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:44.533291771 -0600 MDT m=+561.905320516] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:46.71137253 -0600 MDT m=+564.083401292])
2019/06/14 13:44:47 Blocking empty list...
2019/06/14 13:44:48 Blocking empty list...
2019/06/14 13:44:49 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:46.651673699 -0600 MDT m=+564.023702462] == [bid:$5,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:49.04381699 -0600 MDT m=+566.415845754])
2019/06/14 13:44:49 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:46.71137253 -0600 MDT m=+564.083401292] == [bid:$800 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:49.075309089 -0600 MDT m=+566.447337833])
2019/06/14 13:44:49 Blocking empty list...
2019/06/14 13:44:50 Blocking empty list...
2019/06/14 13:44:50 true = ([bid:$5,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:49.04381699 -0600 MDT m=+566.415845754] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:50.626495561 -0600 MDT m=+567.998524315])
2019/06/14 13:44:50 true = ([bid:$800 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:49.075309089 -0600 MDT m=+566.447337833] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:50.637091128 -0600 MDT m=+568.009119874])
2019/06/14 13:44:51 Blocking empty list...
2019/06/14 13:44:52 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:50.637091128 -0600 MDT m=+568.009119874] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:52.201787818 -0600 MDT m=+569.573816555])
2019/06/14 13:44:52 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:50.626495561 -0600 MDT m=+567.998524315] == [bid:$5,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:52.210615356 -0600 MDT m=+569.582644106])
2019/06/14 13:44:52 Blocking empty list...
2019/06/14 13:44:53 Blocking empty list...
2019/06/14 13:44:53 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:52.201787818 -0600 MDT m=+569.573816555] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:53.785375027 -0600 MDT m=+571.157403770])
2019/06/14 13:44:53 true = ([bid:$5,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:52.210615356 -0600 MDT m=+569.582644106] == [bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:53.794478475 -0600 MDT m=+571.166507235])
2019/06/14 13:44:54 Blocking empty list...
2019/06/14 13:44:55 Blocking empty list...
2019/06/14 13:44:55 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:53.785375027 -0600 MDT m=+571.157403770] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:55.341663372 -0600 MDT m=+572.713692125])
2019/06/14 13:44:55 true = ([bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:53.794478475 -0600 MDT m=+571.166507235] == [bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:55.347619414 -0600 MDT m=+572.719648150])
2019/06/14 13:44:56 Blocking empty list...
2019/06/14 13:44:56 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:55.341663372 -0600 MDT m=+572.713692125] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:56.887273765 -0600 MDT m=+574.259302513])
2019/06/14 13:44:56 true = ([bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:55.347619414 -0600 MDT m=+572.719648150] == [bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:56.894005011 -0600 MDT m=+574.266033759])
2019/06/14 13:44:57 Blocking empty list...
2019/06/14 13:44:58 Blocking empty list...
2019/06/14 13:44:58 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:56.887273765 -0600 MDT m=+574.259302513] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:58.467862845 -0600 MDT m=+575.839891596])
2019/06/14 13:44:58 true = ([bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:56.894005011 -0600 MDT m=+574.266033759] == [bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:58.467875669 -0600 MDT m=+575.839904419])
2019/06/14 13:44:59 Blocking empty list...
2019/06/14 13:45:00 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:58.467862845 -0600 MDT m=+575.839891596] == [bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:00.029947727 -0600 MDT m=+577.401976473])
2019/06/14 13:45:00 true = ([bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:58.467875669 -0600 MDT m=+575.839904419] == [bid:$6,000 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:00.033625382 -0600 MDT m=+577.405654118])
2019/06/14 13:45:00 Blocking empty list...
2019/06/14 13:45:01 Blocking empty list...
2019/06/14 13:45:01 true = ([bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:00.029947727 -0600 MDT m=+577.401976473] == [bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:01.617679613 -0600 MDT m=+578.989708348])
2019/06/14 13:45:01 true = ([bid:$6,000 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:00.033625382 -0600 MDT m=+577.405654118] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:01.626412103 -0600 MDT m=+578.998440838])
2019/06/14 13:45:02 Blocking empty list...
2019/06/14 13:45:03 true = ([bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:01.617679613 -0600 MDT m=+578.989708348] == [bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:03.182911975 -0600 MDT m=+580.554940742])
2019/06/14 13:45:03 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:01.626412103 -0600 MDT m=+578.998440838] == [bid:$6,100 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:03.199787677 -0600 MDT m=+580.571816439])
2019/06/14 13:45:03 Blocking empty list...
2019/06/14 13:45:04 Blocking empty list...
2019/06/14 13:45:04 true = ([bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:03.182911975 -0600 MDT m=+580.554940742] == [bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:04.746031495 -0600 MDT m=+582.118060242])
2019/06/14 13:45:04 true = ([bid:$6,100 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:03.199787677 -0600 MDT m=+580.571816439] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:04.767179705 -0600 MDT m=+582.139208448])
2019/06/14 13:45:05 Blocking empty list...
2019/06/14 13:45:06 Blocking empty list...
2019/06/14 13:45:06 true = ([bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:04.746031495 -0600 MDT m=+582.118060242] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:06.310545892 -0600 MDT m=+583.682574636])
2019/06/14 13:45:06 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:04.767179705 -0600 MDT m=+582.139208448] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:06.335166826 -0600 MDT m=+583.707195567])
2019/06/14 13:45:07 Blocking empty list...
2019/06/14 13:45:07 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:06.310545892 -0600 MDT m=+583.682574636] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:07.883620143 -0600 MDT m=+585.255648901])
2019/06/14 13:45:07 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:06.335166826 -0600 MDT m=+583.707195567] == [bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:07.907584605 -0600 MDT m=+585.279613340])
2019/06/14 13:45:08 Blocking empty list...
2019/06/14 13:45:09 Blocking empty list...
2019/06/14 13:45:09 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:07.883620143 -0600 MDT m=+585.255648901] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:09.45518732 -0600 MDT m=+586.827216080])
2019/06/14 13:45:09 true = ([bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:07.907584605 -0600 MDT m=+585.279613340] == [bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:09.4663536 -0600 MDT m=+586.838382341])
2019/06/14 13:45:10 Blocking empty list...
2019/06/14 13:45:11 Blocking empty list...
2019/06/14 13:45:11 true = ([bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:09.4663536 -0600 MDT m=+586.838382341] == [bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:11.714388541 -0600 MDT m=+589.086417329])
2019/06/14 13:45:11 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:09.45518732 -0600 MDT m=+586.827216080] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:11.744893291 -0600 MDT m=+589.116922050])
2019/06/14 13:45:12 Blocking empty list...
2019/06/14 13:45:13 Blocking empty list...
2019/06/14 13:45:13 true = ([bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:11.714388541 -0600 MDT m=+589.086417329] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:13.45008916 -0600 MDT m=+590.822117920])
2019/06/14 13:45:13 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:11.744893291 -0600 MDT m=+589.116922050] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:13.467717253 -0600 MDT m=+590.839745995])
2019/06/14 13:45:14 Blocking empty list...
2019/06/14 13:45:15 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:13.45008916 -0600 MDT m=+590.822117920] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:15.028250727 -0600 MDT m=+592.400279501])
2019/06/14 13:45:15 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:13.467717253 -0600 MDT m=+590.839745995] == [bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:15.029365652 -0600 MDT m=+592.401394387])
2019/06/14 13:45:15 Blocking empty list...
2019/06/14 13:45:16 Blocking empty list...
2019/06/14 13:45:16 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:15.028250727 -0600 MDT m=+592.400279501] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:16.574778848 -0600 MDT m=+593.946807598])
2019/06/14 13:45:16 true = ([bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:15.029365652 -0600 MDT m=+592.401394387] == [bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:16.581757004 -0600 MDT m=+593.953785791])
2019/06/14 13:45:17 Blocking empty list...
2019/06/14 13:45:18 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:16.574778848 -0600 MDT m=+593.946807598] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:18.148148234 -0600 MDT m=+595.520177008])
2019/06/14 13:45:18 true = ([bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:16.581757004 -0600 MDT m=+593.953785791] == [bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:18.157707579 -0600 MDT m=+595.529736321])
2019/06/14 13:45:18 Blocking empty list...
2019/06/14 13:45:19 Blocking empty list...
2019/06/14 13:45:19 true = ([bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:18.157707579 -0600 MDT m=+595.529736321] == [bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:19.727213553 -0600 MDT m=+597.099242300])
2019/06/14 13:45:19 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:18.148148234 -0600 MDT m=+595.520177008] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:19.732192656 -0600 MDT m=+597.104221399])
2019/06/14 13:45:20 Blocking empty list...
2019/06/14 13:45:21 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:19.732192656 -0600 MDT m=+597.104221399] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:21.300980036 -0600 MDT m=+598.673008782])
2019/06/14 13:45:21 Blocking empty list...
2019/06/14 13:45:21 true = ([bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:19.727213553 -0600 MDT m=+597.099242300] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:21.307722352 -0600 MDT m=+598.679751090])
2019/06/14 13:45:22 Blocking empty list...
2019/06/14 13:45:23 Blocking empty list...
2019/06/14 13:45:23 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:21.300980036 -0600 MDT m=+598.673008782] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:23.379902263 -0600 MDT m=+600.751931031])
2019/06/14 13:45:23 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:21.307722352 -0600 MDT m=+598.679751090] == [bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:23.392826934 -0600 MDT m=+600.764855701])
2019/06/14 13:45:24 Blocking empty list...
2019/06/14 13:45:25 Blocking empty list...
2019/06/14 13:45:25 true = ([bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:23.392826934 -0600 MDT m=+600.764855701] == [bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:25.71438718 -0600 MDT m=+603.086415961])
2019/06/14 13:45:25 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:23.379902263 -0600 MDT m=+600.751931031] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:25.759869463 -0600 MDT m=+603.131898219])
2019/06/14 13:45:26 Blocking empty list...
2019/06/14 13:45:27 Blocking empty list...
2019/06/14 13:45:27 true = ([bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:25.71438718 -0600 MDT m=+603.086415961] == [bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:27.748442664 -0600 MDT m=+605.120471419])
2019/06/14 13:45:27 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:25.759869463 -0600 MDT m=+603.131898219] == [bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:27.762685583 -0600 MDT m=+605.134714377])
2019/06/14 13:45:28 Blocking empty list...
2019/06/14 13:45:29 Blocking empty list...
2019/06/14 13:45:29 true = ([bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:27.762685583 -0600 MDT m=+605.134714377] == [bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:29.693781661 -0600 MDT m=+607.065810420])
2019/06/14 13:45:29 true = ([bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:27.748442664 -0600 MDT m=+605.120471419] == [bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:29.7037451 -0600 MDT m=+607.075773851])
2019/06/14 13:45:30 Blocking empty list...
2019/06/14 13:45:31 Blocking empty list...
2019/06/14 13:45:31 true = ([bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:29.7037451 -0600 MDT m=+607.075773851] == [bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:31.581812917 -0600 MDT m=+608.953841681])
2019/06/14 13:45:31 true = ([bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:29.693781661 -0600 MDT m=+607.065810420] == [bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:31.603363109 -0600 MDT m=+608.975391926])
2019/06/14 13:45:32 Blocking empty list...
2019/06/14 13:45:33 true = ([bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:31.581812917 -0600 MDT m=+608.953841681] == [bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:33.129003954 -0600 MDT m=+610.501032706])
2019/06/14 13:45:33 true = ([bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:31.603363109 -0600 MDT m=+608.975391926] == [bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:33.154188308 -0600 MDT m=+610.526217074])
2019/06/14 13:45:33 Blocking empty list...
2019/06/14 13:45:34 Blocking empty list...
2019/06/14 13:45:34 true = ([bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:33.129003954 -0600 MDT m=+610.501032706] == [bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:34.698293537 -0600 MDT m=+612.070322308])
2019/06/14 13:45:34 true = ([bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:33.154188308 -0600 MDT m=+610.526217074] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:34.740571037 -0600 MDT m=+612.112599799])
2019/06/14 13:45:35 Blocking empty list...
2019/06/14 13:45:36 Blocking empty list...
2019/06/14 13:45:36 true = ([bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:34.698293537 -0600 MDT m=+612.070322308] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:36.670375341 -0600 MDT m=+614.042404108])
2019/06/14 13:45:36 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:34.740571037 -0600 MDT m=+612.112599799] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:36.714017157 -0600 MDT m=+614.086045966])
2019/06/14 13:45:37 Blocking empty list...
2019/06/14 13:45:38 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:36.670375341 -0600 MDT m=+614.042404108] == [bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:38.247777676 -0600 MDT m=+615.619806410])
2019/06/14 13:45:38 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:36.714017157 -0600 MDT m=+614.086045966] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:38.270868543 -0600 MDT m=+615.642897295])
2019/06/14 13:45:38 Blocking empty list...
2019/06/14 13:45:39 Blocking empty list...
2019/06/14 13:45:39 true = ([bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:38.247777676 -0600 MDT m=+615.619806410] == [bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:39.820522402 -0600 MDT m=+617.192551139])
2019/06/14 13:45:39 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:38.270868543 -0600 MDT m=+615.642897295] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:39.840696355 -0600 MDT m=+617.212725106])
2019/06/14 13:45:40 Blocking empty list...
2019/06/14 13:45:41 Blocking empty list...
2019/06/14 13:45:41 true = ([bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:39.820522402 -0600 MDT m=+617.192551139] == [bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:41.865548025 -0600 MDT m=+619.237576784])
2019/06/14 13:45:41 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:39.840696355 -0600 MDT m=+617.212725106] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:41.87975323 -0600 MDT m=+619.251782000])
2019/06/14 13:45:42 Blocking empty list...
2019/06/14 13:45:43 Blocking empty list...
2019/06/14 13:45:44 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:41.87975323 -0600 MDT m=+619.251782000] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:44.12899537 -0600 MDT m=+621.501024149])
2019/06/14 13:45:44 true = ([bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:41.865548025 -0600 MDT m=+619.237576784] == [bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:44.160166521 -0600 MDT m=+621.532195282])
2019/06/14 13:45:44 Blocking empty list...
2019/06/14 13:45:45 Blocking empty list...
2019/06/14 13:45:45 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:44.12899537 -0600 MDT m=+621.501024149] == [bid:Next Item on title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:45.698231339 -0600 MDT m=+623.070260115])
2019/06/14 13:45:45 true = ([bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:44.160166521 -0600 MDT m=+621.532195282] == [bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:45.730591096 -0600 MDT m=+623.102619832])
2019/06/14 13:45:46 Blocking empty list...
2019/06/14 13:45:47 true = ([bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:45.730591096 -0600 MDT m=+623.102619832] == [bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:47.300433357 -0600 MDT m=+624.672462125])
2019/06/14 13:45:47 Blocking empty list...
2019/06/14 13:45:47 DETAIL 8 6
2019/06/14 13:45:47 false = ([bid:Next Item on title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:45.698231339 -0600 MDT m=+623.070260115] == [bid:$950 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:47.326540361 -0600 MDT m=+624.698569101])
2019/06/14 13:45:47 DETAIL 8 6
2019/06/14 13:45:47 TOP
2019/06/14 13:45:47 C [bid:$950 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:47.970680447 -0600 MDT m=+625.342709201]
2019/06/14 13:45:48 Blocking empty list...
2019/06/14 13:45:48 true = ([bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:47.300433357 -0600 MDT m=+624.672462125] == [bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:48.875565095 -0600 MDT m=+626.247593841])
2019/06/14 13:45:49 Blocking empty list...
2019/06/14 13:45:49 true = ([bid:$950 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:47.970680447 -0600 MDT m=+625.342709201] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:49.530146108 -0600 MDT m=+626.902174848])
2019/06/14 13:45:50 Blocking empty list...
2019/06/14 13:45:50 true = ([bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:48.875565095 -0600 MDT m=+626.247593841] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:50.441141654 -0600 MDT m=+627.813170424])
2019/06/14 13:45:51 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:49.530146108 -0600 MDT m=+626.902174848] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:51.092703578 -0600 MDT m=+628.464732312])
2019/06/14 13:45:51 Blocking empty list...
2019/06/14 13:45:52 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:50.441141654 -0600 MDT m=+627.813170424] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:52.014105523 -0600 MDT m=+629.386134268])
2019/06/14 13:45:52 Blocking empty list...
2019/06/14 13:45:52 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:51.092703578 -0600 MDT m=+628.464732312] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:52.666563883 -0600 MDT m=+630.038592628])
2019/06/14 13:45:53 Blocking empty list...
2019/06/14 13:45:53 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:52.014105523 -0600 MDT m=+629.386134268] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:53.557551959 -0600 MDT m=+630.929580695])
2019/06/14 13:45:54 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:52.666563883 -0600 MDT m=+630.038592628] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:54.239611178 -0600 MDT m=+631.611639922])
2019/06/14 13:45:54 Blocking empty list...
2019/06/14 13:45:55 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:53.557551959 -0600 MDT m=+630.929580695] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:55.114075035 -0600 MDT m=+632.486103788])
2019/06/14 13:45:55 Blocking empty list...
2019/06/14 13:45:55 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:54.239611178 -0600 MDT m=+631.611639922] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:55.804221548 -0600 MDT m=+633.176250310])
2019/06/14 13:45:56 Blocking empty list...
2019/06/14 13:45:56 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:55.114075035 -0600 MDT m=+632.486103788] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:56.706568281 -0600 MDT m=+634.078597042])
2019/06/14 13:45:57 Blocking empty list...
2019/06/14 13:45:57 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:55.804221548 -0600 MDT m=+633.176250310] == [bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:57.361048223 -0600 MDT m=+634.733076974])
2019/06/14 13:45:58 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:56.706568281 -0600 MDT m=+634.078597042] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:58.261410026 -0600 MDT m=+635.633438778])
2019/06/14 13:45:58 Blocking empty list...
2019/06/14 13:45:58 true = ([bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:57.361048223 -0600 MDT m=+634.733076974] == [bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:58.912388766 -0600 MDT m=+636.284417514])
2019/06/14 13:45:59 Blocking empty list...
2019/06/14 13:45:59 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:58.261410026 -0600 MDT m=+635.633438778] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:59.82282752 -0600 MDT m=+637.194856272])
2019/06/14 13:46:00 Blocking empty list...
2019/06/14 13:46:00 true = ([bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:58.912388766 -0600 MDT m=+636.284417514] == [bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:00.465703716 -0600 MDT m=+637.837732454])
2019/06/14 13:46:01 Blocking empty list...
2019/06/14 13:46:01 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:59.82282752 -0600 MDT m=+637.194856272] == [bid:Bonus title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:01.397741474 -0600 MDT m=+638.769770221])
2019/06/14 13:46:02 true = ([bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:00.465703716 -0600 MDT m=+637.837732454] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:02.023624181 -0600 MDT m=+639.395652927])
2019/06/14 13:46:02 Blocking empty list...
2019/06/14 13:46:03 true = ([bid:Bonus title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:01.397741474 -0600 MDT m=+638.769770221] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:03.006045999 -0600 MDT m=+640.378074735])
2019/06/14 13:46:03 Blocking empty list...
2019/06/14 13:46:03 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:02.023624181 -0600 MDT m=+639.395652927] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:03.58135933 -0600 MDT m=+640.953388064])
2019/06/14 13:46:04 Blocking empty list...
2019/06/14 13:46:04 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:03.006045999 -0600 MDT m=+640.378074735] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:04.578964932 -0600 MDT m=+641.950993680])
2019/06/14 13:46:05 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:03.58135933 -0600 MDT m=+640.953388064] == [bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:05.140126563 -0600 MDT m=+642.512155309])
2019/06/14 13:46:05 Blocking empty list...
2019/06/14 13:46:06 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:04.578964932 -0600 MDT m=+641.950993680] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:06.178025052 -0600 MDT m=+643.550053786])
2019/06/14 13:46:06 Blocking empty list...
2019/06/14 13:46:06 true = ([bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:05.140126563 -0600 MDT m=+642.512155309] == [bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:06.697389814 -0600 MDT m=+644.069418561])
2019/06/14 13:46:07 Blocking empty list...
2019/06/14 13:46:07 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:06.178025052 -0600 MDT m=+643.550053786] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:07.780702876 -0600 MDT m=+645.152731610])
2019/06/14 13:46:08 true = ([bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:06.697389814 -0600 MDT m=+644.069418561] == [bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:08.248101491 -0600 MDT m=+645.620130237])
2019/06/14 13:46:08 Blocking empty list...
2019/06/14 13:46:09 Blocking empty list...
2019/06/14 13:46:09 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:07.780702876 -0600 MDT m=+645.152731610] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:09.386820437 -0600 MDT m=+646.758849193])
2019/06/14 13:46:09 true = ([bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:08.248101491 -0600 MDT m=+645.620130237] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:09.818455714 -0600 MDT m=+647.190484458])
2019/06/14 13:46:10 Blocking empty list...
2019/06/14 13:46:10 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:09.386820437 -0600 MDT m=+646.758849193] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:10.971483398 -0600 MDT m=+648.343512143])
2019/06/14 13:46:11 Blocking empty list...
2019/06/14 13:46:11 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:09.818455714 -0600 MDT m=+647.190484458] == [bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:11.378239494 -0600 MDT m=+648.750268245])
2019/06/14 13:46:12 Blocking empty list...
2019/06/14 13:46:12 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:10.971483398 -0600 MDT m=+648.343512143] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:12.537834103 -0600 MDT m=+649.909862840])
2019/06/14 13:46:12 true = ([bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:11.378239494 -0600 MDT m=+648.750268245] == [bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:12.921818006 -0600 MDT m=+650.293846777])
2019/06/14 13:46:13 Blocking empty list...
2019/06/14 13:46:14 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:12.537834103 -0600 MDT m=+649.909862840] == [bid:Next Item on title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:14.115315236 -0600 MDT m=+651.487343970])
2019/06/14 13:46:14 Blocking empty list...
2019/06/14 13:46:14 true = ([bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:12.921818006 -0600 MDT m=+650.293846777] == [bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:14.471067849 -0600 MDT m=+651.843096596])
2019/06/14 13:46:15 Blocking empty list...
2019/06/14 13:46:15 DETAIL FRONT END REAR END
2019/06/14 13:46:15 false = ([bid:Next Item on title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:14.115315236 -0600 MDT m=+651.487343970] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:15.765589239 -0600 MDT m=+653.137617986])
2019/06/14 13:46:15 DETAIL SIDE N/A
2019/06/14 13:46:15 TOP
2019/06/14 13:46:16 true = ([bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:14.471067849 -0600 MDT m=+651.843096596] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:16.02007468 -0600 MDT m=+653.392103448])
2019/06/14 13:46:16 Blocking empty list...
2019/06/14 13:46:16 C [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:16.390025771 -0600 MDT m=+653.762054512]
2019/06/14 13:46:17 Blocking empty list...
2019/06/14 13:46:17 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:16.02007468 -0600 MDT m=+653.392103448] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:17.651753355 -0600 MDT m=+655.023782106])
2019/06/14 13:46:17 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:16.390025771 -0600 MDT m=+653.762054512] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:17.945675122 -0600 MDT m=+655.317703865])
2019/06/14 13:46:18 Blocking empty list...
2019/06/14 13:46:19 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:17.651753355 -0600 MDT m=+655.023782106] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:19.255879024 -0600 MDT m=+656.627907787])
2019/06/14 13:46:19 Blocking empty list...
2019/06/14 13:46:19 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:17.945675122 -0600 MDT m=+655.317703865] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:19.503173988 -0600 MDT m=+656.875202744])
2019/06/14 13:46:20 Blocking empty list...
2019/06/14 13:46:20 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:19.255879024 -0600 MDT m=+656.627907787] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:20.879860426 -0600 MDT m=+658.251889173])
2019/06/14 13:46:21 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:19.503173988 -0600 MDT m=+656.875202744] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:21.074419533 -0600 MDT m=+658.446448280])
2019/06/14 13:46:21 Blocking empty list...
2019/06/14 13:46:22 Blocking empty list...
2019/06/14 13:46:22 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:20.879860426 -0600 MDT m=+658.251889173] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:22.472975892 -0600 MDT m=+659.845004657])
2019/06/14 13:46:22 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:21.074419533 -0600 MDT m=+658.446448280] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:22.638350764 -0600 MDT m=+660.010379508])
2019/06/14 13:46:23 Blocking empty list...
2019/06/14 13:46:24 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:22.472975892 -0600 MDT m=+659.845004657] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:24.039286396 -0600 MDT m=+661.411315153])
2019/06/14 13:46:24 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:22.638350764 -0600 MDT m=+660.010379508] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:24.210076006 -0600 MDT m=+661.582104749])
2019/06/14 13:46:24 Blocking empty list...
2019/06/14 13:46:25 Blocking empty list...
2019/06/14 13:46:25 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:24.039286396 -0600 MDT m=+661.411315153] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:25.623141495 -0600 MDT m=+662.995170232])
2019/06/14 13:46:25 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:24.210076006 -0600 MDT m=+661.582104749] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:25.77105872 -0600 MDT m=+663.143087460])
2019/06/14 13:46:26 Blocking empty list...
2019/06/14 13:46:27 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:25.623141495 -0600 MDT m=+662.995170232] == [bid:Bonus title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:27.217110188 -0600 MDT m=+664.589138960])
2019/06/14 13:46:27 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:25.77105872 -0600 MDT m=+663.143087460] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:27.316556146 -0600 MDT m=+664.688584889])
2019/06/14 13:46:27 Blocking empty list...
2019/06/14 13:46:28 Blocking empty list...
2019/06/14 13:46:28 true = ([bid:Bonus title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:27.217110188 -0600 MDT m=+664.589138960] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:28.804421116 -0600 MDT m=+666.176449864])
2019/06/14 13:46:28 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:27.316556146 -0600 MDT m=+664.688584889] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:28.874885439 -0600 MDT m=+666.246914183])
2019/06/14 13:46:29 Blocking empty list...
2019/06/14 13:46:30 Blocking empty list...
2019/06/14 13:46:30 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:28.804421116 -0600 MDT m=+666.176449864] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:30.378302778 -0600 MDT m=+667.750331525])
2019/06/14 13:46:30 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:28.874885439 -0600 MDT m=+666.246914183] == [bid:Bonus title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:30.430949455 -0600 MDT m=+667.802978198])
2019/06/14 13:46:31 Blocking empty list...
2019/06/14 13:46:31 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:30.378302778 -0600 MDT m=+667.750331525] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:31.953632384 -0600 MDT m=+669.325661131])
2019/06/14 13:46:31 true = ([bid:Bonus title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:30.430949455 -0600 MDT m=+667.802978198] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:31.996367484 -0600 MDT m=+669.368396221])
2019/06/14 13:46:32 Blocking empty list...
2019/06/14 13:46:33 Blocking empty list...
2019/06/14 13:46:33 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:31.953632384 -0600 MDT m=+669.325661131] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:33.521086939 -0600 MDT m=+670.893115677])
2019/06/14 13:46:33 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:31.996367484 -0600 MDT m=+669.368396221] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:33.571119989 -0600 MDT m=+670.943148735])
2019/06/14 13:46:34 Blocking empty list...
2019/06/14 13:46:35 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:33.521086939 -0600 MDT m=+670.893115677] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:35.111873847 -0600 MDT m=+672.483902604])
2019/06/14 13:46:35 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:33.571119989 -0600 MDT m=+670.943148735] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:35.140044919 -0600 MDT m=+672.512073682])
2019/06/14 13:46:35 Blocking empty list...
2019/06/14 13:46:36 Blocking empty list...
2019/06/14 13:46:36 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:35.111873847 -0600 MDT m=+672.483902604] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:36.691188678 -0600 MDT m=+674.063217431])
2019/06/14 13:46:36 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:35.140044919 -0600 MDT m=+672.512073682] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:36.72922032 -0600 MDT m=+674.101249074])
2019/06/14 13:46:37 Blocking empty list...
2019/06/14 13:46:38 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:36.691188678 -0600 MDT m=+674.063217431] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:38.271432569 -0600 MDT m=+675.643461305])
2019/06/14 13:46:38 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:36.72922032 -0600 MDT m=+674.101249074] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:38.298540491 -0600 MDT m=+675.670569229])
2019/06/14 13:46:38 Blocking empty list...
2019/06/14 13:46:39 Blocking empty list...
2019/06/14 13:46:39 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:38.271432569 -0600 MDT m=+675.643461305] == [bid:Next Item on title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:39.854917796 -0600 MDT m=+677.226946542])
2019/06/14 13:46:39 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:38.298540491 -0600 MDT m=+675.670569229] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:39.86269596 -0600 MDT m=+677.234724702])
2019/06/14 13:46:40 Blocking empty list...
2019/06/14 13:46:41 Blocking empty list...
2019/06/14 13:46:41 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:39.86269596 -0600 MDT m=+677.234724702] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:41.421462137 -0600 MDT m=+678.793490880])
2019/06/14 13:46:41 DETAIL 2.0L 4 4.8L 8
2019/06/14 13:46:41 false = ([bid:Next Item on title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:39.854917796 -0600 MDT m=+677.226946542] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:41.444806466 -0600 MDT m=+678.816835202])
2019/06/14 13:46:41 DETAIL $2,316 $5,782
2019/06/14 13:46:41 TOP
2019/06/14 13:46:42 C [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:42.058019248 -0600 MDT m=+679.430047994]
2019/06/14 13:46:42 Blocking empty list...
2019/06/14 13:46:42 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:41.421462137 -0600 MDT m=+678.793490880] == [bid:Sold on title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:42.978837839 -0600 MDT m=+680.350866588])
2019/06/14 13:46:43 Blocking empty list...
2019/06/14 13:46:43 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:42.058019248 -0600 MDT m=+679.430047994] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:43.652922025 -0600 MDT m=+681.024950771])
2019/06/14 13:46:44 stale element reference: stale element reference: element is not attached to the page document
(Session info: chrome=75.0.3770.80)
2019/06/14 13:46:44 Blocking empty list...
2019/06/14 13:46:45 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:43.652922025 -0600 MDT m=+681.024950771] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:45.212745952 -0600 MDT m=+682.584774692])
2019/06/14 13:46:45 Blocking empty list...
2019/06/14 13:46:46 Blocking empty list...
2019/06/14 13:46:46 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:45.212745952 -0600 MDT m=+682.584774692] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:46.779907351 -0600 MDT m=+684.151936105])
2019/06/14 13:46:47 Blocking empty list...
2019/06/14 13:46:48 Blocking empty list...
2019/06/14 13:46:48 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:46.779907351 -0600 MDT m=+684.151936105] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:48.37493185 -0600 MDT m=+685.746960593])
2019/06/14 13:46:49 Blocking empty list...
2019/06/14 13:46:50 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:48.37493185 -0600 MDT m=+685.746960593] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:50.006089325 -0600 MDT m=+687.378118062])
2019/06/14 13:46:50 Blocking empty list...
2019/06/14 13:46:51 Blocking empty list...
2019/06/14 13:46:51 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:50.006089325 -0600 MDT m=+687.378118062] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:51.571964801 -0600 MDT m=+688.943993546])
2019/06/14 13:46:52 Blocking empty list...
2019/06/14 13:46:53 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:51.571964801 -0600 MDT m=+688.943993546] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:53.168928243 -0600 MDT m=+690.540956989])
2019/06/14 13:46:53 Blocking empty list...
2019/06/14 13:46:54 Blocking empty list...
2019/06/14 13:46:54 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:53.168928243 -0600 MDT m=+690.540956989] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:54.746981537 -0600 MDT m=+692.119010284])
2019/06/14 13:46:55 Blocking empty list...
2019/06/14 13:46:56 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:54.746981537 -0600 MDT m=+692.119010284] == [bid:Sold! title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:56.312143023 -0600 MDT m=+693.684171758])
2019/06/14 13:46:56 Blocking empty list...
2019/06/14 13:46:57 Blocking empty list...
2019/06/14 13:46:57 DETAIL 107,847 - Actual 157,979 - Exempt
2019/06/14 13:46:57 false = ([bid:Sold! title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:56.312143023 -0600 MDT m=+693.684171758] == [bid:Next Item on title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:57.92401858 -0600 MDT m=+695.296047330])
2019/06/14 13:46:57 DETAIL 107,847 - Actual 157,979 - Exempt
2019/06/14 13:46:58 TOP
2019/06/14 13:46:58 Blocking empty list...
2019/06/14 13:46:58 C [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:46:58.636284949 -0600 MDT m=+696.008313695]
2019/06/14 13:46:59 Blocking empty list...
2019/06/14 13:47:00 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:46:58.636284949 -0600 MDT m=+696.008313695] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:00.228379187 -0600 MDT m=+697.600407934])
2019/06/14 13:47:00 Blocking empty list...
2019/06/14 13:47:01 Blocking empty list...
2019/06/14 13:47:01 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:00.228379187 -0600 MDT m=+697.600407934] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:01.828705581 -0600 MDT m=+699.200734322])
2019/06/14 13:47:02 Blocking empty list...
2019/06/14 13:47:03 Blocking empty list...
2019/06/14 13:47:03 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:01.828705581 -0600 MDT m=+699.200734322] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:03.404720678 -0600 MDT m=+700.776749424])
2019/06/14 13:47:04 Blocking empty list...
2019/06/14 13:47:04 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:03.404720678 -0600 MDT m=+700.776749424] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:04.995027354 -0600 MDT m=+702.367056092])
2019/06/14 13:47:05 Blocking empty list...
2019/06/14 13:47:06 Blocking empty list...
2019/06/14 13:47:06 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:04.995027354 -0600 MDT m=+702.367056092] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:06.553799294 -0600 MDT m=+703.925828028])
2019/06/14 13:47:07 Blocking empty list...
2019/06/14 13:47:08 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:06.553799294 -0600 MDT m=+703.925828028] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:08.135736901 -0600 MDT m=+705.507765668])
2019/06/14 13:47:08 Blocking empty list...
2019/06/14 13:47:09 Blocking empty list...
2019/06/14 13:47:09 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:08.135736901 -0600 MDT m=+705.507765668] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:09.740053433 -0600 MDT m=+707.112082171])
2019/06/14 13:47:10 Blocking empty list...
2019/06/14 13:47:11 Blocking empty list...
2019/06/14 13:47:11 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:09.740053433 -0600 MDT m=+707.112082171] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:11.355342645 -0600 MDT m=+708.727371404])
2019/06/14 13:47:12 Blocking empty list...
2019/06/14 13:47:12 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:11.355342645 -0600 MDT m=+708.727371404] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:12.953509692 -0600 MDT m=+710.325538426])
2019/06/14 13:47:13 Blocking empty list...
2019/06/14 13:47:14 Blocking empty list...
2019/06/14 13:47:14 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:12.953509692 -0600 MDT m=+710.325538426] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:14.544215968 -0600 MDT m=+711.916244711])
2019/06/14 13:47:15 Blocking empty list...
2019/06/14 13:47:16 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:14.544215968 -0600 MDT m=+711.916244711] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:16.111428829 -0600 MDT m=+713.483457570])
2019/06/14 13:47:16 Blocking empty list...
2019/06/14 13:47:17 Blocking empty list...
2019/06/14 13:47:17 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:16.111428829 -0600 MDT m=+713.483457570] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:17.744188889 -0600 MDT m=+715.116217639])
2019/06/14 13:47:18 Blocking empty list...
2019/06/14 13:47:19 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:17.744188889 -0600 MDT m=+715.116217639] == [bid:Next Item on title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:19.31997218 -0600 MDT m=+716.692000915])
2019/06/14 13:47:19 Blocking empty list...
2019/06/14 13:47:20 Blocking empty list...
2019/06/14 13:47:20 DETAIL $24,039 $7,664
2019/06/14 13:47:20 false = ([bid:Next Item on title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:19.31997218 -0600 MDT m=+716.692000915] == [bid:$7,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:20.975960694 -0600 MDT m=+718.347989437])
2019/06/14 13:47:20 DETAIL BLACK BLUE
2019/06/14 13:47:21 TOP
2019/06/14 13:47:21 Blocking empty list...
2019/06/14 13:47:21 C [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:21.632839693 -0600 MDT m=+719.004868430]
2019/06/14 13:47:22 Blocking empty list...
2019/06/14 13:47:23 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:21.632839693 -0600 MDT m=+719.004868430] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:23.246285645 -0600 MDT m=+720.618314400])
2019/06/14 13:47:23 Blocking empty list...
2019/06/14 13:47:24 Blocking empty list...
2019/06/14 13:47:24 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:23.246285645 -0600 MDT m=+720.618314400] == [bid:$8,000 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:24.857513644 -0600 MDT m=+722.229542387])
2019/06/14 13:47:25 Blocking empty list...
2019/06/14 13:47:26 Blocking empty list...
2019/06/14 13:47:26 true = ([bid:$8,000 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:24.857513644 -0600 MDT m=+722.229542387] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:26.442221476 -0600 MDT m=+723.814250212])
2019/06/14 13:47:27 Blocking empty list...
2019/06/14 13:47:27 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:26.442221476 -0600 MDT m=+723.814250212] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:27.9990393 -0600 MDT m=+725.371068068])
2019/06/14 13:47:28 Blocking empty list...
2019/06/14 13:47:29 Blocking empty list...
2019/06/14 13:47:29 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:27.9990393 -0600 MDT m=+725.371068068] == [bid:$8,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:29.61021549 -0600 MDT m=+726.982244236])
2019/06/14 13:47:30 Blocking empty list...
2019/06/14 13:47:31 true = ([bid:$8,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:29.61021549 -0600 MDT m=+726.982244236] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:31.217544509 -0600 MDT m=+728.589573280])
2019/06/14 13:47:31 Blocking empty list...
2019/06/14 13:47:32 Blocking empty list...
2019/06/14 13:47:32 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:31.217544509 -0600 MDT m=+728.589573280] == [bid:$8,400 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:32.789748968 -0600 MDT m=+730.161777737])
2019/06/14 13:47:33 Blocking empty list...
2019/06/14 13:47:34 Blocking empty list...
2019/06/14 13:47:34 true = ([bid:$8,400 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:32.789748968 -0600 MDT m=+730.161777737] == [bid:$8,400 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:34.359088515 -0600 MDT m=+731.731117253])
2019/06/14 13:47:35 Blocking empty list...
2019/06/14 13:47:36 Blocking empty list...
2019/06/14 13:47:36 true = ([bid:$8,400 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:34.359088515 -0600 MDT m=+731.731117253] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:36.560628194 -0600 MDT m=+733.932656950])
2019/06/14 13:47:37 Blocking empty list...
2019/06/14 13:47:38 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:36.560628194 -0600 MDT m=+733.932656950] == [bid:$8,600 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:38.175551491 -0600 MDT m=+735.547580230])
2019/06/14 13:47:38 Blocking empty list...
2019/06/14 13:47:39 Blocking empty list...
2019/06/14 13:47:39 true = ([bid:$8,600 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:38.175551491 -0600 MDT m=+735.547580230] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:39.73534806 -0600 MDT m=+737.107376830])
2019/06/14 13:47:40 Blocking empty list...
2019/06/14 13:47:41 Blocking empty list...
2019/06/14 13:47:41 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:39.73534806 -0600 MDT m=+737.107376830] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:41.333835964 -0600 MDT m=+738.705864712])
2019/06/14 13:47:42 Blocking empty list...
2019/06/14 13:47:42 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:41.333835964 -0600 MDT m=+738.705864712] == [bid:$8,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:42.926327488 -0600 MDT m=+740.298356250])
2019/06/14 13:47:43 Blocking empty list...
2019/06/14 13:47:44 Blocking empty list...
2019/06/14 13:47:44 true = ([bid:$8,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:42.926327488 -0600 MDT m=+740.298356250] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:44.493785479 -0600 MDT m=+741.865814216])
2019/06/14 13:47:45 Blocking empty list...
2019/06/14 13:47:46 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:44.493785479 -0600 MDT m=+741.865814216] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:46.092736556 -0600 MDT m=+743.464765324])
2019/06/14 13:47:46 Blocking empty list...
2019/06/14 13:47:47 Blocking empty list...
2019/06/14 13:47:47 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:46.092736556 -0600 MDT m=+743.464765324] == [bid:$9,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:47.67597531 -0600 MDT m=+745.048004045])
2019/06/14 13:47:48 Blocking empty list...
2019/06/14 13:47:49 true = ([bid:$9,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:47.67597531 -0600 MDT m=+745.048004045] == [bid:$9,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:49.283213406 -0600 MDT m=+746.655242158])
2019/06/14 13:47:49 Blocking empty list...
2019/06/14 13:47:50 Blocking empty list...
2019/06/14 13:47:50 true = ([bid:$9,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:49.283213406 -0600 MDT m=+746.655242158] == [bid:$9,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:50.867335397 -0600 MDT m=+748.239364160])
2019/06/14 13:47:51 Blocking empty list...
2019/06/14 13:47:52 Blocking empty list...
2019/06/14 13:47:52 true = ([bid:$9,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:50.867335397 -0600 MDT m=+748.239364160] == [bid:$9,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:52.436153467 -0600 MDT m=+749.808182224])
2019/06/14 13:47:53 Blocking empty list...
2019/06/14 13:47:54 true = ([bid:$9,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:52.436153467 -0600 MDT m=+749.808182224] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:54.03762827 -0600 MDT m=+751.409657021])
2019/06/14 13:47:54 Blocking empty list...
2019/06/14 13:47:55 Blocking empty list...
2019/06/14 13:47:55 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:54.03762827 -0600 MDT m=+751.409657021] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:55.599953643 -0600 MDT m=+752.971982388])
2019/06/14 13:47:56 Blocking empty list...
2019/06/14 13:47:57 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:55.599953643 -0600 MDT m=+752.971982388] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:57.206392983 -0600 MDT m=+754.578421720])
2019/06/14 13:47:57 Blocking empty list...
2019/06/14 13:47:58 Blocking empty list...
2019/06/14 13:47:58 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:57.206392983 -0600 MDT m=+754.578421720] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:58.788865612 -0600 MDT m=+756.160894358])
2019/06/14 13:47:59 Blocking empty list...
2019/06/14 13:48:00 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:58.788865612 -0600 MDT m=+756.160894358] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:00.334639215 -0600 MDT m=+757.706667963])
2019/06/14 13:48:00 Blocking empty list...
2019/06/14 13:48:01 Blocking empty list...
2019/06/14 13:48:01 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:00.334639215 -0600 MDT m=+757.706667963] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:01.910710068 -0600 MDT m=+759.282738803])
2019/06/14 13:48:02 Blocking empty list...
2019/06/14 13:48:03 Blocking empty list...
2019/06/14 13:48:03 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:01.910710068 -0600 MDT m=+759.282738803] == [bid:$9,600 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:03.504547263 -0600 MDT m=+760.876576007])
2019/06/14 13:48:04 Blocking empty list...
2019/06/14 13:48:05 true = ([bid:$9,600 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:03.504547263 -0600 MDT m=+760.876576007] == [bid:$9,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:05.075648795 -0600 MDT m=+762.447677531])
2019/06/14 13:48:05 Blocking empty list...
2019/06/14 13:48:06 Blocking empty list...
2019/06/14 13:48:06 true = ([bid:$9,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:05.075648795 -0600 MDT m=+762.447677531] == [bid:$9,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:06.677601587 -0600 MDT m=+764.049630333])
2019/06/14 13:48:07 Blocking empty list...
2019/06/14 13:48:08 true = ([bid:$9,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:06.677601587 -0600 MDT m=+764.049630333] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:08.243314838 -0600 MDT m=+765.615343582])
2019/06/14 13:48:08 Blocking empty list...
2019/06/14 13:48:09 Blocking empty list...
2019/06/14 13:48:09 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:08.243314838 -0600 MDT m=+765.615343582] == [bid:$9,800 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:09.816861858 -0600 MDT m=+767.188890627])
2019/06/14 13:48:10 Blocking empty list...
2019/06/14 13:48:11 Blocking empty list...
2019/06/14 13:48:11 true = ([bid:$9,800 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:09.816861858 -0600 MDT m=+767.188890627] == [bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:11.401970852 -0600 MDT m=+768.773999592])
2019/06/14 13:48:12 Blocking empty list...
2019/06/14 13:48:13 Blocking empty list...
2019/06/14 13:48:13 true = ([bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:11.401970852 -0600 MDT m=+768.773999592] == [bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:13.385943303 -0600 MDT m=+770.757972044])
2019/06/14 13:48:14 Blocking empty list...
2019/06/14 13:48:15 true = ([bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:13.385943303 -0600 MDT m=+770.757972044] == [bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:15.010900934 -0600 MDT m=+772.382929685])
2019/06/14 13:48:15 Blocking empty list...
2019/06/14 13:48:16 Blocking empty list...
2019/06/14 13:48:16 true = ([bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:15.010900934 -0600 MDT m=+772.382929685] == [bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:16.582646794 -0600 MDT m=+773.954675536])
2019/06/14 13:48:17 Blocking empty list...
2019/06/14 13:48:18 true = ([bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:16.582646794 -0600 MDT m=+773.954675536] == [bid:$10,000 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:18.158918859 -0600 MDT m=+775.530947603])
2019/06/14 13:48:18 Blocking empty list...
2019/06/14 13:48:19 Blocking empty list...
2019/06/14 13:48:19 true = ([bid:$10,000 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:18.158918859 -0600 MDT m=+775.530947603] == [bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:19.762418285 -0600 MDT m=+777.134447038])
2019/06/14 13:48:20 Blocking empty list...
2019/06/14 13:48:21 Blocking empty list...
2019/06/14 13:48:21 true = ([bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:19.762418285 -0600 MDT m=+777.134447038] == [bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:21.358132544 -0600 MDT m=+778.730161288])
2019/06/14 13:48:22 Blocking empty list...
2019/06/14 13:48:22 true = ([bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:21.358132544 -0600 MDT m=+778.730161288] == [bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:22.960404858 -0600 MDT m=+780.332433601])
2019/06/14 13:48:23 Blocking empty list...
2019/06/14 13:48:24 Blocking empty list...
2019/06/14 13:48:24 true = ([bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:22.960404858 -0600 MDT m=+780.332433601] == [bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:24.549422086 -0600 MDT m=+781.921450823])
2019/06/14 13:48:25 Blocking empty list...
2019/06/14 13:48:26 true = ([bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:24.549422086 -0600 MDT m=+781.921450823] == [bid:$10,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:26.125843233 -0600 MDT m=+783.497871975])
2019/06/14 13:48:26 Blocking empty list...
2019/06/14 13:48:27 Blocking empty list...
2019/06/14 13:48:27 true = ([bid:$10,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:26.125843233 -0600 MDT m=+783.497871975] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:27.690221589 -0600 MDT m=+785.062250326])
2019/06/14 13:48:28 Blocking empty list...
2019/06/14 13:48:29 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:27.690221589 -0600 MDT m=+785.062250326] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:29.264012162 -0600 MDT m=+786.636040912])
2019/06/14 13:48:29 Blocking empty list...
2019/06/14 13:48:30 Blocking empty list...
2019/06/14 13:48:30 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:29.264012162 -0600 MDT m=+786.636040912] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:30.816621488 -0600 MDT m=+788.188650236])
2019/06/14 13:48:31 Blocking empty list...
2019/06/14 13:48:32 Blocking empty list...
2019/06/14 13:48:33 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:30.816621488 -0600 MDT m=+788.188650236] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:33.096096709 -0600 MDT m=+790.468125473])
2019/06/14 13:48:33 Blocking empty list...
2019/06/14 13:48:34 Blocking empty list...
2019/06/14 13:48:34 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:33.096096709 -0600 MDT m=+790.468125473] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:34.681657183 -0600 MDT m=+792.053685940])
2019/06/14 13:48:35 Blocking empty list...
2019/06/14 13:48:36 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:34.681657183 -0600 MDT m=+792.053685940] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:36.241164634 -0600 MDT m=+793.613193386])
2019/06/14 13:48:36 Blocking empty list...
2019/06/14 13:48:37 Blocking empty list...
2019/06/14 13:48:37 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:36.241164634 -0600 MDT m=+793.613193386] == [bid:Bonus title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:37.85757393 -0600 MDT m=+795.229602667])
2019/06/14 13:48:38 Blocking empty list...
2019/06/14 13:48:39 Blocking empty list...
2019/06/14 13:48:39 true = ([bid:Bonus title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:37.85757393 -0600 MDT m=+795.229602667] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:39.441577958 -0600 MDT m=+796.813606720])
2019/06/14 13:48:40 Blocking empty list...
2019/06/14 13:48:41 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:39.441577958 -0600 MDT m=+796.813606720] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:41.061072437 -0600 MDT m=+798.433101174])
2019/06/14 13:48:41 Blocking empty list...
2019/06/14 13:48:42 Blocking empty list...
2019/06/14 13:48:42 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:41.061072437 -0600 MDT m=+798.433101174] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:42.682457336 -0600 MDT m=+800.054486086])
2019/06/14 13:48:43 Blocking empty list...
2019/06/14 13:48:44 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:42.682457336 -0600 MDT m=+800.054486086] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:44.256806707 -0600 MDT m=+801.628835462])
2019/06/14 13:48:44 Blocking empty list...
2019/06/14 13:48:45 Blocking empty list...
2019/06/14 13:48:45 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:44.256806707 -0600 MDT m=+801.628835462] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:45.967221097 -0600 MDT m=+803.339249831])
2019/06/14 13:48:46 Blocking empty list...
2019/06/14 13:48:47 Blocking empty list...
2019/06/14 13:48:47 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:45.967221097 -0600 MDT m=+803.339249831] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:47.517339333 -0600 MDT m=+804.889368069])
2019/06/14 13:48:48 Blocking empty list...
2019/06/14 13:48:48 parse watched
2019/06/14 13:48:49 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:47.517339333 -0600 MDT m=+804.889368069] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:49.118780967 -0600 MDT m=+806.490809704])
2019/06/14 13:48:49 Blocking empty list...
2019/06/14 13:48:50 parse watched
2019/06/14 13:48:50 Blocking empty list...
2019/06/14 13:48:50 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:49.118780967 -0600 MDT m=+806.490809704] == [bid:Next Item on title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:50.667028521 -0600 MDT m=+808.039057254])
2019/06/14 13:48:51 Blocking empty list...
2019/06/14 13:48:51 parse watched
2019/06/14 13:48:52 DETAIL $7,689 $24,039
2019/06/14 13:48:52 false = ([bid:Next Item on title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:50.667028521 -0600 MDT m=+808.039057254] == [bid:$1,650 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:52.297679181 -0600 MDT m=+809.669707932])
2019/06/14 13:48:52 DETAIL 1.8L 4 3.6L 6
2019/06/14 13:48:52 Blocking empty list...
2019/06/14 13:48:52 TOP
2019/06/14 13:48:52 parse watched
2019/06/14 13:48:52 C [bid:$1,650 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:52.994021004 -0600 MDT m=+810.366049754]
2019/06/14 13:48:53 Blocking empty list...
2019/06/14 13:48:54 parse watched
2019/06/14 13:48:54 Blocking empty list...
2019/06/14 13:48:54 true = ([bid:$1,650 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:52.994021004 -0600 MDT m=+810.366049754] == [bid:Bid title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:54.583269582 -0600 MDT m=+811.955298323])
2019/06/14 13:48:55 Blocking empty list...
2019/06/14 13:48:55 parse watched
2019/06/14 13:48:56 true = ([bid:Bid title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:54.583269582 -0600 MDT m=+811.955298323] == [bid:$1,700 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:56.181033887 -0600 MDT m=+813.553062652])
2019/06/14 13:48:56 Blocking empty list...
2019/06/14 13:48:57 parse watched
2019/06/14 13:48:57 Blocking empty list...
2019/06/14 13:48:57 true = ([bid:$1,700 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:56.181033887 -0600 MDT m=+813.553062652] == [bid:$1,800 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:57.784934977 -0600 MDT m=+815.156963727])
2019/06/14 13:48:58 Blocking empty list...
2019/06/14 13:48:58 parse watched
2019/06/14 13:48:59 Blocking empty list...
2019/06/14 13:48:59 true = ([bid:$1,800 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:57.784934977 -0600 MDT m=+815.156963727] == [bid:$1,850 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:59.373646279 -0600 MDT m=+816.745675026])
2019/06/14 13:49:00 Blocking empty list...
2019/06/14 13:49:00 parse watched
2019/06/14 13:49:00 true = ([bid:$1,850 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:59.373646279 -0600 MDT m=+816.745675026] == [bid:$1,900 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:49:00.956853996 -0600 MDT m=+818.328882743])
2019/06/14 13:49:01 Blocking empty list...
2019/06/14 13:49:02 parse watched
2019/06/14 13:49:02 Blocking empty list...
2019/06/14 13:49:02 true = ([bid:$1,900 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:49:00.956853996 -0600 MDT m=+818.328882743] == [bid:Bid title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:49:02.537892071 -0600 MDT m=+819.909920818])
2019/06/14 13:49:03 Blocking empty list...
2019/06/14 13:49:03 stale element reference: stale element reference: element is not attached to the page document
(Session info: chrome=75.0.3770.80)
2019/06/14 13:49:04 Blocking empty list...
2019/06/14 13:49:05 Blocking empty list...
2019/06/14 13:49:06 Blocking empty list...

242
copart/copart/testdata/log2 vendored Executable file
View File

@ -0,0 +1,242 @@
2019/06/14 13:44:33 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:32.100278808 -0600 MDT m=+549.472307556] == [bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:33.649979402 -0600 MDT m=+551.022008143])
2019/06/14 13:44:34 true = ([bid:$4,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:33.263653682 -0600 MDT m=+550.635682442] == [bid:$4,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:34.853057112 -0600 MDT m=+552.225085858])
2019/06/14 13:44:35 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:33.649979402 -0600 MDT m=+551.022008143] == [bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:35.209579405 -0600 MDT m=+552.581608152])
2019/06/14 13:44:36 true = ([bid:$4,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:34.853057112 -0600 MDT m=+552.225085858] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:36.442979544 -0600 MDT m=+553.815008292])
2019/06/14 13:44:36 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:35.209579405 -0600 MDT m=+552.581608152] == [bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:36.765530586 -0600 MDT m=+554.137559334])
2019/06/14 13:44:37 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:36.442979544 -0600 MDT m=+553.815008292] == [bid:$4,700 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:37.998799546 -0600 MDT m=+555.370828308])
2019/06/14 13:44:38 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:36.765530586 -0600 MDT m=+554.137559334] == [bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:38.309365279 -0600 MDT m=+555.681394016])
2019/06/14 13:44:39 true = ([bid:$4,700 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:37.998799546 -0600 MDT m=+555.370828308] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:39.632325485 -0600 MDT m=+557.004354235])
2019/06/14 13:44:39 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:38.309365279 -0600 MDT m=+555.681394016] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:39.876272196 -0600 MDT m=+557.248300968])
2019/06/14 13:44:41 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:39.632325485 -0600 MDT m=+557.004354235] == [bid:$4,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:41.210836371 -0600 MDT m=+558.582865114])
2019/06/14 13:44:41 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:39.876272196 -0600 MDT m=+557.248300968] == [bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:41.434892417 -0600 MDT m=+558.806921162])
2019/06/14 13:44:42 true = ([bid:$4,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:41.210836371 -0600 MDT m=+558.582865114] == [bid:$4,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:42.800903683 -0600 MDT m=+560.172932419])
2019/06/14 13:44:42 true = ([bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:41.434892417 -0600 MDT m=+558.806921162] == [bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:42.975489596 -0600 MDT m=+560.347518332])
2019/06/14 13:44:44 true = ([bid:$4,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:42.800903683 -0600 MDT m=+560.172932419] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:44.383681507 -0600 MDT m=+561.755710284])
2019/06/14 13:44:44 true = ([bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:42.975489596 -0600 MDT m=+560.347518332] == [bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:44.533291771 -0600 MDT m=+561.905320516])
2019/06/14 13:44:46 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:44.383681507 -0600 MDT m=+561.755710284] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:46.651673699 -0600 MDT m=+564.023702462])
2019/06/14 13:44:46 true = ([bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:44.533291771 -0600 MDT m=+561.905320516] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:46.71137253 -0600 MDT m=+564.083401292])
2019/06/14 13:44:49 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:46.651673699 -0600 MDT m=+564.023702462] == [bid:$5,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:49.04381699 -0600 MDT m=+566.415845754])
2019/06/14 13:44:49 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:46.71137253 -0600 MDT m=+564.083401292] == [bid:$800 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:49.075309089 -0600 MDT m=+566.447337833])
2019/06/14 13:44:50 true = ([bid:$5,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:49.04381699 -0600 MDT m=+566.415845754] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:50.626495561 -0600 MDT m=+567.998524315])
2019/06/14 13:44:50 true = ([bid:$800 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:49.075309089 -0600 MDT m=+566.447337833] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:50.637091128 -0600 MDT m=+568.009119874])
2019/06/14 13:44:52 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:50.637091128 -0600 MDT m=+568.009119874] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:52.201787818 -0600 MDT m=+569.573816555])
2019/06/14 13:44:52 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:50.626495561 -0600 MDT m=+567.998524315] == [bid:$5,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:52.210615356 -0600 MDT m=+569.582644106])
2019/06/14 13:44:53 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:52.201787818 -0600 MDT m=+569.573816555] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:53.785375027 -0600 MDT m=+571.157403770])
2019/06/14 13:44:53 true = ([bid:$5,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:52.210615356 -0600 MDT m=+569.582644106] == [bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:53.794478475 -0600 MDT m=+571.166507235])
2019/06/14 13:44:55 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:53.785375027 -0600 MDT m=+571.157403770] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:55.341663372 -0600 MDT m=+572.713692125])
2019/06/14 13:44:55 true = ([bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:53.794478475 -0600 MDT m=+571.166507235] == [bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:55.347619414 -0600 MDT m=+572.719648150])
2019/06/14 13:44:56 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:55.341663372 -0600 MDT m=+572.713692125] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:56.887273765 -0600 MDT m=+574.259302513])
2019/06/14 13:44:56 true = ([bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:55.347619414 -0600 MDT m=+572.719648150] == [bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:56.894005011 -0600 MDT m=+574.266033759])
2019/06/14 13:44:58 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:56.887273765 -0600 MDT m=+574.259302513] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:58.467862845 -0600 MDT m=+575.839891596])
2019/06/14 13:44:58 true = ([bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:56.894005011 -0600 MDT m=+574.266033759] == [bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:58.467875669 -0600 MDT m=+575.839904419])
2019/06/14 13:45:00 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:58.467862845 -0600 MDT m=+575.839891596] == [bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:00.029947727 -0600 MDT m=+577.401976473])
2019/06/14 13:45:00 true = ([bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:58.467875669 -0600 MDT m=+575.839904419] == [bid:$6,000 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:00.033625382 -0600 MDT m=+577.405654118])
2019/06/14 13:45:01 true = ([bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:00.029947727 -0600 MDT m=+577.401976473] == [bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:01.617679613 -0600 MDT m=+578.989708348])
2019/06/14 13:45:01 true = ([bid:$6,000 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:00.033625382 -0600 MDT m=+577.405654118] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:01.626412103 -0600 MDT m=+578.998440838])
2019/06/14 13:45:03 true = ([bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:01.617679613 -0600 MDT m=+578.989708348] == [bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:03.182911975 -0600 MDT m=+580.554940742])
2019/06/14 13:45:03 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:01.626412103 -0600 MDT m=+578.998440838] == [bid:$6,100 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:03.199787677 -0600 MDT m=+580.571816439])
2019/06/14 13:45:04 true = ([bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:03.182911975 -0600 MDT m=+580.554940742] == [bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:04.746031495 -0600 MDT m=+582.118060242])
2019/06/14 13:45:04 true = ([bid:$6,100 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:03.199787677 -0600 MDT m=+580.571816439] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:04.767179705 -0600 MDT m=+582.139208448])
2019/06/14 13:45:06 true = ([bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:04.746031495 -0600 MDT m=+582.118060242] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:06.310545892 -0600 MDT m=+583.682574636])
2019/06/14 13:45:06 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:04.767179705 -0600 MDT m=+582.139208448] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:06.335166826 -0600 MDT m=+583.707195567])
2019/06/14 13:45:07 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:06.310545892 -0600 MDT m=+583.682574636] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:07.883620143 -0600 MDT m=+585.255648901])
2019/06/14 13:45:07 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:06.335166826 -0600 MDT m=+583.707195567] == [bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:07.907584605 -0600 MDT m=+585.279613340])
2019/06/14 13:45:09 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:07.883620143 -0600 MDT m=+585.255648901] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:09.45518732 -0600 MDT m=+586.827216080])
2019/06/14 13:45:09 true = ([bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:07.907584605 -0600 MDT m=+585.279613340] == [bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:09.4663536 -0600 MDT m=+586.838382341])
2019/06/14 13:45:11 true = ([bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:09.4663536 -0600 MDT m=+586.838382341] == [bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:11.714388541 -0600 MDT m=+589.086417329])
2019/06/14 13:45:11 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:09.45518732 -0600 MDT m=+586.827216080] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:11.744893291 -0600 MDT m=+589.116922050])
2019/06/14 13:45:13 true = ([bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:11.714388541 -0600 MDT m=+589.086417329] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:13.45008916 -0600 MDT m=+590.822117920])
2019/06/14 13:45:13 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:11.744893291 -0600 MDT m=+589.116922050] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:13.467717253 -0600 MDT m=+590.839745995])
2019/06/14 13:45:15 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:13.45008916 -0600 MDT m=+590.822117920] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:15.028250727 -0600 MDT m=+592.400279501])
2019/06/14 13:45:15 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:13.467717253 -0600 MDT m=+590.839745995] == [bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:15.029365652 -0600 MDT m=+592.401394387])
2019/06/14 13:45:16 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:15.028250727 -0600 MDT m=+592.400279501] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:16.574778848 -0600 MDT m=+593.946807598])
2019/06/14 13:45:16 true = ([bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:15.029365652 -0600 MDT m=+592.401394387] == [bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:16.581757004 -0600 MDT m=+593.953785791])
2019/06/14 13:45:18 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:16.574778848 -0600 MDT m=+593.946807598] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:18.148148234 -0600 MDT m=+595.520177008])
2019/06/14 13:45:18 true = ([bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:16.581757004 -0600 MDT m=+593.953785791] == [bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:18.157707579 -0600 MDT m=+595.529736321])
2019/06/14 13:45:19 true = ([bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:18.157707579 -0600 MDT m=+595.529736321] == [bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:19.727213553 -0600 MDT m=+597.099242300])
2019/06/14 13:45:19 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:18.148148234 -0600 MDT m=+595.520177008] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:19.732192656 -0600 MDT m=+597.104221399])
2019/06/14 13:45:21 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:19.732192656 -0600 MDT m=+597.104221399] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:21.300980036 -0600 MDT m=+598.673008782])
2019/06/14 13:45:21 true = ([bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:19.727213553 -0600 MDT m=+597.099242300] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:21.307722352 -0600 MDT m=+598.679751090])
2019/06/14 13:45:23 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:21.300980036 -0600 MDT m=+598.673008782] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:23.379902263 -0600 MDT m=+600.751931031])
2019/06/14 13:45:23 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:21.307722352 -0600 MDT m=+598.679751090] == [bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:23.392826934 -0600 MDT m=+600.764855701])
2019/06/14 13:45:25 true = ([bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:23.392826934 -0600 MDT m=+600.764855701] == [bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:25.71438718 -0600 MDT m=+603.086415961])
2019/06/14 13:45:25 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:23.379902263 -0600 MDT m=+600.751931031] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:25.759869463 -0600 MDT m=+603.131898219])
2019/06/14 13:45:27 true = ([bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:25.71438718 -0600 MDT m=+603.086415961] == [bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:27.748442664 -0600 MDT m=+605.120471419])
2019/06/14 13:45:27 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:25.759869463 -0600 MDT m=+603.131898219] == [bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:27.762685583 -0600 MDT m=+605.134714377])
2019/06/14 13:45:29 true = ([bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:27.762685583 -0600 MDT m=+605.134714377] == [bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:29.693781661 -0600 MDT m=+607.065810420])
2019/06/14 13:45:29 true = ([bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:27.748442664 -0600 MDT m=+605.120471419] == [bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:29.7037451 -0600 MDT m=+607.075773851])
2019/06/14 13:45:31 true = ([bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:29.7037451 -0600 MDT m=+607.075773851] == [bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:31.581812917 -0600 MDT m=+608.953841681])
2019/06/14 13:45:31 true = ([bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:29.693781661 -0600 MDT m=+607.065810420] == [bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:31.603363109 -0600 MDT m=+608.975391926])
2019/06/14 13:45:33 true = ([bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:31.581812917 -0600 MDT m=+608.953841681] == [bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:33.129003954 -0600 MDT m=+610.501032706])
2019/06/14 13:45:33 true = ([bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:31.603363109 -0600 MDT m=+608.975391926] == [bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:33.154188308 -0600 MDT m=+610.526217074])
2019/06/14 13:45:34 true = ([bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:33.129003954 -0600 MDT m=+610.501032706] == [bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:34.698293537 -0600 MDT m=+612.070322308])
2019/06/14 13:45:34 true = ([bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:33.154188308 -0600 MDT m=+610.526217074] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:34.740571037 -0600 MDT m=+612.112599799])
2019/06/14 13:45:36 true = ([bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:34.698293537 -0600 MDT m=+612.070322308] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:36.670375341 -0600 MDT m=+614.042404108])
2019/06/14 13:45:36 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:34.740571037 -0600 MDT m=+612.112599799] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:36.714017157 -0600 MDT m=+614.086045966])
2019/06/14 13:45:38 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:36.670375341 -0600 MDT m=+614.042404108] == [bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:38.247777676 -0600 MDT m=+615.619806410])
2019/06/14 13:45:38 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:36.714017157 -0600 MDT m=+614.086045966] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:38.270868543 -0600 MDT m=+615.642897295])
2019/06/14 13:45:39 true = ([bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:38.247777676 -0600 MDT m=+615.619806410] == [bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:39.820522402 -0600 MDT m=+617.192551139])
2019/06/14 13:45:39 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:38.270868543 -0600 MDT m=+615.642897295] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:39.840696355 -0600 MDT m=+617.212725106])
2019/06/14 13:45:41 true = ([bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:39.820522402 -0600 MDT m=+617.192551139] == [bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:41.865548025 -0600 MDT m=+619.237576784])
2019/06/14 13:45:41 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:39.840696355 -0600 MDT m=+617.212725106] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:41.87975323 -0600 MDT m=+619.251782000])
2019/06/14 13:45:44 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:41.87975323 -0600 MDT m=+619.251782000] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:44.12899537 -0600 MDT m=+621.501024149])
2019/06/14 13:45:44 true = ([bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:41.865548025 -0600 MDT m=+619.237576784] == [bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:44.160166521 -0600 MDT m=+621.532195282])
2019/06/14 13:45:45 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:44.12899537 -0600 MDT m=+621.501024149] == [bid:Next Item on title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:45.698231339 -0600 MDT m=+623.070260115])
2019/06/14 13:45:45 true = ([bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:44.160166521 -0600 MDT m=+621.532195282] == [bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:45.730591096 -0600 MDT m=+623.102619832])
2019/06/14 13:45:47 true = ([bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:45.730591096 -0600 MDT m=+623.102619832] == [bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:47.300433357 -0600 MDT m=+624.672462125])
2019/06/14 13:45:47 false = ([bid:Next Item on title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:45.698231339 -0600 MDT m=+623.070260115] == [bid:$950 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:47.326540361 -0600 MDT m=+624.698569101])
2019/06/14 13:45:48 true = ([bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:47.300433357 -0600 MDT m=+624.672462125] == [bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:48.875565095 -0600 MDT m=+626.247593841])
2019/06/14 13:45:49 true = ([bid:$950 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:47.970680447 -0600 MDT m=+625.342709201] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:49.530146108 -0600 MDT m=+626.902174848])
2019/06/14 13:45:50 true = ([bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:48.875565095 -0600 MDT m=+626.247593841] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:50.441141654 -0600 MDT m=+627.813170424])
2019/06/14 13:45:51 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:49.530146108 -0600 MDT m=+626.902174848] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:51.092703578 -0600 MDT m=+628.464732312])
2019/06/14 13:45:52 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:50.441141654 -0600 MDT m=+627.813170424] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:52.014105523 -0600 MDT m=+629.386134268])
2019/06/14 13:45:52 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:51.092703578 -0600 MDT m=+628.464732312] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:52.666563883 -0600 MDT m=+630.038592628])
2019/06/14 13:45:53 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:52.014105523 -0600 MDT m=+629.386134268] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:53.557551959 -0600 MDT m=+630.929580695])
2019/06/14 13:45:54 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:52.666563883 -0600 MDT m=+630.038592628] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:54.239611178 -0600 MDT m=+631.611639922])
2019/06/14 13:45:55 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:53.557551959 -0600 MDT m=+630.929580695] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:55.114075035 -0600 MDT m=+632.486103788])
2019/06/14 13:45:55 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:54.239611178 -0600 MDT m=+631.611639922] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:55.804221548 -0600 MDT m=+633.176250310])
2019/06/14 13:45:56 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:55.114075035 -0600 MDT m=+632.486103788] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:56.706568281 -0600 MDT m=+634.078597042])
2019/06/14 13:45:57 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:55.804221548 -0600 MDT m=+633.176250310] == [bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:57.361048223 -0600 MDT m=+634.733076974])
2019/06/14 13:45:58 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:56.706568281 -0600 MDT m=+634.078597042] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:58.261410026 -0600 MDT m=+635.633438778])
2019/06/14 13:45:58 true = ([bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:57.361048223 -0600 MDT m=+634.733076974] == [bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:58.912388766 -0600 MDT m=+636.284417514])
2019/06/14 13:45:59 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:58.261410026 -0600 MDT m=+635.633438778] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:59.82282752 -0600 MDT m=+637.194856272])
2019/06/14 13:46:00 true = ([bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:58.912388766 -0600 MDT m=+636.284417514] == [bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:00.465703716 -0600 MDT m=+637.837732454])
2019/06/14 13:46:01 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:59.82282752 -0600 MDT m=+637.194856272] == [bid:Bonus title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:01.397741474 -0600 MDT m=+638.769770221])
2019/06/14 13:46:02 true = ([bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:00.465703716 -0600 MDT m=+637.837732454] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:02.023624181 -0600 MDT m=+639.395652927])
2019/06/14 13:46:03 true = ([bid:Bonus title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:01.397741474 -0600 MDT m=+638.769770221] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:03.006045999 -0600 MDT m=+640.378074735])
2019/06/14 13:46:03 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:02.023624181 -0600 MDT m=+639.395652927] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:03.58135933 -0600 MDT m=+640.953388064])
2019/06/14 13:46:04 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:03.006045999 -0600 MDT m=+640.378074735] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:04.578964932 -0600 MDT m=+641.950993680])
2019/06/14 13:46:05 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:03.58135933 -0600 MDT m=+640.953388064] == [bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:05.140126563 -0600 MDT m=+642.512155309])
2019/06/14 13:46:06 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:04.578964932 -0600 MDT m=+641.950993680] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:06.178025052 -0600 MDT m=+643.550053786])
2019/06/14 13:46:06 true = ([bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:05.140126563 -0600 MDT m=+642.512155309] == [bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:06.697389814 -0600 MDT m=+644.069418561])
2019/06/14 13:46:07 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:06.178025052 -0600 MDT m=+643.550053786] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:07.780702876 -0600 MDT m=+645.152731610])
2019/06/14 13:46:08 true = ([bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:06.697389814 -0600 MDT m=+644.069418561] == [bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:08.248101491 -0600 MDT m=+645.620130237])
2019/06/14 13:46:09 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:07.780702876 -0600 MDT m=+645.152731610] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:09.386820437 -0600 MDT m=+646.758849193])
2019/06/14 13:46:09 true = ([bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:08.248101491 -0600 MDT m=+645.620130237] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:09.818455714 -0600 MDT m=+647.190484458])
2019/06/14 13:46:10 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:09.386820437 -0600 MDT m=+646.758849193] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:10.971483398 -0600 MDT m=+648.343512143])
2019/06/14 13:46:11 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:09.818455714 -0600 MDT m=+647.190484458] == [bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:11.378239494 -0600 MDT m=+648.750268245])
2019/06/14 13:46:12 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:10.971483398 -0600 MDT m=+648.343512143] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:12.537834103 -0600 MDT m=+649.909862840])
2019/06/14 13:46:12 true = ([bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:11.378239494 -0600 MDT m=+648.750268245] == [bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:12.921818006 -0600 MDT m=+650.293846777])
2019/06/14 13:46:14 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:12.537834103 -0600 MDT m=+649.909862840] == [bid:Next Item on title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:14.115315236 -0600 MDT m=+651.487343970])
2019/06/14 13:46:14 true = ([bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:12.921818006 -0600 MDT m=+650.293846777] == [bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:14.471067849 -0600 MDT m=+651.843096596])
2019/06/14 13:46:15 false = ([bid:Next Item on title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:14.115315236 -0600 MDT m=+651.487343970] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:15.765589239 -0600 MDT m=+653.137617986])
2019/06/14 13:46:16 true = ([bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:14.471067849 -0600 MDT m=+651.843096596] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:16.02007468 -0600 MDT m=+653.392103448])
2019/06/14 13:46:17 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:16.02007468 -0600 MDT m=+653.392103448] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:17.651753355 -0600 MDT m=+655.023782106])
2019/06/14 13:46:17 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:16.390025771 -0600 MDT m=+653.762054512] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:17.945675122 -0600 MDT m=+655.317703865])
2019/06/14 13:46:19 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:17.651753355 -0600 MDT m=+655.023782106] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:19.255879024 -0600 MDT m=+656.627907787])
2019/06/14 13:46:19 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:17.945675122 -0600 MDT m=+655.317703865] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:19.503173988 -0600 MDT m=+656.875202744])
2019/06/14 13:46:20 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:19.255879024 -0600 MDT m=+656.627907787] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:20.879860426 -0600 MDT m=+658.251889173])
2019/06/14 13:46:21 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:19.503173988 -0600 MDT m=+656.875202744] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:21.074419533 -0600 MDT m=+658.446448280])
2019/06/14 13:46:22 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:20.879860426 -0600 MDT m=+658.251889173] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:22.472975892 -0600 MDT m=+659.845004657])
2019/06/14 13:46:22 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:21.074419533 -0600 MDT m=+658.446448280] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:22.638350764 -0600 MDT m=+660.010379508])
2019/06/14 13:46:24 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:22.472975892 -0600 MDT m=+659.845004657] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:24.039286396 -0600 MDT m=+661.411315153])
2019/06/14 13:46:24 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:22.638350764 -0600 MDT m=+660.010379508] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:24.210076006 -0600 MDT m=+661.582104749])
2019/06/14 13:46:25 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:24.039286396 -0600 MDT m=+661.411315153] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:25.623141495 -0600 MDT m=+662.995170232])
2019/06/14 13:46:25 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:24.210076006 -0600 MDT m=+661.582104749] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:25.77105872 -0600 MDT m=+663.143087460])
2019/06/14 13:46:27 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:25.623141495 -0600 MDT m=+662.995170232] == [bid:Bonus title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:27.217110188 -0600 MDT m=+664.589138960])
2019/06/14 13:46:27 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:25.77105872 -0600 MDT m=+663.143087460] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:27.316556146 -0600 MDT m=+664.688584889])
2019/06/14 13:46:28 true = ([bid:Bonus title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:27.217110188 -0600 MDT m=+664.589138960] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:28.804421116 -0600 MDT m=+666.176449864])
2019/06/14 13:46:28 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:27.316556146 -0600 MDT m=+664.688584889] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:28.874885439 -0600 MDT m=+666.246914183])
2019/06/14 13:46:30 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:28.804421116 -0600 MDT m=+666.176449864] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:30.378302778 -0600 MDT m=+667.750331525])
2019/06/14 13:46:30 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:28.874885439 -0600 MDT m=+666.246914183] == [bid:Bonus title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:30.430949455 -0600 MDT m=+667.802978198])
2019/06/14 13:46:31 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:30.378302778 -0600 MDT m=+667.750331525] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:31.953632384 -0600 MDT m=+669.325661131])
2019/06/14 13:46:31 true = ([bid:Bonus title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:30.430949455 -0600 MDT m=+667.802978198] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:31.996367484 -0600 MDT m=+669.368396221])
2019/06/14 13:46:33 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:31.953632384 -0600 MDT m=+669.325661131] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:33.521086939 -0600 MDT m=+670.893115677])
2019/06/14 13:46:33 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:31.996367484 -0600 MDT m=+669.368396221] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:33.571119989 -0600 MDT m=+670.943148735])
2019/06/14 13:46:35 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:33.521086939 -0600 MDT m=+670.893115677] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:35.111873847 -0600 MDT m=+672.483902604])
2019/06/14 13:46:35 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:33.571119989 -0600 MDT m=+670.943148735] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:35.140044919 -0600 MDT m=+672.512073682])
2019/06/14 13:46:36 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:35.111873847 -0600 MDT m=+672.483902604] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:36.691188678 -0600 MDT m=+674.063217431])
2019/06/14 13:46:36 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:35.140044919 -0600 MDT m=+672.512073682] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:36.72922032 -0600 MDT m=+674.101249074])
2019/06/14 13:46:38 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:36.691188678 -0600 MDT m=+674.063217431] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:38.271432569 -0600 MDT m=+675.643461305])
2019/06/14 13:46:38 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:36.72922032 -0600 MDT m=+674.101249074] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:38.298540491 -0600 MDT m=+675.670569229])
2019/06/14 13:46:39 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:38.271432569 -0600 MDT m=+675.643461305] == [bid:Next Item on title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:39.854917796 -0600 MDT m=+677.226946542])
2019/06/14 13:46:39 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:38.298540491 -0600 MDT m=+675.670569229] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:39.86269596 -0600 MDT m=+677.234724702])
2019/06/14 13:46:41 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:39.86269596 -0600 MDT m=+677.234724702] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:41.421462137 -0600 MDT m=+678.793490880])
2019/06/14 13:46:41 false = ([bid:Next Item on title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:39.854917796 -0600 MDT m=+677.226946542] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:41.444806466 -0600 MDT m=+678.816835202])
2019/06/14 13:46:42 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:41.421462137 -0600 MDT m=+678.793490880] == [bid:Sold on title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:42.978837839 -0600 MDT m=+680.350866588])
2019/06/14 13:46:43 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:42.058019248 -0600 MDT m=+679.430047994] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:43.652922025 -0600 MDT m=+681.024950771])
2019/06/14 13:46:45 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:43.652922025 -0600 MDT m=+681.024950771] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:45.212745952 -0600 MDT m=+682.584774692])
2019/06/14 13:46:46 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:45.212745952 -0600 MDT m=+682.584774692] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:46.779907351 -0600 MDT m=+684.151936105])
2019/06/14 13:46:48 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:46.779907351 -0600 MDT m=+684.151936105] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:48.37493185 -0600 MDT m=+685.746960593])
2019/06/14 13:46:50 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:48.37493185 -0600 MDT m=+685.746960593] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:50.006089325 -0600 MDT m=+687.378118062])
2019/06/14 13:46:51 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:50.006089325 -0600 MDT m=+687.378118062] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:51.571964801 -0600 MDT m=+688.943993546])
2019/06/14 13:46:53 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:51.571964801 -0600 MDT m=+688.943993546] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:53.168928243 -0600 MDT m=+690.540956989])
2019/06/14 13:46:54 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:53.168928243 -0600 MDT m=+690.540956989] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:54.746981537 -0600 MDT m=+692.119010284])
2019/06/14 13:46:56 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:54.746981537 -0600 MDT m=+692.119010284] == [bid:Sold! title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:56.312143023 -0600 MDT m=+693.684171758])
2019/06/14 13:46:57 false = ([bid:Sold! title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:56.312143023 -0600 MDT m=+693.684171758] == [bid:Next Item on title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:57.92401858 -0600 MDT m=+695.296047330])
2019/06/14 13:47:00 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:46:58.636284949 -0600 MDT m=+696.008313695] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:00.228379187 -0600 MDT m=+697.600407934])
2019/06/14 13:47:01 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:00.228379187 -0600 MDT m=+697.600407934] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:01.828705581 -0600 MDT m=+699.200734322])
2019/06/14 13:47:03 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:01.828705581 -0600 MDT m=+699.200734322] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:03.404720678 -0600 MDT m=+700.776749424])
2019/06/14 13:47:04 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:03.404720678 -0600 MDT m=+700.776749424] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:04.995027354 -0600 MDT m=+702.367056092])
2019/06/14 13:47:06 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:04.995027354 -0600 MDT m=+702.367056092] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:06.553799294 -0600 MDT m=+703.925828028])
2019/06/14 13:47:08 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:06.553799294 -0600 MDT m=+703.925828028] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:08.135736901 -0600 MDT m=+705.507765668])
2019/06/14 13:47:09 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:08.135736901 -0600 MDT m=+705.507765668] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:09.740053433 -0600 MDT m=+707.112082171])
2019/06/14 13:47:11 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:09.740053433 -0600 MDT m=+707.112082171] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:11.355342645 -0600 MDT m=+708.727371404])
2019/06/14 13:47:12 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:11.355342645 -0600 MDT m=+708.727371404] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:12.953509692 -0600 MDT m=+710.325538426])
2019/06/14 13:47:14 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:12.953509692 -0600 MDT m=+710.325538426] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:14.544215968 -0600 MDT m=+711.916244711])
2019/06/14 13:47:16 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:14.544215968 -0600 MDT m=+711.916244711] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:16.111428829 -0600 MDT m=+713.483457570])
2019/06/14 13:47:17 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:16.111428829 -0600 MDT m=+713.483457570] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:17.744188889 -0600 MDT m=+715.116217639])
2019/06/14 13:47:19 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:17.744188889 -0600 MDT m=+715.116217639] == [bid:Next Item on title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:19.31997218 -0600 MDT m=+716.692000915])
2019/06/14 13:47:20 false = ([bid:Next Item on title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:19.31997218 -0600 MDT m=+716.692000915] == [bid:$7,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:20.975960694 -0600 MDT m=+718.347989437])
2019/06/14 13:47:23 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:21.632839693 -0600 MDT m=+719.004868430] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:23.246285645 -0600 MDT m=+720.618314400])
2019/06/14 13:47:24 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:23.246285645 -0600 MDT m=+720.618314400] == [bid:$8,000 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:24.857513644 -0600 MDT m=+722.229542387])
2019/06/14 13:47:26 true = ([bid:$8,000 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:24.857513644 -0600 MDT m=+722.229542387] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:26.442221476 -0600 MDT m=+723.814250212])
2019/06/14 13:47:27 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:26.442221476 -0600 MDT m=+723.814250212] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:27.9990393 -0600 MDT m=+725.371068068])
2019/06/14 13:47:29 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:27.9990393 -0600 MDT m=+725.371068068] == [bid:$8,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:29.61021549 -0600 MDT m=+726.982244236])
2019/06/14 13:47:31 true = ([bid:$8,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:29.61021549 -0600 MDT m=+726.982244236] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:31.217544509 -0600 MDT m=+728.589573280])
2019/06/14 13:47:32 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:31.217544509 -0600 MDT m=+728.589573280] == [bid:$8,400 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:32.789748968 -0600 MDT m=+730.161777737])
2019/06/14 13:47:34 true = ([bid:$8,400 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:32.789748968 -0600 MDT m=+730.161777737] == [bid:$8,400 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:34.359088515 -0600 MDT m=+731.731117253])
2019/06/14 13:47:36 true = ([bid:$8,400 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:34.359088515 -0600 MDT m=+731.731117253] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:36.560628194 -0600 MDT m=+733.932656950])
2019/06/14 13:47:38 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:36.560628194 -0600 MDT m=+733.932656950] == [bid:$8,600 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:38.175551491 -0600 MDT m=+735.547580230])
2019/06/14 13:47:39 true = ([bid:$8,600 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:38.175551491 -0600 MDT m=+735.547580230] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:39.73534806 -0600 MDT m=+737.107376830])
2019/06/14 13:47:41 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:39.73534806 -0600 MDT m=+737.107376830] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:41.333835964 -0600 MDT m=+738.705864712])
2019/06/14 13:47:42 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:41.333835964 -0600 MDT m=+738.705864712] == [bid:$8,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:42.926327488 -0600 MDT m=+740.298356250])
2019/06/14 13:47:44 true = ([bid:$8,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:42.926327488 -0600 MDT m=+740.298356250] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:44.493785479 -0600 MDT m=+741.865814216])
2019/06/14 13:47:46 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:44.493785479 -0600 MDT m=+741.865814216] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:46.092736556 -0600 MDT m=+743.464765324])
2019/06/14 13:47:47 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:46.092736556 -0600 MDT m=+743.464765324] == [bid:$9,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:47.67597531 -0600 MDT m=+745.048004045])
2019/06/14 13:47:49 true = ([bid:$9,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:47.67597531 -0600 MDT m=+745.048004045] == [bid:$9,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:49.283213406 -0600 MDT m=+746.655242158])
2019/06/14 13:47:50 true = ([bid:$9,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:49.283213406 -0600 MDT m=+746.655242158] == [bid:$9,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:50.867335397 -0600 MDT m=+748.239364160])
2019/06/14 13:47:52 true = ([bid:$9,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:50.867335397 -0600 MDT m=+748.239364160] == [bid:$9,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:52.436153467 -0600 MDT m=+749.808182224])
2019/06/14 13:47:54 true = ([bid:$9,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:52.436153467 -0600 MDT m=+749.808182224] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:54.03762827 -0600 MDT m=+751.409657021])
2019/06/14 13:47:55 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:54.03762827 -0600 MDT m=+751.409657021] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:55.599953643 -0600 MDT m=+752.971982388])
2019/06/14 13:47:57 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:55.599953643 -0600 MDT m=+752.971982388] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:57.206392983 -0600 MDT m=+754.578421720])
2019/06/14 13:47:58 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:57.206392983 -0600 MDT m=+754.578421720] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:58.788865612 -0600 MDT m=+756.160894358])
2019/06/14 13:48:00 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:58.788865612 -0600 MDT m=+756.160894358] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:00.334639215 -0600 MDT m=+757.706667963])
2019/06/14 13:48:01 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:00.334639215 -0600 MDT m=+757.706667963] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:01.910710068 -0600 MDT m=+759.282738803])
2019/06/14 13:48:03 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:01.910710068 -0600 MDT m=+759.282738803] == [bid:$9,600 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:03.504547263 -0600 MDT m=+760.876576007])
2019/06/14 13:48:05 true = ([bid:$9,600 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:03.504547263 -0600 MDT m=+760.876576007] == [bid:$9,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:05.075648795 -0600 MDT m=+762.447677531])
2019/06/14 13:48:06 true = ([bid:$9,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:05.075648795 -0600 MDT m=+762.447677531] == [bid:$9,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:06.677601587 -0600 MDT m=+764.049630333])
2019/06/14 13:48:08 true = ([bid:$9,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:06.677601587 -0600 MDT m=+764.049630333] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:08.243314838 -0600 MDT m=+765.615343582])
2019/06/14 13:48:09 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:08.243314838 -0600 MDT m=+765.615343582] == [bid:$9,800 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:09.816861858 -0600 MDT m=+767.188890627])
2019/06/14 13:48:11 true = ([bid:$9,800 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:09.816861858 -0600 MDT m=+767.188890627] == [bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:11.401970852 -0600 MDT m=+768.773999592])
2019/06/14 13:48:13 true = ([bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:11.401970852 -0600 MDT m=+768.773999592] == [bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:13.385943303 -0600 MDT m=+770.757972044])
2019/06/14 13:48:15 true = ([bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:13.385943303 -0600 MDT m=+770.757972044] == [bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:15.010900934 -0600 MDT m=+772.382929685])
2019/06/14 13:48:16 true = ([bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:15.010900934 -0600 MDT m=+772.382929685] == [bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:16.582646794 -0600 MDT m=+773.954675536])
2019/06/14 13:48:18 true = ([bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:16.582646794 -0600 MDT m=+773.954675536] == [bid:$10,000 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:18.158918859 -0600 MDT m=+775.530947603])
2019/06/14 13:48:19 true = ([bid:$10,000 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:18.158918859 -0600 MDT m=+775.530947603] == [bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:19.762418285 -0600 MDT m=+777.134447038])
2019/06/14 13:48:21 true = ([bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:19.762418285 -0600 MDT m=+777.134447038] == [bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:21.358132544 -0600 MDT m=+778.730161288])
2019/06/14 13:48:22 true = ([bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:21.358132544 -0600 MDT m=+778.730161288] == [bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:22.960404858 -0600 MDT m=+780.332433601])
2019/06/14 13:48:24 true = ([bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:22.960404858 -0600 MDT m=+780.332433601] == [bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:24.549422086 -0600 MDT m=+781.921450823])
2019/06/14 13:48:26 true = ([bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:24.549422086 -0600 MDT m=+781.921450823] == [bid:$10,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:26.125843233 -0600 MDT m=+783.497871975])
2019/06/14 13:48:27 true = ([bid:$10,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:26.125843233 -0600 MDT m=+783.497871975] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:27.690221589 -0600 MDT m=+785.062250326])
2019/06/14 13:48:29 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:27.690221589 -0600 MDT m=+785.062250326] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:29.264012162 -0600 MDT m=+786.636040912])
2019/06/14 13:48:30 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:29.264012162 -0600 MDT m=+786.636040912] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:30.816621488 -0600 MDT m=+788.188650236])
2019/06/14 13:48:33 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:30.816621488 -0600 MDT m=+788.188650236] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:33.096096709 -0600 MDT m=+790.468125473])
2019/06/14 13:48:34 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:33.096096709 -0600 MDT m=+790.468125473] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:34.681657183 -0600 MDT m=+792.053685940])
2019/06/14 13:48:36 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:34.681657183 -0600 MDT m=+792.053685940] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:36.241164634 -0600 MDT m=+793.613193386])
2019/06/14 13:48:37 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:36.241164634 -0600 MDT m=+793.613193386] == [bid:Bonus title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:37.85757393 -0600 MDT m=+795.229602667])
2019/06/14 13:48:39 true = ([bid:Bonus title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:37.85757393 -0600 MDT m=+795.229602667] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:39.441577958 -0600 MDT m=+796.813606720])
2019/06/14 13:48:41 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:39.441577958 -0600 MDT m=+796.813606720] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:41.061072437 -0600 MDT m=+798.433101174])
2019/06/14 13:48:42 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:41.061072437 -0600 MDT m=+798.433101174] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:42.682457336 -0600 MDT m=+800.054486086])
2019/06/14 13:48:44 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:42.682457336 -0600 MDT m=+800.054486086] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:44.256806707 -0600 MDT m=+801.628835462])
2019/06/14 13:48:45 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:44.256806707 -0600 MDT m=+801.628835462] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:45.967221097 -0600 MDT m=+803.339249831])
2019/06/14 13:48:47 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:45.967221097 -0600 MDT m=+803.339249831] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:47.517339333 -0600 MDT m=+804.889368069])
2019/06/14 13:48:49 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:47.517339333 -0600 MDT m=+804.889368069] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:49.118780967 -0600 MDT m=+806.490809704])
2019/06/14 13:48:50 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:49.118780967 -0600 MDT m=+806.490809704] == [bid:Next Item on title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:50.667028521 -0600 MDT m=+808.039057254])
2019/06/14 13:48:52 false = ([bid:Next Item on title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:50.667028521 -0600 MDT m=+808.039057254] == [bid:$1,650 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:52.297679181 -0600 MDT m=+809.669707932])
2019/06/14 13:48:54 true = ([bid:$1,650 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:52.994021004 -0600 MDT m=+810.366049754] == [bid:Bid title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:54.583269582 -0600 MDT m=+811.955298323])
2019/06/14 13:48:56 true = ([bid:Bid title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:54.583269582 -0600 MDT m=+811.955298323] == [bid:$1,700 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:56.181033887 -0600 MDT m=+813.553062652])
2019/06/14 13:48:57 true = ([bid:$1,700 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:56.181033887 -0600 MDT m=+813.553062652] == [bid:$1,800 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:57.784934977 -0600 MDT m=+815.156963727])
2019/06/14 13:48:59 true = ([bid:$1,800 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:57.784934977 -0600 MDT m=+815.156963727] == [bid:$1,850 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:59.373646279 -0600 MDT m=+816.745675026])
2019/06/14 13:49:00 true = ([bid:$1,850 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:59.373646279 -0600 MDT m=+816.745675026] == [bid:$1,900 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:49:00.956853996 -0600 MDT m=+818.328882743])
2019/06/14 13:49:02 true = ([bid:$1,900 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:49:00.956853996 -0600 MDT m=+818.328882743] == [bid:Bid title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:49:02.537892071 -0600 MDT m=+819.909920818])

1699
copart/copart/testdata/sample_auction_live.html vendored Executable file

File diff suppressed because one or more lines are too long

17
copart/entrypoint.sh Executable file
View File

@ -0,0 +1,17 @@
/opt/bin/entry_point.sh --quiet &
pid=${!}
#./copart \
# -addr /mnt/bolt.db \
# -db bolt \
# -public ./public \
# -port 41241 \
# "$@"
./copart \
-addr /mnt/level.db \
-db leveldb \
-public ./public \
-port 41241 \
"$@"
ret=$?
kill -9 $pid
exit $ret

80
copart/main.go Executable file
View File

@ -0,0 +1,80 @@
package main
import (
"local/sandbox/selenium/copart/copart/auction"
"local/sandbox/selenium/copart/copart/browser"
"local/sandbox/selenium/copart/copart/config"
"local/sandbox/selenium/copart/copart/server"
"log"
"os"
"os/signal"
"sync"
"syscall"
"time"
)
func main() {
log.SetPrefix("..")
time.Local = time.FixedZone("UTC-6", (-6*int(time.Hour))/int(time.Second))
sigc := make(chan os.Signal)
// TODO if time is FRI 5PM -> MON 7 AM, then EXIT
if err := config.New(); err != nil {
panic(err)
}
log.Println(config.Values())
s := server.New()
if err := s.Routes(); err != nil {
panic(err)
}
go func(c chan os.Signal) {
if err := s.Run(); err != nil {
log.Println(err)
}
c <- syscall.SIGINT
}(sigc)
today, err := auction.NewToday(sigc)
defer today.Stop()
if err != nil {
panic(err)
}
if err := today.Start(); err != nil {
panic(err)
}
signal.Notify(sigc,
syscall.SIGHUP,
syscall.SIGINT,
syscall.SIGTERM,
syscall.SIGQUIT,
)
<-sigc
today.Stop()
config.Values().DB.Close()
}
func test_parallel() {
wg := &sync.WaitGroup{}
for i := 0; i < 30; i++ {
wg.Add(1)
go func() {
defer wg.Done()
b, err := browser.New()
if err != nil {
log.Println(err)
return
}
defer b.Close()
if err := b.Get("https://www.google.com"); err != nil {
log.Println(err)
return
}
log.Println(b.Driver.FindElements("xpath", "//div[1]"))
}()
}
wg.Wait()
}

205
copart/public/index.html Executable file
View File

@ -0,0 +1,205 @@
<html>
<body>
<h2>Copart Auctions</h2>
<form id="form" target="hidden" onsubmit="query(); return false;">
<input type="text"/>
<button type="submit">Search</button>
</form>
<table><tbody>
<tr>
<th>Title</th>
</tr>
</tbody></table>
<div id="log"></div>
<iframe name="hidden", width=0, height=0, border=0, style="display: none;"></iframe>
</body>
<head>
<script>
function http(method, remote, callback, body) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == XMLHttpRequest.DONE) { // XMLHttpRequest.DONE == 4
callback(xmlhttp.status, xmlhttp.responseText)
}
};
xmlhttp.open(method, remote, true);
if (typeof body == "undefined") {
body = null
}
xmlhttp.send(body);
}
function log() {
args = []
for (var i in arguments)
args.push(arguments[i])
msg = args.join(", ")
document.getElementById("log").innerHTML += "<br>"+msg
}
function populate(items) {
doc = list_headers
for (var i in items) {
doc += "<tr>"
for (var j in items[i]) {
if (j == 0)
items[i][j] = halve(items[i][j])
doc += "<td>" + items[i][j] + "</td>"
}
for (var j = items[i].length; j < 5; j++)
doc += "<td></td>"
doc += "</tr>\n"
}
document.getElementsByTagName("tbody")[0].innerHTML = doc
}
function populate_list(status_code, body) {
var k = 0
var list = []
var writelist = []
if (status_code != 200) {
log("ERR failed to load list", status_code)
writelist = [ ["Sample car title goes here", "2000-01-02", "$2"] ]
} else {
list = JSON.parse(body)
}
for (var i in list) {
k += 1
if (k > 50)
break
form = list[i].substr(5, list[i].indexOf(" watched")-5)
bid = form.substr(0, form.indexOf("title:"))
title = form.substr(form.indexOf("title:")+6, form.length)
when = list[i].substr(list[i].indexOf("when:")+5, 10)
writelist.push([title, when, bid])
}
populate(writelist)
}
function halve(s) {
s = s.split(" ")
n = s.length
n /= 2
n = n
s = s.slice(0, n).join(" ") + "<br>" + s.slice(n, s.length).join(" ")
return s
}
function query() {
form = document.getElementById("form")
text = form.getElementsByTagName("input")[0].value
text = text.split(" ")
q = []
for (var i in text)
if (text[i].length > 0)
q.push("q="+text[i])
q = q.join("&")
callback = function(status_code, body) {
if (status_code != 200) {
results = []
} else {
results = JSON.parse(body)
}
items = []
for (var i in results) {
item = []
keys = Object.keys(results[i]).sort()
keys.splice(keys.indexOf("title"), 1)
keys.unshift("title")
for (var j in keys) {
if (keys[j] == "details")
item.push(format_details(results[i][keys[j]]))
else if (keys[j] == "images")
item.push(format_images(results[i][keys[j]]))
else
item.push(results[i][keys[j]])
}
items.push(item)
}
populate(items)
}
http("get", "/api?"+q, callback, "")
}
function format_details(details) {
out = ""
for (var k in details) {
v = details[k]
if (out.length > 0)
out += "<br>"
out += k+": "+v
}
out = "<details>"+out+"<summary>Details</summary></details>"
return out
}
function format_images(images) {
out = ""
for (var i in images) {
out += "<img src='"+images[i]+"'></img>"
}
out = "<details>"+out+"<summary>Pictures</summary></details>"
return out
}
var list_headers = '<tr>'
+'<th>Title</th>'
+'<th>Auction Date</th>'
+'<th>Sale Price</th>'
+'<th>Details</th>'
+'<th>Images</th>'
+'</tr>'
var cors_anywhere = "https://cors-anywhere.herokuapp.com"
var google_doc_pre = "https://docs.google.com/spreadsheets/d/"
var google_doc_id = "14F7zRrwGT6JkCeZqZLPM2r2GScrm9FLFxlPtDINbNWg"
var google_doc_post = "/gviz/tq?tqx=out:csv"
/*
http(
"get",
`${cors_anywhere}/${google_doc_pre}/${google_doc_id}/${google_doc_post}`,
callback,
JSON.stringify({"cc": "cc"}),
)
*/
http("get", "/api/LIST", populate_list, "")
</script>
<style>
body
, tbody
{
font-size: 125% !important;
max-width: 90% !important;
}
td
img
{
display: block;
}
#nav
{
width: 150px;
vertical-align: top;
background-color: #990000;
color: #fff;
height: 100%;
}
#nav > a
{
color: #fff;
}
summary
{
cursor: pointer;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
@charset "UTF-8";body{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;line-height:1.4;max-width:800px;margin:20px auto;padding:0 10px;color:#363636;background:#fff;text-rendering:optimizeLegibility}button,input,textarea{transition:background-color .1s linear,border-color .1s linear,color .1s linear,box-shadow .1s linear,transform .1s ease}h1{font-size:2.2em;margin-top:0}h1,h2,h3,h4,h5,h6{margin-bottom:12px}h1,h2,h3,h4,h5,h6,strong{color:#000}b,h1,h2,h3,h4,h5,h6,strong,th{font-weight:600}blockquote{border-left:4px solid #700;margin:1.5em 0;padding:.5em 1em;font-style:italic}blockquote>footer{margin-top:10px;font-style:normal}address,blockquote cite{font-style:normal}a[href^=mailto]:before{content:"📧 "}a[href^=tel]:before{content:"📞 "}a[href^=sms]:before{content:"💬 "}button,input[type=button],input[type=checkbox],input[type=submit]{cursor:pointer}input:not([type=checkbox]):not([type=radio]),select{display:block}button,input,select,textarea{color:#000;background-color:#efefef;font-family:inherit;font-size:inherit;margin-right:6px;margin-bottom:6px;padding:10px;border:none;border-radius:6px;outline:none}button,input:not([type=checkbox]):not([type=radio]),select,textarea{-webkit-appearance:none}textarea{margin-right:0;width:100%;box-sizing:border-box;resize:vertical}button,input[type=button],input[type=submit]{padding-right:30px;padding-left:30px}button:hover,input[type=button]:hover,input[type=submit]:hover{background:#ddd}button:focus,input:focus,select:focus,textarea:focus{box-shadow:0 0 0 2px #700}button:active,input[type=button]:active,input[type=checkbox]:active,input[type=radio]:active,input[type=submit]:active{transform:translateY(2px)}button:disabled,input:disabled,select:disabled,textarea:disabled{cursor:not-allowed;opacity:.5}::-webkit-input-placeholder{color:#949494}::-moz-placeholder{color:#949494}:-ms-input-placeholder{color:#949494}::-ms-input-placeholder{color:#949494}::placeholder{color:#949494}a{text-decoration:none;color:#900}a:hover{text-decoration:underline}code,kbd{background:#efefef;color:#000;padding:5px;border-radius:6px}pre>code{padding:10px;display:block;overflow-x:auto}img{max-width:100%;height:auto}hr{border:none;border-top:1px solid #dbdbdb}table{border-collapse:collapse;margin-bottom:10px;width:100%}td,th{padding:6px;text-align:left}th{border-bottom:1px solid #dbdbdb}tbody tr:nth-child(2n){background-color:#efefef}::-webkit-scrollbar{height:10px;width:10px}::-webkit-scrollbar-track{background:#efefef;border-radius:6px}::-webkit-scrollbar-thumb{background:#d5d5d5;border-radius:6px}::-webkit-scrollbar-thumb:hover{background:#c4c4c4}::-moz-selection{background-color:#9e9e9e}::selection{background-color:#9e9e9e}
</style>
</head>
</html>

15
copart/python/Dockerfile Executable file
View File

@ -0,0 +1,15 @@
# https://github.com/joyzoursky/docker-python-chromedriver
FROM python:3.7-alpine3.8
RUN echo \
"http://dl-4.alpinelinux.org/alpine/v3.8/main" >> /etc/apk/repositories \
&& echo \
"http://dl-4.alpinelinux.org/alpine/v3.8/community" >> /etc/apk/repositories
RUN apk update
RUN apk add --no-cache chromium chromium-chromedriver
RUN pip install selenium==3.13.0
WORKDIR /work
COPY . /work
CMD []
ENTRYPOINT ["python3", "./main.py"]

312
copart/python/main.py Executable file
View File

@ -0,0 +1,312 @@
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
import time
import pickle
import urllib
import base64
class Browser() :
def __init__(self, url) :
self.url = url
self.driver = self.make_driver()
self.open(url)
def __del__(self) :
try :
self.driver.close()
except Exception :
pass
def make_driver(self) :
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--disable-extensions')
last = None
for i in range(5) :
try :
driver = webdriver.Chrome('/usr/bin/chromedriver',chrome_options=chrome_options)
return driver
except Exception as e:
time.sleep(1)
last = e
raise(last)
def open(self, url) :
self.driver.get(url)
# foo takes self.driver as an arg, like `
# lambda x: x.find_element_by_id("id")`
def until(elem, foo) :
import datetime
now = datetime.datetime.now()
while (datetime.datetime.now() - now).total_seconds() < 30 :
if foo(elem) :
return
time.sleep(1)
raise Exception("until failed")
# ("//form[1]")
# ("//form[@id='loginForm']")
def find_xpath(self, xpath) :
return self.driver.find_elements_by_xpath(xpath)
# find_element_by_partial_link_text('Conti')
def find_links(self, prefix) :
elements = self.driver.find_elements_by_partial_link_text(prefix)
return [e.get_attribute("href") for e in elements]
class Todays_Auctions() :
def __init__(self) :
self.b = Browser("https://www.copart.com/todaysAuction/")
def auctions_links(self) :
return self.b.find_links("Join Auction")
class Auction() :
def __init__(self, url) :
self.b = Browser(url)
iframe = self.b.find_xpath("//iframe")[0]
self.url = iframe.get_attribute("src")
self.b = Browser(self.url)
def final_bids(self) :
while True :
yield self.wait_car()
def wait_car(self) :
c = Car()
c.extract(self.b)
d = c.copy()
while c == d :
time.sleep(1)
c = d.copy()
d.extract(self.b)
return c
class Car() :
def __init__(self) :
self.bid = None
self.details = None
self.image_links = None
self.images = None
self.title = None
self.watched = False
for attr in self.get_attrs() :
setattr(self, attr, None)
def copy(self) :
c = Car()
for attr in self.get_attrs() :
v = getattr(self, attr)
setattr(c, attr, v)
return c
def __eq__(self, other) :
for attr in [ i for i in self.get_attrs() if not i in ["bid", "images"] ]:
a = getattr(self, attr)
b = getattr(other, attr)
if a != b :
return False
return True
def get_attrs(self) :
return [
"title",
"bid",
"details",
"image_links",
"watched",
]
def __str__(self) :
out = []
for attr in [ i for i in self.get_attrs() if not i.startswith("image") ] :
out.append("{}:{}".format(attr, getattr(self, attr)))
return ", ".join(out)
def extract(self, browser) :
last = None
for attr in self.get_attrs() :
for i in range(3) :
try :
foo = getattr(self, "extract_{}".format(attr))
setattr(self, attr, foo(browser))
last = None
break
except Exception as e :
last = e
time.sleep(1)
if last :
raise(last)
def extract_bid(self, elem) :
Browser.until(elem, lambda x: elem.find_xpath("//bidding-dialer-refactor"))
elem = elem.find_xpath("//bidding-dialer-refactor")[0]
def test(elem) :
e = elem.find_element_by_tag_name("text")
elem.last = e.get_property("innerHTML").strip()
return "$" in elem.last
elem.last = None
Browser.until(elem, test)
return elem.last
def extract_details(self, elem) :
details = {}
for i in ["primary", "secondary"] :
Browser.until(elem, lambda x: elem.find_xpath("//lot-details-"+i+"-refactored"))
e = elem.find_xpath("//lot-details-"+i+"-refactored//perfect-scrollbar")[0]
e = e.find_element_by_class_name("ps-content")
l = e.find_element_by_tag_name("label")
v = l.parent.find_element_by_class_name("txtvalue").get_property("innerHTML")
l = l.get_property("innerHTML")
print(e) # TODO
print(l, v)
exit(1)
return elem.get_property("innerText")
def extract_image_links(self, elem) :
Browser.until(elem, lambda x: elem.find_xpath("//ngx-carousel"))
elem = elem.find_xpath("//ngx-carousel")[0]
def test(elem) :
last = []
e = elem.find_elements_by_tag_name("ngx-item")
if not e :
return False
for item in e :
images = item.find_elements_by_tag_name("img")
for image in images :
last.append(image.get_attribute("src"))
elem.last = last
return last
elem.last = None
Browser.until(elem, test)
return elem.last
def extract_title(self, elem) :
Browser.until(elem, lambda x: elem.find_xpath("//lot-header"))
elem = elem.find_xpath("//lot-header")[0]
elem = elem.find_element_by_tag_name("section")
elem = elem.find_element_by_tag_name("div")
elem = elem.find_element_by_tag_name("div")
return elem.get_property("innerText")
def extract_watched(self, elem) :
Browser.until(elem, lambda x: elem.find_xpath("//widget-header-sale"))
elem = elem.find_xpath("//widget-header-sale")[0]
elem = elem.find_elements_by_class_name("watchlist")
return len(elem) > 0
def extract_images(self) :
images = []
for link in self.image_links :
images.append(Image(link))
return images
class Image() :
def __init__(self, url) :
self.ext = url.split(".")[-1]
if len(self.ext) > 10 :
self.ext = "jpg"
self.raw = urllib.request.urlopen(url).read()
def save(self, path) :
if not path.endswith(self.ext) :
path += ".{}".format(self.ext)
with open(path, "wb") as f :
f.write(self.raw)
class Store() :
def __init__(self) :
self._list = self.remote_list()
def set(self, key, value) :
self._set(key, value)
self._list.append(key)
self._set("LIST", self._list)
def _set(self, key, value) :
url = self.key_to_url(key)
value = pickle.dumps(value)
self.DO(url, method="PUT", body=value)
def get(self, key) :
url = self.key_to_url(key)
try :
value = self.DO(url, method="GET")
return pickle.loads(value)
except urllib.error.HTTPError as e :
if "404" in str(e) :
return None
raise(e)
def key_to_url(self, key) :
return "http://localhost:21412/{}".format(self.clean_key(key))
def clean_key(self, key) :
return base64.urlsafe_b64encode(str.encode(key)).decode()
def list(self, prefix="") :
return [i for i in self._list if i.startswith(prefix)]
def remote_list(self) :
value = self.get("LIST")
if not value :
return []
return value
def DO(self, url, method="GET", body=None) :
r = urllib.request.Request(url, method=method, data=body)
resp = urllib.request.urlopen(r).read()
return resp
def main(args) :
print("todays auctions...")
today = Todays_Auctions()
store = Store()
auctions = []
print("auctions links....")
for link in today.auctions_links() :
auctions.append(Auction(link))
break
for car in auctions[0].final_bids() :
print(car)
store.set(str(car), car)
def test(args) :
c = Car()
s = Store()
print(s.set("hello", "world"))
print(s.get("hello"))
c.title = "title of car"
c.bid = "$1,100"
c.image_links = ["https://www.gravatar.com/avatar/24a41cddd8faf69e3fbd0a778ba6fedf?s=32&d=identicon&r=PG&f=1"]
c.watched = True
c.images = c.extract_images()
s.set(str(c), c)
print(c)
print(s.get(str(c)))
print(type(s.get(str(c))))
print(c.images)
c.images[0].save("./out")
print(s.list())
print(s.list("ti"))
print(s.list("it"))
s.set("hi", "mom")
print(s.list())
def main(args) :
a = Auction("https://www.copart.com/auctionDashboard?auctionDetails=880-A")
c = Car()
s = Store()
print(c.extract_details(a.b))
return
s.set(str(c), c)
print(c)
print(s.list())
if __name__ == "__main__" :
from sys import argv
main(argv[:])

13
copart/python/run.sh Executable file
View File

@ -0,0 +1,13 @@
#! /bin/bash
set -e
set -u
cd "$(dirname "${BASH_SOURCE[0]}")"
docker rmi dev:dev || true
docker build -t dev:dev .
docker run \
--rm \
-it \
dev:dev \
"$@"

23
copart/run_dev.sh Executable file
View File

@ -0,0 +1,23 @@
#! /bin/bash
cd "$(dirname "${BASH_SOURCE[0]}")"
set -e
set -u
docker build \
-t dev:dev \
.
PORT=41241
echo PORT $PORT
docker run \
--rm \
-it \
--name dev \
-p $PORT:41241 \
--shm-size=4g \
-v $PWD:/mnt \
dev:dev \
2>&1

15
parallel/python/Dockerfile Executable file
View File

@ -0,0 +1,15 @@
# https://github.com/joyzoursky/docker-python-chromedriver
FROM python:3.7-alpine3.8
RUN echo \
"http://dl-4.alpinelinux.org/alpine/v3.8/main" >> /etc/apk/repositories \
&& echo \
"http://dl-4.alpinelinux.org/alpine/v3.8/community" >> /etc/apk/repositories
RUN apk update
RUN apk add --no-cache chromium chromium-chromedriver
RUN pip install selenium==3.13.0
WORKDIR /work
COPY . /work
CMD []
ENTRYPOINT ["python3", "./main.py"]

337
parallel/python/main.py Executable file
View File

@ -0,0 +1,337 @@
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
import time
import pickle
import urllib
import base64
class Browser() :
def __init__(self, url) :
self.url = url
self.driver = self.make_driver()
def __del__(self) :
try :
self.driver.close()
except Exception :
pass
def make_driver(self) :
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--disable-extensions')
last = None
for i in range(5) :
try :
driver = webdriver.Chrome('/usr/bin/chromedriver',chrome_options=chrome_options)
return driver
except Exception as e:
time.sleep(1)
last = e
raise(last)
def open(self, url=None) :
if not url :
url = self.url
self.driver.get(url)
# foo takes self.driver as an arg, like `
# lambda x: x.find_element_by_id("id")`
def until(elem, foo) :
import datetime
now = datetime.datetime.now()
while (datetime.datetime.now() - now).total_seconds() < 30 :
if foo(elem) :
return
time.sleep(1)
raise Exception("until failed")
# ("//form[1]")
# ("//form[@id='loginForm']")
def find_xpath(self, xpath) :
return self.driver.find_elements_by_xpath(xpath)
# find_element_by_partial_link_text('Conti')
def find_links(self, prefix) :
elements = self.driver.find_elements_by_partial_link_text(prefix)
return [e.get_attribute("href") for e in elements]
class Todays_Auctions() :
def __init__(self) :
self.b = Browser("https://www.copart.com/todaysAuction/")
def auctions_links(self) :
return self.b.find_links("Join Auction")
class Auction() :
def __init__(self, url) :
self.b = Browser(url)
iframe = self.b.find_xpath("//iframe")[0]
self.url = iframe.get_attribute("src")
self.b = Browser(self.url)
def final_bids(self) :
while True :
yield self.wait_car()
def wait_car(self) :
c = Car()
c.extract(self.b)
d = c.copy()
while c == d :
time.sleep(1)
c = d.copy()
d.extract(self.b)
return c
class Car() :
def __init__(self) :
self.bid = None
self.details = None
self.image_links = None
self.images = None
self.title = None
self.watched = False
for attr in self.get_attrs() :
setattr(self, attr, None)
def copy(self) :
c = Car()
for attr in self.get_attrs() :
v = getattr(self, attr)
setattr(c, attr, v)
return c
def __eq__(self, other) :
for attr in [ i for i in self.get_attrs() if not i in ["bid", "images"] ]:
a = getattr(self, attr)
b = getattr(other, attr)
if a != b :
return False
return True
def get_attrs(self) :
return [
"title",
"bid",
"details",
"image_links",
"watched",
]
def __str__(self) :
out = []
for attr in [ i for i in self.get_attrs() if not i.startswith("image") ] :
out.append("{}:{}".format(attr, getattr(self, attr)))
return ", ".join(out)
def extract(self, browser) :
last = None
for attr in self.get_attrs() :
for i in range(3) :
try :
foo = getattr(self, "extract_{}".format(attr))
setattr(self, attr, foo(browser))
last = None
break
except Exception as e :
last = e
time.sleep(1)
if last :
raise(last)
def extract_bid(self, elem) :
Browser.until(elem, lambda x: elem.find_xpath("//bidding-dialer-refactor"))
elem = elem.find_xpath("//bidding-dialer-refactor")[0]
def test(elem) :
e = elem.find_element_by_tag_name("text")
elem.last = e.get_property("innerHTML").strip()
return "$" in elem.last
elem.last = None
Browser.until(elem, test)
return elem.last
def extract_details(self, elem) :
details = {}
for i in ["primary", "secondary"] :
Browser.until(elem, lambda x: elem.find_xpath("//lot-details-"+i+"-refactored"))
e = elem.find_xpath("//lot-details-"+i+"-refactored//perfect-scrollbar")[0]
e = e.find_element_by_class_name("ps-content")
l = e.find_element_by_tag_name("label")
v = l.parent.find_element_by_class_name("txtvalue").get_property("innerHTML")
l = l.get_property("innerHTML")
print(e) # TODO
print(l, v)
exit(1)
return elem.get_property("innerText")
def extract_image_links(self, elem) :
Browser.until(elem, lambda x: elem.find_xpath("//ngx-carousel"))
elem = elem.find_xpath("//ngx-carousel")[0]
def test(elem) :
last = []
e = elem.find_elements_by_tag_name("ngx-item")
if not e :
return False
for item in e :
images = item.find_elements_by_tag_name("img")
for image in images :
last.append(image.get_attribute("src"))
elem.last = last
return last
elem.last = None
Browser.until(elem, test)
return elem.last
def extract_title(self, elem) :
Browser.until(elem, lambda x: elem.find_xpath("//lot-header"))
elem = elem.find_xpath("//lot-header")[0]
elem = elem.find_element_by_tag_name("section")
elem = elem.find_element_by_tag_name("div")
elem = elem.find_element_by_tag_name("div")
return elem.get_property("innerText")
def extract_watched(self, elem) :
Browser.until(elem, lambda x: elem.find_xpath("//widget-header-sale"))
elem = elem.find_xpath("//widget-header-sale")[0]
elem = elem.find_elements_by_class_name("watchlist")
return len(elem) > 0
def extract_images(self) :
images = []
for link in self.image_links :
images.append(Image(link))
return images
class Image() :
def __init__(self, url) :
self.ext = url.split(".")[-1]
if len(self.ext) > 10 :
self.ext = "jpg"
self.raw = urllib.request.urlopen(url).read()
def save(self, path) :
if not path.endswith(self.ext) :
path += ".{}".format(self.ext)
with open(path, "wb") as f :
f.write(self.raw)
class Store() :
def __init__(self) :
self._list = self.remote_list()
def set(self, key, value) :
self._set(key, value)
self._list.append(key)
self._set("LIST", self._list)
def _set(self, key, value) :
url = self.key_to_url(key)
value = pickle.dumps(value)
self.DO(url, method="PUT", body=value)
def get(self, key) :
url = self.key_to_url(key)
try :
value = self.DO(url, method="GET")
return pickle.loads(value)
except urllib.error.HTTPError as e :
if "404" in str(e) :
return None
raise(e)
def key_to_url(self, key) :
return "http://localhost:21412/{}".format(self.clean_key(key))
def clean_key(self, key) :
return base64.urlsafe_b64encode(str.encode(key)).decode()
def list(self, prefix="") :
return [i for i in self._list if i.startswith(prefix)]
def remote_list(self) :
value = self.get("LIST")
if not value :
return []
return value
def DO(self, url, method="GET", body=None) :
r = urllib.request.Request(url, method=method, data=body)
resp = urllib.request.urlopen(r).read()
return resp
def main(args) :
print("todays auctions...")
today = Todays_Auctions()
store = Store()
auctions = []
print("auctions links....")
for link in today.auctions_links() :
auctions.append(Auction(link))
break
for car in auctions[0].final_bids() :
print(car)
store.set(str(car), car)
def test(args) :
c = Car()
s = Store()
print(s.set("hello", "world"))
print(s.get("hello"))
c.title = "title of car"
c.bid = "$1,100"
c.image_links = ["https://www.gravatar.com/avatar/24a41cddd8faf69e3fbd0a778ba6fedf?s=32&d=identicon&r=PG&f=1"]
c.watched = True
c.images = c.extract_images()
s.set(str(c), c)
print(c)
print(s.get(str(c)))
print(type(s.get(str(c))))
print(c.images)
c.images[0].save("./out")
print(s.list())
print(s.list("ti"))
print(s.list("it"))
s.set("hi", "mom")
print(s.list())
def main(args) :
a = Auction("https://www.copart.com/auctionDashboard?auctionDetails=880-A")
c = Car()
s = Store()
print(c.extract_details(a.b))
return
s.set(str(c), c)
print(c)
print(s.list())
def main(args) :
def new() :
from sys import stderr
return webdriver.chrome.service.Service('/usr/bin/chromedriver', port=58080, service_args=[
"--headless",
"--no-sandbox",
"--disable-dev-shm-usage",
"--disable-extensions",
"--disable-gpu",
"--verbose",
])
service = new()
print(service.start())
print(service.port)
print(service.process)
print(service.service_url)
while True :
if not service.is_connectable() :
service.stop()
service = new()
service.start()
time.sleep(1)
service.stop()
if __name__ == "__main__" :
from sys import argv
main(argv[:])

13
parallel/python/run.sh Executable file
View File

@ -0,0 +1,13 @@
#! /bin/bash
set -e
set -u
cd "$(dirname "${BASH_SOURCE[0]}")"
docker rmi dev:dev || true
docker build -t dev:dev .
docker run \
--rm \
-it \
dev:dev \
"$@"