I was elated, along with millions of other American Christians, at the Supreme court's decision on Marriage Equality. As a 70-something retired protestant pastor, that may seem strange to those Christians who vehemently object to that ruling. I was never strongly opposed to homosexuality or to gay persons, but accepted the conventional wisdom of my younger days: that they were psychologically maladjusted or an unfortunate quirk of nature. My mind changed over the short period of a decade.
The United Church of Christ, in which I served for 40 years, began dealing with this issue in the 1970's. The General Synod, the UCC's national governing body, adopted a Pronouncement in 1975, "Civil Liberties Without Regard to Sexual Orientation." In 1983 the Synod adopted a resolution authorizing the ordination of gay and lesbian candidates for ministry if they were fully qualified. In 2005 the Synod adopted a resolution supporting marriage equality. There were numerous resolutions through those years that expressed theological support and pastoral concern for LGBTQ persons and their families.
I participated in each of those Synod meetings and in the process gained a new understanding of the issues and of the LGBTQ people who have suffered painful, thwarting discrimination. I also spent all those years trying to help Christian folks who had grown up with the same assumptions I did about homosexuality understand why our church was taking such positions. These were faithful church members who never dreamed of such developments and could not imagine accepting them. Every conversation was painful, and some were enlightening as those who had open minds and hearts began to see that God's love extends to all people, without exception.
The crux of the matter has always come down to the authority of scripture. The division, to over-simplify, can be seen as: the Bible as the Word of God, versus the Bible as the Words of God. Many denominations, scholars, pastors and Christians have for decades understood the Bible as the testimony of faithful Jews and Christians from the 6th century BCE to the 2nd century of the Christian Era, not actual words of God, dictated and recorded by those witnesses. They are best understood in light of their historical, literary and cultural context. Others have held the view that every word of Scripture is literally inspired, and to think otherwise is apostasy. Their voice has been increasingly loud and is near deafening since the marriage equality ruling, and it comes basically from the spiritual shackles of biblical literalism.
There are six passages that have traditionally been read as condemning homosexuality. The story of Sodom and Gomorrah in Genesis 19, when read against other references to it, seems to have nothing to do with sexuality at all: Ezekiel writes: "this was the guilt of Sodom, she had pride, excess of food, prosperous ease, but did not aid the poor." [Hmm, . . . is America a modern Sodom?] Isaiah and Jeremiah make similar references, none having to do with homosexuality. There are two such condemnations in Leviticus 18 and 20 where homosexuality is seen as an abomination, but so is eating shell fish and blending different fibers in weaving cloth. Leviticus is a holiness code; its about purity in all things, and is generally ignored by these same Christian literalists.
The condemnations in the Christian scriptures are in the letters of St. Paul and occur in lists which include "murderers, fornicators, sodomites, slave traders, liars . . ." (I Timothy 1). There was no concept of sexual orientation in that era, and Paul was reacting to common practices in the Greco-Roman world, including temple prostitution of all sorts. Many Christians were taught from infancy to adhere to all these admonitions as God's will without regard to their cultural context. It is understandable that they have difficulty stepping away from their traditional views and accepting what seems to them to be the profligate cultural norms of a corrupt social order.
It will take time, but the fundamentalist view of faith, life and society based on biblical literalism is fading. That is why they fight so fiercely. In the meantime, supporters of marriage equality and LGBTQ rights should back off a little, celebrate but don't gloat or ridicule, and trust the steady and inevitable movement toward full equality.


text:
search filter All ContentBy SocietyGSA Bulletin
Early Publication
GSA Publications
GSA Member Sign In
Volume 118, Number 11-12
Research Article| November 01, 2006
Middle-Late Permian mass extinction on land
Gregory J. Retallack
Department of Geological Sciences, University of Oregon, Eugene, Oregon 97403-1272, USA
Christine A. Metzger
Tara Greaver
Department of Earth and Planetary Sciences, Johns Hopkins University, Baltimore, Maryland 21218, USA
A. Hope Jahren
Roger M.H. Smith
Department of Karoo Palaeontology, Iziko South African Museum, P.O. Box 61, Cape Town 8000, South Africa
Nathan D. Sheldon
Department of Geology, Royal Holloway University of London, Egham, Surrey TW20 OEX, England
GSA Bulletin (2006) 118 (11-12): 1398–1411.
https://doi.org/10.1130/B26011.1
rev-recd:
Gregory J. Retallack, Christine A. Metzger, Tara Greaver, A. Hope Jahren, Roger M.H. Smith, Nathan D. Sheldon; Middle-Late Permian mass extinction on land. GSA Bulletin ; 118 (11-12): 1398–1411. doi: https://doi.org/10.1130/B26011.1
The end-Permian mass extinction has been envisaged as the nadir of biodiversity decline due to increasing volcanic gas emissions over some 9 million years. We propose a different tempo and mechanism of extinction because we recognize two separate but geologically abrupt mass extinctions on land, one terminating the Middle Permian (Guadalupian) at 260.4 Ma and a later one ending the Permian Period at 251 Ma. Our evidence comes from new paleobotanical, paleopedological, and carbon isotopic studies of Portal Mountain, Antarctica, and comparable studies in the Karoo Basin, South Africa. Extinctions have long been apparent among marine invertebrates at both the end of the Guadalupian and end of the Permian, which were also times of warm-wet greenhouse climatic transients, marked soil erosion, transition from high- to low-sinuosity and braided streams, soil stagnation in wetlands, and profound negative carbon isotope anomalies. Both mass extinctions may have resulted from catastrophic methane outbursts to the atmosphere from coal intruded by feeder dikes to flood basalts, such as the end-Guadalupian Emeishan Basalt and end-Permian Siberian Traps.
Early publications alert
C-13/C-12
chronostratigraphy
Dwyka Formation
Ecca Group
Gangamopteris
Glossopteridales
Gymnospermae
isotope ratios
Karoo Basin
Karoo Supergroup
large igneous provinces
mass extinctions
palynomorphs
Permian-Triassic boundary
stratigraphic boundary
Tetrapoda
upper Paleozoic
Upper Permian
Victoria Land
Western Cape Province South Africa
Portal Mountain
S32°00'00" - S29°00'00", E23°00'00" - E28°00'00"
Web of Science (118)
V – Goldschmidt Abstracts 2013
Mineralogical Magazine
D – Goldschmidt Abstracts 2013
O – Goldschmidt Abstracts 2013
Permian-Triassic boundary in the central Transantarctic Mountains, Antarctica
N – Goldschmidt Abstracts 2013
T – Goldschmidt Abstracts 2013
Carbon isotopic evidence for terminal-Permian methane outbursts and their role in extinctions of animals, plants, coral reefs, and peat swamps
Wetlands through Time
Large igneous provinces and mass extinctions: An update
Volcanism, Impacts, and Mass Extinctions: Causes and Effects
Volcanism of the Central Atlantic magmatic province as the trigger of environmental and biotic changes around the Triassic-Jurassic boundary
The Pliensbachian–Toarcian (Early Jurassic) extinction: A North American perspective
Climatic reversals related to the Central Atlantic magmatic province caused the end-Triassic biotic crisis—Evidence from continental strata in Poland
The early Danian hyperthermal event at Boltysh (Ukraine): Relation to Cretaceous-Paleogene boundary events
GSA Bulletin Science Editors
Copyright © 2020 Geological Society of America

redpajama_set_name: RedPajamaCommonCrawl


Teacher instructions: Have students unscramble the words associated with Christmas. Words in this jumble are shorter than other worksheets. Vocabulary words in the jumble include: bows, cold, Dancer, family, gifts, gloves, jingle, jolly, lights, love, merry, peace, pipe, Santa, season, tinsel, toys, tree, Vixen and wreath.


text:
Japanese orphans in China consist primarily of children left behind by Japanese families following the Japanese repatriation from Huludao in the aftermath of World War II. According to Chinese government figures, roughly 4,000 Japanese children were left behind in China after the war, 90% in Inner Mongolia and northeast China (then Manchukuo). They were adopted by rural Chinese families.

In 1980, the orphans began returning to Japan, but they faced discrimination due to their lack of Japanese language skills and encountered difficulties in maintaining steady employment. As of August 2004, 2,476 orphans had settled in Japan, according to the figures of the Japanese Ministry of Labor. They receive monthly payments of ¥20,000-30,000 yen from the Japanese government. In 2003, 612 orphans filed a lawsuit against the Japanese government, claiming that it bears responsibility for their having been left behind. Each plaintiff sought ¥33 million.

Besides the orphans, most other Japanese left behind in China were women. These Japanese women mostly married Chinese men and became known as "stranded war wives" (zanryu fujin). Because they had children with Chinese men, the women were not allowed to bring their Chinese families back with them to Japan, and most of them stayed. Japanese law allowed only children with Japanese fathers to become Japanese citizens.

See also
 Wolf children, name given to a group of orphaned German children at the end of World War II.

References

Further reading

Adoption history
Japanese diaspora in China
Japanese family structure
Second Sino-Japanese War
Japanese people from Manchukuo

redpajama_set_name: RedPajamaWikipedia


