diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..6c1474a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,22 @@
+*.pyc
+*.pth
+*.tar
+*.sub
+*.npy
+*.jpg
+*.png
+*.zip
+main.sh
+checkpoints*
+visualize/*
+!visualize/*.py
+log/*
+config/*
+models/spynet_models/*
+dockers/*
+test_script.sh
+kitti_data/*
+datasets/mnist/
+datasets/svhn/
+results/*
+pretrained/*
diff --git a/README.md b/README.md
index 947fe5d..722b4a4 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,125 @@
-# Adversarial Collaboration
-This is an official repository of
-**Adversarial Collaboration: Joint Unsupervised Learning of Depth, Camera Motion, Optical Flow and Motion Segmentation**
-
-[[Project Page]](http://research.nvidia.com/publication/2018-05_Adversarial-Collaboration-Joint)
-[[Arxiv]](https://arxiv.org/abs/1805.09806)
-
-### We will release the code soon.
+# Competitive Collaboration
+This is an official repository of
+**Competitive Collaboration: Joint Unsupervised Learning of Depth, Camera Motion, Optical Flow and Motion Segmentation**. The project was formerly referred by **Adversarial Collaboration**. We recently ported the entire code to `pytorch-1.0`, so if you discover bugs, please file an issue.
+
+[[Project Page]](http://research.nvidia.com/publication/2018-05_Adversarial-Collaboration-Joint)
+[[Arxiv]](https://arxiv.org/abs/1805.09806)
+
+Skip to:
+- [Joint Unsupervised Learning of Depth, Camera Motion, Optical Flow and Motion Segmentation](#jointcc)
+- [Mixed Domain Learning using MNIST+SVHN](#mnist)
+- [Downloads](#downloads)
+
+### Prerequisites
+Python3 and pytorch are required. Third party libraries can be installed (in a `python3 ` virtualenv) using:
+
+```bash
+pip3 install -r requirements.txt
+```
+
+## Joint Unsupervised Learning of Depth, Camera Motion, Optical Flow and Motion Segmentation
+
+### Preparing training data
+
+#### KITTI
+For [KITTI](http://www.cvlibs.net/datasets/kitti/raw_data.php), first download the dataset using this [script](http://www.cvlibs.net/download.php?file=raw_data_downloader.zip) provided on the official website, and then run the following command.
+
+```bash
+python3 data/prepare_train_data.py /path/to/raw/kitti/dataset/ --dataset-format 'kitti' --dump-root /path/to/resulting/formatted/data/ --width 832 --height 256 --num-threads 1 --static-frames data/static_frames.txt --with-gt
+```
+
+For testing optical flow ground truths on KITTI, download [KITTI2015](http://www.cvlibs.net/datasets/kitti/eval_scene_flow.php?benchmark=flow) dataset. You need to download 1) `stereo 2015/flow 2015/scene flow 2015` data set (2 GB), 2) `multi-view extension` (14 GB), and 3) `calibration files` (1 MB) . In addition, download semantic labels from [here](https://keeper.mpdl.mpg.de/f/239c2dda94e54c449401/?dl=1). You should have the following directory structure:
+```
+kitti2015
+ | data_scene_flow
+ | data_scene_flow_calib
+ | data_scene_flow_multiview
+ | data_stereo_flow
+ | semantic_labels
+```
+
+#### Cityscapes
+
+For [Cityscapes](https://www.cityscapes-dataset.com/), download the following packages: 1) `leftImg8bit_sequence_trainvaltest.zip`, 2) `camera_trainvaltest.zip`. You will probably need to contact the administrators to be able to get it.
+
+```bash
+python3 data/prepare_train_data.py /path/to/cityscapes/dataset/ --dataset-format 'cityscapes' --dump-root /path/to/resulting/formatted/data/ --width 832 --height 342 --num-threads 1
+```
+
+Notice that for Cityscapes the `img_height` is set to 342 because we crop out the bottom part of the image that contains the car logo, and the resulting image will have height 256.
+
+### Training an experiment
+
+Once the data are formatted following the above instructions, you should be able to run a training experiment. Every experiment you run gets logged in `experiment_recorder.md`.
+
+```bash
+python3 train.py /path/to/formatted/data --dispnet DispResNet6 --posenet PoseNetB6 \
+ --masknet MaskNet6 --flownet Back2Future --pretrained-disp /path/to/pretrained/dispnet \
+ --pretrained-pose /path/to/pretrained/posenet --pretrained-flow /path/to/pretrained/flownet \
+ --pretrained-mask /path/to/pretrained/masknet -b4 -m0.1 -pf 0.5 -pc 1.0 -s0.1 -c0.3 \
+ --epoch-size 1000 --log-output -f 0 --nlevels 6 --lr 1e-4 -wssim 0.997 --with-flow-gt \
+ --with-depth-gt --epochs 100 --smoothness-type edgeaware --fix-masknet --fix-flownet \
+ --log-terminal --name EXPERIMENT_NAME
+```
+
+
+You can then start a `tensorboard` session in this folder by
+```bash
+tensorboard --logdir=checkpoints/
+```
+and visualize the training progress by opening [https://localhost:6006](https://localhost:6006) on your browser.
+
+### Evaluation
+
+Disparity evaluation
+```bash
+python3 test_disp.py --dispnet DispResNet6 --pretrained-dispnet /path/to/dispnet --pretrained-posent /path/to/posenet --dataset-dir /path/to/KITTI_raw --dataset-list /path/to/test_files_list
+```
+
+Test file list is available in kitti eval folder. To get fair comparison with [Original paper evaluation code](https://github.com/tinghuiz/SfMLearner/blob/master/kitti_eval/eval_depth.py), don't specify a posenet. However, if you do, it will be used to solve the scale factor ambiguity, the only ground truth used to get it will be vehicle speed which is far more acceptable for real conditions quality measurement, but you will obviously get worse results.
+
+For pose evaluation, you need to download [KITTI Odometry](http://www.cvlibs.net/datasets/kitti/eval_odometry.php) dataset.
+```bash
+python test_pose.py pretrained/pose_model_best.pth.tar --img-width 832 --img-height 256 --dataset-dir /path/to/kitti/odometry/ --sequences 09 --posenet PoseNetB6
+```
+
+Optical Flow evaluation
+```bash
+python test_flow.py --pretrained-disp /path/to/dispnet --pretrained-pose /path/to/posenet --pretrained-mask /path/to/masknet --pretrained-flow /path/to/flownet --kitti-dir /path/to/kitti2015/dataset
+```
+
+Mask evaluation
+```bash
+python test_mask.py --pretrained-disp /path/to/dispnet --pretrained-pose /path/to/posenet --pretrained-mask /path/to/masknet --pretrained-flow /path/to/flownet --kitti-dir /path/to/kitti2015/dataset
+```
+
+
+## Mixed Domain Learning using MNIST+SVHN
+
+#### Training
+For learning classification using Competitive Collaboration with two agents, Alice and Bob, run,
+```bash
+python3 mnist.py path/to/download/mnist/svhn/datasets/ --name EXP_NAME --log-output --log-terminal --epoch-size 1000 --epochs 400 --wr 1000
+```
+
+#### Evaluation
+To evaluate the performance of Alice, Bob and Moderator trained using CC, run,
+```bash
+python3 mnist_eval.py path/to/mnist/svhn/datasets --pretrained-alice pretrained/mnist_svhn/alice.pth.tar --pretrained-bob pretrained/mnist_svhn/bob.pth.tar --pretrained-mod pretrained/mnist_svhn/mod.pth.tar
+```
+
+
+## Downloads
+#### Pretrained Models
+- [DispNet, PoseNet, MaskNet and FlowNet](https://keeper.mpdl.mpg.de/f/72e946daa4e0481fb735/?dl=1) in joint unsupervised learning of depth, camera motion, optical flow and motion segmentation.
+- [Alice, Bob and Moderator](https://keeper.mpdl.mpg.de/f/d0c7d4ebd0d74b84bf10/?dl=1) in Mixed Domain Classification
+
+#### Evaluation Data
+- [Semantic Labels for KITTI](https://keeper.mpdl.mpg.de/f/239c2dda94e54c449401/?dl=1)
+
+## Acknowlegements
+We thank Frederik Kunstner for verifying the convergence proofs. We are grateful to Clement Pinard for his [github repository](https://github.com/ClementPinard/SfmLearner-Pytorch). We use it as our initial code base. We thank Georgios Pavlakos for helping us with several revisions of the paper. We thank Joel Janai for preparing optical flow visualizations, and Clement Gorard for his Make3d evaluation code.
+
+
+## References
+*Anurag Ranjan, Varun Jampani, Lukas Balles, Deqing Sun, Kihwan Kim, Jonas Wulff and Michael J. Black.* **Competitive Collaboration: Joint unsupervised learning of depth, camera motion, optical flow and motion segmentation.** CVPR 2019.
diff --git a/custom_transforms.py b/custom_transforms.py
new file mode 100644
index 0000000..40d2a55
--- /dev/null
+++ b/custom_transforms.py
@@ -0,0 +1,137 @@
+from __future__ import division
+import torch
+import random
+import numpy as np
+from scipy.misc import imresize, imrotate
+
+'''Set of tranform random routines that takes list of inputs as arguments,
+in order to have random but coherent transformations.'''
+
+
+class Compose(object):
+ def __init__(self, transforms):
+ self.transforms = transforms
+
+ def __call__(self, images, intrinsics):
+ for t in self.transforms:
+ images, intrinsics = t(images, intrinsics)
+ return images, intrinsics
+
+
+class Normalize(object):
+ def __init__(self, mean, std):
+ self.mean = mean
+ self.std = std
+
+ def __call__(self, images, intrinsics):
+ for tensor in images:
+ for t, m, s in zip(tensor, self.mean, self.std):
+ t.sub_(m).div_(s)
+ return images, intrinsics
+
+
+class NormalizeLocally(object):
+
+ def __call__(self, images, intrinsics):
+ image_tensor = torch.stack(images)
+ assert(image_tensor.size(1)==3) #3 channel image
+ mean = image_tensor.transpose(0,1).contiguous().view(3, -1).mean(1)
+ std = image_tensor.transpose(0,1).contiguous().view(3, -1).std(1)
+
+ for tensor in images:
+ for t, m, s in zip(tensor, mean, std):
+ t.sub_(m).div_(s)
+ return images, intrinsics
+
+
+class ArrayToTensor(object):
+ """Converts a list of numpy.ndarray (H x W x C) along with a intrinsics matrix to a list of torch.FloatTensor of shape (C x H x W) with a intrinsics tensor."""
+
+ def __call__(self, images, intrinsics):
+ tensors = []
+ for im in images:
+ # put it from HWC to CHW format
+ im = np.transpose(im, (2, 0, 1))
+ # handle numpy array
+ tensors.append(torch.from_numpy(im).float()/255)
+ return tensors, intrinsics
+
+
+class RandomHorizontalFlip(object):
+ """Randomly horizontally flips the given numpy array with a probability of 0.5"""
+
+ def __call__(self, images, intrinsics):
+ assert intrinsics is not None
+ if random.random() < 0.5:
+ output_intrinsics = np.copy(intrinsics)
+ output_images = [np.copy(np.fliplr(im)) for im in images]
+ w = output_images[0].shape[1]
+ output_intrinsics[0,2] = w - output_intrinsics[0,2]
+ else:
+ output_images = images
+ output_intrinsics = intrinsics
+ return output_images, output_intrinsics
+
+class RandomRotate(object):
+ """Randomly rotates images up to 10 degrees and crop them to keep same size as before."""
+ def __call__(self, images, intrinsics):
+ if np.random.random() > 0.5:
+ return images, intrinsics
+ else:
+ assert intrinsics is not None
+ rot = np.random.uniform(0,10)
+ rotated_images = [imrotate(im, rot) for im in images]
+
+ return rotated_images, intrinsics
+
+
+
+
+class RandomScaleCrop(object):
+ """Randomly zooms images up to 15% and crop them to keep same size as before."""
+ def __init__(self, h=0, w=0):
+ self.h = h
+ self.w = w
+
+ def __call__(self, images, intrinsics):
+ assert intrinsics is not None
+ output_intrinsics = np.copy(intrinsics)
+
+ in_h, in_w, _ = images[0].shape
+ x_scaling, y_scaling = np.random.uniform(1,1.1,2)
+ scaled_h, scaled_w = int(in_h * y_scaling), int(in_w * x_scaling)
+
+ output_intrinsics[0] *= x_scaling
+ output_intrinsics[1] *= y_scaling
+ scaled_images = [imresize(im, (scaled_h, scaled_w)) for im in images]
+
+ if self.h and self.w:
+ in_h, in_w = self.h, self.w
+
+ offset_y = np.random.randint(scaled_h - in_h + 1)
+ offset_x = np.random.randint(scaled_w - in_w + 1)
+ cropped_images = [im[offset_y:offset_y + in_h, offset_x:offset_x + in_w] for im in scaled_images]
+
+ output_intrinsics[0,2] -= offset_x
+ output_intrinsics[1,2] -= offset_y
+
+ return cropped_images, output_intrinsics
+
+class Scale(object):
+ """Scales images to a particular size"""
+ def __init__(self, h, w):
+ self.h = h
+ self.w = w
+
+ def __call__(self, images, intrinsics):
+ assert intrinsics is not None
+ output_intrinsics = np.copy(intrinsics)
+
+ in_h, in_w, _ = images[0].shape
+ scaled_h, scaled_w = self.h , self.w
+
+ output_intrinsics[0] *= (scaled_w / in_w)
+ output_intrinsics[1] *= (scaled_h / in_h)
+ scaled_images = [imresize(im, (scaled_h, scaled_w)) for im in images]
+
+ return scaled_images, output_intrinsics
diff --git a/data/cityscapes_loader.py b/data/cityscapes_loader.py
new file mode 100644
index 0000000..3bda3a8
--- /dev/null
+++ b/data/cityscapes_loader.py
@@ -0,0 +1,119 @@
+from __future__ import division
+import json
+import numpy as np
+import scipy.misc
+from path import Path
+from tqdm import tqdm
+
+
+class cityscapes_loader(object):
+ def __init__(self,
+ dataset_dir,
+ split='train',
+ crop_bottom=True, # Get rid of the car logo
+ img_height=171,
+ img_width=416):
+ self.dataset_dir = Path(dataset_dir)
+ self.split = split
+ # Crop out the bottom 25% of the image to remove the car logo
+ self.crop_bottom = crop_bottom
+ self.img_height = img_height
+ self.img_width = img_width
+ self.min_speed = 2
+ self.scenes = (self.dataset_dir/'leftImg8bit_sequence'/split).dirs()
+ print('Total scenes collected: {}'.format(len(self.scenes)))
+
+ def collect_scenes(self, city):
+ img_files = sorted(city.files('*.png'))
+ scenes = {}
+ connex_scenes = {}
+ connex_scene_data_list = []
+ for f in img_files:
+ scene_id,frame_id = f.basename().split('_')[1:3]
+ if scene_id not in scenes.keys():
+ scenes[scene_id] = []
+ scenes[scene_id].append(frame_id)
+
+ # divide scenes into connexe sequences
+ for scene_id in scenes.keys():
+ previous = None
+ connex_scenes[scene_id] = []
+ for id in scenes[scene_id]:
+ if previous is None or int(id) - int(previous) > 1:
+ current_list = []
+ connex_scenes[scene_id].append(current_list)
+ current_list.append(id)
+ previous = id
+
+ # create scene data dicts, and subsample scene every two frames
+ for scene_id in connex_scenes.keys():
+ intrinsics = self.load_intrinsics(city, scene_id)
+ for subscene in connex_scenes[scene_id]:
+ frame_speeds = [self.load_speed(city, scene_id, frame_id) for frame_id in subscene]
+ connex_scene_data_list.append({'city':city,
+ 'scene_id': scene_id,
+ 'rel_path': city.basename()+'_'+scene_id+'_'+subscene[0]+'_0',
+ 'intrinsics': intrinsics,
+ 'frame_ids':subscene[0::2],
+ 'speeds':frame_speeds[0::2]})
+ connex_scene_data_list.append({'city':city,
+ 'scene_id': scene_id,
+ 'rel_path': city.basename()+'_'+scene_id+'_'+subscene[0]+'_1',
+ 'intrinsics': intrinsics,
+ 'frame_ids': subscene[1::2],
+ 'speeds': frame_speeds[1::2]})
+ return connex_scene_data_list
+
+ def load_intrinsics(self, city, scene_id):
+ city_name = city.basename()
+ camera_folder = self.dataset_dir/'camera'/self.split/city_name
+ camera_file = camera_folder.files('{}_{}_*_camera.json'.format(city_name, scene_id))[0]
+ frame_id = camera_file.split('_')[2]
+ frame_path = city/'{}_{}_{}_leftImg8bit.png'.format(city_name, scene_id, frame_id)
+
+ with open(camera_file, 'r') as f:
+ camera = json.load(f)
+ fx = camera['intrinsic']['fx']
+ fy = camera['intrinsic']['fy']
+ u0 = camera['intrinsic']['u0']
+ v0 = camera['intrinsic']['v0']
+ intrinsics = np.array([[fx, 0, u0],
+ [0, fy, v0],
+ [0, 0, 1]])
+
+ img = scipy.misc.imread(frame_path)
+ h,w,_ = img.shape
+ zoom_y = self.img_height/h
+ zoom_x = self.img_width/w
+
+ intrinsics[0] *= zoom_x
+ intrinsics[1] *= zoom_y
+ return intrinsics
+
+ def load_speed(self, city, scene_id, frame_id):
+ city_name = city.basename()
+ vehicle_folder = self.dataset_dir/'vehicle_sequence'/self.split/city_name
+ vehicle_file = vehicle_folder/'{}_{}_{}_vehicle.json'.format(city_name, scene_id, frame_id)
+ with open(vehicle_file, 'r') as f:
+ vehicle = json.load(f)
+ return vehicle['speed']
+
+ def get_scene_imgs(self, scene_data):
+ cum_speed = np.zeros(3)
+ print(scene_data['city'].basename(), scene_data['scene_id'], scene_data['frame_ids'][0])
+ for i,frame_id in enumerate(scene_data['frame_ids']):
+ cum_speed += scene_data['speeds'][i]
+ speed_mag = np.linalg.norm(cum_speed)
+ if speed_mag > self.min_speed:
+ yield self.load_image(scene_data['city'], scene_data['scene_id'], frame_id), frame_id
+ cum_speed *= 0
+
+ def load_image(self, city, scene_id, frame_id):
+ img_file = city/'{}_{}_{}_leftImg8bit.png'.format(city.basename(),
+ scene_id,
+ frame_id)
+ if not img_file.isfile():
+ return None
+ img = scipy.misc.imread(img_file)
+ img = scipy.misc.imresize(img, (self.img_height, self.img_width))[:int(self.img_height*0.75)]
+ return img
diff --git a/data/kitti_raw_loader.py b/data/kitti_raw_loader.py
new file mode 100644
index 0000000..4a62df4
--- /dev/null
+++ b/data/kitti_raw_loader.py
@@ -0,0 +1,186 @@
+import numpy as np
+from path import Path
+import scipy.misc
+from collections import Counter
+
+
+class KittiRawLoader(object):
+ def __init__(self,
+ dataset_dir,
+ static_frames_file=None,
+ img_height=128,
+ img_width=416,
+ min_speed=2,
+ get_gt=False):
+ dir_path = Path(__file__).realpath().dirname()
+ test_scene_file = dir_path/'test_scenes.txt'
+
+ self.from_speed = static_frames_file is None
+ if static_frames_file is not None:
+ static_frames_file = Path(static_frames_file)
+ self.collect_static_frames(static_frames_file)
+
+ with open(test_scene_file, 'r') as f:
+ test_scenes = f.readlines()
+ self.test_scenes = [t[:-1] for t in test_scenes]
+ self.dataset_dir = Path(dataset_dir)
+ self.img_height = img_height
+ self.img_width = img_width
+ self.cam_ids = ['02', '03']
+ self.date_list = ['2011_09_26', '2011_09_28', '2011_09_29', '2011_09_30', '2011_10_03']
+ self.min_speed = min_speed
+ self.get_gt = get_gt
+ self.collect_train_folders()
+
+ def collect_static_frames(self, static_frames_file):
+ with open(static_frames_file, 'r') as f:
+ frames = f.readlines()
+ self.static_frames = {}
+ for fr in frames:
+ if fr == '\n':
+ continue
+ date, drive, frame_id = fr.split(' ')
+ curr_fid = '%.10d' % (np.int(frame_id[:-1]))
+ if drive not in self.static_frames.keys():
+ self.static_frames[drive] = []
+ self.static_frames[drive].append(curr_fid)
+
+ def collect_train_folders(self):
+ self.scenes = []
+ for date in self.date_list:
+ drive_set = (self.dataset_dir/date).dirs()
+ for dr in drive_set:
+ if dr.name[:-5] not in self.test_scenes:
+ self.scenes.append(dr)
+
+ def collect_scenes(self, drive):
+ train_scenes = []
+ for c in self.cam_ids:
+ oxts = sorted((drive/'oxts'/'data').files('*.txt'))
+ scene_data = {'cid': c, 'dir': drive, 'speed': [], 'frame_id': [], 'rel_path': drive.name + '_' + c}
+ for n, f in enumerate(oxts):
+ metadata = np.genfromtxt(f)
+ speed = metadata[8:11]
+ scene_data['speed'].append(speed)
+ scene_data['frame_id'].append('{:010d}'.format(n))
+ sample = self.load_image(scene_data, 0)
+ if sample is None:
+ return []
+ scene_data['P_rect'] = self.get_P_rect(scene_data, sample[1], sample[2])
+ scene_data['intrinsics'] = scene_data['P_rect'][:,:3]
+
+ train_scenes.append(scene_data)
+ return train_scenes
+
+ def get_scene_imgs(self, scene_data):
+ def construct_sample(scene_data, i, frame_id):
+ sample = [self.load_image(scene_data, i)[0], frame_id]
+ if self.get_gt:
+ sample.append(self.generate_depth_map(scene_data, i))
+ return sample
+
+ if self.from_speed:
+ cum_speed = np.zeros(3)
+ for i, speed in enumerate(scene_data['speed']):
+ cum_speed += speed
+ speed_mag = np.linalg.norm(cum_speed)
+ if speed_mag > self.min_speed:
+ frame_id = scene_data['frame_id'][i]
+ yield construct_sample(scene_data, i, frame_id)
+ cum_speed *= 0
+ else: # from static frame file
+ drive = str(scene_data['dir'].name)
+ for (i,frame_id) in enumerate(scene_data['frame_id']):
+ if (drive not in self.static_frames.keys()) or (frame_id not in self.static_frames[drive]):
+ yield construct_sample(scene_data, i, frame_id)
+
+ def get_P_rect(self, scene_data, zoom_x, zoom_y):
+ #print(zoom_x, zoom_y)
+ calib_file = scene_data['dir'].parent/'calib_cam_to_cam.txt'
+
+ filedata = self.read_raw_calib_file(calib_file)
+ P_rect = np.reshape(filedata['P_rect_' + scene_data['cid']], (3, 4))
+ P_rect[0] *= zoom_x
+ P_rect[1] *= zoom_y
+ return P_rect
+
+ def load_image(self, scene_data, tgt_idx):
+ img_file = scene_data['dir']/'image_{}'.format(scene_data['cid'])/'data'/scene_data['frame_id'][tgt_idx]+'.png'
+ if not img_file.isfile():
+ return None
+ img = scipy.misc.imread(img_file)
+ zoom_y = self.img_height/img.shape[0]
+ zoom_x = self.img_width/img.shape[1]
+ img = scipy.misc.imresize(img, (self.img_height, self.img_width))
+ return img, zoom_x, zoom_y
+
+ def read_raw_calib_file(self, filepath):
+ # From https://github.com/utiasSTARS/pykitti/blob/master/pykitti/utils.py
+ """Read in a calibration file and parse into a dictionary."""
+ data = {}
+
+ with open(filepath, 'r') as f:
+ for line in f.readlines():
+ key, value = line.split(':', 1)
+ # The only non-float values in these files are dates, which
+ # we don't care about anyway
+ try:
+ data[key] = np.array([float(x) for x in value.split()])
+ except ValueError:
+ pass
+ return data
+
+ def generate_depth_map(self, scene_data, tgt_idx):
+ # compute projection matrix velodyne->image plane
+
+ def sub2ind(matrixSize, rowSub, colSub):
+ m, n = matrixSize
+ return rowSub * (n-1) + colSub - 1
+
+ R_cam2rect = np.eye(4)
+
+ calib_dir = scene_data['dir'].parent
+ cam2cam = self.read_raw_calib_file(calib_dir/'calib_cam_to_cam.txt')
+ velo2cam = self.read_raw_calib_file(calib_dir/'calib_velo_to_cam.txt')
+ velo2cam = np.hstack((velo2cam['R'].reshape(3,3), velo2cam['T'][..., np.newaxis]))
+ velo2cam = np.vstack((velo2cam, np.array([0, 0, 0, 1.0])))
+ P_rect = scene_data['P_rect']
+ R_cam2rect[:3,:3] = cam2cam['R_rect_00'].reshape(3,3)
+
+ P_velo2im = np.dot(np.dot(P_rect, R_cam2rect), velo2cam)
+
+ velo_file_name = scene_data['dir']/'velodyne_points'/'data'/'{}.bin'.format(scene_data['frame_id'][tgt_idx])
+
+ # load velodyne points and remove all behind image plane (approximation)
+ # each row of the velodyne data is forward, left, up, reflectance
+ velo = np.fromfile(velo_file_name, dtype=np.float32).reshape(-1, 4)
+ velo[:,3] = 1
+ velo = velo[velo[:, 0] >= 0, :]
+
+ # project the points to the camera
+ velo_pts_im = np.dot(P_velo2im, velo.T).T
+ velo_pts_im[:, :2] = velo_pts_im[:,:2] / velo_pts_im[:,-1:]
+
+ # check if in bounds
+ # use minus 1 to get the exact same value as KITTI matlab code
+ velo_pts_im[:, 0] = np.round(velo_pts_im[:,0]) - 1
+ velo_pts_im[:, 1] = np.round(velo_pts_im[:,1]) - 1
+
+ val_inds = (velo_pts_im[:, 0] >= 0) & (velo_pts_im[:, 1] >= 0)
+ val_inds = val_inds & (velo_pts_im[:,0] < self.img_width) & (velo_pts_im[:,1] < self.img_height)
+ velo_pts_im = velo_pts_im[val_inds, :]
+
+ # project to image
+ depth = np.zeros((self.img_height, self.img_width)).astype(np.float32)
+ depth[velo_pts_im[:, 1].astype(np.int), velo_pts_im[:, 0].astype(np.int)] = velo_pts_im[:, 2]
+
+ # find the duplicate points and choose the closest depth
+ inds = sub2ind(depth.shape, velo_pts_im[:, 1], velo_pts_im[:, 0])
+ dupe_inds = [item for item, count in Counter(inds).items() if count > 1]
+ for dd in dupe_inds:
+ pts = np.where(inds == dd)[0]
+ x_loc = int(velo_pts_im[pts[0], 0])
+ y_loc = int(velo_pts_im[pts[0], 1])
+ depth[y_loc, x_loc] = velo_pts_im[pts, 2].min()
+ depth[depth < 0] = 0
+ return depth
diff --git a/data/prepare_train_data.py b/data/prepare_train_data.py
new file mode 100644
index 0000000..1253540
--- /dev/null
+++ b/data/prepare_train_data.py
@@ -0,0 +1,93 @@
+from __future__ import division
+import argparse
+import scipy.misc
+import numpy as np
+from joblib import Parallel, delayed
+from tqdm import tqdm
+from path import Path
+
+parser = argparse.ArgumentParser()
+parser.add_argument("dataset_dir", metavar='DIR',
+ help='path to original dataset')
+parser.add_argument("--dataset-format", type=str, required=True, choices=["kitti", "cityscapes"])
+parser.add_argument("--static-frames", default=None,
+ help="list of imgs to discard for being static, if not set will discard them based on speed \
+ (careful, on KITTI some frames have incorrect speed)")
+parser.add_argument("--with-gt", action='store_true',
+ help="If available (e.g. with KITTI), will store ground truth along with images, for validation")
+parser.add_argument("--dump-root", type=str, required=True, help="Where to dump the data")
+parser.add_argument("--height", type=int, default=128, help="image height")
+parser.add_argument("--width", type=int, default=416, help="image width")
+parser.add_argument("--num-threads", type=int, default=4, help="number of threads to use")
+
+args = parser.parse_args()
+
+
+def dump_example(scene):
+ scene_list = data_loader.collect_scenes(scene)
+ for scene_data in scene_list:
+ dump_dir = args.dump_root/scene_data['rel_path']
+ dump_dir.makedirs_p()
+ intrinsics = scene_data['intrinsics']
+ fx = intrinsics[0, 0]
+ fy = intrinsics[1, 1]
+ cx = intrinsics[0, 2]
+ cy = intrinsics[1, 2]
+
+ dump_cam_file = dump_dir/'cam.txt'
+ with open(dump_cam_file, 'w') as f:
+ f.write('%f,0.,%f,0.,%f,%f,0.,0.,1.' % (fx, cx, fy, cy))
+
+ for sample in data_loader.get_scene_imgs(scene_data):
+ assert(len(sample) >= 2)
+ img, frame_nb = sample[0], sample[1]
+ dump_img_file = dump_dir/'{}.jpg'.format(frame_nb)
+ scipy.misc.imsave(dump_img_file, img)
+ if len(sample) == 3:
+ dump_depth_file = dump_dir/'{}.npy'.format(frame_nb)
+ np.save(dump_depth_file, sample[2])
+
+ if len(dump_dir.files('*.jpg')) < 3:
+ dump_dir.rmtree()
+
+
+def main():
+ args.dump_root = Path(args.dump_root)
+ args.dump_root.mkdir_p()
+
+ global data_loader
+
+ if args.dataset_format == 'kitti':
+ from kitti_raw_loader import KittiRawLoader
+ data_loader = KittiRawLoader(args.dataset_dir,
+ static_frames_file=args.static_frames,
+ img_height=args.height,
+ img_width=args.width,
+ get_gt=args.with_gt)
+
+ if args.dataset_format == 'cityscapes':
+ from cityscapes_loader import cityscapes_loader
+ data_loader = cityscapes_loader(args.dataset_dir,
+ img_height=args.height,
+ img_width=args.width)
+
+ print('Retrieving frames')
+ Parallel(n_jobs=args.num_threads)(delayed(dump_example)(scene) for scene in tqdm(data_loader.scenes))
+ # Split into train/val
+ print('Generating train val lists')
+ np.random.seed(8964)
+ subfolders = args.dump_root.dirs()
+ with open(args.dump_root / 'train.txt', 'w') as tf:
+ with open(args.dump_root / 'val.txt', 'w') as vf:
+ for s in tqdm(subfolders):
+ if np.random.random() < 0.1:
+ vf.write('{}\n'.format(s.name))
+ else:
+ tf.write('{}\n'.format(s.name))
+ # remove useless groundtruth data for training comment if you don't want to erase it
+ for gt_file in s.files('*.npy'):
+ gt_file.remove_p()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/data/static_frames.txt b/data/static_frames.txt
new file mode 100644
index 0000000..54ca1e8
--- /dev/null
+++ b/data/static_frames.txt
@@ -0,0 +1,8044 @@
+2011_09_26 2011_09_26_drive_0009_sync 0000000386
+2011_09_26 2011_09_26_drive_0009_sync 0000000387
+2011_09_26 2011_09_26_drive_0009_sync 0000000390
+2011_09_26 2011_09_26_drive_0009_sync 0000000391
+2011_09_26 2011_09_26_drive_0009_sync 0000000392
+2011_09_26 2011_09_26_drive_0009_sync 0000000394
+2011_09_26 2011_09_26_drive_0009_sync 0000000395
+2011_09_26 2011_09_26_drive_0009_sync 0000000396
+2011_09_26 2011_09_26_drive_0009_sync 0000000397
+2011_09_26 2011_09_26_drive_0009_sync 0000000398
+2011_09_26 2011_09_26_drive_0009_sync 0000000399
+2011_09_26 2011_09_26_drive_0009_sync 0000000400
+2011_09_26 2011_09_26_drive_0009_sync 0000000401
+2011_09_26 2011_09_26_drive_0009_sync 0000000402
+2011_09_26 2011_09_26_drive_0009_sync 0000000403
+2011_09_26 2011_09_26_drive_0009_sync 0000000404
+2011_09_26 2011_09_26_drive_0009_sync 0000000405
+2011_09_26 2011_09_26_drive_0009_sync 0000000407
+2011_09_26 2011_09_26_drive_0009_sync 0000000408
+2011_09_26 2011_09_26_drive_0009_sync 0000000409
+2011_09_26 2011_09_26_drive_0009_sync 0000000410
+2011_09_26 2011_09_26_drive_0009_sync 0000000411
+2011_09_26 2011_09_26_drive_0009_sync 0000000412
+2011_09_26 2011_09_26_drive_0009_sync 0000000413
+2011_09_26 2011_09_26_drive_0009_sync 0000000414
+2011_09_26 2011_09_26_drive_0009_sync 0000000415
+2011_09_26 2011_09_26_drive_0009_sync 0000000416
+2011_09_26 2011_09_26_drive_0009_sync 0000000417
+2011_09_26 2011_09_26_drive_0009_sync 0000000418
+2011_09_26 2011_09_26_drive_0009_sync 0000000419
+2011_09_26 2011_09_26_drive_0009_sync 0000000420
+2011_09_26 2011_09_26_drive_0009_sync 0000000421
+2011_09_26 2011_09_26_drive_0009_sync 0000000422
+2011_09_26 2011_09_26_drive_0009_sync 0000000423
+2011_09_26 2011_09_26_drive_0009_sync 0000000424
+2011_09_26 2011_09_26_drive_0009_sync 0000000425
+2011_09_26 2011_09_26_drive_0009_sync 0000000426
+2011_09_26 2011_09_26_drive_0009_sync 0000000427
+2011_09_26 2011_09_26_drive_0009_sync 0000000428
+2011_09_26 2011_09_26_drive_0009_sync 0000000429
+2011_09_26 2011_09_26_drive_0009_sync 0000000430
+2011_09_26 2011_09_26_drive_0009_sync 0000000431
+2011_09_26 2011_09_26_drive_0009_sync 0000000432
+2011_09_26 2011_09_26_drive_0009_sync 0000000433
+2011_09_26 2011_09_26_drive_0009_sync 0000000434
+2011_09_26 2011_09_26_drive_0009_sync 0000000435
+2011_09_26 2011_09_26_drive_0009_sync 0000000436
+2011_09_26 2011_09_26_drive_0009_sync 0000000437
+2011_09_26 2011_09_26_drive_0009_sync 0000000438
+2011_09_26 2011_09_26_drive_0009_sync 0000000439
+2011_09_26 2011_09_26_drive_0009_sync 0000000440
+2011_09_26 2011_09_26_drive_0009_sync 0000000441
+2011_09_26 2011_09_26_drive_0009_sync 0000000442
+2011_09_26 2011_09_26_drive_0009_sync 0000000443
+2011_09_26 2011_09_26_drive_0009_sync 0000000444
+2011_09_26 2011_09_26_drive_0009_sync 0000000445
+2011_09_26 2011_09_26_drive_0011_sync 0000000117
+2011_09_26 2011_09_26_drive_0011_sync 0000000118
+2011_09_26 2011_09_26_drive_0011_sync 0000000119
+2011_09_26 2011_09_26_drive_0011_sync 0000000120
+2011_09_26 2011_09_26_drive_0011_sync 0000000121
+2011_09_26 2011_09_26_drive_0011_sync 0000000122
+2011_09_26 2011_09_26_drive_0011_sync 0000000123
+2011_09_26 2011_09_26_drive_0011_sync 0000000124
+2011_09_26 2011_09_26_drive_0011_sync 0000000125
+2011_09_26 2011_09_26_drive_0011_sync 0000000126
+2011_09_26 2011_09_26_drive_0011_sync 0000000127
+2011_09_26 2011_09_26_drive_0011_sync 0000000128
+2011_09_26 2011_09_26_drive_0011_sync 0000000129
+2011_09_26 2011_09_26_drive_0011_sync 0000000130
+2011_09_26 2011_09_26_drive_0011_sync 0000000131
+2011_09_26 2011_09_26_drive_0011_sync 0000000132
+2011_09_26 2011_09_26_drive_0011_sync 0000000133
+2011_09_26 2011_09_26_drive_0011_sync 0000000134
+2011_09_26 2011_09_26_drive_0011_sync 0000000136
+2011_09_26 2011_09_26_drive_0011_sync 0000000137
+2011_09_26 2011_09_26_drive_0011_sync 0000000138
+2011_09_26 2011_09_26_drive_0011_sync 0000000139
+2011_09_26 2011_09_26_drive_0011_sync 0000000140
+2011_09_26 2011_09_26_drive_0011_sync 0000000141
+2011_09_26 2011_09_26_drive_0011_sync 0000000142
+2011_09_26 2011_09_26_drive_0011_sync 0000000143
+2011_09_26 2011_09_26_drive_0011_sync 0000000144
+2011_09_26 2011_09_26_drive_0011_sync 0000000145
+2011_09_26 2011_09_26_drive_0011_sync 0000000146
+2011_09_26 2011_09_26_drive_0011_sync 0000000147
+2011_09_26 2011_09_26_drive_0011_sync 0000000148
+2011_09_26 2011_09_26_drive_0011_sync 0000000149
+2011_09_26 2011_09_26_drive_0011_sync 0000000150
+2011_09_26 2011_09_26_drive_0011_sync 0000000151
+2011_09_26 2011_09_26_drive_0011_sync 0000000152
+2011_09_26 2011_09_26_drive_0011_sync 0000000153
+2011_09_26 2011_09_26_drive_0011_sync 0000000154
+2011_09_26 2011_09_26_drive_0011_sync 0000000155
+2011_09_26 2011_09_26_drive_0011_sync 0000000156
+2011_09_26 2011_09_26_drive_0011_sync 0000000157
+2011_09_26 2011_09_26_drive_0011_sync 0000000158
+2011_09_26 2011_09_26_drive_0011_sync 0000000159
+2011_09_26 2011_09_26_drive_0011_sync 0000000160
+2011_09_26 2011_09_26_drive_0011_sync 0000000161
+2011_09_26 2011_09_26_drive_0011_sync 0000000162
+2011_09_26 2011_09_26_drive_0011_sync 0000000163
+2011_09_26 2011_09_26_drive_0011_sync 0000000164
+2011_09_26 2011_09_26_drive_0011_sync 0000000165
+2011_09_26 2011_09_26_drive_0011_sync 0000000166
+2011_09_26 2011_09_26_drive_0011_sync 0000000167
+2011_09_26 2011_09_26_drive_0011_sync 0000000168
+2011_09_26 2011_09_26_drive_0011_sync 0000000169
+2011_09_26 2011_09_26_drive_0011_sync 0000000170
+2011_09_26 2011_09_26_drive_0011_sync 0000000171
+2011_09_26 2011_09_26_drive_0011_sync 0000000172
+2011_09_26 2011_09_26_drive_0011_sync 0000000173
+2011_09_26 2011_09_26_drive_0011_sync 0000000174
+2011_09_26 2011_09_26_drive_0011_sync 0000000175
+2011_09_26 2011_09_26_drive_0011_sync 0000000176
+2011_09_26 2011_09_26_drive_0011_sync 0000000177
+2011_09_26 2011_09_26_drive_0011_sync 0000000178
+2011_09_26 2011_09_26_drive_0011_sync 0000000179
+2011_09_26 2011_09_26_drive_0011_sync 0000000180
+2011_09_26 2011_09_26_drive_0011_sync 0000000181
+2011_09_26 2011_09_26_drive_0011_sync 0000000182
+2011_09_26 2011_09_26_drive_0011_sync 0000000183
+2011_09_26 2011_09_26_drive_0011_sync 0000000184
+2011_09_26 2011_09_26_drive_0011_sync 0000000185
+2011_09_26 2011_09_26_drive_0011_sync 0000000186
+2011_09_26 2011_09_26_drive_0011_sync 0000000187
+2011_09_26 2011_09_26_drive_0011_sync 0000000188
+2011_09_26 2011_09_26_drive_0011_sync 0000000189
+2011_09_26 2011_09_26_drive_0011_sync 0000000190
+2011_09_26 2011_09_26_drive_0011_sync 0000000191
+2011_09_26 2011_09_26_drive_0011_sync 0000000192
+2011_09_26 2011_09_26_drive_0011_sync 0000000193
+2011_09_26 2011_09_26_drive_0011_sync 0000000194
+2011_09_26 2011_09_26_drive_0011_sync 0000000195
+2011_09_26 2011_09_26_drive_0011_sync 0000000196
+2011_09_26 2011_09_26_drive_0011_sync 0000000197
+2011_09_26 2011_09_26_drive_0011_sync 0000000198
+2011_09_26 2011_09_26_drive_0011_sync 0000000199
+2011_09_26 2011_09_26_drive_0011_sync 0000000200
+2011_09_26 2011_09_26_drive_0011_sync 0000000201
+2011_09_26 2011_09_26_drive_0011_sync 0000000202
+2011_09_26 2011_09_26_drive_0011_sync 0000000203
+2011_09_26 2011_09_26_drive_0011_sync 0000000204
+2011_09_26 2011_09_26_drive_0011_sync 0000000205
+2011_09_26 2011_09_26_drive_0011_sync 0000000206
+2011_09_26 2011_09_26_drive_0011_sync 0000000207
+2011_09_26 2011_09_26_drive_0011_sync 0000000208
+2011_09_26 2011_09_26_drive_0011_sync 0000000209
+2011_09_26 2011_09_26_drive_0011_sync 0000000210
+2011_09_26 2011_09_26_drive_0011_sync 0000000211
+2011_09_26 2011_09_26_drive_0011_sync 0000000212
+2011_09_26 2011_09_26_drive_0011_sync 0000000213
+2011_09_26 2011_09_26_drive_0011_sync 0000000214
+2011_09_26 2011_09_26_drive_0011_sync 0000000215
+2011_09_26 2011_09_26_drive_0011_sync 0000000216
+2011_09_26 2011_09_26_drive_0011_sync 0000000217
+2011_09_26 2011_09_26_drive_0011_sync 0000000218
+2011_09_26 2011_09_26_drive_0011_sync 0000000219
+2011_09_26 2011_09_26_drive_0011_sync 0000000220
+2011_09_26 2011_09_26_drive_0011_sync 0000000221
+2011_09_26 2011_09_26_drive_0011_sync 0000000222
+2011_09_26 2011_09_26_drive_0011_sync 0000000223
+2011_09_26 2011_09_26_drive_0011_sync 0000000224
+2011_09_26 2011_09_26_drive_0011_sync 0000000225
+2011_09_26 2011_09_26_drive_0011_sync 0000000226
+2011_09_26 2011_09_26_drive_0011_sync 0000000227
+2011_09_26 2011_09_26_drive_0011_sync 0000000228
+2011_09_26 2011_09_26_drive_0011_sync 0000000229
+2011_09_26 2011_09_26_drive_0011_sync 0000000230
+2011_09_26 2011_09_26_drive_0011_sync 0000000231
+2011_09_26 2011_09_26_drive_0017_sync 0000000000
+2011_09_26 2011_09_26_drive_0017_sync 0000000001
+2011_09_26 2011_09_26_drive_0017_sync 0000000004
+2011_09_26 2011_09_26_drive_0017_sync 0000000005
+2011_09_26 2011_09_26_drive_0017_sync 0000000006
+2011_09_26 2011_09_26_drive_0017_sync 0000000007
+2011_09_26 2011_09_26_drive_0017_sync 0000000008
+2011_09_26 2011_09_26_drive_0017_sync 0000000009
+2011_09_26 2011_09_26_drive_0017_sync 0000000010
+2011_09_26 2011_09_26_drive_0017_sync 0000000011
+2011_09_26 2011_09_26_drive_0017_sync 0000000012
+2011_09_26 2011_09_26_drive_0017_sync 0000000013
+2011_09_26 2011_09_26_drive_0017_sync 0000000014
+2011_09_26 2011_09_26_drive_0017_sync 0000000015
+2011_09_26 2011_09_26_drive_0017_sync 0000000016
+2011_09_26 2011_09_26_drive_0017_sync 0000000017
+2011_09_26 2011_09_26_drive_0017_sync 0000000018
+2011_09_26 2011_09_26_drive_0017_sync 0000000019
+2011_09_26 2011_09_26_drive_0017_sync 0000000020
+2011_09_26 2011_09_26_drive_0017_sync 0000000021
+2011_09_26 2011_09_26_drive_0017_sync 0000000022
+2011_09_26 2011_09_26_drive_0017_sync 0000000023
+2011_09_26 2011_09_26_drive_0017_sync 0000000024
+2011_09_26 2011_09_26_drive_0017_sync 0000000025
+2011_09_26 2011_09_26_drive_0017_sync 0000000026
+2011_09_26 2011_09_26_drive_0017_sync 0000000027
+2011_09_26 2011_09_26_drive_0017_sync 0000000028
+2011_09_26 2011_09_26_drive_0017_sync 0000000029
+2011_09_26 2011_09_26_drive_0017_sync 0000000030
+2011_09_26 2011_09_26_drive_0017_sync 0000000031
+2011_09_26 2011_09_26_drive_0017_sync 0000000032
+2011_09_26 2011_09_26_drive_0017_sync 0000000033
+2011_09_26 2011_09_26_drive_0017_sync 0000000034
+2011_09_26 2011_09_26_drive_0017_sync 0000000035
+2011_09_26 2011_09_26_drive_0017_sync 0000000036
+2011_09_26 2011_09_26_drive_0017_sync 0000000037
+2011_09_26 2011_09_26_drive_0017_sync 0000000040
+2011_09_26 2011_09_26_drive_0017_sync 0000000041
+2011_09_26 2011_09_26_drive_0017_sync 0000000042
+2011_09_26 2011_09_26_drive_0017_sync 0000000043
+2011_09_26 2011_09_26_drive_0017_sync 0000000044
+2011_09_26 2011_09_26_drive_0017_sync 0000000045
+2011_09_26 2011_09_26_drive_0017_sync 0000000046
+2011_09_26 2011_09_26_drive_0017_sync 0000000047
+2011_09_26 2011_09_26_drive_0017_sync 0000000048
+2011_09_26 2011_09_26_drive_0017_sync 0000000049
+2011_09_26 2011_09_26_drive_0017_sync 0000000050
+2011_09_26 2011_09_26_drive_0017_sync 0000000051
+2011_09_26 2011_09_26_drive_0017_sync 0000000052
+2011_09_26 2011_09_26_drive_0017_sync 0000000053
+2011_09_26 2011_09_26_drive_0017_sync 0000000054
+2011_09_26 2011_09_26_drive_0017_sync 0000000055
+2011_09_26 2011_09_26_drive_0017_sync 0000000056
+2011_09_26 2011_09_26_drive_0017_sync 0000000057
+2011_09_26 2011_09_26_drive_0017_sync 0000000058
+2011_09_26 2011_09_26_drive_0017_sync 0000000059
+2011_09_26 2011_09_26_drive_0017_sync 0000000060
+2011_09_26 2011_09_26_drive_0017_sync 0000000061
+2011_09_26 2011_09_26_drive_0017_sync 0000000062
+2011_09_26 2011_09_26_drive_0017_sync 0000000063
+2011_09_26 2011_09_26_drive_0017_sync 0000000064
+2011_09_26 2011_09_26_drive_0017_sync 0000000065
+2011_09_26 2011_09_26_drive_0017_sync 0000000066
+2011_09_26 2011_09_26_drive_0017_sync 0000000067
+2011_09_26 2011_09_26_drive_0017_sync 0000000068
+2011_09_26 2011_09_26_drive_0017_sync 0000000069
+2011_09_26 2011_09_26_drive_0017_sync 0000000070
+2011_09_26 2011_09_26_drive_0017_sync 0000000071
+2011_09_26 2011_09_26_drive_0017_sync 0000000072
+2011_09_26 2011_09_26_drive_0017_sync 0000000073
+2011_09_26 2011_09_26_drive_0017_sync 0000000074
+2011_09_26 2011_09_26_drive_0017_sync 0000000075
+2011_09_26 2011_09_26_drive_0017_sync 0000000076
+2011_09_26 2011_09_26_drive_0017_sync 0000000077
+2011_09_26 2011_09_26_drive_0017_sync 0000000078
+2011_09_26 2011_09_26_drive_0017_sync 0000000079
+2011_09_26 2011_09_26_drive_0017_sync 0000000080
+2011_09_26 2011_09_26_drive_0017_sync 0000000081
+2011_09_26 2011_09_26_drive_0017_sync 0000000082
+2011_09_26 2011_09_26_drive_0017_sync 0000000083
+2011_09_26 2011_09_26_drive_0017_sync 0000000084
+2011_09_26 2011_09_26_drive_0017_sync 0000000085
+2011_09_26 2011_09_26_drive_0017_sync 0000000086
+2011_09_26 2011_09_26_drive_0017_sync 0000000087
+2011_09_26 2011_09_26_drive_0017_sync 0000000088
+2011_09_26 2011_09_26_drive_0017_sync 0000000089
+2011_09_26 2011_09_26_drive_0017_sync 0000000090
+2011_09_26 2011_09_26_drive_0017_sync 0000000091
+2011_09_26 2011_09_26_drive_0017_sync 0000000092
+2011_09_26 2011_09_26_drive_0017_sync 0000000093
+2011_09_26 2011_09_26_drive_0017_sync 0000000094
+2011_09_26 2011_09_26_drive_0017_sync 0000000095
+2011_09_26 2011_09_26_drive_0017_sync 0000000096
+2011_09_26 2011_09_26_drive_0017_sync 0000000097
+2011_09_26 2011_09_26_drive_0017_sync 0000000098
+2011_09_26 2011_09_26_drive_0017_sync 0000000099
+2011_09_26 2011_09_26_drive_0017_sync 0000000100
+2011_09_26 2011_09_26_drive_0017_sync 0000000101
+2011_09_26 2011_09_26_drive_0017_sync 0000000102
+2011_09_26 2011_09_26_drive_0017_sync 0000000103
+2011_09_26 2011_09_26_drive_0017_sync 0000000104
+2011_09_26 2011_09_26_drive_0017_sync 0000000105
+2011_09_26 2011_09_26_drive_0017_sync 0000000106
+2011_09_26 2011_09_26_drive_0017_sync 0000000107
+2011_09_26 2011_09_26_drive_0017_sync 0000000108
+2011_09_26 2011_09_26_drive_0017_sync 0000000109
+2011_09_26 2011_09_26_drive_0017_sync 0000000110
+2011_09_26 2011_09_26_drive_0017_sync 0000000111
+2011_09_26 2011_09_26_drive_0017_sync 0000000112
+2011_09_26 2011_09_26_drive_0018_sync 0000000000
+2011_09_26 2011_09_26_drive_0018_sync 0000000001
+2011_09_26 2011_09_26_drive_0018_sync 0000000002
+2011_09_26 2011_09_26_drive_0018_sync 0000000006
+2011_09_26 2011_09_26_drive_0018_sync 0000000007
+2011_09_26 2011_09_26_drive_0018_sync 0000000008
+2011_09_26 2011_09_26_drive_0018_sync 0000000009
+2011_09_26 2011_09_26_drive_0018_sync 0000000010
+2011_09_26 2011_09_26_drive_0018_sync 0000000011
+2011_09_26 2011_09_26_drive_0018_sync 0000000012
+2011_09_26 2011_09_26_drive_0018_sync 0000000013
+2011_09_26 2011_09_26_drive_0018_sync 0000000014
+2011_09_26 2011_09_26_drive_0018_sync 0000000015
+2011_09_26 2011_09_26_drive_0018_sync 0000000016
+2011_09_26 2011_09_26_drive_0018_sync 0000000017
+2011_09_26 2011_09_26_drive_0018_sync 0000000018
+2011_09_26 2011_09_26_drive_0018_sync 0000000019
+2011_09_26 2011_09_26_drive_0018_sync 0000000020
+2011_09_26 2011_09_26_drive_0018_sync 0000000021
+2011_09_26 2011_09_26_drive_0018_sync 0000000022
+2011_09_26 2011_09_26_drive_0018_sync 0000000023
+2011_09_26 2011_09_26_drive_0018_sync 0000000024
+2011_09_26 2011_09_26_drive_0018_sync 0000000025
+2011_09_26 2011_09_26_drive_0018_sync 0000000026
+2011_09_26 2011_09_26_drive_0018_sync 0000000027
+2011_09_26 2011_09_26_drive_0018_sync 0000000028
+2011_09_26 2011_09_26_drive_0018_sync 0000000029
+2011_09_26 2011_09_26_drive_0018_sync 0000000030
+2011_09_26 2011_09_26_drive_0018_sync 0000000031
+2011_09_26 2011_09_26_drive_0018_sync 0000000032
+2011_09_26 2011_09_26_drive_0018_sync 0000000033
+2011_09_26 2011_09_26_drive_0018_sync 0000000034
+2011_09_26 2011_09_26_drive_0018_sync 0000000035
+2011_09_26 2011_09_26_drive_0018_sync 0000000036
+2011_09_26 2011_09_26_drive_0018_sync 0000000037
+2011_09_26 2011_09_26_drive_0018_sync 0000000043
+2011_09_26 2011_09_26_drive_0018_sync 0000000044
+2011_09_26 2011_09_26_drive_0018_sync 0000000045
+2011_09_26 2011_09_26_drive_0018_sync 0000000046
+2011_09_26 2011_09_26_drive_0018_sync 0000000047
+2011_09_26 2011_09_26_drive_0018_sync 0000000048
+2011_09_26 2011_09_26_drive_0018_sync 0000000049
+2011_09_26 2011_09_26_drive_0018_sync 0000000050
+2011_09_26 2011_09_26_drive_0018_sync 0000000051
+2011_09_26 2011_09_26_drive_0018_sync 0000000052
+2011_09_26 2011_09_26_drive_0018_sync 0000000053
+2011_09_26 2011_09_26_drive_0018_sync 0000000054
+2011_09_26 2011_09_26_drive_0018_sync 0000000055
+2011_09_26 2011_09_26_drive_0018_sync 0000000056
+2011_09_26 2011_09_26_drive_0018_sync 0000000057
+2011_09_26 2011_09_26_drive_0018_sync 0000000064
+2011_09_26 2011_09_26_drive_0018_sync 0000000065
+2011_09_26 2011_09_26_drive_0018_sync 0000000066
+2011_09_26 2011_09_26_drive_0018_sync 0000000067
+2011_09_26 2011_09_26_drive_0018_sync 0000000068
+2011_09_26 2011_09_26_drive_0018_sync 0000000069
+2011_09_26 2011_09_26_drive_0018_sync 0000000082
+2011_09_26 2011_09_26_drive_0018_sync 0000000083
+2011_09_26 2011_09_26_drive_0018_sync 0000000084
+2011_09_26 2011_09_26_drive_0018_sync 0000000085
+2011_09_26 2011_09_26_drive_0018_sync 0000000086
+2011_09_26 2011_09_26_drive_0018_sync 0000000089
+2011_09_26 2011_09_26_drive_0018_sync 0000000094
+2011_09_26 2011_09_26_drive_0018_sync 0000000095
+2011_09_26 2011_09_26_drive_0018_sync 0000000096
+2011_09_26 2011_09_26_drive_0018_sync 0000000097
+2011_09_26 2011_09_26_drive_0018_sync 0000000103
+2011_09_26 2011_09_26_drive_0018_sync 0000000104
+2011_09_26 2011_09_26_drive_0018_sync 0000000105
+2011_09_26 2011_09_26_drive_0018_sync 0000000106
+2011_09_26 2011_09_26_drive_0018_sync 0000000107
+2011_09_26 2011_09_26_drive_0018_sync 0000000108
+2011_09_26 2011_09_26_drive_0018_sync 0000000109
+2011_09_26 2011_09_26_drive_0018_sync 0000000110
+2011_09_26 2011_09_26_drive_0018_sync 0000000111
+2011_09_26 2011_09_26_drive_0018_sync 0000000112
+2011_09_26 2011_09_26_drive_0018_sync 0000000113
+2011_09_26 2011_09_26_drive_0018_sync 0000000114
+2011_09_26 2011_09_26_drive_0018_sync 0000000115
+2011_09_26 2011_09_26_drive_0018_sync 0000000116
+2011_09_26 2011_09_26_drive_0018_sync 0000000117
+2011_09_26 2011_09_26_drive_0018_sync 0000000118
+2011_09_26 2011_09_26_drive_0018_sync 0000000119
+2011_09_26 2011_09_26_drive_0018_sync 0000000120
+2011_09_26 2011_09_26_drive_0018_sync 0000000121
+2011_09_26 2011_09_26_drive_0018_sync 0000000122
+2011_09_26 2011_09_26_drive_0018_sync 0000000123
+2011_09_26 2011_09_26_drive_0018_sync 0000000124
+2011_09_26 2011_09_26_drive_0018_sync 0000000125
+2011_09_26 2011_09_26_drive_0018_sync 0000000126
+2011_09_26 2011_09_26_drive_0018_sync 0000000127
+2011_09_26 2011_09_26_drive_0018_sync 0000000128
+2011_09_26 2011_09_26_drive_0018_sync 0000000129
+2011_09_26 2011_09_26_drive_0018_sync 0000000130
+2011_09_26 2011_09_26_drive_0018_sync 0000000131
+2011_09_26 2011_09_26_drive_0018_sync 0000000132
+2011_09_26 2011_09_26_drive_0018_sync 0000000133
+2011_09_26 2011_09_26_drive_0018_sync 0000000134
+2011_09_26 2011_09_26_drive_0018_sync 0000000135
+2011_09_26 2011_09_26_drive_0018_sync 0000000136
+2011_09_26 2011_09_26_drive_0018_sync 0000000137
+2011_09_26 2011_09_26_drive_0018_sync 0000000138
+2011_09_26 2011_09_26_drive_0018_sync 0000000139
+2011_09_26 2011_09_26_drive_0018_sync 0000000140
+2011_09_26 2011_09_26_drive_0018_sync 0000000141
+2011_09_26 2011_09_26_drive_0018_sync 0000000142
+2011_09_26 2011_09_26_drive_0018_sync 0000000143
+2011_09_26 2011_09_26_drive_0018_sync 0000000144
+2011_09_26 2011_09_26_drive_0018_sync 0000000145
+2011_09_26 2011_09_26_drive_0018_sync 0000000146
+2011_09_26 2011_09_26_drive_0018_sync 0000000147
+2011_09_26 2011_09_26_drive_0018_sync 0000000148
+2011_09_26 2011_09_26_drive_0018_sync 0000000149
+2011_09_26 2011_09_26_drive_0018_sync 0000000150
+2011_09_26 2011_09_26_drive_0018_sync 0000000151
+2011_09_26 2011_09_26_drive_0018_sync 0000000152
+2011_09_26 2011_09_26_drive_0018_sync 0000000153
+2011_09_26 2011_09_26_drive_0018_sync 0000000154
+2011_09_26 2011_09_26_drive_0018_sync 0000000155
+2011_09_26 2011_09_26_drive_0018_sync 0000000156
+2011_09_26 2011_09_26_drive_0018_sync 0000000157
+2011_09_26 2011_09_26_drive_0018_sync 0000000158
+2011_09_26 2011_09_26_drive_0018_sync 0000000159
+2011_09_26 2011_09_26_drive_0018_sync 0000000160
+2011_09_26 2011_09_26_drive_0018_sync 0000000161
+2011_09_26 2011_09_26_drive_0018_sync 0000000162
+2011_09_26 2011_09_26_drive_0018_sync 0000000163
+2011_09_26 2011_09_26_drive_0018_sync 0000000164
+2011_09_26 2011_09_26_drive_0018_sync 0000000165
+2011_09_26 2011_09_26_drive_0018_sync 0000000166
+2011_09_26 2011_09_26_drive_0018_sync 0000000167
+2011_09_26 2011_09_26_drive_0018_sync 0000000168
+2011_09_26 2011_09_26_drive_0018_sync 0000000169
+2011_09_26 2011_09_26_drive_0018_sync 0000000170
+2011_09_26 2011_09_26_drive_0018_sync 0000000171
+2011_09_26 2011_09_26_drive_0018_sync 0000000172
+2011_09_26 2011_09_26_drive_0018_sync 0000000173
+2011_09_26 2011_09_26_drive_0018_sync 0000000174
+2011_09_26 2011_09_26_drive_0018_sync 0000000175
+2011_09_26 2011_09_26_drive_0018_sync 0000000176
+2011_09_26 2011_09_26_drive_0018_sync 0000000177
+2011_09_26 2011_09_26_drive_0018_sync 0000000178
+2011_09_26 2011_09_26_drive_0018_sync 0000000179
+2011_09_26 2011_09_26_drive_0018_sync 0000000180
+2011_09_26 2011_09_26_drive_0018_sync 0000000181
+2011_09_26 2011_09_26_drive_0018_sync 0000000182
+2011_09_26 2011_09_26_drive_0018_sync 0000000183
+2011_09_26 2011_09_26_drive_0018_sync 0000000184
+2011_09_26 2011_09_26_drive_0018_sync 0000000185
+2011_09_26 2011_09_26_drive_0018_sync 0000000186
+2011_09_26 2011_09_26_drive_0018_sync 0000000189
+2011_09_26 2011_09_26_drive_0018_sync 0000000190
+2011_09_26 2011_09_26_drive_0018_sync 0000000191
+2011_09_26 2011_09_26_drive_0018_sync 0000000192
+2011_09_26 2011_09_26_drive_0018_sync 0000000194
+2011_09_26 2011_09_26_drive_0019_sync 0000000404
+2011_09_26 2011_09_26_drive_0019_sync 0000000405
+2011_09_26 2011_09_26_drive_0019_sync 0000000406
+2011_09_26 2011_09_26_drive_0019_sync 0000000407
+2011_09_26 2011_09_26_drive_0019_sync 0000000408
+2011_09_26 2011_09_26_drive_0019_sync 0000000409
+2011_09_26 2011_09_26_drive_0019_sync 0000000410
+2011_09_26 2011_09_26_drive_0019_sync 0000000411
+2011_09_26 2011_09_26_drive_0019_sync 0000000412
+2011_09_26 2011_09_26_drive_0019_sync 0000000413
+2011_09_26 2011_09_26_drive_0019_sync 0000000414
+2011_09_26 2011_09_26_drive_0019_sync 0000000415
+2011_09_26 2011_09_26_drive_0019_sync 0000000416
+2011_09_26 2011_09_26_drive_0019_sync 0000000417
+2011_09_26 2011_09_26_drive_0019_sync 0000000418
+2011_09_26 2011_09_26_drive_0019_sync 0000000419
+2011_09_26 2011_09_26_drive_0019_sync 0000000420
+2011_09_26 2011_09_26_drive_0019_sync 0000000421
+2011_09_26 2011_09_26_drive_0019_sync 0000000422
+2011_09_26 2011_09_26_drive_0019_sync 0000000423
+2011_09_26 2011_09_26_drive_0019_sync 0000000424
+2011_09_26 2011_09_26_drive_0019_sync 0000000425
+2011_09_26 2011_09_26_drive_0019_sync 0000000426
+2011_09_26 2011_09_26_drive_0019_sync 0000000427
+2011_09_26 2011_09_26_drive_0019_sync 0000000428
+2011_09_26 2011_09_26_drive_0019_sync 0000000429
+2011_09_26 2011_09_26_drive_0019_sync 0000000430
+2011_09_26 2011_09_26_drive_0019_sync 0000000431
+2011_09_26 2011_09_26_drive_0019_sync 0000000432
+2011_09_26 2011_09_26_drive_0019_sync 0000000433
+2011_09_26 2011_09_26_drive_0019_sync 0000000434
+2011_09_26 2011_09_26_drive_0019_sync 0000000435
+2011_09_26 2011_09_26_drive_0019_sync 0000000436
+2011_09_26 2011_09_26_drive_0019_sync 0000000437
+2011_09_26 2011_09_26_drive_0019_sync 0000000438
+2011_09_26 2011_09_26_drive_0019_sync 0000000439
+2011_09_26 2011_09_26_drive_0019_sync 0000000440
+2011_09_26 2011_09_26_drive_0019_sync 0000000441
+2011_09_26 2011_09_26_drive_0019_sync 0000000442
+2011_09_26 2011_09_26_drive_0019_sync 0000000443
+2011_09_26 2011_09_26_drive_0019_sync 0000000444
+2011_09_26 2011_09_26_drive_0019_sync 0000000445
+2011_09_26 2011_09_26_drive_0019_sync 0000000446
+2011_09_26 2011_09_26_drive_0019_sync 0000000447
+2011_09_26 2011_09_26_drive_0019_sync 0000000448
+2011_09_26 2011_09_26_drive_0019_sync 0000000449
+2011_09_26 2011_09_26_drive_0019_sync 0000000450
+2011_09_26 2011_09_26_drive_0019_sync 0000000451
+2011_09_26 2011_09_26_drive_0019_sync 0000000452
+2011_09_26 2011_09_26_drive_0019_sync 0000000453
+2011_09_26 2011_09_26_drive_0019_sync 0000000454
+2011_09_26 2011_09_26_drive_0019_sync 0000000455
+2011_09_26 2011_09_26_drive_0019_sync 0000000456
+2011_09_26 2011_09_26_drive_0019_sync 0000000457
+2011_09_26 2011_09_26_drive_0019_sync 0000000458
+2011_09_26 2011_09_26_drive_0019_sync 0000000471
+2011_09_26 2011_09_26_drive_0019_sync 0000000472
+2011_09_26 2011_09_26_drive_0020_sync 0000000042
+2011_09_26 2011_09_26_drive_0020_sync 0000000043
+2011_09_26 2011_09_26_drive_0020_sync 0000000044
+2011_09_26 2011_09_26_drive_0020_sync 0000000045
+2011_09_26 2011_09_26_drive_0020_sync 0000000046
+2011_09_26 2011_09_26_drive_0020_sync 0000000047
+2011_09_26 2011_09_26_drive_0020_sync 0000000048
+2011_09_26 2011_09_26_drive_0020_sync 0000000049
+2011_09_26 2011_09_26_drive_0020_sync 0000000050
+2011_09_26 2011_09_26_drive_0020_sync 0000000051
+2011_09_26 2011_09_26_drive_0020_sync 0000000052
+2011_09_26 2011_09_26_drive_0020_sync 0000000053
+2011_09_26 2011_09_26_drive_0020_sync 0000000054
+2011_09_26 2011_09_26_drive_0020_sync 0000000055
+2011_09_26 2011_09_26_drive_0020_sync 0000000056
+2011_09_26 2011_09_26_drive_0020_sync 0000000057
+2011_09_26 2011_09_26_drive_0020_sync 0000000058
+2011_09_26 2011_09_26_drive_0020_sync 0000000059
+2011_09_26 2011_09_26_drive_0020_sync 0000000060
+2011_09_26 2011_09_26_drive_0020_sync 0000000061
+2011_09_26 2011_09_26_drive_0020_sync 0000000062
+2011_09_26 2011_09_26_drive_0020_sync 0000000063
+2011_09_26 2011_09_26_drive_0020_sync 0000000064
+2011_09_26 2011_09_26_drive_0020_sync 0000000065
+2011_09_26 2011_09_26_drive_0020_sync 0000000066
+2011_09_26 2011_09_26_drive_0020_sync 0000000067
+2011_09_26 2011_09_26_drive_0020_sync 0000000068
+2011_09_26 2011_09_26_drive_0020_sync 0000000069
+2011_09_26 2011_09_26_drive_0020_sync 0000000070
+2011_09_26 2011_09_26_drive_0020_sync 0000000071
+2011_09_26 2011_09_26_drive_0020_sync 0000000072
+2011_09_26 2011_09_26_drive_0020_sync 0000000073
+2011_09_26 2011_09_26_drive_0020_sync 0000000074
+2011_09_26 2011_09_26_drive_0020_sync 0000000075
+2011_09_26 2011_09_26_drive_0020_sync 0000000076
+2011_09_26 2011_09_26_drive_0020_sync 0000000077
+2011_09_26 2011_09_26_drive_0020_sync 0000000078
+2011_09_26 2011_09_26_drive_0020_sync 0000000079
+2011_09_26 2011_09_26_drive_0020_sync 0000000080
+2011_09_26 2011_09_26_drive_0020_sync 0000000081
+2011_09_26 2011_09_26_drive_0020_sync 0000000082
+2011_09_26 2011_09_26_drive_0020_sync 0000000083
+2011_09_26 2011_09_26_drive_0020_sync 0000000084
+2011_09_26 2011_09_26_drive_0022_sync 0000000000
+2011_09_26 2011_09_26_drive_0022_sync 0000000001
+2011_09_26 2011_09_26_drive_0022_sync 0000000002
+2011_09_26 2011_09_26_drive_0022_sync 0000000003
+2011_09_26 2011_09_26_drive_0022_sync 0000000004
+2011_09_26 2011_09_26_drive_0022_sync 0000000575
+2011_09_26 2011_09_26_drive_0022_sync 0000000576
+2011_09_26 2011_09_26_drive_0029_sync 0000000177
+2011_09_26 2011_09_26_drive_0029_sync 0000000178
+2011_09_26 2011_09_26_drive_0029_sync 0000000179
+2011_09_26 2011_09_26_drive_0029_sync 0000000180
+2011_09_26 2011_09_26_drive_0029_sync 0000000181
+2011_09_26 2011_09_26_drive_0029_sync 0000000182
+2011_09_26 2011_09_26_drive_0029_sync 0000000183
+2011_09_26 2011_09_26_drive_0029_sync 0000000184
+2011_09_26 2011_09_26_drive_0029_sync 0000000185
+2011_09_26 2011_09_26_drive_0029_sync 0000000186
+2011_09_26 2011_09_26_drive_0029_sync 0000000187
+2011_09_26 2011_09_26_drive_0029_sync 0000000188
+2011_09_26 2011_09_26_drive_0029_sync 0000000189
+2011_09_26 2011_09_26_drive_0029_sync 0000000190
+2011_09_26 2011_09_26_drive_0029_sync 0000000191
+2011_09_26 2011_09_26_drive_0029_sync 0000000192
+2011_09_26 2011_09_26_drive_0029_sync 0000000193
+2011_09_26 2011_09_26_drive_0029_sync 0000000194
+2011_09_26 2011_09_26_drive_0029_sync 0000000195
+2011_09_26 2011_09_26_drive_0029_sync 0000000196
+2011_09_26 2011_09_26_drive_0029_sync 0000000197
+2011_09_26 2011_09_26_drive_0029_sync 0000000198
+2011_09_26 2011_09_26_drive_0029_sync 0000000199
+2011_09_26 2011_09_26_drive_0029_sync 0000000200
+2011_09_26 2011_09_26_drive_0029_sync 0000000201
+2011_09_26 2011_09_26_drive_0029_sync 0000000202
+2011_09_26 2011_09_26_drive_0029_sync 0000000203
+2011_09_26 2011_09_26_drive_0029_sync 0000000204
+2011_09_26 2011_09_26_drive_0029_sync 0000000205
+2011_09_26 2011_09_26_drive_0029_sync 0000000206
+2011_09_26 2011_09_26_drive_0029_sync 0000000207
+2011_09_26 2011_09_26_drive_0029_sync 0000000209
+2011_09_26 2011_09_26_drive_0029_sync 0000000212
+2011_09_26 2011_09_26_drive_0029_sync 0000000213
+2011_09_26 2011_09_26_drive_0029_sync 0000000214
+2011_09_26 2011_09_26_drive_0029_sync 0000000215
+2011_09_26 2011_09_26_drive_0029_sync 0000000216
+2011_09_26 2011_09_26_drive_0029_sync 0000000217
+2011_09_26 2011_09_26_drive_0029_sync 0000000218
+2011_09_26 2011_09_26_drive_0029_sync 0000000219
+2011_09_26 2011_09_26_drive_0029_sync 0000000220
+2011_09_26 2011_09_26_drive_0029_sync 0000000221
+2011_09_26 2011_09_26_drive_0029_sync 0000000222
+2011_09_26 2011_09_26_drive_0029_sync 0000000223
+2011_09_26 2011_09_26_drive_0029_sync 0000000224
+2011_09_26 2011_09_26_drive_0029_sync 0000000225
+2011_09_26 2011_09_26_drive_0029_sync 0000000226
+2011_09_26 2011_09_26_drive_0029_sync 0000000227
+2011_09_26 2011_09_26_drive_0029_sync 0000000228
+2011_09_26 2011_09_26_drive_0029_sync 0000000229
+2011_09_26 2011_09_26_drive_0029_sync 0000000230
+2011_09_26 2011_09_26_drive_0029_sync 0000000231
+2011_09_26 2011_09_26_drive_0029_sync 0000000232
+2011_09_26 2011_09_26_drive_0029_sync 0000000233
+2011_09_26 2011_09_26_drive_0029_sync 0000000234
+2011_09_26 2011_09_26_drive_0029_sync 0000000235
+2011_09_26 2011_09_26_drive_0029_sync 0000000236
+2011_09_26 2011_09_26_drive_0029_sync 0000000237
+2011_09_26 2011_09_26_drive_0029_sync 0000000238
+2011_09_26 2011_09_26_drive_0029_sync 0000000239
+2011_09_26 2011_09_26_drive_0029_sync 0000000240
+2011_09_26 2011_09_26_drive_0029_sync 0000000241
+2011_09_26 2011_09_26_drive_0029_sync 0000000242
+2011_09_26 2011_09_26_drive_0029_sync 0000000243
+2011_09_26 2011_09_26_drive_0029_sync 0000000244
+2011_09_26 2011_09_26_drive_0029_sync 0000000245
+2011_09_26 2011_09_26_drive_0029_sync 0000000246
+2011_09_26 2011_09_26_drive_0029_sync 0000000247
+2011_09_26 2011_09_26_drive_0029_sync 0000000248
+2011_09_26 2011_09_26_drive_0029_sync 0000000249
+2011_09_26 2011_09_26_drive_0029_sync 0000000250
+2011_09_26 2011_09_26_drive_0029_sync 0000000251
+2011_09_26 2011_09_26_drive_0029_sync 0000000252
+2011_09_26 2011_09_26_drive_0029_sync 0000000253
+2011_09_26 2011_09_26_drive_0029_sync 0000000254
+2011_09_26 2011_09_26_drive_0029_sync 0000000255
+2011_09_26 2011_09_26_drive_0029_sync 0000000256
+2011_09_26 2011_09_26_drive_0029_sync 0000000257
+2011_09_26 2011_09_26_drive_0029_sync 0000000258
+2011_09_26 2011_09_26_drive_0029_sync 0000000259
+2011_09_26 2011_09_26_drive_0029_sync 0000000260
+2011_09_26 2011_09_26_drive_0029_sync 0000000261
+2011_09_26 2011_09_26_drive_0029_sync 0000000262
+2011_09_26 2011_09_26_drive_0029_sync 0000000263
+2011_09_26 2011_09_26_drive_0029_sync 0000000264
+2011_09_26 2011_09_26_drive_0029_sync 0000000265
+2011_09_26 2011_09_26_drive_0029_sync 0000000266
+2011_09_26 2011_09_26_drive_0029_sync 0000000267
+2011_09_26 2011_09_26_drive_0029_sync 0000000268
+2011_09_26 2011_09_26_drive_0029_sync 0000000269
+2011_09_26 2011_09_26_drive_0029_sync 0000000270
+2011_09_26 2011_09_26_drive_0029_sync 0000000271
+2011_09_26 2011_09_26_drive_0029_sync 0000000272
+2011_09_26 2011_09_26_drive_0029_sync 0000000273
+2011_09_26 2011_09_26_drive_0029_sync 0000000274
+2011_09_26 2011_09_26_drive_0029_sync 0000000275
+2011_09_26 2011_09_26_drive_0029_sync 0000000276
+2011_09_26 2011_09_26_drive_0036_sync 0000000751
+2011_09_26 2011_09_26_drive_0036_sync 0000000752
+2011_09_26 2011_09_26_drive_0036_sync 0000000753
+2011_09_26 2011_09_26_drive_0036_sync 0000000754
+2011_09_26 2011_09_26_drive_0036_sync 0000000757
+2011_09_26 2011_09_26_drive_0036_sync 0000000758
+2011_09_26 2011_09_26_drive_0036_sync 0000000759
+2011_09_26 2011_09_26_drive_0036_sync 0000000760
+2011_09_26 2011_09_26_drive_0036_sync 0000000761
+2011_09_26 2011_09_26_drive_0036_sync 0000000762
+2011_09_26 2011_09_26_drive_0036_sync 0000000763
+2011_09_26 2011_09_26_drive_0036_sync 0000000764
+2011_09_26 2011_09_26_drive_0036_sync 0000000765
+2011_09_26 2011_09_26_drive_0036_sync 0000000766
+2011_09_26 2011_09_26_drive_0036_sync 0000000767
+2011_09_26 2011_09_26_drive_0036_sync 0000000768
+2011_09_26 2011_09_26_drive_0036_sync 0000000769
+2011_09_26 2011_09_26_drive_0036_sync 0000000770
+2011_09_26 2011_09_26_drive_0036_sync 0000000771
+2011_09_26 2011_09_26_drive_0036_sync 0000000772
+2011_09_26 2011_09_26_drive_0036_sync 0000000773
+2011_09_26 2011_09_26_drive_0036_sync 0000000774
+2011_09_26 2011_09_26_drive_0036_sync 0000000775
+2011_09_26 2011_09_26_drive_0036_sync 0000000776
+2011_09_26 2011_09_26_drive_0036_sync 0000000777
+2011_09_26 2011_09_26_drive_0036_sync 0000000778
+2011_09_26 2011_09_26_drive_0036_sync 0000000779
+2011_09_26 2011_09_26_drive_0036_sync 0000000780
+2011_09_26 2011_09_26_drive_0036_sync 0000000781
+2011_09_26 2011_09_26_drive_0036_sync 0000000782
+2011_09_26 2011_09_26_drive_0036_sync 0000000783
+2011_09_26 2011_09_26_drive_0036_sync 0000000784
+2011_09_26 2011_09_26_drive_0036_sync 0000000785
+2011_09_26 2011_09_26_drive_0036_sync 0000000786
+2011_09_26 2011_09_26_drive_0036_sync 0000000787
+2011_09_26 2011_09_26_drive_0036_sync 0000000788
+2011_09_26 2011_09_26_drive_0036_sync 0000000789
+2011_09_26 2011_09_26_drive_0036_sync 0000000790
+2011_09_26 2011_09_26_drive_0036_sync 0000000791
+2011_09_26 2011_09_26_drive_0036_sync 0000000792
+2011_09_26 2011_09_26_drive_0036_sync 0000000793
+2011_09_26 2011_09_26_drive_0036_sync 0000000794
+2011_09_26 2011_09_26_drive_0036_sync 0000000795
+2011_09_26 2011_09_26_drive_0036_sync 0000000796
+2011_09_26 2011_09_26_drive_0036_sync 0000000797
+2011_09_26 2011_09_26_drive_0036_sync 0000000798
+2011_09_26 2011_09_26_drive_0036_sync 0000000799
+2011_09_26 2011_09_26_drive_0036_sync 0000000800
+2011_09_26 2011_09_26_drive_0036_sync 0000000801
+2011_09_26 2011_09_26_drive_0051_sync 0000000191
+2011_09_26 2011_09_26_drive_0051_sync 0000000192
+2011_09_26 2011_09_26_drive_0051_sync 0000000193
+2011_09_26 2011_09_26_drive_0051_sync 0000000194
+2011_09_26 2011_09_26_drive_0051_sync 0000000195
+2011_09_26 2011_09_26_drive_0051_sync 0000000196
+2011_09_26 2011_09_26_drive_0051_sync 0000000197
+2011_09_26 2011_09_26_drive_0051_sync 0000000198
+2011_09_26 2011_09_26_drive_0051_sync 0000000199
+2011_09_26 2011_09_26_drive_0051_sync 0000000200
+2011_09_26 2011_09_26_drive_0051_sync 0000000201
+2011_09_26 2011_09_26_drive_0051_sync 0000000202
+2011_09_26 2011_09_26_drive_0051_sync 0000000203
+2011_09_26 2011_09_26_drive_0051_sync 0000000204
+2011_09_26 2011_09_26_drive_0051_sync 0000000205
+2011_09_26 2011_09_26_drive_0051_sync 0000000206
+2011_09_26 2011_09_26_drive_0051_sync 0000000207
+2011_09_26 2011_09_26_drive_0051_sync 0000000208
+2011_09_26 2011_09_26_drive_0051_sync 0000000209
+2011_09_26 2011_09_26_drive_0051_sync 0000000210
+2011_09_26 2011_09_26_drive_0051_sync 0000000211
+2011_09_26 2011_09_26_drive_0051_sync 0000000212
+2011_09_26 2011_09_26_drive_0051_sync 0000000213
+2011_09_26 2011_09_26_drive_0051_sync 0000000214
+2011_09_26 2011_09_26_drive_0051_sync 0000000215
+2011_09_26 2011_09_26_drive_0051_sync 0000000216
+2011_09_26 2011_09_26_drive_0051_sync 0000000217
+2011_09_26 2011_09_26_drive_0051_sync 0000000218
+2011_09_26 2011_09_26_drive_0051_sync 0000000219
+2011_09_26 2011_09_26_drive_0051_sync 0000000220
+2011_09_26 2011_09_26_drive_0051_sync 0000000221
+2011_09_26 2011_09_26_drive_0051_sync 0000000222
+2011_09_26 2011_09_26_drive_0051_sync 0000000223
+2011_09_26 2011_09_26_drive_0051_sync 0000000224
+2011_09_26 2011_09_26_drive_0051_sync 0000000225
+2011_09_26 2011_09_26_drive_0051_sync 0000000226
+2011_09_26 2011_09_26_drive_0051_sync 0000000227
+2011_09_26 2011_09_26_drive_0051_sync 0000000233
+2011_09_26 2011_09_26_drive_0051_sync 0000000234
+2011_09_26 2011_09_26_drive_0051_sync 0000000235
+2011_09_26 2011_09_26_drive_0051_sync 0000000236
+2011_09_26 2011_09_26_drive_0051_sync 0000000237
+2011_09_26 2011_09_26_drive_0051_sync 0000000238
+2011_09_26 2011_09_26_drive_0051_sync 0000000239
+2011_09_26 2011_09_26_drive_0051_sync 0000000240
+2011_09_26 2011_09_26_drive_0051_sync 0000000241
+2011_09_26 2011_09_26_drive_0051_sync 0000000242
+2011_09_26 2011_09_26_drive_0051_sync 0000000243
+2011_09_26 2011_09_26_drive_0051_sync 0000000244
+2011_09_26 2011_09_26_drive_0051_sync 0000000245
+2011_09_26 2011_09_26_drive_0051_sync 0000000246
+2011_09_26 2011_09_26_drive_0051_sync 0000000256
+2011_09_26 2011_09_26_drive_0051_sync 0000000257
+2011_09_26 2011_09_26_drive_0051_sync 0000000258
+2011_09_26 2011_09_26_drive_0051_sync 0000000259
+2011_09_26 2011_09_26_drive_0051_sync 0000000260
+2011_09_26 2011_09_26_drive_0051_sync 0000000261
+2011_09_26 2011_09_26_drive_0051_sync 0000000262
+2011_09_26 2011_09_26_drive_0051_sync 0000000263
+2011_09_26 2011_09_26_drive_0051_sync 0000000264
+2011_09_26 2011_09_26_drive_0051_sync 0000000265
+2011_09_26 2011_09_26_drive_0051_sync 0000000266
+2011_09_26 2011_09_26_drive_0051_sync 0000000267
+2011_09_26 2011_09_26_drive_0051_sync 0000000268
+2011_09_26 2011_09_26_drive_0051_sync 0000000269
+2011_09_26 2011_09_26_drive_0051_sync 0000000270
+2011_09_26 2011_09_26_drive_0051_sync 0000000271
+2011_09_26 2011_09_26_drive_0051_sync 0000000272
+2011_09_26 2011_09_26_drive_0051_sync 0000000273
+2011_09_26 2011_09_26_drive_0051_sync 0000000274
+2011_09_26 2011_09_26_drive_0051_sync 0000000275
+2011_09_26 2011_09_26_drive_0051_sync 0000000276
+2011_09_26 2011_09_26_drive_0051_sync 0000000277
+2011_09_26 2011_09_26_drive_0051_sync 0000000278
+2011_09_26 2011_09_26_drive_0051_sync 0000000279
+2011_09_26 2011_09_26_drive_0051_sync 0000000280
+2011_09_26 2011_09_26_drive_0051_sync 0000000287
+2011_09_26 2011_09_26_drive_0051_sync 0000000288
+2011_09_26 2011_09_26_drive_0051_sync 0000000289
+2011_09_26 2011_09_26_drive_0051_sync 0000000290
+2011_09_26 2011_09_26_drive_0051_sync 0000000291
+2011_09_26 2011_09_26_drive_0051_sync 0000000292
+2011_09_26 2011_09_26_drive_0051_sync 0000000293
+2011_09_26 2011_09_26_drive_0051_sync 0000000294
+2011_09_26 2011_09_26_drive_0051_sync 0000000295
+2011_09_26 2011_09_26_drive_0051_sync 0000000296
+2011_09_26 2011_09_26_drive_0051_sync 0000000305
+2011_09_26 2011_09_26_drive_0051_sync 0000000306
+2011_09_26 2011_09_26_drive_0051_sync 0000000307
+2011_09_26 2011_09_26_drive_0051_sync 0000000308
+2011_09_26 2011_09_26_drive_0051_sync 0000000309
+2011_09_26 2011_09_26_drive_0051_sync 0000000317
+2011_09_26 2011_09_26_drive_0051_sync 0000000318
+2011_09_26 2011_09_26_drive_0051_sync 0000000319
+2011_09_26 2011_09_26_drive_0051_sync 0000000325
+2011_09_26 2011_09_26_drive_0051_sync 0000000326
+2011_09_26 2011_09_26_drive_0051_sync 0000000327
+2011_09_26 2011_09_26_drive_0051_sync 0000000328
+2011_09_26 2011_09_26_drive_0051_sync 0000000329
+2011_09_26 2011_09_26_drive_0051_sync 0000000330
+2011_09_26 2011_09_26_drive_0051_sync 0000000331
+2011_09_26 2011_09_26_drive_0051_sync 0000000332
+2011_09_26 2011_09_26_drive_0051_sync 0000000333
+2011_09_26 2011_09_26_drive_0051_sync 0000000334
+2011_09_26 2011_09_26_drive_0051_sync 0000000335
+2011_09_26 2011_09_26_drive_0051_sync 0000000336
+2011_09_26 2011_09_26_drive_0051_sync 0000000337
+2011_09_26 2011_09_26_drive_0051_sync 0000000338
+2011_09_26 2011_09_26_drive_0051_sync 0000000339
+2011_09_26 2011_09_26_drive_0051_sync 0000000340
+2011_09_26 2011_09_26_drive_0051_sync 0000000341
+2011_09_26 2011_09_26_drive_0051_sync 0000000342
+2011_09_26 2011_09_26_drive_0051_sync 0000000343
+2011_09_26 2011_09_26_drive_0051_sync 0000000344
+2011_09_26 2011_09_26_drive_0051_sync 0000000345
+2011_09_26 2011_09_26_drive_0051_sync 0000000346
+2011_09_26 2011_09_26_drive_0051_sync 0000000347
+2011_09_26 2011_09_26_drive_0051_sync 0000000348
+2011_09_26 2011_09_26_drive_0051_sync 0000000349
+2011_09_26 2011_09_26_drive_0051_sync 0000000350
+2011_09_26 2011_09_26_drive_0051_sync 0000000351
+2011_09_26 2011_09_26_drive_0051_sync 0000000352
+2011_09_26 2011_09_26_drive_0051_sync 0000000353
+2011_09_26 2011_09_26_drive_0051_sync 0000000354
+2011_09_26 2011_09_26_drive_0051_sync 0000000355
+2011_09_26 2011_09_26_drive_0051_sync 0000000356
+2011_09_26 2011_09_26_drive_0051_sync 0000000357
+2011_09_26 2011_09_26_drive_0051_sync 0000000358
+2011_09_26 2011_09_26_drive_0051_sync 0000000359
+2011_09_26 2011_09_26_drive_0051_sync 0000000360
+2011_09_26 2011_09_26_drive_0051_sync 0000000361
+2011_09_26 2011_09_26_drive_0051_sync 0000000371
+2011_09_26 2011_09_26_drive_0051_sync 0000000372
+2011_09_26 2011_09_26_drive_0051_sync 0000000373
+2011_09_26 2011_09_26_drive_0052_sync 0000000025
+2011_09_26 2011_09_26_drive_0052_sync 0000000026
+2011_09_26 2011_09_26_drive_0052_sync 0000000030
+2011_09_26 2011_09_26_drive_0052_sync 0000000031
+2011_09_26 2011_09_26_drive_0052_sync 0000000032
+2011_09_26 2011_09_26_drive_0052_sync 0000000033
+2011_09_26 2011_09_26_drive_0052_sync 0000000034
+2011_09_26 2011_09_26_drive_0052_sync 0000000035
+2011_09_26 2011_09_26_drive_0052_sync 0000000036
+2011_09_26 2011_09_26_drive_0052_sync 0000000037
+2011_09_26 2011_09_26_drive_0052_sync 0000000038
+2011_09_26 2011_09_26_drive_0052_sync 0000000039
+2011_09_26 2011_09_26_drive_0052_sync 0000000040
+2011_09_26 2011_09_26_drive_0052_sync 0000000041
+2011_09_26 2011_09_26_drive_0052_sync 0000000042
+2011_09_26 2011_09_26_drive_0052_sync 0000000043
+2011_09_26 2011_09_26_drive_0052_sync 0000000044
+2011_09_26 2011_09_26_drive_0052_sync 0000000045
+2011_09_26 2011_09_26_drive_0052_sync 0000000046
+2011_09_26 2011_09_26_drive_0052_sync 0000000047
+2011_09_26 2011_09_26_drive_0052_sync 0000000048
+2011_09_26 2011_09_26_drive_0052_sync 0000000049
+2011_09_26 2011_09_26_drive_0052_sync 0000000050
+2011_09_26 2011_09_26_drive_0052_sync 0000000051
+2011_09_26 2011_09_26_drive_0052_sync 0000000052
+2011_09_26 2011_09_26_drive_0052_sync 0000000053
+2011_09_26 2011_09_26_drive_0052_sync 0000000054
+2011_09_26 2011_09_26_drive_0052_sync 0000000055
+2011_09_26 2011_09_26_drive_0052_sync 0000000056
+2011_09_26 2011_09_26_drive_0052_sync 0000000057
+2011_09_26 2011_09_26_drive_0052_sync 0000000058
+2011_09_26 2011_09_26_drive_0052_sync 0000000059
+2011_09_26 2011_09_26_drive_0052_sync 0000000060
+2011_09_26 2011_09_26_drive_0052_sync 0000000061
+2011_09_26 2011_09_26_drive_0052_sync 0000000062
+2011_09_26 2011_09_26_drive_0052_sync 0000000063
+2011_09_26 2011_09_26_drive_0052_sync 0000000064
+2011_09_26 2011_09_26_drive_0052_sync 0000000065
+2011_09_26 2011_09_26_drive_0052_sync 0000000066
+2011_09_26 2011_09_26_drive_0052_sync 0000000067
+2011_09_26 2011_09_26_drive_0052_sync 0000000068
+2011_09_26 2011_09_26_drive_0052_sync 0000000069
+2011_09_26 2011_09_26_drive_0052_sync 0000000070
+2011_09_26 2011_09_26_drive_0052_sync 0000000071
+2011_09_26 2011_09_26_drive_0052_sync 0000000072
+2011_09_26 2011_09_26_drive_0052_sync 0000000073
+2011_09_26 2011_09_26_drive_0052_sync 0000000074
+2011_09_26 2011_09_26_drive_0052_sync 0000000075
+2011_09_26 2011_09_26_drive_0052_sync 0000000076
+2011_09_26 2011_09_26_drive_0057_sync 0000000000
+2011_09_26 2011_09_26_drive_0057_sync 0000000001
+2011_09_26 2011_09_26_drive_0057_sync 0000000002
+2011_09_26 2011_09_26_drive_0057_sync 0000000003
+2011_09_26 2011_09_26_drive_0057_sync 0000000004
+2011_09_26 2011_09_26_drive_0057_sync 0000000005
+2011_09_26 2011_09_26_drive_0057_sync 0000000006
+2011_09_26 2011_09_26_drive_0057_sync 0000000007
+2011_09_26 2011_09_26_drive_0057_sync 0000000008
+2011_09_26 2011_09_26_drive_0057_sync 0000000009
+2011_09_26 2011_09_26_drive_0057_sync 0000000010
+2011_09_26 2011_09_26_drive_0057_sync 0000000011
+2011_09_26 2011_09_26_drive_0057_sync 0000000012
+2011_09_26 2011_09_26_drive_0057_sync 0000000013
+2011_09_26 2011_09_26_drive_0057_sync 0000000014
+2011_09_26 2011_09_26_drive_0057_sync 0000000015
+2011_09_26 2011_09_26_drive_0057_sync 0000000016
+2011_09_26 2011_09_26_drive_0057_sync 0000000017
+2011_09_26 2011_09_26_drive_0057_sync 0000000018
+2011_09_26 2011_09_26_drive_0057_sync 0000000019
+2011_09_26 2011_09_26_drive_0057_sync 0000000020
+2011_09_26 2011_09_26_drive_0057_sync 0000000021
+2011_09_26 2011_09_26_drive_0057_sync 0000000022
+2011_09_26 2011_09_26_drive_0057_sync 0000000023
+2011_09_26 2011_09_26_drive_0057_sync 0000000024
+2011_09_26 2011_09_26_drive_0057_sync 0000000025
+2011_09_26 2011_09_26_drive_0057_sync 0000000026
+2011_09_26 2011_09_26_drive_0057_sync 0000000027
+2011_09_26 2011_09_26_drive_0057_sync 0000000028
+2011_09_26 2011_09_26_drive_0057_sync 0000000029
+2011_09_26 2011_09_26_drive_0057_sync 0000000030
+2011_09_26 2011_09_26_drive_0057_sync 0000000031
+2011_09_26 2011_09_26_drive_0057_sync 0000000032
+2011_09_26 2011_09_26_drive_0057_sync 0000000033
+2011_09_26 2011_09_26_drive_0057_sync 0000000034
+2011_09_26 2011_09_26_drive_0057_sync 0000000035
+2011_09_26 2011_09_26_drive_0057_sync 0000000036
+2011_09_26 2011_09_26_drive_0057_sync 0000000037
+2011_09_26 2011_09_26_drive_0057_sync 0000000038
+2011_09_26 2011_09_26_drive_0057_sync 0000000039
+2011_09_26 2011_09_26_drive_0057_sync 0000000040
+2011_09_26 2011_09_26_drive_0057_sync 0000000041
+2011_09_26 2011_09_26_drive_0057_sync 0000000042
+2011_09_26 2011_09_26_drive_0057_sync 0000000043
+2011_09_26 2011_09_26_drive_0057_sync 0000000044
+2011_09_26 2011_09_26_drive_0057_sync 0000000045
+2011_09_26 2011_09_26_drive_0057_sync 0000000046
+2011_09_26 2011_09_26_drive_0057_sync 0000000047
+2011_09_26 2011_09_26_drive_0057_sync 0000000048
+2011_09_26 2011_09_26_drive_0057_sync 0000000049
+2011_09_26 2011_09_26_drive_0057_sync 0000000050
+2011_09_26 2011_09_26_drive_0057_sync 0000000051
+2011_09_26 2011_09_26_drive_0057_sync 0000000052
+2011_09_26 2011_09_26_drive_0057_sync 0000000053
+2011_09_26 2011_09_26_drive_0057_sync 0000000054
+2011_09_26 2011_09_26_drive_0057_sync 0000000055
+2011_09_26 2011_09_26_drive_0057_sync 0000000056
+2011_09_26 2011_09_26_drive_0057_sync 0000000057
+2011_09_26 2011_09_26_drive_0057_sync 0000000058
+2011_09_26 2011_09_26_drive_0057_sync 0000000059
+2011_09_26 2011_09_26_drive_0057_sync 0000000060
+2011_09_26 2011_09_26_drive_0057_sync 0000000061
+2011_09_26 2011_09_26_drive_0057_sync 0000000062
+2011_09_26 2011_09_26_drive_0057_sync 0000000063
+2011_09_26 2011_09_26_drive_0057_sync 0000000064
+2011_09_26 2011_09_26_drive_0057_sync 0000000065
+2011_09_26 2011_09_26_drive_0057_sync 0000000066
+2011_09_26 2011_09_26_drive_0057_sync 0000000067
+2011_09_26 2011_09_26_drive_0057_sync 0000000068
+2011_09_26 2011_09_26_drive_0057_sync 0000000069
+2011_09_26 2011_09_26_drive_0057_sync 0000000070
+2011_09_26 2011_09_26_drive_0057_sync 0000000071
+2011_09_26 2011_09_26_drive_0057_sync 0000000072
+2011_09_26 2011_09_26_drive_0057_sync 0000000073
+2011_09_26 2011_09_26_drive_0057_sync 0000000074
+2011_09_26 2011_09_26_drive_0057_sync 0000000075
+2011_09_26 2011_09_26_drive_0057_sync 0000000076
+2011_09_26 2011_09_26_drive_0057_sync 0000000077
+2011_09_26 2011_09_26_drive_0057_sync 0000000078
+2011_09_26 2011_09_26_drive_0057_sync 0000000079
+2011_09_26 2011_09_26_drive_0057_sync 0000000080
+2011_09_26 2011_09_26_drive_0057_sync 0000000081
+2011_09_26 2011_09_26_drive_0057_sync 0000000082
+2011_09_26 2011_09_26_drive_0057_sync 0000000083
+2011_09_26 2011_09_26_drive_0057_sync 0000000084
+2011_09_26 2011_09_26_drive_0057_sync 0000000085
+2011_09_26 2011_09_26_drive_0057_sync 0000000086
+2011_09_26 2011_09_26_drive_0057_sync 0000000087
+2011_09_26 2011_09_26_drive_0057_sync 0000000088
+2011_09_26 2011_09_26_drive_0057_sync 0000000089
+2011_09_26 2011_09_26_drive_0057_sync 0000000090
+2011_09_26 2011_09_26_drive_0057_sync 0000000091
+2011_09_26 2011_09_26_drive_0057_sync 0000000092
+2011_09_26 2011_09_26_drive_0057_sync 0000000093
+2011_09_26 2011_09_26_drive_0057_sync 0000000094
+2011_09_26 2011_09_26_drive_0057_sync 0000000095
+2011_09_26 2011_09_26_drive_0057_sync 0000000096
+2011_09_26 2011_09_26_drive_0057_sync 0000000097
+2011_09_26 2011_09_26_drive_0057_sync 0000000098
+2011_09_26 2011_09_26_drive_0057_sync 0000000099
+2011_09_26 2011_09_26_drive_0057_sync 0000000100
+2011_09_26 2011_09_26_drive_0057_sync 0000000101
+2011_09_26 2011_09_26_drive_0057_sync 0000000102
+2011_09_26 2011_09_26_drive_0057_sync 0000000103
+2011_09_26 2011_09_26_drive_0057_sync 0000000104
+2011_09_26 2011_09_26_drive_0057_sync 0000000105
+2011_09_26 2011_09_26_drive_0057_sync 0000000106
+2011_09_26 2011_09_26_drive_0057_sync 0000000107
+2011_09_26 2011_09_26_drive_0057_sync 0000000108
+2011_09_26 2011_09_26_drive_0057_sync 0000000109
+2011_09_26 2011_09_26_drive_0057_sync 0000000110
+2011_09_26 2011_09_26_drive_0057_sync 0000000111
+2011_09_26 2011_09_26_drive_0057_sync 0000000112
+2011_09_26 2011_09_26_drive_0057_sync 0000000113
+2011_09_26 2011_09_26_drive_0057_sync 0000000114
+2011_09_26 2011_09_26_drive_0057_sync 0000000115
+2011_09_26 2011_09_26_drive_0057_sync 0000000116
+2011_09_26 2011_09_26_drive_0057_sync 0000000117
+2011_09_26 2011_09_26_drive_0057_sync 0000000118
+2011_09_26 2011_09_26_drive_0057_sync 0000000119
+2011_09_26 2011_09_26_drive_0057_sync 0000000120
+2011_09_26 2011_09_26_drive_0057_sync 0000000121
+2011_09_26 2011_09_26_drive_0057_sync 0000000122
+2011_09_26 2011_09_26_drive_0057_sync 0000000123
+2011_09_26 2011_09_26_drive_0057_sync 0000000124
+2011_09_26 2011_09_26_drive_0057_sync 0000000125
+2011_09_26 2011_09_26_drive_0057_sync 0000000126
+2011_09_26 2011_09_26_drive_0057_sync 0000000127
+2011_09_26 2011_09_26_drive_0057_sync 0000000128
+2011_09_26 2011_09_26_drive_0057_sync 0000000129
+2011_09_26 2011_09_26_drive_0057_sync 0000000130
+2011_09_26 2011_09_26_drive_0057_sync 0000000131
+2011_09_26 2011_09_26_drive_0057_sync 0000000132
+2011_09_26 2011_09_26_drive_0057_sync 0000000133
+2011_09_26 2011_09_26_drive_0057_sync 0000000134
+2011_09_26 2011_09_26_drive_0057_sync 0000000135
+2011_09_26 2011_09_26_drive_0057_sync 0000000136
+2011_09_26 2011_09_26_drive_0057_sync 0000000137
+2011_09_26 2011_09_26_drive_0057_sync 0000000138
+2011_09_26 2011_09_26_drive_0057_sync 0000000139
+2011_09_26 2011_09_26_drive_0057_sync 0000000140
+2011_09_26 2011_09_26_drive_0057_sync 0000000141
+2011_09_26 2011_09_26_drive_0057_sync 0000000142
+2011_09_26 2011_09_26_drive_0057_sync 0000000143
+2011_09_26 2011_09_26_drive_0057_sync 0000000144
+2011_09_26 2011_09_26_drive_0057_sync 0000000145
+2011_09_26 2011_09_26_drive_0057_sync 0000000146
+2011_09_26 2011_09_26_drive_0057_sync 0000000147
+2011_09_26 2011_09_26_drive_0057_sync 0000000148
+2011_09_26 2011_09_26_drive_0057_sync 0000000149
+2011_09_26 2011_09_26_drive_0057_sync 0000000150
+2011_09_26 2011_09_26_drive_0057_sync 0000000151
+2011_09_26 2011_09_26_drive_0057_sync 0000000152
+2011_09_26 2011_09_26_drive_0057_sync 0000000153
+2011_09_26 2011_09_26_drive_0057_sync 0000000154
+2011_09_26 2011_09_26_drive_0057_sync 0000000155
+2011_09_26 2011_09_26_drive_0057_sync 0000000156
+2011_09_26 2011_09_26_drive_0057_sync 0000000157
+2011_09_26 2011_09_26_drive_0057_sync 0000000158
+2011_09_26 2011_09_26_drive_0057_sync 0000000159
+2011_09_26 2011_09_26_drive_0057_sync 0000000160
+2011_09_26 2011_09_26_drive_0057_sync 0000000161
+2011_09_26 2011_09_26_drive_0057_sync 0000000162
+2011_09_26 2011_09_26_drive_0057_sync 0000000163
+2011_09_26 2011_09_26_drive_0057_sync 0000000164
+2011_09_26 2011_09_26_drive_0057_sync 0000000165
+2011_09_26 2011_09_26_drive_0057_sync 0000000166
+2011_09_26 2011_09_26_drive_0057_sync 0000000167
+2011_09_26 2011_09_26_drive_0057_sync 0000000168
+2011_09_26 2011_09_26_drive_0057_sync 0000000169
+2011_09_26 2011_09_26_drive_0057_sync 0000000170
+2011_09_26 2011_09_26_drive_0057_sync 0000000171
+2011_09_26 2011_09_26_drive_0057_sync 0000000172
+2011_09_26 2011_09_26_drive_0057_sync 0000000173
+2011_09_26 2011_09_26_drive_0057_sync 0000000174
+2011_09_26 2011_09_26_drive_0057_sync 0000000175
+2011_09_26 2011_09_26_drive_0057_sync 0000000176
+2011_09_26 2011_09_26_drive_0057_sync 0000000177
+2011_09_26 2011_09_26_drive_0057_sync 0000000178
+2011_09_26 2011_09_26_drive_0057_sync 0000000179
+2011_09_26 2011_09_26_drive_0057_sync 0000000180
+2011_09_26 2011_09_26_drive_0057_sync 0000000181
+2011_09_26 2011_09_26_drive_0057_sync 0000000182
+2011_09_26 2011_09_26_drive_0057_sync 0000000183
+2011_09_26 2011_09_26_drive_0057_sync 0000000184
+2011_09_26 2011_09_26_drive_0057_sync 0000000185
+2011_09_26 2011_09_26_drive_0057_sync 0000000186
+2011_09_26 2011_09_26_drive_0057_sync 0000000187
+2011_09_26 2011_09_26_drive_0057_sync 0000000188
+2011_09_26 2011_09_26_drive_0057_sync 0000000189
+2011_09_26 2011_09_26_drive_0057_sync 0000000190
+2011_09_26 2011_09_26_drive_0057_sync 0000000191
+2011_09_26 2011_09_26_drive_0057_sync 0000000192
+2011_09_26 2011_09_26_drive_0057_sync 0000000193
+2011_09_26 2011_09_26_drive_0057_sync 0000000194
+2011_09_26 2011_09_26_drive_0057_sync 0000000195
+2011_09_26 2011_09_26_drive_0057_sync 0000000196
+2011_09_26 2011_09_26_drive_0057_sync 0000000197
+2011_09_26 2011_09_26_drive_0057_sync 0000000198
+2011_09_26 2011_09_26_drive_0057_sync 0000000199
+2011_09_26 2011_09_26_drive_0057_sync 0000000200
+2011_09_26 2011_09_26_drive_0057_sync 0000000201
+2011_09_26 2011_09_26_drive_0057_sync 0000000202
+2011_09_26 2011_09_26_drive_0057_sync 0000000203
+2011_09_26 2011_09_26_drive_0057_sync 0000000204
+2011_09_26 2011_09_26_drive_0057_sync 0000000205
+2011_09_26 2011_09_26_drive_0057_sync 0000000206
+2011_09_26 2011_09_26_drive_0057_sync 0000000207
+2011_09_26 2011_09_26_drive_0057_sync 0000000208
+2011_09_26 2011_09_26_drive_0057_sync 0000000209
+2011_09_26 2011_09_26_drive_0057_sync 0000000210
+2011_09_26 2011_09_26_drive_0057_sync 0000000211
+2011_09_26 2011_09_26_drive_0057_sync 0000000212
+2011_09_26 2011_09_26_drive_0057_sync 0000000213
+2011_09_26 2011_09_26_drive_0057_sync 0000000214
+2011_09_26 2011_09_26_drive_0057_sync 0000000215
+2011_09_26 2011_09_26_drive_0057_sync 0000000216
+2011_09_26 2011_09_26_drive_0057_sync 0000000217
+2011_09_26 2011_09_26_drive_0057_sync 0000000218
+2011_09_26 2011_09_26_drive_0057_sync 0000000219
+2011_09_26 2011_09_26_drive_0057_sync 0000000220
+2011_09_26 2011_09_26_drive_0057_sync 0000000221
+2011_09_26 2011_09_26_drive_0057_sync 0000000222
+2011_09_26 2011_09_26_drive_0057_sync 0000000223
+2011_09_26 2011_09_26_drive_0057_sync 0000000224
+2011_09_26 2011_09_26_drive_0057_sync 0000000225
+2011_09_26 2011_09_26_drive_0057_sync 0000000226
+2011_09_26 2011_09_26_drive_0057_sync 0000000227
+2011_09_26 2011_09_26_drive_0057_sync 0000000228
+2011_09_26 2011_09_26_drive_0057_sync 0000000229
+2011_09_26 2011_09_26_drive_0057_sync 0000000230
+2011_09_26 2011_09_26_drive_0057_sync 0000000231
+2011_09_26 2011_09_26_drive_0057_sync 0000000232
+2011_09_26 2011_09_26_drive_0057_sync 0000000233
+2011_09_26 2011_09_26_drive_0057_sync 0000000234
+2011_09_26 2011_09_26_drive_0057_sync 0000000235
+2011_09_26 2011_09_26_drive_0057_sync 0000000236
+2011_09_26 2011_09_26_drive_0057_sync 0000000237
+2011_09_26 2011_09_26_drive_0057_sync 0000000238
+2011_09_26 2011_09_26_drive_0057_sync 0000000239
+2011_09_26 2011_09_26_drive_0057_sync 0000000240
+2011_09_26 2011_09_26_drive_0057_sync 0000000241
+2011_09_26 2011_09_26_drive_0057_sync 0000000242
+2011_09_26 2011_09_26_drive_0057_sync 0000000243
+2011_09_26 2011_09_26_drive_0057_sync 0000000244
+2011_09_26 2011_09_26_drive_0057_sync 0000000245
+2011_09_26 2011_09_26_drive_0057_sync 0000000246
+2011_09_26 2011_09_26_drive_0057_sync 0000000247
+2011_09_26 2011_09_26_drive_0057_sync 0000000248
+2011_09_26 2011_09_26_drive_0057_sync 0000000249
+2011_09_26 2011_09_26_drive_0057_sync 0000000250
+2011_09_26 2011_09_26_drive_0057_sync 0000000251
+2011_09_26 2011_09_26_drive_0057_sync 0000000252
+2011_09_26 2011_09_26_drive_0057_sync 0000000253
+2011_09_26 2011_09_26_drive_0057_sync 0000000254
+2011_09_26 2011_09_26_drive_0057_sync 0000000255
+2011_09_26 2011_09_26_drive_0057_sync 0000000256
+2011_09_26 2011_09_26_drive_0057_sync 0000000257
+2011_09_26 2011_09_26_drive_0057_sync 0000000258
+2011_09_26 2011_09_26_drive_0057_sync 0000000259
+2011_09_26 2011_09_26_drive_0057_sync 0000000260
+2011_09_26 2011_09_26_drive_0057_sync 0000000261
+2011_09_26 2011_09_26_drive_0057_sync 0000000262
+2011_09_26 2011_09_26_drive_0057_sync 0000000263
+2011_09_26 2011_09_26_drive_0057_sync 0000000264
+2011_09_26 2011_09_26_drive_0057_sync 0000000265
+2011_09_26 2011_09_26_drive_0057_sync 0000000266
+2011_09_26 2011_09_26_drive_0057_sync 0000000267
+2011_09_26 2011_09_26_drive_0057_sync 0000000268
+2011_09_26 2011_09_26_drive_0057_sync 0000000269
+2011_09_26 2011_09_26_drive_0057_sync 0000000270
+2011_09_26 2011_09_26_drive_0057_sync 0000000271
+2011_09_26 2011_09_26_drive_0057_sync 0000000272
+2011_09_26 2011_09_26_drive_0057_sync 0000000273
+2011_09_26 2011_09_26_drive_0057_sync 0000000274
+2011_09_26 2011_09_26_drive_0057_sync 0000000275
+2011_09_26 2011_09_26_drive_0057_sync 0000000276
+2011_09_26 2011_09_26_drive_0057_sync 0000000277
+2011_09_26 2011_09_26_drive_0057_sync 0000000278
+2011_09_26 2011_09_26_drive_0057_sync 0000000279
+2011_09_26 2011_09_26_drive_0057_sync 0000000280
+2011_09_26 2011_09_26_drive_0057_sync 0000000281
+2011_09_26 2011_09_26_drive_0057_sync 0000000282
+2011_09_26 2011_09_26_drive_0057_sync 0000000283
+2011_09_26 2011_09_26_drive_0057_sync 0000000284
+2011_09_26 2011_09_26_drive_0057_sync 0000000285
+2011_09_26 2011_09_26_drive_0057_sync 0000000286
+2011_09_26 2011_09_26_drive_0057_sync 0000000287
+2011_09_26 2011_09_26_drive_0057_sync 0000000288
+2011_09_26 2011_09_26_drive_0057_sync 0000000289
+2011_09_26 2011_09_26_drive_0057_sync 0000000292
+2011_09_26 2011_09_26_drive_0057_sync 0000000293
+2011_09_26 2011_09_26_drive_0057_sync 0000000294
+2011_09_26 2011_09_26_drive_0057_sync 0000000295
+2011_09_26 2011_09_26_drive_0057_sync 0000000296
+2011_09_26 2011_09_26_drive_0057_sync 0000000297
+2011_09_26 2011_09_26_drive_0057_sync 0000000298
+2011_09_26 2011_09_26_drive_0059_sync 0000000216
+2011_09_26 2011_09_26_drive_0059_sync 0000000217
+2011_09_26 2011_09_26_drive_0059_sync 0000000218
+2011_09_26 2011_09_26_drive_0059_sync 0000000219
+2011_09_26 2011_09_26_drive_0059_sync 0000000220
+2011_09_26 2011_09_26_drive_0059_sync 0000000221
+2011_09_26 2011_09_26_drive_0059_sync 0000000222
+2011_09_26 2011_09_26_drive_0059_sync 0000000223
+2011_09_26 2011_09_26_drive_0059_sync 0000000224
+2011_09_26 2011_09_26_drive_0059_sync 0000000225
+2011_09_26 2011_09_26_drive_0059_sync 0000000226
+2011_09_26 2011_09_26_drive_0059_sync 0000000227
+2011_09_26 2011_09_26_drive_0059_sync 0000000228
+2011_09_26 2011_09_26_drive_0059_sync 0000000229
+2011_09_26 2011_09_26_drive_0059_sync 0000000230
+2011_09_26 2011_09_26_drive_0059_sync 0000000231
+2011_09_26 2011_09_26_drive_0059_sync 0000000232
+2011_09_26 2011_09_26_drive_0059_sync 0000000233
+2011_09_26 2011_09_26_drive_0059_sync 0000000234
+2011_09_26 2011_09_26_drive_0059_sync 0000000235
+2011_09_26 2011_09_26_drive_0059_sync 0000000236
+2011_09_26 2011_09_26_drive_0059_sync 0000000237
+2011_09_26 2011_09_26_drive_0059_sync 0000000238
+2011_09_26 2011_09_26_drive_0059_sync 0000000239
+2011_09_26 2011_09_26_drive_0059_sync 0000000240
+2011_09_26 2011_09_26_drive_0059_sync 0000000241
+2011_09_26 2011_09_26_drive_0059_sync 0000000242
+2011_09_26 2011_09_26_drive_0059_sync 0000000243
+2011_09_26 2011_09_26_drive_0059_sync 0000000244
+2011_09_26 2011_09_26_drive_0059_sync 0000000245
+2011_09_26 2011_09_26_drive_0059_sync 0000000246
+2011_09_26 2011_09_26_drive_0059_sync 0000000247
+2011_09_26 2011_09_26_drive_0059_sync 0000000248
+2011_09_26 2011_09_26_drive_0059_sync 0000000249
+2011_09_26 2011_09_26_drive_0059_sync 0000000250
+2011_09_26 2011_09_26_drive_0059_sync 0000000251
+2011_09_26 2011_09_26_drive_0059_sync 0000000252
+2011_09_26 2011_09_26_drive_0059_sync 0000000253
+2011_09_26 2011_09_26_drive_0059_sync 0000000254
+2011_09_26 2011_09_26_drive_0059_sync 0000000255
+2011_09_26 2011_09_26_drive_0059_sync 0000000256
+2011_09_26 2011_09_26_drive_0059_sync 0000000257
+2011_09_26 2011_09_26_drive_0059_sync 0000000258
+2011_09_26 2011_09_26_drive_0059_sync 0000000259
+2011_09_26 2011_09_26_drive_0059_sync 0000000260
+2011_09_26 2011_09_26_drive_0059_sync 0000000261
+2011_09_26 2011_09_26_drive_0060_sync 0000000000
+2011_09_26 2011_09_26_drive_0060_sync 0000000001
+2011_09_26 2011_09_26_drive_0060_sync 0000000002
+2011_09_26 2011_09_26_drive_0060_sync 0000000003
+2011_09_26 2011_09_26_drive_0060_sync 0000000004
+2011_09_26 2011_09_26_drive_0060_sync 0000000005
+2011_09_26 2011_09_26_drive_0060_sync 0000000006
+2011_09_26 2011_09_26_drive_0060_sync 0000000007
+2011_09_26 2011_09_26_drive_0060_sync 0000000008
+2011_09_26 2011_09_26_drive_0060_sync 0000000009
+2011_09_26 2011_09_26_drive_0060_sync 0000000010
+2011_09_26 2011_09_26_drive_0060_sync 0000000011
+2011_09_26 2011_09_26_drive_0060_sync 0000000012
+2011_09_26 2011_09_26_drive_0060_sync 0000000013
+2011_09_26 2011_09_26_drive_0060_sync 0000000014
+2011_09_26 2011_09_26_drive_0060_sync 0000000015
+2011_09_26 2011_09_26_drive_0060_sync 0000000016
+2011_09_26 2011_09_26_drive_0060_sync 0000000017
+2011_09_26 2011_09_26_drive_0060_sync 0000000018
+2011_09_26 2011_09_26_drive_0060_sync 0000000019
+2011_09_26 2011_09_26_drive_0060_sync 0000000020
+2011_09_26 2011_09_26_drive_0060_sync 0000000021
+2011_09_26 2011_09_26_drive_0060_sync 0000000022
+2011_09_26 2011_09_26_drive_0060_sync 0000000023
+2011_09_26 2011_09_26_drive_0060_sync 0000000024
+2011_09_26 2011_09_26_drive_0060_sync 0000000025
+2011_09_26 2011_09_26_drive_0060_sync 0000000026
+2011_09_26 2011_09_26_drive_0060_sync 0000000027
+2011_09_26 2011_09_26_drive_0060_sync 0000000028
+2011_09_26 2011_09_26_drive_0060_sync 0000000029
+2011_09_26 2011_09_26_drive_0060_sync 0000000030
+2011_09_26 2011_09_26_drive_0060_sync 0000000031
+2011_09_26 2011_09_26_drive_0060_sync 0000000032
+2011_09_26 2011_09_26_drive_0060_sync 0000000033
+2011_09_26 2011_09_26_drive_0060_sync 0000000034
+2011_09_26 2011_09_26_drive_0060_sync 0000000035
+2011_09_26 2011_09_26_drive_0060_sync 0000000036
+2011_09_26 2011_09_26_drive_0060_sync 0000000037
+2011_09_26 2011_09_26_drive_0060_sync 0000000038
+2011_09_26 2011_09_26_drive_0060_sync 0000000039
+2011_09_26 2011_09_26_drive_0060_sync 0000000040
+2011_09_26 2011_09_26_drive_0060_sync 0000000041
+2011_09_26 2011_09_26_drive_0060_sync 0000000042
+2011_09_26 2011_09_26_drive_0060_sync 0000000043
+2011_09_26 2011_09_26_drive_0060_sync 0000000044
+2011_09_26 2011_09_26_drive_0060_sync 0000000045
+2011_09_26 2011_09_26_drive_0060_sync 0000000046
+2011_09_26 2011_09_26_drive_0060_sync 0000000047
+2011_09_26 2011_09_26_drive_0060_sync 0000000048
+2011_09_26 2011_09_26_drive_0060_sync 0000000049
+2011_09_26 2011_09_26_drive_0060_sync 0000000050
+2011_09_26 2011_09_26_drive_0060_sync 0000000051
+2011_09_26 2011_09_26_drive_0060_sync 0000000052
+2011_09_26 2011_09_26_drive_0060_sync 0000000053
+2011_09_26 2011_09_26_drive_0060_sync 0000000054
+2011_09_26 2011_09_26_drive_0060_sync 0000000055
+2011_09_26 2011_09_26_drive_0060_sync 0000000056
+2011_09_26 2011_09_26_drive_0060_sync 0000000057
+2011_09_26 2011_09_26_drive_0060_sync 0000000058
+2011_09_26 2011_09_26_drive_0060_sync 0000000059
+2011_09_26 2011_09_26_drive_0060_sync 0000000060
+2011_09_26 2011_09_26_drive_0060_sync 0000000061
+2011_09_26 2011_09_26_drive_0060_sync 0000000062
+2011_09_26 2011_09_26_drive_0060_sync 0000000063
+2011_09_26 2011_09_26_drive_0060_sync 0000000064
+2011_09_26 2011_09_26_drive_0060_sync 0000000065
+2011_09_26 2011_09_26_drive_0060_sync 0000000066
+2011_09_26 2011_09_26_drive_0060_sync 0000000067
+2011_09_26 2011_09_26_drive_0060_sync 0000000068
+2011_09_26 2011_09_26_drive_0060_sync 0000000069
+2011_09_26 2011_09_26_drive_0060_sync 0000000070
+2011_09_26 2011_09_26_drive_0060_sync 0000000071
+2011_09_26 2011_09_26_drive_0060_sync 0000000072
+2011_09_26 2011_09_26_drive_0060_sync 0000000073
+2011_09_26 2011_09_26_drive_0060_sync 0000000074
+2011_09_26 2011_09_26_drive_0060_sync 0000000075
+2011_09_26 2011_09_26_drive_0060_sync 0000000076
+2011_09_26 2011_09_26_drive_0079_sync 0000000075
+2011_09_26 2011_09_26_drive_0079_sync 0000000076
+2011_09_26 2011_09_26_drive_0079_sync 0000000077
+2011_09_26 2011_09_26_drive_0079_sync 0000000078
+2011_09_26 2011_09_26_drive_0079_sync 0000000079
+2011_09_26 2011_09_26_drive_0079_sync 0000000080
+2011_09_26 2011_09_26_drive_0079_sync 0000000081
+2011_09_26 2011_09_26_drive_0079_sync 0000000082
+2011_09_26 2011_09_26_drive_0079_sync 0000000084
+2011_09_26 2011_09_26_drive_0079_sync 0000000085
+2011_09_26 2011_09_26_drive_0079_sync 0000000086
+2011_09_26 2011_09_26_drive_0079_sync 0000000087
+2011_09_26 2011_09_26_drive_0079_sync 0000000088
+2011_09_26 2011_09_26_drive_0079_sync 0000000089
+2011_09_26 2011_09_26_drive_0079_sync 0000000090
+2011_09_26 2011_09_26_drive_0079_sync 0000000091
+2011_09_26 2011_09_26_drive_0079_sync 0000000092
+2011_09_26 2011_09_26_drive_0079_sync 0000000093
+2011_09_26 2011_09_26_drive_0079_sync 0000000094
+2011_09_26 2011_09_26_drive_0079_sync 0000000095
+2011_09_26 2011_09_26_drive_0079_sync 0000000096
+2011_09_26 2011_09_26_drive_0079_sync 0000000097
+2011_09_26 2011_09_26_drive_0079_sync 0000000098
+2011_09_26 2011_09_26_drive_0084_sync 0000000000
+2011_09_26 2011_09_26_drive_0084_sync 0000000001
+2011_09_26 2011_09_26_drive_0084_sync 0000000002
+2011_09_26 2011_09_26_drive_0084_sync 0000000003
+2011_09_26 2011_09_26_drive_0084_sync 0000000004
+2011_09_26 2011_09_26_drive_0084_sync 0000000005
+2011_09_26 2011_09_26_drive_0084_sync 0000000006
+2011_09_26 2011_09_26_drive_0084_sync 0000000007
+2011_09_26 2011_09_26_drive_0084_sync 0000000008
+2011_09_26 2011_09_26_drive_0084_sync 0000000009
+2011_09_26 2011_09_26_drive_0084_sync 0000000010
+2011_09_26 2011_09_26_drive_0084_sync 0000000011
+2011_09_26 2011_09_26_drive_0084_sync 0000000012
+2011_09_26 2011_09_26_drive_0084_sync 0000000013
+2011_09_26 2011_09_26_drive_0084_sync 0000000014
+2011_09_26 2011_09_26_drive_0084_sync 0000000015
+2011_09_26 2011_09_26_drive_0084_sync 0000000016
+2011_09_26 2011_09_26_drive_0084_sync 0000000017
+2011_09_26 2011_09_26_drive_0084_sync 0000000018
+2011_09_26 2011_09_26_drive_0084_sync 0000000019
+2011_09_26 2011_09_26_drive_0084_sync 0000000020
+2011_09_26 2011_09_26_drive_0084_sync 0000000021
+2011_09_26 2011_09_26_drive_0084_sync 0000000022
+2011_09_26 2011_09_26_drive_0084_sync 0000000023
+2011_09_26 2011_09_26_drive_0084_sync 0000000024
+2011_09_26 2011_09_26_drive_0084_sync 0000000025
+2011_09_26 2011_09_26_drive_0084_sync 0000000026
+2011_09_26 2011_09_26_drive_0084_sync 0000000027
+2011_09_26 2011_09_26_drive_0084_sync 0000000028
+2011_09_26 2011_09_26_drive_0084_sync 0000000029
+2011_09_26 2011_09_26_drive_0084_sync 0000000030
+2011_09_26 2011_09_26_drive_0084_sync 0000000031
+2011_09_26 2011_09_26_drive_0084_sync 0000000032
+2011_09_26 2011_09_26_drive_0084_sync 0000000033
+2011_09_26 2011_09_26_drive_0084_sync 0000000034
+2011_09_26 2011_09_26_drive_0084_sync 0000000035
+2011_09_26 2011_09_26_drive_0084_sync 0000000036
+2011_09_26 2011_09_26_drive_0084_sync 0000000037
+2011_09_26 2011_09_26_drive_0084_sync 0000000038
+2011_09_26 2011_09_26_drive_0084_sync 0000000039
+2011_09_26 2011_09_26_drive_0084_sync 0000000040
+2011_09_26 2011_09_26_drive_0084_sync 0000000041
+2011_09_26 2011_09_26_drive_0084_sync 0000000042
+2011_09_26 2011_09_26_drive_0084_sync 0000000043
+2011_09_26 2011_09_26_drive_0084_sync 0000000044
+2011_09_26 2011_09_26_drive_0084_sync 0000000045
+2011_09_26 2011_09_26_drive_0084_sync 0000000046
+2011_09_26 2011_09_26_drive_0084_sync 0000000047
+2011_09_26 2011_09_26_drive_0084_sync 0000000048
+2011_09_26 2011_09_26_drive_0084_sync 0000000049
+2011_09_26 2011_09_26_drive_0084_sync 0000000050
+2011_09_26 2011_09_26_drive_0084_sync 0000000051
+2011_09_26 2011_09_26_drive_0084_sync 0000000052
+2011_09_26 2011_09_26_drive_0084_sync 0000000053
+2011_09_26 2011_09_26_drive_0084_sync 0000000054
+2011_09_26 2011_09_26_drive_0084_sync 0000000055
+2011_09_26 2011_09_26_drive_0084_sync 0000000056
+2011_09_26 2011_09_26_drive_0084_sync 0000000057
+2011_09_26 2011_09_26_drive_0084_sync 0000000058
+2011_09_26 2011_09_26_drive_0084_sync 0000000059
+2011_09_26 2011_09_26_drive_0084_sync 0000000060
+2011_09_26 2011_09_26_drive_0084_sync 0000000061
+2011_09_26 2011_09_26_drive_0084_sync 0000000062
+2011_09_26 2011_09_26_drive_0084_sync 0000000063
+2011_09_26 2011_09_26_drive_0084_sync 0000000362
+2011_09_26 2011_09_26_drive_0084_sync 0000000363
+2011_09_26 2011_09_26_drive_0084_sync 0000000364
+2011_09_26 2011_09_26_drive_0084_sync 0000000365
+2011_09_26 2011_09_26_drive_0084_sync 0000000366
+2011_09_26 2011_09_26_drive_0084_sync 0000000367
+2011_09_26 2011_09_26_drive_0084_sync 0000000368
+2011_09_26 2011_09_26_drive_0084_sync 0000000369
+2011_09_26 2011_09_26_drive_0084_sync 0000000370
+2011_09_26 2011_09_26_drive_0084_sync 0000000371
+2011_09_26 2011_09_26_drive_0084_sync 0000000372
+2011_09_26 2011_09_26_drive_0084_sync 0000000373
+2011_09_26 2011_09_26_drive_0084_sync 0000000374
+2011_09_26 2011_09_26_drive_0084_sync 0000000375
+2011_09_26 2011_09_26_drive_0084_sync 0000000376
+2011_09_26 2011_09_26_drive_0084_sync 0000000377
+2011_09_26 2011_09_26_drive_0084_sync 0000000378
+2011_09_26 2011_09_26_drive_0084_sync 0000000379
+2011_09_26 2011_09_26_drive_0084_sync 0000000380
+2011_09_26 2011_09_26_drive_0084_sync 0000000381
+2011_09_26 2011_09_26_drive_0086_sync 0000000000
+2011_09_26 2011_09_26_drive_0086_sync 0000000001
+2011_09_26 2011_09_26_drive_0086_sync 0000000002
+2011_09_26 2011_09_26_drive_0086_sync 0000000003
+2011_09_26 2011_09_26_drive_0086_sync 0000000004
+2011_09_26 2011_09_26_drive_0086_sync 0000000005
+2011_09_26 2011_09_26_drive_0086_sync 0000000006
+2011_09_26 2011_09_26_drive_0086_sync 0000000007
+2011_09_26 2011_09_26_drive_0086_sync 0000000008
+2011_09_26 2011_09_26_drive_0086_sync 0000000009
+2011_09_26 2011_09_26_drive_0086_sync 0000000695
+2011_09_26 2011_09_26_drive_0086_sync 0000000696
+2011_09_26 2011_09_26_drive_0086_sync 0000000697
+2011_09_26 2011_09_26_drive_0086_sync 0000000698
+2011_09_26 2011_09_26_drive_0086_sync 0000000699
+2011_09_26 2011_09_26_drive_0086_sync 0000000700
+2011_09_26 2011_09_26_drive_0086_sync 0000000701
+2011_09_26 2011_09_26_drive_0086_sync 0000000702
+2011_09_26 2011_09_26_drive_0086_sync 0000000703
+2011_09_26 2011_09_26_drive_0086_sync 0000000704
+2011_09_26 2011_09_26_drive_0087_sync 0000000000
+2011_09_26 2011_09_26_drive_0087_sync 0000000001
+2011_09_26 2011_09_26_drive_0087_sync 0000000002
+2011_09_26 2011_09_26_drive_0087_sync 0000000661
+2011_09_26 2011_09_26_drive_0087_sync 0000000668
+2011_09_26 2011_09_26_drive_0087_sync 0000000669
+2011_09_26 2011_09_26_drive_0087_sync 0000000680
+2011_09_26 2011_09_26_drive_0087_sync 0000000681
+2011_09_26 2011_09_26_drive_0096_sync 0000000036
+2011_09_26 2011_09_26_drive_0096_sync 0000000037
+2011_09_26 2011_09_26_drive_0096_sync 0000000038
+2011_09_26 2011_09_26_drive_0096_sync 0000000039
+2011_09_26 2011_09_26_drive_0096_sync 0000000040
+2011_09_26 2011_09_26_drive_0096_sync 0000000041
+2011_09_26 2011_09_26_drive_0096_sync 0000000042
+2011_09_26 2011_09_26_drive_0096_sync 0000000043
+2011_09_26 2011_09_26_drive_0096_sync 0000000044
+2011_09_26 2011_09_26_drive_0096_sync 0000000045
+2011_09_26 2011_09_26_drive_0096_sync 0000000046
+2011_09_26 2011_09_26_drive_0096_sync 0000000047
+2011_09_26 2011_09_26_drive_0096_sync 0000000048
+2011_09_26 2011_09_26_drive_0096_sync 0000000049
+2011_09_26 2011_09_26_drive_0096_sync 0000000050
+2011_09_26 2011_09_26_drive_0096_sync 0000000051
+2011_09_26 2011_09_26_drive_0096_sync 0000000440
+2011_09_26 2011_09_26_drive_0096_sync 0000000442
+2011_09_26 2011_09_26_drive_0096_sync 0000000443
+2011_09_26 2011_09_26_drive_0096_sync 0000000444
+2011_09_26 2011_09_26_drive_0096_sync 0000000445
+2011_09_26 2011_09_26_drive_0096_sync 0000000446
+2011_09_26 2011_09_26_drive_0096_sync 0000000447
+2011_09_26 2011_09_26_drive_0096_sync 0000000448
+2011_09_26 2011_09_26_drive_0096_sync 0000000449
+2011_09_26 2011_09_26_drive_0096_sync 0000000450
+2011_09_26 2011_09_26_drive_0096_sync 0000000451
+2011_09_26 2011_09_26_drive_0096_sync 0000000452
+2011_09_26 2011_09_26_drive_0096_sync 0000000453
+2011_09_26 2011_09_26_drive_0096_sync 0000000454
+2011_09_26 2011_09_26_drive_0096_sync 0000000455
+2011_09_26 2011_09_26_drive_0096_sync 0000000456
+2011_09_26 2011_09_26_drive_0096_sync 0000000457
+2011_09_26 2011_09_26_drive_0096_sync 0000000458
+2011_09_26 2011_09_26_drive_0096_sync 0000000459
+2011_09_26 2011_09_26_drive_0096_sync 0000000460
+2011_09_26 2011_09_26_drive_0096_sync 0000000461
+2011_09_26 2011_09_26_drive_0096_sync 0000000462
+2011_09_26 2011_09_26_drive_0096_sync 0000000463
+2011_09_26 2011_09_26_drive_0096_sync 0000000464
+2011_09_26 2011_09_26_drive_0096_sync 0000000465
+2011_09_26 2011_09_26_drive_0096_sync 0000000466
+2011_09_26 2011_09_26_drive_0096_sync 0000000467
+2011_09_26 2011_09_26_drive_0096_sync 0000000468
+2011_09_26 2011_09_26_drive_0096_sync 0000000469
+2011_09_26 2011_09_26_drive_0096_sync 0000000470
+2011_09_26 2011_09_26_drive_0096_sync 0000000471
+2011_09_26 2011_09_26_drive_0096_sync 0000000472
+2011_09_26 2011_09_26_drive_0096_sync 0000000473
+2011_09_26 2011_09_26_drive_0101_sync 0000000000
+2011_09_26 2011_09_26_drive_0101_sync 0000000001
+2011_09_26 2011_09_26_drive_0101_sync 0000000002
+2011_09_26 2011_09_26_drive_0101_sync 0000000003
+2011_09_26 2011_09_26_drive_0101_sync 0000000004
+2011_09_26 2011_09_26_drive_0101_sync 0000000005
+2011_09_26 2011_09_26_drive_0101_sync 0000000006
+2011_09_26 2011_09_26_drive_0101_sync 0000000007
+2011_09_26 2011_09_26_drive_0101_sync 0000000008
+2011_09_26 2011_09_26_drive_0101_sync 0000000009
+2011_09_26 2011_09_26_drive_0101_sync 0000000010
+2011_09_26 2011_09_26_drive_0101_sync 0000000011
+2011_09_26 2011_09_26_drive_0101_sync 0000000012
+2011_09_26 2011_09_26_drive_0101_sync 0000000013
+2011_09_26 2011_09_26_drive_0101_sync 0000000014
+2011_09_26 2011_09_26_drive_0101_sync 0000000015
+2011_09_26 2011_09_26_drive_0101_sync 0000000016
+2011_09_26 2011_09_26_drive_0101_sync 0000000017
+2011_09_26 2011_09_26_drive_0101_sync 0000000018
+2011_09_26 2011_09_26_drive_0101_sync 0000000019
+2011_09_26 2011_09_26_drive_0101_sync 0000000020
+2011_09_26 2011_09_26_drive_0101_sync 0000000021
+2011_09_26 2011_09_26_drive_0101_sync 0000000022
+2011_09_26 2011_09_26_drive_0101_sync 0000000023
+2011_09_26 2011_09_26_drive_0101_sync 0000000024
+2011_09_26 2011_09_26_drive_0101_sync 0000000025
+2011_09_26 2011_09_26_drive_0101_sync 0000000026
+2011_09_26 2011_09_26_drive_0101_sync 0000000027
+2011_09_26 2011_09_26_drive_0101_sync 0000000028
+2011_09_26 2011_09_26_drive_0101_sync 0000000029
+2011_09_26 2011_09_26_drive_0101_sync 0000000030
+2011_09_26 2011_09_26_drive_0101_sync 0000000031
+2011_09_26 2011_09_26_drive_0101_sync 0000000032
+2011_09_26 2011_09_26_drive_0101_sync 0000000033
+2011_09_26 2011_09_26_drive_0101_sync 0000000034
+2011_09_26 2011_09_26_drive_0101_sync 0000000035
+2011_09_26 2011_09_26_drive_0101_sync 0000000036
+2011_09_26 2011_09_26_drive_0101_sync 0000000037
+2011_09_26 2011_09_26_drive_0101_sync 0000000038
+2011_09_26 2011_09_26_drive_0101_sync 0000000039
+2011_09_26 2011_09_26_drive_0101_sync 0000000040
+2011_09_26 2011_09_26_drive_0101_sync 0000000041
+2011_09_26 2011_09_26_drive_0101_sync 0000000042
+2011_09_26 2011_09_26_drive_0101_sync 0000000043
+2011_09_26 2011_09_26_drive_0101_sync 0000000044
+2011_09_26 2011_09_26_drive_0101_sync 0000000045
+2011_09_26 2011_09_26_drive_0101_sync 0000000046
+2011_09_26 2011_09_26_drive_0101_sync 0000000047
+2011_09_26 2011_09_26_drive_0101_sync 0000000048
+2011_09_26 2011_09_26_drive_0101_sync 0000000049
+2011_09_26 2011_09_26_drive_0101_sync 0000000050
+2011_09_26 2011_09_26_drive_0101_sync 0000000051
+2011_09_26 2011_09_26_drive_0101_sync 0000000052
+2011_09_26 2011_09_26_drive_0101_sync 0000000053
+2011_09_26 2011_09_26_drive_0101_sync 0000000054
+2011_09_26 2011_09_26_drive_0101_sync 0000000055
+2011_09_26 2011_09_26_drive_0101_sync 0000000056
+2011_09_26 2011_09_26_drive_0101_sync 0000000057
+2011_09_26 2011_09_26_drive_0101_sync 0000000058
+2011_09_26 2011_09_26_drive_0101_sync 0000000059
+2011_09_26 2011_09_26_drive_0101_sync 0000000060
+2011_09_26 2011_09_26_drive_0101_sync 0000000061
+2011_09_26 2011_09_26_drive_0101_sync 0000000062
+2011_09_26 2011_09_26_drive_0101_sync 0000000063
+2011_09_26 2011_09_26_drive_0101_sync 0000000064
+2011_09_26 2011_09_26_drive_0101_sync 0000000065
+2011_09_26 2011_09_26_drive_0101_sync 0000000066
+2011_09_26 2011_09_26_drive_0101_sync 0000000067
+2011_09_26 2011_09_26_drive_0101_sync 0000000068
+2011_09_26 2011_09_26_drive_0101_sync 0000000069
+2011_09_26 2011_09_26_drive_0101_sync 0000000070
+2011_09_26 2011_09_26_drive_0101_sync 0000000071
+2011_09_26 2011_09_26_drive_0101_sync 0000000072
+2011_09_26 2011_09_26_drive_0101_sync 0000000073
+2011_09_26 2011_09_26_drive_0101_sync 0000000074
+2011_09_26 2011_09_26_drive_0101_sync 0000000075
+2011_09_26 2011_09_26_drive_0101_sync 0000000076
+2011_09_26 2011_09_26_drive_0101_sync 0000000077
+2011_09_26 2011_09_26_drive_0101_sync 0000000078
+2011_09_26 2011_09_26_drive_0101_sync 0000000079
+2011_09_26 2011_09_26_drive_0101_sync 0000000080
+2011_09_26 2011_09_26_drive_0101_sync 0000000081
+2011_09_26 2011_09_26_drive_0101_sync 0000000082
+2011_09_26 2011_09_26_drive_0106_sync 0000000000
+2011_09_26 2011_09_26_drive_0106_sync 0000000001
+2011_09_26 2011_09_26_drive_0106_sync 0000000002
+2011_09_26 2011_09_26_drive_0106_sync 0000000003
+2011_09_26 2011_09_26_drive_0106_sync 0000000004
+2011_09_26 2011_09_26_drive_0106_sync 0000000005
+2011_09_26 2011_09_26_drive_0106_sync 0000000006
+2011_09_26 2011_09_26_drive_0106_sync 0000000007
+2011_09_26 2011_09_26_drive_0106_sync 0000000008
+2011_09_26 2011_09_26_drive_0106_sync 0000000009
+2011_09_26 2011_09_26_drive_0106_sync 0000000010
+2011_09_26 2011_09_26_drive_0106_sync 0000000011
+2011_09_26 2011_09_26_drive_0106_sync 0000000012
+2011_09_26 2011_09_26_drive_0106_sync 0000000013
+2011_09_26 2011_09_26_drive_0106_sync 0000000014
+2011_09_26 2011_09_26_drive_0106_sync 0000000015
+2011_09_26 2011_09_26_drive_0106_sync 0000000016
+2011_09_26 2011_09_26_drive_0106_sync 0000000017
+2011_09_26 2011_09_26_drive_0106_sync 0000000018
+2011_09_26 2011_09_26_drive_0106_sync 0000000019
+2011_09_26 2011_09_26_drive_0106_sync 0000000020
+2011_09_26 2011_09_26_drive_0106_sync 0000000021
+2011_09_26 2011_09_26_drive_0106_sync 0000000022
+2011_09_26 2011_09_26_drive_0106_sync 0000000023
+2011_09_26 2011_09_26_drive_0106_sync 0000000024
+2011_09_26 2011_09_26_drive_0106_sync 0000000025
+2011_09_26 2011_09_26_drive_0106_sync 0000000026
+2011_09_26 2011_09_26_drive_0106_sync 0000000027
+2011_09_26 2011_09_26_drive_0106_sync 0000000028
+2011_09_26 2011_09_26_drive_0106_sync 0000000029
+2011_09_26 2011_09_26_drive_0106_sync 0000000030
+2011_09_26 2011_09_26_drive_0106_sync 0000000031
+2011_09_26 2011_09_26_drive_0106_sync 0000000032
+2011_09_26 2011_09_26_drive_0106_sync 0000000033
+2011_09_26 2011_09_26_drive_0106_sync 0000000034
+2011_09_26 2011_09_26_drive_0106_sync 0000000035
+2011_09_26 2011_09_26_drive_0106_sync 0000000036
+2011_09_26 2011_09_26_drive_0106_sync 0000000037
+2011_09_26 2011_09_26_drive_0106_sync 0000000038
+2011_09_26 2011_09_26_drive_0106_sync 0000000039
+2011_09_26 2011_09_26_drive_0106_sync 0000000040
+2011_09_26 2011_09_26_drive_0106_sync 0000000041
+2011_09_26 2011_09_26_drive_0106_sync 0000000042
+2011_09_26 2011_09_26_drive_0106_sync 0000000043
+2011_09_26 2011_09_26_drive_0106_sync 0000000044
+2011_09_26 2011_09_26_drive_0106_sync 0000000048
+2011_09_26 2011_09_26_drive_0106_sync 0000000049
+2011_09_26 2011_09_26_drive_0106_sync 0000000050
+2011_09_26 2011_09_26_drive_0113_sync 0000000030
+2011_09_26 2011_09_26_drive_0117_sync 0000000257
+2011_09_26 2011_09_26_drive_0117_sync 0000000258
+2011_09_26 2011_09_26_drive_0117_sync 0000000259
+2011_09_26 2011_09_26_drive_0117_sync 0000000260
+2011_09_26 2011_09_26_drive_0117_sync 0000000261
+2011_09_26 2011_09_26_drive_0117_sync 0000000262
+2011_09_26 2011_09_26_drive_0117_sync 0000000263
+2011_09_26 2011_09_26_drive_0117_sync 0000000264
+2011_09_26 2011_09_26_drive_0117_sync 0000000265
+2011_09_26 2011_09_26_drive_0117_sync 0000000266
+2011_09_26 2011_09_26_drive_0117_sync 0000000267
+2011_09_26 2011_09_26_drive_0117_sync 0000000268
+2011_09_26 2011_09_26_drive_0117_sync 0000000269
+2011_09_26 2011_09_26_drive_0117_sync 0000000270
+2011_09_26 2011_09_26_drive_0117_sync 0000000271
+2011_09_26 2011_09_26_drive_0117_sync 0000000272
+2011_09_26 2011_09_26_drive_0117_sync 0000000273
+2011_09_26 2011_09_26_drive_0117_sync 0000000274
+2011_09_26 2011_09_26_drive_0117_sync 0000000275
+2011_09_28 2011_09_28_drive_0001_sync 0000000000
+2011_09_28 2011_09_28_drive_0001_sync 0000000001
+2011_09_28 2011_09_28_drive_0001_sync 0000000002
+2011_09_28 2011_09_28_drive_0001_sync 0000000003
+2011_09_28 2011_09_28_drive_0001_sync 0000000004
+2011_09_28 2011_09_28_drive_0001_sync 0000000005
+2011_09_28 2011_09_28_drive_0001_sync 0000000006
+2011_09_28 2011_09_28_drive_0001_sync 0000000007
+2011_09_28 2011_09_28_drive_0001_sync 0000000008
+2011_09_28 2011_09_28_drive_0001_sync 0000000009
+2011_09_28 2011_09_28_drive_0001_sync 0000000010
+2011_09_28 2011_09_28_drive_0001_sync 0000000011
+2011_09_28 2011_09_28_drive_0001_sync 0000000012
+2011_09_28 2011_09_28_drive_0001_sync 0000000013
+2011_09_28 2011_09_28_drive_0001_sync 0000000014
+2011_09_28 2011_09_28_drive_0002_sync 0000000080
+2011_09_28 2011_09_28_drive_0002_sync 0000000081
+2011_09_28 2011_09_28_drive_0002_sync 0000000082
+2011_09_28 2011_09_28_drive_0002_sync 0000000083
+2011_09_28 2011_09_28_drive_0002_sync 0000000084
+2011_09_28 2011_09_28_drive_0002_sync 0000000085
+2011_09_28 2011_09_28_drive_0002_sync 0000000086
+2011_09_28 2011_09_28_drive_0002_sync 0000000087
+2011_09_28 2011_09_28_drive_0002_sync 0000000088
+2011_09_28 2011_09_28_drive_0002_sync 0000000089
+2011_09_28 2011_09_28_drive_0002_sync 0000000090
+2011_09_28 2011_09_28_drive_0002_sync 0000000091
+2011_09_28 2011_09_28_drive_0002_sync 0000000092
+2011_09_28 2011_09_28_drive_0002_sync 0000000094
+2011_09_28 2011_09_28_drive_0002_sync 0000000095
+2011_09_28 2011_09_28_drive_0002_sync 0000000096
+2011_09_28 2011_09_28_drive_0002_sync 0000000097
+2011_09_28 2011_09_28_drive_0002_sync 0000000098
+2011_09_28 2011_09_28_drive_0002_sync 0000000099
+2011_09_28 2011_09_28_drive_0002_sync 0000000100
+2011_09_28 2011_09_28_drive_0002_sync 0000000101
+2011_09_28 2011_09_28_drive_0002_sync 0000000102
+2011_09_28 2011_09_28_drive_0002_sync 0000000103
+2011_09_28 2011_09_28_drive_0002_sync 0000000104
+2011_09_28 2011_09_28_drive_0002_sync 0000000105
+2011_09_28 2011_09_28_drive_0002_sync 0000000106
+2011_09_28 2011_09_28_drive_0002_sync 0000000107
+2011_09_28 2011_09_28_drive_0002_sync 0000000108
+2011_09_28 2011_09_28_drive_0002_sync 0000000109
+2011_09_28 2011_09_28_drive_0002_sync 0000000110
+2011_09_28 2011_09_28_drive_0002_sync 0000000111
+2011_09_28 2011_09_28_drive_0002_sync 0000000112
+2011_09_28 2011_09_28_drive_0002_sync 0000000113
+2011_09_28 2011_09_28_drive_0002_sync 0000000114
+2011_09_28 2011_09_28_drive_0002_sync 0000000115
+2011_09_28 2011_09_28_drive_0002_sync 0000000116
+2011_09_28 2011_09_28_drive_0002_sync 0000000117
+2011_09_28 2011_09_28_drive_0002_sync 0000000118
+2011_09_28 2011_09_28_drive_0002_sync 0000000119
+2011_09_28 2011_09_28_drive_0002_sync 0000000120
+2011_09_28 2011_09_28_drive_0002_sync 0000000121
+2011_09_28 2011_09_28_drive_0002_sync 0000000122
+2011_09_28 2011_09_28_drive_0002_sync 0000000123
+2011_09_28 2011_09_28_drive_0002_sync 0000000124
+2011_09_28 2011_09_28_drive_0002_sync 0000000125
+2011_09_28 2011_09_28_drive_0002_sync 0000000126
+2011_09_28 2011_09_28_drive_0002_sync 0000000127
+2011_09_28 2011_09_28_drive_0002_sync 0000000128
+2011_09_28 2011_09_28_drive_0002_sync 0000000129
+2011_09_28 2011_09_28_drive_0002_sync 0000000130
+2011_09_28 2011_09_28_drive_0002_sync 0000000131
+2011_09_28 2011_09_28_drive_0002_sync 0000000132
+2011_09_28 2011_09_28_drive_0002_sync 0000000133
+2011_09_28 2011_09_28_drive_0002_sync 0000000134
+2011_09_28 2011_09_28_drive_0002_sync 0000000135
+2011_09_28 2011_09_28_drive_0002_sync 0000000136
+2011_09_28 2011_09_28_drive_0002_sync 0000000137
+2011_09_28 2011_09_28_drive_0002_sync 0000000138
+2011_09_28 2011_09_28_drive_0002_sync 0000000139
+2011_09_28 2011_09_28_drive_0002_sync 0000000140
+2011_09_28 2011_09_28_drive_0002_sync 0000000141
+2011_09_28 2011_09_28_drive_0002_sync 0000000142
+2011_09_28 2011_09_28_drive_0002_sync 0000000143
+2011_09_28 2011_09_28_drive_0002_sync 0000000144
+2011_09_28 2011_09_28_drive_0002_sync 0000000145
+2011_09_28 2011_09_28_drive_0002_sync 0000000146
+2011_09_28 2011_09_28_drive_0002_sync 0000000147
+2011_09_28 2011_09_28_drive_0002_sync 0000000148
+2011_09_28 2011_09_28_drive_0002_sync 0000000149
+2011_09_28 2011_09_28_drive_0002_sync 0000000150
+2011_09_28 2011_09_28_drive_0002_sync 0000000151
+2011_09_28 2011_09_28_drive_0002_sync 0000000152
+2011_09_28 2011_09_28_drive_0002_sync 0000000153
+2011_09_28 2011_09_28_drive_0002_sync 0000000154
+2011_09_28 2011_09_28_drive_0002_sync 0000000155
+2011_09_28 2011_09_28_drive_0002_sync 0000000156
+2011_09_28 2011_09_28_drive_0002_sync 0000000157
+2011_09_28 2011_09_28_drive_0002_sync 0000000158
+2011_09_28 2011_09_28_drive_0002_sync 0000000159
+2011_09_28 2011_09_28_drive_0002_sync 0000000160
+2011_09_28 2011_09_28_drive_0002_sync 0000000161
+2011_09_28 2011_09_28_drive_0002_sync 0000000162
+2011_09_28 2011_09_28_drive_0002_sync 0000000163
+2011_09_28 2011_09_28_drive_0002_sync 0000000164
+2011_09_28 2011_09_28_drive_0002_sync 0000000165
+2011_09_28 2011_09_28_drive_0002_sync 0000000166
+2011_09_28 2011_09_28_drive_0002_sync 0000000167
+2011_09_28 2011_09_28_drive_0002_sync 0000000168
+2011_09_28 2011_09_28_drive_0002_sync 0000000169
+2011_09_28 2011_09_28_drive_0002_sync 0000000170
+2011_09_28 2011_09_28_drive_0002_sync 0000000171
+2011_09_28 2011_09_28_drive_0002_sync 0000000172
+2011_09_28 2011_09_28_drive_0002_sync 0000000173
+2011_09_28 2011_09_28_drive_0002_sync 0000000174
+2011_09_28 2011_09_28_drive_0002_sync 0000000175
+2011_09_28 2011_09_28_drive_0002_sync 0000000176
+2011_09_28 2011_09_28_drive_0002_sync 0000000177
+2011_09_28 2011_09_28_drive_0002_sync 0000000178
+2011_09_28 2011_09_28_drive_0002_sync 0000000179
+2011_09_28 2011_09_28_drive_0002_sync 0000000180
+2011_09_28 2011_09_28_drive_0002_sync 0000000181
+2011_09_28 2011_09_28_drive_0002_sync 0000000182
+2011_09_28 2011_09_28_drive_0002_sync 0000000183
+2011_09_28 2011_09_28_drive_0002_sync 0000000184
+2011_09_28 2011_09_28_drive_0002_sync 0000000185
+2011_09_28 2011_09_28_drive_0002_sync 0000000186
+2011_09_28 2011_09_28_drive_0002_sync 0000000187
+2011_09_28 2011_09_28_drive_0002_sync 0000000188
+2011_09_28 2011_09_28_drive_0002_sync 0000000189
+2011_09_28 2011_09_28_drive_0002_sync 0000000190
+2011_09_28 2011_09_28_drive_0002_sync 0000000191
+2011_09_28 2011_09_28_drive_0002_sync 0000000192
+2011_09_28 2011_09_28_drive_0002_sync 0000000193
+2011_09_28 2011_09_28_drive_0002_sync 0000000194
+2011_09_28 2011_09_28_drive_0002_sync 0000000195
+2011_09_28 2011_09_28_drive_0002_sync 0000000196
+2011_09_28 2011_09_28_drive_0002_sync 0000000197
+2011_09_28 2011_09_28_drive_0002_sync 0000000198
+2011_09_28 2011_09_28_drive_0002_sync 0000000199
+2011_09_28 2011_09_28_drive_0002_sync 0000000200
+2011_09_28 2011_09_28_drive_0002_sync 0000000201
+2011_09_28 2011_09_28_drive_0002_sync 0000000202
+2011_09_28 2011_09_28_drive_0002_sync 0000000203
+2011_09_28 2011_09_28_drive_0002_sync 0000000204
+2011_09_28 2011_09_28_drive_0002_sync 0000000205
+2011_09_28 2011_09_28_drive_0002_sync 0000000206
+2011_09_28 2011_09_28_drive_0002_sync 0000000207
+2011_09_28 2011_09_28_drive_0002_sync 0000000208
+2011_09_28 2011_09_28_drive_0002_sync 0000000209
+2011_09_28 2011_09_28_drive_0002_sync 0000000210
+2011_09_28 2011_09_28_drive_0002_sync 0000000211
+2011_09_28 2011_09_28_drive_0002_sync 0000000212
+2011_09_28 2011_09_28_drive_0002_sync 0000000213
+2011_09_28 2011_09_28_drive_0002_sync 0000000214
+2011_09_28 2011_09_28_drive_0002_sync 0000000215
+2011_09_28 2011_09_28_drive_0002_sync 0000000216
+2011_09_28 2011_09_28_drive_0002_sync 0000000217
+2011_09_28 2011_09_28_drive_0002_sync 0000000218
+2011_09_28 2011_09_28_drive_0002_sync 0000000219
+2011_09_28 2011_09_28_drive_0002_sync 0000000220
+2011_09_28 2011_09_28_drive_0002_sync 0000000221
+2011_09_28 2011_09_28_drive_0002_sync 0000000222
+2011_09_28 2011_09_28_drive_0002_sync 0000000223
+2011_09_28 2011_09_28_drive_0002_sync 0000000224
+2011_09_28 2011_09_28_drive_0002_sync 0000000225
+2011_09_28 2011_09_28_drive_0002_sync 0000000226
+2011_09_28 2011_09_28_drive_0002_sync 0000000227
+2011_09_28 2011_09_28_drive_0002_sync 0000000228
+2011_09_28 2011_09_28_drive_0002_sync 0000000229
+2011_09_28 2011_09_28_drive_0002_sync 0000000230
+2011_09_28 2011_09_28_drive_0002_sync 0000000231
+2011_09_28 2011_09_28_drive_0002_sync 0000000232
+2011_09_28 2011_09_28_drive_0002_sync 0000000233
+2011_09_28 2011_09_28_drive_0002_sync 0000000234
+2011_09_28 2011_09_28_drive_0002_sync 0000000235
+2011_09_28 2011_09_28_drive_0002_sync 0000000236
+2011_09_28 2011_09_28_drive_0002_sync 0000000237
+2011_09_28 2011_09_28_drive_0002_sync 0000000238
+2011_09_28 2011_09_28_drive_0002_sync 0000000239
+2011_09_28 2011_09_28_drive_0002_sync 0000000240
+2011_09_28 2011_09_28_drive_0002_sync 0000000241
+2011_09_28 2011_09_28_drive_0002_sync 0000000242
+2011_09_28 2011_09_28_drive_0002_sync 0000000243
+2011_09_28 2011_09_28_drive_0002_sync 0000000244
+2011_09_28 2011_09_28_drive_0002_sync 0000000245
+2011_09_28 2011_09_28_drive_0002_sync 0000000246
+2011_09_28 2011_09_28_drive_0002_sync 0000000247
+2011_09_28 2011_09_28_drive_0002_sync 0000000248
+2011_09_28 2011_09_28_drive_0002_sync 0000000249
+2011_09_28 2011_09_28_drive_0002_sync 0000000250
+2011_09_28 2011_09_28_drive_0002_sync 0000000251
+2011_09_28 2011_09_28_drive_0002_sync 0000000252
+2011_09_28 2011_09_28_drive_0002_sync 0000000253
+2011_09_28 2011_09_28_drive_0002_sync 0000000254
+2011_09_28 2011_09_28_drive_0002_sync 0000000255
+2011_09_28 2011_09_28_drive_0002_sync 0000000256
+2011_09_28 2011_09_28_drive_0002_sync 0000000257
+2011_09_28 2011_09_28_drive_0002_sync 0000000258
+2011_09_28 2011_09_28_drive_0002_sync 0000000259
+2011_09_28 2011_09_28_drive_0002_sync 0000000260
+2011_09_28 2011_09_28_drive_0002_sync 0000000261
+2011_09_28 2011_09_28_drive_0002_sync 0000000262
+2011_09_28 2011_09_28_drive_0002_sync 0000000263
+2011_09_28 2011_09_28_drive_0002_sync 0000000264
+2011_09_28 2011_09_28_drive_0002_sync 0000000265
+2011_09_28 2011_09_28_drive_0002_sync 0000000266
+2011_09_28 2011_09_28_drive_0002_sync 0000000267
+2011_09_28 2011_09_28_drive_0002_sync 0000000268
+2011_09_28 2011_09_28_drive_0002_sync 0000000269
+2011_09_28 2011_09_28_drive_0002_sync 0000000270
+2011_09_28 2011_09_28_drive_0002_sync 0000000271
+2011_09_28 2011_09_28_drive_0002_sync 0000000272
+2011_09_28 2011_09_28_drive_0002_sync 0000000273
+2011_09_28 2011_09_28_drive_0002_sync 0000000274
+2011_09_28 2011_09_28_drive_0002_sync 0000000275
+2011_09_28 2011_09_28_drive_0002_sync 0000000276
+2011_09_28 2011_09_28_drive_0002_sync 0000000277
+2011_09_28 2011_09_28_drive_0002_sync 0000000278
+2011_09_28 2011_09_28_drive_0002_sync 0000000279
+2011_09_28 2011_09_28_drive_0002_sync 0000000280
+2011_09_28 2011_09_28_drive_0002_sync 0000000281
+2011_09_28 2011_09_28_drive_0002_sync 0000000282
+2011_09_28 2011_09_28_drive_0002_sync 0000000283
+2011_09_28 2011_09_28_drive_0002_sync 0000000284
+2011_09_28 2011_09_28_drive_0002_sync 0000000285
+2011_09_28 2011_09_28_drive_0002_sync 0000000286
+2011_09_28 2011_09_28_drive_0002_sync 0000000287
+2011_09_28 2011_09_28_drive_0002_sync 0000000288
+2011_09_28 2011_09_28_drive_0002_sync 0000000289
+2011_09_28 2011_09_28_drive_0002_sync 0000000290
+2011_09_28 2011_09_28_drive_0002_sync 0000000291
+2011_09_28 2011_09_28_drive_0002_sync 0000000292
+2011_09_28 2011_09_28_drive_0002_sync 0000000293
+2011_09_28 2011_09_28_drive_0002_sync 0000000294
+2011_09_28 2011_09_28_drive_0002_sync 0000000295
+2011_09_28 2011_09_28_drive_0002_sync 0000000296
+2011_09_28 2011_09_28_drive_0002_sync 0000000297
+2011_09_28 2011_09_28_drive_0002_sync 0000000298
+2011_09_28 2011_09_28_drive_0002_sync 0000000299
+2011_09_28 2011_09_28_drive_0002_sync 0000000300
+2011_09_28 2011_09_28_drive_0002_sync 0000000301
+2011_09_28 2011_09_28_drive_0002_sync 0000000302
+2011_09_28 2011_09_28_drive_0002_sync 0000000303
+2011_09_28 2011_09_28_drive_0002_sync 0000000304
+2011_09_28 2011_09_28_drive_0002_sync 0000000305
+2011_09_28 2011_09_28_drive_0002_sync 0000000306
+2011_09_28 2011_09_28_drive_0002_sync 0000000307
+2011_09_28 2011_09_28_drive_0002_sync 0000000308
+2011_09_28 2011_09_28_drive_0002_sync 0000000309
+2011_09_28 2011_09_28_drive_0002_sync 0000000310
+2011_09_28 2011_09_28_drive_0002_sync 0000000311
+2011_09_28 2011_09_28_drive_0002_sync 0000000312
+2011_09_28 2011_09_28_drive_0002_sync 0000000313
+2011_09_28 2011_09_28_drive_0002_sync 0000000314
+2011_09_28 2011_09_28_drive_0002_sync 0000000315
+2011_09_28 2011_09_28_drive_0002_sync 0000000316
+2011_09_28 2011_09_28_drive_0002_sync 0000000317
+2011_09_28 2011_09_28_drive_0002_sync 0000000318
+2011_09_28 2011_09_28_drive_0002_sync 0000000319
+2011_09_28 2011_09_28_drive_0002_sync 0000000320
+2011_09_28 2011_09_28_drive_0002_sync 0000000321
+2011_09_28 2011_09_28_drive_0002_sync 0000000322
+2011_09_28 2011_09_28_drive_0002_sync 0000000323
+2011_09_28 2011_09_28_drive_0002_sync 0000000324
+2011_09_28 2011_09_28_drive_0002_sync 0000000325
+2011_09_28 2011_09_28_drive_0002_sync 0000000326
+2011_09_28 2011_09_28_drive_0002_sync 0000000327
+2011_09_28 2011_09_28_drive_0002_sync 0000000328
+2011_09_28 2011_09_28_drive_0002_sync 0000000329
+2011_09_28 2011_09_28_drive_0002_sync 0000000330
+2011_09_28 2011_09_28_drive_0002_sync 0000000331
+2011_09_28 2011_09_28_drive_0002_sync 0000000332
+2011_09_28 2011_09_28_drive_0002_sync 0000000333
+2011_09_28 2011_09_28_drive_0002_sync 0000000334
+2011_09_28 2011_09_28_drive_0002_sync 0000000335
+2011_09_28 2011_09_28_drive_0002_sync 0000000336
+2011_09_28 2011_09_28_drive_0002_sync 0000000337
+2011_09_28 2011_09_28_drive_0002_sync 0000000338
+2011_09_28 2011_09_28_drive_0002_sync 0000000339
+2011_09_28 2011_09_28_drive_0002_sync 0000000340
+2011_09_28 2011_09_28_drive_0002_sync 0000000341
+2011_09_28 2011_09_28_drive_0002_sync 0000000342
+2011_09_28 2011_09_28_drive_0002_sync 0000000343
+2011_09_28 2011_09_28_drive_0002_sync 0000000344
+2011_09_28 2011_09_28_drive_0002_sync 0000000345
+2011_09_28 2011_09_28_drive_0002_sync 0000000346
+2011_09_28 2011_09_28_drive_0002_sync 0000000347
+2011_09_28 2011_09_28_drive_0002_sync 0000000348
+2011_09_28 2011_09_28_drive_0002_sync 0000000349
+2011_09_28 2011_09_28_drive_0002_sync 0000000350
+2011_09_28 2011_09_28_drive_0002_sync 0000000351
+2011_09_28 2011_09_28_drive_0002_sync 0000000352
+2011_09_28 2011_09_28_drive_0002_sync 0000000353
+2011_09_28 2011_09_28_drive_0002_sync 0000000354
+2011_09_28 2011_09_28_drive_0002_sync 0000000355
+2011_09_28 2011_09_28_drive_0002_sync 0000000356
+2011_09_28 2011_09_28_drive_0002_sync 0000000357
+2011_09_28 2011_09_28_drive_0002_sync 0000000358
+2011_09_28 2011_09_28_drive_0002_sync 0000000359
+2011_09_28 2011_09_28_drive_0002_sync 0000000360
+2011_09_28 2011_09_28_drive_0002_sync 0000000361
+2011_09_28 2011_09_28_drive_0002_sync 0000000362
+2011_09_28 2011_09_28_drive_0002_sync 0000000363
+2011_09_28 2011_09_28_drive_0002_sync 0000000364
+2011_09_28 2011_09_28_drive_0002_sync 0000000365
+2011_09_28 2011_09_28_drive_0002_sync 0000000366
+2011_09_28 2011_09_28_drive_0002_sync 0000000367
+2011_09_28 2011_09_28_drive_0002_sync 0000000368
+2011_09_28 2011_09_28_drive_0002_sync 0000000369
+2011_09_28 2011_09_28_drive_0002_sync 0000000370
+2011_09_28 2011_09_28_drive_0002_sync 0000000371
+2011_09_28 2011_09_28_drive_0002_sync 0000000372
+2011_09_28 2011_09_28_drive_0002_sync 0000000373
+2011_09_28 2011_09_28_drive_0002_sync 0000000374
+2011_09_28 2011_09_28_drive_0016_sync 0000000000
+2011_09_28 2011_09_28_drive_0016_sync 0000000001
+2011_09_28 2011_09_28_drive_0016_sync 0000000002
+2011_09_28 2011_09_28_drive_0016_sync 0000000003
+2011_09_28 2011_09_28_drive_0016_sync 0000000004
+2011_09_28 2011_09_28_drive_0016_sync 0000000005
+2011_09_28 2011_09_28_drive_0016_sync 0000000006
+2011_09_28 2011_09_28_drive_0016_sync 0000000007
+2011_09_28 2011_09_28_drive_0016_sync 0000000008
+2011_09_28 2011_09_28_drive_0016_sync 0000000009
+2011_09_28 2011_09_28_drive_0016_sync 0000000010
+2011_09_28 2011_09_28_drive_0016_sync 0000000011
+2011_09_28 2011_09_28_drive_0016_sync 0000000012
+2011_09_28 2011_09_28_drive_0016_sync 0000000013
+2011_09_28 2011_09_28_drive_0016_sync 0000000014
+2011_09_28 2011_09_28_drive_0016_sync 0000000015
+2011_09_28 2011_09_28_drive_0016_sync 0000000016
+2011_09_28 2011_09_28_drive_0016_sync 0000000017
+2011_09_28 2011_09_28_drive_0016_sync 0000000018
+2011_09_28 2011_09_28_drive_0016_sync 0000000019
+2011_09_28 2011_09_28_drive_0016_sync 0000000020
+2011_09_28 2011_09_28_drive_0016_sync 0000000021
+2011_09_28 2011_09_28_drive_0016_sync 0000000022
+2011_09_28 2011_09_28_drive_0016_sync 0000000023
+2011_09_28 2011_09_28_drive_0016_sync 0000000024
+2011_09_28 2011_09_28_drive_0016_sync 0000000025
+2011_09_28 2011_09_28_drive_0016_sync 0000000026
+2011_09_28 2011_09_28_drive_0016_sync 0000000027
+2011_09_28 2011_09_28_drive_0016_sync 0000000028
+2011_09_28 2011_09_28_drive_0016_sync 0000000029
+2011_09_28 2011_09_28_drive_0016_sync 0000000030
+2011_09_28 2011_09_28_drive_0016_sync 0000000031
+2011_09_28 2011_09_28_drive_0016_sync 0000000032
+2011_09_28 2011_09_28_drive_0016_sync 0000000033
+2011_09_28 2011_09_28_drive_0016_sync 0000000034
+2011_09_28 2011_09_28_drive_0016_sync 0000000035
+2011_09_28 2011_09_28_drive_0016_sync 0000000036
+2011_09_28 2011_09_28_drive_0016_sync 0000000037
+2011_09_28 2011_09_28_drive_0016_sync 0000000038
+2011_09_28 2011_09_28_drive_0016_sync 0000000039
+2011_09_28 2011_09_28_drive_0016_sync 0000000040
+2011_09_28 2011_09_28_drive_0016_sync 0000000041
+2011_09_28 2011_09_28_drive_0016_sync 0000000042
+2011_09_28 2011_09_28_drive_0016_sync 0000000043
+2011_09_28 2011_09_28_drive_0016_sync 0000000044
+2011_09_28 2011_09_28_drive_0016_sync 0000000045
+2011_09_28 2011_09_28_drive_0016_sync 0000000046
+2011_09_28 2011_09_28_drive_0016_sync 0000000047
+2011_09_28 2011_09_28_drive_0016_sync 0000000048
+2011_09_28 2011_09_28_drive_0016_sync 0000000049
+2011_09_28 2011_09_28_drive_0016_sync 0000000050
+2011_09_28 2011_09_28_drive_0016_sync 0000000051
+2011_09_28 2011_09_28_drive_0016_sync 0000000052
+2011_09_28 2011_09_28_drive_0016_sync 0000000053
+2011_09_28 2011_09_28_drive_0016_sync 0000000054
+2011_09_28 2011_09_28_drive_0016_sync 0000000055
+2011_09_28 2011_09_28_drive_0016_sync 0000000056
+2011_09_28 2011_09_28_drive_0016_sync 0000000057
+2011_09_28 2011_09_28_drive_0016_sync 0000000058
+2011_09_28 2011_09_28_drive_0016_sync 0000000059
+2011_09_28 2011_09_28_drive_0016_sync 0000000060
+2011_09_28 2011_09_28_drive_0016_sync 0000000061
+2011_09_28 2011_09_28_drive_0016_sync 0000000062
+2011_09_28 2011_09_28_drive_0016_sync 0000000063
+2011_09_28 2011_09_28_drive_0016_sync 0000000064
+2011_09_28 2011_09_28_drive_0016_sync 0000000065
+2011_09_28 2011_09_28_drive_0016_sync 0000000066
+2011_09_28 2011_09_28_drive_0016_sync 0000000067
+2011_09_28 2011_09_28_drive_0016_sync 0000000068
+2011_09_28 2011_09_28_drive_0016_sync 0000000069
+2011_09_28 2011_09_28_drive_0016_sync 0000000070
+2011_09_28 2011_09_28_drive_0016_sync 0000000071
+2011_09_28 2011_09_28_drive_0016_sync 0000000072
+2011_09_28 2011_09_28_drive_0016_sync 0000000073
+2011_09_28 2011_09_28_drive_0016_sync 0000000074
+2011_09_28 2011_09_28_drive_0016_sync 0000000075
+2011_09_28 2011_09_28_drive_0016_sync 0000000076
+2011_09_28 2011_09_28_drive_0016_sync 0000000077
+2011_09_28 2011_09_28_drive_0016_sync 0000000078
+2011_09_28 2011_09_28_drive_0016_sync 0000000079
+2011_09_28 2011_09_28_drive_0016_sync 0000000080
+2011_09_28 2011_09_28_drive_0016_sync 0000000081
+2011_09_28 2011_09_28_drive_0016_sync 0000000082
+2011_09_28 2011_09_28_drive_0016_sync 0000000083
+2011_09_28 2011_09_28_drive_0016_sync 0000000084
+2011_09_28 2011_09_28_drive_0016_sync 0000000085
+2011_09_28 2011_09_28_drive_0016_sync 0000000086
+2011_09_28 2011_09_28_drive_0016_sync 0000000087
+2011_09_28 2011_09_28_drive_0016_sync 0000000088
+2011_09_28 2011_09_28_drive_0016_sync 0000000089
+2011_09_28 2011_09_28_drive_0016_sync 0000000090
+2011_09_28 2011_09_28_drive_0016_sync 0000000091
+2011_09_28 2011_09_28_drive_0016_sync 0000000092
+2011_09_28 2011_09_28_drive_0016_sync 0000000093
+2011_09_28 2011_09_28_drive_0016_sync 0000000094
+2011_09_28 2011_09_28_drive_0016_sync 0000000095
+2011_09_28 2011_09_28_drive_0016_sync 0000000096
+2011_09_28 2011_09_28_drive_0016_sync 0000000097
+2011_09_28 2011_09_28_drive_0016_sync 0000000098
+2011_09_28 2011_09_28_drive_0016_sync 0000000099
+2011_09_28 2011_09_28_drive_0016_sync 0000000100
+2011_09_28 2011_09_28_drive_0016_sync 0000000101
+2011_09_28 2011_09_28_drive_0016_sync 0000000102
+2011_09_28 2011_09_28_drive_0016_sync 0000000103
+2011_09_28 2011_09_28_drive_0016_sync 0000000104
+2011_09_28 2011_09_28_drive_0016_sync 0000000105
+2011_09_28 2011_09_28_drive_0016_sync 0000000106
+2011_09_28 2011_09_28_drive_0016_sync 0000000107
+2011_09_28 2011_09_28_drive_0016_sync 0000000108
+2011_09_28 2011_09_28_drive_0016_sync 0000000109
+2011_09_28 2011_09_28_drive_0016_sync 0000000110
+2011_09_28 2011_09_28_drive_0016_sync 0000000111
+2011_09_28 2011_09_28_drive_0016_sync 0000000112
+2011_09_28 2011_09_28_drive_0016_sync 0000000113
+2011_09_28 2011_09_28_drive_0016_sync 0000000114
+2011_09_28 2011_09_28_drive_0016_sync 0000000115
+2011_09_28 2011_09_28_drive_0016_sync 0000000116
+2011_09_28 2011_09_28_drive_0016_sync 0000000117
+2011_09_28 2011_09_28_drive_0016_sync 0000000118
+2011_09_28 2011_09_28_drive_0016_sync 0000000119
+2011_09_28 2011_09_28_drive_0016_sync 0000000120
+2011_09_28 2011_09_28_drive_0016_sync 0000000121
+2011_09_28 2011_09_28_drive_0016_sync 0000000122
+2011_09_28 2011_09_28_drive_0016_sync 0000000123
+2011_09_28 2011_09_28_drive_0016_sync 0000000124
+2011_09_28 2011_09_28_drive_0016_sync 0000000125
+2011_09_28 2011_09_28_drive_0016_sync 0000000126
+2011_09_28 2011_09_28_drive_0016_sync 0000000127
+2011_09_28 2011_09_28_drive_0016_sync 0000000128
+2011_09_28 2011_09_28_drive_0016_sync 0000000129
+2011_09_28 2011_09_28_drive_0016_sync 0000000130
+2011_09_28 2011_09_28_drive_0016_sync 0000000131
+2011_09_28 2011_09_28_drive_0016_sync 0000000132
+2011_09_28 2011_09_28_drive_0016_sync 0000000133
+2011_09_28 2011_09_28_drive_0016_sync 0000000134
+2011_09_28 2011_09_28_drive_0016_sync 0000000135
+2011_09_28 2011_09_28_drive_0016_sync 0000000136
+2011_09_28 2011_09_28_drive_0016_sync 0000000137
+2011_09_28 2011_09_28_drive_0016_sync 0000000138
+2011_09_28 2011_09_28_drive_0016_sync 0000000139
+2011_09_28 2011_09_28_drive_0016_sync 0000000140
+2011_09_28 2011_09_28_drive_0016_sync 0000000141
+2011_09_28 2011_09_28_drive_0016_sync 0000000142
+2011_09_28 2011_09_28_drive_0016_sync 0000000143
+2011_09_28 2011_09_28_drive_0016_sync 0000000144
+2011_09_28 2011_09_28_drive_0016_sync 0000000145
+2011_09_28 2011_09_28_drive_0016_sync 0000000146
+2011_09_28 2011_09_28_drive_0016_sync 0000000147
+2011_09_28 2011_09_28_drive_0016_sync 0000000148
+2011_09_28 2011_09_28_drive_0016_sync 0000000149
+2011_09_28 2011_09_28_drive_0016_sync 0000000150
+2011_09_28 2011_09_28_drive_0016_sync 0000000151
+2011_09_28 2011_09_28_drive_0016_sync 0000000152
+2011_09_28 2011_09_28_drive_0016_sync 0000000153
+2011_09_28 2011_09_28_drive_0016_sync 0000000154
+2011_09_28 2011_09_28_drive_0016_sync 0000000155
+2011_09_28 2011_09_28_drive_0016_sync 0000000156
+2011_09_28 2011_09_28_drive_0016_sync 0000000157
+2011_09_28 2011_09_28_drive_0016_sync 0000000158
+2011_09_28 2011_09_28_drive_0016_sync 0000000159
+2011_09_28 2011_09_28_drive_0016_sync 0000000160
+2011_09_28 2011_09_28_drive_0016_sync 0000000161
+2011_09_28 2011_09_28_drive_0016_sync 0000000162
+2011_09_28 2011_09_28_drive_0016_sync 0000000163
+2011_09_28 2011_09_28_drive_0016_sync 0000000164
+2011_09_28 2011_09_28_drive_0016_sync 0000000165
+2011_09_28 2011_09_28_drive_0016_sync 0000000166
+2011_09_28 2011_09_28_drive_0016_sync 0000000167
+2011_09_28 2011_09_28_drive_0016_sync 0000000168
+2011_09_28 2011_09_28_drive_0016_sync 0000000169
+2011_09_28 2011_09_28_drive_0016_sync 0000000170
+2011_09_28 2011_09_28_drive_0016_sync 0000000171
+2011_09_28 2011_09_28_drive_0016_sync 0000000172
+2011_09_28 2011_09_28_drive_0016_sync 0000000173
+2011_09_28 2011_09_28_drive_0016_sync 0000000174
+2011_09_28 2011_09_28_drive_0016_sync 0000000175
+2011_09_28 2011_09_28_drive_0016_sync 0000000176
+2011_09_28 2011_09_28_drive_0016_sync 0000000177
+2011_09_28 2011_09_28_drive_0016_sync 0000000178
+2011_09_28 2011_09_28_drive_0016_sync 0000000179
+2011_09_28 2011_09_28_drive_0016_sync 0000000180
+2011_09_28 2011_09_28_drive_0016_sync 0000000181
+2011_09_28 2011_09_28_drive_0016_sync 0000000182
+2011_09_28 2011_09_28_drive_0016_sync 0000000183
+2011_09_28 2011_09_28_drive_0016_sync 0000000184
+2011_09_28 2011_09_28_drive_0021_sync 0000000000
+2011_09_28 2011_09_28_drive_0021_sync 0000000001
+2011_09_28 2011_09_28_drive_0021_sync 0000000002
+2011_09_28 2011_09_28_drive_0021_sync 0000000003
+2011_09_28 2011_09_28_drive_0021_sync 0000000004
+2011_09_28 2011_09_28_drive_0021_sync 0000000005
+2011_09_28 2011_09_28_drive_0021_sync 0000000006
+2011_09_28 2011_09_28_drive_0021_sync 0000000007
+2011_09_28 2011_09_28_drive_0021_sync 0000000008
+2011_09_28 2011_09_28_drive_0021_sync 0000000009
+2011_09_28 2011_09_28_drive_0021_sync 0000000010
+2011_09_28 2011_09_28_drive_0021_sync 0000000011
+2011_09_28 2011_09_28_drive_0021_sync 0000000012
+2011_09_28 2011_09_28_drive_0021_sync 0000000013
+2011_09_28 2011_09_28_drive_0021_sync 0000000014
+2011_09_28 2011_09_28_drive_0021_sync 0000000015
+2011_09_28 2011_09_28_drive_0021_sync 0000000016
+2011_09_28 2011_09_28_drive_0021_sync 0000000017
+2011_09_28 2011_09_28_drive_0021_sync 0000000018
+2011_09_28 2011_09_28_drive_0021_sync 0000000019
+2011_09_28 2011_09_28_drive_0021_sync 0000000020
+2011_09_28 2011_09_28_drive_0021_sync 0000000021
+2011_09_28 2011_09_28_drive_0021_sync 0000000022
+2011_09_28 2011_09_28_drive_0021_sync 0000000023
+2011_09_28 2011_09_28_drive_0021_sync 0000000024
+2011_09_28 2011_09_28_drive_0021_sync 0000000025
+2011_09_28 2011_09_28_drive_0021_sync 0000000026
+2011_09_28 2011_09_28_drive_0021_sync 0000000027
+2011_09_28 2011_09_28_drive_0021_sync 0000000028
+2011_09_28 2011_09_28_drive_0021_sync 0000000029
+2011_09_28 2011_09_28_drive_0021_sync 0000000030
+2011_09_28 2011_09_28_drive_0021_sync 0000000031
+2011_09_28 2011_09_28_drive_0021_sync 0000000032
+2011_09_28 2011_09_28_drive_0021_sync 0000000033
+2011_09_28 2011_09_28_drive_0021_sync 0000000034
+2011_09_28 2011_09_28_drive_0021_sync 0000000035
+2011_09_28 2011_09_28_drive_0021_sync 0000000036
+2011_09_28 2011_09_28_drive_0021_sync 0000000037
+2011_09_28 2011_09_28_drive_0021_sync 0000000038
+2011_09_28 2011_09_28_drive_0021_sync 0000000039
+2011_09_28 2011_09_28_drive_0021_sync 0000000040
+2011_09_28 2011_09_28_drive_0021_sync 0000000041
+2011_09_28 2011_09_28_drive_0021_sync 0000000042
+2011_09_28 2011_09_28_drive_0021_sync 0000000043
+2011_09_28 2011_09_28_drive_0021_sync 0000000044
+2011_09_28 2011_09_28_drive_0021_sync 0000000045
+2011_09_28 2011_09_28_drive_0021_sync 0000000046
+2011_09_28 2011_09_28_drive_0021_sync 0000000047
+2011_09_28 2011_09_28_drive_0021_sync 0000000048
+2011_09_28 2011_09_28_drive_0021_sync 0000000049
+2011_09_28 2011_09_28_drive_0021_sync 0000000050
+2011_09_28 2011_09_28_drive_0021_sync 0000000051
+2011_09_28 2011_09_28_drive_0021_sync 0000000052
+2011_09_28 2011_09_28_drive_0021_sync 0000000053
+2011_09_28 2011_09_28_drive_0021_sync 0000000054
+2011_09_28 2011_09_28_drive_0021_sync 0000000055
+2011_09_28 2011_09_28_drive_0021_sync 0000000056
+2011_09_28 2011_09_28_drive_0021_sync 0000000057
+2011_09_28 2011_09_28_drive_0021_sync 0000000058
+2011_09_28 2011_09_28_drive_0021_sync 0000000059
+2011_09_28 2011_09_28_drive_0021_sync 0000000060
+2011_09_28 2011_09_28_drive_0021_sync 0000000061
+2011_09_28 2011_09_28_drive_0021_sync 0000000062
+2011_09_28 2011_09_28_drive_0021_sync 0000000063
+2011_09_28 2011_09_28_drive_0021_sync 0000000064
+2011_09_28 2011_09_28_drive_0021_sync 0000000065
+2011_09_28 2011_09_28_drive_0021_sync 0000000066
+2011_09_28 2011_09_28_drive_0021_sync 0000000067
+2011_09_28 2011_09_28_drive_0021_sync 0000000068
+2011_09_28 2011_09_28_drive_0021_sync 0000000069
+2011_09_28 2011_09_28_drive_0021_sync 0000000070
+2011_09_28 2011_09_28_drive_0021_sync 0000000071
+2011_09_28 2011_09_28_drive_0021_sync 0000000072
+2011_09_28 2011_09_28_drive_0021_sync 0000000073
+2011_09_28 2011_09_28_drive_0021_sync 0000000074
+2011_09_28 2011_09_28_drive_0021_sync 0000000075
+2011_09_28 2011_09_28_drive_0021_sync 0000000076
+2011_09_28 2011_09_28_drive_0021_sync 0000000077
+2011_09_28 2011_09_28_drive_0021_sync 0000000078
+2011_09_28 2011_09_28_drive_0021_sync 0000000079
+2011_09_28 2011_09_28_drive_0021_sync 0000000080
+2011_09_28 2011_09_28_drive_0021_sync 0000000081
+2011_09_28 2011_09_28_drive_0021_sync 0000000082
+2011_09_28 2011_09_28_drive_0021_sync 0000000083
+2011_09_28 2011_09_28_drive_0021_sync 0000000084
+2011_09_28 2011_09_28_drive_0021_sync 0000000085
+2011_09_28 2011_09_28_drive_0021_sync 0000000086
+2011_09_28 2011_09_28_drive_0021_sync 0000000087
+2011_09_28 2011_09_28_drive_0021_sync 0000000088
+2011_09_28 2011_09_28_drive_0021_sync 0000000089
+2011_09_28 2011_09_28_drive_0021_sync 0000000090
+2011_09_28 2011_09_28_drive_0021_sync 0000000091
+2011_09_28 2011_09_28_drive_0021_sync 0000000092
+2011_09_28 2011_09_28_drive_0021_sync 0000000093
+2011_09_28 2011_09_28_drive_0021_sync 0000000094
+2011_09_28 2011_09_28_drive_0021_sync 0000000095
+2011_09_28 2011_09_28_drive_0021_sync 0000000096
+2011_09_28 2011_09_28_drive_0021_sync 0000000097
+2011_09_28 2011_09_28_drive_0021_sync 0000000098
+2011_09_28 2011_09_28_drive_0021_sync 0000000099
+2011_09_28 2011_09_28_drive_0021_sync 0000000100
+2011_09_28 2011_09_28_drive_0021_sync 0000000101
+2011_09_28 2011_09_28_drive_0021_sync 0000000102
+2011_09_28 2011_09_28_drive_0021_sync 0000000103
+2011_09_28 2011_09_28_drive_0021_sync 0000000104
+2011_09_28 2011_09_28_drive_0021_sync 0000000105
+2011_09_28 2011_09_28_drive_0021_sync 0000000106
+2011_09_28 2011_09_28_drive_0021_sync 0000000107
+2011_09_28 2011_09_28_drive_0021_sync 0000000108
+2011_09_28 2011_09_28_drive_0021_sync 0000000109
+2011_09_28 2011_09_28_drive_0021_sync 0000000110
+2011_09_28 2011_09_28_drive_0021_sync 0000000111
+2011_09_28 2011_09_28_drive_0021_sync 0000000112
+2011_09_28 2011_09_28_drive_0021_sync 0000000113
+2011_09_28 2011_09_28_drive_0021_sync 0000000114
+2011_09_28 2011_09_28_drive_0021_sync 0000000115
+2011_09_28 2011_09_28_drive_0021_sync 0000000116
+2011_09_28 2011_09_28_drive_0021_sync 0000000117
+2011_09_28 2011_09_28_drive_0021_sync 0000000118
+2011_09_28 2011_09_28_drive_0021_sync 0000000119
+2011_09_28 2011_09_28_drive_0021_sync 0000000120
+2011_09_28 2011_09_28_drive_0021_sync 0000000121
+2011_09_28 2011_09_28_drive_0021_sync 0000000122
+2011_09_28 2011_09_28_drive_0021_sync 0000000123
+2011_09_28 2011_09_28_drive_0021_sync 0000000124
+2011_09_28 2011_09_28_drive_0021_sync 0000000125
+2011_09_28 2011_09_28_drive_0021_sync 0000000126
+2011_09_28 2011_09_28_drive_0021_sync 0000000127
+2011_09_28 2011_09_28_drive_0021_sync 0000000128
+2011_09_28 2011_09_28_drive_0021_sync 0000000129
+2011_09_28 2011_09_28_drive_0021_sync 0000000130
+2011_09_28 2011_09_28_drive_0021_sync 0000000131
+2011_09_28 2011_09_28_drive_0021_sync 0000000132
+2011_09_28 2011_09_28_drive_0021_sync 0000000133
+2011_09_28 2011_09_28_drive_0021_sync 0000000134
+2011_09_28 2011_09_28_drive_0021_sync 0000000135
+2011_09_28 2011_09_28_drive_0021_sync 0000000136
+2011_09_28 2011_09_28_drive_0021_sync 0000000137
+2011_09_28 2011_09_28_drive_0021_sync 0000000138
+2011_09_28 2011_09_28_drive_0021_sync 0000000139
+2011_09_28 2011_09_28_drive_0021_sync 0000000140
+2011_09_28 2011_09_28_drive_0021_sync 0000000141
+2011_09_28 2011_09_28_drive_0021_sync 0000000142
+2011_09_28 2011_09_28_drive_0021_sync 0000000143
+2011_09_28 2011_09_28_drive_0021_sync 0000000144
+2011_09_28 2011_09_28_drive_0021_sync 0000000145
+2011_09_28 2011_09_28_drive_0021_sync 0000000146
+2011_09_28 2011_09_28_drive_0021_sync 0000000147
+2011_09_28 2011_09_28_drive_0021_sync 0000000148
+2011_09_28 2011_09_28_drive_0021_sync 0000000149
+2011_09_28 2011_09_28_drive_0021_sync 0000000150
+2011_09_28 2011_09_28_drive_0021_sync 0000000151
+2011_09_28 2011_09_28_drive_0021_sync 0000000152
+2011_09_28 2011_09_28_drive_0021_sync 0000000153
+2011_09_28 2011_09_28_drive_0021_sync 0000000154
+2011_09_28 2011_09_28_drive_0021_sync 0000000155
+2011_09_28 2011_09_28_drive_0021_sync 0000000156
+2011_09_28 2011_09_28_drive_0021_sync 0000000157
+2011_09_28 2011_09_28_drive_0021_sync 0000000158
+2011_09_28 2011_09_28_drive_0021_sync 0000000159
+2011_09_28 2011_09_28_drive_0021_sync 0000000160
+2011_09_28 2011_09_28_drive_0021_sync 0000000161
+2011_09_28 2011_09_28_drive_0021_sync 0000000162
+2011_09_28 2011_09_28_drive_0021_sync 0000000163
+2011_09_28 2011_09_28_drive_0021_sync 0000000164
+2011_09_28 2011_09_28_drive_0021_sync 0000000165
+2011_09_28 2011_09_28_drive_0021_sync 0000000166
+2011_09_28 2011_09_28_drive_0021_sync 0000000167
+2011_09_28 2011_09_28_drive_0021_sync 0000000168
+2011_09_28 2011_09_28_drive_0021_sync 0000000169
+2011_09_28 2011_09_28_drive_0021_sync 0000000170
+2011_09_28 2011_09_28_drive_0021_sync 0000000171
+2011_09_28 2011_09_28_drive_0021_sync 0000000172
+2011_09_28 2011_09_28_drive_0021_sync 0000000173
+2011_09_28 2011_09_28_drive_0021_sync 0000000174
+2011_09_28 2011_09_28_drive_0021_sync 0000000175
+2011_09_28 2011_09_28_drive_0021_sync 0000000176
+2011_09_28 2011_09_28_drive_0021_sync 0000000177
+2011_09_28 2011_09_28_drive_0021_sync 0000000178
+2011_09_28 2011_09_28_drive_0021_sync 0000000179
+2011_09_28 2011_09_28_drive_0021_sync 0000000180
+2011_09_28 2011_09_28_drive_0021_sync 0000000181
+2011_09_28 2011_09_28_drive_0021_sync 0000000182
+2011_09_28 2011_09_28_drive_0021_sync 0000000183
+2011_09_28 2011_09_28_drive_0021_sync 0000000184
+2011_09_28 2011_09_28_drive_0021_sync 0000000185
+2011_09_28 2011_09_28_drive_0021_sync 0000000186
+2011_09_28 2011_09_28_drive_0021_sync 0000000187
+2011_09_28 2011_09_28_drive_0021_sync 0000000188
+2011_09_28 2011_09_28_drive_0021_sync 0000000189
+2011_09_28 2011_09_28_drive_0021_sync 0000000190
+2011_09_28 2011_09_28_drive_0021_sync 0000000191
+2011_09_28 2011_09_28_drive_0021_sync 0000000192
+2011_09_28 2011_09_28_drive_0021_sync 0000000193
+2011_09_28 2011_09_28_drive_0021_sync 0000000194
+2011_09_28 2011_09_28_drive_0021_sync 0000000195
+2011_09_28 2011_09_28_drive_0021_sync 0000000196
+2011_09_28 2011_09_28_drive_0021_sync 0000000197
+2011_09_28 2011_09_28_drive_0021_sync 0000000198
+2011_09_28 2011_09_28_drive_0021_sync 0000000199
+2011_09_28 2011_09_28_drive_0021_sync 0000000200
+2011_09_28 2011_09_28_drive_0021_sync 0000000201
+2011_09_28 2011_09_28_drive_0021_sync 0000000202
+2011_09_28 2011_09_28_drive_0021_sync 0000000203
+2011_09_28 2011_09_28_drive_0021_sync 0000000204
+2011_09_28 2011_09_28_drive_0021_sync 0000000205
+2011_09_28 2011_09_28_drive_0021_sync 0000000206
+2011_09_28 2011_09_28_drive_0021_sync 0000000207
+2011_09_28 2011_09_28_drive_0034_sync 0000000000
+2011_09_28 2011_09_28_drive_0034_sync 0000000001
+2011_09_28 2011_09_28_drive_0034_sync 0000000002
+2011_09_28 2011_09_28_drive_0034_sync 0000000003
+2011_09_28 2011_09_28_drive_0034_sync 0000000004
+2011_09_28 2011_09_28_drive_0034_sync 0000000005
+2011_09_28 2011_09_28_drive_0034_sync 0000000006
+2011_09_28 2011_09_28_drive_0034_sync 0000000007
+2011_09_28 2011_09_28_drive_0034_sync 0000000008
+2011_09_28 2011_09_28_drive_0034_sync 0000000009
+2011_09_28 2011_09_28_drive_0034_sync 0000000010
+2011_09_28 2011_09_28_drive_0034_sync 0000000011
+2011_09_28 2011_09_28_drive_0034_sync 0000000012
+2011_09_28 2011_09_28_drive_0034_sync 0000000013
+2011_09_28 2011_09_28_drive_0034_sync 0000000014
+2011_09_28 2011_09_28_drive_0034_sync 0000000015
+2011_09_28 2011_09_28_drive_0034_sync 0000000016
+2011_09_28 2011_09_28_drive_0034_sync 0000000017
+2011_09_28 2011_09_28_drive_0034_sync 0000000018
+2011_09_28 2011_09_28_drive_0034_sync 0000000019
+2011_09_28 2011_09_28_drive_0034_sync 0000000020
+2011_09_28 2011_09_28_drive_0034_sync 0000000021
+2011_09_28 2011_09_28_drive_0034_sync 0000000022
+2011_09_28 2011_09_28_drive_0034_sync 0000000023
+2011_09_28 2011_09_28_drive_0034_sync 0000000024
+2011_09_28 2011_09_28_drive_0034_sync 0000000025
+2011_09_28 2011_09_28_drive_0034_sync 0000000026
+2011_09_28 2011_09_28_drive_0034_sync 0000000027
+2011_09_28 2011_09_28_drive_0034_sync 0000000028
+2011_09_28 2011_09_28_drive_0034_sync 0000000029
+2011_09_28 2011_09_28_drive_0034_sync 0000000030
+2011_09_28 2011_09_28_drive_0034_sync 0000000031
+2011_09_28 2011_09_28_drive_0034_sync 0000000032
+2011_09_28 2011_09_28_drive_0034_sync 0000000033
+2011_09_28 2011_09_28_drive_0034_sync 0000000034
+2011_09_28 2011_09_28_drive_0034_sync 0000000035
+2011_09_28 2011_09_28_drive_0034_sync 0000000036
+2011_09_28 2011_09_28_drive_0034_sync 0000000040
+2011_09_28 2011_09_28_drive_0034_sync 0000000041
+2011_09_28 2011_09_28_drive_0034_sync 0000000042
+2011_09_28 2011_09_28_drive_0034_sync 0000000043
+2011_09_28 2011_09_28_drive_0034_sync 0000000044
+2011_09_28 2011_09_28_drive_0034_sync 0000000045
+2011_09_28 2011_09_28_drive_0034_sync 0000000046
+2011_09_28 2011_09_28_drive_0034_sync 0000000047
+2011_09_28 2011_09_28_drive_0035_sync 0000000000
+2011_09_28 2011_09_28_drive_0035_sync 0000000001
+2011_09_28 2011_09_28_drive_0035_sync 0000000002
+2011_09_28 2011_09_28_drive_0035_sync 0000000003
+2011_09_28 2011_09_28_drive_0035_sync 0000000004
+2011_09_28 2011_09_28_drive_0035_sync 0000000005
+2011_09_28 2011_09_28_drive_0035_sync 0000000006
+2011_09_28 2011_09_28_drive_0035_sync 0000000007
+2011_09_28 2011_09_28_drive_0035_sync 0000000008
+2011_09_28 2011_09_28_drive_0035_sync 0000000009
+2011_09_28 2011_09_28_drive_0035_sync 0000000010
+2011_09_28 2011_09_28_drive_0035_sync 0000000011
+2011_09_28 2011_09_28_drive_0035_sync 0000000012
+2011_09_28 2011_09_28_drive_0035_sync 0000000013
+2011_09_28 2011_09_28_drive_0035_sync 0000000014
+2011_09_28 2011_09_28_drive_0035_sync 0000000015
+2011_09_28 2011_09_28_drive_0035_sync 0000000016
+2011_09_28 2011_09_28_drive_0035_sync 0000000017
+2011_09_28 2011_09_28_drive_0035_sync 0000000018
+2011_09_28 2011_09_28_drive_0035_sync 0000000019
+2011_09_28 2011_09_28_drive_0035_sync 0000000020
+2011_09_28 2011_09_28_drive_0035_sync 0000000021
+2011_09_28 2011_09_28_drive_0035_sync 0000000022
+2011_09_28 2011_09_28_drive_0035_sync 0000000023
+2011_09_28 2011_09_28_drive_0035_sync 0000000024
+2011_09_28 2011_09_28_drive_0035_sync 0000000025
+2011_09_28 2011_09_28_drive_0035_sync 0000000026
+2011_09_28 2011_09_28_drive_0035_sync 0000000027
+2011_09_28 2011_09_28_drive_0035_sync 0000000028
+2011_09_28 2011_09_28_drive_0035_sync 0000000029
+2011_09_28 2011_09_28_drive_0035_sync 0000000030
+2011_09_28 2011_09_28_drive_0035_sync 0000000031
+2011_09_28 2011_09_28_drive_0035_sync 0000000032
+2011_09_28 2011_09_28_drive_0035_sync 0000000033
+2011_09_28 2011_09_28_drive_0037_sync 0000000000
+2011_09_28 2011_09_28_drive_0037_sync 0000000001
+2011_09_28 2011_09_28_drive_0037_sync 0000000002
+2011_09_28 2011_09_28_drive_0037_sync 0000000003
+2011_09_28 2011_09_28_drive_0037_sync 0000000004
+2011_09_28 2011_09_28_drive_0037_sync 0000000005
+2011_09_28 2011_09_28_drive_0037_sync 0000000006
+2011_09_28 2011_09_28_drive_0037_sync 0000000007
+2011_09_28 2011_09_28_drive_0037_sync 0000000008
+2011_09_28 2011_09_28_drive_0037_sync 0000000009
+2011_09_28 2011_09_28_drive_0037_sync 0000000010
+2011_09_28 2011_09_28_drive_0037_sync 0000000011
+2011_09_28 2011_09_28_drive_0037_sync 0000000012
+2011_09_28 2011_09_28_drive_0037_sync 0000000013
+2011_09_28 2011_09_28_drive_0037_sync 0000000014
+2011_09_28 2011_09_28_drive_0037_sync 0000000015
+2011_09_28 2011_09_28_drive_0037_sync 0000000016
+2011_09_28 2011_09_28_drive_0037_sync 0000000017
+2011_09_28 2011_09_28_drive_0037_sync 0000000018
+2011_09_28 2011_09_28_drive_0037_sync 0000000019
+2011_09_28 2011_09_28_drive_0037_sync 0000000020
+2011_09_28 2011_09_28_drive_0037_sync 0000000021
+2011_09_28 2011_09_28_drive_0037_sync 0000000022
+2011_09_28 2011_09_28_drive_0037_sync 0000000023
+2011_09_28 2011_09_28_drive_0037_sync 0000000024
+2011_09_28 2011_09_28_drive_0037_sync 0000000025
+2011_09_28 2011_09_28_drive_0037_sync 0000000026
+2011_09_28 2011_09_28_drive_0037_sync 0000000027
+2011_09_28 2011_09_28_drive_0037_sync 0000000028
+2011_09_28 2011_09_28_drive_0037_sync 0000000029
+2011_09_28 2011_09_28_drive_0038_sync 0000000062
+2011_09_28 2011_09_28_drive_0038_sync 0000000077
+2011_09_28 2011_09_28_drive_0038_sync 0000000078
+2011_09_28 2011_09_28_drive_0038_sync 0000000079
+2011_09_28 2011_09_28_drive_0038_sync 0000000080
+2011_09_28 2011_09_28_drive_0038_sync 0000000082
+2011_09_28 2011_09_28_drive_0038_sync 0000000086
+2011_09_28 2011_09_28_drive_0038_sync 0000000100
+2011_09_28 2011_09_28_drive_0038_sync 0000000101
+2011_09_28 2011_09_28_drive_0038_sync 0000000103
+2011_09_28 2011_09_28_drive_0038_sync 0000000104
+2011_09_28 2011_09_28_drive_0038_sync 0000000105
+2011_09_28 2011_09_28_drive_0038_sync 0000000106
+2011_09_28 2011_09_28_drive_0038_sync 0000000107
+2011_09_28 2011_09_28_drive_0038_sync 0000000108
+2011_09_28 2011_09_28_drive_0039_sync 0000000000
+2011_09_28 2011_09_28_drive_0039_sync 0000000001
+2011_09_28 2011_09_28_drive_0039_sync 0000000002
+2011_09_28 2011_09_28_drive_0039_sync 0000000003
+2011_09_28 2011_09_28_drive_0039_sync 0000000004
+2011_09_28 2011_09_28_drive_0039_sync 0000000005
+2011_09_28 2011_09_28_drive_0039_sync 0000000006
+2011_09_28 2011_09_28_drive_0039_sync 0000000007
+2011_09_28 2011_09_28_drive_0039_sync 0000000008
+2011_09_28 2011_09_28_drive_0039_sync 0000000009
+2011_09_28 2011_09_28_drive_0039_sync 0000000010
+2011_09_28 2011_09_28_drive_0039_sync 0000000011
+2011_09_28 2011_09_28_drive_0039_sync 0000000012
+2011_09_28 2011_09_28_drive_0039_sync 0000000013
+2011_09_28 2011_09_28_drive_0039_sync 0000000014
+2011_09_28 2011_09_28_drive_0039_sync 0000000015
+2011_09_28 2011_09_28_drive_0039_sync 0000000016
+2011_09_28 2011_09_28_drive_0039_sync 0000000017
+2011_09_28 2011_09_28_drive_0039_sync 0000000018
+2011_09_28 2011_09_28_drive_0039_sync 0000000019
+2011_09_28 2011_09_28_drive_0039_sync 0000000020
+2011_09_28 2011_09_28_drive_0039_sync 0000000021
+2011_09_28 2011_09_28_drive_0039_sync 0000000022
+2011_09_28 2011_09_28_drive_0039_sync 0000000023
+2011_09_28 2011_09_28_drive_0039_sync 0000000024
+2011_09_28 2011_09_28_drive_0039_sync 0000000025
+2011_09_28 2011_09_28_drive_0039_sync 0000000026
+2011_09_28 2011_09_28_drive_0039_sync 0000000027
+2011_09_28 2011_09_28_drive_0039_sync 0000000028
+2011_09_28 2011_09_28_drive_0039_sync 0000000029
+2011_09_28 2011_09_28_drive_0039_sync 0000000030
+2011_09_28 2011_09_28_drive_0039_sync 0000000031
+2011_09_28 2011_09_28_drive_0039_sync 0000000032
+2011_09_28 2011_09_28_drive_0039_sync 0000000033
+2011_09_28 2011_09_28_drive_0039_sync 0000000034
+2011_09_28 2011_09_28_drive_0039_sync 0000000035
+2011_09_28 2011_09_28_drive_0039_sync 0000000036
+2011_09_28 2011_09_28_drive_0039_sync 0000000037
+2011_09_28 2011_09_28_drive_0039_sync 0000000038
+2011_09_28 2011_09_28_drive_0039_sync 0000000039
+2011_09_28 2011_09_28_drive_0039_sync 0000000040
+2011_09_28 2011_09_28_drive_0039_sync 0000000041
+2011_09_28 2011_09_28_drive_0039_sync 0000000042
+2011_09_28 2011_09_28_drive_0039_sync 0000000043
+2011_09_28 2011_09_28_drive_0039_sync 0000000044
+2011_09_28 2011_09_28_drive_0039_sync 0000000045
+2011_09_28 2011_09_28_drive_0039_sync 0000000046
+2011_09_28 2011_09_28_drive_0039_sync 0000000047
+2011_09_28 2011_09_28_drive_0039_sync 0000000048
+2011_09_28 2011_09_28_drive_0039_sync 0000000049
+2011_09_28 2011_09_28_drive_0039_sync 0000000050
+2011_09_28 2011_09_28_drive_0039_sync 0000000051
+2011_09_28 2011_09_28_drive_0039_sync 0000000052
+2011_09_28 2011_09_28_drive_0039_sync 0000000053
+2011_09_28 2011_09_28_drive_0039_sync 0000000054
+2011_09_28 2011_09_28_drive_0039_sync 0000000055
+2011_09_28 2011_09_28_drive_0039_sync 0000000056
+2011_09_28 2011_09_28_drive_0039_sync 0000000057
+2011_09_28 2011_09_28_drive_0039_sync 0000000058
+2011_09_28 2011_09_28_drive_0039_sync 0000000059
+2011_09_28 2011_09_28_drive_0039_sync 0000000060
+2011_09_28 2011_09_28_drive_0039_sync 0000000061
+2011_09_28 2011_09_28_drive_0039_sync 0000000062
+2011_09_28 2011_09_28_drive_0039_sync 0000000063
+2011_09_28 2011_09_28_drive_0039_sync 0000000064
+2011_09_28 2011_09_28_drive_0039_sync 0000000065
+2011_09_28 2011_09_28_drive_0039_sync 0000000066
+2011_09_28 2011_09_28_drive_0039_sync 0000000067
+2011_09_28 2011_09_28_drive_0039_sync 0000000068
+2011_09_28 2011_09_28_drive_0039_sync 0000000069
+2011_09_28 2011_09_28_drive_0039_sync 0000000070
+2011_09_28 2011_09_28_drive_0039_sync 0000000071
+2011_09_28 2011_09_28_drive_0039_sync 0000000072
+2011_09_28 2011_09_28_drive_0039_sync 0000000073
+2011_09_28 2011_09_28_drive_0039_sync 0000000074
+2011_09_28 2011_09_28_drive_0039_sync 0000000075
+2011_09_28 2011_09_28_drive_0039_sync 0000000076
+2011_09_28 2011_09_28_drive_0039_sync 0000000077
+2011_09_28 2011_09_28_drive_0039_sync 0000000078
+2011_09_28 2011_09_28_drive_0039_sync 0000000079
+2011_09_28 2011_09_28_drive_0039_sync 0000000080
+2011_09_28 2011_09_28_drive_0039_sync 0000000081
+2011_09_28 2011_09_28_drive_0039_sync 0000000082
+2011_09_28 2011_09_28_drive_0039_sync 0000000083
+2011_09_28 2011_09_28_drive_0039_sync 0000000084
+2011_09_28 2011_09_28_drive_0039_sync 0000000085
+2011_09_28 2011_09_28_drive_0039_sync 0000000086
+2011_09_28 2011_09_28_drive_0039_sync 0000000087
+2011_09_28 2011_09_28_drive_0039_sync 0000000088
+2011_09_28 2011_09_28_drive_0039_sync 0000000089
+2011_09_28 2011_09_28_drive_0039_sync 0000000090
+2011_09_28 2011_09_28_drive_0039_sync 0000000091
+2011_09_28 2011_09_28_drive_0039_sync 0000000092
+2011_09_28 2011_09_28_drive_0039_sync 0000000093
+2011_09_28 2011_09_28_drive_0039_sync 0000000094
+2011_09_28 2011_09_28_drive_0039_sync 0000000095
+2011_09_28 2011_09_28_drive_0039_sync 0000000096
+2011_09_28 2011_09_28_drive_0039_sync 0000000097
+2011_09_28 2011_09_28_drive_0039_sync 0000000098
+2011_09_28 2011_09_28_drive_0039_sync 0000000099
+2011_09_28 2011_09_28_drive_0039_sync 0000000100
+2011_09_28 2011_09_28_drive_0039_sync 0000000101
+2011_09_28 2011_09_28_drive_0039_sync 0000000102
+2011_09_28 2011_09_28_drive_0039_sync 0000000103
+2011_09_28 2011_09_28_drive_0039_sync 0000000104
+2011_09_28 2011_09_28_drive_0039_sync 0000000105
+2011_09_28 2011_09_28_drive_0039_sync 0000000106
+2011_09_28 2011_09_28_drive_0039_sync 0000000107
+2011_09_28 2011_09_28_drive_0039_sync 0000000108
+2011_09_28 2011_09_28_drive_0039_sync 0000000109
+2011_09_28 2011_09_28_drive_0039_sync 0000000110
+2011_09_28 2011_09_28_drive_0039_sync 0000000111
+2011_09_28 2011_09_28_drive_0039_sync 0000000112
+2011_09_28 2011_09_28_drive_0039_sync 0000000113
+2011_09_28 2011_09_28_drive_0039_sync 0000000114
+2011_09_28 2011_09_28_drive_0039_sync 0000000115
+2011_09_28 2011_09_28_drive_0039_sync 0000000116
+2011_09_28 2011_09_28_drive_0039_sync 0000000117
+2011_09_28 2011_09_28_drive_0039_sync 0000000118
+2011_09_28 2011_09_28_drive_0039_sync 0000000119
+2011_09_28 2011_09_28_drive_0039_sync 0000000120
+2011_09_28 2011_09_28_drive_0039_sync 0000000121
+2011_09_28 2011_09_28_drive_0039_sync 0000000122
+2011_09_28 2011_09_28_drive_0039_sync 0000000123
+2011_09_28 2011_09_28_drive_0039_sync 0000000124
+2011_09_28 2011_09_28_drive_0039_sync 0000000125
+2011_09_28 2011_09_28_drive_0039_sync 0000000126
+2011_09_28 2011_09_28_drive_0039_sync 0000000127
+2011_09_28 2011_09_28_drive_0039_sync 0000000128
+2011_09_28 2011_09_28_drive_0039_sync 0000000129
+2011_09_28 2011_09_28_drive_0039_sync 0000000130
+2011_09_28 2011_09_28_drive_0039_sync 0000000131
+2011_09_28 2011_09_28_drive_0039_sync 0000000132
+2011_09_28 2011_09_28_drive_0039_sync 0000000133
+2011_09_28 2011_09_28_drive_0039_sync 0000000134
+2011_09_28 2011_09_28_drive_0039_sync 0000000135
+2011_09_28 2011_09_28_drive_0039_sync 0000000136
+2011_09_28 2011_09_28_drive_0039_sync 0000000137
+2011_09_28 2011_09_28_drive_0039_sync 0000000138
+2011_09_28 2011_09_28_drive_0039_sync 0000000139
+2011_09_28 2011_09_28_drive_0039_sync 0000000140
+2011_09_28 2011_09_28_drive_0039_sync 0000000141
+2011_09_28 2011_09_28_drive_0039_sync 0000000142
+2011_09_28 2011_09_28_drive_0039_sync 0000000143
+2011_09_28 2011_09_28_drive_0039_sync 0000000144
+2011_09_28 2011_09_28_drive_0039_sync 0000000145
+2011_09_28 2011_09_28_drive_0039_sync 0000000146
+2011_09_28 2011_09_28_drive_0039_sync 0000000147
+2011_09_28 2011_09_28_drive_0039_sync 0000000148
+2011_09_28 2011_09_28_drive_0039_sync 0000000149
+2011_09_28 2011_09_28_drive_0039_sync 0000000150
+2011_09_28 2011_09_28_drive_0039_sync 0000000151
+2011_09_28 2011_09_28_drive_0039_sync 0000000152
+2011_09_28 2011_09_28_drive_0039_sync 0000000153
+2011_09_28 2011_09_28_drive_0039_sync 0000000154
+2011_09_28 2011_09_28_drive_0039_sync 0000000155
+2011_09_28 2011_09_28_drive_0039_sync 0000000156
+2011_09_28 2011_09_28_drive_0039_sync 0000000157
+2011_09_28 2011_09_28_drive_0039_sync 0000000158
+2011_09_28 2011_09_28_drive_0039_sync 0000000159
+2011_09_28 2011_09_28_drive_0039_sync 0000000160
+2011_09_28 2011_09_28_drive_0039_sync 0000000161
+2011_09_28 2011_09_28_drive_0039_sync 0000000162
+2011_09_28 2011_09_28_drive_0039_sync 0000000163
+2011_09_28 2011_09_28_drive_0039_sync 0000000164
+2011_09_28 2011_09_28_drive_0039_sync 0000000165
+2011_09_28 2011_09_28_drive_0039_sync 0000000166
+2011_09_28 2011_09_28_drive_0039_sync 0000000167
+2011_09_28 2011_09_28_drive_0039_sync 0000000168
+2011_09_28 2011_09_28_drive_0039_sync 0000000169
+2011_09_28 2011_09_28_drive_0039_sync 0000000170
+2011_09_28 2011_09_28_drive_0039_sync 0000000171
+2011_09_28 2011_09_28_drive_0039_sync 0000000172
+2011_09_28 2011_09_28_drive_0039_sync 0000000173
+2011_09_28 2011_09_28_drive_0039_sync 0000000174
+2011_09_28 2011_09_28_drive_0039_sync 0000000175
+2011_09_28 2011_09_28_drive_0039_sync 0000000176
+2011_09_28 2011_09_28_drive_0039_sync 0000000177
+2011_09_28 2011_09_28_drive_0039_sync 0000000178
+2011_09_28 2011_09_28_drive_0039_sync 0000000179
+2011_09_28 2011_09_28_drive_0039_sync 0000000180
+2011_09_28 2011_09_28_drive_0039_sync 0000000181
+2011_09_28 2011_09_28_drive_0039_sync 0000000182
+2011_09_28 2011_09_28_drive_0039_sync 0000000183
+2011_09_28 2011_09_28_drive_0039_sync 0000000184
+2011_09_28 2011_09_28_drive_0039_sync 0000000185
+2011_09_28 2011_09_28_drive_0039_sync 0000000186
+2011_09_28 2011_09_28_drive_0039_sync 0000000187
+2011_09_28 2011_09_28_drive_0039_sync 0000000188
+2011_09_28 2011_09_28_drive_0039_sync 0000000189
+2011_09_28 2011_09_28_drive_0039_sync 0000000190
+2011_09_28 2011_09_28_drive_0039_sync 0000000191
+2011_09_28 2011_09_28_drive_0039_sync 0000000192
+2011_09_28 2011_09_28_drive_0039_sync 0000000193
+2011_09_28 2011_09_28_drive_0039_sync 0000000194
+2011_09_28 2011_09_28_drive_0039_sync 0000000195
+2011_09_28 2011_09_28_drive_0039_sync 0000000196
+2011_09_28 2011_09_28_drive_0039_sync 0000000197
+2011_09_28 2011_09_28_drive_0039_sync 0000000198
+2011_09_28 2011_09_28_drive_0039_sync 0000000199
+2011_09_28 2011_09_28_drive_0039_sync 0000000200
+2011_09_28 2011_09_28_drive_0039_sync 0000000201
+2011_09_28 2011_09_28_drive_0039_sync 0000000202
+2011_09_28 2011_09_28_drive_0039_sync 0000000203
+2011_09_28 2011_09_28_drive_0039_sync 0000000204
+2011_09_28 2011_09_28_drive_0039_sync 0000000205
+2011_09_28 2011_09_28_drive_0039_sync 0000000206
+2011_09_28 2011_09_28_drive_0039_sync 0000000207
+2011_09_28 2011_09_28_drive_0039_sync 0000000208
+2011_09_28 2011_09_28_drive_0039_sync 0000000209
+2011_09_28 2011_09_28_drive_0039_sync 0000000210
+2011_09_28 2011_09_28_drive_0039_sync 0000000211
+2011_09_28 2011_09_28_drive_0039_sync 0000000212
+2011_09_28 2011_09_28_drive_0039_sync 0000000213
+2011_09_28 2011_09_28_drive_0039_sync 0000000214
+2011_09_28 2011_09_28_drive_0039_sync 0000000215
+2011_09_28 2011_09_28_drive_0039_sync 0000000216
+2011_09_28 2011_09_28_drive_0039_sync 0000000217
+2011_09_28 2011_09_28_drive_0039_sync 0000000218
+2011_09_28 2011_09_28_drive_0039_sync 0000000219
+2011_09_28 2011_09_28_drive_0039_sync 0000000220
+2011_09_28 2011_09_28_drive_0039_sync 0000000221
+2011_09_28 2011_09_28_drive_0039_sync 0000000222
+2011_09_28 2011_09_28_drive_0039_sync 0000000223
+2011_09_28 2011_09_28_drive_0039_sync 0000000224
+2011_09_28 2011_09_28_drive_0039_sync 0000000225
+2011_09_28 2011_09_28_drive_0039_sync 0000000226
+2011_09_28 2011_09_28_drive_0039_sync 0000000227
+2011_09_28 2011_09_28_drive_0039_sync 0000000228
+2011_09_28 2011_09_28_drive_0039_sync 0000000229
+2011_09_28 2011_09_28_drive_0039_sync 0000000230
+2011_09_28 2011_09_28_drive_0039_sync 0000000231
+2011_09_28 2011_09_28_drive_0039_sync 0000000232
+2011_09_28 2011_09_28_drive_0039_sync 0000000233
+2011_09_28 2011_09_28_drive_0039_sync 0000000234
+2011_09_28 2011_09_28_drive_0039_sync 0000000235
+2011_09_28 2011_09_28_drive_0039_sync 0000000236
+2011_09_28 2011_09_28_drive_0039_sync 0000000237
+2011_09_28 2011_09_28_drive_0039_sync 0000000238
+2011_09_28 2011_09_28_drive_0039_sync 0000000239
+2011_09_28 2011_09_28_drive_0039_sync 0000000240
+2011_09_28 2011_09_28_drive_0039_sync 0000000241
+2011_09_28 2011_09_28_drive_0039_sync 0000000242
+2011_09_28 2011_09_28_drive_0039_sync 0000000243
+2011_09_28 2011_09_28_drive_0039_sync 0000000244
+2011_09_28 2011_09_28_drive_0039_sync 0000000245
+2011_09_28 2011_09_28_drive_0039_sync 0000000246
+2011_09_28 2011_09_28_drive_0039_sync 0000000247
+2011_09_28 2011_09_28_drive_0039_sync 0000000248
+2011_09_28 2011_09_28_drive_0039_sync 0000000249
+2011_09_28 2011_09_28_drive_0039_sync 0000000250
+2011_09_28 2011_09_28_drive_0039_sync 0000000251
+2011_09_28 2011_09_28_drive_0039_sync 0000000252
+2011_09_28 2011_09_28_drive_0039_sync 0000000253
+2011_09_28 2011_09_28_drive_0039_sync 0000000254
+2011_09_28 2011_09_28_drive_0039_sync 0000000255
+2011_09_28 2011_09_28_drive_0039_sync 0000000256
+2011_09_28 2011_09_28_drive_0039_sync 0000000257
+2011_09_28 2011_09_28_drive_0039_sync 0000000258
+2011_09_28 2011_09_28_drive_0039_sync 0000000259
+2011_09_28 2011_09_28_drive_0039_sync 0000000260
+2011_09_28 2011_09_28_drive_0039_sync 0000000261
+2011_09_28 2011_09_28_drive_0039_sync 0000000262
+2011_09_28 2011_09_28_drive_0039_sync 0000000263
+2011_09_28 2011_09_28_drive_0039_sync 0000000264
+2011_09_28 2011_09_28_drive_0039_sync 0000000265
+2011_09_28 2011_09_28_drive_0039_sync 0000000266
+2011_09_28 2011_09_28_drive_0039_sync 0000000267
+2011_09_28 2011_09_28_drive_0039_sync 0000000268
+2011_09_28 2011_09_28_drive_0039_sync 0000000269
+2011_09_28 2011_09_28_drive_0039_sync 0000000270
+2011_09_28 2011_09_28_drive_0039_sync 0000000271
+2011_09_28 2011_09_28_drive_0039_sync 0000000272
+2011_09_28 2011_09_28_drive_0039_sync 0000000273
+2011_09_28 2011_09_28_drive_0039_sync 0000000274
+2011_09_28 2011_09_28_drive_0039_sync 0000000275
+2011_09_28 2011_09_28_drive_0039_sync 0000000276
+2011_09_28 2011_09_28_drive_0039_sync 0000000277
+2011_09_28 2011_09_28_drive_0039_sync 0000000278
+2011_09_28 2011_09_28_drive_0039_sync 0000000279
+2011_09_28 2011_09_28_drive_0039_sync 0000000280
+2011_09_28 2011_09_28_drive_0039_sync 0000000281
+2011_09_28 2011_09_28_drive_0039_sync 0000000282
+2011_09_28 2011_09_28_drive_0039_sync 0000000283
+2011_09_28 2011_09_28_drive_0039_sync 0000000289
+2011_09_28 2011_09_28_drive_0039_sync 0000000290
+2011_09_28 2011_09_28_drive_0039_sync 0000000295
+2011_09_28 2011_09_28_drive_0039_sync 0000000296
+2011_09_28 2011_09_28_drive_0039_sync 0000000297
+2011_09_28 2011_09_28_drive_0039_sync 0000000298
+2011_09_28 2011_09_28_drive_0039_sync 0000000299
+2011_09_28 2011_09_28_drive_0039_sync 0000000300
+2011_09_28 2011_09_28_drive_0039_sync 0000000301
+2011_09_28 2011_09_28_drive_0039_sync 0000000302
+2011_09_28 2011_09_28_drive_0039_sync 0000000303
+2011_09_28 2011_09_28_drive_0039_sync 0000000304
+2011_09_28 2011_09_28_drive_0039_sync 0000000305
+2011_09_28 2011_09_28_drive_0039_sync 0000000306
+2011_09_28 2011_09_28_drive_0039_sync 0000000307
+2011_09_28 2011_09_28_drive_0039_sync 0000000308
+2011_09_28 2011_09_28_drive_0039_sync 0000000309
+2011_09_28 2011_09_28_drive_0039_sync 0000000310
+2011_09_28 2011_09_28_drive_0039_sync 0000000311
+2011_09_28 2011_09_28_drive_0039_sync 0000000312
+2011_09_28 2011_09_28_drive_0039_sync 0000000313
+2011_09_28 2011_09_28_drive_0039_sync 0000000314
+2011_09_28 2011_09_28_drive_0039_sync 0000000315
+2011_09_28 2011_09_28_drive_0039_sync 0000000316
+2011_09_28 2011_09_28_drive_0039_sync 0000000317
+2011_09_28 2011_09_28_drive_0039_sync 0000000318
+2011_09_28 2011_09_28_drive_0039_sync 0000000319
+2011_09_28 2011_09_28_drive_0039_sync 0000000320
+2011_09_28 2011_09_28_drive_0039_sync 0000000321
+2011_09_28 2011_09_28_drive_0039_sync 0000000322
+2011_09_28 2011_09_28_drive_0039_sync 0000000323
+2011_09_28 2011_09_28_drive_0039_sync 0000000324
+2011_09_28 2011_09_28_drive_0039_sync 0000000325
+2011_09_28 2011_09_28_drive_0039_sync 0000000326
+2011_09_28 2011_09_28_drive_0039_sync 0000000327
+2011_09_28 2011_09_28_drive_0039_sync 0000000328
+2011_09_28 2011_09_28_drive_0039_sync 0000000329
+2011_09_28 2011_09_28_drive_0039_sync 0000000330
+2011_09_28 2011_09_28_drive_0039_sync 0000000331
+2011_09_28 2011_09_28_drive_0039_sync 0000000332
+2011_09_28 2011_09_28_drive_0039_sync 0000000333
+2011_09_28 2011_09_28_drive_0039_sync 0000000334
+2011_09_28 2011_09_28_drive_0039_sync 0000000335
+2011_09_28 2011_09_28_drive_0039_sync 0000000336
+2011_09_28 2011_09_28_drive_0039_sync 0000000337
+2011_09_28 2011_09_28_drive_0039_sync 0000000338
+2011_09_28 2011_09_28_drive_0039_sync 0000000339
+2011_09_28 2011_09_28_drive_0039_sync 0000000340
+2011_09_28 2011_09_28_drive_0039_sync 0000000341
+2011_09_28 2011_09_28_drive_0039_sync 0000000342
+2011_09_28 2011_09_28_drive_0039_sync 0000000343
+2011_09_28 2011_09_28_drive_0039_sync 0000000344
+2011_09_28 2011_09_28_drive_0039_sync 0000000345
+2011_09_28 2011_09_28_drive_0039_sync 0000000346
+2011_09_28 2011_09_28_drive_0039_sync 0000000347
+2011_09_28 2011_09_28_drive_0039_sync 0000000348
+2011_09_28 2011_09_28_drive_0039_sync 0000000349
+2011_09_28 2011_09_28_drive_0039_sync 0000000350
+2011_09_28 2011_09_28_drive_0043_sync 0000000000
+2011_09_28 2011_09_28_drive_0043_sync 0000000001
+2011_09_28 2011_09_28_drive_0043_sync 0000000002
+2011_09_28 2011_09_28_drive_0043_sync 0000000003
+2011_09_28 2011_09_28_drive_0043_sync 0000000004
+2011_09_28 2011_09_28_drive_0043_sync 0000000005
+2011_09_28 2011_09_28_drive_0043_sync 0000000006
+2011_09_28 2011_09_28_drive_0043_sync 0000000007
+2011_09_28 2011_09_28_drive_0043_sync 0000000008
+2011_09_28 2011_09_28_drive_0043_sync 0000000009
+2011_09_28 2011_09_28_drive_0043_sync 0000000010
+2011_09_28 2011_09_28_drive_0043_sync 0000000011
+2011_09_28 2011_09_28_drive_0043_sync 0000000012
+2011_09_28 2011_09_28_drive_0043_sync 0000000013
+2011_09_28 2011_09_28_drive_0043_sync 0000000014
+2011_09_28 2011_09_28_drive_0043_sync 0000000015
+2011_09_28 2011_09_28_drive_0043_sync 0000000016
+2011_09_28 2011_09_28_drive_0043_sync 0000000017
+2011_09_28 2011_09_28_drive_0043_sync 0000000018
+2011_09_28 2011_09_28_drive_0043_sync 0000000019
+2011_09_28 2011_09_28_drive_0043_sync 0000000020
+2011_09_28 2011_09_28_drive_0043_sync 0000000021
+2011_09_28 2011_09_28_drive_0043_sync 0000000022
+2011_09_28 2011_09_28_drive_0043_sync 0000000023
+2011_09_28 2011_09_28_drive_0043_sync 0000000024
+2011_09_28 2011_09_28_drive_0043_sync 0000000025
+2011_09_28 2011_09_28_drive_0043_sync 0000000026
+2011_09_28 2011_09_28_drive_0043_sync 0000000027
+2011_09_28 2011_09_28_drive_0043_sync 0000000028
+2011_09_28 2011_09_28_drive_0043_sync 0000000029
+2011_09_28 2011_09_28_drive_0043_sync 0000000030
+2011_09_28 2011_09_28_drive_0043_sync 0000000031
+2011_09_28 2011_09_28_drive_0043_sync 0000000032
+2011_09_28 2011_09_28_drive_0043_sync 0000000033
+2011_09_28 2011_09_28_drive_0043_sync 0000000034
+2011_09_28 2011_09_28_drive_0043_sync 0000000035
+2011_09_28 2011_09_28_drive_0043_sync 0000000037
+2011_09_28 2011_09_28_drive_0043_sync 0000000038
+2011_09_28 2011_09_28_drive_0043_sync 0000000039
+2011_09_28 2011_09_28_drive_0043_sync 0000000040
+2011_09_28 2011_09_28_drive_0043_sync 0000000041
+2011_09_28 2011_09_28_drive_0043_sync 0000000042
+2011_09_28 2011_09_28_drive_0043_sync 0000000043
+2011_09_28 2011_09_28_drive_0043_sync 0000000044
+2011_09_28 2011_09_28_drive_0043_sync 0000000045
+2011_09_28 2011_09_28_drive_0043_sync 0000000046
+2011_09_28 2011_09_28_drive_0043_sync 0000000047
+2011_09_28 2011_09_28_drive_0043_sync 0000000048
+2011_09_28 2011_09_28_drive_0043_sync 0000000049
+2011_09_28 2011_09_28_drive_0043_sync 0000000050
+2011_09_28 2011_09_28_drive_0043_sync 0000000051
+2011_09_28 2011_09_28_drive_0043_sync 0000000052
+2011_09_28 2011_09_28_drive_0043_sync 0000000053
+2011_09_28 2011_09_28_drive_0043_sync 0000000054
+2011_09_28 2011_09_28_drive_0043_sync 0000000055
+2011_09_28 2011_09_28_drive_0043_sync 0000000056
+2011_09_28 2011_09_28_drive_0043_sync 0000000057
+2011_09_28 2011_09_28_drive_0043_sync 0000000060
+2011_09_28 2011_09_28_drive_0043_sync 0000000061
+2011_09_28 2011_09_28_drive_0043_sync 0000000062
+2011_09_28 2011_09_28_drive_0043_sync 0000000063
+2011_09_28 2011_09_28_drive_0043_sync 0000000064
+2011_09_28 2011_09_28_drive_0043_sync 0000000065
+2011_09_28 2011_09_28_drive_0043_sync 0000000066
+2011_09_28 2011_09_28_drive_0043_sync 0000000067
+2011_09_28 2011_09_28_drive_0043_sync 0000000068
+2011_09_28 2011_09_28_drive_0043_sync 0000000069
+2011_09_28 2011_09_28_drive_0043_sync 0000000070
+2011_09_28 2011_09_28_drive_0043_sync 0000000071
+2011_09_28 2011_09_28_drive_0043_sync 0000000072
+2011_09_28 2011_09_28_drive_0043_sync 0000000073
+2011_09_28 2011_09_28_drive_0043_sync 0000000074
+2011_09_28 2011_09_28_drive_0043_sync 0000000075
+2011_09_28 2011_09_28_drive_0043_sync 0000000076
+2011_09_28 2011_09_28_drive_0043_sync 0000000077
+2011_09_28 2011_09_28_drive_0043_sync 0000000078
+2011_09_28 2011_09_28_drive_0043_sync 0000000079
+2011_09_28 2011_09_28_drive_0043_sync 0000000080
+2011_09_28 2011_09_28_drive_0043_sync 0000000081
+2011_09_28 2011_09_28_drive_0043_sync 0000000082
+2011_09_28 2011_09_28_drive_0043_sync 0000000083
+2011_09_28 2011_09_28_drive_0043_sync 0000000084
+2011_09_28 2011_09_28_drive_0043_sync 0000000085
+2011_09_28 2011_09_28_drive_0043_sync 0000000086
+2011_09_28 2011_09_28_drive_0043_sync 0000000087
+2011_09_28 2011_09_28_drive_0043_sync 0000000088
+2011_09_28 2011_09_28_drive_0043_sync 0000000089
+2011_09_28 2011_09_28_drive_0043_sync 0000000090
+2011_09_28 2011_09_28_drive_0043_sync 0000000091
+2011_09_28 2011_09_28_drive_0043_sync 0000000092
+2011_09_28 2011_09_28_drive_0043_sync 0000000093
+2011_09_28 2011_09_28_drive_0043_sync 0000000094
+2011_09_28 2011_09_28_drive_0043_sync 0000000095
+2011_09_28 2011_09_28_drive_0043_sync 0000000096
+2011_09_28 2011_09_28_drive_0043_sync 0000000097
+2011_09_28 2011_09_28_drive_0043_sync 0000000098
+2011_09_28 2011_09_28_drive_0043_sync 0000000099
+2011_09_28 2011_09_28_drive_0043_sync 0000000100
+2011_09_28 2011_09_28_drive_0043_sync 0000000101
+2011_09_28 2011_09_28_drive_0043_sync 0000000102
+2011_09_28 2011_09_28_drive_0043_sync 0000000103
+2011_09_28 2011_09_28_drive_0043_sync 0000000104
+2011_09_28 2011_09_28_drive_0043_sync 0000000105
+2011_09_28 2011_09_28_drive_0043_sync 0000000106
+2011_09_28 2011_09_28_drive_0043_sync 0000000107
+2011_09_28 2011_09_28_drive_0043_sync 0000000108
+2011_09_28 2011_09_28_drive_0043_sync 0000000109
+2011_09_28 2011_09_28_drive_0043_sync 0000000110
+2011_09_28 2011_09_28_drive_0043_sync 0000000111
+2011_09_28 2011_09_28_drive_0043_sync 0000000112
+2011_09_28 2011_09_28_drive_0043_sync 0000000113
+2011_09_28 2011_09_28_drive_0043_sync 0000000114
+2011_09_28 2011_09_28_drive_0043_sync 0000000115
+2011_09_28 2011_09_28_drive_0043_sync 0000000116
+2011_09_28 2011_09_28_drive_0043_sync 0000000117
+2011_09_28 2011_09_28_drive_0043_sync 0000000118
+2011_09_28 2011_09_28_drive_0043_sync 0000000119
+2011_09_28 2011_09_28_drive_0043_sync 0000000120
+2011_09_28 2011_09_28_drive_0043_sync 0000000121
+2011_09_28 2011_09_28_drive_0043_sync 0000000122
+2011_09_28 2011_09_28_drive_0043_sync 0000000123
+2011_09_28 2011_09_28_drive_0043_sync 0000000124
+2011_09_28 2011_09_28_drive_0043_sync 0000000125
+2011_09_28 2011_09_28_drive_0043_sync 0000000126
+2011_09_28 2011_09_28_drive_0043_sync 0000000127
+2011_09_28 2011_09_28_drive_0043_sync 0000000128
+2011_09_28 2011_09_28_drive_0043_sync 0000000129
+2011_09_28 2011_09_28_drive_0043_sync 0000000130
+2011_09_28 2011_09_28_drive_0043_sync 0000000131
+2011_09_28 2011_09_28_drive_0043_sync 0000000132
+2011_09_28 2011_09_28_drive_0043_sync 0000000133
+2011_09_28 2011_09_28_drive_0043_sync 0000000134
+2011_09_28 2011_09_28_drive_0043_sync 0000000135
+2011_09_28 2011_09_28_drive_0043_sync 0000000136
+2011_09_28 2011_09_28_drive_0043_sync 0000000137
+2011_09_28 2011_09_28_drive_0043_sync 0000000138
+2011_09_28 2011_09_28_drive_0043_sync 0000000139
+2011_09_28 2011_09_28_drive_0043_sync 0000000140
+2011_09_28 2011_09_28_drive_0043_sync 0000000141
+2011_09_28 2011_09_28_drive_0043_sync 0000000142
+2011_09_28 2011_09_28_drive_0043_sync 0000000143
+2011_09_28 2011_09_28_drive_0053_sync 0000000000
+2011_09_28 2011_09_28_drive_0053_sync 0000000001
+2011_09_28 2011_09_28_drive_0053_sync 0000000002
+2011_09_28 2011_09_28_drive_0053_sync 0000000003
+2011_09_28 2011_09_28_drive_0053_sync 0000000004
+2011_09_28 2011_09_28_drive_0053_sync 0000000005
+2011_09_28 2011_09_28_drive_0053_sync 0000000006
+2011_09_28 2011_09_28_drive_0053_sync 0000000007
+2011_09_28 2011_09_28_drive_0053_sync 0000000008
+2011_09_28 2011_09_28_drive_0053_sync 0000000009
+2011_09_28 2011_09_28_drive_0053_sync 0000000010
+2011_09_28 2011_09_28_drive_0053_sync 0000000011
+2011_09_28 2011_09_28_drive_0053_sync 0000000012
+2011_09_28 2011_09_28_drive_0053_sync 0000000013
+2011_09_28 2011_09_28_drive_0053_sync 0000000014
+2011_09_28 2011_09_28_drive_0053_sync 0000000015
+2011_09_28 2011_09_28_drive_0053_sync 0000000016
+2011_09_28 2011_09_28_drive_0053_sync 0000000017
+2011_09_28 2011_09_28_drive_0053_sync 0000000018
+2011_09_28 2011_09_28_drive_0053_sync 0000000019
+2011_09_28 2011_09_28_drive_0053_sync 0000000020
+2011_09_28 2011_09_28_drive_0053_sync 0000000021
+2011_09_28 2011_09_28_drive_0053_sync 0000000022
+2011_09_28 2011_09_28_drive_0053_sync 0000000023
+2011_09_28 2011_09_28_drive_0053_sync 0000000024
+2011_09_28 2011_09_28_drive_0053_sync 0000000025
+2011_09_28 2011_09_28_drive_0053_sync 0000000026
+2011_09_28 2011_09_28_drive_0053_sync 0000000027
+2011_09_28 2011_09_28_drive_0053_sync 0000000028
+2011_09_28 2011_09_28_drive_0053_sync 0000000029
+2011_09_28 2011_09_28_drive_0053_sync 0000000030
+2011_09_28 2011_09_28_drive_0053_sync 0000000031
+2011_09_28 2011_09_28_drive_0053_sync 0000000032
+2011_09_28 2011_09_28_drive_0053_sync 0000000033
+2011_09_28 2011_09_28_drive_0053_sync 0000000034
+2011_09_28 2011_09_28_drive_0053_sync 0000000035
+2011_09_28 2011_09_28_drive_0053_sync 0000000036
+2011_09_28 2011_09_28_drive_0053_sync 0000000037
+2011_09_28 2011_09_28_drive_0053_sync 0000000038
+2011_09_28 2011_09_28_drive_0053_sync 0000000039
+2011_09_28 2011_09_28_drive_0053_sync 0000000040
+2011_09_28 2011_09_28_drive_0053_sync 0000000041
+2011_09_28 2011_09_28_drive_0053_sync 0000000042
+2011_09_28 2011_09_28_drive_0053_sync 0000000043
+2011_09_28 2011_09_28_drive_0053_sync 0000000044
+2011_09_28 2011_09_28_drive_0053_sync 0000000045
+2011_09_28 2011_09_28_drive_0053_sync 0000000046
+2011_09_28 2011_09_28_drive_0053_sync 0000000047
+2011_09_28 2011_09_28_drive_0053_sync 0000000048
+2011_09_28 2011_09_28_drive_0053_sync 0000000049
+2011_09_28 2011_09_28_drive_0053_sync 0000000050
+2011_09_28 2011_09_28_drive_0053_sync 0000000051
+2011_09_28 2011_09_28_drive_0053_sync 0000000052
+2011_09_28 2011_09_28_drive_0053_sync 0000000053
+2011_09_28 2011_09_28_drive_0053_sync 0000000054
+2011_09_28 2011_09_28_drive_0053_sync 0000000055
+2011_09_28 2011_09_28_drive_0053_sync 0000000056
+2011_09_28 2011_09_28_drive_0053_sync 0000000057
+2011_09_28 2011_09_28_drive_0053_sync 0000000058
+2011_09_28 2011_09_28_drive_0053_sync 0000000059
+2011_09_28 2011_09_28_drive_0053_sync 0000000060
+2011_09_28 2011_09_28_drive_0053_sync 0000000061
+2011_09_28 2011_09_28_drive_0053_sync 0000000062
+2011_09_28 2011_09_28_drive_0053_sync 0000000063
+2011_09_28 2011_09_28_drive_0053_sync 0000000064
+2011_09_28 2011_09_28_drive_0053_sync 0000000065
+2011_09_28 2011_09_28_drive_0053_sync 0000000066
+2011_09_28 2011_09_28_drive_0054_sync 0000000000
+2011_09_28 2011_09_28_drive_0054_sync 0000000001
+2011_09_28 2011_09_28_drive_0054_sync 0000000002
+2011_09_28 2011_09_28_drive_0054_sync 0000000003
+2011_09_28 2011_09_28_drive_0054_sync 0000000004
+2011_09_28 2011_09_28_drive_0054_sync 0000000005
+2011_09_28 2011_09_28_drive_0054_sync 0000000006
+2011_09_28 2011_09_28_drive_0054_sync 0000000007
+2011_09_28 2011_09_28_drive_0054_sync 0000000008
+2011_09_28 2011_09_28_drive_0054_sync 0000000009
+2011_09_28 2011_09_28_drive_0054_sync 0000000010
+2011_09_28 2011_09_28_drive_0054_sync 0000000011
+2011_09_28 2011_09_28_drive_0054_sync 0000000012
+2011_09_28 2011_09_28_drive_0054_sync 0000000013
+2011_09_28 2011_09_28_drive_0054_sync 0000000014
+2011_09_28 2011_09_28_drive_0054_sync 0000000015
+2011_09_28 2011_09_28_drive_0054_sync 0000000016
+2011_09_28 2011_09_28_drive_0054_sync 0000000017
+2011_09_28 2011_09_28_drive_0054_sync 0000000018
+2011_09_28 2011_09_28_drive_0054_sync 0000000019
+2011_09_28 2011_09_28_drive_0054_sync 0000000020
+2011_09_28 2011_09_28_drive_0054_sync 0000000021
+2011_09_28 2011_09_28_drive_0054_sync 0000000022
+2011_09_28 2011_09_28_drive_0054_sync 0000000023
+2011_09_28 2011_09_28_drive_0054_sync 0000000024
+2011_09_28 2011_09_28_drive_0054_sync 0000000025
+2011_09_28 2011_09_28_drive_0054_sync 0000000026
+2011_09_28 2011_09_28_drive_0054_sync 0000000027
+2011_09_28 2011_09_28_drive_0054_sync 0000000028
+2011_09_28 2011_09_28_drive_0054_sync 0000000029
+2011_09_28 2011_09_28_drive_0054_sync 0000000030
+2011_09_28 2011_09_28_drive_0054_sync 0000000031
+2011_09_28 2011_09_28_drive_0054_sync 0000000032
+2011_09_28 2011_09_28_drive_0054_sync 0000000033
+2011_09_28 2011_09_28_drive_0054_sync 0000000034
+2011_09_28 2011_09_28_drive_0054_sync 0000000035
+2011_09_28 2011_09_28_drive_0054_sync 0000000036
+2011_09_28 2011_09_28_drive_0054_sync 0000000037
+2011_09_28 2011_09_28_drive_0054_sync 0000000038
+2011_09_28 2011_09_28_drive_0054_sync 0000000039
+2011_09_28 2011_09_28_drive_0054_sync 0000000040
+2011_09_28 2011_09_28_drive_0054_sync 0000000041
+2011_09_28 2011_09_28_drive_0054_sync 0000000042
+2011_09_28 2011_09_28_drive_0054_sync 0000000043
+2011_09_28 2011_09_28_drive_0057_sync 0000000000
+2011_09_28 2011_09_28_drive_0057_sync 0000000001
+2011_09_28 2011_09_28_drive_0057_sync 0000000002
+2011_09_28 2011_09_28_drive_0057_sync 0000000003
+2011_09_28 2011_09_28_drive_0057_sync 0000000004
+2011_09_28 2011_09_28_drive_0057_sync 0000000005
+2011_09_28 2011_09_28_drive_0057_sync 0000000006
+2011_09_28 2011_09_28_drive_0057_sync 0000000007
+2011_09_28 2011_09_28_drive_0057_sync 0000000008
+2011_09_28 2011_09_28_drive_0057_sync 0000000009
+2011_09_28 2011_09_28_drive_0057_sync 0000000010
+2011_09_28 2011_09_28_drive_0057_sync 0000000011
+2011_09_28 2011_09_28_drive_0057_sync 0000000012
+2011_09_28 2011_09_28_drive_0057_sync 0000000013
+2011_09_28 2011_09_28_drive_0057_sync 0000000014
+2011_09_28 2011_09_28_drive_0057_sync 0000000015
+2011_09_28 2011_09_28_drive_0057_sync 0000000016
+2011_09_28 2011_09_28_drive_0057_sync 0000000017
+2011_09_28 2011_09_28_drive_0057_sync 0000000018
+2011_09_28 2011_09_28_drive_0057_sync 0000000019
+2011_09_28 2011_09_28_drive_0057_sync 0000000020
+2011_09_28 2011_09_28_drive_0057_sync 0000000021
+2011_09_28 2011_09_28_drive_0057_sync 0000000022
+2011_09_28 2011_09_28_drive_0057_sync 0000000023
+2011_09_28 2011_09_28_drive_0057_sync 0000000024
+2011_09_28 2011_09_28_drive_0057_sync 0000000025
+2011_09_28 2011_09_28_drive_0057_sync 0000000026
+2011_09_28 2011_09_28_drive_0057_sync 0000000027
+2011_09_28 2011_09_28_drive_0057_sync 0000000028
+2011_09_28 2011_09_28_drive_0057_sync 0000000029
+2011_09_28 2011_09_28_drive_0057_sync 0000000030
+2011_09_28 2011_09_28_drive_0057_sync 0000000031
+2011_09_28 2011_09_28_drive_0057_sync 0000000032
+2011_09_28 2011_09_28_drive_0057_sync 0000000033
+2011_09_28 2011_09_28_drive_0057_sync 0000000034
+2011_09_28 2011_09_28_drive_0057_sync 0000000035
+2011_09_28 2011_09_28_drive_0057_sync 0000000036
+2011_09_28 2011_09_28_drive_0057_sync 0000000037
+2011_09_28 2011_09_28_drive_0057_sync 0000000038
+2011_09_28 2011_09_28_drive_0057_sync 0000000039
+2011_09_28 2011_09_28_drive_0057_sync 0000000040
+2011_09_28 2011_09_28_drive_0057_sync 0000000041
+2011_09_28 2011_09_28_drive_0057_sync 0000000042
+2011_09_28 2011_09_28_drive_0057_sync 0000000043
+2011_09_28 2011_09_28_drive_0057_sync 0000000044
+2011_09_28 2011_09_28_drive_0057_sync 0000000045
+2011_09_28 2011_09_28_drive_0057_sync 0000000046
+2011_09_28 2011_09_28_drive_0057_sync 0000000047
+2011_09_28 2011_09_28_drive_0057_sync 0000000048
+2011_09_28 2011_09_28_drive_0057_sync 0000000049
+2011_09_28 2011_09_28_drive_0057_sync 0000000050
+2011_09_28 2011_09_28_drive_0057_sync 0000000051
+2011_09_28 2011_09_28_drive_0057_sync 0000000052
+2011_09_28 2011_09_28_drive_0057_sync 0000000053
+2011_09_28 2011_09_28_drive_0057_sync 0000000054
+2011_09_28 2011_09_28_drive_0057_sync 0000000055
+2011_09_28 2011_09_28_drive_0057_sync 0000000056
+2011_09_28 2011_09_28_drive_0057_sync 0000000057
+2011_09_28 2011_09_28_drive_0057_sync 0000000058
+2011_09_28 2011_09_28_drive_0057_sync 0000000059
+2011_09_28 2011_09_28_drive_0057_sync 0000000060
+2011_09_28 2011_09_28_drive_0057_sync 0000000061
+2011_09_28 2011_09_28_drive_0057_sync 0000000062
+2011_09_28 2011_09_28_drive_0057_sync 0000000063
+2011_09_28 2011_09_28_drive_0057_sync 0000000064
+2011_09_28 2011_09_28_drive_0057_sync 0000000065
+2011_09_28 2011_09_28_drive_0057_sync 0000000066
+2011_09_28 2011_09_28_drive_0057_sync 0000000067
+2011_09_28 2011_09_28_drive_0057_sync 0000000068
+2011_09_28 2011_09_28_drive_0057_sync 0000000069
+2011_09_28 2011_09_28_drive_0057_sync 0000000070
+2011_09_28 2011_09_28_drive_0057_sync 0000000071
+2011_09_28 2011_09_28_drive_0057_sync 0000000072
+2011_09_28 2011_09_28_drive_0065_sync 0000000000
+2011_09_28 2011_09_28_drive_0065_sync 0000000001
+2011_09_28 2011_09_28_drive_0065_sync 0000000002
+2011_09_28 2011_09_28_drive_0065_sync 0000000003
+2011_09_28 2011_09_28_drive_0065_sync 0000000004
+2011_09_28 2011_09_28_drive_0065_sync 0000000005
+2011_09_28 2011_09_28_drive_0065_sync 0000000006
+2011_09_28 2011_09_28_drive_0065_sync 0000000007
+2011_09_28 2011_09_28_drive_0065_sync 0000000008
+2011_09_28 2011_09_28_drive_0065_sync 0000000009
+2011_09_28 2011_09_28_drive_0065_sync 0000000010
+2011_09_28 2011_09_28_drive_0065_sync 0000000011
+2011_09_28 2011_09_28_drive_0065_sync 0000000012
+2011_09_28 2011_09_28_drive_0065_sync 0000000013
+2011_09_28 2011_09_28_drive_0065_sync 0000000014
+2011_09_28 2011_09_28_drive_0065_sync 0000000015
+2011_09_28 2011_09_28_drive_0065_sync 0000000016
+2011_09_28 2011_09_28_drive_0065_sync 0000000017
+2011_09_28 2011_09_28_drive_0065_sync 0000000018
+2011_09_28 2011_09_28_drive_0065_sync 0000000019
+2011_09_28 2011_09_28_drive_0065_sync 0000000020
+2011_09_28 2011_09_28_drive_0065_sync 0000000021
+2011_09_28 2011_09_28_drive_0065_sync 0000000022
+2011_09_28 2011_09_28_drive_0065_sync 0000000023
+2011_09_28 2011_09_28_drive_0065_sync 0000000024
+2011_09_28 2011_09_28_drive_0065_sync 0000000025
+2011_09_28 2011_09_28_drive_0065_sync 0000000026
+2011_09_28 2011_09_28_drive_0065_sync 0000000027
+2011_09_28 2011_09_28_drive_0065_sync 0000000028
+2011_09_28 2011_09_28_drive_0065_sync 0000000029
+2011_09_28 2011_09_28_drive_0065_sync 0000000030
+2011_09_28 2011_09_28_drive_0065_sync 0000000031
+2011_09_28 2011_09_28_drive_0065_sync 0000000032
+2011_09_28 2011_09_28_drive_0065_sync 0000000033
+2011_09_28 2011_09_28_drive_0065_sync 0000000034
+2011_09_28 2011_09_28_drive_0065_sync 0000000035
+2011_09_28 2011_09_28_drive_0065_sync 0000000036
+2011_09_28 2011_09_28_drive_0065_sync 0000000037
+2011_09_28 2011_09_28_drive_0066_sync 0000000000
+2011_09_28 2011_09_28_drive_0066_sync 0000000001
+2011_09_28 2011_09_28_drive_0066_sync 0000000002
+2011_09_28 2011_09_28_drive_0066_sync 0000000003
+2011_09_28 2011_09_28_drive_0066_sync 0000000004
+2011_09_28 2011_09_28_drive_0066_sync 0000000005
+2011_09_28 2011_09_28_drive_0066_sync 0000000006
+2011_09_28 2011_09_28_drive_0066_sync 0000000007
+2011_09_28 2011_09_28_drive_0066_sync 0000000008
+2011_09_28 2011_09_28_drive_0066_sync 0000000009
+2011_09_28 2011_09_28_drive_0066_sync 0000000010
+2011_09_28 2011_09_28_drive_0066_sync 0000000011
+2011_09_28 2011_09_28_drive_0066_sync 0000000012
+2011_09_28 2011_09_28_drive_0066_sync 0000000013
+2011_09_28 2011_09_28_drive_0066_sync 0000000014
+2011_09_28 2011_09_28_drive_0066_sync 0000000015
+2011_09_28 2011_09_28_drive_0066_sync 0000000016
+2011_09_28 2011_09_28_drive_0066_sync 0000000017
+2011_09_28 2011_09_28_drive_0066_sync 0000000018
+2011_09_28 2011_09_28_drive_0066_sync 0000000019
+2011_09_28 2011_09_28_drive_0066_sync 0000000020
+2011_09_28 2011_09_28_drive_0066_sync 0000000021
+2011_09_28 2011_09_28_drive_0066_sync 0000000022
+2011_09_28 2011_09_28_drive_0066_sync 0000000023
+2011_09_28 2011_09_28_drive_0066_sync 0000000024
+2011_09_28 2011_09_28_drive_0066_sync 0000000025
+2011_09_28 2011_09_28_drive_0066_sync 0000000026
+2011_09_28 2011_09_28_drive_0066_sync 0000000027
+2011_09_28 2011_09_28_drive_0068_sync 0000000000
+2011_09_28 2011_09_28_drive_0068_sync 0000000001
+2011_09_28 2011_09_28_drive_0068_sync 0000000002
+2011_09_28 2011_09_28_drive_0068_sync 0000000003
+2011_09_28 2011_09_28_drive_0068_sync 0000000004
+2011_09_28 2011_09_28_drive_0068_sync 0000000005
+2011_09_28 2011_09_28_drive_0068_sync 0000000006
+2011_09_28 2011_09_28_drive_0068_sync 0000000007
+2011_09_28 2011_09_28_drive_0068_sync 0000000008
+2011_09_28 2011_09_28_drive_0068_sync 0000000009
+2011_09_28 2011_09_28_drive_0068_sync 0000000010
+2011_09_28 2011_09_28_drive_0068_sync 0000000011
+2011_09_28 2011_09_28_drive_0068_sync 0000000012
+2011_09_28 2011_09_28_drive_0068_sync 0000000013
+2011_09_28 2011_09_28_drive_0068_sync 0000000014
+2011_09_28 2011_09_28_drive_0068_sync 0000000015
+2011_09_28 2011_09_28_drive_0068_sync 0000000016
+2011_09_28 2011_09_28_drive_0068_sync 0000000017
+2011_09_28 2011_09_28_drive_0068_sync 0000000018
+2011_09_28 2011_09_28_drive_0068_sync 0000000019
+2011_09_28 2011_09_28_drive_0068_sync 0000000020
+2011_09_28 2011_09_28_drive_0068_sync 0000000021
+2011_09_28 2011_09_28_drive_0068_sync 0000000022
+2011_09_28 2011_09_28_drive_0068_sync 0000000023
+2011_09_28 2011_09_28_drive_0068_sync 0000000024
+2011_09_28 2011_09_28_drive_0068_sync 0000000025
+2011_09_28 2011_09_28_drive_0068_sync 0000000026
+2011_09_28 2011_09_28_drive_0068_sync 0000000027
+2011_09_28 2011_09_28_drive_0068_sync 0000000028
+2011_09_28 2011_09_28_drive_0068_sync 0000000029
+2011_09_28 2011_09_28_drive_0068_sync 0000000030
+2011_09_28 2011_09_28_drive_0068_sync 0000000031
+2011_09_28 2011_09_28_drive_0068_sync 0000000032
+2011_09_28 2011_09_28_drive_0068_sync 0000000033
+2011_09_28 2011_09_28_drive_0068_sync 0000000034
+2011_09_28 2011_09_28_drive_0068_sync 0000000035
+2011_09_28 2011_09_28_drive_0068_sync 0000000036
+2011_09_28 2011_09_28_drive_0068_sync 0000000037
+2011_09_28 2011_09_28_drive_0068_sync 0000000038
+2011_09_28 2011_09_28_drive_0068_sync 0000000039
+2011_09_28 2011_09_28_drive_0068_sync 0000000040
+2011_09_28 2011_09_28_drive_0068_sync 0000000041
+2011_09_28 2011_09_28_drive_0068_sync 0000000042
+2011_09_28 2011_09_28_drive_0068_sync 0000000043
+2011_09_28 2011_09_28_drive_0068_sync 0000000044
+2011_09_28 2011_09_28_drive_0068_sync 0000000045
+2011_09_28 2011_09_28_drive_0068_sync 0000000046
+2011_09_28 2011_09_28_drive_0068_sync 0000000047
+2011_09_28 2011_09_28_drive_0068_sync 0000000048
+2011_09_28 2011_09_28_drive_0068_sync 0000000049
+2011_09_28 2011_09_28_drive_0068_sync 0000000050
+2011_09_28 2011_09_28_drive_0068_sync 0000000051
+2011_09_28 2011_09_28_drive_0068_sync 0000000052
+2011_09_28 2011_09_28_drive_0068_sync 0000000053
+2011_09_28 2011_09_28_drive_0068_sync 0000000054
+2011_09_28 2011_09_28_drive_0068_sync 0000000055
+2011_09_28 2011_09_28_drive_0068_sync 0000000056
+2011_09_28 2011_09_28_drive_0068_sync 0000000057
+2011_09_28 2011_09_28_drive_0068_sync 0000000058
+2011_09_28 2011_09_28_drive_0068_sync 0000000059
+2011_09_28 2011_09_28_drive_0068_sync 0000000060
+2011_09_28 2011_09_28_drive_0068_sync 0000000061
+2011_09_28 2011_09_28_drive_0068_sync 0000000062
+2011_09_28 2011_09_28_drive_0068_sync 0000000063
+2011_09_28 2011_09_28_drive_0068_sync 0000000064
+2011_09_28 2011_09_28_drive_0068_sync 0000000065
+2011_09_28 2011_09_28_drive_0070_sync 0000000000
+2011_09_28 2011_09_28_drive_0070_sync 0000000001
+2011_09_28 2011_09_28_drive_0070_sync 0000000002
+2011_09_28 2011_09_28_drive_0070_sync 0000000003
+2011_09_28 2011_09_28_drive_0070_sync 0000000004
+2011_09_28 2011_09_28_drive_0070_sync 0000000005
+2011_09_28 2011_09_28_drive_0070_sync 0000000006
+2011_09_28 2011_09_28_drive_0070_sync 0000000007
+2011_09_28 2011_09_28_drive_0070_sync 0000000008
+2011_09_28 2011_09_28_drive_0070_sync 0000000009
+2011_09_28 2011_09_28_drive_0070_sync 0000000010
+2011_09_28 2011_09_28_drive_0070_sync 0000000011
+2011_09_28 2011_09_28_drive_0070_sync 0000000012
+2011_09_28 2011_09_28_drive_0070_sync 0000000013
+2011_09_28 2011_09_28_drive_0070_sync 0000000014
+2011_09_28 2011_09_28_drive_0070_sync 0000000015
+2011_09_28 2011_09_28_drive_0070_sync 0000000016
+2011_09_28 2011_09_28_drive_0070_sync 0000000017
+2011_09_28 2011_09_28_drive_0070_sync 0000000018
+2011_09_28 2011_09_28_drive_0070_sync 0000000019
+2011_09_28 2011_09_28_drive_0070_sync 0000000020
+2011_09_28 2011_09_28_drive_0070_sync 0000000021
+2011_09_28 2011_09_28_drive_0070_sync 0000000022
+2011_09_28 2011_09_28_drive_0070_sync 0000000023
+2011_09_28 2011_09_28_drive_0070_sync 0000000024
+2011_09_28 2011_09_28_drive_0070_sync 0000000025
+2011_09_28 2011_09_28_drive_0070_sync 0000000026
+2011_09_28 2011_09_28_drive_0070_sync 0000000027
+2011_09_28 2011_09_28_drive_0070_sync 0000000028
+2011_09_28 2011_09_28_drive_0070_sync 0000000029
+2011_09_28 2011_09_28_drive_0070_sync 0000000030
+2011_09_28 2011_09_28_drive_0070_sync 0000000031
+2011_09_28 2011_09_28_drive_0070_sync 0000000032
+2011_09_28 2011_09_28_drive_0070_sync 0000000033
+2011_09_28 2011_09_28_drive_0070_sync 0000000034
+2011_09_28 2011_09_28_drive_0070_sync 0000000035
+2011_09_28 2011_09_28_drive_0070_sync 0000000036
+2011_09_28 2011_09_28_drive_0070_sync 0000000037
+2011_09_28 2011_09_28_drive_0071_sync 0000000000
+2011_09_28 2011_09_28_drive_0071_sync 0000000001
+2011_09_28 2011_09_28_drive_0071_sync 0000000002
+2011_09_28 2011_09_28_drive_0071_sync 0000000003
+2011_09_28 2011_09_28_drive_0071_sync 0000000004
+2011_09_28 2011_09_28_drive_0071_sync 0000000005
+2011_09_28 2011_09_28_drive_0071_sync 0000000006
+2011_09_28 2011_09_28_drive_0071_sync 0000000007
+2011_09_28 2011_09_28_drive_0071_sync 0000000008
+2011_09_28 2011_09_28_drive_0071_sync 0000000009
+2011_09_28 2011_09_28_drive_0071_sync 0000000010
+2011_09_28 2011_09_28_drive_0071_sync 0000000011
+2011_09_28 2011_09_28_drive_0071_sync 0000000012
+2011_09_28 2011_09_28_drive_0071_sync 0000000013
+2011_09_28 2011_09_28_drive_0071_sync 0000000014
+2011_09_28 2011_09_28_drive_0071_sync 0000000015
+2011_09_28 2011_09_28_drive_0071_sync 0000000016
+2011_09_28 2011_09_28_drive_0071_sync 0000000017
+2011_09_28 2011_09_28_drive_0071_sync 0000000018
+2011_09_28 2011_09_28_drive_0071_sync 0000000019
+2011_09_28 2011_09_28_drive_0071_sync 0000000020
+2011_09_28 2011_09_28_drive_0071_sync 0000000021
+2011_09_28 2011_09_28_drive_0071_sync 0000000022
+2011_09_28 2011_09_28_drive_0071_sync 0000000023
+2011_09_28 2011_09_28_drive_0071_sync 0000000024
+2011_09_28 2011_09_28_drive_0071_sync 0000000025
+2011_09_28 2011_09_28_drive_0071_sync 0000000026
+2011_09_28 2011_09_28_drive_0071_sync 0000000027
+2011_09_28 2011_09_28_drive_0071_sync 0000000028
+2011_09_28 2011_09_28_drive_0071_sync 0000000029
+2011_09_28 2011_09_28_drive_0071_sync 0000000030
+2011_09_28 2011_09_28_drive_0071_sync 0000000031
+2011_09_28 2011_09_28_drive_0071_sync 0000000032
+2011_09_28 2011_09_28_drive_0071_sync 0000000033
+2011_09_28 2011_09_28_drive_0071_sync 0000000034
+2011_09_28 2011_09_28_drive_0071_sync 0000000035
+2011_09_28 2011_09_28_drive_0071_sync 0000000036
+2011_09_28 2011_09_28_drive_0071_sync 0000000037
+2011_09_28 2011_09_28_drive_0071_sync 0000000038
+2011_09_28 2011_09_28_drive_0071_sync 0000000039
+2011_09_28 2011_09_28_drive_0071_sync 0000000040
+2011_09_28 2011_09_28_drive_0071_sync 0000000041
+2011_09_28 2011_09_28_drive_0075_sync 0000000000
+2011_09_28 2011_09_28_drive_0075_sync 0000000001
+2011_09_28 2011_09_28_drive_0075_sync 0000000002
+2011_09_28 2011_09_28_drive_0075_sync 0000000003
+2011_09_28 2011_09_28_drive_0075_sync 0000000004
+2011_09_28 2011_09_28_drive_0075_sync 0000000005
+2011_09_28 2011_09_28_drive_0075_sync 0000000006
+2011_09_28 2011_09_28_drive_0075_sync 0000000007
+2011_09_28 2011_09_28_drive_0075_sync 0000000008
+2011_09_28 2011_09_28_drive_0075_sync 0000000009
+2011_09_28 2011_09_28_drive_0075_sync 0000000010
+2011_09_28 2011_09_28_drive_0075_sync 0000000011
+2011_09_28 2011_09_28_drive_0075_sync 0000000012
+2011_09_28 2011_09_28_drive_0075_sync 0000000013
+2011_09_28 2011_09_28_drive_0075_sync 0000000014
+2011_09_28 2011_09_28_drive_0075_sync 0000000015
+2011_09_28 2011_09_28_drive_0075_sync 0000000016
+2011_09_28 2011_09_28_drive_0075_sync 0000000017
+2011_09_28 2011_09_28_drive_0075_sync 0000000018
+2011_09_28 2011_09_28_drive_0075_sync 0000000019
+2011_09_28 2011_09_28_drive_0075_sync 0000000020
+2011_09_28 2011_09_28_drive_0075_sync 0000000021
+2011_09_28 2011_09_28_drive_0075_sync 0000000022
+2011_09_28 2011_09_28_drive_0075_sync 0000000023
+2011_09_28 2011_09_28_drive_0075_sync 0000000024
+2011_09_28 2011_09_28_drive_0075_sync 0000000025
+2011_09_28 2011_09_28_drive_0075_sync 0000000026
+2011_09_28 2011_09_28_drive_0075_sync 0000000027
+2011_09_28 2011_09_28_drive_0075_sync 0000000028
+2011_09_28 2011_09_28_drive_0075_sync 0000000029
+2011_09_28 2011_09_28_drive_0075_sync 0000000030
+2011_09_28 2011_09_28_drive_0075_sync 0000000031
+2011_09_28 2011_09_28_drive_0075_sync 0000000032
+2011_09_28 2011_09_28_drive_0075_sync 0000000033
+2011_09_28 2011_09_28_drive_0075_sync 0000000034
+2011_09_28 2011_09_28_drive_0075_sync 0000000035
+2011_09_28 2011_09_28_drive_0075_sync 0000000036
+2011_09_28 2011_09_28_drive_0075_sync 0000000037
+2011_09_28 2011_09_28_drive_0075_sync 0000000038
+2011_09_28 2011_09_28_drive_0075_sync 0000000039
+2011_09_28 2011_09_28_drive_0075_sync 0000000040
+2011_09_28 2011_09_28_drive_0075_sync 0000000041
+2011_09_28 2011_09_28_drive_0075_sync 0000000042
+2011_09_28 2011_09_28_drive_0075_sync 0000000043
+2011_09_28 2011_09_28_drive_0075_sync 0000000044
+2011_09_28 2011_09_28_drive_0075_sync 0000000045
+2011_09_28 2011_09_28_drive_0075_sync 0000000046
+2011_09_28 2011_09_28_drive_0075_sync 0000000047
+2011_09_28 2011_09_28_drive_0075_sync 0000000048
+2011_09_28 2011_09_28_drive_0075_sync 0000000049
+2011_09_28 2011_09_28_drive_0075_sync 0000000050
+2011_09_28 2011_09_28_drive_0075_sync 0000000051
+2011_09_28 2011_09_28_drive_0075_sync 0000000052
+2011_09_28 2011_09_28_drive_0075_sync 0000000053
+2011_09_28 2011_09_28_drive_0075_sync 0000000054
+2011_09_28 2011_09_28_drive_0075_sync 0000000055
+2011_09_28 2011_09_28_drive_0075_sync 0000000056
+2011_09_28 2011_09_28_drive_0075_sync 0000000057
+2011_09_28 2011_09_28_drive_0075_sync 0000000058
+2011_09_28 2011_09_28_drive_0075_sync 0000000059
+2011_09_28 2011_09_28_drive_0075_sync 0000000060
+2011_09_28 2011_09_28_drive_0075_sync 0000000061
+2011_09_28 2011_09_28_drive_0075_sync 0000000062
+2011_09_28 2011_09_28_drive_0075_sync 0000000063
+2011_09_28 2011_09_28_drive_0075_sync 0000000064
+2011_09_28 2011_09_28_drive_0075_sync 0000000065
+2011_09_28 2011_09_28_drive_0075_sync 0000000066
+2011_09_28 2011_09_28_drive_0075_sync 0000000067
+2011_09_28 2011_09_28_drive_0075_sync 0000000068
+2011_09_28 2011_09_28_drive_0077_sync 0000000000
+2011_09_28 2011_09_28_drive_0077_sync 0000000001
+2011_09_28 2011_09_28_drive_0077_sync 0000000002
+2011_09_28 2011_09_28_drive_0077_sync 0000000003
+2011_09_28 2011_09_28_drive_0077_sync 0000000004
+2011_09_28 2011_09_28_drive_0077_sync 0000000005
+2011_09_28 2011_09_28_drive_0077_sync 0000000006
+2011_09_28 2011_09_28_drive_0077_sync 0000000007
+2011_09_28 2011_09_28_drive_0077_sync 0000000008
+2011_09_28 2011_09_28_drive_0077_sync 0000000009
+2011_09_28 2011_09_28_drive_0077_sync 0000000010
+2011_09_28 2011_09_28_drive_0077_sync 0000000011
+2011_09_28 2011_09_28_drive_0077_sync 0000000012
+2011_09_28 2011_09_28_drive_0077_sync 0000000013
+2011_09_28 2011_09_28_drive_0077_sync 0000000014
+2011_09_28 2011_09_28_drive_0077_sync 0000000015
+2011_09_28 2011_09_28_drive_0077_sync 0000000016
+2011_09_28 2011_09_28_drive_0077_sync 0000000017
+2011_09_28 2011_09_28_drive_0077_sync 0000000018
+2011_09_28 2011_09_28_drive_0077_sync 0000000019
+2011_09_28 2011_09_28_drive_0077_sync 0000000020
+2011_09_28 2011_09_28_drive_0077_sync 0000000021
+2011_09_28 2011_09_28_drive_0077_sync 0000000022
+2011_09_28 2011_09_28_drive_0077_sync 0000000023
+2011_09_28 2011_09_28_drive_0077_sync 0000000024
+2011_09_28 2011_09_28_drive_0077_sync 0000000025
+2011_09_28 2011_09_28_drive_0077_sync 0000000026
+2011_09_28 2011_09_28_drive_0077_sync 0000000027
+2011_09_28 2011_09_28_drive_0077_sync 0000000028
+2011_09_28 2011_09_28_drive_0077_sync 0000000029
+2011_09_28 2011_09_28_drive_0077_sync 0000000030
+2011_09_28 2011_09_28_drive_0077_sync 0000000031
+2011_09_28 2011_09_28_drive_0077_sync 0000000032
+2011_09_28 2011_09_28_drive_0077_sync 0000000033
+2011_09_28 2011_09_28_drive_0077_sync 0000000034
+2011_09_28 2011_09_28_drive_0077_sync 0000000035
+2011_09_28 2011_09_28_drive_0077_sync 0000000036
+2011_09_28 2011_09_28_drive_0077_sync 0000000037
+2011_09_28 2011_09_28_drive_0077_sync 0000000038
+2011_09_28 2011_09_28_drive_0077_sync 0000000039
+2011_09_28 2011_09_28_drive_0077_sync 0000000040
+2011_09_28 2011_09_28_drive_0078_sync 0000000000
+2011_09_28 2011_09_28_drive_0078_sync 0000000001
+2011_09_28 2011_09_28_drive_0078_sync 0000000002
+2011_09_28 2011_09_28_drive_0078_sync 0000000003
+2011_09_28 2011_09_28_drive_0078_sync 0000000004
+2011_09_28 2011_09_28_drive_0078_sync 0000000005
+2011_09_28 2011_09_28_drive_0078_sync 0000000006
+2011_09_28 2011_09_28_drive_0078_sync 0000000007
+2011_09_28 2011_09_28_drive_0078_sync 0000000008
+2011_09_28 2011_09_28_drive_0078_sync 0000000009
+2011_09_28 2011_09_28_drive_0078_sync 0000000010
+2011_09_28 2011_09_28_drive_0078_sync 0000000011
+2011_09_28 2011_09_28_drive_0078_sync 0000000012
+2011_09_28 2011_09_28_drive_0078_sync 0000000013
+2011_09_28 2011_09_28_drive_0078_sync 0000000014
+2011_09_28 2011_09_28_drive_0078_sync 0000000015
+2011_09_28 2011_09_28_drive_0078_sync 0000000016
+2011_09_28 2011_09_28_drive_0078_sync 0000000017
+2011_09_28 2011_09_28_drive_0078_sync 0000000018
+2011_09_28 2011_09_28_drive_0078_sync 0000000019
+2011_09_28 2011_09_28_drive_0078_sync 0000000020
+2011_09_28 2011_09_28_drive_0078_sync 0000000021
+2011_09_28 2011_09_28_drive_0078_sync 0000000022
+2011_09_28 2011_09_28_drive_0078_sync 0000000023
+2011_09_28 2011_09_28_drive_0078_sync 0000000024
+2011_09_28 2011_09_28_drive_0078_sync 0000000025
+2011_09_28 2011_09_28_drive_0078_sync 0000000026
+2011_09_28 2011_09_28_drive_0078_sync 0000000027
+2011_09_28 2011_09_28_drive_0078_sync 0000000028
+2011_09_28 2011_09_28_drive_0078_sync 0000000029
+2011_09_28 2011_09_28_drive_0078_sync 0000000030
+2011_09_28 2011_09_28_drive_0078_sync 0000000031
+2011_09_28 2011_09_28_drive_0078_sync 0000000032
+2011_09_28 2011_09_28_drive_0078_sync 0000000033
+2011_09_28 2011_09_28_drive_0078_sync 0000000034
+2011_09_28 2011_09_28_drive_0078_sync 0000000035
+2011_09_28 2011_09_28_drive_0080_sync 0000000000
+2011_09_28 2011_09_28_drive_0080_sync 0000000001
+2011_09_28 2011_09_28_drive_0080_sync 0000000002
+2011_09_28 2011_09_28_drive_0080_sync 0000000003
+2011_09_28 2011_09_28_drive_0080_sync 0000000004
+2011_09_28 2011_09_28_drive_0080_sync 0000000005
+2011_09_28 2011_09_28_drive_0080_sync 0000000006
+2011_09_28 2011_09_28_drive_0080_sync 0000000007
+2011_09_28 2011_09_28_drive_0080_sync 0000000008
+2011_09_28 2011_09_28_drive_0080_sync 0000000009
+2011_09_28 2011_09_28_drive_0080_sync 0000000010
+2011_09_28 2011_09_28_drive_0080_sync 0000000011
+2011_09_28 2011_09_28_drive_0080_sync 0000000012
+2011_09_28 2011_09_28_drive_0080_sync 0000000013
+2011_09_28 2011_09_28_drive_0080_sync 0000000014
+2011_09_28 2011_09_28_drive_0080_sync 0000000015
+2011_09_28 2011_09_28_drive_0080_sync 0000000016
+2011_09_28 2011_09_28_drive_0080_sync 0000000017
+2011_09_28 2011_09_28_drive_0080_sync 0000000018
+2011_09_28 2011_09_28_drive_0080_sync 0000000019
+2011_09_28 2011_09_28_drive_0080_sync 0000000020
+2011_09_28 2011_09_28_drive_0080_sync 0000000021
+2011_09_28 2011_09_28_drive_0080_sync 0000000022
+2011_09_28 2011_09_28_drive_0080_sync 0000000023
+2011_09_28 2011_09_28_drive_0080_sync 0000000024
+2011_09_28 2011_09_28_drive_0080_sync 0000000025
+2011_09_28 2011_09_28_drive_0080_sync 0000000026
+2011_09_28 2011_09_28_drive_0080_sync 0000000027
+2011_09_28 2011_09_28_drive_0080_sync 0000000028
+2011_09_28 2011_09_28_drive_0080_sync 0000000029
+2011_09_28 2011_09_28_drive_0080_sync 0000000030
+2011_09_28 2011_09_28_drive_0080_sync 0000000031
+2011_09_28 2011_09_28_drive_0080_sync 0000000032
+2011_09_28 2011_09_28_drive_0080_sync 0000000033
+2011_09_28 2011_09_28_drive_0080_sync 0000000034
+2011_09_28 2011_09_28_drive_0080_sync 0000000035
+2011_09_28 2011_09_28_drive_0080_sync 0000000036
+2011_09_28 2011_09_28_drive_0080_sync 0000000037
+2011_09_28 2011_09_28_drive_0080_sync 0000000038
+2011_09_28 2011_09_28_drive_0082_sync 0000000000
+2011_09_28 2011_09_28_drive_0082_sync 0000000001
+2011_09_28 2011_09_28_drive_0082_sync 0000000002
+2011_09_28 2011_09_28_drive_0082_sync 0000000003
+2011_09_28 2011_09_28_drive_0082_sync 0000000004
+2011_09_28 2011_09_28_drive_0082_sync 0000000005
+2011_09_28 2011_09_28_drive_0082_sync 0000000006
+2011_09_28 2011_09_28_drive_0082_sync 0000000007
+2011_09_28 2011_09_28_drive_0082_sync 0000000008
+2011_09_28 2011_09_28_drive_0082_sync 0000000009
+2011_09_28 2011_09_28_drive_0082_sync 0000000010
+2011_09_28 2011_09_28_drive_0082_sync 0000000011
+2011_09_28 2011_09_28_drive_0082_sync 0000000012
+2011_09_28 2011_09_28_drive_0082_sync 0000000013
+2011_09_28 2011_09_28_drive_0082_sync 0000000014
+2011_09_28 2011_09_28_drive_0082_sync 0000000015
+2011_09_28 2011_09_28_drive_0082_sync 0000000016
+2011_09_28 2011_09_28_drive_0082_sync 0000000017
+2011_09_28 2011_09_28_drive_0082_sync 0000000018
+2011_09_28 2011_09_28_drive_0082_sync 0000000019
+2011_09_28 2011_09_28_drive_0082_sync 0000000020
+2011_09_28 2011_09_28_drive_0082_sync 0000000021
+2011_09_28 2011_09_28_drive_0082_sync 0000000022
+2011_09_28 2011_09_28_drive_0082_sync 0000000023
+2011_09_28 2011_09_28_drive_0082_sync 0000000024
+2011_09_28 2011_09_28_drive_0082_sync 0000000025
+2011_09_28 2011_09_28_drive_0082_sync 0000000026
+2011_09_28 2011_09_28_drive_0082_sync 0000000027
+2011_09_28 2011_09_28_drive_0082_sync 0000000028
+2011_09_28 2011_09_28_drive_0082_sync 0000000029
+2011_09_28 2011_09_28_drive_0082_sync 0000000030
+2011_09_28 2011_09_28_drive_0082_sync 0000000031
+2011_09_28 2011_09_28_drive_0082_sync 0000000032
+2011_09_28 2011_09_28_drive_0082_sync 0000000033
+2011_09_28 2011_09_28_drive_0082_sync 0000000034
+2011_09_28 2011_09_28_drive_0082_sync 0000000035
+2011_09_28 2011_09_28_drive_0082_sync 0000000036
+2011_09_28 2011_09_28_drive_0082_sync 0000000037
+2011_09_28 2011_09_28_drive_0082_sync 0000000038
+2011_09_28 2011_09_28_drive_0082_sync 0000000039
+2011_09_28 2011_09_28_drive_0082_sync 0000000040
+2011_09_28 2011_09_28_drive_0082_sync 0000000041
+2011_09_28 2011_09_28_drive_0082_sync 0000000042
+2011_09_28 2011_09_28_drive_0082_sync 0000000043
+2011_09_28 2011_09_28_drive_0082_sync 0000000044
+2011_09_28 2011_09_28_drive_0082_sync 0000000045
+2011_09_28 2011_09_28_drive_0082_sync 0000000046
+2011_09_28 2011_09_28_drive_0082_sync 0000000047
+2011_09_28 2011_09_28_drive_0082_sync 0000000048
+2011_09_28 2011_09_28_drive_0082_sync 0000000049
+2011_09_28 2011_09_28_drive_0082_sync 0000000050
+2011_09_28 2011_09_28_drive_0082_sync 0000000051
+2011_09_28 2011_09_28_drive_0082_sync 0000000052
+2011_09_28 2011_09_28_drive_0082_sync 0000000053
+2011_09_28 2011_09_28_drive_0082_sync 0000000054
+2011_09_28 2011_09_28_drive_0082_sync 0000000055
+2011_09_28 2011_09_28_drive_0082_sync 0000000056
+2011_09_28 2011_09_28_drive_0082_sync 0000000057
+2011_09_28 2011_09_28_drive_0082_sync 0000000058
+2011_09_28 2011_09_28_drive_0082_sync 0000000059
+2011_09_28 2011_09_28_drive_0082_sync 0000000060
+2011_09_28 2011_09_28_drive_0082_sync 0000000061
+2011_09_28 2011_09_28_drive_0082_sync 0000000062
+2011_09_28 2011_09_28_drive_0082_sync 0000000063
+2011_09_28 2011_09_28_drive_0082_sync 0000000064
+2011_09_28 2011_09_28_drive_0082_sync 0000000065
+2011_09_28 2011_09_28_drive_0082_sync 0000000066
+2011_09_28 2011_09_28_drive_0082_sync 0000000067
+2011_09_28 2011_09_28_drive_0082_sync 0000000068
+2011_09_28 2011_09_28_drive_0082_sync 0000000069
+2011_09_28 2011_09_28_drive_0082_sync 0000000070
+2011_09_28 2011_09_28_drive_0082_sync 0000000071
+2011_09_28 2011_09_28_drive_0082_sync 0000000072
+2011_09_28 2011_09_28_drive_0082_sync 0000000073
+2011_09_28 2011_09_28_drive_0086_sync 0000000000
+2011_09_28 2011_09_28_drive_0086_sync 0000000001
+2011_09_28 2011_09_28_drive_0086_sync 0000000002
+2011_09_28 2011_09_28_drive_0086_sync 0000000003
+2011_09_28 2011_09_28_drive_0086_sync 0000000004
+2011_09_28 2011_09_28_drive_0086_sync 0000000005
+2011_09_28 2011_09_28_drive_0086_sync 0000000006
+2011_09_28 2011_09_28_drive_0086_sync 0000000007
+2011_09_28 2011_09_28_drive_0086_sync 0000000008
+2011_09_28 2011_09_28_drive_0086_sync 0000000009
+2011_09_28 2011_09_28_drive_0086_sync 0000000010
+2011_09_28 2011_09_28_drive_0086_sync 0000000011
+2011_09_28 2011_09_28_drive_0086_sync 0000000012
+2011_09_28 2011_09_28_drive_0086_sync 0000000013
+2011_09_28 2011_09_28_drive_0086_sync 0000000014
+2011_09_28 2011_09_28_drive_0086_sync 0000000015
+2011_09_28 2011_09_28_drive_0086_sync 0000000016
+2011_09_28 2011_09_28_drive_0086_sync 0000000017
+2011_09_28 2011_09_28_drive_0086_sync 0000000018
+2011_09_28 2011_09_28_drive_0086_sync 0000000019
+2011_09_28 2011_09_28_drive_0086_sync 0000000020
+2011_09_28 2011_09_28_drive_0086_sync 0000000021
+2011_09_28 2011_09_28_drive_0086_sync 0000000022
+2011_09_28 2011_09_28_drive_0086_sync 0000000023
+2011_09_28 2011_09_28_drive_0086_sync 0000000024
+2011_09_28 2011_09_28_drive_0086_sync 0000000025
+2011_09_28 2011_09_28_drive_0086_sync 0000000026
+2011_09_28 2011_09_28_drive_0086_sync 0000000027
+2011_09_28 2011_09_28_drive_0086_sync 0000000028
+2011_09_28 2011_09_28_drive_0087_sync 0000000000
+2011_09_28 2011_09_28_drive_0087_sync 0000000001
+2011_09_28 2011_09_28_drive_0087_sync 0000000002
+2011_09_28 2011_09_28_drive_0087_sync 0000000003
+2011_09_28 2011_09_28_drive_0087_sync 0000000004
+2011_09_28 2011_09_28_drive_0087_sync 0000000005
+2011_09_28 2011_09_28_drive_0087_sync 0000000006
+2011_09_28 2011_09_28_drive_0087_sync 0000000007
+2011_09_28 2011_09_28_drive_0087_sync 0000000008
+2011_09_28 2011_09_28_drive_0087_sync 0000000009
+2011_09_28 2011_09_28_drive_0087_sync 0000000010
+2011_09_28 2011_09_28_drive_0087_sync 0000000011
+2011_09_28 2011_09_28_drive_0087_sync 0000000012
+2011_09_28 2011_09_28_drive_0087_sync 0000000013
+2011_09_28 2011_09_28_drive_0087_sync 0000000014
+2011_09_28 2011_09_28_drive_0087_sync 0000000015
+2011_09_28 2011_09_28_drive_0087_sync 0000000016
+2011_09_28 2011_09_28_drive_0087_sync 0000000017
+2011_09_28 2011_09_28_drive_0087_sync 0000000018
+2011_09_28 2011_09_28_drive_0087_sync 0000000019
+2011_09_28 2011_09_28_drive_0087_sync 0000000020
+2011_09_28 2011_09_28_drive_0087_sync 0000000021
+2011_09_28 2011_09_28_drive_0087_sync 0000000022
+2011_09_28 2011_09_28_drive_0087_sync 0000000023
+2011_09_28 2011_09_28_drive_0087_sync 0000000024
+2011_09_28 2011_09_28_drive_0087_sync 0000000025
+2011_09_28 2011_09_28_drive_0087_sync 0000000026
+2011_09_28 2011_09_28_drive_0087_sync 0000000027
+2011_09_28 2011_09_28_drive_0087_sync 0000000028
+2011_09_28 2011_09_28_drive_0087_sync 0000000029
+2011_09_28 2011_09_28_drive_0087_sync 0000000030
+2011_09_28 2011_09_28_drive_0087_sync 0000000031
+2011_09_28 2011_09_28_drive_0087_sync 0000000032
+2011_09_28 2011_09_28_drive_0087_sync 0000000033
+2011_09_28 2011_09_28_drive_0087_sync 0000000034
+2011_09_28 2011_09_28_drive_0087_sync 0000000035
+2011_09_28 2011_09_28_drive_0087_sync 0000000036
+2011_09_28 2011_09_28_drive_0087_sync 0000000037
+2011_09_28 2011_09_28_drive_0087_sync 0000000038
+2011_09_28 2011_09_28_drive_0087_sync 0000000039
+2011_09_28 2011_09_28_drive_0087_sync 0000000040
+2011_09_28 2011_09_28_drive_0087_sync 0000000041
+2011_09_28 2011_09_28_drive_0087_sync 0000000042
+2011_09_28 2011_09_28_drive_0087_sync 0000000043
+2011_09_28 2011_09_28_drive_0087_sync 0000000044
+2011_09_28 2011_09_28_drive_0087_sync 0000000045
+2011_09_28 2011_09_28_drive_0087_sync 0000000046
+2011_09_28 2011_09_28_drive_0087_sync 0000000047
+2011_09_28 2011_09_28_drive_0087_sync 0000000048
+2011_09_28 2011_09_28_drive_0087_sync 0000000049
+2011_09_28 2011_09_28_drive_0087_sync 0000000050
+2011_09_28 2011_09_28_drive_0087_sync 0000000051
+2011_09_28 2011_09_28_drive_0087_sync 0000000052
+2011_09_28 2011_09_28_drive_0087_sync 0000000053
+2011_09_28 2011_09_28_drive_0087_sync 0000000054
+2011_09_28 2011_09_28_drive_0087_sync 0000000055
+2011_09_28 2011_09_28_drive_0087_sync 0000000056
+2011_09_28 2011_09_28_drive_0087_sync 0000000057
+2011_09_28 2011_09_28_drive_0087_sync 0000000058
+2011_09_28 2011_09_28_drive_0087_sync 0000000059
+2011_09_28 2011_09_28_drive_0087_sync 0000000060
+2011_09_28 2011_09_28_drive_0087_sync 0000000061
+2011_09_28 2011_09_28_drive_0087_sync 0000000062
+2011_09_28 2011_09_28_drive_0087_sync 0000000063
+2011_09_28 2011_09_28_drive_0087_sync 0000000064
+2011_09_28 2011_09_28_drive_0087_sync 0000000065
+2011_09_28 2011_09_28_drive_0087_sync 0000000066
+2011_09_28 2011_09_28_drive_0087_sync 0000000067
+2011_09_28 2011_09_28_drive_0087_sync 0000000068
+2011_09_28 2011_09_28_drive_0087_sync 0000000069
+2011_09_28 2011_09_28_drive_0087_sync 0000000070
+2011_09_28 2011_09_28_drive_0087_sync 0000000071
+2011_09_28 2011_09_28_drive_0087_sync 0000000072
+2011_09_28 2011_09_28_drive_0087_sync 0000000073
+2011_09_28 2011_09_28_drive_0087_sync 0000000074
+2011_09_28 2011_09_28_drive_0087_sync 0000000075
+2011_09_28 2011_09_28_drive_0087_sync 0000000076
+2011_09_28 2011_09_28_drive_0087_sync 0000000077
+2011_09_28 2011_09_28_drive_0087_sync 0000000078
+2011_09_28 2011_09_28_drive_0087_sync 0000000079
+2011_09_28 2011_09_28_drive_0087_sync 0000000080
+2011_09_28 2011_09_28_drive_0089_sync 0000000000
+2011_09_28 2011_09_28_drive_0089_sync 0000000001
+2011_09_28 2011_09_28_drive_0089_sync 0000000002
+2011_09_28 2011_09_28_drive_0089_sync 0000000003
+2011_09_28 2011_09_28_drive_0089_sync 0000000004
+2011_09_28 2011_09_28_drive_0089_sync 0000000005
+2011_09_28 2011_09_28_drive_0089_sync 0000000006
+2011_09_28 2011_09_28_drive_0089_sync 0000000007
+2011_09_28 2011_09_28_drive_0089_sync 0000000008
+2011_09_28 2011_09_28_drive_0089_sync 0000000009
+2011_09_28 2011_09_28_drive_0089_sync 0000000010
+2011_09_28 2011_09_28_drive_0089_sync 0000000011
+2011_09_28 2011_09_28_drive_0089_sync 0000000012
+2011_09_28 2011_09_28_drive_0089_sync 0000000013
+2011_09_28 2011_09_28_drive_0089_sync 0000000014
+2011_09_28 2011_09_28_drive_0089_sync 0000000015
+2011_09_28 2011_09_28_drive_0089_sync 0000000016
+2011_09_28 2011_09_28_drive_0089_sync 0000000017
+2011_09_28 2011_09_28_drive_0089_sync 0000000018
+2011_09_28 2011_09_28_drive_0089_sync 0000000019
+2011_09_28 2011_09_28_drive_0089_sync 0000000020
+2011_09_28 2011_09_28_drive_0089_sync 0000000021
+2011_09_28 2011_09_28_drive_0089_sync 0000000022
+2011_09_28 2011_09_28_drive_0089_sync 0000000023
+2011_09_28 2011_09_28_drive_0089_sync 0000000024
+2011_09_28 2011_09_28_drive_0089_sync 0000000025
+2011_09_28 2011_09_28_drive_0089_sync 0000000026
+2011_09_28 2011_09_28_drive_0089_sync 0000000027
+2011_09_28 2011_09_28_drive_0089_sync 0000000028
+2011_09_28 2011_09_28_drive_0089_sync 0000000029
+2011_09_28 2011_09_28_drive_0089_sync 0000000030
+2011_09_28 2011_09_28_drive_0089_sync 0000000031
+2011_09_28 2011_09_28_drive_0089_sync 0000000032
+2011_09_28 2011_09_28_drive_0089_sync 0000000033
+2011_09_28 2011_09_28_drive_0089_sync 0000000034
+2011_09_28 2011_09_28_drive_0089_sync 0000000035
+2011_09_28 2011_09_28_drive_0089_sync 0000000036
+2011_09_28 2011_09_28_drive_0090_sync 0000000000
+2011_09_28 2011_09_28_drive_0090_sync 0000000001
+2011_09_28 2011_09_28_drive_0090_sync 0000000002
+2011_09_28 2011_09_28_drive_0090_sync 0000000003
+2011_09_28 2011_09_28_drive_0090_sync 0000000004
+2011_09_28 2011_09_28_drive_0090_sync 0000000005
+2011_09_28 2011_09_28_drive_0090_sync 0000000006
+2011_09_28 2011_09_28_drive_0090_sync 0000000007
+2011_09_28 2011_09_28_drive_0090_sync 0000000008
+2011_09_28 2011_09_28_drive_0090_sync 0000000009
+2011_09_28 2011_09_28_drive_0090_sync 0000000010
+2011_09_28 2011_09_28_drive_0090_sync 0000000011
+2011_09_28 2011_09_28_drive_0090_sync 0000000012
+2011_09_28 2011_09_28_drive_0090_sync 0000000013
+2011_09_28 2011_09_28_drive_0090_sync 0000000014
+2011_09_28 2011_09_28_drive_0090_sync 0000000015
+2011_09_28 2011_09_28_drive_0090_sync 0000000016
+2011_09_28 2011_09_28_drive_0090_sync 0000000017
+2011_09_28 2011_09_28_drive_0090_sync 0000000018
+2011_09_28 2011_09_28_drive_0090_sync 0000000019
+2011_09_28 2011_09_28_drive_0090_sync 0000000020
+2011_09_28 2011_09_28_drive_0090_sync 0000000021
+2011_09_28 2011_09_28_drive_0090_sync 0000000022
+2011_09_28 2011_09_28_drive_0090_sync 0000000023
+2011_09_28 2011_09_28_drive_0090_sync 0000000024
+2011_09_28 2011_09_28_drive_0090_sync 0000000025
+2011_09_28 2011_09_28_drive_0090_sync 0000000026
+2011_09_28 2011_09_28_drive_0090_sync 0000000027
+2011_09_28 2011_09_28_drive_0090_sync 0000000028
+2011_09_28 2011_09_28_drive_0090_sync 0000000029
+2011_09_28 2011_09_28_drive_0090_sync 0000000030
+2011_09_28 2011_09_28_drive_0090_sync 0000000031
+2011_09_28 2011_09_28_drive_0090_sync 0000000032
+2011_09_28 2011_09_28_drive_0090_sync 0000000033
+2011_09_28 2011_09_28_drive_0090_sync 0000000034
+2011_09_28 2011_09_28_drive_0090_sync 0000000035
+2011_09_28 2011_09_28_drive_0090_sync 0000000036
+2011_09_28 2011_09_28_drive_0090_sync 0000000037
+2011_09_28 2011_09_28_drive_0090_sync 0000000038
+2011_09_28 2011_09_28_drive_0090_sync 0000000039
+2011_09_28 2011_09_28_drive_0090_sync 0000000040
+2011_09_28 2011_09_28_drive_0090_sync 0000000041
+2011_09_28 2011_09_28_drive_0090_sync 0000000042
+2011_09_28 2011_09_28_drive_0090_sync 0000000043
+2011_09_28 2011_09_28_drive_0090_sync 0000000044
+2011_09_28 2011_09_28_drive_0094_sync 0000000000
+2011_09_28 2011_09_28_drive_0094_sync 0000000001
+2011_09_28 2011_09_28_drive_0094_sync 0000000002
+2011_09_28 2011_09_28_drive_0094_sync 0000000003
+2011_09_28 2011_09_28_drive_0094_sync 0000000004
+2011_09_28 2011_09_28_drive_0094_sync 0000000005
+2011_09_28 2011_09_28_drive_0094_sync 0000000006
+2011_09_28 2011_09_28_drive_0094_sync 0000000007
+2011_09_28 2011_09_28_drive_0094_sync 0000000008
+2011_09_28 2011_09_28_drive_0094_sync 0000000009
+2011_09_28 2011_09_28_drive_0094_sync 0000000010
+2011_09_28 2011_09_28_drive_0094_sync 0000000011
+2011_09_28 2011_09_28_drive_0094_sync 0000000012
+2011_09_28 2011_09_28_drive_0094_sync 0000000013
+2011_09_28 2011_09_28_drive_0094_sync 0000000014
+2011_09_28 2011_09_28_drive_0094_sync 0000000015
+2011_09_28 2011_09_28_drive_0094_sync 0000000016
+2011_09_28 2011_09_28_drive_0094_sync 0000000017
+2011_09_28 2011_09_28_drive_0094_sync 0000000018
+2011_09_28 2011_09_28_drive_0094_sync 0000000019
+2011_09_28 2011_09_28_drive_0094_sync 0000000020
+2011_09_28 2011_09_28_drive_0094_sync 0000000021
+2011_09_28 2011_09_28_drive_0094_sync 0000000022
+2011_09_28 2011_09_28_drive_0094_sync 0000000023
+2011_09_28 2011_09_28_drive_0094_sync 0000000024
+2011_09_28 2011_09_28_drive_0094_sync 0000000025
+2011_09_28 2011_09_28_drive_0094_sync 0000000026
+2011_09_28 2011_09_28_drive_0094_sync 0000000027
+2011_09_28 2011_09_28_drive_0094_sync 0000000028
+2011_09_28 2011_09_28_drive_0094_sync 0000000029
+2011_09_28 2011_09_28_drive_0094_sync 0000000030
+2011_09_28 2011_09_28_drive_0094_sync 0000000031
+2011_09_28 2011_09_28_drive_0094_sync 0000000032
+2011_09_28 2011_09_28_drive_0094_sync 0000000033
+2011_09_28 2011_09_28_drive_0094_sync 0000000034
+2011_09_28 2011_09_28_drive_0094_sync 0000000035
+2011_09_28 2011_09_28_drive_0094_sync 0000000036
+2011_09_28 2011_09_28_drive_0094_sync 0000000037
+2011_09_28 2011_09_28_drive_0094_sync 0000000038
+2011_09_28 2011_09_28_drive_0094_sync 0000000039
+2011_09_28 2011_09_28_drive_0094_sync 0000000040
+2011_09_28 2011_09_28_drive_0094_sync 0000000041
+2011_09_28 2011_09_28_drive_0094_sync 0000000042
+2011_09_28 2011_09_28_drive_0094_sync 0000000043
+2011_09_28 2011_09_28_drive_0094_sync 0000000044
+2011_09_28 2011_09_28_drive_0094_sync 0000000045
+2011_09_28 2011_09_28_drive_0094_sync 0000000046
+2011_09_28 2011_09_28_drive_0094_sync 0000000047
+2011_09_28 2011_09_28_drive_0094_sync 0000000048
+2011_09_28 2011_09_28_drive_0094_sync 0000000049
+2011_09_28 2011_09_28_drive_0094_sync 0000000050
+2011_09_28 2011_09_28_drive_0094_sync 0000000051
+2011_09_28 2011_09_28_drive_0094_sync 0000000052
+2011_09_28 2011_09_28_drive_0094_sync 0000000053
+2011_09_28 2011_09_28_drive_0094_sync 0000000054
+2011_09_28 2011_09_28_drive_0094_sync 0000000055
+2011_09_28 2011_09_28_drive_0094_sync 0000000056
+2011_09_28 2011_09_28_drive_0094_sync 0000000057
+2011_09_28 2011_09_28_drive_0094_sync 0000000058
+2011_09_28 2011_09_28_drive_0094_sync 0000000059
+2011_09_28 2011_09_28_drive_0094_sync 0000000060
+2011_09_28 2011_09_28_drive_0094_sync 0000000061
+2011_09_28 2011_09_28_drive_0094_sync 0000000062
+2011_09_28 2011_09_28_drive_0094_sync 0000000063
+2011_09_28 2011_09_28_drive_0094_sync 0000000064
+2011_09_28 2011_09_28_drive_0094_sync 0000000065
+2011_09_28 2011_09_28_drive_0094_sync 0000000066
+2011_09_28 2011_09_28_drive_0094_sync 0000000067
+2011_09_28 2011_09_28_drive_0094_sync 0000000068
+2011_09_28 2011_09_28_drive_0094_sync 0000000069
+2011_09_28 2011_09_28_drive_0094_sync 0000000070
+2011_09_28 2011_09_28_drive_0094_sync 0000000071
+2011_09_28 2011_09_28_drive_0094_sync 0000000072
+2011_09_28 2011_09_28_drive_0094_sync 0000000073
+2011_09_28 2011_09_28_drive_0094_sync 0000000074
+2011_09_28 2011_09_28_drive_0094_sync 0000000075
+2011_09_28 2011_09_28_drive_0094_sync 0000000076
+2011_09_28 2011_09_28_drive_0094_sync 0000000077
+2011_09_28 2011_09_28_drive_0094_sync 0000000078
+2011_09_28 2011_09_28_drive_0094_sync 0000000079
+2011_09_28 2011_09_28_drive_0094_sync 0000000080
+2011_09_28 2011_09_28_drive_0094_sync 0000000081
+2011_09_28 2011_09_28_drive_0094_sync 0000000082
+2011_09_28 2011_09_28_drive_0094_sync 0000000083
+2011_09_28 2011_09_28_drive_0094_sync 0000000084
+2011_09_28 2011_09_28_drive_0095_sync 0000000000
+2011_09_28 2011_09_28_drive_0095_sync 0000000001
+2011_09_28 2011_09_28_drive_0095_sync 0000000002
+2011_09_28 2011_09_28_drive_0095_sync 0000000003
+2011_09_28 2011_09_28_drive_0095_sync 0000000004
+2011_09_28 2011_09_28_drive_0095_sync 0000000005
+2011_09_28 2011_09_28_drive_0095_sync 0000000006
+2011_09_28 2011_09_28_drive_0095_sync 0000000007
+2011_09_28 2011_09_28_drive_0095_sync 0000000008
+2011_09_28 2011_09_28_drive_0095_sync 0000000009
+2011_09_28 2011_09_28_drive_0095_sync 0000000010
+2011_09_28 2011_09_28_drive_0095_sync 0000000011
+2011_09_28 2011_09_28_drive_0095_sync 0000000012
+2011_09_28 2011_09_28_drive_0095_sync 0000000013
+2011_09_28 2011_09_28_drive_0095_sync 0000000014
+2011_09_28 2011_09_28_drive_0095_sync 0000000015
+2011_09_28 2011_09_28_drive_0095_sync 0000000016
+2011_09_28 2011_09_28_drive_0095_sync 0000000017
+2011_09_28 2011_09_28_drive_0095_sync 0000000018
+2011_09_28 2011_09_28_drive_0095_sync 0000000019
+2011_09_28 2011_09_28_drive_0095_sync 0000000020
+2011_09_28 2011_09_28_drive_0095_sync 0000000021
+2011_09_28 2011_09_28_drive_0095_sync 0000000022
+2011_09_28 2011_09_28_drive_0095_sync 0000000023
+2011_09_28 2011_09_28_drive_0095_sync 0000000024
+2011_09_28 2011_09_28_drive_0095_sync 0000000025
+2011_09_28 2011_09_28_drive_0095_sync 0000000026
+2011_09_28 2011_09_28_drive_0095_sync 0000000027
+2011_09_28 2011_09_28_drive_0095_sync 0000000028
+2011_09_28 2011_09_28_drive_0095_sync 0000000029
+2011_09_28 2011_09_28_drive_0095_sync 0000000030
+2011_09_28 2011_09_28_drive_0095_sync 0000000031
+2011_09_28 2011_09_28_drive_0095_sync 0000000032
+2011_09_28 2011_09_28_drive_0095_sync 0000000033
+2011_09_28 2011_09_28_drive_0095_sync 0000000034
+2011_09_28 2011_09_28_drive_0095_sync 0000000035
+2011_09_28 2011_09_28_drive_0095_sync 0000000036
+2011_09_28 2011_09_28_drive_0095_sync 0000000037
+2011_09_28 2011_09_28_drive_0095_sync 0000000038
+2011_09_28 2011_09_28_drive_0095_sync 0000000039
+2011_09_28 2011_09_28_drive_0096_sync 0000000000
+2011_09_28 2011_09_28_drive_0096_sync 0000000001
+2011_09_28 2011_09_28_drive_0096_sync 0000000002
+2011_09_28 2011_09_28_drive_0096_sync 0000000003
+2011_09_28 2011_09_28_drive_0096_sync 0000000004
+2011_09_28 2011_09_28_drive_0096_sync 0000000005
+2011_09_28 2011_09_28_drive_0096_sync 0000000006
+2011_09_28 2011_09_28_drive_0096_sync 0000000007
+2011_09_28 2011_09_28_drive_0096_sync 0000000008
+2011_09_28 2011_09_28_drive_0096_sync 0000000009
+2011_09_28 2011_09_28_drive_0096_sync 0000000010
+2011_09_28 2011_09_28_drive_0096_sync 0000000011
+2011_09_28 2011_09_28_drive_0096_sync 0000000012
+2011_09_28 2011_09_28_drive_0096_sync 0000000013
+2011_09_28 2011_09_28_drive_0096_sync 0000000014
+2011_09_28 2011_09_28_drive_0096_sync 0000000015
+2011_09_28 2011_09_28_drive_0096_sync 0000000016
+2011_09_28 2011_09_28_drive_0096_sync 0000000017
+2011_09_28 2011_09_28_drive_0096_sync 0000000018
+2011_09_28 2011_09_28_drive_0096_sync 0000000019
+2011_09_28 2011_09_28_drive_0096_sync 0000000020
+2011_09_28 2011_09_28_drive_0096_sync 0000000021
+2011_09_28 2011_09_28_drive_0096_sync 0000000022
+2011_09_28 2011_09_28_drive_0096_sync 0000000023
+2011_09_28 2011_09_28_drive_0096_sync 0000000024
+2011_09_28 2011_09_28_drive_0096_sync 0000000025
+2011_09_28 2011_09_28_drive_0096_sync 0000000026
+2011_09_28 2011_09_28_drive_0096_sync 0000000027
+2011_09_28 2011_09_28_drive_0096_sync 0000000028
+2011_09_28 2011_09_28_drive_0096_sync 0000000029
+2011_09_28 2011_09_28_drive_0096_sync 0000000030
+2011_09_28 2011_09_28_drive_0096_sync 0000000031
+2011_09_28 2011_09_28_drive_0096_sync 0000000032
+2011_09_28 2011_09_28_drive_0096_sync 0000000033
+2011_09_28 2011_09_28_drive_0096_sync 0000000034
+2011_09_28 2011_09_28_drive_0096_sync 0000000035
+2011_09_28 2011_09_28_drive_0096_sync 0000000036
+2011_09_28 2011_09_28_drive_0096_sync 0000000037
+2011_09_28 2011_09_28_drive_0096_sync 0000000038
+2011_09_28 2011_09_28_drive_0096_sync 0000000039
+2011_09_28 2011_09_28_drive_0096_sync 0000000040
+2011_09_28 2011_09_28_drive_0096_sync 0000000041
+2011_09_28 2011_09_28_drive_0096_sync 0000000042
+2011_09_28 2011_09_28_drive_0096_sync 0000000043
+2011_09_28 2011_09_28_drive_0098_sync 0000000000
+2011_09_28 2011_09_28_drive_0098_sync 0000000001
+2011_09_28 2011_09_28_drive_0098_sync 0000000002
+2011_09_28 2011_09_28_drive_0098_sync 0000000003
+2011_09_28 2011_09_28_drive_0098_sync 0000000004
+2011_09_28 2011_09_28_drive_0098_sync 0000000005
+2011_09_28 2011_09_28_drive_0098_sync 0000000006
+2011_09_28 2011_09_28_drive_0098_sync 0000000007
+2011_09_28 2011_09_28_drive_0098_sync 0000000008
+2011_09_28 2011_09_28_drive_0098_sync 0000000009
+2011_09_28 2011_09_28_drive_0098_sync 0000000010
+2011_09_28 2011_09_28_drive_0098_sync 0000000011
+2011_09_28 2011_09_28_drive_0098_sync 0000000012
+2011_09_28 2011_09_28_drive_0098_sync 0000000013
+2011_09_28 2011_09_28_drive_0098_sync 0000000014
+2011_09_28 2011_09_28_drive_0098_sync 0000000015
+2011_09_28 2011_09_28_drive_0098_sync 0000000016
+2011_09_28 2011_09_28_drive_0098_sync 0000000017
+2011_09_28 2011_09_28_drive_0098_sync 0000000018
+2011_09_28 2011_09_28_drive_0098_sync 0000000019
+2011_09_28 2011_09_28_drive_0098_sync 0000000020
+2011_09_28 2011_09_28_drive_0098_sync 0000000021
+2011_09_28 2011_09_28_drive_0098_sync 0000000022
+2011_09_28 2011_09_28_drive_0098_sync 0000000023
+2011_09_28 2011_09_28_drive_0098_sync 0000000024
+2011_09_28 2011_09_28_drive_0098_sync 0000000025
+2011_09_28 2011_09_28_drive_0098_sync 0000000026
+2011_09_28 2011_09_28_drive_0098_sync 0000000027
+2011_09_28 2011_09_28_drive_0098_sync 0000000028
+2011_09_28 2011_09_28_drive_0098_sync 0000000029
+2011_09_28 2011_09_28_drive_0098_sync 0000000030
+2011_09_28 2011_09_28_drive_0098_sync 0000000031
+2011_09_28 2011_09_28_drive_0098_sync 0000000032
+2011_09_28 2011_09_28_drive_0098_sync 0000000033
+2011_09_28 2011_09_28_drive_0098_sync 0000000034
+2011_09_28 2011_09_28_drive_0098_sync 0000000035
+2011_09_28 2011_09_28_drive_0098_sync 0000000036
+2011_09_28 2011_09_28_drive_0098_sync 0000000037
+2011_09_28 2011_09_28_drive_0098_sync 0000000038
+2011_09_28 2011_09_28_drive_0098_sync 0000000039
+2011_09_28 2011_09_28_drive_0098_sync 0000000040
+2011_09_28 2011_09_28_drive_0098_sync 0000000041
+2011_09_28 2011_09_28_drive_0098_sync 0000000042
+2011_09_28 2011_09_28_drive_0100_sync 0000000000
+2011_09_28 2011_09_28_drive_0100_sync 0000000001
+2011_09_28 2011_09_28_drive_0100_sync 0000000002
+2011_09_28 2011_09_28_drive_0100_sync 0000000003
+2011_09_28 2011_09_28_drive_0100_sync 0000000004
+2011_09_28 2011_09_28_drive_0100_sync 0000000005
+2011_09_28 2011_09_28_drive_0100_sync 0000000006
+2011_09_28 2011_09_28_drive_0100_sync 0000000007
+2011_09_28 2011_09_28_drive_0100_sync 0000000008
+2011_09_28 2011_09_28_drive_0100_sync 0000000009
+2011_09_28 2011_09_28_drive_0100_sync 0000000010
+2011_09_28 2011_09_28_drive_0100_sync 0000000011
+2011_09_28 2011_09_28_drive_0100_sync 0000000012
+2011_09_28 2011_09_28_drive_0100_sync 0000000013
+2011_09_28 2011_09_28_drive_0100_sync 0000000014
+2011_09_28 2011_09_28_drive_0100_sync 0000000015
+2011_09_28 2011_09_28_drive_0100_sync 0000000016
+2011_09_28 2011_09_28_drive_0100_sync 0000000017
+2011_09_28 2011_09_28_drive_0100_sync 0000000018
+2011_09_28 2011_09_28_drive_0100_sync 0000000019
+2011_09_28 2011_09_28_drive_0100_sync 0000000020
+2011_09_28 2011_09_28_drive_0100_sync 0000000021
+2011_09_28 2011_09_28_drive_0100_sync 0000000022
+2011_09_28 2011_09_28_drive_0100_sync 0000000023
+2011_09_28 2011_09_28_drive_0100_sync 0000000024
+2011_09_28 2011_09_28_drive_0100_sync 0000000025
+2011_09_28 2011_09_28_drive_0100_sync 0000000026
+2011_09_28 2011_09_28_drive_0100_sync 0000000027
+2011_09_28 2011_09_28_drive_0100_sync 0000000028
+2011_09_28 2011_09_28_drive_0100_sync 0000000029
+2011_09_28 2011_09_28_drive_0100_sync 0000000030
+2011_09_28 2011_09_28_drive_0100_sync 0000000031
+2011_09_28 2011_09_28_drive_0100_sync 0000000032
+2011_09_28 2011_09_28_drive_0100_sync 0000000033
+2011_09_28 2011_09_28_drive_0100_sync 0000000034
+2011_09_28 2011_09_28_drive_0100_sync 0000000035
+2011_09_28 2011_09_28_drive_0100_sync 0000000036
+2011_09_28 2011_09_28_drive_0100_sync 0000000037
+2011_09_28 2011_09_28_drive_0100_sync 0000000038
+2011_09_28 2011_09_28_drive_0100_sync 0000000039
+2011_09_28 2011_09_28_drive_0100_sync 0000000040
+2011_09_28 2011_09_28_drive_0100_sync 0000000041
+2011_09_28 2011_09_28_drive_0100_sync 0000000042
+2011_09_28 2011_09_28_drive_0100_sync 0000000043
+2011_09_28 2011_09_28_drive_0100_sync 0000000044
+2011_09_28 2011_09_28_drive_0100_sync 0000000045
+2011_09_28 2011_09_28_drive_0100_sync 0000000046
+2011_09_28 2011_09_28_drive_0100_sync 0000000047
+2011_09_28 2011_09_28_drive_0100_sync 0000000048
+2011_09_28 2011_09_28_drive_0100_sync 0000000049
+2011_09_28 2011_09_28_drive_0100_sync 0000000050
+2011_09_28 2011_09_28_drive_0100_sync 0000000051
+2011_09_28 2011_09_28_drive_0100_sync 0000000052
+2011_09_28 2011_09_28_drive_0100_sync 0000000053
+2011_09_28 2011_09_28_drive_0100_sync 0000000054
+2011_09_28 2011_09_28_drive_0100_sync 0000000055
+2011_09_28 2011_09_28_drive_0100_sync 0000000056
+2011_09_28 2011_09_28_drive_0100_sync 0000000057
+2011_09_28 2011_09_28_drive_0100_sync 0000000058
+2011_09_28 2011_09_28_drive_0100_sync 0000000059
+2011_09_28 2011_09_28_drive_0100_sync 0000000060
+2011_09_28 2011_09_28_drive_0100_sync 0000000061
+2011_09_28 2011_09_28_drive_0100_sync 0000000062
+2011_09_28 2011_09_28_drive_0100_sync 0000000063
+2011_09_28 2011_09_28_drive_0100_sync 0000000064
+2011_09_28 2011_09_28_drive_0100_sync 0000000065
+2011_09_28 2011_09_28_drive_0100_sync 0000000066
+2011_09_28 2011_09_28_drive_0100_sync 0000000067
+2011_09_28 2011_09_28_drive_0100_sync 0000000068
+2011_09_28 2011_09_28_drive_0100_sync 0000000069
+2011_09_28 2011_09_28_drive_0100_sync 0000000070
+2011_09_28 2011_09_28_drive_0100_sync 0000000071
+2011_09_28 2011_09_28_drive_0100_sync 0000000072
+2011_09_28 2011_09_28_drive_0100_sync 0000000073
+2011_09_28 2011_09_28_drive_0100_sync 0000000074
+2011_09_28 2011_09_28_drive_0100_sync 0000000075
+2011_09_28 2011_09_28_drive_0102_sync 0000000000
+2011_09_28 2011_09_28_drive_0102_sync 0000000001
+2011_09_28 2011_09_28_drive_0102_sync 0000000002
+2011_09_28 2011_09_28_drive_0102_sync 0000000003
+2011_09_28 2011_09_28_drive_0102_sync 0000000004
+2011_09_28 2011_09_28_drive_0102_sync 0000000005
+2011_09_28 2011_09_28_drive_0102_sync 0000000006
+2011_09_28 2011_09_28_drive_0102_sync 0000000007
+2011_09_28 2011_09_28_drive_0102_sync 0000000008
+2011_09_28 2011_09_28_drive_0102_sync 0000000009
+2011_09_28 2011_09_28_drive_0102_sync 0000000010
+2011_09_28 2011_09_28_drive_0102_sync 0000000011
+2011_09_28 2011_09_28_drive_0102_sync 0000000012
+2011_09_28 2011_09_28_drive_0102_sync 0000000013
+2011_09_28 2011_09_28_drive_0102_sync 0000000014
+2011_09_28 2011_09_28_drive_0102_sync 0000000015
+2011_09_28 2011_09_28_drive_0102_sync 0000000016
+2011_09_28 2011_09_28_drive_0102_sync 0000000017
+2011_09_28 2011_09_28_drive_0102_sync 0000000018
+2011_09_28 2011_09_28_drive_0102_sync 0000000019
+2011_09_28 2011_09_28_drive_0102_sync 0000000020
+2011_09_28 2011_09_28_drive_0102_sync 0000000021
+2011_09_28 2011_09_28_drive_0102_sync 0000000022
+2011_09_28 2011_09_28_drive_0102_sync 0000000023
+2011_09_28 2011_09_28_drive_0102_sync 0000000024
+2011_09_28 2011_09_28_drive_0102_sync 0000000025
+2011_09_28 2011_09_28_drive_0102_sync 0000000026
+2011_09_28 2011_09_28_drive_0102_sync 0000000027
+2011_09_28 2011_09_28_drive_0102_sync 0000000028
+2011_09_28 2011_09_28_drive_0102_sync 0000000029
+2011_09_28 2011_09_28_drive_0102_sync 0000000030
+2011_09_28 2011_09_28_drive_0102_sync 0000000031
+2011_09_28 2011_09_28_drive_0102_sync 0000000032
+2011_09_28 2011_09_28_drive_0102_sync 0000000033
+2011_09_28 2011_09_28_drive_0102_sync 0000000034
+2011_09_28 2011_09_28_drive_0102_sync 0000000035
+2011_09_28 2011_09_28_drive_0102_sync 0000000036
+2011_09_28 2011_09_28_drive_0102_sync 0000000037
+2011_09_28 2011_09_28_drive_0102_sync 0000000038
+2011_09_28 2011_09_28_drive_0102_sync 0000000039
+2011_09_28 2011_09_28_drive_0102_sync 0000000040
+2011_09_28 2011_09_28_drive_0102_sync 0000000041
+2011_09_28 2011_09_28_drive_0102_sync 0000000042
+2011_09_28 2011_09_28_drive_0102_sync 0000000043
+2011_09_28 2011_09_28_drive_0102_sync 0000000044
+2011_09_28 2011_09_28_drive_0103_sync 0000000000
+2011_09_28 2011_09_28_drive_0103_sync 0000000001
+2011_09_28 2011_09_28_drive_0103_sync 0000000002
+2011_09_28 2011_09_28_drive_0103_sync 0000000003
+2011_09_28 2011_09_28_drive_0103_sync 0000000004
+2011_09_28 2011_09_28_drive_0103_sync 0000000005
+2011_09_28 2011_09_28_drive_0103_sync 0000000006
+2011_09_28 2011_09_28_drive_0103_sync 0000000007
+2011_09_28 2011_09_28_drive_0103_sync 0000000008
+2011_09_28 2011_09_28_drive_0103_sync 0000000009
+2011_09_28 2011_09_28_drive_0103_sync 0000000010
+2011_09_28 2011_09_28_drive_0103_sync 0000000011
+2011_09_28 2011_09_28_drive_0103_sync 0000000012
+2011_09_28 2011_09_28_drive_0103_sync 0000000013
+2011_09_28 2011_09_28_drive_0103_sync 0000000014
+2011_09_28 2011_09_28_drive_0103_sync 0000000015
+2011_09_28 2011_09_28_drive_0103_sync 0000000016
+2011_09_28 2011_09_28_drive_0103_sync 0000000017
+2011_09_28 2011_09_28_drive_0103_sync 0000000018
+2011_09_28 2011_09_28_drive_0103_sync 0000000019
+2011_09_28 2011_09_28_drive_0103_sync 0000000020
+2011_09_28 2011_09_28_drive_0103_sync 0000000021
+2011_09_28 2011_09_28_drive_0103_sync 0000000022
+2011_09_28 2011_09_28_drive_0103_sync 0000000023
+2011_09_28 2011_09_28_drive_0103_sync 0000000024
+2011_09_28 2011_09_28_drive_0103_sync 0000000025
+2011_09_28 2011_09_28_drive_0103_sync 0000000026
+2011_09_28 2011_09_28_drive_0103_sync 0000000027
+2011_09_28 2011_09_28_drive_0103_sync 0000000028
+2011_09_28 2011_09_28_drive_0103_sync 0000000029
+2011_09_28 2011_09_28_drive_0103_sync 0000000030
+2011_09_28 2011_09_28_drive_0103_sync 0000000031
+2011_09_28 2011_09_28_drive_0103_sync 0000000032
+2011_09_28 2011_09_28_drive_0103_sync 0000000033
+2011_09_28 2011_09_28_drive_0103_sync 0000000034
+2011_09_28 2011_09_28_drive_0103_sync 0000000035
+2011_09_28 2011_09_28_drive_0103_sync 0000000036
+2011_09_28 2011_09_28_drive_0104_sync 0000000000
+2011_09_28 2011_09_28_drive_0104_sync 0000000001
+2011_09_28 2011_09_28_drive_0104_sync 0000000002
+2011_09_28 2011_09_28_drive_0104_sync 0000000003
+2011_09_28 2011_09_28_drive_0104_sync 0000000004
+2011_09_28 2011_09_28_drive_0104_sync 0000000005
+2011_09_28 2011_09_28_drive_0104_sync 0000000006
+2011_09_28 2011_09_28_drive_0104_sync 0000000007
+2011_09_28 2011_09_28_drive_0104_sync 0000000008
+2011_09_28 2011_09_28_drive_0104_sync 0000000009
+2011_09_28 2011_09_28_drive_0104_sync 0000000010
+2011_09_28 2011_09_28_drive_0104_sync 0000000011
+2011_09_28 2011_09_28_drive_0104_sync 0000000012
+2011_09_28 2011_09_28_drive_0104_sync 0000000013
+2011_09_28 2011_09_28_drive_0104_sync 0000000014
+2011_09_28 2011_09_28_drive_0104_sync 0000000015
+2011_09_28 2011_09_28_drive_0104_sync 0000000016
+2011_09_28 2011_09_28_drive_0104_sync 0000000017
+2011_09_28 2011_09_28_drive_0104_sync 0000000018
+2011_09_28 2011_09_28_drive_0104_sync 0000000019
+2011_09_28 2011_09_28_drive_0104_sync 0000000020
+2011_09_28 2011_09_28_drive_0104_sync 0000000021
+2011_09_28 2011_09_28_drive_0104_sync 0000000022
+2011_09_28 2011_09_28_drive_0104_sync 0000000023
+2011_09_28 2011_09_28_drive_0104_sync 0000000024
+2011_09_28 2011_09_28_drive_0104_sync 0000000025
+2011_09_28 2011_09_28_drive_0104_sync 0000000026
+2011_09_28 2011_09_28_drive_0104_sync 0000000027
+2011_09_28 2011_09_28_drive_0104_sync 0000000028
+2011_09_28 2011_09_28_drive_0104_sync 0000000029
+2011_09_28 2011_09_28_drive_0104_sync 0000000030
+2011_09_28 2011_09_28_drive_0104_sync 0000000031
+2011_09_28 2011_09_28_drive_0104_sync 0000000032
+2011_09_28 2011_09_28_drive_0104_sync 0000000033
+2011_09_28 2011_09_28_drive_0104_sync 0000000034
+2011_09_28 2011_09_28_drive_0104_sync 0000000035
+2011_09_28 2011_09_28_drive_0104_sync 0000000036
+2011_09_28 2011_09_28_drive_0104_sync 0000000037
+2011_09_28 2011_09_28_drive_0104_sync 0000000038
+2011_09_28 2011_09_28_drive_0104_sync 0000000039
+2011_09_28 2011_09_28_drive_0104_sync 0000000040
+2011_09_28 2011_09_28_drive_0104_sync 0000000041
+2011_09_28 2011_09_28_drive_0104_sync 0000000042
+2011_09_28 2011_09_28_drive_0106_sync 0000000000
+2011_09_28 2011_09_28_drive_0106_sync 0000000001
+2011_09_28 2011_09_28_drive_0106_sync 0000000002
+2011_09_28 2011_09_28_drive_0106_sync 0000000003
+2011_09_28 2011_09_28_drive_0106_sync 0000000004
+2011_09_28 2011_09_28_drive_0106_sync 0000000005
+2011_09_28 2011_09_28_drive_0106_sync 0000000006
+2011_09_28 2011_09_28_drive_0106_sync 0000000007
+2011_09_28 2011_09_28_drive_0106_sync 0000000008
+2011_09_28 2011_09_28_drive_0106_sync 0000000009
+2011_09_28 2011_09_28_drive_0106_sync 0000000010
+2011_09_28 2011_09_28_drive_0106_sync 0000000011
+2011_09_28 2011_09_28_drive_0106_sync 0000000012
+2011_09_28 2011_09_28_drive_0106_sync 0000000013
+2011_09_28 2011_09_28_drive_0106_sync 0000000014
+2011_09_28 2011_09_28_drive_0106_sync 0000000015
+2011_09_28 2011_09_28_drive_0106_sync 0000000016
+2011_09_28 2011_09_28_drive_0106_sync 0000000017
+2011_09_28 2011_09_28_drive_0106_sync 0000000018
+2011_09_28 2011_09_28_drive_0106_sync 0000000019
+2011_09_28 2011_09_28_drive_0106_sync 0000000020
+2011_09_28 2011_09_28_drive_0106_sync 0000000021
+2011_09_28 2011_09_28_drive_0106_sync 0000000022
+2011_09_28 2011_09_28_drive_0106_sync 0000000023
+2011_09_28 2011_09_28_drive_0106_sync 0000000024
+2011_09_28 2011_09_28_drive_0106_sync 0000000025
+2011_09_28 2011_09_28_drive_0106_sync 0000000026
+2011_09_28 2011_09_28_drive_0106_sync 0000000027
+2011_09_28 2011_09_28_drive_0106_sync 0000000028
+2011_09_28 2011_09_28_drive_0106_sync 0000000029
+2011_09_28 2011_09_28_drive_0106_sync 0000000030
+2011_09_28 2011_09_28_drive_0106_sync 0000000031
+2011_09_28 2011_09_28_drive_0106_sync 0000000032
+2011_09_28 2011_09_28_drive_0106_sync 0000000033
+2011_09_28 2011_09_28_drive_0106_sync 0000000034
+2011_09_28 2011_09_28_drive_0106_sync 0000000035
+2011_09_28 2011_09_28_drive_0106_sync 0000000036
+2011_09_28 2011_09_28_drive_0106_sync 0000000037
+2011_09_28 2011_09_28_drive_0106_sync 0000000038
+2011_09_28 2011_09_28_drive_0106_sync 0000000039
+2011_09_28 2011_09_28_drive_0106_sync 0000000040
+2011_09_28 2011_09_28_drive_0106_sync 0000000041
+2011_09_28 2011_09_28_drive_0106_sync 0000000042
+2011_09_28 2011_09_28_drive_0106_sync 0000000043
+2011_09_28 2011_09_28_drive_0106_sync 0000000044
+2011_09_28 2011_09_28_drive_0106_sync 0000000045
+2011_09_28 2011_09_28_drive_0106_sync 0000000046
+2011_09_28 2011_09_28_drive_0106_sync 0000000047
+2011_09_28 2011_09_28_drive_0106_sync 0000000048
+2011_09_28 2011_09_28_drive_0106_sync 0000000049
+2011_09_28 2011_09_28_drive_0106_sync 0000000050
+2011_09_28 2011_09_28_drive_0106_sync 0000000051
+2011_09_28 2011_09_28_drive_0106_sync 0000000052
+2011_09_28 2011_09_28_drive_0106_sync 0000000053
+2011_09_28 2011_09_28_drive_0106_sync 0000000054
+2011_09_28 2011_09_28_drive_0106_sync 0000000055
+2011_09_28 2011_09_28_drive_0106_sync 0000000056
+2011_09_28 2011_09_28_drive_0106_sync 0000000057
+2011_09_28 2011_09_28_drive_0106_sync 0000000058
+2011_09_28 2011_09_28_drive_0106_sync 0000000059
+2011_09_28 2011_09_28_drive_0106_sync 0000000060
+2011_09_28 2011_09_28_drive_0106_sync 0000000061
+2011_09_28 2011_09_28_drive_0106_sync 0000000062
+2011_09_28 2011_09_28_drive_0106_sync 0000000063
+2011_09_28 2011_09_28_drive_0106_sync 0000000064
+2011_09_28 2011_09_28_drive_0106_sync 0000000065
+2011_09_28 2011_09_28_drive_0106_sync 0000000066
+2011_09_28 2011_09_28_drive_0106_sync 0000000067
+2011_09_28 2011_09_28_drive_0106_sync 0000000068
+2011_09_28 2011_09_28_drive_0106_sync 0000000069
+2011_09_28 2011_09_28_drive_0106_sync 0000000070
+2011_09_28 2011_09_28_drive_0106_sync 0000000071
+2011_09_28 2011_09_28_drive_0106_sync 0000000072
+2011_09_28 2011_09_28_drive_0106_sync 0000000073
+2011_09_28 2011_09_28_drive_0108_sync 0000000000
+2011_09_28 2011_09_28_drive_0108_sync 0000000001
+2011_09_28 2011_09_28_drive_0108_sync 0000000002
+2011_09_28 2011_09_28_drive_0108_sync 0000000003
+2011_09_28 2011_09_28_drive_0108_sync 0000000004
+2011_09_28 2011_09_28_drive_0108_sync 0000000005
+2011_09_28 2011_09_28_drive_0108_sync 0000000006
+2011_09_28 2011_09_28_drive_0108_sync 0000000007
+2011_09_28 2011_09_28_drive_0108_sync 0000000008
+2011_09_28 2011_09_28_drive_0108_sync 0000000009
+2011_09_28 2011_09_28_drive_0108_sync 0000000010
+2011_09_28 2011_09_28_drive_0108_sync 0000000011
+2011_09_28 2011_09_28_drive_0108_sync 0000000012
+2011_09_28 2011_09_28_drive_0108_sync 0000000013
+2011_09_28 2011_09_28_drive_0108_sync 0000000014
+2011_09_28 2011_09_28_drive_0108_sync 0000000015
+2011_09_28 2011_09_28_drive_0108_sync 0000000016
+2011_09_28 2011_09_28_drive_0108_sync 0000000017
+2011_09_28 2011_09_28_drive_0108_sync 0000000018
+2011_09_28 2011_09_28_drive_0108_sync 0000000019
+2011_09_28 2011_09_28_drive_0108_sync 0000000020
+2011_09_28 2011_09_28_drive_0108_sync 0000000021
+2011_09_28 2011_09_28_drive_0108_sync 0000000022
+2011_09_28 2011_09_28_drive_0108_sync 0000000023
+2011_09_28 2011_09_28_drive_0108_sync 0000000024
+2011_09_28 2011_09_28_drive_0108_sync 0000000025
+2011_09_28 2011_09_28_drive_0108_sync 0000000026
+2011_09_28 2011_09_28_drive_0108_sync 0000000027
+2011_09_28 2011_09_28_drive_0108_sync 0000000028
+2011_09_28 2011_09_28_drive_0108_sync 0000000029
+2011_09_28 2011_09_28_drive_0108_sync 0000000030
+2011_09_28 2011_09_28_drive_0108_sync 0000000031
+2011_09_28 2011_09_28_drive_0108_sync 0000000032
+2011_09_28 2011_09_28_drive_0108_sync 0000000033
+2011_09_28 2011_09_28_drive_0108_sync 0000000034
+2011_09_28 2011_09_28_drive_0108_sync 0000000035
+2011_09_28 2011_09_28_drive_0108_sync 0000000036
+2011_09_28 2011_09_28_drive_0108_sync 0000000037
+2011_09_28 2011_09_28_drive_0108_sync 0000000038
+2011_09_28 2011_09_28_drive_0108_sync 0000000039
+2011_09_28 2011_09_28_drive_0108_sync 0000000040
+2011_09_28 2011_09_28_drive_0108_sync 0000000041
+2011_09_28 2011_09_28_drive_0108_sync 0000000042
+2011_09_28 2011_09_28_drive_0108_sync 0000000043
+2011_09_28 2011_09_28_drive_0108_sync 0000000044
+2011_09_28 2011_09_28_drive_0108_sync 0000000045
+2011_09_28 2011_09_28_drive_0108_sync 0000000046
+2011_09_28 2011_09_28_drive_0110_sync 0000000000
+2011_09_28 2011_09_28_drive_0110_sync 0000000001
+2011_09_28 2011_09_28_drive_0110_sync 0000000002
+2011_09_28 2011_09_28_drive_0110_sync 0000000003
+2011_09_28 2011_09_28_drive_0110_sync 0000000004
+2011_09_28 2011_09_28_drive_0110_sync 0000000005
+2011_09_28 2011_09_28_drive_0110_sync 0000000006
+2011_09_28 2011_09_28_drive_0110_sync 0000000007
+2011_09_28 2011_09_28_drive_0110_sync 0000000008
+2011_09_28 2011_09_28_drive_0110_sync 0000000009
+2011_09_28 2011_09_28_drive_0110_sync 0000000010
+2011_09_28 2011_09_28_drive_0110_sync 0000000011
+2011_09_28 2011_09_28_drive_0110_sync 0000000012
+2011_09_28 2011_09_28_drive_0110_sync 0000000013
+2011_09_28 2011_09_28_drive_0110_sync 0000000014
+2011_09_28 2011_09_28_drive_0110_sync 0000000015
+2011_09_28 2011_09_28_drive_0110_sync 0000000016
+2011_09_28 2011_09_28_drive_0110_sync 0000000017
+2011_09_28 2011_09_28_drive_0110_sync 0000000018
+2011_09_28 2011_09_28_drive_0110_sync 0000000019
+2011_09_28 2011_09_28_drive_0110_sync 0000000020
+2011_09_28 2011_09_28_drive_0110_sync 0000000021
+2011_09_28 2011_09_28_drive_0110_sync 0000000022
+2011_09_28 2011_09_28_drive_0110_sync 0000000023
+2011_09_28 2011_09_28_drive_0110_sync 0000000024
+2011_09_28 2011_09_28_drive_0110_sync 0000000025
+2011_09_28 2011_09_28_drive_0110_sync 0000000026
+2011_09_28 2011_09_28_drive_0110_sync 0000000027
+2011_09_28 2011_09_28_drive_0110_sync 0000000028
+2011_09_28 2011_09_28_drive_0110_sync 0000000029
+2011_09_28 2011_09_28_drive_0110_sync 0000000030
+2011_09_28 2011_09_28_drive_0110_sync 0000000031
+2011_09_28 2011_09_28_drive_0110_sync 0000000032
+2011_09_28 2011_09_28_drive_0110_sync 0000000033
+2011_09_28 2011_09_28_drive_0110_sync 0000000034
+2011_09_28 2011_09_28_drive_0110_sync 0000000035
+2011_09_28 2011_09_28_drive_0110_sync 0000000036
+2011_09_28 2011_09_28_drive_0110_sync 0000000037
+2011_09_28 2011_09_28_drive_0110_sync 0000000038
+2011_09_28 2011_09_28_drive_0110_sync 0000000039
+2011_09_28 2011_09_28_drive_0110_sync 0000000040
+2011_09_28 2011_09_28_drive_0110_sync 0000000041
+2011_09_28 2011_09_28_drive_0110_sync 0000000042
+2011_09_28 2011_09_28_drive_0110_sync 0000000043
+2011_09_28 2011_09_28_drive_0110_sync 0000000044
+2011_09_28 2011_09_28_drive_0110_sync 0000000045
+2011_09_28 2011_09_28_drive_0110_sync 0000000046
+2011_09_28 2011_09_28_drive_0110_sync 0000000047
+2011_09_28 2011_09_28_drive_0110_sync 0000000048
+2011_09_28 2011_09_28_drive_0110_sync 0000000049
+2011_09_28 2011_09_28_drive_0110_sync 0000000050
+2011_09_28 2011_09_28_drive_0110_sync 0000000051
+2011_09_28 2011_09_28_drive_0110_sync 0000000052
+2011_09_28 2011_09_28_drive_0110_sync 0000000053
+2011_09_28 2011_09_28_drive_0110_sync 0000000054
+2011_09_28 2011_09_28_drive_0110_sync 0000000055
+2011_09_28 2011_09_28_drive_0110_sync 0000000056
+2011_09_28 2011_09_28_drive_0110_sync 0000000057
+2011_09_28 2011_09_28_drive_0110_sync 0000000058
+2011_09_28 2011_09_28_drive_0110_sync 0000000059
+2011_09_28 2011_09_28_drive_0110_sync 0000000060
+2011_09_28 2011_09_28_drive_0110_sync 0000000061
+2011_09_28 2011_09_28_drive_0113_sync 0000000000
+2011_09_28 2011_09_28_drive_0113_sync 0000000001
+2011_09_28 2011_09_28_drive_0113_sync 0000000002
+2011_09_28 2011_09_28_drive_0113_sync 0000000003
+2011_09_28 2011_09_28_drive_0113_sync 0000000004
+2011_09_28 2011_09_28_drive_0113_sync 0000000005
+2011_09_28 2011_09_28_drive_0113_sync 0000000006
+2011_09_28 2011_09_28_drive_0113_sync 0000000007
+2011_09_28 2011_09_28_drive_0113_sync 0000000008
+2011_09_28 2011_09_28_drive_0113_sync 0000000009
+2011_09_28 2011_09_28_drive_0113_sync 0000000010
+2011_09_28 2011_09_28_drive_0113_sync 0000000011
+2011_09_28 2011_09_28_drive_0113_sync 0000000012
+2011_09_28 2011_09_28_drive_0113_sync 0000000013
+2011_09_28 2011_09_28_drive_0113_sync 0000000014
+2011_09_28 2011_09_28_drive_0113_sync 0000000015
+2011_09_28 2011_09_28_drive_0113_sync 0000000016
+2011_09_28 2011_09_28_drive_0113_sync 0000000017
+2011_09_28 2011_09_28_drive_0113_sync 0000000018
+2011_09_28 2011_09_28_drive_0113_sync 0000000019
+2011_09_28 2011_09_28_drive_0113_sync 0000000020
+2011_09_28 2011_09_28_drive_0113_sync 0000000021
+2011_09_28 2011_09_28_drive_0113_sync 0000000022
+2011_09_28 2011_09_28_drive_0113_sync 0000000023
+2011_09_28 2011_09_28_drive_0113_sync 0000000024
+2011_09_28 2011_09_28_drive_0113_sync 0000000025
+2011_09_28 2011_09_28_drive_0113_sync 0000000026
+2011_09_28 2011_09_28_drive_0113_sync 0000000027
+2011_09_28 2011_09_28_drive_0113_sync 0000000028
+2011_09_28 2011_09_28_drive_0113_sync 0000000029
+2011_09_28 2011_09_28_drive_0113_sync 0000000030
+2011_09_28 2011_09_28_drive_0113_sync 0000000031
+2011_09_28 2011_09_28_drive_0113_sync 0000000032
+2011_09_28 2011_09_28_drive_0113_sync 0000000033
+2011_09_28 2011_09_28_drive_0113_sync 0000000034
+2011_09_28 2011_09_28_drive_0113_sync 0000000035
+2011_09_28 2011_09_28_drive_0113_sync 0000000036
+2011_09_28 2011_09_28_drive_0113_sync 0000000037
+2011_09_28 2011_09_28_drive_0113_sync 0000000038
+2011_09_28 2011_09_28_drive_0113_sync 0000000039
+2011_09_28 2011_09_28_drive_0113_sync 0000000040
+2011_09_28 2011_09_28_drive_0113_sync 0000000041
+2011_09_28 2011_09_28_drive_0113_sync 0000000042
+2011_09_28 2011_09_28_drive_0113_sync 0000000043
+2011_09_28 2011_09_28_drive_0113_sync 0000000044
+2011_09_28 2011_09_28_drive_0113_sync 0000000045
+2011_09_28 2011_09_28_drive_0113_sync 0000000046
+2011_09_28 2011_09_28_drive_0113_sync 0000000047
+2011_09_28 2011_09_28_drive_0113_sync 0000000048
+2011_09_28 2011_09_28_drive_0113_sync 0000000049
+2011_09_28 2011_09_28_drive_0113_sync 0000000050
+2011_09_28 2011_09_28_drive_0113_sync 0000000051
+2011_09_28 2011_09_28_drive_0113_sync 0000000052
+2011_09_28 2011_09_28_drive_0113_sync 0000000053
+2011_09_28 2011_09_28_drive_0113_sync 0000000054
+2011_09_28 2011_09_28_drive_0113_sync 0000000055
+2011_09_28 2011_09_28_drive_0113_sync 0000000056
+2011_09_28 2011_09_28_drive_0113_sync 0000000057
+2011_09_28 2011_09_28_drive_0113_sync 0000000058
+2011_09_28 2011_09_28_drive_0113_sync 0000000059
+2011_09_28 2011_09_28_drive_0113_sync 0000000060
+2011_09_28 2011_09_28_drive_0113_sync 0000000061
+2011_09_28 2011_09_28_drive_0113_sync 0000000062
+2011_09_28 2011_09_28_drive_0113_sync 0000000063
+2011_09_28 2011_09_28_drive_0113_sync 0000000064
+2011_09_28 2011_09_28_drive_0113_sync 0000000065
+2011_09_28 2011_09_28_drive_0113_sync 0000000066
+2011_09_28 2011_09_28_drive_0113_sync 0000000067
+2011_09_28 2011_09_28_drive_0113_sync 0000000068
+2011_09_28 2011_09_28_drive_0113_sync 0000000069
+2011_09_28 2011_09_28_drive_0113_sync 0000000070
+2011_09_28 2011_09_28_drive_0113_sync 0000000071
+2011_09_28 2011_09_28_drive_0113_sync 0000000072
+2011_09_28 2011_09_28_drive_0117_sync 0000000000
+2011_09_28 2011_09_28_drive_0117_sync 0000000001
+2011_09_28 2011_09_28_drive_0117_sync 0000000002
+2011_09_28 2011_09_28_drive_0117_sync 0000000003
+2011_09_28 2011_09_28_drive_0117_sync 0000000004
+2011_09_28 2011_09_28_drive_0117_sync 0000000005
+2011_09_28 2011_09_28_drive_0117_sync 0000000006
+2011_09_28 2011_09_28_drive_0117_sync 0000000007
+2011_09_28 2011_09_28_drive_0117_sync 0000000008
+2011_09_28 2011_09_28_drive_0117_sync 0000000009
+2011_09_28 2011_09_28_drive_0117_sync 0000000010
+2011_09_28 2011_09_28_drive_0117_sync 0000000011
+2011_09_28 2011_09_28_drive_0117_sync 0000000012
+2011_09_28 2011_09_28_drive_0117_sync 0000000013
+2011_09_28 2011_09_28_drive_0117_sync 0000000014
+2011_09_28 2011_09_28_drive_0117_sync 0000000015
+2011_09_28 2011_09_28_drive_0117_sync 0000000016
+2011_09_28 2011_09_28_drive_0117_sync 0000000017
+2011_09_28 2011_09_28_drive_0117_sync 0000000018
+2011_09_28 2011_09_28_drive_0117_sync 0000000019
+2011_09_28 2011_09_28_drive_0117_sync 0000000020
+2011_09_28 2011_09_28_drive_0117_sync 0000000021
+2011_09_28 2011_09_28_drive_0117_sync 0000000022
+2011_09_28 2011_09_28_drive_0117_sync 0000000023
+2011_09_28 2011_09_28_drive_0117_sync 0000000024
+2011_09_28 2011_09_28_drive_0117_sync 0000000025
+2011_09_28 2011_09_28_drive_0117_sync 0000000026
+2011_09_28 2011_09_28_drive_0117_sync 0000000027
+2011_09_28 2011_09_28_drive_0117_sync 0000000028
+2011_09_28 2011_09_28_drive_0117_sync 0000000029
+2011_09_28 2011_09_28_drive_0117_sync 0000000030
+2011_09_28 2011_09_28_drive_0117_sync 0000000031
+2011_09_28 2011_09_28_drive_0117_sync 0000000032
+2011_09_28 2011_09_28_drive_0117_sync 0000000033
+2011_09_28 2011_09_28_drive_0117_sync 0000000034
+2011_09_28 2011_09_28_drive_0119_sync 0000000000
+2011_09_28 2011_09_28_drive_0119_sync 0000000001
+2011_09_28 2011_09_28_drive_0119_sync 0000000002
+2011_09_28 2011_09_28_drive_0119_sync 0000000003
+2011_09_28 2011_09_28_drive_0119_sync 0000000004
+2011_09_28 2011_09_28_drive_0119_sync 0000000005
+2011_09_28 2011_09_28_drive_0119_sync 0000000006
+2011_09_28 2011_09_28_drive_0119_sync 0000000007
+2011_09_28 2011_09_28_drive_0119_sync 0000000008
+2011_09_28 2011_09_28_drive_0119_sync 0000000009
+2011_09_28 2011_09_28_drive_0119_sync 0000000010
+2011_09_28 2011_09_28_drive_0119_sync 0000000011
+2011_09_28 2011_09_28_drive_0119_sync 0000000012
+2011_09_28 2011_09_28_drive_0119_sync 0000000013
+2011_09_28 2011_09_28_drive_0119_sync 0000000014
+2011_09_28 2011_09_28_drive_0119_sync 0000000015
+2011_09_28 2011_09_28_drive_0119_sync 0000000016
+2011_09_28 2011_09_28_drive_0119_sync 0000000017
+2011_09_28 2011_09_28_drive_0119_sync 0000000018
+2011_09_28 2011_09_28_drive_0119_sync 0000000019
+2011_09_28 2011_09_28_drive_0119_sync 0000000020
+2011_09_28 2011_09_28_drive_0119_sync 0000000021
+2011_09_28 2011_09_28_drive_0119_sync 0000000022
+2011_09_28 2011_09_28_drive_0119_sync 0000000023
+2011_09_28 2011_09_28_drive_0119_sync 0000000024
+2011_09_28 2011_09_28_drive_0119_sync 0000000025
+2011_09_28 2011_09_28_drive_0119_sync 0000000026
+2011_09_28 2011_09_28_drive_0119_sync 0000000027
+2011_09_28 2011_09_28_drive_0119_sync 0000000028
+2011_09_28 2011_09_28_drive_0119_sync 0000000029
+2011_09_28 2011_09_28_drive_0119_sync 0000000030
+2011_09_28 2011_09_28_drive_0119_sync 0000000031
+2011_09_28 2011_09_28_drive_0119_sync 0000000032
+2011_09_28 2011_09_28_drive_0119_sync 0000000033
+2011_09_28 2011_09_28_drive_0119_sync 0000000034
+2011_09_28 2011_09_28_drive_0119_sync 0000000035
+2011_09_28 2011_09_28_drive_0119_sync 0000000036
+2011_09_28 2011_09_28_drive_0119_sync 0000000037
+2011_09_28 2011_09_28_drive_0119_sync 0000000038
+2011_09_28 2011_09_28_drive_0119_sync 0000000039
+2011_09_28 2011_09_28_drive_0119_sync 0000000040
+2011_09_28 2011_09_28_drive_0119_sync 0000000041
+2011_09_28 2011_09_28_drive_0119_sync 0000000042
+2011_09_28 2011_09_28_drive_0119_sync 0000000043
+2011_09_28 2011_09_28_drive_0119_sync 0000000044
+2011_09_28 2011_09_28_drive_0119_sync 0000000045
+2011_09_28 2011_09_28_drive_0119_sync 0000000046
+2011_09_28 2011_09_28_drive_0119_sync 0000000047
+2011_09_28 2011_09_28_drive_0119_sync 0000000048
+2011_09_28 2011_09_28_drive_0119_sync 0000000049
+2011_09_28 2011_09_28_drive_0119_sync 0000000050
+2011_09_28 2011_09_28_drive_0119_sync 0000000051
+2011_09_28 2011_09_28_drive_0119_sync 0000000052
+2011_09_28 2011_09_28_drive_0119_sync 0000000053
+2011_09_28 2011_09_28_drive_0119_sync 0000000054
+2011_09_28 2011_09_28_drive_0119_sync 0000000055
+2011_09_28 2011_09_28_drive_0119_sync 0000000056
+2011_09_28 2011_09_28_drive_0119_sync 0000000057
+2011_09_28 2011_09_28_drive_0119_sync 0000000058
+2011_09_28 2011_09_28_drive_0119_sync 0000000059
+2011_09_28 2011_09_28_drive_0119_sync 0000000060
+2011_09_28 2011_09_28_drive_0119_sync 0000000061
+2011_09_28 2011_09_28_drive_0119_sync 0000000062
+2011_09_28 2011_09_28_drive_0119_sync 0000000063
+2011_09_28 2011_09_28_drive_0119_sync 0000000064
+2011_09_28 2011_09_28_drive_0119_sync 0000000065
+2011_09_28 2011_09_28_drive_0119_sync 0000000066
+2011_09_28 2011_09_28_drive_0119_sync 0000000067
+2011_09_28 2011_09_28_drive_0119_sync 0000000068
+2011_09_28 2011_09_28_drive_0119_sync 0000000069
+2011_09_28 2011_09_28_drive_0119_sync 0000000070
+2011_09_28 2011_09_28_drive_0119_sync 0000000071
+2011_09_28 2011_09_28_drive_0119_sync 0000000072
+2011_09_28 2011_09_28_drive_0119_sync 0000000073
+2011_09_28 2011_09_28_drive_0119_sync 0000000074
+2011_09_28 2011_09_28_drive_0119_sync 0000000075
+2011_09_28 2011_09_28_drive_0121_sync 0000000000
+2011_09_28 2011_09_28_drive_0121_sync 0000000001
+2011_09_28 2011_09_28_drive_0121_sync 0000000002
+2011_09_28 2011_09_28_drive_0121_sync 0000000003
+2011_09_28 2011_09_28_drive_0121_sync 0000000004
+2011_09_28 2011_09_28_drive_0121_sync 0000000005
+2011_09_28 2011_09_28_drive_0121_sync 0000000006
+2011_09_28 2011_09_28_drive_0121_sync 0000000007
+2011_09_28 2011_09_28_drive_0121_sync 0000000008
+2011_09_28 2011_09_28_drive_0121_sync 0000000009
+2011_09_28 2011_09_28_drive_0121_sync 0000000010
+2011_09_28 2011_09_28_drive_0121_sync 0000000011
+2011_09_28 2011_09_28_drive_0121_sync 0000000012
+2011_09_28 2011_09_28_drive_0121_sync 0000000013
+2011_09_28 2011_09_28_drive_0121_sync 0000000014
+2011_09_28 2011_09_28_drive_0121_sync 0000000015
+2011_09_28 2011_09_28_drive_0121_sync 0000000016
+2011_09_28 2011_09_28_drive_0121_sync 0000000017
+2011_09_28 2011_09_28_drive_0121_sync 0000000018
+2011_09_28 2011_09_28_drive_0121_sync 0000000019
+2011_09_28 2011_09_28_drive_0121_sync 0000000020
+2011_09_28 2011_09_28_drive_0121_sync 0000000021
+2011_09_28 2011_09_28_drive_0121_sync 0000000022
+2011_09_28 2011_09_28_drive_0121_sync 0000000023
+2011_09_28 2011_09_28_drive_0121_sync 0000000024
+2011_09_28 2011_09_28_drive_0121_sync 0000000025
+2011_09_28 2011_09_28_drive_0121_sync 0000000026
+2011_09_28 2011_09_28_drive_0121_sync 0000000027
+2011_09_28 2011_09_28_drive_0121_sync 0000000028
+2011_09_28 2011_09_28_drive_0121_sync 0000000029
+2011_09_28 2011_09_28_drive_0121_sync 0000000030
+2011_09_28 2011_09_28_drive_0121_sync 0000000031
+2011_09_28 2011_09_28_drive_0121_sync 0000000032
+2011_09_28 2011_09_28_drive_0121_sync 0000000033
+2011_09_28 2011_09_28_drive_0121_sync 0000000034
+2011_09_28 2011_09_28_drive_0121_sync 0000000035
+2011_09_28 2011_09_28_drive_0121_sync 0000000036
+2011_09_28 2011_09_28_drive_0121_sync 0000000037
+2011_09_28 2011_09_28_drive_0121_sync 0000000038
+2011_09_28 2011_09_28_drive_0121_sync 0000000039
+2011_09_28 2011_09_28_drive_0121_sync 0000000040
+2011_09_28 2011_09_28_drive_0121_sync 0000000041
+2011_09_28 2011_09_28_drive_0121_sync 0000000042
+2011_09_28 2011_09_28_drive_0121_sync 0000000043
+2011_09_28 2011_09_28_drive_0121_sync 0000000044
+2011_09_28 2011_09_28_drive_0122_sync 0000000000
+2011_09_28 2011_09_28_drive_0122_sync 0000000001
+2011_09_28 2011_09_28_drive_0122_sync 0000000002
+2011_09_28 2011_09_28_drive_0122_sync 0000000003
+2011_09_28 2011_09_28_drive_0122_sync 0000000004
+2011_09_28 2011_09_28_drive_0122_sync 0000000005
+2011_09_28 2011_09_28_drive_0122_sync 0000000006
+2011_09_28 2011_09_28_drive_0122_sync 0000000007
+2011_09_28 2011_09_28_drive_0122_sync 0000000008
+2011_09_28 2011_09_28_drive_0122_sync 0000000009
+2011_09_28 2011_09_28_drive_0122_sync 0000000010
+2011_09_28 2011_09_28_drive_0122_sync 0000000011
+2011_09_28 2011_09_28_drive_0122_sync 0000000012
+2011_09_28 2011_09_28_drive_0122_sync 0000000013
+2011_09_28 2011_09_28_drive_0122_sync 0000000014
+2011_09_28 2011_09_28_drive_0122_sync 0000000015
+2011_09_28 2011_09_28_drive_0122_sync 0000000016
+2011_09_28 2011_09_28_drive_0122_sync 0000000017
+2011_09_28 2011_09_28_drive_0122_sync 0000000018
+2011_09_28 2011_09_28_drive_0122_sync 0000000019
+2011_09_28 2011_09_28_drive_0122_sync 0000000020
+2011_09_28 2011_09_28_drive_0122_sync 0000000021
+2011_09_28 2011_09_28_drive_0122_sync 0000000022
+2011_09_28 2011_09_28_drive_0122_sync 0000000023
+2011_09_28 2011_09_28_drive_0122_sync 0000000024
+2011_09_28 2011_09_28_drive_0122_sync 0000000025
+2011_09_28 2011_09_28_drive_0122_sync 0000000026
+2011_09_28 2011_09_28_drive_0122_sync 0000000027
+2011_09_28 2011_09_28_drive_0122_sync 0000000028
+2011_09_28 2011_09_28_drive_0122_sync 0000000029
+2011_09_28 2011_09_28_drive_0122_sync 0000000030
+2011_09_28 2011_09_28_drive_0122_sync 0000000031
+2011_09_28 2011_09_28_drive_0122_sync 0000000032
+2011_09_28 2011_09_28_drive_0122_sync 0000000033
+2011_09_28 2011_09_28_drive_0122_sync 0000000034
+2011_09_28 2011_09_28_drive_0122_sync 0000000035
+2011_09_28 2011_09_28_drive_0122_sync 0000000036
+2011_09_28 2011_09_28_drive_0122_sync 0000000037
+2011_09_28 2011_09_28_drive_0122_sync 0000000038
+2011_09_28 2011_09_28_drive_0122_sync 0000000039
+2011_09_28 2011_09_28_drive_0122_sync 0000000040
+2011_09_28 2011_09_28_drive_0122_sync 0000000041
+2011_09_28 2011_09_28_drive_0125_sync 0000000000
+2011_09_28 2011_09_28_drive_0125_sync 0000000001
+2011_09_28 2011_09_28_drive_0125_sync 0000000002
+2011_09_28 2011_09_28_drive_0125_sync 0000000003
+2011_09_28 2011_09_28_drive_0125_sync 0000000004
+2011_09_28 2011_09_28_drive_0125_sync 0000000005
+2011_09_28 2011_09_28_drive_0125_sync 0000000006
+2011_09_28 2011_09_28_drive_0125_sync 0000000007
+2011_09_28 2011_09_28_drive_0125_sync 0000000008
+2011_09_28 2011_09_28_drive_0125_sync 0000000009
+2011_09_28 2011_09_28_drive_0125_sync 0000000010
+2011_09_28 2011_09_28_drive_0125_sync 0000000011
+2011_09_28 2011_09_28_drive_0125_sync 0000000012
+2011_09_28 2011_09_28_drive_0125_sync 0000000013
+2011_09_28 2011_09_28_drive_0125_sync 0000000014
+2011_09_28 2011_09_28_drive_0125_sync 0000000015
+2011_09_28 2011_09_28_drive_0125_sync 0000000016
+2011_09_28 2011_09_28_drive_0125_sync 0000000017
+2011_09_28 2011_09_28_drive_0125_sync 0000000018
+2011_09_28 2011_09_28_drive_0125_sync 0000000019
+2011_09_28 2011_09_28_drive_0125_sync 0000000020
+2011_09_28 2011_09_28_drive_0125_sync 0000000021
+2011_09_28 2011_09_28_drive_0125_sync 0000000022
+2011_09_28 2011_09_28_drive_0125_sync 0000000023
+2011_09_28 2011_09_28_drive_0125_sync 0000000024
+2011_09_28 2011_09_28_drive_0125_sync 0000000025
+2011_09_28 2011_09_28_drive_0125_sync 0000000026
+2011_09_28 2011_09_28_drive_0125_sync 0000000027
+2011_09_28 2011_09_28_drive_0125_sync 0000000028
+2011_09_28 2011_09_28_drive_0125_sync 0000000029
+2011_09_28 2011_09_28_drive_0125_sync 0000000030
+2011_09_28 2011_09_28_drive_0125_sync 0000000031
+2011_09_28 2011_09_28_drive_0125_sync 0000000032
+2011_09_28 2011_09_28_drive_0125_sync 0000000033
+2011_09_28 2011_09_28_drive_0125_sync 0000000034
+2011_09_28 2011_09_28_drive_0125_sync 0000000035
+2011_09_28 2011_09_28_drive_0125_sync 0000000036
+2011_09_28 2011_09_28_drive_0125_sync 0000000037
+2011_09_28 2011_09_28_drive_0125_sync 0000000038
+2011_09_28 2011_09_28_drive_0125_sync 0000000039
+2011_09_28 2011_09_28_drive_0125_sync 0000000040
+2011_09_28 2011_09_28_drive_0125_sync 0000000041
+2011_09_28 2011_09_28_drive_0125_sync 0000000042
+2011_09_28 2011_09_28_drive_0125_sync 0000000043
+2011_09_28 2011_09_28_drive_0125_sync 0000000044
+2011_09_28 2011_09_28_drive_0125_sync 0000000045
+2011_09_28 2011_09_28_drive_0125_sync 0000000046
+2011_09_28 2011_09_28_drive_0125_sync 0000000047
+2011_09_28 2011_09_28_drive_0125_sync 0000000048
+2011_09_28 2011_09_28_drive_0125_sync 0000000049
+2011_09_28 2011_09_28_drive_0125_sync 0000000050
+2011_09_28 2011_09_28_drive_0125_sync 0000000051
+2011_09_28 2011_09_28_drive_0125_sync 0000000052
+2011_09_28 2011_09_28_drive_0125_sync 0000000053
+2011_09_28 2011_09_28_drive_0125_sync 0000000054
+2011_09_28 2011_09_28_drive_0125_sync 0000000055
+2011_09_28 2011_09_28_drive_0125_sync 0000000056
+2011_09_28 2011_09_28_drive_0125_sync 0000000057
+2011_09_28 2011_09_28_drive_0126_sync 0000000000
+2011_09_28 2011_09_28_drive_0126_sync 0000000001
+2011_09_28 2011_09_28_drive_0126_sync 0000000002
+2011_09_28 2011_09_28_drive_0126_sync 0000000003
+2011_09_28 2011_09_28_drive_0126_sync 0000000004
+2011_09_28 2011_09_28_drive_0126_sync 0000000005
+2011_09_28 2011_09_28_drive_0126_sync 0000000006
+2011_09_28 2011_09_28_drive_0126_sync 0000000007
+2011_09_28 2011_09_28_drive_0126_sync 0000000008
+2011_09_28 2011_09_28_drive_0126_sync 0000000009
+2011_09_28 2011_09_28_drive_0126_sync 0000000010
+2011_09_28 2011_09_28_drive_0126_sync 0000000011
+2011_09_28 2011_09_28_drive_0126_sync 0000000012
+2011_09_28 2011_09_28_drive_0126_sync 0000000013
+2011_09_28 2011_09_28_drive_0126_sync 0000000014
+2011_09_28 2011_09_28_drive_0126_sync 0000000015
+2011_09_28 2011_09_28_drive_0126_sync 0000000016
+2011_09_28 2011_09_28_drive_0126_sync 0000000017
+2011_09_28 2011_09_28_drive_0126_sync 0000000018
+2011_09_28 2011_09_28_drive_0126_sync 0000000019
+2011_09_28 2011_09_28_drive_0126_sync 0000000020
+2011_09_28 2011_09_28_drive_0126_sync 0000000021
+2011_09_28 2011_09_28_drive_0126_sync 0000000022
+2011_09_28 2011_09_28_drive_0126_sync 0000000023
+2011_09_28 2011_09_28_drive_0126_sync 0000000024
+2011_09_28 2011_09_28_drive_0126_sync 0000000025
+2011_09_28 2011_09_28_drive_0126_sync 0000000026
+2011_09_28 2011_09_28_drive_0126_sync 0000000027
+2011_09_28 2011_09_28_drive_0126_sync 0000000028
+2011_09_28 2011_09_28_drive_0126_sync 0000000029
+2011_09_28 2011_09_28_drive_0126_sync 0000000030
+2011_09_28 2011_09_28_drive_0128_sync 0000000000
+2011_09_28 2011_09_28_drive_0128_sync 0000000001
+2011_09_28 2011_09_28_drive_0128_sync 0000000002
+2011_09_28 2011_09_28_drive_0128_sync 0000000003
+2011_09_28 2011_09_28_drive_0128_sync 0000000004
+2011_09_28 2011_09_28_drive_0128_sync 0000000005
+2011_09_28 2011_09_28_drive_0128_sync 0000000006
+2011_09_28 2011_09_28_drive_0128_sync 0000000007
+2011_09_28 2011_09_28_drive_0128_sync 0000000008
+2011_09_28 2011_09_28_drive_0128_sync 0000000009
+2011_09_28 2011_09_28_drive_0128_sync 0000000010
+2011_09_28 2011_09_28_drive_0128_sync 0000000011
+2011_09_28 2011_09_28_drive_0128_sync 0000000012
+2011_09_28 2011_09_28_drive_0128_sync 0000000013
+2011_09_28 2011_09_28_drive_0128_sync 0000000014
+2011_09_28 2011_09_28_drive_0128_sync 0000000015
+2011_09_28 2011_09_28_drive_0128_sync 0000000016
+2011_09_28 2011_09_28_drive_0128_sync 0000000017
+2011_09_28 2011_09_28_drive_0128_sync 0000000018
+2011_09_28 2011_09_28_drive_0128_sync 0000000019
+2011_09_28 2011_09_28_drive_0128_sync 0000000020
+2011_09_28 2011_09_28_drive_0128_sync 0000000021
+2011_09_28 2011_09_28_drive_0128_sync 0000000022
+2011_09_28 2011_09_28_drive_0128_sync 0000000023
+2011_09_28 2011_09_28_drive_0128_sync 0000000024
+2011_09_28 2011_09_28_drive_0128_sync 0000000025
+2011_09_28 2011_09_28_drive_0128_sync 0000000026
+2011_09_28 2011_09_28_drive_0128_sync 0000000027
+2011_09_28 2011_09_28_drive_0132_sync 0000000000
+2011_09_28 2011_09_28_drive_0132_sync 0000000001
+2011_09_28 2011_09_28_drive_0132_sync 0000000002
+2011_09_28 2011_09_28_drive_0132_sync 0000000003
+2011_09_28 2011_09_28_drive_0132_sync 0000000004
+2011_09_28 2011_09_28_drive_0132_sync 0000000005
+2011_09_28 2011_09_28_drive_0132_sync 0000000006
+2011_09_28 2011_09_28_drive_0132_sync 0000000007
+2011_09_28 2011_09_28_drive_0132_sync 0000000008
+2011_09_28 2011_09_28_drive_0132_sync 0000000009
+2011_09_28 2011_09_28_drive_0132_sync 0000000010
+2011_09_28 2011_09_28_drive_0132_sync 0000000011
+2011_09_28 2011_09_28_drive_0132_sync 0000000012
+2011_09_28 2011_09_28_drive_0132_sync 0000000013
+2011_09_28 2011_09_28_drive_0132_sync 0000000014
+2011_09_28 2011_09_28_drive_0132_sync 0000000015
+2011_09_28 2011_09_28_drive_0132_sync 0000000016
+2011_09_28 2011_09_28_drive_0132_sync 0000000017
+2011_09_28 2011_09_28_drive_0132_sync 0000000018
+2011_09_28 2011_09_28_drive_0132_sync 0000000019
+2011_09_28 2011_09_28_drive_0132_sync 0000000020
+2011_09_28 2011_09_28_drive_0132_sync 0000000021
+2011_09_28 2011_09_28_drive_0132_sync 0000000022
+2011_09_28 2011_09_28_drive_0132_sync 0000000023
+2011_09_28 2011_09_28_drive_0132_sync 0000000024
+2011_09_28 2011_09_28_drive_0132_sync 0000000025
+2011_09_28 2011_09_28_drive_0132_sync 0000000026
+2011_09_28 2011_09_28_drive_0132_sync 0000000027
+2011_09_28 2011_09_28_drive_0132_sync 0000000028
+2011_09_28 2011_09_28_drive_0132_sync 0000000029
+2011_09_28 2011_09_28_drive_0132_sync 0000000030
+2011_09_28 2011_09_28_drive_0132_sync 0000000031
+2011_09_28 2011_09_28_drive_0132_sync 0000000032
+2011_09_28 2011_09_28_drive_0132_sync 0000000033
+2011_09_28 2011_09_28_drive_0132_sync 0000000034
+2011_09_28 2011_09_28_drive_0132_sync 0000000035
+2011_09_28 2011_09_28_drive_0132_sync 0000000036
+2011_09_28 2011_09_28_drive_0132_sync 0000000037
+2011_09_28 2011_09_28_drive_0132_sync 0000000038
+2011_09_28 2011_09_28_drive_0132_sync 0000000039
+2011_09_28 2011_09_28_drive_0132_sync 0000000040
+2011_09_28 2011_09_28_drive_0132_sync 0000000041
+2011_09_28 2011_09_28_drive_0132_sync 0000000042
+2011_09_28 2011_09_28_drive_0132_sync 0000000043
+2011_09_28 2011_09_28_drive_0132_sync 0000000044
+2011_09_28 2011_09_28_drive_0132_sync 0000000045
+2011_09_28 2011_09_28_drive_0132_sync 0000000046
+2011_09_28 2011_09_28_drive_0132_sync 0000000047
+2011_09_28 2011_09_28_drive_0132_sync 0000000048
+2011_09_28 2011_09_28_drive_0132_sync 0000000049
+2011_09_28 2011_09_28_drive_0132_sync 0000000050
+2011_09_28 2011_09_28_drive_0132_sync 0000000051
+2011_09_28 2011_09_28_drive_0132_sync 0000000052
+2011_09_28 2011_09_28_drive_0132_sync 0000000053
+2011_09_28 2011_09_28_drive_0132_sync 0000000054
+2011_09_28 2011_09_28_drive_0132_sync 0000000055
+2011_09_28 2011_09_28_drive_0132_sync 0000000056
+2011_09_28 2011_09_28_drive_0132_sync 0000000057
+2011_09_28 2011_09_28_drive_0132_sync 0000000058
+2011_09_28 2011_09_28_drive_0132_sync 0000000059
+2011_09_28 2011_09_28_drive_0132_sync 0000000060
+2011_09_28 2011_09_28_drive_0132_sync 0000000061
+2011_09_28 2011_09_28_drive_0132_sync 0000000062
+2011_09_28 2011_09_28_drive_0132_sync 0000000063
+2011_09_28 2011_09_28_drive_0132_sync 0000000064
+2011_09_28 2011_09_28_drive_0132_sync 0000000065
+2011_09_28 2011_09_28_drive_0132_sync 0000000066
+2011_09_28 2011_09_28_drive_0132_sync 0000000067
+2011_09_28 2011_09_28_drive_0132_sync 0000000068
+2011_09_28 2011_09_28_drive_0132_sync 0000000069
+2011_09_28 2011_09_28_drive_0132_sync 0000000070
+2011_09_28 2011_09_28_drive_0132_sync 0000000071
+2011_09_28 2011_09_28_drive_0134_sync 0000000000
+2011_09_28 2011_09_28_drive_0134_sync 0000000001
+2011_09_28 2011_09_28_drive_0134_sync 0000000002
+2011_09_28 2011_09_28_drive_0134_sync 0000000003
+2011_09_28 2011_09_28_drive_0134_sync 0000000004
+2011_09_28 2011_09_28_drive_0134_sync 0000000005
+2011_09_28 2011_09_28_drive_0134_sync 0000000006
+2011_09_28 2011_09_28_drive_0134_sync 0000000007
+2011_09_28 2011_09_28_drive_0134_sync 0000000008
+2011_09_28 2011_09_28_drive_0134_sync 0000000009
+2011_09_28 2011_09_28_drive_0134_sync 0000000010
+2011_09_28 2011_09_28_drive_0134_sync 0000000011
+2011_09_28 2011_09_28_drive_0134_sync 0000000012
+2011_09_28 2011_09_28_drive_0134_sync 0000000013
+2011_09_28 2011_09_28_drive_0134_sync 0000000014
+2011_09_28 2011_09_28_drive_0134_sync 0000000015
+2011_09_28 2011_09_28_drive_0134_sync 0000000016
+2011_09_28 2011_09_28_drive_0134_sync 0000000017
+2011_09_28 2011_09_28_drive_0134_sync 0000000018
+2011_09_28 2011_09_28_drive_0134_sync 0000000019
+2011_09_28 2011_09_28_drive_0134_sync 0000000020
+2011_09_28 2011_09_28_drive_0134_sync 0000000021
+2011_09_28 2011_09_28_drive_0134_sync 0000000022
+2011_09_28 2011_09_28_drive_0134_sync 0000000023
+2011_09_28 2011_09_28_drive_0134_sync 0000000024
+2011_09_28 2011_09_28_drive_0134_sync 0000000025
+2011_09_28 2011_09_28_drive_0134_sync 0000000026
+2011_09_28 2011_09_28_drive_0134_sync 0000000027
+2011_09_28 2011_09_28_drive_0134_sync 0000000028
+2011_09_28 2011_09_28_drive_0134_sync 0000000029
+2011_09_28 2011_09_28_drive_0134_sync 0000000030
+2011_09_28 2011_09_28_drive_0134_sync 0000000031
+2011_09_28 2011_09_28_drive_0134_sync 0000000032
+2011_09_28 2011_09_28_drive_0134_sync 0000000033
+2011_09_28 2011_09_28_drive_0134_sync 0000000034
+2011_09_28 2011_09_28_drive_0134_sync 0000000035
+2011_09_28 2011_09_28_drive_0134_sync 0000000036
+2011_09_28 2011_09_28_drive_0134_sync 0000000037
+2011_09_28 2011_09_28_drive_0134_sync 0000000038
+2011_09_28 2011_09_28_drive_0134_sync 0000000039
+2011_09_28 2011_09_28_drive_0134_sync 0000000040
+2011_09_28 2011_09_28_drive_0134_sync 0000000041
+2011_09_28 2011_09_28_drive_0134_sync 0000000042
+2011_09_28 2011_09_28_drive_0134_sync 0000000043
+2011_09_28 2011_09_28_drive_0134_sync 0000000044
+2011_09_28 2011_09_28_drive_0134_sync 0000000045
+2011_09_28 2011_09_28_drive_0134_sync 0000000046
+2011_09_28 2011_09_28_drive_0134_sync 0000000047
+2011_09_28 2011_09_28_drive_0134_sync 0000000048
+2011_09_28 2011_09_28_drive_0134_sync 0000000049
+2011_09_28 2011_09_28_drive_0134_sync 0000000050
+2011_09_28 2011_09_28_drive_0134_sync 0000000051
+2011_09_28 2011_09_28_drive_0134_sync 0000000052
+2011_09_28 2011_09_28_drive_0134_sync 0000000053
+2011_09_28 2011_09_28_drive_0135_sync 0000000000
+2011_09_28 2011_09_28_drive_0135_sync 0000000001
+2011_09_28 2011_09_28_drive_0135_sync 0000000002
+2011_09_28 2011_09_28_drive_0135_sync 0000000003
+2011_09_28 2011_09_28_drive_0135_sync 0000000004
+2011_09_28 2011_09_28_drive_0135_sync 0000000005
+2011_09_28 2011_09_28_drive_0135_sync 0000000006
+2011_09_28 2011_09_28_drive_0135_sync 0000000007
+2011_09_28 2011_09_28_drive_0135_sync 0000000008
+2011_09_28 2011_09_28_drive_0135_sync 0000000009
+2011_09_28 2011_09_28_drive_0135_sync 0000000010
+2011_09_28 2011_09_28_drive_0135_sync 0000000011
+2011_09_28 2011_09_28_drive_0135_sync 0000000012
+2011_09_28 2011_09_28_drive_0135_sync 0000000013
+2011_09_28 2011_09_28_drive_0135_sync 0000000014
+2011_09_28 2011_09_28_drive_0135_sync 0000000015
+2011_09_28 2011_09_28_drive_0135_sync 0000000016
+2011_09_28 2011_09_28_drive_0135_sync 0000000017
+2011_09_28 2011_09_28_drive_0135_sync 0000000018
+2011_09_28 2011_09_28_drive_0135_sync 0000000019
+2011_09_28 2011_09_28_drive_0135_sync 0000000020
+2011_09_28 2011_09_28_drive_0135_sync 0000000021
+2011_09_28 2011_09_28_drive_0135_sync 0000000022
+2011_09_28 2011_09_28_drive_0135_sync 0000000023
+2011_09_28 2011_09_28_drive_0135_sync 0000000024
+2011_09_28 2011_09_28_drive_0135_sync 0000000025
+2011_09_28 2011_09_28_drive_0135_sync 0000000026
+2011_09_28 2011_09_28_drive_0135_sync 0000000027
+2011_09_28 2011_09_28_drive_0135_sync 0000000028
+2011_09_28 2011_09_28_drive_0135_sync 0000000029
+2011_09_28 2011_09_28_drive_0135_sync 0000000030
+2011_09_28 2011_09_28_drive_0135_sync 0000000031
+2011_09_28 2011_09_28_drive_0135_sync 0000000032
+2011_09_28 2011_09_28_drive_0135_sync 0000000033
+2011_09_28 2011_09_28_drive_0135_sync 0000000034
+2011_09_28 2011_09_28_drive_0135_sync 0000000035
+2011_09_28 2011_09_28_drive_0135_sync 0000000036
+2011_09_28 2011_09_28_drive_0135_sync 0000000037
+2011_09_28 2011_09_28_drive_0135_sync 0000000038
+2011_09_28 2011_09_28_drive_0135_sync 0000000039
+2011_09_28 2011_09_28_drive_0135_sync 0000000040
+2011_09_28 2011_09_28_drive_0136_sync 0000000000
+2011_09_28 2011_09_28_drive_0136_sync 0000000001
+2011_09_28 2011_09_28_drive_0136_sync 0000000002
+2011_09_28 2011_09_28_drive_0136_sync 0000000003
+2011_09_28 2011_09_28_drive_0136_sync 0000000004
+2011_09_28 2011_09_28_drive_0136_sync 0000000005
+2011_09_28 2011_09_28_drive_0136_sync 0000000006
+2011_09_28 2011_09_28_drive_0136_sync 0000000007
+2011_09_28 2011_09_28_drive_0136_sync 0000000008
+2011_09_28 2011_09_28_drive_0136_sync 0000000009
+2011_09_28 2011_09_28_drive_0136_sync 0000000010
+2011_09_28 2011_09_28_drive_0136_sync 0000000011
+2011_09_28 2011_09_28_drive_0136_sync 0000000012
+2011_09_28 2011_09_28_drive_0136_sync 0000000013
+2011_09_28 2011_09_28_drive_0136_sync 0000000014
+2011_09_28 2011_09_28_drive_0136_sync 0000000015
+2011_09_28 2011_09_28_drive_0136_sync 0000000016
+2011_09_28 2011_09_28_drive_0136_sync 0000000017
+2011_09_28 2011_09_28_drive_0136_sync 0000000018
+2011_09_28 2011_09_28_drive_0136_sync 0000000019
+2011_09_28 2011_09_28_drive_0136_sync 0000000020
+2011_09_28 2011_09_28_drive_0136_sync 0000000021
+2011_09_28 2011_09_28_drive_0136_sync 0000000022
+2011_09_28 2011_09_28_drive_0136_sync 0000000023
+2011_09_28 2011_09_28_drive_0136_sync 0000000024
+2011_09_28 2011_09_28_drive_0136_sync 0000000025
+2011_09_28 2011_09_28_drive_0136_sync 0000000026
+2011_09_28 2011_09_28_drive_0136_sync 0000000027
+2011_09_28 2011_09_28_drive_0136_sync 0000000028
+2011_09_28 2011_09_28_drive_0136_sync 0000000029
+2011_09_28 2011_09_28_drive_0138_sync 0000000000
+2011_09_28 2011_09_28_drive_0138_sync 0000000001
+2011_09_28 2011_09_28_drive_0138_sync 0000000002
+2011_09_28 2011_09_28_drive_0138_sync 0000000003
+2011_09_28 2011_09_28_drive_0138_sync 0000000004
+2011_09_28 2011_09_28_drive_0138_sync 0000000005
+2011_09_28 2011_09_28_drive_0138_sync 0000000006
+2011_09_28 2011_09_28_drive_0138_sync 0000000007
+2011_09_28 2011_09_28_drive_0138_sync 0000000008
+2011_09_28 2011_09_28_drive_0138_sync 0000000009
+2011_09_28 2011_09_28_drive_0138_sync 0000000010
+2011_09_28 2011_09_28_drive_0138_sync 0000000011
+2011_09_28 2011_09_28_drive_0138_sync 0000000012
+2011_09_28 2011_09_28_drive_0138_sync 0000000013
+2011_09_28 2011_09_28_drive_0138_sync 0000000014
+2011_09_28 2011_09_28_drive_0138_sync 0000000015
+2011_09_28 2011_09_28_drive_0138_sync 0000000016
+2011_09_28 2011_09_28_drive_0138_sync 0000000017
+2011_09_28 2011_09_28_drive_0138_sync 0000000018
+2011_09_28 2011_09_28_drive_0138_sync 0000000019
+2011_09_28 2011_09_28_drive_0138_sync 0000000020
+2011_09_28 2011_09_28_drive_0138_sync 0000000021
+2011_09_28 2011_09_28_drive_0138_sync 0000000022
+2011_09_28 2011_09_28_drive_0138_sync 0000000023
+2011_09_28 2011_09_28_drive_0138_sync 0000000024
+2011_09_28 2011_09_28_drive_0138_sync 0000000025
+2011_09_28 2011_09_28_drive_0138_sync 0000000026
+2011_09_28 2011_09_28_drive_0138_sync 0000000027
+2011_09_28 2011_09_28_drive_0138_sync 0000000028
+2011_09_28 2011_09_28_drive_0138_sync 0000000029
+2011_09_28 2011_09_28_drive_0138_sync 0000000030
+2011_09_28 2011_09_28_drive_0138_sync 0000000031
+2011_09_28 2011_09_28_drive_0138_sync 0000000032
+2011_09_28 2011_09_28_drive_0138_sync 0000000033
+2011_09_28 2011_09_28_drive_0138_sync 0000000034
+2011_09_28 2011_09_28_drive_0138_sync 0000000035
+2011_09_28 2011_09_28_drive_0138_sync 0000000036
+2011_09_28 2011_09_28_drive_0138_sync 0000000037
+2011_09_28 2011_09_28_drive_0138_sync 0000000038
+2011_09_28 2011_09_28_drive_0138_sync 0000000039
+2011_09_28 2011_09_28_drive_0138_sync 0000000040
+2011_09_28 2011_09_28_drive_0138_sync 0000000041
+2011_09_28 2011_09_28_drive_0138_sync 0000000042
+2011_09_28 2011_09_28_drive_0138_sync 0000000043
+2011_09_28 2011_09_28_drive_0138_sync 0000000044
+2011_09_28 2011_09_28_drive_0138_sync 0000000045
+2011_09_28 2011_09_28_drive_0138_sync 0000000046
+2011_09_28 2011_09_28_drive_0138_sync 0000000047
+2011_09_28 2011_09_28_drive_0138_sync 0000000048
+2011_09_28 2011_09_28_drive_0138_sync 0000000049
+2011_09_28 2011_09_28_drive_0138_sync 0000000050
+2011_09_28 2011_09_28_drive_0138_sync 0000000051
+2011_09_28 2011_09_28_drive_0138_sync 0000000052
+2011_09_28 2011_09_28_drive_0138_sync 0000000053
+2011_09_28 2011_09_28_drive_0138_sync 0000000054
+2011_09_28 2011_09_28_drive_0138_sync 0000000055
+2011_09_28 2011_09_28_drive_0138_sync 0000000056
+2011_09_28 2011_09_28_drive_0138_sync 0000000057
+2011_09_28 2011_09_28_drive_0138_sync 0000000058
+2011_09_28 2011_09_28_drive_0138_sync 0000000059
+2011_09_28 2011_09_28_drive_0138_sync 0000000060
+2011_09_28 2011_09_28_drive_0138_sync 0000000061
+2011_09_28 2011_09_28_drive_0138_sync 0000000062
+2011_09_28 2011_09_28_drive_0138_sync 0000000063
+2011_09_28 2011_09_28_drive_0138_sync 0000000064
+2011_09_28 2011_09_28_drive_0138_sync 0000000065
+2011_09_28 2011_09_28_drive_0138_sync 0000000066
+2011_09_28 2011_09_28_drive_0141_sync 0000000000
+2011_09_28 2011_09_28_drive_0141_sync 0000000001
+2011_09_28 2011_09_28_drive_0141_sync 0000000002
+2011_09_28 2011_09_28_drive_0141_sync 0000000003
+2011_09_28 2011_09_28_drive_0141_sync 0000000004
+2011_09_28 2011_09_28_drive_0141_sync 0000000005
+2011_09_28 2011_09_28_drive_0141_sync 0000000006
+2011_09_28 2011_09_28_drive_0141_sync 0000000007
+2011_09_28 2011_09_28_drive_0141_sync 0000000008
+2011_09_28 2011_09_28_drive_0141_sync 0000000009
+2011_09_28 2011_09_28_drive_0141_sync 0000000010
+2011_09_28 2011_09_28_drive_0141_sync 0000000011
+2011_09_28 2011_09_28_drive_0141_sync 0000000012
+2011_09_28 2011_09_28_drive_0141_sync 0000000013
+2011_09_28 2011_09_28_drive_0141_sync 0000000014
+2011_09_28 2011_09_28_drive_0141_sync 0000000015
+2011_09_28 2011_09_28_drive_0141_sync 0000000016
+2011_09_28 2011_09_28_drive_0141_sync 0000000017
+2011_09_28 2011_09_28_drive_0141_sync 0000000018
+2011_09_28 2011_09_28_drive_0141_sync 0000000019
+2011_09_28 2011_09_28_drive_0141_sync 0000000020
+2011_09_28 2011_09_28_drive_0141_sync 0000000021
+2011_09_28 2011_09_28_drive_0141_sync 0000000022
+2011_09_28 2011_09_28_drive_0141_sync 0000000023
+2011_09_28 2011_09_28_drive_0141_sync 0000000024
+2011_09_28 2011_09_28_drive_0141_sync 0000000025
+2011_09_28 2011_09_28_drive_0141_sync 0000000026
+2011_09_28 2011_09_28_drive_0141_sync 0000000027
+2011_09_28 2011_09_28_drive_0141_sync 0000000028
+2011_09_28 2011_09_28_drive_0141_sync 0000000029
+2011_09_28 2011_09_28_drive_0141_sync 0000000030
+2011_09_28 2011_09_28_drive_0141_sync 0000000031
+2011_09_28 2011_09_28_drive_0141_sync 0000000032
+2011_09_28 2011_09_28_drive_0141_sync 0000000033
+2011_09_28 2011_09_28_drive_0141_sync 0000000034
+2011_09_28 2011_09_28_drive_0141_sync 0000000035
+2011_09_28 2011_09_28_drive_0141_sync 0000000036
+2011_09_28 2011_09_28_drive_0141_sync 0000000037
+2011_09_28 2011_09_28_drive_0141_sync 0000000038
+2011_09_28 2011_09_28_drive_0141_sync 0000000039
+2011_09_28 2011_09_28_drive_0141_sync 0000000040
+2011_09_28 2011_09_28_drive_0141_sync 0000000041
+2011_09_28 2011_09_28_drive_0141_sync 0000000042
+2011_09_28 2011_09_28_drive_0141_sync 0000000043
+2011_09_28 2011_09_28_drive_0141_sync 0000000044
+2011_09_28 2011_09_28_drive_0141_sync 0000000045
+2011_09_28 2011_09_28_drive_0141_sync 0000000046
+2011_09_28 2011_09_28_drive_0141_sync 0000000047
+2011_09_28 2011_09_28_drive_0141_sync 0000000048
+2011_09_28 2011_09_28_drive_0141_sync 0000000049
+2011_09_28 2011_09_28_drive_0141_sync 0000000050
+2011_09_28 2011_09_28_drive_0141_sync 0000000051
+2011_09_28 2011_09_28_drive_0141_sync 0000000052
+2011_09_28 2011_09_28_drive_0141_sync 0000000053
+2011_09_28 2011_09_28_drive_0141_sync 0000000054
+2011_09_28 2011_09_28_drive_0141_sync 0000000055
+2011_09_28 2011_09_28_drive_0141_sync 0000000056
+2011_09_28 2011_09_28_drive_0141_sync 0000000057
+2011_09_28 2011_09_28_drive_0141_sync 0000000058
+2011_09_28 2011_09_28_drive_0141_sync 0000000059
+2011_09_28 2011_09_28_drive_0141_sync 0000000060
+2011_09_28 2011_09_28_drive_0141_sync 0000000061
+2011_09_28 2011_09_28_drive_0141_sync 0000000062
+2011_09_28 2011_09_28_drive_0141_sync 0000000063
+2011_09_28 2011_09_28_drive_0141_sync 0000000064
+2011_09_28 2011_09_28_drive_0141_sync 0000000065
+2011_09_28 2011_09_28_drive_0141_sync 0000000066
+2011_09_28 2011_09_28_drive_0141_sync 0000000067
+2011_09_28 2011_09_28_drive_0141_sync 0000000068
+2011_09_28 2011_09_28_drive_0141_sync 0000000069
+2011_09_28 2011_09_28_drive_0143_sync 0000000000
+2011_09_28 2011_09_28_drive_0143_sync 0000000001
+2011_09_28 2011_09_28_drive_0143_sync 0000000002
+2011_09_28 2011_09_28_drive_0143_sync 0000000003
+2011_09_28 2011_09_28_drive_0143_sync 0000000004
+2011_09_28 2011_09_28_drive_0143_sync 0000000005
+2011_09_28 2011_09_28_drive_0143_sync 0000000006
+2011_09_28 2011_09_28_drive_0143_sync 0000000007
+2011_09_28 2011_09_28_drive_0143_sync 0000000008
+2011_09_28 2011_09_28_drive_0143_sync 0000000009
+2011_09_28 2011_09_28_drive_0143_sync 0000000010
+2011_09_28 2011_09_28_drive_0143_sync 0000000011
+2011_09_28 2011_09_28_drive_0143_sync 0000000012
+2011_09_28 2011_09_28_drive_0143_sync 0000000013
+2011_09_28 2011_09_28_drive_0143_sync 0000000014
+2011_09_28 2011_09_28_drive_0143_sync 0000000015
+2011_09_28 2011_09_28_drive_0143_sync 0000000016
+2011_09_28 2011_09_28_drive_0143_sync 0000000017
+2011_09_28 2011_09_28_drive_0143_sync 0000000018
+2011_09_28 2011_09_28_drive_0143_sync 0000000019
+2011_09_28 2011_09_28_drive_0143_sync 0000000020
+2011_09_28 2011_09_28_drive_0143_sync 0000000021
+2011_09_28 2011_09_28_drive_0143_sync 0000000022
+2011_09_28 2011_09_28_drive_0143_sync 0000000023
+2011_09_28 2011_09_28_drive_0143_sync 0000000024
+2011_09_28 2011_09_28_drive_0143_sync 0000000025
+2011_09_28 2011_09_28_drive_0143_sync 0000000026
+2011_09_28 2011_09_28_drive_0143_sync 0000000027
+2011_09_28 2011_09_28_drive_0143_sync 0000000028
+2011_09_28 2011_09_28_drive_0143_sync 0000000029
+2011_09_28 2011_09_28_drive_0143_sync 0000000030
+2011_09_28 2011_09_28_drive_0145_sync 0000000000
+2011_09_28 2011_09_28_drive_0145_sync 0000000001
+2011_09_28 2011_09_28_drive_0145_sync 0000000002
+2011_09_28 2011_09_28_drive_0145_sync 0000000003
+2011_09_28 2011_09_28_drive_0145_sync 0000000004
+2011_09_28 2011_09_28_drive_0145_sync 0000000005
+2011_09_28 2011_09_28_drive_0145_sync 0000000006
+2011_09_28 2011_09_28_drive_0145_sync 0000000007
+2011_09_28 2011_09_28_drive_0145_sync 0000000008
+2011_09_28 2011_09_28_drive_0145_sync 0000000009
+2011_09_28 2011_09_28_drive_0145_sync 0000000010
+2011_09_28 2011_09_28_drive_0145_sync 0000000011
+2011_09_28 2011_09_28_drive_0145_sync 0000000012
+2011_09_28 2011_09_28_drive_0145_sync 0000000013
+2011_09_28 2011_09_28_drive_0145_sync 0000000014
+2011_09_28 2011_09_28_drive_0145_sync 0000000015
+2011_09_28 2011_09_28_drive_0145_sync 0000000016
+2011_09_28 2011_09_28_drive_0145_sync 0000000017
+2011_09_28 2011_09_28_drive_0145_sync 0000000018
+2011_09_28 2011_09_28_drive_0145_sync 0000000019
+2011_09_28 2011_09_28_drive_0145_sync 0000000020
+2011_09_28 2011_09_28_drive_0145_sync 0000000021
+2011_09_28 2011_09_28_drive_0145_sync 0000000022
+2011_09_28 2011_09_28_drive_0145_sync 0000000023
+2011_09_28 2011_09_28_drive_0145_sync 0000000024
+2011_09_28 2011_09_28_drive_0145_sync 0000000025
+2011_09_28 2011_09_28_drive_0145_sync 0000000026
+2011_09_28 2011_09_28_drive_0145_sync 0000000027
+2011_09_28 2011_09_28_drive_0145_sync 0000000028
+2011_09_28 2011_09_28_drive_0145_sync 0000000029
+2011_09_28 2011_09_28_drive_0145_sync 0000000030
+2011_09_28 2011_09_28_drive_0145_sync 0000000031
+2011_09_28 2011_09_28_drive_0145_sync 0000000032
+2011_09_28 2011_09_28_drive_0145_sync 0000000033
+2011_09_28 2011_09_28_drive_0145_sync 0000000034
+2011_09_28 2011_09_28_drive_0146_sync 0000000000
+2011_09_28 2011_09_28_drive_0146_sync 0000000001
+2011_09_28 2011_09_28_drive_0146_sync 0000000002
+2011_09_28 2011_09_28_drive_0146_sync 0000000003
+2011_09_28 2011_09_28_drive_0146_sync 0000000004
+2011_09_28 2011_09_28_drive_0146_sync 0000000005
+2011_09_28 2011_09_28_drive_0146_sync 0000000006
+2011_09_28 2011_09_28_drive_0146_sync 0000000007
+2011_09_28 2011_09_28_drive_0146_sync 0000000008
+2011_09_28 2011_09_28_drive_0146_sync 0000000009
+2011_09_28 2011_09_28_drive_0146_sync 0000000010
+2011_09_28 2011_09_28_drive_0146_sync 0000000011
+2011_09_28 2011_09_28_drive_0146_sync 0000000012
+2011_09_28 2011_09_28_drive_0146_sync 0000000013
+2011_09_28 2011_09_28_drive_0146_sync 0000000014
+2011_09_28 2011_09_28_drive_0146_sync 0000000015
+2011_09_28 2011_09_28_drive_0146_sync 0000000016
+2011_09_28 2011_09_28_drive_0146_sync 0000000017
+2011_09_28 2011_09_28_drive_0146_sync 0000000018
+2011_09_28 2011_09_28_drive_0146_sync 0000000019
+2011_09_28 2011_09_28_drive_0146_sync 0000000020
+2011_09_28 2011_09_28_drive_0146_sync 0000000021
+2011_09_28 2011_09_28_drive_0146_sync 0000000022
+2011_09_28 2011_09_28_drive_0146_sync 0000000023
+2011_09_28 2011_09_28_drive_0146_sync 0000000024
+2011_09_28 2011_09_28_drive_0146_sync 0000000025
+2011_09_28 2011_09_28_drive_0146_sync 0000000026
+2011_09_28 2011_09_28_drive_0146_sync 0000000027
+2011_09_28 2011_09_28_drive_0146_sync 0000000028
+2011_09_28 2011_09_28_drive_0146_sync 0000000029
+2011_09_28 2011_09_28_drive_0146_sync 0000000030
+2011_09_28 2011_09_28_drive_0146_sync 0000000031
+2011_09_28 2011_09_28_drive_0146_sync 0000000032
+2011_09_28 2011_09_28_drive_0146_sync 0000000033
+2011_09_28 2011_09_28_drive_0146_sync 0000000034
+2011_09_28 2011_09_28_drive_0146_sync 0000000035
+2011_09_28 2011_09_28_drive_0146_sync 0000000036
+2011_09_28 2011_09_28_drive_0146_sync 0000000037
+2011_09_28 2011_09_28_drive_0146_sync 0000000038
+2011_09_28 2011_09_28_drive_0146_sync 0000000039
+2011_09_28 2011_09_28_drive_0146_sync 0000000040
+2011_09_28 2011_09_28_drive_0146_sync 0000000041
+2011_09_28 2011_09_28_drive_0146_sync 0000000042
+2011_09_28 2011_09_28_drive_0146_sync 0000000043
+2011_09_28 2011_09_28_drive_0146_sync 0000000044
+2011_09_28 2011_09_28_drive_0146_sync 0000000045
+2011_09_28 2011_09_28_drive_0146_sync 0000000046
+2011_09_28 2011_09_28_drive_0146_sync 0000000047
+2011_09_28 2011_09_28_drive_0146_sync 0000000048
+2011_09_28 2011_09_28_drive_0146_sync 0000000049
+2011_09_28 2011_09_28_drive_0146_sync 0000000050
+2011_09_28 2011_09_28_drive_0146_sync 0000000051
+2011_09_28 2011_09_28_drive_0146_sync 0000000052
+2011_09_28 2011_09_28_drive_0146_sync 0000000053
+2011_09_28 2011_09_28_drive_0146_sync 0000000054
+2011_09_28 2011_09_28_drive_0146_sync 0000000055
+2011_09_28 2011_09_28_drive_0146_sync 0000000056
+2011_09_28 2011_09_28_drive_0146_sync 0000000057
+2011_09_28 2011_09_28_drive_0146_sync 0000000058
+2011_09_28 2011_09_28_drive_0146_sync 0000000059
+2011_09_28 2011_09_28_drive_0146_sync 0000000060
+2011_09_28 2011_09_28_drive_0146_sync 0000000061
+2011_09_28 2011_09_28_drive_0146_sync 0000000062
+2011_09_28 2011_09_28_drive_0146_sync 0000000063
+2011_09_28 2011_09_28_drive_0146_sync 0000000064
+2011_09_28 2011_09_28_drive_0146_sync 0000000065
+2011_09_28 2011_09_28_drive_0146_sync 0000000066
+2011_09_28 2011_09_28_drive_0146_sync 0000000067
+2011_09_28 2011_09_28_drive_0146_sync 0000000068
+2011_09_28 2011_09_28_drive_0146_sync 0000000069
+2011_09_28 2011_09_28_drive_0149_sync 0000000000
+2011_09_28 2011_09_28_drive_0149_sync 0000000001
+2011_09_28 2011_09_28_drive_0149_sync 0000000002
+2011_09_28 2011_09_28_drive_0149_sync 0000000003
+2011_09_28 2011_09_28_drive_0149_sync 0000000004
+2011_09_28 2011_09_28_drive_0149_sync 0000000005
+2011_09_28 2011_09_28_drive_0149_sync 0000000006
+2011_09_28 2011_09_28_drive_0149_sync 0000000007
+2011_09_28 2011_09_28_drive_0149_sync 0000000008
+2011_09_28 2011_09_28_drive_0149_sync 0000000009
+2011_09_28 2011_09_28_drive_0149_sync 0000000010
+2011_09_28 2011_09_28_drive_0149_sync 0000000011
+2011_09_28 2011_09_28_drive_0149_sync 0000000012
+2011_09_28 2011_09_28_drive_0149_sync 0000000013
+2011_09_28 2011_09_28_drive_0149_sync 0000000014
+2011_09_28 2011_09_28_drive_0149_sync 0000000015
+2011_09_28 2011_09_28_drive_0149_sync 0000000016
+2011_09_28 2011_09_28_drive_0149_sync 0000000017
+2011_09_28 2011_09_28_drive_0149_sync 0000000018
+2011_09_28 2011_09_28_drive_0149_sync 0000000019
+2011_09_28 2011_09_28_drive_0149_sync 0000000020
+2011_09_28 2011_09_28_drive_0149_sync 0000000021
+2011_09_28 2011_09_28_drive_0149_sync 0000000022
+2011_09_28 2011_09_28_drive_0149_sync 0000000023
+2011_09_28 2011_09_28_drive_0149_sync 0000000024
+2011_09_28 2011_09_28_drive_0149_sync 0000000025
+2011_09_28 2011_09_28_drive_0149_sync 0000000026
+2011_09_28 2011_09_28_drive_0149_sync 0000000027
+2011_09_28 2011_09_28_drive_0149_sync 0000000028
+2011_09_28 2011_09_28_drive_0149_sync 0000000029
+2011_09_28 2011_09_28_drive_0149_sync 0000000030
+2011_09_28 2011_09_28_drive_0149_sync 0000000031
+2011_09_28 2011_09_28_drive_0149_sync 0000000032
+2011_09_28 2011_09_28_drive_0149_sync 0000000033
+2011_09_28 2011_09_28_drive_0149_sync 0000000034
+2011_09_28 2011_09_28_drive_0149_sync 0000000035
+2011_09_28 2011_09_28_drive_0149_sync 0000000036
+2011_09_28 2011_09_28_drive_0149_sync 0000000037
+2011_09_28 2011_09_28_drive_0149_sync 0000000038
+2011_09_28 2011_09_28_drive_0149_sync 0000000039
+2011_09_28 2011_09_28_drive_0149_sync 0000000040
+2011_09_28 2011_09_28_drive_0149_sync 0000000041
+2011_09_28 2011_09_28_drive_0149_sync 0000000042
+2011_09_28 2011_09_28_drive_0149_sync 0000000043
+2011_09_28 2011_09_28_drive_0149_sync 0000000044
+2011_09_28 2011_09_28_drive_0153_sync 0000000000
+2011_09_28 2011_09_28_drive_0153_sync 0000000001
+2011_09_28 2011_09_28_drive_0153_sync 0000000002
+2011_09_28 2011_09_28_drive_0153_sync 0000000003
+2011_09_28 2011_09_28_drive_0153_sync 0000000004
+2011_09_28 2011_09_28_drive_0153_sync 0000000005
+2011_09_28 2011_09_28_drive_0153_sync 0000000006
+2011_09_28 2011_09_28_drive_0153_sync 0000000007
+2011_09_28 2011_09_28_drive_0153_sync 0000000008
+2011_09_28 2011_09_28_drive_0153_sync 0000000009
+2011_09_28 2011_09_28_drive_0153_sync 0000000010
+2011_09_28 2011_09_28_drive_0153_sync 0000000011
+2011_09_28 2011_09_28_drive_0153_sync 0000000012
+2011_09_28 2011_09_28_drive_0153_sync 0000000013
+2011_09_28 2011_09_28_drive_0153_sync 0000000014
+2011_09_28 2011_09_28_drive_0153_sync 0000000015
+2011_09_28 2011_09_28_drive_0153_sync 0000000016
+2011_09_28 2011_09_28_drive_0153_sync 0000000017
+2011_09_28 2011_09_28_drive_0153_sync 0000000018
+2011_09_28 2011_09_28_drive_0153_sync 0000000019
+2011_09_28 2011_09_28_drive_0153_sync 0000000020
+2011_09_28 2011_09_28_drive_0153_sync 0000000021
+2011_09_28 2011_09_28_drive_0153_sync 0000000022
+2011_09_28 2011_09_28_drive_0153_sync 0000000023
+2011_09_28 2011_09_28_drive_0153_sync 0000000024
+2011_09_28 2011_09_28_drive_0153_sync 0000000025
+2011_09_28 2011_09_28_drive_0153_sync 0000000026
+2011_09_28 2011_09_28_drive_0153_sync 0000000027
+2011_09_28 2011_09_28_drive_0153_sync 0000000028
+2011_09_28 2011_09_28_drive_0153_sync 0000000029
+2011_09_28 2011_09_28_drive_0153_sync 0000000030
+2011_09_28 2011_09_28_drive_0153_sync 0000000031
+2011_09_28 2011_09_28_drive_0153_sync 0000000032
+2011_09_28 2011_09_28_drive_0153_sync 0000000033
+2011_09_28 2011_09_28_drive_0153_sync 0000000034
+2011_09_28 2011_09_28_drive_0153_sync 0000000035
+2011_09_28 2011_09_28_drive_0153_sync 0000000036
+2011_09_28 2011_09_28_drive_0153_sync 0000000037
+2011_09_28 2011_09_28_drive_0153_sync 0000000038
+2011_09_28 2011_09_28_drive_0153_sync 0000000039
+2011_09_28 2011_09_28_drive_0153_sync 0000000040
+2011_09_28 2011_09_28_drive_0153_sync 0000000041
+2011_09_28 2011_09_28_drive_0153_sync 0000000042
+2011_09_28 2011_09_28_drive_0153_sync 0000000043
+2011_09_28 2011_09_28_drive_0153_sync 0000000044
+2011_09_28 2011_09_28_drive_0153_sync 0000000045
+2011_09_28 2011_09_28_drive_0153_sync 0000000046
+2011_09_28 2011_09_28_drive_0153_sync 0000000047
+2011_09_28 2011_09_28_drive_0153_sync 0000000048
+2011_09_28 2011_09_28_drive_0153_sync 0000000049
+2011_09_28 2011_09_28_drive_0153_sync 0000000050
+2011_09_28 2011_09_28_drive_0153_sync 0000000051
+2011_09_28 2011_09_28_drive_0153_sync 0000000052
+2011_09_28 2011_09_28_drive_0153_sync 0000000053
+2011_09_28 2011_09_28_drive_0153_sync 0000000054
+2011_09_28 2011_09_28_drive_0153_sync 0000000055
+2011_09_28 2011_09_28_drive_0153_sync 0000000056
+2011_09_28 2011_09_28_drive_0153_sync 0000000057
+2011_09_28 2011_09_28_drive_0153_sync 0000000058
+2011_09_28 2011_09_28_drive_0153_sync 0000000059
+2011_09_28 2011_09_28_drive_0153_sync 0000000060
+2011_09_28 2011_09_28_drive_0153_sync 0000000061
+2011_09_28 2011_09_28_drive_0153_sync 0000000062
+2011_09_28 2011_09_28_drive_0153_sync 0000000063
+2011_09_28 2011_09_28_drive_0153_sync 0000000064
+2011_09_28 2011_09_28_drive_0153_sync 0000000065
+2011_09_28 2011_09_28_drive_0153_sync 0000000066
+2011_09_28 2011_09_28_drive_0153_sync 0000000067
+2011_09_28 2011_09_28_drive_0153_sync 0000000068
+2011_09_28 2011_09_28_drive_0153_sync 0000000069
+2011_09_28 2011_09_28_drive_0153_sync 0000000070
+2011_09_28 2011_09_28_drive_0153_sync 0000000071
+2011_09_28 2011_09_28_drive_0153_sync 0000000072
+2011_09_28 2011_09_28_drive_0153_sync 0000000073
+2011_09_28 2011_09_28_drive_0153_sync 0000000074
+2011_09_28 2011_09_28_drive_0153_sync 0000000075
+2011_09_28 2011_09_28_drive_0153_sync 0000000076
+2011_09_28 2011_09_28_drive_0153_sync 0000000077
+2011_09_28 2011_09_28_drive_0153_sync 0000000078
+2011_09_28 2011_09_28_drive_0153_sync 0000000079
+2011_09_28 2011_09_28_drive_0153_sync 0000000080
+2011_09_28 2011_09_28_drive_0153_sync 0000000081
+2011_09_28 2011_09_28_drive_0153_sync 0000000082
+2011_09_28 2011_09_28_drive_0153_sync 0000000083
+2011_09_28 2011_09_28_drive_0153_sync 0000000084
+2011_09_28 2011_09_28_drive_0153_sync 0000000085
+2011_09_28 2011_09_28_drive_0153_sync 0000000086
+2011_09_28 2011_09_28_drive_0153_sync 0000000087
+2011_09_28 2011_09_28_drive_0153_sync 0000000088
+2011_09_28 2011_09_28_drive_0154_sync 0000000000
+2011_09_28 2011_09_28_drive_0154_sync 0000000001
+2011_09_28 2011_09_28_drive_0154_sync 0000000002
+2011_09_28 2011_09_28_drive_0154_sync 0000000003
+2011_09_28 2011_09_28_drive_0154_sync 0000000004
+2011_09_28 2011_09_28_drive_0154_sync 0000000005
+2011_09_28 2011_09_28_drive_0154_sync 0000000006
+2011_09_28 2011_09_28_drive_0154_sync 0000000007
+2011_09_28 2011_09_28_drive_0154_sync 0000000008
+2011_09_28 2011_09_28_drive_0154_sync 0000000009
+2011_09_28 2011_09_28_drive_0154_sync 0000000010
+2011_09_28 2011_09_28_drive_0154_sync 0000000011
+2011_09_28 2011_09_28_drive_0154_sync 0000000012
+2011_09_28 2011_09_28_drive_0154_sync 0000000013
+2011_09_28 2011_09_28_drive_0154_sync 0000000014
+2011_09_28 2011_09_28_drive_0154_sync 0000000015
+2011_09_28 2011_09_28_drive_0154_sync 0000000016
+2011_09_28 2011_09_28_drive_0154_sync 0000000017
+2011_09_28 2011_09_28_drive_0154_sync 0000000018
+2011_09_28 2011_09_28_drive_0154_sync 0000000019
+2011_09_28 2011_09_28_drive_0154_sync 0000000020
+2011_09_28 2011_09_28_drive_0154_sync 0000000021
+2011_09_28 2011_09_28_drive_0154_sync 0000000022
+2011_09_28 2011_09_28_drive_0154_sync 0000000023
+2011_09_28 2011_09_28_drive_0154_sync 0000000024
+2011_09_28 2011_09_28_drive_0154_sync 0000000025
+2011_09_28 2011_09_28_drive_0154_sync 0000000026
+2011_09_28 2011_09_28_drive_0154_sync 0000000027
+2011_09_28 2011_09_28_drive_0154_sync 0000000028
+2011_09_28 2011_09_28_drive_0154_sync 0000000029
+2011_09_28 2011_09_28_drive_0154_sync 0000000030
+2011_09_28 2011_09_28_drive_0154_sync 0000000031
+2011_09_28 2011_09_28_drive_0154_sync 0000000032
+2011_09_28 2011_09_28_drive_0154_sync 0000000033
+2011_09_28 2011_09_28_drive_0154_sync 0000000034
+2011_09_28 2011_09_28_drive_0154_sync 0000000035
+2011_09_28 2011_09_28_drive_0154_sync 0000000036
+2011_09_28 2011_09_28_drive_0154_sync 0000000037
+2011_09_28 2011_09_28_drive_0154_sync 0000000038
+2011_09_28 2011_09_28_drive_0154_sync 0000000039
+2011_09_28 2011_09_28_drive_0154_sync 0000000040
+2011_09_28 2011_09_28_drive_0154_sync 0000000041
+2011_09_28 2011_09_28_drive_0155_sync 0000000000
+2011_09_28 2011_09_28_drive_0155_sync 0000000001
+2011_09_28 2011_09_28_drive_0155_sync 0000000002
+2011_09_28 2011_09_28_drive_0155_sync 0000000003
+2011_09_28 2011_09_28_drive_0155_sync 0000000004
+2011_09_28 2011_09_28_drive_0155_sync 0000000005
+2011_09_28 2011_09_28_drive_0155_sync 0000000006
+2011_09_28 2011_09_28_drive_0155_sync 0000000007
+2011_09_28 2011_09_28_drive_0155_sync 0000000008
+2011_09_28 2011_09_28_drive_0155_sync 0000000009
+2011_09_28 2011_09_28_drive_0155_sync 0000000010
+2011_09_28 2011_09_28_drive_0155_sync 0000000011
+2011_09_28 2011_09_28_drive_0155_sync 0000000012
+2011_09_28 2011_09_28_drive_0155_sync 0000000013
+2011_09_28 2011_09_28_drive_0155_sync 0000000014
+2011_09_28 2011_09_28_drive_0155_sync 0000000015
+2011_09_28 2011_09_28_drive_0155_sync 0000000016
+2011_09_28 2011_09_28_drive_0155_sync 0000000017
+2011_09_28 2011_09_28_drive_0155_sync 0000000018
+2011_09_28 2011_09_28_drive_0155_sync 0000000019
+2011_09_28 2011_09_28_drive_0155_sync 0000000020
+2011_09_28 2011_09_28_drive_0155_sync 0000000021
+2011_09_28 2011_09_28_drive_0155_sync 0000000022
+2011_09_28 2011_09_28_drive_0155_sync 0000000023
+2011_09_28 2011_09_28_drive_0155_sync 0000000024
+2011_09_28 2011_09_28_drive_0155_sync 0000000025
+2011_09_28 2011_09_28_drive_0155_sync 0000000026
+2011_09_28 2011_09_28_drive_0155_sync 0000000027
+2011_09_28 2011_09_28_drive_0155_sync 0000000028
+2011_09_28 2011_09_28_drive_0155_sync 0000000029
+2011_09_28 2011_09_28_drive_0155_sync 0000000030
+2011_09_28 2011_09_28_drive_0155_sync 0000000031
+2011_09_28 2011_09_28_drive_0155_sync 0000000032
+2011_09_28 2011_09_28_drive_0155_sync 0000000033
+2011_09_28 2011_09_28_drive_0155_sync 0000000034
+2011_09_28 2011_09_28_drive_0155_sync 0000000035
+2011_09_28 2011_09_28_drive_0155_sync 0000000036
+2011_09_28 2011_09_28_drive_0155_sync 0000000037
+2011_09_28 2011_09_28_drive_0155_sync 0000000038
+2011_09_28 2011_09_28_drive_0155_sync 0000000039
+2011_09_28 2011_09_28_drive_0155_sync 0000000040
+2011_09_28 2011_09_28_drive_0155_sync 0000000041
+2011_09_28 2011_09_28_drive_0155_sync 0000000042
+2011_09_28 2011_09_28_drive_0155_sync 0000000043
+2011_09_28 2011_09_28_drive_0155_sync 0000000044
+2011_09_28 2011_09_28_drive_0155_sync 0000000045
+2011_09_28 2011_09_28_drive_0155_sync 0000000046
+2011_09_28 2011_09_28_drive_0156_sync 0000000000
+2011_09_28 2011_09_28_drive_0156_sync 0000000001
+2011_09_28 2011_09_28_drive_0156_sync 0000000002
+2011_09_28 2011_09_28_drive_0156_sync 0000000003
+2011_09_28 2011_09_28_drive_0156_sync 0000000004
+2011_09_28 2011_09_28_drive_0156_sync 0000000005
+2011_09_28 2011_09_28_drive_0156_sync 0000000006
+2011_09_28 2011_09_28_drive_0156_sync 0000000007
+2011_09_28 2011_09_28_drive_0156_sync 0000000008
+2011_09_28 2011_09_28_drive_0156_sync 0000000009
+2011_09_28 2011_09_28_drive_0156_sync 0000000010
+2011_09_28 2011_09_28_drive_0156_sync 0000000011
+2011_09_28 2011_09_28_drive_0156_sync 0000000012
+2011_09_28 2011_09_28_drive_0156_sync 0000000013
+2011_09_28 2011_09_28_drive_0156_sync 0000000014
+2011_09_28 2011_09_28_drive_0156_sync 0000000015
+2011_09_28 2011_09_28_drive_0156_sync 0000000016
+2011_09_28 2011_09_28_drive_0156_sync 0000000017
+2011_09_28 2011_09_28_drive_0156_sync 0000000018
+2011_09_28 2011_09_28_drive_0156_sync 0000000019
+2011_09_28 2011_09_28_drive_0156_sync 0000000020
+2011_09_28 2011_09_28_drive_0156_sync 0000000021
+2011_09_28 2011_09_28_drive_0156_sync 0000000022
+2011_09_28 2011_09_28_drive_0156_sync 0000000023
+2011_09_28 2011_09_28_drive_0156_sync 0000000024
+2011_09_28 2011_09_28_drive_0156_sync 0000000025
+2011_09_28 2011_09_28_drive_0156_sync 0000000026
+2011_09_28 2011_09_28_drive_0156_sync 0000000027
+2011_09_28 2011_09_28_drive_0156_sync 0000000028
+2011_09_28 2011_09_28_drive_0160_sync 0000000000
+2011_09_28 2011_09_28_drive_0160_sync 0000000001
+2011_09_28 2011_09_28_drive_0160_sync 0000000002
+2011_09_28 2011_09_28_drive_0160_sync 0000000003
+2011_09_28 2011_09_28_drive_0160_sync 0000000004
+2011_09_28 2011_09_28_drive_0160_sync 0000000005
+2011_09_28 2011_09_28_drive_0160_sync 0000000006
+2011_09_28 2011_09_28_drive_0160_sync 0000000007
+2011_09_28 2011_09_28_drive_0160_sync 0000000008
+2011_09_28 2011_09_28_drive_0160_sync 0000000009
+2011_09_28 2011_09_28_drive_0160_sync 0000000010
+2011_09_28 2011_09_28_drive_0160_sync 0000000011
+2011_09_28 2011_09_28_drive_0160_sync 0000000012
+2011_09_28 2011_09_28_drive_0160_sync 0000000013
+2011_09_28 2011_09_28_drive_0160_sync 0000000014
+2011_09_28 2011_09_28_drive_0160_sync 0000000015
+2011_09_28 2011_09_28_drive_0160_sync 0000000016
+2011_09_28 2011_09_28_drive_0160_sync 0000000017
+2011_09_28 2011_09_28_drive_0160_sync 0000000018
+2011_09_28 2011_09_28_drive_0160_sync 0000000019
+2011_09_28 2011_09_28_drive_0160_sync 0000000020
+2011_09_28 2011_09_28_drive_0160_sync 0000000021
+2011_09_28 2011_09_28_drive_0160_sync 0000000022
+2011_09_28 2011_09_28_drive_0160_sync 0000000023
+2011_09_28 2011_09_28_drive_0160_sync 0000000024
+2011_09_28 2011_09_28_drive_0160_sync 0000000025
+2011_09_28 2011_09_28_drive_0160_sync 0000000026
+2011_09_28 2011_09_28_drive_0160_sync 0000000027
+2011_09_28 2011_09_28_drive_0160_sync 0000000028
+2011_09_28 2011_09_28_drive_0160_sync 0000000029
+2011_09_28 2011_09_28_drive_0160_sync 0000000030
+2011_09_28 2011_09_28_drive_0160_sync 0000000031
+2011_09_28 2011_09_28_drive_0160_sync 0000000032
+2011_09_28 2011_09_28_drive_0160_sync 0000000033
+2011_09_28 2011_09_28_drive_0160_sync 0000000034
+2011_09_28 2011_09_28_drive_0160_sync 0000000035
+2011_09_28 2011_09_28_drive_0160_sync 0000000036
+2011_09_28 2011_09_28_drive_0160_sync 0000000037
+2011_09_28 2011_09_28_drive_0160_sync 0000000038
+2011_09_28 2011_09_28_drive_0160_sync 0000000039
+2011_09_28 2011_09_28_drive_0161_sync 0000000000
+2011_09_28 2011_09_28_drive_0161_sync 0000000001
+2011_09_28 2011_09_28_drive_0161_sync 0000000002
+2011_09_28 2011_09_28_drive_0161_sync 0000000003
+2011_09_28 2011_09_28_drive_0161_sync 0000000004
+2011_09_28 2011_09_28_drive_0161_sync 0000000005
+2011_09_28 2011_09_28_drive_0161_sync 0000000006
+2011_09_28 2011_09_28_drive_0161_sync 0000000007
+2011_09_28 2011_09_28_drive_0161_sync 0000000008
+2011_09_28 2011_09_28_drive_0161_sync 0000000009
+2011_09_28 2011_09_28_drive_0161_sync 0000000010
+2011_09_28 2011_09_28_drive_0161_sync 0000000011
+2011_09_28 2011_09_28_drive_0161_sync 0000000012
+2011_09_28 2011_09_28_drive_0161_sync 0000000013
+2011_09_28 2011_09_28_drive_0161_sync 0000000014
+2011_09_28 2011_09_28_drive_0161_sync 0000000015
+2011_09_28 2011_09_28_drive_0161_sync 0000000016
+2011_09_28 2011_09_28_drive_0161_sync 0000000017
+2011_09_28 2011_09_28_drive_0161_sync 0000000018
+2011_09_28 2011_09_28_drive_0161_sync 0000000019
+2011_09_28 2011_09_28_drive_0161_sync 0000000020
+2011_09_28 2011_09_28_drive_0161_sync 0000000021
+2011_09_28 2011_09_28_drive_0161_sync 0000000022
+2011_09_28 2011_09_28_drive_0161_sync 0000000023
+2011_09_28 2011_09_28_drive_0161_sync 0000000024
+2011_09_28 2011_09_28_drive_0161_sync 0000000025
+2011_09_28 2011_09_28_drive_0161_sync 0000000026
+2011_09_28 2011_09_28_drive_0161_sync 0000000027
+2011_09_28 2011_09_28_drive_0161_sync 0000000028
+2011_09_28 2011_09_28_drive_0161_sync 0000000029
+2011_09_28 2011_09_28_drive_0161_sync 0000000030
+2011_09_28 2011_09_28_drive_0161_sync 0000000031
+2011_09_28 2011_09_28_drive_0161_sync 0000000032
+2011_09_28 2011_09_28_drive_0161_sync 0000000033
+2011_09_28 2011_09_28_drive_0161_sync 0000000034
+2011_09_28 2011_09_28_drive_0161_sync 0000000035
+2011_09_28 2011_09_28_drive_0162_sync 0000000000
+2011_09_28 2011_09_28_drive_0162_sync 0000000001
+2011_09_28 2011_09_28_drive_0162_sync 0000000002
+2011_09_28 2011_09_28_drive_0162_sync 0000000003
+2011_09_28 2011_09_28_drive_0162_sync 0000000004
+2011_09_28 2011_09_28_drive_0162_sync 0000000005
+2011_09_28 2011_09_28_drive_0162_sync 0000000006
+2011_09_28 2011_09_28_drive_0162_sync 0000000007
+2011_09_28 2011_09_28_drive_0162_sync 0000000008
+2011_09_28 2011_09_28_drive_0162_sync 0000000009
+2011_09_28 2011_09_28_drive_0162_sync 0000000010
+2011_09_28 2011_09_28_drive_0162_sync 0000000011
+2011_09_28 2011_09_28_drive_0162_sync 0000000012
+2011_09_28 2011_09_28_drive_0162_sync 0000000013
+2011_09_28 2011_09_28_drive_0162_sync 0000000014
+2011_09_28 2011_09_28_drive_0162_sync 0000000015
+2011_09_28 2011_09_28_drive_0162_sync 0000000016
+2011_09_28 2011_09_28_drive_0162_sync 0000000017
+2011_09_28 2011_09_28_drive_0162_sync 0000000018
+2011_09_28 2011_09_28_drive_0162_sync 0000000019
+2011_09_28 2011_09_28_drive_0162_sync 0000000020
+2011_09_28 2011_09_28_drive_0162_sync 0000000021
+2011_09_28 2011_09_28_drive_0162_sync 0000000022
+2011_09_28 2011_09_28_drive_0162_sync 0000000023
+2011_09_28 2011_09_28_drive_0162_sync 0000000024
+2011_09_28 2011_09_28_drive_0162_sync 0000000025
+2011_09_28 2011_09_28_drive_0162_sync 0000000026
+2011_09_28 2011_09_28_drive_0162_sync 0000000027
+2011_09_28 2011_09_28_drive_0162_sync 0000000028
+2011_09_28 2011_09_28_drive_0162_sync 0000000029
+2011_09_28 2011_09_28_drive_0162_sync 0000000030
+2011_09_28 2011_09_28_drive_0162_sync 0000000031
+2011_09_28 2011_09_28_drive_0162_sync 0000000032
+2011_09_28 2011_09_28_drive_0162_sync 0000000033
+2011_09_28 2011_09_28_drive_0162_sync 0000000034
+2011_09_28 2011_09_28_drive_0162_sync 0000000035
+2011_09_28 2011_09_28_drive_0162_sync 0000000036
+2011_09_28 2011_09_28_drive_0165_sync 0000000000
+2011_09_28 2011_09_28_drive_0165_sync 0000000001
+2011_09_28 2011_09_28_drive_0165_sync 0000000002
+2011_09_28 2011_09_28_drive_0165_sync 0000000003
+2011_09_28 2011_09_28_drive_0165_sync 0000000004
+2011_09_28 2011_09_28_drive_0165_sync 0000000005
+2011_09_28 2011_09_28_drive_0165_sync 0000000006
+2011_09_28 2011_09_28_drive_0165_sync 0000000007
+2011_09_28 2011_09_28_drive_0165_sync 0000000008
+2011_09_28 2011_09_28_drive_0165_sync 0000000009
+2011_09_28 2011_09_28_drive_0165_sync 0000000010
+2011_09_28 2011_09_28_drive_0165_sync 0000000011
+2011_09_28 2011_09_28_drive_0165_sync 0000000012
+2011_09_28 2011_09_28_drive_0165_sync 0000000013
+2011_09_28 2011_09_28_drive_0165_sync 0000000014
+2011_09_28 2011_09_28_drive_0165_sync 0000000015
+2011_09_28 2011_09_28_drive_0165_sync 0000000016
+2011_09_28 2011_09_28_drive_0165_sync 0000000017
+2011_09_28 2011_09_28_drive_0165_sync 0000000018
+2011_09_28 2011_09_28_drive_0165_sync 0000000019
+2011_09_28 2011_09_28_drive_0165_sync 0000000020
+2011_09_28 2011_09_28_drive_0165_sync 0000000021
+2011_09_28 2011_09_28_drive_0165_sync 0000000022
+2011_09_28 2011_09_28_drive_0165_sync 0000000023
+2011_09_28 2011_09_28_drive_0165_sync 0000000024
+2011_09_28 2011_09_28_drive_0165_sync 0000000025
+2011_09_28 2011_09_28_drive_0165_sync 0000000026
+2011_09_28 2011_09_28_drive_0165_sync 0000000027
+2011_09_28 2011_09_28_drive_0165_sync 0000000028
+2011_09_28 2011_09_28_drive_0165_sync 0000000029
+2011_09_28 2011_09_28_drive_0165_sync 0000000030
+2011_09_28 2011_09_28_drive_0165_sync 0000000031
+2011_09_28 2011_09_28_drive_0165_sync 0000000032
+2011_09_28 2011_09_28_drive_0165_sync 0000000033
+2011_09_28 2011_09_28_drive_0165_sync 0000000034
+2011_09_28 2011_09_28_drive_0165_sync 0000000035
+2011_09_28 2011_09_28_drive_0165_sync 0000000036
+2011_09_28 2011_09_28_drive_0165_sync 0000000037
+2011_09_28 2011_09_28_drive_0165_sync 0000000038
+2011_09_28 2011_09_28_drive_0165_sync 0000000039
+2011_09_28 2011_09_28_drive_0165_sync 0000000040
+2011_09_28 2011_09_28_drive_0165_sync 0000000041
+2011_09_28 2011_09_28_drive_0165_sync 0000000042
+2011_09_28 2011_09_28_drive_0165_sync 0000000043
+2011_09_28 2011_09_28_drive_0165_sync 0000000044
+2011_09_28 2011_09_28_drive_0165_sync 0000000045
+2011_09_28 2011_09_28_drive_0165_sync 0000000046
+2011_09_28 2011_09_28_drive_0165_sync 0000000047
+2011_09_28 2011_09_28_drive_0165_sync 0000000048
+2011_09_28 2011_09_28_drive_0165_sync 0000000049
+2011_09_28 2011_09_28_drive_0165_sync 0000000050
+2011_09_28 2011_09_28_drive_0165_sync 0000000051
+2011_09_28 2011_09_28_drive_0165_sync 0000000052
+2011_09_28 2011_09_28_drive_0165_sync 0000000053
+2011_09_28 2011_09_28_drive_0165_sync 0000000054
+2011_09_28 2011_09_28_drive_0165_sync 0000000055
+2011_09_28 2011_09_28_drive_0165_sync 0000000056
+2011_09_28 2011_09_28_drive_0165_sync 0000000057
+2011_09_28 2011_09_28_drive_0165_sync 0000000058
+2011_09_28 2011_09_28_drive_0165_sync 0000000059
+2011_09_28 2011_09_28_drive_0165_sync 0000000060
+2011_09_28 2011_09_28_drive_0165_sync 0000000061
+2011_09_28 2011_09_28_drive_0165_sync 0000000062
+2011_09_28 2011_09_28_drive_0165_sync 0000000063
+2011_09_28 2011_09_28_drive_0165_sync 0000000064
+2011_09_28 2011_09_28_drive_0165_sync 0000000065
+2011_09_28 2011_09_28_drive_0165_sync 0000000066
+2011_09_28 2011_09_28_drive_0165_sync 0000000067
+2011_09_28 2011_09_28_drive_0165_sync 0000000068
+2011_09_28 2011_09_28_drive_0165_sync 0000000069
+2011_09_28 2011_09_28_drive_0165_sync 0000000070
+2011_09_28 2011_09_28_drive_0165_sync 0000000071
+2011_09_28 2011_09_28_drive_0165_sync 0000000072
+2011_09_28 2011_09_28_drive_0165_sync 0000000073
+2011_09_28 2011_09_28_drive_0165_sync 0000000074
+2011_09_28 2011_09_28_drive_0165_sync 0000000075
+2011_09_28 2011_09_28_drive_0165_sync 0000000076
+2011_09_28 2011_09_28_drive_0165_sync 0000000077
+2011_09_28 2011_09_28_drive_0165_sync 0000000078
+2011_09_28 2011_09_28_drive_0165_sync 0000000079
+2011_09_28 2011_09_28_drive_0165_sync 0000000080
+2011_09_28 2011_09_28_drive_0165_sync 0000000081
+2011_09_28 2011_09_28_drive_0166_sync 0000000000
+2011_09_28 2011_09_28_drive_0166_sync 0000000001
+2011_09_28 2011_09_28_drive_0166_sync 0000000002
+2011_09_28 2011_09_28_drive_0166_sync 0000000003
+2011_09_28 2011_09_28_drive_0166_sync 0000000004
+2011_09_28 2011_09_28_drive_0166_sync 0000000005
+2011_09_28 2011_09_28_drive_0166_sync 0000000006
+2011_09_28 2011_09_28_drive_0166_sync 0000000007
+2011_09_28 2011_09_28_drive_0166_sync 0000000008
+2011_09_28 2011_09_28_drive_0166_sync 0000000009
+2011_09_28 2011_09_28_drive_0166_sync 0000000010
+2011_09_28 2011_09_28_drive_0166_sync 0000000011
+2011_09_28 2011_09_28_drive_0166_sync 0000000012
+2011_09_28 2011_09_28_drive_0166_sync 0000000013
+2011_09_28 2011_09_28_drive_0166_sync 0000000014
+2011_09_28 2011_09_28_drive_0166_sync 0000000015
+2011_09_28 2011_09_28_drive_0166_sync 0000000016
+2011_09_28 2011_09_28_drive_0166_sync 0000000017
+2011_09_28 2011_09_28_drive_0166_sync 0000000018
+2011_09_28 2011_09_28_drive_0166_sync 0000000019
+2011_09_28 2011_09_28_drive_0166_sync 0000000020
+2011_09_28 2011_09_28_drive_0166_sync 0000000021
+2011_09_28 2011_09_28_drive_0166_sync 0000000022
+2011_09_28 2011_09_28_drive_0166_sync 0000000023
+2011_09_28 2011_09_28_drive_0166_sync 0000000024
+2011_09_28 2011_09_28_drive_0166_sync 0000000025
+2011_09_28 2011_09_28_drive_0166_sync 0000000026
+2011_09_28 2011_09_28_drive_0166_sync 0000000027
+2011_09_28 2011_09_28_drive_0166_sync 0000000028
+2011_09_28 2011_09_28_drive_0166_sync 0000000029
+2011_09_28 2011_09_28_drive_0166_sync 0000000030
+2011_09_28 2011_09_28_drive_0166_sync 0000000031
+2011_09_28 2011_09_28_drive_0166_sync 0000000032
+2011_09_28 2011_09_28_drive_0166_sync 0000000033
+2011_09_28 2011_09_28_drive_0166_sync 0000000034
+2011_09_28 2011_09_28_drive_0166_sync 0000000035
+2011_09_28 2011_09_28_drive_0166_sync 0000000036
+2011_09_28 2011_09_28_drive_0166_sync 0000000037
+2011_09_28 2011_09_28_drive_0167_sync 0000000000
+2011_09_28 2011_09_28_drive_0167_sync 0000000001
+2011_09_28 2011_09_28_drive_0167_sync 0000000002
+2011_09_28 2011_09_28_drive_0167_sync 0000000003
+2011_09_28 2011_09_28_drive_0167_sync 0000000004
+2011_09_28 2011_09_28_drive_0167_sync 0000000005
+2011_09_28 2011_09_28_drive_0167_sync 0000000006
+2011_09_28 2011_09_28_drive_0167_sync 0000000007
+2011_09_28 2011_09_28_drive_0167_sync 0000000008
+2011_09_28 2011_09_28_drive_0167_sync 0000000009
+2011_09_28 2011_09_28_drive_0167_sync 0000000010
+2011_09_28 2011_09_28_drive_0167_sync 0000000011
+2011_09_28 2011_09_28_drive_0167_sync 0000000012
+2011_09_28 2011_09_28_drive_0167_sync 0000000013
+2011_09_28 2011_09_28_drive_0167_sync 0000000014
+2011_09_28 2011_09_28_drive_0167_sync 0000000015
+2011_09_28 2011_09_28_drive_0167_sync 0000000016
+2011_09_28 2011_09_28_drive_0167_sync 0000000017
+2011_09_28 2011_09_28_drive_0167_sync 0000000018
+2011_09_28 2011_09_28_drive_0167_sync 0000000019
+2011_09_28 2011_09_28_drive_0167_sync 0000000020
+2011_09_28 2011_09_28_drive_0167_sync 0000000021
+2011_09_28 2011_09_28_drive_0167_sync 0000000022
+2011_09_28 2011_09_28_drive_0167_sync 0000000023
+2011_09_28 2011_09_28_drive_0167_sync 0000000024
+2011_09_28 2011_09_28_drive_0167_sync 0000000025
+2011_09_28 2011_09_28_drive_0167_sync 0000000026
+2011_09_28 2011_09_28_drive_0167_sync 0000000027
+2011_09_28 2011_09_28_drive_0167_sync 0000000028
+2011_09_28 2011_09_28_drive_0167_sync 0000000029
+2011_09_28 2011_09_28_drive_0167_sync 0000000030
+2011_09_28 2011_09_28_drive_0167_sync 0000000031
+2011_09_28 2011_09_28_drive_0167_sync 0000000032
+2011_09_28 2011_09_28_drive_0167_sync 0000000033
+2011_09_28 2011_09_28_drive_0167_sync 0000000034
+2011_09_28 2011_09_28_drive_0167_sync 0000000035
+2011_09_28 2011_09_28_drive_0167_sync 0000000036
+2011_09_28 2011_09_28_drive_0167_sync 0000000037
+2011_09_28 2011_09_28_drive_0167_sync 0000000038
+2011_09_28 2011_09_28_drive_0167_sync 0000000039
+2011_09_28 2011_09_28_drive_0167_sync 0000000040
+2011_09_28 2011_09_28_drive_0167_sync 0000000041
+2011_09_28 2011_09_28_drive_0167_sync 0000000042
+2011_09_28 2011_09_28_drive_0167_sync 0000000043
+2011_09_28 2011_09_28_drive_0167_sync 0000000044
+2011_09_28 2011_09_28_drive_0167_sync 0000000045
+2011_09_28 2011_09_28_drive_0167_sync 0000000046
+2011_09_28 2011_09_28_drive_0167_sync 0000000047
+2011_09_28 2011_09_28_drive_0167_sync 0000000048
+2011_09_28 2011_09_28_drive_0167_sync 0000000049
+2011_09_28 2011_09_28_drive_0167_sync 0000000050
+2011_09_28 2011_09_28_drive_0167_sync 0000000051
+2011_09_28 2011_09_28_drive_0167_sync 0000000052
+2011_09_28 2011_09_28_drive_0168_sync 0000000000
+2011_09_28 2011_09_28_drive_0168_sync 0000000001
+2011_09_28 2011_09_28_drive_0168_sync 0000000002
+2011_09_28 2011_09_28_drive_0168_sync 0000000003
+2011_09_28 2011_09_28_drive_0168_sync 0000000004
+2011_09_28 2011_09_28_drive_0168_sync 0000000005
+2011_09_28 2011_09_28_drive_0168_sync 0000000006
+2011_09_28 2011_09_28_drive_0168_sync 0000000007
+2011_09_28 2011_09_28_drive_0168_sync 0000000008
+2011_09_28 2011_09_28_drive_0168_sync 0000000009
+2011_09_28 2011_09_28_drive_0168_sync 0000000010
+2011_09_28 2011_09_28_drive_0168_sync 0000000011
+2011_09_28 2011_09_28_drive_0168_sync 0000000012
+2011_09_28 2011_09_28_drive_0168_sync 0000000013
+2011_09_28 2011_09_28_drive_0168_sync 0000000014
+2011_09_28 2011_09_28_drive_0168_sync 0000000015
+2011_09_28 2011_09_28_drive_0168_sync 0000000016
+2011_09_28 2011_09_28_drive_0168_sync 0000000017
+2011_09_28 2011_09_28_drive_0168_sync 0000000018
+2011_09_28 2011_09_28_drive_0168_sync 0000000019
+2011_09_28 2011_09_28_drive_0168_sync 0000000020
+2011_09_28 2011_09_28_drive_0168_sync 0000000021
+2011_09_28 2011_09_28_drive_0168_sync 0000000022
+2011_09_28 2011_09_28_drive_0168_sync 0000000023
+2011_09_28 2011_09_28_drive_0168_sync 0000000024
+2011_09_28 2011_09_28_drive_0168_sync 0000000025
+2011_09_28 2011_09_28_drive_0168_sync 0000000026
+2011_09_28 2011_09_28_drive_0168_sync 0000000027
+2011_09_28 2011_09_28_drive_0168_sync 0000000028
+2011_09_28 2011_09_28_drive_0168_sync 0000000029
+2011_09_28 2011_09_28_drive_0168_sync 0000000030
+2011_09_28 2011_09_28_drive_0168_sync 0000000031
+2011_09_28 2011_09_28_drive_0168_sync 0000000032
+2011_09_28 2011_09_28_drive_0168_sync 0000000033
+2011_09_28 2011_09_28_drive_0168_sync 0000000034
+2011_09_28 2011_09_28_drive_0168_sync 0000000035
+2011_09_28 2011_09_28_drive_0168_sync 0000000036
+2011_09_28 2011_09_28_drive_0168_sync 0000000037
+2011_09_28 2011_09_28_drive_0168_sync 0000000038
+2011_09_28 2011_09_28_drive_0168_sync 0000000039
+2011_09_28 2011_09_28_drive_0168_sync 0000000040
+2011_09_28 2011_09_28_drive_0168_sync 0000000041
+2011_09_28 2011_09_28_drive_0168_sync 0000000042
+2011_09_28 2011_09_28_drive_0168_sync 0000000043
+2011_09_28 2011_09_28_drive_0168_sync 0000000044
+2011_09_28 2011_09_28_drive_0168_sync 0000000045
+2011_09_28 2011_09_28_drive_0168_sync 0000000046
+2011_09_28 2011_09_28_drive_0168_sync 0000000047
+2011_09_28 2011_09_28_drive_0168_sync 0000000048
+2011_09_28 2011_09_28_drive_0168_sync 0000000049
+2011_09_28 2011_09_28_drive_0168_sync 0000000050
+2011_09_28 2011_09_28_drive_0168_sync 0000000051
+2011_09_28 2011_09_28_drive_0168_sync 0000000052
+2011_09_28 2011_09_28_drive_0168_sync 0000000053
+2011_09_28 2011_09_28_drive_0168_sync 0000000054
+2011_09_28 2011_09_28_drive_0168_sync 0000000055
+2011_09_28 2011_09_28_drive_0171_sync 0000000000
+2011_09_28 2011_09_28_drive_0171_sync 0000000001
+2011_09_28 2011_09_28_drive_0171_sync 0000000002
+2011_09_28 2011_09_28_drive_0171_sync 0000000003
+2011_09_28 2011_09_28_drive_0171_sync 0000000004
+2011_09_28 2011_09_28_drive_0171_sync 0000000005
+2011_09_28 2011_09_28_drive_0171_sync 0000000006
+2011_09_28 2011_09_28_drive_0171_sync 0000000007
+2011_09_28 2011_09_28_drive_0171_sync 0000000008
+2011_09_28 2011_09_28_drive_0171_sync 0000000009
+2011_09_28 2011_09_28_drive_0171_sync 0000000010
+2011_09_28 2011_09_28_drive_0171_sync 0000000011
+2011_09_28 2011_09_28_drive_0171_sync 0000000012
+2011_09_28 2011_09_28_drive_0171_sync 0000000013
+2011_09_28 2011_09_28_drive_0171_sync 0000000014
+2011_09_28 2011_09_28_drive_0171_sync 0000000015
+2011_09_28 2011_09_28_drive_0171_sync 0000000016
+2011_09_28 2011_09_28_drive_0171_sync 0000000017
+2011_09_28 2011_09_28_drive_0171_sync 0000000018
+2011_09_28 2011_09_28_drive_0171_sync 0000000019
+2011_09_28 2011_09_28_drive_0171_sync 0000000020
+2011_09_28 2011_09_28_drive_0171_sync 0000000021
+2011_09_28 2011_09_28_drive_0171_sync 0000000022
+2011_09_28 2011_09_28_drive_0171_sync 0000000023
+2011_09_28 2011_09_28_drive_0171_sync 0000000024
+2011_09_28 2011_09_28_drive_0171_sync 0000000025
+2011_09_28 2011_09_28_drive_0171_sync 0000000026
+2011_09_28 2011_09_28_drive_0174_sync 0000000000
+2011_09_28 2011_09_28_drive_0174_sync 0000000001
+2011_09_28 2011_09_28_drive_0174_sync 0000000002
+2011_09_28 2011_09_28_drive_0174_sync 0000000003
+2011_09_28 2011_09_28_drive_0174_sync 0000000004
+2011_09_28 2011_09_28_drive_0174_sync 0000000005
+2011_09_28 2011_09_28_drive_0174_sync 0000000006
+2011_09_28 2011_09_28_drive_0174_sync 0000000007
+2011_09_28 2011_09_28_drive_0174_sync 0000000008
+2011_09_28 2011_09_28_drive_0174_sync 0000000009
+2011_09_28 2011_09_28_drive_0174_sync 0000000010
+2011_09_28 2011_09_28_drive_0174_sync 0000000011
+2011_09_28 2011_09_28_drive_0174_sync 0000000012
+2011_09_28 2011_09_28_drive_0174_sync 0000000013
+2011_09_28 2011_09_28_drive_0174_sync 0000000014
+2011_09_28 2011_09_28_drive_0174_sync 0000000015
+2011_09_28 2011_09_28_drive_0174_sync 0000000016
+2011_09_28 2011_09_28_drive_0174_sync 0000000017
+2011_09_28 2011_09_28_drive_0174_sync 0000000018
+2011_09_28 2011_09_28_drive_0174_sync 0000000019
+2011_09_28 2011_09_28_drive_0174_sync 0000000020
+2011_09_28 2011_09_28_drive_0174_sync 0000000021
+2011_09_28 2011_09_28_drive_0174_sync 0000000022
+2011_09_28 2011_09_28_drive_0174_sync 0000000023
+2011_09_28 2011_09_28_drive_0174_sync 0000000024
+2011_09_28 2011_09_28_drive_0174_sync 0000000025
+2011_09_28 2011_09_28_drive_0174_sync 0000000026
+2011_09_28 2011_09_28_drive_0174_sync 0000000027
+2011_09_28 2011_09_28_drive_0174_sync 0000000028
+2011_09_28 2011_09_28_drive_0174_sync 0000000029
+2011_09_28 2011_09_28_drive_0174_sync 0000000030
+2011_09_28 2011_09_28_drive_0174_sync 0000000031
+2011_09_28 2011_09_28_drive_0174_sync 0000000032
+2011_09_28 2011_09_28_drive_0174_sync 0000000033
+2011_09_28 2011_09_28_drive_0174_sync 0000000034
+2011_09_28 2011_09_28_drive_0174_sync 0000000035
+2011_09_28 2011_09_28_drive_0174_sync 0000000036
+2011_09_28 2011_09_28_drive_0174_sync 0000000037
+2011_09_28 2011_09_28_drive_0174_sync 0000000038
+2011_09_28 2011_09_28_drive_0174_sync 0000000039
+2011_09_28 2011_09_28_drive_0174_sync 0000000040
+2011_09_28 2011_09_28_drive_0174_sync 0000000041
+2011_09_28 2011_09_28_drive_0174_sync 0000000042
+2011_09_28 2011_09_28_drive_0174_sync 0000000043
+2011_09_28 2011_09_28_drive_0174_sync 0000000044
+2011_09_28 2011_09_28_drive_0174_sync 0000000045
+2011_09_28 2011_09_28_drive_0174_sync 0000000046
+2011_09_28 2011_09_28_drive_0174_sync 0000000047
+2011_09_28 2011_09_28_drive_0174_sync 0000000048
+2011_09_28 2011_09_28_drive_0174_sync 0000000049
+2011_09_28 2011_09_28_drive_0174_sync 0000000050
+2011_09_28 2011_09_28_drive_0174_sync 0000000051
+2011_09_28 2011_09_28_drive_0174_sync 0000000052
+2011_09_28 2011_09_28_drive_0177_sync 0000000000
+2011_09_28 2011_09_28_drive_0177_sync 0000000001
+2011_09_28 2011_09_28_drive_0177_sync 0000000002
+2011_09_28 2011_09_28_drive_0177_sync 0000000003
+2011_09_28 2011_09_28_drive_0177_sync 0000000004
+2011_09_28 2011_09_28_drive_0177_sync 0000000005
+2011_09_28 2011_09_28_drive_0177_sync 0000000006
+2011_09_28 2011_09_28_drive_0177_sync 0000000007
+2011_09_28 2011_09_28_drive_0177_sync 0000000008
+2011_09_28 2011_09_28_drive_0177_sync 0000000009
+2011_09_28 2011_09_28_drive_0177_sync 0000000010
+2011_09_28 2011_09_28_drive_0177_sync 0000000011
+2011_09_28 2011_09_28_drive_0177_sync 0000000012
+2011_09_28 2011_09_28_drive_0177_sync 0000000013
+2011_09_28 2011_09_28_drive_0177_sync 0000000014
+2011_09_28 2011_09_28_drive_0177_sync 0000000015
+2011_09_28 2011_09_28_drive_0177_sync 0000000016
+2011_09_28 2011_09_28_drive_0177_sync 0000000017
+2011_09_28 2011_09_28_drive_0177_sync 0000000018
+2011_09_28 2011_09_28_drive_0177_sync 0000000019
+2011_09_28 2011_09_28_drive_0177_sync 0000000020
+2011_09_28 2011_09_28_drive_0177_sync 0000000021
+2011_09_28 2011_09_28_drive_0177_sync 0000000022
+2011_09_28 2011_09_28_drive_0177_sync 0000000023
+2011_09_28 2011_09_28_drive_0177_sync 0000000024
+2011_09_28 2011_09_28_drive_0177_sync 0000000025
+2011_09_28 2011_09_28_drive_0177_sync 0000000026
+2011_09_28 2011_09_28_drive_0177_sync 0000000027
+2011_09_28 2011_09_28_drive_0177_sync 0000000028
+2011_09_28 2011_09_28_drive_0177_sync 0000000029
+2011_09_28 2011_09_28_drive_0177_sync 0000000030
+2011_09_28 2011_09_28_drive_0177_sync 0000000031
+2011_09_28 2011_09_28_drive_0177_sync 0000000032
+2011_09_28 2011_09_28_drive_0177_sync 0000000033
+2011_09_28 2011_09_28_drive_0177_sync 0000000034
+2011_09_28 2011_09_28_drive_0177_sync 0000000035
+2011_09_28 2011_09_28_drive_0177_sync 0000000036
+2011_09_28 2011_09_28_drive_0177_sync 0000000037
+2011_09_28 2011_09_28_drive_0177_sync 0000000038
+2011_09_28 2011_09_28_drive_0177_sync 0000000039
+2011_09_28 2011_09_28_drive_0177_sync 0000000040
+2011_09_28 2011_09_28_drive_0177_sync 0000000041
+2011_09_28 2011_09_28_drive_0177_sync 0000000042
+2011_09_28 2011_09_28_drive_0177_sync 0000000043
+2011_09_28 2011_09_28_drive_0177_sync 0000000044
+2011_09_28 2011_09_28_drive_0177_sync 0000000045
+2011_09_28 2011_09_28_drive_0177_sync 0000000046
+2011_09_28 2011_09_28_drive_0177_sync 0000000047
+2011_09_28 2011_09_28_drive_0177_sync 0000000048
+2011_09_28 2011_09_28_drive_0177_sync 0000000049
+2011_09_28 2011_09_28_drive_0177_sync 0000000050
+2011_09_28 2011_09_28_drive_0177_sync 0000000051
+2011_09_28 2011_09_28_drive_0177_sync 0000000052
+2011_09_28 2011_09_28_drive_0177_sync 0000000053
+2011_09_28 2011_09_28_drive_0177_sync 0000000054
+2011_09_28 2011_09_28_drive_0177_sync 0000000055
+2011_09_28 2011_09_28_drive_0177_sync 0000000056
+2011_09_28 2011_09_28_drive_0177_sync 0000000057
+2011_09_28 2011_09_28_drive_0177_sync 0000000058
+2011_09_28 2011_09_28_drive_0177_sync 0000000059
+2011_09_28 2011_09_28_drive_0177_sync 0000000060
+2011_09_28 2011_09_28_drive_0177_sync 0000000061
+2011_09_28 2011_09_28_drive_0177_sync 0000000062
+2011_09_28 2011_09_28_drive_0177_sync 0000000063
+2011_09_28 2011_09_28_drive_0177_sync 0000000064
+2011_09_28 2011_09_28_drive_0177_sync 0000000065
+2011_09_28 2011_09_28_drive_0177_sync 0000000066
+2011_09_28 2011_09_28_drive_0177_sync 0000000067
+2011_09_28 2011_09_28_drive_0177_sync 0000000068
+2011_09_28 2011_09_28_drive_0177_sync 0000000069
+2011_09_28 2011_09_28_drive_0177_sync 0000000070
+2011_09_28 2011_09_28_drive_0177_sync 0000000071
+2011_09_28 2011_09_28_drive_0177_sync 0000000072
+2011_09_28 2011_09_28_drive_0177_sync 0000000073
+2011_09_28 2011_09_28_drive_0177_sync 0000000074
+2011_09_28 2011_09_28_drive_0177_sync 0000000075
+2011_09_28 2011_09_28_drive_0177_sync 0000000076
+2011_09_28 2011_09_28_drive_0179_sync 0000000000
+2011_09_28 2011_09_28_drive_0179_sync 0000000001
+2011_09_28 2011_09_28_drive_0179_sync 0000000002
+2011_09_28 2011_09_28_drive_0179_sync 0000000003
+2011_09_28 2011_09_28_drive_0179_sync 0000000004
+2011_09_28 2011_09_28_drive_0179_sync 0000000005
+2011_09_28 2011_09_28_drive_0179_sync 0000000006
+2011_09_28 2011_09_28_drive_0179_sync 0000000007
+2011_09_28 2011_09_28_drive_0179_sync 0000000008
+2011_09_28 2011_09_28_drive_0179_sync 0000000009
+2011_09_28 2011_09_28_drive_0179_sync 0000000010
+2011_09_28 2011_09_28_drive_0179_sync 0000000011
+2011_09_28 2011_09_28_drive_0179_sync 0000000012
+2011_09_28 2011_09_28_drive_0179_sync 0000000013
+2011_09_28 2011_09_28_drive_0179_sync 0000000014
+2011_09_28 2011_09_28_drive_0179_sync 0000000015
+2011_09_28 2011_09_28_drive_0179_sync 0000000016
+2011_09_28 2011_09_28_drive_0179_sync 0000000017
+2011_09_28 2011_09_28_drive_0179_sync 0000000018
+2011_09_28 2011_09_28_drive_0179_sync 0000000019
+2011_09_28 2011_09_28_drive_0179_sync 0000000020
+2011_09_28 2011_09_28_drive_0179_sync 0000000021
+2011_09_28 2011_09_28_drive_0179_sync 0000000022
+2011_09_28 2011_09_28_drive_0179_sync 0000000023
+2011_09_28 2011_09_28_drive_0179_sync 0000000024
+2011_09_28 2011_09_28_drive_0179_sync 0000000025
+2011_09_28 2011_09_28_drive_0179_sync 0000000026
+2011_09_28 2011_09_28_drive_0179_sync 0000000027
+2011_09_28 2011_09_28_drive_0179_sync 0000000028
+2011_09_28 2011_09_28_drive_0179_sync 0000000029
+2011_09_28 2011_09_28_drive_0179_sync 0000000030
+2011_09_28 2011_09_28_drive_0179_sync 0000000031
+2011_09_28 2011_09_28_drive_0179_sync 0000000032
+2011_09_28 2011_09_28_drive_0179_sync 0000000033
+2011_09_28 2011_09_28_drive_0179_sync 0000000034
+2011_09_28 2011_09_28_drive_0179_sync 0000000035
+2011_09_28 2011_09_28_drive_0179_sync 0000000036
+2011_09_28 2011_09_28_drive_0179_sync 0000000037
+2011_09_28 2011_09_28_drive_0179_sync 0000000038
+2011_09_28 2011_09_28_drive_0179_sync 0000000039
+2011_09_28 2011_09_28_drive_0179_sync 0000000040
+2011_09_28 2011_09_28_drive_0179_sync 0000000041
+2011_09_28 2011_09_28_drive_0183_sync 0000000000
+2011_09_28 2011_09_28_drive_0183_sync 0000000001
+2011_09_28 2011_09_28_drive_0183_sync 0000000002
+2011_09_28 2011_09_28_drive_0183_sync 0000000003
+2011_09_28 2011_09_28_drive_0183_sync 0000000004
+2011_09_28 2011_09_28_drive_0183_sync 0000000005
+2011_09_28 2011_09_28_drive_0183_sync 0000000006
+2011_09_28 2011_09_28_drive_0183_sync 0000000007
+2011_09_28 2011_09_28_drive_0183_sync 0000000008
+2011_09_28 2011_09_28_drive_0183_sync 0000000009
+2011_09_28 2011_09_28_drive_0183_sync 0000000010
+2011_09_28 2011_09_28_drive_0183_sync 0000000011
+2011_09_28 2011_09_28_drive_0183_sync 0000000012
+2011_09_28 2011_09_28_drive_0183_sync 0000000013
+2011_09_28 2011_09_28_drive_0183_sync 0000000014
+2011_09_28 2011_09_28_drive_0183_sync 0000000015
+2011_09_28 2011_09_28_drive_0183_sync 0000000016
+2011_09_28 2011_09_28_drive_0183_sync 0000000017
+2011_09_28 2011_09_28_drive_0183_sync 0000000018
+2011_09_28 2011_09_28_drive_0183_sync 0000000019
+2011_09_28 2011_09_28_drive_0183_sync 0000000020
+2011_09_28 2011_09_28_drive_0183_sync 0000000021
+2011_09_28 2011_09_28_drive_0183_sync 0000000022
+2011_09_28 2011_09_28_drive_0183_sync 0000000023
+2011_09_28 2011_09_28_drive_0183_sync 0000000024
+2011_09_28 2011_09_28_drive_0183_sync 0000000025
+2011_09_28 2011_09_28_drive_0183_sync 0000000026
+2011_09_28 2011_09_28_drive_0183_sync 0000000027
+2011_09_28 2011_09_28_drive_0183_sync 0000000028
+2011_09_28 2011_09_28_drive_0183_sync 0000000029
+2011_09_28 2011_09_28_drive_0183_sync 0000000030
+2011_09_28 2011_09_28_drive_0183_sync 0000000031
+2011_09_28 2011_09_28_drive_0183_sync 0000000032
+2011_09_28 2011_09_28_drive_0183_sync 0000000033
+2011_09_28 2011_09_28_drive_0183_sync 0000000034
+2011_09_28 2011_09_28_drive_0183_sync 0000000035
+2011_09_28 2011_09_28_drive_0183_sync 0000000036
+2011_09_28 2011_09_28_drive_0183_sync 0000000037
+2011_09_28 2011_09_28_drive_0184_sync 0000000000
+2011_09_28 2011_09_28_drive_0184_sync 0000000001
+2011_09_28 2011_09_28_drive_0184_sync 0000000002
+2011_09_28 2011_09_28_drive_0184_sync 0000000003
+2011_09_28 2011_09_28_drive_0184_sync 0000000004
+2011_09_28 2011_09_28_drive_0184_sync 0000000005
+2011_09_28 2011_09_28_drive_0184_sync 0000000006
+2011_09_28 2011_09_28_drive_0184_sync 0000000007
+2011_09_28 2011_09_28_drive_0184_sync 0000000008
+2011_09_28 2011_09_28_drive_0184_sync 0000000009
+2011_09_28 2011_09_28_drive_0184_sync 0000000010
+2011_09_28 2011_09_28_drive_0184_sync 0000000011
+2011_09_28 2011_09_28_drive_0184_sync 0000000012
+2011_09_28 2011_09_28_drive_0184_sync 0000000013
+2011_09_28 2011_09_28_drive_0184_sync 0000000014
+2011_09_28 2011_09_28_drive_0184_sync 0000000015
+2011_09_28 2011_09_28_drive_0184_sync 0000000016
+2011_09_28 2011_09_28_drive_0184_sync 0000000017
+2011_09_28 2011_09_28_drive_0184_sync 0000000018
+2011_09_28 2011_09_28_drive_0184_sync 0000000019
+2011_09_28 2011_09_28_drive_0184_sync 0000000020
+2011_09_28 2011_09_28_drive_0184_sync 0000000021
+2011_09_28 2011_09_28_drive_0184_sync 0000000022
+2011_09_28 2011_09_28_drive_0184_sync 0000000023
+2011_09_28 2011_09_28_drive_0184_sync 0000000024
+2011_09_28 2011_09_28_drive_0184_sync 0000000025
+2011_09_28 2011_09_28_drive_0184_sync 0000000026
+2011_09_28 2011_09_28_drive_0184_sync 0000000027
+2011_09_28 2011_09_28_drive_0184_sync 0000000028
+2011_09_28 2011_09_28_drive_0184_sync 0000000029
+2011_09_28 2011_09_28_drive_0184_sync 0000000030
+2011_09_28 2011_09_28_drive_0184_sync 0000000031
+2011_09_28 2011_09_28_drive_0184_sync 0000000032
+2011_09_28 2011_09_28_drive_0184_sync 0000000033
+2011_09_28 2011_09_28_drive_0184_sync 0000000034
+2011_09_28 2011_09_28_drive_0184_sync 0000000035
+2011_09_28 2011_09_28_drive_0184_sync 0000000036
+2011_09_28 2011_09_28_drive_0184_sync 0000000037
+2011_09_28 2011_09_28_drive_0184_sync 0000000038
+2011_09_28 2011_09_28_drive_0184_sync 0000000039
+2011_09_28 2011_09_28_drive_0184_sync 0000000040
+2011_09_28 2011_09_28_drive_0184_sync 0000000041
+2011_09_28 2011_09_28_drive_0184_sync 0000000042
+2011_09_28 2011_09_28_drive_0184_sync 0000000043
+2011_09_28 2011_09_28_drive_0184_sync 0000000044
+2011_09_28 2011_09_28_drive_0184_sync 0000000045
+2011_09_28 2011_09_28_drive_0184_sync 0000000046
+2011_09_28 2011_09_28_drive_0184_sync 0000000047
+2011_09_28 2011_09_28_drive_0184_sync 0000000048
+2011_09_28 2011_09_28_drive_0184_sync 0000000049
+2011_09_28 2011_09_28_drive_0184_sync 0000000050
+2011_09_28 2011_09_28_drive_0184_sync 0000000051
+2011_09_28 2011_09_28_drive_0184_sync 0000000052
+2011_09_28 2011_09_28_drive_0184_sync 0000000053
+2011_09_28 2011_09_28_drive_0184_sync 0000000054
+2011_09_28 2011_09_28_drive_0184_sync 0000000055
+2011_09_28 2011_09_28_drive_0184_sync 0000000056
+2011_09_28 2011_09_28_drive_0184_sync 0000000057
+2011_09_28 2011_09_28_drive_0184_sync 0000000058
+2011_09_28 2011_09_28_drive_0184_sync 0000000059
+2011_09_28 2011_09_28_drive_0184_sync 0000000060
+2011_09_28 2011_09_28_drive_0184_sync 0000000061
+2011_09_28 2011_09_28_drive_0184_sync 0000000062
+2011_09_28 2011_09_28_drive_0184_sync 0000000063
+2011_09_28 2011_09_28_drive_0184_sync 0000000064
+2011_09_28 2011_09_28_drive_0184_sync 0000000065
+2011_09_28 2011_09_28_drive_0184_sync 0000000066
+2011_09_28 2011_09_28_drive_0184_sync 0000000067
+2011_09_28 2011_09_28_drive_0184_sync 0000000068
+2011_09_28 2011_09_28_drive_0184_sync 0000000069
+2011_09_28 2011_09_28_drive_0184_sync 0000000070
+2011_09_28 2011_09_28_drive_0184_sync 0000000071
+2011_09_28 2011_09_28_drive_0184_sync 0000000072
+2011_09_28 2011_09_28_drive_0184_sync 0000000073
+2011_09_28 2011_09_28_drive_0184_sync 0000000074
+2011_09_28 2011_09_28_drive_0184_sync 0000000075
+2011_09_28 2011_09_28_drive_0184_sync 0000000076
+2011_09_28 2011_09_28_drive_0184_sync 0000000077
+2011_09_28 2011_09_28_drive_0184_sync 0000000078
+2011_09_28 2011_09_28_drive_0184_sync 0000000079
+2011_09_28 2011_09_28_drive_0184_sync 0000000080
+2011_09_28 2011_09_28_drive_0184_sync 0000000081
+2011_09_28 2011_09_28_drive_0184_sync 0000000082
+2011_09_28 2011_09_28_drive_0184_sync 0000000083
+2011_09_28 2011_09_28_drive_0184_sync 0000000084
+2011_09_28 2011_09_28_drive_0185_sync 0000000000
+2011_09_28 2011_09_28_drive_0185_sync 0000000001
+2011_09_28 2011_09_28_drive_0185_sync 0000000002
+2011_09_28 2011_09_28_drive_0185_sync 0000000003
+2011_09_28 2011_09_28_drive_0185_sync 0000000004
+2011_09_28 2011_09_28_drive_0185_sync 0000000005
+2011_09_28 2011_09_28_drive_0185_sync 0000000006
+2011_09_28 2011_09_28_drive_0185_sync 0000000007
+2011_09_28 2011_09_28_drive_0185_sync 0000000008
+2011_09_28 2011_09_28_drive_0185_sync 0000000009
+2011_09_28 2011_09_28_drive_0185_sync 0000000010
+2011_09_28 2011_09_28_drive_0185_sync 0000000011
+2011_09_28 2011_09_28_drive_0185_sync 0000000012
+2011_09_28 2011_09_28_drive_0185_sync 0000000013
+2011_09_28 2011_09_28_drive_0185_sync 0000000014
+2011_09_28 2011_09_28_drive_0185_sync 0000000015
+2011_09_28 2011_09_28_drive_0185_sync 0000000016
+2011_09_28 2011_09_28_drive_0185_sync 0000000017
+2011_09_28 2011_09_28_drive_0185_sync 0000000018
+2011_09_28 2011_09_28_drive_0185_sync 0000000019
+2011_09_28 2011_09_28_drive_0185_sync 0000000020
+2011_09_28 2011_09_28_drive_0185_sync 0000000021
+2011_09_28 2011_09_28_drive_0185_sync 0000000022
+2011_09_28 2011_09_28_drive_0185_sync 0000000023
+2011_09_28 2011_09_28_drive_0185_sync 0000000024
+2011_09_28 2011_09_28_drive_0185_sync 0000000025
+2011_09_28 2011_09_28_drive_0185_sync 0000000026
+2011_09_28 2011_09_28_drive_0185_sync 0000000027
+2011_09_28 2011_09_28_drive_0185_sync 0000000028
+2011_09_28 2011_09_28_drive_0185_sync 0000000029
+2011_09_28 2011_09_28_drive_0185_sync 0000000030
+2011_09_28 2011_09_28_drive_0185_sync 0000000031
+2011_09_28 2011_09_28_drive_0185_sync 0000000032
+2011_09_28 2011_09_28_drive_0185_sync 0000000033
+2011_09_28 2011_09_28_drive_0185_sync 0000000034
+2011_09_28 2011_09_28_drive_0185_sync 0000000035
+2011_09_28 2011_09_28_drive_0185_sync 0000000036
+2011_09_28 2011_09_28_drive_0185_sync 0000000037
+2011_09_28 2011_09_28_drive_0185_sync 0000000038
+2011_09_28 2011_09_28_drive_0185_sync 0000000039
+2011_09_28 2011_09_28_drive_0185_sync 0000000040
+2011_09_28 2011_09_28_drive_0185_sync 0000000041
+2011_09_28 2011_09_28_drive_0185_sync 0000000042
+2011_09_28 2011_09_28_drive_0185_sync 0000000043
+2011_09_28 2011_09_28_drive_0185_sync 0000000044
+2011_09_28 2011_09_28_drive_0185_sync 0000000045
+2011_09_28 2011_09_28_drive_0185_sync 0000000046
+2011_09_28 2011_09_28_drive_0185_sync 0000000047
+2011_09_28 2011_09_28_drive_0185_sync 0000000048
+2011_09_28 2011_09_28_drive_0185_sync 0000000049
+2011_09_28 2011_09_28_drive_0185_sync 0000000050
+2011_09_28 2011_09_28_drive_0185_sync 0000000051
+2011_09_28 2011_09_28_drive_0185_sync 0000000052
+2011_09_28 2011_09_28_drive_0185_sync 0000000053
+2011_09_28 2011_09_28_drive_0185_sync 0000000054
+2011_09_28 2011_09_28_drive_0185_sync 0000000055
+2011_09_28 2011_09_28_drive_0185_sync 0000000056
+2011_09_28 2011_09_28_drive_0185_sync 0000000057
+2011_09_28 2011_09_28_drive_0185_sync 0000000058
+2011_09_28 2011_09_28_drive_0185_sync 0000000059
+2011_09_28 2011_09_28_drive_0185_sync 0000000060
+2011_09_28 2011_09_28_drive_0185_sync 0000000061
+2011_09_28 2011_09_28_drive_0185_sync 0000000062
+2011_09_28 2011_09_28_drive_0185_sync 0000000063
+2011_09_28 2011_09_28_drive_0185_sync 0000000064
+2011_09_28 2011_09_28_drive_0185_sync 0000000065
+2011_09_28 2011_09_28_drive_0185_sync 0000000066
+2011_09_28 2011_09_28_drive_0185_sync 0000000067
+2011_09_28 2011_09_28_drive_0185_sync 0000000068
+2011_09_28 2011_09_28_drive_0185_sync 0000000069
+2011_09_28 2011_09_28_drive_0185_sync 0000000070
+2011_09_28 2011_09_28_drive_0185_sync 0000000071
+2011_09_28 2011_09_28_drive_0185_sync 0000000072
+2011_09_28 2011_09_28_drive_0185_sync 0000000073
+2011_09_28 2011_09_28_drive_0185_sync 0000000074
+2011_09_28 2011_09_28_drive_0185_sync 0000000075
+2011_09_28 2011_09_28_drive_0185_sync 0000000076
+2011_09_28 2011_09_28_drive_0185_sync 0000000077
+2011_09_28 2011_09_28_drive_0185_sync 0000000078
+2011_09_28 2011_09_28_drive_0186_sync 0000000000
+2011_09_28 2011_09_28_drive_0186_sync 0000000001
+2011_09_28 2011_09_28_drive_0186_sync 0000000002
+2011_09_28 2011_09_28_drive_0186_sync 0000000003
+2011_09_28 2011_09_28_drive_0186_sync 0000000004
+2011_09_28 2011_09_28_drive_0186_sync 0000000005
+2011_09_28 2011_09_28_drive_0186_sync 0000000006
+2011_09_28 2011_09_28_drive_0186_sync 0000000007
+2011_09_28 2011_09_28_drive_0186_sync 0000000008
+2011_09_28 2011_09_28_drive_0186_sync 0000000009
+2011_09_28 2011_09_28_drive_0186_sync 0000000010
+2011_09_28 2011_09_28_drive_0186_sync 0000000011
+2011_09_28 2011_09_28_drive_0186_sync 0000000012
+2011_09_28 2011_09_28_drive_0186_sync 0000000013
+2011_09_28 2011_09_28_drive_0186_sync 0000000014
+2011_09_28 2011_09_28_drive_0186_sync 0000000015
+2011_09_28 2011_09_28_drive_0186_sync 0000000016
+2011_09_28 2011_09_28_drive_0186_sync 0000000017
+2011_09_28 2011_09_28_drive_0186_sync 0000000018
+2011_09_28 2011_09_28_drive_0186_sync 0000000019
+2011_09_28 2011_09_28_drive_0186_sync 0000000020
+2011_09_28 2011_09_28_drive_0186_sync 0000000021
+2011_09_28 2011_09_28_drive_0186_sync 0000000022
+2011_09_28 2011_09_28_drive_0186_sync 0000000023
+2011_09_28 2011_09_28_drive_0186_sync 0000000024
+2011_09_28 2011_09_28_drive_0186_sync 0000000025
+2011_09_28 2011_09_28_drive_0186_sync 0000000026
+2011_09_28 2011_09_28_drive_0186_sync 0000000027
+2011_09_28 2011_09_28_drive_0186_sync 0000000028
+2011_09_28 2011_09_28_drive_0186_sync 0000000029
+2011_09_28 2011_09_28_drive_0186_sync 0000000030
+2011_09_28 2011_09_28_drive_0186_sync 0000000031
+2011_09_28 2011_09_28_drive_0186_sync 0000000032
+2011_09_28 2011_09_28_drive_0186_sync 0000000033
+2011_09_28 2011_09_28_drive_0186_sync 0000000034
+2011_09_28 2011_09_28_drive_0186_sync 0000000035
+2011_09_28 2011_09_28_drive_0186_sync 0000000036
+2011_09_28 2011_09_28_drive_0186_sync 0000000037
+2011_09_28 2011_09_28_drive_0186_sync 0000000038
+2011_09_28 2011_09_28_drive_0186_sync 0000000039
+2011_09_28 2011_09_28_drive_0187_sync 0000000000
+2011_09_28 2011_09_28_drive_0187_sync 0000000001
+2011_09_28 2011_09_28_drive_0187_sync 0000000002
+2011_09_28 2011_09_28_drive_0187_sync 0000000003
+2011_09_28 2011_09_28_drive_0187_sync 0000000004
+2011_09_28 2011_09_28_drive_0187_sync 0000000005
+2011_09_28 2011_09_28_drive_0187_sync 0000000006
+2011_09_28 2011_09_28_drive_0187_sync 0000000007
+2011_09_28 2011_09_28_drive_0187_sync 0000000008
+2011_09_28 2011_09_28_drive_0187_sync 0000000009
+2011_09_28 2011_09_28_drive_0187_sync 0000000010
+2011_09_28 2011_09_28_drive_0187_sync 0000000011
+2011_09_28 2011_09_28_drive_0187_sync 0000000012
+2011_09_28 2011_09_28_drive_0187_sync 0000000013
+2011_09_28 2011_09_28_drive_0187_sync 0000000014
+2011_09_28 2011_09_28_drive_0187_sync 0000000015
+2011_09_28 2011_09_28_drive_0187_sync 0000000016
+2011_09_28 2011_09_28_drive_0187_sync 0000000017
+2011_09_28 2011_09_28_drive_0187_sync 0000000018
+2011_09_28 2011_09_28_drive_0187_sync 0000000019
+2011_09_28 2011_09_28_drive_0187_sync 0000000020
+2011_09_28 2011_09_28_drive_0187_sync 0000000021
+2011_09_28 2011_09_28_drive_0187_sync 0000000022
+2011_09_28 2011_09_28_drive_0187_sync 0000000023
+2011_09_28 2011_09_28_drive_0187_sync 0000000024
+2011_09_28 2011_09_28_drive_0187_sync 0000000025
+2011_09_28 2011_09_28_drive_0187_sync 0000000026
+2011_09_28 2011_09_28_drive_0187_sync 0000000027
+2011_09_28 2011_09_28_drive_0187_sync 0000000028
+2011_09_28 2011_09_28_drive_0187_sync 0000000029
+2011_09_28 2011_09_28_drive_0187_sync 0000000030
+2011_09_28 2011_09_28_drive_0187_sync 0000000031
+2011_09_28 2011_09_28_drive_0187_sync 0000000032
+2011_09_28 2011_09_28_drive_0187_sync 0000000033
+2011_09_28 2011_09_28_drive_0187_sync 0000000034
+2011_09_28 2011_09_28_drive_0187_sync 0000000035
+2011_09_28 2011_09_28_drive_0187_sync 0000000036
+2011_09_28 2011_09_28_drive_0187_sync 0000000037
+2011_09_28 2011_09_28_drive_0187_sync 0000000038
+2011_09_28 2011_09_28_drive_0187_sync 0000000039
+2011_09_28 2011_09_28_drive_0187_sync 0000000040
+2011_09_28 2011_09_28_drive_0187_sync 0000000041
+2011_09_28 2011_09_28_drive_0187_sync 0000000042
+2011_09_28 2011_09_28_drive_0187_sync 0000000043
+2011_09_28 2011_09_28_drive_0187_sync 0000000044
+2011_09_28 2011_09_28_drive_0187_sync 0000000045
+2011_09_28 2011_09_28_drive_0187_sync 0000000046
+2011_09_28 2011_09_28_drive_0187_sync 0000000047
+2011_09_28 2011_09_28_drive_0187_sync 0000000048
+2011_09_28 2011_09_28_drive_0187_sync 0000000049
+2011_09_28 2011_09_28_drive_0187_sync 0000000050
+2011_09_28 2011_09_28_drive_0187_sync 0000000051
+2011_09_28 2011_09_28_drive_0187_sync 0000000052
+2011_09_28 2011_09_28_drive_0187_sync 0000000053
+2011_09_28 2011_09_28_drive_0191_sync 0000000000
+2011_09_28 2011_09_28_drive_0191_sync 0000000001
+2011_09_28 2011_09_28_drive_0191_sync 0000000002
+2011_09_28 2011_09_28_drive_0191_sync 0000000003
+2011_09_28 2011_09_28_drive_0191_sync 0000000004
+2011_09_28 2011_09_28_drive_0191_sync 0000000005
+2011_09_28 2011_09_28_drive_0191_sync 0000000006
+2011_09_28 2011_09_28_drive_0191_sync 0000000007
+2011_09_28 2011_09_28_drive_0191_sync 0000000008
+2011_09_28 2011_09_28_drive_0191_sync 0000000009
+2011_09_28 2011_09_28_drive_0191_sync 0000000010
+2011_09_28 2011_09_28_drive_0191_sync 0000000011
+2011_09_28 2011_09_28_drive_0191_sync 0000000012
+2011_09_28 2011_09_28_drive_0191_sync 0000000013
+2011_09_28 2011_09_28_drive_0191_sync 0000000014
+2011_09_28 2011_09_28_drive_0191_sync 0000000015
+2011_09_28 2011_09_28_drive_0191_sync 0000000016
+2011_09_28 2011_09_28_drive_0191_sync 0000000017
+2011_09_28 2011_09_28_drive_0191_sync 0000000018
+2011_09_28 2011_09_28_drive_0191_sync 0000000019
+2011_09_28 2011_09_28_drive_0191_sync 0000000020
+2011_09_28 2011_09_28_drive_0191_sync 0000000021
+2011_09_28 2011_09_28_drive_0191_sync 0000000022
+2011_09_28 2011_09_28_drive_0191_sync 0000000023
+2011_09_28 2011_09_28_drive_0191_sync 0000000024
+2011_09_28 2011_09_28_drive_0191_sync 0000000025
+2011_09_28 2011_09_28_drive_0191_sync 0000000026
+2011_09_28 2011_09_28_drive_0191_sync 0000000027
+2011_09_28 2011_09_28_drive_0191_sync 0000000028
+2011_09_28 2011_09_28_drive_0191_sync 0000000029
+2011_09_28 2011_09_28_drive_0191_sync 0000000030
+2011_09_28 2011_09_28_drive_0191_sync 0000000031
+2011_09_28 2011_09_28_drive_0191_sync 0000000032
+2011_09_28 2011_09_28_drive_0191_sync 0000000033
+2011_09_28 2011_09_28_drive_0191_sync 0000000034
+2011_09_28 2011_09_28_drive_0191_sync 0000000035
+2011_09_28 2011_09_28_drive_0191_sync 0000000036
+2011_09_28 2011_09_28_drive_0192_sync 0000000000
+2011_09_28 2011_09_28_drive_0192_sync 0000000001
+2011_09_28 2011_09_28_drive_0192_sync 0000000002
+2011_09_28 2011_09_28_drive_0192_sync 0000000003
+2011_09_28 2011_09_28_drive_0192_sync 0000000004
+2011_09_28 2011_09_28_drive_0192_sync 0000000005
+2011_09_28 2011_09_28_drive_0192_sync 0000000006
+2011_09_28 2011_09_28_drive_0192_sync 0000000007
+2011_09_28 2011_09_28_drive_0192_sync 0000000008
+2011_09_28 2011_09_28_drive_0192_sync 0000000009
+2011_09_28 2011_09_28_drive_0192_sync 0000000010
+2011_09_28 2011_09_28_drive_0192_sync 0000000011
+2011_09_28 2011_09_28_drive_0192_sync 0000000012
+2011_09_28 2011_09_28_drive_0192_sync 0000000013
+2011_09_28 2011_09_28_drive_0192_sync 0000000014
+2011_09_28 2011_09_28_drive_0192_sync 0000000015
+2011_09_28 2011_09_28_drive_0192_sync 0000000016
+2011_09_28 2011_09_28_drive_0192_sync 0000000017
+2011_09_28 2011_09_28_drive_0192_sync 0000000018
+2011_09_28 2011_09_28_drive_0192_sync 0000000019
+2011_09_28 2011_09_28_drive_0192_sync 0000000020
+2011_09_28 2011_09_28_drive_0192_sync 0000000021
+2011_09_28 2011_09_28_drive_0192_sync 0000000022
+2011_09_28 2011_09_28_drive_0192_sync 0000000023
+2011_09_28 2011_09_28_drive_0192_sync 0000000024
+2011_09_28 2011_09_28_drive_0192_sync 0000000025
+2011_09_28 2011_09_28_drive_0192_sync 0000000026
+2011_09_28 2011_09_28_drive_0192_sync 0000000027
+2011_09_28 2011_09_28_drive_0192_sync 0000000028
+2011_09_28 2011_09_28_drive_0192_sync 0000000029
+2011_09_28 2011_09_28_drive_0192_sync 0000000030
+2011_09_28 2011_09_28_drive_0192_sync 0000000031
+2011_09_28 2011_09_28_drive_0192_sync 0000000032
+2011_09_28 2011_09_28_drive_0192_sync 0000000033
+2011_09_28 2011_09_28_drive_0192_sync 0000000034
+2011_09_28 2011_09_28_drive_0192_sync 0000000035
+2011_09_28 2011_09_28_drive_0192_sync 0000000036
+2011_09_28 2011_09_28_drive_0192_sync 0000000037
+2011_09_28 2011_09_28_drive_0192_sync 0000000038
+2011_09_28 2011_09_28_drive_0192_sync 0000000039
+2011_09_28 2011_09_28_drive_0192_sync 0000000040
+2011_09_28 2011_09_28_drive_0192_sync 0000000041
+2011_09_28 2011_09_28_drive_0192_sync 0000000042
+2011_09_28 2011_09_28_drive_0192_sync 0000000043
+2011_09_28 2011_09_28_drive_0192_sync 0000000044
+2011_09_28 2011_09_28_drive_0192_sync 0000000045
+2011_09_28 2011_09_28_drive_0192_sync 0000000046
+2011_09_28 2011_09_28_drive_0192_sync 0000000047
+2011_09_28 2011_09_28_drive_0192_sync 0000000048
+2011_09_28 2011_09_28_drive_0192_sync 0000000049
+2011_09_28 2011_09_28_drive_0192_sync 0000000050
+2011_09_28 2011_09_28_drive_0192_sync 0000000051
+2011_09_28 2011_09_28_drive_0192_sync 0000000052
+2011_09_28 2011_09_28_drive_0192_sync 0000000053
+2011_09_28 2011_09_28_drive_0192_sync 0000000054
+2011_09_28 2011_09_28_drive_0192_sync 0000000055
+2011_09_28 2011_09_28_drive_0192_sync 0000000056
+2011_09_28 2011_09_28_drive_0192_sync 0000000057
+2011_09_28 2011_09_28_drive_0192_sync 0000000058
+2011_09_28 2011_09_28_drive_0192_sync 0000000059
+2011_09_28 2011_09_28_drive_0192_sync 0000000060
+2011_09_28 2011_09_28_drive_0192_sync 0000000061
+2011_09_28 2011_09_28_drive_0192_sync 0000000062
+2011_09_28 2011_09_28_drive_0192_sync 0000000063
+2011_09_28 2011_09_28_drive_0192_sync 0000000064
+2011_09_28 2011_09_28_drive_0192_sync 0000000065
+2011_09_28 2011_09_28_drive_0192_sync 0000000066
+2011_09_28 2011_09_28_drive_0192_sync 0000000067
+2011_09_28 2011_09_28_drive_0192_sync 0000000068
+2011_09_28 2011_09_28_drive_0192_sync 0000000069
+2011_09_28 2011_09_28_drive_0192_sync 0000000070
+2011_09_28 2011_09_28_drive_0192_sync 0000000071
+2011_09_28 2011_09_28_drive_0192_sync 0000000072
+2011_09_28 2011_09_28_drive_0192_sync 0000000073
+2011_09_28 2011_09_28_drive_0192_sync 0000000074
+2011_09_28 2011_09_28_drive_0192_sync 0000000075
+2011_09_28 2011_09_28_drive_0192_sync 0000000076
+2011_09_28 2011_09_28_drive_0192_sync 0000000077
+2011_09_28 2011_09_28_drive_0192_sync 0000000078
+2011_09_28 2011_09_28_drive_0192_sync 0000000079
+2011_09_28 2011_09_28_drive_0192_sync 0000000080
+2011_09_28 2011_09_28_drive_0192_sync 0000000081
+2011_09_28 2011_09_28_drive_0192_sync 0000000082
+2011_09_28 2011_09_28_drive_0192_sync 0000000083
+2011_09_28 2011_09_28_drive_0195_sync 0000000000
+2011_09_28 2011_09_28_drive_0195_sync 0000000001
+2011_09_28 2011_09_28_drive_0195_sync 0000000002
+2011_09_28 2011_09_28_drive_0195_sync 0000000003
+2011_09_28 2011_09_28_drive_0195_sync 0000000004
+2011_09_28 2011_09_28_drive_0195_sync 0000000005
+2011_09_28 2011_09_28_drive_0195_sync 0000000006
+2011_09_28 2011_09_28_drive_0195_sync 0000000007
+2011_09_28 2011_09_28_drive_0195_sync 0000000008
+2011_09_28 2011_09_28_drive_0195_sync 0000000009
+2011_09_28 2011_09_28_drive_0195_sync 0000000010
+2011_09_28 2011_09_28_drive_0195_sync 0000000011
+2011_09_28 2011_09_28_drive_0195_sync 0000000012
+2011_09_28 2011_09_28_drive_0195_sync 0000000013
+2011_09_28 2011_09_28_drive_0195_sync 0000000014
+2011_09_28 2011_09_28_drive_0195_sync 0000000015
+2011_09_28 2011_09_28_drive_0195_sync 0000000016
+2011_09_28 2011_09_28_drive_0195_sync 0000000017
+2011_09_28 2011_09_28_drive_0195_sync 0000000018
+2011_09_28 2011_09_28_drive_0195_sync 0000000019
+2011_09_28 2011_09_28_drive_0195_sync 0000000020
+2011_09_28 2011_09_28_drive_0195_sync 0000000021
+2011_09_28 2011_09_28_drive_0195_sync 0000000022
+2011_09_28 2011_09_28_drive_0195_sync 0000000023
+2011_09_28 2011_09_28_drive_0195_sync 0000000024
+2011_09_28 2011_09_28_drive_0195_sync 0000000025
+2011_09_28 2011_09_28_drive_0195_sync 0000000026
+2011_09_28 2011_09_28_drive_0195_sync 0000000027
+2011_09_28 2011_09_28_drive_0195_sync 0000000028
+2011_09_28 2011_09_28_drive_0195_sync 0000000029
+2011_09_28 2011_09_28_drive_0195_sync 0000000030
+2011_09_28 2011_09_28_drive_0195_sync 0000000031
+2011_09_28 2011_09_28_drive_0195_sync 0000000032
+2011_09_28 2011_09_28_drive_0195_sync 0000000033
+2011_09_28 2011_09_28_drive_0195_sync 0000000034
+2011_09_28 2011_09_28_drive_0195_sync 0000000035
+2011_09_28 2011_09_28_drive_0195_sync 0000000036
+2011_09_28 2011_09_28_drive_0195_sync 0000000037
+2011_09_28 2011_09_28_drive_0198_sync 0000000000
+2011_09_28 2011_09_28_drive_0198_sync 0000000001
+2011_09_28 2011_09_28_drive_0198_sync 0000000002
+2011_09_28 2011_09_28_drive_0198_sync 0000000003
+2011_09_28 2011_09_28_drive_0198_sync 0000000004
+2011_09_28 2011_09_28_drive_0198_sync 0000000005
+2011_09_28 2011_09_28_drive_0198_sync 0000000006
+2011_09_28 2011_09_28_drive_0198_sync 0000000007
+2011_09_28 2011_09_28_drive_0198_sync 0000000008
+2011_09_28 2011_09_28_drive_0198_sync 0000000009
+2011_09_28 2011_09_28_drive_0198_sync 0000000010
+2011_09_28 2011_09_28_drive_0198_sync 0000000011
+2011_09_28 2011_09_28_drive_0198_sync 0000000012
+2011_09_28 2011_09_28_drive_0198_sync 0000000013
+2011_09_28 2011_09_28_drive_0198_sync 0000000014
+2011_09_28 2011_09_28_drive_0198_sync 0000000015
+2011_09_28 2011_09_28_drive_0198_sync 0000000016
+2011_09_28 2011_09_28_drive_0198_sync 0000000017
+2011_09_28 2011_09_28_drive_0198_sync 0000000018
+2011_09_28 2011_09_28_drive_0198_sync 0000000019
+2011_09_28 2011_09_28_drive_0198_sync 0000000020
+2011_09_28 2011_09_28_drive_0198_sync 0000000021
+2011_09_28 2011_09_28_drive_0198_sync 0000000022
+2011_09_28 2011_09_28_drive_0198_sync 0000000023
+2011_09_28 2011_09_28_drive_0198_sync 0000000024
+2011_09_28 2011_09_28_drive_0198_sync 0000000025
+2011_09_28 2011_09_28_drive_0198_sync 0000000026
+2011_09_28 2011_09_28_drive_0198_sync 0000000027
+2011_09_28 2011_09_28_drive_0198_sync 0000000028
+2011_09_28 2011_09_28_drive_0198_sync 0000000029
+2011_09_28 2011_09_28_drive_0198_sync 0000000030
+2011_09_28 2011_09_28_drive_0198_sync 0000000031
+2011_09_28 2011_09_28_drive_0198_sync 0000000032
+2011_09_28 2011_09_28_drive_0198_sync 0000000033
+2011_09_28 2011_09_28_drive_0198_sync 0000000034
+2011_09_28 2011_09_28_drive_0198_sync 0000000035
+2011_09_28 2011_09_28_drive_0198_sync 0000000036
+2011_09_28 2011_09_28_drive_0198_sync 0000000037
+2011_09_28 2011_09_28_drive_0198_sync 0000000038
+2011_09_28 2011_09_28_drive_0198_sync 0000000039
+2011_09_28 2011_09_28_drive_0198_sync 0000000040
+2011_09_28 2011_09_28_drive_0198_sync 0000000041
+2011_09_28 2011_09_28_drive_0198_sync 0000000042
+2011_09_28 2011_09_28_drive_0198_sync 0000000043
+2011_09_28 2011_09_28_drive_0198_sync 0000000044
+2011_09_28 2011_09_28_drive_0198_sync 0000000045
+2011_09_28 2011_09_28_drive_0198_sync 0000000046
+2011_09_28 2011_09_28_drive_0198_sync 0000000047
+2011_09_28 2011_09_28_drive_0198_sync 0000000048
+2011_09_28 2011_09_28_drive_0198_sync 0000000049
+2011_09_28 2011_09_28_drive_0198_sync 0000000050
+2011_09_28 2011_09_28_drive_0198_sync 0000000051
+2011_09_28 2011_09_28_drive_0198_sync 0000000052
+2011_09_28 2011_09_28_drive_0198_sync 0000000053
+2011_09_28 2011_09_28_drive_0198_sync 0000000054
+2011_09_28 2011_09_28_drive_0198_sync 0000000055
+2011_09_28 2011_09_28_drive_0198_sync 0000000056
+2011_09_28 2011_09_28_drive_0198_sync 0000000057
+2011_09_28 2011_09_28_drive_0198_sync 0000000058
+2011_09_28 2011_09_28_drive_0198_sync 0000000059
+2011_09_28 2011_09_28_drive_0198_sync 0000000060
+2011_09_28 2011_09_28_drive_0198_sync 0000000061
+2011_09_28 2011_09_28_drive_0199_sync 0000000000
+2011_09_28 2011_09_28_drive_0199_sync 0000000001
+2011_09_28 2011_09_28_drive_0199_sync 0000000002
+2011_09_28 2011_09_28_drive_0199_sync 0000000003
+2011_09_28 2011_09_28_drive_0199_sync 0000000004
+2011_09_28 2011_09_28_drive_0199_sync 0000000005
+2011_09_28 2011_09_28_drive_0199_sync 0000000006
+2011_09_28 2011_09_28_drive_0199_sync 0000000007
+2011_09_28 2011_09_28_drive_0199_sync 0000000008
+2011_09_28 2011_09_28_drive_0199_sync 0000000009
+2011_09_28 2011_09_28_drive_0199_sync 0000000010
+2011_09_28 2011_09_28_drive_0199_sync 0000000011
+2011_09_28 2011_09_28_drive_0199_sync 0000000012
+2011_09_28 2011_09_28_drive_0199_sync 0000000013
+2011_09_28 2011_09_28_drive_0199_sync 0000000014
+2011_09_28 2011_09_28_drive_0199_sync 0000000015
+2011_09_28 2011_09_28_drive_0199_sync 0000000016
+2011_09_28 2011_09_28_drive_0199_sync 0000000017
+2011_09_28 2011_09_28_drive_0199_sync 0000000018
+2011_09_28 2011_09_28_drive_0199_sync 0000000019
+2011_09_28 2011_09_28_drive_0199_sync 0000000020
+2011_09_28 2011_09_28_drive_0199_sync 0000000021
+2011_09_28 2011_09_28_drive_0199_sync 0000000022
+2011_09_28 2011_09_28_drive_0199_sync 0000000023
+2011_09_28 2011_09_28_drive_0199_sync 0000000024
+2011_09_28 2011_09_28_drive_0199_sync 0000000025
+2011_09_28 2011_09_28_drive_0199_sync 0000000026
+2011_09_28 2011_09_28_drive_0199_sync 0000000027
+2011_09_28 2011_09_28_drive_0199_sync 0000000028
+2011_09_28 2011_09_28_drive_0199_sync 0000000029
+2011_09_28 2011_09_28_drive_0199_sync 0000000030
+2011_09_28 2011_09_28_drive_0199_sync 0000000031
+2011_09_28 2011_09_28_drive_0199_sync 0000000032
+2011_09_28 2011_09_28_drive_0199_sync 0000000033
+2011_09_28 2011_09_28_drive_0201_sync 0000000000
+2011_09_28 2011_09_28_drive_0201_sync 0000000001
+2011_09_28 2011_09_28_drive_0201_sync 0000000002
+2011_09_28 2011_09_28_drive_0201_sync 0000000003
+2011_09_28 2011_09_28_drive_0201_sync 0000000004
+2011_09_28 2011_09_28_drive_0201_sync 0000000005
+2011_09_28 2011_09_28_drive_0201_sync 0000000006
+2011_09_28 2011_09_28_drive_0201_sync 0000000007
+2011_09_28 2011_09_28_drive_0201_sync 0000000008
+2011_09_28 2011_09_28_drive_0201_sync 0000000009
+2011_09_28 2011_09_28_drive_0201_sync 0000000010
+2011_09_28 2011_09_28_drive_0201_sync 0000000011
+2011_09_28 2011_09_28_drive_0201_sync 0000000012
+2011_09_28 2011_09_28_drive_0201_sync 0000000013
+2011_09_28 2011_09_28_drive_0201_sync 0000000014
+2011_09_28 2011_09_28_drive_0201_sync 0000000015
+2011_09_28 2011_09_28_drive_0201_sync 0000000016
+2011_09_28 2011_09_28_drive_0201_sync 0000000017
+2011_09_28 2011_09_28_drive_0201_sync 0000000018
+2011_09_28 2011_09_28_drive_0201_sync 0000000019
+2011_09_28 2011_09_28_drive_0201_sync 0000000020
+2011_09_28 2011_09_28_drive_0201_sync 0000000021
+2011_09_28 2011_09_28_drive_0201_sync 0000000022
+2011_09_28 2011_09_28_drive_0201_sync 0000000023
+2011_09_28 2011_09_28_drive_0201_sync 0000000024
+2011_09_28 2011_09_28_drive_0201_sync 0000000025
+2011_09_28 2011_09_28_drive_0201_sync 0000000026
+2011_09_28 2011_09_28_drive_0201_sync 0000000027
+2011_09_28 2011_09_28_drive_0201_sync 0000000028
+2011_09_28 2011_09_28_drive_0201_sync 0000000029
+2011_09_28 2011_09_28_drive_0201_sync 0000000030
+2011_09_28 2011_09_28_drive_0201_sync 0000000031
+2011_09_28 2011_09_28_drive_0201_sync 0000000032
+2011_09_28 2011_09_28_drive_0201_sync 0000000033
+2011_09_28 2011_09_28_drive_0201_sync 0000000034
+2011_09_28 2011_09_28_drive_0201_sync 0000000035
+2011_09_28 2011_09_28_drive_0201_sync 0000000036
+2011_09_28 2011_09_28_drive_0201_sync 0000000037
+2011_09_28 2011_09_28_drive_0201_sync 0000000038
+2011_09_28 2011_09_28_drive_0201_sync 0000000039
+2011_09_28 2011_09_28_drive_0201_sync 0000000040
+2011_09_28 2011_09_28_drive_0201_sync 0000000041
+2011_09_28 2011_09_28_drive_0201_sync 0000000042
+2011_09_28 2011_09_28_drive_0201_sync 0000000043
+2011_09_28 2011_09_28_drive_0201_sync 0000000044
+2011_09_28 2011_09_28_drive_0201_sync 0000000045
+2011_09_28 2011_09_28_drive_0201_sync 0000000046
+2011_09_28 2011_09_28_drive_0201_sync 0000000047
+2011_09_28 2011_09_28_drive_0201_sync 0000000048
+2011_09_28 2011_09_28_drive_0201_sync 0000000049
+2011_09_28 2011_09_28_drive_0201_sync 0000000050
+2011_09_28 2011_09_28_drive_0201_sync 0000000051
+2011_09_28 2011_09_28_drive_0201_sync 0000000052
+2011_09_28 2011_09_28_drive_0201_sync 0000000053
+2011_09_28 2011_09_28_drive_0201_sync 0000000054
+2011_09_28 2011_09_28_drive_0201_sync 0000000055
+2011_09_28 2011_09_28_drive_0201_sync 0000000056
+2011_09_28 2011_09_28_drive_0201_sync 0000000057
+2011_09_28 2011_09_28_drive_0201_sync 0000000058
+2011_09_28 2011_09_28_drive_0201_sync 0000000059
+2011_09_28 2011_09_28_drive_0201_sync 0000000060
+2011_09_28 2011_09_28_drive_0201_sync 0000000061
+2011_09_28 2011_09_28_drive_0201_sync 0000000062
+2011_09_28 2011_09_28_drive_0201_sync 0000000063
+2011_09_28 2011_09_28_drive_0201_sync 0000000064
+2011_09_28 2011_09_28_drive_0201_sync 0000000065
+2011_09_28 2011_09_28_drive_0201_sync 0000000066
+2011_09_28 2011_09_28_drive_0201_sync 0000000067
+2011_09_28 2011_09_28_drive_0201_sync 0000000068
+2011_09_28 2011_09_28_drive_0201_sync 0000000069
+2011_09_28 2011_09_28_drive_0201_sync 0000000070
+2011_09_28 2011_09_28_drive_0201_sync 0000000071
+2011_09_28 2011_09_28_drive_0201_sync 0000000072
+2011_09_28 2011_09_28_drive_0201_sync 0000000073
+2011_09_28 2011_09_28_drive_0201_sync 0000000074
+2011_09_28 2011_09_28_drive_0201_sync 0000000075
+2011_09_28 2011_09_28_drive_0201_sync 0000000076
+2011_09_28 2011_09_28_drive_0201_sync 0000000077
+2011_09_28 2011_09_28_drive_0201_sync 0000000078
+2011_09_28 2011_09_28_drive_0201_sync 0000000079
+2011_09_28 2011_09_28_drive_0201_sync 0000000080
+2011_09_28 2011_09_28_drive_0201_sync 0000000081
+2011_09_28 2011_09_28_drive_0204_sync 0000000000
+2011_09_28 2011_09_28_drive_0204_sync 0000000001
+2011_09_28 2011_09_28_drive_0204_sync 0000000002
+2011_09_28 2011_09_28_drive_0204_sync 0000000003
+2011_09_28 2011_09_28_drive_0204_sync 0000000004
+2011_09_28 2011_09_28_drive_0204_sync 0000000005
+2011_09_28 2011_09_28_drive_0204_sync 0000000006
+2011_09_28 2011_09_28_drive_0204_sync 0000000007
+2011_09_28 2011_09_28_drive_0204_sync 0000000008
+2011_09_28 2011_09_28_drive_0204_sync 0000000009
+2011_09_28 2011_09_28_drive_0204_sync 0000000010
+2011_09_28 2011_09_28_drive_0204_sync 0000000011
+2011_09_28 2011_09_28_drive_0204_sync 0000000012
+2011_09_28 2011_09_28_drive_0204_sync 0000000013
+2011_09_28 2011_09_28_drive_0204_sync 0000000014
+2011_09_28 2011_09_28_drive_0204_sync 0000000015
+2011_09_28 2011_09_28_drive_0204_sync 0000000016
+2011_09_28 2011_09_28_drive_0204_sync 0000000017
+2011_09_28 2011_09_28_drive_0204_sync 0000000018
+2011_09_28 2011_09_28_drive_0204_sync 0000000019
+2011_09_28 2011_09_28_drive_0204_sync 0000000020
+2011_09_28 2011_09_28_drive_0204_sync 0000000021
+2011_09_28 2011_09_28_drive_0204_sync 0000000022
+2011_09_28 2011_09_28_drive_0204_sync 0000000023
+2011_09_28 2011_09_28_drive_0204_sync 0000000024
+2011_09_28 2011_09_28_drive_0204_sync 0000000025
+2011_09_28 2011_09_28_drive_0204_sync 0000000026
+2011_09_28 2011_09_28_drive_0204_sync 0000000027
+2011_09_28 2011_09_28_drive_0204_sync 0000000028
+2011_09_28 2011_09_28_drive_0204_sync 0000000029
+2011_09_28 2011_09_28_drive_0204_sync 0000000030
+2011_09_28 2011_09_28_drive_0204_sync 0000000031
+2011_09_28 2011_09_28_drive_0204_sync 0000000032
+2011_09_28 2011_09_28_drive_0204_sync 0000000033
+2011_09_28 2011_09_28_drive_0204_sync 0000000034
+2011_09_28 2011_09_28_drive_0204_sync 0000000035
+2011_09_28 2011_09_28_drive_0204_sync 0000000036
+2011_09_28 2011_09_28_drive_0204_sync 0000000037
+2011_09_28 2011_09_28_drive_0204_sync 0000000038
+2011_09_28 2011_09_28_drive_0204_sync 0000000039
+2011_09_28 2011_09_28_drive_0204_sync 0000000040
+2011_09_28 2011_09_28_drive_0204_sync 0000000041
+2011_09_28 2011_09_28_drive_0204_sync 0000000042
+2011_09_28 2011_09_28_drive_0204_sync 0000000043
+2011_09_28 2011_09_28_drive_0204_sync 0000000044
+2011_09_28 2011_09_28_drive_0204_sync 0000000045
+2011_09_28 2011_09_28_drive_0204_sync 0000000046
+2011_09_28 2011_09_28_drive_0204_sync 0000000047
+2011_09_28 2011_09_28_drive_0204_sync 0000000048
+2011_09_28 2011_09_28_drive_0204_sync 0000000049
+2011_09_28 2011_09_28_drive_0205_sync 0000000000
+2011_09_28 2011_09_28_drive_0205_sync 0000000001
+2011_09_28 2011_09_28_drive_0205_sync 0000000002
+2011_09_28 2011_09_28_drive_0205_sync 0000000003
+2011_09_28 2011_09_28_drive_0205_sync 0000000004
+2011_09_28 2011_09_28_drive_0205_sync 0000000005
+2011_09_28 2011_09_28_drive_0205_sync 0000000006
+2011_09_28 2011_09_28_drive_0205_sync 0000000007
+2011_09_28 2011_09_28_drive_0205_sync 0000000008
+2011_09_28 2011_09_28_drive_0205_sync 0000000009
+2011_09_28 2011_09_28_drive_0205_sync 0000000010
+2011_09_28 2011_09_28_drive_0205_sync 0000000011
+2011_09_28 2011_09_28_drive_0205_sync 0000000012
+2011_09_28 2011_09_28_drive_0205_sync 0000000013
+2011_09_28 2011_09_28_drive_0205_sync 0000000014
+2011_09_28 2011_09_28_drive_0205_sync 0000000015
+2011_09_28 2011_09_28_drive_0205_sync 0000000016
+2011_09_28 2011_09_28_drive_0205_sync 0000000017
+2011_09_28 2011_09_28_drive_0205_sync 0000000018
+2011_09_28 2011_09_28_drive_0205_sync 0000000019
+2011_09_28 2011_09_28_drive_0205_sync 0000000020
+2011_09_28 2011_09_28_drive_0205_sync 0000000021
+2011_09_28 2011_09_28_drive_0205_sync 0000000022
+2011_09_28 2011_09_28_drive_0205_sync 0000000023
+2011_09_28 2011_09_28_drive_0205_sync 0000000024
+2011_09_28 2011_09_28_drive_0205_sync 0000000025
+2011_09_28 2011_09_28_drive_0205_sync 0000000026
+2011_09_28 2011_09_28_drive_0205_sync 0000000027
+2011_09_28 2011_09_28_drive_0205_sync 0000000028
+2011_09_28 2011_09_28_drive_0205_sync 0000000029
+2011_09_28 2011_09_28_drive_0205_sync 0000000030
+2011_09_28 2011_09_28_drive_0205_sync 0000000031
+2011_09_28 2011_09_28_drive_0205_sync 0000000032
+2011_09_28 2011_09_28_drive_0205_sync 0000000033
+2011_09_28 2011_09_28_drive_0208_sync 0000000000
+2011_09_28 2011_09_28_drive_0208_sync 0000000001
+2011_09_28 2011_09_28_drive_0208_sync 0000000002
+2011_09_28 2011_09_28_drive_0208_sync 0000000003
+2011_09_28 2011_09_28_drive_0208_sync 0000000004
+2011_09_28 2011_09_28_drive_0208_sync 0000000005
+2011_09_28 2011_09_28_drive_0208_sync 0000000006
+2011_09_28 2011_09_28_drive_0208_sync 0000000007
+2011_09_28 2011_09_28_drive_0208_sync 0000000008
+2011_09_28 2011_09_28_drive_0208_sync 0000000009
+2011_09_28 2011_09_28_drive_0208_sync 0000000010
+2011_09_28 2011_09_28_drive_0208_sync 0000000011
+2011_09_28 2011_09_28_drive_0208_sync 0000000012
+2011_09_28 2011_09_28_drive_0208_sync 0000000013
+2011_09_28 2011_09_28_drive_0208_sync 0000000014
+2011_09_28 2011_09_28_drive_0208_sync 0000000015
+2011_09_28 2011_09_28_drive_0208_sync 0000000016
+2011_09_28 2011_09_28_drive_0208_sync 0000000017
+2011_09_28 2011_09_28_drive_0208_sync 0000000018
+2011_09_28 2011_09_28_drive_0208_sync 0000000019
+2011_09_28 2011_09_28_drive_0208_sync 0000000020
+2011_09_28 2011_09_28_drive_0208_sync 0000000021
+2011_09_28 2011_09_28_drive_0208_sync 0000000022
+2011_09_28 2011_09_28_drive_0208_sync 0000000023
+2011_09_28 2011_09_28_drive_0208_sync 0000000024
+2011_09_28 2011_09_28_drive_0208_sync 0000000025
+2011_09_28 2011_09_28_drive_0208_sync 0000000026
+2011_09_28 2011_09_28_drive_0208_sync 0000000027
+2011_09_28 2011_09_28_drive_0208_sync 0000000028
+2011_09_28 2011_09_28_drive_0208_sync 0000000029
+2011_09_28 2011_09_28_drive_0208_sync 0000000030
+2011_09_28 2011_09_28_drive_0208_sync 0000000031
+2011_09_28 2011_09_28_drive_0208_sync 0000000032
+2011_09_28 2011_09_28_drive_0208_sync 0000000033
+2011_09_28 2011_09_28_drive_0208_sync 0000000034
+2011_09_28 2011_09_28_drive_0208_sync 0000000035
+2011_09_28 2011_09_28_drive_0208_sync 0000000036
+2011_09_28 2011_09_28_drive_0208_sync 0000000037
+2011_09_28 2011_09_28_drive_0208_sync 0000000038
+2011_09_28 2011_09_28_drive_0208_sync 0000000039
+2011_09_28 2011_09_28_drive_0208_sync 0000000040
+2011_09_28 2011_09_28_drive_0208_sync 0000000041
+2011_09_28 2011_09_28_drive_0208_sync 0000000042
+2011_09_28 2011_09_28_drive_0208_sync 0000000043
+2011_09_28 2011_09_28_drive_0208_sync 0000000044
+2011_09_28 2011_09_28_drive_0208_sync 0000000045
+2011_09_28 2011_09_28_drive_0208_sync 0000000046
+2011_09_28 2011_09_28_drive_0208_sync 0000000047
+2011_09_28 2011_09_28_drive_0208_sync 0000000048
+2011_09_28 2011_09_28_drive_0208_sync 0000000049
+2011_09_28 2011_09_28_drive_0208_sync 0000000050
+2011_09_28 2011_09_28_drive_0208_sync 0000000051
+2011_09_28 2011_09_28_drive_0208_sync 0000000052
+2011_09_28 2011_09_28_drive_0209_sync 0000000000
+2011_09_28 2011_09_28_drive_0209_sync 0000000001
+2011_09_28 2011_09_28_drive_0209_sync 0000000002
+2011_09_28 2011_09_28_drive_0209_sync 0000000003
+2011_09_28 2011_09_28_drive_0209_sync 0000000004
+2011_09_28 2011_09_28_drive_0209_sync 0000000005
+2011_09_28 2011_09_28_drive_0209_sync 0000000006
+2011_09_28 2011_09_28_drive_0209_sync 0000000007
+2011_09_28 2011_09_28_drive_0209_sync 0000000008
+2011_09_28 2011_09_28_drive_0209_sync 0000000009
+2011_09_28 2011_09_28_drive_0209_sync 0000000010
+2011_09_28 2011_09_28_drive_0209_sync 0000000011
+2011_09_28 2011_09_28_drive_0209_sync 0000000012
+2011_09_28 2011_09_28_drive_0209_sync 0000000013
+2011_09_28 2011_09_28_drive_0209_sync 0000000014
+2011_09_28 2011_09_28_drive_0209_sync 0000000015
+2011_09_28 2011_09_28_drive_0209_sync 0000000016
+2011_09_28 2011_09_28_drive_0209_sync 0000000017
+2011_09_28 2011_09_28_drive_0209_sync 0000000018
+2011_09_28 2011_09_28_drive_0209_sync 0000000019
+2011_09_28 2011_09_28_drive_0209_sync 0000000020
+2011_09_28 2011_09_28_drive_0209_sync 0000000021
+2011_09_28 2011_09_28_drive_0209_sync 0000000022
+2011_09_28 2011_09_28_drive_0209_sync 0000000023
+2011_09_28 2011_09_28_drive_0209_sync 0000000024
+2011_09_28 2011_09_28_drive_0209_sync 0000000025
+2011_09_28 2011_09_28_drive_0209_sync 0000000026
+2011_09_28 2011_09_28_drive_0209_sync 0000000027
+2011_09_28 2011_09_28_drive_0209_sync 0000000028
+2011_09_28 2011_09_28_drive_0209_sync 0000000029
+2011_09_28 2011_09_28_drive_0209_sync 0000000030
+2011_09_28 2011_09_28_drive_0209_sync 0000000031
+2011_09_28 2011_09_28_drive_0209_sync 0000000032
+2011_09_28 2011_09_28_drive_0209_sync 0000000033
+2011_09_28 2011_09_28_drive_0209_sync 0000000034
+2011_09_28 2011_09_28_drive_0209_sync 0000000035
+2011_09_28 2011_09_28_drive_0209_sync 0000000036
+2011_09_28 2011_09_28_drive_0209_sync 0000000037
+2011_09_28 2011_09_28_drive_0209_sync 0000000038
+2011_09_28 2011_09_28_drive_0209_sync 0000000039
+2011_09_28 2011_09_28_drive_0209_sync 0000000040
+2011_09_28 2011_09_28_drive_0209_sync 0000000041
+2011_09_28 2011_09_28_drive_0209_sync 0000000042
+2011_09_28 2011_09_28_drive_0209_sync 0000000043
+2011_09_28 2011_09_28_drive_0209_sync 0000000044
+2011_09_28 2011_09_28_drive_0209_sync 0000000045
+2011_09_28 2011_09_28_drive_0209_sync 0000000046
+2011_09_28 2011_09_28_drive_0209_sync 0000000047
+2011_09_28 2011_09_28_drive_0209_sync 0000000048
+2011_09_28 2011_09_28_drive_0209_sync 0000000049
+2011_09_28 2011_09_28_drive_0209_sync 0000000050
+2011_09_28 2011_09_28_drive_0209_sync 0000000051
+2011_09_28 2011_09_28_drive_0209_sync 0000000052
+2011_09_28 2011_09_28_drive_0209_sync 0000000053
+2011_09_28 2011_09_28_drive_0209_sync 0000000054
+2011_09_28 2011_09_28_drive_0209_sync 0000000055
+2011_09_28 2011_09_28_drive_0209_sync 0000000056
+2011_09_28 2011_09_28_drive_0209_sync 0000000057
+2011_09_28 2011_09_28_drive_0209_sync 0000000058
+2011_09_28 2011_09_28_drive_0209_sync 0000000059
+2011_09_28 2011_09_28_drive_0209_sync 0000000060
+2011_09_28 2011_09_28_drive_0209_sync 0000000061
+2011_09_28 2011_09_28_drive_0209_sync 0000000062
+2011_09_28 2011_09_28_drive_0209_sync 0000000063
+2011_09_28 2011_09_28_drive_0209_sync 0000000064
+2011_09_28 2011_09_28_drive_0209_sync 0000000065
+2011_09_28 2011_09_28_drive_0209_sync 0000000066
+2011_09_28 2011_09_28_drive_0209_sync 0000000067
+2011_09_28 2011_09_28_drive_0209_sync 0000000068
+2011_09_28 2011_09_28_drive_0209_sync 0000000069
+2011_09_28 2011_09_28_drive_0209_sync 0000000070
+2011_09_28 2011_09_28_drive_0209_sync 0000000071
+2011_09_28 2011_09_28_drive_0209_sync 0000000072
+2011_09_28 2011_09_28_drive_0209_sync 0000000073
+2011_09_28 2011_09_28_drive_0209_sync 0000000074
+2011_09_28 2011_09_28_drive_0209_sync 0000000075
+2011_09_28 2011_09_28_drive_0209_sync 0000000076
+2011_09_28 2011_09_28_drive_0209_sync 0000000077
+2011_09_28 2011_09_28_drive_0209_sync 0000000078
+2011_09_28 2011_09_28_drive_0209_sync 0000000079
+2011_09_28 2011_09_28_drive_0209_sync 0000000080
+2011_09_28 2011_09_28_drive_0209_sync 0000000081
+2011_09_28 2011_09_28_drive_0209_sync 0000000082
+2011_09_28 2011_09_28_drive_0209_sync 0000000083
+2011_09_28 2011_09_28_drive_0209_sync 0000000084
+2011_09_28 2011_09_28_drive_0214_sync 0000000000
+2011_09_28 2011_09_28_drive_0214_sync 0000000001
+2011_09_28 2011_09_28_drive_0214_sync 0000000002
+2011_09_28 2011_09_28_drive_0214_sync 0000000003
+2011_09_28 2011_09_28_drive_0214_sync 0000000004
+2011_09_28 2011_09_28_drive_0214_sync 0000000005
+2011_09_28 2011_09_28_drive_0214_sync 0000000006
+2011_09_28 2011_09_28_drive_0214_sync 0000000007
+2011_09_28 2011_09_28_drive_0214_sync 0000000008
+2011_09_28 2011_09_28_drive_0214_sync 0000000009
+2011_09_28 2011_09_28_drive_0214_sync 0000000010
+2011_09_28 2011_09_28_drive_0214_sync 0000000011
+2011_09_28 2011_09_28_drive_0214_sync 0000000012
+2011_09_28 2011_09_28_drive_0214_sync 0000000013
+2011_09_28 2011_09_28_drive_0214_sync 0000000014
+2011_09_28 2011_09_28_drive_0214_sync 0000000015
+2011_09_28 2011_09_28_drive_0214_sync 0000000016
+2011_09_28 2011_09_28_drive_0214_sync 0000000017
+2011_09_28 2011_09_28_drive_0214_sync 0000000018
+2011_09_28 2011_09_28_drive_0214_sync 0000000019
+2011_09_28 2011_09_28_drive_0214_sync 0000000020
+2011_09_28 2011_09_28_drive_0214_sync 0000000021
+2011_09_28 2011_09_28_drive_0214_sync 0000000022
+2011_09_28 2011_09_28_drive_0214_sync 0000000023
+2011_09_28 2011_09_28_drive_0214_sync 0000000024
+2011_09_28 2011_09_28_drive_0214_sync 0000000025
+2011_09_28 2011_09_28_drive_0214_sync 0000000026
+2011_09_28 2011_09_28_drive_0214_sync 0000000027
+2011_09_28 2011_09_28_drive_0214_sync 0000000028
+2011_09_28 2011_09_28_drive_0214_sync 0000000029
+2011_09_28 2011_09_28_drive_0214_sync 0000000030
+2011_09_28 2011_09_28_drive_0214_sync 0000000031
+2011_09_28 2011_09_28_drive_0214_sync 0000000032
+2011_09_28 2011_09_28_drive_0214_sync 0000000033
+2011_09_28 2011_09_28_drive_0214_sync 0000000034
+2011_09_28 2011_09_28_drive_0214_sync 0000000035
+2011_09_28 2011_09_28_drive_0214_sync 0000000036
+2011_09_28 2011_09_28_drive_0214_sync 0000000037
+2011_09_28 2011_09_28_drive_0214_sync 0000000038
+2011_09_28 2011_09_28_drive_0214_sync 0000000039
+2011_09_28 2011_09_28_drive_0214_sync 0000000040
+2011_09_28 2011_09_28_drive_0216_sync 0000000000
+2011_09_28 2011_09_28_drive_0216_sync 0000000001
+2011_09_28 2011_09_28_drive_0216_sync 0000000002
+2011_09_28 2011_09_28_drive_0216_sync 0000000003
+2011_09_28 2011_09_28_drive_0216_sync 0000000004
+2011_09_28 2011_09_28_drive_0216_sync 0000000005
+2011_09_28 2011_09_28_drive_0216_sync 0000000006
+2011_09_28 2011_09_28_drive_0216_sync 0000000007
+2011_09_28 2011_09_28_drive_0216_sync 0000000008
+2011_09_28 2011_09_28_drive_0216_sync 0000000009
+2011_09_28 2011_09_28_drive_0216_sync 0000000010
+2011_09_28 2011_09_28_drive_0216_sync 0000000011
+2011_09_28 2011_09_28_drive_0216_sync 0000000012
+2011_09_28 2011_09_28_drive_0216_sync 0000000013
+2011_09_28 2011_09_28_drive_0216_sync 0000000014
+2011_09_28 2011_09_28_drive_0216_sync 0000000015
+2011_09_28 2011_09_28_drive_0216_sync 0000000016
+2011_09_28 2011_09_28_drive_0216_sync 0000000017
+2011_09_28 2011_09_28_drive_0216_sync 0000000018
+2011_09_28 2011_09_28_drive_0216_sync 0000000019
+2011_09_28 2011_09_28_drive_0216_sync 0000000020
+2011_09_28 2011_09_28_drive_0216_sync 0000000021
+2011_09_28 2011_09_28_drive_0216_sync 0000000022
+2011_09_28 2011_09_28_drive_0216_sync 0000000023
+2011_09_28 2011_09_28_drive_0216_sync 0000000024
+2011_09_28 2011_09_28_drive_0216_sync 0000000025
+2011_09_28 2011_09_28_drive_0216_sync 0000000026
+2011_09_28 2011_09_28_drive_0216_sync 0000000027
+2011_09_28 2011_09_28_drive_0216_sync 0000000028
+2011_09_28 2011_09_28_drive_0216_sync 0000000029
+2011_09_28 2011_09_28_drive_0216_sync 0000000030
+2011_09_28 2011_09_28_drive_0216_sync 0000000031
+2011_09_28 2011_09_28_drive_0216_sync 0000000032
+2011_09_28 2011_09_28_drive_0216_sync 0000000033
+2011_09_28 2011_09_28_drive_0216_sync 0000000034
+2011_09_28 2011_09_28_drive_0216_sync 0000000035
+2011_09_28 2011_09_28_drive_0216_sync 0000000036
+2011_09_28 2011_09_28_drive_0216_sync 0000000037
+2011_09_28 2011_09_28_drive_0216_sync 0000000038
+2011_09_28 2011_09_28_drive_0216_sync 0000000039
+2011_09_28 2011_09_28_drive_0216_sync 0000000040
+2011_09_28 2011_09_28_drive_0216_sync 0000000041
+2011_09_28 2011_09_28_drive_0216_sync 0000000042
+2011_09_28 2011_09_28_drive_0216_sync 0000000043
+2011_09_28 2011_09_28_drive_0216_sync 0000000044
+2011_09_28 2011_09_28_drive_0216_sync 0000000045
+2011_09_28 2011_09_28_drive_0216_sync 0000000046
+2011_09_28 2011_09_28_drive_0216_sync 0000000047
+2011_09_28 2011_09_28_drive_0216_sync 0000000048
+2011_09_28 2011_09_28_drive_0216_sync 0000000049
+2011_09_28 2011_09_28_drive_0216_sync 0000000050
+2011_09_28 2011_09_28_drive_0216_sync 0000000051
+2011_09_28 2011_09_28_drive_0216_sync 0000000052
+2011_09_28 2011_09_28_drive_0216_sync 0000000053
+2011_09_28 2011_09_28_drive_0216_sync 0000000054
+2011_09_28 2011_09_28_drive_0216_sync 0000000055
+2011_09_28 2011_09_28_drive_0216_sync 0000000056
+2011_09_28 2011_09_28_drive_0216_sync 0000000057
+2011_09_28 2011_09_28_drive_0220_sync 0000000000
+2011_09_28 2011_09_28_drive_0220_sync 0000000001
+2011_09_28 2011_09_28_drive_0220_sync 0000000002
+2011_09_28 2011_09_28_drive_0220_sync 0000000003
+2011_09_28 2011_09_28_drive_0220_sync 0000000004
+2011_09_28 2011_09_28_drive_0220_sync 0000000005
+2011_09_28 2011_09_28_drive_0220_sync 0000000006
+2011_09_28 2011_09_28_drive_0220_sync 0000000007
+2011_09_28 2011_09_28_drive_0220_sync 0000000008
+2011_09_28 2011_09_28_drive_0220_sync 0000000009
+2011_09_28 2011_09_28_drive_0220_sync 0000000010
+2011_09_28 2011_09_28_drive_0220_sync 0000000011
+2011_09_28 2011_09_28_drive_0220_sync 0000000012
+2011_09_28 2011_09_28_drive_0220_sync 0000000013
+2011_09_28 2011_09_28_drive_0220_sync 0000000014
+2011_09_28 2011_09_28_drive_0220_sync 0000000015
+2011_09_28 2011_09_28_drive_0220_sync 0000000016
+2011_09_28 2011_09_28_drive_0220_sync 0000000017
+2011_09_28 2011_09_28_drive_0220_sync 0000000018
+2011_09_28 2011_09_28_drive_0220_sync 0000000019
+2011_09_28 2011_09_28_drive_0220_sync 0000000020
+2011_09_28 2011_09_28_drive_0220_sync 0000000021
+2011_09_28 2011_09_28_drive_0220_sync 0000000022
+2011_09_28 2011_09_28_drive_0220_sync 0000000023
+2011_09_28 2011_09_28_drive_0220_sync 0000000024
+2011_09_28 2011_09_28_drive_0220_sync 0000000025
+2011_09_28 2011_09_28_drive_0220_sync 0000000026
+2011_09_28 2011_09_28_drive_0220_sync 0000000027
+2011_09_28 2011_09_28_drive_0220_sync 0000000028
+2011_09_28 2011_09_28_drive_0220_sync 0000000029
+2011_09_28 2011_09_28_drive_0220_sync 0000000030
+2011_09_28 2011_09_28_drive_0220_sync 0000000031
+2011_09_28 2011_09_28_drive_0220_sync 0000000032
+2011_09_28 2011_09_28_drive_0220_sync 0000000033
+2011_09_28 2011_09_28_drive_0220_sync 0000000034
+2011_09_28 2011_09_28_drive_0220_sync 0000000035
+2011_09_28 2011_09_28_drive_0220_sync 0000000036
+2011_09_28 2011_09_28_drive_0220_sync 0000000037
+2011_09_28 2011_09_28_drive_0220_sync 0000000038
+2011_09_28 2011_09_28_drive_0220_sync 0000000039
+2011_09_28 2011_09_28_drive_0220_sync 0000000040
+2011_09_28 2011_09_28_drive_0220_sync 0000000041
+2011_09_28 2011_09_28_drive_0220_sync 0000000042
+2011_09_28 2011_09_28_drive_0220_sync 0000000043
+2011_09_28 2011_09_28_drive_0220_sync 0000000044
+2011_09_28 2011_09_28_drive_0220_sync 0000000045
+2011_09_28 2011_09_28_drive_0220_sync 0000000046
+2011_09_28 2011_09_28_drive_0220_sync 0000000047
+2011_09_28 2011_09_28_drive_0220_sync 0000000048
+2011_09_28 2011_09_28_drive_0220_sync 0000000049
+2011_09_28 2011_09_28_drive_0220_sync 0000000050
+2011_09_28 2011_09_28_drive_0220_sync 0000000051
+2011_09_28 2011_09_28_drive_0220_sync 0000000052
+2011_09_28 2011_09_28_drive_0220_sync 0000000053
+2011_09_28 2011_09_28_drive_0220_sync 0000000054
+2011_09_28 2011_09_28_drive_0220_sync 0000000055
+2011_09_28 2011_09_28_drive_0220_sync 0000000056
+2011_09_28 2011_09_28_drive_0220_sync 0000000057
+2011_09_28 2011_09_28_drive_0220_sync 0000000058
+2011_09_28 2011_09_28_drive_0220_sync 0000000059
+2011_09_28 2011_09_28_drive_0220_sync 0000000060
+2011_09_28 2011_09_28_drive_0220_sync 0000000061
+2011_09_28 2011_09_28_drive_0220_sync 0000000062
+2011_09_28 2011_09_28_drive_0220_sync 0000000063
+2011_09_28 2011_09_28_drive_0220_sync 0000000064
+2011_09_28 2011_09_28_drive_0220_sync 0000000065
+2011_09_28 2011_09_28_drive_0220_sync 0000000066
+2011_09_28 2011_09_28_drive_0220_sync 0000000067
+2011_09_28 2011_09_28_drive_0220_sync 0000000068
+2011_09_28 2011_09_28_drive_0220_sync 0000000069
+2011_09_28 2011_09_28_drive_0220_sync 0000000070
+2011_09_28 2011_09_28_drive_0220_sync 0000000071
+2011_09_28 2011_09_28_drive_0220_sync 0000000072
+2011_09_28 2011_09_28_drive_0220_sync 0000000073
+2011_09_28 2011_09_28_drive_0220_sync 0000000074
+2011_09_28 2011_09_28_drive_0220_sync 0000000075
+2011_09_28 2011_09_28_drive_0220_sync 0000000076
+2011_09_28 2011_09_28_drive_0222_sync 0000000000
+2011_09_28 2011_09_28_drive_0222_sync 0000000001
+2011_09_28 2011_09_28_drive_0222_sync 0000000002
+2011_09_28 2011_09_28_drive_0222_sync 0000000003
+2011_09_28 2011_09_28_drive_0222_sync 0000000004
+2011_09_28 2011_09_28_drive_0222_sync 0000000005
+2011_09_28 2011_09_28_drive_0222_sync 0000000006
+2011_09_28 2011_09_28_drive_0222_sync 0000000007
+2011_09_28 2011_09_28_drive_0222_sync 0000000008
+2011_09_28 2011_09_28_drive_0222_sync 0000000009
+2011_09_28 2011_09_28_drive_0222_sync 0000000010
+2011_09_28 2011_09_28_drive_0222_sync 0000000011
+2011_09_28 2011_09_28_drive_0222_sync 0000000012
+2011_09_28 2011_09_28_drive_0222_sync 0000000013
+2011_09_28 2011_09_28_drive_0222_sync 0000000014
+2011_09_28 2011_09_28_drive_0222_sync 0000000015
+2011_09_28 2011_09_28_drive_0222_sync 0000000016
+2011_09_28 2011_09_28_drive_0222_sync 0000000017
+2011_09_28 2011_09_28_drive_0222_sync 0000000018
+2011_09_28 2011_09_28_drive_0222_sync 0000000019
+2011_09_28 2011_09_28_drive_0222_sync 0000000020
+2011_09_28 2011_09_28_drive_0222_sync 0000000021
+2011_09_28 2011_09_28_drive_0222_sync 0000000022
+2011_09_28 2011_09_28_drive_0222_sync 0000000023
+2011_09_28 2011_09_28_drive_0222_sync 0000000024
+2011_09_28 2011_09_28_drive_0222_sync 0000000025
+2011_09_28 2011_09_28_drive_0222_sync 0000000026
+2011_09_28 2011_09_28_drive_0222_sync 0000000027
+2011_09_28 2011_09_28_drive_0222_sync 0000000028
+2011_09_28 2011_09_28_drive_0222_sync 0000000029
+2011_09_28 2011_09_28_drive_0222_sync 0000000030
+2011_09_28 2011_09_28_drive_0222_sync 0000000031
+2011_09_28 2011_09_28_drive_0222_sync 0000000032
+2011_09_28 2011_09_28_drive_0222_sync 0000000033
+2011_09_28 2011_09_28_drive_0222_sync 0000000034
+2011_09_28 2011_09_28_drive_0222_sync 0000000035
+2011_09_28 2011_09_28_drive_0222_sync 0000000036
+2011_09_28 2011_09_28_drive_0222_sync 0000000037
+2011_09_28 2011_09_28_drive_0222_sync 0000000038
+2011_09_28 2011_09_28_drive_0222_sync 0000000039
+2011_09_28 2011_09_28_drive_0222_sync 0000000040
+2011_09_28 2011_09_28_drive_0222_sync 0000000041
+2011_09_28 2011_09_28_drive_0222_sync 0000000042
+2011_09_28 2011_09_28_drive_0222_sync 0000000043
+2011_09_28 2011_09_28_drive_0222_sync 0000000044
+2011_09_28 2011_09_28_drive_0222_sync 0000000045
+2011_09_28 2011_09_28_drive_0222_sync 0000000046
+2011_09_28 2011_09_28_drive_0222_sync 0000000047
+2011_09_28 2011_09_28_drive_0222_sync 0000000048
+2011_09_28 2011_09_28_drive_0222_sync 0000000049
+2011_09_28 2011_09_28_drive_0222_sync 0000000050
+2011_09_28 2011_09_28_drive_0222_sync 0000000051
+2011_09_28 2011_09_28_drive_0222_sync 0000000052
+2011_09_28 2011_09_28_drive_0225_sync 0000000000
+2011_09_28 2011_09_28_drive_0225_sync 0000000001
+2011_09_28 2011_09_28_drive_0225_sync 0000000002
+2011_09_28 2011_09_28_drive_0225_sync 0000000003
+2011_09_28 2011_09_28_drive_0225_sync 0000000004
+2011_09_28 2011_09_28_drive_0225_sync 0000000005
+2011_09_28 2011_09_28_drive_0225_sync 0000000006
+2011_09_28 2011_09_28_drive_0225_sync 0000000007
+2011_09_28 2011_09_28_drive_0225_sync 0000000008
+2011_09_28 2011_09_28_drive_0225_sync 0000000009
+2011_09_28 2011_09_28_drive_0225_sync 0000000010
+2011_09_28 2011_09_28_drive_0225_sync 0000000011
+2011_09_28 2011_09_28_drive_0225_sync 0000000012
+2011_09_29 2011_09_29_drive_0004_sync 0000000317
+2011_09_29 2011_09_29_drive_0004_sync 0000000318
+2011_09_29 2011_09_29_drive_0004_sync 0000000321
+2011_09_29 2011_09_29_drive_0004_sync 0000000322
+2011_09_29 2011_09_29_drive_0004_sync 0000000323
+2011_09_29 2011_09_29_drive_0004_sync 0000000325
+2011_09_29 2011_09_29_drive_0004_sync 0000000326
+2011_09_29 2011_09_29_drive_0004_sync 0000000327
+2011_09_29 2011_09_29_drive_0004_sync 0000000328
+2011_09_29 2011_09_29_drive_0004_sync 0000000329
+2011_09_29 2011_09_29_drive_0004_sync 0000000330
+2011_09_29 2011_09_29_drive_0004_sync 0000000331
+2011_09_29 2011_09_29_drive_0004_sync 0000000332
+2011_09_29 2011_09_29_drive_0004_sync 0000000333
+2011_09_29 2011_09_29_drive_0004_sync 0000000334
+2011_09_29 2011_09_29_drive_0004_sync 0000000335
+2011_09_29 2011_09_29_drive_0004_sync 0000000336
+2011_09_29 2011_09_29_drive_0004_sync 0000000337
+2011_09_29 2011_09_29_drive_0026_sync 0000000023
+2011_09_29 2011_09_29_drive_0026_sync 0000000024
+2011_09_29 2011_09_29_drive_0026_sync 0000000025
+2011_09_29 2011_09_29_drive_0026_sync 0000000026
+2011_09_29 2011_09_29_drive_0026_sync 0000000027
+2011_09_29 2011_09_29_drive_0026_sync 0000000028
+2011_09_29 2011_09_29_drive_0026_sync 0000000029
+2011_09_29 2011_09_29_drive_0026_sync 0000000030
+2011_09_29 2011_09_29_drive_0026_sync 0000000031
+2011_09_29 2011_09_29_drive_0026_sync 0000000032
+2011_09_29 2011_09_29_drive_0026_sync 0000000033
+2011_09_29 2011_09_29_drive_0026_sync 0000000036
+2011_09_29 2011_09_29_drive_0026_sync 0000000037
+2011_09_29 2011_09_29_drive_0026_sync 0000000038
+2011_09_29 2011_09_29_drive_0026_sync 0000000039
+2011_09_29 2011_09_29_drive_0026_sync 0000000040
+2011_09_29 2011_09_29_drive_0026_sync 0000000041
+2011_09_29 2011_09_29_drive_0026_sync 0000000042
+2011_09_29 2011_09_29_drive_0026_sync 0000000043
+2011_09_29 2011_09_29_drive_0026_sync 0000000044
+2011_09_29 2011_09_29_drive_0026_sync 0000000045
+2011_09_29 2011_09_29_drive_0026_sync 0000000046
+2011_09_29 2011_09_29_drive_0026_sync 0000000047
+2011_09_29 2011_09_29_drive_0026_sync 0000000048
+2011_09_29 2011_09_29_drive_0026_sync 0000000049
+2011_09_29 2011_09_29_drive_0026_sync 0000000050
+2011_09_29 2011_09_29_drive_0026_sync 0000000051
+2011_09_29 2011_09_29_drive_0026_sync 0000000052
+2011_09_29 2011_09_29_drive_0026_sync 0000000053
+2011_09_29 2011_09_29_drive_0026_sync 0000000054
+2011_09_29 2011_09_29_drive_0026_sync 0000000055
+2011_09_29 2011_09_29_drive_0026_sync 0000000056
+2011_09_29 2011_09_29_drive_0026_sync 0000000057
+2011_09_29 2011_09_29_drive_0026_sync 0000000058
+2011_09_29 2011_09_29_drive_0026_sync 0000000059
+2011_09_29 2011_09_29_drive_0026_sync 0000000060
+2011_09_29 2011_09_29_drive_0026_sync 0000000061
+2011_09_29 2011_09_29_drive_0026_sync 0000000062
+2011_09_29 2011_09_29_drive_0026_sync 0000000063
+2011_09_29 2011_09_29_drive_0026_sync 0000000064
+2011_09_29 2011_09_29_drive_0026_sync 0000000065
+2011_09_29 2011_09_29_drive_0026_sync 0000000066
+2011_09_29 2011_09_29_drive_0026_sync 0000000067
+2011_09_29 2011_09_29_drive_0026_sync 0000000068
+2011_09_29 2011_09_29_drive_0026_sync 0000000069
+2011_09_29 2011_09_29_drive_0026_sync 0000000070
+2011_09_29 2011_09_29_drive_0026_sync 0000000071
+2011_09_29 2011_09_29_drive_0026_sync 0000000072
+2011_09_29 2011_09_29_drive_0026_sync 0000000073
+2011_09_29 2011_09_29_drive_0026_sync 0000000074
+2011_09_29 2011_09_29_drive_0026_sync 0000000075
+2011_09_29 2011_09_29_drive_0026_sync 0000000076
+2011_09_29 2011_09_29_drive_0026_sync 0000000077
+2011_09_29 2011_09_29_drive_0026_sync 0000000078
+2011_09_29 2011_09_29_drive_0026_sync 0000000079
+2011_09_29 2011_09_29_drive_0026_sync 0000000080
+2011_09_29 2011_09_29_drive_0026_sync 0000000081
+2011_09_29 2011_09_29_drive_0026_sync 0000000082
+2011_09_29 2011_09_29_drive_0026_sync 0000000083
+2011_09_29 2011_09_29_drive_0026_sync 0000000084
+2011_09_29 2011_09_29_drive_0026_sync 0000000085
+2011_09_29 2011_09_29_drive_0026_sync 0000000086
+2011_09_29 2011_09_29_drive_0026_sync 0000000087
+2011_09_29 2011_09_29_drive_0026_sync 0000000088
+2011_09_29 2011_09_29_drive_0026_sync 0000000089
+2011_09_29 2011_09_29_drive_0026_sync 0000000090
+2011_09_29 2011_09_29_drive_0026_sync 0000000091
+2011_09_29 2011_09_29_drive_0026_sync 0000000092
+2011_09_29 2011_09_29_drive_0026_sync 0000000093
+2011_09_29 2011_09_29_drive_0026_sync 0000000094
+2011_09_29 2011_09_29_drive_0026_sync 0000000095
+2011_09_29 2011_09_29_drive_0026_sync 0000000096
+2011_09_29 2011_09_29_drive_0026_sync 0000000097
+2011_09_29 2011_09_29_drive_0026_sync 0000000098
+2011_09_29 2011_09_29_drive_0026_sync 0000000099
+2011_09_29 2011_09_29_drive_0026_sync 0000000100
+2011_09_29 2011_09_29_drive_0026_sync 0000000101
+2011_09_29 2011_09_29_drive_0026_sync 0000000102
+2011_09_29 2011_09_29_drive_0026_sync 0000000103
+2011_09_29 2011_09_29_drive_0026_sync 0000000104
+2011_09_29 2011_09_29_drive_0026_sync 0000000105
+2011_09_29 2011_09_29_drive_0026_sync 0000000106
+2011_09_29 2011_09_29_drive_0026_sync 0000000107
+2011_09_29 2011_09_29_drive_0026_sync 0000000108
+2011_09_29 2011_09_29_drive_0026_sync 0000000109
+2011_09_29 2011_09_29_drive_0026_sync 0000000110
+2011_09_29 2011_09_29_drive_0026_sync 0000000111
+2011_09_29 2011_09_29_drive_0026_sync 0000000112
+2011_09_29 2011_09_29_drive_0026_sync 0000000113
+2011_09_29 2011_09_29_drive_0026_sync 0000000114
+2011_09_29 2011_09_29_drive_0026_sync 0000000115
+2011_09_29 2011_09_29_drive_0026_sync 0000000116
+2011_09_29 2011_09_29_drive_0026_sync 0000000117
+2011_09_29 2011_09_29_drive_0026_sync 0000000118
+2011_09_29 2011_09_29_drive_0026_sync 0000000119
+2011_09_29 2011_09_29_drive_0026_sync 0000000120
+2011_09_29 2011_09_29_drive_0026_sync 0000000121
+2011_09_29 2011_09_29_drive_0026_sync 0000000122
+2011_09_29 2011_09_29_drive_0026_sync 0000000123
+2011_09_29 2011_09_29_drive_0026_sync 0000000124
+2011_09_29 2011_09_29_drive_0026_sync 0000000125
+2011_09_29 2011_09_29_drive_0026_sync 0000000126
+2011_09_29 2011_09_29_drive_0026_sync 0000000127
+2011_09_29 2011_09_29_drive_0026_sync 0000000128
+2011_09_29 2011_09_29_drive_0026_sync 0000000129
+2011_09_29 2011_09_29_drive_0026_sync 0000000130
+2011_09_29 2011_09_29_drive_0026_sync 0000000131
+2011_09_29 2011_09_29_drive_0026_sync 0000000132
+2011_09_29 2011_09_29_drive_0026_sync 0000000133
+2011_09_29 2011_09_29_drive_0026_sync 0000000134
+2011_09_29 2011_09_29_drive_0026_sync 0000000135
+2011_09_29 2011_09_29_drive_0026_sync 0000000136
+2011_09_29 2011_09_29_drive_0026_sync 0000000137
+2011_09_29 2011_09_29_drive_0026_sync 0000000138
+2011_09_29 2011_09_29_drive_0026_sync 0000000139
+2011_09_29 2011_09_29_drive_0026_sync 0000000140
+2011_09_29 2011_09_29_drive_0026_sync 0000000141
+2011_09_29 2011_09_29_drive_0026_sync 0000000142
+2011_09_29 2011_09_29_drive_0026_sync 0000000143
+2011_09_29 2011_09_29_drive_0026_sync 0000000144
+2011_09_29 2011_09_29_drive_0026_sync 0000000145
+2011_09_29 2011_09_29_drive_0026_sync 0000000146
+2011_09_29 2011_09_29_drive_0026_sync 0000000147
+2011_09_29 2011_09_29_drive_0026_sync 0000000148
+2011_09_29 2011_09_29_drive_0026_sync 0000000149
+2011_09_29 2011_09_29_drive_0026_sync 0000000150
+2011_09_29 2011_09_29_drive_0026_sync 0000000151
+2011_09_29 2011_09_29_drive_0026_sync 0000000152
+2011_09_29 2011_09_29_drive_0026_sync 0000000153
+2011_09_29 2011_09_29_drive_0026_sync 0000000154
+2011_09_29 2011_09_29_drive_0026_sync 0000000155
+2011_09_29 2011_09_29_drive_0026_sync 0000000156
+2011_09_29 2011_09_29_drive_0071_sync 0000000000
+2011_09_29 2011_09_29_drive_0071_sync 0000000001
+2011_09_29 2011_09_29_drive_0071_sync 0000000002
+2011_09_29 2011_09_29_drive_0071_sync 0000000004
+2011_09_29 2011_09_29_drive_0071_sync 0000000005
+2011_09_29 2011_09_29_drive_0071_sync 0000000006
+2011_09_29 2011_09_29_drive_0071_sync 0000000007
+2011_09_29 2011_09_29_drive_0071_sync 0000000008
+2011_09_29 2011_09_29_drive_0071_sync 0000000009
+2011_09_29 2011_09_29_drive_0071_sync 0000000010
+2011_09_29 2011_09_29_drive_0071_sync 0000000011
+2011_09_29 2011_09_29_drive_0071_sync 0000000012
+2011_09_29 2011_09_29_drive_0071_sync 0000000013
+2011_09_29 2011_09_29_drive_0071_sync 0000000014
+2011_09_29 2011_09_29_drive_0071_sync 0000000015
+2011_09_29 2011_09_29_drive_0071_sync 0000000016
+2011_09_29 2011_09_29_drive_0071_sync 0000000311
+2011_09_29 2011_09_29_drive_0071_sync 0000000312
+2011_09_29 2011_09_29_drive_0071_sync 0000000313
+2011_09_29 2011_09_29_drive_0071_sync 0000000314
+2011_09_29 2011_09_29_drive_0071_sync 0000000315
+2011_09_29 2011_09_29_drive_0071_sync 0000000316
+2011_09_29 2011_09_29_drive_0071_sync 0000000317
+2011_09_29 2011_09_29_drive_0071_sync 0000000318
+2011_09_29 2011_09_29_drive_0071_sync 0000000319
+2011_09_29 2011_09_29_drive_0071_sync 0000000320
+2011_09_29 2011_09_29_drive_0071_sync 0000000321
+2011_09_29 2011_09_29_drive_0071_sync 0000000322
+2011_09_29 2011_09_29_drive_0071_sync 0000000323
+2011_09_29 2011_09_29_drive_0071_sync 0000000324
+2011_09_29 2011_09_29_drive_0071_sync 0000000325
+2011_09_29 2011_09_29_drive_0071_sync 0000000326
+2011_09_29 2011_09_29_drive_0071_sync 0000000327
+2011_09_29 2011_09_29_drive_0071_sync 0000000328
+2011_09_29 2011_09_29_drive_0071_sync 0000000329
+2011_09_29 2011_09_29_drive_0071_sync 0000000330
+2011_09_29 2011_09_29_drive_0071_sync 0000000331
+2011_09_29 2011_09_29_drive_0071_sync 0000000332
+2011_09_29 2011_09_29_drive_0071_sync 0000000333
+2011_09_29 2011_09_29_drive_0071_sync 0000000334
+2011_09_29 2011_09_29_drive_0071_sync 0000000335
+2011_09_29 2011_09_29_drive_0071_sync 0000000336
+2011_09_29 2011_09_29_drive_0071_sync 0000000337
+2011_09_29 2011_09_29_drive_0071_sync 0000000338
+2011_09_29 2011_09_29_drive_0071_sync 0000000339
+2011_09_29 2011_09_29_drive_0071_sync 0000000340
+2011_09_29 2011_09_29_drive_0071_sync 0000000341
+2011_09_29 2011_09_29_drive_0071_sync 0000000342
+2011_09_29 2011_09_29_drive_0071_sync 0000000343
+2011_09_29 2011_09_29_drive_0071_sync 0000000344
+2011_09_29 2011_09_29_drive_0071_sync 0000000345
+2011_09_29 2011_09_29_drive_0071_sync 0000000346
+2011_09_29 2011_09_29_drive_0071_sync 0000000347
+2011_09_29 2011_09_29_drive_0071_sync 0000000348
+2011_09_29 2011_09_29_drive_0071_sync 0000000349
+2011_09_29 2011_09_29_drive_0071_sync 0000000350
+2011_09_29 2011_09_29_drive_0071_sync 0000000351
+2011_09_29 2011_09_29_drive_0071_sync 0000000352
+2011_09_29 2011_09_29_drive_0071_sync 0000000353
+2011_09_29 2011_09_29_drive_0071_sync 0000000354
+2011_09_29 2011_09_29_drive_0071_sync 0000000355
+2011_09_29 2011_09_29_drive_0071_sync 0000000356
+2011_09_29 2011_09_29_drive_0071_sync 0000000357
+2011_09_29 2011_09_29_drive_0071_sync 0000000358
+2011_09_29 2011_09_29_drive_0071_sync 0000000359
+2011_09_29 2011_09_29_drive_0071_sync 0000000360
+2011_09_29 2011_09_29_drive_0071_sync 0000000361
+2011_09_29 2011_09_29_drive_0071_sync 0000000362
+2011_09_29 2011_09_29_drive_0071_sync 0000000363
+2011_09_29 2011_09_29_drive_0071_sync 0000000364
+2011_09_29 2011_09_29_drive_0071_sync 0000000365
+2011_09_29 2011_09_29_drive_0071_sync 0000000366
+2011_09_29 2011_09_29_drive_0071_sync 0000000367
+2011_09_29 2011_09_29_drive_0071_sync 0000000368
+2011_09_29 2011_09_29_drive_0071_sync 0000000539
+2011_09_29 2011_09_29_drive_0071_sync 0000000540
+2011_09_29 2011_09_29_drive_0071_sync 0000000541
+2011_09_29 2011_09_29_drive_0071_sync 0000000542
+2011_09_29 2011_09_29_drive_0071_sync 0000000543
+2011_09_29 2011_09_29_drive_0071_sync 0000000544
+2011_09_29 2011_09_29_drive_0071_sync 0000000545
+2011_09_29 2011_09_29_drive_0071_sync 0000000546
+2011_09_29 2011_09_29_drive_0071_sync 0000000547
+2011_09_29 2011_09_29_drive_0071_sync 0000000548
+2011_09_29 2011_09_29_drive_0071_sync 0000000549
+2011_09_29 2011_09_29_drive_0071_sync 0000000550
+2011_09_29 2011_09_29_drive_0071_sync 0000000551
+2011_09_29 2011_09_29_drive_0071_sync 0000000552
+2011_09_29 2011_09_29_drive_0071_sync 0000000553
+2011_09_29 2011_09_29_drive_0071_sync 0000000554
+2011_09_29 2011_09_29_drive_0071_sync 0000000555
+2011_09_29 2011_09_29_drive_0071_sync 0000000556
+2011_09_29 2011_09_29_drive_0071_sync 0000000557
+2011_09_29 2011_09_29_drive_0071_sync 0000000558
+2011_09_29 2011_09_29_drive_0071_sync 0000000559
+2011_09_29 2011_09_29_drive_0071_sync 0000000560
+2011_09_29 2011_09_29_drive_0071_sync 0000000561
+2011_09_29 2011_09_29_drive_0071_sync 0000000562
+2011_09_29 2011_09_29_drive_0071_sync 0000000563
+2011_09_29 2011_09_29_drive_0071_sync 0000000564
+2011_09_29 2011_09_29_drive_0071_sync 0000000565
+2011_09_29 2011_09_29_drive_0071_sync 0000000566
+2011_09_29 2011_09_29_drive_0071_sync 0000000567
+2011_09_29 2011_09_29_drive_0071_sync 0000000568
+2011_09_29 2011_09_29_drive_0071_sync 0000000569
+2011_09_29 2011_09_29_drive_0071_sync 0000000570
+2011_09_29 2011_09_29_drive_0071_sync 0000000571
+2011_09_29 2011_09_29_drive_0071_sync 0000000572
+2011_09_29 2011_09_29_drive_0071_sync 0000000573
+2011_09_29 2011_09_29_drive_0071_sync 0000000574
+2011_09_29 2011_09_29_drive_0071_sync 0000000575
+2011_09_29 2011_09_29_drive_0071_sync 0000000576
+2011_09_29 2011_09_29_drive_0071_sync 0000000577
+2011_09_29 2011_09_29_drive_0071_sync 0000000578
+2011_09_29 2011_09_29_drive_0071_sync 0000000579
+2011_09_29 2011_09_29_drive_0071_sync 0000000580
+2011_09_29 2011_09_29_drive_0071_sync 0000000581
+2011_09_29 2011_09_29_drive_0071_sync 0000000582
+2011_09_29 2011_09_29_drive_0071_sync 0000000583
+2011_09_29 2011_09_29_drive_0071_sync 0000000584
+2011_09_29 2011_09_29_drive_0071_sync 0000000585
+2011_09_29 2011_09_29_drive_0071_sync 0000000586
+2011_09_29 2011_09_29_drive_0071_sync 0000000588
+2011_09_29 2011_09_29_drive_0071_sync 0000000589
+2011_09_29 2011_09_29_drive_0071_sync 0000000590
+2011_09_29 2011_09_29_drive_0071_sync 0000000591
+2011_09_29 2011_09_29_drive_0071_sync 0000000592
+2011_09_29 2011_09_29_drive_0071_sync 0000000593
+2011_09_29 2011_09_29_drive_0071_sync 0000000594
+2011_09_29 2011_09_29_drive_0071_sync 0000000595
+2011_09_29 2011_09_29_drive_0071_sync 0000000598
+2011_09_29 2011_09_29_drive_0071_sync 0000000599
+2011_09_29 2011_09_29_drive_0071_sync 0000000600
+2011_09_29 2011_09_29_drive_0071_sync 0000000602
+2011_09_29 2011_09_29_drive_0071_sync 0000000603
+2011_09_29 2011_09_29_drive_0071_sync 0000000604
+2011_09_29 2011_09_29_drive_0071_sync 0000000605
+2011_09_29 2011_09_29_drive_0071_sync 0000000606
+2011_09_29 2011_09_29_drive_0071_sync 0000000607
+2011_09_29 2011_09_29_drive_0071_sync 0000000608
+2011_09_29 2011_09_29_drive_0071_sync 0000000609
+2011_09_29 2011_09_29_drive_0071_sync 0000000610
+2011_09_29 2011_09_29_drive_0071_sync 0000000611
+2011_09_29 2011_09_29_drive_0071_sync 0000000612
+2011_09_29 2011_09_29_drive_0071_sync 0000000613
+2011_09_29 2011_09_29_drive_0071_sync 0000000614
+2011_09_29 2011_09_29_drive_0071_sync 0000000615
+2011_09_29 2011_09_29_drive_0071_sync 0000000616
+2011_09_29 2011_09_29_drive_0071_sync 0000000617
+2011_09_29 2011_09_29_drive_0071_sync 0000000618
+2011_09_29 2011_09_29_drive_0071_sync 0000000620
+2011_09_29 2011_09_29_drive_0071_sync 0000000621
+2011_09_29 2011_09_29_drive_0071_sync 0000000622
+2011_09_29 2011_09_29_drive_0071_sync 0000000623
+2011_09_29 2011_09_29_drive_0071_sync 0000000624
+2011_09_29 2011_09_29_drive_0071_sync 0000000625
+2011_09_29 2011_09_29_drive_0071_sync 0000000626
+2011_09_29 2011_09_29_drive_0071_sync 0000000627
+2011_09_29 2011_09_29_drive_0071_sync 0000000628
+2011_09_29 2011_09_29_drive_0071_sync 0000000629
+2011_09_29 2011_09_29_drive_0071_sync 0000000630
+2011_09_29 2011_09_29_drive_0071_sync 0000000631
+2011_09_29 2011_09_29_drive_0071_sync 0000000632
+2011_09_29 2011_09_29_drive_0071_sync 0000000633
+2011_09_29 2011_09_29_drive_0071_sync 0000000634
+2011_09_29 2011_09_29_drive_0071_sync 0000000635
+2011_09_29 2011_09_29_drive_0071_sync 0000000636
+2011_09_29 2011_09_29_drive_0071_sync 0000000637
+2011_09_29 2011_09_29_drive_0071_sync 0000000638
+2011_09_29 2011_09_29_drive_0071_sync 0000000639
+2011_09_29 2011_09_29_drive_0071_sync 0000000640
+2011_09_29 2011_09_29_drive_0071_sync 0000000641
+2011_09_29 2011_09_29_drive_0071_sync 0000000642
+2011_09_29 2011_09_29_drive_0071_sync 0000000643
+2011_09_29 2011_09_29_drive_0071_sync 0000000644
+2011_09_29 2011_09_29_drive_0071_sync 0000000645
+2011_09_29 2011_09_29_drive_0071_sync 0000000646
+2011_09_29 2011_09_29_drive_0071_sync 0000000647
+2011_09_29 2011_09_29_drive_0071_sync 0000000648
+2011_09_29 2011_09_29_drive_0071_sync 0000000649
+2011_09_29 2011_09_29_drive_0071_sync 0000000650
+2011_09_29 2011_09_29_drive_0071_sync 0000000651
+2011_09_29 2011_09_29_drive_0071_sync 0000000652
+2011_09_29 2011_09_29_drive_0071_sync 0000000653
+2011_09_29 2011_09_29_drive_0071_sync 0000000654
+2011_09_29 2011_09_29_drive_0071_sync 0000000655
+2011_09_29 2011_09_29_drive_0071_sync 0000000656
+2011_09_29 2011_09_29_drive_0071_sync 0000000657
+2011_09_29 2011_09_29_drive_0071_sync 0000000658
+2011_09_29 2011_09_29_drive_0071_sync 0000000659
+2011_09_29 2011_09_29_drive_0071_sync 0000000660
+2011_09_29 2011_09_29_drive_0071_sync 0000000661
+2011_09_29 2011_09_29_drive_0071_sync 0000000662
+2011_09_29 2011_09_29_drive_0071_sync 0000000663
+2011_09_29 2011_09_29_drive_0071_sync 0000000664
+2011_09_29 2011_09_29_drive_0071_sync 0000000665
+2011_09_29 2011_09_29_drive_0071_sync 0000000666
+2011_09_29 2011_09_29_drive_0071_sync 0000000667
+2011_09_29 2011_09_29_drive_0071_sync 0000000668
+2011_09_29 2011_09_29_drive_0071_sync 0000000669
+2011_09_29 2011_09_29_drive_0071_sync 0000000670
+2011_09_29 2011_09_29_drive_0071_sync 0000000671
+2011_09_29 2011_09_29_drive_0071_sync 0000000672
+2011_09_29 2011_09_29_drive_0071_sync 0000000673
+2011_09_29 2011_09_29_drive_0071_sync 0000000674
+2011_09_29 2011_09_29_drive_0071_sync 0000000675
+2011_09_29 2011_09_29_drive_0071_sync 0000000676
+2011_09_29 2011_09_29_drive_0071_sync 0000000677
+2011_09_29 2011_09_29_drive_0071_sync 0000000678
+2011_09_29 2011_09_29_drive_0071_sync 0000000679
+2011_09_29 2011_09_29_drive_0071_sync 0000000680
+2011_09_29 2011_09_29_drive_0071_sync 0000000681
+2011_09_29 2011_09_29_drive_0071_sync 0000000682
+2011_09_29 2011_09_29_drive_0071_sync 0000000683
+2011_09_29 2011_09_29_drive_0071_sync 0000000684
+2011_09_29 2011_09_29_drive_0071_sync 0000000685
+2011_09_29 2011_09_29_drive_0071_sync 0000000686
+2011_09_29 2011_09_29_drive_0071_sync 0000000687
+2011_09_29 2011_09_29_drive_0071_sync 0000000688
+2011_09_29 2011_09_29_drive_0071_sync 0000000689
+2011_09_29 2011_09_29_drive_0071_sync 0000000690
+2011_09_29 2011_09_29_drive_0071_sync 0000000691
+2011_09_29 2011_09_29_drive_0071_sync 0000000692
+2011_09_29 2011_09_29_drive_0071_sync 0000000693
+2011_09_29 2011_09_29_drive_0071_sync 0000000694
+2011_09_29 2011_09_29_drive_0071_sync 0000000695
+2011_09_29 2011_09_29_drive_0071_sync 0000000696
+2011_09_29 2011_09_29_drive_0071_sync 0000000697
+2011_09_29 2011_09_29_drive_0071_sync 0000000698
+2011_09_29 2011_09_29_drive_0071_sync 0000000699
+2011_09_29 2011_09_29_drive_0071_sync 0000000700
+2011_09_29 2011_09_29_drive_0071_sync 0000000701
+2011_09_29 2011_09_29_drive_0071_sync 0000000702
+2011_09_29 2011_09_29_drive_0071_sync 0000000703
+2011_09_29 2011_09_29_drive_0071_sync 0000000704
+2011_09_29 2011_09_29_drive_0071_sync 0000000705
+2011_09_29 2011_09_29_drive_0071_sync 0000000706
+2011_09_29 2011_09_29_drive_0071_sync 0000000707
+2011_09_29 2011_09_29_drive_0071_sync 0000000708
+2011_09_29 2011_09_29_drive_0071_sync 0000000733
+2011_09_29 2011_09_29_drive_0071_sync 0000000734
+2011_09_29 2011_09_29_drive_0071_sync 0000000735
+2011_09_29 2011_09_29_drive_0071_sync 0000000736
+2011_09_29 2011_09_29_drive_0071_sync 0000000738
+2011_09_29 2011_09_29_drive_0071_sync 0000000917
+2011_09_29 2011_09_29_drive_0071_sync 0000000918
+2011_09_29 2011_09_29_drive_0071_sync 0000000919
+2011_09_29 2011_09_29_drive_0071_sync 0000000920
+2011_09_29 2011_09_29_drive_0071_sync 0000000921
+2011_09_29 2011_09_29_drive_0071_sync 0000000922
+2011_09_29 2011_09_29_drive_0071_sync 0000000923
+2011_09_29 2011_09_29_drive_0071_sync 0000000924
+2011_09_29 2011_09_29_drive_0071_sync 0000000925
+2011_09_29 2011_09_29_drive_0071_sync 0000000926
+2011_09_29 2011_09_29_drive_0071_sync 0000000927
+2011_09_29 2011_09_29_drive_0071_sync 0000000928
+2011_09_29 2011_09_29_drive_0071_sync 0000000929
+2011_09_29 2011_09_29_drive_0071_sync 0000000930
+2011_09_29 2011_09_29_drive_0071_sync 0000000931
+2011_09_29 2011_09_29_drive_0071_sync 0000000932
+2011_09_29 2011_09_29_drive_0071_sync 0000000933
+2011_09_29 2011_09_29_drive_0071_sync 0000000934
+2011_09_29 2011_09_29_drive_0071_sync 0000000935
+2011_09_29 2011_09_29_drive_0071_sync 0000000936
+2011_09_29 2011_09_29_drive_0071_sync 0000000937
+2011_09_29 2011_09_29_drive_0071_sync 0000000947
+2011_09_29 2011_09_29_drive_0071_sync 0000000948
+2011_09_29 2011_09_29_drive_0071_sync 0000000949
+2011_09_29 2011_09_29_drive_0071_sync 0000000950
+2011_09_29 2011_09_29_drive_0071_sync 0000000951
+2011_09_29 2011_09_29_drive_0071_sync 0000000952
+2011_09_29 2011_09_29_drive_0071_sync 0000000953
+2011_09_29 2011_09_29_drive_0071_sync 0000000954
+2011_09_29 2011_09_29_drive_0071_sync 0000000955
+2011_09_29 2011_09_29_drive_0071_sync 0000000956
+2011_09_29 2011_09_29_drive_0071_sync 0000000957
+2011_09_29 2011_09_29_drive_0071_sync 0000000958
+2011_09_29 2011_09_29_drive_0071_sync 0000000959
+2011_09_29 2011_09_29_drive_0071_sync 0000000960
+2011_09_29 2011_09_29_drive_0071_sync 0000000961
+2011_09_29 2011_09_29_drive_0071_sync 0000000962
+2011_09_29 2011_09_29_drive_0071_sync 0000000963
+2011_09_29 2011_09_29_drive_0071_sync 0000000964
+2011_09_29 2011_09_29_drive_0071_sync 0000000965
+2011_09_29 2011_09_29_drive_0071_sync 0000000966
+2011_09_29 2011_09_29_drive_0071_sync 0000000967
+2011_09_29 2011_09_29_drive_0071_sync 0000000968
+2011_09_29 2011_09_29_drive_0071_sync 0000000969
+2011_09_29 2011_09_29_drive_0071_sync 0000000983
+2011_09_29 2011_09_29_drive_0071_sync 0000000984
+2011_09_29 2011_09_29_drive_0071_sync 0000000985
+2011_09_29 2011_09_29_drive_0071_sync 0000000987
+2011_09_29 2011_09_29_drive_0071_sync 0000000988
+2011_09_29 2011_09_29_drive_0071_sync 0000000989
+2011_09_29 2011_09_29_drive_0071_sync 0000000990
+2011_09_29 2011_09_29_drive_0071_sync 0000000991
+2011_09_29 2011_09_29_drive_0071_sync 0000000992
+2011_09_29 2011_09_29_drive_0071_sync 0000000993
+2011_09_29 2011_09_29_drive_0071_sync 0000000994
+2011_09_29 2011_09_29_drive_0071_sync 0000000995
+2011_09_29 2011_09_29_drive_0071_sync 0000000996
+2011_09_29 2011_09_29_drive_0071_sync 0000000997
+2011_09_29 2011_09_29_drive_0071_sync 0000000998
+2011_09_29 2011_09_29_drive_0071_sync 0000000999
+2011_09_29 2011_09_29_drive_0071_sync 0000001000
+2011_09_29 2011_09_29_drive_0071_sync 0000001001
+2011_09_29 2011_09_29_drive_0071_sync 0000001002
+2011_09_29 2011_09_29_drive_0071_sync 0000001003
+2011_09_29 2011_09_29_drive_0071_sync 0000001004
+2011_09_29 2011_09_29_drive_0071_sync 0000001005
+2011_09_29 2011_09_29_drive_0071_sync 0000001006
+2011_09_29 2011_09_29_drive_0071_sync 0000001007
+2011_09_29 2011_09_29_drive_0071_sync 0000001008
+2011_09_29 2011_09_29_drive_0071_sync 0000001009
+2011_09_29 2011_09_29_drive_0071_sync 0000001010
+2011_09_29 2011_09_29_drive_0071_sync 0000001011
+2011_09_29 2011_09_29_drive_0071_sync 0000001012
+2011_09_29 2011_09_29_drive_0071_sync 0000001013
+2011_09_29 2011_09_29_drive_0071_sync 0000001014
+2011_09_29 2011_09_29_drive_0071_sync 0000001015
+2011_09_29 2011_09_29_drive_0071_sync 0000001016
+2011_09_29 2011_09_29_drive_0071_sync 0000001017
+2011_09_29 2011_09_29_drive_0071_sync 0000001018
+2011_09_29 2011_09_29_drive_0071_sync 0000001019
+2011_09_29 2011_09_29_drive_0071_sync 0000001020
+2011_09_29 2011_09_29_drive_0071_sync 0000001021
+2011_09_29 2011_09_29_drive_0071_sync 0000001022
+2011_09_29 2011_09_29_drive_0071_sync 0000001023
+2011_09_29 2011_09_29_drive_0071_sync 0000001024
+2011_09_29 2011_09_29_drive_0071_sync 0000001025
+2011_09_29 2011_09_29_drive_0071_sync 0000001026
+2011_09_29 2011_09_29_drive_0071_sync 0000001027
+2011_09_29 2011_09_29_drive_0071_sync 0000001028
+2011_09_29 2011_09_29_drive_0071_sync 0000001029
+2011_09_29 2011_09_29_drive_0071_sync 0000001030
+2011_09_29 2011_09_29_drive_0071_sync 0000001031
+2011_09_29 2011_09_29_drive_0071_sync 0000001032
+2011_09_29 2011_09_29_drive_0071_sync 0000001033
+2011_09_29 2011_09_29_drive_0071_sync 0000001034
+2011_09_29 2011_09_29_drive_0071_sync 0000001035
+2011_09_29 2011_09_29_drive_0071_sync 0000001036
+2011_09_29 2011_09_29_drive_0071_sync 0000001037
+2011_09_29 2011_09_29_drive_0071_sync 0000001038
+2011_09_29 2011_09_29_drive_0071_sync 0000001039
+2011_09_29 2011_09_29_drive_0071_sync 0000001040
+2011_09_29 2011_09_29_drive_0071_sync 0000001041
+2011_09_29 2011_09_29_drive_0071_sync 0000001042
+2011_09_29 2011_09_29_drive_0071_sync 0000001043
+2011_09_29 2011_09_29_drive_0071_sync 0000001044
+2011_09_29 2011_09_29_drive_0071_sync 0000001045
+2011_09_29 2011_09_29_drive_0071_sync 0000001046
+2011_09_29 2011_09_29_drive_0071_sync 0000001047
+2011_09_29 2011_09_29_drive_0071_sync 0000001048
+2011_09_29 2011_09_29_drive_0071_sync 0000001049
+2011_09_29 2011_09_29_drive_0071_sync 0000001050
+2011_09_29 2011_09_29_drive_0071_sync 0000001051
+2011_09_29 2011_09_29_drive_0071_sync 0000001052
+2011_09_29 2011_09_29_drive_0071_sync 0000001053
+2011_09_29 2011_09_29_drive_0071_sync 0000001054
+2011_09_29 2011_09_29_drive_0071_sync 0000001055
+2011_09_29 2011_09_29_drive_0071_sync 0000001056
+2011_09_29 2011_09_29_drive_0071_sync 0000001057
+2011_09_30 2011_09_30_drive_0018_sync 0000001539
+2011_09_30 2011_09_30_drive_0018_sync 0000001543
+2011_09_30 2011_09_30_drive_0018_sync 0000001544
+2011_09_30 2011_09_30_drive_0018_sync 0000002323
+2011_09_30 2011_09_30_drive_0018_sync 0000002324
+2011_09_30 2011_09_30_drive_0018_sync 0000002325
+2011_09_30 2011_09_30_drive_0018_sync 0000002326
+2011_09_30 2011_09_30_drive_0018_sync 0000002327
+2011_09_30 2011_09_30_drive_0018_sync 0000002330
+2011_09_30 2011_09_30_drive_0018_sync 0000002331
+2011_09_30 2011_09_30_drive_0018_sync 0000002332
+2011_09_30 2011_09_30_drive_0018_sync 0000002333
+2011_09_30 2011_09_30_drive_0018_sync 0000002334
+2011_09_30 2011_09_30_drive_0018_sync 0000002335
+2011_09_30 2011_09_30_drive_0018_sync 0000002336
+2011_09_30 2011_09_30_drive_0018_sync 0000002337
+2011_09_30 2011_09_30_drive_0018_sync 0000002338
+2011_09_30 2011_09_30_drive_0018_sync 0000002339
+2011_09_30 2011_09_30_drive_0018_sync 0000002340
+2011_09_30 2011_09_30_drive_0018_sync 0000002341
+2011_09_30 2011_09_30_drive_0018_sync 0000002342
+2011_09_30 2011_09_30_drive_0018_sync 0000002343
+2011_09_30 2011_09_30_drive_0018_sync 0000002344
+2011_09_30 2011_09_30_drive_0018_sync 0000002345
+2011_09_30 2011_09_30_drive_0018_sync 0000002346
+2011_09_30 2011_09_30_drive_0018_sync 0000002360
+2011_09_30 2011_09_30_drive_0018_sync 0000002361
+2011_09_30 2011_09_30_drive_0018_sync 0000002362
+2011_09_30 2011_09_30_drive_0018_sync 0000002363
+2011_09_30 2011_09_30_drive_0018_sync 0000002364
+2011_09_30 2011_09_30_drive_0018_sync 0000002365
+2011_09_30 2011_09_30_drive_0018_sync 0000002366
+2011_09_30 2011_09_30_drive_0018_sync 0000002367
+2011_09_30 2011_09_30_drive_0018_sync 0000002368
+2011_09_30 2011_09_30_drive_0018_sync 0000002369
+2011_09_30 2011_09_30_drive_0018_sync 0000002370
+2011_09_30 2011_09_30_drive_0018_sync 0000002371
+2011_09_30 2011_09_30_drive_0018_sync 0000002372
+2011_09_30 2011_09_30_drive_0018_sync 0000002373
+2011_09_30 2011_09_30_drive_0018_sync 0000002374
+2011_09_30 2011_09_30_drive_0018_sync 0000002375
+2011_09_30 2011_09_30_drive_0018_sync 0000002376
+2011_09_30 2011_09_30_drive_0018_sync 0000002377
+2011_09_30 2011_09_30_drive_0018_sync 0000002378
+2011_09_30 2011_09_30_drive_0018_sync 0000002379
+2011_09_30 2011_09_30_drive_0018_sync 0000002380
+2011_09_30 2011_09_30_drive_0018_sync 0000002381
+2011_09_30 2011_09_30_drive_0018_sync 0000002382
+2011_09_30 2011_09_30_drive_0018_sync 0000002383
+2011_09_30 2011_09_30_drive_0018_sync 0000002384
+2011_09_30 2011_09_30_drive_0018_sync 0000002385
+2011_09_30 2011_09_30_drive_0018_sync 0000002386
+2011_09_30 2011_09_30_drive_0027_sync 0000000661
+2011_09_30 2011_09_30_drive_0027_sync 0000000662
+2011_09_30 2011_09_30_drive_0027_sync 0000000663
+2011_09_30 2011_09_30_drive_0027_sync 0000000664
+2011_09_30 2011_09_30_drive_0027_sync 0000000679
+2011_09_30 2011_09_30_drive_0027_sync 0000000680
+2011_09_30 2011_09_30_drive_0027_sync 0000000681
+2011_09_30 2011_09_30_drive_0027_sync 0000000682
+2011_09_30 2011_09_30_drive_0027_sync 0000000683
+2011_09_30 2011_09_30_drive_0027_sync 0000000684
+2011_09_30 2011_09_30_drive_0027_sync 0000000685
+2011_09_30 2011_09_30_drive_0027_sync 0000000686
+2011_09_30 2011_09_30_drive_0027_sync 0000000687
+2011_09_30 2011_09_30_drive_0027_sync 0000000688
+2011_09_30 2011_09_30_drive_0027_sync 0000000689
+2011_09_30 2011_09_30_drive_0027_sync 0000000700
+2011_09_30 2011_09_30_drive_0027_sync 0000000701
+2011_09_30 2011_09_30_drive_0027_sync 0000000705
+2011_09_30 2011_09_30_drive_0027_sync 0000000706
+2011_09_30 2011_09_30_drive_0027_sync 0000000707
+2011_09_30 2011_09_30_drive_0027_sync 0000000708
+2011_09_30 2011_09_30_drive_0027_sync 0000000709
+2011_09_30 2011_09_30_drive_0027_sync 0000000710
+2011_09_30 2011_09_30_drive_0027_sync 0000000711
+2011_09_30 2011_09_30_drive_0027_sync 0000000712
+2011_09_30 2011_09_30_drive_0027_sync 0000000713
+2011_09_30 2011_09_30_drive_0027_sync 0000000714
+2011_09_30 2011_09_30_drive_0027_sync 0000000715
+2011_09_30 2011_09_30_drive_0027_sync 0000000716
+2011_09_30 2011_09_30_drive_0027_sync 0000000717
+2011_09_30 2011_09_30_drive_0027_sync 0000001089
+2011_09_30 2011_09_30_drive_0027_sync 0000001090
+2011_09_30 2011_09_30_drive_0027_sync 0000001091
+2011_09_30 2011_09_30_drive_0027_sync 0000001092
+2011_09_30 2011_09_30_drive_0027_sync 0000001095
+2011_09_30 2011_09_30_drive_0027_sync 0000001096
+2011_09_30 2011_09_30_drive_0027_sync 0000001097
+2011_09_30 2011_09_30_drive_0027_sync 0000001098
+2011_09_30 2011_09_30_drive_0027_sync 0000001099
+2011_09_30 2011_09_30_drive_0027_sync 0000001100
+2011_09_30 2011_09_30_drive_0027_sync 0000001101
+2011_09_30 2011_09_30_drive_0027_sync 0000001102
+2011_09_30 2011_09_30_drive_0027_sync 0000001103
+2011_09_30 2011_09_30_drive_0027_sync 0000001104
+2011_09_30 2011_09_30_drive_0028_sync 0000001130
+2011_09_30 2011_09_30_drive_0028_sync 0000005103
+2011_09_30 2011_09_30_drive_0028_sync 0000005104
+2011_09_30 2011_09_30_drive_0028_sync 0000005105
+2011_09_30 2011_09_30_drive_0028_sync 0000005108
+2011_09_30 2011_09_30_drive_0028_sync 0000005109
+2011_09_30 2011_09_30_drive_0028_sync 0000005110
+2011_09_30 2011_09_30_drive_0028_sync 0000005111
+2011_09_30 2011_09_30_drive_0028_sync 0000005112
+2011_09_30 2011_09_30_drive_0028_sync 0000005113
+2011_09_30 2011_09_30_drive_0028_sync 0000005114
+2011_09_30 2011_09_30_drive_0028_sync 0000005115
+2011_09_30 2011_09_30_drive_0028_sync 0000005116
+2011_09_30 2011_09_30_drive_0028_sync 0000005117
+2011_09_30 2011_09_30_drive_0034_sync 0000000630
+2011_09_30 2011_09_30_drive_0034_sync 0000001137
+2011_09_30 2011_09_30_drive_0034_sync 0000001138
+2011_09_30 2011_09_30_drive_0034_sync 0000001139
+2011_09_30 2011_09_30_drive_0034_sync 0000001140
+2011_09_30 2011_09_30_drive_0034_sync 0000001141
+2011_09_30 2011_09_30_drive_0034_sync 0000001142
+2011_09_30 2011_09_30_drive_0034_sync 0000001143
+2011_09_30 2011_09_30_drive_0034_sync 0000001144
+2011_09_30 2011_09_30_drive_0034_sync 0000001145
+2011_09_30 2011_09_30_drive_0034_sync 0000001146
+2011_09_30 2011_09_30_drive_0034_sync 0000001147
+2011_09_30 2011_09_30_drive_0034_sync 0000001148
+2011_09_30 2011_09_30_drive_0034_sync 0000001149
+2011_09_30 2011_09_30_drive_0034_sync 0000001150
+2011_09_30 2011_09_30_drive_0034_sync 0000001151
+2011_09_30 2011_09_30_drive_0034_sync 0000001152
+2011_09_30 2011_09_30_drive_0034_sync 0000001153
+2011_09_30 2011_09_30_drive_0034_sync 0000001154
+2011_09_30 2011_09_30_drive_0034_sync 0000001155
+2011_09_30 2011_09_30_drive_0034_sync 0000001156
+2011_09_30 2011_09_30_drive_0034_sync 0000001157
+2011_09_30 2011_09_30_drive_0034_sync 0000001158
+2011_09_30 2011_09_30_drive_0034_sync 0000001159
+2011_09_30 2011_09_30_drive_0034_sync 0000001160
+2011_09_30 2011_09_30_drive_0034_sync 0000001161
+2011_09_30 2011_09_30_drive_0034_sync 0000001162
+2011_09_30 2011_09_30_drive_0034_sync 0000001163
+2011_09_30 2011_09_30_drive_0034_sync 0000001164
+2011_09_30 2011_09_30_drive_0034_sync 0000001165
+2011_09_30 2011_09_30_drive_0034_sync 0000001166
+2011_09_30 2011_09_30_drive_0034_sync 0000001167
+2011_09_30 2011_09_30_drive_0034_sync 0000001168
+2011_09_30 2011_09_30_drive_0034_sync 0000001169
+2011_09_30 2011_09_30_drive_0034_sync 0000001170
+2011_09_30 2011_09_30_drive_0034_sync 0000001171
+2011_09_30 2011_09_30_drive_0034_sync 0000001172
+2011_09_30 2011_09_30_drive_0034_sync 0000001173
+2011_09_30 2011_09_30_drive_0034_sync 0000001174
+2011_09_30 2011_09_30_drive_0034_sync 0000001175
+2011_09_30 2011_09_30_drive_0034_sync 0000001176
+2011_09_30 2011_09_30_drive_0034_sync 0000001177
+2011_09_30 2011_09_30_drive_0034_sync 0000001178
+2011_09_30 2011_09_30_drive_0034_sync 0000001179
+2011_09_30 2011_09_30_drive_0034_sync 0000001180
+2011_09_30 2011_09_30_drive_0034_sync 0000001181
+2011_09_30 2011_09_30_drive_0034_sync 0000001182
+2011_09_30 2011_09_30_drive_0034_sync 0000001183
+2011_09_30 2011_09_30_drive_0034_sync 0000001184
+2011_09_30 2011_09_30_drive_0034_sync 0000001185
+2011_09_30 2011_09_30_drive_0034_sync 0000001186
+2011_09_30 2011_09_30_drive_0034_sync 0000001187
+2011_09_30 2011_09_30_drive_0034_sync 0000001188
+2011_09_30 2011_09_30_drive_0034_sync 0000001189
+2011_09_30 2011_09_30_drive_0034_sync 0000001190
+2011_09_30 2011_09_30_drive_0034_sync 0000001191
+2011_09_30 2011_09_30_drive_0034_sync 0000001192
+2011_09_30 2011_09_30_drive_0034_sync 0000001193
+2011_09_30 2011_09_30_drive_0034_sync 0000001194
+2011_09_30 2011_09_30_drive_0034_sync 0000001195
+2011_09_30 2011_09_30_drive_0034_sync 0000001196
+2011_09_30 2011_09_30_drive_0034_sync 0000001197
+2011_09_30 2011_09_30_drive_0034_sync 0000001198
+2011_09_30 2011_09_30_drive_0034_sync 0000001199
+2011_09_30 2011_09_30_drive_0034_sync 0000001200
+2011_09_30 2011_09_30_drive_0034_sync 0000001201
+2011_09_30 2011_09_30_drive_0034_sync 0000001202
+2011_09_30 2011_09_30_drive_0034_sync 0000001203
+2011_09_30 2011_09_30_drive_0034_sync 0000001204
+2011_09_30 2011_09_30_drive_0034_sync 0000001205
+2011_09_30 2011_09_30_drive_0034_sync 0000001206
+2011_09_30 2011_09_30_drive_0034_sync 0000001207
+2011_09_30 2011_09_30_drive_0034_sync 0000001208
+2011_09_30 2011_09_30_drive_0034_sync 0000001209
+2011_09_30 2011_09_30_drive_0034_sync 0000001210
+2011_09_30 2011_09_30_drive_0034_sync 0000001211
+2011_09_30 2011_09_30_drive_0034_sync 0000001212
+2011_09_30 2011_09_30_drive_0034_sync 0000001213
+2011_09_30 2011_09_30_drive_0034_sync 0000001214
+2011_09_30 2011_09_30_drive_0034_sync 0000001215
+2011_09_30 2011_09_30_drive_0034_sync 0000001216
+2011_09_30 2011_09_30_drive_0034_sync 0000001217
+2011_09_30 2011_09_30_drive_0034_sync 0000001218
+2011_09_30 2011_09_30_drive_0034_sync 0000001219
+2011_09_30 2011_09_30_drive_0034_sync 0000001220
+2011_09_30 2011_09_30_drive_0034_sync 0000001221
+2011_09_30 2011_09_30_drive_0034_sync 0000001222
+2011_09_30 2011_09_30_drive_0072_sync 0000000000
+2011_09_30 2011_09_30_drive_0072_sync 0000000001
+2011_09_30 2011_09_30_drive_0072_sync 0000000002
+2011_09_30 2011_09_30_drive_0072_sync 0000000003
+2011_10_03 2011_10_03_drive_0027_sync 0000000534
+2011_10_03 2011_10_03_drive_0027_sync 0000000535
+2011_10_03 2011_10_03_drive_0027_sync 0000000536
+2011_10_03 2011_10_03_drive_0027_sync 0000000538
+2011_10_03 2011_10_03_drive_0027_sync 0000000539
+2011_10_03 2011_10_03_drive_0027_sync 0000000540
+2011_10_03 2011_10_03_drive_0027_sync 0000000541
+2011_10_03 2011_10_03_drive_0027_sync 0000000542
+2011_10_03 2011_10_03_drive_0027_sync 0000000543
+2011_10_03 2011_10_03_drive_0027_sync 0000000544
+2011_10_03 2011_10_03_drive_0027_sync 0000000545
+2011_10_03 2011_10_03_drive_0027_sync 0000000546
+2011_10_03 2011_10_03_drive_0027_sync 0000000547
+2011_10_03 2011_10_03_drive_0027_sync 0000000548
+2011_10_03 2011_10_03_drive_0027_sync 0000000549
+2011_10_03 2011_10_03_drive_0027_sync 0000000550
+2011_10_03 2011_10_03_drive_0027_sync 0000000551
+2011_10_03 2011_10_03_drive_0027_sync 0000000552
+2011_10_03 2011_10_03_drive_0027_sync 0000000553
+2011_10_03 2011_10_03_drive_0027_sync 0000000554
+2011_10_03 2011_10_03_drive_0027_sync 0000000555
+2011_10_03 2011_10_03_drive_0027_sync 0000000556
+2011_10_03 2011_10_03_drive_0027_sync 0000000557
+2011_10_03 2011_10_03_drive_0027_sync 0000000561
+2011_10_03 2011_10_03_drive_0027_sync 0000000562
+2011_10_03 2011_10_03_drive_0042_sync 0000000234
+2011_10_03 2011_10_03_drive_0042_sync 0000000237
+2011_10_03 2011_10_03_drive_0042_sync 0000000266
+2011_10_03 2011_10_03_drive_0042_sync 0000000270
+2011_10_03 2011_10_03_drive_0042_sync 0000000271
+2011_10_03 2011_10_03_drive_0042_sync 0000000272
+2011_10_03 2011_10_03_drive_0042_sync 0000000273
+2011_10_03 2011_10_03_drive_0042_sync 0000000274
+2011_10_03 2011_10_03_drive_0042_sync 0000000275
+2011_10_03 2011_10_03_drive_0042_sync 0000000276
+2011_10_03 2011_10_03_drive_0042_sync 0000000278
+2011_10_03 2011_10_03_drive_0042_sync 0000000279
+2011_10_03 2011_10_03_drive_0042_sync 0000000281
+2011_10_03 2011_10_03_drive_0042_sync 0000000282
+2011_10_03 2011_10_03_drive_0042_sync 0000000283
+2011_10_03 2011_10_03_drive_0042_sync 0000000284
+2011_10_03 2011_10_03_drive_0042_sync 0000000285
+2011_10_03 2011_10_03_drive_0042_sync 0000000286
+2011_10_03 2011_10_03_drive_0042_sync 0000000287
+2011_10_03 2011_10_03_drive_0042_sync 0000000288
+2011_10_03 2011_10_03_drive_0042_sync 0000000289
+2011_10_03 2011_10_03_drive_0042_sync 0000000290
+2011_10_03 2011_10_03_drive_0042_sync 0000000291
+2011_10_03 2011_10_03_drive_0042_sync 0000000292
+2011_10_03 2011_10_03_drive_0042_sync 0000000293
+2011_10_03 2011_10_03_drive_0042_sync 0000000294
+2011_10_03 2011_10_03_drive_0042_sync 0000000295
+2011_10_03 2011_10_03_drive_0042_sync 0000000299
+2011_10_03 2011_10_03_drive_0042_sync 0000000300
+2011_10_03 2011_10_03_drive_0042_sync 0000000301
+2011_10_03 2011_10_03_drive_0042_sync 0000000306
+2011_10_03 2011_10_03_drive_0042_sync 0000000307
+2011_10_03 2011_10_03_drive_0042_sync 0000000308
+2011_10_03 2011_10_03_drive_0042_sync 0000000309
+2011_10_03 2011_10_03_drive_0042_sync 0000000312
+2011_10_03 2011_10_03_drive_0042_sync 0000000314
+2011_10_03 2011_10_03_drive_0042_sync 0000000315
+2011_10_03 2011_10_03_drive_0042_sync 0000000316
+2011_10_03 2011_10_03_drive_0042_sync 0000000317
+2011_10_03 2011_10_03_drive_0042_sync 0000000319
+2011_10_03 2011_10_03_drive_0042_sync 0000000320
+2011_10_03 2011_10_03_drive_0042_sync 0000000321
+2011_10_03 2011_10_03_drive_0042_sync 0000000323
+2011_10_03 2011_10_03_drive_0042_sync 0000000326
+2011_10_03 2011_10_03_drive_0042_sync 0000000327
+2011_10_03 2011_10_03_drive_0042_sync 0000000389
+2011_10_03 2011_10_03_drive_0042_sync 0000000528
+2011_10_03 2011_10_03_drive_0042_sync 0000000533
+2011_10_03 2011_10_03_drive_0042_sync 0000000534
+2011_10_03 2011_10_03_drive_0042_sync 0000000535
+2011_10_03 2011_10_03_drive_0042_sync 0000000771
+2011_10_03 2011_10_03_drive_0042_sync 0000000812
+2011_10_03 2011_10_03_drive_0042_sync 0000000824
+2011_10_03 2011_10_03_drive_0042_sync 0000000825
+2011_10_03 2011_10_03_drive_0042_sync 0000001086
+2011_10_03 2011_10_03_drive_0042_sync 0000001088
+2011_10_03 2011_10_03_drive_0042_sync 0000001089
+2011_10_03 2011_10_03_drive_0042_sync 0000001090
+2011_10_03 2011_10_03_drive_0042_sync 0000001091
+2011_10_03 2011_10_03_drive_0042_sync 0000001094
+2011_10_03 2011_10_03_drive_0042_sync 0000001096
+2011_10_03 2011_10_03_drive_0042_sync 0000001097
+2011_10_03 2011_10_03_drive_0042_sync 0000001098
+2011_10_03 2011_10_03_drive_0042_sync 0000001156
+2011_10_03 2011_10_03_drive_0047_sync 0000000014
+2011_10_03 2011_10_03_drive_0047_sync 0000000015
+2011_10_03 2011_10_03_drive_0047_sync 0000000016
+2011_10_03 2011_10_03_drive_0047_sync 0000000017
+2011_10_03 2011_10_03_drive_0047_sync 0000000018
+2011_10_03 2011_10_03_drive_0047_sync 0000000019
+2011_10_03 2011_10_03_drive_0047_sync 0000000020
+2011_10_03 2011_10_03_drive_0047_sync 0000000021
+2011_10_03 2011_10_03_drive_0047_sync 0000000022
+2011_10_03 2011_10_03_drive_0047_sync 0000000023
+2011_10_03 2011_10_03_drive_0047_sync 0000000024
+2011_10_03 2011_10_03_drive_0047_sync 0000000025
+2011_10_03 2011_10_03_drive_0047_sync 0000000026
+2011_10_03 2011_10_03_drive_0047_sync 0000000027
+2011_10_03 2011_10_03_drive_0047_sync 0000000028
+2011_10_03 2011_10_03_drive_0047_sync 0000000029
+2011_10_03 2011_10_03_drive_0047_sync 0000000030
+2011_10_03 2011_10_03_drive_0047_sync 0000000031
+2011_10_03 2011_10_03_drive_0047_sync 0000000032
+2011_10_03 2011_10_03_drive_0047_sync 0000000033
+2011_10_03 2011_10_03_drive_0047_sync 0000000034
+2011_10_03 2011_10_03_drive_0047_sync 0000000035
+2011_10_03 2011_10_03_drive_0047_sync 0000000036
+2011_10_03 2011_10_03_drive_0047_sync 0000000037
+2011_10_03 2011_10_03_drive_0047_sync 0000000038
+2011_10_03 2011_10_03_drive_0047_sync 0000000039
+2011_10_03 2011_10_03_drive_0047_sync 0000000040
+2011_10_03 2011_10_03_drive_0047_sync 0000000138
+2011_10_03 2011_10_03_drive_0047_sync 0000000141
+2011_10_03 2011_10_03_drive_0047_sync 0000000142
+2011_10_03 2011_10_03_drive_0047_sync 0000000149
+2011_10_03 2011_10_03_drive_0047_sync 0000000150
+2011_10_03 2011_10_03_drive_0047_sync 0000000151
+2011_10_03 2011_10_03_drive_0047_sync 0000000152
+2011_10_03 2011_10_03_drive_0047_sync 0000000781
+2011_10_03 2011_10_03_drive_0047_sync 0000000782
+2011_10_03 2011_10_03_drive_0047_sync 0000000783
+2011_10_03 2011_10_03_drive_0047_sync 0000000784
+2011_10_03 2011_10_03_drive_0047_sync 0000000785
+2011_10_03 2011_10_03_drive_0047_sync 0000000786
+2011_10_03 2011_10_03_drive_0047_sync 0000000787
+2011_10_03 2011_10_03_drive_0047_sync 0000000788
+2011_10_03 2011_10_03_drive_0047_sync 0000000789
+2011_10_03 2011_10_03_drive_0047_sync 0000000790
+2011_10_03 2011_10_03_drive_0047_sync 0000000791
+2011_10_03 2011_10_03_drive_0047_sync 0000000792
+2011_10_03 2011_10_03_drive_0047_sync 0000000793
+2011_10_03 2011_10_03_drive_0047_sync 0000000794
+2011_10_03 2011_10_03_drive_0047_sync 0000000795
+2011_10_03 2011_10_03_drive_0047_sync 0000000796
+2011_10_03 2011_10_03_drive_0047_sync 0000000797
+2011_10_03 2011_10_03_drive_0047_sync 0000000798
+2011_10_03 2011_10_03_drive_0047_sync 0000000799
+2011_10_03 2011_10_03_drive_0047_sync 0000000800
+2011_10_03 2011_10_03_drive_0047_sync 0000000801
+2011_10_03 2011_10_03_drive_0047_sync 0000000802
+2011_10_03 2011_10_03_drive_0047_sync 0000000803
+2011_10_03 2011_10_03_drive_0047_sync 0000000804
+2011_10_03 2011_10_03_drive_0047_sync 0000000805
+2011_10_03 2011_10_03_drive_0047_sync 0000000806
+2011_10_03 2011_10_03_drive_0047_sync 0000000807
+2011_10_03 2011_10_03_drive_0047_sync 0000000808
+2011_10_03 2011_10_03_drive_0047_sync 0000000809
+2011_10_03 2011_10_03_drive_0047_sync 0000000810
+2011_10_03 2011_10_03_drive_0047_sync 0000000811
+2011_10_03 2011_10_03_drive_0047_sync 0000000812
+2011_10_03 2011_10_03_drive_0047_sync 0000000813
+2011_10_03 2011_10_03_drive_0047_sync 0000000814
+2011_10_03 2011_10_03_drive_0047_sync 0000000815
+2011_10_03 2011_10_03_drive_0047_sync 0000000816
+2011_10_03 2011_10_03_drive_0047_sync 0000000817
+2011_10_03 2011_10_03_drive_0047_sync 0000000818
+2011_10_03 2011_10_03_drive_0047_sync 0000000819
+2011_10_03 2011_10_03_drive_0047_sync 0000000820
+2011_10_03 2011_10_03_drive_0047_sync 0000000821
+2011_10_03 2011_10_03_drive_0047_sync 0000000822
+2011_10_03 2011_10_03_drive_0047_sync 0000000823
+2011_10_03 2011_10_03_drive_0047_sync 0000000824
+2011_10_03 2011_10_03_drive_0047_sync 0000000825
+2011_10_03 2011_10_03_drive_0047_sync 0000000826
+2011_10_03 2011_10_03_drive_0047_sync 0000000827
+2011_10_03 2011_10_03_drive_0047_sync 0000000828
+2011_10_03 2011_10_03_drive_0047_sync 0000000829
+2011_10_03 2011_10_03_drive_0047_sync 0000000830
+2011_10_03 2011_10_03_drive_0047_sync 0000000831
+2011_10_03 2011_10_03_drive_0047_sync 0000000832
+2011_10_03 2011_10_03_drive_0047_sync 0000000833
+2011_10_03 2011_10_03_drive_0047_sync 0000000834
+2011_10_03 2011_10_03_drive_0047_sync 0000000835
+2011_10_03 2011_10_03_drive_0058_sync 0000000000
+2011_10_03 2011_10_03_drive_0058_sync 0000000001
+2011_10_03 2011_10_03_drive_0058_sync 0000000002
+2011_10_03 2011_10_03_drive_0058_sync 0000000003
+2011_10_03 2011_10_03_drive_0058_sync 0000000004
+2011_10_03 2011_10_03_drive_0058_sync 0000000005
+2011_10_03 2011_10_03_drive_0058_sync 0000000006
+2011_10_03 2011_10_03_drive_0058_sync 0000000007
+2011_10_03 2011_10_03_drive_0058_sync 0000000008
+2011_10_03 2011_10_03_drive_0058_sync 0000000009
+2011_10_03 2011_10_03_drive_0058_sync 0000000010
+2011_10_03 2011_10_03_drive_0058_sync 0000000011
+2011_10_03 2011_10_03_drive_0058_sync 0000000012
+2011_10_03 2011_10_03_drive_0058_sync 0000000013
+2011_10_03 2011_10_03_drive_0058_sync 0000000014
+2011_10_03 2011_10_03_drive_0058_sync 0000000015
+2011_10_03 2011_10_03_drive_0058_sync 0000000016
+2011_10_03 2011_10_03_drive_0058_sync 0000000017
+2011_10_03 2011_10_03_drive_0058_sync 0000000018
+2011_10_03 2011_10_03_drive_0058_sync 0000000019
+2011_10_03 2011_10_03_drive_0058_sync 0000000020
+2011_10_03 2011_10_03_drive_0058_sync 0000000021
+2011_10_03 2011_10_03_drive_0058_sync 0000000022
+2011_10_03 2011_10_03_drive_0058_sync 0000000023
+2011_10_03 2011_10_03_drive_0058_sync 0000000024
+2011_10_03 2011_10_03_drive_0058_sync 0000000025
+2011_10_03 2011_10_03_drive_0058_sync 0000000026
+2011_10_03 2011_10_03_drive_0058_sync 0000000027
diff --git a/data/test_scenes.txt b/data/test_scenes.txt
new file mode 100644
index 0000000..36f5227
--- /dev/null
+++ b/data/test_scenes.txt
@@ -0,0 +1,28 @@
+2011_09_26_drive_0117
+2011_09_28_drive_0002
+2011_09_26_drive_0052
+2011_09_30_drive_0016
+2011_09_26_drive_0059
+2011_09_26_drive_0027
+2011_09_26_drive_0020
+2011_09_26_drive_0009
+2011_09_26_drive_0013
+2011_09_26_drive_0101
+2011_09_26_drive_0046
+2011_09_26_drive_0029
+2011_09_26_drive_0064
+2011_09_26_drive_0048
+2011_10_03_drive_0027
+2011_09_26_drive_0002
+2011_09_26_drive_0036
+2011_09_29_drive_0071
+2011_10_03_drive_0047
+2011_09_30_drive_0027
+2011_09_26_drive_0086
+2011_09_26_drive_0084
+2011_09_26_drive_0096
+2011_09_30_drive_0018
+2011_09_26_drive_0106
+2011_09_26_drive_0056
+2011_09_26_drive_0023
+2011_09_26_drive_0093
diff --git a/datasets/__init__.py b/datasets/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/datasets/general_sequence_folders.py b/datasets/general_sequence_folders.py
new file mode 100644
index 0000000..1fcb4d9
--- /dev/null
+++ b/datasets/general_sequence_folders.py
@@ -0,0 +1,63 @@
+import torch.utils.data as data
+import numpy as np
+from scipy.misc import imread
+from path import Path
+import random
+
+def crawl_folders(folders_list, sequence_length):
+ sequence_set = []
+ demi_length = (sequence_length-1)//2
+ for folder in folders_list:
+ #intrinsics = np.genfromtxt(folder/'cam.txt', delimiter=',').astype(np.float32).reshape((3, 3))
+ imgs = sorted(folder.files('*.jpg'))
+ if len(imgs) < sequence_length:
+ continue
+ for i in range(demi_length, len(imgs)-demi_length):
+ sample = {'tgt': imgs[i], 'ref_imgs': []}
+ for j in range(-demi_length, demi_length + 1):
+ if j != 0:
+ sample['ref_imgs'].append(imgs[i+j])
+ sequence_set.append(sample)
+ random.shuffle(sequence_set)
+ return sequence_set
+
+
+def load_as_float(path):
+ return imread(path).astype(np.float32)
+
+
+class SequenceFolder(data.Dataset):
+ """A sequence data loader where the files are arranged in this way:
+ root/scene_1/0000000.jpg
+ root/scene_1/0000001.jpg
+ ..
+ root/scene_1/cam.txt
+ root/scene_2/0000000.jpg
+ .
+
+ transform functions must take in a list a images and a numpy array (usually intrinsics matrix)
+ """
+
+ def __init__(self, root, seed=None, train=True, sequence_length=3, transform=None, target_transform=None):
+ np.random.seed(seed)
+ random.seed(seed)
+ self.root = Path(root)
+ #scene_list_path = self.root/'train.txt' if train else self.root/'val.txt'
+ self.scenes = self.root.dirs()
+ self.samples = crawl_folders(self.scenes, sequence_length)
+ self.transform = transform
+
+ def __getitem__(self, index):
+ sample = self.samples[index]
+ tgt_img = load_as_float(sample['tgt'])
+ ref_imgs = [load_as_float(ref_img) for ref_img in sample['ref_imgs']]
+ if self.transform is not None:
+ imgs, intrinsics = self.transform([tgt_img] + ref_imgs, np.copy(sample['intrinsics']))
+ tgt_img = imgs[0]
+ ref_imgs = imgs[1:]
+ else:
+ intrinsics = np.copy(sample['intrinsics'])
+ return tgt_img, ref_imgs, intrinsics, np.linalg.inv(intrinsics)
+
+ def __len__(self):
+ return len(self.samples)
diff --git a/datasets/sequence_folders.py b/datasets/sequence_folders.py
new file mode 100644
index 0000000..7c896f7
--- /dev/null
+++ b/datasets/sequence_folders.py
@@ -0,0 +1,64 @@
+import torch.utils.data as data
+import numpy as np
+from scipy.misc import imread
+from path import Path
+import random
+
+
+def crawl_folders(folders_list, sequence_length):
+ sequence_set = []
+ demi_length = (sequence_length-1)//2
+ for folder in folders_list:
+ intrinsics = np.genfromtxt(folder/'cam.txt', delimiter=',').astype(np.float32).reshape((3, 3))
+ imgs = sorted(folder.files('*.jpg'))
+ if len(imgs) < sequence_length:
+ continue
+ for i in range(demi_length, len(imgs)-demi_length):
+ sample = {'intrinsics': intrinsics, 'tgt': imgs[i], 'ref_imgs': []}
+ for j in range(-demi_length, demi_length + 1):
+ if j != 0:
+ sample['ref_imgs'].append(imgs[i+j])
+ sequence_set.append(sample)
+ random.shuffle(sequence_set)
+ return sequence_set
+
+
+def load_as_float(path):
+ return imread(path).astype(np.float32)
+
+
+class SequenceFolder(data.Dataset):
+ """A sequence data loader where the files are arranged in this way:
+ root/scene_1/0000000.jpg
+ root/scene_1/0000001.jpg
+ ..
+ root/scene_1/cam.txt
+ root/scene_2/0000000.jpg
+ .
+
+ transform functions must take in a list a images and a numpy array (usually intrinsics matrix)
+ """
+
+ def __init__(self, root, seed=None, train=True, sequence_length=3, transform=None, target_transform=None):
+ np.random.seed(seed)
+ random.seed(seed)
+ self.root = Path(root)
+ scene_list_path = self.root/'train.txt' if train else self.root/'val.txt'
+ self.scenes = [self.root/folder[:-1] for folder in open(scene_list_path)]
+ self.samples = crawl_folders(self.scenes, sequence_length)
+ self.transform = transform
+
+ def __getitem__(self, index):
+ sample = self.samples[index]
+ tgt_img = load_as_float(sample['tgt'])
+ ref_imgs = [load_as_float(ref_img) for ref_img in sample['ref_imgs']]
+ if self.transform is not None:
+ imgs, intrinsics = self.transform([tgt_img] + ref_imgs, np.copy(sample['intrinsics']))
+ tgt_img = imgs[0]
+ ref_imgs = imgs[1:]
+ else:
+ intrinsics = np.copy(sample['intrinsics'])
+ return tgt_img, ref_imgs, intrinsics, np.linalg.inv(intrinsics)
+
+ def __len__(self):
+ return len(self.samples)
diff --git a/datasets/stacked_sequence_folders.py b/datasets/stacked_sequence_folders.py
new file mode 100644
index 0000000..917f7d8
--- /dev/null
+++ b/datasets/stacked_sequence_folders.py
@@ -0,0 +1,67 @@
+import torch.utils.data as data
+import numpy as np
+from scipy.misc import imread
+from path import Path
+import random
+
+
+def crawl_folders(folders_list, sequence_length):
+ sequence_set = []
+ demi_length = (sequence_length-1)//2
+ for folder in folders_list:
+ intrinsics = [np.genfromtxt(cam_file, delimiter=',').astype(np.float32).reshape((3, 3)) for cam_file in sorted(folder.files('*_cam.txt'))]
+ imgs = sorted(folder.files('*.jpg'))
+ for i in range(len(imgs)):
+ sample = {'intrinsics': intrinsics[i], 'img_stack': imgs[i]}
+ sequence_set.append(sample)
+ random.shuffle(sequence_set)
+ return sequence_set
+
+
+def load_as_float(path, sequence_length):
+ stack = imread(path).astype(np.float32)
+ h,w,_ = stack.shape
+ w_img = int(w/(sequence_length))
+ imgs = [stack[:,i*w_img:(i+1)*w_img] for i in range(sequence_length)]
+ tgt_index = sequence_length//2
+ return([imgs[tgt_index]] + imgs[:tgt_index] + imgs[tgt_index+1:])
+
+
+class SequenceFolder(data.Dataset):
+ """A sequence data loader where the images are arranged in this way:
+ root/scene_1/0000000.jpg
+ root/scene_1/0000000_cam.txt
+ root/scene_1/0000001.jpg
+ root/scene_1/0000001_cam.txt
+ .
+ root/scene_2/0000000.jpg
+ root/scene_2/0000000_cam.txt
+ """
+
+ def __init__(self, root, seed=None, train=True, sequence_length=3, transform=None, target_transform=None):
+ np.random.seed(seed)
+ random.seed(seed)
+ self.root = Path(root)
+ self.samples = []
+ frames_list_path = self.root/'train.txt' if train else self.root/'val.txt'
+ self.scenes = self.root.dirs()
+ self.sequence_length = sequence_length
+ for frame_path in open(frames_list_path):
+ a,b = frame_path[:-1].split(' ')
+ base_path = (self.root/a)/b
+ intrinsics = np.genfromtxt(base_path+'_cam.txt', delimiter=',').astype(np.float32).reshape((3, 3))
+ sample = {'intrinsics': intrinsics, 'img_stack': base_path+'.jpg'}
+ self.samples.append(sample)
+ self.transform = transform
+
+ def __getitem__(self, index):
+ sample = self.samples[index]
+ imgs = load_as_float(sample['img_stack'], self.sequence_length)
+ if self.transform is not None:
+ imgs, intrinsics = self.transform(imgs, np.copy(sample['intrinsics']))
+ else:
+ intrinsics = sample['intrinsics']
+ return imgs[0], imgs[1:], intrinsics, np.linalg.inv(intrinsics)
+
+ def __len__(self):
+ return len(self.samples)
diff --git a/datasets/validation_flow.py b/datasets/validation_flow.py
new file mode 100644
index 0000000..6ec10a3
--- /dev/null
+++ b/datasets/validation_flow.py
@@ -0,0 +1,225 @@
+# Author: Anurag Ranjan
+# Copyright (c) 2019, Anurag Ranjan
+# All rights reserved.
+# based on github.com/ClementPinard/SfMLearner-Pytorch
+
+import torch.utils.data as data
+import numpy as np
+from scipy.misc import imread
+from PIL import Image
+from path import Path
+from flowutils import flow_io
+import torch
+import os
+from skimage import transform as sktransform
+
+def crawl_folders(folders_list):
+ imgs = []
+ depth = []
+ for folder in folders_list:
+ current_imgs = sorted(folder.files('*.jpg'))
+ current_depth = []
+ for img in current_imgs:
+ d = img.dirname()/(img.name[:-4] + '.npy')
+ assert(d.isfile()), "depth file {} not found".format(str(d))
+ depth.append(d)
+ imgs.extend(current_imgs)
+ depth.extend(current_depth)
+ return imgs, depth
+
+
+def load_as_float(path):
+ return imread(path).astype(np.float32)
+
+def get_intrinsics(calib_file, cid='02'):
+ #print(zoom_x, zoom_y)
+ filedata = read_raw_calib_file(calib_file)
+ P_rect = np.reshape(filedata['P_rect_' + cid], (3, 4))
+ return P_rect[:,:3]
+
+
+def read_raw_calib_file(filepath):
+ # From https://github.com/utiasSTARS/pykitti/blob/master/pykitti/utils.py
+ """Read in a calibration file and parse into a dictionary."""
+ data = {}
+
+ with open(filepath, 'r') as f:
+ for line in f.readlines():
+ key, value = line.split(':', 1)
+ # The only non-float values in these files are dates, which
+ # we don't care about anyway
+ try:
+ data[key] = np.array([float(x) for x in value.split()])
+ except ValueError:
+ pass
+ return data
+
+class KITTI2015Test(data.Dataset):
+ """
+ Kitti 2015 flow loader
+ transform functions must take in a list a images and a numpy array which can be None
+ """
+
+ def __init__(self, root, sequence_length, transform=None, N=200, phase='testing'):
+ self.root = Path(root)
+ self.sequence_length = sequence_length
+ self.N = N
+ self.transform = transform
+ self.phase = phase
+ seq_ids = list(range(-int(sequence_length/2), int(sequence_length/2)+1))
+ seq_ids.remove(0)
+ self.seq_ids = [x+10 for x in seq_ids]
+
+ def __getitem__(self, index):
+ tgt_img_path = self.root.joinpath('data_scene_flow_multiview', self.phase, 'image_2',str(index).zfill(6)+'_10.png')
+ ref_img_paths = [self.root.joinpath('data_scene_flow_multiview', self.phase, 'image_2',str(index).zfill(6)+'_'+str(k).zfill(2)+'.png') for k in self.seq_ids]
+ cam_calib_path = self.root.joinpath('data_scene_flow_calib', self.phase, 'calib_cam_to_cam', str(index).zfill(6)+'.txt')
+
+ tgt_img_original = load_as_float(tgt_img_path)
+ tgt_img = load_as_float(tgt_img_path)
+ ref_imgs = [load_as_float(ref_img) for ref_img in ref_img_paths]
+ intrinsics = get_intrinsics(cam_calib_path).astype('float32')
+ tgt_img_original = torch.FloatTensor(tgt_img_original.transpose(2,0,1))
+
+ if self.transform is not None:
+ imgs, intrinsics = self.transform([tgt_img] + ref_imgs, np.copy(intrinsics))
+ tgt_img = imgs[0]
+ ref_imgs = imgs[1:]
+ else:
+ intrinsics = np.copy(intrinsics)
+ return tgt_img, ref_imgs, intrinsics, np.linalg.inv(intrinsics), tgt_img_original
+
+ def __len__(self):
+ return self.N
+
+class ValidationFlow(data.Dataset):
+ """
+ Kitti 2015 flow loader
+ transform functions must take in a list a images and a numpy array which can be None
+ """
+
+ def __init__(self, root, sequence_length, transform=None, N=200, phase='training', occ='flow_occ'):
+ self.root = Path(root)
+ self.sequence_length = sequence_length
+ self.N = N
+ self.transform = transform
+ self.phase = phase
+ seq_ids = list(range(-int(sequence_length/2), int(sequence_length/2)+1))
+ seq_ids.remove(0)
+ self.seq_ids = [x+10 for x in seq_ids]
+ self.occ = occ
+
+ def __getitem__(self, index):
+ tgt_img_path = self.root.joinpath('data_scene_flow_multiview', self.phase, 'image_2',str(index).zfill(6)+'_10.png')
+ ref_img_paths = [self.root.joinpath('data_scene_flow_multiview', self.phase, 'image_2',str(index).zfill(6)+'_'+str(k).zfill(2)+'.png') for k in self.seq_ids]
+ gt_flow_path = self.root.joinpath('data_scene_flow', self.phase, self.occ, str(index).zfill(6)+'_10.png')
+ cam_calib_path = self.root.joinpath('data_scene_flow_calib', self.phase, 'calib_cam_to_cam', str(index).zfill(6)+'.txt')
+ obj_map_path = self.root.joinpath('data_scene_flow', self.phase, 'obj_map', str(index).zfill(6)+'_10.png')
+
+ tgt_img = load_as_float(tgt_img_path)
+ ref_imgs = [load_as_float(ref_img) for ref_img in ref_img_paths]
+ if os.path.isfile(obj_map_path):
+ obj_map = load_as_float(obj_map_path)
+ else:
+ obj_map = np.ones((tgt_img.shape[0], tgt_img.shape[1]))
+ u,v,valid = flow_io.flow_read_png(gt_flow_path)
+ gtFlow = np.dstack((u,v,valid))
+ #gtFlow = scale_flow(np.dstack((u,v,valid)), h=self.flow_h, w=self.flow_w)
+ gtFlow = torch.FloatTensor(gtFlow.transpose(2,0,1))
+ intrinsics = get_intrinsics(cam_calib_path).astype('float32')
+
+ if self.transform is not None:
+ imgs, intrinsics = self.transform([tgt_img] + ref_imgs, np.copy(intrinsics))
+ tgt_img = imgs[0]
+ ref_imgs = imgs[1:]
+ else:
+ intrinsics = np.copy(intrinsics)
+ return tgt_img, ref_imgs, intrinsics, np.linalg.inv(intrinsics), gtFlow, obj_map
+
+ def __len__(self):
+ return self.N
+
+class ValidationMask(data.Dataset):
+ """
+ Kitti 2015 flow loader
+ transform functions must take in a list a images and a numpy array which can be None
+ """
+
+ def __init__(self, root, sequence_length, transform=None, N=200, phase='training'):
+ self.root = Path(root)
+ self.sequence_length = sequence_length
+ self.N = N
+ self.transform = transform
+ self.phase = phase
+ seq_ids = list(range(-int(sequence_length/2), int(sequence_length/2)+1))
+ seq_ids.remove(0)
+ self.seq_ids = [x+10 for x in seq_ids]
+
+ def __getitem__(self, index):
+ tgt_img_path = self.root.joinpath('data_scene_flow_multiview', self.phase, 'image_2',str(index).zfill(6)+'_10.png')
+ ref_img_paths = [self.root.joinpath('data_scene_flow_multiview', self.phase, 'image_2',str(index).zfill(6)+'_'+str(k).zfill(2)+'.png') for k in self.seq_ids]
+ gt_flow_path = self.root.joinpath('data_scene_flow', self.phase, 'flow_occ', str(index).zfill(6)+'_10.png')
+ cam_calib_path = self.root.joinpath('data_scene_flow_calib', self.phase, 'calib_cam_to_cam', str(index).zfill(6)+'.txt')
+ obj_map_path = self.root.joinpath('data_scene_flow', self.phase, 'obj_map', str(index).zfill(6)+'_10.png')
+ semantic_map_path = self.root.joinpath('semantic_labels', self.phase, 'semantic', str(index).zfill(6)+'_10.png')
+
+ tgt_img = load_as_float(tgt_img_path)
+ ref_imgs = [load_as_float(ref_img) for ref_img in ref_img_paths]
+ obj_map = torch.LongTensor(np.array(Image.open(obj_map_path)))
+ semantic_map = torch.LongTensor(np.array(Image.open(semantic_map_path)))
+ u,v,valid = flow_io.flow_read_png(gt_flow_path)
+ gtFlow = np.dstack((u,v,valid))
+ #gtFlow = scale_flow(np.dstack((u,v,valid)), h=self.flow_h, w=self.flow_w)
+ gtFlow = torch.FloatTensor(gtFlow.transpose(2,0,1))
+ intrinsics = get_intrinsics(cam_calib_path).astype('float32')
+
+ if self.transform is not None:
+ imgs, intrinsics = self.transform([tgt_img] + ref_imgs, np.copy(intrinsics))
+ tgt_img = imgs[0]
+ ref_imgs = imgs[1:]
+ else:
+ intrinsics = np.copy(intrinsics)
+ return tgt_img, ref_imgs, intrinsics, np.linalg.inv(intrinsics), gtFlow, obj_map, semantic_map
+
+ def __len__(self):
+ return self.N
+
+class ValidationFlowKitti2012(data.Dataset):
+ """
+ Kitti 2012 flow loader
+ transform functions must take in a list a images and a numpy array which can be None
+ """
+
+ def __init__(self, root, sequence_length=5, transform=None, N=194, flow_w=1024, flow_h=384, phase='training'):
+ self.root = Path(root)
+ self.sequence_length = sequence_length
+ self.N = N
+ self.transform = transform
+ self.phase = phase
+ self.flow_h = flow_h
+ self.flow_w = flow_w
+
+ def __getitem__(self, index):
+ tgt_img_path = self.root.joinpath('data_stereo_flow', self.phase, 'colored_0',str(index).zfill(6)+'_10.png')
+ ref_img_path = self.root.joinpath('data_stereo_flow', self.phase, 'colored_0',str(index).zfill(6)+'_11.png')
+ gt_flow_path = self.root.joinpath('data_stereo_flow', self.phase, 'flow_occ', str(index).zfill(6)+'_10.png')
+
+ tgt_img = load_as_float(tgt_img_path)
+ ref_img = load_as_float(ref_img_path)
+
+ u,v,valid = flow_io.flow_read_png(gt_flow_path)
+ #gtFlow = scale_flow(np.dstack((u,v,valid)), h=self.flow_h, w=self.flow_w)
+ gtFlow = np.dstack((u,v,valid))
+ gtFlow = torch.FloatTensor(gtFlow.transpose(2,0,1))
+
+ intrinsics = np.eye(3)
+ if self.transform is not None:
+ imgs, intrinsics = self.transform([tgt_img] + [ref_img], np.copy(intrinsics))
+ tgt_img = imgs[0]
+ ref_img = imgs[1]
+ else:
+ intrinsics = np.copy(intrinsics)
+ return tgt_img, ref_img, intrinsics, np.linalg.inv(intrinsics), gtFlow
+
+ def __len__(self):
+ return self.N
diff --git a/datasets/validation_folders.py b/datasets/validation_folders.py
new file mode 100644
index 0000000..07321a3
--- /dev/null
+++ b/datasets/validation_folders.py
@@ -0,0 +1,108 @@
+import torch.utils.data as data
+import numpy as np
+from scipy.misc import imread
+from path import Path
+import torch
+
+
+def crawl_folders(folders_list):
+ imgs = []
+ depth = []
+ for folder in folders_list:
+ current_imgs = sorted(folder.files('*.jpg'))
+ current_depth = []
+ for img in current_imgs:
+ d = img.dirname()/(img.name[:-4] + '.npy')
+ assert(d.isfile()), "depth file {} not found".format(str(d))
+ depth.append(d)
+ imgs.extend(current_imgs)
+ depth.extend(current_depth)
+ return imgs, depth
+
+def crawl_folders_seq(folders_list, sequence_length):
+ imgs1 = []
+ imgs2 = []
+ depth = []
+ for folder in folders_list:
+ current_imgs = sorted(folder.files('*.jpg'))
+ current_imgs1 = current_imgs[:-1]
+ current_imgs2 = current_imgs[1:]
+ current_depth = []
+ for (img1,img2) in zip(current_imgs1, current_imgs2):
+ d = img1.dirname()/(img1.name[:-4] + '.npy')
+ assert(d.isfile()), "depth file {} not found".format(str(d))
+ depth.append(d)
+ imgs1.extend(current_imgs1)
+ imgs2.extend(current_imgs2)
+ depth.extend(current_depth)
+ return imgs1, imgs2, depth
+
+
+def load_as_float(path):
+ return imread(path).astype(np.float32)
+
+
+class ValidationSet(data.Dataset):
+ """A sequence data loader where the files are arranged in this way:
+ root/scene_1/0000000.jpg
+ root/scene_1/0000000.npy
+ root/scene_1/0000001.jpg
+ root/scene_1/0000001.npy
+ ..
+ root/scene_2/0000000.jpg
+ root/scene_2/0000000.npy
+ .
+
+ transform functions must take in a list a images and a numpy array which can be None
+ """
+
+ def __init__(self, root, transform=None):
+ self.root = Path(root)
+ scene_list_path = self.root/'val.txt'
+ self.scenes = [self.root/folder[:-1] for folder in open(scene_list_path)]
+ self.imgs, self.depth = crawl_folders(self.scenes)
+ self.transform = transform
+
+ def __getitem__(self, index):
+ img = load_as_float(self.imgs[index])
+ depth = np.load(self.depth[index]).astype(np.float32)
+ if self.transform is not None:
+ img, _ = self.transform([img], None)
+ img = img[0]
+ return img, depth
+
+ def __len__(self):
+ return len(self.imgs)
+
+class ValidationSetSeq(data.Dataset):
+ """A sequence data loader where the files are arranged in this way:
+ root/scene_1/0000000.jpg
+ root/scene_1/0000000.npy
+ root/scene_1/0000001.jpg
+ root/scene_1/0000001.npy
+ ..
+ root/scene_2/0000000.jpg
+ root/scene_2/0000000.npy
+ .
+
+ transform functions must take in a list a images and a numpy array which can be None
+ """
+
+ def __init__(self, root, transform=None):
+ self.root = Path(root)
+ scene_list_path = self.root/'val.txt'
+ self.scenes = [self.root/folder[:-1] for folder in open(scene_list_path)]
+ self.imgs1, self.imgs2, self.depth = crawl_folders_seq(self.scenes)
+ self.transform = transform
+
+ def __getitem__(self, index):
+ img1 = load_as_float(self.imgs1[index])
+ img2 = load_as_float(self.imgs2[index])
+ depth = np.load(self.depth[index]).astype(np.float32)
+ if self.transform is not None:
+ img, _ = self.transform([img1, img2], None)
+ img1, img2 = img[0], img[1]
+ return (img1, img2), depth
+
+ def __len__(self):
+ return len(self.imgs1)
diff --git a/evaluate_flow.py b/evaluate_flow.py
new file mode 100644
index 0000000..c3215d4
--- /dev/null
+++ b/evaluate_flow.py
@@ -0,0 +1,57 @@
+# Author: Anurag Ranjan
+# Copyright (c) 2019, Anurag Ranjan
+# All rights reserved.
+
+import argparse
+import os
+from tqdm import tqdm
+import numpy as np
+from path import Path
+from flowutils import flow_io
+from logger import AverageMeter
+epsilon = 1e-8
+parser = argparse.ArgumentParser(description='Benchmark optical flow predictions',
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+parser.add_argument('--output-dir', dest='output_dir', type=str, default=None, help='path to output directory')
+parser.add_argument('--gt-dir', dest='gt_dir', type=str, default=None, help='path to gt directory')
+parser.add_argument('-N', dest='N', type=int, default=200, help='number of samples')
+
+
+def main():
+ global args
+ args = parser.parse_args()
+
+ args.output_dir = Path(args.output_dir)
+ args.gt_dir = Path(args.gt_dir)
+
+ error_names = ['epe_total', 'outliers']
+ errors = AverageMeter(i=len(error_names))
+
+ for i in tqdm(range(args.N)):
+ gt_flow_path = args.gt_dir.joinpath(str(i).zfill(6)+'_10.png')
+ output_flow_path = args.output_dir.joinpath(str(i).zfill(6)+'_10.png')
+ u_gt,v_gt,valid_gt = flow_io.flow_read_png(gt_flow_path)
+ u_pred,v_pred,valid_pred = flow_io.flow_read_png(output_flow_path)
+
+ _errors = compute_err(u_gt, v_gt, valid_gt, u_pred, v_pred, valid_pred)
+ errors.update(_errors)
+
+
+ print("Results")
+ print("\t {:>10}, {:>10} ".format(*error_names))
+ print("Errors \t {:10.4f}, {:10.4f}".format(*errors.avg))
+
+def compute_err(u_gt, v_gt, valid_gt, u_pred, v_pred, valid_pred, tau=[3,0.05]):
+ epe = np.sqrt(np.power((u_gt - u_pred), 2) + np.power((v_gt - v_pred), 2))
+ epe = epe * valid_gt
+ aepe = epe.sum() / valid_gt.sum()
+ F_mag = np.sqrt(np.power(u_gt, 2)+ np.power(v_gt, 2))
+ E_0 = (epe > tau[0])#.type_as(epe)
+ E_1 = ((epe / (F_mag+epsilon) ) > tau[1])#.type_as(epe)
+ n_err = E_0 * E_1 * valid_gt
+ f_err = n_err.sum()/valid_gt.sum()
+ return [aepe, f_err]
+
+
+if __name__ == '__main__':
+ main()
diff --git a/flowutils/__init__.py b/flowutils/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/flowutils/flow_io.py b/flowutils/flow_io.py
new file mode 100755
index 0000000..aa91c98
--- /dev/null
+++ b/flowutils/flow_io.py
@@ -0,0 +1,150 @@
+#! /usr/bin/env python2
+
+"""
+I/O script to save and load the data coming with the MPI-Sintel low-level
+computer vision benchmark.
+
+For more details about the benchmark, please visit www.mpi-sintel.de
+
+CHANGELOG:
+v1.0 (2015/02/03): First release
+
+Copyright (c) 2015 Jonas Wulff
+Max Planck Institute for Intelligent Systems, Tuebingen, Germany
+
+"""
+
+# Requirements: Numpy as PIL/Pillow
+import numpy as np
+try:
+ import png
+ has_png = True
+except:
+ has_png = False
+ png=None
+
+
+
+# Check for endianness, based on Daniel Scharstein's optical flow code.
+# Using little-endian architecture, these two should be equal.
+TAG_FLOAT = 202021.25
+TAG_CHAR = 'PIEH'.encode()
+
+def flow_read(filename, return_validity=False):
+ """ Read optical flow from file, return (U,V) tuple.
+
+ Original code by Deqing Sun, adapted from Daniel Scharstein.
+ """
+ f = open(filename,'rb')
+ check = np.fromfile(f,dtype=np.float32,count=1)[0]
+ assert check == TAG_FLOAT, ' flow_read:: Wrong tag in flow file (should be: {0}, is: {1}). Big-endian machine? '.format(TAG_FLOAT,check)
+ width = np.fromfile(f,dtype=np.int32,count=1)[0]
+ height = np.fromfile(f,dtype=np.int32,count=1)[0]
+ size = width*height
+ assert width > 0 and height > 0 and size > 1 and size < 100000000, ' flow_read:: Wrong input size (width = {0}, height = {1}).'.format(width,height)
+ tmp = np.fromfile(f,dtype=np.float32,count=-1).reshape((height,width*2))
+ u = tmp[:,np.arange(width)*2]
+ v = tmp[:,np.arange(width)*2 + 1]
+
+ if return_validity:
+ valid = u<1e19
+ u[valid==0] = 0
+ v[valid==0] = 0
+ return u,v,valid
+ else:
+ return u,v
+
+def flow_write(filename,uv,v=None):
+ """ Write optical flow to file.
+
+ If v is None, uv is assumed to contain both u and v channels,
+ stacked in depth.
+
+ Original code by Deqing Sun, adapted from Daniel Scharstein.
+ """
+ nBands = 2
+
+ if v is None:
+ uv_ = np.array(uv)
+ assert(uv_.ndim==3)
+ if uv_.shape[0] == 2:
+ u = uv_[0,:,:]
+ v = uv_[1,:,:]
+ elif uv_.shape[2] == 2:
+ u = uv_[:,:,0]
+ v = uv_[:,:,1]
+ else:
+ raise UVError('Wrong format for flow input')
+ else:
+ u = uv
+
+ assert(u.shape == v.shape)
+ height,width = u.shape
+ f = open(filename,'wb')
+ # write the header
+ f.write(TAG_CHAR)
+ np.array(width).astype(np.int32).tofile(f)
+ np.array(height).astype(np.int32).tofile(f)
+ # arrange into matrix form
+ tmp = np.zeros((height, width*nBands))
+ tmp[:,np.arange(width)*2] = u
+ tmp[:,np.arange(width)*2 + 1] = v
+ tmp.astype(np.float32).tofile(f)
+ f.close()
+
+
+def flow_read_png(fpath):
+ """
+ Read KITTI optical flow, returns u,v,valid mask
+
+ """
+ if not has_png:
+ print('Error. Please install the PyPNG library')
+ return
+
+ R = png.Reader(fpath)
+ width,height,data,_ = R.asDirect()
+ # This only worked with python2.
+ #I = np.array(map(lambda x:x,data)).reshape((height,width,3))
+ I = np.array([x for x in data]).reshape((height,width,3))
+ u_ = I[:,:,0]
+ v_ = I[:,:,1]
+ valid = I[:,:,2]
+
+ u = (u_.astype('float64')-2**15)/64.0
+ v = (v_.astype('float64')-2**15)/64.0
+
+ return u,v,valid
+
+
+def flow_write_png(fpath,u,v,valid=None):
+ """
+ Write KITTI optical flow.
+
+ """
+ if not has_png:
+ print('Error. Please install the PyPNG library')
+ return
+
+
+ if valid==None:
+ valid_ = np.ones(u.shape,dtype='uint16')
+ else:
+ valid_ = valid.astype('uint16')
+
+
+ u = u.astype('float64')
+ v = v.astype('float64')
+
+ u_ = ((u*64.0)+2**15).astype('uint16')
+ v_ = ((v*64.0)+2**15).astype('uint16')
+
+ I = np.dstack((u_,v_,valid_))
+
+ W = png.Writer(width=u.shape[1],
+ height=u.shape[0],
+ bitdepth=16,
+ planes=3)
+
+ with open(fpath,'wb') as fil:
+ W.write(fil,I.reshape((-1,3*u.shape[1])))
diff --git a/flowutils/flow_viz.py b/flowutils/flow_viz.py
new file mode 100644
index 0000000..d207e9c
--- /dev/null
+++ b/flowutils/flow_viz.py
@@ -0,0 +1,101 @@
+import numpy as np
+import torch
+from torchvision.transforms import ToTensor
+
+def batchComputeFlowImage(uv):
+ flow_im = torch.zeros(uv.size(0), 3, uv.size(2), uv.size(3) )
+ uv_np = uv.numpy()
+ for i in range(uv.size(0)):
+ flow_im[i] = ToTensor()(computeFlowImage(uv_np[i][0], uv_np[i][1]))
+ return flow_im
+
+def computeFlowImage(u,v,logscale=True,scaledown=6,output=False):
+ """
+ topleft is zero, u is horiz, v is vertical
+ red is 3 o'clock, yellow is 6, light blue is 9, blue/purple is 12
+ """
+ colorwheel = makecolorwheel()
+ ncols = colorwheel.shape[0]
+
+ radius = np.sqrt(u**2 + v**2)
+ if output:
+ print("Maximum flow magnitude: %04f" % np.max(radius))
+ if logscale:
+ radius = np.log(radius + 1)
+ if output:
+ print("Maximum flow magnitude (after log): %0.4f" % np.max(radius))
+ radius = radius / scaledown
+ if output:
+ print("Maximum flow magnitude (after scaledown): %0.4f" % np.max(radius))
+ rot = np.arctan2(-v, -u) / np.pi
+
+ fk = (rot+1)/2 * (ncols-1) # -1~1 maped to 0~ncols
+ k0 = fk.astype(np.uint8) # 0, 1, 2, ..., ncols
+
+ k1 = k0+1
+ k1[k1 == ncols] = 0
+
+ f = fk - k0
+
+ ncolors = colorwheel.shape[1]
+ img = np.zeros(u.shape+(ncolors,))
+ for i in range(ncolors):
+ tmp = colorwheel[:,i]
+ col0 = tmp[k0]
+ col1 = tmp[k1]
+ col = (1-f)*col0 + f*col1
+
+ idx = radius <= 1
+ # increase saturation with radius
+ col[idx] = 1 - radius[idx]*(1-col[idx])
+ # out of range
+ col[~idx] *= 0.75
+ img[:,:,i] = np.floor(255*col).astype(np.uint8)
+
+ return img.astype(np.uint8)
+
+
+def makecolorwheel():
+ # Create a colorwheel for visualization
+ RY = 15
+ YG = 6
+ GC = 4
+ CB = 11
+ BM = 13
+ MR = 6
+
+ ncols = RY + YG + GC + CB + BM + MR
+
+ colorwheel = np.zeros((ncols,3))
+
+ col = 0
+ # RY
+ colorwheel[0:RY,0] = 1
+ colorwheel[0:RY,1] = np.arange(0,1,1./RY)
+ col += RY
+
+ # YG
+ colorwheel[col:col+YG,0] = np.arange(1,0,-1./YG)
+ colorwheel[col:col+YG,1] = 1
+ col += YG
+
+ # GC
+ colorwheel[col:col+GC,1] = 1
+ colorwheel[col:col+GC,2] = np.arange(0,1,1./GC)
+ col += GC
+
+ # CB
+ colorwheel[col:col+CB,1] = np.arange(1,0,-1./CB)
+ colorwheel[col:col+CB,2] = 1
+ col += CB
+
+ # BM
+ colorwheel[col:col+BM,2] = 1
+ colorwheel[col:col+BM,0] = np.arange(0,1,1./BM)
+ col += BM
+
+ # MR
+ colorwheel[col:col+MR,2] = np.arange(1,0,-1./MR)
+ colorwheel[col:col+MR,0] = 1
+
+ return colorwheel
diff --git a/flowutils/flowlib.py b/flowutils/flowlib.py
new file mode 100644
index 0000000..33787ab
--- /dev/null
+++ b/flowutils/flowlib.py
@@ -0,0 +1,538 @@
+#!/usr/bin/python
+"""
+# ==============================
+# flowlib.py
+# library for optical flow processing
+# Author: Ruoteng Li
+# Date: 6th Aug 2016
+# ==============================
+"""
+import png
+from . import pfm
+import numpy as np
+#import matplotlib.colors as cl
+#import matplotlib.pyplot as plt
+from PIL import Image
+import torch
+from torchvision.transforms import ToTensor
+
+
+UNKNOWN_FLOW_THRESH = 1e7
+SMALLFLOW = 0.0
+LARGEFLOW = 1e8
+
+"""
+=============
+Flow Section
+=============
+"""
+
+def batchComputeFlowImage(uv):
+ flow_im = torch.zeros(uv.size(0), 3, uv.size(2), uv.size(3) )
+ uv_np = uv.numpy()
+ for i in range(uv.size(0)):
+ flow_im[i] = ToTensor()(flow_to_image(np.dstack((uv_np[i][0], uv_np[i][1]))))
+ return flow_im
+
+def read_flow(filename):
+ """
+ read optical flow data from flow file
+ :param filename: name of the flow file
+ :return: optical flow data in numpy array
+ """
+ if filename.endswith('.flo'):
+ flow = read_flo_file(filename)
+ elif filename.endswith('.png'):
+ flow = read_png_file(filename)
+ elif filename.endswith('.pfm'):
+ flow = read_pfm_file(filename)
+ else:
+ raise Exception('Invalid flow file format!')
+
+ return flow
+
+
+def write_flow(flow, filename):
+ """
+ write optical flow in Middlebury .flo format
+ :param flow: optical flow map
+ :param filename: optical flow file path to be saved
+ :return: None
+ """
+ f = open(filename, 'wb')
+ magic = np.array([202021.25], dtype=np.float32)
+ (height, width) = flow.shape[0:2]
+ w = np.array([width], dtype=np.int32)
+ h = np.array([height], dtype=np.int32)
+ magic.tofile(f)
+ w.tofile(f)
+ h.tofile(f)
+ flow.tofile(f)
+ f.close()
+
+
+def save_flow_image(flow, image_file):
+ """
+ save flow visualization into image file
+ :param flow: optical flow data
+ :param flow_fil
+ :return: None
+ """
+ flow_img = flow_to_image(flow)
+ img_out = Image.fromarray(flow_img)
+ img_out.save(image_file)
+
+
+def flowfile_to_imagefile(flow_file, image_file):
+ """
+ convert flowfile into image file
+ :param flow: optical flow data
+ :param flow_fil
+ :return: None
+ """
+ flow = read_flow(flow_file)
+ save_flow_image(flow, image_file)
+
+
+def segment_flow(flow):
+ h = flow.shape[0]
+ w = flow.shape[1]
+ u = flow[:, :, 0]
+ v = flow[:, :, 1]
+
+ idx = ((abs(u) > LARGEFLOW) | (abs(v) > LARGEFLOW))
+ idx2 = (abs(u) == SMALLFLOW)
+ class0 = (v == 0) & (u == 0)
+ u[idx2] = 0.00001
+ tan_value = v / u
+
+ class1 = (tan_value < 1) & (tan_value >= 0) & (u > 0) & (v >= 0)
+ class2 = (tan_value >= 1) & (u >= 0) & (v >= 0)
+ class3 = (tan_value < -1) & (u <= 0) & (v >= 0)
+ class4 = (tan_value < 0) & (tan_value >= -1) & (u < 0) & (v >= 0)
+ class8 = (tan_value >= -1) & (tan_value < 0) & (u > 0) & (v <= 0)
+ class7 = (tan_value < -1) & (u >= 0) & (v <= 0)
+ class6 = (tan_value >= 1) & (u <= 0) & (v <= 0)
+ class5 = (tan_value >= 0) & (tan_value < 1) & (u < 0) & (v <= 0)
+
+ seg = np.zeros((h, w))
+
+ seg[class1] = 1
+ seg[class2] = 2
+ seg[class3] = 3
+ seg[class4] = 4
+ seg[class5] = 5
+ seg[class6] = 6
+ seg[class7] = 7
+ seg[class8] = 8
+ seg[class0] = 0
+ seg[idx] = 0
+
+ return seg
+
+
+def flow_error(tu, tv, u, v):
+ """
+ Calculate average end point error
+ :param tu: ground-truth horizontal flow map
+ :param tv: ground-truth vertical flow map
+ :param u: estimated horizontal flow map
+ :param v: estimated vertical flow map
+ :return: End point error of the estimated flow
+ """
+ smallflow = 0.0
+ '''
+ stu = tu[bord+1:end-bord,bord+1:end-bord]
+ stv = tv[bord+1:end-bord,bord+1:end-bord]
+ su = u[bord+1:end-bord,bord+1:end-bord]
+ sv = v[bord+1:end-bord,bord+1:end-bord]
+ '''
+ stu = tu[:]
+ stv = tv[:]
+ su = u[:]
+ sv = v[:]
+
+ idxUnknow = (abs(stu) > UNKNOWN_FLOW_THRESH) | (abs(stv) > UNKNOWN_FLOW_THRESH)
+ stu[idxUnknow] = 0
+ stv[idxUnknow] = 0
+ su[idxUnknow] = 0
+ sv[idxUnknow] = 0
+
+ ind2 = [(np.absolute(stu) > smallflow) | (np.absolute(stv) > smallflow)]
+ index_su = su[ind2]
+ index_sv = sv[ind2]
+ an = 1.0 / np.sqrt(index_su ** 2 + index_sv ** 2 + 1)
+ un = index_su * an
+ vn = index_sv * an
+
+ index_stu = stu[ind2]
+ index_stv = stv[ind2]
+ tn = 1.0 / np.sqrt(index_stu ** 2 + index_stv ** 2 + 1)
+ tun = index_stu * tn
+ tvn = index_stv * tn
+
+ '''
+ angle = un * tun + vn * tvn + (an * tn)
+ index = [angle == 1.0]
+ angle[index] = 0.999
+ ang = np.arccos(angle)
+ mang = np.mean(ang)
+ mang = mang * 180 / np.pi
+ '''
+
+ epe = np.sqrt((stu - su) ** 2 + (stv - sv) ** 2)
+ epe = epe[ind2]
+ mepe = np.mean(epe)
+ return mepe
+
+
+def flow_to_image(flow):
+ """
+ Convert flow into middlebury color code image
+ :param flow: optical flow map
+ :return: optical flow image in middlebury color
+ """
+ u = flow[0]
+ v = flow[1]
+
+ maxu = -999.
+ maxv = -999.
+ minu = 999.
+ minv = 999.
+
+ idxUnknow = (abs(u) > UNKNOWN_FLOW_THRESH) | (abs(v) > UNKNOWN_FLOW_THRESH)
+ u[idxUnknow] = 0
+ v[idxUnknow] = 0
+
+ maxu = max(maxu, np.max(u))
+ minu = min(minu, np.min(u))
+
+ maxv = max(maxv, np.max(v))
+ minv = min(minv, np.min(v))
+
+ rad = np.sqrt(u ** 2 + v ** 2)
+ maxrad = max(-1, np.max(rad))
+
+ #print "max flow: %.4f\nflow range:\nu = %.3f .. %.3f\nv = %.3f .. %.3f" % (maxrad, minu,maxu, minv, maxv)
+
+ u = u/(maxrad + np.finfo(float).eps)
+ v = v/(maxrad + np.finfo(float).eps)
+
+ img = compute_color(u, v)
+
+ idx = np.repeat(idxUnknow[:, :, np.newaxis], 3, axis=2)
+ img[idx] = 0
+
+ return img.transpose(2,0,1)/255.
+
+
+def evaluate_flow_file(gt_file, pred_file):
+ """
+ evaluate the estimated optical flow end point error according to ground truth provided
+ :param gt_file: ground truth file path
+ :param pred_file: estimated optical flow file path
+ :return: end point error, float32
+ """
+ # Read flow files and calculate the errors
+ gt_flow = read_flow(gt_file) # ground truth flow
+ eva_flow = read_flow(pred_file) # predicted flow
+ # Calculate errors
+ average_pe = flow_error(gt_flow[:, :, 0], gt_flow[:, :, 1], eva_flow[:, :, 0], eva_flow[:, :, 1])
+ return average_pe
+
+
+def evaluate_flow(gt_flow, pred_flow):
+ """
+ gt: ground-truth flow
+ pred: estimated flow
+ """
+ average_pe = flow_error(gt_flow[:, :, 0], gt_flow[:, :, 1], pred_flow[:, :, 0], pred_flow[:, :, 1])
+ return average_pe
+
+
+"""
+==============
+Disparity Section
+==============
+"""
+
+
+def read_disp_png(file_name):
+ """
+ Read optical flow from KITTI .png file
+ :param file_name: name of the flow file
+ :return: optical flow data in matrix
+ """
+ image_object = png.Reader(filename=file_name)
+ image_direct = image_object.asDirect()
+ image_data = list(image_direct[2])
+ (w, h) = image_direct[3]['size']
+ channel = len(image_data[0]) / w
+ flow = np.zeros((h, w, channel), dtype=np.uint16)
+ for i in range(len(image_data)):
+ for j in range(channel):
+ flow[i, :, j] = image_data[i][j::channel]
+ return flow[:, :, 0] / 256
+
+
+def disp_to_flowfile(disp, filename):
+ """
+ Read KITTI disparity file in png format
+ :param disp: disparity matrix
+ :param filename: the flow file name to save
+ :return: None
+ """
+ f = open(filename, 'wb')
+ magic = np.array([202021.25], dtype=np.float32)
+ (height, width) = disp.shape[0:2]
+ w = np.array([width], dtype=np.int32)
+ h = np.array([height], dtype=np.int32)
+ empty_map = np.zeros((height, width), dtype=np.float32)
+ data = np.dstack((disp, empty_map))
+ magic.tofile(f)
+ w.tofile(f)
+ h.tofile(f)
+ data.tofile(f)
+ f.close()
+
+
+"""
+==============
+Image Section
+==============
+"""
+
+
+def read_image(filename):
+ """
+ Read normal image of any format
+ :param filename: name of the image file
+ :return: image data in matrix uint8 type
+ """
+ img = Image.open(filename)
+ im = np.array(img)
+ return im
+
+
+"""
+==============
+Others
+==============
+"""
+
+def pfm_to_flo(pfm_file):
+ flow_filename = pfm_file[0:pfm_file.find('.pfm')] + '.flo'
+ (data, scale) = pfm.readPFM(pfm_file)
+ flow = data[:, :, 0:2]
+ write_flow(flow, flow_filename)
+
+
+def scale_image(image, new_range):
+ """
+ Linearly scale the image into desired range
+ :param image: input image
+ :param new_range: the new range to be aligned
+ :return: image normalized in new range
+ """
+ min_val = np.min(image).astype(np.float32)
+ max_val = np.max(image).astype(np.float32)
+ min_val_new = np.array(min(new_range), dtype=np.float32)
+ max_val_new = np.array(max(new_range), dtype=np.float32)
+ scaled_image = (image - min_val) / (max_val - min_val) * (max_val_new - min_val_new) + min_val_new
+ return scaled_image.astype(np.uint8)
+
+
+def compute_color(u, v):
+ """
+ compute optical flow color map
+ :param u: optical flow horizontal map
+ :param v: optical flow vertical map
+ :return: optical flow in color code
+ """
+ [h, w] = u.shape
+ img = np.zeros([h, w, 3])
+ nanIdx = np.isnan(u) | np.isnan(v)
+ u[nanIdx] = 0
+ v[nanIdx] = 0
+
+ colorwheel = make_color_wheel()
+ ncols = np.size(colorwheel, 0)
+
+ rad = np.sqrt(u**2+v**2)
+
+ a = np.arctan2(-v, -u) / np.pi
+
+ fk = (a+1) / 2 * (ncols - 1) + 1
+
+ k0 = np.floor(fk).astype(int)
+
+ k1 = k0 + 1
+ k1[k1 == ncols+1] = 1
+ f = fk - k0
+
+ for i in range(0, np.size(colorwheel,1)):
+ tmp = colorwheel[:, i]
+ col0 = tmp[k0-1] / 255
+ col1 = tmp[k1-1] / 255
+ col = (1-f) * col0 + f * col1
+
+ idx = rad <= 1
+ col[idx] = 1-rad[idx]*(1-col[idx])
+ notidx = np.logical_not(idx)
+
+ col[notidx] *= 0.75
+ img[:, :, i] = np.uint8(np.floor(255 * col*(1-nanIdx)))
+
+ return img
+
+
+def make_color_wheel():
+ """
+ Generate color wheel according Middlebury color code
+ :return: Color wheel
+ """
+ RY = 15
+ YG = 6
+ GC = 4
+ CB = 11
+ BM = 13
+ MR = 6
+
+ ncols = RY + YG + GC + CB + BM + MR
+
+ colorwheel = np.zeros([ncols, 3])
+
+ col = 0
+
+ # RY
+ colorwheel[0:RY, 0] = 255
+ colorwheel[0:RY, 1] = np.transpose(np.floor(255*np.arange(0, RY) / RY))
+ col += RY
+
+ # YG
+ colorwheel[col:col+YG, 0] = 255 - np.transpose(np.floor(255*np.arange(0, YG) / YG))
+ colorwheel[col:col+YG, 1] = 255
+ col += YG
+
+ # GC
+ colorwheel[col:col+GC, 1] = 255
+ colorwheel[col:col+GC, 2] = np.transpose(np.floor(255*np.arange(0, GC) / GC))
+ col += GC
+
+ # CB
+ colorwheel[col:col+CB, 1] = 255 - np.transpose(np.floor(255*np.arange(0, CB) / CB))
+ colorwheel[col:col+CB, 2] = 255
+ col += CB
+
+ # BM
+ colorwheel[col:col+BM, 2] = 255
+ colorwheel[col:col+BM, 0] = np.transpose(np.floor(255*np.arange(0, BM) / BM))
+ col += + BM
+
+ # MR
+ colorwheel[col:col+MR, 2] = 255 - np.transpose(np.floor(255 * np.arange(0, MR) / MR))
+ colorwheel[col:col+MR, 0] = 255
+
+ return colorwheel
+
+
+def read_flo_file(filename):
+ """
+ Read from Middlebury .flo file
+ :param flow_file: name of the flow file
+ :return: optical flow data in matrix
+ """
+ f = open(filename, 'rb')
+ magic = np.fromfile(f, np.float32, count=1)
+ data2d = None
+
+ if 202021.25 != magic:
+ print('Magic number incorrect. Invalid .flo file')
+ else:
+ w = np.fromfile(f, np.int32, count=1)
+ h = np.fromfile(f, np.int32, count=1)
+ print("Reading %d x %d flow file in .flo format" % (h, w))
+ data2d = np.fromfile(f, np.float32, count=2 * w * h)
+ # reshape data into 3D array (columns, rows, channels)
+ data2d = np.resize(data2d, (h[0], w[0], 2))
+ f.close()
+ return data2d
+
+
+def read_png_file(flow_file):
+ """
+ Read from KITTI .png file
+ :param flow_file: name of the flow file
+ :return: optical flow data in matrix
+ """
+ flow_object = png.Reader(filename=flow_file)
+ flow_direct = flow_object.asDirect()
+ flow_data = list(flow_direct[2])
+ (w, h) = flow_direct[3]['size']
+ print("Reading %d x %d flow file in .png format" % (h, w))
+ flow = np.zeros((h, w, 3), dtype=np.float64)
+ for i in range(len(flow_data)):
+ flow[i, :, 0] = flow_data[i][0::3]
+ flow[i, :, 1] = flow_data[i][1::3]
+ flow[i, :, 2] = flow_data[i][2::3]
+
+ invalid_idx = (flow[:, :, 2] == 0)
+ flow[:, :, 0:2] = (flow[:, :, 0:2] - 2 ** 15) / 64.0
+ flow[invalid_idx, 0] = 0
+ flow[invalid_idx, 1] = 0
+ return flow
+
+
+def read_pfm_file(flow_file):
+ """
+ Read from .pfm file
+ :param flow_file: name of the flow file
+ :return: optical flow data in matrix
+ """
+ import pfm
+ (data, scale) = pfm.readPFM(flow_file)
+ return data
+
+
+# fast resample layer
+def resample(img, sz):
+ """
+ img: flow map to be resampled
+ sz: new flow map size. Must be [height,weight]
+ """
+ original_image_size = img.shape
+ in_height = img.shape[0]
+ in_width = img.shape[1]
+ out_height = sz[0]
+ out_width = sz[1]
+ out_flow = np.zeros((out_height, out_width, 2))
+ # find scale
+ height_scale = float(in_height) / float(out_height)
+ width_scale = float(in_width) / float(out_width)
+
+ [x,y] = np.meshgrid(range(out_width), range(out_height))
+ xx = x * width_scale
+ yy = y * height_scale
+ x0 = np.floor(xx).astype(np.int32)
+ x1 = x0 + 1
+ y0 = np.floor(yy).astype(np.int32)
+ y1 = y0 + 1
+
+ x0 = np.clip(x0,0,in_width-1)
+ x1 = np.clip(x1,0,in_width-1)
+ y0 = np.clip(y0,0,in_height-1)
+ y1 = np.clip(y1,0,in_height-1)
+
+ Ia = img[y0,x0,:]
+ Ib = img[y1,x0,:]
+ Ic = img[y0,x1,:]
+ Id = img[y1,x1,:]
+
+ wa = (y1-yy) * (x1-xx)
+ wb = (yy-y0) * (x1-xx)
+ wc = (y1-yy) * (xx-x0)
+ wd = (yy-y0) * (xx-x0)
+ out_flow[:,:,0] = (Ia[:,:,0]*wa + Ib[:,:,0]*wb + Ic[:,:,0]*wc + Id[:,:,0]*wd) * out_width / in_width
+ out_flow[:,:,1] = (Ia[:,:,1]*wa + Ib[:,:,1]*wb + Ic[:,:,1]*wc + Id[:,:,1]*wd) * out_height / in_height
+
+ return out_flow
diff --git a/flowutils/pfm.py b/flowutils/pfm.py
new file mode 100644
index 0000000..d4a6197
--- /dev/null
+++ b/flowutils/pfm.py
@@ -0,0 +1,71 @@
+import re
+import numpy as np
+import sys
+
+
+def readPFM(file):
+ file = open(file, 'rb')
+
+ color = None
+ width = None
+ height = None
+ scale = None
+ endian = None
+
+ header = file.readline().rstrip()
+ if header == 'PF':
+ color = True
+ elif header == 'Pf':
+ color = False
+ else:
+ raise Exception('Not a PFM file.')
+
+ dim_match = re.match(r'^(\d+)\s(\d+)\s$', file.readline())
+ if dim_match:
+ width, height = map(int, dim_match.groups())
+ else:
+ raise Exception('Malformed PFM header.')
+
+ scale = float(file.readline().rstrip())
+ if scale < 0: # little-endian
+ endian = '<'
+ scale = -scale
+ else:
+ endian = '>' # big-endian
+
+ data = np.fromfile(file, endian + 'f')
+ shape = (height, width, 3) if color else (height, width)
+
+ data = np.reshape(data, shape)
+ data = np.flipud(data)
+ return data, scale
+
+
+def writePFM(file, image, scale=1):
+ file = open(file, 'wb')
+
+ color = None
+
+ if image.dtype.name != 'float32':
+ raise Exception('Image dtype must be float32.')
+
+ image = np.flipud(image)
+
+ if len(image.shape) == 3 and image.shape[2] == 3: # color image
+ color = True
+ elif len(image.shape) == 2 or len(image.shape) == 3 and image.shape[2] == 1: # greyscale
+ color = False
+ else:
+ raise Exception('Image must have H x W x 3, H x W x 1 or H x W dimensions.')
+
+ file.write('PF\n' if color else 'Pf\n')
+ file.write('%d %d\n' % (image.shape[1], image.shape[0]))
+
+ endian = image.dtype.byteorder
+
+ if endian == '<' or endian == '=' and sys.byteorder == 'little':
+ scale = -scale
+
+ file.write('%f\n' % scale)
+
+ image.tofile(file)
\ No newline at end of file
diff --git a/inverse_warp.py b/inverse_warp.py
new file mode 100644
index 0000000..7c54e5d
--- /dev/null
+++ b/inverse_warp.py
@@ -0,0 +1,283 @@
+# Author: Anurag Ranjan
+# Copyright (c) 2019, Anurag Ranjan
+# All rights reserved.
+# based on github.com/ClementPinard/SfMLearner-Pytorch
+
+from __future__ import division
+import torch
+from torch.autograd import Variable
+
+pixel_coords = None
+
+
+def set_id_grid(depth):
+ global pixel_coords
+ b, h, w = depth.size()
+ i_range = Variable(torch.arange(0, h).view(1, h, 1).expand(1,h,w)).type_as(depth) # [1, H, W]
+ j_range = Variable(torch.arange(0, w).view(1, 1, w).expand(1,h,w)).type_as(depth) # [1, H, W]
+ ones = Variable(torch.ones(1,h,w)).type_as(depth)
+
+ pixel_coords = torch.stack((j_range, i_range, ones), dim=1) # [1, 3, H, W]
+
+
+def check_sizes(input, input_name, expected):
+ condition = [input.ndimension() == len(expected)]
+ for i,size in enumerate(expected):
+ if size.isdigit():
+ condition.append(input.size(i) == int(size))
+ assert(all(condition)), "wrong size for {}, expected {}, got {}".format(input_name, 'x'.join(expected), list(input.size()))
+
+
+def pixel2cam(depth, intrinsics_inv):
+ global pixel_coords
+ """Transform coordinates in the pixel frame to the camera frame.
+ Args:
+ depth: depth maps -- [B, H, W]
+ intrinsics_inv: intrinsics_inv matrix for each element of batch -- [B, 3, 3]
+ Returns:
+ array of (u,v,1) cam coordinates -- [B, 3, H, W]
+ """
+ b, h, w = depth.size()
+ if (pixel_coords is None) or pixel_coords.size(2) != h or pixel_coords.size(3) != w:
+ set_id_grid(depth)
+ current_pixel_coords = pixel_coords[:,:,:h,:w].expand(b,3,h,w).contiguous().view(b, 3, -1) # [B, 3, H*W]
+ cam_coords = intrinsics_inv.bmm(current_pixel_coords).view(b, 3, h, w)
+ return cam_coords * depth.unsqueeze(1)
+
+
+def cam2pixel(cam_coords, proj_c2p_rot, proj_c2p_tr, padding_mode):
+ """Transform coordinates in the camera frame to the pixel frame.
+ Args:
+ cam_coords: pixel coordinates defined in the first camera coordinates system -- [B, 4, H, W]
+ proj_c2p_rot: rotation matrix of cameras -- [B, 3, 4]
+ proj_c2p_tr: translation vectors of cameras -- [B, 3, 1]
+ Returns:
+ array of [-1,1] coordinates -- [B, 2, H, W]
+ """
+ b, _, h, w = cam_coords.size()
+ cam_coords_flat = cam_coords.view(b, 3, -1) # [B, 3, H*W]
+ if proj_c2p_rot is not None:
+ pcoords = proj_c2p_rot.bmm(cam_coords_flat)
+ else:
+ pcoords = cam_coords_flat
+
+ if proj_c2p_tr is not None:
+ pcoords = pcoords + proj_c2p_tr # [B, 3, H*W]
+ X = pcoords[:, 0]
+ Y = pcoords[:, 1]
+ Z = pcoords[:, 2].clamp(min=1e-3)
+
+ X_norm = 2*(X / Z)/(w-1) - 1 # Normalized, -1 if on extreme left, 1 if on extreme right (x = w-1) [B, H*W]
+ Y_norm = 2*(Y / Z)/(h-1) - 1 # Idem [B, H*W]
+ if padding_mode == 'zeros':
+ X_mask = ((X_norm > 1)+(X_norm < -1)).detach()
+ X_norm[X_mask] = 2 # make sure that no point in warped image is a combinaison of im and gray
+ Y_mask = ((Y_norm > 1)+(Y_norm < -1)).detach()
+ Y_norm[Y_mask] = 2
+
+ pixel_coords = torch.stack([X_norm, Y_norm], dim=2) # [B, H*W, 2]
+ return pixel_coords.view(b,h,w,2)
+
+
+def euler2mat(angle):
+ """Convert euler angles to rotation matrix.
+
+ Reference: https://github.com/pulkitag/pycaffe-utils/blob/master/rot_utils.py#L174
+
+ Args:
+ angle: rotation angle along 3 axis (in radians) -- size = [B, 3]
+ Returns:
+ Rotation matrix corresponding to the euler angles -- size = [B, 3, 3]
+ """
+ B = angle.size(0)
+ x, y, z = angle[:,0], angle[:,1], angle[:,2]
+
+ cosz = torch.cos(z)
+ sinz = torch.sin(z)
+
+ zeros = z.detach()*0
+ ones = zeros.detach()+1
+ zmat = torch.stack([cosz, -sinz, zeros,
+ sinz, cosz, zeros,
+ zeros, zeros, ones], dim=1).view(B, 3, 3)
+
+ cosy = torch.cos(y)
+ siny = torch.sin(y)
+
+ ymat = torch.stack([cosy, zeros, siny,
+ zeros, ones, zeros,
+ -siny, zeros, cosy], dim=1).view(B, 3, 3)
+
+ cosx = torch.cos(x)
+ sinx = torch.sin(x)
+
+ xmat = torch.stack([ones, zeros, zeros,
+ zeros, cosx, -sinx,
+ zeros, sinx, cosx], dim=1).view(B, 3, 3)
+
+ rotMat = xmat.bmm(ymat).bmm(zmat)
+ return rotMat
+
+
+def quat2mat(quat):
+ """Convert quaternion coefficients to rotation matrix.
+
+ Args:
+ quat: first three coeff of quaternion of rotation. fourht is then computed to have a norm of 1 -- size = [B, 3]
+ Returns:
+ Rotation matrix corresponding to the quaternion -- size = [B, 3, 3]
+ """
+ norm_quat = torch.cat([quat[:,:1].detach()*0 + 1, quat], dim=1)
+ norm_quat = norm_quat/norm_quat.norm(p=2, dim=1, keepdim=True)
+ w, x, y, z = norm_quat[:,0], norm_quat[:,1], norm_quat[:,2], norm_quat[:,3]
+
+ B = quat.size(0)
+
+ w2, x2, y2, z2 = w.pow(2), x.pow(2), y.pow(2), z.pow(2)
+ wx, wy, wz = w*x, w*y, w*z
+ xy, xz, yz = x*y, x*z, y*z
+
+ rotMat = torch.stack([w2 + x2 - y2 - z2, 2*xy - 2*wz, 2*wy + 2*xz,
+ 2*wz + 2*xy, w2 - x2 + y2 - z2, 2*yz - 2*wx,
+ 2*xz - 2*wy, 2*wx + 2*yz, w2 - x2 - y2 + z2], dim=1).view(B, 3, 3)
+ return rotMat
+
+
+def pose_vec2mat(vec, rotation_mode='euler'):
+ """
+ Convert 6DoF parameters to transformation matrix.
+
+ Args:s
+ vec: 6DoF parameters in the order of tx, ty, tz, rx, ry, rz -- [B, 6]
+ Returns:
+ A transformation matrix -- [B, 3, 4]
+ """
+ translation = vec[:, :3].unsqueeze(-1) # [B, 3, 1]
+ rot = vec[:,3:]
+ if rotation_mode == 'euler':
+ rot_mat = euler2mat(rot) # [B, 3, 3]
+ elif rotation_mode == 'quat':
+ rot_mat = quat2mat(rot) # [B, 3, 3]
+ transform_mat = torch.cat([rot_mat, translation], dim=2) # [B, 3, 4]
+ return transform_mat
+
+def flow_warp(img, flow, padding_mode='zeros'):
+ """
+ Inverse warp a source image to the target image plane.
+
+ Args:
+ img: the source image (where to sample pixels) -- [B, 3, H, W]
+ flow: flow map of the target image -- [B, 2, H, W]
+ Returns:
+ Source image warped to the target image plane
+ """
+ check_sizes(img, 'img', 'BCHW')
+ check_sizes(flow, 'flow', 'B2HW')
+
+ bs, _, h, w = flow.size()
+ u = flow[:,0,:,:]
+ v = flow[:,1,:,:]
+
+ grid_x = Variable(torch.arange(0, w).view(1, 1, w).expand(1,h,w), requires_grad=False).type_as(u).expand_as(u) # [bs, H, W]
+ grid_y = Variable(torch.arange(0, h).view(1, h, 1).expand(1,h,w), requires_grad=False).type_as(v).expand_as(v) # [bs, H, W]
+
+ X = grid_x + u
+ Y = grid_y + v
+
+ X = 2*(X/(w-1.0) - 0.5)
+ Y = 2*(Y/(h-1.0) - 0.5)
+ grid_tf = torch.stack((X,Y), dim=3)
+ img_tf = torch.nn.functional.grid_sample(img, grid_tf, padding_mode=padding_mode)
+
+ return img_tf
+
+
+def pose2flow(depth, pose, intrinsics, intrinsics_inv, rotation_mode='euler', padding_mode=None):
+ """
+ Converts pose parameters to rigid optical flow
+ """
+ check_sizes(depth, 'depth', 'BHW')
+ check_sizes(pose, 'pose', 'B6')
+ check_sizes(intrinsics, 'intrinsics', 'B33')
+ check_sizes(intrinsics_inv, 'intrinsics', 'B33')
+ assert(intrinsics_inv.size() == intrinsics.size())
+
+ bs, h, w = depth.size()
+
+ grid_x = Variable(torch.arange(0, w).view(1, 1, w).expand(1,h,w), requires_grad=False).type_as(depth).expand_as(depth) # [bs, H, W]
+ grid_y = Variable(torch.arange(0, h).view(1, h, 1).expand(1,h,w), requires_grad=False).type_as(depth).expand_as(depth) # [bs, H, W]
+
+ cam_coords = pixel2cam(depth, intrinsics_inv) # [B,3,H,W]
+ pose_mat = pose_vec2mat(pose, rotation_mode) # [B,3,4]
+
+ # Get projection matrix for tgt camera frame to source pixel frame
+ proj_cam_to_src_pixel = intrinsics.bmm(pose_mat) # [B, 3, 4]
+ src_pixel_coords = cam2pixel(cam_coords, proj_cam_to_src_pixel[:,:,:3], proj_cam_to_src_pixel[:,:,-1:], padding_mode) # [B,H,W,2]
+
+ X = (w-1)*(src_pixel_coords[:,:,:,0]/2.0 + 0.5) - grid_x
+ Y = (h-1)*(src_pixel_coords[:,:,:,1]/2.0 + 0.5) - grid_y
+
+ return torch.stack((X,Y), dim=1)
+
+def flow2oob(flow):
+ check_sizes(flow, 'flow', 'B2HW')
+
+ bs, _, h, w = flow.size()
+ u = flow[:,0,:,:]
+ v = flow[:,1,:,:]
+
+ grid_x = Variable(torch.arange(0, w).view(1, 1, w).expand(1,h,w), requires_grad=False).type_as(u).expand_as(u) # [bs, H, W]
+ grid_y = Variable(torch.arange(0, h).view(1, h, 1).expand(1,h,w), requires_grad=False).type_as(v).expand_as(v) # [bs, H, W]
+
+ X = grid_x + u
+ Y = grid_y + v
+
+ X = 2*(X/(w-1.0) - 0.5)
+ Y = 2*(Y/(h-1.0) - 0.5)
+ oob = (X.abs()>1).add(Y.abs()>1)>0
+ return oob
+
+def occlusion_mask(grid, depth):
+ check_sizes(img, 'grid', 'BHW2')
+ check_sizes(depth, 'depth', 'BHW')
+
+ mask = grid
+
+ return mask
+
+
+
+def inverse_warp(img, depth, pose, intrinsics, intrinsics_inv, rotation_mode='euler', padding_mode='zeros'):
+ """
+ Inverse warp a source image to the target image plane.
+
+ Args:
+ img: the source image (where to sample pixels) -- [B, 3, H, W]
+ depth: depth map of the target image -- [B, H, W]
+ pose: 6DoF pose parameters from target to source -- [B, 6]
+ intrinsics: camera intrinsic matrix -- [B, 3, 3]
+ intrinsics_inv: inverse of the intrinsic matrix -- [B, 3, 3]
+ Returns:
+ Source image warped to the target image plane
+ """
+ check_sizes(img, 'img', 'B3HW')
+ check_sizes(depth, 'depth', 'BHW')
+ check_sizes(pose, 'pose', 'B6')
+ check_sizes(intrinsics, 'intrinsics', 'B33')
+ check_sizes(intrinsics_inv, 'intrinsics', 'B33')
+
+ assert(intrinsics_inv.size() == intrinsics.size())
+
+ batch_size, _, img_height, img_width = img.size()
+
+ cam_coords = pixel2cam(depth, intrinsics_inv) # [B,3,H,W]
+
+ pose_mat = pose_vec2mat(pose, rotation_mode) # [B,3,4]
+
+ # Get projection matrix for tgt camera frame to source pixel frame
+ proj_cam_to_src_pixel = intrinsics.bmm(pose_mat) # [B, 3, 4]
+
+ src_pixel_coords = cam2pixel(cam_coords, proj_cam_to_src_pixel[:,:,:3], proj_cam_to_src_pixel[:,:,-1:], padding_mode) # [B,H,W,2]
+ projected_img = torch.nn.functional.grid_sample(img, src_pixel_coords, padding_mode=padding_mode)
+
+ return projected_img
diff --git a/kitti_eval/depth_evaluation_utils.py b/kitti_eval/depth_evaluation_utils.py
new file mode 100644
index 0000000..b285be0
--- /dev/null
+++ b/kitti_eval/depth_evaluation_utils.py
@@ -0,0 +1,206 @@
+# Mostly based on the code written by Clement Godard:
+# https://github.com/mrharicot/monodepth/blob/master/utils/evaluation_utils.py
+import numpy as np
+# import pandas as pd
+import datetime
+from collections import Counter
+from path import Path
+from scipy.misc import imread
+from tqdm import tqdm
+
+width_to_focal = dict()
+width_to_focal[1242] = 721.5377
+width_to_focal[1241] = 718.856
+width_to_focal[1224] = 707.0493
+width_to_focal[1238] = 718.3351
+
+
+class test_framework_KITTI(object):
+ def __init__(self, root, test_files, seq_length=3, min_depth=1e-3, max_depth=100, step=1):
+ self.root = root
+ self.min_depth, self.max_depth = min_depth, max_depth
+ self.calib_dirs, self.gt_files, self.img_files, self.displacements, self.cams = read_scene_data(self.root, test_files, seq_length, step)
+
+ def __getitem__(self, i):
+ tgt = imread(self.img_files[i][0]).astype(np.float32)
+ depth = generate_depth_map(self.calib_dirs[i], self.gt_files[i], tgt.shape[:2], self.cams[i])
+ return {'tgt': tgt,
+ 'ref': [imread(img).astype(np.float32) for img in self.img_files[i][1]],
+ 'path':self.img_files[i][0],
+ 'gt_depth': depth,
+ 'displacements': np.array(self.displacements[i]),
+ 'mask': generate_mask(depth, self.min_depth, self.max_depth)
+ }
+
+ def __len__(self):
+ return len(self.img_files)
+
+
+###############################################################################
+# EIGEN
+
+def read_text_lines(file_path):
+ f = open(file_path, 'r')
+ lines = f.readlines()
+ f.close()
+ lines = [l.rstrip() for l in lines]
+ return lines
+
+
+def get_displacements(oxts_root, index, shifts):
+ with open(oxts_root/'timestamps.txt') as f:
+ timestamps = [datetime.datetime.strptime(ts[:-3], "%Y-%m-%d %H:%M:%S.%f").timestamp() for ts in f.read().splitlines()]
+ oxts_data = np.genfromtxt(oxts_root/'data'/'{:010d}.txt'.format(index))
+ speed = np.linalg.norm(oxts_data[8:11])
+ assert(all(index+shift < len(timestamps) and index+shift >= 0 for shift in shifts)), str([index+shift for shift in shifts])
+ return [speed*abs(timestamps[index] - timestamps[index + shift]) for shift in shifts]
+
+
+def read_scene_data(data_root, test_list, seq_length=3, step=1):
+ data_root = Path(data_root)
+ gt_files = []
+ calib_dirs = []
+ im_files = []
+ cams = []
+ displacements = []
+ demi_length = (seq_length - 1) // 2
+ shift_range = [step*i for i in list(range(-demi_length,0)) + list(range(1, demi_length + 1))]
+
+ print('getting test metadata ... ')
+ for sample in tqdm(test_list):
+ tgt_img_path = data_root/sample
+ date, scene, cam_id, _, index = sample[:-4].split('/')
+
+ ref_imgs_path = [tgt_img_path.dirname()/'{:010d}.png'.format(int(index) + shift) for shift in shift_range]
+
+ caped_shift_range = shift_range[:] # ensures ref_imgs are present, if not, set shift to 0 so that it will be discarded later
+ for i,img in enumerate(ref_imgs_path):
+ if not img.isfile():
+ ref_imgs_path[i] = tgt_img_path
+ caped_shift_range[i] = 0
+
+ vel_path = data_root/date/scene/'velodyne_points'/'data'/'{}.bin'.format(index[:10])
+
+ if tgt_img_path.isfile():
+ gt_files.append(vel_path)
+ calib_dirs.append(data_root/date)
+ im_files.append([tgt_img_path,ref_imgs_path])
+ cams.append(int(cam_id[-2:]))
+ displacements.append(get_displacements(data_root/date/scene/'oxts', int(index), caped_shift_range))
+ else:
+ print('{} missing'.format(tgt_img_path))
+ # print(num_probs, 'files missing')
+
+ return calib_dirs, gt_files, im_files, displacements, cams
+
+
+def load_velodyne_points(file_name):
+ # adapted from https://github.com/hunse/kitti
+ points = np.fromfile(file_name, dtype=np.float32).reshape(-1, 4)
+ points[:,3] = 1
+ return points
+
+
+def read_calib_file(path):
+ # taken from https://github.com/hunse/kitti
+ float_chars = set("0123456789.e+- ")
+ data = {}
+ with open(path, 'r') as f:
+ for line in f.readlines():
+ key, value = line.split(':', 1)
+ value = value.strip()
+ data[key] = value
+ if float_chars.issuperset(value):
+ # try to cast to float array
+ try:
+ data[key] = np.array(list(map(float, value.split(' '))))
+ except ValueError:
+ # casting error: data[key] already eq. value, so pass
+ pass
+
+ return data
+
+
+def get_focal_length_baseline(calib_dir, cam=2):
+ cam2cam = read_calib_file(calib_dir + 'calib_cam_to_cam.txt')
+ P2_rect = cam2cam['P_rect_02'].reshape(3,4)
+ P3_rect = cam2cam['P_rect_03'].reshape(3,4)
+
+ # cam 2 is left of camera 0 -6cm
+ # cam 3 is to the right +54cm
+ b2 = P2_rect[0,3] / -P2_rect[0,0]
+ b3 = P3_rect[0,3] / -P3_rect[0,0]
+ baseline = b3-b2
+
+ if cam == 2:
+ focal_length = P2_rect[0,0]
+ elif cam == 3:
+ focal_length = P3_rect[0,0]
+
+ return focal_length, baseline
+
+
+def sub2ind(matrixSize, rowSub, colSub):
+ m, n = matrixSize
+ return rowSub * (n-1) + colSub - 1
+
+
+def generate_depth_map(calib_dir, velo_file_name, im_shape, cam=2):
+ # load calibration files
+ cam2cam = read_calib_file(calib_dir/'calib_cam_to_cam.txt')
+ velo2cam = read_calib_file(calib_dir/'calib_velo_to_cam.txt')
+ velo2cam = np.hstack((velo2cam['R'].reshape(3,3), velo2cam['T'][..., np.newaxis]))
+ velo2cam = np.vstack((velo2cam, np.array([0, 0, 0, 1.0])))
+
+ # compute projection matrix velodyne->image plane
+ R_cam2rect = np.eye(4)
+ R_cam2rect[:3,:3] = cam2cam['R_rect_00'].reshape(3,3)
+ P_rect = cam2cam['P_rect_0'+str(cam)].reshape(3,4)
+ P_velo2im = np.dot(np.dot(P_rect, R_cam2rect), velo2cam)
+
+ # load velodyne points and remove all behind image plane (approximation)
+ # each row of the velodyne data is forward, left, up, reflectance
+ velo = load_velodyne_points(velo_file_name)
+ velo = velo[velo[:, 0] >= 0, :]
+
+ # project the points to the camera
+ velo_pts_im = np.dot(P_velo2im, velo.T).T
+ velo_pts_im[:, :2] = velo_pts_im[:,:2] / velo_pts_im[:,-1:]
+
+ # check if in bounds
+ # use minus 1 to get the exact same value as KITTI matlab code
+ velo_pts_im[:, 0] = np.round(velo_pts_im[:,0]) - 1
+ velo_pts_im[:, 1] = np.round(velo_pts_im[:,1]) - 1
+ val_inds = (velo_pts_im[:, 0] >= 0) & (velo_pts_im[:, 1] >= 0)
+ val_inds = val_inds & (velo_pts_im[:,0] < im_shape[1]) & (velo_pts_im[:,1] < im_shape[0])
+ velo_pts_im = velo_pts_im[val_inds, :]
+
+ # project to image
+ depth = np.zeros((im_shape))
+ depth[velo_pts_im[:, 1].astype(np.int), velo_pts_im[:, 0].astype(np.int)] = velo_pts_im[:, 2]
+
+ # find the duplicate points and choose the closest depth
+ inds = sub2ind(depth.shape, velo_pts_im[:, 1], velo_pts_im[:, 0])
+ dupe_inds = [item for item, count in Counter(inds).items() if count > 1]
+ for dd in dupe_inds:
+ pts = np.where(inds == dd)[0]
+ x_loc = int(velo_pts_im[pts[0], 0])
+ y_loc = int(velo_pts_im[pts[0], 1])
+ depth[y_loc, x_loc] = velo_pts_im[pts, 2].min()
+ depth[depth < 0] = 0
+ return depth
+
+
+def generate_mask(gt_depth, min_depth, max_depth):
+ mask = np.logical_and(gt_depth > min_depth,
+ gt_depth < max_depth)
+ # crop used by Garg ECCV16 to reprocude Eigen NIPS14 results
+ # if used on gt_size 370x1224 produces a crop of [-218, -3, 44, 1180]
+ gt_height, gt_width = gt_depth.shape
+ crop = np.array([0.40810811 * gt_height, 0.99189189 * gt_height,
+ 0.03594771 * gt_width, 0.96405229 * gt_width]).astype(np.int32)
+
+ crop_mask = np.zeros(mask.shape)
+ crop_mask[crop[0]:crop[1],crop[2]:crop[3]] = 1
+ mask = np.logical_and(mask, crop_mask)
+ return mask
diff --git a/kitti_eval/pose_evaluation_utils.py b/kitti_eval/pose_evaluation_utils.py
new file mode 100644
index 0000000..d79dc18
--- /dev/null
+++ b/kitti_eval/pose_evaluation_utils.py
@@ -0,0 +1,60 @@
+# Mostly based on the code written by Clement Godard:
+# https://github.com/mrharicot/monodepth/blob/master/utils/evaluation_utils.py
+import numpy as np
+# import pandas as pd
+from path import Path
+from scipy.misc import imread
+from tqdm import tqdm
+
+
+class test_framework_KITTI(object):
+ def __init__(self, root, sequence_set, seq_length=3, step=1):
+ self.root = root
+ self.img_files, self.poses, self.sample_indices = read_scene_data(self.root, sequence_set, seq_length, step)
+
+ def generator(self):
+ for img_list, pose_list, sample_list in zip(self.img_files, self.poses, self.sample_indices):
+ for snippet_indices in sample_list:
+ imgs = [imread(img_list[i]).astype(np.float32) for i in snippet_indices]
+
+ poses = np.stack(pose_list[i] for i in snippet_indices)
+ first_pose = poses[0]
+ poses[:,:,-1] -= first_pose[:,-1]
+ compensated_poses = np.linalg.inv(first_pose[:,:3]) @ poses
+
+ yield {'imgs': imgs,
+ 'path': img_list[0],
+ 'poses': compensated_poses
+ }
+
+ def __iter__(self):
+ return self.generator()
+
+ def __len__(self):
+ return sum(len(imgs) for imgs in self.img_files)
+
+
+def read_scene_data(data_root, sequence_set, seq_length=3, step=1):
+ data_root = Path(data_root)
+ im_sequences = []
+ poses_sequences = []
+ indices_sequences = []
+ demi_length = (seq_length - 1) // 2
+ shift_range = np.array([step*i for i in range(-demi_length, demi_length + 1)]).reshape(1, -1)
+
+ sequences = set()
+ for seq in sequence_set:
+ corresponding_dirs = set((data_root/'sequences').dirs(seq))
+ sequences = sequences | corresponding_dirs
+
+ print('getting test metadata for theses sequences : {}'.format(sequences))
+ for sequence in tqdm(sequences):
+ poses = np.genfromtxt(data_root/'poses'/'{}.txt'.format(sequence.name)).astype(np.float64).reshape(-1, 3, 4)
+ imgs = sorted((sequence/'image_2').files('*.png'))
+ # construct 5-snippet sequences
+ tgt_indices = np.arange(demi_length, len(imgs) - demi_length).reshape(-1, 1)
+ snippet_indices = shift_range + tgt_indices
+ im_sequences.append(imgs)
+ poses_sequences.append(poses)
+ indices_sequences.append(snippet_indices)
+ return im_sequences, poses_sequences, indices_sequences
\ No newline at end of file
diff --git a/kitti_eval/test_files_eigen.txt b/kitti_eval/test_files_eigen.txt
new file mode 100644
index 0000000..a1326a8
--- /dev/null
+++ b/kitti_eval/test_files_eigen.txt
@@ -0,0 +1,697 @@
+2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000069.png
+2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000054.png
+2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000042.png
+2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000057.png
+2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000030.png
+2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000027.png
+2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000012.png
+2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000075.png
+2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000036.png
+2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000033.png
+2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000015.png
+2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000072.png
+2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000003.png
+2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000039.png
+2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000009.png
+2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000051.png
+2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000060.png
+2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000021.png
+2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000000.png
+2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000024.png
+2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000045.png
+2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000018.png
+2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000048.png
+2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000006.png
+2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000063.png
+2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000000.png
+2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000016.png
+2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000032.png
+2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000048.png
+2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000064.png
+2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000080.png
+2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000096.png
+2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000112.png
+2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000128.png
+2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000144.png
+2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000160.png
+2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000176.png
+2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000196.png
+2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000212.png
+2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000228.png
+2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000244.png
+2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000260.png
+2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000276.png
+2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000292.png
+2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000308.png
+2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000324.png
+2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000340.png
+2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000356.png
+2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000372.png
+2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000388.png
+2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000090.png
+2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000050.png
+2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000110.png
+2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000115.png
+2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000060.png
+2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000105.png
+2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000125.png
+2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000020.png
+2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000140.png
+2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000085.png
+2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000070.png
+2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000080.png
+2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000065.png
+2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000095.png
+2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000130.png
+2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000100.png
+2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000010.png
+2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000030.png
+2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000000.png
+2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000135.png
+2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000040.png
+2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000005.png
+2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000120.png
+2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000045.png
+2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000035.png
+2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000003.png
+2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000069.png
+2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000057.png
+2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000012.png
+2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000072.png
+2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000018.png
+2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000063.png
+2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000000.png
+2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000084.png
+2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000015.png
+2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000066.png
+2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000006.png
+2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000048.png
+2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000060.png
+2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000009.png
+2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000033.png
+2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000021.png
+2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000075.png
+2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000027.png
+2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000045.png
+2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000078.png
+2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000036.png
+2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000051.png
+2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000054.png
+2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000042.png
+2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000018.png
+2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000090.png
+2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000126.png
+2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000378.png
+2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000036.png
+2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000288.png
+2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000198.png
+2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000450.png
+2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000144.png
+2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000072.png
+2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000252.png
+2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000180.png
+2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000432.png
+2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000396.png
+2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000054.png
+2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000468.png
+2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000306.png
+2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000108.png
+2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000162.png
+2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000342.png
+2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000270.png
+2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000414.png
+2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000216.png
+2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000360.png
+2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000324.png
+2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000077.png
+2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000035.png
+2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000091.png
+2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000112.png
+2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000007.png
+2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000175.png
+2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000042.png
+2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000098.png
+2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000133.png
+2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000161.png
+2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000014.png
+2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000126.png
+2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000168.png
+2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000070.png
+2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000084.png
+2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000140.png
+2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000049.png
+2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000000.png
+2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000182.png
+2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000147.png
+2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000056.png
+2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000063.png
+2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000021.png
+2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000119.png
+2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000028.png
+2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000380.png
+2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000394.png
+2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000324.png
+2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000000.png
+2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000268.png
+2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000366.png
+2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000296.png
+2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000014.png
+2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000028.png
+2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000182.png
+2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000168.png
+2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000196.png
+2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000140.png
+2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000084.png
+2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000056.png
+2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000112.png
+2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000352.png
+2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000126.png
+2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000070.png
+2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000310.png
+2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000154.png
+2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000098.png
+2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000408.png
+2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000042.png
+2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000338.png
+2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000000.png
+2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000128.png
+2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000192.png
+2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000032.png
+2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000352.png
+2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000608.png
+2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000224.png
+2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000576.png
+2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000672.png
+2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000064.png
+2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000448.png
+2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000704.png
+2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000640.png
+2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000512.png
+2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000768.png
+2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000160.png
+2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000416.png
+2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000480.png
+2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000800.png
+2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000288.png
+2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000544.png
+2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000096.png
+2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000384.png
+2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000256.png
+2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000320.png
+2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000000.png
+2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000005.png
+2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000010.png
+2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000015.png
+2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000020.png
+2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000025.png
+2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000030.png
+2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000035.png
+2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000040.png
+2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000045.png
+2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000050.png
+2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000055.png
+2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000060.png
+2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000065.png
+2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000070.png
+2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000075.png
+2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000080.png
+2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000085.png
+2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000090.png
+2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000095.png
+2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000100.png
+2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000105.png
+2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000110.png
+2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000115.png
+2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000120.png
+2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000000.png
+2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000001.png
+2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000002.png
+2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000003.png
+2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000004.png
+2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000005.png
+2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000006.png
+2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000007.png
+2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000008.png
+2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000009.png
+2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000010.png
+2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000011.png
+2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000012.png
+2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000013.png
+2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000014.png
+2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000015.png
+2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000016.png
+2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000017.png
+2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000018.png
+2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000019.png
+2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000020.png
+2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000021.png
+2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000046.png
+2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000014.png
+2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000036.png
+2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000028.png
+2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000026.png
+2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000050.png
+2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000040.png
+2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000008.png
+2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000016.png
+2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000044.png
+2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000018.png
+2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000032.png
+2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000042.png
+2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000010.png
+2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000020.png
+2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000048.png
+2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000052.png
+2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000006.png
+2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000030.png
+2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000012.png
+2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000038.png
+2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000000.png
+2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000002.png
+2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000004.png
+2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000022.png
+2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000011.png
+2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000033.png
+2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000242.png
+2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000253.png
+2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000286.png
+2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000154.png
+2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000099.png
+2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000220.png
+2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000022.png
+2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000077.png
+2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000187.png
+2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000143.png
+2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000066.png
+2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000176.png
+2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000110.png
+2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000275.png
+2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000264.png
+2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000198.png
+2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000055.png
+2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000088.png
+2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000121.png
+2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000209.png
+2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000165.png
+2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000231.png
+2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000044.png
+2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000056.png
+2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000000.png
+2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000344.png
+2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000358.png
+2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000316.png
+2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000238.png
+2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000098.png
+2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000112.png
+2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000028.png
+2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000014.png
+2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000330.png
+2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000154.png
+2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000042.png
+2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000302.png
+2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000182.png
+2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000288.png
+2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000140.png
+2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000274.png
+2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000224.png
+2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000372.png
+2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000196.png
+2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000126.png
+2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000084.png
+2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000210.png
+2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000070.png
+2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000528.png
+2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000308.png
+2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000044.png
+2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000352.png
+2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000066.png
+2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000000.png
+2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000506.png
+2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000176.png
+2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000022.png
+2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000242.png
+2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000462.png
+2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000418.png
+2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000110.png
+2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000440.png
+2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000396.png
+2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000154.png
+2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000374.png
+2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000088.png
+2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000286.png
+2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000550.png
+2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000264.png
+2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000220.png
+2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000330.png
+2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000484.png
+2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000198.png
+2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000283.png
+2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000361.png
+2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000270.png
+2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000127.png
+2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000205.png
+2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000218.png
+2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000153.png
+2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000335.png
+2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000192.png
+2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000348.png
+2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000101.png
+2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000049.png
+2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000179.png
+2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000140.png
+2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000374.png
+2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000322.png
+2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000309.png
+2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000244.png
+2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000062.png
+2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000257.png
+2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000088.png
+2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000114.png
+2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000075.png
+2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000296.png
+2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000231.png
+2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000007.png
+2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000196.png
+2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000439.png
+2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000169.png
+2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000115.png
+2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000034.png
+2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000304.png
+2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000331.png
+2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000277.png
+2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000520.png
+2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000682.png
+2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000628.png
+2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000088.png
+2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000601.png
+2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000574.png
+2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000223.png
+2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000655.png
+2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000358.png
+2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000412.png
+2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000142.png
+2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000385.png
+2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000061.png
+2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000493.png
+2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000466.png
+2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000250.png
+2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000000.png
+2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000016.png
+2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000032.png
+2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000048.png
+2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000064.png
+2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000080.png
+2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000096.png
+2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000112.png
+2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000128.png
+2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000144.png
+2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000160.png
+2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000176.png
+2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000192.png
+2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000208.png
+2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000224.png
+2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000240.png
+2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000256.png
+2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000305.png
+2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000321.png
+2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000337.png
+2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000353.png
+2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000369.png
+2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000385.png
+2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000401.png
+2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000417.png
+2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000000.png
+2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000019.png
+2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000038.png
+2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000057.png
+2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000076.png
+2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000095.png
+2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000114.png
+2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000133.png
+2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000152.png
+2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000171.png
+2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000190.png
+2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000209.png
+2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000228.png
+2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000247.png
+2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000266.png
+2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000285.png
+2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000304.png
+2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000323.png
+2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000342.png
+2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000361.png
+2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000380.png
+2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000399.png
+2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000418.png
+2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000437.png
+2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000456.png
+2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000692.png
+2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000930.png
+2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000760.png
+2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000896.png
+2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000284.png
+2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000148.png
+2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000522.png
+2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000794.png
+2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000624.png
+2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000726.png
+2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000216.png
+2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000318.png
+2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000488.png
+2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000590.png
+2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000454.png
+2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000862.png
+2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000386.png
+2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000352.png
+2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000420.png
+2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000658.png
+2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000828.png
+2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000556.png
+2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000114.png
+2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000182.png
+2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000080.png
+2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000015.png
+2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000035.png
+2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000043.png
+2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000051.png
+2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000059.png
+2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000067.png
+2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000075.png
+2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000083.png
+2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000091.png
+2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000099.png
+2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000107.png
+2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000115.png
+2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000123.png
+2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000131.png
+2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000139.png
+2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000147.png
+2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000155.png
+2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000163.png
+2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000171.png
+2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000179.png
+2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000187.png
+2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000195.png
+2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000203.png
+2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000211.png
+2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000219.png
+2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000312.png
+2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000494.png
+2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000104.png
+2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000130.png
+2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000156.png
+2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000182.png
+2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000598.png
+2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000416.png
+2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000364.png
+2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000026.png
+2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000078.png
+2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000572.png
+2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000468.png
+2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000260.png
+2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000624.png
+2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000234.png
+2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000442.png
+2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000390.png
+2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000546.png
+2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000286.png
+2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000000.png
+2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000338.png
+2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000208.png
+2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000650.png
+2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000052.png
+2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000024.png
+2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000021.png
+2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000036.png
+2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000000.png
+2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000051.png
+2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000018.png
+2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000033.png
+2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000090.png
+2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000045.png
+2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000054.png
+2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000012.png
+2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000039.png
+2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000009.png
+2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000003.png
+2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000030.png
+2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000078.png
+2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000060.png
+2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000048.png
+2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000084.png
+2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000081.png
+2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000006.png
+2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000057.png
+2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000072.png
+2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000087.png
+2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000063.png
+2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000252.png
+2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000540.png
+2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000001054.png
+2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000036.png
+2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000360.png
+2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000807.png
+2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000879.png
+2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000288.png
+2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000771.png
+2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000000.png
+2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000216.png
+2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000951.png
+2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000324.png
+2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000432.png
+2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000504.png
+2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000576.png
+2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000108.png
+2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000180.png
+2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000072.png
+2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000612.png
+2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000915.png
+2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000735.png
+2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000144.png
+2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000396.png
+2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000468.png
+2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000132.png
+2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000011.png
+2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000154.png
+2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000022.png
+2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000242.png
+2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000198.png
+2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000176.png
+2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000231.png
+2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000275.png
+2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000220.png
+2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000088.png
+2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000143.png
+2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000055.png
+2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000033.png
+2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000187.png
+2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000110.png
+2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000044.png
+2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000077.png
+2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000066.png
+2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000000.png
+2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000165.png
+2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000264.png
+2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000253.png
+2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000209.png
+2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000121.png
+2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000000107.png
+2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000002247.png
+2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000001391.png
+2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000000535.png
+2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000001819.png
+2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000001177.png
+2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000000428.png
+2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000001926.png
+2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000000749.png
+2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000001284.png
+2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000002140.png
+2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000001605.png
+2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000001498.png
+2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000000642.png
+2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000002740.png
+2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000002419.png
+2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000000856.png
+2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000002526.png
+2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000001712.png
+2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000001070.png
+2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000000000.png
+2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000002033.png
+2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000000214.png
+2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000000963.png
+2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000002633.png
+2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000533.png
+2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000001040.png
+2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000082.png
+2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000205.png
+2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000835.png
+2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000451.png
+2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000164.png
+2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000794.png
+2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000328.png
+2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000615.png
+2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000917.png
+2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000369.png
+2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000287.png
+2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000123.png
+2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000876.png
+2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000410.png
+2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000492.png
+2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000958.png
+2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000656.png
+2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000000.png
+2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000753.png
+2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000574.png
+2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000001081.png
+2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000041.png
+2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000246.png
+2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000002906.png
+2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000002544.png
+2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000000362.png
+2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000004535.png
+2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000000734.png
+2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000001096.png
+2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000004173.png
+2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000000543.png
+2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000001277.png
+2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000004354.png
+2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000001458.png
+2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000001820.png
+2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000003449.png
+2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000003268.png
+2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000000915.png
+2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000002363.png
+2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000002725.png
+2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000000181.png
+2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000001639.png
+2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000003992.png
+2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000003087.png
+2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000002001.png
+2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000003811.png
+2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000003630.png
+2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000000000.png
+2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000096.png
+2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000800.png
+2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000320.png
+2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000576.png
+2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000000.png
+2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000480.png
+2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000640.png
+2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000032.png
+2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000384.png
+2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000160.png
+2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000704.png
+2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000736.png
+2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000672.png
+2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000064.png
+2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000288.png
+2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000352.png
+2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000512.png
+2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000544.png
+2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000608.png
+2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000128.png
+2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000224.png
+2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000416.png
+2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000192.png
+2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000448.png
+2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000768.png
diff --git a/logger.py b/logger.py
new file mode 100644
index 0000000..04f3662
--- /dev/null
+++ b/logger.py
@@ -0,0 +1,89 @@
+from blessings import Terminal
+import progressbar
+import sys
+
+
+class TermLogger(object):
+ def __init__(self, n_epochs, train_size, valid_size):
+ self.n_epochs = n_epochs
+ self.train_size = train_size
+ self.valid_size = valid_size
+ self.t = Terminal()
+ s = 10
+ e = 1 # epoch bar position
+ tr = 3 # train bar position
+ ts = 6 # valid bar position
+ h = self.t.height
+
+ for i in range(10):
+ print('')
+ self.epoch_bar = progressbar.ProgressBar(maxval=n_epochs, fd=Writer(self.t, (0, h-s+e)))
+
+ self.train_writer = Writer(self.t, (0, h-s+tr))
+ self.train_bar_writer = Writer(self.t, (0, h-s+tr+1))
+
+ self.valid_writer = Writer(self.t, (0, h-s+ts))
+ self.valid_bar_writer = Writer(self.t, (0, h-s+ts+1))
+
+ self.reset_train_bar()
+ self.reset_valid_bar()
+
+ def reset_train_bar(self):
+ self.train_bar = progressbar.ProgressBar(maxval=self.train_size, fd=self.train_bar_writer).start()
+
+ def reset_valid_bar(self):
+ self.valid_bar = progressbar.ProgressBar(maxval=self.valid_size, fd=self.valid_bar_writer).start()
+
+
+class Writer(object):
+ """Create an object with a write method that writes to a
+ specific place on the screen, defined at instantiation.
+
+ This is the glue between blessings and progressbar.
+ """
+
+ def __init__(self, t, location):
+ """
+ Input: location - tuple of ints (x, y), the position
+ of the bar in the terminal
+ """
+ self.location = location
+ self.t = t
+
+ def write(self, string):
+ with self.t.location(*self.location):
+ sys.stdout.write("\033[K")
+ print(string)
+
+ def flush(self):
+ return
+
+
+class AverageMeter(object):
+ """Computes and stores the average and current value"""
+
+ def __init__(self, i=1, precision=3):
+ self.meters = i
+ self.precision = precision
+ self.reset(self.meters)
+
+ def reset(self, i):
+ self.val = [0]*i
+ self.avg = [0]*i
+ self.sum = [0]*i
+ self.count = 0
+
+ def update(self, val, n=1):
+ if not isinstance(val, list):
+ val = [val]
+ assert(len(val) == self.meters)
+ self.count += n
+ for i,v in enumerate(val):
+ self.val[i] = v
+ self.sum[i] += v * n
+ self.avg[i] = self.sum[i] / self.count
+
+ def __repr__(self):
+ val = ' '.join(['{:.{}f}'.format(v, self.precision) for v in self.val])
+ avg = ' '.join(['{:.{}f}'.format(a, self.precision) for a in self.avg])
+ return '{} ({})'.format(val, avg)
diff --git a/loss_functions.py b/loss_functions.py
new file mode 100644
index 0000000..dc0728e
--- /dev/null
+++ b/loss_functions.py
@@ -0,0 +1,467 @@
+# Author: Anurag Ranjan
+# Copyright (c) 2019, Anurag Ranjan
+# All rights reserved.
+# based on github.com/ClementPinard/SfMLearner-Pytorch
+
+import torch
+from torch import nn
+from torch.autograd import Variable
+from inverse_warp import inverse_warp, flow_warp, pose2flow
+from ssim import ssim
+epsilon = 1e-8
+
+def spatial_normalize(disp):
+ _mean = disp.mean(dim=1, keepdim=True).mean(dim=2, keepdim=True).mean(dim=3, keepdim=True)
+ disp = disp / _mean
+ return disp
+
+def robust_l1(x, q=0.5, eps=1e-2):
+ x = torch.pow((x.pow(2) + eps), q)
+ x = x.mean()
+ return x
+
+def robust_l1_per_pix(x, q=0.5, eps=1e-2):
+ x = torch.pow((x.pow(2) + eps), q)
+ return x
+
+def photometric_flow_loss(tgt_img, ref_imgs, flows, explainability_mask, lambda_oob=0, qch=0.5, wssim=0.5):
+ def one_scale(explainability_mask, occ_masks, flows):
+ assert(explainability_mask is None or flows[0].size()[2:] == explainability_mask.size()[2:])
+ assert(len(flows) == len(ref_imgs))
+
+ reconstruction_loss = 0
+ b, _, h, w = flows[0].size()
+ downscale = tgt_img.size(2)/h
+
+ tgt_img_scaled = nn.functional.adaptive_avg_pool2d(tgt_img, (h, w))
+ ref_imgs_scaled = [nn.functional.adaptive_avg_pool2d(ref_img, (h, w)) for ref_img in ref_imgs]
+
+ weight = 1.
+
+ for i, ref_img in enumerate(ref_imgs_scaled):
+ current_flow = flows[i]
+
+ ref_img_warped = flow_warp(ref_img, current_flow)
+ valid_pixels = 1 - (ref_img_warped == 0).prod(1, keepdim=True).type_as(ref_img_warped)
+ diff = (tgt_img_scaled - ref_img_warped) * valid_pixels
+ ssim_loss = 1 - ssim(tgt_img_scaled, ref_img_warped) * valid_pixels
+ oob_normalization_const = valid_pixels.nelement()/valid_pixels.sum()
+
+ if explainability_mask is not None:
+ diff = diff * explainability_mask[:,i:i+1].expand_as(diff)
+ ssim_loss = ssim_loss * explainability_mask[:,i:i+1].expand_as(ssim_loss)
+
+ if occ_masks is not None:
+ diff = diff *(1-occ_masks[:,i:i+1]).expand_as(diff)
+ ssim_loss = ssim_loss*(1-occ_masks[:,i:i+1]).expand_as(ssim_loss)
+
+ reconstruction_loss += (1- wssim)*weight*oob_normalization_const*(robust_l1(diff, q=qch) + wssim*ssim_loss.mean()) + lambda_oob*robust_l1(1 - valid_pixels, q=qch)
+ #weight /= 2.83
+ assert((reconstruction_loss == reconstruction_loss).item() == 1)
+
+ return reconstruction_loss
+
+ if type(flows[0]) not in [tuple, list]:
+ if explainability_mask is not None:
+ explainability_mask = [explainability_mask]
+ flows = [[uv] for uv in flows]
+
+ loss = 0
+ for i in range(len(flows[0])):
+ flow_at_scale = [uv[i] for uv in flows]
+ occ_mask_at_scale_bw, occ_mask_at_scale_fw = occlusion_masks(flow_at_scale[0], flow_at_scale[1])
+ occ_mask_at_scale = torch.stack((occ_mask_at_scale_bw, occ_mask_at_scale_fw), dim=1)
+ # occ_mask_at_scale = None
+ loss += one_scale(explainability_mask[i], occ_mask_at_scale, flow_at_scale)
+
+ return loss
+
+
+def photometric_reconstruction_loss(tgt_img, ref_imgs, intrinsics, intrinsics_inv, depth, explainability_mask, pose, rotation_mode='euler', padding_mode='zeros', lambda_oob=0, qch=0.5, wssim=0.5):
+ def one_scale(depth, explainability_mask, occ_masks):
+ assert(explainability_mask is None or depth.size()[2:] == explainability_mask.size()[2:])
+ assert(pose.size(1) == len(ref_imgs))
+
+ reconstruction_loss = 0
+ b, _, h, w = depth.size()
+ downscale = tgt_img.size(2)/h
+
+ tgt_img_scaled = nn.functional.adaptive_avg_pool2d(tgt_img, (h, w))
+ ref_imgs_scaled = [nn.functional.adaptive_avg_pool2d(ref_img, (h, w)) for ref_img in ref_imgs]
+ intrinsics_scaled = torch.cat((intrinsics[:, 0:2]/downscale, intrinsics[:, 2:]), dim=1)
+ intrinsics_scaled_inv = torch.cat((intrinsics_inv[:, :, 0:2]*downscale, intrinsics_inv[:, :, 2:]), dim=2)
+
+ weight = 1.
+
+ for i, ref_img in enumerate(ref_imgs_scaled):
+ current_pose = pose[:, i]
+
+ ref_img_warped = inverse_warp(ref_img, depth[:,0], current_pose, intrinsics_scaled, intrinsics_scaled_inv, rotation_mode, padding_mode)
+ valid_pixels = 1 - (ref_img_warped == 0).prod(1, keepdim=True).type_as(ref_img_warped)
+ diff = (tgt_img_scaled - ref_img_warped) * valid_pixels
+ ssim_loss = 1 - ssim(tgt_img_scaled, ref_img_warped) * valid_pixels
+ oob_normalization_const = valid_pixels.nelement()/valid_pixels.sum()
+
+ assert((oob_normalization_const == oob_normalization_const).item() == 1)
+
+ if explainability_mask is not None:
+ diff = diff * (1 - occ_masks[:,i:i+1])* explainability_mask[:,i:i+1].expand_as(diff)
+ ssim_loss = ssim_loss * (1 - occ_masks[:,i:i+1])* explainability_mask[:,i:i+1].expand_as(ssim_loss)
+ else:
+ diff = diff *(1-occ_masks[:,i:i+1]).expand_as(diff)
+ ssim_loss = ssim_loss*(1-occ_masks[:,i:i+1]).expand_as(ssim_loss)
+
+ reconstruction_loss += (1- wssim)*weight*oob_normalization_const*(robust_l1(diff, q=qch) + wssim*ssim_loss.mean()) + lambda_oob*robust_l1(1 - valid_pixels, q=qch)
+ assert((reconstruction_loss == reconstruction_loss).item() == 1)
+ #weight /= 2.83
+ return reconstruction_loss
+
+ if type(explainability_mask) not in [tuple, list]:
+ explainability_mask = [explainability_mask]
+ if type(depth) not in [list, tuple]:
+ depth = [depth]
+
+ loss = 0
+ for d, mask in zip(depth, explainability_mask):
+ occ_masks = depth_occlusion_masks(d, pose, intrinsics, intrinsics_inv)
+ loss += one_scale(d, mask, occ_masks)
+ return loss
+
+
+
+def depth_occlusion_masks(depth, pose, intrinsics, intrinsics_inv):
+ flow_cam = [pose2flow(depth.squeeze(), pose[:,i], intrinsics, intrinsics_inv) for i in range(pose.size(1))]
+ masks1, masks2 = occlusion_masks(flow_cam[1], flow_cam[2])
+ masks0, masks3 = occlusion_masks(flow_cam[0], flow_cam[3])
+ masks = torch.stack((masks0, masks1, masks2, masks3), dim=1)
+ return masks
+
+def gaussian_explainability_loss(mask):
+ if type(mask) not in [tuple, list]:
+ mask = [mask]
+ loss = 0
+ for mask_scaled in mask:
+ loss += torch.exp(-torch.mean((mask_scaled-0.5).pow(2))/0.15)
+ return loss
+
+
+def explainability_loss(mask):
+ if type(mask) not in [tuple, list]:
+ mask = [mask]
+ loss = 0
+ for mask_scaled in mask:
+ ones_var = Variable(torch.ones(1)).expand_as(mask_scaled).type_as(mask_scaled)
+ loss += nn.functional.binary_cross_entropy(mask_scaled, ones_var)
+ return loss
+
+def logical_or(a, b):
+ return 1 - (1 - a)*(1 - b)
+
+def consensus_exp_masks(cam_flows_fwd, cam_flows_bwd, flows_fwd, flows_bwd, tgt_img, ref_img_fwd, ref_img_bwd, wssim, wrig, ws=0.1):
+ def one_scale(cam_flow_fwd, cam_flow_bwd, flow_fwd, flow_bwd, tgt_img, ref_img_fwd, ref_img_bwd, ws):
+ b, _, h, w = cam_flow_fwd.size()
+ tgt_img_scaled = nn.functional.adaptive_avg_pool2d(tgt_img, (h, w))
+ ref_img_scaled_fwd = nn.functional.adaptive_avg_pool2d(ref_img_fwd, (h, w))
+ ref_img_scaled_bwd = nn.functional.adaptive_avg_pool2d(ref_img_bwd, (h, w))
+
+ cam_warped_im_fwd = flow_warp(ref_img_scaled_fwd, cam_flow_fwd)
+ cam_warped_im_bwd = flow_warp(ref_img_scaled_bwd, cam_flow_bwd)
+
+ flow_warped_im_fwd = flow_warp(ref_img_scaled_fwd, flow_fwd)
+ flow_warped_im_bwd = flow_warp(ref_img_scaled_bwd, flow_bwd)
+
+ valid_pixels_cam_fwd = 1 - (cam_warped_im_fwd == 0).prod(1, keepdim=True).type_as(cam_warped_im_fwd)
+ valid_pixels_cam_bwd = 1 - (cam_warped_im_bwd == 0).prod(1, keepdim=True).type_as(cam_warped_im_bwd)
+ valid_pixels_cam = logical_or(valid_pixels_cam_fwd, valid_pixels_cam_bwd) # if one of them is valid, then valid
+
+ valid_pixels_flow_fwd = 1 - (flow_warped_im_fwd == 0).prod(1, keepdim=True).type_as(flow_warped_im_fwd)
+ valid_pixels_flow_bwd = 1 - (flow_warped_im_bwd == 0).prod(1, keepdim=True).type_as(flow_warped_im_bwd)
+ valid_pixels_flow = logical_or(valid_pixels_flow_fwd, valid_pixels_flow_bwd) # if one of them is valid, then valid
+
+ cam_err_fwd = ((1-wssim)*robust_l1_per_pix(tgt_img_scaled - cam_warped_im_fwd).mean(1,keepdim=True) \
+ + wssim*(1 - ssim(tgt_img_scaled, cam_warped_im_fwd)).mean(1, keepdim=True))
+ cam_err_bwd = ((1-wssim)*robust_l1_per_pix(tgt_img_scaled - cam_warped_im_bwd).mean(1,keepdim=True) \
+ + wssim*(1 - ssim(tgt_img_scaled, cam_warped_im_bwd)).mean(1, keepdim=True))
+ cam_err = torch.min(cam_err_fwd, cam_err_bwd) * valid_pixels_cam
+
+ flow_err = (1-wssim)*robust_l1_per_pix(tgt_img_scaled - flow_warped_im_fwd).mean(1, keepdim=True) \
+ + wssim*(1 - ssim(tgt_img_scaled, flow_warped_im_fwd)).mean(1, keepdim=True)
+ # flow_err_bwd = (1-wssim)*robust_l1_per_pix(tgt_img_scaled - flow_warped_im_bwd).mean(1, keepdim=True) \
+ # + wssim*(1 - ssim(tgt_img_scaled, flow_warped_im_bwd)).mean(1, keepdim=True)
+ # flow_err = torch.min(flow_err_fwd, flow_err_bwd)
+
+ exp_target = (wrig*cam_err <= (flow_err+epsilon)).type_as(cam_err)
+
+ return exp_target
+
+ exp_masks_target = []
+ for i in range(len(cam_flows_fwd)):
+ exp_masks_target.append(one_scale(cam_flows_fwd[i], cam_flows_bwd[i], flows_fwd[i], flows_bwd[i], tgt_img, ref_img_fwd, ref_img_bwd, ws))
+ ws = ws / 2.3
+
+ return exp_masks_target
+
+def compute_joint_mask_for_depth(explainability_mask, rigidity_mask_bwd, rigidity_mask_fwd, THRESH):
+ joint_masks = []
+ for i in range(len(explainability_mask)):
+ exp_mask_one_scale = explainability_mask[i]
+ rigidity_mask_fwd_one_scale = (rigidity_mask_fwd[i] > THRESH).type_as(exp_mask_one_scale)
+ rigidity_mask_bwd_one_scale = (rigidity_mask_bwd[i] > THRESH).type_as(exp_mask_one_scale)
+ exp_mask_one_scale_joint = 1 - (1-exp_mask_one_scale[:,1])*(1-exp_mask_one_scale[:,2]).unsqueeze(1) > 0.5
+ joint_mask_one_scale_fwd = logical_or(rigidity_mask_fwd_one_scale.type_as(exp_mask_one_scale), exp_mask_one_scale_joint.type_as(exp_mask_one_scale))
+ joint_mask_one_scale_bwd = logical_or(rigidity_mask_bwd_one_scale.type_as(exp_mask_one_scale), exp_mask_one_scale_joint.type_as(exp_mask_one_scale))
+ joint_mask_one_scale_fwd = Variable(joint_mask_one_scale_fwd.data, requires_grad=False)
+ joint_mask_one_scale_bwd = Variable(joint_mask_one_scale_bwd.data, requires_grad=False)
+ joint_mask_one_scale = torch.cat((joint_mask_one_scale_bwd, joint_mask_one_scale_bwd,
+ joint_mask_one_scale_fwd, joint_mask_one_scale_fwd), dim=1)
+ joint_masks.append(joint_mask_one_scale)
+
+ return joint_masks
+
+def consensus_depth_flow_mask(explainability_mask, census_mask_bwd, census_mask_fwd, exp_masks_bwd_target, exp_masks_fwd_target, THRESH, wbce):
+ # Loop over each scale
+ assert(len(explainability_mask)==len(census_mask_bwd))
+ assert(len(explainability_mask)==len(census_mask_fwd))
+ loss = 0.
+ for i in range(len(explainability_mask)):
+ exp_mask_one_scale = explainability_mask[i]
+ census_mask_fwd_one_scale = (census_mask_fwd[i] < THRESH).type_as(exp_mask_one_scale).prod(dim=1, keepdim=True)
+ census_mask_bwd_one_scale = (census_mask_bwd[i] < THRESH).type_as(exp_mask_one_scale).prod(dim=1, keepdim=True)
+
+ #Using the pixelwise consensus term
+ exp_fwd_target_one_scale = exp_masks_fwd_target[i]
+ exp_bwd_target_one_scale = exp_masks_bwd_target[i]
+ census_mask_fwd_one_scale = logical_or(census_mask_fwd_one_scale, exp_fwd_target_one_scale)
+ census_mask_bwd_one_scale = logical_or(census_mask_bwd_one_scale, exp_bwd_target_one_scale)
+
+ # OR gate for constraining only rigid pixels
+ # exp_mask_fwd_one_scale = (exp_mask_one_scale[:,2].unsqueeze(1) > 0.5).type_as(exp_mask_one_scale)
+ # exp_mask_bwd_one_scale = (exp_mask_one_scale[:,1].unsqueeze(1) > 0.5).type_as(exp_mask_one_scale)
+ # census_mask_fwd_one_scale = 1- (1-census_mask_fwd_one_scale)*(1-exp_mask_fwd_one_scale)
+ # census_mask_bwd_one_scale = 1- (1-census_mask_bwd_one_scale)*(1-exp_mask_bwd_one_scale)
+
+ census_mask_fwd_one_scale = Variable(census_mask_fwd_one_scale.data, requires_grad=False)
+ census_mask_bwd_one_scale = Variable(census_mask_bwd_one_scale.data, requires_grad=False)
+
+ rigidity_mask_combined = torch.cat((census_mask_bwd_one_scale, census_mask_bwd_one_scale,
+ census_mask_fwd_one_scale, census_mask_fwd_one_scale), dim=1)
+ loss += weighted_binary_cross_entropy(exp_mask_one_scale, rigidity_mask_combined.type_as(exp_mask_one_scale), [wbce, 1-wbce])
+
+ return loss
+
+def weighted_binary_cross_entropy(output, target, weights=None):
+ if weights is not None:
+ assert len(weights) == 2
+
+ loss = weights[1] * (target * torch.log(output + epsilon)) + \
+ weights[0] * ((1 - target) * torch.log(1 - output + epsilon))
+ else:
+ loss = target * torch.log(output + epsilon) + (1 - target) * torch.log(1 - output + epsilon)
+
+ return torch.neg(torch.mean(loss))
+
+def edge_aware_smoothness_per_pixel(img, pred):
+ def gradient_x(img):
+ gx = img[:,:,:-1,:] - img[:,:,1:,:]
+ return gx
+
+ def gradient_y(img):
+ gy = img[:,:,:,:-1] - img[:,:,:,1:]
+ return gy
+
+ pred_gradients_x = gradient_x(pred)
+ pred_gradients_y = gradient_y(pred)
+
+ image_gradients_x = gradient_x(img)
+ image_gradients_y = gradient_y(img)
+
+ weights_x = torch.exp(-torch.mean(torch.abs(image_gradients_x), 1, keepdim=True))
+ weights_y = torch.exp(-torch.mean(torch.abs(image_gradients_y), 1, keepdim=True))
+
+ smoothness_x = torch.abs(pred_gradients_x) * weights_x
+ smoothness_y = torch.abs(pred_gradients_y) * weights_y
+ import ipdb; ipdb.set_trace()
+ return smoothness_x + smoothness_y
+
+
+def edge_aware_smoothness_loss(img, pred_disp):
+ def gradient_x(img):
+ gx = img[:,:,:-1,:] - img[:,:,1:,:]
+ return gx
+
+ def gradient_y(img):
+ gy = img[:,:,:,:-1] - img[:,:,:,1:]
+ return gy
+
+ def get_edge_smoothness(img, pred):
+ pred_gradients_x = gradient_x(pred)
+ pred_gradients_y = gradient_y(pred)
+
+ image_gradients_x = gradient_x(img)
+ image_gradients_y = gradient_y(img)
+
+ weights_x = torch.exp(-torch.mean(torch.abs(image_gradients_x), 1, keepdim=True))
+ weights_y = torch.exp(-torch.mean(torch.abs(image_gradients_y), 1, keepdim=True))
+
+ smoothness_x = torch.abs(pred_gradients_x) * weights_x
+ smoothness_y = torch.abs(pred_gradients_y) * weights_y
+ return torch.mean(smoothness_x) + torch.mean(smoothness_y)
+
+ loss = 0
+ weight = 1.
+
+ for scaled_disp in pred_disp:
+ b, _, h, w = scaled_disp.size()
+ scaled_img = nn.functional.adaptive_avg_pool2d(img, (h, w))
+ loss += get_edge_smoothness(scaled_img, scaled_disp)
+ weight /= 2.3 # 2sqrt(2)
+
+ return loss
+
+
+
+def smooth_loss(pred_disp):
+ def gradient(pred):
+ D_dy = pred[:, :, 1:] - pred[:, :, :-1]
+ D_dx = pred[:, :, :, 1:] - pred[:, :, :, :-1]
+ return D_dx, D_dy
+
+ if type(pred_disp) not in [tuple, list]:
+ pred_disp = [pred_disp]
+
+ loss = 0
+ weight = 1.
+
+ for scaled_disp in pred_disp:
+ dx, dy = gradient(scaled_disp)
+ dx2, dxdy = gradient(dx)
+ dydx, dy2 = gradient(dy)
+ loss += (dx2.abs().mean() + dxdy.abs().mean() + dydx.abs().mean() + dy2.abs().mean())*weight
+ weight /= 2.3 # 2sqrt(2)
+ return loss
+
+def occlusion_masks(flow_bw, flow_fw):
+ mag_sq = flow_fw.pow(2).sum(dim=1) + flow_bw.pow(2).sum(dim=1)
+ #flow_bw_warped = flow_warp(flow_bw, flow_fw)
+ #flow_fw_warped = flow_warp(flow_fw, flow_bw)
+ flow_diff_fw = flow_fw + flow_bw
+ flow_diff_bw = flow_bw + flow_fw
+ occ_thresh = 0.08 * mag_sq + 1.0
+ occ_fw = flow_diff_fw.sum(dim=1) > occ_thresh
+ occ_bw = flow_diff_bw.sum(dim=1) > occ_thresh
+ return occ_bw.type_as(flow_bw), occ_fw.type_as(flow_fw)
+# return torch.stack((occ_bw.type_as(flow_bw), occ_fw.type_as(flow_fw)), dim=1)
+
+def flow_diff(gt, pred):
+ _, _, h_pred, w_pred = pred.size()
+ bs, nc, h_gt, w_gt = gt.size()
+ u_gt, v_gt = gt[:,0,:,:], gt[:,1,:,:]
+ pred = nn.functional.upsample(pred, size=(h_gt, w_gt), mode='bilinear')
+ u_pred = pred[:,0,:,:] * (w_gt/w_pred)
+ v_pred = pred[:,1,:,:] * (h_gt/h_pred)
+
+ diff = torch.sqrt(torch.pow((u_gt - u_pred), 2) + torch.pow((v_gt - v_pred), 2))
+
+ return diff
+
+
+def compute_epe(gt, pred):
+ _, _, h_pred, w_pred = pred.size()
+ bs, nc, h_gt, w_gt = gt.size()
+
+ u_gt, v_gt = gt[:,0,:,:], gt[:,1,:,:]
+ pred = nn.functional.upsample(pred, size=(h_gt, w_gt), mode='bilinear')
+ u_pred = pred[:,0,:,:] * (w_gt/w_pred)
+ v_pred = pred[:,1,:,:] * (h_gt/h_pred)
+
+ epe = torch.sqrt(torch.pow((u_gt - u_pred), 2) + torch.pow((v_gt - v_pred), 2))
+
+ if nc == 3:
+ valid = gt[:,2,:,:]
+ epe = epe * valid
+ avg_epe = epe.sum()/(valid.sum() + epsilon)
+ else:
+ avg_epe = epe.sum()/(bs*h_gt*w_gt)
+
+ if type(avg_epe) == Variable: avg_epe = avg_epe.data
+
+ return avg_epe.item()
+
+def outlier_err(gt, pred, tau=[3,0.05]):
+ _, _, h_pred, w_pred = pred.size()
+ bs, nc, h_gt, w_gt = gt.size()
+ u_gt, v_gt, valid_gt = gt[:,0,:,:], gt[:,1,:,:], gt[:,2,:,:]
+ pred = nn.functional.upsample(pred, size=(h_gt, w_gt), mode='bilinear')
+ u_pred = pred[:,0,:,:] * (w_gt/w_pred)
+ v_pred = pred[:,1,:,:] * (h_gt/h_pred)
+
+ epe = torch.sqrt(torch.pow((u_gt - u_pred), 2) + torch.pow((v_gt - v_pred), 2))
+ epe = epe * valid_gt
+
+ F_mag = torch.sqrt(torch.pow(u_gt, 2)+ torch.pow(v_gt, 2))
+ E_0 = (epe > tau[0]).type_as(epe)
+ E_1 = ((epe / (F_mag+epsilon)) > tau[1]).type_as(epe)
+ n_err = E_0 * E_1 * valid_gt
+ #n_err = length(find(F_val & E>tau(1) & E./F_mag>tau(2)));
+ #n_total = length(find(F_val));
+ f_err = n_err.sum()/(valid_gt.sum() + epsilon);
+ if type(f_err) == Variable: f_err = f_err.data
+ return f_err.item()
+
+def compute_all_epes(gt, rigid_pred, non_rigid_pred, rigidity_mask, THRESH=0.5):
+ _, _, h_pred, w_pred = rigid_pred.size()
+ _, _, h_gt, w_gt = gt.size()
+ rigidity_pred_mask = nn.functional.upsample(rigidity_mask, size=(h_pred, w_pred), mode='bilinear')
+ rigidity_gt_mask = nn.functional.upsample(rigidity_mask, size=(h_gt, w_gt), mode='bilinear')
+
+ non_rigid_pred = (rigidity_pred_mask<=THRESH).type_as(non_rigid_pred).expand_as(non_rigid_pred) * non_rigid_pred
+ rigid_pred = (rigidity_pred_mask>THRESH).type_as(rigid_pred).expand_as(rigid_pred) * rigid_pred
+ total_pred = non_rigid_pred + rigid_pred
+
+ gt_non_rigid = (rigidity_gt_mask<=THRESH).type_as(gt).expand_as(gt) * gt
+ gt_rigid = (rigidity_gt_mask>THRESH).type_as(gt).expand_as(gt) * gt
+
+ all_epe = compute_epe(gt, total_pred)
+ rigid_epe = compute_epe(gt_rigid, rigid_pred)
+ non_rigid_epe = compute_epe(gt_non_rigid, non_rigid_pred)
+ outliers = outlier_err(gt, total_pred)
+
+ return [all_epe, rigid_epe, non_rigid_epe, outliers]
+
+
+def compute_errors(gt, pred, crop=True):
+ abs_diff, abs_rel, sq_rel, a1, a2, a3 = 0,0,0,0,0,0
+ batch_size = gt.size(0)
+
+ '''
+ crop used by Garg ECCV16 to reprocude Eigen NIPS14 results
+ construct a mask of False values, with the same size as target
+ and then set to True values inside the crop
+ '''
+ if crop:
+ crop_mask = gt[0] != gt[0]
+ y1,y2 = int(0.40810811 * gt.size(1)), int(0.99189189 * gt.size(1))
+ x1,x2 = int(0.03594771 * gt.size(2)), int(0.96405229 * gt.size(2))
+ crop_mask[y1:y2,x1:x2] = 1
+
+ for current_gt, current_pred in zip(gt, pred):
+ valid = (current_gt > 0) & (current_gt < 80)
+ if crop:
+ valid = valid & crop_mask
+
+ valid_gt = current_gt[valid]
+ valid_pred = current_pred[valid].clamp(1e-3, 80)
+
+ valid_pred = valid_pred * torch.median(valid_gt)/torch.median(valid_pred)
+
+ thresh = torch.max((valid_gt / valid_pred), (valid_pred / valid_gt))
+ a1 += (thresh < 1.25).float().mean()
+ a2 += (thresh < 1.25 ** 2).float().mean()
+ a3 += (thresh < 1.25 ** 3).float().mean()
+
+ abs_diff += torch.mean(torch.abs(valid_gt - valid_pred))
+ abs_rel += torch.mean(torch.abs(valid_gt - valid_pred) / valid_gt)
+
+ sq_rel += torch.mean(((valid_gt - valid_pred)**2) / valid_gt)
+
+ return [metric / batch_size for metric in [abs_diff, abs_rel, sq_rel, a1, a2, a3]]
diff --git a/mnist.py b/mnist.py
new file mode 100644
index 0000000..070c5df
--- /dev/null
+++ b/mnist.py
@@ -0,0 +1,471 @@
+# Author: Anurag Ranjan
+# Copyright (c) 2019, Anurag Ranjan
+# All rights reserved.
+
+import argparse
+import time
+import csv
+import datetime
+import os
+import shutil
+
+import numpy as np
+import torch
+from torch.autograd import Variable
+import torch.backends.cudnn as cudnn
+import torch.optim
+import torch.nn as nn
+import torch.utils.data
+import torchvision
+import torch.nn.functional as F
+
+from logger import TermLogger, AverageMeter
+from path import Path
+from itertools import chain
+from tensorboardX import SummaryWriter
+
+from utils import tensor2array
+
+parser = argparse.ArgumentParser(description='MNIST and SVHN training',
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+parser.add_argument('data', metavar='DIR',
+ help='path to dataset')
+parser.add_argument('--dataset', dest='dataset', type=str, default='both',
+ help='mnist|svhn|both')
+parser.add_argument('--DEBUG', action='store_true', help='DEBUG Mode')
+parser.add_argument('--name', dest='name', type=str, default='demo', required=True,
+ help='name of the experiment, checpoints are stored in checpoints/name')
+parser.add_argument('-j', '--workers', default=4, type=int, metavar='N',
+ help='number of data loading workers')
+parser.add_argument('--epochs', default=100, type=int, metavar='N',
+ help='number of total epochs to run')
+parser.add_argument('--epoch-size', default=0, type=int, metavar='N',
+ help='manual epoch size (will match dataset size if not set)')
+parser.add_argument('-b', '--batch-size', default=100, type=int,
+ metavar='N', help='mini-batch size')
+parser.add_argument('--lr', '--learning-rate', default=0.001, type=float,
+ metavar='LR', help='initial learning rate')
+parser.add_argument('--momentum', default=0.9, type=float, metavar='M',
+ help='momentum for sgd, alpha parameter for adam')
+parser.add_argument('--beta', default=0.999, type=float, metavar='M',
+ help='beta parameters for adam')
+parser.add_argument('--weight-decay', '--wd', default=0, type=float,
+ metavar='W', help='weight decay')
+parser.add_argument('--print-freq', default=10, type=int,
+ metavar='N', help='print frequency')
+
+parser.add_argument('--pretrained-alice', dest='pretrained_alice', default=None, metavar='PATH',
+ help='path to pre-trained alice model')
+parser.add_argument('--pretrained-bob', dest='pretrained_bob', default=None, metavar='PATH',
+ help='path to pre-trained bob model')
+parser.add_argument('--pretrained-mod', dest='pretrained_mod', default=None, metavar='PATH',
+ help='path to pre-trained moderator')
+
+parser.add_argument('--fix-alice', dest='fix_alice', action='store_true', help='do not train alicenet')
+parser.add_argument('--fix-bob', dest='fix_bob', action='store_true', help='do not train bobnet')
+parser.add_argument('--fix-mod', dest='fix_mod', action='store_true', help='do not train moderator')
+parser.add_argument('--wr', default=1., type=float, help='moderator regularization weight')
+
+parser.add_argument('--seed', default=0, type=int, help='seed for random functions, and network initialization')
+parser.add_argument('--log-summary', default='progress_log_summary.csv', metavar='PATH',
+ help='csv where to save per-epoch train and valid stats')
+parser.add_argument('--log-full', default='progress_log_full.csv', metavar='PATH',
+ help='csv where to save per-gradient descent train stats')
+parser.add_argument('--log-output', action='store_true', help='will log dispnet outputs and warped imgs at validation step')
+parser.add_argument('--log-terminal', action='store_true', help='will display progressbar at terminal')
+parser.add_argument('--resume', action='store_true', help='resume from checkpoint')
+parser.add_argument('-f', '--training-output-freq', type=int, help='frequence for outputting dispnet outputs and warped imgs at training for all scales if 0 will not output',
+ metavar='N', default=0)
+
+best_error = -1
+n_iter = 0
+
+class LeNet(nn.Module):
+ def __init__(self, nout=10):
+ super(LeNet, self).__init__()
+ self.conv1 = nn.Conv2d(1, 40, 3, 1)
+ self.conv2 = nn.Conv2d(40, 40, 3, 1)
+ self.fc1 = nn.Linear(40*5*5, 40)
+ self.fc2 = nn.Linear(40, nout)
+
+ def forward(self, x):
+ x = F.relu(self.conv1(x))
+ x = F.max_pool2d(x, 2, 2)
+ x = F.relu(self.conv2(x))
+ x = F.max_pool2d(x, 2, 2)
+ x = x.view(-1, 40*5*5)
+ x = F.relu(self.fc1(x))
+ x = self.fc2(x)
+ return x
+
+ def name(self):
+ return "LeNet"
+
+def mod_regularization_loss(pred_mod):
+ var_loss = torch.abs(F.sigmoid(pred_mod).var() - 0.25)
+ return F.relu(var_loss-0.05)
+
+def collaboration_loss(pred_mod, loss_alice, loss_bob):
+ pseudo_label = (loss_alice < loss_bob).type_as(pred_mod)
+ pseudo_label = Variable(pseudo_label.data).cuda()
+ return F.binary_cross_entropy_with_logits(pred_mod.squeeze(), pseudo_label)
+
+def init_weights(m):
+
+ if type(m) == nn.Linear:
+ torch.nn.init.normal(m.weight, mean=0, std=1)
+ m.bias.data.fill_(0.01)
+
+def save_alice_bob_mod(save_path, alice_state, bob_state, mod_state, is_best, filename='checkpoint.pth.tar'):
+ file_prefixes = ['alice', 'bob', 'mod']
+ states = [alice_state, bob_state, mod_state]
+ for (prefix, state) in zip(file_prefixes, states):
+ torch.save(state, save_path/'{}_{}'.format(prefix,filename))
+
+ if is_best:
+ for prefix in file_prefixes:
+ shutil.copyfile(save_path/'{}_{}'.format(prefix,filename), save_path/'{}_model_best.pth.tar'.format(prefix))
+
+
+def main():
+ global args, best_error, n_iter
+ args = parser.parse_args()
+
+ save_path = Path(args.name)
+ args.data = Path(args.data)
+
+ args.save_path = 'checkpoints'/save_path #/timestamp
+ print('=> will save everything to {}'.format(args.save_path))
+ args.save_path.makedirs_p()
+ torch.manual_seed(args.seed)
+
+ training_writer = SummaryWriter(args.save_path)
+ output_writer= SummaryWriter(args.save_path/'valid')
+
+ print("=> fetching dataset")
+ mnist_transform = torchvision.transforms.Compose([torchvision.transforms.ToTensor(),
+ torchvision.transforms.Normalize((0.1307,), (0.3081,))])
+ trainset_mnist = torchvision.datasets.MNIST(args.data/'mnist', train=True, transform=mnist_transform, target_transform=None, download=True)
+ valset_mnist = torchvision.datasets.MNIST(args.data/'mnist', train=False, transform=mnist_transform, target_transform=None, download=True)
+
+ svhn_transform = torchvision.transforms.Compose([torchvision.transforms.Resize(size=(28,28)),
+ torchvision.transforms.Grayscale(),
+ torchvision.transforms.ToTensor()])
+ trainset_svhn = torchvision.datasets.SVHN(args.data/'svhn', split='train', transform=svhn_transform, target_transform=None, download=True)
+ valset_svhn = torchvision.datasets.SVHN(args.data/'svhn', split='test', transform=svhn_transform, target_transform=None, download=True)
+
+ if args.dataset == 'mnist':
+ print("Training only on MNIST")
+ train_set, val_set = trainset_mnist, valset_mnist
+ elif args.dataset == 'svhn':
+ print("Training only on SVHN")
+ train_set, val_set = trainset_svhn, valset_svhn
+ else:
+ print("Training on both MNIST and SVHN")
+ train_set = torch.utils.data.ConcatDataset([trainset_mnist, trainset_svhn])
+ val_set = torch.utils.data.ConcatDataset([valset_mnist, valset_svhn])
+
+ print('{} Train samples and {} test samples found in MNIST'.format(len(trainset_mnist), len(valset_mnist)))
+ print('{} Train samples and {} test samples found in SVHN'.format(len(trainset_svhn), len(valset_svhn)))
+
+ train_loader = torch.utils.data.DataLoader(
+ train_set, batch_size=args.batch_size, shuffle=True,
+ num_workers=args.workers, pin_memory=True, drop_last=True)
+ val_loader = torch.utils.data.DataLoader(
+ val_set, batch_size=args.batch_size, shuffle=False,
+ num_workers=args.workers, pin_memory=True, drop_last=False)
+
+ if args.epoch_size == 0:
+ args.epoch_size = len(train_loader)
+
+ # create model
+ print("=> creating model")
+
+ alice_net = LeNet()
+ bob_net = LeNet()
+ mod_net = LeNet(nout=1)
+
+ if args.pretrained_alice:
+ print("=> using pre-trained weights from {}".format(args.pretrained_alice))
+ weights = torch.load(args.pretrained_alice)
+ alice_net.load_state_dict(weights['state_dict'], strict=False)
+
+ if args.pretrained_bob:
+ print("=> using pre-trained weights from {}".format(args.pretrained_bob))
+ weights = torch.load(args.pretrained_bob)
+ bob_net.load_state_dict(weights['state_dict'], strict=False)
+
+ if args.pretrained_mod:
+ print("=> using pre-trained weights from {}".format(args.pretrained_mod))
+ weights = torch.load(args.pretrained_mod)
+ mod_net.load_state_dict(weights['state_dict'], strict=False)
+
+ if args.resume:
+ print("=> resuming from checkpoint")
+ alice_weights = torch.load(args.save_path/'alicenet_checkpoint.pth.tar')
+ bob_weights = torch.load(args.save_path/'bobnet_checkpoint.pth.tar')
+ mod_weights = torch.load(args.save_path/'modnet_checkpoint.pth.tar')
+
+ alice_net.load_state_dict(alice_weights['state_dict'])
+ bob_net.load_state_dict(bob_weights['state_dict'])
+ mod_net.load_state_dict(mod_weights['state_dict'])
+
+ cudnn.benchmark = True
+ alice_net = alice_net.cuda()
+ bob_net = bob_net.cuda()
+ mod_net = mod_net.cuda()
+
+ print('=> setting adam solver')
+
+ parameters = chain(alice_net.parameters(), bob_net.parameters(), mod_net.parameters())
+ optimizer_compete = torch.optim.Adam(parameters, args.lr,
+ betas=(args.momentum, args.beta),
+ weight_decay=args.weight_decay)
+
+ optimizer_collaborate = torch.optim.Adam(mod_net.parameters(), args.lr,
+ betas=(args.momentum, args.beta),
+ weight_decay=args.weight_decay)
+
+
+ with open(args.save_path/args.log_summary, 'w') as csvfile:
+ writer = csv.writer(csvfile, delimiter='\t')
+ writer.writerow(['val_loss_full', 'val_loss_alice', 'val_loss_bob'])
+
+ with open(args.save_path/args.log_full, 'w') as csvfile:
+ writer = csv.writer(csvfile, delimiter='\t')
+ writer.writerow(['train_loss_full', 'train_loss_alice', 'train_loss_bob'])
+
+ if args.log_terminal:
+ logger = TermLogger(n_epochs=args.epochs, train_size=min(len(train_loader), args.epoch_size), valid_size=len(val_loader))
+ logger.epoch_bar.start()
+ else:
+ logger=None
+
+ for epoch in range(args.epochs):
+ mode = 'compete' if (epoch%2)==0 else 'collaborate'
+
+ if args.fix_alice:
+ for fparams in alice_net.parameters():
+ fparams.requires_grad = False
+
+ if args.fix_bob:
+ for fparams in bob_net.parameters():
+ fparams.requires_grad = False
+
+ if args.fix_mod:
+ mode = 'compete'
+ for fparams in mod_net.parameters():
+ fparams.requires_grad = False
+
+ if args.log_terminal:
+ logger.epoch_bar.update(epoch)
+ logger.reset_train_bar()
+
+ # train for one epoch
+ if mode == 'compete':
+ train_loss = train(train_loader, alice_net, bob_net, mod_net, optimizer_compete, args.epoch_size, logger, training_writer, mode=mode)
+ elif mode == 'collaborate':
+ train_loss = train(train_loader, alice_net, bob_net, mod_net, optimizer_collaborate, args.epoch_size, logger, training_writer, mode=mode)
+
+ if args.log_terminal:
+ logger.train_writer.write(' * Avg Loss : {:.3f}'.format(train_loss))
+ logger.reset_valid_bar()
+
+ if epoch%1==0:
+
+ # evaluate on validation set
+ errors, error_names = validate(val_loader, alice_net, bob_net, mod_net, epoch, logger, output_writer)
+
+ error_string = ', '.join('{} : {:.3f}'.format(name, error) for name, error in zip(error_names, errors))
+
+ if args.log_terminal:
+ logger.valid_writer.write(' * Avg {}'.format(error_string))
+ else:
+ print('Epoch {} completed'.format(epoch))
+
+ for error, name in zip(errors, error_names):
+ training_writer.add_scalar(name, error, epoch)
+
+ # Up to you to chose the most relevant error to measure your model's performance, careful some measures are to maximize (such as a1,a2,a3)
+
+ if args.fix_alice:
+ decisive_error = errors[2]
+ elif args.fix_bob:
+ decisive_error = errors[1]
+ else:
+ decisive_error = errors[0] # epe_total
+ if best_error < 0:
+ best_error = decisive_error
+
+ # remember lowest error and save checkpoint
+ is_best = decisive_error <= best_error
+ best_error = min(best_error, decisive_error)
+ save_alice_bob_mod(
+ args.save_path, {
+ 'epoch': epoch + 1,
+ 'state_dict': alice_net.state_dict()
+ }, {
+ 'epoch': epoch + 1,
+ 'state_dict': bob_net.state_dict()
+ }, {
+ 'epoch': epoch + 1,
+ 'state_dict': mod_net.state_dict()
+ },
+ is_best)
+
+ with open(args.save_path/args.log_summary, 'a') as csvfile:
+ writer = csv.writer(csvfile, delimiter='\t')
+ writer.writerow([train_loss, decisive_error])
+
+ if args.log_terminal:
+ logger.epoch_bar.finish()
+
+
+def train(train_loader, alice_net, bob_net, mod_net, optimizer, epoch_size, logger=None, train_writer=None, mode='compete'):
+ global args, n_iter
+ batch_time = AverageMeter()
+ data_time = AverageMeter()
+ losses = AverageMeter(precision=4)
+
+ # switch to train mode
+ alice_net.train()
+ bob_net.train()
+ mod_net.train()
+
+ end = time.time()
+
+ for i, (img, target) in enumerate(train_loader):
+ # measure data loading time
+ #mode = 'compete' if (i%2)==0 else 'collaborate'
+
+ data_time.update(time.time() - end)
+ img_var = Variable(img.cuda())
+ target_var = Variable(target.cuda())
+
+ pred_alice = alice_net(img_var)
+ pred_bob = bob_net(img_var)
+ pred_mod = mod_net(img_var)
+
+ loss_alice = F.cross_entropy(pred_alice, target_var, reduce=False)
+ loss_bob = F.cross_entropy(pred_bob, target_var, reduce=False)
+
+ if mode=='compete':
+ if args.fix_bob:
+ if args.DEBUG: print("Training Alice Only")
+ loss = loss_alice.mean()
+ elif args.fix_alice:
+ loss = loss_bob.mean()
+ else:
+ if args.DEBUG: print("Training Both Alice and Bob")
+
+ pred_mod_soft = Variable(F.sigmoid(pred_mod).data, requires_grad=False)
+ loss = pred_mod_soft*loss_alice + (1-pred_mod_soft)*loss_bob
+
+ loss = loss.mean()
+
+ elif mode=='collaborate':
+ loss_alice2 = Variable(loss_alice.data, requires_grad = False)
+ loss_bob2 = Variable(loss_bob.data, requires_grad = False)
+
+ loss1 = F.sigmoid(pred_mod)*loss_alice2 + (1-F.sigmoid(pred_mod))*loss_bob2
+
+ loss2 = collaboration_loss(pred_mod, loss_alice2, loss_bob2)
+
+ loss = loss1.mean() + loss2.mean() + args.wr*mod_regularization_loss(pred_mod)
+
+
+ if i > 0 and n_iter % args.print_freq == 0:
+ train_writer.add_scalar('loss_alice', loss_alice.mean().item(), n_iter)
+ train_writer.add_scalar('loss_bob', loss_bob.mean().item(), n_iter)
+ train_writer.add_scalar('mod_mean', F.sigmoid(pred_mod).mean().item(), n_iter)
+ train_writer.add_scalar('mod_var', F.sigmoid(pred_mod).var().item(), n_iter)
+ train_writer.add_scalar('loss_regularization', mod_regularization_loss(pred_mod).item(), n_iter)
+
+ if mode=='compete':
+ train_writer.add_scalar('competetion_loss', loss.item(), n_iter)
+ elif mode=='collaborate':
+ train_writer.add_scalar('collaboration_loss', loss.item(), n_iter)
+
+ # record loss
+ losses.update(loss.item(), args.batch_size)
+
+ # compute gradient and do Adam step
+ optimizer.zero_grad()
+ loss.backward()
+ optimizer.step()
+
+ # measure elapsed time
+ batch_time.update(time.time() - end)
+ end = time.time()
+
+ with open(args.save_path/args.log_full, 'a') as csvfile:
+ writer = csv.writer(csvfile, delimiter='\t')
+ writer.writerow([loss.item(), loss_alice.mean().item(), loss_bob.mean().item()])
+ if args.log_terminal:
+ logger.train_bar.update(i+1)
+ if i % args.print_freq == 0:
+ logger.train_writer.write('Train: Time {} Data {} Loss {}'.format(batch_time, data_time, losses))
+ if i >= epoch_size - 1:
+ break
+
+ n_iter += 1
+
+ return losses.avg[0]
+
+
+def validate(val_loader, alice_net, bob_net, mod_net, epoch, logger=None, output_writer=[]):
+ global args
+ batch_time = AverageMeter()
+ accuracy = AverageMeter(i=3, precision=4)
+
+ # switch to evaluate mode
+ alice_net.eval()
+ bob_net.eval()
+ mod_net.eval()
+
+ end = time.time()
+
+ for i, (img, target) in enumerate(val_loader):
+ img_var = Variable(img.cuda(), volatile=True)
+ target_var = Variable(target.cuda(), volatile=True)
+
+ pred_alice = alice_net(img_var)
+ pred_bob = bob_net(img_var)
+ pred_mod = F.sigmoid(mod_net(img_var))
+
+ _ , pred_alice_label = torch.max(pred_alice.data, 1)
+ _ , pred_bob_label = torch.max(pred_bob.data, 1)
+ pred_label = (pred_mod.squeeze().data > 0.5).type_as(pred_alice_label) * pred_alice_label + (pred_mod.squeeze().data <= 0.5).type_as(pred_bob_label) * pred_bob_label
+
+ total_accuracy = (pred_label.cpu() == target).sum() / img.size(0)
+ alice_accuracy = (pred_alice_label.cpu() == target).sum() / img.size(0)
+ bob_accuracy = (pred_bob_label.cpu() == target).sum() / img.size(0)
+
+ accuracy.update([total_accuracy, alice_accuracy, bob_accuracy])
+
+
+ # measure elapsed time
+ batch_time.update(time.time() - end)
+ end = time.time()
+ if args.log_terminal:
+ logger.valid_bar.update(i)
+ if i % args.print_freq == 0:
+ logger.valid_writer.write('valid: Time {} Accuray {}'.format(batch_time, accuracy))
+
+ if args.log_output:
+ output_writer.add_scalar('accuracy_alice', accuracy.avg[1], epoch)
+ output_writer.add_scalar('accuracy_bob', accuracy.avg[2], epoch)
+ output_writer.add_scalar('accuracy_total', accuracy.avg[0], epoch)
+
+ if args.log_terminal:
+ logger.valid_bar.update(len(val_loader))
+
+ return list(map(lambda x: 1-x, accuracy.avg)), ['Total loss', 'alice loss', 'bob loss']
+
+
+
+if __name__ == '__main__':
+ import sys
+ with open("experiment_recorder.md", "a") as f:
+ f.write('\n python3 ' + ' '.join(sys.argv))
+ main()
diff --git a/mnist_eval.py b/mnist_eval.py
new file mode 100644
index 0000000..639e585
--- /dev/null
+++ b/mnist_eval.py
@@ -0,0 +1,178 @@
+# Author: Anurag Ranjan
+# Copyright (c) 2019, Anurag Ranjan
+# All rights reserved.
+
+import argparse
+import time
+import csv
+import datetime
+import os
+from tqdm import tqdm
+import numpy as np
+
+import torch
+from torch.autograd import Variable
+import torch.backends.cudnn as cudnn
+import torch.optim
+import torch.nn as nn
+import torch.utils.data
+import torchvision
+import torch.nn.functional as F
+
+from logger import TermLogger, AverageMeter
+from path import Path
+from itertools import chain
+from tensorboardX import SummaryWriter
+
+from utils import tensor2array, save_checkpoint
+
+parser = argparse.ArgumentParser(description='MNIST and SVHN training',
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+parser.add_argument('data', metavar='DIR',
+ help='path to dataset')
+parser.add_argument('-j', '--workers', default=4, type=int, metavar='N',
+ help='number of data loading workers')
+parser.add_argument('-b', '--batch-size', default=100, type=int,
+ metavar='N', help='mini-batch size')
+
+parser.add_argument('--pretrained-alice', dest='pretrained_alice', default=None, metavar='PATH',
+ help='path to pre-trained alice model')
+parser.add_argument('--pretrained-bob', dest='pretrained_bob', default=None, metavar='PATH',
+ help='path to pre-trained bob model')
+parser.add_argument('--pretrained-mod', dest='pretrained_mod', default=None, metavar='PATH',
+ help='path to pre-trained moderator')
+
+class LeNet(nn.Module):
+ def __init__(self, nout=10):
+ super(LeNet, self).__init__()
+ self.conv1 = nn.Conv2d(1, 40, 3, 1)
+ self.conv2 = nn.Conv2d(40, 40, 3, 1)
+ self.fc1 = nn.Linear(40*5*5, 40)
+ self.fc2 = nn.Linear(40, nout)
+
+ def forward(self, x):
+ x = F.relu(self.conv1(x))
+ x = F.max_pool2d(x, 2, 2)
+ x = F.relu(self.conv2(x))
+ x = F.max_pool2d(x, 2, 2)
+ x = x.view(-1, 40*5*5)
+ x = F.relu(self.fc1(x))
+ x = self.fc2(x)
+ return x
+
+ def name(self):
+ return "LeNet"
+
+def main():
+ global args
+ args = parser.parse_args()
+
+ args.data = Path(args.data)
+
+ print("=> fetching dataset")
+ mnist_transform = torchvision.transforms.Compose([torchvision.transforms.ToTensor(),
+ torchvision.transforms.Normalize((0.1307,), (0.3081,))])
+ valset_mnist = torchvision.datasets.MNIST(args.data/'mnist', train=False, transform=mnist_transform, target_transform=None, download=True)
+
+ svhn_transform = torchvision.transforms.Compose([torchvision.transforms.Resize(size=(28,28)),
+ torchvision.transforms.Grayscale(),
+ torchvision.transforms.ToTensor()])
+ valset_svhn = torchvision.datasets.SVHN(args.data/'svhn', split='test', transform=svhn_transform, target_transform=None, download=True)
+ val_set = torch.utils.data.ConcatDataset([valset_mnist, valset_svhn])
+
+
+ print('{} Test samples found in MNIST'.format(len(valset_mnist)))
+ print('{} Test samples found in SVHN'.format(len(valset_svhn)))
+
+ val_loader = torch.utils.data.DataLoader(
+ val_set, batch_size=args.batch_size, shuffle=False,
+ num_workers=args.workers, pin_memory=True, drop_last=False)
+
+ val_loader_mnist = torch.utils.data.DataLoader(
+ valset_mnist, batch_size=args.batch_size, shuffle=False,
+ num_workers=args.workers, pin_memory=True, drop_last=False)
+
+ val_loader_svhn = torch.utils.data.DataLoader(
+ valset_svhn, batch_size=args.batch_size, shuffle=False,
+ num_workers=args.workers, pin_memory=True, drop_last=False)
+
+ # create model
+ print("=> creating model")
+
+ alice_net = LeNet()
+ bob_net = LeNet()
+ mod_net = LeNet(nout=1)
+
+ print("=> using pre-trained weights from {}".format(args.pretrained_alice))
+ weights = torch.load(args.pretrained_alice)
+ alice_net.load_state_dict(weights['state_dict'])
+
+ print("=> using pre-trained weights from {}".format(args.pretrained_bob))
+ weights = torch.load(args.pretrained_bob)
+ bob_net.load_state_dict(weights['state_dict'])
+
+ print("=> using pre-trained weights from {}".format(args.pretrained_mod))
+ weights = torch.load(args.pretrained_mod)
+ mod_net.load_state_dict(weights['state_dict'])
+
+ cudnn.benchmark = True
+ alice_net = alice_net.cuda()
+ bob_net = bob_net.cuda()
+ mod_net = mod_net.cuda()
+
+ # evaluate on validation set
+ errors_mnist, error_names_mnist, mod_count_mnist = validate(val_loader_mnist, alice_net, bob_net, mod_net)
+ errors_svhn, error_names_svhn, mod_count_svhn = validate(val_loader_svhn, alice_net, bob_net, mod_net)
+ errors_total, error_names_total, _ = validate(val_loader, alice_net, bob_net, mod_net)
+
+ accuracy_string_mnist = ', '.join('{} : {:.3f}'.format(name, 100*(error)) for name, error in zip(error_names_mnist, errors_mnist))
+ accuracy_string_svhn = ', '.join('{} : {:.3f}'.format(name, 100*(error)) for name, error in zip(error_names_svhn, errors_svhn))
+ accuracy_string_total = ', '.join('{} : {:.3f}'.format(name, 100*(error)) for name, error in zip(error_names_total, errors_total))
+
+ print("MNIST Error")
+ print(accuracy_string_mnist)
+ print("MNIST Picking Percentage- Alice {:.3f}, Bob {:.3f}".format(mod_count_mnist[0]*100, (1-mod_count_mnist[0])*100))
+
+ print("SVHN Error")
+ print(accuracy_string_svhn)
+ print("SVHN Picking Percentage for Alice {:.3f}, Bob {:.3f}".format(mod_count_svhn[0]*100, (1-mod_count_svhn[0])*100))
+
+ print("TOTAL Error")
+ print(accuracy_string_total)
+
+def validate(val_loader, alice_net, bob_net, mod_net):
+ global args
+ accuracy = AverageMeter(i=3, precision=4)
+ mod_count = AverageMeter()
+
+ # switch to evaluate mode
+ alice_net.eval()
+ bob_net.eval()
+ mod_net.eval()
+
+ for i, (img, target) in enumerate(tqdm(val_loader)):
+ img_var = Variable(img.cuda(), volatile=True)
+ target_var = Variable(target.cuda(), volatile=True)
+
+ pred_alice = alice_net(img_var)
+ pred_bob = bob_net(img_var)
+ pred_mod = F.sigmoid(mod_net(img_var))
+ _ , pred_alice_label = torch.max(pred_alice.data, 1)
+ _ , pred_bob_label = torch.max(pred_bob.data, 1)
+ pred_label = (pred_mod.squeeze().data > 0.5).type_as(pred_alice_label) * pred_alice_label + (pred_mod.squeeze().data <= 0.5).type_as(pred_bob_label) * pred_bob_label
+
+ total_accuracy = (pred_label.cpu() == target).sum().item() / img.size(0)
+ alice_accuracy = (pred_alice_label.cpu() == target).sum().item() / img.size(0)
+ bob_accuracy = (pred_bob_label.cpu() == target).sum().item() / img.size(0)
+ accuracy.update([total_accuracy, alice_accuracy, bob_accuracy])
+ mod_count.update((pred_mod.cpu().data > 0.5).sum().item() / img.size(0))
+
+ return list(map(lambda x: 1-x, accuracy.avg)), ['Total', 'alice', 'bob'] , mod_count.avg
+
+
+
+if __name__ == '__main__':
+ # import sys
+ # with open("experiment_recorder.md", "a") as f:
+ # f.write('\n python3 ' + ' '.join(sys.argv))
+ main()
diff --git a/models/DispNetS.py b/models/DispNetS.py
new file mode 100644
index 0000000..f3ef379
--- /dev/null
+++ b/models/DispNetS.py
@@ -0,0 +1,133 @@
+import torch
+import torch.nn as nn
+
+
+def downsample_conv(in_planes, out_planes, kernel_size=3):
+ return nn.Sequential(
+ nn.Conv2d(in_planes, out_planes, kernel_size=kernel_size, stride=2, padding=(kernel_size-1)//2),
+ nn.ReLU(inplace=True),
+ nn.Conv2d(out_planes, out_planes, kernel_size=kernel_size, padding=(kernel_size-1)//2),
+ nn.ReLU(inplace=True)
+ )
+
+
+def predict_disp(in_planes):
+ return nn.Sequential(
+ nn.Conv2d(in_planes, 1, kernel_size=3, padding=1),
+ nn.Sigmoid()
+ )
+
+
+def conv(in_planes, out_planes):
+ return nn.Sequential(
+ nn.Conv2d(in_planes, out_planes, kernel_size=3, padding=1),
+ nn.ReLU(inplace=True)
+ )
+
+
+def upconv(in_planes, out_planes):
+ return nn.Sequential(
+ nn.ConvTranspose2d(in_planes, out_planes, kernel_size=3, stride=2, padding=1, output_padding=1),
+ nn.ReLU(inplace=True)
+ )
+
+
+def crop_like(input, ref):
+ assert(input.size(2) >= ref.size(2) and input.size(3) >= ref.size(3))
+ return input[:, :, :ref.size(2), :ref.size(3)]
+
+
+class DispNetS(nn.Module):
+
+ def __init__(self, alpha=10, beta=0.01):
+ super(DispNetS, self).__init__()
+
+ self.alpha = alpha
+ self.beta = beta
+
+ conv_planes = [32, 64, 128, 256, 512, 512, 512]
+ self.conv1 = downsample_conv(3, conv_planes[0], kernel_size=7)
+ self.conv2 = downsample_conv(conv_planes[0], conv_planes[1], kernel_size=5)
+ self.conv3 = downsample_conv(conv_planes[1], conv_planes[2])
+ self.conv4 = downsample_conv(conv_planes[2], conv_planes[3])
+ self.conv5 = downsample_conv(conv_planes[3], conv_planes[4])
+ self.conv6 = downsample_conv(conv_planes[4], conv_planes[5])
+ self.conv7 = downsample_conv(conv_planes[5], conv_planes[6])
+
+ upconv_planes = [512, 512, 256, 128, 64, 32, 16]
+ self.upconv7 = upconv(conv_planes[6], upconv_planes[0])
+ self.upconv6 = upconv(upconv_planes[0], upconv_planes[1])
+ self.upconv5 = upconv(upconv_planes[1], upconv_planes[2])
+ self.upconv4 = upconv(upconv_planes[2], upconv_planes[3])
+ self.upconv3 = upconv(upconv_planes[3], upconv_planes[4])
+ self.upconv2 = upconv(upconv_planes[4], upconv_planes[5])
+ self.upconv1 = upconv(upconv_planes[5], upconv_planes[6])
+
+ self.iconv7 = conv(upconv_planes[0] + conv_planes[5], upconv_planes[0])
+ self.iconv6 = conv(upconv_planes[1] + conv_planes[4], upconv_planes[1])
+ self.iconv5 = conv(upconv_planes[2] + conv_planes[3], upconv_planes[2])
+ self.iconv4 = conv(upconv_planes[3] + conv_planes[2], upconv_planes[3])
+ self.iconv3 = conv(1 + upconv_planes[4] + conv_planes[1], upconv_planes[4])
+ self.iconv2 = conv(1 + upconv_planes[5] + conv_planes[0], upconv_planes[5])
+ self.iconv1 = conv(1 + upconv_planes[6], upconv_planes[6])
+
+ self.predict_disp4 = predict_disp(upconv_planes[3])
+ self.predict_disp3 = predict_disp(upconv_planes[4])
+ self.predict_disp2 = predict_disp(upconv_planes[5])
+ self.predict_disp1 = predict_disp(upconv_planes[6])
+
+ def init_weights(self):
+ for m in self.modules():
+ if isinstance(m, nn.Conv2d) or isinstance(m, nn.ConvTranspose2d):
+ nn.init.xavier_uniform(m.weight.data)
+ if m.bias is not None:
+ m.bias.data.zero_()
+
+ def forward(self, x):
+ out_conv1 = self.conv1(x)
+ out_conv2 = self.conv2(out_conv1)
+ out_conv3 = self.conv3(out_conv2)
+ out_conv4 = self.conv4(out_conv3)
+ out_conv5 = self.conv5(out_conv4)
+ out_conv6 = self.conv6(out_conv5)
+ out_conv7 = self.conv7(out_conv6)
+
+ out_upconv7 = crop_like(self.upconv7(out_conv7), out_conv6)
+ concat7 = torch.cat((out_upconv7, out_conv6), 1)
+ out_iconv7 = self.iconv7(concat7)
+
+ out_upconv6 = crop_like(self.upconv6(out_iconv7), out_conv5)
+ concat6 = torch.cat((out_upconv6, out_conv5), 1)
+ out_iconv6 = self.iconv6(concat6)
+
+ out_upconv5 = crop_like(self.upconv5(out_iconv6), out_conv4)
+ concat5 = torch.cat((out_upconv5, out_conv4), 1)
+ out_iconv5 = self.iconv5(concat5)
+
+ out_upconv4 = crop_like(self.upconv4(out_iconv5), out_conv3)
+ concat4 = torch.cat((out_upconv4, out_conv3), 1)
+ out_iconv4 = self.iconv4(concat4)
+ disp4 = self.alpha * self.predict_disp4(out_iconv4) + self.beta
+
+ out_upconv3 = crop_like(self.upconv3(out_iconv4), out_conv2)
+ disp4_up = crop_like(nn.functional.upsample(disp4, scale_factor=2, mode='bilinear'), out_conv2)
+ concat3 = torch.cat((out_upconv3, out_conv2, disp4_up), 1)
+ out_iconv3 = self.iconv3(concat3)
+ disp3 = self.alpha * self.predict_disp3(out_iconv3) + self.beta
+
+ out_upconv2 = crop_like(self.upconv2(out_iconv3), out_conv1)
+ disp3_up = crop_like(nn.functional.upsample(disp3, scale_factor=2, mode='bilinear'), out_conv1)
+ concat2 = torch.cat((out_upconv2, out_conv1, disp3_up), 1)
+ out_iconv2 = self.iconv2(concat2)
+ disp2 = self.alpha * self.predict_disp2(out_iconv2) + self.beta
+
+ out_upconv1 = crop_like(self.upconv1(out_iconv2), x)
+ disp2_up = crop_like(nn.functional.upsample(disp2, scale_factor=2, mode='bilinear'), x)
+ concat1 = torch.cat((out_upconv1, disp2_up), 1)
+ out_iconv1 = self.iconv1(concat1)
+ disp1 = self.alpha * self.predict_disp1(out_iconv1) + self.beta
+
+ if self.training:
+ return disp1, disp2, disp3, disp4
+ else:
+ return disp1
diff --git a/models/DispNetS6.py b/models/DispNetS6.py
new file mode 100644
index 0000000..b108e16
--- /dev/null
+++ b/models/DispNetS6.py
@@ -0,0 +1,137 @@
+import torch
+import torch.nn as nn
+
+
+def downsample_conv(in_planes, out_planes, kernel_size=3):
+ return nn.Sequential(
+ nn.Conv2d(in_planes, out_planes, kernel_size=kernel_size, stride=2, padding=(kernel_size-1)//2),
+ nn.ReLU(inplace=True),
+ nn.Conv2d(out_planes, out_planes, kernel_size=kernel_size, padding=(kernel_size-1)//2),
+ nn.ReLU(inplace=True)
+ )
+
+
+def predict_disp(in_planes):
+ return nn.Sequential(
+ nn.Conv2d(in_planes, 1, kernel_size=3, padding=1),
+ nn.Sigmoid()
+ )
+
+
+def conv(in_planes, out_planes):
+ return nn.Sequential(
+ nn.Conv2d(in_planes, out_planes, kernel_size=3, padding=1),
+ nn.ReLU(inplace=True)
+ )
+
+
+def upconv(in_planes, out_planes):
+ return nn.Sequential(
+ nn.ConvTranspose2d(in_planes, out_planes, kernel_size=3, stride=2, padding=1, output_padding=1),
+ nn.ReLU(inplace=True)
+ )
+
+
+def crop_like(input, ref):
+ assert(input.size(2) >= ref.size(2) and input.size(3) >= ref.size(3))
+ return input[:, :, :ref.size(2), :ref.size(3)]
+
+
+class DispNetS6(nn.Module):
+
+ def __init__(self, alpha=10, beta=0.01):
+ super(DispNetS6, self).__init__()
+
+ self.alpha = alpha
+ self.beta = beta
+
+ conv_planes = [32, 64, 128, 256, 512, 512, 512]
+ self.conv1 = downsample_conv(3, conv_planes[0], kernel_size=7)
+ self.conv2 = downsample_conv(conv_planes[0], conv_planes[1], kernel_size=5)
+ self.conv3 = downsample_conv(conv_planes[1], conv_planes[2])
+ self.conv4 = downsample_conv(conv_planes[2], conv_planes[3])
+ self.conv5 = downsample_conv(conv_planes[3], conv_planes[4])
+ self.conv6 = downsample_conv(conv_planes[4], conv_planes[5])
+ self.conv7 = downsample_conv(conv_planes[5], conv_planes[6])
+
+ upconv_planes = [512, 512, 256, 128, 64, 32, 16]
+ self.upconv7 = upconv(conv_planes[6], upconv_planes[0])
+ self.upconv6 = upconv(upconv_planes[0], upconv_planes[1])
+ self.upconv5 = upconv(upconv_planes[1], upconv_planes[2])
+ self.upconv4 = upconv(upconv_planes[2], upconv_planes[3])
+ self.upconv3 = upconv(upconv_planes[3], upconv_planes[4])
+ self.upconv2 = upconv(upconv_planes[4], upconv_planes[5])
+ self.upconv1 = upconv(upconv_planes[5], upconv_planes[6])
+
+ self.iconv7 = conv(upconv_planes[0] + conv_planes[5], upconv_planes[0])
+ self.iconv6 = conv(upconv_planes[1] + conv_planes[4], upconv_planes[1])
+ self.iconv5 = conv(upconv_planes[2] + conv_planes[3], upconv_planes[2])
+ self.iconv4 = conv(upconv_planes[3] + conv_planes[2], upconv_planes[3])
+ self.iconv3 = conv(1 + upconv_planes[4] + conv_planes[1], upconv_planes[4])
+ self.iconv2 = conv(1 + upconv_planes[5] + conv_planes[0], upconv_planes[5])
+ self.iconv1 = conv(1 + upconv_planes[6], upconv_planes[6])
+
+ self.predict_disp6 = predict_disp(upconv_planes[1])
+ self.predict_disp5 = predict_disp(upconv_planes[2])
+ self.predict_disp4 = predict_disp(upconv_planes[3])
+ self.predict_disp3 = predict_disp(upconv_planes[4])
+ self.predict_disp2 = predict_disp(upconv_planes[5])
+ self.predict_disp1 = predict_disp(upconv_planes[6])
+
+ def init_weights(self):
+ for m in self.modules():
+ if isinstance(m, nn.Conv2d) or isinstance(m, nn.ConvTranspose2d):
+ nn.init.xavier_uniform(m.weight.data)
+ if m.bias is not None:
+ m.bias.data.zero_()
+
+ def forward(self, x):
+ out_conv1 = self.conv1(x)
+ out_conv2 = self.conv2(out_conv1)
+ out_conv3 = self.conv3(out_conv2)
+ out_conv4 = self.conv4(out_conv3)
+ out_conv5 = self.conv5(out_conv4)
+ out_conv6 = self.conv6(out_conv5)
+ out_conv7 = self.conv7(out_conv6)
+
+ out_upconv7 = crop_like(self.upconv7(out_conv7), out_conv6)
+ concat7 = torch.cat((out_upconv7, out_conv6), 1)
+ out_iconv7 = self.iconv7(concat7)
+
+ out_upconv6 = crop_like(self.upconv6(out_iconv7), out_conv5)
+ concat6 = torch.cat((out_upconv6, out_conv5), 1)
+ out_iconv6 = self.iconv6(concat6)
+ disp6 = self.alpha * self.predict_disp6(out_iconv6) + self.beta
+
+ out_upconv5 = crop_like(self.upconv5(out_iconv6), out_conv4)
+ concat5 = torch.cat((out_upconv5, out_conv4), 1)
+ out_iconv5 = self.iconv5(concat5)
+ disp5 = self.alpha * self.predict_disp5(out_iconv5) + self.beta
+
+ out_upconv4 = crop_like(self.upconv4(out_iconv5), out_conv3)
+ concat4 = torch.cat((out_upconv4, out_conv3), 1)
+ out_iconv4 = self.iconv4(concat4)
+ disp4 = self.alpha * self.predict_disp4(out_iconv4) + self.beta
+
+ out_upconv3 = crop_like(self.upconv3(out_iconv4), out_conv2)
+ disp4_up = crop_like(nn.functional.upsample(disp4, scale_factor=2, mode='bilinear'), out_conv2)
+ concat3 = torch.cat((out_upconv3, out_conv2, disp4_up), 1)
+ out_iconv3 = self.iconv3(concat3)
+ disp3 = self.alpha * self.predict_disp3(out_iconv3) + self.beta
+
+ out_upconv2 = crop_like(self.upconv2(out_iconv3), out_conv1)
+ disp3_up = crop_like(nn.functional.upsample(disp3, scale_factor=2, mode='bilinear'), out_conv1)
+ concat2 = torch.cat((out_upconv2, out_conv1, disp3_up), 1)
+ out_iconv2 = self.iconv2(concat2)
+ disp2 = self.alpha * self.predict_disp2(out_iconv2) + self.beta
+
+ out_upconv1 = crop_like(self.upconv1(out_iconv2), x)
+ disp2_up = crop_like(nn.functional.upsample(disp2, scale_factor=2, mode='bilinear'), x)
+ concat1 = torch.cat((out_upconv1, disp2_up), 1)
+ out_iconv1 = self.iconv1(concat1)
+ disp1 = self.alpha * self.predict_disp1(out_iconv1) + self.beta
+
+ if self.training:
+ return disp1, disp2, disp3, disp4, disp5, disp6
+ else:
+ return disp1
diff --git a/models/DispResNet6.py b/models/DispResNet6.py
new file mode 100644
index 0000000..d11a978
--- /dev/null
+++ b/models/DispResNet6.py
@@ -0,0 +1,194 @@
+# Author: Anurag Ranjan
+# Copyright (c) 2019, Anurag Ranjan
+# All rights reserved.
+# based on github.com/ClementPinard/SfMLearner-Pytorch
+
+import torch
+import torch.nn as nn
+
+def conv3x3(in_planes, out_planes, stride=1):
+ """3x3 convolution with padding"""
+ return nn.Conv2d(in_planes, out_planes, kernel_size=3, stride=stride,
+ padding=1, bias=False)
+
+class BasicBlock(nn.Module):
+ expansion = 1
+
+ def __init__(self, inplanes, planes, stride=1, downsample=None):
+ super(BasicBlock, self).__init__()
+ self.conv1 = conv3x3(inplanes, planes, stride)
+ #self.bn1 = nn.BatchNorm2d(planes)
+ self.relu = nn.ReLU(inplace=True)
+ self.conv2 = conv3x3(planes, planes)
+ #self.bn2 = nn.BatchNorm2d(planes)
+ self.downsample = downsample
+ self.stride = stride
+
+ def forward(self, x):
+ residual = x
+
+ out = self.conv1(x)
+ #out = self.bn1(out)
+ out = self.relu(out)
+
+ out = self.conv2(out)
+ #out = self.bn2(out)
+
+ if self.downsample is not None:
+ residual = self.downsample(x)
+
+ out += residual
+ out = self.relu(out)
+
+ return out
+
+def make_layer(inplanes, block, planes, blocks, stride=1):
+ downsample = None
+ if stride != 1 or inplanes != planes * block.expansion:
+ downsample = nn.Sequential(
+ nn.Conv2d(inplanes, planes * block.expansion,
+ kernel_size=1, stride=stride, bias=False),
+ nn.BatchNorm2d(planes * block.expansion),
+ )
+
+ layers = []
+ layers.append(block(inplanes, planes, stride, downsample))
+ inplanes = planes * block.expansion
+ for i in range(1, blocks):
+ layers.append(block(inplanes, planes))
+
+ return nn.Sequential(*layers)
+
+def downsample_conv(in_planes, out_planes, kernel_size=3):
+ return nn.Sequential(
+ nn.Conv2d(in_planes, out_planes, kernel_size=kernel_size, stride=2, padding=(kernel_size-1)//2),
+ nn.ReLU(inplace=True),
+ nn.Conv2d(out_planes, out_planes, kernel_size=kernel_size, padding=(kernel_size-1)//2),
+ nn.ReLU(inplace=True)
+ )
+
+
+def predict_disp(in_planes):
+ return nn.Sequential(
+ nn.Conv2d(in_planes, 1, kernel_size=3, padding=1),
+ nn.Sigmoid()
+ )
+
+
+def conv(in_planes, out_planes):
+ return nn.Sequential(
+ nn.Conv2d(in_planes, out_planes, kernel_size=3, padding=1),
+ nn.ReLU(inplace=True)
+ )
+
+
+def upconv(in_planes, out_planes):
+ return nn.Sequential(
+ nn.ConvTranspose2d(in_planes, out_planes, kernel_size=3, stride=2, padding=1, output_padding=1),
+ nn.ReLU(inplace=True)
+ )
+
+
+def crop_like(input, ref):
+ assert(input.size(2) >= ref.size(2) and input.size(3) >= ref.size(3))
+ return input[:, :, :ref.size(2), :ref.size(3)]
+
+
+class DispResNet6(nn.Module):
+
+ def __init__(self, alpha=10, beta=0.01):
+ super(DispResNet6, self).__init__()
+
+ self.alpha = alpha
+ self.beta = beta
+
+ conv_planes = [32, 64, 128, 256, 512, 512, 512]
+ self.conv1 = downsample_conv(3, conv_planes[0], kernel_size=7)
+ self.conv2 = make_layer(conv_planes[0], BasicBlock, conv_planes[1], blocks=2, stride=2)
+ self.conv3 = make_layer(conv_planes[1], BasicBlock, conv_planes[2], blocks=2, stride=2)
+ self.conv4 = make_layer(conv_planes[2], BasicBlock, conv_planes[3], blocks=2, stride=2)
+ self.conv5 = make_layer(conv_planes[3], BasicBlock, conv_planes[4], blocks=2, stride=2)
+ self.conv6 = make_layer(conv_planes[4], BasicBlock, conv_planes[5], blocks=2, stride=2)
+ self.conv7 = make_layer(conv_planes[5], BasicBlock, conv_planes[6], blocks=2, stride=2)
+
+ upconv_planes = [512, 512, 256, 128, 64, 32, 16]
+ self.upconv7 = upconv(conv_planes[6], upconv_planes[0])
+ self.upconv6 = upconv(upconv_planes[0], upconv_planes[1])
+ self.upconv5 = upconv(upconv_planes[1], upconv_planes[2])
+ self.upconv4 = upconv(upconv_planes[2], upconv_planes[3])
+ self.upconv3 = upconv(upconv_planes[3], upconv_planes[4])
+ self.upconv2 = upconv(upconv_planes[4], upconv_planes[5])
+ self.upconv1 = upconv(upconv_planes[5], upconv_planes[6])
+
+ self.iconv7 = make_layer(upconv_planes[0] + conv_planes[5], BasicBlock, upconv_planes[0], blocks=1, stride=1)
+ self.iconv6 = make_layer(upconv_planes[1] + conv_planes[4], BasicBlock, upconv_planes[1], blocks=1, stride=1)
+ self.iconv5 = make_layer(upconv_planes[2] + conv_planes[3], BasicBlock, upconv_planes[2], blocks=1, stride=1)
+ self.iconv4 = make_layer(upconv_planes[3] + conv_planes[2], BasicBlock, upconv_planes[3], blocks=1, stride=1)
+ self.iconv3 = make_layer(1 + upconv_planes[4] + conv_planes[1], BasicBlock, upconv_planes[4], blocks=1, stride=1)
+ self.iconv2 = make_layer(1 + upconv_planes[5] + conv_planes[0], BasicBlock, upconv_planes[5], blocks=1, stride=1)
+ self.iconv1 = make_layer(1 + upconv_planes[6], BasicBlock, upconv_planes[6], blocks=1, stride=1)
+
+ self.predict_disp6 = predict_disp(upconv_planes[1])
+ self.predict_disp5 = predict_disp(upconv_planes[2])
+ self.predict_disp4 = predict_disp(upconv_planes[3])
+ self.predict_disp3 = predict_disp(upconv_planes[4])
+ self.predict_disp2 = predict_disp(upconv_planes[5])
+ self.predict_disp1 = predict_disp(upconv_planes[6])
+
+ def init_weights(self):
+ for m in self.modules():
+ if isinstance(m, nn.Conv2d) or isinstance(m, nn.ConvTranspose2d):
+ nn.init.xavier_uniform(m.weight.data)
+ if m.bias is not None:
+ m.bias.data.zero_()
+
+ def forward(self, x):
+ out_conv1 = self.conv1(x)
+ out_conv2 = self.conv2(out_conv1)
+ out_conv3 = self.conv3(out_conv2)
+ out_conv4 = self.conv4(out_conv3)
+ out_conv5 = self.conv5(out_conv4)
+ out_conv6 = self.conv6(out_conv5)
+ out_conv7 = self.conv7(out_conv6)
+
+ out_upconv7 = crop_like(self.upconv7(out_conv7), out_conv6)
+ concat7 = torch.cat((out_upconv7, out_conv6), 1)
+ out_iconv7 = self.iconv7(concat7)
+
+ out_upconv6 = crop_like(self.upconv6(out_iconv7), out_conv5)
+ concat6 = torch.cat((out_upconv6, out_conv5), 1)
+ out_iconv6 = self.iconv6(concat6)
+ disp6 = self.alpha * self.predict_disp6(out_iconv6) + self.beta
+
+ out_upconv5 = crop_like(self.upconv5(out_iconv6), out_conv4)
+ concat5 = torch.cat((out_upconv5, out_conv4), 1)
+ out_iconv5 = self.iconv5(concat5)
+ disp5 = self.alpha * self.predict_disp5(out_iconv5) + self.beta
+
+ out_upconv4 = crop_like(self.upconv4(out_iconv5), out_conv3)
+ concat4 = torch.cat((out_upconv4, out_conv3), 1)
+ out_iconv4 = self.iconv4(concat4)
+ disp4 = self.alpha * self.predict_disp4(out_iconv4) + self.beta
+
+ out_upconv3 = crop_like(self.upconv3(out_iconv4), out_conv2)
+ disp4_up = crop_like(nn.functional.upsample(disp4, scale_factor=2, mode='bilinear'), out_conv2)
+ concat3 = torch.cat((out_upconv3, out_conv2, disp4_up), 1)
+ out_iconv3 = self.iconv3(concat3)
+ disp3 = self.alpha * self.predict_disp3(out_iconv3) + self.beta
+
+ out_upconv2 = crop_like(self.upconv2(out_iconv3), out_conv1)
+ disp3_up = crop_like(nn.functional.upsample(disp3, scale_factor=2, mode='bilinear'), out_conv1)
+ concat2 = torch.cat((out_upconv2, out_conv1, disp3_up), 1)
+ out_iconv2 = self.iconv2(concat2)
+ disp2 = self.alpha * self.predict_disp2(out_iconv2) + self.beta
+
+ out_upconv1 = crop_like(self.upconv1(out_iconv2), x)
+ disp2_up = crop_like(nn.functional.upsample(disp2, scale_factor=2, mode='bilinear'), x)
+ concat1 = torch.cat((out_upconv1, disp2_up), 1)
+ out_iconv1 = self.iconv1(concat1)
+ disp1 = self.alpha * self.predict_disp1(out_iconv1) + self.beta
+
+ if self.training:
+ return disp1, disp2, disp3, disp4, disp5, disp6
+ else:
+ return disp1
diff --git a/models/DispResNetS6.py b/models/DispResNetS6.py
new file mode 100644
index 0000000..bcee431
--- /dev/null
+++ b/models/DispResNetS6.py
@@ -0,0 +1,194 @@
+# Author: Anurag Ranjan
+# Copyright (c) 2019, Anurag Ranjan
+# All rights reserved.
+# based on github.com/ClementPinard/SfMLearner-Pytorch
+
+import torch
+import torch.nn as nn
+
+def conv3x3(in_planes, out_planes, stride=1):
+ """3x3 convolution with padding"""
+ return nn.Conv2d(in_planes, out_planes, kernel_size=3, stride=stride,
+ padding=1, bias=False)
+
+class BasicBlock(nn.Module):
+ expansion = 1
+
+ def __init__(self, inplanes, planes, stride=1, downsample=None):
+ super(BasicBlock, self).__init__()
+ self.conv1 = conv3x3(inplanes, planes, stride)
+ #self.bn1 = nn.BatchNorm2d(planes)
+ self.relu = nn.ReLU(inplace=True)
+ self.conv2 = conv3x3(planes, planes)
+ #self.bn2 = nn.BatchNorm2d(planes)
+ self.downsample = downsample
+ self.stride = stride
+
+ def forward(self, x):
+ residual = x
+
+ out = self.conv1(x)
+ #out = self.bn1(out)
+ out = self.relu(out)
+
+ out = self.conv2(out)
+ #out = self.bn2(out)
+
+ if self.downsample is not None:
+ residual = self.downsample(x)
+
+ out += residual
+ out = self.relu(out)
+
+ return out
+
+def make_layer(inplanes, block, planes, blocks, stride=1):
+ downsample = None
+ if stride != 1 or inplanes != planes * block.expansion:
+ downsample = nn.Sequential(
+ nn.Conv2d(inplanes, planes * block.expansion,
+ kernel_size=1, stride=stride, bias=False),
+ nn.BatchNorm2d(planes * block.expansion),
+ )
+
+ layers = []
+ layers.append(block(inplanes, planes, stride, downsample))
+ inplanes = planes * block.expansion
+ for i in range(1, blocks):
+ layers.append(block(inplanes, planes))
+
+ return nn.Sequential(*layers)
+
+def downsample_conv(in_planes, out_planes, kernel_size=3):
+ return nn.Sequential(
+ nn.Conv2d(in_planes, out_planes, kernel_size=kernel_size, stride=2, padding=(kernel_size-1)//2),
+ nn.ReLU(inplace=True),
+ nn.Conv2d(out_planes, out_planes, kernel_size=kernel_size, padding=(kernel_size-1)//2),
+ nn.ReLU(inplace=True)
+ )
+
+
+def predict_disp(in_planes):
+ return nn.Sequential(
+ nn.Conv2d(in_planes, 1, kernel_size=3, padding=1),
+ nn.Sigmoid()
+ )
+
+
+def conv(in_planes, out_planes):
+ return nn.Sequential(
+ nn.Conv2d(in_planes, out_planes, kernel_size=3, padding=1),
+ nn.ReLU(inplace=True)
+ )
+
+
+def upconv(in_planes, out_planes):
+ return nn.Sequential(
+ nn.ConvTranspose2d(in_planes, out_planes, kernel_size=3, stride=2, padding=1, output_padding=1),
+ nn.ReLU(inplace=True)
+ )
+
+
+def crop_like(input, ref):
+ assert(input.size(2) >= ref.size(2) and input.size(3) >= ref.size(3))
+ return input[:, :, :ref.size(2), :ref.size(3)]
+
+
+class DispResNetS6(nn.Module):
+
+ def __init__(self, alpha=10, beta=0.01):
+ super(DispResNetS6, self).__init__()
+
+ self.alpha = alpha
+ self.beta = beta
+
+ conv_planes = [32, 64, 128, 256, 512, 512, 512]
+ self.conv1 = downsample_conv(3, conv_planes[0], kernel_size=7)
+ self.conv2 = make_layer(conv_planes[0], BasicBlock, conv_planes[1], blocks=2, stride=2)
+ self.conv3 = make_layer(conv_planes[1], BasicBlock, conv_planes[2], blocks=2, stride=2)
+ self.conv4 = make_layer(conv_planes[2], BasicBlock, conv_planes[3], blocks=3, stride=2)
+ self.conv5 = make_layer(conv_planes[3], BasicBlock, conv_planes[4], blocks=3, stride=2)
+ self.conv6 = make_layer(conv_planes[4], BasicBlock, conv_planes[5], blocks=3, stride=2)
+ self.conv7 = make_layer(conv_planes[5], BasicBlock, conv_planes[6], blocks=3, stride=2)
+
+ upconv_planes = [512, 512, 256, 128, 64, 32, 16]
+ self.upconv7 = upconv(conv_planes[6], upconv_planes[0])
+ self.upconv6 = upconv(upconv_planes[0], upconv_planes[1])
+ self.upconv5 = upconv(upconv_planes[1], upconv_planes[2])
+ self.upconv4 = upconv(upconv_planes[2], upconv_planes[3])
+ self.upconv3 = upconv(upconv_planes[3], upconv_planes[4])
+ self.upconv2 = upconv(upconv_planes[4], upconv_planes[5])
+ self.upconv1 = upconv(upconv_planes[5], upconv_planes[6])
+
+ self.iconv7 = make_layer(upconv_planes[0] + conv_planes[5], BasicBlock, upconv_planes[0], blocks=2, stride=1)
+ self.iconv6 = make_layer(upconv_planes[1] + conv_planes[4], BasicBlock, upconv_planes[1], blocks=2, stride=1)
+ self.iconv5 = make_layer(upconv_planes[2] + conv_planes[3], BasicBlock, upconv_planes[2], blocks=2, stride=1)
+ self.iconv4 = make_layer(upconv_planes[3] + conv_planes[2], BasicBlock, upconv_planes[3], blocks=2, stride=1)
+ self.iconv3 = make_layer(1 + upconv_planes[4] + conv_planes[1], BasicBlock, upconv_planes[4], blocks=1, stride=1)
+ self.iconv2 = make_layer(1 + upconv_planes[5] + conv_planes[0], BasicBlock, upconv_planes[5], blocks=1, stride=1)
+ self.iconv1 = make_layer(1 + upconv_planes[6], BasicBlock, upconv_planes[6], blocks=1, stride=1)
+
+ self.predict_disp6 = predict_disp(upconv_planes[1])
+ self.predict_disp5 = predict_disp(upconv_planes[2])
+ self.predict_disp4 = predict_disp(upconv_planes[3])
+ self.predict_disp3 = predict_disp(upconv_planes[4])
+ self.predict_disp2 = predict_disp(upconv_planes[5])
+ self.predict_disp1 = predict_disp(upconv_planes[6])
+
+ def init_weights(self):
+ for m in self.modules():
+ if isinstance(m, nn.Conv2d) or isinstance(m, nn.ConvTranspose2d):
+ nn.init.xavier_uniform(m.weight.data)
+ if m.bias is not None:
+ m.bias.data.zero_()
+
+ def forward(self, x):
+ out_conv1 = self.conv1(x)
+ out_conv2 = self.conv2(out_conv1)
+ out_conv3 = self.conv3(out_conv2)
+ out_conv4 = self.conv4(out_conv3)
+ out_conv5 = self.conv5(out_conv4)
+ out_conv6 = self.conv6(out_conv5)
+ out_conv7 = self.conv7(out_conv6)
+
+ out_upconv7 = crop_like(self.upconv7(out_conv7), out_conv6)
+ concat7 = torch.cat((out_upconv7, out_conv6), 1)
+ out_iconv7 = self.iconv7(concat7)
+
+ out_upconv6 = crop_like(self.upconv6(out_iconv7), out_conv5)
+ concat6 = torch.cat((out_upconv6, out_conv5), 1)
+ out_iconv6 = self.iconv6(concat6)
+ disp6 = self.alpha * self.predict_disp6(out_iconv6) + self.beta
+
+ out_upconv5 = crop_like(self.upconv5(out_iconv6), out_conv4)
+ concat5 = torch.cat((out_upconv5, out_conv4), 1)
+ out_iconv5 = self.iconv5(concat5)
+ disp5 = self.alpha * self.predict_disp5(out_iconv5) + self.beta
+
+ out_upconv4 = crop_like(self.upconv4(out_iconv5), out_conv3)
+ concat4 = torch.cat((out_upconv4, out_conv3), 1)
+ out_iconv4 = self.iconv4(concat4)
+ disp4 = self.alpha * self.predict_disp4(out_iconv4) + self.beta
+
+ out_upconv3 = crop_like(self.upconv3(out_iconv4), out_conv2)
+ disp4_up = crop_like(nn.functional.upsample(disp4, scale_factor=2, mode='bilinear'), out_conv2)
+ concat3 = torch.cat((out_upconv3, out_conv2, disp4_up), 1)
+ out_iconv3 = self.iconv3(concat3)
+ disp3 = self.alpha * self.predict_disp3(out_iconv3) + self.beta
+
+ out_upconv2 = crop_like(self.upconv2(out_iconv3), out_conv1)
+ disp3_up = crop_like(nn.functional.upsample(disp3, scale_factor=2, mode='bilinear'), out_conv1)
+ concat2 = torch.cat((out_upconv2, out_conv1, disp3_up), 1)
+ out_iconv2 = self.iconv2(concat2)
+ disp2 = self.alpha * self.predict_disp2(out_iconv2) + self.beta
+
+ out_upconv1 = crop_like(self.upconv1(out_iconv2), x)
+ disp2_up = crop_like(nn.functional.upsample(disp2, scale_factor=2, mode='bilinear'), x)
+ concat1 = torch.cat((out_upconv1, disp2_up), 1)
+ out_iconv1 = self.iconv1(concat1)
+ disp1 = self.alpha * self.predict_disp1(out_iconv1) + self.beta
+
+ if self.training:
+ return disp1, disp2, disp3, disp4, disp5, disp6
+ else:
+ return disp1
diff --git a/models/FlowNetC6.py b/models/FlowNetC6.py
new file mode 100644
index 0000000..adc34fa
--- /dev/null
+++ b/models/FlowNetC6.py
@@ -0,0 +1,164 @@
+# Author: Anurag Ranjan
+# Copyright (c) 2019, Anurag Ranjan
+# All rights reserved.
+# based on github.com/NVIDIA/FlowNet2-Pytorch
+
+import torch
+import torch.nn as nn
+from torch.nn import init
+
+import math
+import numpy as np
+
+# from .correlation_package.modules.correlation import Correlation
+from spatial_correlation_sampler import spatial_correlation_sample
+from .submodules import conv, deconv, predict_flow
+'Parameter count , 39,175,298 '
+
+def correlate(input1, input2):
+ out_corr = spatial_correlation_sample(input1,
+ input2,
+ kernel_size=1,
+ patch_size=21,
+ stride=1,
+ padding=0,
+ dilation_patch=2)
+ # collate dimensions 1 and 2 in order to be treated as a
+ # regular 4D tensor
+ b, ph, pw, h, w = out_corr.size()
+ out_corr = out_corr.view(b, ph * pw, h, w)/input1.size(1)
+ return out_corr
+
+class FlowNetC6(nn.Module):
+ def __init__(self, nlevels=5, batchNorm=False, div_flow = 20, full_res=True, pretrained=True):
+ super(FlowNetC6,self).__init__()
+
+ #assert(nlevels==5)
+ self.batchNorm = batchNorm
+ self.div_flow = div_flow
+ self.full_res = full_res
+
+ self.conv1 = conv(self.batchNorm, 3, 64, kernel_size=7, stride=2)
+ self.conv2 = conv(self.batchNorm, 64, 128, kernel_size=5, stride=2)
+ self.conv3 = conv(self.batchNorm, 128, 256, kernel_size=5, stride=2)
+ self.conv_redir = conv(self.batchNorm, 256, 32, kernel_size=1, stride=1)
+
+ # if args.fp16:
+ # self.corr = nn.Sequential(
+ # tofp32(),
+ # Correlation(pad_size=20, kernel_size=1, max_displacement=20, stride1=1, stride2=2, corr_multiply=1),
+ # tofp16())
+ # else:
+ self.corr = correlate # Correlation(pad_size=20, kernel_size=1, max_displacement=20, stride1=1, stride2=2, corr_multiply=1)
+
+ self.corr_activation = nn.LeakyReLU(0.1,inplace=True)
+ self.conv3_1 = conv(self.batchNorm, 473, 256)
+ self.conv4 = conv(self.batchNorm, 256, 512, stride=2)
+ self.conv4_1 = conv(self.batchNorm, 512, 512)
+ self.conv5 = conv(self.batchNorm, 512, 512, stride=2)
+ self.conv5_1 = conv(self.batchNorm, 512, 512)
+ self.conv6 = conv(self.batchNorm, 512, 1024, stride=2)
+ self.conv6_1 = conv(self.batchNorm,1024, 1024)
+
+ self.deconv5 = deconv(1024,512)
+ self.deconv4 = deconv(1026,256)
+ self.deconv3 = deconv(770,128)
+ self.deconv2 = deconv(386,64)
+ self.deconv1 = deconv(194,32)
+
+ self.predict_flow6 = predict_flow(1024)
+ self.predict_flow5 = predict_flow(1026)
+ self.predict_flow4 = predict_flow(770)
+ self.predict_flow3 = predict_flow(386)
+ self.predict_flow2 = predict_flow(194)
+ self.predict_flow1 = predict_flow(98)
+
+ self.upsampled_flow6_to_5 = nn.ConvTranspose2d(2, 2, 4, 2, 1, bias=True)
+ self.upsampled_flow5_to_4 = nn.ConvTranspose2d(2, 2, 4, 2, 1, bias=True)
+ self.upsampled_flow4_to_3 = nn.ConvTranspose2d(2, 2, 4, 2, 1, bias=True)
+ self.upsampled_flow3_to_2 = nn.ConvTranspose2d(2, 2, 4, 2, 1, bias=True)
+ self.upsampled_flow2_to_1 = nn.ConvTranspose2d(2, 2, 4, 2, 1, bias=True)
+
+ self.upsample1 = nn.Upsample(scale_factor=2, mode='bilinear')
+
+ def init_weights(self):
+ for m in self.modules():
+ if isinstance(m, nn.Conv2d):
+ if m.bias is not None:
+ init.uniform(m.bias)
+ init.xavier_uniform(m.weight)
+
+ if isinstance(m, nn.ConvTranspose2d):
+ if m.bias is not None:
+ init.uniform(m.bias)
+ init.xavier_uniform(m.weight)
+ # init_deconv_bilinear(m.weight)
+
+
+
+ def forward(self, x1,x2):
+
+ out_conv1a = self.conv1(x1)
+ out_conv2a = self.conv2(out_conv1a)
+ out_conv3a = self.conv3(out_conv2a)
+
+ # FlownetC bottom input stream
+ out_conv1b = self.conv1(x2)
+ out_conv2b = self.conv2(out_conv1b)
+ out_conv3b = self.conv3(out_conv2b)
+
+ # Merge streams
+ out_corr = self.corr(out_conv3a, out_conv3b)
+ out_corr = self.corr_activation(out_corr)
+
+ # Redirect top input stream and concatenate
+ out_conv_redir = self.conv_redir(out_conv3a)
+
+ in_conv3_1 = torch.cat((out_conv_redir, out_corr), 1)
+
+ # Merged conv layers
+ out_conv3_1 = self.conv3_1(in_conv3_1)
+ out_conv4 = self.conv4_1(self.conv4(out_conv3_1))
+ out_conv5 = self.conv5_1(self.conv5(out_conv4))
+ out_conv6 = self.conv6_1(self.conv6(out_conv5))
+
+ flow6 = self.predict_flow6(out_conv6)
+ out_deconv5 = self.deconv5(out_conv6)
+ flow6_up = self.upsampled_flow6_to_5(flow6)
+
+ concat5 = torch.cat((out_conv5,out_deconv5,flow6_up),1)
+
+ flow5 = self.predict_flow5(concat5)
+ out_deconv4 = self.deconv4(concat5)
+ flow5_up = self.upsampled_flow5_to_4(flow5)
+ concat4 = torch.cat((out_conv4,out_deconv4,flow5_up),1)
+
+ flow4 = self.predict_flow4(concat4)
+ out_deconv3 = self.deconv3(concat4)
+ flow4_up = self.upsampled_flow4_to_3(flow4)
+ concat3 = torch.cat((out_conv3_1,out_deconv3,flow4_up),1)
+
+ flow3 = self.predict_flow3(concat3)
+ out_deconv2 = self.deconv2(concat3)
+ flow3_up = self.upsampled_flow3_to_2(flow3)
+ concat2 = torch.cat((out_conv2a,out_deconv2,flow3_up),1)
+
+ flow2 = self.predict_flow2(concat2)
+ out_deconv1 = self.deconv1(concat2)
+ flow2_up = self.upsampled_flow2_to_1(flow2)
+ concat1 = torch.cat((out_conv1a,out_deconv1,flow2_up), 1)
+
+ flow1 = self.predict_flow1(concat1)
+ #out_convs = [out_conv2a, out_conv2b, out_conv3a, out_conv3b]
+ if self.full_res:
+ flow1 = self.div_flow*self.upsample1(flow1)
+ flow2 = self.div_flow*self.upsample1(flow2)
+ flow3 = self.div_flow*self.upsample1(flow3)
+ flow4 = self.div_flow*self.upsample1(flow4)
+ flow5 = self.div_flow*self.upsample1(flow5)
+ flow6 = self.div_flow*self.upsample1(flow6)
+
+ if self.training:
+ return flow1, flow2,flow3,flow4,flow5,flow6 #, out_convs
+ else:
+ return flow1
diff --git a/models/MaskNet6.py b/models/MaskNet6.py
new file mode 100644
index 0000000..272b534
--- /dev/null
+++ b/models/MaskNet6.py
@@ -0,0 +1,123 @@
+import torch
+import torch.nn as nn
+
+
+def conv(in_planes, out_planes, kernel_size=3):
+ return nn.Sequential(
+ nn.Conv2d(in_planes, out_planes, kernel_size=kernel_size, padding=(kernel_size-1)//2, stride=2),
+ nn.ReLU(inplace=True)
+ )
+
+
+def upconv(in_planes, out_planes):
+ return nn.Sequential(
+ nn.ConvTranspose2d(in_planes, out_planes, kernel_size=4, stride=2, padding=1),
+ nn.ReLU(inplace=True)
+ )
+
+
+class MaskNet6(nn.Module):
+
+ def __init__(self, nb_ref_imgs=4, output_exp=True):
+ super(MaskNet6, self).__init__()
+ self.nb_ref_imgs = nb_ref_imgs
+ self.output_exp = output_exp
+
+ conv_planes = [16, 32, 64, 128, 256, 256, 256, 256]
+ self.conv1 = conv(3*(1+self.nb_ref_imgs), conv_planes[0], kernel_size=7)
+ self.conv2 = conv(conv_planes[0], conv_planes[1], kernel_size=5)
+ self.conv3 = conv(conv_planes[1], conv_planes[2])
+ self.conv4 = conv(conv_planes[2], conv_planes[3])
+ self.conv5 = conv(conv_planes[3], conv_planes[4])
+ self.conv6 = conv(conv_planes[4], conv_planes[5])
+ #self.conv7 = conv(conv_planes[5], conv_planes[6])
+ #self.conv8 = conv(conv_planes[6], conv_planes[7])
+
+ #self.pose_pred = nn.Conv2d(conv_planes[7], 6*self.nb_ref_imgs, kernel_size=1, padding=0)
+
+ if self.output_exp:
+ upconv_planes = [256, 256, 128, 64, 32, 16]
+ self.deconv6 = upconv(conv_planes[5], upconv_planes[0])
+ self.deconv5 = upconv(upconv_planes[0]+conv_planes[4], upconv_planes[1])
+ self.deconv4 = upconv(upconv_planes[1]+conv_planes[3], upconv_planes[2])
+ self.deconv3 = upconv(upconv_planes[2]+conv_planes[2], upconv_planes[3])
+ self.deconv2 = upconv(upconv_planes[3]+conv_planes[1], upconv_planes[4])
+ self.deconv1 = upconv(upconv_planes[4]+conv_planes[0], upconv_planes[5])
+
+ self.pred_mask6 = nn.Conv2d(upconv_planes[0], self.nb_ref_imgs, kernel_size=3, padding=1)
+ self.pred_mask5 = nn.Conv2d(upconv_planes[1], self.nb_ref_imgs, kernel_size=3, padding=1)
+ self.pred_mask4 = nn.Conv2d(upconv_planes[2], self.nb_ref_imgs, kernel_size=3, padding=1)
+ self.pred_mask3 = nn.Conv2d(upconv_planes[3], self.nb_ref_imgs, kernel_size=3, padding=1)
+ self.pred_mask2 = nn.Conv2d(upconv_planes[4], self.nb_ref_imgs, kernel_size=3, padding=1)
+ self.pred_mask1 = nn.Conv2d(upconv_planes[5], self.nb_ref_imgs, kernel_size=3, padding=1)
+
+ def init_weights(self):
+ for m in self.modules():
+ if isinstance(m, nn.Conv2d) or isinstance(m, nn.ConvTranspose2d):
+ nn.init.xavier_uniform(m.weight.data)
+ if m.bias is not None:
+ m.bias.data.zero_()
+
+ def init_mask_weights(self):
+ for m in self.modules():
+ if isinstance(m, nn.ConvTranspose2d):
+ nn.init.xavier_uniform(m.weight.data)
+ if m.bias is not None:
+ m.bias.data.zero_()
+
+ for module in [self.pred_mask1, self.pred_mask2, self.pred_mask3, self.pred_mask4, self.pred_mask5, self.pred_mask6]:
+ for m in module.modules():
+ if isinstance(m, nn.Conv2d) or isinstance(m, nn.ConvTranspose2d):
+ nn.init.xavier_uniform(m.weight.data)
+ if m.bias is not None:
+ m.bias.data.zero_()
+
+ # for mod in [self.conv1, self.conv2, self.conv3, self.conv4, self.conv5, self.conv6, self.conv7, self.conv8, self.pose_pred]:
+ # for fparams in mod.parameters():
+ # fparams.requires_grad = False
+
+
+ def forward(self, target_image, ref_imgs):
+ assert(len(ref_imgs) == self.nb_ref_imgs)
+ input = [target_image]
+ input.extend(ref_imgs)
+ input = torch.cat(input, 1)
+ out_conv1 = self.conv1(input)
+ out_conv2 = self.conv2(out_conv1)
+ out_conv3 = self.conv3(out_conv2)
+ out_conv4 = self.conv4(out_conv3)
+ out_conv5 = self.conv5(out_conv4)
+ out_conv6 = self.conv6(out_conv5)
+ #out_conv7 = self.conv7(out_conv6)
+ #out_conv8 = self.conv8(out_conv7)
+
+ #pose = self.pose_pred(out_conv8)
+ #pose = pose.mean(3).mean(2)
+ #pose = 0.01 * pose.view(pose.size(0), self.nb_ref_imgs, 6)
+
+ if self.output_exp:
+ out_upconv6 = self.deconv6(out_conv6 )#[:, :, 0:out_conv5.size(2), 0:out_conv5.size(3)]
+ out_upconv5 = self.deconv5(torch.cat((out_upconv6, out_conv5), 1))#[:, :, 0:out_conv4.size(2), 0:out_conv4.size(3)]
+ out_upconv4 = self.deconv4(torch.cat((out_upconv5, out_conv4), 1))#[:, :, 0:out_conv3.size(2), 0:out_conv3.size(3)]
+ out_upconv3 = self.deconv3(torch.cat((out_upconv4, out_conv3), 1))#[:, :, 0:out_conv2.size(2), 0:out_conv2.size(3)]
+ out_upconv2 = self.deconv2(torch.cat((out_upconv3, out_conv2), 1))#[:, :, 0:out_conv1.size(2), 0:out_conv1.size(3)]
+ out_upconv1 = self.deconv1(torch.cat((out_upconv2, out_conv1), 1))#[:, :, 0:input.size(2), 0:input.size(3)]
+
+ exp_mask6 = nn.functional.sigmoid(self.pred_mask6(out_upconv6))
+ exp_mask5 = nn.functional.sigmoid(self.pred_mask5(out_upconv5))
+ exp_mask4 = nn.functional.sigmoid(self.pred_mask4(out_upconv4))
+ exp_mask3 = nn.functional.sigmoid(self.pred_mask3(out_upconv3))
+ exp_mask2 = nn.functional.sigmoid(self.pred_mask2(out_upconv2))
+ exp_mask1 = nn.functional.sigmoid(self.pred_mask1(out_upconv1))
+ else:
+ exp_mask6 = None
+ exp_mask5 = None
+ exp_mask4 = None
+ exp_mask3 = None
+ exp_mask2 = None
+ exp_mask1 = None
+
+ if self.training:
+ return exp_mask1, exp_mask2, exp_mask3, exp_mask4, exp_mask5, exp_mask6
+ else:
+ return exp_mask1
diff --git a/models/MaskResNet6.py b/models/MaskResNet6.py
new file mode 100644
index 0000000..1cc4fd8
--- /dev/null
+++ b/models/MaskResNet6.py
@@ -0,0 +1,160 @@
+# Author: Anurag Ranjan
+# Copyright (c) 2019, Anurag Ranjan
+# All rights reserved.
+
+import torch
+import torch.nn as nn
+
+def conv3x3(in_planes, out_planes, stride=1):
+ """3x3 convolution with padding"""
+ return nn.Conv2d(in_planes, out_planes, kernel_size=3, stride=stride,
+ padding=1, bias=False)
+
+def conv(in_planes, out_planes, kernel_size=3, stride=2):
+ return nn.Sequential(
+ nn.Conv2d(in_planes, out_planes, kernel_size=kernel_size, padding=(kernel_size-1)//2, stride=stride),
+ nn.ReLU(inplace=True)
+ )
+
+
+def upconv(in_planes, out_planes):
+ return nn.Sequential(
+ nn.ConvTranspose2d(in_planes, out_planes, kernel_size=4, stride=2, padding=1),
+ nn.ReLU(inplace=True)
+ )
+
+class BasicBlock(nn.Module):
+ expansion = 1
+
+ def __init__(self, inplanes, planes, stride=1, downsample=None):
+ super(BasicBlock, self).__init__()
+ self.conv1 = conv3x3(inplanes, planes, stride)
+ self.relu = nn.ReLU(inplace=True)
+ self.conv2 = conv3x3(planes, planes)
+ self.downsample = downsample
+ self.stride = stride
+
+ def forward(self, x):
+ residual = x
+
+ out = self.conv1(x)
+ out = self.relu(out)
+ out = self.conv2(out)
+
+ if self.downsample is not None:
+ residual = self.downsample(x)
+
+ out += residual
+ out = self.relu(out)
+
+ return out
+
+def make_layer(inplanes, block, planes, blocks, stride=1):
+ downsample = None
+ if stride != 1 or inplanes != planes * block.expansion:
+ downsample = nn.Sequential(
+ nn.Conv2d(inplanes, planes * block.expansion,
+ kernel_size=1, stride=stride, bias=False),
+ nn.BatchNorm2d(planes * block.expansion),
+ )
+
+ layers = []
+ layers.append(block(inplanes, planes, stride, downsample))
+ inplanes = planes * block.expansion
+ for i in range(1, blocks):
+ layers.append(block(inplanes, planes))
+
+ return nn.Sequential(*layers)
+
+class MaskResNet6(nn.Module):
+
+ def __init__(self, nb_ref_imgs=4, output_exp=True):
+ super(MaskResNet6, self).__init__()
+ self.nb_ref_imgs = nb_ref_imgs
+ self.output_exp = output_exp
+
+ conv_planes = [16, 32, 64, 128, 256, 256, 256, 256]
+ self.conv1 = conv(3*(1+self.nb_ref_imgs), conv_planes[0], kernel_size=7, stride=2)
+ self.conv2 = make_layer(conv_planes[0], BasicBlock, conv_planes[1], blocks=2, stride=2)
+ self.conv3 = make_layer(conv_planes[1], BasicBlock, conv_planes[2], blocks=2, stride=2)
+ self.conv4 = make_layer(conv_planes[2], BasicBlock, conv_planes[3], blocks=2, stride=2)
+ self.conv5 = make_layer(conv_planes[3], BasicBlock, conv_planes[4], blocks=2, stride=2)
+ self.conv6 = make_layer(conv_planes[4], BasicBlock, conv_planes[5], blocks=2, stride=2)
+
+ if self.output_exp:
+ upconv_planes = [256, 256, 128, 64, 32, 16]
+ self.deconv6 = upconv(conv_planes[5], upconv_planes[0])
+ self.deconv5 = upconv(upconv_planes[0]+conv_planes[4], upconv_planes[1])
+ self.deconv4 = upconv(upconv_planes[1]+conv_planes[3], upconv_planes[2])
+ self.deconv3 = upconv(upconv_planes[2]+conv_planes[2], upconv_planes[3])
+ self.deconv2 = upconv(upconv_planes[3]+conv_planes[1], upconv_planes[4])
+ self.deconv1 = upconv(upconv_planes[4]+conv_planes[0], upconv_planes[5])
+
+ self.pred_mask6 = nn.Conv2d(upconv_planes[0], self.nb_ref_imgs, kernel_size=3, padding=1)
+ self.pred_mask5 = nn.Conv2d(upconv_planes[1], self.nb_ref_imgs, kernel_size=3, padding=1)
+ self.pred_mask4 = nn.Conv2d(upconv_planes[2], self.nb_ref_imgs, kernel_size=3, padding=1)
+ self.pred_mask3 = nn.Conv2d(upconv_planes[3], self.nb_ref_imgs, kernel_size=3, padding=1)
+ self.pred_mask2 = nn.Conv2d(upconv_planes[4], self.nb_ref_imgs, kernel_size=3, padding=1)
+ self.pred_mask1 = nn.Conv2d(upconv_planes[5], self.nb_ref_imgs, kernel_size=3, padding=1)
+
+ def init_weights(self):
+ for m in self.modules():
+ if isinstance(m, nn.Conv2d) or isinstance(m, nn.ConvTranspose2d):
+ nn.init.xavier_uniform(m.weight.data)
+ if m.bias is not None:
+ m.bias.data.zero_()
+
+ def init_mask_weights(self):
+ for m in self.modules():
+ if isinstance(m, nn.ConvTranspose2d):
+ nn.init.xavier_uniform(m.weight.data)
+ if m.bias is not None:
+ m.bias.data.zero_()
+
+ for module in [self.pred_mask1, self.pred_mask2, self.pred_mask3, self.pred_mask4, self.pred_mask5, self.pred_mask6]:
+ for m in module.modules():
+ if isinstance(m, nn.Conv2d) or isinstance(m, nn.ConvTranspose2d):
+ nn.init.xavier_uniform(m.weight.data)
+ if m.bias is not None:
+ m.bias.data.zero_()
+
+
+
+ def forward(self, target_image, ref_imgs):
+ assert(len(ref_imgs) == self.nb_ref_imgs)
+ input = [target_image]
+ input.extend(ref_imgs)
+ input = torch.cat(input, 1)
+ out_conv1 = self.conv1(input)
+ out_conv2 = self.conv2(out_conv1)
+ out_conv3 = self.conv3(out_conv2)
+ out_conv4 = self.conv4(out_conv3)
+ out_conv5 = self.conv5(out_conv4)
+ out_conv6 = self.conv6(out_conv5)
+
+ if self.output_exp:
+ out_upconv6 = self.deconv6(out_conv6 )#[:, :, 0:out_conv5.size(2), 0:out_conv5.size(3)]
+ out_upconv5 = self.deconv5(torch.cat((out_upconv6, out_conv5), 1))#[:, :, 0:out_conv4.size(2), 0:out_conv4.size(3)]
+ out_upconv4 = self.deconv4(torch.cat((out_upconv5, out_conv4), 1))#[:, :, 0:out_conv3.size(2), 0:out_conv3.size(3)]
+ out_upconv3 = self.deconv3(torch.cat((out_upconv4, out_conv3), 1))#[:, :, 0:out_conv2.size(2), 0:out_conv2.size(3)]
+ out_upconv2 = self.deconv2(torch.cat((out_upconv3, out_conv2), 1))#[:, :, 0:out_conv1.size(2), 0:out_conv1.size(3)]
+ out_upconv1 = self.deconv1(torch.cat((out_upconv2, out_conv1), 1))#[:, :, 0:input.size(2), 0:input.size(3)]
+
+ exp_mask6 = nn.functional.sigmoid(self.pred_mask6(out_upconv6))
+ exp_mask5 = nn.functional.sigmoid(self.pred_mask5(out_upconv5))
+ exp_mask4 = nn.functional.sigmoid(self.pred_mask4(out_upconv4))
+ exp_mask3 = nn.functional.sigmoid(self.pred_mask3(out_upconv3))
+ exp_mask2 = nn.functional.sigmoid(self.pred_mask2(out_upconv2))
+ exp_mask1 = nn.functional.sigmoid(self.pred_mask1(out_upconv1))
+ else:
+ exp_mask6 = None
+ exp_mask5 = None
+ exp_mask4 = None
+ exp_mask3 = None
+ exp_mask2 = None
+ exp_mask1 = None
+
+ if self.training:
+ return exp_mask1, exp_mask2, exp_mask3, exp_mask4, exp_mask5, exp_mask6
+ else:
+ return exp_mask1
diff --git a/models/PoseExpNet.py b/models/PoseExpNet.py
new file mode 100644
index 0000000..6691d50
--- /dev/null
+++ b/models/PoseExpNet.py
@@ -0,0 +1,94 @@
+import torch
+import torch.nn as nn
+
+
+def conv(in_planes, out_planes, kernel_size=3):
+ return nn.Sequential(
+ nn.Conv2d(in_planes, out_planes, kernel_size=kernel_size, padding=(kernel_size-1)//2, stride=2),
+ nn.ReLU(inplace=True)
+ )
+
+
+def upconv(in_planes, out_planes):
+ return nn.Sequential(
+ nn.ConvTranspose2d(in_planes, out_planes, kernel_size=4, stride=2, padding=1),
+ nn.ReLU(inplace=True)
+ )
+
+
+class PoseExpNet(nn.Module):
+
+ def __init__(self, nb_ref_imgs=2, output_exp=False):
+ super(PoseExpNet, self).__init__()
+ self.nb_ref_imgs = nb_ref_imgs
+ self.output_exp = output_exp
+
+ conv_planes = [16, 32, 64, 128, 256, 256, 256]
+ self.conv1 = conv(3*(1+self.nb_ref_imgs), conv_planes[0], kernel_size=7)
+ self.conv2 = conv(conv_planes[0], conv_planes[1], kernel_size=5)
+ self.conv3 = conv(conv_planes[1], conv_planes[2])
+ self.conv4 = conv(conv_planes[2], conv_planes[3])
+ self.conv5 = conv(conv_planes[3], conv_planes[4])
+ self.conv6 = conv(conv_planes[4], conv_planes[5])
+ self.conv7 = conv(conv_planes[5], conv_planes[6])
+
+ self.pose_pred = nn.Conv2d(conv_planes[6], 6*self.nb_ref_imgs, kernel_size=1, padding=0)
+
+ if self.output_exp:
+ upconv_planes = [256, 128, 64, 32, 16]
+ self.upconv5 = upconv(conv_planes[4], upconv_planes[0])
+ self.upconv4 = upconv(upconv_planes[0], upconv_planes[1])
+ self.upconv3 = upconv(upconv_planes[1], upconv_planes[2])
+ self.upconv2 = upconv(upconv_planes[2], upconv_planes[3])
+ self.upconv1 = upconv(upconv_planes[3], upconv_planes[4])
+
+ self.predict_mask4 = nn.Conv2d(upconv_planes[1], self.nb_ref_imgs, kernel_size=3, padding=1)
+ self.predict_mask3 = nn.Conv2d(upconv_planes[2], self.nb_ref_imgs, kernel_size=3, padding=1)
+ self.predict_mask2 = nn.Conv2d(upconv_planes[3], self.nb_ref_imgs, kernel_size=3, padding=1)
+ self.predict_mask1 = nn.Conv2d(upconv_planes[4], self.nb_ref_imgs, kernel_size=3, padding=1)
+
+ def init_weights(self):
+ for m in self.modules():
+ if isinstance(m, nn.Conv2d) or isinstance(m, nn.ConvTranspose2d):
+ nn.init.xavier_uniform(m.weight.data)
+ if m.bias is not None:
+ m.bias.data.zero_()
+
+ def forward(self, target_image, ref_imgs):
+ assert(len(ref_imgs) == self.nb_ref_imgs)
+ input = [target_image]
+ input.extend(ref_imgs)
+ input = torch.cat(input, 1)
+ out_conv1 = self.conv1(input)
+ out_conv2 = self.conv2(out_conv1)
+ out_conv3 = self.conv3(out_conv2)
+ out_conv4 = self.conv4(out_conv3)
+ out_conv5 = self.conv5(out_conv4)
+ out_conv6 = self.conv6(out_conv5)
+ out_conv7 = self.conv7(out_conv6)
+
+ pose = self.pose_pred(out_conv7)
+ pose = pose.mean(3).mean(2)
+ pose = 0.01 * pose.view(pose.size(0), self.nb_ref_imgs, 6)
+
+ if self.output_exp:
+ out_upconv5 = self.upconv5(out_conv5 )[:, :, 0:out_conv4.size(2), 0:out_conv4.size(3)]
+ out_upconv4 = self.upconv4(out_upconv5)[:, :, 0:out_conv3.size(2), 0:out_conv3.size(3)]
+ out_upconv3 = self.upconv3(out_upconv4)[:, :, 0:out_conv2.size(2), 0:out_conv2.size(3)]
+ out_upconv2 = self.upconv2(out_upconv3)[:, :, 0:out_conv1.size(2), 0:out_conv1.size(3)]
+ out_upconv1 = self.upconv1(out_upconv2)[:, :, 0:input.size(2), 0:input.size(3)]
+
+ exp_mask4 = nn.functional.sigmoid(self.predict_mask4(out_upconv4))
+ exp_mask3 = nn.functional.sigmoid(self.predict_mask3(out_upconv3))
+ exp_mask2 = nn.functional.sigmoid(self.predict_mask2(out_upconv2))
+ exp_mask1 = nn.functional.sigmoid(self.predict_mask1(out_upconv1))
+ else:
+ exp_mask4 = None
+ exp_mask3 = None
+ exp_mask2 = None
+ exp_mask1 = None
+
+ if self.training:
+ return [exp_mask1, exp_mask2, exp_mask3, exp_mask4], pose
+ else:
+ return exp_mask1, pose
diff --git a/models/PoseNet6.py b/models/PoseNet6.py
new file mode 100644
index 0000000..89d33bb
--- /dev/null
+++ b/models/PoseNet6.py
@@ -0,0 +1,62 @@
+import torch
+import torch.nn as nn
+
+
+def conv(in_planes, out_planes, kernel_size=3):
+ return nn.Sequential(
+ nn.Conv2d(in_planes, out_planes, kernel_size=kernel_size, padding=(kernel_size-1)//2, stride=2),
+ nn.ReLU(inplace=True)
+ )
+
+
+def upconv(in_planes, out_planes):
+ return nn.Sequential(
+ nn.ConvTranspose2d(in_planes, out_planes, kernel_size=4, stride=2, padding=1),
+ nn.ReLU(inplace=True)
+ )
+
+
+class PoseNet6(nn.Module):
+
+ def __init__(self, nb_ref_imgs=2):
+ super(PoseNet6, self).__init__()
+ self.nb_ref_imgs = nb_ref_imgs
+
+ conv_planes = [16, 32, 64, 128, 256, 256, 256]
+ self.conv0 = conv(3*(1+self.nb_ref_imgs), 3*(1+self.nb_ref_imgs), kernel_size=3)
+ self.conv1 = conv(3*(1+self.nb_ref_imgs), conv_planes[0], kernel_size=7)
+ self.conv2 = conv(conv_planes[0], conv_planes[1], kernel_size=5)
+ self.conv3 = conv(conv_planes[1], conv_planes[2])
+ self.conv4 = conv(conv_planes[2], conv_planes[3])
+ self.conv5 = conv(conv_planes[3], conv_planes[4])
+ self.conv6 = conv(conv_planes[4], conv_planes[5])
+ self.conv7 = conv(conv_planes[5], conv_planes[6])
+
+ self.pose_pred = nn.Conv2d(conv_planes[6], 6*self.nb_ref_imgs, kernel_size=1, padding=0)
+
+ def init_weights(self):
+ for m in self.modules():
+ if isinstance(m, nn.Conv2d) or isinstance(m, nn.ConvTranspose2d):
+ nn.init.xavier_uniform(m.weight.data)
+ if m.bias is not None:
+ m.bias.data.zero_()
+
+ def forward(self, target_image, ref_imgs):
+ assert(len(ref_imgs) == self.nb_ref_imgs)
+ input = [target_image]
+ input.extend(ref_imgs)
+ input = torch.cat(input, 1)
+ out_conv0 = self.conv0(input)
+ out_conv1 = self.conv1(out_conv0)
+ out_conv2 = self.conv2(out_conv1)
+ out_conv3 = self.conv3(out_conv2)
+ out_conv4 = self.conv4(out_conv3)
+ out_conv5 = self.conv5(out_conv4)
+ out_conv6 = self.conv6(out_conv5)
+ out_conv7 = self.conv7(out_conv6)
+
+ pose = self.pose_pred(out_conv7)
+ pose = pose.mean(3).mean(2)
+ pose = 0.01 * pose.view(pose.size(0), self.nb_ref_imgs, 6)
+
+ return pose
diff --git a/models/PoseNetB6.py b/models/PoseNetB6.py
new file mode 100644
index 0000000..2e02f82
--- /dev/null
+++ b/models/PoseNetB6.py
@@ -0,0 +1,83 @@
+# Author: Anurag Ranjan
+# Copyright (c) 2019, Anurag Ranjan
+# All rights reserved.
+# based on github.com/ClementPinard/SfMLearner-Pytorch
+
+import torch
+import torch.nn as nn
+
+
+def conv(in_planes, out_planes, kernel_size=3):
+ return nn.Sequential(
+ nn.Conv2d(in_planes, out_planes, kernel_size=kernel_size, padding=(kernel_size-1)//2, stride=2),
+ nn.ReLU(inplace=True)
+ )
+
+
+def upconv(in_planes, out_planes):
+ return nn.Sequential(
+ nn.ConvTranspose2d(in_planes, out_planes, kernel_size=4, stride=2, padding=1),
+ nn.ReLU(inplace=True)
+ )
+
+
+class PoseNetB6(nn.Module):
+
+ def __init__(self, nb_ref_imgs=2):
+ super(PoseNetB6, self).__init__()
+ self.nb_ref_imgs = nb_ref_imgs
+
+ conv_planes = [16, 32, 64, 128, 256, 256, 256, 256]
+ self.conv1 = conv(3*(1+self.nb_ref_imgs), conv_planes[0], kernel_size=7)
+ self.conv2 = conv(conv_planes[0], conv_planes[1], kernel_size=5)
+ self.conv3 = conv(conv_planes[1], conv_planes[2])
+ self.conv4 = conv(conv_planes[2], conv_planes[3])
+ self.conv5 = conv(conv_planes[3], conv_planes[4])
+ self.conv6 = conv(conv_planes[4], conv_planes[5])
+ self.conv7 = conv(conv_planes[5], conv_planes[6])
+ self.conv8 = conv(conv_planes[6], conv_planes[7])
+
+ self.pose_pred = nn.Conv2d(conv_planes[7], 6*self.nb_ref_imgs, kernel_size=1, padding=0)
+
+
+ def init_weights(self):
+ for m in self.modules():
+ if isinstance(m, nn.Conv2d) or isinstance(m, nn.ConvTranspose2d):
+ nn.init.xavier_uniform(m.weight.data)
+ if m.bias is not None:
+ m.bias.data.zero_()
+
+ def init_mask_weights(self):
+ for m in self.modules():
+ if isinstance(m, nn.ConvTranspose2d):
+ nn.init.xavier_uniform(m.weight.data)
+ if m.bias is not None:
+ m.bias.data.zero_()
+
+ for module in [self.pred_mask1, self.pred_mask2, self.pred_mask3, self.pred_mask4, self.pred_mask5, self.pred_mask6]:
+ for m in module.modules():
+ if isinstance(m, nn.Conv2d) or isinstance(m, nn.ConvTranspose2d):
+ nn.init.xavier_uniform(m.weight.data)
+ if m.bias is not None:
+ m.bias.data.zero_()
+
+
+ def forward(self, target_image, ref_imgs):
+ assert(len(ref_imgs) == self.nb_ref_imgs)
+ input = [target_image]
+ input.extend(ref_imgs)
+ input = torch.cat(input, 1)
+ out_conv1 = self.conv1(input)
+ out_conv2 = self.conv2(out_conv1)
+ out_conv3 = self.conv3(out_conv2)
+ out_conv4 = self.conv4(out_conv3)
+ out_conv5 = self.conv5(out_conv4)
+ out_conv6 = self.conv6(out_conv5)
+ out_conv7 = self.conv7(out_conv6)
+ out_conv8 = self.conv8(out_conv7)
+
+ pose = self.pose_pred(out_conv8)
+ pose = pose.mean(3).mean(2)
+ pose = 0.01 * pose.view(pose.size(0), self.nb_ref_imgs, 6)
+
+ return pose
diff --git a/models/__init__.py b/models/__init__.py
new file mode 100644
index 0000000..928a664
--- /dev/null
+++ b/models/__init__.py
@@ -0,0 +1,11 @@
+from .back2future import Model as Back2Future
+from .DispNetS import DispNetS
+from .DispNetS6 import DispNetS6
+from .DispResNet6 import DispResNet6
+from .DispResNetS6 import DispResNetS6
+from .FlowNetC6 import FlowNetC6
+from .MaskNet6 import MaskNet6
+from .MaskResNet6 import MaskResNet6
+from .PoseExpNet import PoseExpNet
+from .PoseNet6 import PoseNet6
+from .PoseNetB6 import PoseNetB6
diff --git a/models/back2future.py b/models/back2future.py
new file mode 100644
index 0000000..863ad7f
--- /dev/null
+++ b/models/back2future.py
@@ -0,0 +1,321 @@
+# Author: Anurag Ranjan
+# Copyright (c) 2019, Anurag Ranjan
+# All rights reserved.
+
+import os
+import numpy as np
+
+import torch
+import torch.nn as nn
+from torch.nn import init
+import torch.nn.functional as F
+from torch.autograd import Variable
+from spatial_correlation_sampler import spatial_correlation_sample
+
+def correlate(input1, input2):
+ out_corr = spatial_correlation_sample(input1,
+ input2,
+ kernel_size=1,
+ patch_size=9,
+ stride=1)
+ # collate dimensions 1 and 2 in order to be treated as a
+ # regular 4D tensor
+ b, ph, pw, h, w = out_corr.size()
+ out_corr = out_corr.view(b, ph * pw, h, w)/input1.size(1)
+ return out_corr
+
+def conv_feat_block(nIn, nOut):
+ return nn.Sequential(
+ nn.Conv2d(nIn, nOut, kernel_size=3, stride=2, padding=1),
+ nn.LeakyReLU(0.2),
+ nn.Conv2d(nOut, nOut, kernel_size=3, stride=1, padding=1),
+ nn.LeakyReLU(0.2)
+ )
+
+def conv_dec_block(nIn):
+ return nn.Sequential(
+ nn.Conv2d(nIn, 128, kernel_size=3, stride=1, padding=1),
+ nn.LeakyReLU(0.2),
+ nn.Conv2d(128, 128, kernel_size=3, stride=1, padding=1),
+ nn.LeakyReLU(0.2),
+ nn.Conv2d(128, 96, kernel_size=3, stride=1, padding=1),
+ nn.LeakyReLU(0.2),
+ nn.Conv2d(96, 64, kernel_size=3, stride=1, padding=1),
+ nn.LeakyReLU(0.2),
+ nn.Conv2d(64, 32, kernel_size=3, stride=1, padding=1),
+ nn.LeakyReLU(0.2),
+ nn.Conv2d(32, 2, kernel_size=3, stride=1, padding=1)
+ )
+
+
+class Model(nn.Module):
+ def __init__(self, nlevels):
+ super(Model, self).__init__()
+
+ self.nlevels = nlevels
+ idx = [list(range(n, -1, -9)) for n in range(80,71,-1)]
+ idx = list(np.array(idx).flatten())
+ self.idx_fwd = Variable(torch.LongTensor(np.array(idx)).cuda(), requires_grad=False)
+ self.idx_bwd = Variable(torch.LongTensor(np.array(list(reversed(idx)))).cuda(), requires_grad=False)
+ self.upsample = nn.Upsample(scale_factor=2, mode='bilinear')
+ self.softmax2d = nn.Softmax2d()
+
+ self.conv1a = conv_feat_block(3,16)
+ self.conv1b = conv_feat_block(3,16)
+ self.conv1c = conv_feat_block(3,16)
+
+ self.conv2a = conv_feat_block(16,32)
+ self.conv2b = conv_feat_block(16,32)
+ self.conv2c = conv_feat_block(16,32)
+
+ self.conv3a = conv_feat_block(32,64)
+ self.conv3b = conv_feat_block(32,64)
+ self.conv3c = conv_feat_block(32,64)
+
+ self.conv4a = conv_feat_block(64,96)
+ self.conv4b = conv_feat_block(64,96)
+ self.conv4c = conv_feat_block(64,96)
+
+ self.conv5a = conv_feat_block(96,128)
+ self.conv5b = conv_feat_block(96,128)
+ self.conv5c = conv_feat_block(96,128)
+
+ self.conv6a = conv_feat_block(128,192)
+ self.conv6b = conv_feat_block(128,192)
+ self.conv6c = conv_feat_block(128,192)
+
+ self.corr = correlate # Correlation(pad_size=4, kernel_size=1, max_displacement=4, stride1=1, stride2=1, corr_multiply=1)
+
+ self.decoder_fwd6 = conv_dec_block(162)
+ self.decoder_bwd6 = conv_dec_block(162)
+ self.decoder_fwd5 = conv_dec_block(292)
+ self.decoder_bwd5 = conv_dec_block(292)
+ self.decoder_fwd4 = conv_dec_block(260)
+ self.decoder_bwd4 = conv_dec_block(260)
+ self.decoder_fwd3 = conv_dec_block(228)
+ self.decoder_bwd3 = conv_dec_block(228)
+ self.decoder_fwd2 = conv_dec_block(196)
+ self.decoder_bwd2 = conv_dec_block(196)
+
+ self.decoder_occ6 = conv_dec_block(354)
+ self.decoder_occ5 = conv_dec_block(292)
+ self.decoder_occ4 = conv_dec_block(260)
+ self.decoder_occ3 = conv_dec_block(228)
+ self.decoder_occ2 = conv_dec_block(196)
+
+ def init_weights(self):
+ for m in self.modules():
+ if isinstance(m, nn.Conv2d):
+ if m.bias is not None:
+ init.uniform(m.bias)
+ init.xavier_uniform(m.weight)
+
+ if isinstance(m, nn.ConvTranspose2d):
+ if m.bias is not None:
+ init.uniform(m.bias)
+ init.xavier_uniform(m.weight)
+
+ def normalize(self, ims):
+ imt = []
+ for im in ims:
+ im = im * 0.5
+ im = im + 0.5
+ im[:,0,:,:] = im[:,0,:,:] - 0.485 # Red
+ im[:,1,:,:] = im[:,1,:,:] - 0.456 # Green
+ im[:,2,:,:] = im[:,2,:,:] - 0.406 # Blue
+
+ im[:,0,:,:] = im[:,0,:,:] / 0.229 # Red
+ im[:,1,:,:] = im[:,1,:,:] / 0.224 # Green
+ im[:,2,:,:] = im[:,2,:,:] / 0.225 # Blue
+
+ imt.append(im)
+ return imt
+
+ def forward(self, im_tar, im_refs):
+ '''
+ inputS:
+ im_tar: Middle Frame, I_0
+ im_refs: Adjecent Frames in the order, [I-, I+]
+
+ outputs:
+ At self.nlevels different scales:
+ flow_fwd: optical flow from I_0 to I+
+ flow_bwd: optical flow from I_0 to I+
+ occ : occlusions
+ '''
+ # im = Variable(torch.zeros(1,9,512,512).cuda())
+ # ima = im[:, :3, :, :] + 0.2 # I_0
+ # imb = im[:, 3:6, :, :] + 0.3 # I_+
+ # imc = im[:, 6:, :, :] + 0.1 # I_-
+ im_norm = self.normalize([im_tar] + im_refs)
+
+ feat1a = self.conv1a(im_norm[0])
+ feat2a = self.conv2a(feat1a)
+ feat3a = self.conv3a(feat2a)
+ feat4a = self.conv4a(feat3a)
+ feat5a = self.conv5a(feat4a)
+ feat6a = self.conv6a(feat5a)
+
+ feat1b = self.conv1b(im_norm[2])
+ feat2b = self.conv2b(feat1b)
+ feat3b = self.conv3b(feat2b)
+ feat4b = self.conv4b(feat3b)
+ feat5b = self.conv5b(feat4b)
+ feat6b = self.conv6b(feat5b)
+
+ feat1c = self.conv1c(im_norm[1])
+ feat2c = self.conv2c(feat1c)
+ feat3c = self.conv3c(feat2c)
+ feat4c = self.conv4c(feat3c)
+ feat5c = self.conv5c(feat4c)
+ feat6c = self.conv6c(feat5c)
+
+ corr6_fwd = self.corr(feat6a, feat6b)
+ corr6_fwd = corr6_fwd.index_select(1,self.idx_fwd)
+ corr6_bwd = self.corr(feat6a, feat6c)
+ corr6_bwd = corr6_bwd.index_select(1,self.idx_bwd)
+ corr6 = torch.cat((corr6_fwd, corr6_bwd), 1)
+
+ flow6_fwd = self.decoder_fwd6(corr6)
+ flow6_fwd_up = self.upsample(flow6_fwd)
+ flow6_bwd = self.decoder_bwd6(corr6)
+ flow6_bwd_up = self.upsample(flow6_bwd)
+ feat5b_warped = self.warp(feat5b, 0.625*flow6_fwd_up)
+ feat5c_warped = self.warp(feat5c, -0.625*flow6_fwd_up)
+
+ occ6_feat = torch.cat((corr6, feat6a), 1)
+ occ6 = self.softmax2d(self.decoder_occ6(occ6_feat))
+
+ corr5_fwd = self.corr(feat5a, feat5b_warped)
+ corr5_fwd = corr5_fwd.index_select(1,self.idx_fwd)
+ corr5_bwd = self.corr(feat5a, feat5c_warped)
+ corr5_bwd = corr5_bwd.index_select(1,self.idx_bwd)
+ corr5 = torch.cat((corr5_fwd, corr5_bwd), 1)
+
+ upfeat5_fwd = torch.cat((corr5, feat5a, flow6_fwd_up), 1)
+ flow5_fwd = self.decoder_fwd5(upfeat5_fwd)
+ flow5_fwd_up = self.upsample(flow5_fwd)
+ upfeat5_bwd = torch.cat((corr5, feat5a, flow6_bwd_up),1)
+ flow5_bwd = self.decoder_bwd5(upfeat5_bwd)
+ flow5_bwd_up = self.upsample(flow5_bwd)
+ feat4b_warped = self.warp(feat4b, 1.25*flow5_fwd_up)
+ feat4c_warped = self.warp(feat4c, -1.25*flow5_fwd_up)
+
+ occ5 = self.softmax2d(self.decoder_occ5(upfeat5_fwd))
+
+ corr4_fwd = self.corr(feat4a, feat4b_warped)
+ corr4_fwd = corr4_fwd.index_select(1,self.idx_fwd)
+ corr4_bwd = self.corr(feat4a, feat4c_warped)
+ corr4_bwd = corr4_bwd.index_select(1,self.idx_bwd)
+ corr4 = torch.cat((corr4_fwd, corr4_bwd), 1)
+
+ upfeat4_fwd = torch.cat((corr4, feat4a, flow5_fwd_up), 1)
+ flow4_fwd = self.decoder_fwd4(upfeat4_fwd)
+ flow4_fwd_up = self.upsample(flow4_fwd)
+ upfeat4_bwd = torch.cat((corr4, feat4a, flow5_bwd_up),1)
+ flow4_bwd = self.decoder_bwd4(upfeat4_bwd)
+ flow4_bwd_up = self.upsample(flow4_bwd)
+ feat3b_warped = self.warp(feat3b, 2.5*flow4_fwd_up)
+ feat3c_warped = self.warp(feat3c, -2.5*flow4_fwd_up)
+
+ occ4 = self.softmax2d(self.decoder_occ4(upfeat4_fwd))
+
+ corr3_fwd = self.corr(feat3a, feat3b_warped)
+ corr3_fwd = corr3_fwd.index_select(1,self.idx_fwd)
+ corr3_bwd = self.corr(feat3a, feat3c_warped)
+ corr3_bwd = corr3_bwd.index_select(1,self.idx_bwd)
+ corr3 = torch.cat((corr3_fwd, corr3_bwd), 1)
+
+ upfeat3_fwd = torch.cat((corr3, feat3a, flow4_fwd_up), 1)
+ flow3_fwd = self.decoder_fwd3(upfeat3_fwd)
+ flow3_fwd_up = self.upsample(flow3_fwd)
+ upfeat3_bwd = torch.cat((corr3, feat3a, flow4_bwd_up),1)
+ flow3_bwd = self.decoder_bwd3(upfeat3_bwd)
+ flow3_bwd_up = self.upsample(flow3_bwd)
+ feat2b_warped = self.warp(feat2b, 5.0*flow3_fwd_up)
+ feat2c_warped = self.warp(feat2c, -5.0*flow3_fwd_up)
+
+ occ3 = self.softmax2d(self.decoder_occ3(upfeat3_fwd))
+
+ corr2_fwd = self.corr(feat2a, feat2b_warped)
+ corr2_fwd = corr2_fwd.index_select(1,self.idx_fwd)
+ corr2_bwd = self.corr(feat2a, feat2c_warped)
+ corr2_bwd = corr2_bwd.index_select(1,self.idx_bwd)
+ corr2 = torch.cat((corr2_fwd, corr2_bwd), 1)
+
+ upfeat2_fwd = torch.cat((corr2, feat2a, flow3_fwd_up), 1)
+ flow2_fwd = self.decoder_fwd2(upfeat2_fwd)
+ flow2_fwd_up = self.upsample(flow2_fwd)
+ upfeat2_bwd = torch.cat((corr2, feat2a, flow3_bwd_up),1)
+ flow2_bwd = self.decoder_bwd2(upfeat2_bwd)
+ flow2_bwd_up = self.upsample(flow2_bwd)
+
+ occ2 = self.softmax2d(self.decoder_occ2(upfeat2_fwd))
+
+ flow2_fwd_fullres = 20*self.upsample(flow2_fwd_up)
+ flow3_fwd_fullres = 10*self.upsample(flow3_fwd_up)
+ flow4_fwd_fullres = 5*self.upsample(flow4_fwd_up)
+ flow5_fwd_fullres = 2.5*self.upsample(flow5_fwd_up)
+ flow6_fwd_fullres = 1.25*self.upsample(flow6_fwd_up)
+
+ flow2_bwd_fullres = -20*self.upsample(flow2_bwd_up)
+ flow3_bwd_fullres = -10*self.upsample(flow3_bwd_up)
+ flow4_bwd_fullres = -5*self.upsample(flow4_bwd_up)
+ flow5_bwd_fullres = -2.5*self.upsample(flow5_bwd_up)
+ flow6_bwd_fullres = -1.25*self.upsample(flow6_bwd_up)
+
+ occ2_fullres = F.upsample(occ2, scale_factor=4)
+ occ3_fullres = F.upsample(occ3, scale_factor=4)
+ occ4_fullres = F.upsample(occ4, scale_factor=4)
+ occ5_fullres = F.upsample(occ5, scale_factor=4)
+ occ6_fullres = F.upsample(occ6, scale_factor=4)
+
+ if self.training:
+ flow_fwd = [flow2_fwd_fullres, flow3_fwd_fullres, flow4_fwd_fullres, flow5_fwd_fullres, flow6_fwd_fullres]
+ flow_bwd = [flow2_bwd_fullres, flow3_bwd_fullres, flow4_bwd_fullres, flow5_bwd_fullres, flow6_bwd_fullres]
+ occ = [occ2_fullres, occ3_fullres, occ4_fullres, occ5_fullres, occ6_fullres]
+
+ if self.nlevels==6:
+ flow_fwd.append(0.625*flow6_fwd_up)
+ flow_bwd.append(-0.625*flow6_bwd_up)
+ occ.append(F.upsample(occ6, scale_factor=2))
+
+ return flow_fwd, flow_bwd, occ
+ else:
+ return flow2_fwd_fullres, flow2_bwd_fullres, occ2_fullres
+
+ def warp(self, x, flo):
+ """
+ warp an image/tensor (im2) back to im1, according to the optical flow
+ x: [B, C, H, W] (im2)
+ flo: [B, 2, H, W] flow
+ """
+ B, C, H, W = x.size()
+ # mesh grid
+ xx = torch.arange(0, W).view(1,-1).repeat(H,1)
+ yy = torch.arange(0, H).view(-1,1).repeat(1,W)
+ xx = xx.view(1,1,H,W).repeat(B,1,1,1)
+ yy = yy.view(1,1,H,W).repeat(B,1,1,1)
+ grid = torch.cat((xx,yy),1).float()
+
+ if x.is_cuda:
+ grid = grid.cuda()
+ vgrid = Variable(grid) + flo
+
+ # scale grid to [-1,1]
+ vgrid[:,0,:,:] = 2.0*vgrid[:,0,:,:]/max(W-1,1)-1.0
+ vgrid[:,1,:,:] = 2.0*vgrid[:,1,:,:]/max(H-1,1)-1.0
+
+ vgrid = vgrid.permute(0,2,3,1)
+ output = nn.functional.grid_sample(x, vgrid, padding_mode='border')
+ mask = torch.autograd.Variable(torch.ones(x.size()), requires_grad=False).cuda()
+ mask = nn.functional.grid_sample(mask, vgrid)
+
+ # if W==128:
+ # np.save('mask.npy', mask.cpu().data.numpy())
+ # np.save('warp.npy', output.cpu().data.numpy())
+
+ mask[mask.data<0.9999] = 0
+ mask[mask.data>0] = 1
+
+ return output#*mask
diff --git a/models/submodules.py b/models/submodules.py
new file mode 100644
index 0000000..c33c61e
--- /dev/null
+++ b/models/submodules.py
@@ -0,0 +1,67 @@
+import torch.nn as nn
+import torch
+import numpy as np
+
+def conv(batchNorm, in_planes, out_planes, kernel_size=3, stride=1):
+ if batchNorm:
+ return nn.Sequential(
+ nn.Conv2d(in_planes, out_planes, kernel_size=kernel_size, stride=stride, padding=(kernel_size-1)//2, bias=True),
+ nn.BatchNorm2d(out_planes),
+ #_leaky_relu()
+ nn.LeakyReLU(0.1,inplace=True)
+ )
+ else:
+ return nn.Sequential(
+ nn.Conv2d(in_planes, out_planes, kernel_size=kernel_size, stride=stride, padding=(kernel_size-1)//2, bias=True),
+ #_leaky_relu()
+ nn.LeakyReLU(0.1,inplace=True)
+ )
+
+def i_conv(batchNorm, in_planes, out_planes, kernel_size=3, stride=1, bias = True):
+ if batchNorm:
+ return nn.Sequential(
+ nn.Conv2d(in_planes, out_planes, kernel_size=kernel_size, stride=stride, padding=(kernel_size-1)//2, bias=bias),
+ nn.BatchNorm2d(out_planes),
+ )
+ else:
+ return nn.Sequential(
+ nn.Conv2d(in_planes, out_planes, kernel_size=kernel_size, stride=stride, padding=(kernel_size-1)//2, bias=bias),
+ )
+
+def predict_flow(in_planes):
+ return nn.Conv2d(in_planes,2,kernel_size=3,stride=1,padding=1,bias=True)
+
+def deconv(in_planes, out_planes):
+ return nn.Sequential(
+ nn.ConvTranspose2d(in_planes, out_planes, kernel_size=4, stride=2, padding=1, bias=True),
+ #_leaky_relu()
+ nn.LeakyReLU(0.1,inplace=True)
+ )
+
+class tofp16(nn.Module):
+ def __init__(self):
+ super(tofp16, self).__init__()
+
+ def forward(self, input):
+ return input.half()
+
+class _leaky_relu(nn.Module):
+ def __init__(self):
+ super(_leaky_relu, self).__init__()
+
+ def forward(self, x):
+ x_neg = 0.1*x
+ return torch.max(x_neg, x)
+
+class tofp32(nn.Module):
+ def __init__(self):
+ super(tofp32, self).__init__()
+
+ def forward(self, input):
+ return input.float()
+
+
+def save_grad(grads, name):
+ def hook(grad):
+ grads[name] = grad
+ return hook
diff --git a/models/utils.py b/models/utils.py
new file mode 100644
index 0000000..7aef5d4
--- /dev/null
+++ b/models/utils.py
@@ -0,0 +1,67 @@
+from __future__ import division
+import math
+
+import torch
+import torch.nn as nn
+
+
+def conv(in_planes, out_planes, stride=1, batch_norm=False):
+ if batch_norm:
+ return nn.Sequential(
+ nn.Conv2d(in_planes, out_planes, kernel_size=3, stride=stride, padding=1, bias=False),
+ nn.BatchNorm2d(out_planes, eps=1e-3),
+ nn.ReLU(inplace=True)
+ )
+ else:
+ return nn.Sequential(
+ nn.Conv2d(in_planes, out_planes, kernel_size=3, stride=stride, padding=1, bias=True),
+ nn.ReLU(inplace=True)
+ )
+
+
+def deconv(in_planes, out_planes, batch_norm=False):
+ if batch_norm:
+ return nn.Sequential(
+ nn.ConvTranspose2d(in_planes, out_planes, kernel_size=4, stride=2, padding=1, bias=True),
+ nn.Conv2d(out_planes, out_planes, kernel_size=3, stride=1, padding=1, bias=False),
+ nn.BatchNorm2d(out_planes, eps=1e-3),
+ nn.ReLU(inplace=True)
+ )
+ else:
+ return nn.Sequential(
+ nn.ConvTranspose2d(in_planes, out_planes, kernel_size=4, stride=2, padding=1, bias=True),
+ nn.Conv2d(out_planes, out_planes, kernel_size=3, stride=1, padding=1, bias=True),
+ nn.ReLU(inplace=True)
+ )
+
+
+def predict_depth(in_planes, with_confidence):
+ return nn.Conv2d(in_planes, 2 if with_confidence else 1, kernel_size=3, stride=1, padding=1, bias=True)
+
+
+def post_process_depth(depth, activation_function=None, clamp=False):
+ if activation_function is not None:
+ depth = activation_function(depth)
+
+ if clamp:
+ depth = depth.clamp(10, 80)
+
+ return depth[:,0]
+
+
+def adaptative_cat(out_conv, out_deconv, out_depth_up):
+ out_deconv = out_deconv[:, :, :out_conv.size(2), :out_conv.size(3)]
+ out_depth_up = out_depth_up[:, :, :out_conv.size(2), :out_conv.size(3)]
+ return torch.cat((out_conv, out_deconv, out_depth_up), 1)
+
+
+def init_modules(net):
+ for m in net.modules():
+ if isinstance(m, nn.Conv2d) or isinstance(m, nn.ConvTranspose2d):
+ n = m.kernel_size[0] * m.kernel_size[1] * m.out_channels
+ m.weight.data.normal_(0, math.sqrt(2/n))
+ if m.bias is not None:
+ m.bias.data.zero_()
+ elif isinstance(m, nn.BatchNorm2d):
+ m.weight.data.fill_(1)
+ m.bias.data.zero_()
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..0c872cd
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,13 @@
+torchvision
+scipy
+argparse
+tensorboardX
+blessings
+progressbar2
+path.py
+matplotlib
+opencv-python
+scikit-image
+pypng
+tqdm
+spatial-correlation-sampler
diff --git a/run_inference.py b/run_inference.py
new file mode 100644
index 0000000..efa01ab
--- /dev/null
+++ b/run_inference.py
@@ -0,0 +1,77 @@
+import torch
+
+from scipy.misc import imread, imsave, imresize
+import numpy as np
+from path import Path
+import argparse
+from tqdm import tqdm
+
+from models import DispNetS
+from utils import tensor2array
+
+parser = argparse.ArgumentParser(description='Inference script for DispNet learned with \
+ Structure from Motion Learner inference on KITTI and CityScapes Dataset',
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+parser.add_argument("--output-disp", action='store_true', help="save disparity img")
+parser.add_argument("--output-depth", action='store_true', help="save depth img")
+parser.add_argument("--pretrained", required=True, type=str, help="pretrained DispNet path")
+parser.add_argument("--img-height", default=128, type=int, help="Image height")
+parser.add_argument("--img-width", default=416, type=int, help="Image width")
+parser.add_argument("--no-resize", action='store_true', help="no resizing is done")
+
+parser.add_argument("--dataset-list", default=None, type=str, help="Dataset list file")
+parser.add_argument("--dataset-dir", default='.', type=str, help="Dataset directory")
+parser.add_argument("--output-dir", default='output', type=str, help="Output directory")
+
+parser.add_argument("--img-exts", default=['png', 'jpg', 'bmp'], nargs='*', type=str, help="images extensions to glob")
+
+
+def main():
+ args = parser.parse_args()
+ if not(args.output_disp or args.output_depth):
+ print('You must at least output one value !')
+ return
+
+ disp_net = DispNetS().cuda()
+ weights = torch.load(args.pretrained)
+ disp_net.load_state_dict(weights['state_dict'])
+ disp_net.eval()
+
+ dataset_dir = Path(args.dataset_dir)
+ output_dir = Path(args.output_dir)
+ output_dir.makedirs_p()
+
+ if args.dataset_list is not None:
+ with open(args.dataset_list, 'r') as f:
+ test_files = [dataset_dir/file for file in f.read().splitlines()]
+ else:
+ test_files = sum([dataset_dir.files('*.{}'.format(ext)) for ext in args.img_exts], [])
+
+ print('{} files to test'.format(len(test_files)))
+
+ for file in tqdm(test_files):
+
+ img = imread(file).astype(np.float32)
+
+ h,w,_ = img.shape
+ if (not args.no_resize) and (h != args.img_height or w != args.img_width):
+ img = imresize(img, (args.img_height, args.img_width)).astype(np.float32)
+ img = np.transpose(img, (2, 0, 1))
+
+ tensor_img = torch.from_numpy(img).unsqueeze(0)
+ tensor_img = ((tensor_img/255 - 0.5)/0.2).cuda()
+ var_img = torch.autograd.Variable(tensor_img, volatile=True)
+
+ output = disp_net(var_img).data.cpu()[0]
+
+ if args.output_disp:
+ disp = (255*tensor2array(output, max_value=None, colormap='bone')).astype(np.uint8)
+ imsave(output_dir/'{}_disp{}'.format(file.namebase,file.ext), disp)
+ if args.output_depth:
+ depth = 1/output
+ depth = (255*tensor2array(depth, max_value=10, colormap='rainbow')).astype(np.uint8)
+ imsave(output_dir/'{}_depth{}'.format(file.namebase,file.ext), depth)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/sintel_eval/pose_evaluation_utils.py b/sintel_eval/pose_evaluation_utils.py
new file mode 100644
index 0000000..2ac18c0
--- /dev/null
+++ b/sintel_eval/pose_evaluation_utils.py
@@ -0,0 +1,61 @@
+# Mostly based on the code written by Clement Godard:
+# https://github.com/mrharicot/monodepth/blob/master/utils/evaluation_utils.py
+import numpy as np
+# import pandas as pd
+from path import Path
+from scipy.misc import imread
+from tqdm import tqdm
+from .sintel_io import cam_read
+
+class test_framework_Sintel(object):
+ def __init__(self, root, sequence_set, seq_length=3, step=1):
+ self.root = root
+ self.img_files, self.poses, self.sample_indices = read_scene_data(self.root, sequence_set, seq_length, step)
+
+ def generator(self):
+ for img_list, pose_list, sample_list in zip(self.img_files, self.poses, self.sample_indices):
+ for snippet_indices in sample_list:
+ imgs = [imread(img_list[i]).astype(np.float32) for i in snippet_indices]
+ poses = [cam_read(pose_list[i], pose_only=True).astype(np.float32) for i in snippet_indices]
+ poses = np.stack(poses)
+ first_pose = poses[0]
+ poses[:,:,-1] -= first_pose[:,-1]
+ compensated_poses = np.linalg.inv(first_pose[:,:3]) @ poses
+
+ yield {'imgs': imgs,
+ 'path': img_list[0],
+ 'poses': compensated_poses
+ }
+
+ def __iter__(self):
+ return self.generator()
+
+ def __len__(self):
+ return sum(len(imgs) for imgs in self.img_files)
+
+
+def read_scene_data(data_root, sequence_set, seq_length=3, step=1):
+ data_root = Path(data_root)
+ im_sequences = []
+ poses_sequences = []
+ indices_sequences = []
+ demi_length = (seq_length - 1) // 2
+ shift_range = np.array([step*i for i in range(-demi_length, demi_length + 1)]).reshape(1, -1)
+
+ sequences = set()
+ for seq in sequence_set:
+ corresponding_dirs = set((data_root/'clean').dirs(seq))
+ sequences = sequences | corresponding_dirs
+
+ print('getting test metadata for theses sequences : {}'.format(sequences))
+ for sequence in tqdm(sequences):
+ poses = sorted(Path(sequence.replace('/clean/', '/camdata_left/')).files('*.cam'))
+ # np.genfromtxt(data_root/'poses'/'{}.txt'.format(sequence.name)).astype(np.float64).reshape(-1, 3, 4)
+ imgs = sorted(sequence.files('*.png'))
+ # construct 5-snippet sequences
+ tgt_indices = np.arange(demi_length, len(imgs) - demi_length).reshape(-1, 1)
+ snippet_indices = shift_range + tgt_indices
+ im_sequences.append(imgs)
+ poses_sequences.append(poses)
+ indices_sequences.append(snippet_indices)
+ return im_sequences, poses_sequences, indices_sequences
diff --git a/sintel_eval/sintel_io.py b/sintel_eval/sintel_io.py
new file mode 100644
index 0000000..4f6b05c
--- /dev/null
+++ b/sintel_eval/sintel_io.py
@@ -0,0 +1,193 @@
+#! /usr/bin/env python2
+
+"""
+I/O script to save and load the data coming with the MPI-Sintel low-level
+computer vision benchmark.
+
+For more details about the benchmark, please visit www.mpi-sintel.de
+
+CHANGELOG:
+v1.0 (2015/02/03): First release
+
+Copyright (c) 2015 Jonas Wulff
+Max Planck Institute for Intelligent Systems, Tuebingen, Germany
+
+"""
+
+# Requirements: Numpy as PIL/Pillow
+import numpy as np
+from PIL import Image
+
+# Check for endianness, based on Daniel Scharstein's optical flow code.
+# Using little-endian architecture, these two should be equal.
+TAG_FLOAT = 202021.25
+TAG_CHAR = 'PIEH'
+
+def flow_read(filename):
+ """ Read optical flow from file, return (U,V) tuple.
+
+ Original code by Deqing Sun, adapted from Daniel Scharstein.
+ """
+ f = open(filename,'rb')
+ check = np.fromfile(f,dtype=np.float32,count=1)[0]
+ assert check == TAG_FLOAT, ' flow_read:: Wrong tag in flow file (should be: {0}, is: {1}). Big-endian machine? '.format(TAG_FLOAT,check)
+ width = np.fromfile(f,dtype=np.int32,count=1)[0]
+ height = np.fromfile(f,dtype=np.int32,count=1)[0]
+ size = width*height
+ assert width > 0 and height > 0 and size > 1 and size < 100000000, ' flow_read:: Wrong input size (width = {0}, height = {1}).'.format(width,height)
+ tmp = np.fromfile(f,dtype=np.float32,count=-1).reshape((height,width*2))
+ u = tmp[:,np.arange(width)*2]
+ v = tmp[:,np.arange(width)*2 + 1]
+ return u,v
+
+def flow_write(filename,uv,v=None):
+ """ Write optical flow to file.
+
+ If v is None, uv is assumed to contain both u and v channels,
+ stacked in depth.
+
+ Original code by Deqing Sun, adapted from Daniel Scharstein.
+ """
+ nBands = 2
+
+ if v is None:
+ assert(uv.ndim == 3)
+ assert(uv.shape[2] == 2)
+ u = uv[:,:,0]
+ v = uv[:,:,1]
+ else:
+ u = uv
+
+ assert(u.shape == v.shape)
+ height,width = u.shape
+ f = open(filename,'wb')
+ # write the header
+ f.write(TAG_CHAR)
+ np.array(width).astype(np.int32).tofile(f)
+ np.array(height).astype(np.int32).tofile(f)
+ # arrange into matrix form
+ tmp = np.zeros((height, width*nBands))
+ tmp[:,np.arange(width)*2] = u
+ tmp[:,np.arange(width)*2 + 1] = v
+ tmp.astype(np.float32).tofile(f)
+ f.close()
+
+
+def depth_read(filename):
+ """ Read depth data from file, return as numpy array. """
+ f = open(filename,'rb')
+ check = np.fromfile(f,dtype=np.float32,count=1)[0]
+ assert check == TAG_FLOAT, ' depth_read:: Wrong tag in flow file (should be: {0}, is: {1}). Big-endian machine? '.format(TAG_FLOAT,check)
+ width = np.fromfile(f,dtype=np.int32,count=1)[0]
+ height = np.fromfile(f,dtype=np.int32,count=1)[0]
+ size = width*height
+ assert width > 0 and height > 0 and size > 1 and size < 100000000, ' depth_read:: Wrong input size (width = {0}, height = {1}).'.format(width,height)
+ depth = np.fromfile(f,dtype=np.float32,count=-1).reshape((height,width))
+ return depth
+
+def depth_write(filename, depth):
+ """ Write depth to file. """
+ height,width = depth.shape[:2]
+ f = open(filename,'wb')
+ # write the header
+ f.write(TAG_CHAR)
+ np.array(width).astype(np.int32).tofile(f)
+ np.array(height).astype(np.int32).tofile(f)
+
+ depth.astype(np.float32).tofile(f)
+ f.close()
+
+
+def disparity_write(filename,disparity,bitdepth=16):
+ """ Write disparity to file.
+
+ bitdepth can be either 16 (default) or 32.
+
+ The maximum disparity is 1024, since the image width in Sintel
+ is 1024.
+ """
+ d = disparity.copy()
+
+ # Clip disparity.
+ d[d>1024] = 1024
+ d[d<0] = 0
+
+ d_r = (d / 4.0).astype('uint8')
+ d_g = ((d * (2.0**6)) % 256).astype('uint8')
+
+ out = np.zeros((d.shape[0],d.shape[1],3),dtype='uint8')
+ out[:,:,0] = d_r
+ out[:,:,1] = d_g
+
+ if bitdepth > 16:
+ d_b = (d * (2**14) % 256).astype('uint8')
+ out[:,:,2] = d_b
+
+ Image.fromarray(out,'RGB').save(filename,'PNG')
+
+
+def disparity_read(filename):
+ """ Return disparity read from filename. """
+ f_in = np.array(Image.open(filename))
+ d_r = f_in[:,:,0].astype('float64')
+ d_g = f_in[:,:,1].astype('float64')
+ d_b = f_in[:,:,2].astype('float64')
+
+ depth = d_r * 4 + d_g / (2**6) + d_b / (2**14)
+ return depth
+
+
+def cam_read(filename, pose_only=False):
+ """ Read camera data, return (M,N) tuple.
+
+ M is the intrinsic matrix, N is the extrinsic matrix, so that
+
+ x = M*N*X,
+ with x being a point in homogeneous image pixel coordinates, X being a
+ point in homogeneous world coordinates.
+ """
+ f = open(filename,'rb')
+ check = np.fromfile(f,dtype=np.float32,count=1)[0]
+ assert check == TAG_FLOAT, ' cam_read:: Wrong tag in flow file (should be: {0}, is: {1}). Big-endian machine? '.format(TAG_FLOAT,check)
+ M = np.fromfile(f,dtype='float64',count=9).reshape((3,3))
+ N = np.fromfile(f,dtype='float64',count=12).reshape((3,4))
+ if pose_only:
+ return N
+ else:
+ return M,N
+
+def cam_write(filename, M, N):
+ """ Write intrinsic matrix M and extrinsic matrix N to file. """
+ f = open(filename,'wb')
+ # write the header
+ f.write(TAG_CHAR)
+ M.astype('float64').tofile(f)
+ N.astype('float64').tofile(f)
+ f.close()
+
+
+def segmentation_write(filename,segmentation):
+ """ Write segmentation to file. """
+
+ segmentation_ = segmentation.astype('int32')
+ seg_r = np.floor(segmentation_ / (256**2)).astype('uint8')
+ seg_g = np.floor((segmentation_ % (256**2)) / 256).astype('uint8')
+ seg_b = np.floor(segmentation_ % 256).astype('uint8')
+
+ out = np.zeros((segmentation.shape[0],segmentation.shape[1],3),dtype='uint8')
+ out[:,:,0] = seg_r
+ out[:,:,1] = seg_g
+ out[:,:,2] = seg_b
+
+ Image.fromarray(out,'RGB').save(filename,'PNG')
+
+
+def segmentation_read(filename):
+ """ Return disparity read from filename. """
+ f_in = np.array(Image.open(filename))
+ seg_r = f_in[:,:,0].astype('int32')
+ seg_g = f_in[:,:,1].astype('int32')
+ seg_b = f_in[:,:,2].astype('int32')
+
+ segmentation = (seg_r * 256 + seg_g) * 256 + seg_b
+ return segmentation
diff --git a/ssim.py b/ssim.py
new file mode 100644
index 0000000..d97ca88
--- /dev/null
+++ b/ssim.py
@@ -0,0 +1,76 @@
+# Author: Jonas Wulff
+
+import torch
+import torch.nn.functional as F
+from torch.autograd import Variable
+import numpy as np
+from math import exp
+
+def gaussian(window_size, sigma):
+ gauss = torch.Tensor([exp(-(x - window_size//2)**2/float(2*sigma**2)) for x in range(window_size)])
+ return gauss/gauss.sum()
+
+def create_window(window_size, channel):
+ _1D_window = gaussian(window_size, 1.5).unsqueeze(1)
+ _2D_window = _1D_window.mm(_1D_window.t()).float().unsqueeze(0).unsqueeze(0)
+ window = Variable(_2D_window.expand(channel, 1, window_size, window_size).contiguous(), requires_grad=False)
+ return window
+
+def _ssim(img1, img2, window, window_size, channel, size_average = True):
+ mu1 = F.conv2d(img1, window, padding = window_size//2, groups = channel)
+ mu2 = F.conv2d(img2, window, padding = window_size//2, groups = channel)
+
+ mu1_sq = mu1.pow(2)
+ mu2_sq = mu2.pow(2)
+ mu1_mu2 = mu1*mu2
+
+ sigma1_sq = F.conv2d(img1*img1, window, padding = window_size//2, groups = channel) - mu1_sq
+ sigma2_sq = F.conv2d(img2*img2, window, padding = window_size//2, groups = channel) - mu2_sq
+ sigma12 = F.conv2d(img1*img2, window, padding = window_size//2, groups = channel) - mu1_mu2
+
+ C1 = 0.01**2
+ C2 = 0.03**2
+
+ ssim_map = ((2*mu1_mu2 + C1)*(2*sigma12 + C2))/((mu1_sq + mu2_sq + C1)*(sigma1_sq + sigma2_sq + C2))
+
+ return ssim_map
+ #if size_average:
+ # return ssim_map.mean()
+ #else:
+ # return ssim_map.mean(1).mean(1).mean(1)
+
+class SSIM(torch.nn.Module):
+ def __init__(self, window_size = 11, size_average = True):
+ super(SSIM, self).__init__()
+ self.window_size = window_size
+ self.size_average = size_average
+ self.channel = 1
+ self.window = create_window(window_size, self.channel)
+
+ def forward(self, img1, img2):
+ (_, channel, _, _) = img1.size()
+
+ if channel == self.channel and self.window.data.type() == img1.data.type():
+ window = self.window
+ else:
+ window = create_window(self.window_size, channel)
+
+ if img1.is_cuda:
+ window = window.cuda(img1.get_device())
+ window = window.type_as(img1)
+
+ self.window = window
+ self.channel = channel
+
+
+ return _ssim(img1, img2, window, self.window_size, channel, self.size_average)
+
+def ssim(img1, img2, window_size = 13, size_average = True):
+ (_, channel, _, _) = img1.size()
+ window = create_window(window_size, channel)
+
+ if img1.is_cuda:
+ window = window.cuda(img1.get_device())
+ window = window.type_as(img1)
+
+ return _ssim(img1, img2, window, window_size, channel, size_average)
diff --git a/stillbox_eval/depth_evaluation_utils.py b/stillbox_eval/depth_evaluation_utils.py
new file mode 100644
index 0000000..a3d40d8
--- /dev/null
+++ b/stillbox_eval/depth_evaluation_utils.py
@@ -0,0 +1,80 @@
+import numpy as np
+import json
+from path import Path
+from scipy.misc import imread
+from tqdm import tqdm
+
+
+class test_framework_stillbox(object):
+ def __init__(self, root, test_files, seq_length=3, min_depth=1e-3, max_depth=80, step=1):
+ self.root = root
+ self.min_depth, self.max_depth = min_depth, max_depth
+ self.gt_files, self.img_files, self.displacements = read_scene_data(self.root, test_files, seq_length, step)
+
+ def __getitem__(self, i):
+ tgt = imread(self.img_files[i][0]).astype(np.float32)
+ depth = np.load(self.gt_files[i])
+ return {'tgt': tgt,
+ 'ref': [imread(img).astype(np.float32) for img in self.img_files[i][1]],
+ 'path':self.img_files[i][0],
+ 'gt_depth': depth,
+ 'displacements': np.array(self.displacements[i]),
+ 'mask': generate_mask(depth, self.min_depth, self.max_depth)
+ }
+
+ def __len__(self):
+ return len(self.img_files)
+
+
+def get_displacements(scene, index, ref_indices):
+ speed = np.around(np.linalg.norm(scene['speed']), decimals=3)
+ assert(all(i < scene['length'] and i >= 0 for i in ref_indices)), str(ref_indices)
+ return [speed*scene['time_step']*abs(index - i) for i in ref_indices]
+
+
+def read_scene_data(data_root, test_list, seq_length=3, step=1):
+ data_root = Path(data_root)
+ metadata_files = {}
+ for folder in data_root.dirs():
+ with open(folder/'metadata.json', 'r') as f:
+ metadata_files[str(folder.name)] = json.load(f)
+ gt_files = []
+ im_files = []
+ displacements = []
+ demi_length = (seq_length - 1) // 2
+ shift_range = [step*i for i in list(range(-demi_length,0)) + list(range(1, demi_length + 1))]
+
+ print('getting test metadata ... ')
+ for sample in tqdm(test_list):
+ folder, file = sample.split('/')
+ _, scene_index, index = file[:-4].split('_') # filename is in the form 'RGB_XXXX_XX.jpg'
+ index = int(index)
+ scene = metadata_files[folder]['scenes'][int(scene_index)]
+ tgt_img_path = data_root/sample
+ folder_path = data_root/folder
+ if tgt_img_path.isfile():
+ capped_indices_range = list(map(lambda x: min(max(0, index + x), scene['length'] - 1), shift_range))
+ ref_imgs_path = [folder_path/'{}'.format(scene['imgs'][ref_index]) for ref_index in capped_indices_range]
+
+ gt_files.append(folder_path/'{}'.format(scene['depth'][index]))
+ im_files.append([tgt_img_path,ref_imgs_path])
+ displacements.append(get_displacements(scene, index, capped_indices_range))
+ else:
+ print('{} missing'.format(tgt_img_path))
+
+ return gt_files, im_files, displacements
+
+
+def generate_mask(gt_depth, min_depth, max_depth):
+ mask = np.logical_and(gt_depth > min_depth,
+ gt_depth < max_depth)
+ # crop gt to exclude border values
+ # if used on gt_size 100x100 produces a crop of [-95, -5, 5, 95]
+ gt_height, gt_width = gt_depth.shape
+ crop = np.array([0.05 * gt_height, 0.95 * gt_height,
+ 0.05 * gt_width, 0.95 * gt_width]).astype(np.int32)
+
+ crop_mask = np.zeros(mask.shape)
+ crop_mask[crop[0]:crop[1],crop[2]:crop[3]] = 1
+ mask = np.logical_and(mask, crop_mask)
+ return mask
diff --git a/stillbox_eval/test_files_90.txt b/stillbox_eval/test_files_90.txt
new file mode 100644
index 0000000..2e8afa1
--- /dev/null
+++ b/stillbox_eval/test_files_90.txt
@@ -0,0 +1,192 @@
+15/RGB_112_008.jpg
+15/RGB_178_002.jpg
+15/RGB_167_006.jpg
+15/RGB_153_007.jpg
+15/RGB_119_002.jpg
+15/RGB_135_003.jpg
+15/RGB_44_006.jpg
+15/RGB_32_002.jpg
+15/RGB_171_001.jpg
+15/RGB_114_009.jpg
+15/RGB_89_003.jpg
+15/RGB_197_009.jpg
+15/RGB_105_000.jpg
+15/RGB_72_004.jpg
+15/RGB_66_003.jpg
+15/RGB_25_007.jpg
+15/RGB_58_004.jpg
+15/RGB_28_003.jpg
+15/RGB_25_004.jpg
+15/RGB_140_003.jpg
+15/RGB_59_008.jpg
+15/RGB_19_001.jpg
+15/RGB_186_003.jpg
+15/RGB_113_009.jpg
+15/RGB_54_002.jpg
+15/RGB_130_003.jpg
+15/RGB_153_003.jpg
+15/RGB_103_007.jpg
+15/RGB_04_007.jpg
+15/RGB_110_008.jpg
+15/RGB_78_005.jpg
+15/RGB_26_005.jpg
+15/RGB_43_007.jpg
+15/RGB_190_003.jpg
+15/RGB_122_002.jpg
+15/RGB_102_008.jpg
+15/RGB_187_004.jpg
+15/RGB_03_005.jpg
+15/RGB_58_007.jpg
+15/RGB_37_004.jpg
+15/RGB_125_003.jpg
+15/RGB_190_002.jpg
+15/RGB_52_006.jpg
+15/RGB_37_005.jpg
+15/RGB_196_001.jpg
+15/RGB_53_003.jpg
+15/RGB_129_008.jpg
+15/RGB_74_003.jpg
+15/RGB_167_000.jpg
+15/RGB_195_002.jpg
+15/RGB_10_007.jpg
+15/RGB_131_003.jpg
+15/RGB_37_003.jpg
+15/RGB_38_009.jpg
+15/RGB_115_004.jpg
+15/RGB_91_008.jpg
+15/RGB_43_004.jpg
+15/RGB_187_005.jpg
+15/RGB_112_003.jpg
+15/RGB_19_002.jpg
+15/RGB_170_008.jpg
+15/RGB_17_000.jpg
+15/RGB_62_005.jpg
+15/RGB_148_004.jpg
+15/RGB_12_008.jpg
+15/RGB_169_004.jpg
+15/RGB_112_004.jpg
+15/RGB_71_001.jpg
+15/RGB_103_001.jpg
+15/RGB_178_005.jpg
+15/RGB_92_006.jpg
+15/RGB_40_009.jpg
+15/RGB_138_006.jpg
+15/RGB_146_005.jpg
+15/RGB_04_006.jpg
+15/RGB_02_008.jpg
+15/RGB_101_009.jpg
+15/RGB_103_009.jpg
+15/RGB_21_002.jpg
+15/RGB_144_008.jpg
+15/RGB_163_007.jpg
+15/RGB_06_001.jpg
+15/RGB_105_004.jpg
+15/RGB_199_009.jpg
+15/RGB_149_005.jpg
+15/RGB_63_008.jpg
+15/RGB_21_004.jpg
+15/RGB_03_002.jpg
+15/RGB_51_008.jpg
+15/RGB_110_001.jpg
+15/RGB_172_009.jpg
+15/RGB_158_005.jpg
+15/RGB_49_004.jpg
+15/RGB_173_008.jpg
+15/RGB_99_004.jpg
+15/RGB_24_001.jpg
+15/RGB_03_009.jpg
+15/RGB_41_009.jpg
+15/RGB_91_002.jpg
+15/RGB_132_001.jpg
+15/RGB_95_003.jpg
+15/RGB_167_005.jpg
+15/RGB_176_000.jpg
+15/RGB_142_008.jpg
+15/RGB_107_009.jpg
+15/RGB_122_005.jpg
+15/RGB_48_001.jpg
+15/RGB_103_005.jpg
+15/RGB_98_009.jpg
+15/RGB_162_001.jpg
+15/RGB_08_006.jpg
+15/RGB_169_002.jpg
+15/RGB_57_002.jpg
+15/RGB_86_004.jpg
+15/RGB_138_001.jpg
+15/RGB_05_005.jpg
+15/RGB_95_002.jpg
+15/RGB_28_002.jpg
+15/RGB_110_002.jpg
+15/RGB_102_002.jpg
+15/RGB_136_009.jpg
+15/RGB_28_007.jpg
+15/RGB_43_005.jpg
+15/RGB_39_006.jpg
+15/RGB_126_003.jpg
+15/RGB_62_001.jpg
+15/RGB_82_003.jpg
+15/RGB_75_008.jpg
+15/RGB_16_005.jpg
+15/RGB_94_005.jpg
+15/RGB_198_002.jpg
+15/RGB_90_001.jpg
+15/RGB_22_001.jpg
+15/RGB_90_000.jpg
+15/RGB_155_006.jpg
+15/RGB_124_007.jpg
+15/RGB_168_004.jpg
+15/RGB_96_008.jpg
+15/RGB_100_002.jpg
+15/RGB_131_008.jpg
+15/RGB_74_002.jpg
+15/RGB_141_007.jpg
+15/RGB_139_001.jpg
+15/RGB_102_005.jpg
+15/RGB_182_009.jpg
+15/RGB_37_002.jpg
+15/RGB_67_003.jpg
+15/RGB_60_001.jpg
+15/RGB_186_001.jpg
+15/RGB_171_002.jpg
+15/RGB_155_004.jpg
+15/RGB_50_008.jpg
+15/RGB_34_002.jpg
+15/RGB_132_003.jpg
+15/RGB_147_005.jpg
+15/RGB_99_008.jpg
+15/RGB_110_000.jpg
+15/RGB_114_008.jpg
+15/RGB_159_002.jpg
+15/RGB_76_007.jpg
+15/RGB_116_005.jpg
+15/RGB_67_002.jpg
+15/RGB_80_003.jpg
+15/RGB_30_000.jpg
+15/RGB_137_009.jpg
+15/RGB_130_002.jpg
+15/RGB_90_002.jpg
+15/RGB_34_008.jpg
+15/RGB_137_007.jpg
+15/RGB_45_001.jpg
+15/RGB_131_004.jpg
+15/RGB_06_000.jpg
+15/RGB_68_005.jpg
+15/RGB_104_008.jpg
+15/RGB_193_008.jpg
+15/RGB_182_000.jpg
+15/RGB_129_006.jpg
+15/RGB_107_005.jpg
+15/RGB_158_007.jpg
+15/RGB_192_001.jpg
+15/RGB_18_005.jpg
+15/RGB_90_009.jpg
+15/RGB_18_007.jpg
+15/RGB_94_000.jpg
+15/RGB_09_002.jpg
+15/RGB_94_001.jpg
+15/RGB_46_004.jpg
+15/RGB_126_000.jpg
+15/RGB_146_002.jpg
+15/RGB_161_006.jpg
+15/RGB_154_008.jpg
+15/RGB_94_003.jpg
diff --git a/submit_flow.py b/submit_flow.py
new file mode 100644
index 0000000..c152053
--- /dev/null
+++ b/submit_flow.py
@@ -0,0 +1,183 @@
+import argparse
+import os
+from tqdm import tqdm
+import numpy as np
+from path import Path
+from tensorboardX import SummaryWriter
+import torch
+from torch.autograd import Variable
+import torch.nn as nn
+
+import custom_transforms
+from inverse_warp import pose2flow
+from datasets.validation_flow import KITTI2015Test
+import models
+from logger import AverageMeter
+from PIL import Image
+from torchvision.transforms import ToPILImage
+from flowutils.flowlib import flow_to_image
+from utils import tensor2array
+from loss_functions import compute_all_epes
+from flowutils import flow_io
+
+
+parser = argparse.ArgumentParser(description='Structure from Motion Learner training on KITTI and CityScapes Dataset',
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+parser.add_argument('--kitti-dir', dest='kitti_dir', type=str, default='/ps/project/datasets/AllFlowData/kitti/kitti2015',
+ help='Path to kitti2015 scene flow dataset for optical flow validation')
+parser.add_argument('--dispnet', dest='dispnet', type=str, default='DispResNet6', choices=['DispResNet6', 'DispNetS5', 'DispNetS6'],
+ help='depth network architecture.')
+parser.add_argument('--posenet', dest='posenet', type=str, default='PoseNetB6', choices=['PoseNet6','PoseNetB6', 'PoseExpNet5', 'PoseExpNet6'],
+ help='pose and explainabity mask network architecture. ')
+parser.add_argument('--masknet', dest='masknet', type=str, default='MaskNet6', choices=['MaskResNet6', 'MaskNet6', 'PoseExpNet5', 'PoseExpNet6'],
+ help='pose and explainabity mask network architecture. ')
+parser.add_argument('--flownet', dest='flownet', type=str, default='Back2Future', choices=['PWCNet','FlowNetS', 'Back2Future', 'FlowNetC5','FlowNetC6', 'SpyNet'],
+ help='flow network architecture. Options: FlowNetS | SpyNet')
+
+parser.add_argument('--DEBUG', action='store_true', help='DEBUG Mode')
+parser.add_argument('--THRESH', dest='THRESH', type=float, default=0.01, help='THRESH')
+parser.add_argument('--mu', dest='mu', type=float, default=1.0, help='mu')
+parser.add_argument('--pretrained-path', dest='pretrained_path', default=None, metavar='PATH', help='path to pre-trained dispnet model')
+parser.add_argument('--nlevels', dest='nlevels', type=int, default=6, help='number of levels in multiscale. Options: 4|5')
+parser.add_argument('--dataset', dest='dataset', default='kitti2015', help='path to pre-trained Flow net model')
+parser.add_argument('--output-dir', dest='output_dir', type=str, default=None, help='path to output directory')
+
+
+def main():
+ global args
+ args = parser.parse_args()
+ args.pretrained_path = Path(args.pretrained_path)
+
+ if args.output_dir is not None:
+ args.output_dir = Path(args.output_dir)
+ args.output_dir.makedirs_p()
+
+ image_dir = args.output_dir/'images'
+ mask_dir = args.output_dir/'mask'
+ viz_dir = args.output_dir/'viz'
+ testing_dir = args.output_dir/'testing'
+ testing_dir_flo = args.output_dir/'testing_flo'
+
+ image_dir.makedirs_p()
+ mask_dir.makedirs_p()
+ viz_dir.makedirs_p()
+ testing_dir.makedirs_p()
+ testing_dir_flo.makedirs_p()
+
+ normalize = custom_transforms.Normalize(mean=[0.5, 0.5, 0.5],
+ std=[0.5, 0.5, 0.5])
+ flow_loader_h, flow_loader_w = 256, 832
+ valid_flow_transform = custom_transforms.Compose([custom_transforms.Scale(h=flow_loader_h, w=flow_loader_w),
+ custom_transforms.ArrayToTensor(), normalize])
+
+ val_flow_set = KITTI2015Test(root=args.kitti_dir,
+ sequence_length=5, transform=valid_flow_transform)
+
+ if args.DEBUG:
+ print("DEBUG MODE: Using Training Set")
+ val_flow_set = KITTI2015Test(root=args.kitti_dir,
+ sequence_length=5, transform=valid_flow_transform, phase='training')
+
+ val_loader = torch.utils.data.DataLoader(val_flow_set, batch_size=1, shuffle=False,
+ num_workers=2, pin_memory=True, drop_last=True)
+
+ disp_net = getattr(models, args.dispnet)().cuda()
+ pose_net = getattr(models, args.posenet)(nb_ref_imgs=4).cuda()
+ mask_net = getattr(models, args.masknet)(nb_ref_imgs=4).cuda()
+ flow_net = getattr(models, args.flownet)(nlevels=args.nlevels).cuda()
+
+ dispnet_weights = torch.load(args.pretrained_path/'dispnet_model_best.pth.tar')
+ posenet_weights = torch.load(args.pretrained_path/'posenet_model_best.pth.tar')
+ masknet_weights = torch.load(args.pretrained_path/'masknet_model_best.pth.tar')
+ flownet_weights = torch.load(args.pretrained_path/'flownet_model_best.pth.tar')
+ disp_net.load_state_dict(dispnet_weights['state_dict'])
+ pose_net.load_state_dict(posenet_weights['state_dict'])
+ flow_net.load_state_dict(flownet_weights['state_dict'])
+ mask_net.load_state_dict(masknet_weights['state_dict'])
+
+ disp_net.eval()
+ pose_net.eval()
+ mask_net.eval()
+ flow_net.eval()
+
+ for i, (tgt_img, ref_imgs, intrinsics, intrinsics_inv, tgt_img_original) in enumerate(tqdm(val_loader)):
+ tgt_img_var = Variable(tgt_img.cuda(), volatile=True)
+ ref_imgs_var = [Variable(img.cuda(), volatile=True) for img in ref_imgs]
+ intrinsics_var = Variable(intrinsics.cuda(), volatile=True)
+ intrinsics_inv_var = Variable(intrinsics_inv.cuda(), volatile=True)
+
+ disp = disp_net(tgt_img_var)
+ depth = 1/disp
+ pose = pose_net(tgt_img_var, ref_imgs_var)
+ explainability_mask = mask_net(tgt_img_var, ref_imgs_var)
+ if args.flownet=='Back2Future':
+ flow_fwd, _, _ = flow_net(tgt_img_var, ref_imgs_var[1:3])
+ else:
+ flow_fwd = flow_net(tgt_img_var, ref_imgs_var[2])
+ flow_cam = pose2flow(depth.squeeze(1), pose[:,2], intrinsics_var, intrinsics_inv_var)
+
+ rigidity_mask = 1 - (1-explainability_mask[:,1])*(1-explainability_mask[:,2]).unsqueeze(1) > 0.5
+
+ rigidity_mask_census_soft = (flow_cam - flow_fwd).abs()#.normalize()
+ rigidity_mask_census_u = rigidity_mask_census_soft[:,0] < args.THRESH
+ rigidity_mask_census_v = rigidity_mask_census_soft[:,1] < args.THRESH
+ rigidity_mask_census = (rigidity_mask_census_u).type_as(flow_fwd) * (rigidity_mask_census_v).type_as(flow_fwd)
+ rigidity_mask_combined = 1 - (1-rigidity_mask.type_as(explainability_mask))*(1-rigidity_mask_census.type_as(explainability_mask))
+
+ _, _, h_pred, w_pred = flow_cam.size()
+ _, _, h_gt, w_gt = tgt_img_original.size()
+ rigidity_pred_mask = nn.functional.upsample(rigidity_mask_combined, size=(h_pred, w_pred), mode='bilinear')
+
+ non_rigid_pred = (rigidity_pred_mask<=args.THRESH).type_as(flow_fwd).expand_as(flow_fwd) * flow_fwd
+ rigid_pred = (rigidity_pred_mask>args.THRESH).type_as(flow_cam).expand_as(flow_cam) * flow_cam
+ total_pred = non_rigid_pred + rigid_pred
+
+ pred_fullres = nn.functional.upsample(total_pred, size=(h_gt, w_gt), mode='bilinear')
+ pred_fullres[:,0,:,:] = pred_fullres[:,0,:,:] * (w_gt/w_pred)
+ pred_fullres[:,1,:,:] = pred_fullres[:,1,:,:] * (h_gt/h_pred)
+
+ flow_fwd_fullres = nn.functional.upsample(flow_fwd, size=(h_gt, w_gt), mode='bilinear')
+ flow_fwd_fullres[:,0,:,:] = flow_fwd_fullres[:,0,:,:] * (w_gt/w_pred)
+ flow_fwd_fullres[:,1,:,:] = flow_fwd_fullres[:,1,:,:] * (h_gt/h_pred)
+
+ flow_cam_fullres = nn.functional.upsample(flow_cam, size=(h_gt, w_gt), mode='bilinear')
+ flow_cam_fullres[:,0,:,:] = flow_cam_fullres[:,0,:,:] * (w_gt/w_pred)
+ flow_cam_fullres[:,1,:,:] = flow_cam_fullres[:,1,:,:] * (h_gt/h_pred)
+
+ tgt_img_np = tgt_img[0].numpy()
+ rigidity_mask_combined_np = rigidity_mask_combined.cpu().data[0].numpy()
+
+ if args.output_dir is not None:
+ np.save(image_dir/str(i).zfill(3), tgt_img_np )
+ np.save(mask_dir/str(i).zfill(3), rigidity_mask_combined_np)
+ pred_u = pred_fullres[0][0].data.cpu().numpy()
+ pred_v = pred_fullres[0][1].data.cpu().numpy()
+ flow_io.flow_write_png(testing_dir/str(i).zfill(6)+'_10.png' ,u=pred_u, v=pred_v)
+ flow_io.flow_write(testing_dir_flo/str(i).zfill(6)+'_10.flo' ,pred_u, pred_v)
+
+
+
+ if (args.output_dir is not None):
+ ind = int(i)
+ tgt_img_viz = tensor2array(tgt_img[0].cpu())
+ depth_viz = tensor2array(disp.data[0].cpu(), max_value=None, colormap='magma')
+ mask_viz = tensor2array(rigidity_mask_combined.data[0].cpu(), max_value=1, colormap='magma')
+ row2_viz = flow_to_image(np.hstack((tensor2array(flow_cam_fullres.data[0].cpu()),
+ tensor2array(flow_fwd_fullres.data[0].cpu()),
+ tensor2array(pred_fullres.data[0].cpu()) )) )
+
+ row1_viz = np.hstack((tgt_img_viz, depth_viz, mask_viz))
+
+ row1_viz_im = Image.fromarray((255*row1_viz.transpose(1,2,0)).astype('uint8'))
+ row2_viz_im = Image.fromarray((255*row2_viz.transpose(1,2,0)).astype('uint8'))
+
+ row1_viz_im.save(viz_dir/str(i).zfill(3)+'01.png')
+ row2_viz_im.save(viz_dir/str(i).zfill(3)+'02.png')
+
+ print("Done!")
+ # print("\t {:>10}, {:>10}, {:>10}, {:>10}, {:>10}, {:>10} ".format(*error_names))
+ # print("Errors \t {:10.4f}, {:10.4f} {:10.4f}, {:10.4f} {:10.4f}, {:10.4f}".format(*errors.avg))
+
+
+if __name__ == '__main__':
+ main()
diff --git a/test_back2future.py b/test_back2future.py
new file mode 100644
index 0000000..8cc50de
--- /dev/null
+++ b/test_back2future.py
@@ -0,0 +1,82 @@
+# Author: Anurag Ranjan
+# Copyright (c) 2019, Anurag Ranjan
+# All rights reserved.
+
+import argparse
+from loss_functions import compute_epe
+import custom_transforms
+from datasets.validation_flow import ValidationFlow, ValidationFlowKitti2012
+import torch
+from torch.autograd import Variable
+import models
+from logger import AverageMeter
+from loss_functions import compute_all_epes
+from tqdm import tqdm
+
+parser = argparse.ArgumentParser(description='Structure from Motion Learner training on KITTI and CityScapes Dataset',
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+parser.add_argument('--flownet', dest='flownet', type=str, default='Back2Future', choices=['Back2Future'],
+ help='flow network architecture. Options: FlowNetS | SpyNet')
+parser.add_argument('--nlevels', dest='nlevels', type=int, default=5,
+ help='number of levels in multiscale. Options: 4|5|6')
+parser.add_argument('--pretrained-flow', dest='pretrained_flow', default=None, metavar='PATH',
+ help='path to pre-trained Flow net model')
+parser.add_argument('--dataset', dest='dataset', default='kitti2015', choices=['kitti2015', 'kitti2012'],
+ help='path to pre-trained Flow net model')
+
+
+def main():
+ global args
+ args = parser.parse_args()
+ normalize = custom_transforms.Normalize(mean=[0.5, 0.5, 0.5],
+ std=[0.5, 0.5, 0.5])
+ flow_loader_h, flow_loader_w = 256, 832
+ valid_flow_transform = custom_transforms.Compose([custom_transforms.Scale(h=flow_loader_h, w=flow_loader_w),
+ custom_transforms.ArrayToTensor(), normalize])
+ if args.dataset == "kitti2015":
+ val_flow_set = ValidationFlow(root='/home/anuragr/datasets/kitti/kitti2015',
+ sequence_length=5, transform=valid_flow_transform)
+ elif args.dataset == "kitti2012":
+ val_flow_set = ValidationFlowKitti2012(root='/is/ps2/aranjan/AllFlowData/kitti/kitti2012',
+ sequence_length=5, transform=valid_flow_transform)
+
+ val_flow_loader = torch.utils.data.DataLoader(val_flow_set, batch_size=1, shuffle=False,
+ num_workers=2, pin_memory=True, drop_last=True)
+
+ flow_net = getattr(models, args.flownet)(nlevels=args.nlevels).cuda()
+
+ if args.pretrained_flow:
+ print("=> using pre-trained weights from {}".format(args.pretrained_flow))
+ weights = torch.load(args.pretrained_flow)
+ flow_net.load_state_dict(weights['state_dict'])#, strict=False)
+
+ flow_net = flow_net.cuda()
+ flow_net.eval()
+ error_names = ['epe_total', 'epe_non_rigid', 'epe_rigid', 'outliers']
+ errors = AverageMeter(i=len(error_names))
+
+ for i, (tgt_img, ref_imgs, intrinsics, intrinsics_inv, flow_gt, obj_map) in enumerate(tqdm(val_flow_loader)):
+ tgt_img_var = Variable(tgt_img.cuda(), volatile=True)
+ if args.dataset=="kitti2015":
+ ref_imgs_var = [Variable(img.cuda(), volatile=True) for img in ref_imgs]
+ ref_img_var = ref_imgs_var[1:3]
+ elif args.dataset=="kitti2012":
+ ref_img_var = Variable(ref_imgs.cuda(), volatile=True)
+
+ flow_gt_var = Variable(flow_gt.cuda(), volatile=True)
+ # compute output
+ flow_fwd, flow_bwd, occ = flow_net(tgt_img_var, ref_img_var)
+ #epe = compute_epe(gt=flow_gt_var, pred=flow_fwd)
+ obj_map_gt_var = Variable(obj_map.cuda(), volatile=True)
+ obj_map_gt_var_expanded = obj_map_gt_var.unsqueeze(1).type_as(flow_fwd)
+
+ epe = compute_all_epes(flow_gt_var, flow_fwd, flow_fwd, (1-obj_map_gt_var_expanded) )
+ #print(i, epe)
+ errors.update(epe)
+
+ print("Averge EPE",errors.avg )
+
+
+
+if __name__ == '__main__':
+ main()
diff --git a/test_disp.py b/test_disp.py
new file mode 100644
index 0000000..1c98ef0
--- /dev/null
+++ b/test_disp.py
@@ -0,0 +1,191 @@
+import torch
+from torch.autograd import Variable
+from PIL import Image
+from scipy import interpolate
+from scipy.misc import imresize
+from scipy.ndimage.interpolation import zoom
+import numpy as np
+from path import Path
+import argparse
+from tqdm import tqdm
+from utils import tensor2array
+import models
+from loss_functions import spatial_normalize
+
+parser = argparse.ArgumentParser(description='Script for DispNet testing with corresponding groundTruth',
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+parser.add_argument("--dispnet", dest='dispnet', type=str, default='DispResNet6', help='dispnet architecture')
+parser.add_argument("--posenet", dest='posenet', type=str, default='PoseExpNet', help='posenet architecture')
+parser.add_argument("--pretrained-dispnet", required=True, type=str, help="pretrained DispNet path")
+parser.add_argument("--pretrained-posenet", default=None, type=str, help="pretrained PoseNet path (for scale factor)")
+parser.add_argument("--img-height", default=256, type=int, help="Image height")
+parser.add_argument("--img-width", default=832, type=int, help="Image width")
+parser.add_argument("--no-resize", action='store_true', help="no resizing is done")
+parser.add_argument("--spatial-normalize", action='store_true', help="spatial normalization")
+parser.add_argument("--min-depth", default=1e-3)
+parser.add_argument("--max-depth", default=80, type=float)
+
+parser.add_argument("--dataset-dir", default='.', type=str, help="Dataset directory")
+parser.add_argument("--dataset-list", default=None, type=str, help="Dataset list file")
+parser.add_argument("--output-dir", default=None, type=str, help="Output directory for saving predictions in a big 3D numpy file")
+
+parser.add_argument("--gt-type", default='KITTI', type=str, help="GroundTruth data type", choices=['npy', 'png', 'KITTI', 'stillbox'])
+parser.add_argument("--img-exts", default=['png', 'jpg', 'bmp'], nargs='*', type=str, help="images extensions to glob")
+
+
+def main():
+ args = parser.parse_args()
+ if args.gt_type == 'KITTI':
+ from kitti_eval.depth_evaluation_utils import test_framework_KITTI as test_framework
+ elif args.gt_type == 'stillbox':
+ from stillbox_eval.depth_evaluation_utils import test_framework_stillbox as test_framework
+
+ disp_net = getattr(models, args.dispnet)().cuda()
+ weights = torch.load(args.pretrained_dispnet)
+ disp_net.load_state_dict(weights['state_dict'])
+ disp_net.eval()
+
+ if args.pretrained_posenet is None:
+ print('no PoseNet specified, scale_factor will be determined by median ratio, which is kiiinda cheating\
+ (but consistent with original paper)')
+ seq_length = 0
+ else:
+ weights = torch.load(args.pretrained_posenet)
+ seq_length = int(weights['state_dict']['conv1.0.weight'].size(1)/3)
+ pose_net = getattr(models, args.posenet)(nb_ref_imgs=seq_length - 1, output_exp=False).cuda()
+ pose_net.load_state_dict(weights['state_dict'], strict=False)
+
+ dataset_dir = Path(args.dataset_dir)
+ if args.dataset_list is not None:
+ with open(args.dataset_list, 'r') as f:
+ test_files = list(f.read().splitlines())
+ else:
+ test_files = [file.relpathto(dataset_dir) for file in sum([dataset_dir.files('*.{}'.format(ext)) for ext in args.img_exts], [])]
+
+ framework = test_framework(dataset_dir, test_files, seq_length, args.min_depth, args.max_depth)
+
+ print('{} files to test'.format(len(test_files)))
+ errors = np.zeros((2, 7, len(test_files)), np.float32)
+ if args.output_dir is not None:
+ output_dir = Path(args.output_dir)
+ viz_dir = output_dir/'viz'
+ output_dir.makedirs_p()
+ viz_dir.makedirs_p()
+
+ for j, sample in enumerate(tqdm(framework)):
+ tgt_img = sample['tgt']
+
+ ref_imgs = sample['ref']
+
+ h,w,_ = tgt_img.shape
+ if (not args.no_resize) and (h != args.img_height or w != args.img_width):
+ tgt_img = imresize(tgt_img, (args.img_height, args.img_width)).astype(np.float32)
+ ref_imgs = [imresize(img, (args.img_height, args.img_width)).astype(np.float32) for img in ref_imgs]
+
+ tgt_img = np.transpose(tgt_img, (2, 0, 1))
+ ref_imgs = [np.transpose(img, (2,0,1)) for img in ref_imgs]
+
+ tgt_img = torch.from_numpy(tgt_img).unsqueeze(0)
+ tgt_img = ((tgt_img/255 - 0.5)/0.5).cuda()
+ tgt_img_var = Variable(tgt_img, volatile=True)
+
+ ref_imgs_var = []
+ for i, img in enumerate(ref_imgs):
+ img = torch.from_numpy(img).unsqueeze(0)
+ img = ((img/255 - 0.5)/0.5).cuda()
+ ref_imgs_var.append(Variable(img, volatile=True))
+
+ pred_disp = disp_net(tgt_img_var)
+ if args.spatial_normalize:
+ pred_disp = spatial_normalize(pred_disp)
+ pred_disp = pred_disp.data.cpu().numpy()[0,0]
+ gt_depth = sample['gt_depth']
+
+ if args.output_dir is not None:
+ if j == 0:
+ predictions = np.zeros((len(test_files), *pred_disp.shape))
+ predictions[j] = 1/pred_disp
+ gt_viz = interp_gt_disp(gt_depth)
+ gt_viz = torch.FloatTensor(gt_viz)
+ gt_viz[gt_viz == 0] = 1000
+ gt_viz = (1/gt_viz).clamp(0,10)
+
+ tgt_img_viz = tensor2array(tgt_img[0].cpu())
+ depth_viz = tensor2array(torch.FloatTensor(pred_disp), max_value=None, colormap='hot')
+ gt_viz = tensor2array(gt_viz, max_value=None, colormap='hot')
+ tgt_img_viz_im = Image.fromarray((255*tgt_img_viz).astype('uint8'))
+ tgt_img_viz_im.save(viz_dir/str(j).zfill(4)+'img.png')
+ depth_viz_im = Image.fromarray((255*depth_viz).astype('uint8'))
+ depth_viz_im.save(viz_dir/str(j).zfill(4)+'depth.png')
+ gt_viz_im = Image.fromarray((255*gt_viz).astype('uint8'))
+ gt_viz_im.save(viz_dir/str(j).zfill(4)+'gt.png')
+
+
+ pred_depth = 1/pred_disp
+ pred_depth_zoomed = zoom(pred_depth, (gt_depth.shape[0]/pred_depth.shape[0],gt_depth.shape[1]/pred_depth.shape[1])).clip(args.min_depth, args.max_depth)
+ if sample['mask'] is not None:
+ pred_depth_zoomed = pred_depth_zoomed[sample['mask']]
+ gt_depth = gt_depth[sample['mask']]
+
+ if seq_length > 0:
+ _, poses = pose_net(tgt_img_var, ref_imgs_var)
+ displacements = poses[0,:,:3].norm(2,1).cpu().data.numpy() # shape [1 - seq_length]
+
+ scale_factors = [s1/s2 for s1, s2 in zip(sample['displacements'], displacements) if s1 > 0]
+ scale_factor = np.mean(scale_factors) if len(scale_factors) > 0 else 0
+ if len(scale_factors) == 0:
+ print('not good ! ', sample['path'], sample['displacements'])
+ errors[0,:,j] = compute_errors(gt_depth, pred_depth_zoomed*scale_factor)
+
+ scale_factor = np.median(gt_depth)/np.median(pred_depth_zoomed)
+ errors[1,:,j] = compute_errors(gt_depth, pred_depth_zoomed*scale_factor)
+
+ mean_errors = errors.mean(2)
+ error_names = ['abs_rel','sq_rel','rms','log_rms','a1','a2','a3']
+ if args.pretrained_posenet:
+ print("Results with scale factor determined by PoseNet : ")
+ print("{:>10}, {:>10}, {:>10}, {:>10}, {:>10}, {:>10}, {:>10}".format(*error_names))
+ print("{:10.4f}, {:10.4f}, {:10.4f}, {:10.4f}, {:10.4f}, {:10.4f}, {:10.4f}".format(*mean_errors[0]))
+
+ print("Results with scale factor determined by GT/prediction ratio (like the original paper) : ")
+ print("{:>10}, {:>10}, {:>10}, {:>10}, {:>10}, {:>10}, {:>10}".format(*error_names))
+ print("{:10.4f}, {:10.4f}, {:10.4f}, {:10.4f}, {:10.4f}, {:10.4f}, {:10.4f}".format(*mean_errors[1]))
+
+ if args.output_dir is not None:
+ np.save(output_dir/'predictions.npy', predictions)
+
+def interp_gt_disp(mat, mask_val=0):
+ mat[mat==mask_val] = np.nan
+ x = np.arange(0, mat.shape[1])
+ y = np.arange(0, mat.shape[0])
+ mat = np.ma.masked_invalid(mat)
+ xx, yy = np.meshgrid(x, y)
+ #get only the valid values
+ x1 = xx[~mat.mask]
+ y1 = yy[~mat.mask]
+ newarr = mat[~mat.mask]
+
+ GD1 = interpolate.griddata((x1, y1), newarr.ravel(), (xx, yy), method='linear', fill_value=mask_val)
+ return GD1
+
+def compute_errors(gt, pred):
+ thresh = np.maximum((gt / pred), (pred / gt))
+ a1 = (thresh < 1.25 ).mean()
+ a2 = (thresh < 1.25 ** 2).mean()
+ a3 = (thresh < 1.25 ** 3).mean()
+
+ rmse = (gt - pred) ** 2
+ rmse = np.sqrt(rmse.mean())
+
+ rmse_log = (np.log(gt) - np.log(pred)) ** 2
+ rmse_log = np.sqrt(rmse_log.mean())
+
+ abs_rel = np.mean(np.abs(gt - pred) / gt)
+
+ sq_rel = np.mean(((gt - pred)**2) / gt)
+
+ return abs_rel, sq_rel, rmse, rmse_log, a1, a2, a3
+
+
+if __name__ == '__main__':
+ main()
diff --git a/test_flow.py b/test_flow.py
new file mode 100644
index 0000000..18a7c0e
--- /dev/null
+++ b/test_flow.py
@@ -0,0 +1,211 @@
+# Author: Anurag Ranjan
+# Copyright (c) 2019, Anurag Ranjan
+# All rights reserved.
+
+import argparse
+import os
+from tqdm import tqdm
+import numpy as np
+from path import Path
+from tensorboardX import SummaryWriter
+import torch
+import torch.nn as nn
+from torch.autograd import Variable
+
+import custom_transforms
+from inverse_warp import pose2flow
+from datasets.validation_flow import ValidationFlow, ValidationFlowKitti2012
+import models
+from logger import AverageMeter
+from PIL import Image
+from torchvision.transforms import ToPILImage
+from flowutils.flowlib import flow_to_image
+from utils import tensor2array
+from loss_functions import compute_all_epes, consensus_exp_masks, logical_or
+
+
+parser = argparse.ArgumentParser(description='Evaluate optical flow on KITTI',
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+parser.add_argument('--kitti-dir', dest='kitti_dir', type=str, default='/ps/project/datasets/AllFlowData/kitti/kitti2015',
+ help='Path to kitti2015 scene flow dataset for optical flow validation')
+parser.add_argument('--dispnet', dest='dispnet', type=str, default='DispResNet6', choices=['DispResNet6', 'DispNetS6'],
+ help='depth network architecture.')
+parser.add_argument('--posenet', dest='posenet', type=str, default='PoseNetB6', choices=['PoseNet6','PoseNetB6'],
+ help='pose and explainabity mask network architecture. ')
+parser.add_argument('--masknet', dest='masknet', type=str, default='MaskNet6', choices=['MaskResNet6', 'MaskNet6'],
+ help='pose and explainabity mask network architecture. ')
+parser.add_argument('--flownet', dest='flownet', type=str, default='Back2Future', choices=['Back2Future', 'FlowNetC6'],
+ help='flow network architecture.')
+
+parser.add_argument('--THRESH', dest='THRESH', type=float, default=0.01, help='THRESH')
+parser.add_argument('--pretrained-disp', dest='pretrained_disp', default=None, metavar='PATH', help='path to pre-trained dispnet model')
+parser.add_argument('--pretrained-pose', dest='pretrained_pose', default=None, metavar='PATH', help='path to pre-trained posenet model')
+parser.add_argument('--pretrained-flow', dest='pretrained_flow', default=None, metavar='PATH', help='path to pre-trained flownet model')
+parser.add_argument('--pretrained-mask', dest='pretrained_mask', default=None, metavar='PATH', help='path to pre-trained masknet model')
+
+parser.add_argument('--nlevels', dest='nlevels', type=int, default=6, help='number of levels in multiscale. Options: 4|5')
+parser.add_argument('--dataset', dest='dataset', default='kitti2015', help='path to pre-trained Flow net model')
+parser.add_argument('--output-dir', dest='output_dir', type=str, default=None, help='path to output directory')
+
+
+def main():
+ global args
+ args = parser.parse_args()
+ args.pretrained_disp = Path(args.pretrained_disp)
+ args.pretrained_pose = Path(args.pretrained_pose)
+ args.pretrained_mask = Path(args.pretrained_mask)
+ args.pretrained_flow = Path(args.pretrained_flow)
+
+ if args.output_dir is not None:
+ args.output_dir = Path(args.output_dir)
+ args.output_dir.makedirs_p()
+
+ image_dir = args.output_dir/'images'
+ gt_dir = args.output_dir/'gt'
+ mask_dir = args.output_dir/'mask'
+ viz_dir = args.output_dir/'viz'
+
+ image_dir.makedirs_p()
+ gt_dir.makedirs_p()
+ mask_dir.makedirs_p()
+ viz_dir.makedirs_p()
+
+ output_writer = SummaryWriter(args.output_dir)
+
+ normalize = custom_transforms.Normalize(mean=[0.5, 0.5, 0.5],
+ std=[0.5, 0.5, 0.5])
+ flow_loader_h, flow_loader_w = 256, 832
+ valid_flow_transform = custom_transforms.Compose([custom_transforms.Scale(h=flow_loader_h, w=flow_loader_w),
+ custom_transforms.ArrayToTensor(), normalize])
+ if args.dataset == "kitti2015":
+ val_flow_set = ValidationFlow(root=args.kitti_dir,
+ sequence_length=5, transform=valid_flow_transform)
+
+ val_loader = torch.utils.data.DataLoader(val_flow_set, batch_size=1, shuffle=False,
+ num_workers=2, pin_memory=True, drop_last=True)
+
+ disp_net = getattr(models, args.dispnet)().cuda()
+ pose_net = getattr(models, args.posenet)(nb_ref_imgs=4).cuda()
+ mask_net = getattr(models, args.masknet)(nb_ref_imgs=4).cuda()
+ flow_net = getattr(models, args.flownet)(nlevels=args.nlevels).cuda()
+
+ dispnet_weights = torch.load(args.pretrained_disp)
+ posenet_weights = torch.load(args.pretrained_pose)
+ masknet_weights = torch.load(args.pretrained_mask)
+ flownet_weights = torch.load(args.pretrained_flow)
+ disp_net.load_state_dict(dispnet_weights['state_dict'])
+ pose_net.load_state_dict(posenet_weights['state_dict'])
+ flow_net.load_state_dict(flownet_weights['state_dict'])
+ mask_net.load_state_dict(masknet_weights['state_dict'])
+
+ disp_net.eval()
+ pose_net.eval()
+ mask_net.eval()
+ flow_net.eval()
+
+ error_names = ['epe_total', 'epe_sp', 'epe_mv', 'Fl', 'epe_total_gt_mask', 'epe_sp_gt_mask', 'epe_mv_gt_mask', 'Fl_gt_mask']
+ errors = AverageMeter(i=len(error_names))
+ for i, (tgt_img, ref_imgs, intrinsics, intrinsics_inv, flow_gt, obj_map_gt) in enumerate(tqdm(val_loader)):
+ tgt_img_var = Variable(tgt_img.cuda(), volatile=True)
+ ref_imgs_var = [Variable(img.cuda(), volatile=True) for img in ref_imgs]
+ intrinsics_var = Variable(intrinsics.cuda(), volatile=True)
+ intrinsics_inv_var = Variable(intrinsics_inv.cuda(), volatile=True)
+
+ flow_gt_var = Variable(flow_gt.cuda(), volatile=True)
+ obj_map_gt_var = Variable(obj_map_gt.cuda(), volatile=True)
+
+ disp = disp_net(tgt_img_var)
+ depth = 1/disp
+ pose = pose_net(tgt_img_var, ref_imgs_var)
+ explainability_mask = mask_net(tgt_img_var, ref_imgs_var)
+
+ if args.flownet=='Back2Future':
+ flow_fwd, flow_bwd, _ = flow_net(tgt_img_var, ref_imgs_var[1:3])
+ else:
+ flow_fwd = flow_net(tgt_img_var, ref_imgs_var[2])
+
+ flow_cam = pose2flow(depth.squeeze(1), pose[:,2], intrinsics_var, intrinsics_inv_var)
+ flow_cam_bwd = pose2flow(depth.squeeze(1), pose[:,1], intrinsics_var, intrinsics_inv_var)
+
+ rigidity_mask = 1 - (1-explainability_mask[:,1])*(1-explainability_mask[:,2]).unsqueeze(1) > 0.5
+ rigidity_mask_census_soft = (flow_cam - flow_fwd).abs()#.normalize()
+ rigidity_mask_census_u = rigidity_mask_census_soft[:,0] < args.THRESH
+ rigidity_mask_census_v = rigidity_mask_census_soft[:,1] < args.THRESH
+ rigidity_mask_census = (rigidity_mask_census_u).type_as(flow_fwd) * (rigidity_mask_census_v).type_as(flow_fwd)
+
+ rigidity_mask_combined = 1 - (1-rigidity_mask.type_as(explainability_mask))*(1-rigidity_mask_census.type_as(explainability_mask))
+
+ obj_map_gt_var_expanded = obj_map_gt_var.unsqueeze(1).type_as(flow_fwd)
+
+ flow_fwd_non_rigid = (rigidity_mask_combined<=args.THRESH).type_as(flow_fwd).expand_as(flow_fwd) * flow_fwd
+ flow_fwd_rigid = (rigidity_mask_combined>args.THRESH).type_as(flow_cam).expand_as(flow_cam) * flow_cam
+ total_flow = flow_fwd_rigid + flow_fwd_non_rigid
+
+ rigidity_mask = rigidity_mask.type_as(flow_fwd)
+ _epe_errors = compute_all_epes(flow_gt_var, flow_cam, flow_fwd, rigidity_mask_combined) + compute_all_epes(flow_gt_var, flow_cam, flow_fwd, (1-obj_map_gt_var_expanded) )
+ errors.update(_epe_errors)
+
+ tgt_img_np = tgt_img[0].numpy()
+ rigidity_mask_combined_np = rigidity_mask_combined.cpu().data[0].numpy()
+ gt_mask_np = obj_map_gt[0].numpy()
+
+
+ if args.output_dir is not None:
+ np.save(image_dir/str(i).zfill(3), tgt_img_np )
+ np.save(gt_dir/str(i).zfill(3), gt_mask_np)
+ np.save(mask_dir/str(i).zfill(3), rigidity_mask_combined_np)
+
+
+
+ if (args.output_dir is not None) and i%10==0:
+ ind = int(i//10)
+ output_writer.add_image('val Dispnet Output Normalized', tensor2array(disp.data[0].cpu(), max_value=None, colormap='bone'), ind)
+ output_writer.add_image('val Input', tensor2array(tgt_img[0].cpu()), i)
+ output_writer.add_image('val Total Flow Output', flow_to_image(tensor2array(total_flow.data[0].cpu())), ind)
+ output_writer.add_image('val Rigid Flow Output', flow_to_image(tensor2array(flow_fwd_rigid.data[0].cpu())), ind)
+ output_writer.add_image('val Non-rigid Flow Output', flow_to_image(tensor2array(flow_fwd_non_rigid.data[0].cpu())), ind)
+ output_writer.add_image('val Rigidity Mask', tensor2array(rigidity_mask.data[0].cpu(), max_value=1, colormap='bone'), ind)
+ output_writer.add_image('val Rigidity Mask Census', tensor2array(rigidity_mask_census.data[0].cpu(), max_value=1, colormap='bone'), ind)
+ output_writer.add_image('val Rigidity Mask Combined', tensor2array(rigidity_mask_combined.data[0].cpu(), max_value=1, colormap='bone'), ind)
+
+ tgt_img_viz = tensor2array(tgt_img[0].cpu())
+ depth_viz = tensor2array(disp.data[0].cpu(), max_value=None, colormap='bone')
+ mask_viz = tensor2array(rigidity_mask_census_soft.data[0].prod(dim=0).cpu(), max_value=1, colormap='bone')
+ rigid_flow_viz = flow_to_image(tensor2array(flow_cam.data[0].cpu()))
+ non_rigid_flow_viz = flow_to_image(tensor2array(flow_fwd_non_rigid.data[0].cpu()))
+ total_flow_viz = flow_to_image(tensor2array(total_flow.data[0].cpu()))
+ row1_viz = np.hstack((tgt_img_viz, depth_viz, mask_viz))
+ row2_viz = np.hstack((rigid_flow_viz, non_rigid_flow_viz, total_flow_viz))
+
+ row1_viz_im = Image.fromarray((255*row1_viz).astype('uint8'))
+ row2_viz_im = Image.fromarray((row2_viz).astype('uint8'))
+
+ row1_viz_im.save(viz_dir/str(i).zfill(3)+'01.png')
+ row2_viz_im.save(viz_dir/str(i).zfill(3)+'02.png')
+
+ print("Results")
+ print("\t {:>10}, {:>10}, {:>10}, {:>6}, {:>10}, {:>10}, {:>10}, {:>10} ".format(*error_names))
+ print("Errors \t {:10.4f}, {:10.4f}, {:10.4f}, {:10.4f}, {:10.4f}, {:10.4f}, {:10.4f}, {:10.4f}".format(*errors.avg))
+
+def outlier_err(gt, pred, tau=[3,0.05]):
+ _, _, h_pred, w_pred = pred.size()
+ bs, nc, h_gt, w_gt = gt.size()
+ u_gt, v_gt, valid_gt = gt[:,0,:,:], gt[:,1,:,:], gt[:,2,:,:]
+ pred = nn.functional.upsample(pred, size=(h_gt, w_gt), mode='bilinear')
+ u_pred = pred[:,0,:,:] * (w_gt/w_pred)
+ v_pred = pred[:,1,:,:] * (h_gt/h_pred)
+
+ epe = torch.sqrt(torch.pow((u_gt - u_pred), 2) + torch.pow((v_gt - v_pred), 2))
+ epe = epe * valid_gt
+
+ F_mag = torch.sqrt(torch.pow(u_gt, 2)+ torch.pow(v_gt, 2))
+ E_0 = (epe > tau[0]).type_as(epe)
+ E_1 = ((epe / F_mag) > tau[1]).type_as(epe)
+ n_err = E_0 * E_1 * valid_gt
+ f_err = n_err.sum()/valid_gt.sum();
+ if type(f_err) == Variable: f_err = f_err.data
+ return f_err[0]
+
+
+if __name__ == '__main__':
+ main()
diff --git a/test_flownetc.py b/test_flownetc.py
new file mode 100644
index 0000000..84d2d0d
--- /dev/null
+++ b/test_flownetc.py
@@ -0,0 +1,113 @@
+# Author: Anurag Ranjan
+# Copyright (c) 2019, Anurag Ranjan
+# All rights reserved.
+
+import argparse
+import custom_transforms
+from datasets.validation_flow import ValidationFlowFlowNetC
+import torch
+from torch.autograd import Variable
+import models
+from logger import AverageMeter
+from torchvision.transforms import ToPILImage
+from tensorboardX import SummaryWriter
+import os
+from flowutils.flowlib import flow_to_image
+from utils import tensor2array
+
+
+parser = argparse.ArgumentParser(description='Test FlowNetC',
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+parser.add_argument('--flownet', dest='flownet', type=str, default='FlowNetC5', choices=['FlowNetS', 'FlowNetS5', 'FlowNetS6', 'SpyNet', 'FlowNetC5'],
+ help='flow network architecture. Options: FlowNetS | SpyNet')
+parser.add_argument('--nlevels', dest='nlevels', type=int, default=6,
+ help='number of levels in multiscale. Options: 4|5|6')
+parser.add_argument('--pretrained-flow', dest='pretrained_flow', default=None, metavar='PATH',
+ help='path to pre-trained Flow net model')
+parser.add_argument('--dataset', dest='dataset', default='kitti2015', choices=['kitti2015', 'kitti2012'],
+ help='path to pre-trained Flow net model')
+
+
+def compute_epe(gt, pred, op='sub'):
+ _, _, h_pred, w_pred = pred.size()
+ bs, nc, h_gt, w_gt = gt.size()
+ u_gt, v_gt = gt[:,0,:,:], gt[:,1,:,:]
+ pred = torch.nn.functional.upsample(pred, size=(h_gt, w_gt), mode='bilinear')
+ u_pred = pred[:,0,:,:] * (w_gt/w_pred)
+ v_pred = pred[:,1,:,:] * (h_gt/h_pred)
+ if op=='sub':
+ epe = torch.sqrt(torch.pow((u_gt - u_pred), 2) + torch.pow((v_gt - v_pred), 2))
+ if op=='div':
+ epe = ((u_gt / u_pred) + (v_gt / v_pred))
+
+ return epe
+
+def main():
+ global args
+ args = parser.parse_args()
+ save_path = 'checkpoints/test_flownetc'
+
+ if not os.path.exists(save_path):
+ os.makedirs(save_path)
+ summary_writer = SummaryWriter(save_path)
+ normalize = custom_transforms.Normalize(mean=[0.5, 0.5, 0.5],
+ std=[1.0, 1.0, 1.0])
+ flow_loader_h, flow_loader_w = 384, 1280
+ valid_flow_transform = custom_transforms.Compose([custom_transforms.Scale(h=flow_loader_h, w=flow_loader_w),
+ custom_transforms.ArrayToTensor(), normalize])
+ if args.dataset == "kitti2015":
+ val_flow_set = ValidationFlowFlowNetC(root='/is/ps2/aranjan/AllFlowData/kitti/kitti2015',
+ sequence_length=5, transform=valid_flow_transform)
+ elif args.dataset == "kitti2012":
+ val_flow_set = ValidationFlowKitti2012(root='/is/ps2/aranjan/AllFlowData/kitti/kitti2012',
+ sequence_length=5, transform=valid_flow_transform)
+
+ val_flow_loader = torch.utils.data.DataLoader(val_flow_set, batch_size=1, shuffle=False,
+ num_workers=2, pin_memory=True, drop_last=True)
+
+ flow_net = getattr(models, args.flownet)(pretrained=True).cuda()
+
+ flow_net.eval()
+ error_names = ['epe']
+ errors = AverageMeter(i=len(error_names))
+
+ for i, (tgt_img, ref_imgs, intrinsics, intrinsics_inv, flow_gt, flownet_c_flow, obj_map) in enumerate(val_flow_loader):
+ tgt_img_var = Variable(tgt_img.cuda(), volatile=True)
+ if args.dataset=="kitti2015":
+ ref_imgs_var = [Variable(img.cuda(), volatile=True) for img in ref_imgs]
+ ref_img_var = ref_imgs_var[2]
+ elif args.dataset=="kitti2012":
+ ref_img_var = Variable(ref_imgs.cuda(), volatile=True)
+
+ flow_gt_var = Variable(flow_gt.cuda(), volatile=True)
+ flownet_c_flow = Variable(flownet_c_flow.cuda(), volatile=True)
+
+ # compute output
+ flow_fwd = flow_net(tgt_img_var, ref_img_var)
+ epe = compute_epe(gt=flownet_c_flow, pred=flow_fwd)
+ scale_factor = compute_epe(gt=flownet_c_flow, pred=flow_fwd, op='div')
+ #import ipdb
+ #ipdb.set_trace()
+ summary_writer.add_image('Frame 1', tensor2array(tgt_img_var.data[0].cpu()) , i)
+ summary_writer.add_image('Frame 2', tensor2array(ref_img_var.data[0].cpu()) , i)
+ summary_writer.add_image('Flow Output', flow_to_image(tensor2array(flow_fwd.data[0].cpu())) , i)
+ summary_writer.add_image('UnFlow Output', flow_to_image(tensor2array(flownet_c_flow.data[0][:2].cpu())) , i)
+ summary_writer.add_image('gtFlow Output', flow_to_image(tensor2array(flow_gt_var.data[0][:2].cpu())) , i)
+ summary_writer.add_image('EPE Image w UnFlow', tensor2array(epe.data.cpu()) , i)
+ summary_writer.add_scalar('EPE mean w UnFlow', epe.mean().data.cpu(), i)
+ summary_writer.add_scalar('EPE max w UnFlow', epe.max().data.cpu(), i)
+ summary_writer.add_scalar('Scale Factor max w UnFlow', scale_factor.max().data.cpu(), i)
+ summary_writer.add_scalar('Scale Factor mean w UnFlow', scale_factor.mean().data.cpu(), i)
+ summary_writer.add_scalar('Flow value max', flow_fwd.max().data.cpu(), i)
+ print(i, "EPE: ", epe.mean().item())
+
+ #print(i, epe)
+ #errors.update(epe)
+
+ print('Done')
+ #print("Averge EPE",errors.avg )
+
+
+
+if __name__ == '__main__':
+ main()
diff --git a/test_make3d.py b/test_make3d.py
new file mode 100644
index 0000000..851afc4
--- /dev/null
+++ b/test_make3d.py
@@ -0,0 +1,194 @@
+# Author: Anurag Ranjan
+# Copyright (c) 2019, Anurag Ranjan
+# All rights reserved.
+# based on github.com/ClementPinard/SfMLearner-Pytorch
+
+import glob
+import torch
+import cv2
+from torch.autograd import Variable
+from PIL import Image
+from scipy import interpolate, io
+from scipy.misc import imresize, imread
+from scipy.ndimage.interpolation import zoom
+import numpy as np
+from path import Path
+import argparse
+from tqdm import tqdm
+from utils import tensor2array
+import models
+from loss_functions import spatial_normalize
+
+parser = argparse.ArgumentParser(description='Script for DispNet testing with corresponding groundTruth',
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+parser.add_argument("--dispnet", dest='dispnet', type=str, default='DispResNet6', help='dispnet architecture')
+parser.add_argument("--pretrained-dispnet", required=True, type=str, help="pretrained DispNet path")
+parser.add_argument("--img-height", default=256, type=int, help="Image height")
+parser.add_argument("--img-width", default=256, type=int, help="Image width")
+parser.add_argument("--no-resize", action='store_true', help="no resizing is done")
+parser.add_argument("--min-depth", default=1e-3)
+parser.add_argument("--max-depth", default=70, type=float)
+
+parser.add_argument("--dataset-dir", default='.', type=str, help="Dataset directory")
+parser.add_argument("--output-dir", default=None, type=str, help="Output directory for saving predictions in a big 3D numpy file")
+
+parser.add_argument("--img-exts", default=['png', 'jpg', 'bmp'], nargs='*', type=str, help="images extensions to glob")
+
+class test_framework(object):
+ def __init__(self, root, min_depth=1e-3, max_depth=70):
+ self.root = root
+ self.min_depth, self.max_depth = min_depth, max_depth
+ self.img_files = sorted(glob.glob(root/'Test134/*.jpg'))
+ self.depth_files = sorted(glob.glob(root/'Gridlaserdata/*.mat'))
+
+ # This test file is corrupted in the original dataset
+ self.img_files.pop(61)
+ self.depth_files.pop(61)
+
+ self.ratio = 2
+ self.h_ratio = 1 / (1.33333 * self.ratio)
+ self.color_new_height = 1704 // 2
+ self.depth_new_height = 21
+
+ def __getitem__(self, i):
+ img = Image.open(self.img_files[i])
+ try:
+ imgarr = np.array(img)
+ tgt_img = imgarr.astype(np.float32)
+ except:
+ imgarr = np.array(img)
+ tgt_img = imgarr.astype(np.float32)
+
+ tgt_img = tgt_img[ (2272 - self.color_new_height)//2:(2272 + self.color_new_height)//2,:]
+
+ depth_map = io.loadmat(self.depth_files[i])
+ depth_gt = depth_map["Position3DGrid"][:,:,3]
+ depth_gt_cropped = depth_gt[(55 - 21)//2:(55 + 21)//2]
+ return {'tgt': tgt_img,
+ 'path':self.img_files[i],
+ 'gt_depth': depth_gt_cropped,
+ 'mask': np.logical_and(depth_gt_cropped > self.min_depth, depth_gt_cropped < self.max_depth)
+ }
+
+ def __len__(self):
+ return len(self.img_files)
+
+def main():
+ args = parser.parse_args()
+
+ disp_net = getattr(models, args.dispnet)().cuda()
+ weights = torch.load(args.pretrained_dispnet)
+ disp_net.load_state_dict(weights['state_dict'])
+ disp_net.eval()
+
+ print('no PoseNet specified, scale_factor will be determined by median ratio, which is kiiinda cheating\
+ (but consistent with original paper)')
+ seq_length = 0
+
+ dataset_dir = Path(args.dataset_dir)
+ framework = test_framework(dataset_dir, args.min_depth, args.max_depth)
+ errors = np.zeros((2, 7, len(framework)), np.float32)
+ if args.output_dir is not None:
+ output_dir = Path(args.output_dir)
+ viz_dir = output_dir/'viz'
+ output_dir.makedirs_p()
+ viz_dir.makedirs_p()
+
+ for j, sample in enumerate(tqdm(framework)):
+ tgt_img = sample['tgt']
+
+ h,w,_ = tgt_img.shape
+ if (not args.no_resize) and (h != args.img_height or w != args.img_width):
+ tgt_img = imresize(tgt_img, (args.img_height, args.img_width)).astype(np.float32)
+
+ tgt_img = np.transpose(tgt_img, (2, 0, 1))
+ tgt_img = torch.from_numpy(tgt_img).unsqueeze(0)
+ tgt_img = ((tgt_img/255 - 0.5)/0.5).cuda()
+ tgt_img_var = Variable(tgt_img, volatile=True)
+
+ pred_disp = disp_net(tgt_img_var)
+ pred_disp = pred_disp.data.cpu().numpy()[0,0]
+ gt_depth = sample['gt_depth']
+
+ if args.output_dir is not None:
+ if j == 0:
+ predictions = np.zeros((len(framework), *pred_disp.shape))
+ predictions[j] = 1/pred_disp
+ gt_viz = interp_gt_disp(gt_depth)
+ gt_viz = torch.FloatTensor(gt_viz)
+ gt_viz[gt_viz == 0] = 1000
+ gt_viz = (1/gt_viz).clamp(0,10)
+
+ tgt_img_viz = tensor2array(tgt_img[0].cpu())
+ depth_viz = tensor2array(torch.FloatTensor(pred_disp), max_value=None, colormap='hot')
+ gt_viz = tensor2array(gt_viz, max_value=None, colormap='hot')
+ tgt_img_viz_im = Image.fromarray((255*tgt_img_viz).astype('uint8'))
+ tgt_img_viz_im = tgt_img_viz_im.resize(size=(args.img_width, args.img_height), resample=3)
+ tgt_img_viz_im.save(viz_dir/str(j).zfill(4)+'img.png')
+ depth_viz_im = Image.fromarray((255*depth_viz).astype('uint8'))
+ depth_viz_im = depth_viz_im.resize(size=(args.img_width, args.img_height), resample=3)
+ depth_viz_im.save(viz_dir/str(j).zfill(4)+'depth.png')
+ gt_viz_im = Image.fromarray((255*gt_viz).astype('uint8'))
+ gt_viz_im = gt_viz_im.resize(size=(args.img_width, args.img_height), resample=3)
+ gt_viz_im.save(viz_dir/str(j).zfill(4)+'gt.png')
+
+ all_viz_im = Image.fromarray( np.hstack([np.array(tgt_img_viz_im), np.array(gt_viz_im), np.array(depth_viz_im)]) )
+ all_viz_im.save(viz_dir/str(j).zfill(4)+'all.png')
+
+
+ pred_depth = 1/pred_disp
+ pred_depth_zoomed = zoom(pred_depth, (gt_depth.shape[0]/pred_depth.shape[0],gt_depth.shape[1]/pred_depth.shape[1])).clip(args.min_depth, args.max_depth)
+ if sample['mask'] is not None:
+ pred_depth_zoomed = pred_depth_zoomed[sample['mask']]
+ gt_depth = gt_depth[sample['mask']]
+
+ scale_factor = np.median(gt_depth)/np.median(pred_depth_zoomed)
+ pred_depth_zoomed = scale_factor*pred_depth_zoomed
+ pred_depth_zoomed[pred_depth_zoomed>args.max_depth] = args.max_depth
+ errors[1,:,j] = compute_errors(gt_depth, pred_depth_zoomed)
+
+ mean_errors = errors.mean(2)
+ error_names = ['abs_rel','sq_rel','rms','log_rms','a1','a2','a3']
+
+ print("Results with scale factor determined by GT/prediction ratio (like the original paper) : ")
+ print("{:>10}, {:>10}, {:>10}, {:>10}, {:>10}, {:>10}, {:>10}".format(*error_names))
+ print("{:10.4f}, {:10.4f}, {:10.4f}, {:10.4f}, {:10.4f}, {:10.4f}, {:10.4f}".format(*mean_errors[1]))
+
+ if args.output_dir is not None:
+ np.save(output_dir/'predictions.npy', predictions)
+
+def interp_gt_disp(mat, mask_val=0):
+ mat[mat==mask_val] = np.nan
+ x = np.arange(0, mat.shape[1])
+ y = np.arange(0, mat.shape[0])
+ mat = np.ma.masked_invalid(mat)
+ xx, yy = np.meshgrid(x, y)
+ #get only the valid values
+ x1 = xx[~mat.mask]
+ y1 = yy[~mat.mask]
+ newarr = mat[~mat.mask]
+
+ GD1 = interpolate.griddata((x1, y1), newarr.ravel(), (xx, yy), method='linear', fill_value=mask_val)
+ return GD1
+
+def compute_errors(gt, pred):
+ thresh = np.maximum((gt / pred), (pred / gt))
+ a1 = (thresh < 1.25 ).mean()
+ a2 = (thresh < 1.25 ** 2).mean()
+ a3 = (thresh < 1.25 ** 3).mean()
+
+ rmse = (gt - pred) ** 2
+ rmse = np.sqrt(rmse.mean())
+
+ rmse_log = (np.log10(gt) - np.log10(pred)) ** 2
+ rmse_log = np.sqrt(rmse_log.mean())
+
+ abs_rel = np.mean(np.abs(gt - pred) / gt)
+
+ sq_rel = np.mean(((gt - pred)**2) / gt)
+
+ return abs_rel, sq_rel, rmse, rmse_log, a1, a2, a3
+
+
+if __name__ == '__main__':
+ main()
diff --git a/test_mask.py b/test_mask.py
new file mode 100644
index 0000000..5d1307f
--- /dev/null
+++ b/test_mask.py
@@ -0,0 +1,341 @@
+# Author: Anurag Ranjan
+# Copyright (c) 2019, Anurag Ranjan
+# All rights reserved.
+
+import argparse
+import os
+from tqdm import tqdm
+import numpy as np
+from path import Path
+from tensorboardX import SummaryWriter
+import torch
+from torch.autograd import Variable
+import models
+import custom_transforms
+from inverse_warp import pose2flow
+from datasets.validation_flow import ValidationMask
+from logger import AverageMeter
+from PIL import Image
+from torchvision.transforms import ToPILImage
+from flowutils.flowlib import flow_to_image
+from utils import tensor2array
+from loss_functions import compute_all_epes
+from scipy.ndimage.interpolation import zoom
+
+parser = argparse.ArgumentParser(description='Test IOU of Mask predictions',
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+parser.add_argument('--kitti-dir', dest='kitti_dir', type=str, default='/ps/project/datasets/AllFlowData/kitti/kitti2015',
+ help='Path to kitti2015 scene flow dataset for optical flow validation')
+parser.add_argument('--dispnet', dest='dispnet', type=str, default='DispResNet6', choices=['DispNetS', 'DispResNet6', 'DispNetS6'],
+ help='depth network architecture.')
+parser.add_argument('--posenet', dest='posenet', type=str, default='PoseNetB6', choices=['PoseNet6','PoseNetB6', 'PoseExpNet5', 'PoseExpNet6'],
+ help='pose and explainabity mask network architecture. ')
+parser.add_argument('--masknet', dest='masknet', type=str, default='MaskNet6', choices=['MaskResNet6', 'MaskNet6', 'PoseExpNet5', 'PoseExpNet6'],
+ help='pose and explainabity mask network architecture. ')
+parser.add_argument('--flownet', dest='flownet', type=str, default='Back2Future', choices=['FlowNetS', 'Back2Future', 'FlowNetC5','FlowNetC6', 'SpyNet'],
+ help='flow network architecture.')
+
+parser.add_argument('--THRESH', dest='THRESH', type=float, default=0.94, help='THRESH')
+
+parser.add_argument('--pretrained-disp', dest='pretrained_disp', default=None, metavar='PATH', help='path to pre-trained dispnet model')
+parser.add_argument('--pretrained-pose', dest='pretrained_pose', default=None, metavar='PATH', help='path to pre-trained posenet model')
+parser.add_argument('--pretrained-flow', dest='pretrained_flow', default=None, metavar='PATH', help='path to pre-trained flownet model')
+parser.add_argument('--pretrained-mask', dest='pretrained_mask', default=None, metavar='PATH', help='path to pre-trained masknet model')
+
+parser.add_argument('--nlevels', dest='nlevels', type=int, default=6, help='number of levels in multiscale. Options: 4|5')
+parser.add_argument('--dataset', dest='dataset', default='kitti2015', help='path to pre-trained Flow net model')
+parser.add_argument('--output-dir', dest='output_dir', type=str, default=None, help='path to output directory')
+
+
+def main():
+ global args
+ args = parser.parse_args()
+
+ args.pretrained_disp = Path(args.pretrained_disp)
+ args.pretrained_pose = Path(args.pretrained_pose)
+ args.pretrained_mask = Path(args.pretrained_mask)
+ args.pretrained_flow = Path(args.pretrained_flow)
+
+ if args.output_dir is not None:
+ args.output_dir = Path(args.output_dir)
+ args.output_dir.makedirs_p()
+
+ image_dir = args.output_dir/'images'
+ gt_dir = args.output_dir/'gt'
+ mask_dir = args.output_dir/'mask'
+ viz_dir = args.output_dir/'viz'
+
+ image_dir.makedirs_p()
+ gt_dir.makedirs_p()
+ mask_dir.makedirs_p()
+ viz_dir.makedirs_p()
+
+ output_writer = SummaryWriter(args.output_dir)
+
+ normalize = custom_transforms.Normalize(mean=[0.5, 0.5, 0.5],
+ std=[0.5, 0.5, 0.5])
+ flow_loader_h, flow_loader_w = 256, 832
+ valid_flow_transform = custom_transforms.Compose([custom_transforms.Scale(h=flow_loader_h, w=flow_loader_w),
+ custom_transforms.ArrayToTensor(), normalize])
+ val_flow_set = ValidationMask(root=args.kitti_dir,
+ sequence_length=5, transform=valid_flow_transform)
+
+ val_loader = torch.utils.data.DataLoader(val_flow_set, batch_size=1, shuffle=False,
+ num_workers=2, pin_memory=True, drop_last=True)
+
+ disp_net = getattr(models, args.dispnet)().cuda()
+ pose_net = getattr(models, args.posenet)(nb_ref_imgs=4).cuda()
+ mask_net = getattr(models, args.masknet)(nb_ref_imgs=4).cuda()
+ flow_net = getattr(models, args.flownet)(nlevels=args.nlevels).cuda()
+
+ dispnet_weights = torch.load(args.pretrained_disp)
+ posenet_weights = torch.load(args.pretrained_pose)
+ masknet_weights = torch.load(args.pretrained_mask)
+ flownet_weights = torch.load(args.pretrained_flow)
+ disp_net.load_state_dict(dispnet_weights['state_dict'])
+ pose_net.load_state_dict(posenet_weights['state_dict'])
+ flow_net.load_state_dict(flownet_weights['state_dict'])
+ mask_net.load_state_dict(masknet_weights['state_dict'])
+
+ disp_net.eval()
+ pose_net.eval()
+ mask_net.eval()
+ flow_net.eval()
+
+ error_names = ['tp_0', 'fp_0', 'fn_0', 'tp_1', 'fp_1', 'fn_1']
+ errors = AverageMeter(i=len(error_names))
+ errors_census = AverageMeter(i=len(error_names))
+ errors_bare = AverageMeter(i=len(error_names))
+
+ for i, (tgt_img, ref_imgs, intrinsics, intrinsics_inv, flow_gt, obj_map_gt, semantic_map_gt) in enumerate(tqdm(val_loader)):
+ tgt_img_var = Variable(tgt_img.cuda(), volatile=True)
+ ref_imgs_var = [Variable(img.cuda(), volatile=True) for img in ref_imgs]
+ intrinsics_var = Variable(intrinsics.cuda(), volatile=True)
+ intrinsics_inv_var = Variable(intrinsics_inv.cuda(), volatile=True)
+
+ flow_gt_var = Variable(flow_gt.cuda(), volatile=True)
+ obj_map_gt_var = Variable(obj_map_gt.cuda(), volatile=True)
+
+ disp = disp_net(tgt_img_var)
+ depth = 1/disp
+ pose = pose_net(tgt_img_var, ref_imgs_var)
+ explainability_mask = mask_net(tgt_img_var, ref_imgs_var)
+ if args.flownet in ['Back2Future']:
+ flow_fwd, flow_bwd, _ = flow_net(tgt_img_var, ref_imgs_var[1:3])
+ else:
+ flow_fwd = flow_net(tgt_img_var, ref_imgs_var[2])
+ flow_cam = pose2flow(depth.squeeze(1), pose[:,2], intrinsics_var, intrinsics_inv_var)
+
+ rigidity_mask = 1 - (1-explainability_mask[:,1])*(1-explainability_mask[:,2]).unsqueeze(1) > 0.5
+ rigidity_mask_census_soft = (flow_cam - flow_fwd).pow(2).sum(dim=1).unsqueeze(1).sqrt()#.normalize()
+ rigidity_mask_census_soft = 1 - rigidity_mask_census_soft/rigidity_mask_census_soft.max()
+ rigidity_mask_census = rigidity_mask_census_soft > args.THRESH
+
+ rigidity_mask_combined = 1 - (1-rigidity_mask.type_as(explainability_mask))*(1-rigidity_mask_census.type_as(explainability_mask))
+
+ flow_fwd_non_rigid = (1- rigidity_mask_combined).type_as(flow_fwd).expand_as(flow_fwd) * flow_fwd
+ flow_fwd_rigid = rigidity_mask_combined.type_as(flow_fwd).expand_as(flow_fwd) * flow_cam
+ total_flow = flow_fwd_rigid + flow_fwd_non_rigid
+
+ obj_map_gt_var_expanded = obj_map_gt_var.unsqueeze(1).type_as(flow_fwd)
+
+ tgt_img_np = tgt_img[0].numpy()
+ rigidity_mask_combined_np = rigidity_mask_combined.cpu().data[0].numpy()
+ rigidity_mask_census_np = rigidity_mask_census.cpu().data[0].numpy()
+ rigidity_mask_bare_np = rigidity_mask.cpu().data[0].numpy()
+
+ gt_mask_np = obj_map_gt[0].numpy()
+ semantic_map_np = semantic_map_gt[0].numpy()
+
+ _errors = mask_error(gt_mask_np, semantic_map_np, rigidity_mask_combined_np[0])
+ _errors_census = mask_error(gt_mask_np, semantic_map_np, rigidity_mask_census_np[0])
+ _errors_bare = mask_error(gt_mask_np, semantic_map_np, rigidity_mask_bare_np[0])
+
+ errors.update(_errors)
+ errors_census.update(_errors_census)
+ errors_bare.update(_errors_bare)
+
+ if args.output_dir is not None:
+ np.save(image_dir/str(i).zfill(3), tgt_img_np )
+ np.save(gt_dir/str(i).zfill(3), gt_mask_np)
+ np.save(mask_dir/str(i).zfill(3), rigidity_mask_combined_np)
+
+
+
+ if (args.output_dir is not None) and i%10==0:
+ ind = int(i//10)
+ output_writer.add_image('val Dispnet Output Normalized', tensor2array(disp.data[0].cpu(), max_value=None, colormap='bone'), ind)
+ output_writer.add_image('val Input', tensor2array(tgt_img[0].cpu()), i)
+ output_writer.add_image('val Total Flow Output', flow_to_image(tensor2array(total_flow.data[0].cpu())), ind)
+ output_writer.add_image('val Rigid Flow Output', flow_to_image(tensor2array(flow_fwd_rigid.data[0].cpu())), ind)
+ output_writer.add_image('val Non-rigid Flow Output', flow_to_image(tensor2array(flow_fwd_non_rigid.data[0].cpu())), ind)
+ output_writer.add_image('val Rigidity Mask', tensor2array(rigidity_mask.data[0].cpu(), max_value=1, colormap='bone'), ind)
+ output_writer.add_image('val Rigidity Mask Census', tensor2array(rigidity_mask_census.data[0].cpu(), max_value=1, colormap='bone'), ind)
+ output_writer.add_image('val Rigidity Mask Combined', tensor2array(rigidity_mask_combined.data[0].cpu(), max_value=1, colormap='bone'), ind)
+
+ if args.output_dir is not None:
+ tgt_img_viz = tensor2array(tgt_img[0].cpu())
+ depth_viz = tensor2array(disp.data[0].cpu(), max_value=None, colormap='hot')
+ mask_viz = tensor2array(rigidity_mask_census_soft.data[0].cpu(), max_value=1, colormap='bone')
+ row2_viz = flow_to_image(np.hstack((tensor2array(flow_cam.data[0].cpu()),
+ tensor2array(flow_fwd_non_rigid.data[0].cpu()),
+ tensor2array(total_flow.data[0].cpu()) )) )
+
+ row1_viz = np.hstack((tgt_img_viz, depth_viz, mask_viz))
+ viz3 = np.vstack((255*tgt_img_viz, 255*depth_viz, 255*mask_viz,
+ flow_to_image(np.vstack((tensor2array(flow_fwd_non_rigid.data[0].cpu()),
+ tensor2array(total_flow.data[0].cpu()))))))
+
+ row1_viz_im = Image.fromarray((255*row1_viz).astype('uint8'))
+ row2_viz_im = Image.fromarray((row2_viz).astype('uint8'))
+ viz3_im = Image.fromarray(viz3.astype('uint8'))
+
+ row1_viz_im.save(viz_dir/str(i).zfill(3)+'01.png')
+ row2_viz_im.save(viz_dir/str(i).zfill(3)+'02.png')
+ viz3_im.save(viz_dir/str(i).zfill(3)+'03.png')
+
+
+
+ bg_iou = errors.sum[0] / (errors.sum[0] + errors.sum[1] + errors.sum[2] )
+ fg_iou = errors.sum[3] / (errors.sum[3] + errors.sum[4] + errors.sum[5] )
+ avg_iou = (bg_iou + fg_iou)/2
+
+ bg_iou_census = errors_census.sum[0] / (errors_census.sum[0] + errors_census.sum[1] + errors_census.sum[2] )
+ fg_iou_census = errors_census.sum[3] / (errors_census.sum[3] + errors_census.sum[4] + errors_census.sum[5] )
+ avg_iou_census = (bg_iou_census + fg_iou_census)/2
+
+ bg_iou_bare = errors_bare.sum[0] / (errors_bare.sum[0] + errors_bare.sum[1] + errors_bare.sum[2] )
+ fg_iou_bare = errors_bare.sum[3] / (errors_bare.sum[3] + errors_bare.sum[4] + errors_bare.sum[5] )
+ avg_iou_bare = (bg_iou_bare + fg_iou_bare)/2
+
+ print("Results Full Model")
+ print("\t {:>10}, {:>10}, {:>10} ".format('iou', 'bg_iou', 'fg_iou'))
+ print("Errors \t {:10.4f}, {:10.4f} {:10.4f}".format(avg_iou, bg_iou, fg_iou))
+
+ print("Results Census only")
+ print("\t {:>10}, {:>10}, {:>10} ".format('iou', 'bg_iou', 'fg_iou'))
+ print("Errors \t {:10.4f}, {:10.4f} {:10.4f}".format(avg_iou_census, bg_iou_census, fg_iou_census))
+
+ print("Results Bare")
+ print("\t {:>10}, {:>10}, {:>10} ".format('iou', 'bg_iou', 'fg_iou'))
+ print("Errors \t {:10.4f}, {:10.4f} {:10.4f}".format(avg_iou_bare, bg_iou_bare, fg_iou_bare))
+
+
+def mask_error(mot_gt, seg_gt, pred):
+ max_label = 2
+ tp = np.zeros((max_label))
+ fp = np.zeros((max_label))
+ fn = np.zeros((max_label))
+
+ mot_gt[mot_gt != 0] = 1
+ mov_car_gt = mot_gt
+ mov_car_gt[seg_gt != 26] = 255
+ mot_gt = mov_car_gt
+ r_shape = [float(i) for i in list(pred.shape)]
+ g_shape = [float(i) for i in list(mot_gt.shape)]
+ pred = zoom(pred, (g_shape[0] / r_shape[0],
+ g_shape[1] / r_shape[1]), order = 0)
+
+ if len(pred.shape) == 2:
+ mask = pred
+ umask = np.zeros((2, mask.shape[0], mask.shape[1]))
+ umask[0, :, :] = mask
+ umask[1, :, :] = 1. - mask
+ pred = umask
+
+ pred = pred.argmax(axis=0)
+ if (np.max(pred) > (max_label - 1) and np.max(pred)!=255):
+ print('Result has invalid labels: ', np.max(pred))
+ else:
+ # For each class
+ for class_id in range(0, max_label):
+ class_gt = np.equal(mot_gt, class_id)
+ class_result = np.equal(pred, class_id)
+ class_result[np.equal(mot_gt, 255)] = 0
+ tp[class_id] = tp[class_id] +\
+ np.count_nonzero(class_gt & class_result)
+ fp[class_id] = fp[class_id] +\
+ np.count_nonzero(class_result & ~class_gt)
+ fn[class_id] = fn[class_id] +\
+ np.count_nonzero(~class_result & class_gt)
+
+ return [tp[0], fp[0], fn[0], tp[1], fp[1], fn[1]]
+
+
+def evalVOC(result_label_folder):
+ max_label = 2
+ class_ious = np.zeros((max_label, 1))
+ overall_iou = 0
+ overall_accuracy = 0
+ tp = np.zeros((max_label))
+ fp = np.zeros((max_label))
+ fn = np.zeros((max_label))
+ img_tp = 0
+ img_pixels = 0
+
+ for t in range(0, 200):
+ gt_file = './masks/standalone11/gt/' + str(t).zfill(3) + '.npy'
+ result_file = result_label_folder + '/' + str(t).zfill(3) + '.npy'
+ seg_gt_file = './masks/semantic_labels/training/semantic/' + str(t).zfill(6) + '_10.png'
+ seg_gt = np.array(Image.open(seg_gt_file))
+ # seg_gt = zoom(seg_gt, (256./375., 832./1242.), order = 0)
+ gt_labels = np.load(gt_file)
+ # gt_labels = zoom(gt_labels, (256./375., 832./1242.), order = 0)
+ gt_labels[gt_labels != 0] = 1
+ mov_car_gt = gt_labels
+ mov_car_gt[seg_gt != 26] = 255
+ gt_labels = mov_car_gt
+ result_labels = np.load(result_file)[0]
+ r_shape = [float(i) for i in list(result_labels.shape)]
+ g_shape = [float(i) for i in list(gt_labels.shape)]
+ result_labels = zoom(result_labels,
+ (g_shape[0] / r_shape[0],
+ g_shape[1] / r_shape[1]), order = 0)
+
+ if len(result_labels.shape) == 2:
+ mask = result_labels
+ umask = np.zeros((2, mask.shape[0], mask.shape[1]))
+ umask[0, :, :] = mask
+ umask[1, :, :] = 1. - mask
+ result_labels = umask
+
+ result_labels = result_labels.argmax(axis=0)
+ if (np.max(result_labels) > (max_label - 1) and np.max(result_labels)!=255):
+ print('Result has invalid labels: ', np.max(result_labels))
+ else:
+ # For each class
+ for class_id in range(0, max_label):
+ class_gt = np.equal(gt_labels, class_id)
+ class_result = np.equal(result_labels, class_id)
+ class_result[np.equal(gt_labels, 255)] = 0
+ tp[class_id] = tp[class_id] +\
+ np.count_nonzero(class_gt & class_result)
+ fp[class_id] = fp[class_id] +\
+ np.count_nonzero(class_result & ~class_gt)
+ fn[class_id] = fn[class_id] +\
+ np.count_nonzero(~class_result & class_gt)
+
+
+ for class_id in range(0, max_label):
+ class_ious[class_id] = tp[class_id] / (tp[class_id] +
+ fp[class_id] + fn[class_id])
+ overall_iou = np.mean(class_ious)
+ # overall_accuracy = img_tp / (img_pixels * 1.0)
+ print(result_label_folder)
+ print('Class IOUs:')
+ print(class_ious)
+ print('Overall IOU: ')
+ print(overall_iou)
+ # print('Overall Accuracy: ')
+ # print(overall_accuracy)
+ file_ = open(result_label_folder + '/scores_varun.txt','w')
+ file_.write(result_label_folder + '\n')
+ file_.write('Overall IOU: ' + str(overall_iou) + '\n' +
+ # 'Overall Accuracy: ' + str(overall_accuracy) + '\n' +
+ 'Class wise iou: ' + str(class_ious.T) + '\n'
+ )
+ file_.close()
+ return overall_iou
+
+if __name__ == '__main__':
+ main()
diff --git a/test_pose.py b/test_pose.py
new file mode 100644
index 0000000..c45b9a1
--- /dev/null
+++ b/test_pose.py
@@ -0,0 +1,126 @@
+import torch
+from torch.autograd import Variable
+
+from scipy.misc import imresize
+import numpy as np
+from path import Path
+import argparse
+from tqdm import tqdm
+
+import models
+from inverse_warp import pose_vec2mat
+
+
+parser = argparse.ArgumentParser(description='Script for PoseNet testing with corresponding groundTruth from KITTI Odometry',
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+parser.add_argument("pretrained_posenet", type=str, help="pretrained PoseNet path")
+parser.add_argument("--posenet", type=str, default="PoseNetB6", help="PoseNet model path")
+parser.add_argument("--img-height", default=256, type=int, help="Image height")
+parser.add_argument("--img-width", default=832, type=int, help="Image width")
+parser.add_argument("--no-resize", action='store_true', help="no resizing is done")
+parser.add_argument("--min-depth", default=1e-3)
+parser.add_argument("--max-depth", default=80)
+
+parser.add_argument("--dataset-dir", default='.', type=str, help="Dataset directory")
+parser.add_argument("--sequences", default=['09'], type=str, nargs='*', help="sequences to test")
+parser.add_argument("--output-dir", default=None, type=str, help="Output directory for saving predictions in a big 3D numpy file")
+parser.add_argument("--img-exts", default=['png', 'jpg', 'bmp'], nargs='*', type=str, help="images extensions to glob")
+parser.add_argument("--rotation-mode", default='euler', choices=['euler', 'quat'], type=str)
+
+
+def main():
+ args = parser.parse_args()
+ from kitti_eval.pose_evaluation_utils import test_framework_KITTI as test_framework
+
+ weights = torch.load(args.pretrained_posenet)
+ seq_length = int(weights['state_dict']['conv1.0.weight'].size(1)/3)
+ pose_net = getattr(models, args.posenet)(nb_ref_imgs=seq_length - 1).cuda()
+ pose_net.load_state_dict(weights['state_dict'], strict=False)
+
+ dataset_dir = Path(args.dataset_dir)
+ framework = test_framework(dataset_dir, args.sequences, seq_length)
+
+ print('{} snippets to test'.format(len(framework)))
+ errors = np.zeros((len(framework), 2), np.float32)
+ if args.output_dir is not None:
+ output_dir = Path(args.output_dir)
+ output_dir.makedirs_p()
+ predictions_array = np.zeros((len(framework), seq_length, 3, 4))
+
+ for j, sample in enumerate(tqdm(framework)):
+ imgs = sample['imgs']
+
+ h,w,_ = imgs[0].shape
+ if (not args.no_resize) and (h != args.img_height or w != args.img_width):
+ imgs = [imresize(img, (args.img_height, args.img_width)).astype(np.float32) for img in imgs]
+
+ imgs = [np.transpose(img, (2,0,1)) for img in imgs]
+
+ ref_imgs_var = []
+ for i, img in enumerate(imgs):
+ img = torch.from_numpy(img).unsqueeze(0)
+ img = ((img/255 - 0.5)/0.5).cuda()
+ img_var = Variable(img, volatile=True)
+ if i == len(imgs)//2:
+ tgt_img_var = img_var
+ else:
+ ref_imgs_var.append(Variable(img, volatile=True))
+
+ if args.posenet in ["PoseNet6", "PoseNetB6"]:
+ poses = pose_net(tgt_img_var, ref_imgs_var)
+ else:
+ _, poses = pose_net(tgt_img_var, ref_imgs_var)
+
+ poses = poses.cpu().data[0]
+ poses = torch.cat([poses[:len(imgs)//2], torch.zeros(1,6).float(), poses[len(imgs)//2:]])
+
+ inv_transform_matrices = pose_vec2mat(Variable(poses), rotation_mode=args.rotation_mode).data.numpy().astype(np.float64)
+
+ rot_matrices = np.linalg.inv(inv_transform_matrices[:,:,:3])
+ tr_vectors = -rot_matrices @ inv_transform_matrices[:,:,-1:]
+
+ transform_matrices = np.concatenate([rot_matrices, tr_vectors], axis=-1)
+
+ first_inv_transform = inv_transform_matrices[0]
+ final_poses = first_inv_transform[:,:3] @ transform_matrices
+ final_poses[:,:,-1:] += first_inv_transform[:,-1:]
+
+ if args.output_dir is not None:
+ predictions_array[j] = final_poses
+
+ ATE, RE = compute_pose_error(sample['poses'], final_poses)
+ errors[j] = ATE, RE
+
+ mean_errors = errors.mean(0)
+ std_errors = errors.std(0)
+ error_names = ['ATE','RE']
+ print('')
+ print("Results")
+ print("\t {:>10}, {:>10}".format(*error_names))
+ print("mean \t {:10.4f}, {:10.4f}".format(*mean_errors))
+ print("std \t {:10.4f}, {:10.4f}".format(*std_errors))
+
+ if args.output_dir is not None:
+ np.save(output_dir/'predictions.npy', predictions_array)
+
+
+def compute_pose_error(gt, pred):
+ RE = 0
+ snippet_length = gt.shape[0]
+ scale_factor = np.sum(gt[:,:,-1] * pred[:,:,-1])/np.sum(pred[:,:,-1] ** 2)
+ ATE = np.linalg.norm((gt[:,:,-1] - scale_factor * pred[:,:,-1]).reshape(-1))
+ for gt_pose, pred_pose in zip(gt, pred):
+ # Residual matrix to which we compute angle's sin and cos
+ R = gt_pose[:,:3] @ np.linalg.inv(pred_pose[:,:3])
+ s = np.linalg.norm([R[0,1]-R[1,0],
+ R[1,2]-R[2,1],
+ R[0,2]-R[2,0]])
+ c = np.trace(R) - 1
+ # Note: we actually compute double of cos and sin, but arctan2 is invariant to scale
+ RE += np.arctan2(s,c)
+
+ return ATE/snippet_length, RE/snippet_length
+
+
+if __name__ == '__main__':
+ main()
diff --git a/test_sintel_pose.py b/test_sintel_pose.py
new file mode 100644
index 0000000..117d12d
--- /dev/null
+++ b/test_sintel_pose.py
@@ -0,0 +1,125 @@
+# Author: Anurag Ranjan
+# Copyright (c) 2019, Anurag Ranjan
+# All rights reserved.
+# based on github.com/ClementPinard/SfMLearner-Pytorch
+
+import torch
+from torch.autograd import Variable
+
+from scipy.misc import imresize
+import numpy as np
+from path import Path
+import argparse
+from tqdm import tqdm
+
+import models
+from inverse_warp import pose_vec2mat
+
+
+parser = argparse.ArgumentParser(description='Script for PoseNet testing with corresponding groundTruth from Sintel Odometry',
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+parser.add_argument("pretrained_posenet", type=str, help="pretrained PoseNet path")
+parser.add_argument("--posenet", type=str, default="PoseNetB6", help="PoseNet model path")
+parser.add_argument("--img-height", default=128, type=int, help="Image height")
+parser.add_argument("--img-width", default=416, type=int, help="Image width")
+parser.add_argument("--no-resize", action='store_true', help="no resizing is done")
+parser.add_argument("--min-depth", default=1e-3)
+parser.add_argument("--max-depth", default=80)
+
+parser.add_argument("--dataset-dir", default='.', type=str, help="Dataset directory")
+parser.add_argument("--sequences", default=['alley_1'], type=str, nargs='*', help="sequences to test")
+parser.add_argument("--output-dir", default=None, type=str, help="Output directory for saving predictions in a big 3D numpy file")
+parser.add_argument("--img-exts", default=['png', 'jpg', 'bmp'], nargs='*', type=str, help="images extensions to glob")
+parser.add_argument("--rotation-mode", default='euler', choices=['euler', 'quat'], type=str)
+
+
+def main():
+ args = parser.parse_args()
+ from sintel_eval.pose_evaluation_utils import test_framework_Sintel as test_framework
+
+ weights = torch.load(args.pretrained_posenet)
+ seq_length = int(weights['state_dict']['conv1.0.weight'].size(1)/3)
+ pose_net = getattr(models, args.posenet)(nb_ref_imgs=seq_length - 1).cuda()
+ pose_net.load_state_dict(weights['state_dict'], strict=False)
+
+ dataset_dir = Path(args.dataset_dir)
+ framework = test_framework(dataset_dir, args.sequences, seq_length)
+
+ print('{} snippets to test'.format(len(framework)))
+ RE = np.zeros((len(framework)), np.float32)
+ if args.output_dir is not None:
+ output_dir = Path(args.output_dir)
+ output_dir.makedirs_p()
+ predictions_array = np.zeros((len(framework), seq_length, 3, 4))
+
+ for j, sample in enumerate(tqdm(framework)):
+ imgs = sample['imgs']
+
+ h,w,_ = imgs[0].shape
+ if (not args.no_resize) and (h != args.img_height or w != args.img_width):
+ imgs = [imresize(img, (args.img_height, args.img_width)).astype(np.float32) for img in imgs]
+
+ imgs = [np.transpose(img, (2,0,1)) for img in imgs]
+
+ ref_imgs_var = []
+ for i, img in enumerate(imgs):
+ img = torch.from_numpy(img).unsqueeze(0)
+ img = ((img/255 - 0.5)/0.5).cuda()
+ img_var = Variable(img, volatile=True)
+ if i == len(imgs)//2:
+ tgt_img_var = img_var
+ else:
+ ref_imgs_var.append(Variable(img, volatile=True))
+
+ if args.posenet in ["PoseNet6", "PoseNetB6"]:
+ poses = pose_net(tgt_img_var, ref_imgs_var)
+ else:
+ _, poses = pose_net(tgt_img_var, ref_imgs_var)
+
+ poses = poses.cpu().data[0]
+ poses = torch.cat([poses[:len(imgs)//2], torch.zeros(1,6).float(), poses[len(imgs)//2:]])
+
+ inv_transform_matrices = pose_vec2mat(Variable(poses), rotation_mode=args.rotation_mode).data.numpy().astype(np.float64)
+
+ rot_matrices = np.linalg.inv(inv_transform_matrices[:,:,:3])
+ tr_vectors = -rot_matrices @ inv_transform_matrices[:,:,-1:]
+
+ transform_matrices = np.concatenate([rot_matrices, tr_vectors], axis=-1)
+
+ first_inv_transform = inv_transform_matrices[0]
+ final_poses = first_inv_transform[:,:3] @ transform_matrices
+ final_poses[:,:,-1:] += first_inv_transform[:,-1:]
+
+ if args.output_dir is not None:
+ predictions_array[j] = final_poses
+
+ RE[j] = compute_pose_error(sample['poses'], final_poses)
+
+ print('')
+ print("Results")
+ print("\t {:>10}".format('RE'))
+ print("mean \t {:10.4f}".format(RE.mean()))
+ print("std \t {:10.4f}".format(RE.std()))
+
+ if args.output_dir is not None:
+ np.save(output_dir/'predictions.npy', predictions_array)
+
+
+def compute_pose_error(gt, pred):
+ RE = 0
+ snippet_length = gt.shape[0]
+ for gt_pose, pred_pose in zip(gt, pred):
+ # Residual matrix to which we compute angle's sin and cos
+ R = gt_pose[:,:3] @ np.linalg.inv(pred_pose[:,:3])
+ s = np.linalg.norm([R[0,1]-R[1,0],
+ R[1,2]-R[2,1],
+ R[0,2]-R[2,0]])
+ c = np.trace(R) - 1
+ # Note: we actually compute double of cos and sin, but arctan2 is invariant to scale
+ RE += np.arctan2(s,c)
+
+ return RE/snippet_length
+
+
+if __name__ == '__main__':
+ main()
diff --git a/train.py b/train.py
new file mode 100644
index 0000000..d95a3fd
--- /dev/null
+++ b/train.py
@@ -0,0 +1,784 @@
+# Author: Anurag Ranjan
+# Copyright (c) 2019, Anurag Ranjan
+# All rights reserved.
+# based on github.com/ClementPinard/SfMLearner-Pytorch
+
+import argparse
+import time
+import csv
+import datetime
+import os
+
+import numpy as np
+import torch
+from torch.autograd import Variable
+import torch.backends.cudnn as cudnn
+import torch.optim
+import torch.nn as nn
+import torch.utils.data
+import custom_transforms
+import models
+from utils import tensor2array, save_checkpoint
+from inverse_warp import inverse_warp, pose2flow, flow2oob, flow_warp
+from loss_functions import compute_joint_mask_for_depth
+from loss_functions import consensus_exp_masks, consensus_depth_flow_mask, explainability_loss, gaussian_explainability_loss, smooth_loss, edge_aware_smoothness_loss
+from loss_functions import photometric_reconstruction_loss, photometric_flow_loss
+from loss_functions import compute_errors, compute_epe, compute_all_epes, flow_diff, spatial_normalize
+from logger import TermLogger, AverageMeter
+from path import Path
+from itertools import chain
+from tensorboardX import SummaryWriter
+from flowutils.flowlib import flow_to_image
+epsilon = 1e-8
+
+parser = argparse.ArgumentParser(description='Competitive Collaboration training on KITTI and CityScapes Dataset',
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+parser.add_argument('data', metavar='DIR',
+ help='path to dataset')
+parser.add_argument('--kitti-dir', dest='kitti_dir', type=str, default='kitti/kitti2015',
+ help='Path to kitti2015 scene flow dataset for optical flow validation')
+parser.add_argument('--DEBUG', action='store_true', help='DEBUG Mode')
+parser.add_argument('--name', dest='name', type=str, default='demo', required=True,
+ help='name of the experiment, checpoints are stored in checpoints/name')
+parser.add_argument('--dataset-format', default='sequential', metavar='STR',
+ help='dataset format, stacked: stacked frames (from original TensorFlow code) \
+ sequential: sequential folders (easier to convert to with a non KITTI/Cityscape dataset')
+parser.add_argument('--sequence-length', type=int, metavar='N', help='sequence length for training', default=5)
+parser.add_argument('--rotation-mode', type=str, choices=['euler', 'quat'], default='euler',
+ help='rotation mode for PoseExpnet : euler (yaw,pitch,roll) or quaternion (last 3 coefficients)')
+parser.add_argument('--padding-mode', type=str, choices=['zeros', 'border'], default='zeros',
+ help='padding mode for image warping : this is important for photometric differenciation when going outside target image.'
+ ' zeros will null gradients outside target image.'
+ ' border will only null gradients of the coordinate outside (x or y)')
+parser.add_argument('--with-depth-gt', action='store_true', help='use ground truth for depth validation. \
+ You need to store it in npy 2D arrays see data/kitti_raw_loader.py for an example')
+parser.add_argument('--with-flow-gt', action='store_true', help='use ground truth for flow validation. \
+ see data/validation_flow for an example')
+parser.add_argument('-j', '--workers', default=4, type=int, metavar='N',
+ help='number of data loading workers')
+parser.add_argument('--epochs', default=200, type=int, metavar='N',
+ help='number of total epochs to run')
+parser.add_argument('--epoch-size', default=0, type=int, metavar='N',
+ help='manual epoch size (will match dataset size if not set)')
+parser.add_argument('-b', '--batch-size', default=4, type=int,
+ metavar='N', help='mini-batch size')
+parser.add_argument('--lr', '--learning-rate', default=2e-4, type=float,
+ metavar='LR', help='initial learning rate')
+parser.add_argument('--momentum', default=0.9, type=float, metavar='M',
+ help='momentum for sgd, alpha parameter for adam')
+parser.add_argument('--beta', default=0.999, type=float, metavar='M',
+ help='beta parameters for adam')
+parser.add_argument('--weight-decay', '--wd', default=0, type=float,
+ metavar='W', help='weight decay')
+parser.add_argument('--print-freq', default=10, type=int,
+ metavar='N', help='print frequency')
+parser.add_argument('-e', '--evaluate', dest='evaluate', action='store_true',
+ help='evaluate model on validation set')
+parser.add_argument('--smoothness-type', dest='smoothness_type', type=str, default='regular', choices=['edgeaware', 'regular'],
+ help='Compute mean-std locally or globally')
+parser.add_argument('--data-normalization', dest='data_normalization', type=str, default='global', choices=['local', 'global'],
+ help='Compute mean-std locally or globally')
+parser.add_argument('--nlevels', dest='nlevels', type=int, default=6,
+ help='number of levels in multiscale. Options: 6')
+
+parser.add_argument('--dispnet', dest='dispnet', type=str, default='DispNetS', choices=['DispNetS', 'DispNetS6', 'DispResNetS6', 'DispResNet6'],
+ help='depth network architecture.')
+parser.add_argument('--posenet', dest='posenet', type=str, default='PoseNet', choices=['PoseNet6','PoseNetB6', 'PoseExpNet'],
+ help='pose and explainabity mask network architecture. ')
+parser.add_argument('--masknet', dest='masknet', type=str, default='MaskNet', choices=['MaskResNet6', 'MaskNet6'],
+ help='pose and explainabity mask network architecture. ')
+parser.add_argument('--flownet', dest='flownet', type=str, default='FlowNetS', choices=['Back2Future', 'FlowNetC6'],
+ help='flow network architecture. Options: FlowNetC6 | Back2Future')
+
+parser.add_argument('--pretrained-disp', dest='pretrained_disp', default=None, metavar='PATH',
+ help='path to pre-trained dispnet model')
+parser.add_argument('--pretrained-mask', dest='pretrained_mask', default=None, metavar='PATH',
+ help='path to pre-trained Exp Pose net model')
+parser.add_argument('--pretrained-pose', dest='pretrained_pose', default=None, metavar='PATH',
+ help='path to pre-trained Exp Pose net model')
+parser.add_argument('--pretrained-flow', dest='pretrained_flow', default=None, metavar='PATH',
+ help='path to pre-trained Flow net model')
+
+parser.add_argument('--spatial-normalize', dest='spatial_normalize', action='store_true', help='spatially normalize depth maps')
+parser.add_argument('--robust', dest='robust', action='store_true', help='train using robust losses')
+parser.add_argument('--no-non-rigid-mask', dest='no_non_rigid_mask', action='store_true', help='will not use mask on loss of non-rigid flow')
+parser.add_argument('--joint-mask-for-depth', dest='joint_mask_for_depth', action='store_true', help='use joint mask from masknet and consensus mask for depth training')
+
+parser.add_argument('--fix-masknet', dest='fix_masknet', action='store_true', help='do not train posenet')
+parser.add_argument('--fix-posenet', dest='fix_posenet', action='store_true', help='do not train posenet')
+parser.add_argument('--fix-flownet', dest='fix_flownet', action='store_true', help='do not train flownet')
+parser.add_argument('--fix-dispnet', dest='fix_dispnet', action='store_true', help='do not train dispnet')
+
+parser.add_argument('--alternating', dest='alternating', action='store_true', help='minimize only one network at a time')
+parser.add_argument('--clamp-masks', dest='clamp_masks', action='store_true', help='threshold masks for training')
+parser.add_argument('--fix-posemasknet', dest='fix_posemasknet', action='store_true', help='fix pose and masknet')
+parser.add_argument('--seed', default=0, type=int, help='seed for random functions, and network initialization')
+parser.add_argument('--log-summary', default='progress_log_summary.csv', metavar='PATH',
+ help='csv where to save per-epoch train and valid stats')
+parser.add_argument('--log-full', default='progress_log_full.csv', metavar='PATH',
+ help='csv where to save per-gradient descent train stats')
+parser.add_argument('-qch', '--qch', type=float, help='q value for charbonneir', metavar='W', default=0.5)
+parser.add_argument('-wrig', '--wrig', type=float, help='consensus imbalance weight', metavar='W', default=1.0)
+parser.add_argument('-wbce', '--wbce', type=float, help='weight for binary cross entropy loss', metavar='W', default=0.5)
+parser.add_argument('-wssim', '--wssim', type=float, help='weight for ssim loss', metavar='W', default=0.0)
+parser.add_argument('-pc', '--cam-photo-loss-weight', type=float, help='weight for camera photometric loss for rigid pixels', metavar='W', default=1)
+parser.add_argument('-pf', '--flow-photo-loss-weight', type=float, help='weight for photometric loss for non rigid optical flow', metavar='W', default=1)
+parser.add_argument('-m', '--mask-loss-weight', type=float, help='weight for explainabilty mask loss', metavar='W', default=0)
+parser.add_argument('-s', '--smooth-loss-weight', type=float, help='weight for disparity smoothness loss', metavar='W', default=0.1)
+parser.add_argument('-c', '--consensus-loss-weight', type=float, help='weight for mask consistancy', metavar='W', default=0.1)
+parser.add_argument('--THRESH', '--THRESH', type=float, help='threshold for masks', metavar='W', default=0.01)
+parser.add_argument('--lambda-oob', type=float, help='weight on the out of bound pixels', default=0)
+parser.add_argument('--log-output', action='store_true', help='will log dispnet outputs and warped imgs at validation step')
+parser.add_argument('--log-terminal', action='store_true', help='will display progressbar at terminal')
+parser.add_argument('--resume', action='store_true', help='resume from checkpoint')
+parser.add_argument('-f', '--training-output-freq', type=int, help='frequence for outputting dispnet outputs and warped imgs at training for all scales if 0 will not output',
+ metavar='N', default=0)
+
+best_error = -1
+n_iter = 0
+
+
+def main():
+ global args, best_error, n_iter
+ args = parser.parse_args()
+ if args.dataset_format == 'stacked':
+ from datasets.stacked_sequence_folders import SequenceFolder
+ elif args.dataset_format == 'sequential':
+ from datasets.sequence_folders import SequenceFolder
+ save_path = Path(args.name)
+ args.save_path = 'checkpoints'/save_path #/timestamp
+ print('=> will save everything to {}'.format(args.save_path))
+ args.save_path.makedirs_p()
+ torch.manual_seed(args.seed)
+ if args.alternating:
+ args.alternating_flags = np.array([False,False,True])
+
+ training_writer = SummaryWriter(args.save_path)
+ output_writers = []
+ if args.log_output:
+ for i in range(3):
+ output_writers.append(SummaryWriter(args.save_path/'valid'/str(i)))
+
+ # Data loading code
+ flow_loader_h, flow_loader_w = 256, 832
+
+ if args.data_normalization =='global':
+ normalize = custom_transforms.Normalize(mean=[0.5, 0.5, 0.5],
+ std=[0.5, 0.5, 0.5])
+ elif args.data_normalization =='local':
+ normalize = custom_transforms.NormalizeLocally()
+
+ if args.fix_flownet:
+ train_transform = custom_transforms.Compose([
+ custom_transforms.RandomHorizontalFlip(),
+ custom_transforms.RandomScaleCrop(),
+ custom_transforms.ArrayToTensor(),
+ normalize
+ ])
+ else:
+ train_transform = custom_transforms.Compose([
+ custom_transforms.RandomRotate(),
+ custom_transforms.RandomHorizontalFlip(),
+ custom_transforms.RandomScaleCrop(),
+ custom_transforms.ArrayToTensor(),
+ normalize
+ ])
+
+ valid_transform = custom_transforms.Compose([custom_transforms.ArrayToTensor(), normalize])
+
+ valid_flow_transform = custom_transforms.Compose([custom_transforms.Scale(h=flow_loader_h, w=flow_loader_w),
+ custom_transforms.ArrayToTensor(), normalize])
+
+ print("=> fetching scenes in '{}'".format(args.data))
+ train_set = SequenceFolder(
+ args.data,
+ transform=train_transform,
+ seed=args.seed,
+ train=True,
+ sequence_length=args.sequence_length
+ )
+
+ # if no Groundtruth is avalaible, Validation set is the same type as training set to measure photometric loss from warping
+ if args.with_depth_gt:
+ from datasets.validation_folders import ValidationSet
+ val_set = ValidationSet(
+ args.data.replace('cityscapes', 'kitti'),
+ transform=valid_transform
+ )
+ else:
+ val_set = SequenceFolder(
+ args.data,
+ transform=valid_transform,
+ seed=args.seed,
+ train=False,
+ sequence_length=args.sequence_length,
+ )
+
+ if args.with_flow_gt:
+ from datasets.validation_flow import ValidationFlow
+ val_flow_set = ValidationFlow(root=args.kitti_dir,
+ sequence_length=args.sequence_length, transform=valid_flow_transform)
+
+ if args.DEBUG:
+ train_set.__len__ = 32
+ train_set.samples = train_set.samples[:32]
+
+ print('{} samples found in {} train scenes'.format(len(train_set), len(train_set.scenes)))
+ print('{} samples found in {} valid scenes'.format(len(val_set), len(val_set.scenes)))
+ train_loader = torch.utils.data.DataLoader(
+ train_set, batch_size=args.batch_size, shuffle=True,
+ num_workers=args.workers, pin_memory=True, drop_last=True)
+ val_loader = torch.utils.data.DataLoader(
+ val_set, batch_size=args.batch_size, shuffle=False,
+ num_workers=args.workers, pin_memory=True, drop_last=True)
+
+ if args.with_flow_gt:
+ val_flow_loader = torch.utils.data.DataLoader(val_flow_set, batch_size=1, # batch size is 1 since images in kitti have different sizes
+ shuffle=False, num_workers=args.workers, pin_memory=True, drop_last=True)
+
+ if args.epoch_size == 0:
+ args.epoch_size = len(train_loader)
+
+ # create model
+ print("=> creating model")
+
+ disp_net = getattr(models, args.dispnet)().cuda()
+ output_exp = True #args.mask_loss_weight > 0
+ if not output_exp:
+ print("=> no mask loss, PoseExpnet will only output pose")
+ pose_net = getattr(models, args.posenet)(nb_ref_imgs=args.sequence_length - 1).cuda()
+ mask_net = getattr(models, args.masknet)(nb_ref_imgs=args.sequence_length - 1, output_exp=True).cuda()
+
+ if args.flownet=='SpyNet':
+ flow_net = getattr(models, args.flownet)(nlevels=args.nlevels, pre_normalization=normalize).cuda()
+ else:
+ flow_net = getattr(models, args.flownet)(nlevels=args.nlevels).cuda()
+
+ if args.pretrained_pose:
+ print("=> using pre-trained weights for explainabilty and pose net")
+ weights = torch.load(args.pretrained_pose)
+ pose_net.load_state_dict(weights['state_dict'])
+ else:
+ pose_net.init_weights()
+
+ if args.pretrained_mask:
+ print("=> using pre-trained weights for explainabilty and pose net")
+ weights = torch.load(args.pretrained_mask)
+ mask_net.load_state_dict(weights['state_dict'])
+ else:
+ mask_net.init_weights()
+
+ # import ipdb; ipdb.set_trace()
+ if args.pretrained_disp:
+ print("=> using pre-trained weights from {}".format(args.pretrained_disp))
+ weights = torch.load(args.pretrained_disp)
+ disp_net.load_state_dict(weights['state_dict'])
+ else:
+ disp_net.init_weights()
+
+ if args.pretrained_flow:
+ print("=> using pre-trained weights for FlowNet")
+ weights = torch.load(args.pretrained_flow)
+ flow_net.load_state_dict(weights['state_dict'])
+ else:
+ flow_net.init_weights()
+
+ if args.resume:
+ print("=> resuming from checkpoint")
+ dispnet_weights = torch.load(args.save_path/'dispnet_checkpoint.pth.tar')
+ posenet_weights = torch.load(args.save_path/'posenet_checkpoint.pth.tar')
+ masknet_weights = torch.load(args.save_path/'masknet_checkpoint.pth.tar')
+ flownet_weights = torch.load(args.save_path/'flownet_checkpoint.pth.tar')
+ disp_net.load_state_dict(dispnet_weights['state_dict'])
+ pose_net.load_state_dict(posenet_weights['state_dict'])
+ flow_net.load_state_dict(flownet_weights['state_dict'])
+ mask_net.load_state_dict(masknet_weights['state_dict'])
+
+
+ # import ipdb; ipdb.set_trace()
+ cudnn.benchmark = True
+ disp_net = torch.nn.DataParallel(disp_net)
+ pose_net = torch.nn.DataParallel(pose_net)
+ mask_net = torch.nn.DataParallel(mask_net)
+ flow_net = torch.nn.DataParallel(flow_net)
+
+ print('=> setting adam solver')
+
+ parameters = chain(disp_net.parameters(), pose_net.parameters(), mask_net.parameters(), flow_net.parameters())
+ optimizer = torch.optim.Adam(parameters, args.lr,
+ betas=(args.momentum, args.beta),
+ weight_decay=args.weight_decay)
+
+ if args.resume and (args.save_path/'optimizer_checkpoint.pth.tar').exists():
+ print("=> loading optimizer from checkpoint")
+ optimizer_weights = torch.load(args.save_path/'optimizer_checkpoint.pth.tar')
+ optimizer.load_state_dict(optimizer_weights['state_dict'])
+
+ with open(args.save_path/args.log_summary, 'w') as csvfile:
+ writer = csv.writer(csvfile, delimiter='\t')
+ writer.writerow(['train_loss', 'validation_loss'])
+
+ with open(args.save_path/args.log_full, 'w') as csvfile:
+ writer = csv.writer(csvfile, delimiter='\t')
+ writer.writerow(['train_loss', 'photo_cam_loss', 'photo_flow_loss', 'explainability_loss', 'smooth_loss'])
+
+ if args.log_terminal:
+ logger = TermLogger(n_epochs=args.epochs, train_size=min(len(train_loader), args.epoch_size), valid_size=len(val_loader))
+ logger.epoch_bar.start()
+ else:
+ logger=None
+
+ for epoch in range(args.epochs):
+ if args.fix_flownet:
+ for fparams in flow_net.parameters():
+ fparams.requires_grad = False
+
+ if args.fix_masknet:
+ for fparams in mask_net.parameters():
+ fparams.requires_grad = False
+
+ if args.fix_posenet:
+ for fparams in pose_net.parameters():
+ fparams.requires_grad = False
+
+ if args.fix_dispnet:
+ for fparams in disp_net.parameters():
+ fparams.requires_grad = False
+
+ if args.log_terminal:
+ logger.epoch_bar.update(epoch)
+ logger.reset_train_bar()
+
+ # train for one epoch
+ train_loss = train(train_loader, disp_net, pose_net, mask_net, flow_net, optimizer, args.epoch_size, logger, training_writer)
+
+ if args.log_terminal:
+ logger.train_writer.write(' * Avg Loss : {:.3f}'.format(train_loss))
+ logger.reset_valid_bar()
+
+ # evaluate on validation set
+ if args.with_flow_gt:
+ flow_errors, flow_error_names = validate_flow_with_gt(val_flow_loader, disp_net, pose_net, mask_net, flow_net, epoch, logger, output_writers)
+
+ if args.with_depth_gt:
+ errors, error_names = validate_depth_with_gt(val_loader, disp_net, epoch, logger, output_writers)
+
+ error_string = ', '.join('{} : {:.3f}'.format(name, error) for name, error in zip(error_names, errors))
+
+ if args.log_terminal:
+ logger.valid_writer.write(' * Avg {}'.format(error_string))
+ else:
+ print('Epoch {} completed'.format(epoch))
+
+ for error, name in zip(errors, error_names):
+ training_writer.add_scalar(name, error, epoch)
+
+ if args.with_flow_gt:
+ for error, name in zip(flow_errors, flow_error_names):
+ training_writer.add_scalar(name, error, epoch)
+
+ # Up to you to chose the most relevant error to measure your model's performance, careful some measures are to maximize (such as a1,a2,a3)
+
+ if not args.fix_posenet:
+ decisive_error = flow_errors[-2] # epe_rigid_with_gt_mask
+ elif not args.fix_dispnet:
+ decisive_error = errors[0] #depth abs_diff
+ elif not args.fix_flownet:
+ decisive_error = flow_errors[-1] #epe_non_rigid_with_gt_mask
+ elif not args.fix_masknet:
+ decisive_error = flow_errors[3] # percent outliers
+ if best_error < 0:
+ best_error = decisive_error
+
+ # remember lowest error and save checkpoint
+ is_best = decisive_error <= best_error
+ best_error = min(best_error, decisive_error)
+ save_checkpoint(
+ args.save_path, {
+ 'epoch': epoch + 1,
+ 'state_dict': disp_net.module.state_dict()
+ }, {
+ 'epoch': epoch + 1,
+ 'state_dict': pose_net.module.state_dict()
+ }, {
+ 'epoch': epoch + 1,
+ 'state_dict': mask_net.module.state_dict()
+ }, {
+ 'epoch': epoch + 1,
+ 'state_dict': flow_net.module.state_dict()
+ }, {
+ 'epoch': epoch + 1,
+ 'state_dict': optimizer.state_dict()
+ },
+ is_best)
+
+ with open(args.save_path/args.log_summary, 'a') as csvfile:
+ writer = csv.writer(csvfile, delimiter='\t')
+ writer.writerow([train_loss, decisive_error])
+ if args.log_terminal:
+ logger.epoch_bar.finish()
+
+
+def train(train_loader, disp_net, pose_net, mask_net, flow_net, optimizer, epoch_size, logger=None, train_writer=None):
+ global args, n_iter
+ batch_time = AverageMeter()
+ data_time = AverageMeter()
+ losses = AverageMeter(precision=4)
+ w1, w2, w3, w4 = args.cam_photo_loss_weight, args.mask_loss_weight, args.smooth_loss_weight, args.flow_photo_loss_weight
+ w5 = args.consensus_loss_weight
+
+ if args.robust:
+ loss_camera = photometric_reconstruction_loss_robust
+ loss_flow = photometric_flow_loss_robust
+ else:
+ loss_camera = photometric_reconstruction_loss
+ loss_flow = photometric_flow_loss
+
+ # switch to train mode
+ disp_net.train()
+ pose_net.train()
+ mask_net.train()
+ flow_net.train()
+
+ end = time.time()
+
+ for i, (tgt_img, ref_imgs, intrinsics, intrinsics_inv) in enumerate(train_loader):
+ # measure data loading time
+ data_time.update(time.time() - end)
+ tgt_img_var = Variable(tgt_img.cuda())
+ ref_imgs_var = [Variable(img.cuda()) for img in ref_imgs]
+ intrinsics_var = Variable(intrinsics.cuda())
+ intrinsics_inv_var = Variable(intrinsics_inv.cuda())
+
+ # compute output
+ disparities = disp_net(tgt_img_var)
+ if args.spatial_normalize:
+ disparities = [spatial_normalize(disp) for disp in disparities]
+
+ depth = [1/disp for disp in disparities]
+ pose = pose_net(tgt_img_var, ref_imgs_var)
+ explainability_mask = mask_net(tgt_img_var, ref_imgs_var)
+
+ if args.flownet == 'Back2Future':
+ flow_fwd, flow_bwd, _ = flow_net(tgt_img_var, ref_imgs_var[1:3])
+ else:
+ flow_fwd = flow_net(tgt_img_var, ref_imgs_var[2])
+ flow_bwd = flow_net(tgt_img_var, ref_imgs_var[1])
+
+ flow_cam = pose2flow(depth[0].squeeze(), pose[:,2], intrinsics_var, intrinsics_inv_var) # pose[:,2] belongs to forward frame
+
+ flows_cam_fwd = [pose2flow(depth_.squeeze(1), pose[:,2], intrinsics_var, intrinsics_inv_var) for depth_ in depth]
+ flows_cam_bwd = [pose2flow(depth_.squeeze(1), pose[:,1], intrinsics_var, intrinsics_inv_var) for depth_ in depth]
+
+ exp_masks_target = consensus_exp_masks(flows_cam_fwd, flows_cam_bwd, flow_fwd, flow_bwd, tgt_img_var, ref_imgs_var[2], ref_imgs_var[1], wssim=args.wssim, wrig=args.wrig, ws=args.smooth_loss_weight )
+
+ rigidity_mask_fwd = [(flows_cam_fwd_ - flow_fwd_).abs() for flows_cam_fwd_, flow_fwd_ in zip(flows_cam_fwd, flow_fwd) ]#.normalize()
+ rigidity_mask_bwd = [(flows_cam_bwd_ - flow_bwd_).abs() for flows_cam_bwd_, flow_bwd_ in zip(flows_cam_bwd, flow_bwd) ]#.normalize()
+
+ if args.joint_mask_for_depth:
+ explainability_mask_for_depth = compute_joint_mask_for_depth(explainability_mask, rigidity_mask_bwd, rigidity_mask_fwd)
+ else:
+ explainability_mask_for_depth = explainability_mask
+
+ if args.no_non_rigid_mask:
+ flow_exp_mask = [None for exp_mask in explainability_mask]
+ if args.DEBUG:
+ print('Using no masks for flow')
+ else:
+ flow_exp_mask = [1 - exp_mask[:,1:3] for exp_mask in explainability_mask]
+
+ loss_1 = loss_camera(tgt_img_var, ref_imgs_var, intrinsics_var, intrinsics_inv_var,
+ depth, explainability_mask_for_depth, pose, lambda_oob=args.lambda_oob, qch=args.qch, wssim=args.wssim)
+ if w2 > 0:
+ loss_2 = explainability_loss(explainability_mask) #+ 0.2*gaussian_explainability_loss(explainability_mask)
+ else:
+ loss_2 = 0
+
+ if args.smoothness_type == "regular":
+ loss_3 = smooth_loss(depth) + smooth_loss(flow_fwd) + smooth_loss(flow_bwd) + smooth_loss(explainability_mask)
+ elif args.smoothness_type == "edgeaware":
+ loss_3 = edge_aware_smoothness_loss(tgt_img_var, depth) + edge_aware_smoothness_loss(tgt_img_var, flow_fwd)
+ loss_3 += edge_aware_smoothness_loss(tgt_img_var, flow_bwd) + edge_aware_smoothness_loss(tgt_img_var, explainability_mask)
+
+ loss_4 = loss_flow(tgt_img_var, ref_imgs_var[1:3], [flow_bwd, flow_fwd], flow_exp_mask,
+ lambda_oob=args.lambda_oob, qch=args.qch, wssim=args.wssim)
+
+ loss_5 = consensus_depth_flow_mask(explainability_mask, rigidity_mask_bwd, rigidity_mask_fwd,
+ exp_masks_target, exp_masks_target, THRESH=args.THRESH, wbce=args.wbce)
+
+ loss = w1*loss_1 + w2*loss_2 + w3*loss_3 + w4*loss_4 + w5*loss_5
+
+ if i > 0 and n_iter % args.print_freq == 0:
+ train_writer.add_scalar('cam_photometric_error', loss_1.item(), n_iter)
+ if w2 > 0:
+ train_writer.add_scalar('explanability_loss', loss_2.item(), n_iter)
+ train_writer.add_scalar('disparity_smoothness_loss', loss_3.item(), n_iter)
+ train_writer.add_scalar('flow_photometric_error', loss_4.item(), n_iter)
+ train_writer.add_scalar('consensus_error', loss_5.item(), n_iter)
+ train_writer.add_scalar('total_loss', loss.item(), n_iter)
+
+
+ if args.training_output_freq > 0 and n_iter % args.training_output_freq == 0:
+
+ train_writer.add_image('train Input', tensor2array(tgt_img[0]), n_iter)
+ train_writer.add_image('train Cam Flow Output',
+ flow_to_image(tensor2array(flow_cam.data[0].cpu())) , n_iter )
+
+ for k,scaled_depth in enumerate(depth):
+ train_writer.add_image('train Dispnet Output Normalized {}'.format(k),
+ tensor2array(disparities[k].data[0].cpu(), max_value=None, colormap='bone'),
+ n_iter)
+ train_writer.add_image('train Depth Output {}'.format(k),
+ tensor2array(1/disparities[k].data[0].cpu(), max_value=10),
+ n_iter)
+ train_writer.add_image('train Non Rigid Flow Output {}'.format(k),
+ flow_to_image(tensor2array(flow_fwd[k].data[0].cpu())) , n_iter )
+ train_writer.add_image('train Target Rigidity {}'.format(k),
+ tensor2array((rigidity_mask_fwd[k]>args.THRESH).type_as(rigidity_mask_fwd[k]).data[0].cpu(), max_value=1, colormap='bone') , n_iter )
+
+ b, _, h, w = scaled_depth.size()
+ downscale = tgt_img_var.size(2)/h
+
+ tgt_img_scaled = nn.functional.adaptive_avg_pool2d(tgt_img_var, (h, w))
+ ref_imgs_scaled = [nn.functional.adaptive_avg_pool2d(ref_img, (h, w)) for ref_img in ref_imgs_var]
+
+ intrinsics_scaled = torch.cat((intrinsics_var[:, 0:2]/downscale, intrinsics_var[:, 2:]), dim=1)
+ intrinsics_scaled_inv = torch.cat((intrinsics_inv_var[:, :, 0:2]*downscale, intrinsics_inv_var[:, :, 2:]), dim=2)
+
+ train_writer.add_image('train Non Rigid Warped Image {}'.format(k),
+ tensor2array(flow_warp(ref_imgs_scaled[2],flow_fwd[k]).data[0].cpu()) , n_iter )
+
+ # log warped images along with explainability mask
+ for j,ref in enumerate(ref_imgs_scaled):
+ ref_warped = inverse_warp(ref, scaled_depth[:,0], pose[:,j],
+ intrinsics_scaled, intrinsics_scaled_inv,
+ rotation_mode=args.rotation_mode,
+ padding_mode=args.padding_mode)[0]
+ train_writer.add_image('train Warped Outputs {} {}'.format(k,j), tensor2array(ref_warped.data.cpu()), n_iter)
+ train_writer.add_image('train Diff Outputs {} {}'.format(k,j), tensor2array(0.5*(tgt_img_scaled[0] - ref_warped).abs().data.cpu()), n_iter)
+ if explainability_mask[k] is not None:
+ train_writer.add_image('train Exp mask Outputs {} {}'.format(k,j), tensor2array(explainability_mask[k][0,j].data.cpu(), max_value=1, colormap='bone'), n_iter)
+
+ # record loss and EPE
+ losses.update(loss.item(), args.batch_size)
+
+ # compute gradient and do Adam step
+ optimizer.zero_grad()
+ loss.backward()
+ optimizer.step()
+
+ # measure elapsed time
+ batch_time.update(time.time() - end)
+ end = time.time()
+
+ with open(args.save_path/args.log_full, 'a') as csvfile:
+ writer = csv.writer(csvfile, delimiter='\t')
+ writer.writerow([loss.item(), loss_1.item(), loss_2.item() if w2 > 0 else 0, loss_3.item(), loss_4.item()])
+ if args.log_terminal:
+ logger.train_bar.update(i+1)
+ if i % args.print_freq == 0:
+ logger.train_writer.write('Train: Time {} Data {} Loss {}'.format(batch_time, data_time, losses))
+ if i >= epoch_size - 1:
+ break
+
+ n_iter += 1
+
+ return losses.avg[0]
+
+def validate_depth_with_gt(val_loader, disp_net, epoch, logger, output_writers=[]):
+ global args
+ batch_time = AverageMeter()
+ error_names = ['abs_diff', 'abs_rel', 'sq_rel', 'a1', 'a2', 'a3']
+ errors = AverageMeter(i=len(error_names))
+ log_outputs = len(output_writers) > 0
+
+ # switch to evaluate mode
+ disp_net.eval()
+
+ end = time.time()
+
+ for i, (tgt_img, depth) in enumerate(val_loader):
+ tgt_img_var = Variable(tgt_img.cuda(), volatile=True)
+ output_disp = disp_net(tgt_img_var)
+ if args.spatial_normalize:
+ output_disp = spatial_normalize(output_disp)
+
+ output_depth = 1/output_disp
+
+ depth = depth.cuda()
+
+ # compute output
+
+ if log_outputs and i % 100 == 0 and i/100 < len(output_writers):
+ index = int(i//100)
+ if epoch == 0:
+ output_writers[index].add_image('val Input', tensor2array(tgt_img[0]), 0)
+ depth_to_show = depth[0].cpu()
+ output_writers[index].add_image('val target Depth', tensor2array(depth_to_show, max_value=10), epoch)
+ depth_to_show[depth_to_show == 0] = 1000
+ disp_to_show = (1/depth_to_show).clamp(0,10)
+ output_writers[index].add_image('val target Disparity Normalized', tensor2array(disp_to_show, max_value=None, colormap='bone'), epoch)
+
+ output_writers[index].add_image('val Dispnet Output Normalized', tensor2array(output_disp.data[0].cpu(), max_value=None, colormap='bone'), epoch)
+ output_writers[index].add_image('val Depth Output', tensor2array(output_depth.data[0].cpu(), max_value=10), epoch)
+
+ errors.update(compute_errors(depth, output_depth.data.squeeze(1)))
+
+ # measure elapsed time
+ batch_time.update(time.time() - end)
+ end = time.time()
+ if args.log_terminal:
+ logger.valid_bar.update(i)
+ if i % args.print_freq == 0:
+ logger.valid_writer.write('valid: Time {} Abs Error {:.4f} ({:.4f})'.format(batch_time, errors.val[0], errors.avg[0]))
+ if args.log_terminal:
+ logger.valid_bar.update(len(val_loader))
+ return errors.avg, error_names
+
+def validate_flow_with_gt(val_loader, disp_net, pose_net, mask_net, flow_net, epoch, logger, output_writers=[]):
+ global args
+ batch_time = AverageMeter()
+ error_names = ['epe_total', 'epe_rigid', 'epe_non_rigid', 'outliers', 'epe_total_with_gt_mask', 'epe_rigid_with_gt_mask', 'epe_non_rigid_with_gt_mask', 'outliers_gt_mask']
+ errors = AverageMeter(i=len(error_names))
+ log_outputs = len(output_writers) > 0
+
+ # switch to evaluate mode
+ disp_net.eval()
+ pose_net.eval()
+ mask_net.eval()
+ flow_net.eval()
+
+ end = time.time()
+
+ poses = np.zeros(((len(val_loader)-1) * 1 * (args.sequence_length-1),6))
+
+ for i, (tgt_img, ref_imgs, intrinsics, intrinsics_inv, flow_gt, obj_map_gt) in enumerate(val_loader):
+ tgt_img_var = Variable(tgt_img.cuda(), volatile=True)
+ ref_imgs_var = [Variable(img.cuda(), volatile=True) for img in ref_imgs]
+ intrinsics_var = Variable(intrinsics.cuda(), volatile=True)
+ intrinsics_inv_var = Variable(intrinsics_inv.cuda(), volatile=True)
+
+ flow_gt_var = Variable(flow_gt.cuda(), volatile=True)
+ obj_map_gt_var = Variable(obj_map_gt.cuda(), volatile=True)
+
+ # compute output
+ disp = disp_net(tgt_img_var)
+ if args.spatial_normalize:
+ disp = spatial_normalize(disp)
+
+ depth = 1/disp
+ pose = pose_net(tgt_img_var, ref_imgs_var)
+ explainability_mask = mask_net(tgt_img_var, ref_imgs_var)
+
+ if args.flownet == 'Back2Future':
+ flow_fwd, flow_bwd, _ = flow_net(tgt_img_var, ref_imgs_var[1:3])
+ else:
+ flow_fwd = flow_net(tgt_img_var, ref_imgs_var[2])
+ flow_bwd = flow_net(tgt_img_var, ref_imgs_var[1])
+
+ if args.DEBUG:
+ flow_fwd_x = flow_fwd[:,0].view(-1).abs().data
+ print("Flow Fwd Median: ", flow_fwd_x.median())
+ flow_gt_var_x = flow_gt_var[:,0].view(-1).abs().data
+ print("Flow GT Median: ", flow_gt_var_x.index_select(0, flow_gt_var_x.nonzero().view(-1)).median())
+ flow_cam = pose2flow(depth.squeeze(1), pose[:,2], intrinsics_var, intrinsics_inv_var)
+ oob_rigid = flow2oob(flow_cam)
+ oob_non_rigid = flow2oob(flow_fwd)
+
+ rigidity_mask = 1 - (1-explainability_mask[:,1])*(1-explainability_mask[:,2]).unsqueeze(1) > 0.5
+
+ rigidity_mask_census_soft = (flow_cam - flow_fwd).abs()#.normalize()
+ rigidity_mask_census_u = rigidity_mask_census_soft[:,0] < args.THRESH
+ rigidity_mask_census_v = rigidity_mask_census_soft[:,1] < args.THRESH
+ rigidity_mask_census = (rigidity_mask_census_u).type_as(flow_fwd) * (rigidity_mask_census_v).type_as(flow_fwd)
+
+ rigidity_mask_combined = 1 - (1-rigidity_mask.type_as(explainability_mask))*(1-rigidity_mask_census.type_as(explainability_mask))
+
+ flow_fwd_non_rigid = (rigidity_mask_combined<=args.THRESH).type_as(flow_fwd).expand_as(flow_fwd) * flow_fwd
+ flow_fwd_rigid = (rigidity_mask_combined>args.THRESH).type_as(flow_fwd).expand_as(flow_fwd) * flow_cam
+ total_flow = flow_fwd_rigid + flow_fwd_non_rigid
+
+ obj_map_gt_var_expanded = obj_map_gt_var.unsqueeze(1).type_as(flow_fwd)
+
+ if log_outputs and i % 10 == 0 and i/10 < len(output_writers):
+ index = int(i//10)
+ if epoch == 0:
+ output_writers[index].add_image('val flow Input', tensor2array(tgt_img[0]), 0)
+ flow_to_show = flow_gt[0][:2,:,:].cpu()
+ output_writers[index].add_image('val target Flow', flow_to_image(tensor2array(flow_to_show)), epoch)
+
+ output_writers[index].add_image('val Total Flow Output', flow_to_image(tensor2array(total_flow.data[0].cpu())), epoch)
+ output_writers[index].add_image('val Rigid Flow Output', flow_to_image(tensor2array(flow_fwd_rigid.data[0].cpu())), epoch)
+ output_writers[index].add_image('val Non-rigid Flow Output', flow_to_image(tensor2array(flow_fwd_non_rigid.data[0].cpu())), epoch)
+ output_writers[index].add_image('val Out of Bound (Rigid)', tensor2array(oob_rigid.type(torch.FloatTensor).data[0].cpu(), max_value=1, colormap='bone'), epoch)
+ output_writers[index].add_scalar('val Mean oob (Rigid)', oob_rigid.type(torch.FloatTensor).sum(), epoch)
+ output_writers[index].add_image('val Out of Bound (Non-Rigid)', tensor2array(oob_non_rigid.type(torch.FloatTensor).data[0].cpu(), max_value=1, colormap='bone'), epoch)
+ output_writers[index].add_scalar('val Mean oob (Non-Rigid)', oob_non_rigid.type(torch.FloatTensor).sum(), epoch)
+ output_writers[index].add_image('val Cam Flow Errors', tensor2array(flow_diff(flow_gt_var, flow_cam).data[0].cpu()), epoch)
+ output_writers[index].add_image('val Rigidity Mask', tensor2array(rigidity_mask.data[0].cpu(), max_value=1, colormap='bone'), epoch)
+ output_writers[index].add_image('val Rigidity Mask Census', tensor2array(rigidity_mask_census.data[0].cpu(), max_value=1, colormap='bone'), epoch)
+
+ for j,ref in enumerate(ref_imgs_var):
+ ref_warped = inverse_warp(ref[:1], depth[:1,0], pose[:1,j],
+ intrinsics_var[:1], intrinsics_inv_var[:1],
+ rotation_mode=args.rotation_mode,
+ padding_mode=args.padding_mode)[0]
+
+ output_writers[index].add_image('val Warped Outputs {}'.format(j), tensor2array(ref_warped.data.cpu()), epoch)
+ output_writers[index].add_image('val Diff Outputs {}'.format(j), tensor2array(0.5*(tgt_img_var[0] - ref_warped).abs().data.cpu()), epoch)
+ if explainability_mask is not None:
+ output_writers[index].add_image('val Exp mask Outputs {}'.format(j), tensor2array(explainability_mask[0,j].data.cpu(), max_value=1, colormap='bone'), epoch)
+
+ if args.DEBUG:
+ # Check if pose2flow is consistant with inverse warp
+ ref_warped_from_depth = inverse_warp(ref_imgs_var[2][:1], depth[:1,0], pose[:1,2],
+ intrinsics_var[:1], intrinsics_inv_var[:1], rotation_mode=args.rotation_mode,
+ padding_mode=args.padding_mode)[0]
+ ref_warped_from_cam_flow = flow_warp(ref_imgs_var[2][:1], flow_cam)[0]
+ print("DEBUG_INFO: Inverse_warp vs pose2flow",torch.mean(torch.abs(ref_warped_from_depth-ref_warped_from_cam_flow)).item())
+ output_writers[index].add_image('val Warped Outputs from Cam Flow', tensor2array(ref_warped_from_cam_flow.data.cpu()), epoch)
+ output_writers[index].add_image('val Warped Outputs from inverse warp', tensor2array(ref_warped_from_depth.data.cpu()), epoch)
+
+ if log_outputs and i < len(val_loader)-1:
+ step = args.sequence_length-1
+ poses[i * step:(i+1) * step] = pose.data.cpu().view(-1,6).numpy()
+
+
+ if np.isnan(flow_gt.sum().item()) or np.isnan(total_flow.data.sum().item()):
+ print('NaN encountered')
+ _epe_errors = compute_all_epes(flow_gt_var, flow_cam, flow_fwd, rigidity_mask_combined) + compute_all_epes(flow_gt_var, flow_cam, flow_fwd, (1-obj_map_gt_var_expanded) )
+ errors.update(_epe_errors)
+
+ if args.DEBUG:
+ print("DEBUG_INFO: EPE errors: ", _epe_errors )
+ # measure elapsed time
+ batch_time.update(time.time() - end)
+ end = time.time()
+
+ if log_outputs:
+ output_writers[0].add_histogram('val poses_tx', poses[:,0], epoch)
+ output_writers[0].add_histogram('val poses_ty', poses[:,1], epoch)
+ output_writers[0].add_histogram('val poses_tz', poses[:,2], epoch)
+ if args.rotation_mode == 'euler':
+ rot_coeffs = ['rx', 'ry', 'rz']
+ elif args.rotation_mode == 'quat':
+ rot_coeffs = ['qx', 'qy', 'qz']
+ output_writers[0].add_histogram('val poses_{}'.format(rot_coeffs[0]), poses[:,3], epoch)
+ output_writers[0].add_histogram('val poses_{}'.format(rot_coeffs[1]), poses[:,4], epoch)
+ output_writers[0].add_histogram('val poses_{}'.format(rot_coeffs[2]), poses[:,5], epoch)
+
+ if args.DEBUG:
+ print("DEBUG_INFO =================>")
+ print("DEBUG_INFO: Average EPE : ", errors.avg )
+ print("DEBUG_INFO =================>")
+ print("DEBUG_INFO =================>")
+ print("DEBUG_INFO =================>")
+
+ return errors.avg, error_names
+
+
+if __name__ == '__main__':
+ import sys
+ with open("experiment_recorder.md", "a") as f:
+ f.write('\n python3 ' + ' '.join(sys.argv))
+ main()
diff --git a/utils.py b/utils.py
new file mode 100644
index 0000000..7bdfd3e
--- /dev/null
+++ b/utils.py
@@ -0,0 +1,63 @@
+from __future__ import division
+import shutil
+import numpy as np
+import torch
+from matplotlib import cm
+from matplotlib.colors import ListedColormap, LinearSegmentedColormap
+
+def high_res_colormap(low_res_cmap, resolution=1000, max_value=1):
+ # Construct the list colormap, with interpolated values for higer resolution
+ # For a linear segmented colormap, you can just specify the number of point in
+ # cm.get_cmap(name, lutsize) with the parameter lutsize
+ x = np.linspace(0,1,low_res_cmap.N)
+ low_res = low_res_cmap(x)
+ new_x = np.linspace(0,max_value,resolution)
+ high_res = np.stack([np.interp(new_x, x, low_res[:,i]) for i in range(low_res.shape[1])], axis=1)
+ return ListedColormap(high_res)
+
+
+def opencv_rainbow(resolution=1000):
+ # Construct the opencv equivalent of Rainbow
+ opencv_rainbow_data = (
+ (0.000, (1.00, 0.00, 0.00)),
+ (0.400, (1.00, 1.00, 0.00)),
+ (0.600, (0.00, 1.00, 0.00)),
+ (0.800, (0.00, 0.00, 1.00)),
+ (1.000, (0.60, 0.00, 1.00))
+ )
+
+ return LinearSegmentedColormap.from_list('opencv_rainbow', opencv_rainbow_data, resolution)
+
+
+COLORMAPS = {'rainbow': opencv_rainbow(),
+ 'magma': high_res_colormap(cm.get_cmap('magma')),
+ 'bone': cm.get_cmap('bone', 10000)}
+
+
+def tensor2array(tensor, max_value=None, colormap='rainbow'):
+ tensor = tensor.detach().cpu()
+ if max_value is None:
+ max_value = tensor.max().item()
+ if tensor.ndimension() == 2 or tensor.size(0) == 1:
+ norm_array = tensor.squeeze().numpy()/max_value
+ array = COLORMAPS[colormap](norm_array).astype(np.float32)
+ array = array[:,:,:3]
+ array = array.transpose(2, 0, 1)
+
+ elif tensor.ndimension() == 3:
+ if (tensor.size(0) == 3):
+ array = 0.5 + tensor.numpy()*0.5
+ elif (tensor.size(0) == 2):
+ array = tensor.numpy()
+
+ return array
+
+def save_checkpoint(save_path, dispnet_state, posenet_state, masknet_state, flownet_state, optimizer_state, is_best, filename='checkpoint.pth.tar'):
+ file_prefixes = ['dispnet', 'posenet', 'masknet', 'flownet', 'optimizer']
+ states = [dispnet_state, posenet_state, masknet_state, flownet_state, optimizer_state]
+ for (prefix, state) in zip(file_prefixes, states):
+ torch.save(state, save_path/'{}_{}'.format(prefix,filename))
+
+ if is_best:
+ for prefix in file_prefixes:
+ shutil.copyfile(save_path/'{}_{}'.format(prefix,filename), save_path/'{}_model_best.pth.tar'.format(prefix))