text:
Tyrone Swoopes
Longhorn Network
Texas' spring game a showcase for true frosh QB Shane Buechele
By John TaylorApr 16, 2016, 4:19 PM EDT
"Oh, God yes."
That was the answer Charlie Strong gave earlier in the day when he was asked if true freshman quarterback Shane Buechele would see the field this season. Several hours after that interview aired, Buechele backed up that strong, unequivocal response.
Armed with the knowledge that these are numbers coming out of a glorified scrimmage, Buechele (pictured, No. 16) was the star of the day as he, at least statistically, outplayed senior Tyrone Swoopes (pictured, No. 18) by a wide margin. In a spring finale that was called at halftime because of weather, Buechele completed 22-of-41 passes for 299 yards, two touchdowns and zero interceptions while Swoopes, considered to be the co-frontunner for the starting job along with Jerrod Heard, stumbled to a 4-16, 71 yards, no touchdowns, two interceptions day.
With Heard sidelined for the remainder of the spring with a shoulder injury, Buechele has made significant progress in what had initially been a five-player race. Exiting spring, it appears that five-man battle has been whittled to three: Buechele, Swoopes and Heard.
Buechele, an early enrollee, has the kind of recruiting pedigree that suggests he could make an immediate impact. A four-star member of this year's class, Buechele was rated as the No. 5 dual-threat quarterback in the country by Rivals.com.
Whether Buechele will get the opportunity to immediately back up that impressive résumé on the field remains to be seen, but he's certainly taken a big step in that direction the last couple of weeks. One thing seems certain: Strong would be more than open to a true freshman guiding his offense if he comes out on top in the competition.
#Texas' Strong on possibly starting Buechele in fall: "I would be comfortable if he wins the job. Even though a frosh, enuf around him now"
— Jimmy Burch (@Jimmy_Burch) April 16, 2016
Tags: Shane Buechele, Tyrone Swoopes
Texas QB Jerrod Heard to miss rest of spring with shoulder sprain
By Zach BarnettMar 31, 2016, 12:19 PM EDT
Texas quarterback Jerrod Heard will miss the remainder of spring after suffering what the Longhorns are calling a minor sprain in his throwing shoulder in practice on Tuesday.
The 'Horns formally stated there is no timetable for Heard's return this spring; Texas' spring practice will end April 16.
Heard finished last season as the club's leading passer and second-leading rusher. As a redshirt freshman, he completed 92-of-159 throws for 1,214 yards with five touchdowns and five picks while rushing 139 times for 556 yards and three scores.
The sophomore is battling senior Tyrone Swoopes and true freshman Shane Buechele for the Longhorns' vacant quarterback job. New offensive coordinator Sterlin Gilbert has said he's in no rush to name a starter, but missing two weeks of spring practice is, obviously, not good for Heard's chances.
Tags: Jerrod Heard, Shane Buechele, Tyrone Swoopes
Texas QB Jerrod Heard injures shoulder; severity to be determined
By John TaylorMar 30, 2016, 2:02 PM EDT
Many an observer – OK, at least one — of the Texas football program view Jerrod Heard as the best possible option at the quarterback position for the Longhorns. Wednesday, that standing was tossed into a state of flux.
UT announced via a one-sentence, emailed release this afternoon, that Heard sustained a shoulder injury during practice Tuesday. The severity of the injury is unknown, and Heard "is being evaluated at this time."
Tyrone Swoopes began the 2015 season as the Longhorns' starter, but was replaced after one game by Heard. The then-redshirt freshman proceeded to start the next 10 games, throwing five touchdowns and five interceptions as UT went 4-6 during his time as the starter. Swoopes then started the season finale against Baylor.
This offseason, head coach Charlie Strong has described a quarterback competition that includes redshirt freshmen Kai Locksley and Matthew Merrick and true freshman Shane Buechele as wide open.
Tags: Jerrod Heard, Kai Locksley, Shane Buechele, Tyrone Swoopes
Texas holds on for momentum-building upset of QB-depleted No. 12 Baylor
By Kevin McGuireDec 5, 2015, 3:57 PM EST
Odds are we may not see too many seasons in which Texas beats two top 15 teams away from home in the same season and does not go to a bowl game. Folks, you may have just witnessed history.
Texas (5-7, 4-5) ended a losing season without a bowl game with a rather important victory in Waco by upsetting No. 12 Baylor (9-3, 6-3 Big 12) with a 23-17 victory that nearly got away from them in the second half. Texas built a 20-0 lead at halftime but Baylor managed to make a run at the Longhorns despite having their third-string quarterback knocked out of the game and having to run the offense with a wide receiver.
Baylor lost third-string quarterback Chris Johnson during the game, with Johnson having to leave the game due to concussion symptoms. That left Baylor without a passing option, which is a rare occurrence for Art Briles. Junior wide receiver Lynx Hawthorne took over in the emergency situation, and Baylor nearly escaped with the win. Hawthorne completed 10 of 22 pass attempts for 64 yards and was picked off twice.
Texas quarterback Tyrone Swoopes completed 12 of 19 pass attempts for 151 yards and a touchdown and he added 52 rushing yards and a touchdown on the ground to help Texas score the upset. Star Baylor wide receiver Corey Coleman, who was recognized on the field before the game along with Baylor's seniors, caught seven passes for 49 yards.
Texas now enters the pool of 5-7 teams that will hope to get an invite to the postseason fun. That invitation is not likely at all to reach Austin though with a number of teams already sitting in front in the waiting line based on APR scores. So the focus for Charlie Strong will now shift to 2016, and it should be a critical one for Strong. He will do so with a bit of a signature win, or at least one to build momentum moving forward.
Over the more recent years Texas has seen everyone catch up or pass them among power conference threats, including Baylor. To be able to end a season with a win against Baylor, even if it was largely because Baylor was playing with a wide receiver under center, should be used as fuel for the offseason for Strong and the Longhorns. Texas is the program that must catch the competition right now, but at least they can sell the idea they can compete on the same field and start to try winning back momentum in the state. Maybe this was a fluke, but Texas should not treat it as such.
With the loss, Baylor's chances of playing int he New Years Six lineup have been shredded. With Baylor out, and Oklahoma very likely to be selected to play in the College Football Playoff, the Big 12 will be expected to be represented in the Sugar Bowl by Oklahoma State. Baylor's bowl destination will fall outside the New Years Six with the Alamo Bowl and Russell Athletic Bowl possibilities.
Tags: Art Briles, Charlie Strong, Chris Johnson, Corey Coleman, Lynx Hawthorne, Tyrone Swoopes, Corey Coleman, Tyrone Swoopes
The Fifth Quarter: Week 10 Rewind
By John TaylorNov 8, 2015, 2:31 AM EST
As is the case each and every season, each and every week, any omission below is not on purpose, it's merely intentional.
SHAKEUP SATURDAY AS CHAOS COMMENCES
At one point in the early evening hours Saturday, three undefeated teams (Clemson, Iowa, TCU) were all losing, while another (Houston) was tied. While the week ended up not being as chaotic as it could've been, it was more than chaotic enough where we should see a rather sizable shakeup when the College Football Playoff Top 25 is released Tuesday.
Entering the weekend with 11 undefeated teams, those unblemished ranks were sliced to six as No. 2 LSU, No. 7 Michigan State, No. 8 TCU, No. 13 Memphis and No. 24 Toledo all suffered their first losses of the season. That leaves No. 1 Clemson, No. 3 Ohio State, No. 6 Baylor, No. 9 Iowa, No. 14 Oklahoma State and No. 25 Houston as the lone remaining unbeatens with a month left in the regular season/championship weekend.
Following Week 9, the first CFP Top 25 looked as follows:
No. 1 Clemson
No. 2 LSU
No. 3 Ohio State
No. 4 Alabama
Clemson added an impressive win over No. 16 Florida State to its win over No. 5 Notre Dame; the Tigers would seem to be a lock to remain at No. 1. LSU was woodshedded by Alabama, so the Tigers will very likely drop out of the top four. The Tide, meanwhile, will move on up as the highest-rated one-loss team.
Ohio State, on the other hand, was cruising right along with a 21-point fourth-quarter lead on Minnesota before allowing the Gophers back into the game with a pair of touchdowns before settling for a 28-14 win. The Buckeyes will likely maintain a top-four slotting, although it wouldn't be surprising to see them fall out.
And what of Oklahoma State? No. 14 entering the weekend, the Big 12 OSU put a thumping on No. 8 TCU; could the committee vault the Cowboys up at least 10 spots and into the first four? I'd say it's unlikely, but they should be well within earshot heading into an ongoing stretch that, after a road trip to Ames, includes a pair of games to close out the season against No. 6 Baylor and No. 15 Oklahoma.
So, how will the CFP's top four look when the newest rankings are released Tuesday night? My best guess is…
No. 4 Notre Dame
I think those first three spots are fairly well set with the committee, provided the group sees the Buckeyes of J.T. Barrett and not necessarily that of Cardale Jones. That fourth spot, it wouldn't surprise me in the least to see Oklahoma State or Baylor there instead of the one-loss Golden Domers. The only thing that would surprise me at No. 4, in fact, would be Iowa.
Still, remember that this will be just the second of six CFP Top 25s released, so there will be plenty of time for those in and around the Top 10 to find a seat at the playoff table. Last year, after the second release, eventual national champion Ohio State was sitting at No. 14. Just sayin'
CONFERENCE CHASE CLARITY
With three weeks still remaining in the regular season — four if you're the Big 12 — there's a surprisingly large amount of clarity in the Power Five conferences. There's also, of course, some uncertainty remaining.
The ACC Atlantic and SEC East were decided this weekend, while the ACC Coastal, Big Ten West and Pac-12 North are all but decided. Conversely, the Big 12 is a muddled mess, while the SEC West has five teams that are still technically alive in the division. The Big Ten East and Pac-12 South both have three teams each that could still win it.
With that in mind, below are the updates as to where each of the Power Five divisional races stand.
Thanks to the impressive double-digit win over Florida State, Clemson clinched its first division title since 2011. The Tigers also snapped the Seminoles' three-year stranglehold on not only the division but on the conference as well as FSU came into the season having won back-to-back-to-back ACC titles.
This one's not over yet, but a rather large woman is in the latter stages of warming up her throat. With an impressive and dominating win over Duke, North Carolina, at 5-0 in ACC play, has complete and total control of the division. UNC already owns the head-to-head tiebreaker over Pittsburgh (4-1) and now owns the same over Duke (3-2). For the Tar Heels it's very simple: win two of their next three games (vs. Miami, at Virginia Tech and North Carolina State) and they'll claim the Coastal regardless of what anyone else does. UNC could also clinch next weekend with a win vs. Miami and a Pitt loss to Duke. Pitt has to hope UNC stumbles twice as they are winning out (at Duke, vs. Louisville and Miami), while Duke needs to win out and have UNC lose out.
Ohio State stands at 5-0 in conference play, with Michigan and Michigan State tied at 4-1. The Buckeyes host the Spartans week after next, then travel to the Wolverines to close out the regular season. The only way this division is settled next weekend is if OSU handles Illinois and UM and MSU fall to Indiana and Maryland, respectively.
At 5-0, Iowa holds a half-game lead on 5-1 Wisconsin. However, the Hawkeyes own the head-to-head tiebreaker with the Badgers, which means Iowa would need to lose two of its last three games (Minnesota, Purdue, at Nebraska) while Wisconsin wins out (Northwestern, at Minnesota) in order for the latter to win the West.
Two teams are unbeaten after Week 10: Baylor (5-0) and Oklahoma State (6-0). Oklahoma and TCU are both 5-1. In the last four weeks of the regular season, those four teams will play each other in a total of five games. In other words, we're still (probably) a ways away from a conference bereft of a championship game deciding its one true champion.
At 7-0, all Stanford needs to do is either beat Oregon (4-2) in Week 11 or Cal in Week 12 to clinch a spot in its third Pac-12 championship game in five years. The Ducks would need to win their last three and have the Cardinal lose out in league play in order to get back to the title game.
Utah (5-1) currently holds a one-game lead on UCLA (4-2) and USC (4-2). The Utes, though, lost to the Trojans in the only game played between the three. With Utah still having to face UCLA, and the two Los Angeles schools set to meet in three weeks, this division likely won't be decided until well into the month of November.
Just one weekend into November, and Florida, thanks to its win over Vanderbilt, has already clinched the division title and a spot in the conference championship game opposite the West winner. The Gators will play in their first league title game since 2009 early next month.
Hello, Alabama. Welcome back to the driver's seat. As we headed into the weekend, LSU and Ole Miss controlled their own destinies in the West, with Alabama at the mercy of others. Heading out, the combination of 'Bama's win over LSU and Ole Miss' overtime loss to Arkansas leaves the Tide, at 5-1, in control of their own destiny. They're far from clinching, however, as LSU is still in the mix at 4-1, while there are three other teams in the division with just two conference losses: Ole Miss (4-2), Arkansas (3-2) and Mississippi State (3-2).
SATURDAY RESET
Below is a list of links for all of the Week 10 gamers posted by the CFT crew, placed in one handy and convenient space for you, our beloved and dear readers.
No. 4 Alabama again the class of the SEC in blowout of No. 2 LSU.
No. 3 Ohio State holds off Minnesota, extends win streak to 22 straight.
Controversial ending sends Michigan State to first loss.
No. 13 Memphis sees 15-game winning streak snapped in blowout loss to Navy.
Ole Miss' overtime loss hands control of SEC West to LSU-'Bama winner.
Oklahoma Statement: No. 14 OSU thrashes No. 8 TCU.
No. 9 Iowa remains unbeaten dark horse playoff contender.
No. 1 Clemson clinches ACC Atlantic Division with 23-13 win over No. 16 FSU.
Stanford nears Pac-12 North clinch as Christian McCaffrey adds to Heisman résumé.
DeShone Kizer throws five touchdowns as No. 5 Notre Dame tops Pittsburgh, 42-30.
North Carolina grabs ACC Coastal by the Blue Devil's horns.
Florida (barely) survives Vandy, become first to clinch Power Five division.
CFT TOP FIVE
A snapshot look at how my ballot would look Sunday if I, ya know, had a real vote.
1. Clemson — OK, OK, I relent. Clemson's wins over Notre Dame and now Florida State are more impressive than anything any other team in the country can offer up for an argument to be No. 1. The mission moving forward for the Tigers is simple: don't trip up against Syracuse, Wake Forest or South Carolina to close out the regular season, then handle North Carolina (probably) in the conference championship game to punch your playoff ticket. Simple, right? (Last week: No. 5)
Next up: at Syracuse, Nov. 14
2. Ohio State — This ranking is based solely on the assumption that J.T. Barrett will return as the starting quarterback. If not, the Buckeyes wouldn't even be in my Top Five. Allow me to repeat: With Barrett as the starter, OSU is a national title contender; with Cardale Jones, they are an upset waiting to happen. (Last week: No. 3)
Next up: at Illinois, Nov. 14
3. Alabama — Yes, the woodshedding of LSU was an impressive performance. 'Bama still has the one loss, to Ole Miss, and that's looking worse and worse with each passing week. The Rebels suffered their third loss of the year this weekend, and one of the teams they lost to, Memphis, lost to a service academy. (Last week: NR)
Next up: vs. No. 20 Mississippi State, Nov. 14
4. Baylor — Jarrett Stidham passed his first quiz. Whether the true freshman quarterback can pass his remaining tests, which includes a home date with No. 15 Oklahoma and road trips to No. 14 Oklahoma State and No. 8 TCU, will go a long way in determining what if any chair the Bears will have at the playoff table. (Last week: No. 2)
Next up: vs. No. 15 Oklahoma, Nov. 14
5. Oklahoma State — It's not just the fact that OSU "upset" TCU; it's the fact that they dominated a team that had won 16 straight in every phase of the game. It was as impressive a performance as any team has put up all season, although the flimsy résumé the first eight games of the year won't allow the Cowboys to move past those ahead of them. Yet. With the meat of their schedule coming up, though, they'll have ample opportunity to show their playoff worthiness. (Last week: NR)
Next up: at Iowa State, Nov. 14
(Dropped out: No. 1 LSU, No. 4 TCU)
(Others considered: Notre Dame, Stanford)
HEISMAN RACE, BY THE NUMBERS
A statistical look at how the top contenders for this year's stiff-armed trophy fared this past week.
Trevone Boykin, QB, TCU (8-1, No. 8)
Saturday: 35-57 (61.4%), 445 yards, one touchdown, four interceptions; 19 carries for 73 yards, two touchdowns
Season: 233-354 (65.8%), 3,372 yards, 29 touchdowns, nine interceptions; 107 carries for 597 yards (5.6 ypc), seven touchdowns
Corey Coleman, WR, Baylor (8-0, No. 6)
Thursday: 11 receptions for 216 yards, two touchdowns; two carries for two rushing yards
Season: 58 receptions for 1,178 yards, 20 touchdowns; 13 carries for 51 rushing yards
Dalvin Cook, RB, Florida State (7-2, No. 16)
Saturday: 21 carries for 194 yards (9.2 ypc), one touchdown; one reception for four yards
Season: 148 carries for 1,231 yards (8.3 ypc), 12 touchdowns; 16 receptions for 185 yards, one touchdown
Ezekiel Elliott, RB, Ohio State (8-0, No. 3)
Season: 167 carries for 1,130 yards (6.8 ypc), 13 touchdowns; 23 receptions for 160 yards
Leonard Fournette, RB, LSU (7-0, No. 2)
Saturday: 19 carries for 31 yards (1.6 ypc), one touchdown
Season: 195 carries for 1,383 yards (7.1 ypc), 16 touchdowns; seven receptions for 58 yards
Derrick Henry, RB, Alabama (8-1, No. 4)
Saturday: 38 carries for 210 yards (5.5 ypc), three touchdowns
Season: 218 carries for 1,254 yards (5.7 ypc), 17 touchdowns; eight receptions for 69 yards
Matt Johnson, QB, Bowling Green (7-2, NR)
Wednesday: 26-35 (74.3%), 365 yards, four touchdowns, zero interceptions; three carries for minus-five yards
Season: 268-380 (70.5%), 3,686 yards, 33 touchdowns, three interceptions; 77 carries for 147 yards, three touchdowns
Christian McCaffrey, RB, Stanford (8-1, No. 11)
Saturday: 23 carries for 147 yards (6.4 ypc); three receptions for 15 yards; two kick returns for 46 yards; 1-1 (100%), 28 yards, one touchdown
Season: 198 carries for 1,207 yards (6.1 ypc), six touchdowns; 28 receptions for 325 yards, two touchdowns; 21 kick returns for 605 yards; nine punt returns for 25 yards; 1-1 (100%), 28 yards, one touchdown
(Dropped out: TCU wide receiver Josh Doctson)
(Added: Henry)
JT's Personal Top Fivesman
1. Fournette — That sound you may have heard was the star LSU running back's Heisman stock plummeting back to earth. Fournette remains the stiff-armed front-runner, but the gap between himself and the rest of the field closed considerably even as his closest competitor coming in stumbled mightily.
2. Cook — Even in a loss, nobody likely raised their Heisman stock more than the FSU back. Going up against a defense that came into the game 10th in rushing defense, Cook put up nearly 200 yards (194) in the loss to Clemson. The fact that the Tigers keyed on Cook and he still put nearly a 200-spot on the ACC Atlantic winners tells you all you need to know about the kind of player Cook is.
3. Henry — Henry was on the periphery of the Heisman discussion prior to Week 10; that 200 yards he put on LSU, in a personal matchup with a struggling Fournette no less, puts him squarely in the mix.
4. McCaffrey — The Stanford running back's stat sheet added a fourth dimension this weekend as the sophomore threw his first career touchdown pass. He also tied a school record with his seventh consecutive 100-yard game. I'll point out again that McCaffrey is the only player west of the Rockies who's in the Heisman discussion, which still bodes well for a mid-December trip to New York City.
5. Boykin — Entering Week 10, Boykin was viewed by many, or even most, as the only legitimate threat to Fournette's Heisman candidacy. Following a four-pick performance in a 20-point loss to Oklahoma State, the senior has a significant mountain to climb just to get back into the race.
DAMN YOU & YOUR EYE DUST, RINALDI
Say what you want about Les Miles, the coach, but Les Miles, the man, is someone the LSU community can be proud of. If you haven't seen the latest Tom Rinaldi tear-jerker, click "play" below. And if you click "play" below, make sure you have a fistful of tissues nearby, just in case.
When there weren't many moments left to be had, Les Miles was there for LSU superfan and Alabama-native Sid Ortis: https://t.co/NqzD1KcYzH
— College GameDay (@CollegeGameDay) November 7, 2015
For Sid Ortis. pic.twitter.com/k3A3Aj6wro
SEXY BERT
At least a portion of Bret Bielema's press conference following the overtime win over Ole Miss was decidedly PG-13.
@BunkiePerkins pic.twitter.com/G9D7GoXiOH
— Gabriel Horn (@hophog1) November 8, 2015
WHEN YOU GOTTA GEAUX, YOU GOTTA GEAUX
Perhaps because ESPN's College GameDay traveling road show has stopped there so much, it appears that, based on the quality — or lack thereof — Tuscaloosa has pretty much run out of innovative sign ideas. Well, save for one. Or is that No. 2?
Best College GameDay Signs LSU Vs Alabama–https://t.co/7ykSkmOy9o pic.twitter.com/YPs0X3xBFZ
— BroBible (@BroBible) November 7, 2015
MOST RANDOM GAMEDAY SIGN EVER?
Deep in Alabama territory, we find the following:
The sign game is so weak in Tuscaloosa that Akron Zips Men's Golf sticks out: #GoZips pic.twitter.com/tvZBzF9cZH
— RedditCFB (@RedditCFB) November 7, 2015
Spectacular.
Winless UCF hasn't had much to cheer about this season, but Tre'Quan Smith at least gave the fans of the program something to hang their hats on on yet another lost day.
UNINTENTIONAL HEADER OF THE DAY
Sometime you're in the wrong place at the wrong time. And sometimes when you find yourself in such a spot you also find yourself hurting, as one official in the Penn State-Northwestern game discovered.
Christian Hackenberg was unable to beat the ref's perfect coverage. https://t.co/Yboaj5MBon pic.twitter.com/B6W6boFQmN
— SB Nation GIF (@SBNationGIF) November 7, 2015
POLICE TWEET OF THE DAY
With Brandon Allen carving up their defense, some Ole Miss fans apparently looked for some help from the men in blue in slowing down the Arkansas quarterback.
Asking us to kick the Arkansas QB out of the stadium is not a legit reason to dial 911. #ARKvsMISS
— Oxford Police Dept (@OxfordPolice) November 7, 2015
HE SAID IT
"Those were Madden numbers. Set to rookie." — North Carolina wide receiver Mack Collins, describing quarterback Marquise Williams passing for 404 yards in the first half of the blowout win over Duke.
HE SAID IT, THE SEQUEL
"Overall, the coaches and the players did a wonderful job of focusing on what's important." — Georgia head coach Mark Richt, following a dominating win over Kentucky that came on the heels of a week rife with rumors and speculation regarding the state of his program.
HE SAID IT, THE THREEQUEL
"He's a natural at everything he does." — Stanford quarterback Kevin Hogan, after watching teammate and running back Christian McCaffrey run the ball 23 times, catch three passes, return a pair of kickoffs and toss his first career touchdown pass.
HE SAID IT, BONUS EDITION
"I'm pretty offended by it, that it was called unsportsmanlike conduct penalty. There was really … everything was to not deceive." — Michigan head coach Jim Harbaugh, addressing the fact that his Wolverines were penalized for "intent to deceive."
HE SAID IT, THE FINAL ONE
"I got an explanation. They said that the receiver was pushed out of bounds… everybody saw the replay. I'm not qualified for that job. My job is to coach and I'm going to do the very best I can. That's somebody else's job." — Michigan State head coach Mark Dantonio, biting his tongue following the controversial ending in the loss to Nebraska.
STREAKING
10 wins to start the 2015 season have pushed Ohio State's nation's best winning streak to 22 straight. With TCU's 16-game winning streak snapped… and Memphis' 15-game streak snapped… and Michigan State's 12-game streak snapped, Clemson is next up at 12 in a row.
On the other side of the won-loss ledger, the "proud" owner of the nation's longest losing streak is Kansas at 12 straight, followed by UCF (11) and Eastern Michigan (eight).
GOING BOWLING
Entering Week 9, there were 41 teams that had secured bowl eligibility. Exiting the weekend, there are now 51 teams eligible for the postseason with four weeks left in the regular season. The newest additions hit double digits at 10: Air Force, Arkansas State, Georgia, Miami, North Carolina State, Northern Illinois, Oregon, USC, Washington State and Western Michigan.
There are 41 bowl games this season — counting the two College Football Playoff semifinals — meaning 82 teams will need to reach the six-win threshold in order for teams with sub-.500 records to remain where they belong: at home during the postseason.
S.I.D. NOTE OF THE WEEK I
There are five FBS head coaches who serve as their own offensive coordinator and two as their own defensive coordinator:
Dana Holgorsen (West Virginia, OC)
Mike Leach (Washington State, OC)
Paul Johnson (Georgia Tech, OC)
Doug Martin (NM State, OC)
Mark Whipple (UMass, OC)
Rocky Long (San Diego State, DC)
Derek Mason (Vanderbilt, DC)
S.I.D. NOTE OF THE WEEK II
Urban Meyer is a perfect 26-0 in games played in October (14-0) and November (13-0) at Ohio State and is 42-3 in his career in games in which he has more than one week to prepare for an opponent. That latter record includes bowl games and season openers as well as bye weeks.
S.I.D. NOTE OF THE WEEK III
Running back Jacques Patrick had three rushing touchdowns, while Travis Rudolph caught three touchdown passes against Syracuse, marking the first time in Florida State history a Seminole rushed for three touchdowns in a single game and another caught three touchdowns in the same game.
S.I.D NOTE OF THE WEEK IV
Oregon is the only team in the nation to score at least 80 touchdowns in each of the last five seasons. The Ducks led the nation in touchdowns scored in 2014 (90), 2012 (89) and 2010 (81), while ranking second in 2011 (88) and fourth in 2013 (81). Only Baylor has scored 80-plus TDs at least three times in the last five years. The Ducks have scored 48 in nine games this season and are in danger of seeing that 80-plus streak come to an end, while the Bears have scored an FBS-best 63 in eight contests.
S.I.D. NOTE OF THE WEEK V
Duke has posted a combined record of 25-7 during the first eight games of the last four seasons. From 2004-07, the last four seasons before David Cutcliffe took over the program, Duke was 3-29 in its first eight games of those years.
Courtesy of the Wisconsin sports information department, a graphic showing the top five teams, percentage-wise, in holding their opponents below their seasonal points-per-game average.
OFF THE CHARTS, PART II
Courtesy of the Wisconsin sports information department
OFF THE CHARTS, PART III
Courtesy of the Oregon sports information department
OFF THE CHARTS, PART IV
Courtesy of the North Carolina State sports information department, the most balanced FBS offenses entering Week 10
(Writer's note: obviously, the passing yards for NC State should be 1,721. Deal with it, and move on.)
There are nine current FBS head coaches who did not play college football: Todd Berry (Louisiana-Monroe), Tracy Claeys (Minnesota), David Cutcliffe (Duke), Sonny Dykes (California), Dennis Franchione (Texas State), Hugh Freeze (Ole Miss), Paul Johnson (Georgia Tech), Mike Leach (Washington State) and Chad Morris (SMU).
YOU DON'T SAY
Since giving up 35 points to Alabama in their season opener, Wisconsin has surrendered an average of just 9.8 points per game. In those nine games, the Badgers have allowed 10 points or less six times. The most they've given up in a single game in this stretch is 24 in a win over Maryland this weekend.
In 2015, more than 75 FBS quarterbacks have attempted at least 200 passes, and just two have thrown one interception: Mississippi State's Dak Prescott (300) and Florida State's Everett Golson (207). No quarterbacks who have attempted at least 200 passes have gone pick-less. The player with the most attempts without an interception this year had been LSU's Brandon Harris with 128, but he threw his first pick in the loss to Alabama. That honor now goes to Navy's Keenan Reynolds, who has no interceptions in his 56 attempts this season. Texas' Tyrone Swoopes has 55 pick-less throws.
… Clemson is now 11-0 when quarterback Deshaun Watson starts and finishes games? They are 12-1 overall in games in which the sophomore starts.
… Arkansas running back Alex Collins became the third player in SEC history with three consecutive 1,000-yard rushing seasons, joining former Georgia great Herschel Walker and former Razorback Darren McFadden?
… Baylor wide receiver Corey Coleman's 20 receiving touchdowns in nine games this season were more than 108 FBS teams entering Week 10? Georgia Southern has thrown eight touchdown passes in the last 20 games over the past two seasons.
… DeAndre Washington now has 1,036 yards rushing on the season, becoming the first Texas Tech player to crack the 1,000-yard barrier since Byron Hanspard rushed for 2,000 in 1996?
… Arizona State's D.J. Foster has now caught a pass in 49 consecutive games, breaking the Pac-12 record of 48 set by USC's Kareem Kelly (1999-2002)? Central Michigan's Bryan Anderson (2006-09) holds the FBS record at 54 in a row.
… Ohio State's Urban Meyer is the only coach in FBS history with four seasons of 13 or more wins? Alabama's Nick Saban has three such seasons, while Washington's Chris Petersen and Nebraska's Tom Osborne have two each.
… Tom Herman became the first head coach in Houston history to win the first nine games of his career with the Cougars? Back in 1990, John Jenkins won his first eight.
… Iowa's 9-0 start matches the best start in school history, accomplished the first and only time back in 2009? The Hawkeyes have never started a season 10-0.
… Kansas has lost 34 consecutive true road games and, overall, 37 consecutive played away from Lawrence? The Jayhawks have also lost 30 consecutive Big 12 road games.
… Baylor (No. 14 Oklahoma, No. 12 Oklahoma State, No. 5 TCU) and Minnesota (No. 15 Michigan, No. 1 Ohio State, No. 10 Iowa) are the only teams currently scheduled to play three straight games against teams that were either in the Associated Press Top 15 when they played them or are currently in that Top 15?
… Florida and Michigan are the only teams to hold three FBS opponents without a touchdown this season?
… UCLA is 31-0 when leading at halftime under Jim Mora?
… the Border War between Colorado State and Wyoming is the longest continuous rivalry west of the Mississippi, played every season since 1946?
Tags: Alex Collins, Brandon Allen, Brandon Harris, Bryan Anderson, Christian McCaffrey, Corey Coleman, D.J. Foster, Dak Prescott, Dalvin Cook, DeAndre Washington, Derrick Henry, DeShone Kizer, Doug Martin, Ezekiel Elliott, Jacques Patrick, Josh Doctson, Keenan Reynolds, Kevin Hogan, Leonard Fournette, Marquise Williams, Matt Johns, Matt Johnson, Travis Rudolph, Tyrone Swoopes
Texas' spring game a showcase for true frosh QB Shane Buechele April 16, 2016 4:19 pm Texas QB Jerrod Heard to miss rest of spring with shoulder sprain March 31, 2016 12:19 pm Texas QB Jerrod Heard injures shoulder; severity to be determined March 30, 2016 2:02 pm Texas holds on for momentum-building upset of QB-depleted No. 12 Baylor December 5, 2015 3:57 pm The Fifth Quarter: Week 10 Rewind November 8, 2015 2:31 am No. TCU cranks up the defense in Texas-sized blowout of Longhorns October 3, 2015 3:48 pm Joe Wickline v. Oklahoma State trail set for March 2016 September 29, 2015 6:22 pm Unspecial teams cost Texas again in loss to No. 24 Oklahoma State September 26, 2015 7:39 pm Texas uses running game to lead No. 24 Oklahoma State at the half September 26, 2015 5:11 pm Jerrod Heard earns start at QB for Texas and leads TD drive on first series September 12, 2015 8:28 pm Charlie Strong shakes up Texas coaching duties September 8, 2015 8:20 pm No. 11 Notre Dame flattens Texas, 38-3 September 5, 2015 11:11 pm


text:
-Media Center
Media Center / Press Releases
DNNGo.xBlog
LOCAL CHILDREN'S BOOK ON THE FOREST FEATURES ON TV
The National Library and Information Services (NALIS) has teamed up with local author, Oprah Francis, for the locally produced Marvin and Friends Craft and Storytime mini-series which is currently being aired on TTT, Saturdays, 9:30 am and 3:30 pm and on Tuesdays 4:30 pm.
The mini-series, which premiered on March 20, features animated storytime sessions and craft activities based on the animals featured in the two part book series, The Adventures of Marvin the Mischievous Manicou - Far From Home and The Adventures of Marvin the Mischievous Manicou - Forest Wars. In addition to these two books, the author has a well-produced Marvin and Friends Activity Book which features the manicou, red howler monkey, tatu, quenk, kiskadee and iguana.
Through these books the author seeks to promote local wildlife through fun and creative learning. In addition to educating young readers about flora, fauna and sites in Trinidad and Tobago, Marvin's playful adventures also aim to help children understand valuable lessons in life such as the power of constructive dialogue to resolve conflict rather than seeking revenge and thinking about the consequences of their actions before they act.
Francis explained that the mini-series also aims to provide educational and engaging material for children, specially during the COVID-19 pandemic. She also added, "Trinidad and Tobago is rich in culture and heritage, and I think our children deserve to see that on the programmes they watch and in the books they read. For me, this is a step in the right direction, towards increasing the availability and accessibility of local content for our children in a way that is fun and engaging, all at the same."
The craft and storytelling sessions were recorded at select public libraries across the country and five copies of each book were donated to the Heritage Library. Accepting the books on NALIS' behalf on March 2, was Cherylann Quamina Baptiste, acting director of the Heritage Library Division who said that she was excited to receive the publications which are colourful, imaginative and can be used to empower children to make informed, healthy decisions.
Tags: | Categories: Press Releases 2021| Return
DNNGO.xBlog.DashBoard
NALIS' TRAINING OFFICER AWARDED COMMONWEALTH FOUNDATION FELLOWSHIP 2001
ACTIVITIES AT SOME PUBLIC LIBRARIES
NATIONAL LIBRARY WEEK CELEBRATIONS, May 14th - 20th 2001
MALONEY PUBLIC LIBRARY CLOSED FOR RENOVATIONS
PAMELLA BENSON ELECTED PRESIDENT AT INFOLAC MEETING
DIEGO MARTIN PUBLIC LIBRARY MOVING TO A NEW LOCATION
CANCER AWARENESS LECTURES AT PRINCES TOWN, CARNEGIE FREE LIBRARIES
NALIS/HISPANIC WOMEN'S GROUP LAUNCH BILINGUAL STORY HOUR
NALIS TO HOLD STORY TELLING COMPETITION
NALIS LAUNCHES NEW BOOK
Page 39 of 39 FirstPrevious 35363738[39] NextLast
Press Releases 2000 (2)
Press Releases 2001 (14)
National Library and Information System Authority (NALIS),
23 Abercromby Street,
Port of Spain 100509,
Trinidad and Tobago, W. I.
Fax : +1(868) 625-6096
Email : nalis@nalis.gov.tt
Monday to Thursday - 8.00am to 4.15pm and
Friday - 8.00am to 4.00pm
Library Hours :
Monday to Friday - 8.30am to 5.00pm and
Saturday - 9:00am to 1:00pm
BROWSER CAPABILITIES
THIS WEBSITE WORKS BEST ON THE FOLLOWING BROWSERS :
Mozilla Firefox 3.6+

redpajama_set_name: RedPajamaCommonCrawl


Soon Prison Island open in Borlänge!
Keep your eyes open! In the end of October, Prison Island will open, right in the center of Borlänge. You will find the awesome entertainment at Sveatorget, next to the Gym Må Bättre.
At Prison Island in Borlänge you will find everything you need for an unforgettable day. More than 20 challenging adventure cells, and also a brand-new Spa and relax studio.


Looking for the most cost-effective home improvement? New windows and doors will perpetually protect your home. They will help keep you and your family comfortable by sealing your home off from the outside. In addition to reducing air leaks and heat transfer, new windows and doors can help reduce energy costs by 7 – 15% annually. More comfort in your home and more money in your pocket.
The rays of the sun are great for warming up the pool but are a menace when it comes to your belongings. Harsh ultraviolet (UV) light will damage surfaces and fade colours. Fortunately, improved glass options can block out the harmful rays and protect against fading.
You might not notice the noise level in your home now, but the minute you get replacement windows and doors you will hear a significant difference. This is especially true if you live in more heavily populated areas. Because of the advancements in insulation, new doors and windows will drown noise pollution. You won't even hear your neighbours, even if you are surrounded on all sides.
Home invaders can easily infiltrate outdated windows and doors. All it would take is some well-placed force with a crowbar and they're in. New windows and doors have improved locks, better design and stronger materials. Crooks will have a much harder time breaking in and you can rest easy knowing your home is secure.
Want to give your home a makeover without spending a fortune? New windows and doors can give you that fast and affordable upgrade you seek. Though this is not the most practical benefit of new windows and doors, it certainly is something for homeowners to consider, especially if you are looking to sell. Through customized finishes, hardware, trim, and glass you can create a look and feel to match any personal style.
If you are thinking of an update for your home call Dayside Windows and Doors today. Our energy efficient options that meet the new standards will improve your security, your comfort and your wallet. Stay comfortable inside by upgrading with Dayside! Contact us today to get a free in-home consultation and a Dayside expert will guide you through your savings today.


Famous Historical Home Photo Postcard. c1950s.
Famous Historical Home Photo Postcard. c1908.
Famous Historical Building Photo Postcard. c1950.
Famous Historical Home Photo Postcard. C1915.
Famous Historical Building Postcard. C1910.
Famous Historical Home B&W Photo Postcard 1899.
RPPC Woman in Chair Portrait Postcard. c1910.
RPPC Woman's Portrait Postcard. c1915.
RPPC Portrait of Two Women Postcard. c1910.
RPPC Man's Portrait Postcard. c1908.
Famous Historical Building Photo Postcard. c1970.
RPPC Lady in Chair Postcard. c1915.
Famous Historical Home Photo Linen Postcard c1928.
Famous Historical Home Photo Linen Postcard 1948.
Famous Historical Home Photo Linen Postcard 1943.
RPPC Man's Portrait Postcard. c1910.
RPPC Woman's Portrait Postcard. c1910.
Famous Historical Home Photo Postcard.
RPPC Woman in Sunday Best Postcard. c1915.


Adam Morris, left, and Daryl Thomas, members of the newly minted Frederick Saltwater Anglers group, caught and released this white marlin over Labor Day weekend fishing with Rob Pellicot.
Now is arguably prime-time to get offshore, as long as the weather cooperates, which it hasn't for me. In fact, it's been downright rude, scrubbing three scheduled trips, including one for this weekend. But that's my sob story; not so much for the hundreds of sport anglers from Virginia Beach to south Jersey who have run to the Hudson and Washington canyons to chase pelagics, particularly billfish. Throw in mahi mahi, wahoo, tilefile, and even cobia — Patrick Coomes' scored a 70-pounder at Little Gull — and it's easy to see why anglers are having a ball.
Speaking of "good news," the other day NOAA Fisheries continued to deny pelagic longline vessels access into the East Florida Coast Pelagic Longline Closed Area, a conservation zone off-limits to this type of fishing gear.
Closer to home, over the Labor Day weekend locals Dale and Dave Dirks, Kevin Thomas, Jane Millman, Kevin McMenamin and their friend Danny Collision of Roanoke had a great weekend on board Dale's sportfisher, Heatwave. They kicked things off with a limit of blueline tiles — Danny Collision got a 12.5-pound citation — and then kept the good times rolling by bailing dolphin, the largest of which was a 23.50-pounder decked by Jane.
Jane Millman (left) and Kevin Thomas, both of Annapolis, show off a pair of gaffer mahi mahi taken on board Dale Dirks' (Edgewater) sportfisher, Heatwave.
Another group to cash in on the fun was Rob Pellicot, Daryl Thomas and Adam Morris, all members of the recently formed Frederick Saltwater Anglers group. They went to the Washington Canyon on Rob's center console Reel Screamer and had a blast catching white marlin and mahis. Hopefully, the fish will stick around bit longer for those of us snake-bit by bad weather windows.
So here's the challenge: In eight hours, catch-and-release as many different gamefish species as you can — rockfish, white perch, weakfish, spotted seatrout (do toadfish count?) — on one of six oyster restoration bars sprinkled around the Choptank River. That's the basic format for the low-key "Rod & Reef Slam," yet the long-term goal is far more important: Highlighting the importance of oyster reefs as both crucial fish habitat and natural water filters.
The Chesapeake Oyster Alliance, a coalition of 40 or so Bay conservation groups, has set a goal to plant 10 billion new oysters in Virginia and Maryland waters by 2025.
tackle. The powerboat and kayak divisions each require an entry fee of $50, but youth anglers can participate for free if they're a member of the Maryland chapter of the Coastal Conservation Association, a whopping $10 a year. Anglers can start fishing at 6:30 a.m,. but must stop at 2:30 p.m., after which, from 3-6 p.m., the all-important "after party" and awards presentation takes center stage at Lowes Wharf Marina Inn in Sherwood on the Shore. If you don't fish, for $10 you can go to the party, and that gets you food and entertainment.
The tournament is being co-sponsored by CBF, NOAA's Chesapeake Bay Office, CCA MD, and the Maryland's DNR. The title sponsor is Curtis Stokes & Associates, Inc. For more information, contact CBF's Hilary Gibson at (443) 482-2097 or hgibson@cbf.org.
Thru Oct. 20: Dove Season, first split. Check DNR website for complete regulations.
Thru Sept. 15: Early resident Canada goose season, Eastern zone. Check DNR website for complete regulations.
Thru Sept. 25: Early resident Canada goose season, Western Zone. Check DNR website for complete regulations.
Sept. 10: Pasadena Sportfishing Group's Monthly Meeting. Earleigh Heights VFC, 161 Ritchie Highway (Route 2) Severna Park. Guest speaker is Capt. George Bentz, Jr. of Drizzle Bar Charters. Meeting begins 7:30 p.m. Free to the public.
Sept. 15: Pasadena Sportfishing Group's "White Perch Open." $50 entry fee required per team (up to 4 anglers). Captain's meeting Sept. 10 at 7 p.m. at PSG's monthly meeting, Earleigh Heights VFC, 161 Ritchie Hwy (Route 2).
Sept. 17-29: September Teal Season. Check DNR website for complete regulations.
Sept. 20: Public meeting on Cobia Management Plan. Hosted by the Potomac River Fisheries Commission and Department of Natural Resource. Meeting begins at 6 p.m. at PRFC's facility, 222 Taylor Street, Colonial Beach, Va. Contact Ellen Cosby (PRFC) at (804) 224-7148 or Lynn Fegley (MD DNR) at (410) 260-8285.
Sept. 22: "Rod & Reef Slam" Fishing Tournament. Benefits oyster restoration that improves water quality and fish habitat. Three Divisions: Youth, Kayak and Powerboat. Party at Lowe's Wharf Marina & Inn, Sherwood. Register at ianglertournament.com/2018-rod-and-reef-slam-angling-oyster-restoration.
Sept. 28-30: Red-Trout Tournament, hosted by CCAMD at American Legion, Crisfield. Register and more information@ccamd.org.
Oct. 12-13: CBKA Charity Kayak Fishing Tournament. Camp Wright on Kent Island. Benefits Heroes on the Water and CCA MD. Registration at chesapeakebaykayakanglers.com.
Oct. 20: Rocktober Cup, hosted by Baltimore Chapter, CCA MD. Details at information@ccamd.org.
Nov. 3: Fish For A Cure. Monies raised in the Paul C. Dettor Captain's Challenge funds the Survivorship Program at AAMC's Geaton and JoAnn DeCesaris Cancer Institute. Details at fishforacure.org.


We have listed a new property at 114 2964 TRETHEWEY ST in Abbotsford.
Recently Updated Private Ground Floor Unit! Renos include: Lino in Kitchens & Baths, Refinished Cupboards w/ New Hardware, Recent Countertops, New Baseboards, New Laminate in Living Area & Bdrms, New 2" Blinds, New Washer/Dryer, Master Bath Vanity & more! This 2 bdrm 2 bath condo is in a fantastic location backing onto a private, quiet trail. Great layout w/ Breakfast Bar open to Kitchen, & Generous Sized Master Bdrm w/walk in closet & updated ensuite. Cozy gas fireplace & in suite laundry. Additional outdoor parking space has been leased to the owners until June 30 2017. Walk to shopping, schools & more. Great location within minutes of all amenities. Secured underground parking, & pets allowed complete this condo!


Remember Samuel "Joe the Plumber" Wurzelbacher from the last rodeo? He's the guy from Toledo that got his fifteen minutes as a campaign prop for John McCain in 2008. Well, he's running for Congress from Ohio against Marcy Kaptur (D), the longest-serving woman in Congress. But the enthusiasm he generated from the Tea Party and the Palinistas four years ago has faded, and his campaign is running on fumes.
Reports filed with the Federal Elections Commission show Mr. Wurzelbacher (R., Springfield Township) raised $39,678 in the third quarter this year and $365,784 for the race so far. Miss Kaptur (D.,Toledo) raised $208,139 in the same quarter and a total of $968,159 in the 2012 election contest so far. As of Sept. 30, she had $245,269 in cash left in her campaign account.
Maybe he can be a guest star on Sarah Palin's next reality show: Tales from the Dork Side.
Wow! He "makes" $60,000 a year running for Congress. That sounds like a pretty good gig. Sounds like more trickle up economics to me.
He was made to return a dress suit he'd bought with campaign funds. He didn't have one and needed to look "professional" for the fans. It never dawned on me you could make a living running for congress. Maybe he's found his niche. The other day he had a debate with Marcy who is one tough cookie. I wonder how that turned out. I missed it.
AND has it ever occurred to you that those who rant about the 47% dependent on government are precisely those who have had life-long careers in government? The congressman from our district has been dependent on government checks, either through his father's 30 years in Congress or his own jobs in State government or in Congress, is one of those.
$7,013.00 for legal fees? I guess we can assume that means he's trying to hide his real birth certificate and selective service records, and keep his college transcripts sealed. Oh, wait…forget about the transcripts.
$7,000 for a lawyer? That's a cheap lawyer and probably money wasted.
I gather "running" for office if fairly lucrative hence that Christine the witch woman, Newt Gingrich, and Joe The Not Really A Plumber.
I'm a BIG fan of Marcy Kaptur. I wish we had dozens just like her!


text:
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import {RemoteCall} from './remote_call.js';

/**
 * Sends a command to the controlling test harness, namely and usually, the
 * chrome FileManagerBrowserTest harness: it expects the command to contain
 * the 'name' of the command, and any required or optional arguments of the
 * command, e.g.,
 *
 *   await sendTestMessage({
 *     name: 'addEntries', // command with volume and entries arguments
 *     volume: volume,
 *     entries: entries
 *   });
 *
 * @param {Object} command Test command to send. The object is converted to
 *     a JSON string prior to sending.
 * @return {Promise} Promise to be fulfilled with the value returned by the
 *     chrome.test.sendMessage callback.
 */
export function sendTestMessage(command) {
  if (typeof command.name === 'string') {
    return new Promise(function(fulfill) {
      chrome.test.sendMessage(JSON.stringify(command), fulfill);
    });
  } else {
    const error = 'sendTestMessage requires a command.name <string>';
    throw new Error(error);
  }
}

/**
 * Wait (aka pause, or sleep) for the given time in milliseconds.
 * @param {number} time Time in milliseconds.
 * @return {Promise} Promise that will resolve after Time in milliseconds
 *     has elapsed.
 */
export function wait(time) {
  return new Promise(function(resolve) {
    setTimeout(resolve, time);
  });
}

/**
 * Verifies if there are no Javascript errors in the given app window by
 * asserting the count returned by the app.getErrorCount remote call.
 * @param {!RemoteCall} app RemoteCall interface to the app window.
 * @param {function()=} callback Completion callback.
 * @return {Promise} Promise to be fulfilled on completion.
 */
export async function checkIfNoErrorsOccuredOnApp(app, callback) {
  const count = await app.callRemoteTestUtil('getErrorCount', null, []);
  chrome.test.assertEq(0, count, 'The error count is not 0.');
  if (callback) {
    callback();
  }
}

/**
 * Adds check of chrome.test to the end of the given promise.
 * @param {Promise} promise Promise to add the check to.
 * @param {Array<!RemoteCall>} apps An array of RemoteCall interfaces.
 */
export async function testPromiseAndApps(promise, apps) {
  const finished = chrome.test.callbackPass(function() {
    // The callbackPass is necessary to avoid prematurely finishing tests.
    // Don't use chrome.test.succeed() here to avoid doubled success log.
  });
  try {
    await promise;
    await Promise.all(apps.map(app => checkIfNoErrorsOccuredOnApp(app)));
  } catch (error) {
    chrome.test.fail(error.stack || error);
    return;
  }
  finished();
}

/**
 * Interval milliseconds between checks of repeatUntil.
 * @type {number}
 * @const
 */
export const REPEAT_UNTIL_INTERVAL = 200;

/**
 * Interval milliseconds between log output of repeatUntil.
 * @type {number}
 * @const
 */
export const LOG_INTERVAL = 3000;

/**
 * Returns caller's file, function and line/column number from the call stack.
 * @return {string} String with the caller's file name and line/column number,
 *     as returned by exception stack trace. Example "at /a_file.js:1:1".
 */
export function getCaller() {
  const error = new Error('For extracting error.stack');
  const ignoreStackLines = 3;
  const lines = error.stack.split('\n');
  if (ignoreStackLines < lines.length) {
    const caller = lines[ignoreStackLines];
    // Strip 'chrome-extension://oobinhbdbiehknkpbpejbbpdbkdjmoco' prefix.
    return caller.replace(/(chrome-extension:\/\/\w*)/gi, '').trim();
  }
  return '';
}

/**
 * Returns a pending marker. See also the repeatUntil function.
 * @param {string} caller name of test function that originated the operation,
 *     it's the return of getCaller() function.
 * @param {string} message Pending reason including %s, %d, or %j markers. %j
 *     format an object as JSON.
 * @param {...*} var_args Values to be assigined to %x markers.
 * @return {Object} Object which returns true for the expression: obj instanceof
 *     pending.
 */
export function pending(caller, message, var_args) {
  // |index| is used to ignore caller and message arguments subsisting markers
  // (%s, %d and %j) within message with the remaining |arguments|.
  let index = 2;
  const args = arguments;
  message = String(message);
  const formattedMessage = message.replace(/%[sdj]/g, function(pattern) {
    const arg = args[index++];
    switch (pattern) {
      case '%s':
        return String(arg);
      case '%d':
        return Number(arg);
      case '%j':
        return JSON.stringify(arg);
      default:
        return pattern;
    }
  });
  const pendingMarker = Object.create(pending.prototype);
  pendingMarker.message = caller + ': ' + formattedMessage;
  return pendingMarker;
}

/**
 * Waits until the checkFunction returns a value but a pending marker.
 * @param {function():*} checkFunction Function to check a condition. It can
 *     return a pending marker created by a pending function.
 * @return {!Promise} Promise to be fulfilled with the return value of
 *     checkFunction when the checkFunction reutrns a value but a pending
 *     marker.
 */
export async function repeatUntil(checkFunction) {
  let logTime = Date.now() + LOG_INTERVAL;
  while (true) {
    const result = await checkFunction();
    if (!(result instanceof pending)) {
      return result;
    }
    if (Date.now() > logTime) {
      console.warn(result.message);
      logTime += LOG_INTERVAL;
    }
    await wait(REPEAT_UNTIL_INTERVAL);
  }
}

/**
 * Sends the test |command| to the browser test harness and awaits a 'string'
 * result. Calls |callback| with that result.
 * @param {Object} command Test command to send. Refer to sendTestMessage()
 *    above for the expected format of a test |command| object.
 * @param {function(string)} callback Completion callback.
 * @param {Object=} opt_debug If truthy, log the result.
 */
export async function sendBrowserTestCommand(command, callback, opt_debug) {
  const caller = getCaller();
  if (typeof command.name !== 'string') {
    chrome.test.fail('Invalid test command: ' + JSON.stringify(command));
  }
  const result = await repeatUntil(async () => {
    const tryAgain = pending(caller, 'Sent BrowserTest ' + command.name);
    try {
      const result = await sendTestMessage(command);
      if (typeof result !== 'string') {
        return tryAgain;
      }
      return result;
    } catch (error) {
      console.log(error.stack || error);
      return tryAgain;
    }
  });
  if (opt_debug) {
    console.log('BrowserTest ' + command.name + ': ' + result);
  }
  callback(result);
}

/**
 * Waits for an app window with the URL |windowUrl|.
 * @param {string} windowUrl URL of the app window to wait for.
 * @return {Promise} Promise to be fulfilled with the window ID of the
 *     app window.
 */
export function waitForAppWindow(windowUrl) {
  const caller = getCaller();
  const command = {'name': 'getAppWindowId', 'windowUrl': windowUrl};
  return repeatUntil(async () => {
    const result = await sendTestMessage(command);
    if (result == 'none') {
      return pending(caller, 'getAppWindowId ' + windowUrl);
    }
    return result;
  });
}

/**
 * Get all the browser windows.
 * @param {number} expectedInitialCount The number of windows expected before
 *     opening a new one.
 * @return {Object} Object returned from chrome.windows.getAll().
 */
export async function getBrowserWindows(expectedInitialCount = 0) {
  const caller = getCaller();
  return repeatUntil(async () => {
    const result = await new Promise(function(fulfill) {
      chrome.windows.getAll({'populate': true}, fulfill);
    });
    if (result.length === expectedInitialCount) {
      return pending(caller, 'getBrowserWindows ' + result.length);
    }
    return result;
  });
}

/**
 * Adds the given entries to the target volume(s).
 * @param {Array<string>} volumeNames Names of target volumes.
 * @param {Array<TestEntryInfo>} entries List of entries to be added.
 * @param {function(boolean)=} opt_callback Callback function to be passed the
 *     result of function. The argument is true on success.
 * @return {Promise} Promise to be fulfilled when the entries are added.
 */
export async function addEntries(volumeNames, entries, opt_callback) {
  if (volumeNames.length == 0) {
    opt_callback && opt_callback(true);
    return;
  }
  const volumeResultPromises = volumeNames.map(function(volume) {
    return sendTestMessage({
      name: 'addEntries',
      volume: volume,
      entries: entries,
    });
  });
  if (!opt_callback) {
    return volumeResultPromises;
  }
  try {
    await Promise.all(volumeResultPromises);
  } catch (error) {
    opt_callback(false);
    throw error;
  }
  opt_callback(true);
}

/**
 * @enum {string}
 * @const
 */
export const EntryType = {
  FILE: 'file',
  DIRECTORY: 'directory',
  LINK: 'link',
  SHARED_DRIVE: 'team_drive',
  COMPUTER: 'Computer'
};
Object.freeze(EntryType);

/**
 * @enum {string}
 * @const
 */

export const SharedOption = {
  NONE: 'none',
  SHARED: 'shared',
  SHARED_WITH_ME: 'sharedWithMe',
  NESTED_SHARED_WITH_ME: 'nestedSharedWithMe',
};
Object.freeze(SharedOption);

/**
 * @typedef {{
 *   downloads: string,
 *   drive: string,
 *   android_files: string,
 * }}
 *
 */
export let getRootPathsResult;

/**
 * @typedef {{
 *   DOWNLOADS: string,
 *   DRIVE: string,
 *   ANDROID_FILES: string,
 * }}
 */
export const RootPath = {
  DOWNLOADS: '/must-be-filled-in-test-setup',
  DRIVE: '/must-be-filled-in-test-setup',
  ANDROID_FILES: '/must-be-filled-in-test-setup',
};
Object.seal(RootPath);

/**
 * The capabilities (permissions) for the Test Entry. Structure should match
 * TestEntryCapabilities in file_manager_browsertest_base.cc. All capabilities
 * default to true if not specified.
 *
 * @typedef {{
 *    canCopy: (boolean|undefined),
 *    canDelete: (boolean|undefined),
 *    canRename: (boolean|undefined),
 *    canAddChildren: (boolean|undefined),
 *    canShare: (boolean|undefined),
 * }}
 */
export let TestEntryCapabilities;

/**
 * The folder features for the test entry. Structure should match
 * TestEntryFolderFeature in file_manager_browsertest_base.cc. All features
 * default to false is not specified.
 *
 * @typedef {{
 *    isMachineRoot: (boolean|undefined),
 *    isArbitrarySyncFolder: (boolean|undefined),
 *    isExternalMedia: (boolean|undefined),
 * }}
 */
export let TestEntryFolderFeature;

/**
 * Parameters to creat a Test Entry in the file manager. Structure should match
 * TestEntryInfo in file_manager_browsertest_base.cc.
 *
 * Field details:
 *
 * sourceFileName: Source file name that provides file contents (file location
 * relative to /chrome/test/data/chromeos/file_manager/).
 *
 * targetPath: Name of entry on the test file system. Used to determine the
 * actual name of the file.
 *
 * teamDriveName: Name of the team drive this entry is in. Defaults to a blank
 * string (no team drive). Team Drive names must be unique.
 *
 * computerName: Name of the computer this entry is in. Defaults to a blank
 * string (no computer). Computer names must be unique.
 *
 * lastModifiedTime: Last modified time as a text to be shown in the last
 * modified column.
 *
 * nameText: File name to be shown in the name column.
 *
 * sizeText: Size text to be shown in the size column.
 *
 * typeText: Type name to be shown in the type column.
 *
 * capabilities:  Capabilities of this file. Defaults to all capabilities
 * available (read-write access).
 *
 * folderFeature: Folder features of this file. Defaults to all features
 * disabled.
 *
 * pinned: Drive pinned status of this file. Defaults to false.
 *
 * alternateUrl: File's Drive alternate URL. Defaults to an empty string.
 *
 * @typedef {{
 *    type: EntryType,
 *    sourceFileName: (string|undefined),
 *    targetPath: (string|undefined),
 *    teamDriveName: (string|undefined),
 *    computerName: (string|undefined),
 *    mimeType: (string|undefined),
 *    sharedOption: (SharedOption|undefined),
 *    lastModifiedTime: (string|undefined),
 *    nameText: (string|undefined),
 *    sizeText: (string|undefined),
 *    typeText: (string|undefined),
 *    capabilities: (TestEntryCapabilities|undefined),
 *    folderFeature: (TestEntryFolderFeature|undefined),
 *    pinned: (boolean|undefined),
 *    alternateUrl: (string|undefined),
 * }}
 */
export let TestEntryInfoOptions;

/**
 * File system entry information for tests. Structure should match TestEntryInfo
 * in file_manager_browsertest_base.cc
 * TODO(sashab): Remove this, rename TestEntryInfoOptions to TestEntryInfo and
 * set the defaults in the record definition above.
 */
export class TestEntryInfo {
  /**
   * @param {TestEntryInfoOptions} options Parameters to create the
   *     TestEntryInfo.
   */
  constructor(options) {
    this.type = options.type;
    this.sourceFileName = options.sourceFileName || '';
    this.thumbnailFileName = options.thumbnailFileName || '';
    this.targetPath = options.targetPath;
    this.teamDriveName = options.teamDriveName || '';
    this.computerName = options.computerName || '';
    this.mimeType = options.mimeType || '';
    this.sharedOption = options.sharedOption || SharedOption.NONE;
    this.lastModifiedTime = options.lastModifiedTime;
    this.nameText = options.nameText || '';
    this.sizeText = options.sizeText || '';
    this.typeText = options.typeText || '';
    this.capabilities = options.capabilities;
    this.folderFeature = options.folderFeature;
    this.pinned = !!options.pinned;
    this.alternateUrl = options.alternateUrl || '';
    Object.freeze(this);
  }

  static getExpectedRows(entries) {
    return entries.map(function(entry) {
      return entry.getExpectedRow();
    });
  }

  /**
   * Obtains a expected row contents of the file in the file list.
   */
  getExpectedRow() {
    return [this.nameText, this.sizeText, this.typeText, this.lastModifiedTime];
  }
}

/**
 * Filesystem entries used by the test cases.
 * TODO(sashab): Rename 'nameText', 'sizeText' and 'typeText' to
 * 'expectedNameText', 'expectedSizeText' and 'expectedTypeText' to reflect that
 * they are the expected values for those columns in the file manager.
 *
 * @type {Object<TestEntryInfo>}
 * @const
 */
export const ENTRIES = {
  hello: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'text.txt',
    targetPath: 'hello.txt',
    mimeType: 'text/plain',
    lastModifiedTime: 'Sep 4, 1998, 12:34 PM',
    nameText: 'hello.txt',
    sizeText: '51 bytes',
    typeText: 'Plain text'
  }),

  world: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'video.ogv',
    thumbnailFileName: 'image.png',
    targetPath: 'world.ogv',
    mimeType: 'video/ogg',
    lastModifiedTime: 'Jul 4, 2012, 10:35 AM',
    nameText: 'world.ogv',
    sizeText: '59 KB',
    typeText: 'OGG video'
  }),

  webm: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'world.webm',
    targetPath: 'world.webm',
    mimeType: 'video/webm',
    lastModifiedTime: 'Jul 4, 2012, 10:35 AM',
    nameText: 'world.webm',
    sizeText: '17 KB',
    typeText: 'WebM video'
  }),

  video: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'video_long.ogv',
    targetPath: 'video_long.ogv',
    mimeType: 'video/ogg',
    lastModifiedTime: 'Jan 14, 2019, 16:01 PM',
    nameText: 'video_long.ogv',
    sizeText: '166 KB',
    typeText: 'OGG video'
  }),

  subtitle: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'video.vtt',
    targetPath: 'world.vtt',
    mimeType: 'text/vtt',
    lastModifiedTime: 'Feb 7, 2019, 15:03 PM',
    nameText: 'world.vtt',
    sizeText: '46 bytes',
    typeText: 'VTT text'
  }),

  unsupported: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'random.bin',
    targetPath: 'unsupported.foo',
    mimeType: 'application/x-foo',
    lastModifiedTime: 'Jul 4, 2012, 10:36 AM',
    nameText: 'unsupported.foo',
    sizeText: '8 KB',
    typeText: 'FOO file'
  }),

  desktop: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'image.png',
    thumbnailFileName: 'image.png',
    targetPath: 'My Desktop Background.png',
    mimeType: 'image/png',
    lastModifiedTime: 'Jan 18, 2038, 1:02 AM',
    nameText: 'My Desktop Background.png',
    sizeText: '272 bytes',
    typeText: 'PNG image'
  }),

  image2: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'image2.png',
    // No file extension.
    targetPath: 'image2',
    mimeType: 'image/png',
    lastModifiedTime: 'Jan 18, 2038, 1:02 AM',
    nameText: 'image2',
    sizeText: '4 KB',
    typeText: 'PNG image'
  }),

  image3: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'image3.jpg',
    targetPath: 'image3.jpg',
    mimeType: 'image/jpeg',
    lastModifiedTime: 'Jan 18, 2038, 1:02 AM',
    nameText: 'image3.jpg',
    sizeText: '3 KB',
    typeText: 'JPEG image'
  }),

  smallJpeg: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'small.jpg',
    targetPath: 'small.jpg',
    mimeType: 'image/jpeg',
    lastModifiedTime: 'Jan 18, 2038, 1:02 AM',
    nameText: 'small.jpg',
    sizeText: '1 KB',
    typeText: 'JPEG image'
  }),

  // Used to differentiate between .jpg and .jpeg handling.
  sampleJpeg: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'small.jpg',
    targetPath: 'sample.jpeg',
    mimeType: 'image/jpeg',
    lastModifiedTime: 'Jan 18, 2038, 1:02 AM',
    nameText: 'sample.jpeg',
    sizeText: '1 KB',
    typeText: 'JPEG image'
  }),

  brokenJpeg: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'broken.jpg',
    targetPath: 'broken.jpg',
    mimeType: 'image/jpeg',
    lastModifiedTime: 'Jan 18, 2038, 1:02 AM',
    nameText: 'broken.jpg',
    sizeText: '1 byte',
    typeText: 'JPEG image'
  }),

  exifImage: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'exif.jpg',
    // No mime type.
    targetPath: 'exif.jpg',
    lastModifiedTime: 'Jan 18, 2038, 1:02 AM',
    nameText: 'exif.jpg',
    sizeText: '31 KB',
    typeText: 'JPEG image'
  }),

  webpImage: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'image.webp',
    // No mime type.
    targetPath: 'image.webp',
    lastModifiedTime: 'Jan 19, 2021, 1:10 PM',
    nameText: 'image.webp',
    sizeText: '5 KB',
    typeText: 'WebP image'
  }),

  rawImage: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'raw.orf',
    // No mime type.
    targetPath: 'raw.orf',
    lastModifiedTime: 'May 20, 2019, 10:10 AM',
    nameText: 'raw.orf',
    sizeText: '214 KB',
    typeText: 'ORF image'
  }),

  nefImage: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'raw.nef',
    // No mime type.
    targetPath: 'raw.nef',
    lastModifiedTime: 'May 9, 2015, 11:16 PM',
    nameText: 'raw.nef',
    sizeText: '92 KB',
    typeText: 'NEF image'
  }),

  beautiful: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'music.ogg',
    // No mime type.
    targetPath: 'Beautiful Song.ogg',
    lastModifiedTime: 'Nov 12, 2086, 12:00 PM',
    nameText: 'Beautiful Song.ogg',
    sizeText: '14 KB',
    typeText: 'OGG audio'
  }),

  photos: new TestEntryInfo({
    type: EntryType.DIRECTORY,
    targetPath: 'photos',
    lastModifiedTime: 'Jan 1, 1980, 11:59 PM',
    nameText: 'photos',
    sizeText: '--',
    typeText: 'Folder'
  }),

  testDocument: new TestEntryInfo({
    type: EntryType.FILE,
    targetPath: 'Test Document',
    mimeType: 'application/vnd.google-apps.document',
    lastModifiedTime: 'Apr 10, 2013, 4:20 PM',
    nameText: 'Test Document.gdoc',
    sizeText: '--',
    typeText: 'Google document'
  }),

  testSharedDocument: new TestEntryInfo({
    type: EntryType.FILE,
    targetPath: 'Test Shared Document',
    mimeType: 'application/vnd.google-apps.document',
    sharedOption: SharedOption.SHARED,
    lastModifiedTime: 'Mar 20, 2013, 10:40 PM',
    nameText: 'Test Shared Document.gdoc',
    sizeText: '--',
    typeText: 'Google document'
  }),

  testSharedFile: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'text.txt',
    targetPath: 'test.txt',
    mimeType: 'text/plain',
    sharedOption: SharedOption.SHARED,
    lastModifiedTime: 'Mar 20, 2012, 11:40 PM',
    nameText: 'test.txt',
    sizeText: '51 bytes',
    typeText: 'Plain text',
    pinned: true
  }),

  sharedDirectory: new TestEntryInfo({
    type: EntryType.DIRECTORY,
    targetPath: 'Shared',
    sharedOption: SharedOption.SHARED,
    lastModifiedTime: 'Jan 1, 2000, 1:00 AM',
    nameText: 'Shared',
    sizeText: '--',
    typeText: 'Folder'
  }),

  sharedDirectoryFile: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'text.txt',
    targetPath: 'Shared/file.txt',
    mimeType: 'text/plain',
    sharedOption: SharedOption.SHARED,
    lastModifiedTime: 'Jan 1, 2000, 1:00 AM',
    nameText: 'file.txt',
    sizeText: '51 bytes',
    typeText: 'Plain text'
  }),

  newlyAdded: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'music.ogg',
    targetPath: 'newly added file.ogg',
    mimeType: 'audio/ogg',
    lastModifiedTime: 'Sep 4, 1998, 12:00 AM',
    nameText: 'newly added file.ogg',
    sizeText: '14 KB',
    typeText: 'OGG audio'
  }),

  tallText: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'tall.txt',
    targetPath: 'tall.txt',
    mimeType: 'text/plain',
    lastModifiedTime: 'Sep 4, 1998, 12:34 PM',
    nameText: 'tall.txt',
    sizeText: '546 bytes',
    typeText: 'Plain text',
  }),

  plainText: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'plaintext',
    // No mime type, no file extension.
    targetPath: 'plaintext',
    lastModifiedTime: 'Sep 4, 1998, 12:34 PM',
    nameText: 'plaintext',
    sizeText: '32 bytes',
    typeText: 'Plain text',
  }),

  utf8Text: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'utf8.txt',
    targetPath: 'utf8.txt',
    mimeType: 'text/plain',
    lastModifiedTime: 'Sep 4, 1998, 12:34 PM',
    nameText: 'utf8.txt',
    sizeText: '191 bytes',
    typeText: 'Plain text',
  }),

  mHtml: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'page.mhtml',
    targetPath: 'page.mhtml',
    mimeType: 'multipart/related',
    lastModifiedTime: 'Sep 4, 1998, 12:34 PM',
    nameText: 'page.mhtml',
    sizeText: '421 bytes',
    typeText: 'HTML document',
  }),

  tallHtml: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'tall.html',
    targetPath: 'tall.html',
    mimeType: 'text/html',
    lastModifiedTime: 'Sep 4, 1998, 12:34 PM',
    nameText: 'tall.html',
    sizeText: '589 bytes',
    typeText: 'HTML document',
  }),

  tallPdf: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'tall.pdf',
    targetPath: 'tall.pdf',
    mimeType: 'application/pdf',
    lastModifiedTime: 'Sep 4, 1998, 12:34 PM',
    nameText: 'tall.pdf',
    sizeText: '15 KB',
    typeText: 'PDF document',
  }),

  popupPdf: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'popup.pdf',
    targetPath: 'popup.pdf',
    mimeType: 'application/pdf',
    lastModifiedTime: 'Jul 4, 2000, 10:42 AM',
    nameText: 'popup.pdf',
    sizeText: '538 bytes',
    typeText: 'PDF document',
  }),

  imgPdf: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'img.pdf',
    targetPath: 'imgpdf',
    mimeType: 'application/pdf',
    lastModifiedTime: 'Jul 4, 2012, 10:35 AM',
    nameText: 'imgpdf',
    sizeText: '1608 bytes',
    typeText: 'PDF document'
  }),

  smallDocx: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'text.docx',
    targetPath: 'text.docx',
    mimeType: 'application/vnd.openxmlformats-officedocument' +
        '.wordprocessingml.document',
    lastModifiedTime: 'Jan 4, 2019, 10:57 AM',
    nameText: 'text.docx',
    sizeText: '8.7 KB',
    typeText: 'Office document',
    alternateUrl: 'https://drive.google.com/open?id=smalldocxid&usp=drive_fs',
  }),

  smallDocxHosted: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'text.docx',
    targetPath: 'synced.docx',
    mimeType: 'application/vnd.openxmlformats-officedocument' +
        '.wordprocessingml.document',
    lastModifiedTime: 'Jan 4, 2019, 10:57 AM',
    nameText: 'synced.docx',
    sizeText: '8.7 KB',
    typeText: 'Office document',
    alternateUrl: 'https://docs.google.com/document/d/smalldocxid' +
        '?rtpof=true&usp=drive_fs',
  }),

  smallDocxPinned: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'text.docx',
    targetPath: 'pinned.docx',
    mimeType: 'application/vnd.openxmlformats-officedocument' +
        '.wordprocessingml.document',
    lastModifiedTime: 'Jan 4, 2019, 10:57 AM',
    nameText: 'pinned.docx',
    sizeText: '8.7 KB',
    typeText: 'Office document',
    pinned: true,
    alternateUrl: 'https://docs.google.com/document/d/pinneddocxid' +
        '?rtpof=true&usp=drive_fs',
  }),

  smallXlsxPinned: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'sheet.xlsx',
    targetPath: 'pinned.xlsx',
    mimeType: 'application/vnd.openxmlformats-officedocument' +
        '.spreadsheetml.sheet',
    lastModifiedTime: 'Jan 10, 2020, 11:58 PM',
    nameText: 'pinned.xlsx',
    sizeText: '5.7 KB',
    typeText: 'Office spreadsheet',
    pinned: true,
    alternateUrl: 'https://docs.google.com/document/d/pinnedxlsxid' +
        '?rtpof=true&usp=drive_fs',
  }),

  smallPptxPinned: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'presentation.pptx',
    targetPath: 'pinned.pptx',
    mimeType: 'application/vnd.openxmlformats-officedocument' +
        '.presentationml.presentation',
    lastModifiedTime: 'Jan 14, 2020, 10:15 AM',
    nameText: 'pinned.pptx',
    sizeText: '35.2 KB',
    typeText: 'Office document',
    pinned: true,
    alternateUrl: 'https://docs.google.com/document/d/pinnedpptxid' +
        '?rtpof=true&usp=drive_fs',
  }),

  pinned: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'text.txt',
    targetPath: 'pinned.txt',
    mimeType: 'text/plain',
    lastModifiedTime: 'Sep 4, 1998, 12:34 PM',
    nameText: 'pinned.txt',
    sizeText: '51 bytes',
    typeText: 'Plain text',
    pinned: true,
  }),

  directoryA: new TestEntryInfo({
    type: EntryType.DIRECTORY,
    targetPath: 'A',
    lastModifiedTime: 'Jan 1, 2000, 1:00 AM',
    nameText: 'A',
    sizeText: '--',
    typeText: 'Folder'
  }),

  directoryB: new TestEntryInfo({
    type: EntryType.DIRECTORY,
    targetPath: 'A/B',
    lastModifiedTime: 'Jan 1, 2000, 1:00 AM',
    nameText: 'B',
    sizeText: '--',
    typeText: 'Folder'
  }),

  directoryC: new TestEntryInfo({
    type: EntryType.DIRECTORY,
    targetPath: 'A/B/C',
    lastModifiedTime: 'Jan 1, 2000, 1:00 AM',
    nameText: 'C',
    sizeText: '--',
    typeText: 'Folder'
  }),

  directoryD: new TestEntryInfo({
    type: EntryType.DIRECTORY,
    targetPath: 'D',
    lastModifiedTime: 'Jan 1, 2000, 1:00 AM',
    nameText: 'D',
    sizeText: '--',
    typeText: 'Folder'
  }),

  directoryE: new TestEntryInfo({
    type: EntryType.DIRECTORY,
    targetPath: 'D/E',
    lastModifiedTime: 'Jan 1, 2000, 1:00 AM',
    nameText: 'E',
    sizeText: '--',
    typeText: 'Folder'
  }),

  directoryF: new TestEntryInfo({
    type: EntryType.DIRECTORY,
    targetPath: 'D/E/F',
    lastModifiedTime: 'Jan 1, 2000, 1:00 AM',
    nameText: 'F',
    sizeText: '--',
    typeText: 'Folder'
  }),

  dotTrash: new TestEntryInfo({
    type: EntryType.DIRECTORY,
    targetPath: '.Trash',
    lastModifiedTime: 'Jan 1, 2000, 1:00 AM',
    nameText: '.Trash',
    sizeText: '--',
    typeText: 'Folder'
  }),

  deeplyBurriedSmallJpeg: new TestEntryInfo({
    type: EntryType.FILE,
    targetPath: 'A/B/C/deep.jpg',
    sourceFileName: 'small.jpg',
    mimeType: 'image/jpeg',
    lastModifiedTime: 'Jan 18, 2038, 1:02 AM',
    nameText: 'deep.jpg',
    sizeText: '886 bytes',
    typeText: 'JPEG image'
  }),

  linkGtoB: new TestEntryInfo({
    type: EntryType.LINK,
    targetPath: 'G',
    sourceFileName: 'A/B',
    lastModifiedTime: 'Jan 1, 2000, 1:00 AM',
    nameText: 'G',
    sizeText: '--',
    typeText: 'Folder'
  }),

  linkHtoFile: new TestEntryInfo({
    type: EntryType.LINK,
    targetPath: 'H.jpg',
    sourceFileName: 'A/B/C/deep.jpg',
    mimeType: 'image/jpeg',
    lastModifiedTime: 'Jan 18, 2038, 1:02 AM',
    nameText: 'H.jpg',
    sizeText: '886 bytes',
    typeText: 'JPEG image'
  }),

  linkTtoTransitiveDirectory: new TestEntryInfo({
    type: EntryType.LINK,
    targetPath: 'T',
    sourceFileName: 'G/C',
    lastModifiedTime: 'Jan 1, 2000, 1:00 AM',
    nameText: 'T',
    sizeText: '--',
    typeText: 'Folder'
  }),

  zipArchive: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'archive.zip',
    targetPath: 'archive.zip',
    mimeType: 'application/x-zip',
    lastModifiedTime: 'Jan 1, 2014, 1:00 AM',
    nameText: 'archive.zip',
    sizeText: '743 bytes',
    typeText: 'Zip archive'
  }),

  debPackage: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'package.deb',
    targetPath: 'package.deb',
    mimeType: 'application/vnd.debian.binary-package',
    lastModifiedTime: 'Jan 1, 2014, 1:00 AM',
    nameText: 'package.deb',
    sizeText: '724 bytes',
    typeText: 'DEB file'
  }),

  tiniFile: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'archive.tar.gz',
    targetPath: 'test.tini',
    mimeType: 'application/gzip',
    lastModifiedTime: 'Jan 1, 2014, 1:00 AM',
    nameText: 'test.tini',
    sizeText: '439 bytes',
    typeText: 'Crostini image file'
  }),

  hiddenFile: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'text.txt',
    targetPath: '.hiddenfile.txt',
    mimeType: 'text/plain',
    lastModifiedTime: 'Sep 30, 2014, 3:30 PM',
    nameText: '.hiddenfile.txt',
    sizeText: '51 bytes',
    typeText: 'Plain text'
  }),

  // Team-drive entries.
  teamDriveA: new TestEntryInfo({
    type: EntryType.SHARED_DRIVE,
    teamDriveName: 'Team Drive A',
    capabilities: {
      canCopy: true,
      canDelete: true,
      canRename: true,
      canAddChildren: true,
      canShare: true,
    },
  }),

  teamDriveAFile: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'text.txt',
    targetPath: 'teamDriveAFile.txt',
    mimeType: 'text/plain',
    lastModifiedTime: 'Sep 4, 1998, 12:34 PM',
    nameText: 'teamDriveAFile.txt',
    sizeText: '51 bytes',
    typeText: 'Plain text',
    teamDriveName: 'Team Drive A',
    capabilities: {
      canCopy: true,
      canDelete: true,
      canRename: true,
      canAddChildren: false,
      canShare: true,
    },
  }),

  teamDriveADirectory: new TestEntryInfo({
    type: EntryType.DIRECTORY,
    targetPath: 'teamDriveADirectory',
    lastModifiedTime: 'Jan 1, 2000, 1:00 AM',
    nameText: 'teamDriveADirectory',
    sizeText: '--',
    typeText: 'Folder',
    teamDriveName: 'Team Drive A',
    capabilities: {
      canCopy: true,
      canDelete: true,
      canRename: true,
      canAddChildren: true,
      canShare: false,
    },
  }),

  teamDriveAHostedFile: new TestEntryInfo({
    type: EntryType.FILE,
    targetPath: 'teamDriveAHostedDoc',
    mimeType: 'application/vnd.google-apps.document',
    lastModifiedTime: 'Apr 10, 2013, 4:20 PM',
    nameText: 'teamDriveAHostedDoc.gdoc',
    sizeText: '--',
    typeText: 'Google document',
    teamDriveName: 'Team Drive A',
  }),

  teamDriveB: new TestEntryInfo({
    type: EntryType.SHARED_DRIVE,
    teamDriveName: 'Team Drive B',
    capabilities: {
      canCopy: true,
      canDelete: false,
      canRename: false,
      canAddChildren: false,
      canShare: true,
    },
  }),

  teamDriveBFile: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'text.txt',
    targetPath: 'teamDriveBFile.txt',
    mimeType: 'text/plain',
    lastModifiedTime: 'Sep 4, 1998, 12:34 PM',
    nameText: 'teamDriveBFile.txt',
    sizeText: '51 bytes',
    typeText: 'Plain text',
    teamDriveName: 'Team Drive B',
    capabilities: {
      canCopy: true,
      canDelete: false,
      canRename: false,
      canAddChildren: false,
      canShare: true,
    },
  }),

  teamDriveBDirectory: new TestEntryInfo({
    type: EntryType.DIRECTORY,
    targetPath: 'teamDriveBDirectory',
    lastModifiedTime: 'Sep 4, 1998, 12:34 PM',
    nameText: 'teamDriveBDirectory',
    sizeText: '--',
    typeText: 'Folder',
    teamDriveName: 'Team Drive B',
    capabilities: {
      canCopy: true,
      canDelete: false,
      canRename: false,
      canAddChildren: false,
      canShare: true,
    },
  }),

  // Computer entries.
  computerA: new TestEntryInfo({
    type: EntryType.COMPUTER,
    computerName: 'Computer A',
    folderFeature: {
      isMachineRoot: true,
    },
  }),

  computerAFile: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'text.txt',
    targetPath: 'computerAFile.txt',
    mimeType: 'text/plain',
    lastModifiedTime: 'Sep 4, 1998, 12:34 PM',
    nameText: 'computerAFile.txt',
    sizeText: '51 bytes',
    typeText: 'Plain text',
    computerName: 'Computer A',
    capabilities: {
      canCopy: true,
      canDelete: true,
      canRename: true,
      canAddChildren: false,
      canShare: true,
    },
  }),

  computerAdirectoryA: new TestEntryInfo({
    type: EntryType.DIRECTORY,
    targetPath: 'A',
    lastModifiedTime: 'Jan 1, 2000, 1:00 AM',
    computerName: 'Computer A',
    nameText: 'A',
    sizeText: '--',
    typeText: 'Folder'
  }),

  // Read-only and write-restricted entries.
  // TODO(sashab): Generate all combinations of capabilities inside the test, to
  // ensure maximum coverage.

  // A folder that can't be renamed or deleted or have children added, but can
  // be copied and shared.
  readOnlyFolder: new TestEntryInfo({
    type: EntryType.DIRECTORY,
    targetPath: 'Read-Only Folder',
    lastModifiedTime: 'Jan 1, 2000, 1:00 AM',
    nameText: 'Read-Only Folder',
    sizeText: '--',
    typeText: 'Folder',
    capabilities: {
      canCopy: true,
      canAddChildren: false,
      canRename: false,
      canDelete: false,
      canShare: true
    },
  }),

  // A google doc file that can't be renamed or deleted, but can be copied and
  // shared.
  readOnlyDocument: new TestEntryInfo({
    type: EntryType.FILE,
    targetPath: 'Read-Only Doc',
    mimeType: 'application/vnd.google-apps.document',
    lastModifiedTime: 'Mar 20, 2013, 10:40 PM',
    nameText: 'Read-Only Doc.gdoc',
    sizeText: '--',
    typeText: 'Google document',
    capabilities: {
      canCopy: true,
      canAddChildren: false,
      canRename: false,
      canDelete: false,
      canShare: true
    },
  }),

  // A google doc file that can't be renamed, deleted, copied or shared.
  readOnlyStrictDocument: new TestEntryInfo({
    type: EntryType.FILE,
    targetPath: 'Read-Only (Strict) Doc',
    mimeType: 'application/vnd.google-apps.document',
    lastModifiedTime: 'Mar 20, 2013, 10:40 PM',
    nameText: 'Read-Only (Strict) Doc.gdoc',
    sizeText: '--',
    typeText: 'Google document',
    capabilities: {
      canCopy: false,
      canAddChildren: false,
      canRename: false,
      canDelete: false,
      canShare: false
    },
  }),

  // A regular file that can't be renamed or deleted, but can be copied and
  // shared.
  readOnlyFile: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'image4.jpg',
    targetPath: 'Read-Only File.jpg',
    mimeType: 'image/jpeg',
    lastModifiedTime: 'Jan 18, 2038, 1:02 AM',
    nameText: 'Read-Only File.jpg',
    sizeText: '9 KB',
    typeText: 'JPEG image',
    capabilities: {
      canCopy: true,
      canAddChildren: false,
      canRename: false,
      canDelete: false,
      canShare: true
    },
  }),

  // A regular file that can't be renamed, but can be deleted.
  deletableFile: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'text.txt',
    targetPath: 'Deletable File.txt',
    mimeType: 'text/plain',
    lastModifiedTime: 'Sep 4, 1998, 12:34 PM',
    nameText: 'Deletable File.txt',
    sizeText: '51 bytes',
    typeText: 'Plain text',
    capabilities: {
      canCopy: true,
      canAddChildren: false,
      canRename: false,
      canDelete: true
    },
  }),

  // A regular file that can't be deleted, but can be renamed.
  renamableFile: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'text.txt',
    targetPath: 'Renamable File.txt',
    mimeType: 'text/plain',
    lastModifiedTime: 'Sep 4, 1998, 12:34 PM',
    nameText: 'Renamable File.txt',
    sizeText: '51 bytes',
    typeText: 'Plain text',
    capabilities: {
      canCopy: true,
      canAddChildren: false,
      canRename: true,
      canDelete: false
    },
  }),

  // Default Android directories.
  directoryDocuments: new TestEntryInfo({
    type: EntryType.DIRECTORY,
    targetPath: 'Documents',
    lastModifiedTime: 'Jan 1, 2000, 1:00 AM',
    nameText: 'Documents',
    sizeText: '--',
    typeText: 'Folder',
    capabilities: {
      canCopy: false,
      canAddChildren: true,
      canRename: false,
      canDelete: false,
      canShare: true
    },
  }),

  directoryMovies: new TestEntryInfo({
    type: EntryType.DIRECTORY,
    targetPath: 'Movies',
    lastModifiedTime: 'Jan 1, 2000, 1:00 AM',
    nameText: 'Movies',
    sizeText: '--',
    typeText: 'Folder',
    capabilities: {
      canCopy: false,
      canAddChildren: true,
      canRename: false,
      canDelete: false,
      canShare: true
    },
  }),

  directoryMusic: new TestEntryInfo({
    type: EntryType.DIRECTORY,
    targetPath: 'Music',
    lastModifiedTime: 'Jan 1, 2000, 1:00 AM',
    nameText: 'Music',
    sizeText: '--',
    typeText: 'Folder',
    capabilities: {
      canCopy: false,
      canAddChildren: true,
      canRename: false,
      canDelete: false,
      canShare: true
    },
  }),

  directoryPictures: new TestEntryInfo({
    type: EntryType.DIRECTORY,
    targetPath: 'Pictures',
    lastModifiedTime: 'Jan 1, 2000, 1:00 AM',
    nameText: 'Pictures',
    sizeText: '--',
    typeText: 'Folder',
    capabilities: {
      canCopy: false,
      canAddChildren: true,
      canRename: false,
      canDelete: false,
      canShare: true
    },
  }),

  documentsText: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'text.txt',
    targetPath: 'Documents/android.txt',
    mimeType: 'text/plain',
    lastModifiedTime: 'Sep 4, 1998, 12:34 PM',
    nameText: 'android.txt',
    sizeText: '51 bytes',
    typeText: 'Plain text',
  }),

  neverSync: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'text.txt',
    targetPath: 'never-sync.txt',
    mimeType: 'text/plain',
    lastModifiedTime: 'Sep 4, 1998, 12:34 PM',
    nameText: 'never-sync.txt',
    sizeText: '51 bytes',
    typeText: 'Plain text'
  }),

  sharedWithMeDirectory: new TestEntryInfo({
    type: EntryType.DIRECTORY,
    targetPath: 'Shared Directory',
    sharedOption: SharedOption.SHARED_WITH_ME,
    lastModifiedTime: 'Jan 1, 2000, 1:00 AM',
    nameText: 'Shared Directory',
    sizeText: '--',
    typeText: 'Folder'
  }),

  sharedWithMeDirectoryFile: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'text.txt',
    targetPath: 'Shared Directory/file.txt',
    mimeType: 'text/plain',
    sharedOption: SharedOption.NESTED_SHARED_WITH_ME,
    lastModifiedTime: 'Jan 1, 2000, 1:00 AM',
    nameText: 'file.txt',
    sizeText: '51 bytes',
    typeText: 'Plain text'
  }),

  crdownload: new TestEntryInfo({
    type: EntryType.FILE,
    sourceFileName: 'text.txt',
    targetPath: 'hello.crdownload',
    mimeType: 'application/octet-stream',
    lastModifiedTime: 'Sep 4, 1998, 12:34 PM',
    nameText: 'hello.crdownload',
    sizeText: '51 bytes',
    typeText: 'CRDOWNLOAD file'
  }),

  pluginVm: new TestEntryInfo({
    type: EntryType.DIRECTORY,
    targetPath: 'PvmDefault',
    lastModifiedTime: 'Jan 1, 1980, 11:59 PM',
    nameText: 'Windows Files',
    sizeText: '--',
    typeText: 'Folder'
  }),
};

