| 
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -26,253 +26,263 @@ router.get('/cv', function(req, res, next) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    var pubs = bibtexParse.toJSON(pubdata);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    var dict = items[0]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    dict.publications = pubs;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    db.collection('talks').aggregate(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      [
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        {'$sort' : {'date' : -1}},
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        {'$group': {_id: { $substr: ['$date',0,4] }, talks: { $push: "$$ROOT" }}},
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        {'$sort' : {'_id' : -1}}]).toArray(function (err, talks) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          dict.talks = talks;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          res.render('cv.template', {resume: dict, css: css});
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    db.collection('works').find({}, function(err, works) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    /* GET works_list. */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    router.get('/works_list', function(req, res, next) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      function removeDuplicates(originalArray, objKey) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      var css = fs.readFileSync( path.join(__dirname, '../public/stylesheets/resume_style.css'), 'utf8');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      var db = req.db;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if (originalArray.length == 1) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          return originalArray;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      db.collection('resume').find().toArray(function (err, items) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var dict = items[0];
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var trimmedArray = [];
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var values = [];
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var value;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        db.collection('works').find({}, function(err, works) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        for(var i = 0; i < originalArray.length; i++) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          value = originalArray[i][objKey];
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          function removeDuplicates(originalArray, objKey) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if (originalArray.length == 1) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              return originalArray;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          if(values.map(Number).indexOf(+value) === -1) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            trimmedArray.push(originalArray[i]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            values.push(value);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            var trimmedArray = [];
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            var values = [];
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            var value;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        trimmedArray.sort(function(a,b){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          // Turn your strings into dates, and then subtract them
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          // to get a value that is either negative, positive, or zero.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          return new Date(b.start_date) - new Date(a.start_date);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        return trimmedArray
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            for(var i = 0; i < originalArray.length; i++) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              value = originalArray[i][objKey];
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      function processWork(err, work) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        /*
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if(work === null) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          db.collection('works').aggregate(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            [
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              {'$sort' : {'date' : -1}},
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              {'$group': {_id: { $year: "$date" }, works: { $push: "$$ROOT" }}},
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              {'$sort' : {'_id' : -1}}]).toArray(function (err, worksCV) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                db.collection('talks').find().sort( { date: -1 } ).toArray(function (err, talks) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                  dict.works = worksCV;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                  dict.talks = talks;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                  res.render('cv.template', {resume: dict, css: css});
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                  db.collection('works').update({}, {$unset: {'events':1}}, {multi: true});
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              return; // All done!
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              if(values.map(Number).indexOf(+value) === -1) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                trimmedArray.push(originalArray[i]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                values.push(value);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if(work === null) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              db.collection('works').aggregate(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                [
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                  {'$sort' : {'date' : -1}},
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                  {'$group': {_id: { $year: "$date" }, works: { $push: "$$ROOT" }}},
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                  {'$sort' : {'_id' : -1}}]).toArray(function (err, worksCV) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    db.collection('talks').aggregate(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                      [
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        {'$sort' : {'date' : -1}},
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        {'$group': {_id: { $substr: ['$date',0,4] }, talks: { $push: "$$ROOT" }}},
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        {'$sort' : {'_id' : -1}}]).toArray(function (err, talks) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                      dict.works = worksCV;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                      dict.talks = talks;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                      console.log('talks: ' + talks);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                      console.log('works: ' + worksCV);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                      res.render('cv.template', {resume: dict, css: css});
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                      db.collection('works').update({}, {$unset: {'events':1}}, {multi: true});
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                  });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                  return; // All done!
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            var titleToSearch = work.title;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            //the abstract will need to be handled better eventually
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            //the rule: abstract = total intersection in performance; redux = the non-redux version includes the redux version but not vice-versa
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if( titleToSearch === 'minor third' ){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              titleToSearch = '**********';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if( titleToSearch === 'seams' ){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              titleToSearch = '**********';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if( titleToSearch === 'minor third abstract' ){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              titleToSearch = 'minor third'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if( titleToSearch === 'to walk and ponder (abstract)' ){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              titleToSearch = 'to walk and ponder'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if( titleToSearch === 'to converge (abstract)' ){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              titleToSearch = 'to converge'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if( titleToSearch === 'pedal, triangle machine, and (perhaps) coda (abstract)' ){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              titleToSearch = 'pedal, triangle machine, and (perhaps) coda'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            trimmedArray.sort(function(a,b){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              // Turn your strings into dates, and then subtract them
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              // to get a value that is either negative, positive, or zero.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              return new Date(b.start_date) - new Date(a.start_date);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            return trimmedArray
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          function processWork(err, work) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            /*
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if( titleToSearch === 'Approximating Omega (redux)' ){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              titleToSearch = 'Approximating Omega';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if( titleToSearch == 'economy study (in one dimension)' ){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              titleToSearch = 'economy study';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if( titleToSearch == '[___south america___] miscellany' ){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              titleToSearch = 'miscellany';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if( (titleToSearch.indexOf('one') !== -1) && (titleToSearch.indexOf('two') !== -1)){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              titleToSearch = 'two';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // bug: why is mercado san juan or first not updating?
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            db.collection('events').find( { $text: { $search: "\"" + titleToSearch + "\"" } } ).toArray(function (err, events1) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              db.collection('events').find( { 'program' : { "$elemMatch" : { 'work' : { $regex : titleToSearch.replace('(','\\(').replace(')','\\)'), $options : 'i' } } } } ).toArray(function (err, events2) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                if( titleToSearch !== '**********'){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                  db.collection('works').update({ 'title' : work.title }, { $set: { "events": removeDuplicates(events1.concat(events2), 'start_date') } });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                works.next(processWork);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if(work === null) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            db.collection('works').aggregate(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            [
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            {'$sort' : {'date' : -1}},
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            {'$group': {_id: { $year: "$date" }, works: { $push: "$$ROOT" }}},
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            {'$sort' : {'_id' : -1}}]).toArray(function (err, worksCV) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            db.collection('talks').find().sort( { date: -1 } ).toArray(function (err, talks) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            dict.works = worksCV;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            dict.talks = talks;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            res.render('cv.template', {resume: dict, css: css});
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            db.collection('works').update({}, {$unset: {'events':1}}, {multi: true});
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        return; // All done!
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      if(work === null) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        db.collection('works').aggregate(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          [
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            {'$sort' : {'date' : -1}},
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            {'$group': {_id: { $year: "$date" }, works: { $push: "$$ROOT" }}},
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            {'$sort' : {'_id' : -1}}]).toArray(function (err, worksCV) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              dict.works = worksCV;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              res.render('workslist.template', {resume: dict, css: css});
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              db.collection('works').update({}, {$unset: {'events':1}}, {multi: true});
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          };
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          works.next(processWork);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            return; // All done!
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          var titleToSearch = work.title;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          //the abstract will need to be handled better eventually
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          //the rule: abstract = total intersection in performance; redux = the non-redux version includes the redux version but not vice-versa
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          if( titleToSearch === 'minor third' ){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            titleToSearch = '**********';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          if( titleToSearch === 'seams' ){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            titleToSearch = '**********';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          if( titleToSearch === 'minor third abstract' ){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            titleToSearch = 'minor third'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          if( titleToSearch === 'to walk and ponder (abstract)' ){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            titleToSearch = 'to walk and ponder'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          if( titleToSearch === 'to converge (abstract)' ){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            titleToSearch = 'to converge'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          if( titleToSearch === 'pedal, triangle machine, and (perhaps) coda (abstract)' ){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            titleToSearch = 'pedal, triangle machine, and (perhaps) coda'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          /*
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          if( titleToSearch === 'Approximating Omega (redux)' ){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          titleToSearch = 'Approximating Omega';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if( titleToSearch == 'economy study (in one dimension)' ){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          titleToSearch = 'economy study';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if( titleToSearch == '[___south america___] miscellany' ){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          titleToSearch = 'miscellany';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if( (titleToSearch.indexOf('one') !== -1) && (titleToSearch.indexOf('two') !== -1)){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          titleToSearch = 'two';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // bug: why is mercado san juan or first not updating?
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        db.collection('events').find( { $text: { $search: "\"" + titleToSearch + "\"" } } ).toArray(function (err, events1) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          db.collection('events').find( { 'program' : { "$elemMatch" : { 'work' : { $regex : titleToSearch.replace('(','\\(').replace(')','\\)'), $options : 'i' } } } } ).toArray(function (err, events2) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if( titleToSearch !== '**********'){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              db.collection('works').update({ 'title' : work.title }, { $set: { "events": removeDuplicates(events1.concat(events2), 'start_date') } });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            works.next(processWork);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      };
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      works.next(processWork);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				});
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //handle code releases
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    router.get('/code_releases/*.zip', function(req, res) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      var db = req.db;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      var splitreq = req.url.split('/');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      var filename = splitreq.pop();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      var bucketName = splitreq.pop();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      db.collection(bucketName + ".files").findOne({ filename: filename  }, function (err, file) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//handle code releases
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				router.get('/code_releases/*.zip', function(req, res) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  var db = req.db;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  var splitreq = req.url.split('/');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  var filename = splitreq.pop();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  var bucketName = splitreq.pop();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if (err) return res.status(400).send(err);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if (!file) return res.status(404).send('');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        console.log(file.redirect);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        res.redirect(file.redirect);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  db.collection(bucketName + ".files").findOne({ filename: filename  }, function (err, file) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    /* redirect catch */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      router.get('/redirect=*', function(req, res, next) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      var link = req.url.split('=').pop();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      request(link).pipe(res);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (err) return res.status(400).send(err);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (!file) return res.status(404).send('');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    console.log(file.redirect);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    res.redirect(file.redirect);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				});
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				/* redirect catch */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				router.get('/redirect=*', function(req, res, next) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  var link = req.url.split('=').pop();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  request(link).pipe(res);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				});
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    router.get('/*/*', function(req, res) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      var db = req.db;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      var splitreq = req.url.split('/');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      var filename = splitreq.pop();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      var bucketName = splitreq.pop();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      db.collection(bucketName + ".files").findOne({ filename: filename  }, function (err, file) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if (err) return res.status(400).send(err);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if (!file) return res.status(404).send('');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				router.get('/*/*', function(req, res) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  var db = req.db;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  var splitreq = req.url.split('/');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  var filename = splitreq.pop();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  var bucketName = splitreq.pop();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        var bucket = new mongo.GridFSBucket(db, {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          chunkSizeBytes: 1024,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          bucketName: bucketName
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  db.collection(bucketName + ".files").findOne({ filename: filename  }, function (err, file) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (err) return res.status(400).send(err);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (!file) return res.status(404).send('');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        bucket.openDownloadStreamByName(filename).
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        pipe(res).
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        on('error', function(error) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          //assert.ifError(error);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          res.end();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }).
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        on('finish', function() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          console.log('done!');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    var bucket = new mongo.GridFSBucket(db, {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      chunkSizeBytes: 1024,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      bucketName: bucketName
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    /*
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    router.get('/album_art/*', function(req, res) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      res.render('file');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    bucket.openDownloadStreamByName(filename).
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    pipe(res).
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    on('error', function(error) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      //assert.ifError(error);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      res.end();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }).
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    on('finish', function() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      console.log('done!');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				});
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    router.get('/pubs/*', function(req, res) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      res.render('file');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				/*
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				router.get('/album_art/*', function(req, res) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				res.render('file');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				});
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //legacy file handler
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				router.get('/pubs/*', function(req, res) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				res.render('file');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				});
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				*/
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				//legacy file handler
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				/*
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    router.get('/*.*', function(req, res) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      var file = req.url.split('/').pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      request("http://legacy.unboundedpress.org/"+file).pipe(res);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				router.get('/*.*', function(req, res) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				var file = req.url.split('/').pop()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				request("http://legacy.unboundedpress.org/"+file).pipe(res);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				});
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				*/
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    /* catch all*/
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      router.get('/*', function(req, res, next) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      res.render('index', { title: 'Michael Winter' });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				/* catch all*/
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				router.get('/*', function(req, res, next) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  res.render('index', { title: 'Michael Winter' });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				});
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    Handlebars.registerHelper("prettifyDayDate", function(resumeDate) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      if (!resumeDate) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        return 'present';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      var newDate = Moment(resumeDate).format('MM.DD.YYYY');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      //console.log('newDate: ' + newDate);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      return newDate;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Handlebars.registerHelper("prettifyDayDate", function(resumeDate) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if (!resumeDate) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    return 'present';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  var newDate = Moment(resumeDate).format('MM.DD.YYYY');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  //console.log('newDate: ' + newDate);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  return newDate;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				});
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    Handlebars.registerHelper("prettifyMonthDate", function(resumeDate) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      if (!resumeDate) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        return 'present';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      var newDate = Moment(resumeDate).format('MMM YYYY');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      //console.log('newDate: ' + newDate);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      return newDate;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Handlebars.registerHelper("prettifyMonthDate", function(resumeDate) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if (!resumeDate) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    return 'present';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  var newDate = Moment(resumeDate).format('MMM YYYY');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  //console.log('newDate: ' + newDate);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  return newDate;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				});
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    Handlebars.registerHelper("prettifyYearDate", function(resumeDate) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      if (!resumeDate) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        return 'present';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      var newDate = Moment(resumeDate).format('YYYY');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      //console.log('newDate: ' + newDate);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      return newDate;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Handlebars.registerHelper("prettifyYearDate", function(resumeDate) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if (!resumeDate) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    return 'present';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  var newDate = Moment(resumeDate).format('YYYY');
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  //console.log('newDate: ' + newDate);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  return newDate;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				});
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    Handlebars.registerHelper('toLowerCase', function(str) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      return str.toLowerCase();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Handlebars.registerHelper('toLowerCase', function(str) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  return str.toLowerCase();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				});
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    Handlebars.registerHelper('toArray', function(val) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      if (typeof val === 'string') {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        return [val]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      } else {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        return val
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Handlebars.registerHelper('toArray', function(val) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if (typeof val === 'string') {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    return [val]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  } else {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    return val
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				});
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    Handlebars.registerHelper('unless_blank', function(item, block) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      return (item && item.replace(/\s/g,"").length) ? block.fn(this) : block.inverse(this);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Handlebars.registerHelper('unless_blank', function(item, block) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  return (item && item.replace(/\s/g,"").length) ? block.fn(this) : block.inverse(this);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				});
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    Handlebars.registerHelper('equal', function(lvalue, rvalue, options) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      if (arguments.length < 3)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      throw new Error("Handlebars Helper equal needs 2 parameters");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      if( lvalue!=rvalue ) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        return options.inverse(this);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      } else {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        return options.fn(this);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Handlebars.registerHelper('equal', function(lvalue, rvalue, options) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if (arguments.length < 3)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  throw new Error("Handlebars Helper equal needs 2 parameters");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if( lvalue!=rvalue ) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    return options.inverse(this);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  } else {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    return options.fn(this);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				});
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    module.exports = router;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				module.exports = router;
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
					 | 
				
			
			 | 
			 | 
			
				
 
 |