Keeping your teeth white is easy. Just read through these 7 tips and I am sure you will be able to keep your teeth pearly white for a long time after teeth whitening.
Brush your teeth at least twice daily and always before going to bed. Even better, brush them after every meal using a whitening toothpaste.
Flossing and using an antiseptic mouthwash on a daily basis, can also help.
Your dentist or dental Hygienist can remove many teeth stains caused by eating, drinking and smoking.
Tea, coffee, cola and sport drinks, red wine and tobacco are some of the most common teeth staining agents. Red fruit such as berries, pomegranes, beetroots, spinach, soya sauce and processed food containing artificial coloring also cause teeth staining.
Crunchy food such as celery, apples, pears, carrots trigger lots of saliva and scrub the surface of your teeth as you chew.
All these crunchy foods are in effect acting like a toothbrush.
Eat strawberries and citrus fruit such as oranges or grapefruit.
Calcium contributes to keeping teeth white, while lactic acid helps preventing tooth decay.
Rinse your teeth with water and chew sugar free chewing gum.
An especially useful trick when brushing your teeth is not possible.
Brushing your teeth, rinsing after meals and regular dental check-ups are vital in helping you maintain white and healthy teeth. A white teeth diet can certainly help but should not become an obsession.
In any case you should not worry too much.
If for whatever reason your teeth keep getting discolored, you can always repeat the teeth whitening treatment after a year.


text:
Celebdhaba
Sharmeen Obaid-Chinoy proudly announces her collaboration with HBO SPORTS for the sports documentary Student athlete
CelebDhaba Staff
Sharmeen Obaid-Chinoy proudly announces her collaboration with HBO SPORTS for the sports documentary STUDENT ATHLETE, illuminating the complex rules of amateur athletics in America and showing how they affect uncompensated athletes and their families. All set to debut on TUESDAY, OCT. 2 (10:00-11:30 p.m. ET/PT) on HBO, the film is co-directed by Trish Dalton ("Bordering on Treason") with the production team spearheaded by NBA superstar and three-time world champion LeBron James, one of today's most socially responsible and community-minded athletes.
Directors Sharmeen Obaid-Chinoy and Trish Dalton say, "We embedded in the world of men's college basketball and football, capturing athletes' hopes and dreams being shattered by the harsh reality of what it means to be a 'student athlete' in a billion-dollar industry."
"This is an incredibly important story about the institutional denial of basic human rights for these student athletes," says Maverick Carter, CEO of SpringHill Entertainment. "When Steve Stoute brought us this idea, it was a perfect fit for the kind of stories we want to tell at SpringHill. We're excited to work with one of the best human rights storytellers in Sharmeen Obaid-Chinoy to help people see and feel how this issue impacts the lives of those living it."
Unpaid college athletes generate billions of dollars for their institutions every year. STUDENT ATHLETE unveils the exploitative world of high-revenue college sports through the stories of four young men at different stages of their athletic careers, as well as a coach-turned-advocate and a whistle-blowing shoe rep who exposes the money trail. The documentary spotlights: former NCAA and NFL coach John Shoop; New Jersey high school basketball phenom Nick Richards, now at the University of Kentucky; Mike Shaw, who played at the University of Illinois and Bradley University; Shamar Graves, a former wide receiver at Rutgers University; and Silas Nacita, a walk-on who played at Baylor University.
From high-school recruiting to post-graduation, the usefulness of athletes is tied to their ability to produce revenue. Once they can no longer do that, their participation in sport ends – often abruptly – with virtually nothing to show for their contributions. An audited financial disclosure from the NCAA in March 2018 revealed the association had close to $1.1 billion in revenue during 2017, a total that was unimaginable in 1964, when the NCAA coined the term "student athlete."
"The NCAA blinded by revenue goals is turning student athletes into full-time employees," said Steve Stoute, Founder & CEO of United Masters. "This documentary is incredibly important as it debunks the myth that student athletes are being fairly compensated by receiving scholarships and a valuable education. In fact, the demands put on these students by this oppressive system makes it impossible for them to get the education they deserve. The time is now to end this false narrative and reveal the truth of this exploitation."
Sharmeen Obaid-Chinoy
Previous articleKangana Ranaut to play a Kabbadi player in her next!
Next articleKomal Rizvi and Yasir Hussain releasing new music Video 'Oh hello ji'
The industry's source of grapevine. With his former work experience at Dawn News, Hip in Pakistan ,Dawn Images,Edition.pk Irfan is an editor Of Celebdhaba, runs his own official Blog Irfanistan.net FAVORITE QUOTE: "Go forward in life with a twinkle in your eye and a smile on your face, but with great purpose in heart" – Gordon B. Hinckley.
Sharmeen Obaid-Chinoy releases the third and fourth episode of "FUNDAMENTAL. GENDER JUSTICE. NO EXCEPTIONS"
Sharmeen Obaid-Chinoy releases the second episode of"FUNDAMENTAL. GENDER JUSTICE. NO EXCEPTIONS" titled "Brazil – Defenders of Justice".
Sharmeen Obaid-Chinoy launches the HOME1947 Series with the release of Director Kamal Khan's Beila!
SHARMEEN OBAID-CHINOY'S"SITARA: LET GIRLS DREAM"WINS BIG AT THE LOS ANGELES ANIMATION FESTIVAL 2019
Sharmeen Obaid-Chinoy launches the ninth animated short film from AAGAHI to address women's rights on "Sexual Harassment"
NETFLIX TO RELEASE SHARMEEN OBAID-CHINOY'S "SITARA: LET GIRLS DREAM"
Amna Arshad launched her new collection, Emira
Gohar Mumtaz & Kubra Khan are doing feature film 'Abhee'
Sania Maskatiya has proudly launched ZEENAT – The Winter Festive 2020
First Lady Samina Alvi Inaugurates Lady Dufferin Hospital Pink Tree
Begum Governor Sindh Reema Imran Chief Guest at the LADIESFUND Breast...
Farhad Humayun Syed has served a legal notice to Coca Cola
Parwaz Hai Junoon to Release Across China on November 13, 2020
Shehar Bano Rizvi launches her first book, 'Virsa A Culinary...
Pakistani Artists Take Part in Infinix's Rap Video Relay, Set GUINNESS...
Can Complete Freedom Of Speech Post To Be A Threat For...
Mujhe Beta Chahiye A Drama Serial Based On Gold Diggers
'Ghalat Fehmi' Asim Azhar And Zenab Fatimah Song For Superstar Is...
Contact us: info@celebdhaba.com
© 2020 CelebDhaba - All rights reserved. by CelebDhaba .

redpajama_set_name: RedPajamaCommonCrawl


text:
ROOTS ROCK RADIO
info@rrradio.com (Richard)
Ce podcast m'appartient
ROOTS ROCK RADIO https://RRRadio.com http://facebook.com/groups/RootsRockRadio
ROOTS ROCK RADIO presents the best indie ROOTS ROCK/POP, ALT COUNTRY/AMERICANA, BLUES/ROCKABILLY, GARAGE/PUNK, and Real ROCK & ROLL from around the globe. ©2020 RICHARD TAYLOR http://facebook.com/groups/RootsRockRadio http://Twitter.com/RootsRockRadio http://RRRadio.com
Conseillé par :
2:16:06:46
Marquer tous les épisodes comme lus
Marquer tous les épisodes comme non-lus
+ 2:13:56
Lire après
Lire à la fin
Non-lu
Roots Rock Radio 194 - Christmas 2020 Special Edition RRRadio.com ( 18/12/20 )
+ 48:22
Roots Rock Radio 193 - RRRadio.com ( 28/10/20 )
RRRadio.com 192 ( 31/03/20 )
2020 Richard Taylor
Les podcasts externes de ce site sont récupérés à partir de liens publics (Feed XML/RSS) qui nous ont été fournis par nos utilisateurs ainsi que des partenaires. Ce podcast m'appartient.
Podcasts sur les mêmes thèmes
Rock N Roll Manifesto
Music You Need to Hear!
The Rock N Roll Manifesto is a weekly live internet radio show hosted by Greg Lonesome. Tune in to hear punk rock, hardcore punk, rockabilly, psychobilly, soul, r&b, doo wop, old country, garage and more- It's a mix of all different styles of GREAT music. If you are a true music lover, you need to hear this show!
Buddies Lounge
Your Space-Age Pop dance party!!
The TRUE Number One Lounge music radio show in the WORLD! Every weekend step into the wonderful world of the BUDDIES LOUNGE as we serve you 2 hours of tasty Hi-Fi Space Age Pop, Jet Set, Swinin' Vocals, Easy Listening and Exotica sounds...in LIVING STEREO!
harmochopin
Podcast by harmochopin
3 Questions and a Song
Build the Scene
Learn about unsigned bands throughout the world through a very simple method, 3 questions & a song. Tune in as Bill Domiano of the Pennsylvania Rock Show introduces you to unsigned bands from anywhere on the 3rd rock from the sun!
the Pennsylvania Rock Show
BuildtheScene.com
The Pennsylvania Rock Show is a podcast that features an unsigned rock band interview usually from Pennsylvania. The interview is part of our online radio show of the same name that is full of songs from the best unsigned bands Pennsylvania has to offer. The show is then rebroadcast on some of the biggest internet radio stations out there, as well as, a FM Station in St. Louis.The show is hosted by Bill Domiano of www.buildthescene.com and runs commercial free. It includes a segment called "Get Outta Town", that plays 3 songs from bands outside of PA, which has proved the shows popularity, as bands from all over the world are submitting material and coming to town to be interviewed. Our Concert Calendar segment provides upcoming concert information for our local bands. The Pennsylvania Rock Show creates an avenue for world wide exposure for which otherwise bands would not have any outlets other than a local bar or party. The Weekly RockBlog segment is devoted to new up and coming music from across the state and beyond. In this segment, we will review new music of all genres, talk about current musical trends, offer insight into local scenes across the country and provide some tips and tricks on promotion.
Catching A Wave
60's pop, rock & roll, surf music
A great place to discover and relive vintage and modern rockabilly, blues, surf, roots, r&b, oldies, etc. Hear favorites and obscure tracks as well as exclusive interviews


