Billy Martell is headed to Mass. Maritime.
When he met with Whitman-Hanson Regional High head football coach Mike Driscoll to discuss his junior campaign, Billy Martell was told something he'd work tirelessly over the next year to make a reality.
"Coach Driscoll said, 'You're one of a few kids who has the talent to play in college,''' recalled Martell.
After an offseason consisting of many grunts, followed by a Patriot League All-Star season, Martell has committed to play football at Massachusetts Maritime Academy.
Martell, who said he's looking into studying emergency management, has had his eyes on attending the Buzzards Bay-based college since August.
After converting to wide receiver as a sophomore, Martell transitioned back to running back this season and flourished, taking 73 carries for 518 yards and three touchdowns. His 7.1 yards per carry led the team.
Martell had his best outing against Bridgewater-Raynham, gashing the Trojans' defense for 104 yards and a score.
On defense Martell, a two-year starting safety, posted 52 tackles and a team-leading three interceptions.
"I just wanted to show everyone who I am this season," Martell said.
Martell said it was a rewarding season for him.
Driscoll constantly lauded Martell's speed throughout the season, calling him "the fastest player on the team." Whether it was at running back or tracking down the ball carrier, Martell was instrumental in the Panthers' success.
Mass. Maritime, which competes in the Massachusetts State Collegiate Athletic Conference of NCAA Division III, finished 2-8 last season.
"I'm looking to work on my speed and improve my footwork," Martell said.
Sarah O'Shaughnessy takes the helm of the gymnasitcs team.
There are alot of changes with the gymnastics team this season at Whitman-Hanson Regional High School.
The first is the program is now a co-op with Middleboro, expanding on the two schools' relationship that includes boys' and girls' swimming/diving teams.
Secondly, Sarah O'Shaughnessy is the new voice of the club, taking over for Rachel Cohen-Sferuzza, last season's Patriot League Coach of the Year. O'Shaughnessy has an extensive gymnastics background and has been coaching since the age 14.
After residing in Florida for the past couple of years, O'Shaughnessy returned to Massachusetts in August.
"Someone reached out to the director of mygym, Tammy, and asked her if she would be interested and since she coaches Notre Dame [Academy of Hingham], she was like, 'I think you should do it,'" O'Shaughnessy said.
The Panthers, who finished 9-4 last season with the help of regional qualifier Britney Blackstone, are led by senior captain Erin McCoy.
With teamwork key in gymnastics, O'Shaughnessy said she's aiming to create it between the two schools. Six of the team's girls come from W-H, while the other four come from Middleboro.
"It's honestly about making it so the two teams are comfortable and knowing who their teammates are and everything and just have a good time, get to know each other," O'Shaughnessy said.
O'Shaughnessy said she's still trying to figure out where the team is strength-wise.
"They're working together and there haven't been any negative things, so," O'Shaughnessy said.
Other players from W-H include captain Joelle Puopolo, Kate Pihl, Adrianna Caperello and Madison Scaccia.
The Panthers return to action Jan. 4 at 6:30 p.m. at Massachusetts Gymnastics Center in Pembroke for a league meet.
The Panthers will be led by captains Ally Bartlett and Samantha Perkins.
The Whitman-Hanson Regional High girls' indoor track team is aiming to stay afloat as it works its way down a grueling schedule.
With their multi-event experience and success, seniors Ally Bartlett (captain) and Dorothy DiMascio-Donohue and junior Samantha Perkins (captain) will boost the club.
"All three girls can long jump, high jump, throw the shot put, run the hurdles and dash events and can run mid-distance events if called upon," George explained.
George said he is also counting on junior Courtney Woodward, sophomore Hailey Minicucci and freshman Skylar Jordan to fill similar roles of competing in multiple events.
In the mid-distance and distance events, the Panthers will be led by the cross country team's top runner, junior Tori Boss, and senior Maeve McDonough. Sophomores Izzy Amado and Anna Sullivan are also valuable pieces due to their versatility.
It's the sprinting, hurdles and relays that have been a focal point on improvement for George. The Panthers added former standout, Samantha Richner to their staff to build up the group.
George said a few freshmen have caught his attention early on, but most namely Emily Hanrahan.
The Panthers are back in action Friday, Dec. 21 at 4:30 p.m. against Hingham at the Reggie Lewis Track and Athletic Center in Roxbury.
The boys' indoor track looks to build over the season.
Head coach Mike Driscoll's expectation of his Whitman-Hanson Regional High boys' track team is for it to show constant improvement.
The Panthers, who finished the year 2-3 last winter, have some large voids to fill with the graduation of all four of their Div. 3 All-State qualifiers in Brian Edwards, Brett Holmes, Andrew Newman and Jack Ryan.
W-H does return its fair share of talent. Senior captain Billy Martell emerged last season as one of its top sprinters and relay runners. This season, he'll throw the shot put in addition to running the 55-meter dash, 300-meter dash, long jumping and running a leg of a relay.
Martell, along with fellow senior captain Dan Kline, classmate Brandon O'Brien and junior Kyle O'Brien, are at the center of the Panthers' strength – their sprinting.
The distance runners are led by a bevy of cross country runners from the fall.
Senior captain Shane Schraut, a boys' cross county captain, will run distance and relay in addition to hurdling as well.
Other cross country runners in the fall bolstering the Panthers in the distance events will be junior Brandon Hager and sophomores Liam Cafferty, Theo Kamperides and Chris MacDonald.
Kline will also throw shot put, and chip in running a relay and hurdle.
Junior Pat Bui fills gaps in the 55-meter dash, 300-meter dash and shot put.
A look back on Week 2.
The winter action is in full swing at Whitman-Hanson Regional High.
Boys' basketball (1-1) received 21 points from junior Ben Rice and 15 from classmate Colby Ahern to defeat Quincy, 63-52, in its opener Tuesday, Dec. 11. The Panthers outscored the Presidents 36-20 in the second half to erase a five-point deficit.
On Friday, W-H fell on the road, 58-55, to Hingham. Sophomore Cole LeVangie paced Bob Rodgers' club with 14 points.
Girls' basketball (0-2) fell to Quincy, 57-44, on the road in its opener Tuesday, Dec. 11. Junior Brittany Gacicia was the Panthers' high scorer with 11. … On Friday, Jenna Olem's team hosted and fell to Hingham, 42-34. Senior captain Olivia Johnson dumped in eight points and snatched seven boards in the defeat.
Boys' hockey (1-1-1) skated to a 4-4 tie against Silver Lake on Wednesday, Dec. 12. Junior Eddie Collins scored twice, while senior captain Ed Scriven and junior assistant captain Adam Solari both added goals. … On Saturday, despite a hat trick from junior Chris Stoddard, W-H still fell to Scituate, 5-4, in a back-and-forth affair.
Boys' indoor track (1-0) edged Duxbury, 51-49, Wednesday, Dec. 12. Wins came from sophomores Liam Cafferty (mile, 4:58.41) and Theo Kamperides (2-mile, 10:48.76), juniors Brandon Hager (1,000m, 2:54.19) and Pat Bui (300m, :40.85) and senior captain Dan Kline (55m hurdles, :09.62).
Girls' indoor track (0-1) fell to Duxbury, 59-41, Wednesday, Dec. 12. Senior captain Ally Bartlett (:09:70) produced a win in the 55-meter hurdles as did sophomore Izzy Amado (3:24.15) in the 1,000-meter run and senior Maeve McDonough (12:59.17) in the 2-mile run.
Boys' swimming/diving (1-1) fell to North Quincy/ Quincy, 86-78, on Monday, Dec. 10. … The co-op upended Randolph, 91-71 on Friday.
Girls' swimming/diving (2-0) swam past North Quincy/ Quincy, 99-80, on Monday, Dec. 10. In the 100-meter backstroke, junior Madison Navicky clocked in at 1:13.47. … On Friday the co-op defeated Randolph, 88-50. Navicky qualified for states and junior Nikki Kamperides set a personal-best in the 100-meter backstroke with a time of 1:23.59.
Wrestling (1-8) was downed by Plymouth North, 48-30, Wednesday, Dec. 12. Wins via pin came from sophomore Matt Butler (126 pounds), senior Joel McInnis (152), junior captain Tyler Cullinan (170), freshman Jason Rapoza (182) and senior captain Christian Schneider (195). … On Saturday, the Panthers went 1-4 on the day in a super-quad meet. The victory came against Pembroke by a score of 41-39, while the losses came to Marshfield (42-39), Toll Gate, Rhode Island (42-39), Oliver Ames (60-18) and Duxbury (54-23). Butler finished the day 4-1 to lead Gary Rabinovitz' young team.
The Panthers look to snap a streak of two seven-win seasons.
What was once a weakness is now a strength for the Whitman-Hanson Regional High wrestling team.
The Panthers return all three of their Div. 2 South Sectional qualifiers and their top two wins leaders, as they try to push past the seven-win mark, where they've been stuck on for the past two winters.
The program's youth is its best chance to propel it to the next level. Junior captain Steve Brooks returns to the mat to compete in the 152-pound weight class yet again after posting a team-leading 19 victories and 15 pins to qualify for Div. 2 South Sectionals last season.
Sophomores Matt Butler, Damari Goldsmith-Greene and Myles McInnis headlined an impressive core of freshmen to hit the mat last season. The three combined for 38 wins. Butler returns to the 126-pound weight class after he ranked second on the team with 16 victories, placed in three tournaments and qualified for the Div. 2 South Sectionals.
"Matt Butler brings a lot of energy and experience to this year's team," Rabinovitz said.
Myles McInnis also racked up 11 victories, but in the 106-pound weight class. This winter he'll compete at 113 pounds. His brother Joel McInnis, a senior, was the team's other sectional qualifier after a 12-win season at 145 pounds, a weight class he'll return to.
"Both were varsity starters last season and have tons of experience," Rabinovitz said.
Junior Tyler Cullinan will serve as one of the captains and bump up to the 170-pound weight class from 160, where he tallied 11 wins last season.
"Tyler surprised many as a wrestler last season with a deadly headlock that I know he will be using again this season," Rabinovitz said.
Junior Matt Rock will provide the team with some much-needed depth due to his ability to compete at both 120 and 126 pounds. Senior captain Christian Schneider is back from a knee injury and will wrestle in the 195-pound weight class. A pair of freshmen in Joe Boss (106 pounds) and Jason Rapoza (182) will be looked upon to have an immediate impact.
"I look for this team to grow week after week so that we peak at the proper time, that being sectionals and then the state tournament," Rabinovitz said.
The Panthers return to mat Saturday at Dec. 15 beginning at 9:30 a.m. for a super-quad meet in Marshfield.
The senior-laden Panthers went 8-3 on the season.
When they were freshmen, Whitman-Hanson Regional High football head coach Mike Driscoll knew there was just something different about this season's group of seniors.
But the success isn't what caught his immediate attention.
As sophomores they helped lead the team to a 7-4 season, as juniors they did the same, but in their final seasons the 16 of them helped Driscoll hit a mark he hadn't since his first year as head coach. That's the eight-win plateau.
"I told the seniors how proud we were of them for their four years in the program, and I told the younger guys to remember how it feels and do what those kids did and just continue on what they did," said the eighth-year head coach.
The Panthers posted statement wins over Marshfield (41-13) in their opener, Quincy (39-0), Silver Lake (29-6) and Abington (16-0) on Thanksgiving.
With its offense working through some changes throughout the season, W-H's defense was its one constant, as it recorded three shutouts and surrendered just 11.7 points per game. The unit was led by senior captain and league all-star Mike Connors. The middle linebacker racked up a team-leading 100 tackles.
While Connors shored up the middle, senior Billy Martell was the rock in the secondary, recording 52 tackles and three interceptions from his safety position. On offense, he chipped in 518 rushing yards and three scores. The two-way threat was also a league all-star.
Senior captain Quinn Sweeney and classmate Ryan Trongone were also two-way stars for W-H on the line. Sweeney was second on the team with 85 tackles and led it with 24 tackles for loss and seven sacks en route to a league all-star selection. Trongone was second on the team with 17 tackles for loss to go with 65 tackles.
Senior Nate Beath, a transfer from Pembroke, was a three-way asset for W-H due to his punting (31.8 punt average), blocking, rushing (244 yards, two TDs) and tackling (58 tackles and 5.5 sacks).
On offense, senior captain Ethan Phelps rushed for 654 yards and 12 TDs and was tabbed a league all-star.
It's tough to find one player who had a more immense impact on the offense than senior captain Rian Schwede, who switched from wide receiver to fill a void at quarterback early in the season. In an Oct. 15 win over Quincy, he ran for, caught and threw a TD.
Driscoll said that while he's graduating significant talent off this season's roster, he's optimistic about what the future holds for his program that finished off the year with a combined freshman, JV and varsity record of 20-1.
After missing out on the tournament by two points last season, the boys' hockey team is healthy and ready to go.
After an injury-riddled second half of the season led to the Whitman-Hanson Regional High boys' hockey team missing out on the playoffs by two points last winter, everyone's healthy, and the team is looking to show what it can do when it has a clean bill of health.
Sophomore defenseman Kevin Willis, who sustained a torn ACL last season, is one of the key players back from injury for the Panthers. He, along with classmates Jack Allen and Josh Pike and junior Reed Watson, will see significant time on the blue line.
Junior forward Chris Stoddard, who was tied for fifth on the team with nine points through 12 games last winter, was sidelined for the final three weeks. This season, he'll be joined by classmates John Hagan and Eddie Collins on the second line.
"They've been in the program for three years," Googins said. "There's high expectations for that group." On the first line for the Panthers will be senior captain Ed Scriven, senior assistant captain Owen Manning and junior assistant captain Adam Solari. All are multi-sport captains and provide the team with substantial leadership.
Scriven's 11 goals were second on the team last season, and he'll be relied upon heavily to make up for the production lost with the gradation of league all-stars Korey Howard and Alex Uva, who combined for 27 goals and 26 assists.
Manning, who was also a golf captain, scored seven goals and dished out six assists last winter.
Solari's eight-goal, 11-assist campaign last winter shined a light on what he can bring to the table. But so did his election as an assistant captain.
In net, it's a three-player battle between junior R.J. Flynn, sophomore transfer from Archbishop Williams Bobby Siders and freshman Erik Dean to take over the reins from Ricky Welch.
The Panthers open the season Saturday, Dec. 8 at 3:10 p.m. at Hobomock Arenas against league opponent Pembroke.