We've all heard opposites attract and that's very much the case when it comes to sister signs in the zodiac. The polarities of two signs can either complement each other in harmony or cause some serious…tension. The fine line between hate and love really grows thinner when you find yourself attracted to your sister sign. Sister signs in the zodiac are known as polar opposites in element and traits. While you may find yourself irresistibly attracted to your opposite self, you might just wonder why sometimes you just can't stand them.
Take note and see what your sister signs bring to the table for you!
The sign of creation, Aries, meets the sign of beauty, Libra. Fiery Aries is a leader of the people, ready to take action in a moments notice. We love Aries for their bold action but we can't help but question just how much thought and planning was put into their decision-making when things start to go haywire. On the other side of the spectrum, Libra takes their sweet time deciding whether they want to go left or right only to conclude that they never even considered to go straight ahead! Outspoken Aries wants Libra to stand up for themselves and stand firm in their decisions. Gentle Libra wants Aries to balance their temper and consider the feelings of those around them.
These two sister signs truly create a devotion potion! Both signs are equally passionate and territorial about things they love whether it's their craft, lover, or home. With such passion – sometimes reaching the point of obsession - Taurus and Scorpio have a difficult time letting go. It doesn't necessarily help that they are both fixed signs, making their nature nostalgic and reluctant to change. The phrase "ride or die" was coined just for these two. Comfortable Taurus is straightforward in their affection and love for you while Scorpio takes some time to feel comfortable enough to unleash this constrained passion. Scorpio is constantly undergoing transformation as they discover more and more about their depth. The bull-like nature of Taurus is a stable earth energy that remains stagnant in their habits.
Knowledge is power, as these two would say! Gemini and Sagittarius are in search for adventure anywhere they can find it. Gemini branches out locally, using their chameleon-like nature to explore different cliques in the community. Sagittarius explores globally, fascinated by other cultures searching for their truth. While both signs hold a socialite, happy-go-lucky demeanor, their search for knowledge differs. Gemini loves to learn about everything humanly possible and acquire knowledge that allows them to connect with everyone. Sagittarius is fascinated by philosophies, religion, and doctrines that help them reach enlightenment. Gemini doesn't mind saying a fib or two to come across as more interesting while Sagittarius appreciates blunt and sometimes harsh honesty.
The spectrum of emotion leaves no middle ground between these two! Sensual cancer loves diving deep into their emotions while focused Capricorn keeps those heavy emotions at bay while they build an empire. Cancer is the shoulder for you to cry on when you need someone, the friend that brings you soup on days where you have a cold, and the one that calls out anyone who mistreats you. Capricorn nurtures in a more practical way, guiding you with career advice, financial matters, or even providing unbiased truth when you need to hear it. These two want to provide the world for their loved ones but manifest it in very different ways.
These two are like day and night! Leo and Aquarius are born for the spotlight for their eccentric, larger-than-life personalities. Both signs are for the people but prefer receiving their praise under different lights. Leo loves praise for the self and wants to be a leader for the people. Aquarius is a servant of the people and focuses attention on issues that they care about and their mission. Loving Leo is all heart, welcoming everyone into their light and generously sharing the affection they love to receive. Aquarius struggles to show affection as they generally come across as aloof simply by nature as love is not top priority on their agenda. Leo provides the warmth that Aquarius needs while Aquarius offers Leo the fun of a lifetime!
A magical pairing these two! The healer of the zodiac Virgo meets mystical Pisces to create a match made in heaven. Virgos sometimes fickle and cold behavior is no match for Pisces' all-encompassing selfless love. Virgos love feeling needed and Pisces need someone to bring them down to reality every once in a while. Virgo lives in the practical realm of responsibility and structure. Pisces is often lost in their daydream world feeding their constant need for comfort. These two bring both realities together to find a balance between our world and the next! As both are mutable signs, they have the tendency to stick to their illusive nature. Both signs are able to transform into your dreams…and even your worst nightmare when you least expect it.


After two years of development, we have finally completed the INFINITY IF15, our new competition GP touring car. Tested and approved by Team INFINITY's World Champion drivers, the IF15 was designed with the concept of having the lowest-possible center of gravity and easy maintenance. The IF15 provides excellent steering feeling in a wide range of driving situations due to the low center of gravity and quickly changing settings or exchanging differentials and belts is made simple with easy access bulkheads, this is a great advantage in races where you need to find the best setup with only limited time. The kit contains suspension bushes with various roll centre positions, three kinds of front stabilizers and four kinds of rear stabilizers are included so that you can easily tune your IF15 to any track.
Following optional parts are included in the IF15 kit.


A short story: the list of how many girlfriends I've had.
A long story: why I'm not with any of them.
A funny story: one day, I looked in the mirror. While naked.
A sadder story: while staring in the mirror naked, my high wore off.
A smart story: I got dressed. Fast.
A stupid story: and what do you think you've been reading for the past minute or so?
A dumb story: It took you a full minute to get this far?
A coming-of-age story: like that of King David and Uriah, I realized that my romantic story led to my war story and then my sad story.


text:
As GOP Swept Congress, Black Republicans Took Home Historic Wins
By Hansi Lo Wang / NPR
Published November 8, 2014 at 11:09 AM PST
Rick Bowmer AP
Republican Mia Love celebrates with her supporters after winning the race for Utah's 4th Congressional District on Tuesday.
Mic Smith AP
Sen. Tim Scott, R-S.C. greets supporters after winning his Senate race over challengers Jill Bossi and Joyce Dickerson on Tuesday.
The Republican Party made historic gains during this week's midterm elections. Among their victories were three wins by black Republicans, who seem to be building momentum for diversifying the GOP ranks.
Mia Love — who is Mormon and Haitian-American — is one of those three, and Republicans in Utah's 4th District will be sending her to Congress next year.
"Many of the naysayers out there said that Utah would never elect a black, Republican, LDS woman to Congress," Love told a crowd on Tuesday. "And guess what? Not only did we do it, we were the first to do it!"
Another big winner was Tim Scott, who was appointed to the Senate in 2012, but won a full term in his own right on Tuesday. He's now South Carolina's first elected black senator, and the South's first since Reconstruction.
Texas also celebrated a historic win in Will Hurd, a former CIA officer who is the first black Republican from Texas ever to win a U.S. Congressional seat.
"It's a start," says Michael Steele, the former chairman of the Republican National Committee. "And yeah, I want more. You know, I want to get to the point where it's not notable."
Steele, the first black chairman of the RNC, is notable himself. He says these rising stars will follow the lead of former representatives Allen West and J.C. Watts, who, like other black Republicans, faced suspicion from many black voters.
"You still have to deal with the stereotype that somehow if you're a black Republican, you're not a real black person," he says.
But Steele adds there are also legitimate questions about his party's commitment to racial diversity.
"White folks get excited when they see, 'Oh, got a black candidate running for office!' " he says. "OK, that's great. But what are you doing to get them elected? It's not just enough to have the face on the ballot."
Amy Holmes, a former speech writer for Republican Sen. Bill Frist and an anchor on the TheBlaze.com, says this newly-elected group represents an important part of the post-Obama era of politics.
"I think President Obama's election in 2008 inspired a lot of African-American politicians, including on the right," Holmes says.
Holmes points out these candidates also succeeded in places where black voters did not make up the majority.
"The old conventional wisdom has been that an African-American politician has to run from a majority African-American district," she says. "Well, these three candidates prove that's not true."
But the relationship between the GOP and black voters has to change as U.S. racial demographics continue to shift, according to Lenny McAllister, a former Republican candidate for Congress and the host of The McAllister Minute on the American Urban Radio Network.
Early exit polls show almost 90 percent of black voters supported Democrats on Tuesday, and McAllister says that allegiance to the Democratic Party diminishes black political power.
"We cannot continue to only access half of the political process," McAllister says. "We need Republicans and Democrats being actively and efficiently responsive to our needs."
McAllister admits it will take more than these three winners for Republicans to earn the trust of black voters. But he says we shouldn't forget how a young senator from Illinois beat the odds to become America's first black president.
"The impossible happens in America, and if we're going to open up the doors to what's possible for more Americans, we have to take on this fight now," he says.


