text:
Introducing The Ramones
Posted on August 11, 2021 by JStafford
There was a time in the 1970s when film distributors were able to test-market their more offbeat offerings as "Midnight Movies" for adventurous moviegoers. Sometimes these developed into cult phenomenas like El Topo (1971), The Rocky Horror Picture Show (1975), or Eraserhead (1976). Sometimes they failed to find any audience at all like Pelvis (aka All Dressed Up in Rubber with No Place to Go, 1977) or Elevator Girls in Bondage (1972). Arriving at the tail end of the Midnight Movie craze, Rock 'n' Roll High School (1979) fell somewhere between these two extremes.
While it was only a modest success at the box office, Rock 'n' Roll High School has since developed a fervent niche following. Scripted by Richard Whitley, Joe Dante, former Variety critic Joseph McBride, and Russ Dvonch (of the National Lampoon), the movie is a fast-and-loose parody of high school life with plenty of anti-establishment posturing and a cheerfully anarchic sense of humor. To this day, the film remains one of the more inspired offerings from New World Pictures, which was founded by low-budget cult director Roger Corman.
Set in Vince Lombardi High, an institution with the lowest academic standing in California, Rock 'n' Roll High School pits cheerleader Riff Randell (P.J. Soles) and her fellow students against the new principal, the insufferable Miss Togar (Mary Woronov), and her evil henchmen. A showdown between the two factions, sparked by rock 'n' roll – specifically the music of the Ramones – leads to a widespread riot on the campus. This is probably the only American film in existence where an educational institution is completely trashed by the end and no one is punished.
Although both Cheap Trick and Todd Rundgren were originally considered as the showcase musical act in the film, The Ramones were always the first choice of director Allan Arkush. And more than anything else, Rock 'n' Roll High School serves as an excellent showcase for this band, who were the total antithesis of pretty boy rock star pinups. Thanks to this film, The Ramones, who were not that well known outside of the New York punk rock scene, were exposed to a legion of new fans who fell in love with their hard-driving three-chord speed rock and their grungy sense of fashion – torn blue jeans, black leather jackets, dark sunglasses.
Their first onscreen appearance in Rock 'n' Roll High School is particularly memorable and sets the appropriate tone for the rest of the film: The band is being driven down the street in a convertible while eating Kentucky Fried Chicken and flinging pieces of it at their fans on the sidewalk. During the climatic concert sequence, the group's songs are accompanied by subtitles on the screen so you can sing along with the deranged lyrics.
Director Allan Arkush (second from right in back seat) on the set of ROCK 'N' ROLL HIGH SCHOOL (1979) with The Ramones.
Strangely enough, neither P.J. Soles or Dey Young as her straightlaced science nerd pal Kate were familiar with the Ramones before making the film. Soles said in an interview with Cryptic Rock that director Arkush "had given me a cassette of The Ramones and said, "You are their number one fan, go home and learn all these songs, you have to love these guys." I remember first putting it on thinking, "Oh my god, I do not relate to this music," because I was listening to Jackson Browne, Joni Mitchell, Neil Young, and the Eagles. I did not relate to it, but once I met them, day one of shooting, which was the scene when they are in my bedroom and Joey Ramone sings to me; that was a pretty shocking first day, but by the end of that, I felt they were so nice. I liked them right away because they were authentic."
P.J. Soles plays Riff Randell, the number one fan of The Ramones in ROCK 'N' ROLL HIGH SCHOOL (1979).
Dey Young confessed in an interview with Ron Hart for Blurt, "I had never even heard of the Ramones, let alone punk rock so that was a huge eye opening experience for me." She also added, "…my first impression was that they were aliens and addicted to pizza. They probably looked at me the same way, although I preferred salads and Tab."
High school athlete Tom Roberts (Vincent Van Patten) has no idea of what to do on a date with Kate Rambeau (Dey Young) in ROCK 'N' ROLL HIGH SCHOOL (1979).
On the other hand, Mary Woronov knew about the Ramones and was already a fan of West Coast punk bands like X and Fear. Her performance as Miss Togar was totally her own creation. In an interview with the A.V. Club, she remembered, They just let me go. Totally unstructured. I told Allan [Arkush], "Thank you for this role, because what I need is just a nice TV series, and I'm gonna do it like I'm Eve Arden." And he said, "That's fine, Mary." And then they dressed me up and they gave me makeup, I showed up on set with all these punk-rockers, and… I just turned into Miss Togar. I didn't even think about it. That was it. She was a scream for me."
Former Andy Warhol star Mary Woronov plays the evil Miss Togar in the 1979 musical comedy ROCK 'N' ROLL HIGH SCHOOL, directed by Allan Arkush.
In an interview with Lloyd Sacks of The New York Times, director Arkush recalls working with The Ramones on Rock 'n' Roll High School: "There was a lot of give and take as to how The Ramones were going to be presented. I was particularly concerned with whether they were going to be comfortable coming off as dumb as their songs imply they are. But they said that was fine….The concert sequence (filmed at the Roxy in Los Angeles) took twenty hours to shoot, but they never complained, even though they had to play the same six songs over and over again. The crew didn't know who The Ramones were when we started. But at the end, everyone was singing 'Pinhead.'
Singer Joey Ramone in concert in the 1979 musical comedy ROCK 'N' ROLL HIGH SCHOOL.
The band members even incorporated some of their own ideas into the film: Dee Dee Ramone, a compulsive shower taker, suggested the fantasy sequence where he turns up in Riff Randell's bathtub playing bass guitar. And the late Joey Ramone came up with the onscreen gimmick of having health food force-fed into his mouth after a concert."
Dee Dee Ramone appears in a fantasy sequence in ROCK 'N' ROLL HIGH SCHOOL (1979), directed by Allan Arkush.
Ramones fans were delighted with the soundtrack, which included some of their favorite tunes – "Teenage Lobotomy," "Sheena Is a Punk Rocker," "Blitzkrieg Bop," and the title song, which was written specifically for this film. The soundtrack also includes musical selections from such '70s rock acts as Alice Cooper ("School's Out"), Devo ("Come Back Jonee"), and Brownsville Station ("Smoking in the Boy's Room").
Miss Togar (Mary Woronov) confronts an unusual fan of The Ramones in ROCK 'N' ROLL HIGH SCHOOL (1979).
Even if you aren't a fan of these groups, there are plenty of other things to enjoy in Rock 'n' Roll High School: P. J. Sole's energetic portrayal of the Ramones number-one fan, the campy performances of Mary Woronov and Paul Bartel, who would later team up for another cult comedy, Eating Raoul (1982), and Allan Arkush's crazy-quilt direction, which perfectly integrates musical numbers with sight gags about exploding laboratory mice. In addition, there are fun supporting performances by Vincent Van Patten as a clueless jock and his wheeler dealer pal Clint Howard plus cameos by Hollywood veterans like Grady Sutton (The Bank Dick) and cult icons Dick Miller (A Bucket of Blood) and disc jockey Don Steele (Death Race 2000) as Screamin' Steve Stevens.
Eaglebauer (Clint Howard, left) advises his friend Tom (Vincent Van Patten) about his problems with the opposite sex in ROCK 'N' ROLL HIGH SCHOOL (1979).
It should come as no surprise that Arkush's main inspiration for Rock 'n' Roll High School was The Girl Can't Help It (1956), a seminal rock 'n' roll film that inserted rock acts from the period (Eddie Cochran, Gene Vincent, Little Richard, etc.) into a satire of the recording industry. Arkush would go on to forge a long career in directing TV series episodes (St. Elsewhere, Moonlighting, Crossing Jordan) but his film career never really took off due to two misfires, Heartbeeps (1981), a sci-fi comedy about two robot in love, and the rock industry satire Get Crazy (1983). Regardless, Rock 'n' Roll High School and Arkush's earlier collaboration with Joe Dante, Hollywood Boulevard (1976), are now considered cult classics of the 1970s.
ROCK N ROLL HIGH SCHOOL, The Ramones, Dee Dee, Joey, Johnny, Marky, P.J. Soles, center, 1979. c New World Pictures/ Courtesy: Everett Collection. New World Releasing/Courtesy Everett Collection.
Over the years, Rock 'n' Roll High School has been released in various editions on DVD with numerous extra features but if you are a fan of the movie, you should spring for the 40th anniversary edition on Blu-ray from Shout! Factory which was released in November 2019. Among the disc supplements are four separate audio commentaries (one featuring director Allan Arkush, PJ Soles and Clint Howard), numerous interviews with Roger Corman, Dey Young, Vincent Van Patten and other key cast/crew members, a retrospective "making of" documentary and more.
*This is a revised and expanded version of an article that originally appeared on the Turner Classic Movies website.
CS Interview: Director Allan Arkush On Cult Musical Rock 'n' Roll High School
https://www.criterion.com/current/posts/4429-movie-crazy-a-conversation-with-allan-arkush
Interview – P.J. Soles
RETURN TO ROCK 'N' ROLL HIGH SCHOOL Dey Young
https://weareclassicrockers.com/article/when-ramones-got-raucous-rock-n-roll-high-school
This entry was posted in film and tagged Allan Arkush, Blitzkrieg Bop, Cheap Trick, Clint Howard, cult movies, Dee Dee Ramone, Dey Young, Dick Miller, Don Steele, El Topo, Get Crazy, Grady Sutton, Heartbeeps, Hollywood Boulevard, Joe Dante, Joey Ramone, Joseph McBride, Mary Woronov, New World Pictures, Pinhead, PJ Soles, punk rock, Richard Whitley, Rock n Roll High School, Roger Corman, Russ Dvonch, Shout Factory, Teenage Lobotomy, The Ramones, The Roxy, Todd Rundgren, Vincent Van Patten by JStafford. Bookmark the permalink.