This entry was posted on Thursday, December 6th, 2018 at 12:00 am	and is filed under accountancy. You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.


text:
Packaging & Technology
Meat, Fish & Eggs
Ready Meals & Side Dishes
Ingredient Focus
You are in : All News > Natural color innovation: Vibrancy and expressions of identity top the color charts
Natural color innovation: Vibrancy and expressions of identity top the color charts
11 Jan 2023 --- The color space has experienced a shift away from a one-size-fits-all approach. Color is being used to represent identity while social media drives innovation as consumers want vibrant, bright and eye-catching F&B. Meanwhile, manufacturers and brands continue to move toward natural colors that are more sustainable and hit the mark on clean label.
FoodIngredientsFirst speaks to color specialists GNT, Blue California and Givaudan, who dive into the latest market dynamics driving the natural colors arena and the consumer trends pushing innovation as well as what colors are going to be on-trend in 2023.
"Color is something that's used to express personal identity and beliefs. The ideas that consumers associate with color also depend on context, language and culture. These associations are hugely important to food and beverage brands as color helps consumers build a perception of a product," Julia Meyer, healthy hedonism trend specialist at GNT Group, tells us.
The Exberry Blue Beverage Solution is GNT's latest color innovation, a patented formulation technology that allows spirulina extract to remain temperature- and acid-stabilized in beverages. The solution enables manufacturers to create a wide range of blue beverages while maintaining clean and clear labels.
Blue California's leading color for 2023 is a brilliant white to replace titanium dioxide (E171) in food, beverages, pharma, cosmetic, and personal care applications while Givaudan is sporting its vibrant Pantone color of the year, Viva Magenta which delivers a range of red hues.
Beverages to quench or spark interest Online influencers are regarded as the innovators in the current coloring food landscape.
GNT has used the superfood spirulina for almost 30 years to create its blue shades. While spirulina has been used effectively in chilled smoothie and juice drink applications, it hasn't technically been feasible to use it in shelf-stable, acidified beverages until now.
It's suitable for various beverage applications, including sports, energy, and carbonated drinks, juice drinks, enhanced waters and alcoholic beverages below 20% alcohol by volume (ABV). It can achieve shades including bright turquoise, navy blue, violet and green.
"We can craft palettes to appeal to a sense of adventure or to strengthen the human connection. It's also possible to affect appetite and flavor through color, especially when used alongside other sensory cues," Meyer outlines.
"Blue was once strongly associated with synthetics, but it's leaving its 'unhealthy' image behind and becoming a fully-fledged member of the well-being color collective," she explains.
In the meantime Givaudan is leveraging the flamboyant magenta: "We can expect to see new food experiences in a range of red to pink from restaurants, new product launches, and home cooking popping up on social media," says Nathalie Pauleau, global project manager, Sense Colour, Givaudan Taste & Wellbeing.
"This is a great opportunity for the food and beverage industry since there are so many color options available from beet to a wide variety of anthocyanins-based fruit and vegetable juice concentrates, and custom blends."
Color application after titanium dioxide
A number of whitening alternatives to titanium dioxide have been innovated to comply with the recent European ban on TiO2.
Blue California's whitening agents have proven successful in chewing gums, tablets, candies, dairy, plant-based meat alternatives, protein F&B, condiments, sauces, bakery, cosmetic and personal care applications.
"With all the headlines of EFSA's ruling on the use of titanium dioxide, global manufacturers have started to increase their interest in replacing TiO2 in their food, beverage, pharma, cosmetic and personal care applications," says David Tetzlaf, marketing director at Blue California.
According to the company, about 56% of global consumers say it is important that the food they eat has bright and intense colors, and titanium dioxide is often used to achieve this.
"Titanium dioxide is a difficult pigment to replace given its broad use in a wide range of products that may require it to achieve a more appealing color, whether it is white or some other color needing white in the base product," explains Tetzlaf.
"White may signify purity, creaminess, and product quality to the end consumer, which is why it is so ubiquitous in a broad range of products." More than half of surveyed consumers believe it is important that food has bright and intense colors. (Credit: Blue California).
Blue California's whitening agents are non-GMO and made from natural food ingredients. The TiO2 alternatives provide similar UV protection and opacity compared to TiO2, but redisperse much easier in the food systems, and precipitate much less than TiO2. They are also very heat, pressure and pH stable.
Vivacious and vibrant
Givaudan is leveraging colors that are fiery, vibrant and energetic. Its Vegebrite Black Carrot is one of its most popular colors.
"Not only are consumers familiar with this ingredient, but product developers also find it versatile and easy to use in application. It's also a trending color," says Pauleau.
"As an anthocyanin, it has great heat and light stability, and we have a variety of different strengths, shades, and blends depending on the need. It can also be used to provide bright reds, pinks, or purples, depending on the application and the pH, so this one source can be the right fit for creating enticing food experiences in everything from confections to beverages and dairy."
Yellow and orange are also popular coloring foods shades in Givaudan's portfolio. The company will expand its Vegebrite offerings in 2023, from orange carrot to include a wider range of yellow to orange colors.
"These are critical colors to have in the portfolio because yellow and orange made up almost 20% of soft drink launches, between 2021 and 2022, and consumers are increasingly looking for options with labels that they recognize and understand," Pauleau outlines.
Givaudan has also expanded its Veggie Browns range. Its spirulina blue options includes a michroma oil dispersible solution and a range of purple to green ready-made blends.
"Healthy hedonism" has been coined by GNT as a key consumer trend driving color innovation. It reflects consumers' "pursuit for pleasure" and "indulgence," and is particularly driven by Gen Z consumers.
"Today's young shoppers want products that are good for people and the planet, so natural and sustainable ingredients are hugely important. At the same time, they're showing that virtuous food and drink doesn't need to have an earthy appearance," Meyer explains.
Due to the influence of social media, aesthetics largely shape the coloring foods segment.
The Healthy Hedonism color palette reflects these aspects of digitalization, such as celebrating super-optimistic next-gen creativity with vibrant color combinations to provide maximum visual impact.
"We've identified a number of specific "color directions'' as part of the broader trend. These include using soft-play pastel shades like pink, blue, green and orange to create a cute, comforting and youthful look," adds Meyer.
"It's all about delivering sensorial satisfaction – unexpected color reveals, textural changes, and satisfying squelching sounds can all add to the experience, too. Think biting into a squidgy mochi ball or breaking open fluffy cloud bread."
Cranking up creativity with color Consumers expect color reveals and textural changes to complete their eating or drinking experience.
Color, play, humor and ingenuity are valued in the contemporary color scene, with social media driving these trends by and large. In addition, many of the cutting-edge trends now start outside the food and drink industry.
As a result, companies have to look further afield to gain insights into the use and application of color in food.
Online influencers are considered to be "true innovators" in the current coloring food landscape. "TikTok is a particular hotbed of innovation. We're seeing visually striking recipes like watermelon mustard at the heart of viral videos that showcase food as experimental expression," Meyer explains.
"At the same time, though, not every trend is long-lasting. Social media trends can go viral and die in a single day. So while it's a great source of inspiration, it's important to approach it with caution."
Leveraging product labeling
Natural color solutions, such as plant-based colors, are the standard now and sets the tone of the market.
Plant-based colors are being leveraged to deliver vibrant shades that are comparable with their artificial counterparts.
The segment is still growing with continuous interest in natural and clean label color solutions.
Pauleau outlines: "We can see two specific trends. One is the use of bold colors or surprising colors to capture consumers' attention and create Instagrammable food experiences."
The color of the year, Viva Magenta, true blue or dark black colors will be used in new food product developments to attract consumers (for example, black ketchup).
"The second trend is addressing demand for natural options at an affordable cost for the food industry, as we can see a lot of pressure on price on the market. Our technical team of experts are supporting customers in providing the options that best suit the market needs, taking performance in application, clean labeling and cost in use into consideration," Pauleau says.
By Inga de Jong
GNT Blue California Givaudan Pantone Color of the Year Exberry Veggie Viva Magenta Coloring Foods Natural Colors Color Extracts Blue Superfoods Spirulina Red Pink Yellow Brown White Titanium Dioxide Clean Label
Supplier Profiles On Food Ingredients First
DDW, The Color House
Third Avenue, Centrum 100, Burton Upon Trent
DE14 2WD
ddwcolor.com
info@ddwcolor.com
ACTIVE CATEGORIES
colors - natural
Mother Nature supplies the raw materials, DDW adds more than 150 years of colouring expertise. It is a brilliant partnership that offers a complete range of natural colours as well as caramel colours, burnt sugars, and the widest variety of fruit and vegetable-based browns. It is our mission to work with our customers to create the quality natural colour solutions that result in beautiful, consumer-relevant products. All of our products, people, and capabilities are solely focused on creating natural colours.
We start with colours from natural sources like fruits, vegetables, and seeds, apply scientific expertise, and back that with more than 150 years of experience. The result is not just natural colours, but beautiful natural colour solutions that meet the needs of consumers and manufacturers alike. We deliver functional products for manufacturers with the simple label needs of the market: tried and true caramels and burnt sugars, natural colours that that ensure traceability, like our Amaize® red and chlorophylls, and even convenient easy-to-use Emulsitech®, Annatto, and Carbon Black colours.
FOOD INGREDIENTS NEWS
Univar taps clean labels and "wholesome cravings," as FDA redefines meaning of healthy food
Foodology by Univar Solutions has unveiled its "Wholesome Cravings" campaign, targeting and providing producers with ingredients and formulations required to... Read More
From sea to tray: Tesco nets discarded plastic from coastal areas for fresh fish packaging
Tesco's fresh salmon, haddock, cod and sea bass lines will be sold for the first time in trays that contain at least 30% recycled coastal plastic collected from... Read More
IFF taps into US cheese appetites with cheddar cultures launch
In the latest iteration of its Choozit series, International Flavors & Fragrances (IFF) is leveraging solutions for cheddar flavors with its Choozit Vintage. The... Read More
Precision fermentation poised to unlock potential of microorganisms for food
Food biomanufacturing is emerging as a promising proposal for companies looking to create a sustainable and resilient food system. However, challenges remain in the... Read More
"Sustainability is crucial": GNT proves significant carbon footprint reductions after switching to green energy
Externally verified data shows that GNT reduced the average carbon footprint of its plant-based EXBERRY Coloring Foods by 19% in the first year of the company's... Read More
May I also remind you to subscribe now to the Food Ingredients First newsletter service. This will bring timely news, key trends and product developments right into your inbox.
FoodIngredientsFirst
FoodIngredientsFirst.com is the leading international publisher on food ingredients and food product development. The platform is hosted by CNS Media BV, Arnhem, The Netherlands.