For over 20 years, Ziauddin Yousafzai has been fighting for equality - first for Malala, his daughter, and then for all girls throughout the world living in patriarchal societies. Taught as a young boy in Pakistan to believe that he was inherently better than his sisters, Ziauddin rebelled against inequality at a young age. And when he had a daughter himself he vowed that Malala would have an education, something usually only given to boys, and he founded a school that Malala could attend.
In 2014 Malala become the youngest ever person to be awarded the Nobel Peace Prize. Written in collaboration with critically acclaimed National Book Award finalist Patricia McCormick, Malala tells her story - from her childhood in the Swat Valley to the shooting, to her recovery, and to new life in England.
In 2009 Malala Yousafzai began writing a blog on BBC Urdu about life in the Swat Valley as the Taliban gained control, at times banning girls from attending school. When her identity was discovered, Malala began to appear in both Pakistani and international media, advocating the freedom to pursue education for all.
In October 2012, gunmen boarded Malala's school bus and shot her in the face, a bullet passing through her head and into her shoulder. Remarkably, Malala survived the shooting. At a very young age, Malala Yousafzai has become a worldwide symbol of courage and hope. Her shooting has sparked a wave of solidarity across Pakistan, not to mention globally, for the right to education, freedom from terror and female emancipation.
I Am Malala, the memoir of Malala Yousafzai, will shed insight into the lives of those children who cannot attend school, will tell the inspiring story of a schoolgirl faced the Taliban with courage and bravery. Read by Archie Panjabi, with a prologue read by Malala Yousafzai.
This is a beautifully written and read book. Very educational and an interesting read. Everyone should read this.
Great book, well written, informative but easy to read. The narration was great also and really interesting to find out more about her life in Pakistan and the context of the political situation there.
Everybody should read! It helps to understand the history, but also to feel proud of having people that still fight for a better world!
loved it. it's an inspirational story that I hope you listen to. please support her cause and donate or campaign for education for all children.
a beautiful insight into the hardship of life and a culture of peace, education and respect. .. would love to share a meal with this young lady and her family.
The insiders perspective on a very real conflict.
Eye-opening and inspiring story, a great introduction to a situation and a country I know very little about. A young girl's experience of a country at war with itself and her struggle for the right to education. Peppered with anecdotes of her everyday teenage life which make you realise she is not much different from yourself.
This was an amazing story about the sweetest girl who dreamed of a better world, I was in tears for most of it, loved it.
I didnt know what to expect but I loved this book. Malala is an inspiration and is an amazing girl who will succeed in changing this world for the better.
What made the experience of listening to I Am Malala the most enjoyable?
The story is full of events within short period of time.
She is a example for everyone, everyone who believes we can change the world. It's about our dreams, our purpose to bring the goodness and peace in the world.
Me encantó este audiolibro, la historia es conmovedora, esa lucha por ideales, el amor a su país, a su cultura y el deseo de ayudar y desear un mejor país, llevado a través de la educación, es impresionante!
It educates on such topics as Islam, Pakistan and human rights, and shows how important the education is. Not only on the individual level, but on the level of society as well. By being a girl and going to school, Malala put her life at risk which is surprising if you don't know much about such issues.
"I am Malala" changed the way I think: how important education is? How to fight inequality in the world? Can one little girl from Pakistan help to children all around the world?
What did you like most about I Am Malala?
As a father of three daughters, I found Malala's story inspiring. It's served as a reality check for me, as well as reminding me how much I take for granted, for myself and my family. Obviously there at least two sides to every story, however, I don't doubt there are clearly many battles still to be fought (and worth fighting) so that children all over the world can have the opportunity for education and pull themselves out of poverty.
Found myself extolling the book to family, friends and colleagues - and this is something I very rarely do!The narration in the audio version of the book was excellent.
An important read for all.
Excellent history lesson and life lesson. Should be read to all children of the western world. They will know how lucky they are.
this was an incredible book, definitely worth a read! really puts things into perspective.
Malala is such a brave girl!
What does Malala Yousafzai and Archie Panjabi bring to the story that you wouldn't experience if you had only read the book?
Every little detail made you feel like you were there being a part of it making it that bit more emotional, i cried during this book.
This story is wonderfully written and read. Malala is the strongest young women I have ever heard of and I am so excited to see where she goes in her life and have no doubt she will change the way the world views education for women. well done Malala you are an inspiration!
Very good narration, interesting story about her life before the shooting, which happens towards end of book. Lots of history around a county and people that are on our news everyday.
Highly recommend as not the heavy, dull story I thought it might be. Glad I read it as it will inform my thoughts on what is happening in the Afghanistan/Pakistan regions.
this is an amazing book...full of history and context. malala's voice is strong but I.feel.like I.got.to know her father, her friends and so much more.
Where does I Am Malala rank among all the audiobooks you've listened to so far?
Malala ranks amongst the highest in the books I have listened to. I had the book on my wish list for some time but was reluctant to listen to it. There had been so much media press about this very wonderfully brave, outspoken child, I thought there would be nothing else to learn. How wrong could I have been.
The book begins with her describing the life she had as a young child in a very loving and supportive family, the idyllic valley which became part of her being and why she so loved it.
She speaks openly about the struggles her parents faced in opening up a school for girls and boys. Her competitive spirit at school and her determination to get every child girl or boy educated, How her family fed the poor and introduces us to how wonderful the Koran. How it does not preach hatred and discourse but peace, love and kindness. She introduces us to some of their traditions and the close family bond the people of her valley have.
As a westerner who's so used to a lone, independent and broken society I thought very differently. As the book continued I began to question what we'd been taught though the media and about the lives we lead though out the world.
She shows us all her strength of character, hopes and dreams for the future.
This is a book everyone should read. May her dreams come true.
What other book might you compare I Am Malala to, and why?
Have you listened to any of Malala Yousafzai and Archie Panjabi 's other performances? How does this one compare?
A must watch film. A girl with the strength to show us hope, love, as well as immense bravery and courage.
This is a wonderful book. Malala has that rare combination especially in one so young, strength, humility, and an unshakable certainty of what is right.
Would you listen to I Am Malala again? Why?
Yes. Incredibly inspiring, descriptive and thought provoking.
Archie Panjabi read this story superbly.
"One child, one teacher, one pen, one book can change the world."
Brilliant and incredible, the story of a Pakistani teenager who was shot in the head by the Taliban on her way home from school because she wanted education for girls.


Image Title: Decor Market Safavieh Hadley Velvet Tufted Accent Chair With Chairs Designs 16. Post Title: Tufted Accent Chairs. Filename: decor-market-safavieh-hadley-velvet-tufted-accent-chair-with-chairs-designs-16.jpg. Image Dimension: 900 x 900 pixels. Images Format: jpg/jpeg. Publisher/Author: Javon Conroy. Uploaded Date: Friday - October 05th. 2018 04:21:30 AM. Category: Architecture. Image Source: digsdigs.com. Accent Chairs Plush Tufted Chair CO 504556 With Regard To Remodel 17. Bernhardt Lennox Diamond Tufted Accent Chair For Chairs Ideas 8. Tufted Accent Chairs Hayneedle Within Ideas 3. Cool Tufted Accent Chair With Best 25 Ideas On Intended For Chairs Decor 18. Safavieh Carlin Taupe Linen Tufted Accent Chair MCR4711B The Home Inside Chairs Remodel 10. Haute House Arielle Tufted Accent Chair Intended For Chairs Decor 11. Anya Tufted Accent Chair 199 I THINK THIS IS THE ONE REGINA WAS Within Chairs Remodel 9. Bernhardt Omni Tufted Accent Chair Regarding Chairs Prepare 4. La Rosa Tufted Accent Chair Navy Blue Jennifer Taylor Home Intended For Chairs Plan 19. Furniture Of America Bently Tufted Accent Chair In Beige IDF 6780BG CH Inside Chairs Ideas 1.


Some of the vitamins found in Mushrooms, straw, canned, drained solids are: Vitamin B-9 (38 mg), Vitamin B-5 (0.41 mg) and Vitamin B-3 (0.22 mg).
Vitamin B-1 acts as a cofactor for the metabolism of carbohydrates, helping turn starch and sugar into the energy our bodies need, and plays an important role in nerve transmission. 0.01 milligrams of Vitamin B1 can be found on every 100 grams of Mushrooms, straw, canned, drained solids, the 1% of the total daily recommended Vitamin B1 intake.
The Vitamin B2 can act as an antioxidant, potentially helping to prevent cancer and prohibit cholesterol buildup by controlling the proliferation of harmful molecules known as free radicals. In 100 grams of Mushrooms, straw, canned, drained solids, you can find 0.07 milligrams of Vitamin B-2. It provides the 4% of the daily recommended value for the average adult.
Vitamin B-3 reduces the risk of heart disease and lowers harmful cholesterol while raising good cholesterol. Vitamin B3 may also reduce the incidence of asthma-induced wheezing and is helpful in treating atherosclerosis. In 100 grams of Mushrooms, straw, canned, drained solids, you can find 0.22 milligrams of Vitamin B-3. It provides the 1% of the daily recommended value for the average adult.
The pantothenic acid (or Vitamin B5) is a water-soluble nutrient that help support adrenal function and a healthy nervous system. Vitamin B5 can be found in nearly every food. In 100 grams of Mushrooms, straw, canned, drained solids, you can find 0.41 milligrams of Vitamin B5. It provides the 4% of the daily recommended value for the average adult.
Folic acid (Vitamin B9) may help protect against cancers of the lung, colon, and cervix. And may help slow memory decline associated with aging. Pregnant women have an increased need for folic acid. In 100 grams of Mushrooms, straw, canned, drained solids, you can find 38 micrograms of Vitamin B9. It provides the 10% of the daily recommended value for the average adult.


text:
The ICO to be less rigid when enforcing GDPR breaches
by Hamish Miller/ April 23, 2020/ Data & AI/ No Comments/
The UK's data regulator says it will relax its regulatory approach to enforcement during the COVID-19 crisis, in line with a commitment to being "pragmatic" and "proportionate".
This flexibility allows the regulator to "recognise and engage with the unique challenges the country is facing". "The data protection laws contain checks and balances to ensure that personal information can flow and be effectively utilised for healthcare." Click here to read the full document How we will regulate during Coronavirus
The ICO will take into account the strain on government and health services, as organisations facing staff shortages and financial pressures when applying data protection laws.
The document from the ICO makes reference to the use of UK citizens' personal data in the response to the coronavirus crisis, saying "there are appropriate and proportionate safeguards for individual's personal information that also allow for a recognition of the public interest, for instance in the use of apps, research projects and digital tools that rely on large personal data sets".
With regards to dealing with public complaints about data misuse, the ICO said that it will "continue to recognise the rights and protections granted to people by the law, both around their personal information and their right to freedom of information", but that it will focus its efforts on the "most serious challenges and greatest threats to the public".
The body says it "expect[s] to conduct fewer investigations, focussing our attention on those circumstances which suggest serious non-compliance". However, it will "take a strong regulatory approach against any organisation breaching data protection laws to take advantage of the current crisis".
"As set out in the Regulatory Action Policy, before issuing fines we take into account the economic impact and affordability. In current circumstances, this is likely to mean the level of fines reduces."
With regards the Freedom of Information Act and Environmental Information Regulation, the regulator said, "We will take an empathetic and pragmatic approach to our role regulating access to information regulation, recognising the importance of transparency, especially where people have seen their civil liberties impacted.
"We must reflect these exceptional times," said Denham. "We will continue to recognise the continuing importance of privacy protections, and the value of transparency provided by freedom of information. These rights are a part of modern life we must not lose. But my office will continue to safeguard information rights in an empathetic and pragmatic way that reflects the impact of coronavirus."
Hamish Miller
Can NHS tracing app keep health data in shape?
by Joanna Boag-Thomson/
Creating frontline capacity through automation
by Staff Writer/
The new mantra: do more with data
APP BOOSTS ROLE OF WOMEN IN PEACE PROCESSES


