Each of these incense sticks have been coated with actual pinon resin. The delightful, pine-based scent is a refreshing and stimulating fragrance. It is believed to ward off negativity, cleanse, heal and purify. May be used as a smudge. Each pack has 10 very long burning sticks.


text:
Questa voce raccoglie le informazioni riguardanti la Jogging Volley Altamura nelle competizioni ufficiali della stagione 2007-2008.

Stagione
La stagione 2007-08 è per la Jogging Volley Altamura, sponsorizzata dalla Lines e dalla Egocapitanata, la seconda consecutiva in Serie A1; come allenatore viene scelto Giovanni D'Onghia, mentre la rosa viene completamente rivoluzionata rispetto alla stagione precedente, con le uniche conferme di Maria del Rosario Romanò e Sara Gaggiotti, quest'ultima poi ceduta a stagione in corso. Tra i nuovi acquisti quelli di Daniela Biamonte, Angelina Bland, Francesca Giogoli, Ana Paula Ferreira, Lucía Paraja, Denise Pereira, Alessandra Pinese e Stacy Sykora, mentre tra le cessioni quelle di Erin Aldrich, Lily Kahumoku, Áurea Cruz, Biljana Gligorović, Katarína Kováčová, Tat'jana Men'šova e Tetjana Voronina.

Il campionato si apre con la vittoria per 3-2 sul Chieri Volley: a queste seguono tre sconfitte prima di un nuovo successo alla quinta giornata contro il Volley 2002 Forlì; nelle ultime sei giornate del girone di andata la squadra di Altamura vince due gare e ne perde quattro chiudendo all'ottavo posto in classifica. Il girone di ritorno è simile a quello di andata con il successo alla dodicesima e alla sedicesima giornata, con nel mezzo tre sconfitte, mentre nelle ultime sei giornate le pugliesi riescono a vincere solo la gara della ventunesima giornata contro il Santeramo Sport, finendo al nono posto in classifica, fuori dalla zona dei play-off scudetto.

Tutte le formazioni di Serie A1 e di Serie A2 della stagione 2007-08 partecipano alla Coppa Italia: la Jogging Volley Altamura vince il proprio raggruppamento nella fase a gironi. Negli ottavi di finale la sfida è contro il Chieri Volley, ma perdendo sia la gara di andata che quella di ritorno è eliminata dalla competizione.

Organigramma societario

Area direttiva
Presidente: Andrea D'Ambrosio

Area tecnica
Allenatore: Giovanni D'Onghia
Allenatore in seconda: Giovanni Moschetti
Scout man: Nicola Moliterni

Area sanitaria
Medico: Giuseppe Direnzo
Preparatore atletico: Vito Papangelo
Fisioterapista: Pasquale Piacenza

Rosa

Mercato

Risultati

Serie A1

Girone di andata

Girone di ritorno

Coppa Italia

Fase a gironi

Fase a eliminazione diretta

Statistiche

Statistiche di squadra

G = partite giocate; V = partite vinte; P = partite perse

Statistiche dei giocatori

P = presenze; PT = punti totali; AV = attacchi vincenti; MV = muri vincenti; BV = battute vincenti

Note

Collegamenti esterni

2007-2008
Altamura

redpajama_set_name: RedPajamaWikipedia


Stable, broadly tunable cw lasing has been obtained from color centers in additively colored NaCl doped with K. The laser tunes from 1.42 to 1.76 μm with a peak output power of 530 mW when pumped by 6 W from a 1.06-μm Nd:YAG laser. Output power is strongly enhanced by exposing the crystal to an auxiliary UV light during lasing. No fading of output power has been observed over extended periods. The laser operates at 77 K; however, the crystals can be stored at room temperature. The active color center is tentatively identified as an (F2+)A center.


text:
Zoo Keeper Attacked by Cheetah at Columbus Zoo
According to the Columbus Dispatch there was an attack at the Columbus Zoo & Aquarium on Thursday morning. A cheetah attacked a keeper.
This attack occurred around 9:50 am in an area not open to the public while two animal staff members were taking 4 year old cheetah Isabelle for her daily exercise walk. Isabelle was harnessed as a keeper from the Heart of Africa region approached and Isabelle sat purring.
Source: Columbus Zoo / Columbus Zoo
The handlers invited the keeper to come closer and Isabelle crouched down and lunged toward the keeper, who is known to work around giraffes and other hoofstock.
The keeper has since been released after their evaluation.
Zoo officials believe it was the scent of the other animals on the keeper that triggered Isabelle's natural instinct to attack, they are still investigating.
Tiger Woods Injured In Single Vehicle Accident, Stars Pray For Golf Legend On Twitter
Prayers up @TigerWoods 🙏🏾
— Isaiah Thomas (@isaiahthomas) February 23, 2021
Praying for my brother @TigerWoods as we all anxiously await more news.
Thinking of him and his entire family. 🙏 https://t.co/jpWbI3cLvO
— Alex Rodriguez (@AROD) February 23, 2021
Prayers up for @TigerWoods 🙏🏼🙏🏼🙏🏼
— Baker Mayfield (@bakermayfield) February 23, 2021
Praying for @TigerWoods 🙏🏾
— Patrick Peterson /P2 (@P2) February 23, 2021
Continue reading Tiger Woods Injured In Single Vehicle Accident, Stars Pray For Golf Legend On Twitter
[caption id="attachment_943114" align="alignnone" width="1024"] Source: Icon Sportswire / Getty[/caption] Tiger Woods, 45, was involved in a single accident this morning (February 23) after losing control of his vehicle in Southern California. Reportedly, the authorities had to use tool to remove the golf legend from the SUV. https://twitter.com/stevengregory/status/1364290898985541634 Woods was reportedly taken to a hospital and into surgery. Early reports say he suffered leg injuries in a rollover crash, which was confirmed by his representative. "Tiger Woods was in a single-car accident this morning in California where he suffered multiple leg injuries. He is currently in surgery and we thank you for your privacy and support," said his agent, Mark Steinberg, in a statement. https://twitter.com/Daniel_Rapaport/status/1364300162110136321 The Los Angeles County Sheriff's Department relayed that the crash involved a dark SUV and occurred at 7:12 a.m. PST on the northbound side of Hawthorne Boulevard near Blackhorse Road, per Fox Los Angeles. After being removed from the severely damaged vehicle, Woods was taken to Harbor-UCLA Medical Center in Torrance. Before you even go there, early reports say drugs and alcohol were not a factor in the car crash. Woods is considered one of the greatest pro golfers of all-time, and broke barriers in the sport due to his youth and the color of his skin. After being slowed by injuries for years, many rejoiced when Woods came back to win the Masters in April 2019. With news of the accident, Twitter (from fans to peers to celebs) has been saluting the legend as well as filling in details in real-time, which you can catch up with below. We wish Tiger Woods the speediest of recoveries. This story is developing. https://twitter.com/jadapsmith/status/1364300516667269120
Zoo Keeper Attacked by Cheetah at Columbus Zoo was originally published on mycolumbuspower.com
According to the Columbus Dispatch there was an attack at the Columbus Zoo & Aquarium on Thursday morning. A cheetah…

redpajama_set_name: RedPajamaCommonCrawl


text:
Q: REST XML serialization of lists of abstract classes with "i:type" attribute - how to convert that to tag name? I'm writing a REST WCF service with methods to retrieve a collection of resources and a single resource. My resources are classes based on a single abstract class. In my method to retrieve a collection I have:
[WebGet(UriTemplate = "")]
[ServiceKnownType(typeof(File)), ServiceKnownType(typeof(Text))]
List<ResourceBase> GetCollection();

and that produces XML that looks like this:
<ArrayOfResourceBase xmlns="..." xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    <ResourceBase i:type="Text">
    ...
    </ResourceBase>
    <ResourceBase i:type="File">
    ...
    </ResourceBase>
</ArrayOfResourceBase>

My single object method looks like this:
[WebGet(UriTemplate = "{id}")]
[ServiceKnownType(typeof(File)), ServiceKnownType(typeof(Text))]
ResourceBase Get(string id);

and produces XML like this:
<Text xmlns="..." xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
...
</Text>

Is there a way to get those two xml parts to look the same, that is either to get rid of "i:type" tags in ArrayOf... and convert them to tag name, or force them in the single object response?

A: There may be several solutions here, but I can think of a few right away:

*

*Change the custom DataContract name of the DataContract class ResourceBase to always be Text. Like so:
[DataContract(Name="Text")]
class ResourceBase
{
   ...
}

*Plug in a DataContractSurrogate to special-case this type

*Plug in a custom DataContractSerializerOperationBehavior that plugs in a custom DataContractSerializer child that special cases this type

*Use XmlSerializer. See this blog post.

redpajama_set_name: RedPajamaStackExchange


text:
Family Law Keyed to Weisberg
Delong v. Delong
Mother and father were married in 1985. As a condition of marriage, father asked mother to submit to a psychological evaluation to test the parties' compatibility for marriage. During a meeting with the father's psychologist, mother revealed that she was sexually attracted to both men and women and had engaged in sexual activity with women in the past. Based on mother's expressed commitment to a monogamous relationship, father married mother. Three minor children were born to the marriage, and mother stayed home to care for them as well as father's son from a previous marriage. In 1994 mother filed a petition for dissolution of marriage requesting joint legal custody of the minor children and that she be designated the primary physical custodian of the children. Father filed an answer requesting the court dissolve the marriage and award him sole custody with restricted visitation to mother. Evidence was presented at trial that mother engaged in homosexual conduct and in volved herself in extramarital affairs with women during the marriage after concluding the marriage was irreparable. Mother testified that all sexual encounters had been discreet and the children did not know the nature of the relationships. Father testified that he had an extramarital relationship after separation. The trial court awarded sole custody of the children to father, finding this would be in the children's best interests due to mother's homosexual relationships. The court also restricted mother's visitation with the children, ordering her to refrain from having any person known to be a lesbian present during visitation. It further directed the guardian ad litem to monitor a telling session where mother would tell the two older children that she is homosexual.