redpajama_set_name: RedPajamaCommonCrawl


Good morning parents and families! Here begins a week of updates from the snowy slopes of Montgenevre in the Alps.
The children left Edge Lane Retail Park at 7:30am on Saturday and began their adventure, flying out from Manchester to Turin in Italy, before completing the journey by coach up into the mountains. They are accompanied by sports coach Danny and one of our governors, Charlie Coyne (as well as all the children, staff and organisers from other Liverpool schools).
Last night, Danny said: "All safe and sound at the hotel. Everything went smoothly with the airport and travels. Tea time now before testing the ski boots."
Danny's lunchtime update says... "Great morning, had our first skiing lesson, the boys were at the top and I was on the level below so couldn't take any photos. I'll be taking some soon and sending them later after our second session."


Know Bellefontaine HS Class of 2009 graduates that are NOT on this List? Help us Update the 2009 Class List by adding missing names.
More 2009 alumni from Bellefontaine HS have posted profiles on Classmates.com®. Click here to register for free at Classmates.com® and view other 2009 alumni.
The Bellefontaine High class of '09 alumni are listed below. These are former students from Bellefontaine High in Bellefontaine, OH who graduated in 2009. Alumni listings below have either been searched for or they registered as members of this directory.


Most people want to earn money by working on paid to click sites using their smartphones and tablets. But, it will be very tough to work in a PTC site using a cell phone, because if you click an ad the ad will open in a new tab and it will take more time to load(desktop version sites) on the mobile phone. Sometimes it might not work properly and you will not be paid for clicking. So, to work on a mobile phone the website or the paid to click smartphone app should be specially designed for mobile phone/tablet. This article will help you to find the mobile PTC sites to work using the smartphone.
While a few sites are developing mobile-friendly site and apps, Ojooo and Paidverts have already developed the mobile app to watch PTC ads on the mobile phone without any problem. Get full information about how to register, work and earn in mobile PTC site. Ojooo wad can be easily accessed in smartphone/touch phone/tablet like Google Android(app), Apple iPhone(app), Microsoft windows® phone(Microsoft™ stopped support for Windows® phone) and of course Kai OS powered featured phones.
Check out – Free PTC software for PC.
The mobile compatible PTC site we are going to discuss is the Ojooo wad. Previously, there were no mobile PTC app or mobile-optimized PTC site to earn money by watching PTC sites. Ojooo wad is completely mobile optimized site and launched Android and iPhone to earn money by watching PTC ads. If you're already a member of Ojooo Wad, read this article to find more money making apps.
Using new Ojooo app, you don't have to solve any captcha to complete an ad watch. With watch next advertisements, you can watch all the ads within 5 minutes. No need to go back to the ads page again to click the ads. Ojooo app saves a lot of time.
You don't have to log into your account daily, just open the app go to watch advertisements section and start watching ads.
Ojooo is one of the most dominant online company that provides service in various fields like hosting, online advertising, free mobile phone calls, free emails etc. The Ojooo wad is the part of the Ojooo which is a leading PTC site in the world.
Unlike other paid to click programs that pay just .1 cents for clicking ads, Ojooo wad pays up to 4 cents for clicking each ad. Also, Ojooo wad delivers above 100 paid ads per day to a member.
Also, the ratio of earnings per day as an individual member in Ojooo wad is 10 times higher comparing to other paid to click sites.
Apart from paid to click feature, the Ojooo wad avails features to their members to earn reliable money through offer walls. Continue to read to learn how to work on Ojooo wad using the smartphone which includes phone any OS like Android, IOS (iPhone) and Microsoft® windows™ phone.
You might also like – Mobile captcha entry jobs.
There are two ways to earn money on Ojooo wad they are explained one by one below.
As I've said earlier Ojooo wad is the top paid to click site because they provide high-value ads every day comparing to any other paid to click site in this world.
Once you log into your account scroll down to the dashboard. The dashboard will look similar to the picture given below. Just explore your account and the features of the sites.
To start watching ads you must click, paid to click in the menu. After clicking it, you will be redirected to the ads page which will look similar to the image given below.
There will be three different ads available on the Ojooo wad which include the traditional PTC ads, fixed ads, and the evolution ads. Make sure to view all the ads using the mobile phone so that you don't miss any high paying PTC ads while you work using the mobile phone.
To start earning money, click on the link. The ad will open a new page as shown above. Based on the pay, you must be on the mobile paid to click advertisement page for about 5 to 60 seconds.
After the timer completes fully, you can click watch another advertisement or click return to the list of ads. You don't have to solve any captcha as we do it on other PTC sites. Other than standard paid to click ads, the evolution ads on the Ojooo wad helps the members to earn up to $0.03 by watching 3 ads in a single click.
The Ojooo wad is the only PTC site that will have 100 to 200 PTC ads to click. So, members who struggle to make direct refs can work on the Ojooo wad to make money as an individual member.
Earn Bitcoin – Free Bitcoin faucets.
Apart from the PTC ads, Ojooo wad has several other earning options such as paid videos and offers. Members can use those to generate higher revenue.
To earn money by watching videos on the mobile PTC site, you must click on paid to click > video in the menu bar. Now you will be redirected to the page that contains video ads.
The Ojooo wad pays up to $0.04 for watching the video ads. Click on the link and again click on the given shape to start watching the video.
After watching the video for a certain period of time, your account will be credited.
Ojooo is not only one of the best mobile PTC sites, but also a Get paid to site to earn money doing different offers and tasks.
On Ojooo wad there are few OfferWall apps available which have many high paying offers such as the paid to read emails, online paid surveys, Figure-eight Microtasks, paid app downloads, play mobile games for money etc.
After watching the mobile PTC ads, complete the offers and watch paid videos to make more money.
People also read – Earn free mobile recharges.
The Ojooo wad affiliate program is one of the best in the PTC industry. They pay up to 100% affiliate commission to their users.
Ojooo wad is the only PTC site that pays up to $0.035 per referral click. By referring a few members, you can earn more money on Ojooo wad using the mobile phone.
Previously the Ojooo wad used to pay the members via Paypal, Payza and Okpay payment processors. Now they are restricted to Bitcoin wallet and Bank wire transfer.
The minimum payout amount is just $2. So, you can withdraw the balance as soon as you earn $2.
To watch advertisements using the Ojooo app first you must register on the mobile PTC site by clicking the link given below. Then go to your account to find the link to download Ojooo app. In the Ojooo app, you have to log in using your account credentials to start watching ads.
Click here to Register – Ojooo Mobile.
The Paidverts is one of the unique paid to click sites in the world which boasts that their users can make dollars through the click instead of cents which you can read it on Paidverts review.
Paidverts will notify the users once every 20 minutes whenever there are new ads and opportunities available to earn money.
Paidverts ads can generate higher profit if it is handled with care.
Apart from mobile PTC ads and ad packs, Paidverts is home to tons of offers to earn extra money.
Click here to Register – Paidverts.
Learn more – if there is Clixsense Mobile app.