text:
Instant analysis: No. 7 Auburn rallies, relinquishes lead in another stunning loss to No. 12 LSU
Updated: Jun. 19, 2019, 1:21 p.m. | Published: Sep. 15, 2018, 6:58 p.m.
By James Crepea | The Oregonian/OregonLive
Kevin C. Cox/Getty Images
After an abysmal start, particularly on offense, Auburn made in-game adjustments on both sides of the ball and appeared to have the game in control.
But this is the LSU rivalry, where the bizarre is an annual occurrence.
After falling behind 10-0, No. 7 Auburn rallied and led by as much as 21-10, but No. 12 LSU got off the mat and scored the last 12 points, including the game-winning 41-yard field goal as time expired in a 22-21 win at Jordan-Hare Stadium. It was LSU's first win on the Plains since 2012 and snapped Auburn's 13-game win streak.
Joe Burrow connected with Derrick Dillon on a 71-yard touchdown that made it 21-19 with 8:18 to go but LSU's two-point conversation attempt failed.
After Auburn's offense went three-and-out, LSU went 52 yards on 14 plays and Cole Tracy kicked the winning 41-yard field goal as time expired.
After LSU sustained three long drives and scored 10 points, Auburn's defense forced five three-and-outs and a turnover on downs on LSU's next seven drives while the offense scored touchdowns on three straight drives (not including a kneel before halftime) to take a 21-10 lead, but LSU managed to rally for the game's last 12 points.
JaTarvious Whitlow had 20 carries for 89 yards and a touchdown for Auburn, which had just 130 yards on 38 carries.
AP/Butch Dill
Joe Burrow does just enough for a win
Burrow was 15 of 34 for 249 yards with a touchdown and had 10 carries for 22 yards.
The graduate transfer from Ohio State had four of LSU's eight third-down conversions.
On LSU's final drive, Burrow was 2 of 6 for 17 yards and had three carries for six yards.
Change in RB pecking order formalized
JaTarvious Whitlow is clearly Auburn's lead running back and Kam Martin's days as the starter are over.
Whitlow had 22 carries for 104 yards and a touchdown and Shaun Shivers had seven carries for 25 yards and a score compared to just two carries for four yards for Martin.
inconsistent performance from Jarrett Stidham
While he was much better than the career-worst performance against LSU last season, Jarrett Stidham had an inconsistent day, which started with an interception on his first pass.
Stidham was 16 of 28 for 198 yards with a touchdown and two interceptions, both of which were bad throws.
COLE TRACY IS GOOD!
LSU STUNS AUBURN! pic.twitter.com/JD67ZJIDJF
— CBS Sports (@CBSSports) September 15, 2018
Key play: Game winning 41-yard FG
Cole Tracy kicked the winning 41-yard field goal as time expired.
Key player: Joe Burrow
As noted, Burrow wasn't superb, but he was just accurate enough and didn't put the ball in jeopardy.
LSU didn't have any turnovers and still hasn't had any all season.
Gus Malzahn postgame press conference
Jarrett Stidham postgame
Alabama Life & Culture

redpajama_set_name: RedPajamaCommonCrawl


text:
Q: Errors Using Python urllib to read html I am currently having trouble using urllib on python to open links. My code is basically intended to be able to take the link of an article (variable "url"), open the link (page = urlopen(url))), get the html from the website (html_bytes = page.read()), decode the html (variable html) and then print what it has decoded.
Here is my code:

    from urllib.request import urlopen

    url = "https://www.wsj.com/articles/peloton-says-wait-times-are-down-to-pre-pandemic-levels-11620334234?mod=hp_lista_pos4"

    page = urlopen(url)
    html_bytes = page.read()
    html = html_bytes.decode("utf-8")
    print(html)