text:
The work we fund is revolutionising cancer treatment, but we just couldn't do it without you. Find out how our supporters help us to continue to pioneer new ways to save or improve the lives of patients with cancer, both here at The Royal Marsden and across the world.
Patient environments
Star supporters
Curistas raise over £1 million
Our star supporters Le Cure de France have raised over £1 million since 2014, cycling to raise funds for breast cancer research at The Royal Marsden.
Emmy and Jake - true love (and lobsters)
Emmy and Jake raised more than £100,000 for The Royal Marsden with a sponsored tandem bike ride from London to Copenhagen.
Supergrans hit the skies
Crazy but true: Great-great-granny Amy Cook (90) and granny Elizabeth Bishop (80) took to the skies to raise money with a skydive and an abseil.
Phoenix's knockout donations
A martial arts school in Croydon have raised over £225,000 for The Royal Marsden since 2006, with an annual sponsored kickboxing tournament.
Birthday wish comes true
Instead of presents, Elena Deilamy asked for donations to The Royal Marsden Cancer Charity for her tenth birthday, and raised over £1,000.


text:
Te Wairua Auaha
Ngā Hoahoa
Theatres, cinemas and halls
Kōrero: Theatres, cinemas and halls
Theatre rises, cinema declines
Town halls, old theatres and multiplexes
The Isaac Theatre Royal
When Christchurch's Isaac Theatre Royal was threatened with demolition in the 1970s, supporters of the building rallied and formed a trust to save it. They were successful and soon began work to both modernise the structure and return it to something close to its former glory. By 2005 the process was largely completed. This view shows the renovated auditorium from the stage. The building was extensively damaged in the 2011 Christchurch earthquake and much of it had to be rebuilt – which was done in a replica style.
Isaac Theatre Royal
Photograph by Duncan Shaw-Brown
Michael Fowler Centre
Spark Arena
Ben Schrader, 'Theatres, cinemas and halls - Town halls, old theatres and multiplexes', Te Ara - the Encyclopedia of New Zealand, http://www.TeAra.govt.nz/mi/photograph/42393/the-isaac-theatre-royal (accessed 19 January 2020)
He kōrero nā Ben Schrader, i tāngia i te 22 Oct 2014


text:
By Gracii Guns, April 18, 2017 in ANYTHING GOES
Graeme 2,282
Location:Colima, México
1 hour ago, Padme said:
Appeal Court in Scotland says prorogation is unlawful
https://www.theguardian.com/politics/2019/sep/11/scottish-judges-rule-boris-johnsons-prorogation-unlawful
*laughs in Scottish*
SoulMonster 6,305
So our Constitutional expert was wrong.
AtariLegend 738
Location:A United Kingdom still in the European Union
1 hour ago, SoulMonster said:
I hope you don't mean our local mygnr historian of the Daily Telegraph Daisy?
In fairness it'll be appealed and probably nothing will come of it.
8 minutes ago, AtariLegend said:
Yeah, he really let me down there.
bucketfoot 3,019
Typical of the Jocks, that.
soon 6,315
Just a pick-me-up if you're feeling down @DieselDaisy
And also a Canadian former Premiere of BC Christie Clarke, to get familiar with incase y'all become an Overseas Protectorate of Canada
DieselDaisy 16,075
Location:United Kingdom
I strolled to Westminster yesterday just to see Priti.
Powderfinger 594
Edited September 13, 2019 by Powderfinger
15 hours ago, DieselDaisy said:
You got to see Priti in the flesh? Im jealous!
19 hours ago, soon said:
No, I didn't see her. It was as in the song Nadine.
4 hours ago, DieselDaisy said:
Ha, well next time. You know that would make for a cool vlog - your episodic adventures looking for Priti. Nadine as the theme music.
Verhofstadt made a speech at the Lib Dems conference discussing the need to have a ''EU Empire''!
It isn't as if these Eurocrats hide the fact they desire an empire! Truly revolting politics.
No need to hide it, sounds like a great idea.
3 minutes ago, SoulMonster said:
Utterly abhorrent politics and confirmatory of everything Tony Benn said about the EU.
Dazey 7,144
Spiteful Gnome
Location:Altrincham, Manchester, United Kingdom
I don't see the problem. Given the ever present threat of Russia and the fact that the US seems to have gone AWOL I think that a stronger Europe (including a Euro army) is not only a good idea but absolutely necessary.
Edited September 15, 2019 by Dazey
1 minute ago, DieselDaisy said:
The opinion of one EU politician isn't representative of the opinions of all EU politicians and hence cannot be indicative of what the EU is, but I know from before that this is beyond you.
That being said, we need more collaboration, more harmonisation, less borders, more free movement, more pan-european systems, less vats, etc, to effectively deal with international issues like climate change, cross-border crime and immigration, so on the face of it going in the direction of a more comprehensive and involving European Union, or empire if you will, makes a lot of sense.
2 hours ago, Dazey said:
Nothing I would want to see us involved in: we have a completely different brand of politics.
But let's just focus on his rhetoric: ''empire'' though? Just the usage of the term - isn't it Brexiteers who are obsessed with empire? Isn't it the more EU-attuned Guardianistas who lecture us on the ''sins of empire'' - our sins? Yet here we have a Eurocrat espousing a EU Empire with no ambiguity in England. And then he waded through ''empires'' with some incredibly flawed logic and historic oversight? India, whilst not realising the depth of ''national'' sentiment (trust me, I'm a cricket fan!); China, whilst ignoring persecuted minorities within that Chinese ''Empire''.
2 hours ago, SoulMonster said:
No. He talked of ''empires''. He actually dispensed with the wishy-washy stuff. He doesn't even lie - Verhofstadt.
Edited September 15, 2019 by DieselDaisy
In the world order of tomorrow, the world order of tomorrow is not a world order based on nation states or countries, it's a world order that is based on Empires, China is not a nation, it's a civilisation. India, you know it better than I do, is not a nation, there are two thousands nations in India, there are twenty different languages that are used there, there are four big religions at the same time. It is the biggest democracy worldwide.
NB., India actually has 29 languages with more than one million native speakers, and 79.80% Hindu and 14.23% Muslims, meaning just under 6% represent other religions (Sikhism 1.72%, Christianity 2.30%). It would have been better if he got stuff like this correct beforehand, but regardless,
The US is also an Empire, more than a nation, maybe tomorrow they will speak more Spanish than English, I don't know what will happen. And then finally, the Russian Federation, the world of tomorrow is a world of Empires, in which we Europeans and you British can only defend your interests, your way of life by doing it together in a European framework and a European Union.
On 9/11/2019 at 3:51 PM, SoulMonster said:
What have I been wrong about exactly? The mechanism of prorogation is as routine as the State Opening of Parliament which succeeds it, and generally happens yearly. You certainly don't trust anything I say but listen to your British-remain chums (Dazey, Graeme) and they will confirm this mechanism is very normal and constitutional. If however Boris has been misleading the Queen in order to prorogue, how was I to know what advice Boris has delivered up to Her Majesty? I desire Brexit like him (seemingly) but I wouldn't trust Boris as far as I could swing him and never have.
- There is also the question that, if it is unlawful for prorogation to occur because ''it had the purpose of stymying parliament'' (Scottish Courts), then surely also Major's prorogation in 1997, or Attlee's was also unlawful? Surely?
Fuck empire. Also, there is only one Queen Majesty who ever deserved anything. Long live the Queen.
My fear at the minute is that the Lib Dems will form a coalition with the Tories if Boris losses his seat and there's a hung parliament.
It's a party of pro austerity cameroons with a few ex-labour right mps.
Edited September 15, 2019 by AtariLegend
It is ironic that Verhofstadt is actively supporting a (foreign) political party who campaigned for a Europe referendum,
He is also supporting a party who coalesced with the Tories on austerity, but that is perhaps not so ironic given the EU's views on austerity.
Pertaining to Nicholas Soames' dismissal, I have never seen so many remaining lefties obsessing over Winston Churchill's bloodline haha? Every time a Lib Dem, SNP or Labour MP is interviewed - Diane Abbot for crying out loud - they immediately start mentioning Soames's blue-blooded pedigree, incorporating as it does Britain's great war time leader and proponent of empire haha.
It is also ironic that Soames is now a revered figure of the remaining-left given this is the same Soames who become famous for making ''woofing noises'' and ''breast gestures'' in the Commons whenever female MPs speak, and was guilty of inheritance tax avoidance. Chum of Robert Mugabe also.
1 hour ago, soon said:
Then you haven't be listening to Guy recently as he thinks empire is back in vogue,
Don't know who the housewife is.
That's David Mellor!
Go To Topic Listing ANYTHING GOES