Blog » Is Your Neck Making You Look Older?
Is Your Neck Making You Look Older?
When our bodies begin to age, we mostly notice it in our faces. Creaky joints, slow metabolism, and other annoyances may cause problems and limit activities. However, the aesthetic changes caused by aging can often be the most distressing changes people go through. As the facial skin experiences age-related changes, wrinkles, sagging, and volume loss can change resting facial expressions. This can quickly make the face appear tired, hollow and, of course, aged. Though changes in the facial skin are the most noticeable, there's one other area that can influence how old someone looks: the neck.
How Does the Neck Age?
All skin ages in the same way. Over time, several changes occur. First, collagen and elastin production begin to slow down. These components in the skin allow it to retain its shape, firmness, and elasticity. As the levels of collagen begin to drop, wrinkles and folds form and the skin starts to sag. Sagging skin is particularly noticeable in the neck area since gravity pulls down the loose skin and creates excess bulk that's difficult to hide. Once the skin in the neck and jowl area begins to sag, it can create a "turkey wattle" appearance that can make people appear much older than they really are.
So why does the neck affect how old someone looks? Mainly because neck aging tends to occur quickly and and cause loose skin to settle in the area. Skin on the neck is somewhat thinner than facial skin. That makes it more likely to show signs of aging more quickly than areas like the cheeks. Despite being more delicate than the facial skin, the neck still gets almost as much exposure to environmental elements, causing early aging. Sun damage, toxins, smoking, and genetics all have a role in how quickly the skin ages. But many people also neglect the delicate skin of the neck when it comes to skincare and sun protection. Aside from the skin, the neck can also develop sagging and signs of aging from muscle laxity in the area.
Major issues can arise when patients have experienced significant neck aging but focus only on the face when it comes to rejuvenation. Laser treatments, facial plastic surgery, injectables, and other treatments can help reduce wrinkles or stimulate collagen production, but they can't offset the appearance of the aging neck. If you want to achieve a rejuvenated appearance, it's important to consider treatments for the neck area as well as the face.
Sagging skin can be a challenge to treat. Typically, plastic surgery or collagen-stimulating treatments are necessary to tighten loose skin and restore a youthful appearance to the neck. Patients who are concerned with neck aging might want to consider a neck lift on its own or as part of a facelift.
A neck lift is a surgical procedure that not only tightens the sagging, soft skin of the neck, but also tightens the underlying muscles. Patients who have a "double chin" or other fat deposits in the neck can also have the area contoured for a sleeker, more youthful appearance. Modern techniques allow patients to get great results while maintaining a natural appearance. Lifting loose skin during this procedure does involve some scarring, but this is mostly camouflaged using advanced techniques so that minimal scarring should be visible.
If you're not sure if a neck lift or combination procedure is right for you, then it might be time to take your questions to an expert for advice. Whether you're interested in minimally-invasive procedures or comprehensive anti-aging surgery, a reputable facial plastic surgeon will be able to help you design a custom treatment plan that suits your individual needs.
Your neck shouldn't define your first impressions. Dr. Edward Buckingham is a board certified facial plastic surgeon who is known for the fantastic, natural-looking results his patients enjoy. For more information, call Buckingham Center in Austin, TX, at 512.401.2500 today to schedule your consultation.


text:
package com.ibm.mqlight.api.impl.engine;

import io.netty.buffer.ByteBuf;

import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.util.EnumSet;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;