The Dione Collection Utilizes Sleek Lines With Laser Cut Oval Accents To Achieve A Perfect Balance. The Polished Nickel Finish Contributes To This Collection'S Refined Beauty.
The ELK 10119/3 Dione collection Close to Ceiling Lighting in Polished Nickel uses Incandescent light output and brings Contemporary style. The total wattage is 180 and the voltage is 120 volts. The ELK Lighting 10119/3 requires 3 bulbs (not included). Additional Information: Shade-Open Lamps - Type 15.


text:
package org.bouncycastle.x509;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.math.BigInteger;
import java.security.GeneralSecurityException;
import java.security.KeyFactory;
import java.security.PublicKey;
import java.security.cert.CRLException;
import org.bouncycastle.jce.cert.CertPath;
import org.bouncycastle.jce.cert.CertPathValidatorException;
import org.bouncycastle.jce.cert.CertStore;
import org.bouncycastle.jce.cert.CertStoreException;
import java.security.cert.Certificate;
import java.security.cert.CertificateParsingException;
import org.bouncycastle.jce.cert.PKIXParameters;
import org.bouncycastle.jce.cert.PolicyQualifierInfo;
import org.bouncycastle.jce.cert.TrustAnchor;
import java.security.cert.X509CRL;
import java.security.cert.X509CRLEntry;
import org.bouncycastle.jce.cert.X509CRLSelector;
import org.bouncycastle.jce.cert.X509CertSelector;
import java.security.cert.X509Certificate;
import java.security.interfaces.DSAParams;
import java.security.interfaces.DSAPublicKey;
import java.security.spec.DSAPublicKeySpec;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.bouncycastle.asn1.ASN1Encodable;
import org.bouncycastle.asn1.ASN1Enumerated;
import org.bouncycastle.asn1.ASN1GeneralizedTime;
import org.bouncycastle.asn1.ASN1InputStream;
import org.bouncycastle.asn1.ASN1Integer;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import org.bouncycastle.asn1.ASN1OctetString;
import org.bouncycastle.asn1.ASN1OutputStream;
import org.bouncycastle.asn1.ASN1Primitive;
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.DERSequence;
import org.bouncycastle.asn1.DEROctetString;
import org.bouncycastle.asn1.isismtt.ISISMTTObjectIdentifiers;
import org.bouncycastle.asn1.x500.X500Name;
import org.bouncycastle.asn1.x500.style.RFC4519Style;
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
import org.bouncycastle.asn1.x509.AuthorityKeyIdentifier;
import org.bouncycastle.asn1.x509.CertificateList;
import org.bouncycastle.asn1.x509.CRLDistPoint;
import org.bouncycastle.asn1.x509.CRLReason;
import org.bouncycastle.asn1.x509.DistributionPoint;
import org.bouncycastle.asn1.x509.DistributionPointName;
import org.bouncycastle.asn1.x509.Extension;
import org.bouncycastle.asn1.x509.GeneralName;
import org.bouncycastle.asn1.x509.GeneralNames;
import org.bouncycastle.asn1.x509.PolicyInformation;
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
import org.bouncycastle.jcajce.PKIXCRLStore;
import org.bouncycastle.jcajce.PKIXCRLStoreSelector;
import org.bouncycastle.jcajce.PKIXCertStore;
import org.bouncycastle.jcajce.PKIXCertStoreSelector;
import org.bouncycastle.jcajce.PKIXExtendedParameters;
import org.bouncycastle.jcajce.util.JcaJceHelper;
import org.bouncycastle.jce.exception.ExtCertPathValidatorException;
import org.bouncycastle.jce.provider.X509CRLObject;
import org.bouncycastle.jce.provider.X509CRLEntryObject;
import org.bouncycastle.jce.provider.AnnotatedException;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.jce.provider.PKIXPolicyNode;
import org.bouncycastle.util.Selector;
import org.bouncycastle.util.Store;
import org.bouncycastle.util.StoreException;
import org.bouncycastle.x509.X509AttributeCertificate;

class CertPathValidatorUtilities
{
    protected static final PKIXCRLUtil CRL_UTIL = new PKIXCRLUtil();

    protected static final String CERTIFICATE_POLICIES = Extension.certificatePolicies.getId();
    protected static final String BASIC_CONSTRAINTS = Extension.basicConstraints.getId();
    protected static final String POLICY_MAPPINGS = Extension.policyMappings.getId();
    protected static final String SUBJECT_ALTERNATIVE_NAME = Extension.subjectAlternativeName.getId();
    protected static final String NAME_CONSTRAINTS = Extension.nameConstraints.getId();
    protected static final String KEY_USAGE = Extension.keyUsage.getId();
    protected static final String INHIBIT_ANY_POLICY = Extension.inhibitAnyPolicy.getId();
    protected static final String ISSUING_DISTRIBUTION_POINT = Extension.issuingDistributionPoint.getId();
    protected static final String DELTA_CRL_INDICATOR = Extension.deltaCRLIndicator.getId();
    protected static final String POLICY_CONSTRAINTS = Extension.policyConstraints.getId();
    protected static final String FRESHEST_CRL = Extension.freshestCRL.getId();
    protected static final String CRL_DISTRIBUTION_POINTS = Extension.cRLDistributionPoints.getId();
    protected static final String AUTHORITY_KEY_IDENTIFIER = Extension.authorityKeyIdentifier.getId();

    protected static final String ANY_POLICY = "2.5.29.32.0";

    protected static final String CRL_NUMBER = Extension.cRLNumber.getId();

    /*
    * key usage bits
    */
    protected static final int KEY_CERT_SIGN = 5;
    protected static final int CRL_SIGN = 6;

    protected static final String[] crlReasons = new String[]{
        "unspecified",
        "keyCompromise",
        "cACompromise",
        "affiliationChanged",
        "superseded",
        "cessationOfOperation",
        "certificateHold",
        "unknown",
        "removeFromCRL",
        "privilegeWithdrawn",
        "aACompromise"};

    /**
     * Search the given Set of TrustAnchor's for one that is the
     * issuer of the given X509 certificate. Uses the default provider
     * for signature verification.
     *
     * @param cert         the X509 certificate
     * @param trustAnchors a Set of TrustAnchor's
     * @return the TrustAnchor object if found or
     *         null if not.
     * @throws AnnotatedException if a TrustAnchor was found but the signature verification
     * on the given certificate has thrown an exception.
     */
    protected static TrustAnchor findTrustAnchor(
        X509Certificate cert,
        Set trustAnchors)
        throws AnnotatedException
    {
        return findTrustAnchor(cert, trustAnchors, null);
    }

    /**
     * Search the given Set of TrustAnchor's for one that is the
     * issuer of the given X509 certificate. Uses the specified
     * provider for signature verification, or the default provider
     * if null.
     *
     * @param cert         the X509 certificate
     * @param trustAnchors a Set of TrustAnchor's
     * @param sigProvider  the provider to use for signature verification
     * @return the TrustAnchor object if found or
     *         null if not.
     * @throws AnnotatedException if a TrustAnchor was found but the signature verification
     * on the given certificate has thrown an exception.
     */
    protected static TrustAnchor findTrustAnchor(
        X509Certificate cert,
        Set trustAnchors,
        String sigProvider)
        throws AnnotatedException
    {
        TrustAnchor trust = null;
        PublicKey trustPublicKey = null;
        Exception invalidKeyEx = null;

        X509CertSelector certSelectX509 = new X509CertSelector();
        X500Name certIssuer = PrincipalUtils.getEncodedIssuerPrincipal(cert);

        try
        {
            certSelectX509.setSubject(certIssuer.getEncoded());
        }
        catch (IOException ex)
        {
            throw new AnnotatedException("Cannot set subject search criteria for trust anchor.", ex);
        }

        Iterator iter = trustAnchors.iterator();
        while (iter.hasNext() && trust == null)
        {
            trust = (TrustAnchor)iter.next();
            if (trust.getTrustedCert() != null)
            {
                if (certSelectX509.match(trust.getTrustedCert()))
                {
                    trustPublicKey = trust.getTrustedCert().getPublicKey();
                }
                else
                {
                    trust = null;
                }
            }
            else if (trust.getCAName() != null
                && trust.getCAPublicKey() != null)
            {
                try
                {
                    X500Name caName = PrincipalUtils.getCA(trust);
                    if (certIssuer.equals(caName))
                    {
                        trustPublicKey = trust.getCAPublicKey();
                    }
                    else
                    {
                        trust = null;
                    }
                }
                catch (IllegalArgumentException ex)
                {
                    trust = null;
                }
            }
            else
            {
                trust = null;
            }

            if (trustPublicKey != null)
            {
                try
                {
                    verifyX509Certificate(cert, trustPublicKey, sigProvider);
                }
                catch (Exception ex)
                {
                    invalidKeyEx = ex;
                    trust = null;
                    trustPublicKey = null;
                }
            }
        }

        if (trust == null && invalidKeyEx != null)
        {
            throw new AnnotatedException("TrustAnchor found but certificate validation failed.", invalidKeyEx);
        }

        return trust;
    }