text:
Young Empires Drop New Video "The Gates"
Toronto's Young Empires has come out with a new video "The Gates" in addition to the album's closing song, "Uncover Your Eyes" which debuted over at Billboard. Anticipation rises as the release of their debut full-length, The Gates nears. The album will be out on September 4th via Votiv.
The band will be touring North America in support of the album including a dates at Los Angeles' The Echo on September 11 and The Empty Bottle in Chicago on September 27. The full tour is listed below with more to be announced soon.
Over the past several months, Young Empires has released album tracks, So Cruel, title track The Gates – which is currently charting Top 10 at Modern Rock radio in Canada – and Sunshine, which has surpassed one million streams on Spotify in less than two months.
The Gates is the follow-up to Young Empires' electro-house infused debut EP, Wake All My Youth, which was met with worldwide critical acclaim when it was released in 2012. Its success kept the band touring non-stop and left little time to write and record. "We all knew that we wanted to make a record that was more mature," says lead vocalist Matthew Vlahovich. "We were 25 years old when we wrote our first one, now we're in our thirties. We've all grown up on a lot of levels."
The genre-blending songs were birthed out of an intensely communal songwriting process. "We weren't sticking to our own instruments; it was very fluid," continues Vlahovich. "Sometimes Taylor (drums) or Jake (bass guitar) would jump on the piano to come up with a lick or I would find a beat."
Writing began in late winter of 2013 at Vlahovich's home studio in Toronto and turned into an epic two-year journey that continued in Los Angeles before landing back on the band's home turf. The group wasn't sure about where they wanted to take their sound until they wrote the title track "The Gates," an upbeat anthem that soars and swirls, exploring the palette that would educate the rest of the album. Once in the studio, Young Empires were aided by a trio of top-tier producers – Stephen "Koz" Kozmeniuk (Kendrick Lamar, Nicki Minaj, Madonna), Jimmy Messer (AWOLNATION) and Kevin Seaton (Snoop Lion, Active Child) – the threesome meshed together their disparate influences into a stunningly singular sound.
THE GATES TRACK LIST:
1. Mercy
2. The Gates
3. So Cruel
5. Stranglehold
6. House Lights
7. Never Die Young
8. The Unknown
9. Sunshine
10. Uncover Your Eyes
YOUNG EMPIRES U.S. TOUR DATES
Sept 8 – San Diego, CA – The Casbah
Sept 9 – Fullerton, CA – The Continental Room
Sept 11 – Los Angeles, CA – The Echo
Sept 12- San Francisco, CA – Neck Of The Woods
Sept 15 – Portland, OR – Analog Theater
Sept 16 – Seattle, WA – Tractor Tavern
Sept 26 – Cincinnati, OH – Midpoint Music Festival
Sept 27 – Chicago, IL – Empty Bottle
Oct 24 – Buffalo, NY – Waiting Room
"Dream of the Machines" By Simon Doom
Young Empires Reveal Video For "Mercy"
'Kamikaze' by The So So Glos
Young Empires unveil "Uncover Your Eyes"


text:
GAINESVILLE - Ron Zook won his first game as Florida head coach by 48 points. Will Muschamp rolled by 38 in his debut as boss Gator. Yeah, it was fun while it lasted.
Jim McElwain's job is to install an offense with staying power when the schedule moves past that soft and chewy first bite. He did it at Colorado State, making stars of second-level recruits, and Saturday night in a 61-13 romp he showed what might be possible if the Gators ever put their broader talents to work.
Can't argue with 34 points by halftime of Coach Mac's first game here, no matter if it's a weak team like New Mexico State getting rolled.
Can't sweat the small stuff, either, like the unresolved competition between quarterbacks Treon Harris and Will Grier, when a rowdy announced crowd of 90,227 is roaring for anybody who's throwing the ball, anybody who's catching it and anybody who can figure out how to avoid punting it.
There wasn't enough of that under Muschamp, a defensive specialist who always operated as if he'd get a score or two on an interception return and a blocked punt. The rest was gravy in his mind, or so it seemed.
The rest, the offensive fireworks portion of the program, however, is the main course, and always will be, at the Swamp. Steve Spurrier made it so. Urban Meyer and Tim Tebow maintained the tradition. Just because they're all gone doesn't mean that the end zone is closed for business. The Gators got there eight times in this game, pushed along by tailwind of 606 yards in total offense.
If this continues next week against East Carolina, the team Florida beat in last January's Birmingham Bowl, sellouts at the Swamp might just become a habit again. As it is, Coach Mac's debut drew stronger attendance than any home game in Muschamp's last season here.
"I liked our ability to get the ball to a lot of receivers," said McElwain, holding a stat sheet soaked through with 14 different Gators registering at least one catch. "I kind of like sprinkling it around the infield a little bit."
Doesn't mind swatting a few home runs, either. Harris threw a touchdown pass of 37 yards to Brandon Powell, Grier took off running for a gain of 43, and Vernon Hargreaves, the NFL-ready cornerback, returned an interception for 43 more.
Now maybe it was more fun than that with Spurrier, whose Gators once put 82 points on Central Michigan, but nobody's looking for a return to national championship form right now. Just climbing back to the top of the SEC East would be more than acceptable in 2015, and Saturday's blowout was as far a leap in that direction as any new coach could expect.
Florida was penalized once for 10 yards in this game, believe it or not. As fast as the Gators played and as hard as they hit, that's like running through a car wash without getting wet.
As for the quarterbacks, who combined to complete 29 of 36 passes for 379 yards and four touchdowns, McElwain can live with the mystery a while longer if they can.
Asked if he might just play both of them all season, McElwain said "I could see that. We'll probably do something similar next week."
As long as East Carolina does something similar to what New Mexico State did, allowing the Gators plenty of time to pass and blowing coverage assignments on Florida's tight ends, the silly numbers will keep coming.
Florida's got some talent on offense. Always did. After watching Harris complete his first seven passes Saturday and later seeing Grier's opening possession as a college quarterback produce a touchdown in just 97 seconds, you have to wonder what McElwain might have done with Jeff Driskel.
Driskel is the high-school wonder who never found his rhythm at Florida but passed for four scores Saturday in his debut as a Louisiana Tech transfer. But enough about what never worked with Muschamp. McElwain, good enough as Alabama's offensive coordinator to satisfy Nick Saban, has a new vision for Florida.
It includes tight ends getting loose, quarterbacks who don't have to limp off the field and, best of all, the band playing all night long, and never in a minor key.
SEC teams will try to make Coach Mac and his offense work a lot harder than they had to in this game, of course, but they're not all monsters, either. Heck, Vanderbilt lost to Western Kentucky the other night. It's still football, and Florida is supposed to be a football school.
I'm thinking Jeremy Foley may have found the coach to make these and so many other truths self-evident again.
Not just for a night, and not right away. Think Saban, who was merely 7-6 in his first season at Alabama but got busy flipping all the right switches.
"I wanted our team to come out and prove something to themselves," McElwain said. "It's OK to come out and play your tail off and make some plays."
It's OK to KO the other guys, too. The Gators seemed to have that in mind when they took the field in blue pants and blue jerseys, a color scheme normally reserved for rivalry games.
This wasn't one of those, but it was a landmark. For the program. For the fans. For a coach who just made some mighty fast friends on his first night in the Swamp.