import org.apache.qpid.proton.Proton;
import org.apache.qpid.proton.amqp.Symbol;
import org.apache.qpid.proton.amqp.UnsignedInteger;
import org.apache.qpid.proton.amqp.messaging.Modified;
import org.apache.qpid.proton.amqp.messaging.Rejected;
import org.apache.qpid.proton.amqp.messaging.Released;
import org.apache.qpid.proton.amqp.messaging.Source;
import org.apache.qpid.proton.amqp.messaging.Target;
import org.apache.qpid.proton.amqp.messaging.TerminusExpiryPolicy;
import org.apache.qpid.proton.amqp.transport.ErrorCondition;
import org.apache.qpid.proton.amqp.transport.ReceiverSettleMode;
import org.apache.qpid.proton.amqp.transport.SenderSettleMode;
import org.apache.qpid.proton.engine.Collector;
import org.apache.qpid.proton.engine.Connection;
import org.apache.qpid.proton.engine.Delivery;
import org.apache.qpid.proton.engine.EndpointState;
import org.apache.qpid.proton.engine.Event;
import org.apache.qpid.proton.engine.Handler;
import org.apache.qpid.proton.engine.Link;
import org.apache.qpid.proton.engine.Receiver;
import org.apache.qpid.proton.engine.Sasl;
import org.apache.qpid.proton.engine.Sender;
import org.apache.qpid.proton.engine.Session;
import org.apache.qpid.proton.engine.Transport;

import com.ibm.mqlight.api.ClientException;
import com.ibm.mqlight.api.NetworkException;
import com.ibm.mqlight.api.NotPermittedException;
import com.ibm.mqlight.api.Promise;
import com.ibm.mqlight.api.QOS;
import com.ibm.mqlight.api.ReplacedException;
import com.ibm.mqlight.api.StateException;
import com.ibm.mqlight.api.SubscribedException;
import com.ibm.mqlight.api.UnsubscribedException;
import com.ibm.mqlight.api.impl.ComponentImpl;
import com.ibm.mqlight.api.impl.Message;
import com.ibm.mqlight.api.impl.SubscriptionTopic;
import com.ibm.mqlight.api.impl.network.ConnectResponse;
import com.ibm.mqlight.api.impl.network.ConnectionError;
import com.ibm.mqlight.api.impl.network.DataRead;
import com.ibm.mqlight.api.impl.network.DisconnectResponse;
import com.ibm.mqlight.api.impl.network.NetworkClosePromiseImpl;
import com.ibm.mqlight.api.impl.network.NetworkConnectPromiseImpl;
import com.ibm.mqlight.api.impl.network.NetworkListenerImpl;
import com.ibm.mqlight.api.impl.network.NetworkWritePromiseImpl;
import com.ibm.mqlight.api.impl.network.WriteResponse;
import com.ibm.mqlight.api.impl.timer.PopResponse;
import com.ibm.mqlight.api.impl.timer.TimerPromiseImpl;
import com.ibm.mqlight.api.logging.FFDCProbeId;
import com.ibm.mqlight.api.logging.Logger;
import com.ibm.mqlight.api.logging.LoggerFactory;
import com.ibm.mqlight.api.network.NetworkChannel;
import com.ibm.mqlight.api.network.NetworkService;
import com.ibm.mqlight.api.timer.TimerService;

public class Engine extends ComponentImpl implements Handler {

    private static final Logger logger = LoggerFactory.getLogger(Engine.class);

    private final NetworkService network;
    private final TimerService timer;

    public Engine(NetworkService network, TimerService timer) {
        final String methodName = "<init>";
        logger.entry(this, methodName, network, timer);

        if (network == null) {
          final IllegalArgumentException exception = new IllegalArgumentException("NetworkService argument cannot be null");
          logger.throwing(this, methodName, exception);
          throw exception;
        }
        if (timer == null) {
          final IllegalArgumentException exception = new IllegalArgumentException("TimerService argument cannot be null");
          logger.throwing(this, methodName, exception);
          throw exception;
        }
        this.network = network;
        this.timer = timer;

        logger.exit(this, methodName);
    }