/**
 * Creates a test file, which can be inside folders, however parent folders
 * have to be created by the caller using |createTestFolder|.
 * @param {string} path File path to be created,
 * @return {TestEntryInfo}
 */
export function createTestFile(path) {
  const name = path.split('/').pop();
  return new TestEntryInfo({
    targetPath: path,
    nameText: name,
    type: EntryType.FILE,
    lastModifiedTime: 'Sep 4, 1998, 12:34 PM',
    sizeText: '51 bytes',
    typeText: 'Plain text',
    sourceFileName: 'text.txt',
    mimeType: 'text/plain'
  });
}

/**
 * Returns the count for |value| for the histogram |name|.
 * @param {string} name The histogram to be queried.
 * @param {number} value The value within that histogram to query.
 * @return {!Promise<number>} A promise fulfilled with the count.
 */
export async function getHistogramCount(name, value) {
  const result = await sendTestMessage({
    'name': 'getHistogramCount',
    'histogramName': name,
    'value': value,
  });
  return /** @type {number} */ (JSON.parse(result));
}

/**
 * Returns the sum for for the histogram |name|.
 * @param {string} name The histogram to be queried.
 * @return {!Promise<number>} A promise fulfilled with the sum.
 */
export async function getHistogramSum(name) {
  const result = await sendTestMessage({
    'name': 'getHistogramSum',
    'histogramName': name,
  });
  return /** @type {number} */ (parseInt(JSON.parse(result), 10));
}