Q. I have a box full of resource books that I no longer need, are donations accepted?
Mostly computer programming and game design reference books.
Yes, donations are accepted here, and our librarians will assess the books and our possible need for them. However, please be aware that any books we don't need, we donate. You can speak to Bob Nash, our collections development guy, for more info about this. His email is rnash@unomaha.edu, phone number 402-554-2884.


For years, Jim and Eve have shared breakfast every morning at the Early Bird Café. Their constant friendship, however, is thrown into chaos when Jim begins writing his second novel. Their friendship strained, the novel takes all of Jim's focus, and a grievous string of events coupled with Jim's manipulative new lover put their friendship to the ultimate test. As Jim struggles with the darkness in his own life, Eve attempts to negotiate her feelings for Jim and their strictly platonic relationship. In the midst of the turmoil, both find themselves wondering if their feelings for each other actually run deeper than the friendship they thought they once had.


text:
Highlight package:
https://youtu.be/v2-_vJ8rez4
Marathons and Reflection was the theme of today.
An adventure bike has many roles to play, it's been abundantly clear that the Africa Twin is quite at home in the rough stuff, far off the beaten track. The transition needed today, was the ability to make the distances between areas of interest shrink. We needed to join up the Richtersveld that we'd just come from, with Tankwa Karoo and Cedarberg. Between these two areas was nearly 450km of all manner of gravel roads; from the wide smooth fast "magic carpets", to the small shale badly maintained corrugation invested jeep tracks. Today the Africa Twin lived up to its legend as a continent crosser. It's a fine perch from which watch the world go by and count off the kilometers.
Additionally, the each team's challenge was to navigate and manage the entire group for 50km stretches. It one thing doing this with friends, it's entirely another when there's an eagle eyes instructor on your tail and a really big prize that is affected by mistakes.
Early in the day, one notable detour was to the grave of a Mr. Scheepers. What makes his final resting place worth stopping at, is that he looks out over a magnificent view surrounded by an utterly ancient forest of Quiver Trees. This was a topic covered the night before which meant that all of us, had a far deeper appreciation for these reasonably rare plants. Quiver trees being the African representative of the oldest living trees in the world. Mr. Scheepers holds company with trees that would have been well established even before the dark ages began!
Besides the navigation, the teams are watched closely for the entire Quest for their ability to ride together safely and effectively. When done well, it's an efficient flowing dance of sorts that can be very rewarding. There were still a few spills along the way from getting it a little wrong; some were walking a little more gingerly this morning, pride being the main casualty.
This is how the marathon was run, and so we made our way across the vast, big sky, open spaces of Bushmanland and the Knersvlakte. Very together but also alone in our helmets; there's a big difference between loneliness and solitude.
By the late afternoon, the contestants were treated to the gateway to the Tankwa Karoo – Gannaga Pass. Long kilometers of rolling plains suddenly drops away for a breathtaking escarpment view that looks out over the Tankwa Karoo to the blue Cedarberg in the distance.
The last push was literally chasing the sun over small 4x4 trails on the Tankwa Karoo, not an easy task with sun low and in the visor.
We just made the Tankwa Tented Camp as the sun was about to kiss the tops of the blued Cedarberg hills in the distance.
Tomorrow again, another change of pace.


text:
using System.Collections.Generic;
using System.Linq;
using System;
#if !SILVERLIGHT
using System.Threading;
using System.Threading.Tasks;
#endif

namespace Hazware.Extensions
{
  public static class ActionExtensions
  {
    /// <summary>
    /// Converts the action into <see cref="DisposableAction"/>
    /// </summary>
    /// <param name="action">The action.</param>
    /// <returns></returns>
    public static IDisposable AsDisposable(this Action action)
    {
      return new DisposableAction(action);
    }

#if !SILVERLIGHT
    public static Task AsTask(this Action action)
    {
      return new Task(action);
    }
    public static Task AsTask(this Action action, CancellationToken cancellationToken)
    {
      return new Task(action, cancellationToken);
    }
    public static Task AsTask(this Action action, TaskCreationOptions creationOptions)
    {
      return new Task(action, creationOptions);
    }
    public static Task AsTask(this Action action, CancellationToken cancellationToken, TaskCreationOptions creationOptions)
    {
      return new Task(action, cancellationToken, creationOptions);
    }
    public static Task Start(this Action action)
    {
      var task = new Task(action);
      task.Start();
      return task;
    }
    public static Task Start(this Action action, CancellationToken cancellationToken)
    {
      var task = new Task(action, cancellationToken);
      task.Start();
      return task;
    }
    public static Task Start(this Action action, TaskCreationOptions creationOptions)
    {
      var task = new Task(action, creationOptions);
      task.Start();
      return task;
    }
    public static Task Start(this Action action, CancellationToken cancellationToken, TaskCreationOptions creationOptions)
    {
      var task = new Task(action, cancellationToken, creationOptions);
      task.Start();
      return task;
    }
#endif
  }
}

redpajama_set_name: RedPajamaGithub


Today I am asking you, from my heart, to spend $1.98. You'll be helping a charity, supporting one of the world's good guys, and you'll receive two gifts that could make a massive difference to you. Read on.
Michael Bunting is a leadership and mindfulness guru. He's also a beautiful person in every sense, with a big heart and a desire to help people live happier, more fulfilling lives and careers. The good news for all of us is that Michael is publishing two books- and for TODAY only, these are available for $0.99 cents a copy.
Read on for more details of this amazing offer- and why I will match with a donation to charity the value of ever order you make.
've been a thief, have claimed credit for things I have not done, lie, harbour resentments, and am easy prey to addictions (smoking the worst). I tell you this because I want you to be brutally honest with yourself about who you really are. Are you brave enough to do it?
If you want to make a Greek misty eyed, just say: 'Philotomo.' It's a powerfully evocative yet subtle word, symbolising courage, generosity, duty, honour, empathy, humility. It derives from filos, friend, and timi, honour. It's about giving to others without wanting anything back for yourself, except perhaps love and appreciation.
You know what your real character is by what you do when no-one is watching.
There was a disaster on the mountain K2 a few years back, where a large number of climbers were killed. A survivor outlined his perception of what caused the tragedy. It was a simple truth that lives every day in our business lives, and beyond. It's not for sharing. You absolutely HAVE to do it alone. Here it is.
Several groups of climbers, of various nationalities, had ended up at the same point at the same time on the climb to the summit of K2, one of the highest peaks in the world. Huddled together that night, they agreed to continue the last stage to the top as one group. They split up and shared the responsibilities amongst the teams. That sealed their fate. The next day, a series of simple mountaineering sacrosanct rules were broken, and many climbers plunged to their deaths.


Many personal injury suits in Massachusetts are filed within the Commonwealth's court system. Some lawsuits end up in federal court if a violation of a federal law or regulation occurs, or if one or more of the parties involved in litigation reside or conduct business in another state. The injured party would likely argue that his or her state is the most appropriate place for the litigation to unfold. Federal District Court cases from Massachusetts are heard in the First Circuit Court of Appeals, which also includes the district courts of Maine, New Hampshire, Puerto Rico, and Rhode Island. Any published decisions from the First Circuit are binding and instructive on similar matters arising from any and all districts.
A recent case arising from the District of Puerto Rico, Rosa-Rivera v. Dorado Health, Inc. (No. 13-1328) reviewed a jury award to an injured baby and his parents, after he received negligent care in the hospital by the doctors and staff. In this case, the parents, acting on their own behalf and on behalf of their son, alleged that the hospital and the obstetricians who delivered him were negligent and caused him to suffer trauma, shoulder dystocia, and ultimately paralysis of the arm. The parents took the matter to trial, and the jury found both the defendant doctors to be negligent, but only one was responsible for causing the injuries. The jury awarded the family $807,500. Dissatisfied with the verdict, the family sought a new trial but was denied by the district court. The family alleged several procedural errors during the trial to the district and circuit courts, but they were denied a new trial in both courts. The family argued that the trial judge erred in not allowing their attorney to ask a nurse at the defendant hospital leading questions. They also claimed that the judge should have used one of the proposed jury instructions offered by their attorney and that the jury gave an inconsistent verdict.
In a jury trial, the court hands the jury instructions on what is to be considered when rendering a verdict. All parties often provide a copy of instructions that cover the law they feel applies to the trial. The family provided instructions that would have advised the jury of the hospital's duty to carefully select and monitor the physicians they have chosen to hire. The trial court judge excluded this instruction, determining that the matter was covered by other instructions that advised about the duty that hospitals and physicians are under to offer patients the attention their condition needs, as recognized by the modern medical community. The circuit court partially agreed with the plaintiffs that the instructions offered were not the same as the instructions given, but it ultimately ruled that there was not plain error by the trial court when it excluded the suggested instruction given by the family.
The appellate court also felt that the jury verdict was not inconsistent. In all personal injury cases, a fact-finder must determine whether the defendant owed a duty to the injured party, whether the defendant failed in this duty (or was negligent), and whether this failure caused the injury. The jury felt the defendant physicians were negligent, but negligence by only one of the doctors caused the injury. The circuit court felt that this satisfied the reasoning set up by case precedence to determine liability, and it affirmed the trial verdict and the lower court's ruling.
Maximizing the damages you deserve is often a difficult task. The Massachusetts personal injury attorneys at Karsner & Meehan have the experience you need to determine the best course to take to fully negotiate and litigate your case. We understand every penny helps when faced with cumbersome injuries. To discuss your case, contact our office for a free, confidential consultation at 508.822.6600.