    @Override
    protected void onReceive(Message message) {
        final String methodName = "onReceive";
        logger.entry(this, methodName, message);

        if (message instanceof OpenRequest) {
            OpenRequest or = (OpenRequest)message;
            NetworkListenerImpl listener = new NetworkListenerImpl(this);
            Promise<NetworkChannel> promise = new NetworkConnectPromiseImpl(this, or);
            network.connect(or.endpoint, listener, promise);
        }
        else if (message instanceof ConnectResponse) {
            // Message from network telling us that a connect request has completed...
            ConnectResponse cr = (ConnectResponse)message;
            OpenRequest or = (OpenRequest)cr.context;
            if (cr.exception != null) {
                or.getSender().tell(new OpenResponse(or, cr.exception), this);
            } else {
                Connection protonConnection = Proton.connection();
                Transport transport = Proton.transport();
                transport.setIdleTimeout(or.endpoint.getIdleTimeout());
                transport.bind(protonConnection);
                Collector collector = Proton.collector();
                protonConnection.setContainer(or.clientId);
                protonConnection.setHostname(or.endpoint.getHost());
                protonConnection.open();
                Sasl sasl = transport.sasl();
                sasl.client();
                if (or.endpoint.getUser() == null) {
                    sasl.setMechanisms(new String[]{"ANONYMOUS"});
                } else {
                    sasl.plain(or.endpoint.getUser(), or.endpoint.getPassword());
                }
                Session session = protonConnection.session();
                session.open();
                protonConnection.collect(collector);

                EngineConnection engineConnection = new EngineConnection(protonConnection, session, or.getSender(), transport, collector, cr.channel);
                engineConnection.openRequest = or;
                protonConnection.setContext(engineConnection);
                cr.channel.setContext(engineConnection);

                // Write any data from Proton to the network.
                writeToNetwork(engineConnection);
            }
        } else if (message instanceof CloseRequest) {
            CloseRequest cr = (CloseRequest)message;
            Connection protonConnection = cr.connection.connection;
            EngineConnection engineConnection = (EngineConnection)protonConnection.getContext();
            if (engineConnection.timerPromise != null) {
                TimerPromiseImpl tmp = engineConnection.timerPromise;
                engineConnection.timerPromise = null;
                timer.cancel(tmp);
            }
            protonConnection.close();
            engineConnection.closeRequest = cr;
            writeToNetwork(engineConnection);
        } else if (message instanceof SendRequest) {
            SendRequest sr = (SendRequest)message;
            EngineConnection engineConnection = sr.connection;

            // Look to see if there is already a suitable sending link, and open one if there is not...
            Link link = sr.connection.connection.linkHead(EnumSet.of(EndpointState.ACTIVE),
                                                          EnumSet.of(EndpointState.ACTIVE, EndpointState.UNINITIALIZED));
            Sender linkSender;
            boolean linkOpened = false;
            while(true) {
                if (link == null) {
                    linkSender = sr.connection.session.sender(sr.topic);
                    Source source = new Source();
                    Target target = new Target();
                    source.setAddress(sr.topic);
                    target.setAddress(sr.topic);
                    linkSender.setSource(source);
                    linkSender.setTarget(target);
                    linkSender.open();
                    linkOpened = true;
                    break;
                }
                if ((link instanceof Sender) && sr.topic.equals(link.getName())) {
                    linkSender = (Sender)link;
                    break;
                }
                link = link.next(EnumSet.of(EndpointState.ACTIVE),
                                            EnumSet.of(EndpointState.ACTIVE, EndpointState.UNINITIALIZED));
            }
            Delivery d = linkSender.delivery(String.valueOf(engineConnection.deliveryTag++).getBytes(Charset.forName("UTF-8")));

            linkSender.send(sr.buf.array(), 0, sr.length);
            sr.buf.release();

            if (sr.qos == QOS.AT_MOST_ONCE) {
                d.settle();
            } else {
                engineConnection.inProgressOutboundDeliveries.put(d, sr);
            }
            linkSender.advance();
            engineConnection.drained = false;
            int delta = engineConnection.transport.head().remaining();
            // If the link was also opened as part of processing this request then increase the
            // amount of data expected (as the linkSender.send() won't count against the amount of
            // data in transport.head() unless there is link credit - which there won't be until
            // the server responds to the link open).
            if (linkOpened) {
                delta += sr.length;
            }
            if (sr.qos == QOS.AT_MOST_ONCE) {
                engineConnection.addInflightQos0(delta, new SendResponse(sr, null), sr.getSender(), this);
            }
            writeToNetwork(engineConnection);
        } else if (message instanceof SubscribeRequest) {
            SubscribeRequest sr = (SubscribeRequest) message;
            EngineConnection engineConnection = sr.connection;
            if (engineConnection.subscriptionData.containsKey(sr.topic.toString())) {
                // The client is already subscribed - should not really occur
                final SubscribedException exception = new SubscribedException("Cannot subscribe because the client is already subscribed to topic "+sr.topic.toString());
                sr.getSender().tell(new SubscribeResponse(engineConnection, sr.topic, exception), this);
            } else {
                Receiver linkReceiver = sr.connection.session.receiver(sr.topic.getTopic());
                engineConnection.subscriptionData.put(sr.topic.toString(), new EngineConnection.SubscriptionData(sr.getSender(), sr.initialCredit, linkReceiver));
                Source source = new Source();
                source.setAddress(sr.topic.getTopic());
                Target target = new Target();
                target.setAddress(sr.topic.getTopic());

                if (sr.ttl > 0) {
                    source.setExpiryPolicy(TerminusExpiryPolicy.LINK_DETACH);
                    source.setTimeout(new UnsignedInteger(sr.ttl));
                    target.setExpiryPolicy(TerminusExpiryPolicy.LINK_DETACH);
                    target.setTimeout(new UnsignedInteger(sr.ttl));
                }

                linkReceiver.setSource(source);
                linkReceiver.setTarget(target);
                if (sr.qos == QOS.AT_LEAST_ONCE) {
                    linkReceiver.setSenderSettleMode(SenderSettleMode.UNSETTLED);
                    linkReceiver.setReceiverSettleMode(ReceiverSettleMode.FIRST);
                } else {
                    linkReceiver.setSenderSettleMode(SenderSettleMode.SETTLED);
                    linkReceiver.setReceiverSettleMode(ReceiverSettleMode.FIRST);
                }

                linkReceiver.open();
                linkReceiver.flow(sr.initialCredit);

                writeToNetwork(engineConnection);
            }
        } else if (message instanceof UnsubscribeRequest) {
            UnsubscribeRequest ur = (UnsubscribeRequest) message;
            EngineConnection engineConnection = ur.connection;
            EngineConnection.SubscriptionData sd = engineConnection.subscriptionData.get(ur.topic.toString());
            Target t = (Target)sd.receiver.getTarget();
            Source s = (Source)sd.receiver.getSource();
            if (ur.zeroTtl) {
                t.setExpiryPolicy(TerminusExpiryPolicy.LINK_DETACH);
                t.setTimeout(new UnsignedInteger(0));
                s.setTimeout(new UnsignedInteger(0));
                s.setExpiryPolicy(TerminusExpiryPolicy.LINK_DETACH);
            }

            // detach link if expiry is still in effect, else close
            if (t.getExpiryPolicy() == TerminusExpiryPolicy.NEVER ||
                    t.getTimeout().longValue() > 0) {
                sd.receiver.detach();
            } else {
                sd.receiver.close();
            }
            writeToNetwork(engineConnection);

        } else if (message instanceof DeliveryResponse) {
            DeliveryResponse dr = (DeliveryResponse)message;
            Delivery delivery = dr.request.delivery;
            delivery.settle();

            EngineConnection engineConnection = (EngineConnection)dr.request.protonConnection.getContext();
            EngineConnection.SubscriptionData subData = engineConnection.subscriptionData.get(dr.request.topicPattern);
            if (subData == null) {
              if (dr.request.qos != QOS.AT_MOST_ONCE) {
                throw new StateException("Client had unsubscribed from '" + dr.request.topicPattern + "' before delivery was confirmed");
              }
            } else {
              subData.settled++;
              subData.unsettled--;

              double available = subData.maxLinkCredit - subData.unsettled;
              if ((available / subData.settled) <= 1.25 ||
                  (subData.unsettled == 0 && subData.settled > 0)) {
                subData.receiver.flow(subData.settled);
                subData.settled = 0;
              }
            }

            writeToNetwork(engineConnection);

        } else if (message instanceof WriteResponse) {
            // Message from network telling us that a write operation has completed...
            // Try to flush any pending data to the network...
            WriteResponse wr = (WriteResponse)message;
            EngineConnection engineConnection = (EngineConnection)wr.context;
            if (engineConnection != null) {
                engineConnection.bytesWritten += wr.amount;
                engineConnection.notifyInflightQos0(false);
                if (engineConnection.transport.pending() > 0) {
                    writeToNetwork(engineConnection);
                } else if (!engineConnection.drained){
                    engineConnection.drained = true;
                    engineConnection.requestor.tell(new DrainNotification(), this);
                }
            }
        } else if (message instanceof DataRead) {
            // Message from the network telling us that data has been read...
            DataRead dr = (DataRead)message;
            EngineConnection engineConnection = (EngineConnection)dr.channel.getContext();
            if (!engineConnection.closed) {
                final ByteBuffer buffer = dr.buffer.nioBuffer();
                while (buffer.remaining() > 0) {
                    int origLimit = buffer.limit();
                    ByteBuffer tail = engineConnection.transport.tail();
                    int amount = Math.min(tail.remaining(), buffer.remaining());
                    buffer.limit(buffer.position() + amount);
                    tail.put(buffer);
                    buffer.limit(origLimit);
                    engineConnection.transport.process();
                    process(engineConnection.collector);
                }
                dr.buffer.release();

                // Write any data from Proton to the network.
                writeToNetwork(engineConnection);
            }
        } else if (message instanceof DisconnectResponse) {
            // Message from network telling us that it has completed our disconnect request.
            DisconnectResponse dr = (DisconnectResponse)message;
            CloseRequest cr = (CloseRequest)dr.context;
            if (cr != null) {
                cr.connection.closed = true;
                cr.connection.notifyInflightQos0(true);
                cr.getSender().tell(new CloseResponse(cr), this);
            }
        } else if (message instanceof ConnectionError) {
            // Message from network telling us that a error has occurred at the TCP/IP level.
            ConnectionError ce = (ConnectionError)message;
            EngineConnection engineConnection = (EngineConnection)ce.channel.getContext();
            if (!engineConnection.closed) {
                if (engineConnection.timerPromise != null) {
                    TimerPromiseImpl tmp = engineConnection.timerPromise;
                    engineConnection.timerPromise = null;
                    timer.cancel(tmp);
                }
                engineConnection.notifyInflightQos0(true);
                engineConnection.closed = true;
                engineConnection.transport.close_tail();
                engineConnection.requestor.tell(new DisconnectNotification(
                        engineConnection, ce.cause), this);
            }
        } else if (message instanceof PopResponse) {
            PopResponse pr = (PopResponse)message;
            EngineConnection engineConnection = (EngineConnection)pr.promise.getContext();
            long now = System.currentTimeMillis();
            long timeout = engineConnection.transport.tick(now);
            logger.data(this, methodName, "Timeout: {}", timeout);
            if (timeout > 0) {
                TimerPromiseImpl promise = new TimerPromiseImpl(this, engineConnection);
                engineConnection.timerPromise = promise;
                logger.data(this, methodName, "Scheduling at: {}", timeout - now);
                timer.schedule(timeout - now, promise);
                writeToNetwork(engineConnection);
            }
        }

        logger.exit(this, methodName);
    }

    // Drains any pending data from a Proton transport object onto the network
    private void writeToNetwork(EngineConnection engineConnection) {
      final String methodName = "writeToNetwork";
      logger.entry(this, methodName, engineConnection);

        if (engineConnection.transport.pending() > 0) {
            ByteBuffer head = engineConnection.transport.head();
            int amount = head.remaining();
            engineConnection.channel.write(head, new NetworkWritePromiseImpl(this, amount, engineConnection));
            engineConnection.transport.pop(amount);
            engineConnection.transport.tick(System.currentTimeMillis());
        }

        logger.exit(this, methodName);
    }

    /** Runs scheduled asynchronous Tasks. */
    private final ScheduledExecutorService scheduler = java.util.concurrent.Executors.newScheduledThreadPool(1);
    /** A scheduled task that runs if we receive no data from the client in the scheduled time. */
    private ScheduledFuture<?> receiveScheduledFuture;

    /**
     * Reset the local idle timers, now that we have received some data.
     *
     * If we have set an idle timeout the client must send some data at least that often,
     * we double the timeout before checking.
     */
    private void resetReceiveIdleTimer(Event event) {
        final String methodName = "resetReceiveIdleTimer";
        logger.entry(this, methodName, event);

        if (receiveScheduledFuture != null) {
            receiveScheduledFuture.cancel(false);
        }

        final Transport transport = event.getTransport();
        if (transport != null) {
            final int localIdleTimeOut = transport.getIdleTimeout();
            if (localIdleTimeOut > 0) {
                Runnable receiveTimeout = new Runnable() {
                    @Override
                    public void run() {
                        final String methodName = "run";
                        logger.entry(this, methodName);
                        transport.process();
                        transport.tick(System.currentTimeMillis());
                        logger.exit(methodName);
                    }
                };
                receiveScheduledFuture = scheduler.schedule(receiveTimeout,
                        localIdleTimeOut, TimeUnit.MILLISECONDS);
            }
        }
        logger.exit(this, methodName);
    }

    private void process(Collector collector) {
        final String methodName = "process";
        logger.entry(this, methodName, collector);

        while (collector.peek() != null) {
            Event event = collector.peek();
            logger.data(this, methodName, "Processing event: {}", event.getType());
            event.dispatch(this);
            resetReceiveIdleTimer(event);

            collector.pop();
        }

        logger.exit(this, methodName);
    }