    static List<PKIXCertStore> getAdditionalStoresFromAltNames(
        byte[] issuerAlternativeName,
        Map<GeneralName, PKIXCertStore> altNameCertStoreMap)
        throws CertificateParsingException
    {
        // if in the IssuerAltName extension an URI
        // is given, add an additional X.509 store
        if (issuerAlternativeName != null)
        {
            GeneralNames issuerAltName = GeneralNames.getInstance(ASN1OctetString.getInstance(issuerAlternativeName).getOctets());

            GeneralName[] names = issuerAltName.getNames();
            List  stores = new ArrayList();

            for (int i = 0; i != names.length; i++)
            {
                GeneralName altName = names[i];

                PKIXCertStore altStore = (PKIXCertStore)altNameCertStoreMap.get(altName);

                if (altStore != null)
                {
                    stores.add(altStore);
                }
            }

            return stores;
        }
        else
        {
            return Collections.EMPTY_LIST;
        }
    }

    protected static Date getValidDate(PKIXExtendedParameters paramsPKIX)
    {
        Date validDate = paramsPKIX.getDate();

        if (validDate == null)
        {
            validDate = new Date();
        }

        return validDate;
    }

    protected static boolean isSelfIssued(X509Certificate cert)
    {
        return cert.getSubjectDN().equals(cert.getIssuerDN());
    }

    /**
     * Extract the value of the given extension, if it exists.
     *
     * @param ext The extension object.
     * @param oid The object identifier to obtain.
     * @throws AnnotatedException if the extension cannot be read.
     */
    protected static ASN1Primitive getExtensionValue(
        java.security.cert.X509Extension ext,
        String oid)
        throws AnnotatedException
    {
        byte[] bytes = ext.getExtensionValue(oid);
        if (bytes == null)
        {
            return null;
        }

        return getObject(oid, bytes);
    }

    private static ASN1Primitive getObject(
        String oid,
        byte[] ext)
        throws AnnotatedException
    {
        try
        {
            ASN1InputStream aIn = new ASN1InputStream(ext);
            ASN1OctetString octs = (ASN1OctetString)aIn.readObject();

            aIn = new ASN1InputStream(octs.getOctets());
            return aIn.readObject();
        }
        catch (Exception e)
        {
            throw new AnnotatedException("exception processing extension " + oid, e);
        }
    }

    protected static AlgorithmIdentifier getAlgorithmIdentifier(
        PublicKey key)
        throws CertPathValidatorException
    {
        try
        {
            ASN1InputStream aIn = new ASN1InputStream(key.getEncoded());

            SubjectPublicKeyInfo info = SubjectPublicKeyInfo.getInstance(aIn.readObject());

            return info.getAlgorithm();
        }
        catch (Exception e)
        {
            throw new ExtCertPathValidatorException("Subject public key cannot be decoded.", e);
        }
    }

    // crl checking

    //
    // policy checking
    //

    protected static final Set getQualifierSet(ASN1Sequence qualifiers)
        throws CertPathValidatorException
    {
        Set pq = new HashSet();

        if (qualifiers == null)
        {
            return pq;
        }

        ByteArrayOutputStream bOut = new ByteArrayOutputStream();
        ASN1OutputStream aOut = new ASN1OutputStream(bOut);

        Enumeration e = qualifiers.getObjects();

        while (e.hasMoreElements())
        {
            try
            {
                aOut.writeObject((ASN1Encodable)e.nextElement());

                pq.add(new PolicyQualifierInfo(bOut.toByteArray()));
            }
            catch (IOException ex)
            {
                throw new ExtCertPathValidatorException("Policy qualifier info cannot be decoded.", ex);
            }

            bOut.reset();
        }

        return pq;
    }

    protected static PKIXPolicyNode removePolicyNode(
        PKIXPolicyNode validPolicyTree,
        List[] policyNodes,
        PKIXPolicyNode _node)
    {
        PKIXPolicyNode _parent = (PKIXPolicyNode)_node.getParent();

        if (validPolicyTree == null)
        {
            return null;
        }

        if (_parent == null)
        {
            for (int j = 0; j < policyNodes.length; j++)
            {
                policyNodes[j] = new ArrayList();
            }

            return null;
        }
        else
        {
            _parent.removeChild(_node);
            removePolicyNodeRecurse(policyNodes, _node);

            return validPolicyTree;
        }
    }

    private static void removePolicyNodeRecurse(
        List[] policyNodes,
        PKIXPolicyNode _node)
    {
        policyNodes[_node.getDepth()].remove(_node);

        if (_node.hasChildren())
        {
            Iterator _iter = _node.getChildren();
            while (_iter.hasNext())
            {
                PKIXPolicyNode _child = (PKIXPolicyNode)_iter.next();
                removePolicyNodeRecurse(policyNodes, _child);
            }
        }
    }

    protected static boolean processCertD1i(
        int index,
        List[] policyNodes,
        ASN1ObjectIdentifier pOid,
        Set pq)
    {
        List policyNodeVec = policyNodes[index - 1];

        for (int j = 0; j < policyNodeVec.size(); j++)
        {
            PKIXPolicyNode node = (PKIXPolicyNode)policyNodeVec.get(j);
            Set expectedPolicies = node.getExpectedPolicies();

            if (expectedPolicies.contains(pOid.getId()))
            {
                Set childExpectedPolicies = new HashSet();
                childExpectedPolicies.add(pOid.getId());

                PKIXPolicyNode child = new PKIXPolicyNode(new ArrayList(),
                    index,
                    childExpectedPolicies,
                    node,
                    pq,
                    pOid.getId(),
                    false);
                node.addChild(child);
                policyNodes[index].add(child);

                return true;
            }
        }

        return false;
    }

    protected static void processCertD1ii(
        int index,
        List[] policyNodes,
        ASN1ObjectIdentifier _poid,
        Set _pq)
    {
        List policyNodeVec = policyNodes[index - 1];

        for (int j = 0; j < policyNodeVec.size(); j++)
        {
            PKIXPolicyNode _node = (PKIXPolicyNode)policyNodeVec.get(j);

            if (ANY_POLICY.equals(_node.getValidPolicy()))
            {
                Set _childExpectedPolicies = new HashSet();
                _childExpectedPolicies.add(_poid.getId());

                PKIXPolicyNode _child = new PKIXPolicyNode(new ArrayList(),
                    index,
                    _childExpectedPolicies,
                    _node,
                    _pq,
                    _poid.getId(),
                    false);
                _node.addChild(_child);
                policyNodes[index].add(_child);
                return;
            }
        }
    }

    protected static void prepareNextCertB1(
        int i,
        List[] policyNodes,
        String id_p,
        Map m_idp,
        X509Certificate cert
    )
        throws AnnotatedException, CertPathValidatorException
    {
        boolean idp_found = false;
        Iterator nodes_i = policyNodes[i].iterator();
        while (nodes_i.hasNext())
        {
            PKIXPolicyNode node = (PKIXPolicyNode)nodes_i.next();
            if (node.getValidPolicy().equals(id_p))
            {
                idp_found = true;
                node.expectedPolicies = (Set)m_idp.get(id_p);
                break;
            }
        }

        if (!idp_found)
        {
            nodes_i = policyNodes[i].iterator();
            while (nodes_i.hasNext())
            {
                PKIXPolicyNode node = (PKIXPolicyNode)nodes_i.next();
                if (ANY_POLICY.equals(node.getValidPolicy()))
                {
                    Set pq = null;
                    ASN1Sequence policies = null;
                    try
                    {
                        policies = DERSequence.getInstance(getExtensionValue(cert, CERTIFICATE_POLICIES));
                    }
                    catch (Exception e)
                    {
                        throw new AnnotatedException("Certificate policies cannot be decoded.", e);
                    }
                    Enumeration e = policies.getObjects();
                    while (e.hasMoreElements())
                    {
                        PolicyInformation pinfo = null;

                        try
                        {
                            pinfo = PolicyInformation.getInstance(e.nextElement());
                        }
                        catch (Exception ex)
                        {
                            throw new AnnotatedException("Policy information cannot be decoded.", ex);
                        }
                        if (ANY_POLICY.equals(pinfo.getPolicyIdentifier().getId()))
                        {
                            try
                            {
                                pq = getQualifierSet(pinfo.getPolicyQualifiers());
                            }
                            catch (CertPathValidatorException ex)
                            {
                                throw new ExtCertPathValidatorException(
                                    "Policy qualifier info set could not be built.", ex);
                            }
                            break;
                        }
                    }
                    boolean ci = false;
                    if (cert.getCriticalExtensionOIDs() != null)
                    {
                        ci = cert.getCriticalExtensionOIDs().contains(CERTIFICATE_POLICIES);
                    }

                    PKIXPolicyNode p_node = (PKIXPolicyNode)node.getParent();
                    if (ANY_POLICY.equals(p_node.getValidPolicy()))
                    {
                        PKIXPolicyNode c_node = new PKIXPolicyNode(
                            new ArrayList(), i,
                            (Set)m_idp.get(id_p),
                            p_node, pq, id_p, ci);
                        p_node.addChild(c_node);
                        policyNodes[i].add(c_node);
                    }
                    break;
                }
            }
        }
    }