Todd Nunes Death Ward 13 In Planning Stages - DecayMag.
It's 1973 and the Stephens Sanitarium for the Criminally Insane prepares to shut down permanently. Days before closing, four beautiful nursing students arrive to care for the last handful of "harmless" mental patients in a suspiciously understaffed ward.
Confronted by their violent charges, the nurses soon realize that they are trapped inside the asylum with a deadly crew of vicious lunatics. Each patient has their own perverse identity, their own personal demons, and their own violent agenda.
Pushed to the brink of insanity, the young nurses find themselves in a gruesome fight for survival inside Ward 13.
Death Ward 13 is currently in pre-production. The film directed and written by Todd Nunes and Tara Knight, and produced by Bone Crusher Films, Stephen Readmond, and Christopher Stanley, and is inspired by S.F. Brownrigg's (1973) cult classic Don't Look In The Basement.
Brownrigg's Don't Look In The Basement was inspired by Edgar Allan Poe's short story "The System of Doctor Tarr and Professor Fether", which was released in 1845.In 1973, S.F. Brownrigg released Don't Look In The Basement, the film adaptation based on Poe's story, the script written by Tim Pope. In 2015, Tony Brownrigg released Don't Look In The Basement 2, with co-writer Megan Emerick.
Instead of a sequel or continuation of Don't Look In The Basement, Nunes' Death Ward will be a reimagination of the story. Nunes promises to revive the story complete with added practical effects, and more blood and gore for modern-day audiences.
I can definitely attest to this. There have been countless remakes as of today, which I am not too excited about. On the same token, Don't Look In The Basement was released in the 70's. That's over 30 years ago. While I can say that the film can use some updated features, such as advanced restoration, I don't feel a remake is a solution, especially given that the original is so near and dear to audiences and fans.
On the flip side, Nunes' Death Ward 13, although inspired by Brownrigg's (1973) film, and considered a remake, is more of a re-imagination. If it's headed in the path I think it's headed, I wouldn't call it a remake at all, rather than a different perspective. This is an idea I could get up under.
Death Ward 13 will begin shooting late this year into early 2017.


The resolution Called to wholeness in Christ: Becoming a church accessible to all (2005 General Synod) called for all churches to extend an 'extravagent welcome' to those with physical, mental and developmental disabilities.
Congregations and individuals in the Southwest Conference are working to be accessible to all (A2A).
A resource/study guide for clergy and communities of faith.
A resource site that helps faith communities become caring congregations.
The United Church of Christ Mental Health Network works to reduce stigma and promote the inclusion of people with mental illnesses/brain disorders and their families in the life, leadership and work of congregations.
This site has news, resources, networking links and more to help congregations explore and become accessible to all. The Rev. Dr. Dosia Carlson, a member of Church of the Beatitudes in Phoenix and the wider United Church of Christ Disabilities Ministries community has contributed several stories on this site.


Whistle Pig Vail Presents: Gary Clark Jr.
The Vail Valley community is excited to announce the return of Whistle Pig Vail, a summer-long music series that brings a new era of headliner music to the iconic Gerald R. Ford Amphitheater in Vail. The series is booked in collaboration with AEG Presents, one of the largest live music companies in the world, and will bring well-known rock, pop, country and bluegrass icons to Vail for ticketed shows throughout the summer.
For more information and dates, please click here.


text:
#include <cmn/agent_cmn.h>

#include <base/lifetime.h>
#include <base/parse_object.h>
#include <ifmap/ifmap_link.h>
#include <ifmap/ifmap_table.h>

#include <bgp_schema_types.h>
#include <vnc_cfg_types.h>

#include <init/agent_init.h>
#include <cfg/cfg_init.h>
#include <route/route.h>
#include <oper/route_common.h>
#include <oper/vn.h>
#include <oper/vrf.h>
#include <oper/peer.h>
#include <oper/mirror_table.h>
#include <oper/agent_route_walker.h>
#include <controller/controller_init.h>
#include <controller/controller_vrf_export.h>
#include <oper/agent_sandesh.h>
#include <oper/nexthop.h>
#include <oper/config_manager.h>
#include <oper/agent_route_resync.h>

using namespace std;
using namespace autogen;

VrfTable *VrfTable::vrf_table_;

class VrfEntry::DeleteActor : public LifetimeActor {
  public:
    DeleteActor(VrfEntry *vrf) :
        LifetimeActor((static_cast<VrfTable *>(vrf->get_table()))->
                      agent()->lifetime_manager()), table_(vrf, this) {
    }
    virtual ~DeleteActor() {
    }
    virtual bool MayDelete() const {
        //No table present, then this VRF can be deleted
        return table_->AllRouteTableDeleted();
    }
    virtual void Shutdown() {
    }
    virtual void Destroy() {
        table_->SendObjectLog(AgentLogEvent::DELETE);
        table_ = NULL;
    }

  private:
    VrfEntryRef table_;
};

VrfEntry::VrfEntry(const string &name, uint32_t flags, Agent *agent) :
        name_(name), id_(kInvalidIndex), flags_(flags),
        walkid_(DBTableWalker::kInvalidWalkerId), deleter_(NULL),
        rt_table_db_(), delete_timeout_timer_(NULL),
        table_label_(MplsTable::kInvalidLabel),
        vxlan_id_(VxLanTable::kInvalidvxlan_id),
        rt_table_delete_bmap_(0),
        route_resync_walker_(NULL) {
}

VrfEntry::~VrfEntry() {
    if (id_ != kInvalidIndex) {
        VrfTable *table = static_cast<VrfTable *>(get_table());

        if (vrf_node_ptr_) {
            IFMapDependencyManager *dep = table->agent()->
                               oper_db()->dependency_manager();
            IFMapNodeState *state = vrf_node_ptr_.get();
            dep->SetNotify(state->node(), true);
        }

        table->FreeVrfId(id_);
        table->VrfReuse(GetName());
        vrf_node_ptr_ = NULL;
    }
    //Delete timer
    if (delete_timeout_timer_)
        TimerManager::DeleteTimer(delete_timeout_timer_);
}

bool VrfEntry::IsLess(const DBEntry &rhs) const {
    const VrfEntry &a = static_cast<const VrfEntry &>(rhs);
    return (name_ < a.name_);
}

string VrfEntry::ToString() const {
    return "VRF";
}

bool VrfEntry::UpdateVxlanId(Agent *agent, uint32_t new_vxlan_id) {
    bool ret = false;
    if (new_vxlan_id == vxlan_id_) {
        return ret;
    }

    vxlan_id_ = new_vxlan_id;
    return ret;
}

void VrfEntry::CreateTableLabel() {
    if (table_label_ == MplsTable::kInvalidLabel) {
        VrfTable *table = static_cast<VrfTable *>(get_table());
        Agent *agent = table->agent();
        set_table_label(agent->mpls_table()->AllocLabel());
        MplsTable::CreateTableLabel(agent, table_label(), name_, false);
    }
}

void VrfEntry::CreateRouteTables() {
    DB *db = get_table()->database();
    VrfTable *table = static_cast<VrfTable *>(get_table());

    for (uint8_t type = (Agent::INVALID + 1); type < Agent::ROUTE_TABLE_MAX; type++) {
        rt_table_db_[type] = static_cast<AgentRouteTable *>
            (db->CreateTable(name_ +
                 AgentRouteTable::GetSuffix(Agent::RouteTableType(type))));
        rt_table_db_[type]->SetVrf(this);
        table->dbtree_[type].insert(VrfTable::VrfDbPair(name_, rt_table_db_[type]));
    }
}