See Mrs. Omori in the Counseling Office to pick up an application.
Typically when Salk Institute Education Outreach partners with a school, they visit the school and use their expertise to help inspire and educate students to want to become scientists. When Dona Mapston, Salk Education Outreach Director, partnered with Mission Vista High School, it was for our students to come to the Salk Institute and use their expertise to inspire and educate Salk visitors.
On October 27, the Salk Institute celebrated the legacy of their founder, Dr. Jonas Salk, by hosting their fifth Explore Salk, an open house event for the public. Visitors to the open house could talk with Salk scientists and explore a variety of scientific exhibits. MVHS students were asked by Salk Education Outreach to create one of the scientific exhibits for Explore Salk. MVHS students Eric C., Thomas D., Connor J., Elizabeth N., Daisy S., Nicolas S., Hannah T., Rebekah T., Joshua U., Austin W., and former student Blake V. custom created and presented interactive virtual reality experiences and entertaining educational computer games for the open house's Tech Zone: The Technology Behind the Biology.
The MVHS student exhibit was an incredible success. Dona said, "The MVHS student exhibition was a fantastic addition to the day's program. The students were extremely poised and confident in their work and were able to explain their technology to the all ages audience with ease. It was a pleasure to be able to feature such an outstanding education program as MVHS Computer Science." Michaela Medina, a scientist in the Laboratory of Genetics of Dr. Dmitry Lyumkis, provided some of the biological models that were incorporated in the VR exhibits. When Michaela viewed her virus model through one of the MVHS VR exhibits, it was the very first time that she had seen this virus in VR. Previously she had only viewed the virus on a computer monitor, but by interacting with the model through the MVHS VR exhibit, she was able to move around the virus and actually view the virus as if she were inside the molecular structure.
The MVHS computer science students have started to develop an impressive reputation for being able to create and present their computer programs at different community events. Computer Science teacher, Jeff Yee, was surprised when he received an email from Dona to participate at Explore Salk. "I couldn't believe a prestigious research institute would even have heard of MVHS let alone thought it would be a good idea to trust high school students to create an exhibit for such an important event," said Jeff. After seeing how professional and dedicated the students were with creating the programs and engaging with visitors for nearly five hours at Explore Salk, Jeff realized why the MVHS students have developed such an incredible reputation.
pic1 - Daisy S, Elizabeth N, Eric C, Josh U, Austin W.
Congratulations to 10th grade Cross Country runner Bella Longo on being named a San Diego Union Tribune High School Athlete of the Week!
Amazing performances and such an honor! Congratulate her when you see her!
The Drama Department in room 202 is excitedly preparing for their production of A Midsummer Night's Dream this term. This year's fall play is taking William Shakespeare's classic comedy and putting a modern spin on it.
Some students were discouraged when they heard they needed to recite the complicated wordings of Shakespeare. They were also worried when they had to prepare for their audition in as little as six days. The drama department lightened the aspiring actors' spirits by teaching them the intricate storyline as well as giving them the appropriate criteria to audition with.
Despite the concerns, there are many students who are thrilled to show off their talents in this year's production, as well as be able to work with fellow actors and build a strong relationship with the cast to-be.
Join VUSD on Saturday, Oct. 20 from 10 a.m. to 4 p.m. for the 14th Annual VUSD Festival of the Arts on Vista Village Drive, alongside the Cinepolis theatre. All schools will have artwork lining the streets and performance groups will play on three stages throughout the day. Come celebrate Vista students and the arts. Click here for more information.
Únase a VUSD el sábado, 20 de octubre, de 10 a.m. a 4 p.m. para el 14º Festival annual de las artes en Vista Village Drive, junto al teatro Cinépolis. Todas las escuelas tendrán obras de arte que seran exhibidas en las calles. Grupos de actuaciones participaran en tres diferentes horas a lo largo del día. Ven a celebrar a los estudiantes de vista y las artes. Haga clic aquí para más información.
Tickets may sell-out. Please check with the MVHS Finance Office.
Tutoring is available in the MVHS Library every Tuesday, Wednesday, and Thursday from 3-4 pm!
All students seeking additional support with assignments or a place to study are welcome. Busing is available at 4:00 for students with a valid bus pass.
All student athletes need to have an Athletics Packet on file in the MVHS office. Due October 19th.
Midterms are coming up FAST!!
Link Crew is here to help you out!! Come to a study session and get some yummy cookies as well!
Are you interested in being a TEDx Youth Speaker? Fill out this application and see what awaits!
National Honor Society applications are now available before school and during lunch in room 505.
Applications are due on September 21, 2018.
September 6th, starting in the gym at 6 pm.
Class visitation start at 6:30.
The attached schedule and map will help you plan out your students schedule.
Do you need a refurbished computer and/ or low cost Internet? / ¿Necesita una computadora restaurada y/o servicio de Internet a bajo precio?
Do you need a refurbished computer and/ or low cost Internet?
If you are interested, please read the attached flyer and press "Click HERE" to fill out the online application by Monday, September 3rd. Pick up your computer and/or sign up for low cost Internet on Thursday, September 6th from 3:00 to 4:30 PM at the FACE Center located at 836 Olive Avenue, Vista.
¿Necesita una computadora restaurada y/o servicio de Internet a bajo precio?
Si le interesa, por favor lean el volante adjunto y presionen <> para rellenar la solicitud bilingüe en línea a más tardar el lunes , 3 de septiembre. Recoja su computadora y/o inscribase para un servicio de Internet a bajo precio el jueves, 6 de septiembre de 3:00 a 4:30 de la tarde en el Centro FACE ubicado en la 836 Olive Avenue, Vista.
Student Ambassadors represent Mission Vista High School during school tours for interested students and for guests on campus. They may also serve as representatives for student panels or other school related events.
Interested students must complete the application and may also be required to participate in an interview with the Magnet Coordinator and/or Principal.
*Please note that selected students must be available for specific after school tour dates and may be asked to miss class in order to lead a tour during the school day.
Mondays- every other Monday starting August 20th.
Oct. 1, 15, 29, etc.
MVHS re quires all students wanting to park on campus, to complete the Start Smart program. Students who took the Start Smart class during previous years are not required to attend again.
MVHS and the CHP also require that students are accompanied by on e parent/guardian for the Start Smart class. Registration for each class will take place at the door.
If you have additional questions, please contact Jeremy Walden, Assistant Principal, at jeremywalden@vistausd.org.
We are just bursting with pride for the MVHS Music Composition program!
We were just notified that composer Navarro Peck is the TI:ME (Technology in Music Education) Composition Winner in the DAW Category, High School (grades 9-12), for the entire U.S. in 2018! (In addition to his recognition, he will also receive a few fantastic gifts.) His stellar piece, 'Remember Me', was composed for those who were killed in the Stoneman Douglas shooting. His piece was also used for the Drama Club's play regarding school shootings this past spring.
This is the 2nd time MVHS has won this award in the past 3 years - Joseph Mumper received this in 2016 and 3 years ago, Chase Balfour won the National Association for Music Education Music Composition contest first place in 2015. Such great news for VUSD, our school, and the program!
I hope you're enjoying summer vacation! Link Crew is requesting your participation in the upcoming 2018-19 Freshman Orientation.
It is scheduled for Friday, August 10th.
It will take place from 8 AM to Noon.
It is a student only event.
It begins and ends in the gymnasium.
Pre-Registration: Online Pre-Registration via Parent Portal begins July 13, 2018 (must complete these steps before showing up to Timberwolf Days on campus in August).
Aug. 3rd: 12th Grade, 7:30-11:30 a.m.
Aug. 6th: 11th Grade, 7:30-11:30 a.m.
Aug. 7th: 10th Grade, 7:30-11:30 a.m.
Aug. 8th: 9th Grade, 7:30-11:30 a.m.
Aug. 9th: Make-up Registration, 7:30-11:30 a.m.
Oceanside, CA – Common Sense, the national nonprofit organization dedicated to helping kids and families thrive in a world of digital media and technology, has recognized SCHOOL NAME as a Common Sense School.
Mission Vista HS has demonstrated its commitment to taking a whole-community approach to preparing its students to use the immense power of digital media to explore, create, connect, and learn, while limiting the perils that exist in the online realm, such as plagiarism, loss of privacy, and cyberbullying. The recognition acknowledges our school's commitment creating a culture of digital learning and citizenship.
"We applaud the faculty and staff of SCHOOL NAME for embracing digital citizenship as an important part of their students' education," said Liz Kline, VP, Education Programs, Common Sense Education. "Mission Vista HS deserves high praise for giving its students the foundational skills they need to compete and succeed in the 21st-century workplace and participate ethically in society at large."
MVHS has been using Common Sense Education's innovative and research-based digital citizenship resources, which were created in collaboration with Dr. Howard Gardner of the GoodPlay Project at the Harvard Graduate School of Education. The resources teach students, educators, and parents tangible skills related to Internet safety, protecting online reputations and personal privacy, managing online relationships, and respecting creative copyright. The free resources are currently used in more than 100,000 classrooms nationwide.
"We're honored to be recognized as a Common Sense School," said Mrs. Miller, MVHS principal. "By preparing our students to use technology safely and responsibly, we are providing them unlimited opportunities to maximize and personalize their learning."
HOSA members competed in a PSA competition with other North County high schools at Young Leaders in Healthcare at Scripps Encinitas Hospital.
They worked together to prepare a PSA on Mental Health by conducting research, surveying MVHS students, and making posters for a mental health awareness display on campus.
This year they won first place for the first time in 6 years of participating (we have won 2nd three times and 3rd twice)! They were so happy to beat LCC who has won 1st for the past two years.
If you can't make it, watch LIVE online!
This past March, 48 students from Mission Vista High School participated in Le Grand Concours, a national French contest sponsored by the American Association of Teachers of French. Students of French in grades 1-12, in all 50 states and abroad, take a written test and compete against students with similar educational backgrounds for prizes. Nationally, more than 75,000 students competed in this 83rd annual event.
One student, Touge Nhia Yi Ly, qualified as a Platinum Winner, which is the highest award in Le Grand Concours, representing the top 1% of scores in the nation within a student's respective level. This award includes a platinum medal, a plaque for the student, and a Lauréat National certificate.
Five students, Maurice Anderson, Philippe Bruchez, Mariko Herrera, Panny Nhia Yi Ly, and Vivian Schroeder, qualified as Gold Medal Winners by scoring in the 95th percentile nationally in their respective levels or years of French taken. Students earned a gold medal and a Lauréat National certificate for their efforts.
Nine students, Cherianne Cruz, Josephine Doan, Michael Garcia, Genevieve Haskin, Jennifer Hernandez-Romero, Erin Kennedy, Katarina Newman, Isabella Ossiander, and Alexandra Sibaja, qualified as Silver Medal Winners by scoring nationally between the 85th and 90th percentile in their respective levels. These students earned a silver medal and a Lauréat National certificate for their efforts.
Eleven students, Jayden Alton, Jared Alvernaz, Caitlin Cielo, Mercedes Coppola, Michael Lee, Sarah Mackey, Heidi Martinez, Skylar Mason, Malia Mohrman, Jazielyn Morales, and Emily Rivera, earned a Bronze medal and a Lauréat National certificate by scoring in the 80th or 75th percentile nationally in their level of French.
In addition, eleven students received a Mention d'honneur certificate because they scored above the national average in their respective level. These students are Noah Anschuetz, Uziel Belverde, Alex Davis, Mason Houskeeper, Jessica Jacinto, Sarah Kelly, Samantha Perez-Robinson, Berit Poirier, Zayra Rosales, Hannah Thornton, and Max Wygal.
Besides being an effective assessment of ability and progress over the years, the Grand Concours is also practice for college placement tests, SAT II and the AP test. The National French Contest is a way to gain experience taking these types of tests.
AATF President Catherine Danièlou indicated: French students who rank nationally in Le Grand Concours demonstrate a superior level of global responsibility, integrative cultural competence, language skills, and commitment to excellence and dedication. They significantly increase their community's international profile. Their French teachers, whom they honor, work hard to produce responsible world citizens with multilingual capabilities. Le Grand Concours participants and winners all embrace an appreciation for other cultures, strive to continually learn and improve, and value the study of French. We are very proud of them and admire their commitment to both contributing to a better world and serving as exceptional ambassadors for their schools.
For more information about the National French Contest, please visit our website: www.frenchteachers.org/concours.
Choir's Pops/Broadway concert is Friday at 7pm in the theater.
We will sing music from the motion pictures: Moana, The Greatest Show, and Coco.
We will also be covering music from the Pentatonix, One Republic, Toto, and more!
It is a great show for the whole family. Just pure fun!
Boys Volleyball is the #3 seed in the CIF D4 playoffs, and will host a quarterfinal match this Fri 5/11/18 in our gym!
Ticket prices are $9 for adults, $6 for students & seniors, per CIF.
Print out a flyer and send it in!
the meeting starts at 630pm sharp!
Physicals will be in the gym hallway/trainer rooms (for cross country runners only) after your paperwork is filled out.
Please bring health and car insurance info and a checkbook, spirit wear will be available for purchase.
(p) fundraiser for Rady Children's Hospital. Nina E. and Anna A. (Co-directors of Portraits for Patients.
Portraits for Patients is a nonprofit 501(c)(3) organization founded by high school student Anna A.
They are based in San Diego County and function as a volunteer-driven California charity. Their goal is to provide financial support for patients in times of crisis. They believe that a patient's main concern should be their health and recovery, and we want to help ease the burden of financial matters. This includes anything from covering medical bills to paying the month's mortgage. To achieve this goal, They are using the beauty of art to spread awareness, bring amazing people together, and generate donations.
A glimpse of MVHS representation at Petco Park where student-athletes from around the county were given the chance to announce their college scholarship signing intentions in an event sponsored by the San Diego Hall of Champions.
Mission Vista High School students were invited back to the Fleet Science Center for a third time to present their computer games. The Fleet just completed a six month run of their popular exhibit, Game Masters: The Exhibition, and wanted the MVHS students to come back one last time before the exhibit closed.
The eight computer science students, Blake V., Joseph M., Brian S., Daniel D., Dylan M., Jackson S., Noah S., and Vincent R. were invited to be the "Genius in the House" and created computer games specifically for the exhibit.
Not only were the Fleet guests interested in playing the games, but many were also interested in how the students created the games since many of the adult guests worked as programmers and engineers.
Demonstrating at the Fleet has been a great opportunity for the students to meet people that have careers working with technology. One former MVHS student who was part of the first exhibit received a summer internship after talking with a Fleet guest that worked in the aerospace industry.
The MVHS CS program has purchased an HTC Vive Virtual Reality system and has plans to design and implement immersive games and simulations for the Fleet. These experiences with the Fleet has inspired the entire MVHS CS program to keep exploring new and creative ways to use their programming skills to help benefit the community.
Yearbooks are available for $95 and will then increase to $100 on Jan 31st and to $110 on May 5th. Yearbooks will then increase to $125 at the end of the school year but there are only a limited number left. You can order online at http://www.jostensyearbook.com or through the finance office. Deadline for pre-ordering yearbooks is May 5th, 2018 .
Diploma Name Verification Forms will be passed out to students on January 24, 2018. Diplomas will be printed with the exact name that is on the form. Requests for name changes must match student's birth certificate or court documentation. If changes need to be made please turn in the form with corrections and parent signature by February 2nd, 2018 to the school registrar, located in the Counseling & Career Center.
Seniors will take their class panorama on Monday, February 12th, at 8 AM in the MVHS Gym. Students wanting to organize a senior class panorama shirt group will be required to turn in a MVHS Senior Class Panorama Shirt Approval Form to the main office no later than Wednesday, February 7th at lunch.
Senior Survey must be completed through student Naviance accounts prior to Friday, May 18th, 2018.
Prom is Saturday, May 19th, 2018. This is a school sanctioned event. All students and their guests will be subject to search and breathalyzer tests upon entry to the event. Limos, party busses and vehicles are also subject to search by administration. Doors will be open at 7:00pm. No one will be admitted after the doors close at 8:30pm. All current students must bring their school ID and guests must also bring current photo ID (school ID or driver's license/CA ID).
Senior Awards Night is Thursday, May 31th, 2018 at 7:00pm in the theater.
The senior picnic is a MANDATORY free event for all graduating seniors. The picnic will be held on Monday, June 4th 2018 11:00 - 1:30 PM on lower field.
Cap & gowns will be distributed to graduating seniors who have completed the clearance process on Wednesday, June 6th, 2018. To be cleared, seniors must pass all required classes; owe no money or books to the school; and complete the senior survey. Cap and gowns are not to be altered or decorated. See "Graduation Guidelines" for more specific information. Caps & gowns will be provided at no cost by Jostens, please complete a Unit Borrow Order Form and turn it into the Front Office no later than Friday, January 27th, 2018 to ensure that you get the appropriate gown size. All borrowed items must be returned after the graduation ceremony. Seniors and parents wishing to purchase the cap & gowns may contact Jostens at www.jostens.com.
Each graduating senior will receive graduation ceremony tickets. Tickets will be distributed after graduation practice on June 6th, 2018 to seniors who have completed their clearance process. Only those with tickets will be let into the graduation ceremony area. Tickets are required for all individuals over 2 years of age.
The graduation ceremony will be held at MVHS on the lower field area, behind the gym. Gates open at 3:00pm. Graduates are to report to the gym no later than 3:30pm.
Any graduate found under the influence of alcohol or other controlled substances will be immediately removed from the ceremony. Students that participate in "senior pranks" that are harmful or destructive are liable for any damages and will not participate in the graduation ceremony.
Arrive to the gym no later than 3:30 pm with gown draped over arm.
All graduates will be subject to search upon check-in. No unnecessary items will be permitted.
Dark green caps and gowns are required for participation in the graduation ceremony.
One, single-color, natural flower lei, Maile Leaf lei, is allowed. Leis may wrap around the neck only once, NO Money or Candy leis. MVHS club pins, no larger than a quarter, placed according to guidelines and pre-approved by Club/Administration.
The cap is to be worn straight on the head, with the standard issue tassel to the right. Caps may not be decorated or adorned in any way and are the only acceptable headgear for the graduation ceremony.
It is recommended that you wear a dress shirt and slacks, a blouse with pants/skirt or a dress. Appropriate shoes should be worn. Heels are not recommended due to the uneven grass turf.
Graduates must leave all personal items, with the exception of 1 key and a pair of sunglasses, with family members or in their vehicle, including: cell phones, purses, bags, all valuables, food/drink, keys, cameras, etc.
Graduation is a school function, and all school rules apply.
Caps and Gowns and other regalia borrowed from Jostens and/or the school must be returned in original condition at the end of the ceremony. In addition, all items borrowed must be returned at the end of graduation in order to obtain your diploma.
Parking and seating is available on a first come, first served basis. The lower field gates will open at 3:00pm. Tickets are required to enter the ceremony area for all individuals over 2 years of age. Seats may not be reserved or saved. Limited handicap/wheelchair seating is available, but it is recommended that you arrive when the gates open. Weather conditions, walking distance, field seating and length of ceremony are factors to consider when deciding whom to invite. In order for everyone to enjoy the ceremony, there are certain items that will be prohibited including: air horns and other noisemakers; balloons; banners and signs; umbrellas and other shade covers; food and beverage items; and pets. The parking lot will open at 3pm. Parking on campus is available on a first come first serve basis, and we highly recommend carpooling. Overflow parking will be located at the Home Depot parking lot across the street from the school. It is not legal to park on the street in front of the school. Please do not park in red zones, bike lanes, fire lanes or in the Meritage housing development adjacent to the school. Parking enforcement will be in effect during the ceremony, and illegally parked vehicles will be ticketed.
Professional photographers will be present at graduation to photograph all graduates walking across stage. More information about purchasing photographs will be made available at the graduation ceremony.
Graduates will receive an empty diploma jacket during the ceremony. Immediately following the graduation ceremony, diplomas can be picked up in the gym. Only the graduate will be allowed in the gym pick up their diploma as space in the gym will be limited.
All seniors participating in Grad Nite at Disneyland are to report to the MVHS parking lot no later than 10:30 am on June 9th, 2018 Buses will depart at 11 am NO EXCEPTIONS. The return buses will leave Disneyland at 2:30 am and are expected to arrive back at MVHS at approximately 4:30 am on June 10th, 2018. This is a school sanctioned event. All school rules apply as well those set forth by Disneyland. Students are subject to search and breathalyzer tests.
Alumni News | Need Transcripts?
by clicking on the Parchment link on our counseling page.
The cost is $3.50 per transcript ordered.


text:
Clash Store Home
Buy Previous Clash Issues
Buy Clash Merchandise
Clash Issue 55 Paul McCartney
Issue 55 carries the face of a man that has come to personify British music. In the wake of The Beatles' split, Paul McCartney beat depression, public antagonism and critical derision to produce his own personal masterpiece. This is the story of 'Band On The Run' and its punishing creation.
Elsewhere, "I feel like I'm doing a lot of apologising here…and venting. I hope you don't mind…" Mark Ronson drawls. The tabloid's pop playboy is back, and this time he means business.
Plus, big features with: Carl Barat, Antony & The Johnsons, Aeroplane, Herman Leonard, Oasis, Toddla T and more.
© 2019, CLASH Magazine Powered by Shopify


Playwright Jon Jory's adaptation of Voltaire's novella Candide is, to cynically paraphrase the satire's implacable optimist, Professor Pangloss, work that is the best of all possible worlds. Which is to say that it is all right-ish, if not especially powerful or inspired.
Now running through Oct. 17.
Now running through July 25.
Two men meet on the Internet and forge an unholy pact.
Screen and television writer Benjamin Brand's first play, Taste, is based on a bizarre, true-crime episode from 2001, for which a German man named Armin Meiwes was convicted and eventually sentenced to life imprisonment.
Every grisly detail of the actual event was videotaped, so Taste is a factual play that reenacts the meeting between the two men and powerfully unfolds in real time.


text:
Q: Streaming Data into Google BigQuery Tables : SocketTimeoutException, 502 Bad Gateway, 500 Internal Server Error warnings We are using the Camel BigQuery API (version 2.20) to stream records from a message queue on an ActiveMQ server (version 5.14.3) into a Google BigQuery table.
We have implemented and deployed the streaming mechanism as an XML route definition in a Spring Framework thus:
<?xml version="1.0" encoding="UTF-8"?>
<beans
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        ./spring-beans.xsd
        http://camel.apache.org/schema/spring
        ./camel-spring.xsd">

    <!--
    # ==========================================================================
    # ActiveMQ JMS Bean Definition
    # ==========================================================================
    -->
    <bean id="jms" class="org.apache.camel.component.jms.JmsComponent">
        <property name="connectionFactory">
            <bean class="org.apache.activemq.ActiveMQConnectionFactory">
                <property name="brokerURL" value="nio://192.168.10.10:61616?jms.useAsyncSend=true" />
                <property name="userName"  value="MyAmqUserName" />
                <property name="password"  value="MyAmqPassword" />
            </bean>
        </property>
    </bean>

    <!--
    # ==========================================================================
    # GoogleBigQueryComponent
    # https://github.com/apache/camel/tree/master/components/camel-google-bigquery
    # ==========================================================================
    -->
    <bean id="gcp" class="org.apache.camel.component.google.bigquery.GoogleBigQueryComponent">
        <property name="connectionFactory">
            <bean class="org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory">
                <property name="credentialsFileLocation" value="MyDir/MyGcpKeyFile.json" />
            </bean>
        </property>
    </bean>

    <!--
    # ==========================================================================
    # Main Context Bean Definition
    # ==========================================================================
    -->
    <camelContext id="camelContext" xmlns="http://camel.apache.org/schema/spring" >

        <!--
        ========================================================================
        https://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/processor/RedeliveryPolicy.html
        ========================================================================
        -->
        <onException useOriginalMessage="true">
            <exception>com.google.api.client.googleapis.json.GoogleJsonResponseException</exception>
            <exception>java.net.SocketTimeoutException</exception>
            <exception>java.net.ConnectException</exception>
            <redeliveryPolicy
                backOffMultiplier="2"
                logHandled="false"
                logRetryAttempted="true"
                maximumRedeliveries="10"
                maximumRedeliveryDelay="60000"
                redeliveryDelay="1000"
                retriesExhaustedLogLevel ="ERROR"
                retryAttemptedLogLevel="WARN"
                />
        </onException>

        <!--
        # ==================================================================
        # Message Route :
        # 1. consume messages from my AMQ queue
        # 2. write message to Google BigQuery table
        # see https://github.com/apache/camel/blob/master/components/camel-google-bigquery/src/main/docs/google-bigquery-component.adoc
        # ==================================================================
        -->
        <route>
            <from uri="jms:my.amq.queue.of.output.data.for.gcp?acknowledgementModeName=DUPS_OK_ACKNOWLEDGE&concurrentConsumers=20" />
            <to uri="gcp:my_gcp_project:my_bq_data_set:my_bq_table" />
        </route>

    </camelContext>

</beans>

The above seems to work and we seem to be landing a high of rate messages/records (one route handles over 12,000 message per minute) but our logs are showing a good number of the SocketTimeoutException, 502 Bad Gateway and 500 Internal Server Error warnings :
2019-10-21 15:33:13 | WARN  | DefaultErrorHandler | Failed delivery for (MessageId: XXX on ExchangeId: XXX). On delivery attempt: 0 caught: java.net.SocketTimeoutException: connect timed out

2019-10-24 12:46:53 | WARN  | DefaultErrorHandler | Failed delivery for (MessageId: XXX on ExchangeId: XXX). On delivery attempt: 0 caught: com.google.api.client.googleapis.json.GoogleJsonResponseException: 502 Bad Gateway

2019-10-25 12:33:33 | WARN  | DefaultErrorHandler | Failed delivery for (MessageId: XXX on ExchangeId: XXX). On delivery attempt: 0 caught: com.google.api.client.googleapis.json.GoogleJsonResponseException: 500 Internal Server Error

Questions

*

*Is my use of the onException object generally/syntactically correct (barring the fine-tuning of the redeliveryPolicy attributes) ? Or have I missed out anything else ?

*My first warning message of interest says, "On delivery attempt: 0 caught: java.net.SocketTimeoutException". My log file does not have "On delivery attempt: 1", On delivery attempt: 2", etc. Does this mean that subsequent delivery attempts of the given message were successful ?

*As far as trying to stream data into GCP is concerned, should I treat the "SocketTimeoutException" "500 Internal Server Error" and "502 Bad Gateway" differently from each other or is using the same onException + redeliveryPolicy OK ?

*Are there any other ways I can improve the performance of this Camel / Google API method of streaming data into GCP ? Can the Camel / Google API support message batching in order to reduce the number of GCP insert operations ? I'm already using dual streams with deduplication (CamelGoogleBigQueryInsertId).

A: Disclaimer: I don't have experience in using Camel BigQuery API. My answer is based on observation and understanding of BigQuery API in general.

*Based on observation that there is retriesExhaustedLogLevel ="ERROR", if no ERROR log presents, it probably means retry succeeded.

*Retry on timeout/500/502 can be the same. At least I'm not aware of how they can be treated differently.

*Batching will definitely help, based on public documentation:

Maximum rows per request: 10,000 rows per request
A maximum of 500 rows is recommended. Batching can increase
  performance and throughput to a point, but at the cost of per-request
  latency. Too few rows per request and the overhead of each request can
  make ingestion inefficient. Too many rows per request and the
  throughput may drop.
A maximum of 500 rows per request is recommended, but experimentation with representative data (schema and data sizes) will help you determine the ideal batch size.


If you are having difficulties with the Canon EOS 40D, try referring to the troubleshooting page.
The Canon EOS 40D is the sixth digital SLR camera produced by Canon, released in August of 2007. The product line started in April, 2000 with the EOS D30. This model is identified by the name EOS 40D, located in the top right corner on the front of the device.
The Canon EOS 40D is a digital single-lens reflex camera, meaning that it is a digital camera combining the optics and the mechanisms of a single-lens reflex camera with a digital imaging sensor. The EOS 40D includes many upgrades from the previous models, including a 9 point auto focus, a 3.0" LCD monitor, and the ability to shoot 10.1 MP stills at up to 6.5 fps.
The Canon EOS 40D was replaced by the EOS 50D in August of 2008 and the EOS 70D is the newest model, which was introduced in July of 2013.


text:
ACCEPTED

#### According to
The Catalogue of Life, 3rd January 2011

#### Published in
Can. J. Bot. 69(11): 2398 (1992)

#### Original name
Trichoderma oblongisporum Bissett, 1992

### Remarks
null

redpajama_set_name: RedPajamaGithub


The lives of celebrities is constantly and consistently shrouded in mystery. The way they live, what they do, and pretty much every aspect of their lives is scrutinized and analyzed by millions of worshippers and admirers. Today a music legend, Prince(RIP), has mysteriously passed away, and all of the details surrounding his death have yet to be confirmed or released by the government controlled media.
I personally was never a fan of him or his music. I remember growing up in the 80's and 90's wondering who is this man dressed like a woman. I think the current trend cross dressing and effeminate rappers descend from the legacy of Prince. However, I digress on that point. This article is not about my musical tastes. It is about the mystery surrounding Prince's death. Whether I think so or not, the man was a musical legend.
I won't make this long and drawn out. I am sure other media outlets and personalities will dig deeper with more scrutiny. I just wanted to point to some obvious things that entered my mind as soon as I heard the news. I remembered there was a bitter dispute between Prince and his record label over ownership of his masters. He had reached a deal wherein he would retain the copyrights over his Masters. Here are some of the details from Billboard Magazine.
"Prince has returned to Warner Bros. Records after 18 years with a deal that will see him regain ownership of his catalog. His classic Warner albums like "Dirty Mind," "Controversy" and "1999" will continue to be licensed through Warner Bros as part of a new global agreement.
Prince famously had a highly publicized and turbulent split from Warner Bros. in 1996 when he called himself a slave to the label, changed his name to a symbol, and condemned the way the major label system worked.
This deal marks a new era as the ability to terminate master recording copyright after 35 years was granted in the Copyright Revision Act of 1976 and became effective in 1978, the year that Prince's debut album came out.
Prince also spoke against Chemtrails and Depopulation.
A friend of mines also sent me this article from Mediatakeout.com alleging that a very popular African-American entertainer has HIV and will die soon. Rumors are rumors, but with the mystery of the celebrity world, I am always ready to don my proverbial "tinfoil hat". I expect in the coming days, weeks, and months for there to be a lot of dialogue surrounding Prince's death. I am waiting to see who has the best Conspiracy Theory. Whether you disagree or not, one cannot deny how entertaining conspiracy theories are. As usual, let me know your thoughts.


The lemon and lime juice give this cocktail more than a hint of sharpness, but it is soon masked by the sweet honey and apple flavors.
1. Whizz all the ingredients, except the fruit and peel, in a blender until very frothy and partly frozen.
2. Put three raspberries in the base of an iced tall glass, crush with a wooden spoon and then pour in the fruit slush.
3. Dress with the raspberries and a strip of peel.
Feel free to comment or share your thoughts on this Applesour Recipe from Awesome Cuisine.


text:
Spansk har flere betydninger:

 Spansk (sprog) – om spansk som sprog.
 Spanien – om noget som stammer fra eller tilhører landet Spanien.
 Spanier – en person fra Spanien.
 Seksuelle sprog – om betegnelsen spansk inden for seksualitet (stimulation af penis mellem brysterne).
 Spansk (skak) – en åbningsvariant i skak.

Se også

 Spaniens flag – det spanske flag
 Spansk flue
 Spanskgrønt
 Spanskrør
 Spansk landbrød
 Spansk rundstykke
 Spansk rytter
 Den Spanske Syge
 Den Spanske Borgerkrig
 Spansk-Amerikanske Krig
 Spansk los
 Spansk skovsnegl
 Spanske Arvefølgekrig
 Spanske Rideskole
 Spanske inkvisition
 Spanske regenter
 Spansk guitar


In May 2017, John Marsh was traveling in Zimbabwe when he suffered a stroke. One year later, John's wife, Brenda, wrote to Global Rescue.
Marilyn Sharpe and her husband, Kent Wall, are self-described 'boat people.' The couple has homes in Indianapolis and Los Angeles, but spends many months each year on their motor vessel, a 56-foot trawler, cruising in remote islands of the Caribbean Sea.
Jim Mallas of Colorado was on the trip of a lifetime in May 2018, traveling by motorcycle from Rwanda to Botswana with a group of his friends. The trip was to last 20 days, including several excursions such as gorilla trekking in Uganda.
The 2018 Atlantic hurricane season is underway with a major storm currently heading for the United States (US). As of 12:00 Eastern time on 10 September, Hurricane Florence was rated as a Category 4 storm with maximum sustained winds of 209 kilometers (130 miles) per hour, and it's heading for the eastern coast of the US.
According to U.S. Department of State data, 30% of U.S. citizen deaths overseas are caused by vehicle accidents. While car accidents cannot be fully predicted or prevented, advance preparation can help avert unfortunate situations.
Your safety, and that of your vital digital information, can be compromised when you travel. It is important to understand the risks and then learn how to protect yourself when you're in a foreign country with unknown threats.
Global Rescue routinely assists our members abroad with animal bite cases. Our Medical Operations personnel offer these recommendations for what to do when encountering stray animals.


Leading off today: Brentwood junior Bryce Harris finished with 30 points and 15 rebounds as the Indians earned a 72-58 victory over Elmont in the Richard Brown Nassau-Suffolk Challenge on Sunday.
Brentwood, ranked second in the state in Class AA by the New York State Sportswriters Association, took charge with a 13-0 run at the end of the second quarter. Harris contributed five points to the decisive burst.
"He's an incredible physical specimen, but this season he is learning what his strengths are," Indians coach Anthony Jiminez said.
Jordan Riley added 14 points and Romello Wright had 12 for Brentwood against the state's No. 21 Class A team.
Milestone on hold: Curtis senior Darnell Askew had 50 points when he was pulled from what would end up being an 85-57 victory over Cardozo in a matchup of PSAL boys basketball teams.
His departure had less to do with a show of mercy than it did a prelude to a milestone.
"He needed 51 points for 1,000," said Curtis coach Dwayne Archbold. "We have a home game on Friday so he's gonna do it on Friday."
Askew also contributed 10 rebounds and two assists to the victory over the state's 25th-ranked Class AA team. The 20-point third quarter was his biggest for scoring.
More boys basketball: St. Raymond, ranked sixth in Class AA, rattled off its ninth straight win by edging Monsignor Scanlan 73-69. The Ravens broke a 56-56 tie with a 10-2 run.
Junior Gary Grant led the way with 16 points.
• No. 11 Brooklyn Collegiate earned a 72-49 win over No. 14 Wings Academy in a big Class AA matchup of PSAL squads at South Shore's MLK Classic. Glen Anderson had 19 points and 10 assists, while Jaylin Anderson finished with 13 points and 13 rebounds.
Looking ahead: New York Wrestling News plans to preview next weekend's NYSPHSAA dual-meet championships on Thursday but has dropped some quick thoughts already following Sunday's announcement of the 12-team fields in Divisions I and II.
Stewart decides: Former McQuaid star Isaiah Stewart has made his college decision. The five-star recruit, who is in his second season attending La Lumiere School in La Porte, Ind., announced on ESPN that he would attend the University of Washington next fall.
The Huskies are coached by Mike Hopkins, who began keeping tabs on Stewart while working as an assistant at Syracuse University. Stewart is the third New Yorker lured to the Pac-12 Conference by the second-year head coach, joining Hamier Wright (Albany Academy) and Naz carter (Bishop Kearney).
Stewart's final five also included Duke, Kentucky, Michigan State and Syracuse.
Well, there they go again: It would be so easy for me to sit here in the comfort of my home office and ridicule USA Today ... so let's get started.
For the second time in less that a year, the paper's website wrote a feature on the nation's scoring leader in boys basketball. And for the second time they got it wrong.
-- unless Common Core math has changed the order of numbers -- Joe Girard III's 47 points per game this season is superior to the 45.6 points a game by Qwan Jackson, a junior in Milwaukee.
The culprit once again is a reliance on third-party statistics. The reporter from the Milwaukee Journal Sen- tinel, a fellow Gannett newspaper, depended upon data available on MaxPreps.com to determine that Jackson was the national leader.
The flaw in the methodology is that while MaxPreps is a great resource that I whole- heartedly endorse, the website depends upon schools to update their own results and statistics. My best guess is that maybe a quarter of New York schools choose to participate.
It's plausible that the Milwaukee reporter has never heard of Girard despite his amazing accomplishments, including becoming New York's career scoring leader last season as a junior. But given his two-sport notoriety and the fact that Girard has committed to Syracuse University one would hope that an editor at USA Today might have had enough familiarity with high school basketball to remember the name and the attention Girard attracted by averaging 50 points a game as a junior.
That alone would have been good reason to check on Girard's progress this season before putting the USA Today imprimatur on the story.
National award: Veteran Williamsville North boys hockey coach Bob Rosen has been selected as this year's recipient of the American Hockey Coaches Association's John Mariucci Award, which is presented to a secondary/high school association coach who best exemplifies the spirit, dedication and enthusiasm of the legendary University of Minnesota coach.
Rosen, who will be honored at a luncheon during NCAA Frozen Four week in Buffalo in April, is the winningest active hockey coach in the state with 483 victories. His Williamsville North skaters have won five state championships.


Red Saucer with Coffee Beans, download this wallpaper for free in HD resolution. Red Saucer with Coffee Beans was posted in December 5, 2015 at 7:25 am. This HD Wallpaper Red Saucer with Coffee Beans has viewed by 20 views users. If you want the same screensaver on your desktop, please click the wallpaper and you will go to page download.


You need a great automobile to get around Palisade whether you're traveling for a business or pleasure. Explore the top sites around town and pull up in front of the best restaurants in Palisade. We've gathered your most popular questions about car rentals in Palisade. Find out which vehicle is perfect for your trip, and how to get the best rates.
How can I find a bargain car rental in Palisade?
These tips can help you save even more on your next car rental in Palisade.
What rental companies have retailers in Palisade?
From budget-friendly brands like Fox and Budget to global names like Advantage and Hertz, CarRentals.com has some of the best brands in the business. Scan through the reviews to get an idea of which one is best for your next trip.
What types and makes of rental cars are on offer in Palisade?
What age do you have to be to rent a car in Palisade?
Usually, to rent a car in Palisade you must be at least 21—the same as it is across the rest of the USA. However, you might need to pay a surcharge if you're under 25. Be sure to review the terms to discover what the exact charge is before you book your vehicle.
Most countries require driver's insurance. You might be able to purchase additional insurance through rental car company, if you are concerned your insurance won't cover your rental. Otherwise, as a U.S. citizen, you can also add on Collision Damage Coverage through CarRentals.com at checkout. Many credit card issuers (Visa, MasterCard, American Express, and Discover) will provide some coverage. But there may be limitations, such as not covering bigger automobiles like trucks or SUVs. It is best to call and find out exactly what your credit card will cover and how much before you travel to Palisade.
Most suppliers give you a full tank policy. We advise bringing the car back topped off. If you want to keep your expenses lower, it is best to fill up your tank before bringing the rental.
Unlimited miles is a good option if you plan to do some sightseeing or visit a lot of clients all over Palisade. You can cruise wherever you like without incurring added charges. Go over your rental agreement to see if there are mileage limitations.


Lalibela is a small mountain village in northern Ethiopia, within the Tigray region. What lacks in size makes up for with its religious presence. During the 8th and 9th centuries, Christianity spread in Tigray and Lalibela was the epicenter of religion in Tigray at the time. Churches were built directly into the rock, with intricate carvings and caves used as places of prayer. Devout Christians come here daily for prayer and Sunday is an incredible sight to see.
Surrounding the village are lush green mountains and rolling hills. On one side of the village are trails leading up to Abuna Yosef, one of the tallest mountains in Ethiopia standing at 4,260 meters high. The hike up to Abuna Yosef is an incredibly rich cultural experience. Nearly the entire route up is passing by small mountain villages. The interaction with locals and children along the trail make this a unique hike. An overnight stay with a local family in traditional mud huts (and possibly some entertainment), made this one of our favorite activities in Ethiopia.
The best time to visit Lalibela is between October and January during the dry season. January 7 (Ethiopian Christmas) and January 19 (Epiphany) are the two most festive days of the year. Lalibela gets packed, so make sure to plan. Stay over the weekend and check out the Saturday market followed by early morning (6 AM) mass on Sunday.
Mid-Range Stay: Panoramic View Hotel has stunning views from the room, with doubles starting at $60 USD.
Unique Restaurant is a local favorite with meals for 40 to 60 Birr. Come for sunset drinks at Ben Abeba followed by a meal for 40 to 100 Birr ($1.50 – $4 USD).
Two clusters of churches are located in Lalibela, all within walking distance of each other. Eleven total churches are connected by tunnels and small alleyways carved through stone. The impressive Saint George Church is the epicenter of this devout village. It is one of the most important monasteries in Ethiopia and a major pilgrimage site. Declared a UNESCO World Heritage site in 1978, these churches are best visited in the early morning. Hear the chants and congregation of traditional Ethiopian Orthodox worship.
Entry to the churches cost 1,104 Birr ($50) for a 5-day ticket. No single day tickets are available and tickets are non-transferable. Although ticket prices are very expensive, seeing the churches is a highlight in Ethiopia.
Aside from the importance of the 11 UNESCO churches, hiking to Abuna Yosef draws tourists to Lalibela. The first day of the hike up the mountains ends at one of the small villages. There are excellent opportunities to immerse in the local traditions and culture. The second day is a long hike up to the summit of Abuna Yosef, Ethiopia's sixth tallest peak. The panoramic views of the lush green valleys are impressive. The third day is a hike down the mountain back to Lalibela. Not only are the mountains beautiful, this hike adds a wonderful cultural experience. It is a challenging hike due to the altitude. The peak stands at nearly 4,300 meters and there is a lot of elevation gain in only two days.
Costs are negotiable and can range from $20 to $60 per person per day for the three-day hike. Booking ahead will cost more, so wait to book in Lalibela for the best price. There is an extra fee of 300 Birr before Abuna Yosef summit.
Several tour groups can organize hikes. For an excellent guide and great prices ($25/person per day) contact Damena (Dave) at +251 92 077 4790 or [email protected]. Tell him Timon and Yana say hello!


Promethean will be attending CUE-Nevada Silver State Technology Conference at Western High School on September 29 – 30, 2017. While there, we'll be showcasing the ActivPanel, ActivConnect G, ClassFlow, and ClassFlow Desktop. For more information, and to register for the conference, visit http://bit.ly/2uBXNkT.


text:
Events in the year 1971 in Cyprus.

Incumbents

 President: Makarios III
 President of the Parliament: Glafcos Clerides

Events

 Akritas Chlorakas, a football team from Chloraka, Paphos, was founded.

Deaths

References

1970s in Cyprus
Years of the 21st century in Cyprus
Cyprus
Cyprus
Cyprus


text:
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.util.ui;

import com.intellij.openapi.application.Application;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.util.registry.Registry;
import com.intellij.ui.*;
import com.intellij.ui.components.JBScrollBar;
import com.intellij.ui.components.JBScrollPane;
import com.intellij.ui.components.JBScrollPane.Alignment;
import com.intellij.ui.scale.JBUIScale;
import com.intellij.util.Alarm;
import com.intellij.util.ReflectionUtil;
import org.jetbrains.annotations.ApiStatus;

import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.plaf.ScrollBarUI;
import javax.swing.plaf.basic.BasicScrollBarUI;
import java.awt.*;
import java.awt.event.*;
import java.lang.ref.WeakReference;
import java.lang.reflect.Method;

/**
 * @author max
 * @author Konstantin Bulenkov
 */
public class ButtonlessScrollBarUI extends BasicScrollBarUI {
  private static final Logger LOG = Logger.getInstance(ButtonlessScrollBarUI.class);

  @Deprecated
  @ApiStatus.ScheduledForRemoval(inVersion = "2021.3")
  public static JBColor getTrackBackgroundDefault() {
    return new JBColor(LightColors.SLIGHTLY_GRAY, UIUtil.getListBackground());
  }

  @Deprecated
  public static JBColor getTrackBorderColorDefault() {
    return new JBColor(Gray._230, UIUtil.getListBackground());
  }

  private JBColor getTrackBackground() {
    return jbColor(LightColors.SLIGHTLY_GRAY, UIUtil.getListBackground());
  }

  private JBColor getTrackBorderColor() {
    return jbColor(Gray._230, UIUtil.getListBackground());
  }

  private JBColor jbColor(final Color regular, final Color dark) {
    return new JBColor(() -> isDark() ? dark : regular);
  }

  private int getAnimationColorShift() {
    return isDark() ? 20 : 40;
  }

  private final AdjustmentListener myAdjustmentListener;
  private final MouseMotionAdapter myMouseMotionListener;
  private final MouseAdapter myMouseListener;
  private final HierarchyListener myHierarchyListener;
  private final AWTEventListener myAWTMouseListener; // holds strong reference while a scroll bar in the hierarchy
  private final AWTEventListener myWeakListener;
  private final NSScrollerHelper.ScrollbarStyleListener myNSScrollerListener;
  private boolean myGlobalListenersAdded;

  private static final int DELAY_FRAMES = 4;
  private static final int FRAMES_COUNT = 10 + DELAY_FRAMES;

  private Animator myThumbFadeAnimator;
  private int myThumbFadeColorShift;

  private boolean myMouseIsOverThumb;
  private boolean myMouseOverScrollbar;
  private double myMouseOverScrollbarExpandLevel;

  private NSScrollerHelper.Style myMacScrollerStyle;
  private Animator myMouseOverScrollbarExpandAnimator;
  private Alarm myMacScrollbarFadeTimer;
  private Animator myMacScrollbarFadeAnimator;
  private double myMacScrollbarFadeLevel;
  private boolean myMacScrollbarHidden;

  @SuppressWarnings("deprecation")
  private final RegionPainter<Float> myThumbPainter = JBScrollPane.getThumbPainter(() -> scrollbar);
  private ScrollbarRepaintCallback myRepaintCallback;
  private boolean myDisposed;

  protected ButtonlessScrollBarUI() {
    myAdjustmentListener = new AdjustmentListener() {
      Point oldViewportPosition;
      Dimension oldViewportDimension;

      @Override
      public void adjustmentValueChanged(AdjustmentEvent e) {
        JScrollPane scrollpane = (JScrollPane)SwingUtilities.getAncestorOfClass(JScrollPane.class, scrollbar);
        JViewport viewport = scrollpane == null ? null : scrollpane.getViewport();

        if (viewport == null) {
          oldViewportPosition = null;
          return;
        }

        boolean vertical = isVertical();
        Point position = viewport.getViewPosition();
        // we don't take viewport's size here since it often changes on scrollbar appearance.
        // instead, we want to only react on visible area resizes
        Dimension dimension = scrollpane.getSize();

        boolean scrolled = false;
        if (oldViewportPosition != null) {
          int scrollH = position.x - oldViewportPosition.x;
          int scrollV = position.y - oldViewportPosition.y;
          scrolled = vertical && scrollH == 0 && scrollV != 0 ||
                     !vertical && scrollV == 0 && scrollH != 0;
        }
        oldViewportPosition = position;

        boolean resized = false;
        if (oldViewportDimension != null) {
          int resizedH = dimension.width - oldViewportDimension.width;
          int resizedV = dimension.height - oldViewportDimension.height;
          resized = vertical ? resizedV != 0 : resizedH != 0;
        }
        oldViewportDimension = dimension;

        if (scrolled) {
          // hide the opposite scrollbar when user scrolls
          JScrollBar other = vertical ? scrollpane.getHorizontalScrollBar()
                                      : scrollpane.getVerticalScrollBar();
          ScrollBarUI otherUI = other == null ? null : other.getUI();
          if (otherUI instanceof ButtonlessScrollBarUI) {
            ((ButtonlessScrollBarUI)otherUI).startMacScrollbarFadeout(true);
          }

          restart();
        }
        else if (resized) {
          startMacScrollbarFadeout();
        }
      }
    };

    myMouseMotionListener = new MouseMotionAdapter() {
      @Override
      public void mouseMoved(MouseEvent e) {
        boolean inside = isOverThumb(e.getPoint());
        if (inside != myMouseIsOverThumb) {
          myMouseIsOverThumb = inside;
          startRegularThumbAnimator();
        }
      }
    };

    myMouseListener = new MouseAdapter() {
      @Override
      public void mouseEntered(MouseEvent e) {
        // only restart animations when fading hasn't started yet
        if (myMacScrollbarFadeLevel == 0) {
          myMouseOverScrollbar = true;
          startMacScrollbarExpandAnimator();
          startMacScrollbarFadeout();
        }
      }

      @Override
      public void mouseExited(MouseEvent e) {
        if (myMouseIsOverThumb) {
          myMouseIsOverThumb = false;
          startRegularThumbAnimator();
        }

        if (myMouseOverScrollbar) {
          myMouseOverScrollbar = false;
          startMacScrollbarExpandAnimator();
          startMacScrollbarFadeout();
        }
      }
    };

    myHierarchyListener = new HierarchyListener() {
      @Override
      public void hierarchyChanged(HierarchyEvent e) {
        if (e.getChanged() == scrollbar) {
          // scrollbar is added to the screen resources
          if ((HierarchyEvent.DISPLAYABILITY_CHANGED & e.getChangeFlags()) != 0) {
            updateGlobalListeners(false);
          }
        }

        if (e.getChanged() == scrollbar.getParent()) {
          // when scrollpane is shown first time, we 'blink' the scrollbars
          if ((HierarchyEvent.SHOWING_CHANGED & e.getChangeFlags()) != 0) {
            restart();
          }
        }
      }
    };
    myAWTMouseListener = new AWTEventListener() {
      @Override
      public void eventDispatched(AWTEvent event) {
        if (event.getID() == MouseEvent.MOUSE_MOVED && !myMacScrollbarHidden && myMacScrollbarFadeLevel == 0) {
            // user is moving inside the scrollpane of the scrollbar and fade-out hasn't started yet
          Container scrollpane = SwingUtilities.getAncestorOfClass(JScrollPane.class, scrollbar);
          if (scrollpane != null) {
            Point loc = ((MouseEvent)event).getLocationOnScreen();
            SwingUtilities.convertPointFromScreen(loc, scrollpane);
            if (scrollpane.contains(loc)) {
              startMacScrollbarFadeout();
            }
          }
        }
      }
    };
    myWeakListener = new WeakListener(myAWTMouseListener);
    myNSScrollerListener = new NSScrollerHelper.ScrollbarStyleListener() {
      @Override
      public void styleChanged() {
        updateMacScrollbarStyle();
      }
    };
  }

  @Override
  protected ArrowButtonListener createArrowButtonListener() {
    return new ArrowButtonListener() {
      @Override
      public void mousePressed(MouseEvent event) {
      }

      @Override
      public void mouseReleased(MouseEvent event) {
      }
    };
  }

  protected boolean isMacOverlayScrollbar() {
    return myMacScrollerStyle == NSScrollerHelper.Style.Overlay && isMacOverlayScrollbarSupported();
  }

  public static boolean isMacOverlayScrollbarSupported() {
    return SystemInfo.isMac && !Registry.is("ide.mac.disableMacScrollbars");
  }

  private void updateMacScrollbarStyle() {
    NSScrollerHelper.Style style = NSScrollerHelper.getScrollerStyle();

    if (style != myMacScrollerStyle && scrollbar != null) {
      myMacScrollerStyle = style;

      updateStyleDefaults();
      restart();

      JScrollPane pane = ComponentUtil.getScrollPane(scrollbar);
      if (pane != null) pane.revalidate();
    }
  }

  public boolean alwaysShowTrack() {
    return !isMacOverlayScrollbar();
  }

  @Override
  public void layoutContainer(Container scrollbarContainer) {
    try {
      super.layoutContainer(scrollbarContainer);
    }
    catch (NullPointerException ignore) {
      //installUI is not performed yet or uninstallUI has set almost every field to null. Just ignore it //IDEA-89674
    }
  }

  /**
   * This is overridden only to increase the invalid area.
   * This ensures that whole track will be repainted in case of installed callback
   */
  @Override
  protected void setThumbBounds(int x, int y, int width, int height) {
    // A logic to override Swing's "ScrollBar.alwaysShowThumb" property (set by GTK+ L&F).
    // When the property is set, the thumb fits entire width/height of a scroll bar (see BasicScrollBarUI.layoutVScrollbar()).
    // The fix detects such situations and resets thumb size, thus hiding the thumb when not needed.
    if (width > 0 && height > 0 && UIManager.getBoolean("ScrollBar.alwaysShowThumb") && !alwaysShowTrack()) {
      int w = trackRect.width, h = trackRect.height;
      if (w > h && w == width || w < h && h == height) {
        x = y = width = height = 0;
      }
    }

    if (myRepaintCallback != null) {
      // We want to repaint whole scrollbar even if thumb wasn't moved (on small scroll of a big panel)
      // Even if scrollbar wasn't changed itself, myRepaintCallback could need repaint
      scrollbar.repaint(trackRect);
    }

    super.setThumbBounds(x, y, width, height);
  }

  @Override
  protected ModelListener createModelListener() {
    return new ModelListener() {
      @Override
      public void stateChanged(ChangeEvent e) {
        if (scrollbar != null) {
          super.stateChanged(e);
        }
      }
    };
  }

  public int getDecrementButtonHeight() {
    return Math.max(0, decrButton.getHeight());
  }
  public int getIncrementButtonHeight() {
    return Math.max(0, incrButton.getHeight());
  }

  private void startRegularThumbAnimator() {
    if (myDisposed || isMacOverlayScrollbar()) return;

    myThumbFadeAnimator.reset();
    if (scrollbar != null && scrollbar.getValueIsAdjusting() || myMouseIsOverThumb || Registry.is("ui.no.bangs.and.whistles")) {
      myThumbFadeAnimator.suspend();
      myThumbFadeColorShift = getAnimationColorShift();
    }
    else {
      myThumbFadeAnimator.resume();
    }
  }

  private void startMacScrollbarExpandAnimator() {
    if (myDisposed || !isMacOverlayScrollbar()) return;

    if (myMouseOverScrollbarExpandLevel == 0) {
      myMouseOverScrollbarExpandAnimator.reset();
      myMouseOverScrollbarExpandAnimator.suspend();
      if (myMouseOverScrollbar) {
        myMouseOverScrollbarExpandAnimator.resume();
      }
    }
  }

  private void startMacScrollbarFadeout() {
    startMacScrollbarFadeout(false);
  }

  private void startMacScrollbarFadeout(boolean now) {
    if (myDisposed || !isMacOverlayScrollbar()) return;

    myMacScrollbarFadeTimer.cancelAllRequests();

    if (now) {
      if (!myMacScrollbarHidden && !myMacScrollbarFadeAnimator.isRunning()) {
        myMacScrollbarFadeAnimator.resume();
      }
      return;
    }

    myMacScrollbarFadeAnimator.suspend();
    myMacScrollbarFadeAnimator.reset();
    myMacScrollbarHidden = false;
    myMacScrollbarFadeLevel = 0;

    JScrollBar sb = scrollbar; // concurrency in background editors initialization
    if (sb != null) {
      sb.repaint();

      Application application = ApplicationManager.getApplication();
      if (!myMouseOverScrollbar && !sb.getValueIsAdjusting() && (application == null || !application.isUnitTestMode())) {
        myMacScrollbarFadeTimer.addRequest(() -> myMacScrollbarFadeAnimator.resume(), 700, null);
      }
    }
  }

  @Deprecated
  public static BasicScrollBarUI createNormal() {
    return new ButtonlessScrollBarUI();
  }

  @Override
  protected void installDefaults() {
    final int incGap = UIManager.getInt("ScrollBar.incrementButtonGap");
    final int decGap = UIManager.getInt("ScrollBar.decrementButtonGap");
    try {
      UIManager.put("ScrollBar.incrementButtonGap", 0);
      UIManager.put("ScrollBar.decrementButtonGap", 0);
      super.installDefaults();
    }
    finally {
      UIManager.put("ScrollBar.incrementButtonGap", incGap);
      UIManager.put("ScrollBar.decrementButtonGap", decGap);
    }

    myMacScrollerStyle = NSScrollerHelper.getScrollerStyle();
    scrollbar.setFocusable(false);
    updateStyleDefaults();
  }

  private void updateStyleDefaults() {
    scrollbar.setOpaque(alwaysShowTrack());
  }

  @Override
  protected void installListeners() {
    myDisposed = false;

    initRegularThumbAnimator();
    initMacScrollbarAnimators();

    super.installListeners();
    scrollbar.addAdjustmentListener(myAdjustmentListener);
    scrollbar.addMouseListener(myMouseListener);
    scrollbar.addMouseMotionListener(myMouseMotionListener);

    scrollbar.addHierarchyListener(myHierarchyListener);
    updateGlobalListeners(false);

    restart();
  }

  private void restart() {
    startRegularThumbAnimator();
    startMacScrollbarFadeout();
  }

  private static final Method setValueFrom = ReflectionUtil.getDeclaredMethod(TrackListener.class, "setValueFrom", MouseEvent.class);
  static {
    LOG.assertTrue(setValueFrom != null, "Cannot get TrackListener.setValueFrom method");
  }

  @Override
  protected TrackListener createTrackListener() {
    return new TrackListener() {
      @Override
      public void mousePressed(MouseEvent e) {
        if (scrollbar.isEnabled()
            && SwingUtilities.isLeftMouseButton(e)
            && !getThumbBounds().contains(e.getPoint())
            && NSScrollerHelper.getClickBehavior() == NSScrollerHelper.ClickBehavior.JumpToSpot
            && setValueFrom != null) {

          switch (scrollbar.getOrientation()) {
            case Adjustable.VERTICAL:
              offset = getThumbBounds().height / 2;
              break;
            case Adjustable.HORIZONTAL:
              offset = getThumbBounds().width / 2;
              break;
          }
          isDragging = true;
          try {
            setValueFrom.invoke(this, e);
          }
          catch (Exception ex) {
            LOG.error(ex);
          }

          return;
        }

        super.mousePressed(e);
      }
    };
  }

  private void updateGlobalListeners(boolean forceRemove) {
    boolean shouldAdd = scrollbar.isDisplayable();

    if (myGlobalListenersAdded && (!shouldAdd || forceRemove)) {
      Toolkit.getDefaultToolkit().removeAWTEventListener(myWeakListener);
      NSScrollerHelper.removeScrollbarStyleListener(myNSScrollerListener);
      myGlobalListenersAdded = false;
    }

    if (!myGlobalListenersAdded && shouldAdd && !forceRemove) {
      Toolkit.getDefaultToolkit().addAWTEventListener(myWeakListener, AWTEvent.MOUSE_MOTION_EVENT_MASK);
      NSScrollerHelper.addScrollbarStyleListener(myNSScrollerListener);
      myGlobalListenersAdded = true;
    }
  }

  private void initRegularThumbAnimator() {
    if (!myDisposed) {
      myThumbFadeAnimator = new Animator("Regular scrollbar thumb animator", FRAMES_COUNT, FRAMES_COUNT * 50, false) {
        @Override
        public void paintNow(int frame, int totalFrames, int cycle) {
          myThumbFadeColorShift = getAnimationColorShift();
          if (frame > DELAY_FRAMES) {
            myThumbFadeColorShift *= 1 - (double)(frame - DELAY_FRAMES) / (double)(totalFrames - DELAY_FRAMES);
          }

          if (scrollbar != null) {
            scrollbar.repaint(((ButtonlessScrollBarUI)scrollbar.getUI()).getThumbBounds());
          }
        }
      };
    }
  }

  private void initMacScrollbarAnimators() {
    if (!myDisposed) {
      myMouseOverScrollbarExpandAnimator = new Animator("Mac scrollbar mouse over animator", 10, 200, false) {
        @Override
        protected void paintCycleEnd() {
          myMouseOverScrollbarExpandLevel = 1;
          if (scrollbar != null) scrollbar.repaint();
        }

        @Override
        public void paintNow(int frame, int totalFrames, int cycle) {
          int delay = totalFrames / 2;
          int frameAfterDelay = frame - delay;

          if (frameAfterDelay > 0) {
            myMouseOverScrollbarExpandLevel = frameAfterDelay / (float)(totalFrames - delay);
            if (scrollbar != null) scrollbar.repaint();
          }
        }
      };

      myMacScrollbarFadeTimer = new Alarm(Alarm.ThreadToUse.SWING_THREAD);
      myMacScrollbarFadeAnimator = new Animator("Mac scrollbar fade animator", 30, 300, false) {
        @Override
        protected void paintCycleEnd() {
          myMacScrollbarHidden = true;
          myMouseOverScrollbar = false;
          myMouseOverScrollbarExpandLevel = 0;

          if (scrollbar != null) scrollbar.repaint();
        }

        @Override
        public void paintNow(int frame, int totalFrames, int cycle) {
          myMacScrollbarFadeLevel = frame / (float)totalFrames;
          if (scrollbar != null) scrollbar.repaint();
        }
      };
    }
  }

  private boolean isOverThumb(Point p) {
    final Rectangle bounds = getThumbBounds();
    return bounds != null && bounds.contains(p);
  }

  @Override
  public Rectangle getThumbBounds() {
    return super.getThumbBounds();
  }

  @Override
  protected void uninstallListeners() {
    if (scrollTimer != null) {
      // it is already called otherwise
      super.uninstallListeners();
    }

    scrollbar.removeAdjustmentListener(myAdjustmentListener);
    scrollbar.removeMouseListener(myMouseListener);
    scrollbar.removeMouseMotionListener(myMouseMotionListener);

    scrollbar.removeHierarchyListener(myHierarchyListener);
    updateGlobalListeners(true);

    if (myThumbFadeAnimator != null) {
      Disposer.dispose(myThumbFadeAnimator);
      myThumbFadeAnimator = null;
    }
    if (myMouseOverScrollbarExpandAnimator != null) {
      Disposer.dispose(myMouseOverScrollbarExpandAnimator);
    }
    if (myMacScrollbarFadeTimer != null) {
      Disposer.dispose(myMacScrollbarFadeTimer);
    }
    if (myMacScrollbarFadeAnimator != null) {
      Disposer.dispose(myMacScrollbarFadeAnimator);
    }
    myDisposed = true;
  }

  @Override
  protected Dimension getMinimumThumbSize() {
    final int thickness = getThickness();
    return isVertical() ? new Dimension(thickness, thickness * 2) : new Dimension(thickness * 2, thickness);
  }

  protected int getThickness() {
    int i = isMacOverlayScrollbar() ? 15 : 13;
    return JBUIScale.scale(i);
  }

  @Override
  public Dimension getMaximumSize(JComponent c) {
    int thickness = getThickness();
    return new Dimension(thickness, thickness);
  }

  @Override
  public Dimension getMinimumSize(JComponent c) {
    return getMaximumSize(c);
  }

  @Override
  public Dimension getPreferredSize(JComponent c) {
    return getMaximumSize(c);
  }

  @Override
  public boolean contains(JComponent c, int x, int y) {
    if (isMacOverlayScrollbar() && !alwaysShowTrack() && !alwaysPaintThumb() && myMacScrollbarHidden) return false;
    return super.contains(c, x, y);
  }

  @Override
  protected void paintTrack(Graphics g, JComponent c, Rectangle trackBounds) {
    if (alwaysShowTrack() || myMouseOverScrollbarExpandLevel > 0) {
      doPaintTrack(g, c, trackBounds);
    }
    RegionPainter<Object> painter = ComponentUtil.getClientProperty(c, JBScrollBar.TRACK);
    if (painter != null) {
      painter.paint((Graphics2D)g, trackBounds.x, trackBounds.y, trackBounds.width, trackBounds.height, null);
    }
  }

  protected void doPaintTrack(Graphics g, JComponent c, Rectangle bounds) {
    if (isMacOverlayScrollbar() && !alwaysShowTrack()) {
      bounds = getMacScrollBarBounds(bounds, false);
      boolean vertical = isVertical();

      final Paint paint;
      final Color start = adjustColor(ColorUtil.darker(getTrackBackground(), 1));
      final Color end = adjustColor(getTrackBackground().brighter());

      if (vertical) {
        paint = UIUtil.getGradientPaint(bounds.x + 1, bounds.y, start, bounds.width + 1, bounds.y, end);
      }
      else {
        paint = UIUtil.getGradientPaint(bounds.x, bounds.y + 1, start, bounds.x, bounds.height + 1, end);
      }

      Graphics2D g2d = (Graphics2D)g;
      g2d.setPaint(paint);
      g2d.fillRect(bounds.x, bounds.y, bounds.width, bounds.height);

      g.setColor(adjustColor(start.darker()));
    }
    else {
      g.setColor(getTrackBackground());
      g.fillRect(bounds.x, bounds.y, bounds.width, bounds.height);

      g.setColor(getTrackBorderColor());
    }

    if (isVertical()) {
      int x = scrollbar.getComponentOrientation().isLeftToRight() ? bounds.x : bounds.x + bounds.width - 1;
      g.drawLine(x, bounds.y, x, bounds.y + bounds.height);
    }
    else {
      g.drawLine(bounds.x, bounds.y, bounds.x + bounds.width, bounds.y);
    }

    if (myRepaintCallback != null) {
      myRepaintCallback.call(g);
    }
  }

  @Override
  protected void paintThumb(Graphics g, JComponent c, Rectangle thumbBounds) {
    doPaintThumb(g, thumbBounds);
  }

  private void doPaintThumb(Graphics g, Rectangle thumbBounds) {
    if (thumbBounds.isEmpty() || !scrollbar.isEnabled()) {
      return;
    }

    if (isMacOverlayScrollbar()) {
      paintMacThumb(g, thumbBounds);
    }
    else {
      Rectangle bounds = new Rectangle(thumbBounds);
      if (isThumbTranslucent()) {
        Alignment alignment = Alignment.get(scrollbar);
        if (alignment == Alignment.LEFT || alignment == Alignment.RIGHT) {
          int offset = getThumbOffset(bounds.width);
          if (offset > 0) {
            bounds.width -= offset;
            if (alignment == Alignment.RIGHT) bounds.x += offset;
          }
        }
        else {
          int offset = getThumbOffset(bounds.height);
          if (offset > 0) {
            bounds.height -= offset;
            if (alignment == Alignment.BOTTOM) bounds.y += offset;
          }
        }
      }
      else if (SystemInfo.isMac) {
        boolean vertical = scrollbar == null || Adjustable.VERTICAL == scrollbar.getOrientation();
        bounds.x += vertical ? 1 : 0;
        bounds.y += vertical ? 0 : 1;
        bounds.width -= vertical ? 1 : 0;
        bounds.height -= vertical ? 0 : 1;
      }
      else {
        bounds.x += 1;
        bounds.y += 1;
        bounds.width -= 2;
        bounds.height -= 2;
      }
      if (SystemInfo.isMac) {
        int max = JBUIScale.scale(12);
        if (max < bounds.width && bounds.width < bounds.height) {
          bounds.x += (bounds.width - max) / 2;
          bounds.width = max;
        }
        else if (max < bounds.height && bounds.height < bounds.width) {
          bounds.y += (bounds.height - max) / 2;
          bounds.height = max;
        }
        float value = fixAnimationValue((float)myThumbFadeColorShift / getAnimationColorShift());
        myThumbPainter.paint((Graphics2D)g, bounds.x, bounds.y, bounds.width, bounds.height, value);
      }
      else {
        float value = fixAnimationValue((float)myThumbFadeColorShift / getAnimationColorShift());
        myThumbPainter.paint((Graphics2D)g, bounds.x, bounds.y, bounds.width, bounds.height, value);
      }
    }
  }

  private static float fixAnimationValue(float value) {
    if (value < 0 || Double.isNaN(value)) {
      LOG.debug("unexpected animation value: ", value);
      return 0;
    }
    if (value > 1) {
      LOG.debug("animation value is too big: ", value);
      return 1;
    }
    return value;
  }

  @Deprecated
  protected boolean isThumbTranslucent() {
    return scrollbar == null || !scrollbar.isOpaque();
  }

  @Deprecated
  protected int getThumbOffset(int value) {
    // com.intellij.ui.components.AbstractScrollBarUI.scale
    float scale = JBUIScale.scale(10);
    //noinspection EnumSwitchStatementWhichMissesCases
    switch (UIUtil.getComponentStyle(scrollbar)) {
      case LARGE:
        scale *= 1.15f;
        break;
      case SMALL:
        scale *= 0.857f;
        break;
      case MINI:
        scale *= 0.714f;
        break;
    }
    return value - (int)scale;
  }

  private void paintMacThumb(Graphics g, Rectangle thumbBounds) {
    if (isMacScrollbarHiddenAndXcodeLikeScrollbar()) return;

    if (!myMacScrollbarHidden || alwaysPaintThumb()) {
      thumbBounds = getMacScrollBarBounds(thumbBounds, true);
      Graphics2D g2d = (Graphics2D)g;

      float value = fixAnimationValue((float)(1 - myMacScrollbarFadeLevel));
      myThumbPainter.paint(g2d, thumbBounds.x - 2, thumbBounds.y - 2, thumbBounds.width + 4, thumbBounds.height + 4, value);
    }
  }

  protected boolean isDark() {
    return StartupUiUtil.isUnderDarcula();
  }

  protected boolean alwaysPaintThumb() {
    return alwaysShowTrack();
  }

  protected Rectangle getMacScrollBarBounds(Rectangle baseBounds, boolean thumb) {
    boolean vertical = isVertical();

    int borderSize = 2;
    int baseSize = vertical ? baseBounds.width : baseBounds.height;

    int maxSize = baseSize - (thumb ? borderSize * 2 : 0);
    int minSize = Math.min(baseSize / 2, JBUIScale.scale(7)) + (thumb ? 0 : borderSize * 2);

    int currentSize = minSize + (int)(myMouseOverScrollbarExpandLevel * (maxSize - minSize));

    int currentBolderSize = thumb ? borderSize : 0;

    int x = baseBounds.x;
    int y = baseBounds.y;
    int width;
    int height;

    if (vertical) {
      x += baseBounds.width - currentSize - currentBolderSize;
      y += currentBolderSize;
      width = currentSize;
      height = baseBounds.height - currentBolderSize * 2;
    }
    else {
      x += currentBolderSize;
      y += baseBounds.height - currentSize - currentBolderSize;
      width = baseBounds.width - currentBolderSize * 2;
      height = currentSize;
    }

    width = Math.max(width, currentSize);
    height = Math.max(height, currentSize);

    return new Rectangle(x, y, width, height);
  }

  @Override
  public boolean getSupportsAbsolutePositioning() {
    return true;
  }

  protected Color adjustColor(Color c) {
    if (isMacOverlayScrollbar()) {
      int alpha = (int)((120 + myMouseOverScrollbarExpandLevel * 20) * (1 - myMacScrollbarFadeLevel));
      //noinspection UseJBColor
      return new Color(c.getRed(), c.getGreen(), c.getBlue(), alpha);
    }
    else {
      if (myThumbFadeColorShift == 0) return c;
      final int sign = isDark() ? -1 : 1;
      return Gray.get(Math.max(0, Math.min(255, c.getRed() - sign * myThumbFadeColorShift)));
    }
  }

  protected boolean isVertical() {
    return scrollbar.getOrientation() == Adjustable.VERTICAL;
  }

  @Override
  protected JButton createIncreaseButton(int orientation) {
    return new EmptyButton();
  }

  @Override
  protected JButton createDecreaseButton(int orientation) {
    return new EmptyButton();
  }

  protected boolean isMacScrollbarHiddenAndXcodeLikeScrollbar() {
    return myMacScrollbarHidden && isMacOverlayScrollbarSupported() && xcodeLikeScrollbar();
  }

  protected static boolean xcodeLikeScrollbar() {
    return Registry.is("editor.xcode.like.scrollbar");
  }

  public void registerRepaintCallback(ScrollbarRepaintCallback callback) {
    myRepaintCallback = callback;
  }

  private static final class EmptyButton extends JButton {
    private EmptyButton() {
      setFocusable(false);
      setRequestFocusEnabled(false);
    }

    @Override
    public Dimension getMaximumSize() {
      return JBUI.emptySize();
    }

    @Override
    public Dimension getPreferredSize() {
      return getMaximumSize();
    }

    @Override
    public Dimension getMinimumSize() {
      return getMaximumSize();
    }
  }

  public interface ScrollbarRepaintCallback {
    void call(Graphics g);
  }

  public static class Transparent extends ButtonlessScrollBarUI {
    @Override
    public boolean alwaysShowTrack() {
      return false;
    }
  }

  private static final class WeakListener implements AWTEventListener {
    private final WeakReference<AWTEventListener> myReference;

    private WeakListener(AWTEventListener listener) {
      myReference = new WeakReference<>(listener);
    }

    @Override
    public void eventDispatched(AWTEvent event) {
      AWTEventListener listener = myReference.get();
      if (listener != null) {
        listener.eventDispatched(event);
      }
      else {
        Toolkit.getDefaultToolkit().removeAWTEventListener(this);
      }
    }
  }
}


Over one hundred years ago, two billion humans lost their lives to the Erains during the Purge War. If not for the Gelders, all of us would have been wiped out. All we had to do was allow our women to be claimed every year. A small price to pay to avoid extinction.
Join Eleanor and Danion on their quest to save the galaxy, defeat a foe, and find love. Their path is fraught with danger, and if they can survive the war, they just might save each other.


text:
Чарльз Суи́нхо (другие варианты транскрипции фамилии: Суи́нго, Сви́нхо, Сви́нго, Свайно; род. 27 августа 1838, Калькутта — 2 декабря 1923) — английский натуралист и лепидоптеролог. Один из восьми основателей Бомбейского общества естественной истории (). Брат известного натуралиста Роберта Суинхо. Служил в британской армии в Индии.

Биография
Служил в Крыму. После Восстания сипаев направлен в Индию. В 1880 вместе с лордом Робертсом посетил Кандагар. На обратном пути в Индию они собрали 341 образец птиц. Позднее они были описаны в журнале «Ибис» (1882: 95-126). К 1885 году Суинхо дослужился до полковника.

Застрелил 50—60 тигров. Был членом Британского союза орнитологов. Автор статей о птицах южного Афганистана и центральной Индии для журнала «Ибис». Свайно подарил Британскому музею по 300 шкурок птиц из каждой из этих стран. Также собирал насекомых, коллекционировал бабочек. Коллекция индийских Lepidoptera, принадлежавшая Чарлзу, была одной из крупнейших в своё время (40 000 особей из 7000 видов и 400 новых видов, описанных им самим).

После смерти Фредерика Мура в 1907 году Свайно завершил его труд «Lepidoptera Indica». Публиковался в «Annals and Magazine of Natural History». Также он стал автором «A Revision of the Genera of the Family Liparidae» и совместно с Эверардом Чарлзом Котсом опубликовал «Catalogue of the Moths of India» (Calcutta, 1887-89).

Выйдя в отставку, поселился в Оксфорде и получил почётную научную степень M.A. за свои работы в области энтомологии. Энтомологическое общество Франции сделало его своим почётным членом.

Коллекцию бабочек Свайно приобрёл Джеймс Джон Джойси.

Примечания

Ссылки
 Manuscript Collection
 Lepidoptera Indica. Отсканированные тома 1 2 3 4 5 6 7 8 9 10

Лепидоптерологи