    private void processEventConnectionRemoteState(Event event) {
        final String methodName = "processEventConnectionRemoteState";
        logger.entry(this, methodName, event);

        if (event.getConnection().getRemoteState() == EndpointState.CLOSED) {
            final ErrorCondition remoteCondition = event.getConnection().getRemoteCondition();
            final EngineConnection engineConnection = (EngineConnection)event.getConnection().getContext();
            if (engineConnection.timerPromise != null) {
                TimerPromiseImpl tmp = engineConnection.timerPromise;
                engineConnection.timerPromise = null;
                timer.cancel(tmp);
            }

            if (event.getConnection().getLocalState() == EndpointState.CLOSED || engineConnection.openRequest == null) {
                if (!engineConnection.closed) {
                    engineConnection.notifyInflightQos0(true);
                    engineConnection.closed = true;
                    CloseRequest cr = engineConnection.closeRequest;
                    engineConnection.closeRequest = null;
                    NetworkClosePromiseImpl future = new NetworkClosePromiseImpl(this, cr);
                    engineConnection.channel.close(future);
                    if (cr == null) {
                        Throwable error = getClientException(remoteCondition);
                        engineConnection.requestor.tell(new DisconnectNotification(engineConnection, error), this);
                    }
                }
            } else {
                OpenRequest req = engineConnection.openRequest;
                engineConnection.openRequest = null;
                if (!engineConnection.closed) {
                    engineConnection.notifyInflightQos0(true);
                    engineConnection.closed = true;
                    engineConnection.channel.close(null);

                    final ClientException clientException;
                    // check for SASL failures
                    final Sasl sasl = engineConnection.transport.sasl();
                    if (sasl.getOutcome() == Sasl.SaslOutcome.PN_SASL_AUTH) {
                        clientException = new com.ibm.mqlight.api.SecurityException(
                                "Failed to authenticate with server - invalid username or password",
                                getClientException(remoteCondition));
                    } else {
                        // else just report error condition on event
                        if (remoteCondition == null
                                || remoteCondition.getDescription() == null) {
                            clientException = new NetworkException(
                                    "The server closed the connection without providing any error information.");
                        } else {
                            clientException = getClientException(remoteCondition);
                        }
                    }
                    req.getSender().tell(new OpenResponse(req, clientException), this);
                }
            }
        } else if (event.getConnection().getRemoteState() == EndpointState.ACTIVE) {
            EngineConnection engineConnection = (EngineConnection)event.getConnection().getContext();
            long now = System.currentTimeMillis();
            long timeout = engineConnection.transport.tick(now);
            if (timeout > 0) {
                engineConnection.timerPromise = new TimerPromiseImpl(this, engineConnection);
                timer.schedule(timeout - now, engineConnection.timerPromise);
            }
        }

        logger.exit(this, methodName);
    }

    private ClientException getClientException(ErrorCondition errorCondition) {
        final String methodName = "getClientException";
        logger.entry(this, methodName, errorCondition);

        ClientException result = null;

        if (errorCondition != null && errorCondition.getCondition() != null) {
            if (errorCondition.getDescription().toString().contains("_Takeover")) {
                result = new ReplacedException(errorCondition.getDescription());
            } else if (errorCondition.getDescription().toString().contains("_InvalidSourceTimeout")) {
                result = new NotPermittedException(errorCondition.getDescription());
            }

            if (result == null && errorCondition.getDescription() != null) {
                if (errorCondition.getDescription().contains("sasl ") || errorCondition.getDescription().contains("SSL ")) {
                    result = new com.ibm.mqlight.api.SecurityException(errorCondition.getDescription());
                }
            }

            if (result == null) {
                String msg = errorCondition.getCondition().toString();
                if (errorCondition.getDescription() != null) {
                    msg += ": " + errorCondition.getDescription();
                }
                result = new NetworkException(msg);
            }
        }

        logger.exit(this, methodName, result);
        return result;
    }

    private void processEventLinkLocalState(Event event) {
        final String methodName = "processEventLinkLocalState";
        logger.entry(this, methodName, event);

        Link link = event.getLink();
        logger.data(this, methodName, "LINK_LOCAL {} {} {}", link, link.getLocalState(), link.getRemoteState());
        logger.exit(this, methodName);
    }

    private void processEventLinkRemoteState(Event event) {
        final String methodName = "processEventLinkRemoteState";
        logger.entry(this, methodName, event);

        Link link = event.getLink();
        logger.data(this, methodName, "LINK_REMOTE {} {} {}", link, link.getLocalState(), link.getRemoteState());

        final Event.Type eventType = event.getType();

        if (link instanceof Receiver) {
            if (eventType == Event.Type.LINK_REMOTE_OPEN) {
                // Receiver link open has been ack'ed by server.
                if (link.getLocalState() == EndpointState.ACTIVE &&
                        link.getRemoteState() == EndpointState.ACTIVE) {
                    EngineConnection engineConnection = (EngineConnection)event.getConnection().getContext();
                    EngineConnection.SubscriptionData sd = engineConnection.subscriptionData.get(link.getName());
                    sd.subscriber.tell(new SubscribeResponse(engineConnection, new SubscriptionTopic(link.getName())), this);
                }
            } else if (eventType == Event.Type.LINK_REMOTE_CLOSE
                    || eventType == Event.Type.LINK_REMOTE_DETACH) {
                // Receiver link has been closed by the server.
                if (link.getRemoteState() == EndpointState.CLOSED) {
                    ClientException clientException = getClientException(link.getRemoteCondition());
                    if (link.getLocalState() != EndpointState.CLOSED && !link.detached()) {
                        if (clientException == null) {
                            clientException = new ClientException(
                                "The server indicated that the destination was unsubscribed due to an error condition, " +
                                "without providing any further error information.");
                        }
                        link.close();
                    }
                    link.free();

                    EngineConnection engineConnection = (EngineConnection)event.getConnection().getContext();
                    EngineConnection.SubscriptionData sd = engineConnection.subscriptionData.remove(link.getName());

                    if (sd == null) {
                      logger.ffdc(this, methodName, FFDCProbeId.PROBE_001, null, this, event);
                    } else {
                        sd.subscriber.tell(new UnsubscribeResponse(engineConnection, new SubscriptionTopic(link.getName()), clientException), this);
                    }
                }

            }
        } else if (link instanceof Sender) {
            if (eventType == Event.Type.LINK_REMOTE_CLOSE &&
                    link.getRemoteState() == EndpointState.CLOSED) {
                if (link.getLocalState() != EndpointState.CLOSED) {
                    String msg = "The server indicated that our sending link was closed due to an error condition, ";
                    ErrorCondition remoteCondition = link.getRemoteCondition();
                    if (remoteCondition == null || remoteCondition.getCondition() == null) {
                        msg += "without providing any further error information.";
                    } else {
                        msg += remoteCondition.getCondition().toString();
                        if (remoteCondition.getDescription() != null) {
                            msg += " - " + remoteCondition.getDescription();
                        }
                    }
                    logger.data(this, methodName, msg, link.getTarget().getAddress(), this);
                    EngineConnection engineConnection = (EngineConnection) event.getConnection().getContext();
                    for (Delivery delivery = link.head(); delivery != null; delivery = delivery.next()) {
                        SendRequest sr = engineConnection.inProgressOutboundDeliveries.remove(delivery);
                        if (sr != null && sr.getSender() != null) {
                            sr.getSender().tell(new SendResponse(sr, new ClientException(msg)), this);
                        }
                    }
                    link.close();
                }
                link.free();
            }
        }

        logger.exit(this, methodName);

    }

    private void processEventSessionRemoteState(Event event) {
        final String methodName = "processEventSessionRemoteState";
        logger.entry(this, methodName, event);

        if (event.getSession().getRemoteState() == EndpointState.ACTIVE) {
            if (event.getSession().getLocalState() == EndpointState.ACTIVE) {
                // First session has opened on the connection
                EngineConnection engineConnection = (EngineConnection)event.getConnection().getContext();
                OpenRequest req = engineConnection.openRequest;
                engineConnection.openRequest = null;
                engineConnection.requestor.tell(new OpenResponse(req, engineConnection), this);
            } else {
                // The remote end is trying to establish a new session with us, which is not allowed. I don't think this is a usual case,
                // but could occur with a badly written remote end (i.e. sends an initial AMQP open immediately followed by a begin)
                final Connection engineConnection = event.getConnection();
                engineConnection.setCondition(new ErrorCondition(Symbol.getSymbol("mqlight:session-remote-open-rejected"),
                                                                 "MQ Light client is unable to accept an open session request"));
                engineConnection.close();
            }
        }

        logger.exit(this, methodName);
    }

    @Override
    public void onConnectionInit(Event e) {
      // No action required
    }

    @Override
    public void onConnectionLocalOpen(Event e) {
      // No action required
    }

    @Override
    public void onConnectionRemoteOpen(Event e) {
      processEventConnectionRemoteState(e);
    }

    @Override
    public void onConnectionLocalClose(Event e) {
      // No action required
    }

    @Override
    public void onConnectionRemoteClose(Event e) {
      processEventConnectionRemoteState(e);
    }