    protected static PKIXPolicyNode prepareNextCertB2(
        int i,
        List[] policyNodes,
        String id_p,
        PKIXPolicyNode validPolicyTree)
    {
        Iterator nodes_i = policyNodes[i].iterator();
        while (nodes_i.hasNext())
        {
            PKIXPolicyNode node = (PKIXPolicyNode)nodes_i.next();
            if (node.getValidPolicy().equals(id_p))
            {
                PKIXPolicyNode p_node = (PKIXPolicyNode)node.getParent();
                p_node.removeChild(node);
                nodes_i.remove();
                for (int k = (i - 1); k >= 0; k--)
                {
                    List nodes = policyNodes[k];
                    for (int l = 0; l < nodes.size(); l++)
                    {
                        PKIXPolicyNode node2 = (PKIXPolicyNode)nodes.get(l);
                        if (!node2.hasChildren())
                        {
                            validPolicyTree = removePolicyNode(validPolicyTree, policyNodes, node2);
                            if (validPolicyTree == null)
                            {
                                break;
                            }
                        }
                    }
                }
            }
        }
        return validPolicyTree;
    }

    protected static boolean isAnyPolicy(
        Set policySet)
    {
        return policySet == null || policySet.contains(ANY_POLICY) || policySet.isEmpty();
    }

    /**
     * Return a Collection of all certificates or attribute certificates found
     * in the X509Store's that are matching the certSelect criteriums.
     *
     * @param certSelect a {@link Selector} object that will be used to select
     *                   the certificates
     * @param certStores a List containing only {@link Store} objects. These
     *                   are used to search for certificates.
     * @return a Collection of all found {@link X509Certificate}
     *         May be empty but never null.
     */
    protected static Collection findCertificates(PKIXCertStoreSelector certSelect,
                                                 List certStores)
        throws AnnotatedException
    {
        Set certs = new HashSet();
        Iterator iter = certStores.iterator();

        while (iter.hasNext())
        {
            Object obj = iter.next();

            if (obj instanceof Store)
            {
                Store certStore = (Store)obj;
                try
                {
                    certs.addAll(certStore.getMatches(certSelect));
                }
                catch (StoreException e)
                {
                    throw new AnnotatedException(
                            "Problem while picking certificates from X.509 store.", e);
                }
            }
            else
            {
                CertStore certStore = (CertStore)obj;

                try
                {
                    certs.addAll(PKIXCertStoreSelector.getCertificates(certSelect, certStore));
                }
                catch (CertStoreException e)
                {
                    throw new AnnotatedException(
                        "Problem while picking certificates from certificate store.",
                        e);
                }
            }
        }
        return certs;
    }

    static List getAdditionalStoresFromCRLDistributionPoint(CRLDistPoint crldp, Map namedCRLStoreMap)
        throws AnnotatedException
    {
        if (crldp != null)
        {
            DistributionPoint dps[] = null;
            try
            {
                dps = crldp.getDistributionPoints();
            }
            catch (Exception e)
            {
                throw new AnnotatedException(
                    "Distribution points could not be read.", e);
            }
            List stores = new ArrayList();

            for (int i = 0; i < dps.length; i++)
            {
                DistributionPointName dpn = dps[i].getDistributionPoint();
                // look for URIs in fullName
                if (dpn != null)
                {
                    if (dpn.getType() == DistributionPointName.FULL_NAME)
                    {
                        GeneralName[] genNames = GeneralNames.getInstance(
                            dpn.getName()).getNames();

                        for (int j = 0; j < genNames.length; j++)
                        {
                            PKIXCRLStore store = (PKIXCRLStore)namedCRLStoreMap.get(genNames[i]);
                            if (store != null)
                            {
                                stores.add(store);
                            }
                        }
                    }
                }
            }

            return stores;
        }
        else
        {
            return Collections.EMPTY_LIST;
        }
    }

    /**
     * Add the CRL issuers from the cRLIssuer field of the distribution point or
     * from the certificate if not given to the issuer criterion of the
     * selector.
     *

     * The issuerPrincipals are a collection with a single
     * X500Name for X509Certificates.
     *

     * @param dp               The distribution point.
     * @param issuerPrincipals The issuers of the certificate or attribute
     *                         certificate which contains the distribution point.
     * @param selector         The CRL selector.
     * @throws AnnotatedException if an exception occurs while processing.
     * @throws ClassCastException if issuerPrincipals does not
     * contain only X500Names.
     */
    protected static void getCRLIssuersFromDistributionPoint(
        DistributionPoint dp,
        Collection issuerPrincipals,
        X509CRLSelector selector)
        throws AnnotatedException
    {
        List issuers = new ArrayList();
        // indirect CRL
        if (dp.getCRLIssuer() != null)
        {
            GeneralName genNames[] = dp.getCRLIssuer().getNames();
            // look for a DN
            for (int j = 0; j < genNames.length; j++)
            {
                if (genNames[j].getTagNo() == GeneralName.directoryName)
                {
                    try
                    {
                        issuers.add(X500Name.getInstance(genNames[j].getName()
                            .toASN1Primitive().getEncoded()));
                    }
                    catch (IOException e)
                    {
                        throw new AnnotatedException(
                            "CRL issuer information from distribution point cannot be decoded.",
                            e);
                    }
                }
            }
        }
        else
        {
            /*
             * certificate issuer is CRL issuer, distributionPoint field MUST be
             * present.
             */
            if (dp.getDistributionPoint() == null)
            {
                throw new AnnotatedException(
                    "CRL issuer is omitted from distribution point but no distributionPoint field present.");
            }
            // add and check issuer principals
            for (Iterator it = issuerPrincipals.iterator(); it.hasNext(); )
            {
                issuers.add(it.next());
            }
        }
        // TODO: is not found although this should correctly add the rel name. selector of Sun is buggy here or PKI test case is invalid
        // distributionPoint
//        if (dp.getDistributionPoint() != null)
//        {
//            // look for nameRelativeToCRLIssuer
//            if (dp.getDistributionPoint().getType() == DistributionPointName.NAME_RELATIVE_TO_CRL_ISSUER)
//            {
//                // append fragment to issuer, only one
//                // issuer can be there, if this is given
//                if (issuers.size() != 1)
//                {
//                    throw new AnnotatedException(
//                        "nameRelativeToCRLIssuer field is given but more than one CRL issuer is given.");
//                }
//                ASN1Encodable relName = dp.getDistributionPoint().getName();
//                Iterator it = issuers.iterator();
//                List issuersTemp = new ArrayList(issuers.size());
//                while (it.hasNext())
//                {
//                    Enumeration e = null;
//                    try
//                    {
//                        e = ASN1Sequence.getInstance(
//                            new ASN1InputStream(((X500Principal) it.next())
//                                .getEncoded()).readObject()).getObjects();
//                    }
//                    catch (IOException ex)
//                    {
//                        throw new AnnotatedException(
//                            "Cannot decode CRL issuer information.", ex);
//                    }
//                    ASN1EncodableVector v = new ASN1EncodableVector();
//                    while (e.hasMoreElements())
//                    {
//                        v.add((ASN1Encodable) e.nextElement());
//                    }
//                    v.add(relName);
//                    issuersTemp.add(new X500Principal(new DERSequence(v)
//                        .getDEREncoded()));
//                }
//                issuers.clear();
//                issuers.addAll(issuersTemp);
//            }
//        }
        Iterator it = issuers.iterator();
        while (it.hasNext())
        {
            try
            {
                selector.addIssuerName(((X500Name)it.next()).getEncoded());
            }
            catch (IOException ex)
            {
                throw new AnnotatedException(
                    "Cannot decode CRL issuer information.", ex);
            }
        }
    }

    private static BigInteger getSerialNumber(
        Object cert)
    {
        return ((X509Certificate)cert).getSerialNumber();
    }

    protected static void getCertStatus(
        Date validDate,
        X509CRL crl,
        Object cert,
        CertStatus certStatus)
        throws AnnotatedException
    {
        X509CRLEntry crl_entry = null;

        boolean isIndirect;
        try
        {
            isIndirect = X509CRLObject.isIndirectCRL(crl);
        }
        catch (CRLException exception)
        {
            throw new AnnotatedException("Failed check for indirect CRL.", exception);
        }

        if (isIndirect)
        {
            if (!(crl instanceof X509CRLObject))
            {
                try
                {
                    crl = new X509CRLObject(CertificateList.getInstance(crl.getEncoded()));
                }
                catch (CRLException exception)
                {
                    throw new AnnotatedException("Failed to recode indirect CRL.", exception);
                }
            }

            crl_entry = crl.getRevokedCertificate(getSerialNumber(cert));

            if (crl_entry == null)
            {
                return;
            }

            X500Name certIssuer = X500Name.getInstance(((X509CRLEntryObject)crl_entry).getCertificateIssuer().getEncoded());

            if (certIssuer == null)
            {
                certIssuer = PrincipalUtils.getIssuerPrincipal(crl);
            }

            if (! PrincipalUtils.getEncodedIssuerPrincipal(cert).equals(certIssuer))
            {
                return;
            }
        }
        else if (! PrincipalUtils.getEncodedIssuerPrincipal(cert).equals(PrincipalUtils.getIssuerPrincipal(crl)))
        {
            return;  // not for our issuer, ignore
        }
        else
        {
            crl_entry = crl.getRevokedCertificate(getSerialNumber(cert));

            if (crl_entry == null)
            {
                return;
            }
        }

        ASN1Enumerated reasonCode = null;
        if (crl_entry.hasExtensions())
        {
            try
            {
                reasonCode = ASN1Enumerated
                    .getInstance(CertPathValidatorUtilities
                        .getExtensionValue(crl_entry,
                            Extension.reasonCode.getId()));
            }
            catch (Exception e)
            {
                throw new AnnotatedException(
                    "Reason code CRL entry extension could not be decoded.",
                    e);
            }
        }

        // for reason keyCompromise, caCompromise, aACompromise or
        // unspecified
        if (!(validDate.getTime() < crl_entry.getRevocationDate().getTime())
            || reasonCode == null
            || reasonCode.getValue().intValue() == 0
            || reasonCode.getValue().intValue() == 1
            || reasonCode.getValue().intValue() == 2
            || reasonCode.getValue().intValue() == 8)
        {

            // (i) or (j) (1)
            if (reasonCode != null)
            {
                certStatus.setCertStatus(reasonCode.getValue().intValue());
            }
            // (i) or (j) (2)
            else
            {
                certStatus.setCertStatus(CRLReason.unspecified);
            }
            certStatus.setRevocationDate(crl_entry.getRevocationDate());
        }
    }