void VrfEntry::DeleteRouteTables() {
    for (int table_type = (Agent::INVALID + 1);
         table_type < Agent::ROUTE_TABLE_MAX; table_type++) {
        VrfTable *vrf_table = ((VrfTable *) get_table());
        AgentRouteTable *route_table =
            vrf_table->GetRouteTable(name_, table_type);
        if (route_table) {
            vrf_table->DeleteFromDbTree(table_type, name_);
            vrf_table->database()->RemoveTable(route_table);
            delete route_table;
        }
    }
}

void VrfEntry::PostAdd() {
    VrfTable *table = static_cast<VrfTable *>(get_table());
    Agent *agent = table->agent();
    // get_table() would return NULL in Add(), so move dependent functions and
    // initialization to PostAdd
    deleter_.reset(new DeleteActor(this));
    route_resync_walker_.reset(new AgentRouteResync(agent));
    // Create the route-tables and insert them into dbtree_
    CreateRouteTables();

    uint32_t vxlan_id = VxLanTable::kInvalidvxlan_id;
    if (vn_) {
        vxlan_id = vn_->GetVxLanId();
    }
    UpdateVxlanId(agent, vxlan_id);

    // Add the L2 Receive routes for VRRP mac
    BridgeAgentRouteTable *l2_table = static_cast<BridgeAgentRouteTable *>
        (rt_table_db_[Agent::BRIDGE]);
    l2_table->AddBridgeReceiveRoute(agent->local_vm_peer(), name_, 0,
                                    agent->vrrp_mac(), "");

    // Add the L2 Receive routes for xconnect interface to vhost
    // Note, vhost is not created when fabric VRF is created. We only need
    // VRRP MAC on fabric vrf. So, we are good for now
    const InetInterface *vhost = static_cast<const InetInterface *>
        (agent->vhost_interface());
    if (vhost && vhost->xconnect()) {
        l2_table->AddBridgeReceiveRoute(agent->local_vm_peer(), name_, 0,
                                        vhost->xconnect()->mac(), "");
    }

    //Add receive route for vmware physical interface mac, so
    //that packets hitting this mac gets routed(inter-vn traffic)
    if (agent->isVmwareMode()) {
        PhysicalInterfaceKey key(agent->params()->vmware_physical_port());
        Interface *intf = static_cast<Interface *>
            (agent->interface_table()->FindActiveEntry(&key));
        if (intf) {
             l2_table->AddBridgeReceiveRoute(agent->local_vm_peer(), name_, 0,
                                             intf->mac(), "");
        }
    }

    SendObjectLog(AgentLogEvent::ADD);
}

DBEntryBase::KeyPtr VrfEntry::GetDBRequestKey() const {
    VrfKey *key = new VrfKey(name_);
    return DBEntryBase::KeyPtr(key);
}

void VrfEntry::SetKey(const DBRequestKey *key) {
    const VrfKey *k = static_cast<const VrfKey *>(key);
    name_ = k->name_;
}

InetUnicastRouteEntry *VrfEntry::GetUcRoute(const IpAddress &addr) const {
    InetUnicastAgentRouteTable *table = NULL;
    if (addr.is_v4()) {
        table = GetInet4UnicastRouteTable();
    } else if (addr.is_v6()) {
        table = GetInet6UnicastRouteTable();
    }
    if (table == NULL)
        return NULL;

    return table->FindLPM(addr);
}

InetUnicastRouteEntry *VrfEntry::GetUcRoute(const InetUnicastRouteEntry &rt_key) const {
    InetUnicastAgentRouteTable *table = NULL;

    if (rt_key.addr().is_v4()) {
        table = GetInet4UnicastRouteTable();
    } else if (rt_key.addr().is_v6()) {
        table = GetInet6UnicastRouteTable();
    }
    if (table == NULL)
        return NULL;

    return table->FindLPM(rt_key);
}

LifetimeActor *VrfEntry::deleter() {
    return deleter_.get();
}

bool VrfEntry::AllRouteTableDeleted() const {
    for (int i = Agent::INET4_UNICAST; i < Agent::ROUTE_TABLE_MAX; i++) {
        if ((rt_table_delete_bmap_ & (1 << i)) == 0)
            return false;
    }

    return true;
}

bool VrfEntry::RouteTableDeleted(uint8_t table_type) const {
    return (rt_table_delete_bmap_ & (1 << table_type));
}

void VrfEntry::SetRouteTableDeleted(uint8_t table_type) {
    rt_table_delete_bmap_ |= (1 << table_type);
}

AgentRouteTable *VrfEntry::GetRouteTable(uint8_t table_type) const {
    return (RouteTableDeleted(table_type) ? NULL : rt_table_db_[table_type]);
}

InetUnicastAgentRouteTable *VrfEntry::GetInet4UnicastRouteTable() const {
    return static_cast<InetUnicastAgentRouteTable *>(GetRouteTable(Agent::INET4_UNICAST));
}

AgentRouteTable *VrfEntry::GetInet4MulticastRouteTable() const {
    return GetRouteTable(Agent::INET4_MULTICAST);
}

AgentRouteTable *VrfEntry::GetEvpnRouteTable() const {
    return GetRouteTable(Agent::EVPN);
}

AgentRouteTable *VrfEntry::GetBridgeRouteTable() const {
    return GetRouteTable(Agent::BRIDGE);
}

InetUnicastAgentRouteTable *VrfEntry::GetInet6UnicastRouteTable() const {
    return static_cast<InetUnicastAgentRouteTable *>(GetRouteTable(Agent::INET6_UNICAST));
}

bool VrfEntry::DBEntrySandesh(Sandesh *sresp, std::string &name) const {
    VrfListResp *resp = static_cast<VrfListResp *>(sresp);

    if (name.empty() || GetName().find(name) != string::npos) {
        VrfSandeshData data;
        data.set_name(GetName());
        data.set_ucindex(vrf_id());
        data.set_mcindex(vrf_id());
        data.set_evpnindex(vrf_id());
        data.set_l2index(vrf_id());
        data.set_brindex(vrf_id());
        data.set_uc6index(vrf_id());
        std::string vrf_flags;
        if (flags() & VrfData::ConfigVrf)
            vrf_flags += "Config; ";
        if (flags() & VrfData::GwVrf)
            vrf_flags += "Gateway; ";
        data.set_source(vrf_flags);
        if (vn_.get()) {
            data.set_vn(vn_->GetName());
        } else {
            data.set_vn("N/A");
        }
        data.set_table_label(table_label());

        std::vector<VrfSandeshData> &list =
                const_cast<std::vector<VrfSandeshData>&>(resp->get_vrf_list());
        data.set_vxlan_id(vxlan_id_);
        list.push_back(data);
        return true;
    }

    return false;
}

void VrfEntry::SendObjectLog(AgentLogEvent::type event) const {
    VrfObjectLogInfo vrf;
    string str;
    switch (event) {
        case AgentLogEvent::ADD:
            str.assign("Addition ");
            break;
        case AgentLogEvent::DELETE:
            str.assign("Deletion ");
            break;
        case AgentLogEvent::CHANGE:
            str.assign("Modification ");
            break;
        case AgentLogEvent::DELETE_TRIGGER:
            str.assign("Deletion Triggered ");
            break;
        default:
            str.assign("");
            break;
    }
    vrf.set_event(str);
    vrf.set_name(name_);
    vrf.set_index(id_);
    VRF_OBJECT_LOG_LOG("AgentVrf", SandeshLevel::SYS_INFO, vrf);
}

bool VrfEntry::DeleteTimeout() {
    std::ostringstream str;
    str << "Unicast routes: " << rt_table_db_[Agent::INET4_UNICAST]->Size();
    str << " Mutlicast routes: " << rt_table_db_[Agent::INET4_MULTICAST]->Size();
    str << " EVPN routes: " << rt_table_db_[Agent::EVPN]->Size();
    str << " Bridge routes: " << rt_table_db_[Agent::BRIDGE]->Size();
    str << "Unicast v6 routes: " << rt_table_db_[Agent::INET6_UNICAST]->Size();
    str << " Reference: " << GetRefCount();
    OPER_TRACE_ENTRY(Vrf, static_cast<const AgentDBTable *>(get_table()),
                     "VRF delete failed, " + str.str(), name_);
    assert(0);
    return false;
}

void VrfEntry::StartDeleteTimer() {
    Agent *agent = (static_cast<VrfTable *>(get_table()))->agent();
    delete_timeout_timer_ = TimerManager::CreateTimer(
                                *(agent->event_manager())->io_service(),
                                "VrfDeleteTimer");
    delete_timeout_timer_->Start(kDeleteTimeout,
                                 boost::bind(&VrfEntry::DeleteTimeout,
                                 this));
}