    @Override
    public void onConnectionBound(Event e) {
      // No action required
    }

    @Override
    public void onConnectionUnbound(Event e) {
      // No action required
    }

    @Override
    public void onConnectionFinal(Event e) {
      // No action required
    }

    @Override
    public void onSessionInit(Event e) {
      // No action required
    }

    @Override
    public void onSessionLocalOpen(Event e) {
      // No action required
    }

    @Override
    public void onSessionRemoteOpen(Event e) {
      processEventSessionRemoteState(e);
    }

    @Override
    public void onSessionLocalClose(Event e) {
      // No action required
    }

    @Override
    public void onSessionRemoteClose(Event e) {
      processEventSessionRemoteState(e);
    }

    @Override
    public void onSessionFinal(Event e) {
      // No action required
    }

    @Override
    public void onLinkInit(Event e) {
      // No action required
    }

    @Override
    public void onLinkLocalOpen(Event e) {
      processEventLinkLocalState(e);
    }

    @Override
    public void onLinkRemoteOpen(Event e) {
      processEventLinkRemoteState(e);
    }

    @Override
    public void onLinkLocalDetach(Event e) {
      processEventLinkLocalState(e);
    }

    @Override
    public void onLinkRemoteDetach(Event e) {
      processEventLinkRemoteState(e);
    }

    @Override
    public void onLinkLocalClose(Event e) {
      processEventLinkLocalState(e);
    }

    @Override
    public void onLinkRemoteClose(Event e) {
      processEventLinkRemoteState(e);
    }

    @Override
    public void onLinkFlow(Event e) {
      // No action required
    }

    @Override
    public void onLinkFinal(Event e) {
      // No action required
    }

    @Override
    public void onDelivery(Event event) {
      final String methodName = "onDelivery";
      logger.entry(this, methodName, event);

      EngineConnection engineConnection = (EngineConnection)event.getConnection().getContext();
      Delivery delivery = event.getDelivery();
      if (event.getLink() instanceof Sender) {
          SendRequest sr = engineConnection.inProgressOutboundDeliveries.remove(delivery);
          Exception exception = null;
          if (delivery.getRemoteState() instanceof Rejected) {
              final Rejected rejected = (Rejected) delivery.getRemoteState();
              final ErrorCondition error = rejected.getError();
              if (error == null || error.getDescription() == null) {
                  exception = new Exception("Message was rejected");
              } else {
                  exception = new Exception(error.getDescription());
              }
          } else if (delivery.getRemoteState() instanceof Released) {;
              exception = new Exception("Message was released");
          } else if (delivery.getRemoteState() instanceof Modified) {
              exception = new Exception("Message was modified");
          }
          sr.getSender().tell(new SendResponse(sr, exception), this);
      } else if (delivery.isReadable() && !delivery.isPartial()) {    // Assuming link instanceof Receiver...
          Receiver receiver = (Receiver)event.getLink();
          int amount = delivery.pending();
          byte[] data = new byte[amount];
          receiver.recv(data, 0, amount);
          receiver.advance();
          ByteBuf buf = io.netty.buffer.Unpooled.wrappedBuffer(data);

          EngineConnection.SubscriptionData subData = engineConnection.subscriptionData.get(event.getLink().getName());
          subData.unsettled++;
          QOS qos = delivery.remotelySettled() ? QOS.AT_MOST_ONCE : QOS.AT_LEAST_ONCE;
          subData.subscriber.tell(new DeliveryRequest(buf, qos, event.getLink().getName(), delivery, event.getConnection()), this);
      }

      logger.exit(this, methodName);
    }

    @Override
    public void onTransport(Event e) {
      // No action required
    }

    @Override
    public void onTransportError(Event e) {
      // No action required
    }

    @Override
    public void onTransportHeadClosed(Event e) {
      // No action required
    }

    @Override
    public void onTransportTailClosed(Event e) {
      // No action required
    }

    @Override
    public void onTransportClosed(Event e) {
      // No action required
    }

    @Override
    public void onUnhandled(Event e) {
      final IllegalStateException exception = new IllegalStateException("Unknown event type: " + e.getType());
      logger.throwing(this, "onUnhandled", exception);
      throw exception;
    }
}

redpajama_set_name: RedPajamaGithub


text:
Q: C# Can i Extend the IdentityMessage from the EntityFramework? (using the  Microsoft.AspNet.Identity)
The IdentityMessage message within the EmailService has 3 properties
public virtual string Body { get; set; }
public virtual string Destination { get; set; }
public virtual string Subject { get; set; }

When you only have 1 "from" adress it is enough, but if you want more then one "from" address, it is a problem and I need the extra property.
public string From { get; set; }

So I extended the class IdentityMessage (like I dit with Users and roles)
public class ExtendedMessage : IdentityMessage
{
    public string From { get; set; }
}

So I changed the default implementation
public class EmailService : IIdentityMessageService
{
    public async Task SendAsync(IdentityMessage message)
    {
        await configSMTPasync(message);
    }

    // send email via smtp service
    private async Task configSMTPasync(IdentityMessage message)
    {
        // SEND MAIL
    }
}

With
public class EmailService : IIdentityMessageService
{
    public async Task SendAsync(ExtendedMessage message)
    {
        await configSMTPasync(message);
    }

    // send email via smtp service
    private async Task configSMTPasync(ExtendedMessage message)
    {
        // SEND MAIL
    }
}

But IIdentityMessageService is still refering to the original IdentityMessage (it is not working as espected)
What is the best way to get this working (using Microsoft.AspNet.Identity; framework)?
Thanks in advance.

A: You cannot use inheritance because once entity is loaded from the data source EF will not know about inheritance and because of that it will instantiate base type without your properties instead of derived type with your properties. Any inheritance must be mapped in EDMX if EF have to work with it.
Using partial class will solve your problem but:
All parts of partial class must be defined in the same assembly
Properties from your partial part are not persisted to the database
Properties from your partial part cannot be used in linq-to-entities queries

redpajama_set_name: RedPajamaStackExchange


If you are located in Montreal area and want to avoid shipping fees or if you do not have any credit card, you can choose a local pick up at our office when you check out. Please add a comment to specify your preferred pick up time. Also due to Paypal policy, we can only accept cash payment or bank transfer with a local pick up. Make sure to enter a valid email address.
We will contact you by email as soon as your order is ready.


text:
"It Starts and Ends with You" – utwór brytyjskiego zespołu alternatywno-rockowego Suede pochodzący z albumu Bloodsports. Wydany 4 lutego 2013 roku przez wytwórnię Warner Music Group w formie digital download.

Pierwszy singiel grupy Suede opublikowany od 2003 roku, kiedy to wydano singiel "Attitude/Golden Gun"

Przypisy

Single wydane w roku 2013

redpajama_set_name: RedPajamaWikipedia


text:
using System.ComponentModel.DataAnnotations;

namespace GRA.Data.Model
{
    public class UserAvatarItem
    {
        [Required]
        public int UserId { get; set; }
        public User User { get; set; }

        [Required]
        public int DynamicAvatarItemId { get; set; }
        public DynamicAvatarItem DynamicAvatarItem { get; set; }
    }
}


text: 18 GOLF COURSE MANAGEMENT 02.19 Landon White had prepared for this moment for quite some time. Even so, it came much sooner than ex- pected. The day he turned 27 on Sept. 6, 2018, White was named the golf course superintendent at Copper Rock Golf Course in Hurricane, Utah. It wasn't the way he wanted this to happen. It wasn't just any job he accepted. And White, who had been at the facility for only six weeks as an assistant, certainly didn't replace just any superintendent. Industry stalwart Riley Stottern, CGCS Retired, was overseeing the construction of Copper Rock when he died Aug. 30 at 75. Stottern was GCSAA president in 1986. "He was kicking butt until the day he died," White says. The day before Stottern died, the two men had a phone conversation that seems as if Stottern were pass - ing the torch to White. "It was a heartfelt conversation. His last few words to me were, 'The course is in good hands with you and Les (Hubbell, assistant superintendent).' He said he felt completely comfortable with us running the show," says White, a five-year GCSAA member who started there on July 31. White was on the course when he received the call about Stottern. "We lost our fearless leader. It was tough," White says. According to Hubbell, White is made for this opportunity. "We've made a lot of progress. We're going in the right direction," Hubbell says. "Landon has stepped right up and filled the spot. He's no-nonsense. He finds a problem, addresses it and comes up with a solution to resolve it." Stottern's wife, Barbara, didn't meet White until her husband's funeral. The encounter was memorable. "He was very kind to me. Very sweet," she says. Working his way up the ladder at two golf courses, the latter being Logan River Golf Course in Logan, Utah, White put his career on hold for two years starting in October 2010 to serve a mission in Mexico for The Church of Jesus Christ of Latter-day Saints. The experience was a boost for him personally and professionally. White became fluent in Spanish, which has become beneficial in this industry. "It (mission) shaped my per - sonality to be more accepting of others and forced me to work even when the going got tough. I learned to be His time is now Photo by Alisha Shaw