    /**
     * Fetches delta CRLs according to RFC 3280 section 5.2.4.
     *
     * @param validityDate The date for which the delta CRLs must be valid.
     * @param completeCRL The complete CRL the delta CRL is for.
     * @return A Set of X509CRLs with delta CRLs.
     * @throws AnnotatedException if an exception occurs while picking the delta
     * CRLs.
     */
    protected static Set getDeltaCRLs(Date validityDate,
                                      X509CRL completeCRL, List<CertStore> certStores, List<PKIXCRLStore> pkixCrlStores)
        throws AnnotatedException
    {
        X509CRLSelector baseDeltaSelect = new X509CRLSelector();
        // 5.2.4 (a)
        try
        {
            baseDeltaSelect.addIssuerName(PrincipalUtils.getIssuerPrincipal(completeCRL).getEncoded());
        }
        catch (IOException e)
        {
            throw new AnnotatedException("Cannot extract issuer from CRL.", e);
        }

        BigInteger completeCRLNumber = null;
        try
        {
            ASN1Primitive derObject = CertPathValidatorUtilities.getExtensionValue(completeCRL,
                CRL_NUMBER);
            if (derObject != null)
            {
                completeCRLNumber = ASN1Integer.getInstance(derObject).getPositiveValue();
            }
        }
        catch (Exception e)
        {
            throw new AnnotatedException(
                "CRL number extension could not be extracted from CRL.", e);
        }

        // 5.2.4 (b)
        byte[] idp = null;
        try
        {
            idp = completeCRL.getExtensionValue(ISSUING_DISTRIBUTION_POINT);
        }
        catch (Exception e)
        {
            throw new AnnotatedException(
                "Issuing distribution point extension value could not be read.",
                e);
        }

        // 5.2.4 (d)

        baseDeltaSelect.setMinCRLNumber(completeCRLNumber == null ? null : completeCRLNumber
            .add(BigInteger.valueOf(1)));

        PKIXCRLStoreSelector.Builder selBuilder = new PKIXCRLStoreSelector.Builder(baseDeltaSelect);

        selBuilder.setIssuingDistributionPoint(idp);
        selBuilder.setIssuingDistributionPointEnabled(true);

        // 5.2.4 (c)
        selBuilder.setMaxBaseCRLNumber(completeCRLNumber);

        PKIXCRLStoreSelector deltaSelect = selBuilder.build();

        // find delta CRLs
        Set temp = CRL_UTIL.findCRLs(deltaSelect, validityDate, certStores, pkixCrlStores);

        Set result = new HashSet();

        for (Iterator it = temp.iterator(); it.hasNext(); )
        {
            X509CRL crl = (X509CRL)it.next();

            if (isDeltaCRL(crl))
            {
                result.add(crl);
            }
        }

        return result;
    }

    private static boolean isDeltaCRL(X509CRL crl)
    {
        Set critical = crl.getCriticalExtensionOIDs();

        if (critical == null)
        {
            return false;
        }

        return critical.contains(DELTA_CRL_INDICATOR);
    }

    /**
     * Fetches complete CRLs according to RFC 3280.
     *
     * @param dp          The distribution point for which the complete CRL
     * @param cert        The X509Certificate for
     *                    which the CRL should be searched.
     * @param currentDate The date for which the delta CRLs must be valid.
     * @param paramsPKIX  The extended PKIX parameters.
     * @return A Set of X509CRLs with complete
     *         CRLs.
     * @throws AnnotatedException if an exception occurs while picking the CRLs
     * or no CRLs are found.
     */
    protected static Set getCompleteCRLs(DistributionPoint dp, Object cert,
                                         Date currentDate, PKIXExtendedParameters paramsPKIX)
        throws AnnotatedException
    {
        X509CRLSelector baseCrlSelect = new X509CRLSelector();

        try
        {
            Set issuers = new HashSet();

            issuers.add(PrincipalUtils.getEncodedIssuerPrincipal(cert));

            CertPathValidatorUtilities.getCRLIssuersFromDistributionPoint(dp, issuers, baseCrlSelect);
        }
        catch (AnnotatedException e)
        {
            throw new AnnotatedException(
                "Could not get issuer information from distribution point.", e);
        }

        if (cert instanceof X509Certificate)
        {
            baseCrlSelect.setCertificateChecking((X509Certificate)cert);
        }

        PKIXCRLStoreSelector crlSelect = new PKIXCRLStoreSelector.Builder(baseCrlSelect).setCompleteCRLEnabled(true).build();

        Date validityDate = currentDate;

        if (paramsPKIX.getDate() != null)
        {
            validityDate = paramsPKIX.getDate();
        }

        Set crls = CRL_UTIL.findCRLs(crlSelect, validityDate, paramsPKIX.getCertStores(), paramsPKIX.getCRLStores());

        checkCRLsNotEmpty(crls, cert);

        return crls;
    }

    protected static Date getValidCertDateFromValidityModel(
        PKIXExtendedParameters paramsPKIX, CertPath certPath, int index)
        throws AnnotatedException
    {
        if (paramsPKIX.getValidityModel() == PKIXExtendedParameters.CHAIN_VALIDITY_MODEL)
        {
            // if end cert use given signing/encryption/... time
            if (index <= 0)
            {
                return CertPathValidatorUtilities.getValidDate(paramsPKIX);
                // else use time when previous cert was created
            }
            else
            {
                if (index - 1 == 0)
                {
                    ASN1GeneralizedTime dateOfCertgen = null;
                    try
                    {
                        byte[] extBytes = ((X509Certificate)certPath.getCertificates().get(index - 1)).getExtensionValue(ISISMTTObjectIdentifiers.id_isismtt_at_dateOfCertGen.getId());
                        if (extBytes != null)
                        {
                            dateOfCertgen = ASN1GeneralizedTime.getInstance(ASN1Primitive.fromByteArray(extBytes));
                        }
                    }
                    catch (IOException e)
                    {
                        throw new AnnotatedException(
                            "Date of cert gen extension could not be read.");
                    }
                    catch (IllegalArgumentException e)
                    {
                        throw new AnnotatedException(
                            "Date of cert gen extension could not be read.");
                    }
                    if (dateOfCertgen != null)
                    {
                        try
                        {
                            return dateOfCertgen.getDate();
                        }
                        catch (ParseException e)
                        {
                            throw new AnnotatedException(
                                "Date from date of cert gen extension could not be parsed.",
                                e);
                        }
                    }
                    return ((X509Certificate)certPath.getCertificates().get(
                        index - 1)).getNotBefore();
                }
                else
                {
                    return ((X509Certificate)certPath.getCertificates().get(
                        index - 1)).getNotBefore();
                }
            }
        }
        else
        {
            return getValidDate(paramsPKIX);
        }
    }

    /**
     * Return the next working key inheriting DSA parameters if necessary.
     *

     * This methods inherits DSA parameters from the indexed certificate or
     * previous certificates in the certificate chain to the returned
     * PublicKey. The list is searched upwards, meaning the end
     * certificate is at position 0 and previous certificates are following.
     *

     *

     * If the indexed certificate does not contain a DSA key this method simply
     * returns the public key. If the DSA key already contains DSA parameters
     * the key is also only returned.
     *

     *
     * @param certs The certification path.
     * @param index The index of the certificate which contains the public key
     *              which should be extended with DSA parameters.
     * @return The public key of the certificate in list position
     *         index extended with DSA parameters if applicable.
     * @throws AnnotatedException if DSA parameters cannot be inherited.
     */
    protected static PublicKey getNextWorkingKey(List certs, int index, JcaJceHelper helper)
        throws CertPathValidatorException
    {
        Certificate cert = (Certificate)certs.get(index);
        PublicKey pubKey = cert.getPublicKey();
        if (!(pubKey instanceof DSAPublicKey))
        {
            return pubKey;
        }
        DSAPublicKey dsaPubKey = (DSAPublicKey)pubKey;
        if (dsaPubKey.getParams() != null)
        {
            return dsaPubKey;
        }
        for (int i = index + 1; i < certs.size(); i++)
        {
            X509Certificate parentCert = (X509Certificate)certs.get(i);
            pubKey = parentCert.getPublicKey();
            if (!(pubKey instanceof DSAPublicKey))
            {
                throw new CertPathValidatorException(
                    "DSA parameters cannot be inherited from previous certificate.");
            }
            DSAPublicKey prevDSAPubKey = (DSAPublicKey)pubKey;
            if (prevDSAPubKey.getParams() == null)
            {
                continue;
            }
            DSAParams dsaParams = prevDSAPubKey.getParams();
            DSAPublicKeySpec dsaPubKeySpec = new DSAPublicKeySpec(
                dsaPubKey.getY(), dsaParams.getP(), dsaParams.getQ(), dsaParams.getG());
            try
            {
                KeyFactory keyFactory = helper.createKeyFactory("DSA");
                return keyFactory.generatePublic(dsaPubKeySpec);
            }
            catch (Exception exception)
            {
                throw new RuntimeException(exception.getMessage());
            }
        }
        throw new CertPathValidatorException("DSA parameters cannot be inherited from previous certificate.");
    }