void VrfEntry::CancelDeleteTimer() {
    delete_timeout_timer_->Cancel();
}

void VrfEntry::ResyncRoutes() {
    route_resync_walker_.get()->UpdateRoutesInVrf(this);
}

std::auto_ptr<DBEntry> VrfTable::AllocEntry(const DBRequestKey *k) const {
    const VrfKey *key = static_cast<const VrfKey *>(k);
    VrfEntry *vrf = new VrfEntry(key->name_, 0, agent());
    return std::auto_ptr<DBEntry>(static_cast<DBEntry *>(vrf));
}

VrfTable::~VrfTable() {
    if (route_delete_walker_)
        delete route_delete_walker_;
    if (vrf_delete_walker_)
        delete vrf_delete_walker_;
}

DBEntry *VrfTable::OperDBAdd(const DBRequest *req) {
    VrfKey *key = static_cast<VrfKey *>(req->key.get());
    VrfData *data = static_cast<VrfData *>(req->data.get());
    VrfEntry *vrf = new VrfEntry(key->name_, data->flags_, agent());

    // Add VRF into name based tree
    if (FindVrfFromName(key->name_)) {
        delete vrf;
        assert(0);
        return NULL;
    }
    vrf->id_ = index_table_.Insert(vrf);
    name_tree_.insert( VrfNamePair(key->name_, vrf));

    vrf->vn_.reset(agent()->vn_table()->Find(data->vn_uuid_));
    return vrf;
}

bool VrfTable::OperDBOnChange(DBEntry *entry, const DBRequest *req) {
    bool ret = false;
    VrfEntry *vrf = static_cast<VrfEntry *>(entry);
    VrfData *data = static_cast<VrfData *>(req->data.get());
    vrf->set_flags(data->flags_);

    VnEntry *vn = agent()->vn_table()->Find(data->vn_uuid_);
    if (vn != vrf->vn_.get()) {
        vrf->vn_.reset(vn);
        vrf->ResyncRoutes();
        ret = true;
    }

    uint32_t vxlan_id = VxLanTable::kInvalidvxlan_id;
    if (vn) {
        vxlan_id = vn->GetVxLanId();
    }
    vrf->UpdateVxlanId(agent(), vxlan_id);
    return ret;
}

bool VrfTable::OperDBDelete(DBEntry *entry, const DBRequest *req) {
    VrfEntry *vrf = static_cast<VrfEntry *>(entry);
    VrfData *data = static_cast<VrfData *>(req->data.get());

    // VRF can be created by both config and VGW. VRF cannot be deleted till
    // both config and VGW delete it.
    vrf->flags_ &= ~data->flags_;
    if (vrf->flags_ != 0)
        return false;

    // Delete the L2 Receive routes added by default
    BridgeAgentRouteTable *l2_table = static_cast<BridgeAgentRouteTable *>
        (vrf->rt_table_db_[Agent::BRIDGE]);
    l2_table->Delete(agent()->local_vm_peer(), vrf->GetName(),
                     agent()->vrrp_mac(), 0);
    const InetInterface *vhost = static_cast<const InetInterface *>
        (agent()->vhost_interface());
    if (vhost && vhost->xconnect()) {
        l2_table->Delete(agent()->local_vm_peer(), vrf->GetName(),
                         vhost->xconnect()->mac(), 0);
    }

    if (agent()->isVmwareMode()) {
        PhysicalInterfaceKey key(agent()->params()->vmware_physical_port());
        Interface *intf = static_cast<Interface *>
            (agent()->interface_table()->FindActiveEntry(&key));
        if (intf) {
             l2_table->Delete(agent()->local_vm_peer(), vrf->GetName(),
                              intf->mac(), 0);
        }
    }

    vrf->UpdateVxlanId(agent(), VxLanTable::kInvalidvxlan_id);
    vrf->vn_.reset(NULL);
    if (vrf->table_label() != MplsTable::kInvalidLabel) {
        MplsLabel::Delete(agent(), vrf->table_label());
        vrf->set_table_label(MplsTable::kInvalidLabel);
    }
    vrf->deleter_->Delete();
    vrf->StartDeleteTimer();
    vrf->SendObjectLog(AgentLogEvent::DELETE_TRIGGER);

    if (vrf->ifmap_node()) {
        IFMapDependencyManager *dep = agent()->oper_db()->dependency_manager();
        vrf->vrf_node_ptr_ = dep->SetState(vrf->ifmap_node());
        dep->SetNotify(vrf->ifmap_node(), false);
    }

    return true;
}

void VrfTable::VrfReuse(const std::string  name) {
    IFMapTable::RequestKey req_key;
    req_key.id_type = "routing-instance";
    req_key.id_name = name;
    IFMapNode *node = IFMapAgentTable::TableEntryLookup(database(), &req_key);

    if (!node || node->IsDeleted()) {
        return;
    }

    OPER_TRACE(Vrf, "Resyncing configuration for VRF: ", name);
    agent()->config_manager()->NodeResync(node);
}

void VrfTable::OnZeroRefcount(AgentDBEntry *e) {
    VrfEntry *vrf = static_cast<VrfEntry *>(e);
    if (e->IsDeleted()) {
        vrf->DeleteRouteTables();
        name_tree_.erase(vrf->GetName());
        vrf->CancelDeleteTimer();
    }
}

DBTableBase *VrfTable::CreateTable(DB *db, const std::string &name) {
    vrf_table_ = new VrfTable(db, name);
    vrf_table_->Init();
    return vrf_table_;
};

VrfEntry *VrfTable::FindVrfFromName(const string &name) {
    VrfNameTree::const_iterator it;

    it = name_tree_.find(name);
    if (it == name_tree_.end()) {
        return NULL;
    }

    return static_cast<VrfEntry *>(it->second);
}

VrfEntry *VrfTable::FindVrfFromId(size_t index) {
    VrfEntry *vrf = index_table_.At(index);
    if (vrf && vrf->IsDeleted() == false) {
        return vrf;
    }
    return NULL;
}

VrfEntry *VrfTable::FindVrfFromIdIncludingDeletedVrf(size_t index) {
    VrfEntry *vrf = index_table_.At(index);
    return vrf;
}

InetUnicastAgentRouteTable *VrfTable::GetInet4UnicastRouteTable
    (const string &vrf_name) {
    return static_cast<InetUnicastAgentRouteTable *>
        (GetRouteTable(vrf_name, Agent::INET4_UNICAST));
}

AgentRouteTable *VrfTable::GetInet4MulticastRouteTable(const string &vrf_name) {
    return GetRouteTable(vrf_name, Agent::INET4_MULTICAST);
}

AgentRouteTable *VrfTable::GetEvpnRouteTable(const string &vrf_name) {
    return GetRouteTable(vrf_name, Agent::EVPN);
}

AgentRouteTable *VrfTable::GetBridgeRouteTable(const string &vrf_name) {
    return GetRouteTable(vrf_name, Agent::BRIDGE);
}

InetUnicastAgentRouteTable *VrfTable::GetInet6UnicastRouteTable
    (const string &vrf_name) {
    return static_cast<InetUnicastAgentRouteTable *>
        (GetRouteTable(vrf_name, Agent::INET6_UNICAST));
}

AgentRouteTable *VrfTable::GetRouteTable(const string &vrf_name,
                                         uint8_t table_type) {
    VrfDbTree::const_iterator it;

    it = dbtree_[table_type].find(vrf_name);
    if (it == dbtree_[table_type].end()) {
        return NULL;
    }

    return static_cast<AgentRouteTable *>(it->second);
}

void VrfTable::CreateVrfReq(const string &name, uint32_t flags) {
    DBRequest req(DBRequest::DB_ENTRY_ADD_CHANGE);
    req.key.reset(new VrfKey(name));
    req.data.reset(new VrfData(agent(), NULL, flags, nil_uuid()));
    Enqueue(&req);
}

void VrfTable::CreateVrfReq(const string &name,
                            const boost::uuids::uuid &vn_uuid, uint32_t flags) {
    DBRequest req(DBRequest::DB_ENTRY_ADD_CHANGE);
    req.key.reset(new VrfKey(name));
    req.data.reset(new VrfData(agent(), NULL, flags, vn_uuid));
    Enqueue(&req);
}

void VrfTable::CreateVrf(const string &name, uint32_t flags) {
    DBRequest req(DBRequest::DB_ENTRY_ADD_CHANGE);
    req.key.reset(new VrfKey(name));
    req.data.reset(new VrfData(agent(), NULL, flags, nil_uuid()));
    Process(req);
}