Here is my error:
File "c:/Users/Stras/VeraitasBot/urlopentest.py", line 5, in <module>
    page = urlopen(url)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.2800.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 222, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.2800.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 531, in open
    response = meth(req, response)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.2800.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 640, in http_response
    response = self.parent.error(
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.2800.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 569, in error
    return self._call_chain(*args)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.2800.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 502, in _call_chain
    result = func(*args)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.2800.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 649, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden

This code is able to open most links and scrape the html from websites such as New York Times, Fox, CNN, but I always get that error when I try and pull the html from websites such as WSJ (as shown in the example above).
Does anybody know a method where I can consistently scrape info from all websites or how to fix this error? Thanks

redpajama_set_name: RedPajamaStackExchange


DEW-SCENTED - Relentless Thrash Metal from Germany - DEW-SCENTED » New DEW-SCENTED announce new album title and unveil artwork; first online teaser video launched! DEW-SCENTED - Relentless Thrash Metal from Germany - DEW-SCENTED » New DEW-SCENTED announce new album title and unveil artwork; first online teaser video launched!
Home > NEWS	> New DEW-SCENTED announce new album title and unveil artwork; first online teaser video launched!
New line-up; Post second online teaser for "Icarus" album! New DEW-SCENTED album recordings finished; Release scheduled for late July! New tourdates!


text:
Sonia Bathory
A seductive demoness who possesses much power over the lower demons. She is selfish, in the way that she always needs to have what she wants when it comes to being satisfied.
0 · 716 views · located in Lust (Luxaria) - Second Circle
a character in "The Multiverse", originally authored by RolePlayGateway, as played by EarthWanderer08
Sonia's Theme
Full name: Sonia Cadeyrn Bathory
Alias/Nicknames: Sonia, The Countess, Lust,
Species/Race: Dark entity/demoness
Nationality: Romanian/Norwegian
Birth Date: October 31st
Age: Around 3,000 years of age. Possibly older.
Zodiac sign: Scorpio
Job/Profession: A dark sorceress
Title: Queen/Goddess
Allegiance/Alignment: Evil
Height: Almost 6'0"
Build: Slim/slender/underweight
Blood Type: O+
Handedness: Ambidextrous
Skin shade/color: White/Caucasian, pale
Eye Color: Yellow/Gray
Eye disabilities: None
Eye wear: Dark assortments of makeup.
Hair Color: Ebony/Black
Hair style/length: Almost to her waist, straight with slight curls on some ends.
Scars: None
Birthmarks: None
Tattoos: One on her shoulder as seen in the image above, and two under her eyes.
Distinguishing traits: Her cunning smile and deathly gaze.
Sexuality/preference: Bisexual, but she prefers men
Relationship/Martial status: Single, she's a seductress of sorts and acts as a black widow figure towards men and women alike.
Family/relatives: She has none because she was created, not born.
Friends: -
Rivals: None
Acquaintances: -
Known languages: The language she prefers to speak is English, but she knows a lot more than that.
Proficiency: Dark magics and sorcery, seduction, transformations, and tongues.
Sonia Bathory's Story
Seen 133 Times • Page 3 of 6 • 1, 2, 3, 4, 5, 6
Gambit's Bar
# 2012-12-07 01:14:07 , as written by EarthWanderer08
Sonia, not really caring about looks, but also, not really caring about anyone besides herself, just looked on in mild amusement. She sat down nearby, maybe next to the siren. "Oh, I remember what you once were. Or really, what you still are. I just tend to be a little fussy and careless when happy. My real way of dealing with this, would be to woo you. But that only happens when I am hungery and selfish. Right now I'm just, happy. Something I don't feel often. Just go with my cruel honesty." She said with a smile, ordering a Bloody Mary.
"Well, that is your choice. I dont know per say what you did. But I am sure I will know soon." Sonia, got up from her seat, and stepped away from the crowd and the siren. Heading for the door, to exit, and go find herself a plaything.
The setting changes from Gambit's Bar to Mountain Path
Mountain Path
Sonia, in a bad mood. Came portaling in, dressed in her usually raunchy outfit. She wasn't unfamiliar with these parts, in fact, she came here often, to survey the peaceful surroundings. But today, she was looking for something to vent her emotions out on. She could easily just go and seduce some poor fool, but where was the fun in that? She needed something fresh, something exhilarating...
Upon walking a few steps out of her swirling red portal, she was already beginning to feel more peeved. She hadn't ran into a single man, or person for that matter, since she arrived.\
Sonia Gradually seeing the possibilities of the day, noticed another being approaching. She was very unsure o0f whom it might be, but thought it was entertainment non the less. She heard the crack, and teleported right behind them.
"You got business with me or this area?"
"No need to have a violent breakdown...That is actually quiet pathetic." Sonia smiled at that, stepping closer, observing the specimen before her. Quiet young, this one...and quiet scared it seemed. But why would anyone be afraid of the second succubus to exist? It was beyond her imaginations.
"Are you afraid of me? Please, for you to be afraid of me, is like an amphibian being afraid of surfacing. It's necessary, and you have to do it. Yet it's sometime inconvenient or fearful, of being caught. Wait, tha was no good..." She began to ponder, no matter how smart she was, she was terrible at analogies.
Sonia snapped out of her ponderous state, "Or what? You gonna do something with that little one?" Sonia evoked a hell fire to surround the area they were in. Creating a extremely hot circle, that burned down anything it came in contact with. She would keep the flames in check form licking from the leave and branches, and running rampant in the forest. She didn't want that just yet.
"I taste your fear little one." She licked her lips, "OR rather, I would like to. Would like to be snack today, or will you find courage?" She asked, her voice dipping low.
"You'll do anything hmm? Why don't come with me then? I'll show you a good time..." She snapped her fingers, and her hell-fire receded back into nothingness. The only indication it was ever there, was the black scorched earth that was razed from it. "How about I make into a not so spineless wimp? You'll do anything I say? Then endure my training. Cant guarantee you'll like it...but it's better than me torturing you with s&m, now isn't it?" She created a portal that would take them far away, into barren lands. "How about it?"
"Hmmm, what is this? Are you going to come? Or are you going to be tortured? It's really your choice..." The swirling vortex was still raging, right next to them. Sonia waited on an answer. But then a being came out of nowhere.
"Ohh, is this your pet then? I wasn't going to harm her, just play with her...give her some backbone, you know?" She said in a seductive, but pouty voice. Laying on the little girl look. She wasn't really into it though. "You should make your toys stronger, this one broke down as soon as I bared fangs...that wont due."
Sonia, not very much caring for the attitude that was being showed..."You could very much ask a little more nicely. As I see it, I can abolish this thing right now, and you would go into a rage, blah blah blah..." She started checking her nails, as if she didn't have a care in the world...
"You divine types are all the same, never realizing the consequence of your threats, and actions." She pointed one finger at the little women who was trembling. "I dare you to move, she'll never again breathe. Now speak to me normally, we don't have to trade acid in our words." She was focused now, her blood boiling, the whole situation giving her strength. Though she needed it not. As of now, it wasn't a question of whether she was a match. It was how bloody did her opponent want this to get. Sonia stepped forward, up toward the being. As she did so, undead warrior would pop from the ground, hundreds of them flooding from the floor, crumbling and rusted, some wielding different forms of weaponry. The all flanked in a circle around the whimpering whelp, and behind Sonia. So started to even come from her portal.
"Are we going to be civil. I have no doubt you could take them, but they would take her...and then you would still have to deal with me."
Sonia, snapping her fingers, had the undead retreat from the young lady, creating a path.
"Yes, I say we should." With that, she snapped her hands again, and the whole surrounding area started to dissolve. It would seem, everyone was being transported, as everything but they, and the undead was dissolving, and forming a totally new place.
"I reckon we should be able to talk here..." Sonia smiled as she was ready to sit around to have tea.
The setting changes from Mountain Path to Wing City Gardens (South)
Wing City Gardens (South)
Sonia transported the trio, including the undead, into a beautiful garden. It was not too far from the main street or Wing City. However, there were usually no chairs or tables in this part of the garden. Rightfully so too, for Sonia preferred to make her own.
Sonia conjured up an ebony black table, made out of the blackest material in hell, along with the most beautiful sculptor down there. Sonia sat, crossing her legs, and gesturing at the other end of the short coffee table, that seemed to have tea ready and waiting. Sonia pored some for herself and for Maedos. "Wont you join me? Lets speak like civil beings.." she would glance over at the undead staring down the whimpering one..."Give her some room will ya boys, just make sure she isn't too comfortable."
"I Would like to know what you are, and why your here...spar me anything that has to do with the young lady over there. She is but something I'm interested in, and I will address it shortly." Sonia sipped her tea, looking seductive, and as if there was not a care in the world. Aparently, her power of seduction held sway over spirits and dead too, for as soon as she turn a bit of it on, A couple of warriors started to stalk toward, the crumbling shortly after. "That is inconvenient...Oh well..." She turned her attention back.
"I rather you calm yourself down, or must I keep repeating myself? You cannot kill me without a fight, and surely your young one would get dragged into it?" She looked over her shoulder, giving the ok to grab the girl. The soldier would hall her up, forcing her to stand awkwardly, as they presented her to the being calling herself 'judge'.
"I am rather tired of repeating the calmness of situation, or rather, asking you to stay that way. If you wish to be rash, and bold. Make your move, and you shall fail your mission of protecting twice over." She said, unworried, but rather focused...
Sonia, not sure why things always had to be so exciting, saw the fast movement, able to follow it, very in fact. She extended the deathly blades imbedded in her arms, cutting the rough metal cleanly in quarters, with swift movement...She would watch things unfold in an almost slow motion way. She was smiling as one of her minions got blazed with the light.
The women was obviously blinded with rage, for she was not paying attention. Sonia whisteled, and all of the undead warriors, there being about 280 of them, surrounding the area, would attack. Rushing the women in a wave, instead of one on one. Some would strike and bunch up as the women surged forward with her holy like light. She would see her precious Seria dissolve toward the back of the storming undead warriors.
Sonia would play along. Teleporting toward the back of the crowd where the girl was. Maedos would hear a scream at the back of the crowd of undead.
Sonia would look at the way the undead were getting all kinds of piles of different limbs being chopped off. There wouldn't really be a reason for here to panic. She would shift into one of them, and the toss the girl into the pile, bloodies and pale. Looking as if she had been sucked dry. She would play along as if she was an undead warrior, but a wave of red would sprout through the ground, and a wave of flying black spirits and what looked to be very unfriendly looking fallen angels. They would look grotesques, with different hues of grey and black, where their normal white and gold would be.
Some of them would be wielding quite powerful looking blades, forged in hades. Three would attack at the same time, unaffected by the light, but still easy enough to defeat. Not with one slash, they are fallen angels after all. They would be tall and slender, haunched, and bloodthirsty. They would have wings of slimy black bone-like wings that had black feathers sheading from them.
Sonia would sit in the crowd of undead warrior, blending in as one them, but she would be wielding a Stygian Sword (black blade) and torn clothing. She was not standing out, but if looked at twice, someone would eventually notice.
"Guess, I'll play," said Sonia, as she walked forward, having seen a spectacle of the light, and the undead. Since she only parried the last three, they were circling above, waiting to strike.
Sonia shifted from the undead for she took, keeping the blade she had in hand. Not wanting to pull out her death blades from her arms...she would rather a one handed weapon. She looked around at all the dead warriors, and reflected on the strength used to smash one of the fallen angels head. Interesting, but she's seen that before.
Sonia was looking a bit disappointed though, all that rage, but not quiet the fighter she expected. With that axe, she expected more..but everyone knew, that Sonia was never looking at things so simply. "I know you aren't trying your best, and I'm sure by now you realize whats going on over there?" She would point at the non-moving body of the aen warrior (the little girl). The little girl started the pale further and convulse...shaking ash and blood all over the place as she flailed. Sonia would simply smile.
"You know, if you want to fight me head on, I'll adhere to your plea. You get the first strike, just try not to bore me ok?" Sonia wouldn't even take a stance, she would just hold her Stygian Black Blade by her side, in her left hand.
Sonia would step in, a sharp step, just as fast as her opponent. Invading the space in which one would be able to swing, if the swing continued, there would be a blade headed toward Maedos' throat, and a hand blocking her arm from continuing. Sonia would have her right hand blocking the arm with axe, her left attempting to impale Maedos, lest that is how it looked.
Sonia's irritated skin was just that...irritated. Which didn't bother her. Sonia directed her blade upwards, jabbing twice extrememly fast, aiming at the axe itself, and then slashing diagonally at Maedos, who was stepping back apparently.
As she attacked, you would see her form shift into a more appropriate outfit, that of leathery material, covering up her exposed skin, and leaving something like a long cape that came out the bottom half of the backside of her outfit. She would be fully covered, but still scantily clad.
Sonia slapped away the jab at her chest with her left hand, and twisted her blade, moving around and out. Yanking her blade in an elegant manner, that allowed her to escape her blade from being buried, and also allowed Sonia to jump back, becoming airborne.
Once she was in the air, and Maedos batted her wings, causing dirt and wind to surge toward he...Sonia swung her blade, whilst still airborne. The blade would create a strong wind, counter acting the wind. Sonia would touch the ground, and almost too fast to follow, she would step from 20 feet away, to Maedos back, swinging her blade with hell-fire coming off of the entire blade.
Sonia, would continue her swinging, rounding about and dipping low with a sweep kick. She would use the miss from her swing to sweep the one behind her, whilst barely escaping the one from above. It was more a combination of skill and instinct that allowed her to get outta that without her having to result to any tricks. She was taking this as serious as she would in 'honor'.
Sonia would, during the sweep kick, flip up her other leg into a move that would allow her to stretch unnaturally with her legs into a sort of kick to the other Maedos that missed the diagonal swing from above.
Sonia, having the ground explode from underneath her, would use her arms to continue the spin up onto one hand. She would be vertical, spinning way faster than should be possible, her blade cutting everything from below, like a chopper blade. The ground would have exploded at the same time she maneuvered, to reveal Maedos coming from below, attempting to grab her legs, and axe. She would either get cut from her spinning, with her blade still in her hand, but on the ground being moved by her centripetal force and hands continuing the spin. She would get struck by the axe, which would cause her to be knocked 20 feet back. Her leathery armor on her shoulder crumbling from the blow...but no bones would be broken.
Maedos would continue forward, surging straight through Sonia, in her place being nothing. She would look confuse as she would wonder where Sonia would be.
A huge blazing fire, that was black in it's nature, known as Hell Fire, would spread out, in a circle, starting where Sonia last was. It would spread into a 50 foot high circle, of extreme heat from the outside. The inside would feel less hot, due to the nature of Hell-Fire. It would not be quelled unless Sonia was killed, or found and attack into losing concentration. Maedos would hear a low chuckle that sounded feminine, and taunting.
"You know..heh, I am very much satiated with our brief fight. You seem capable. Although, benevolent beings like yourself should be less tricky, more direct. If find your style of fighting annoying and forwardly deceptive. Relative I'm sure." Sonia's voice would resonate from all sides, coming from the circular Hell-Fire barrier, that sealed off it's top. Allowing no escape. The only way out was down, for there was no way to freeze hell-fire, just like there was no way to melt divine ice or water.
Sonia, clearly baiting the Maedos into her dwelling, was looking forward to teaching her something. That something would be a very valuable lesson. That lesson would be respect for true demons, and the understanding of who falls into that category. Sonia was pleased to have her boring day turn into what it did, exciting, all exciting.
As Sonia stood at the gates of hell. She would have left the tunnel leading toward the Gates Of Dis in Hell...
"We'll end this here...guarantee it." Sonia resonated, upon hearing the falling approach of the 'monster deity'. Sonia waited with her shoulder guard missing, and her Stygian Sword held on that same shoulder.
The setting changes from Wing City Gardens (South) to The Gates of Dis
The Gates of Dis
Sonia having baited the woman into her realm, was still holding her Stygian Blade in her right hand, very relaxed, and ready for the hole in the ceiling to close behind Maedos once she entered. Sonia was looking rather smug, standing in front of a massive gate that was the entrance to the sixth circle of hell. There was a river running on there immediate left some 50 feet away, souls clambering from the dark black waters. Otherwise they were in a barren looking place that had a few details in rock formation, bones and what looked to be some sculptures on the walls.
"Aren't ready for the finally?" She would call up, knowing the the next thing that this woman would see, would be a complete surprise.
"Silly lady, you cannot enter hell, at least not without being immediately shackled from one of the resident princes. I doubt Lucifer or Beelzebub would appreciate a divine being in there realm. I'm pretty sure, no matter how strong you are, you connot take on multiple upper level demons, and their army. Including the resident Princes..expecially not the princes." Sonia check her left nails again, as she walked forward, very naturally in her element. Gaining power each moment she was down there.
"Besides, I doubt you were going to appreciate it anyways, so I took you here, to the gates. I was planning on burying you in the River Styx over there. But decided I'm too nice to kill someone who showed me such a good time. So instead.." Sonia snapped her hand, and the small wimp of a girl would appears to be dangling above the river Styx. She would be bound in dark chains. Two feet above the rivers current, the little girls head would bob, unconsciously, from the surface.
"If you can force me into submission," She started, licking her lips, and looking the being up and down, "I will let her free. Fail, and she get dragged into the deepest reaches of hell. OF course I know it temporary, seeing how as she is not of this realm, and would surly just 'beam' away or something. But she would suffer for a few days, losing her sanity, whilst the souls in the river drag her deeper and deeper into hell and despair."
Sonia would stand with the left side of her body toward Maedos, her sword still down. "Come."


BHS HOLDING ApS is a company located in Denmark, 4700 Næstved at Kanalvej 1. BHS HOLDING ApS has an ACTIVE entity status and an ISSUED LEI code. The Legal Entity Identifier code of BHS HOLDING ApS is 549300D7L1R1Q7DKX192. The legal form of this company is H8VP and is subject to the jurisdiction of DK law.


How do I animate (and control) materials and objects in the BGE?
This was a question I recieved some days ago by my interns, and to be honest I never thougth about animating materials recently in the BGE, at least I did not in my past projects, although I already knew that it is possible but the fact that blender automatically names the animations makes a bit hard at first to understand, and also when you are working with more animation layers in the logic bricks to handle different animations. So that's why I wrote this post about material animation in BGE.
Go to Diffuse panel in the material tab and press RMB (right mouse button) and select "Insert Keyframe" in the pop-up menu.
Go to frame 20 in the time line.
Just by putting your mouse in the color selector and pressing LMB or RMB (left mouse button or right mouse button) you can change either color and set a new keyframe.
Press "Scaling" option to set the scaling keyframe.
Press S-Key to scale the cube, just a little not too much.
Press I.Key and select "Scaling" to add the keyframe.
Now go back to frame 1 and move the slider back and forth to see the animation. the cube will be changing the scale and the color also.
Next step is to add some logic bricks to control the animation, but what are the function of the Logic Bricks? The blocks (or "bricks") represents preprogrammed functions which can be tweaked and combined to create the game/application. The system is broken up in three parts: sensors, controllers and actuators. Sensors sense when things happens, such as a collision, a key press, mouse movement. Sensors are linked to controllers, which compare them and activate actuators. Read more here about logic bricks.
In the logic area press the "add sensor" button in the "sensors" section and select "Always" sensor.
In the actuators area press "add actuator" and select "action" actuator.
Drag a line from the conector in the actuator to the sensor con make a link between them, it will automatically add the "and" controller.
In the Action actuator select the name of the object animation and set the animation to "ping pong" from frame 0 to 20.
Add another "action" actuator and do the same, but this time select the material animation, also set it to ping pong and from frame 0 to 20.
Now press P-Key to activate the game engine (Make sure "Blender Game is active, not Blender Renderer" in the top center window), and you will notice that just one animations showns up while running the game engine, and this is because both animations are handled in the same layer (look for it in the Action actuator).
And that's all! To sum up, every animation need to have its own logic brick that calls the actual animation (material or objecs transform, scale, etc) Now you also learnt that blender automatically makes names of every animation, but they are hard to locate if you do not rename it to make it more understandable or to relate to some object to make it more easy to locate.
And of course you can animate almost everything in the material editor, so you can do almost any kind of material animation here. The blend files is very basic and simple, but just in case you need it, you can grab it from here.


Dawson County offers a wide variety of exciting experiences for the entire family. Visitors to our historic North Georgia mountain community can find great opportunities for shopping, outdoor adventure or just enjoying some of our local events and festivals.
Below you'll find a list of the most popular attractions in Dawson County. For more information about these and other attractions, please contact the Dawson County Chamber of Commerce at (706) 265-6278.
Dawson County is home to 729-foot Amicalola Falls, the highest waterfall east of the Rocky Mountains. Amicalola Falls State Park surrounds the falls, and the Amicalola Falls Lodge is located at the top of the falls. All of the 57 rooms in the lodge offer spectacular views of the Blue Ridge Mountains. Recreational activities include hiking, trout fishing, and sightseeing on the 1,020 acres of natural surroundings. Accommodations include the Amicalola Falls Lodge, The Maple Restaurant, meeting rooms, cabins, campsites, and the Len Foote Hike Inn, a secluded getaway for hikers. Special programs are offered March through December.
An 8 mile approach leading from Amicalola Falls State Park begins the 78 mile Georgia portion of this famous hiking trail to Maine. Springer Mountain, the southern terminus of the Appalachian Trail is located 8.5 miles north of Amicalola Falls.
Atlanta Motorsports Park is a private membership club and motorsports playground where family, friends, and businesses come together to share and celebrate their passion for driving. Set in the breathtaking Blue Ridge mountains near Dawsonville, – just 45 minutes north of Buckhead – Atlanta Motorsports Park's facilities include a Formula One designed 2-mile road course for members and clients. Also, AMP is home to America's most unique karting circuit with elevation changes found nowhere else in the world.
Located in the historic "Old Rock School" in downtown Dawsonville, The Bowen Center for the Arts offers breathtaking gallery shows, exciting theater productions, exceptional musical presentations and fun-filled social events. Community camps and classes offer wonderful training opportunities for individuals to develop skills that can be shared in the county and abroad. Visit the Bowen Center artist gallery and gift shop to find items created by local artists.
A unique experience for all ages and a North Georgia tradition! Burt's Farm offers 40 acres of home grown pumpkins, popcorn, Indian corn, and ornamental gourds. Hayrides are offered September 1 - November 15. Located on GA 52, just south of Amicalola Falls State Park.
Enjoy a movie at our state-of-the-art cinema.
Dawsonville Moonshine Distillery is a legal moonshine distillery, located in the heart of "The Moonshine Capital of the World" – Dawsonville, GA. Spirits are made from traditional recipes that have been passed down through the family for over 150 years. Free tours of the distillery and free samples of moonshine are available.
Made famous by owner Gordon Pirkle, the Pool Room offers a family atmosphere containing an rare and unique collection of history and memorabilia on Bill Elliott's NASCAR career and early moonshine runners. The menu includes the famous made from scratch Bully Burgers and fresh-cut fries.
From Dawsonville, access to the beautiful North Georgia countryside is simply a matter of picking a point on the compass and pointing your automobile in the right direction. The southern Appalachian Mountains loom over the foothills to the south and west with incredible views of nearby peaks including Springer Mountain, Burnt Mountain and Disharoon Mountain. On a clear day, the skyline of Atlanta, more than 40 miles distant, can be seen from several vantages. Choose from 5 scenic routes through the beautiful countryside of Dawson County and surrounding communities.
Learn about the history of stock car racing and prominent members of Georgia's racing heritage. Vintage race cars are on display outside and in, including the first NASCAR race car driven by Bill Elliott, moonshine cars, a car driven by the late Casey Elliott, the car owned by Raymond Parks and driven by Lloyd Seay, and the Gober Sosebee '39 Ford, which won Daytona no fewer than three times. "Saturday Night Drive-In Theatre" is a themed exhibit where you can sit in old cars to watch a movie.
At 39,000 acres, Lake Lanier is the largest lake in Georgia and offers exciting outdoor activities including beach and park access, camping, fishing, boating, swimming, and other water sports.
140 name-brand outlet stores in an attractive outdoor village setting. Stores include Ann Taylor, Banana Republic, Calvin Klein, Coach, Cole Haan, Hugo Boss, J.Crew, Kenneth Cole, Liz Claiborne, Nike, Polo Ralph Lauren, Restoration Hardware, Williams-Sonoma Outlet and more.
Uncle Shuck's offers a unique twist to the time-honored fall trip to the pumpkin patch. The Corn Maze is a fun family activity for the young and old!
For more information about these and other attractions in Dawson County, please contact the Dawson County Chamber of Commerce at (706) 265-6278.


The stem cell niche comprises stem cells (SCs), stromal cells, soluble factors, extracellular matrix constituents and vascular networks. The ability to identify signals that regulate SC self-renewal and differentiation is confounded by the difficulty in isolating pure SC niche components in sufficient quantities to enable their biochemical characterisation. Here, we report the extracellular (secretome) and adherent plasma membrane proteomes of three distinct epithelial cell subpopulations isolated and immortalized from the mouse mammary gland--basal and mammary stem cell (basal/MaSC), luminal progenitor (LP) and mature luminal (ML) cell lines. GeLC-MS/MS-based proteomic profiling revealed a distinct switch in components modulating Wnt and ephrin signalling, and integrin-mediated interactions amongst the three cell subpopulations. For example, expression of ephrin B2, ephrin receptors A1, and A2, as well as integrins α2β1 and α6β4 were shown to be enriched in basal/MaSCs, relative to LP and ML cells. Conspicuously, Wnt10a was uniquely detected in basal/MaSCs, and may modulate the canonical Wnt signalling pathway to maintain basal/MaSC activity. By contrast, non-canonical Wnt signalling might be elevated in ML cells, as evidenced by the high expression levels of Wnt5a, Wnt5b, and the transmembrane tyrosine kinase Ror2.


text:
CemNet.com » Cement News » Iraqis Deal with cement shortages
Iraqis Deal with cement shortages
Iraq is benefiting from a construction boom - in no small part due to the infusion of more than US$20bn in reconstruction money. The reconstruction has fuelled a demand for many building materials and at the top of the list is cement. In addition to electricity shortages and the lack of clean water, the country is now experiencing a shortage of cement. With building projects mushrooming all over Iraq for the first time in 30 years, local observers say prices have skyrocketed. Apparently the price for one tonne of cement has gone up three to five times since before the war - from about US$20 then to US$125 now.
The problem is supply. June Reed, the US Embassy Private Sector Development advisor in Baghdad, says most of Iraq's 13 plants are operating at about 25 percent capacity, or not operating at all. "The state-owned enterprises that relate to cement are very old, some have plants and equipment that is 30-years old, outdated, generally not profitable, certainly not efficient," she said. Iraq's chronic electricity and fuel shortages, in part caused by sabotage and insurgent attacks, have also shut down plants.
Salah Kambour at the Iraqi Ministry of Industry and Minerals says Iraq is rich in limestone and clay. He says Iraq used to export its cement, but now: "We are importing cement from everywhere: from Turkey, from Lebanon, from Egypt, also from Kuwait, and from China! So from everywhere cement is coming!" he said.
Kambour says the production of Iraq's cement plants is about half the current demand. But even if the plants are repaired and provided with new equipment, they could only potentially produce about about half of the country's projected demand.
The American Embassy in Baghdad's commerce counselor, Andrew Wylegala, says privatization can help bridge this production gap and that across the board free-market reforms promise the best future for Iraq's other state-owned industries. "Clearly the private sector is the way forward, the work that has been done through official funds and through reconstruction efforts, was always intended and has made good headway in setting the stage so private sectors players could come in and continue the job," he said.
In a move toward that goal, the Ministry of Industry announced that two cement plants will be the first state-owned companies to be partially purchased by privately owned companies. Kambour hopes it pays off. "We hope they can get the know-how, to reach the design capacities, so the bad need of cement can be satisfied," he said.
Swiss cement deliveries down 5% in 2019 17 January 2020
Puerto Rican sales see 6% drop in 2019 17 January 2020
Peruvian demand up 2% in December 16 January 2020
Chile's cement demand up 3% in 11M19 16 January 2020
DR Congo cement demand weakens in 10M19 16 January 2020


text:
This week in FCW history
Seven years ago: Dec. 2, 1996
Report blasts Mac replacement
NASA's Office of the Inspector General said that the chief information officer at the Lyndon B. Johnson Space Center did not follow agency policy and may have negatively affected space flight safety when he ordered the replacement of the center's Apple Inc. Macintosh workstations with PCs that run Microsoft Corp. Windows 95. The replacement was not cost effective and did not take users' requirements into consideration, the inspector general said.
The investigation was prompted in part by a protest launched by center employees shortly after the replacement policy was issued.
Six years ago: Dec. 1, 1997
ODIN opens to all feds
The General Services Administration and NASA were set to sign an agreement opening the Outsourcing Desktop Initiative (ODIN) for NASA contract to all government agencies and increasing its value to $5 billion from almost $1 billion. Under the agreement, GSA's Information Technology Integration center would handle all orders for ODIN services originating outside NASA.
Three years ago: Dec. 4, 2000
SBA takes next step in modernization
The Small Business Administration selected SRA International Inc. to head the second phase of a three-phase systems modernization program. Under a task order through GSA's Millennia Lite contract, SRA and its partners provided systems integration services to automate SBA's financial management systems.
Two years ago: Nov. 28, 2001
VA plan thaws IT projects
The Department of Veterans Affairs lifted its temporary freeze on new information technology projects after issuing its enterprise architecture plan. However, VA Secretary Anthony Principi said that as a way to keep track of resources and unify the VA, CIO John Gauss or his designated representative still must approve each IT project and the money to pay for it. Gauss said some changes would have to be made to the enterprise architecture plan to address post-Sept. 11, 2001, fears. He said the changes involved increasing physical security at its data centers.
One year ago: Dec. 2, 2002
Coast Guard turns HR helm over to vendor
Coast Guard officials said that they outsourced the operations of the human resources management system to increase access to current information and enhance the system's security. The agency awarded Corio Inc. a $6 million, seven-month deal with four options years, to host the PeopleSoft Inc. personnel program used by the Coast Guard.


Gathering requests for expanding Sabo projects.
Making proposals to the government.
Exchanging information with the administration, universities, etc.
Publishing the "Sabo News Letter"
JSA collects and provides information on Sabo.
JSA conducts investigations and research into Sabo, and contributes to and supports the advance of Sabo technology.
JSA prepares seminars to advance the technology of Sabo.
JSA conducts publicity work to disseminate Sabo information.
Publishing the "Serials of Sabo"
JSA publishes information about Sabo administration and technology.
JSA accumulates, stores and provides data.
JSA commends those who make contributions to Sabo.
JSA provides the Sabo Hall for us by all.


text:
package org.apache.camel.component.jackson;

import java.util.HashMap;
import java.util.Map;

import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.Test;

public class JacksonMarshalTest extends CamelTestSupport {

    @Test
    public void testMarshalAndUnmarshalMap() throws Exception {
        Map<String, Object> in = new HashMap<>();
        in.put("name", "Camel");

        MockEndpoint mock = getMockEndpoint("mock:reverse");
        mock.expectedMessageCount(1);
        mock.message(0).body().isInstanceOf(Map.class);
        mock.message(0).body().isEqualTo(in);

        Object marshalled = template.requestBody("direct:in", in);
        String marshalledAsString = context.getTypeConverter().convertTo(String.class, marshalled);
        assertEquals("{\"name\":\"Camel\"}", marshalledAsString);

        template.sendBody("direct:back", marshalled);

        mock.assertIsSatisfied();
    }

    @Test
    public void testMarshalAndUnmarshalMapWithPrettyPrint() throws Exception {
        Map<String, Object> in = new HashMap<>();
        in.put("name", "Camel");

        MockEndpoint mock = getMockEndpoint("mock:reverse");
        mock.expectedMessageCount(1);
        mock.message(0).body().isInstanceOf(Map.class);
        mock.message(0).body().isEqualTo(in);

        Object marshalled = template.requestBody("direct:inPretty", in);
        String marshalledAsString = context.getTypeConverter().convertTo(String.class, marshalled);
        String expected = String.format("{%s  \"name\" : \"Camel\"%s}", LS, LS);
        assertEquals(expected, marshalledAsString);

        template.sendBody("direct:backPretty", marshalled);

        mock.assertIsSatisfied();
    }

    @Test
    public void testMarshalAndUnmarshalPojo() throws Exception {
        TestPojo in = new TestPojo();
        in.setName("Camel");

        MockEndpoint mock = getMockEndpoint("mock:reversePojo");
        mock.expectedMessageCount(1);
        mock.message(0).body().isInstanceOf(TestPojo.class);
        mock.message(0).body().isEqualTo(in);

        Object marshalled = template.requestBody("direct:inPojo", in);
        String marshalledAsString = context.getTypeConverter().convertTo(String.class, marshalled);
        assertEquals("{\"name\":\"Camel\"}", marshalledAsString);

        template.sendBody("direct:backPojo", marshalled);

        mock.assertIsSatisfied();
    }

    @Override
    protected RouteBuilder createRouteBuilder() throws Exception {
        return new RouteBuilder() {

            @Override
            public void configure() throws Exception {
                JacksonDataFormat format = new JacksonDataFormat();

                from("direct:in").marshal(format);
                from("direct:back").unmarshal(format).to("mock:reverse");

                JacksonDataFormat prettyPrintDataFormat = new JacksonDataFormat();
                prettyPrintDataFormat.setPrettyPrint(true);

                from("direct:inPretty").marshal(prettyPrintDataFormat);
                from("direct:backPretty").unmarshal(prettyPrintDataFormat).to("mock:reverse");

                JacksonDataFormat formatPojo = new JacksonDataFormat(TestPojo.class);

                from("direct:inPojo").marshal(formatPojo);
                from("direct:backPojo").unmarshal(formatPojo).to("mock:reversePojo");
            }
        };
    }

}

redpajama_set_name: RedPajamaGithub


text:
Machu Picchu Morning
Today would have been your 90th birthday and it's the day we're going to Machu Picchu. I think it's fitting because you were such a world traveler, always planning the next trip, always eager to regale everyone with your travel stories. But you never made it Peru. You never saw Machu Picchu, though you saw the Sphinx and the pyramids, the Mona Lisa and the Eiffel Tower. So, I'm going to keep you tucked in my heart and share my day with you. I know so much you'd love to be here.
Our day started early. Karyn's alarm went off at 4:00 AM. Mine followed in rapid succession at 4:05. Everyone in our group gathered in the dining room of our hotel for a very early breakfast. As Michelle put it, "It was a good breakfast, but I probably won't remember eating it."
I chose quinoa pancakes with maple syrup, scrambled eggs and even had a cup of coffee, which I never drink except for special occasions. It was 4:00 AM after all.
After breakfast, six of the women in our group clustered in the women's room, waiting patiently for a single stall. I wasn't feeling very patient. "I'm going to the men's room," I announced. We'd all been forewarned that there was only one bathroom at the entrance of Machu Picchu and none at all inside, and we all wanted to be prepared. While we stood in the lobby waiting for everyone to gather, Karyn offered, "If anyone needs help pooping, come to me." She was referring to the power of the yogic twist.
Brenda reminded us that we had to have our passports to get into Machu Picchu. We all double checked and then Karyn and I left our room key at the front desk. Last night at dinner, Annie, one of the most seasoned travelers of a seasoned group of travelers told us, "When you stay in a tourist town, ALWAYS leave your room key at the desk. Pickpockets will target your room key and then go in and clean you out. If you leave your key at the desk, it's the hotel's responsibility if you get robbed." I filed away that piece of sound advice and many of us took it today.
I also learned, "If you have to put on both sunscreen and insect repellent, put the sunscreen on first, next to your skin, and the bug juice on top, closer to the bugs."
The forecast was for 75 degrees, but when we headed outside to walk to the bus stop at 5;00 AM to wait for the bus for the final leg of our journey up to Machu Picchu, it was still cool outside. The early morning light was grey. We walked uphill to find the end of the line, which was already very, very, very long. There was a lot of excited talk in dozens of languages I couldn't begin to recognize. Dozens of varieties of hiking boots and hiking sneakers, every kind of expensive high-tech gear. Every color of hat. Contracted hiking poles, all with rubber tips, sticking out from thousands of backpacks.
We kept walking up the hill. The line seemed to be endless. When I caught up with our crew, someone said, "It's quite a queue!"
Brenda responded, "It usually goes pretty fast. We'll probably be in line for an hour."
As we slowly walked, we passed one souvenir vendor after another, selling water, postcards, super thin colored ponchos, fruit, candy bars, coffee, jewelry, incense, colorful woven water bottle holders, hats with Peru and Machu Picchu stamped across the front, sticky buns, a blackboard with the words MENU TURISTICO and JUGOS (juices): papaya, pina, platano con leche, mango, naranja, manzana and especial.
The Urubamba River ran in the wash below us. The streets were mobbed with people, lots of excited chatter and picture taking. As I looked at the members of our group, bonding and talking happily, no one sick, everyone able to fully participate in our Machu Picchu day, I felt a shot of pure joy. All of these people had come together because of something I had created. As if reading my mind, Meredith, a long-time student of mine, turned to me and said, "I've met the best people through you." That's what I love best: creating community. I took in each of the eighteen people who'd come on this trip in turn, really taking them in. I felt a rush of love for each one. I knew their stories. I'd sat with each of them. I'd laughed with each of them. Many of us had cried together in writing group. We'd held witness for each other and writing class—and daily yoga—had created a powerful bond. And now we were going to share this special adventure together. For many of them, this trip to Machu Picchu was one of the main attractions of this trip.
I, however, didn't have any particular expectations. Last December, when Karyn and I went to visit our daughter Eliza in Beirut, we'd traveled to the desert in Jordan and I'd been blown away by Petra. But a few years back, when we took a group to Southeast Asia, I'd been unimpressed by Siem Riep in Cambodia. What I felt more than anything in Cambodia was the history of trauma that permeated the place.
The top world heritage sites are often mobbed with tourists and hawkers and sometimes beggars. Often you can barely walk because of the crowds and are constantly dodging people posing for themselves with selfie sticks. I didn't know what to expect of Machu Picchu, but I wasn't holding it up as the highlight of my time in Peru.
So, I really didn't know what to expect of Machu Picchu.
A woman in a uniform came up the hill, checking for everyone's bus ticket and passport, efficiently stamping them as she moved through the line.
Across from us, on the wall on the other side of the river, there was a beautiful carving. "It's not an ancient carving," Lourdes, one of our guides for the day told us, "They're making them right now."
We walked under a bridge covered with small padlocks locked up and down the mesh walls, each one a declaration of love. Mom, you were the first one to tell me about this tradition after your first trip to France more than 40 years ago, after Dad's stinging abandonment. It was when Dad left, when you were 43 and I was 14, that you got your first passport and started to travel. You never stopped until age stopped.
I didn't get my first passport until after I was 40, and just like you, I don't want to stop traveling.
As it turned out, Brenda was right. We boarded the bus an hour after we got in line. It barreled along a windy rock studded dirt road that ran along the river, the foliage more tropical than it had been, more like jungle.
Pretty soon we were speeding around switchbacks at a speed I never would have attempted. Other buses roared past us downhill in the other direction, back to town. We were definitely climbing, and the jungle intensified on either side. The road changed to stone, then back to dirt again. Fog dressed the tops of the sharp white granite peaks that surrounded us broke through the vine-covered foliage. Every time the bus made another hairpin turn, there was a new vista. Even though I hadn't been excited before, a small candle of excitement caught fire inside me.
And then we were there. We piled off the bus and got in the queue for the bathroom—2 soles per person—about 75 cents. The woman who collected the toilet money sat in a cute little wooden booth like a ticket taker at the movies. We even got a receipt.
Bathroom business attended to, we got in line to enter the gates of Machu Picchu. The ticket takes looked at my passport and stamped my ticket with your birthday, October 27th.
And then we started to climb up a steep, curving flight of stone steps. I panted up those steps. They were steep and they went on for quite a while. Every once in a while, I'd stop to take notes in my little notebook. Glen looked down at me from above and called out, "Laura, you can't write and climb at the same time."
At the first major viewpoint of Machu Picchu, all of us gathered together and looked at out at what might have been a view. But all we could see was a thick wall of mist. Kendra said, "We could have slept in and taken a later bus."
Glen said, "The fog bank is from all our heavy breathing on the way up."
Our guide, Lourdes, said, "Everyone who was born in the month August, needs to stand near the edge and blow the fog away." That was Karyn. She stood at the edge doing ujjayi breath, a special kind of yogic breathing, and moments later, like magic, the mist began to lift from left to right. The first picture below is what we saw.
Gradually what had been obscured became clearer and clearer. Then the mist over the mountains started to clear. Moments later, the view as crystal clear. Brenda smiled one of her warm, encouraging smiles and said, "It's like it's unveiling itself for you."
Moments later, it was all ensconced in mist again. People sat everywhere, patiently, waiting for it to lift again. As we waited, Celinda, one of our fantastic guides gave us a fascinating briefing. "You can understand why this site was hidden for centuries. It's on top of a mountain. It's covered by clouds most of the time and trees grew over most of it.
"It was in 1911 that Hiram Bingham from Yale became the first westerner to "discover" Machu Picchu. He was on an expedition to Peru, trying to make a name for himself as a famous explorer. He discovered Machu Picchu on July 24, 1911. It was overgrown and hard to see and two families were living here. The farmers knew about it. The people living here knew about it, but Hiram Bingham is the man who gave the world Machu Picchu."
We leaned again the wall, seated on our ponchos, many of us quickly adding a second of third layer in the chill of the fog. Celinda sat on the ground before us, her arms dancing as she spoke. "There are different theories about why Machu Picchu was built here. The first is religious; Machu Picchu is surround by three important mountains, all aligned with each other, and many believe this place was built for the apus.
"The second reason is functional. It's more humid here and crops grow well. The families living here were growing potatoes and corn. Machu Picchu is called the Gateway to the Amazon and the Incas wanted to conquer the Amazon because coca leaves were grown there. Also, the top of the mountain was safe from enemies and from the flooding of the Urubamba River.
"And the third reason is the water supply. There was plenty of water, two springs and a large reservoir."
As Celinda spoke, the mist began to clear again and we could see the view. More and more people were pouring in, but as we sat against the stone wall listening, we felt like were in our own private world. Down the hill from us, a group of eight meditators sat silently, eyes closed, back straight. It was as if we were each having our experience of Machu Picchu.
Five minutes later, all was shrouded in mist again. "The mist," Celinda explained, "isn't clouds or fog. It's steam from the Amazon."
Glen, who always has good questions, asked, "How did the stones get here?"
Celinda said, "The stones were already here. The real question is, 'How did the soil get here?' The Incas transported by hand tons of soil from the Sacred Valley—rich topsoil to grow crops, clay to make stucco and sandy river soil to fit between the boulders and to help level the land."
We all tried to wrap our minds around the kind of labor that required. What we learned was that the labor that built Machu Picchu was extracted in taxes by the Incan kings. Instead of collecting money, labor was required on an annual basis, and much of it went to constructing Machu Picchu.
When Machu Picchu was completed, smallpox came and 90% of the population died. It was biological warfare. If that hadn't happened, the Incan's could have defended themselves from the Spanish forever. How could anyone have waged a successful a successful siege on this place if the population has been decimated?
It was time to get up and start walking again. As we adjusted our layers and picked up our walking sticks, the sound of train rose up from the valley.
Mom, I tried to imagine you here—being here with you—sharing this moment with you and I couldn't. We never shared moments like this. Once when I was a teenager, you offered to take me to Israel and I scoffed at you. We never traveled together after that; we were never comfortable travel companions together in that way. But I feel you here with me today.
After another second set of steep steps, we turned onto part of the original Inca trail, a gradual incline on a dirt and stone. Coming down in the opposite direction were people hiking in after four days on the Inca Trail, about to get their first glimpse of Machu Picchu. One woman said dismissively as she passed us, "I smell perfume."
Someone from our group called out, "It's bug spray."
Someone else said, "We smell you, too."
And then we entered the door to the city. Mom, I wish you could have been there. Happy birthday.
(If you readers would like to get your tour of our day and of the Machu Picchu, move on to the pictures, but be sure to keep reading the captions. The story continues there.)
The line.
Here I am again, taking notes in my notebook.
The new carving alongside the river.
Aren't these the cutest?
Here's the hand dryer in Machu Picchu's only bathroom. I love air blades. It's fun sliding my wet hands up and down in the blast of hot air, but what the hell did something try to put in there that caused them to put up this sign?
The bathroom ticket taker booth.
My morning pass, stamped with my mother's birthday. She would have been 90 years old today.
Our first glimpse as the mist cleared.
Ten minutes later.
Then the fog over the mountains started to clear. Moments later, the view was crystal clear.
The Inca trail.
Waiting for the mist to dissipate.
Tamara, Brook, Juliana and Doug.
Alaina looking spiffy.
Celinda was a fantastic guide.
The view got clearer and clearer the longer Celinda spoke.
The city.
Terraces.
The view from inside the city looking out.
See how new stones are placed around the original rocks?
This is Karyn doing "yoga on the go." She's explaining how to realign the knees after walking down the lots of step.
This is me and my notebook in the ancient city.
The Incas built three kinds of terraces: terraces to grow crops, terraces that were more like retaining walls to prevent erosion, and decorative terraces to add beauty to the city.
There is no way you can imagine the majesty and the mind-blowing vistas of Machu Picchu from looking at a photograph on the website or in a tour book. I could have taken hundreds of pictures and only caught a fraction of what I saw.
Look who just happened to be wandering around!
And this one is just for our granddaughter, Ellie—her Grandma Karyn and the llama, because Ellie loves the book, Is Your Mama a Llama?
Gabled roofs.
Doorway.
This is the sun temple. It's built of white granite and if it still had its roof it would be white. Now, exposed to the elements, it's grey. On the morning of the winter solstice, the sun rises through the largest window. On the morning of the summer solstice, the sun rises through a different window. This was just one of many important temples. The Incas were amazing!
This is the window the sun came through during winter solstice, from the outside.
From the top, Machu Picchu looks small, but when you get inside it, you realize how big it is. It really was a city.
This is stonework from the back of the astronomer's house. Hiram Bingham called it, "the most beautiful wall in South America."
I expected Machu Picchu to be like this—jammed with thousands of tourists with selfie sticks, and it was, near the entrances and exits, but most of the time we were on the site, it felt sacred and we often were alone or only with a sparse crowd.
I joked with Karyn. I told her she should create a calendar called, "Headstands Around the World."
Sundial.
All around us, everywhere we turned was another vista of steep green mountains jutting up all around us. It was almost too much to take in. My expectations—which I hadn't had—had been blown out of the water. But we were hungry, we all had to pee and my knees needed a break. We passed this doorway on our way down, where we waited for a sumptuous lunch. You can find out what we did after lunch, in Machu Picchu: The Sun Gate.


text:
The Benefits of Behavioral Health Services
Treating Behavioral Addictions
Diagnoses at Behavioral Health Facilities
Behavioral Health. Most people may not know is that there are other addictions that have the power, like drugs and alcohol, to take control of every aspect of life; these addictions are known as behavioral disorders and they too can cause negative effects on mental and physical health. Inpatient behavioral health centers provide guidance and support for patients suffering from behavioral disorders, such as work, video game, shopping, sex, gambling and exercise addiction. The programs these centers offer prove that there are major benefits of behavioral health services.
The most effective behavioral health services offered at behavioral health facilities include a combination of traditional and experiential therapies. In order to properly treat behavioral health disorders, patients must undergo an extensive but safe cleansing of the mind. Behavioral health treatments begin with a thorough assessment in order to determine exactly how many behavioral health disorders they may be suffering from. More often than not, most behavioral health disorders are accompanied by either an addiction or a mental health disorder; each of which can be treated at an inpatient behavioral health center.
One of the best traditional therapies offered during the behavioral health program is the cognitive behavioral therapy, which helps patients cope with everyday life. The most effective experiential therapy patients will attend at a behavioral health center is yoga and meditation. During this behavioral health program, patients are able to connect to their inner psyche and pinpoint triggers that contributes to their addiction.
Behavioral health treatment can significantly boost self-esteem and teach patients how to live healthy and happy lives free from addiction. Inpatient behavioral health programs are evidence-based and scientifically proven enhance mental well-being and increase longevity.
behavioral health facilities are for people seeking help from behavioral health disorders. Behavioral health disorders cause someone to suffer from the compulsive desire to participate in certain activities. While most behavioral health disorders do not pose extreme harm to physical health, they can affect mental health and have the potential to ruin home, work and social lives. The most common behavioral health disorders that are treated at inpatient behavioral health centers include:
Video Game and Internet
People who are addicted to work, also known as workaholics, spend all of their time working. They constantly check their phones and emails for work notifications, set work as their top priority and neglect their loved ones.
Video game and internet addicts obsess over video games and websites, neglect their work and school responsibilities and when they are unable to play or login, they exhibit irritable and aggressive behavior.
When someone is addicted to shopping, they spend all of their money on useless items because they feel a rush when making a purchase. Being a shopaholic will lead to massive debt, as well as problems at home due to hiding purchases and putting the family in a financial bind.
Most people who gamble understand that they will not win every time; however, those who have a gambling addiction will become irritated, aggressive, depressed and suicidal. A lot of gambling addicts will also run out of money and begin to steal in order to feed their addiction. Their risky behaviors will lead to jail time, homelessness or death.
It is hard to define exercise as an unhealthy addiction, but there are times when people take it too far. Like workaholics, those who are addicted to exercise spend more time at the gym than they do with their loved ones. While their bodies may be healthy, their mental health may suffer due to isolation which can lead to depression and suicidal thoughts.
1 in 5 adolescents have admitted to using tranquilizers for nonmedical purposes.
In 2007, methamphetamine lab seizures increased slightly in California, but remained considerably low compared to years past.
Alprazolam is a generic form of the Benzodiazepine, Xanax.
Cocaine comes from the South America coca plant.
Women in bars can suffer from sexually aggressive acts if they are drinking heavily.
Nearly 23 Million people are in need of treatment for chemical dependency.
Street amphetamine: bennies, black beauties, copilots, eye-openers, lid poppers, pep pills, speed, uppers, wake-ups, and white crosses28
The United States produces on average 300 tons of barbiturates per year.
Test subjects who were given cocaine and Ritalin could not tell the difference.
Crack cocaine earned the nickname crack because of the cracking sound it makes when it is heated.
30% of emergency room admissions from prescription abuse involve opiate-based substances.
Meth has a high potential for abuse and may lead to severe psychological or physical dependence.


So, turns out Cities: Skylines is a pretty rad game. People like it so much, that the city-building sim is currently the top-selling game on Steam.
But what are people saying about the game? Well, if we take a look at the Steam reviews for Cities: Skylines, we'll find a hell of a lot of griping about SimCity and EA. Maybe that's not surprising—everyone is going to compare a city-building sim to the most iconic franchise in that genre. But still. Damn.
You can check out more Cities: Skyline reviews here, or look at our ongoing "As Told By Steam Reviews" feature here.


text:
Historic WW2 Flag Finally Makes It Home to Fort Drum
Feb 7, 2019 Ian Harvey, Guest Author
(U.S. Army/Mike Strasser)
After the Allies triumphed over Nazi Germany in 1945, many military items were left behind once the troops began going home after the long years of war.
What mattered most was getting the men stateside, and numerous objects were left all over Europe. Now, one of those prized objects has finally come back to its proper home, more than 70 years since it flew over in Italy.
Thanks to a retired soldier, Chuck Thompson, a U.S. flag that was flying over Italy when the war ended is back where it belongs, with the 10th Mountain Division at Fort Drum in New York. The unit helped lead the charge that ultimately defeated Germany.
10th Mountain Division advancing in Italy in April 1945.
The flag had been framed and on display at Thompson's home for years. But, as he noted in an interview, "I knew it wasn't mine to keep. It's home again. I'm going to miss it, but it wasn't mine. I'm glad it's home."
"Home" is the Fort Drum military installation. Thompson retired as a captain from the Army in 2005, and during his last tour of duty from 2001-05 he was stationed at Fort Drum.
Fort Drum Photo by DVIDSHUB CC BY 2.0
The 10th Mountain Division's Artillery Division, also known as DIVARTY, has had numerous inactive periods in its history, the most recent being between 2004 and 2015. Thompson found the flag when DIVARTY was deactivated in 2004 and he was tasked with finding homes for about 150 artifacts linked to the division's history that needed to be placed and preserved.
When Thompson was in the midst of this assignment, he opened a box and stumbled upon the flag. He knew immediately that it was a significant military artifact, and began trying to find it a suitable home.
The 10th Mountain Division's shoulder sleeve insignia
Initially, Thompson thought that the museum right at Fort Drum would be ideal, but officials there said there just wasn't enough space.
Then he thought the family of the division's first leader, Major General David Ruffner, might want it. (Ruffner died in 1973). When that idea didn't come to anything, Thompson next approached Ruffner's alma mater, the Virginia Military Institute, but that fell through as well.
Division infantry cover for an assault squad in northern Italy.
He even approached the U.S. Military Academy at West Point, and the Union League, a club that helped acquire the Statue of Liberty for New York. But nothing worked out. Finally, Thompson had the flag framed and hung it over his own fireplace mantel in New Jersey.
Still, he always felt that the flag needed to have a military home, and to be on display somewhere it could been seen by a wide audience and appreciated.
The 48-star American flag Photo by U.S Navy
The flag is certainly one of a kind: it has 48 stars, for example, as Alaska and Hawaii were not yet states during WWII. DIVARTY's reactivation in 2015 finally made Thompson's goal possible.
Finally, in January 2019, the flag was revealed during a brief ceremony at Fort Drum. It is now hanging in a meeting room where it can be seen by everyone, new recruits and experienced personnel alike. Thompson told about 150 people that he is thrilled to see the flag back with DIVARTY, which was a key component of the Allies' defeat of the Germans in Italy.
Read another story from us: WWII Hero Saved Flag from Kamikaze Attacks
Moving the framed artifact wasn't easy. Thompson had to use a rented truck to transport the 5′ X 7′ flag. But it's finally back where it belongs, and Thompson is delighted, as are Fort Drum officials.
DIVARTY commander Colonel Jason Williams said that he, too, was pleased to have the flag back at the base. "What a perfect day to honor our lineage," he noted during the ceremony.


Anderson's Market, Sylvania, Wine Tasting. 6-8 PM. Close Out Wines. Nominal fee.
Beer and Wine Cave, 4400 Heatherdowns, (419) 382-6221. It's Mardi Gras Time, Festive Wines. 6-8 PM, $15.
Manhattan's Restaurant, 1516 Adams Street, Toledo. Wine Tasting with Uptown Vineyard. 6:30 PM. $15. Five wines and appetizers. In Union Square room. All new wines, including a Torrentes, Muller-Thurgau and a Carmenere. Reservations required. E-mail info@uptownvineyard.com or call (866) 276-1984.
* Special Event * History Chef Book Signing, Food and Wine Pairing Vino 100 Shop and Wine Bar, Promenade West, 3355 Briarfield Blvd, Suite D, Maumee -- (419) 866-8466. 6-10 PM Andrew Caldwell, known as the History Chef, will be signing his new book, "Their Last Suppers: Legends of History and Their Final Meals". Andrew will pair a wine with a dish based on a last meal of a famous person. The tasting includes 3 ounce pours of four wines and a sample of each dish for only $25. Wines by the glass for the pairing will be $7. No reservations required.
The Andersons, Maumee, Wine Tasting. 5-7 PM. Sweetheart Wines. 1. Methve - Willamette Valley, Oregon - Pinot Noir, 2. Louis Chavy Mercurey - Burgundy, France - Pinot Noir, 3. Yangarra - McLaren Vale, Austrailia - Old Vine Grenache, 4. Grant Burge - Barbossa, Austrailia - Shiraz. Pay by the sample or $6.50 for the flight.
The Andersons, Talmadge Road. Wine Tasting, 6-8 PM. Wine Education Series: "What Is Merlot?" 1. Mollydooker "The Violinist" Verdello, Australia. 2. The Velvet Devil Merlot, Washington. 3. Casa Lapostolle Cuvee Alexandra Merlot, Chile. 4.Chatrau Graves du Burt Saint-Emilion Bordeaux. 5.Sineann Merlot, Washington. 6. Grgich Merlot, Napa. 7. Feist LBV Port, Portugal. Nominal fee per sample.
Corks Wine and Liquor, Promenade Plaza, 27250 Crossroads Pkwy., Rossford – (419) 872-6800. 6-9 PM. Gimme Some Sugar. Of course it was completely inevitable. Lineup consists of wines that are rich and decadent, and can be enjoyed by themselves or with something sweet. Also, we'll hold an experiment in chocolate and dessert wine pairing. Cost $1 to $3 per sample.
* Special Event * Wine by the Glass Pavilion Winemakers Series, Toledo Museum of Art Glass Pavilion, 2445 Monroe St., 7:00 to 9:30 p.m. Second Annual Bubbles Tasting. Cost is $15 for museum members and $20 for non-members.
Aficionado Wine and Cigars, The Shoppes at RiverPlace, 26567 N. Dixie Highway, Suite 135, Perrysburg, (419-873-4444). 5:00 – 8:30 p.m. Valentine's Tasting: 1. Veuve Clicquot Ponsardin Champagne, 2. Peirano "The Other" White Blend, 3. Crescendo Hills "Bangin' Red," 4. O'Brien "Seduction. $10 tasting.
Members $35, non-members $40. Tickets must be purchased in advance. For information call (419) 385-5721, ext 3092.
The Andersons, Woodville, Wine Tasting. 1-3 PM. 1. Montes, 2008, Cherub, Rose of Syrah, Chile. 2. Van Ruiten, 2007, Old Vine Zinfandel, Lodi . 3. Stephano Farina, Moscato D' Asti, Italy. 4. Versailles, Schokoladenkirschwein Ohio. Nominal fee.
Walt Churchill's Market, 3320 Briarfield. Maumee, (419) 794-4000. Noon to 5:00 p.m. The "New" Bonny Doon Winery. By the sample or by the flight.


text:
import {
	CanvasTexture,
	LinearFilter,
	Mesh,
	MeshBasicMaterial,
	PlaneGeometry,
	sRGBEncoding,
	Color
} from 'three';

class HTMLMesh extends Mesh {

	constructor( dom ) {

		const texture = new HTMLTexture( dom );

		const geometry = new PlaneGeometry( texture.image.width * 0.001, texture.image.height * 0.001 );
		const material = new MeshBasicMaterial( { map: texture, toneMapped: false, transparent: true } );

		super( geometry, material );

		function onEvent( event ) {

			material.map.dispatchDOMEvent( event );

		}

		this.addEventListener( 'mousedown', onEvent );
		this.addEventListener( 'mousemove', onEvent );
		this.addEventListener( 'mouseup', onEvent );
		this.addEventListener( 'click', onEvent );

		this.dispose = function () {

			geometry.dispose();
			material.dispose();

			material.map.dispose();

			this.removeEventListener( 'mousedown', onEvent );
			this.removeEventListener( 'mousemove', onEvent );
			this.removeEventListener( 'mouseup', onEvent );
			this.removeEventListener( 'click', onEvent );

		};

	}

}

class HTMLTexture extends CanvasTexture {

	constructor( dom ) {

		super( html2canvas( dom ) );

		this.dom = dom;

		this.anisotropy = 16;
		this.encoding = sRGBEncoding;
		this.minFilter = LinearFilter;
		this.magFilter = LinearFilter;

		// Create an observer on the DOM, and run html2canvas update in the next loop
		const observer = new MutationObserver( () => {

			if ( ! this.scheduleUpdate ) {

				// ideally should use xr.requestAnimationFrame, here setTimeout to avoid passing the renderer
				this.scheduleUpdate = setTimeout( () => this.update(), 16 );

			}

		} );

		const config = { attributes: true, childList: true, subtree: true, characterData: true };
		observer.observe( dom, config );

		this.observer = observer;

	}

	dispatchDOMEvent( event ) {

		if ( event.data ) {

			htmlevent( this.dom, event.type, event.data.x, event.data.y );

		}

	}

	update() {

		this.image = html2canvas( this.dom );
		this.needsUpdate = true;

		this.scheduleUpdate = null;

	}

	dispose() {

		if ( this.observer ) {

			this.observer.disconnect();

		}

		this.scheduleUpdate = clearTimeout( this.scheduleUpdate );

		super.dispose();

	}

}

//

const canvases = new WeakMap();

function html2canvas( element ) {

	const range = document.createRange();
	const color = new Color();

	function Clipper( context ) {

		const clips = [];
		let isClipping = false;

		function doClip() {

			if ( isClipping ) {

				isClipping = false;
				context.restore();

			}

			if ( clips.length === 0 ) return;

			let minX = - Infinity, minY = - Infinity;
			let maxX = Infinity, maxY = Infinity;

			for ( let i = 0; i < clips.length; i ++ ) {

				const clip = clips[ i ];

				minX = Math.max( minX, clip.x );
				minY = Math.max( minY, clip.y );
				maxX = Math.min( maxX, clip.x + clip.width );
				maxY = Math.min( maxY, clip.y + clip.height );

			}

			context.save();
			context.beginPath();
			context.rect( minX, minY, maxX - minX, maxY - minY );
			context.clip();

			isClipping = true;

		}

		return {

			add: function ( clip ) {

				clips.push( clip );
				doClip();

			},

			remove: function () {

				clips.pop();
				doClip();

			}

		};

	}

	function drawText( style, x, y, string ) {

		if ( string !== '' ) {

			if ( style.textTransform === 'uppercase' ) {

				string = string.toUpperCase();

			}

			context.font = style.fontWeight + ' ' + style.fontSize + ' ' + style.fontFamily;
			context.textBaseline = 'top';
			context.fillStyle = style.color;
			context.fillText( string, x, y + parseFloat( style.fontSize ) * 0.1 );

		}

	}

	function buildRectPath( x, y, w, h, r ) {

		if ( w < 2 * r ) r = w / 2;
		if ( h < 2 * r ) r = h / 2;

		context.beginPath();
		context.moveTo( x + r, y );
		context.arcTo( x + w, y, x + w, y + h, r );
		context.arcTo( x + w, y + h, x, y + h, r );
		context.arcTo( x, y + h, x, y, r );
		context.arcTo( x, y, x + w, y, r );
		context.closePath();

	}

	function drawBorder( style, which, x, y, width, height ) {

		const borderWidth = style[ which + 'Width' ];
		const borderStyle = style[ which + 'Style' ];
		const borderColor = style[ which + 'Color' ];

		if ( borderWidth !== '0px' && borderStyle !== 'none' && borderColor !== 'transparent' && borderColor !== 'rgba(0, 0, 0, 0)' ) {

			context.strokeStyle = borderColor;
			context.lineWidth = parseFloat( borderWidth );
			context.beginPath();
			context.moveTo( x, y );
			context.lineTo( x + width, y + height );
			context.stroke();

		}

	}

	function drawElement( element, style ) {

		let x = 0, y = 0, width = 0, height = 0;

		if ( element.nodeType === Node.TEXT_NODE ) {

			// text

			range.selectNode( element );

			const rect = range.getBoundingClientRect();

			x = rect.left - offset.left - 0.5;
			y = rect.top - offset.top - 0.5;
			width = rect.width;
			height = rect.height;

			drawText( style, x, y, element.nodeValue.trim() );

		} else if ( element.nodeType === Node.COMMENT_NODE ) {

			return;

		} else if ( element instanceof HTMLCanvasElement ) {

			// Canvas element
			if ( element.style.display === 'none' ) return;

			context.save();
			const dpr = window.devicePixelRatio;
			context.scale( 1 / dpr, 1 / dpr );
			context.drawImage( element, 0, 0 );
			context.restore();

		} else {

			if ( element.style.display === 'none' ) return;

			const rect = element.getBoundingClientRect();

			x = rect.left - offset.left - 0.5;
			y = rect.top - offset.top - 0.5;
			width = rect.width;
			height = rect.height;

			style = window.getComputedStyle( element );

			// Get the border of the element used for fill and border

			buildRectPath( x, y, width, height, parseFloat( style.borderRadius ) );

			const backgroundColor = style.backgroundColor;

			if ( backgroundColor !== 'transparent' && backgroundColor !== 'rgba(0, 0, 0, 0)' ) {

				context.fillStyle = backgroundColor;
				context.fill();

			}

			// If all the borders match then stroke the round rectangle

			const borders = [ 'borderTop', 'borderLeft', 'borderBottom', 'borderRight' ];

			let match = true;
			let prevBorder = null;

			for ( const border of borders ) {

				if ( prevBorder !== null ) {

					match = ( style[ border + 'Width' ] === style[ prevBorder + 'Width' ] ) &&
					( style[ border + 'Color' ] === style[ prevBorder + 'Color' ] ) &&
					( style[ border + 'Style' ] === style[ prevBorder + 'Style' ] );

				}

				if ( match === false ) break;

				prevBorder = border;

			}

			if ( match === true ) {

				// They all match so stroke the rectangle from before allows for border-radius

				const width = parseFloat( style.borderTopWidth );

				if ( style.borderTopWidth !== '0px' && style.borderTopStyle !== 'none' && style.borderTopColor !== 'transparent' && style.borderTopColor !== 'rgba(0, 0, 0, 0)' ) {

					context.strokeStyle = style.borderTopColor;
					context.lineWidth = width;
					context.stroke();

				}

			} else {

				// Otherwise draw individual borders

				drawBorder( style, 'borderTop', x, y, width, 0 );
				drawBorder( style, 'borderLeft', x, y, 0, height );
				drawBorder( style, 'borderBottom', x, y + height, width, 0 );
				drawBorder( style, 'borderRight', x + width, y, 0, height );

			}

			if ( element instanceof HTMLInputElement ) {

				let accentColor = style.accentColor;

				if ( accentColor === undefined || accentColor === 'auto' ) accentColor = style.color;

				color.set( accentColor );

				const luminance = Math.sqrt( 0.299 * ( color.r ** 2 ) + 0.587 * ( color.g ** 2 ) + 0.114 * ( color.b ** 2 ) );
				const accentTextColor = luminance < 0.5 ? 'white' : '#111111';

				if ( element.type === 'radio' ) {

					buildRectPath( x, y, width, height, height );

					context.fillStyle = 'white';
					context.strokeStyle = accentColor;
					context.lineWidth = 1;
					context.fill();
					context.stroke();

					if ( element.checked ) {

						buildRectPath( x + 2, y + 2, width - 4, height - 4, height );

						context.fillStyle = accentColor;
						context.strokeStyle = accentTextColor;
						context.lineWidth = 2;
						context.fill();
						context.stroke();

					}

				}

				if ( element.type === 'checkbox' ) {

					buildRectPath( x, y, width, height, 2 );

					context.fillStyle = element.checked ? accentColor : 'white';
					context.strokeStyle = element.checked ? accentTextColor : accentColor;
					context.lineWidth = 1;
					context.stroke();
					context.fill();

					if ( element.checked ) {

						const currentTextAlign = context.textAlign;

						context.textAlign = 'center';

						const properties = {
							color: accentTextColor,
							fontFamily: style.fontFamily,
							fontSize: height + 'px',
							fontWeight: 'bold'
						};

						drawText( properties, x + ( width / 2 ), y, '✔' );

						context.textAlign = currentTextAlign;

					}

				}

				if ( element.type === 'range' ) {

					const [ min, max, value ] = [ 'min', 'max', 'value' ].map( property => parseFloat( element[ property ] ) );
					const position = ( ( value - min ) / ( max - min ) ) * ( width - height );

					buildRectPath( x, y + ( height / 4 ), width, height / 2, height / 4 );
					context.fillStyle = accentTextColor;
					context.strokeStyle = accentColor;
					context.lineWidth = 1;
					context.fill();
					context.stroke();

					buildRectPath( x, y + ( height / 4 ), position + ( height / 2 ), height / 2, height / 4 );
					context.fillStyle = accentColor;
					context.fill();

					buildRectPath( x + position, y, height, height, height / 2 );
					context.fillStyle = accentColor;
					context.fill();

				}

				if ( element.type === 'color' || element.type === 'text' || element.type === 'number' ) {

					clipper.add( { x: x, y: y, width: width, height: height } );

					drawText( style, x + parseInt( style.paddingLeft ), y + parseInt( style.paddingTop ), element.value );

					clipper.remove();

				}

			}

		}

		/*
		// debug
		context.strokeStyle = '#' + Math.random().toString( 16 ).slice( - 3 );
		context.strokeRect( x - 0.5, y - 0.5, width + 1, height + 1 );
		*/

		const isClipping = style.overflow === 'auto' || style.overflow === 'hidden';

		if ( isClipping ) clipper.add( { x: x, y: y, width: width, height: height } );

		for ( let i = 0; i < element.childNodes.length; i ++ ) {

			drawElement( element.childNodes[ i ], style );

		}

		if ( isClipping ) clipper.remove();

	}

	const offset = element.getBoundingClientRect();

	let canvas = canvases.get( element );

	if ( canvas === undefined ) {

		canvas = document.createElement( 'canvas' );
		canvas.width = offset.width;
		canvas.height = offset.height;
		canvases.set( element, canvas );

	}

	const context = canvas.getContext( '2d'/*, { alpha: false }*/ );

	const clipper = new Clipper( context );

	// console.time( 'drawElement' );

	drawElement( element );

	// console.timeEnd( 'drawElement' );

	return canvas;

}

function htmlevent( element, event, x, y ) {

	const mouseEventInit = {
		clientX: ( x * element.offsetWidth ) + element.offsetLeft,
		clientY: ( y * element.offsetHeight ) + element.offsetTop,
		view: element.ownerDocument.defaultView
	};

	window.dispatchEvent( new MouseEvent( event, mouseEventInit ) );

	const rect = element.getBoundingClientRect();

	x = x * rect.width + rect.left;
	y = y * rect.height + rect.top;

	function traverse( element ) {

		if ( element.nodeType !== Node.TEXT_NODE && element.nodeType !== Node.COMMENT_NODE ) {

			const rect = element.getBoundingClientRect();

			if ( x > rect.left && x < rect.right && y > rect.top && y < rect.bottom ) {

				element.dispatchEvent( new MouseEvent( event, mouseEventInit ) );

				if ( element instanceof HTMLInputElement && element.type === 'range' && ( event === 'mousedown' || event === 'click' ) ) {

					const [ min, max ] = [ 'min', 'max' ].map( property => parseFloat( element[ property ] ) );

					const width = rect.width;
					const offsetX = x - rect.x;
					const proportion = offsetX / width;
					element.value = min + ( max - min ) * proportion;
					element.dispatchEvent( new InputEvent( 'input', { bubbles: true } ) );

				}

			}

			for ( let i = 0; i < element.childNodes.length; i ++ ) {

				traverse( element.childNodes[ i ] );

			}

		}

	}

	traverse( element );

}

export { HTMLMesh };


text:
namespace LEL {

// OpenGL 3.2 renderer

class EntitySystemRenderer {
public:
    EntitySystemRenderer(EntitySystem* sys,
                         uint32_t xres,
                         uint32_t yres) :
        mSys(sys), mXres(xres), mYres(yres) { }

    void initGL();
    void makeCurrent();

	void preDraw();
	void updateRenderState(const GL32RenderState& state);
    void draw();

	GL32RenderState currRenderState() const {
		return lastRenderState;
	}

private:
	void doRenderPass(const std::vector<GL32RenderState>& renderStates,
                      const matrix4& cameraMatrix, bool resetDepth = false);

    uint32_t mXres;
    uint32_t mYres;
    std::vector<float> mClearColor = { 0.0f, 0.0f, 0.0f, 1.0f };

	GL32RenderState lastRenderState;
	std::vector<GL32RenderState> mWorldRenderStates;
	std::vector<GL32RenderState> mUiRenderStates;

    GLuint mCurrProgramId = 0;
    EntitySystem* mSys;

    // Collision box rendering
    GLuint mColliderProgramId;
    GLuint mColliderMatrixLoc;
    GLuint mColliderColorLoc;
    GLuint mColliderVAO;
    GLuint mColliderVBO;
    GLuint mColliderIBO;

    // Font rendering
	GL32RenderState mTextDisplayRenderState;

	// Auxiliary state for effects
    struct CameraState {
        RefFrame worldFrame;
		matrix4 projection;
        vector4 focusTarget;
		float focalDist;
        uint32_t numUpdates;
        // to be updated later derived from above
		matrix4 modelView;
		matrix4 cameraMatrix;
    };
    CameraState mCameraState;

	// Draw collision OBBS
	bool mDebugDrawOBBS = false;

	// Effects : DOF
	struct DofRenderInfo {
        bool enabled = true;

        // constant params (or they should be)
        float radius = 0.2f;
		uint32_t numPoints = 4;

        float radius2 = 0.4f;
		uint32_t numPoints2 = 8;

        GLint xres = 640;
        GLint yres = 360;
		GLint xresHigh = 1280;
		GLint yresHigh = 720;

        // dynamically updated/initialized
        bool initialized = false;
        std::vector<RefFrame> adjustedCameraFrames;
        GLuint fbo;
        GLuint texture;
        GLuint rboDs;
        GLuint highresFbo;
        GLuint highresTexture;
		GLuint highresRboDs;
	};

    GLint mBrightnessUniformLoc;
    DofRenderInfo mDofRenderInfo;
    void initializeDofRenderer();
    void updateDofRenderer();
    void deinitializeDofRenderer();
    void accumulateDofFbo(GLuint tex);
    void updateCameraFocalDist();

    // Fullscreen quad drawing
    GL32RenderState mFullscreenQuadRenderState;
};

} // namespace LEL