/**
 * Returns the count for the user action |name|.
 * @param {string} name The user action to be queried.
 * @return {!Promise<number>} A promise fulfilled with the count.
 */
export async function getUserActionCount(name) {
  const result = await sendTestMessage({
    'name': 'getUserActionCount',
    'userActionName': name,
  });
  return /** @type {number} */ (JSON.parse(result));
}

redpajama_set_name: RedPajamaGithub


The Galereya Avenue Hotel is a true combination of style, service and hospitality. The interiors, designed in classic style and decorated with Renaissance art reproductions, and high-level comfort create atmosphere of elegance. The kind and diligent staff will make you feel yourself at home.
The hotel offers 170 single and double rooms with king-size beds.
If you want to spend your evening in pleasant and cozy atmosphere, the hotel restaurant of European cuisine is always at your service. The breakfasts with wide range of meals are included in the room price.
Galereya Avenue is situated in a few minutes walk away from the metro station 'Prospekt Mira'. The main sights, such as All-Russian Exhibition Center 'VVC' and National Sports Complex 'Olimpiyskiy', are very close to the hotel. There are also various restaurants, bars, museums, churches, theaters (the Bolshoy and Maly Theaters, the Operetta, the Old Moscow Circus on Tsvetnoy Bulvar), parks, shopping centers, etc. Here, at the bank of the Moscow River, you can see the Church of the Ascension, built in the XVI century, which became a UNESCO World Heritage Site in 1994.