void VrfTable::DeleteVrfReq(const string &name, uint32_t flags) {
    DBRequest req(DBRequest::DB_ENTRY_DELETE);
    req.key.reset(new VrfKey(name));
    req.data.reset(new VrfData(agent(), NULL, flags, nil_uuid()));
    Enqueue(&req);
}

void VrfTable::DeleteVrf(const string &name, uint32_t flags) {
    DBRequest req(DBRequest::DB_ENTRY_DELETE);
    req.key.reset(new VrfKey(name));
    req.data.reset(new VrfData(agent(), NULL, flags, nil_uuid()));
    Process(req);
}

void VrfTable::CreateStaticVrf(const string &name) {
    static_vrf_set_.insert(name);
    CreateVrf(name);
}

void VrfTable::DeleteStaticVrf(const string &name) {
    static_vrf_set_.erase(name);
    DeleteVrfReq(name);
}

void VrfTable::DeleteFromDbTree(int table_type, const std::string &vrf_name) {
    dbtree_[table_type].erase(vrf_name);
}

void VrfTable::Input(DBTablePartition *partition, DBClient *client,
                     DBRequest *req) {

    VrfKey *key = static_cast<VrfKey *>(req->key.get());
    VrfEntry *entry = static_cast<VrfEntry *>(partition->Find(key));

    if (entry && entry->IsDeleted()) {
        OPER_TRACE(Vrf, "VRF pending delete, Ignoring DB operation for ",
                   entry->GetName());
        return;
    }

    AgentDBTable::Input(partition, client, req);
    return;
}

bool VrfTable::CanNotify(IFMapNode *node) {
    VrfKey key(node->name());
    VrfEntry *entry = static_cast<VrfEntry *>(Find(&key, true));
    // Check if there is an entry with given name in *any* DBState
    if (entry && entry->IsDeleted()) {
        OPER_TRACE(Vrf, "VRF pending delete, Ignoring config for ", node->name());
        return false;
    }

    return true;
}

static VrfData *BuildData(Agent *agent, IFMapNode *node) {
    boost::uuids::uuid vn_uuid = nil_uuid();
    IFMapAgentTable *table = static_cast<IFMapAgentTable *>(node->table());
    DBGraph *graph = table->GetGraph();

    for (DBGraphVertex::adjacency_iterator iter = node->begin(graph);
         iter != node->end(graph); ++iter) {
        IFMapNode *adj_node =
            static_cast<IFMapNode *>(iter.operator->());

        if (iter->IsDeleted() ||
            (adj_node->table() != agent->cfg()->cfg_vn_table())) {
            continue;
        }

        VirtualNetwork *cfg =
            static_cast <VirtualNetwork *> (adj_node->GetObject());
        if (cfg == NULL) {
            continue;
        }

        if (!IsVRFServiceChainingInstance(adj_node->name(), node->name())) {
            autogen::IdPermsType id_perms = cfg->id_perms();
            CfgUuidSet(id_perms.uuid.uuid_mslong, id_perms.uuid.uuid_lslong,
                       vn_uuid);
            break;
        }
    }

    return new VrfData(agent, node, VrfData::ConfigVrf, vn_uuid);
}

bool VrfTable::IFNodeToReq(IFMapNode *node, DBRequest &req,
        const boost::uuids::uuid &u) {
    //Trigger add or delete only for non fabric VRF
    if ((req.oper == DBRequest::DB_ENTRY_DELETE) || node->IsDeleted()) {
        req.key.reset(new VrfKey(node->name()));
        if (IsStaticVrf(node->name())) {
            //Fabric and link-local VRF will not be deleted,
            //upon config delete
            req.oper = DBRequest::DB_ENTRY_ADD_CHANGE;
        } else {
            req.oper = DBRequest::DB_ENTRY_DELETE;
        }
        req.data.reset(new VrfData(agent(), node, VrfData::ConfigVrf,
                                   nil_uuid()));
        Enqueue(&req);
        return false;
    }

    agent()->config_manager()->AddVrfNode(node);
    return false;
}

bool VrfTable::ProcessConfig(IFMapNode *node, DBRequest &req,
        const boost::uuids::uuid &u) {
    req.key.reset(new VrfKey(node->name()));

    //Trigger add or delete only for non fabric VRF
    if (node->IsDeleted()) {
        if (IsStaticVrf(node->name())) {
            //Fabric and link-local VRF will not be deleted,
            //upon config delete
            req.oper = DBRequest::DB_ENTRY_ADD_CHANGE;
        } else {
            req.oper = DBRequest::DB_ENTRY_DELETE;
        }
        req.data.reset(new VrfData(agent(), node, VrfData::ConfigVrf,
                                   nil_uuid()));
    } else {
        req.oper = DBRequest::DB_ENTRY_ADD_CHANGE;
        req.data.reset(BuildData(agent(), node));
    }

    //When VRF config delete comes, first enqueue VRF delete
    //so that when link evaluation happens, all point to deleted VRF
    Enqueue(&req);
    return false;
}

void VrfListReq::HandleRequest() const {
    AgentSandeshPtr sand(new AgentVrfSandesh(context(), get_name()));
    sand->DoSandesh(sand);
}

AgentSandeshPtr VrfTable::GetAgentSandesh(const AgentSandeshArguments *args,
                                          const std::string &context) {
    return AgentSandeshPtr(new AgentVrfSandesh(context,
                                               args->GetString("name")));
}

class RouteDeleteWalker : public AgentRouteWalker {
public:
    RouteDeleteWalker(Agent *agent) :
        AgentRouteWalker(agent, AgentRouteWalker::ALL) {
    }

    ~RouteDeleteWalker() { }

    //Override route notification
    bool RouteWalkNotify(DBTablePartBase *partition, DBEntryBase *e) {
        AgentRoute *rt = static_cast<AgentRoute *>(e);
        for(Route::PathList::const_iterator it = rt->GetPathList().begin();
            it != rt->GetPathList().end(); ) {
            const AgentPath *path =
                static_cast<const AgentPath *>(it.operator->());
            Route::PathList::const_iterator next = ++it;

            DBRequest req(DBRequest::DB_ENTRY_DELETE);
            req.key = e->GetDBRequestKey();
            AgentRouteKey *key = static_cast<AgentRouteKey *>(req.key.get());
            key->peer_ = path->peer();
            (static_cast<AgentRouteTable *>(e->get_table()))->Process(req);
            it = next;
        }

        return true;
    }

    static void WalkDone(RouteDeleteWalker *walker) {
        walk_done_++;
    }

    static uint32_t walk_start_;
    static uint32_t walk_done_;
};
uint32_t RouteDeleteWalker::walk_start_;
uint32_t RouteDeleteWalker::walk_done_;

void VrfTable::DeleteRoutes() {
    if (route_delete_walker_ == NULL) {
        route_delete_walker_ = new RouteDeleteWalker(agent());
    }
    RouteDeleteWalker *route_delete_walker =
        static_cast<RouteDeleteWalker *>(route_delete_walker_);
    route_delete_walker->WalkDoneCallback
        (boost::bind(&RouteDeleteWalker::WalkDone, route_delete_walker));
    route_delete_walker->walk_start_++;
    route_delete_walker->StartVrfWalk();
}

class VrfDeleteWalker : public AgentRouteWalker {
public:
    VrfDeleteWalker(Agent *agent) :
        AgentRouteWalker(agent, AgentRouteWalker::ALL) {
    }

    ~VrfDeleteWalker() { }

    //Override vrf notification
    bool VrfWalkNotify(DBTablePartBase *partition, DBEntryBase *e) {
        DBRequest req(DBRequest::DB_ENTRY_DELETE);
        req.key = e->GetDBRequestKey();
        (static_cast<VrfTable *>(e->get_table()))->Process(req);
        return true;
    }

    //Override route notification
    bool RouteWalkNotify(DBTablePartBase *partition, DBEntryBase *e) {
        assert(0);
    }

    static void WalkDone(VrfDeleteWalker *walker) {
    }

private:
};

void VrfTable::Shutdown() {
    if (vrf_delete_walker_ == NULL) {
        vrf_delete_walker_ = new VrfDeleteWalker(agent());
    }
    VrfDeleteWalker *vrf_delete_walker =
        static_cast<VrfDeleteWalker *>(vrf_delete_walker_);
    vrf_delete_walker->WalkDoneCallback(boost::bind
                                        (&VrfDeleteWalker::WalkDone,
                                         vrf_delete_walker));
    vrf_delete_walker->StartVrfWalk();
}