    /**
     * Find the issuer certificates of a given certificate.
     *
     * @param cert       The certificate for which an issuer should be found.
     * @return A Collection object containing the issuer
     *         X509Certificates. Never null.
     * @throws AnnotatedException if an error occurs.
     */
    static Collection findIssuerCerts(
        X509Certificate cert,
        List<CertStore> certStores,
        List<PKIXCertStore> pkixCertStores)
        throws AnnotatedException
    {
        X509CertSelector selector = new X509CertSelector();

        try
        {
            selector.setSubject(PrincipalUtils.getIssuerPrincipal(cert).getEncoded());
        }
        catch (IOException e)
        {
            throw new AnnotatedException(
                           "Subject criteria for certificate selector to find issuer certificate could not be set.", e);
        }

        try
        {
            byte[] akiExtensionValue = cert.getExtensionValue(AUTHORITY_KEY_IDENTIFIER);
            if (akiExtensionValue != null)
            {
                ASN1OctetString aki = ASN1OctetString.getInstance(akiExtensionValue);
                byte[] authorityKeyIdentifier = AuthorityKeyIdentifier.getInstance(aki.getOctets()).getKeyIdentifier();
                if (authorityKeyIdentifier != null)
                {
                    selector.setSubjectKeyIdentifier(new DEROctetString(authorityKeyIdentifier).getEncoded());
                }
            }
        }
        catch (Exception e)
        {
            // authority key identifier could not be retrieved from target cert, just search without it
        }

        PKIXCertStoreSelector certSelect = new PKIXCertStoreSelector.Builder(selector).build();
        Set certs = new HashSet();

        Iterator iter;

        try
        {
            List matches = new ArrayList();

            matches.addAll(CertPathValidatorUtilities.findCertificates(certSelect, certStores));
            matches.addAll(CertPathValidatorUtilities.findCertificates(certSelect, pkixCertStores));

            iter = matches.iterator();
        }
        catch (AnnotatedException e)
        {
            throw new AnnotatedException("Issuer certificate cannot be searched.", e);
        }

        X509Certificate issuer = null;
        while (iter.hasNext())
        {
            issuer = (X509Certificate)iter.next();
            // issuer cannot be verified because possible DSA inheritance
            // parameters are missing
            certs.add(issuer);
        }
        return certs;
    }

    protected static void verifyX509Certificate(X509Certificate cert, PublicKey publicKey,
                                                String sigProvider)
        throws GeneralSecurityException
    {
        if (sigProvider == null)
        {
            cert.verify(publicKey);
        }
        else
        {
            cert.verify(publicKey, sigProvider);
        }
    }

    static void checkCRLsNotEmpty(Set crls, Object cert)
        throws AnnotatedException
    {
        if (crls.isEmpty())
        {
            if (cert instanceof X509AttributeCertificate)
            {
                X509AttributeCertificate aCert = (X509AttributeCertificate)cert;

                throw new AnnotatedException("No CRLs found for issuer \"" + aCert.getIssuer().getPrincipals()[0] + "\"");
            }
            else
            {
                X509Certificate xCert = (X509Certificate)cert;

                throw new AnnotatedException("No CRLs found for issuer \"" + RFC4519Style.INSTANCE.toString(PrincipalUtils.getIssuerPrincipal(xCert)) + "\"");
            }
        }
    }
}

redpajama_set_name: RedPajamaGithub


One of the earliest sail-power hybrids and, according to the sales literature, was designed to accept an outboard motor of up to 40hp. Or the boat could be propelled by by an optional Berkeley jet-pump attached to a Briggs & Stratten lawnmower engine.
An inset on the original sales brochure shows the boat, under power, towing a water skier.


Jagura Micro Grinding Machines rrwaterproofing. Jagura Micro Grinding Machines Resharpened Micro Endmill Cheap Powder Micro Mill Parts Crusher Micro Micro Grinder Rpm 4059 Micro End Mill Grinder Micro Air Die Grinder (Msg Buy Proxxon Micro Mill Micro Mill Mf 70 Metal Grinding Machine Grinding Up To Micro Size.
The pencil style micro die grinder is designed for high speed porting and finishing of small parts. The die grinder with one Milton style 1/4 female plug and two collect wrench.
Metal Stock Custom Tubing. MicroGroup, a part of TE Connectivity, is a leading worldwide distributor of small diameter / thin walled tubing offering quick shipments from over 7,000,000 feet (2,100,000 meters) in stock one of the worlds largest inventories available in alloy 304 and 316 stainless steel tubing, both welded and seamless.
Competitive nc micro grinding machine products from various nc micro grinding machine manufacturers and nc micro grinding machine suppliers are listed above, please select quality and cheap items for you.
Find the best selection of cheap micro grinder in bulk here at Dhgate. Including sharpstone crank grinder and aluminum grinder black at wholesale prices from micro grinder manufacturers. Source discount and high quality products in hundreds of categories wholesale direct from China.
Micro Grinder Online Online shopping for micro grinder? DHgate is a wholesale marketplace offering a large selection of speed grinder with superior quality and exquisite craft.
1 16 of 860 results for quot;micro grindingquot; Mini Electric Drill Sculpture Grinder Tools Set, DIY Wood Jade Stone Small Crafts Cutting Drilling Grinding Engraving Micro Precision Electrical Hand Drill Pen Kit (17PCS/Set) by Qleng. $23.99 $ 23 99 Prime. FREE Shipping on eligible orders.
Alibaba offers 22,590 micro grinding machinery products. About 16% of these are mine mill, 4% are grinding equipment, and 1% are other food processing machinery. A wide variety of micro grinding machinery options are available to you, such as surface grinding machine, cylindrical grinding machine, and internal grinding machine.
One of the oldest, cheap, and efficient methods to achieve a spent in creating microstresses, which eventually slow powder grinding. . or plates with fluid (micro)channels that have been etched into both sides. Check price. Particle Grinding Milling Services Woodbury, Minnesota.
The 2quot; Diamond Grinding Wheel outperform standard grinding wheels in all ways; maintain diameter, last longer and cut faster with low odor and debris (8108) 8 Inch Diamond File Set The 8108 Diamond File Set includes the best contoured files available on the market today.
super thin grinding mill in pdf Stone Mining Machines. CGM china super thin mill pdf; Raymond Mill. . Hot Sale Super Thin Grinding Mill CHINA stone crusher pe 400 specs; hot sale super thin . micro grinding mill 800 It is very noisy and the plastic bin and top housing is a little thin and cheap.


A copy of the Festival Syllabus should be sent to the adjudicator as soon as possible after contractual arrangements have been made.
A copy of the Festival Program should be sent to the adjudicator well in advance of the festival, even if only a rough copy is available to send. Festivals are strongly urged to print the title and the composer of each repertoire item.
Festivals are strongly urged to allow adequate time for tuning, set-up, performance and adjudication. Performance timings should be requested at the time of application.
Members of the committee should completely familiarize themselves with the rules of the festival before the festival commences.
The festival is responsible for assessing the appropriateness of entries in particular classes in accordance with the description of the classes.
The festival should train its adjudicators' secretaries/assistants in the required procedures before the festival begins.
Festivals should establish their own rules regarding memory work: these rules must be clearly stated. In any case, memory work may be a deciding factor when performances are otherwise equal.
The Canadian Music Festival Adjudicators' Association strongly urges that the use of video cameras, still cameras and tape recorders not be allowed in festival sessions. In any case, the adjudicator's verbal adjudications may not be taped without permission of the adjudicator.
Laws regarding copyright must be fully observed by the festival.
Every effort should be made to streamline the process of awarding scholarships and other honours and prizes. Festivals should give adjudicators complete details of the awards for which they are responsible.
Scholarships and other honours and prizes must be awarded as fairly and impartially as possible. It is generally regarded as being the responsibility of the adjudicator to make such decisions: if the festival intends to make such decisions, that must be clearly and publicly stated.
Festivals should advise the adjudicator if his/her recommendations for the final concert are required.
Marking procedures vary from festival to festival. Generally, festival markings are less severe than in examinations, with the usual range of marks running from 70 to 90. Festivals should discuss their particular preferences and procedures with the adjudicator prior to the festival.
Festivals should establish their own preferences concerning tied marks for first place: festivals should inform the adjudicator of such preferences.


Un corso pensato per tutti gli stranieri che vogliono imparare la lingua italiana attraverso una modalità semplice ed intuitiva!
To introduce Italian grammar to foreign language people who have never practiced this language before. At the end of the course, they will be able to build sentences at a basic level, having acquired the necessary grammar skills that will enable them to understand, read, write and translate basic sentences.