text:
Top of the Morning
UN Agencies Issue Dire warning on S. Sudan, Nigeria, Yemen and Somalia
A rare joint press conference the Secretary General and heads of the UNDP, OCHA and WFP. "Sounding the alarm on behalf of more than 20 million people in South Sudan, Somalia, Yemen, and north-east Nigeria facing devastating levels of food insecurity, Secretary-General António Guterres joined other top United Nations officials today calling for "strong and urgent" action from the international community to help the already-fragile countries avert catastrophe. "Famine is already a reality in parts of South Sudan. Unless we act now, it is only a matter of time until it affects other areas and other countries. We are already facing a tragedy; we must avoid it becoming a catastrophe," said the Secretary-General, stressing: "This is preventable if the international community takes decisive action." Briefing the press at UN Headquarters in New York alongside the UN Emergency Relief Coordinator, Stephen O'Brien, the UN Development Programme (UNDP) Administrator, Helen Clark, and by video conference, the Executive Director of the World Food Programme (WFP) Ertharin Cousin, Mr. Guterres said the UN needs at least $4.4 billion by the end of March to avert a catastrophe." (UN News Center http://bit.ly/2lGTFMk)
A Mexican Standoff…"Mexico's lead negotiator with the Trump administration is slamming new rules that call for deporting people living illegally in the U.S. to Mexico, regardless of whether they are citizens of that country. "I want to say clearly and emphatically that the government of Mexico and the Mexican people do not have to accept provisions that one government unilaterally wants to impose on the other," Mexican Foreign Minister Luis Videgaray said Wednesday, according to Reuters. "We will not accept it, because there's no reason why we should, and because it is not in the interests of Mexico," he told reporters at Mexico's foreign ministry in Mexico City…Secretary of State Rex Tillerson and Homeland Security Secretary John Kelly are due to arrive in Mexico Wednesday afternoon for talks between both nations on immigration and security." (The Hill http://bit.ly/2lGRCbf)
France is killing all its ducks. Here's why. (UN Dispatch http://bit.ly/2lGTH75)
Here's How US Allies Are Trying to Convince Trump To Take Climate Change Seriously (UN Dispatch http://bit.ly/2lGUiFG)
Previous France is Killing All of Its Ducks. Here's Why
Next Famine Strikes South Sudan. UN Warns Three Other Countries Could be Next. One of the Biggest Catastrophes of a Generation
A Consequential Day for One the Most Consequential Country in the Region
MSF: Violence Against Civilians is Surging in CAR
Protests Spread in Venezuela
Latest Data on Global Development Assistance Released


text:
Junior News / Senior News / Social / Uncategorised
Vale Drew Malcolm
The funeral will be held next Wednesday 7th October at 10.00am at the Frankston Arts Centre.
There will be refreshments available afterwards to be held at the Frankston RSL from 12pm.
A Tribute to Drew Malcolm
It's with a heavy heart that On Sunday 27th of September Delacombe Park CC announce the loss of one its own. Drew Malcolm passed away at 11.55am after a brave two year battle with cancer.
DPCC extends its deepest sympathies to Georgia, Beau, Ebony, Jill, George, Joel, Trent and the rest of Drews family.
Drew started his career at Delacombe Park Cricket Club coming to play with his brother Joel and some of his best mates and soon made an impact as a player in the 90's. Coming from a soccer background as a goal keeper, he immediately took to keeping wickets and worked his way up the grades over the years to become a regular player in the 2nds and featuring as a keeper in the 1stXI including keeping wicket to England Test/One Day all rounder Ian Blackwell.
Drewdles had some of great highlights over the years including a top score of 150 not out against Tyabb in District 2nds in the 2001/02 Season. Drew featured in several Final series including a loosing 2nds XI Grand Final in 1997/98 versus Langwarrin but more famously in the Premiership winning team in 2005/06 where he won a District 2nd XI Flag versus Red Hill.
It was in this Grand final that Drew played one of the great games ever played at Delacombe Park. On a fast ground that needed a score of 300 plus to win, DPCC Batted first looked a little in trouble until Drew came in wacked a timely 56 runs (one of only 2 scores of 50+ for the entire Grand Final) to get the team to a modest 9/276. He then took one of the more infamous catches at Delacombe Park in front of a crowded, more predominately DPCC supporter hill, Red Hill best batsman, batting a number three smashed one straight at Drew who juggled it and while falling backwards, kicked it back up and caught it lying on the ground. Red Hill never recovered and were bowled out for 197 handing Drew and many of his team mates their first ever cricket Premiership. It was definitely a Premiership winning catch and most pencilled him down as the man of the match, but Drew the way he was always put everyone else first and it was always about the team.
Drew served Delacombe in many facets including , milo co-ordinate, committee member, Treasurer, Secretary and as President, as well as hosting several Max Shields Medal Vote counts nights (The Senior Best and Fairest). His contribution to the club both on and off the field saw him receive a Life Membership to Delacombe Park cricket club in 2013 as recognition.
Drew epitomised what Delacombe Park Cricket Club means to so many. His loyalty, strength and sense of mate ship always shone through and his love of the club that became such a huge support network for him over the last two years was obvious right until the end.
Drew will always be in our heart, gone but never forgotten.
We will always be 'Doing it for Drew'
Feel free to leave/post your story about Drew in the comments section (it may not show up straight away as comments have to be approved)
Grand Final Day & Season Launch


Our bespoke art portrait photo sessions are a chance to experience more creative ways of portraiture lighting.
For the client who is really interested in something different for their final images, more of a statement piece and a statement of what they want to say in the image too, an image that will make that great talking point at any social gathering.
Whether it be dramatic or ambient lighting why not book a photo session that is unique to you?


So, I would like to begin working with stencyl full time. I used to work with Unity3D for about 2 years, working mainly as a 3D artist. I have plans for a 2D game, but I have next to no knowledge when it comes to pixel art. Programming is no problem for me, so I do not need to worry about that.
If anyone can point me in the right direction of pixel art tuts for beginners, that would be a great help!
Following is a thread on tools for creating some of the arts. I'll let others chime in on the pixel art tutorials.
Any reasons you can share with us from moving 3D to 2D arts?
The great list of pixel-related resources.
And thanks for the link, now checking it out.


We are going crazy over this soft and stretchy stripe top! The stripes are so cute!! But it's really all those ruffles that have stolen the show! It is the perfect everyday outfit if you want to be comfy and cute! Pair it with a trendy necklace to make it even more stylish!
This top is cute! It fits great, the color is true to the color in the picture. The material is very soft.