text:
Home Southern Oral History Program Interview Database R0852_Audio
R0852_Audio
Interview no. R-0852
Project R.34. Special Research Projects: New Roots
Project description Interviews, 2007-ongoing, focus on issues related to Latin American immigration to North Carolina and the formation of Latino communities. Interviewers are conducted by undergraduate students in courses taught by Hannah Gill at the University of North Carolina at Chapel Hill. Interviewees include immigrants, United States-born second generations, professionals who work with immigrants, policy-makers, religious leaders, educators, students, and local business owners.
Interviewee Townsend, Elaine.
Interviewee occupation Program coordinators
Interviewee ethnicity Hispanic Americans and Latinos
Interviewer Schliewe, Kayla.
Abstract Elaine Townsend talks about the cultural differences that exist between her mother's Peruvian family and father's American family. She discusses her childhood and what it was like to live in an extremely conservative religious community. Townsend was homeschooled for much of her life. Making the transition into the public school system and progressive world has been an interesting experience for her and her family. By discussing her family dynamic, and how religion played such a large role in defining her identity, Townsend expresses conflicting sentiments she held about herself, battling with her identity even through her time as an undergraduate student at the University of North Carolina at Chapel Hill. Through her experiences she has grown into a role model for other students, as well as her five other siblings.
Subject Topical Other Religion
Citation Interview with Elaine Townsend by Kayla Schliewe, 31 March 2015, R-0852, in the Southern Oral History Program Collection #4007, Southern Historical Collection, Wilson Library, University of North Carolina at Chapel Hill.
Interview no. R0852_Audio
R0852_Transcript


text:
2020 Soul Train Awards Red Carpet
Feeling These Get Ups? Tichina Arnold & Tisha Campbell & Slay The 2020 Soul Train Awards [Photos]
Posted on November 30, 2020	 - By @IamDaniCanada
The 2020 Soul Train Awards were on fire last night with finger-snap ensuing performances and celebrations of black excellence.
Source: BET Networks / Soul Train
Hosted by the iconic best friend duo Tisha Campbell and Tichina Arnold, the two H.B.I.C.s kicked off the show with an electrifying song and dance tribute to black women.
They then wowed the crowd with their lewks that varied from tribal prints to vegan leather and velvet.
Other soulful style standouts included a blonde braided Brandy…
a pompadour and green gown rocking Brandee Evans a.k.a. Mercedes from "P-Valley"…
Uncle Clifford himself Nicco Annan who looked dapper in white…
and a chic and SNATCHED Chanté Moore. Chanté also participated in the evening's Soul Cypher alongside PJ Morton, Shanice, and Stokely.
Andra Day who's preparing to star in Lee Daniel's "The United States vs. Billie Holiday" film flaunted a fro and a pink two-piece.
She also introduced soul singer Moses Sumney noting that she too once had the opportunity to grace the Soul Train stage as a new artist.
Winners included Chris Brown led the pack as the evening's most awarded artist, dominating in four categories including Best R&B/Soul Male Artist and the shared honors of Song of the Year, Best Dance Performance and Best Collaboration with Young Thug for their hit "Go Crazy." and H.E.R. followed closely with two awards: Best R&B/Soul Female Artist and The Ashford & Simpson Songwriter's Award for "I Can't Breathe."
Monica was also honored with the Lady Of Soul Award and graciously accepted in a stunning black bodysuit.
Did YOU watch the 2020 Soul Train Awards?
Whose look was your favorite?!
Source: Leon Bennett/STA 2020/Getty Images for BET / Getty
Categories: Are You Feelin This Get Up?, News, red carpet
It's About Time: Zendaya, Lakeith Stanfield & Brian Tyree Henry Among The Academy Of Motion Picture Arts and Sciences' New Invitees
Feds Watching: Terry Crews Claims 'Brooklyn Nine-Nine' Scrapped Four New Episodes Amid Nationwide Protests

redpajama_set_name: RedPajamaCommonCrawl


text:
City Report – Pittsburgh
Posted on February 17, 2014 by Urban Jeff in City Report, Featured Content, Social with 2 Comments
The following is a new reader-submitted feature we are piloting. We crafted the first one as a model for future contributions, so share yours! Click here to submit your own.
City: Pittsburgh
Nickname: The Steel City, the Iron City, or the City of Three Rivers.
Claim to Fame: Pittsburgh is home to the six-time Superbowl champion Pittsburgh Steelers. It's a drinking town with a sports problem, or vice versa.
History in 100 Words (or less): Pittsburgh began as a fort during the Seven Years' War between the French and British. The British won, and Fort Pitt became a city, which in turn became famous for the production of iron, then steel, then the development of aluminum. Pittsburgh played a significant role in the development of nuclear power, and today stands as one of the world's foremost medical and technological centers. It's also a big time food city, owing to an early influx of eastern European immigrants, followed by the more recent proliferation of Asian cuisine.
Random Fact: Mr. Rogers is from Pittsburgh. His neighborhood is a fictitious amalgamation of Pittsburgh neighborhoods, but the show featured a who's who of Pittsburgh citizens, including regular appearances by storied jazz musician Joe Negri as Handyman Negri.
City's Terrain: Pittsburgh is hilly with narrow streets and lots of bridges. As part of the Rust Belt, road maintenance takes a backseat to other public interests, but bike lanes continue to pop up as the economy continues to rely more on the education, technology and medical fields. As a relatively small city, Pittsburgh is very "bikeable" as long as you're either young, strong, or you stick to the bike lanes and the bike paths which are flat and run along the rivers.
Weather Forecast: Pittsburgh sees the best and worst of all four seasons, but the climate is generally pretty mild. Expect snow and ice in the winter, and hot, humid summers, but it's seldom as extreme as the conditions in cities like Minneapolis or Tucson.
Top Shop(s): Hands down, the most famous shop in Pittsburgh is Kraynick's. The top two shops for urban cyclists are Thick Bikes and Iron City Bikes. But Pittsburgh has more than a dozen individual shops, several of which have numerous locations, such as Trek of Pittsburgh.
Best Watering Hole(s): In this writer's opinion, Kelly's Bar & Lounge is the finest dive bar in Pittsburgh, but we would be remiss to overlook Over The Bar Bicycle Café, which now has two locations. D's Six Pax & Dogz, a hotdog shop located right next to the mountain bike trails of Frick Park, is a beer lover's dream. Also, the Church Brew Works is a stunning repurposing of an old church that now serves craft beer that's brewed on site.
Authentic Local Food: It's hard to talk about Pittsburgh without mentioning Primanti Bros., home to the greasiest, messiest, most delicious sandwich in America. You don't get fries with it, you get fries on it. As well as cole slaw and cheese. French fries and provolone cheese are common toppings for salads in Pittsburgh, and if you order a fried fish sandwich, be prepared for the filet to extend way beyond the bun.
Best Coffee Shop(s): Pittsburgh has numerous high-quality coffee shops, but the most notable is Tazza d'Oro, who sponsors weekly group rides dubbed Team Caffeine and Team Decaf. There are also several local coffee roasters, including Prestogeorge in the Strip District.
Must See: The Pittsburgh skyline is beautiful, and the city plays host to a number of cultural attractions including the Andy Warhol Museum and it's many professional sports complexes. There's also a bicycle museum just a stone's throw from the casino.
Must Ride: If you only have an hour or two, you'll want to take advantage of Pittsburgh's most famous bike path, locally known as The Jail Trail. It runs from downtown to Oakland, where you'll climb out of Panther Hollow up to the University of Pittsburgh. Stop and eat some fries at The Dirty O, then head into the East End, or back down and across the river to the Southside for drinks.
Best Time to Visit: The spring and fall are beautiful, but nobody loves fireworks like the residents of Pittsburgh, so come on July 4th and party outside with the locals.
Need For Speed: Pittsburgh has a rich history of bike racing, including the infamous Dirty Dozen hillclimb race. There are regular crits during the summer, and more mountain bike races than you can shake a stick at, as well as cross races and alleycats. Pittsburgh also has a storied BMX history.
Two Wheeled Celebrities: Pittsburgh's most notable bike celebrity is known as the Bumper Bike guy. He has several bikes, each with an automobile bumper lashed to the handlebars, making for an unusual but unforgettable sight.
Top Tourist Attraction(s): Sports, sports, sports, sports, sports. The Carnegie Museums are world class, including the aforementioned Andy Warhol Museum. The city hosts numerous gallery crawls, a large annual arts festival, a regatta, and countless theatrical, musical and other cultural events.
Advocacy: Pittsburgh's advocacy organization, BikePGH has been named the national advocacy organization of the year. With strong support and equally strong leadership, the local non-profit has made big changes in a city that's deeply rooted in car culture. To date there are nearly 60 miles of bike lanes, and they're still gaining momentum.
Locals Only: The city has three rivers, and their shores are an excellent place to congregate on warm summer nights. Locals can show you secret party spots, rope swings and more.
Click here to contribute a City Report from your own city!
About Urban Jeff
I'm about to have a nervous breakdown, my head really hurts. Contact me.
View all posts by Urban Jeff →
sarahelizabethFebruary 17, 2014 at 10:44 am
I will be in Pittsburgh next month with bike, I want drinks at all these old spots I miss tons!
ascpghMay 2, 2014 at 8:46 am
The missing specification is the cycling vibe. It's a friendly and inclusive collection of riders with the common denominator of this terrain within the compact boundaries of the city.
Can't overlook the Great Allegheny Passage ties in to Pittsburgh's river trail systems and connects to the C&O Canal toe path at Cumberland, MD to head east into Washington DC.
Favorite ride is any that starts with a coffee @ Tazza d'Oro and ends with a Belgian and poutine @ Park Bruges.


Sarasota Bay Watch thanks our Manatee-Sarasota community for a tremendous outpouring of support and participation this year. 2017 was very busy and productive, with a broad range of activities to help restore and protect our precious waterways. Our team of volunteer board members and advisor worked tirelessly and passionately to host events, activities, community outreach, education and youth leadership development.
5. SBW volunteers helped the Bay Estuary Program bag oyster shells to create new habitat, and to install it in the bay.
SBW also performed a number of important habitat restoration and creation projects like the restoration of Skiers Island and some significant community outreach projects like our Annual Sarasota Bay Great Scallop Search and the Earth Day Exhibit at Oscar Scherer State Park.


The hacktivist cyberattacked an Ecuadorean stock exchange on Monday. Wait till you hear his plan to flush the WikiLeaks founder out of the country's embassy.
Update: On Friday, Venezuelan president Nicolás Maduro offered Edward Snowden asylum on the basis that "He has told the truth, in the spirit of rebellion, about the US spying on the whole world." That night, the Jester took down the official presidential website of Maduro for over 24 hours, resuming service after Venezuela said it had not any communication with Snowden. Late Sunday, after Bolivia also offered Snowden asylum, he launched a denial-of-service attack against the official site of Álvaro García Linera, the Bolivian vice president.
On Monday, the Jester launched denial-of-service attacks against Ecuador, which is considering an asylum request from Snowden. He targeted the primary email server for the second biggest Ecuadorean stock exchange and the country's official tourism website. Gabrielle Murillo, a spokeswoman for Ecuador's tourism site, could not confirm the attack and said only that "the internet was working," but the Electronic Frontier Foundation's Dave Maass, who follows the Jester, told Mother Jones that he was unable to access the tourism website after the infiltration occurred. Officials at the stock exchange did not respond to questions sent by Mother Jones.
In a subsequent series of tweets, the Jester alluded to hacking into the embassy's fire alarm system to force Assange out of the building. If Assange were to leave the embassy compound, he would face extradition to Sweden—where he's under investigation for sexual assault—or potentially to the United States, where Assange fears he could be prosecuted in connection with the publication of classified information allegedly leaked by Bradley Manning.
Yesterday the Jester tweeted photos of what he believed to be fire alarms on the exterior of the Ecuadorean Embassy, asking locals to crowd-source the name and logo of the alarms. The Jester also tweeted the following map, isolating what he says are the wifi networks that Assange may be using within the embassy.
In addition to targeting Assange and Ecuador, the Jester circulated a list of 52 servers used by the Venezuelan government, which Snowden has reportedly also petitioned for asylum. The hacker told FoxNews.com on Tuesday that he would treat countries that consider housing Snowden as "enemies" (Snowden is requesting asylum in at least 21 countries). The Jester did not respond to an interview request from Mother Jones.


text:
Year jokes
99 jokes about years
How many evolutionists does it take to change a light bulb?
Only one, but it takes millions of years.
7 light bulb jokes
Wife was cleaning 12 year old son's bedroom, when she finds a serious load of bondage gear and fetish mags. She asks her husband, "what do we do?"
Husband says, "I'm no expert, but I wouldn't fucking spank him." ~ D-TRAIN
2 Short jokes
It is near the end of the school year. The teacher has turned in the grades and there is really nothing more to do. All the children are restless because of this.
Teacher: "Whoever answers the questions I ask, first and correctly can leave early today."
Little Johnny says to himself "Good, I want to get outta here. I'm smart and will answer the question."
Teacher: "Who said 'Four Score and Seven Years Ago'?"
Before Johnny can open his mouth, Susie says, "Abraham Lincoln."
Teacher: "That's right Susie, you can go home."
Johnny is mad that Susie answered the question first.
Teacher: "Who said 'I Have a Dream'?"
Before Johnny can open his mouth, Mary says, "Martin Luther King."
Teacher: "That's right Mary, you can go."
Johnny is even madder than before.
Teacher: "Who said 'Ask not, what your country can do for you'?"
Before Johnny can open his mouth, Nancy says, "John F. Kennedy."
Teacher: "That's right Nancy, you may also leave."
Johnny is boiling mad that he has not been able to answer to any of the questions.
When the teacher turns her back Johnny says, "I wish these bitches would keep their mouths shut!"
The teacher turns around: "NOW WHO SAID THAT?"
Johnny: "BILL CLINTON. CAN I GO NOW?"
59 Little Johnny jokes
Husband and Wife on 10th anniversary. The wife undresses and says: "What did you think when I stripped 10 years ago?"
He says: "I wanted to fuck your brains out and suck your tits dry".
She says: "What are you thinking now?"
"Looks like I did a pretty good job!"
59 sex jokes
A New York Divorce Lawyer died and arrived at the pearly gates. Saint Peter asks him "What have you done to merit entrance into Heaven?"
The Lawyer thought a moment, then said, "A week ago, I gave a quarter to a homeless person on the street."
Saint Peter asked Gabriel to check this out in the record, and after a moment Gabriel affirmed that this was true.
Saint Peter said, "Well, that's fine, but it's not really quite enough to get you into Heaven."
The Lawyer said, "Wait Wait! There's more! Three years ago I also gave a homeless person a quarter."
Saint Peter nodded to Gabriel, who after a moment nodded back, affirming this, too, had been verified.
Saint Peter then whispered to Gabriel, "Well, what do you suggest we do with this fellow?"
Gabriel gave the Lawyer a sidelong glance, then said to Saint Peter, "Let's give him back his 50 cents and tell him to go to Hell."
49 lawyer jokes
vacation jokes
second jokes
yo momma jokes
zero jokes
dog jokes
road jokes
you jokes
year sayings


text:
Oblastní rada Golan ( – "mo'aca ezorit Golan",  Golan Regional Council) je administrativní a samosprávná část izraelského distriktu Sever, která zahrnuje některé izraelské osady na Golanských výšinách, jež Izrael dobyl v roce 1967 během šestidenní války.

Geografie a dějiny

Oblastní rada sdružuje 32 menších izraelských obcí (osad) v tomto regionu. Sídlem úřadů oblastní rady je město Kacrin, které ale pod jurisdikci oblastní rady samo nespadá, protože má status místní rady (tedy menšího města). Pod oblastní radu také nespadá kibuc Snir, který patří do oblastní rady Horní Galilea, a arabské obce na Golanských výšinách (Buk'ata, Ejn Kinije, Mas'ade a Madždal Šams). Většina zdejších izraelských osad vznikla koncem 60. a během 70. let 20. století.

Oblastní rada Golan byla vytvořena roku 1979. Má velké pravomoci zejména v provozování škol, územním plánování a stavebním řízení nebo v ekologických otázkách.

V roce 1981 Izrael anektoval Golany na základě Zákona o Golanských výšinách a považuje je za integrální součást svého území. V rámci případné mírové smlouvy mezi Izraelem a Sýrií ale nevylučuje předání Golanských výšin pod syrskou suverenitu.

Seznam sídel v oblastní radě Golan

Demografie
K 31. prosinci 2014 žilo v oblastní radě Golan  obyvatel. Židé čítali přibližně  osob, včetně statistické kategorie "ostatní", která zahrnuje nearabské osoby židovského původu, ale bez formální příslušnosti k židovskému náboženství. Populace je tak takřka výlučně židovská.

Odkazy

Reference

Související články
 Izraelské osady na Golanských výšinách
 Golanské výšiny

Externí odkazy

  Oficiální stránky oblastní rady Golan

Izraelské osady na Golanských výšinách
Oblastní rady v Severním distriktu

redpajama_set_name: RedPajamaWikipedia


text:
package think.rpgitems.power.impl;

import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import org.bukkit.Bukkit;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityShootBowEvent;
import org.bukkit.event.entity.EntityTeleportEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import think.rpgitems.I18n;
import think.rpgitems.RPGItems;
import think.rpgitems.power.*;

import java.util.*;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;

import static think.rpgitems.power.Utils.*;

/**
 * Power Stuck.
 * <p>
 * The stuck power will make the hit target stuck with a chance of 1/{@link #chance}.
 * </p>
 */
@PowerMeta(defaultTrigger = "HIT", withSelectors = true, generalInterface = PowerPlain.class)
public class PowerStuck extends BasePower implements PowerLeftClick, PowerRightClick, PowerPlain, PowerHit, PowerBowShoot, PowerHitTaken, PowerHurt {
    /**
     * Chance of triggering this power
     */
    @Property
    public int chance = 3;

    /**
     * Cost of this power (hit)
     */
    @Property
    public int cost = 0;

    /**
     * Cost of this power (right click)
     */
    @Property
    public int costAoe = 0;

    /**
     * Cost of this power (right click per entity)
     */
    @Property
    public int costPerEntity = 0;

    /**
     * Range of this power
     */
    @Property
    public int range = 10;

    /**
     * Maximum view angle
     */
    @Property
    public double facing = 30;

    /**
     * Duration of this power in tick
     */
    @Property(order = 1)
    public int duration = 100;

    /**
     * Cooldown time of this power
     */
    @Property(order = 0)
    public long cooldown = 0;

    @Property
    public boolean requireHurtByEntity = true;

    @Override
    public PowerResult<Double> takeHit(Player target, ItemStack stack, double damage, EntityDamageEvent event) {
        if (!requireHurtByEntity || event instanceof EntityDamageByEntityEvent) {
            return fire(target, stack).with(damage);
        }
        return PowerResult.noop();
    }

    @Override
    public PowerResult<Void> hurt(Player target, ItemStack stack, EntityDamageEvent event) {
        if (!requireHurtByEntity || event instanceof EntityDamageByEntityEvent) {
            return fire(target, stack);
        }
        return PowerResult.noop();
    }

    @Override
    public PowerResult<Void> leftClick(Player player, ItemStack stack, PlayerInteractEvent event) {
        return fire(player, stack);
    }

    @Override
    public PowerResult<Void> rightClick(Player player, ItemStack stack, PlayerInteractEvent event) {
        return fire(player, stack);
    }

    @Override
    public PowerResult<Float> bowShoot(Player player, ItemStack stack, EntityShootBowEvent event) {
        return fire(player, stack).with(event.getForce());
    }

    private static AtomicInteger rc = new AtomicInteger(0);

    private Random random = new Random();

    private static Listener listener;

    private static Cache<UUID, Long> stucked = CacheBuilder.newBuilder().expireAfterAccess(10, TimeUnit.MINUTES).concurrencyLevel(2).build();

    @Override
    public PowerResult<Double> hit(Player player, ItemStack stack, LivingEntity entity, double damage, EntityDamageByEntityEvent event) {
        if (!checkCooldown(this, player, cooldown, true, true)) return PowerResult.cd();
        if (random.nextInt(chance) == 0) {
            if (!getItem().consumeDurability(stack, cost)) return PowerResult.cost();
            stucked.put(entity.getUniqueId(), System.currentTimeMillis());
            entity.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, duration, 10), true);
//            entity.addPotionEffect(new PotionEffect(PotionEffectType.JUMP, duration, 128), true);
            //todo change implementation to lock entity mobilability
            return PowerResult.ok(damage);
        }
        return PowerResult.noop();
    }

    @Override
    public PowerResult<Void> fire(Player player, ItemStack stack) {
        if (!checkCooldown(this, player, cooldown, true, true)) return PowerResult.cd();
        if (!getItem().consumeDurability(stack, costAoe)) return PowerResult.cost();
        List<LivingEntity> entities = getLivingEntitiesInCone(getNearestLivingEntities(this, player.getEyeLocation(), player, range, 0), player.getLocation().toVector(), facing, player.getLocation().getDirection());
        entities.forEach(entity -> {
                    if (!getItem().consumeDurability(stack, costPerEntity)) return;
                    stucked.put(entity.getUniqueId(), System.currentTimeMillis());
                    entity.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, duration, 10), true);
//                    entity.addPotionEffect(new PotionEffect(PotionEffectType.JUMP, duration, 128), true);
                }
        );
        return PowerResult.ok();
    }

    @Override
    public String displayText() {
        return I18n.format("power.stuck", (int) ((1d / (double) chance) * 100d), duration, (double) cooldown / 20d);
    }

    @Override
    public String getName() {
        return "stuck";
    }

    @Override
    public void init(ConfigurationSection s) {
        int orc = rc.getAndIncrement();
        boolean allowHit = s.getBoolean("allowHit", true);
        boolean allowAoe = s.getBoolean("allowAoe", false);
        Set<Trigger> triggerTypes = new HashSet<>();
        if (allowHit) {
            triggerTypes.add(Trigger.HIT);
        }
        if (allowAoe) {
            triggerTypes.add(Trigger.RIGHT_CLICK);
        }
        triggers = triggerTypes;
        super.init(s);
        if (orc == 0) {
            listener = new Listener() {
                @EventHandler
                void onEntityTeleport(EntityTeleportEvent e) {
                    try {
                        if (stucked.get(e.getEntity().getUniqueId(), () -> Long.MIN_VALUE) >= (System.currentTimeMillis() - duration * 50)) {
                            e.setCancelled(true);
                        }
                    } catch (ExecutionException ex) {
                        ex.printStackTrace();
                    }
                }

                @EventHandler
                void onPlayerTeleport(PlayerTeleportEvent e) {
                    try {
                        if (stucked.get(e.getPlayer().getUniqueId(), () -> Long.MIN_VALUE) >= (System.currentTimeMillis() - duration * 50)) {
                            if (e.getCause() != PlayerTeleportEvent.TeleportCause.COMMAND) {
                                e.getPlayer().sendMessage(I18n.format("message.stuck"));
                                e.setCancelled(true);
                            }
                        }
                    } catch (ExecutionException ex) {
                        ex.printStackTrace();
                    }
                }
            };
            Bukkit.getPluginManager().registerEvents(listener, RPGItems.plugin);
        }
    }

    @Override
    public void deinit() {
        int nrc = rc.decrementAndGet();
        if (nrc == 0) {
            HandlerList.unregisterAll(listener);
        }
    }
}

redpajama_set_name: RedPajamaGithub


text:
The Secret Life of Kim Dotcom: Spies, Lies and the War for the Internet by David Fisher, Kim Dotcom
This book covers Kim Dotcom's early life (born Kim Schmitz) in Germany to an alcoholic and abusive father. He is a good student and is smart for his age. His mother struggled to purchase young Kim his first computer. He is arrested as a young man which gives him street cred to open a security consulting company. He later starts Megaupload which arguably is the dawn of cloud storage today and becomes incredibly rich.
It's funny because I used to use his Kimble.org (another one of his alias') site to test Internet speed before the speed test sites started popping up. It was so loaded with Flash and had a countdown when it loaded. Depending on how fast the countdown cycled through, the better the Internet connection was. He was already grossly successful with his MegaYacht, MegaCar and all his pictures and videos of his adventures were posted on this site. He would post pictures with famous people, parties with 100's of people on yachts, private jets and cars. I have to admit, in my early days, I thought of following his security consulting ways, and eventually I did but obviously not to his level of success.
Kim meets and subsequently marries his wife in the Philippines and has 3 kids and twins on the way during his arrest. In January of 2012, on the day before Kim's birthday, his life gets turned upside down. The New Zealand police, in an unprecedented raid on a geek's home in the early hours, hit his mansion with a military force raid where they subsequently arrest him on charges of Copyright infringement and even states "terrorism" and "child pornography". Dotcom would eventually divorce his beautiful wife and mother of five to what is said is the strain with the case. Many accused her of being interested in his money. I guess no one will know.
What ensued next was a whirlwind court case where Kim is fighting for his life and his family which you can argue that he loses both. Dotcom challenges the validity of the warrants and those that allowed it. Kim not only challenges the courts to avoid extradition to the US, but also throws his hat into the political arena only to lose to the incumbent John Key, who some call his nemesis.
It is a shame that a person, a visionary, has been silenced. I understand that US Laws are probably the strictest in the world. I also realize that the US lobby system and the over-reach of government is pervasive and every day, it seems we the citizens of the US are losing more of our rights not only from government, but from political parties. We have lost "TRUE" freedom of speech, the 4th amendment is all but gone and a particular group is hard at work to take our 2nd amendment as well. I am sure Dotcom did some criminal stuff to amass his wealth, but like I used to tell my Scouts when I was a leader, "When you point your finger at someone, you have three fingers pointing back at you". We see our government and the politicians constantly use money, power and influence to get out of all sorts of crimes they have committed that regular people would surely go to prison for.
Good book, could have been great but nonetheless a great read especially if you are part of the "scene" and were part of his rise to fame.
Dotcom's Mansion in New Zealand
The Megacar from his kimble.org site
Dotcom's first wife and kids
The NEW Mrs. Dotcom
Simultaneous Device Usage: Unlimited
Publisher: Paul Little Books; 1 edition (November 17, 2013)
ASIN: B00GR7AF46
The Silencing: How the Left is Killing Free Speech...
Kochland by Christopher Leonard
The Secret Life of Kim Dotcom: Spies, Lies and the...
Kingpin: How One Hacker Took Over the Billion-Doll...
Cult of the Dead Cow: How the Original Hacking Sup...
Hate Crime Hoax: How the Left is Selling a Fake Ra...
The Real Watergate Scandal: Collusion, Conspiracy,...


text:
Private Car Tours
Speed Boat Tours
Private Car Transfers
Rafting Tara – full day tour from Kotor
Šćepan Polje, Montenegro
At 1,300m (4,300ft) deep, the Tara River Canyon is the deepest canyon in Europe and is second-deepest in the world next to the Grand Canyon in the United States.
Our tour will begin in Kotor, one of the most beautiful towns in Montenegro. We will drive you in a comfortable vehicle with a professional tour driver. We will take a 3-hour long scenic ride through the mountains of Montenegro on the way to Šćepan Polje where the rafting camp is located.
We will visit the most attractive part of the canyon from the starting place Šćepan Polje, abundant river rapids (over 50), wild tributaries, sparkling waterfalls, lush variety forests whose trees are old after a few hundred years high and up to 50 m.
Since 1977, Tara River has had the status of a biosphere reserve (MAB) and was added to UNESCO's World Heritage List.
Pick up/Drop off from/to Port of Kotor/hotel/apartment
Tourist tax
Guiding services
Tickets for Lovćen National Park
Entrance fee to Lovćen museum
1. Early start with scenic ride
Starting at 6 AM, a 3 hours long scenic ride through the mountains of Montenegro on the way to Šćepan Polje where the rafting camp is located.
2. Rafting camp
17 km drive from rafting camp to the starting point.
3. Rafting
Adventure mode is ON for 3 hours straight! Pause of 20 minutes is included.
4. Launch time
Getting back to camp and having a traditional launch.
5. Going back
Getting back to Kotor / Hotel in Boka Bay.
Location 5/5
Amenities 5/5
Services 5/5
Price 5/5
Private Tara Rafting Tour
Start time of the tour *
Vehicle *
Number of passangers * 1 2 3 4
Total *
For groups larger than 8 people, please contact us for custom prices via the contact page.
Happy gallery
Suggested tours you may like
Kotor - Budva - Sveti Stefan
Budva Old Town, Budva, Montenegro
Budva is a Montenegrin resort town that is often called "Montenegrin Miami" because it is the most popular tourist destination in the country. The city has many beaches and nightlife, making it one of the best places to vacation. The old town of Budva is located on an island linked to the land by a sandbar, which resulted in it becoming a peninsula. It's surrounded by ramparts that date back to the 15th century including a medieval fortification system with city gates, defense walls, and towers. The Old Town features narrow streets, small squares, and precious monuments. The town is...
Kotor - Lovćen - Cetinje - Budva
Cetinje, Montenegro
Beginning from Kotor, the destination that is first this trip could be a visit to Lovćen National Park and mausoleum on one of its peaks (Jezerski vrh) committed to Montenegrin prince-bishop, poet, and philosopher Petar II Petrović Njegoš. The next end is Cetinje. This is certainly a town of great historic significance, being founded in the 15th century, it became the guts of Montenegrin life and both a cradle of Montenegrin culture and an orthodox center that is spiritual. Its status as the capital that is honorary is because of its history as the long-serving former capital of Montenegro. Due to...
Medieval Montenegro Full Day Tour
Skadarsko jezero, Montenegro
This tour is taking you on a full day, and the all-around trip of Montenegrin signature historic monuments, beautiful nature, and a taste of traditional cuisine. The first stop would be Njeguši – the village in the Cetinje – Old Royal Capital of Montenegro, found on the slopes of Mountain Lovćen, inside the Lovćen park that is national. The village is best referred to as the birthplace associated with the Petrović dynasty, which ruled Montenegro from 1696 to 1918. It is also significant for its well-preserved traditional folk architecture. Njeguški sir and Njeguški pršut (local forms of cheese and prosciutto respectively),...
Weather in Kotor
5 by 3 reviews
Kotor - Tivat - Perast
Kotor - Budva - Perast
Kotor - Njeguši - Lovćen
info@tourbynef.com
Tripadvisor Instagram Facebook Whatsapp
We are a small team of local guides, that represent Montenegro in its best way, and we will give our best to make your stay in Montenegro unforgettable!
Kotor - Perast private tour
Kotor - Budva private tour
Kotor - Lovćen private tour
Kotor - Cetinje private tour
Best of the Best Award
Škaljari bb, 85330
Copyright © 2021 Tour by Nef. All Rights Reserved. Premium website by AbakusWeb.


15/05/2016�� Hey guys! I've got a very interesting operation here. Enemy team was 3X the manpower but had no NVGs and only had flashlights. Wanna join our clan?... I built an OPFOR mission that make use of combat divers and gunboat crews. A mix of stealth and vehicle based action. A mix of stealth and vehicle based action. WARNING: This post contains opinions produced in a facility which also occasionally processes fact products.
Bohemia Interactive will continue to release multiple patches for the alpha and beta builds of ArmA 3. The latest major update for ArmA 3 has been recently released on Steam and includes a huge number of changes that will certainly improve user gameplay how to make a calendar from a picture frame 11/12/2014�� Stealth isn't really possible in a traditional sense unless you reprogrammed the AI entirely. It's to do with how the AI work in the game and how information is shared between them, sound isn't factored into how the AI detect you as far as I am aware.
10/07/2016�� I've made a helicopter stealth mission in early A3 days. So it's certainly possible, but requires some heavy scripting if you want it to be good. So it's certainly possible, but requires some heavy scripting if you want it to be good.
27/03/2017�� I have generated this stealth / detection test to understand Arma's limitations whilst creating a stealth based mission, hopefully it will help others.


text:
package org.apache.zeppelin.notebook;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;

import java.io.File;
import java.io.IOException;
import java.util.*;

import org.apache.commons.io.FileUtils;
import org.apache.zeppelin.conf.ZeppelinConfiguration;
import org.apache.zeppelin.conf.ZeppelinConfiguration.ConfVars;
import org.apache.zeppelin.dep.DependencyResolver;
import org.apache.zeppelin.display.AngularObjectRegistry;
import org.apache.zeppelin.interpreter.*;
import org.apache.zeppelin.interpreter.mock.MockInterpreter1;
import org.apache.zeppelin.interpreter.mock.MockInterpreter2;
import org.apache.zeppelin.notebook.repo.NotebookRepo;
import org.apache.zeppelin.notebook.repo.VFSNotebookRepo;
import org.apache.zeppelin.resource.LocalResourcePool;
import org.apache.zeppelin.resource.ResourcePoolUtils;
import org.apache.zeppelin.scheduler.Job;
import org.apache.zeppelin.scheduler.Job.Status;
import org.apache.zeppelin.scheduler.JobListener;
import org.apache.zeppelin.scheduler.SchedulerFactory;
import org.apache.zeppelin.search.SearchService;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.quartz.SchedulerException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.sonatype.aether.RepositoryException;

public class NotebookTest implements JobListenerFactory{
  private static final Logger logger = LoggerFactory.getLogger(NotebookTest.class);

  private File tmpDir;
  private ZeppelinConfiguration conf;
  private SchedulerFactory schedulerFactory;
  private File notebookDir;
  private Notebook notebook;
  private NotebookRepo notebookRepo;
  private InterpreterFactory factory;
  private DependencyResolver depResolver;

  @Before
  public void setUp() throws Exception {
    tmpDir = new File(System.getProperty("java.io.tmpdir")+"/ZeppelinLTest_"+System.currentTimeMillis());
    tmpDir.mkdirs();
    new File(tmpDir, "conf").mkdirs();
    notebookDir = new File(tmpDir + "/notebook");
    notebookDir.mkdirs();

    System.setProperty(ConfVars.ZEPPELIN_HOME.getVarName(), tmpDir.getAbsolutePath());
    System.setProperty(ConfVars.ZEPPELIN_NOTEBOOK_DIR.getVarName(), notebookDir.getAbsolutePath());
    System.setProperty(ConfVars.ZEPPELIN_INTERPRETERS.getVarName(), "org.apache.zeppelin.interpreter.mock.MockInterpreter1,org.apache.zeppelin.interpreter.mock.MockInterpreter2");

    conf = ZeppelinConfiguration.create();

    this.schedulerFactory = new SchedulerFactory();

    MockInterpreter1.register("mock1", "org.apache.zeppelin.interpreter.mock.MockInterpreter1");
    MockInterpreter2.register("mock2", "org.apache.zeppelin.interpreter.mock.MockInterpreter2");

    depResolver = new DependencyResolver(tmpDir.getAbsolutePath() + "/local-repo");
    factory = new InterpreterFactory(conf, new InterpreterOption(false), null, null, depResolver);

    SearchService search = mock(SearchService.class);
    notebookRepo = new VFSNotebookRepo(conf);
    NotebookAuthorization notebookAuthorization = new NotebookAuthorization(conf);
    notebook = new Notebook(conf, notebookRepo, schedulerFactory, factory, this, search, notebookAuthorization);
  }

  @After
  public void tearDown() throws Exception {
    delete(tmpDir);
  }

  @Test
  public void testSelectingReplImplementation() throws IOException {
    Note note = notebook.createNote();
    note.getNoteReplLoader().setInterpreters(factory.getDefaultInterpreterSettingList());

    // run with defatul repl
    Paragraph p1 = note.addParagraph();
    Map config = p1.getConfig();
    config.put("enabled", true);
    p1.setConfig(config);
    p1.setText("hello world");
    note.run(p1.getId());
    while(p1.isTerminated()==false || p1.getResult()==null) Thread.yield();
    assertEquals("repl1: hello world", p1.getResult().message());

    // run with specific repl
    Paragraph p2 = note.addParagraph();
    p2.setConfig(config);
    p2.setText("%mock2 hello world");
    note.run(p2.getId());
    while(p2.isTerminated()==false || p2.getResult()==null) Thread.yield();
    assertEquals("repl2: hello world", p2.getResult().message());
  }

  @Test
  public void testReloadAllNotes() throws IOException {
    File srcDir = new File("src/test/resources/2A94M5J1Z");
    File destDir = new File(notebookDir.getAbsolutePath() + "/2A94M5J1Z");

    // copy the notebook
    try {
      FileUtils.copyDirectory(srcDir, destDir);
    } catch (IOException e) {
      logger.error(e.toString(), e);
    }

    // doesn't have copied notebook in memory before reloading
    List<Note> notes = notebook.getAllNotes();
    assertEquals(notes.size(), 0);

    // load copied notebook on memory when reloadAllNotes() is called
    Note copiedNote = notebookRepo.get("2A94M5J1Z");
    notebook.reloadAllNotes();
    notes = notebook.getAllNotes();
    assertEquals(notes.size(), 1);
    assertEquals(notes.get(0).id(), copiedNote.id());
    assertEquals(notes.get(0).getName(), copiedNote.getName());
    assertEquals(notes.get(0).getParagraphs(), copiedNote.getParagraphs());

    // delete the notebook
    FileUtils.deleteDirectory(destDir);

    // keep notebook in memory before reloading
    notes = notebook.getAllNotes();
    assertEquals(notes.size(), 1);

    // delete notebook from notebook list when reloadAllNotes() is called
    notebook.reloadAllNotes();
    notes = notebook.getAllNotes();
    assertEquals(notes.size(), 0);
  }

  @Test
  public void testPersist() throws IOException, SchedulerException, RepositoryException {
    Note note = notebook.createNote();

    // run with default repl
    Paragraph p1 = note.addParagraph();
    Map config = p1.getConfig();
    config.put("enabled", true);
    p1.setConfig(config);
    p1.setText("hello world");
    note.persist();

    Notebook notebook2 = new Notebook(
        conf, notebookRepo, schedulerFactory,
        new InterpreterFactory(conf, null, null, null, depResolver), this, null, null);
    assertEquals(1, notebook2.getAllNotes().size());
  }

  @Test
  public void testClearParagraphOutput() throws IOException, SchedulerException{
    Note note = notebook.createNote();
    Paragraph p1 = note.addParagraph();
    Map config = p1.getConfig();
    config.put("enabled", true);
    p1.setConfig(config);
    p1.setText("hello world");
    note.run(p1.getId());

    while(p1.isTerminated()==false || p1.getResult()==null) Thread.yield();
    assertEquals("repl1: hello world", p1.getResult().message());

    // clear paragraph output/result
    note.clearParagraphOutput(p1.getId());
    assertNull(p1.getResult());
  }

  @Test
  public void testRunAll() throws IOException {
    Note note = notebook.createNote();
    note.getNoteReplLoader().setInterpreters(factory.getDefaultInterpreterSettingList());

    // p1
    Paragraph p1 = note.addParagraph();
    Map config1 = p1.getConfig();
    config1.put("enabled", true);
    p1.setConfig(config1);
    p1.setText("p1");

    // p2
    Paragraph p2 = note.addParagraph();
    Map config2 = p2.getConfig();
    config2.put("enabled", false);
    p2.setConfig(config2);
    p2.setText("p2");

    // p3
    Paragraph p3 = note.addParagraph();
    p3.setText("p3");

    // when
    note.runAll();

    // wait for finish
    while(p3.isTerminated()==false) {
      Thread.yield();
    }

    assertEquals("repl1: p1", p1.getResult().message());
    assertNull(p2.getResult());
    assertEquals("repl1: p3", p3.getResult().message());

    notebook.removeNote(note.getId());
  }

  @Test
  public void testSchedule() throws InterruptedException, IOException{
    // create a note and a paragraph
    Note note = notebook.createNote();
    note.getNoteReplLoader().setInterpreters(factory.getDefaultInterpreterSettingList());

    Paragraph p = note.addParagraph();
    Map config = new HashMap<String, Object>();
    p.setConfig(config);
    p.setText("p1");
    Date dateFinished = p.getDateFinished();
    assertNull(dateFinished);

    // set cron scheduler, once a second
    config = note.getConfig();
    config.put("enabled", true);
    config.put("cron", "* * * * * ?");
    note.setConfig(config);
    notebook.refreshCron(note.id());
    Thread.sleep(1*1000);

    // remove cron scheduler.
    config.put("cron", null);
    note.setConfig(config);
    notebook.refreshCron(note.id());
    Thread.sleep(1000);
    dateFinished = p.getDateFinished();
    assertNotNull(dateFinished);
    Thread.sleep(1*1000);
    assertEquals(dateFinished, p.getDateFinished());
  }

  @Test
  public void testAutoRestartInterpreterAfterSchedule() throws InterruptedException, IOException{
    // create a note and a paragraph
    Note note = notebook.createNote();
    note.getNoteReplLoader().setInterpreters(factory.getDefaultInterpreterSettingList());

    Paragraph p = note.addParagraph();
    Map config = new HashMap<String, Object>();
    p.setConfig(config);
    p.setText("p1");

    // set cron scheduler, once a second
    config = note.getConfig();
    config.put("enabled", true);
    config.put("cron", "* * * * * ?");
    config.put("releaseresource", "true");
    note.setConfig(config);
    notebook.refreshCron(note.id());
    while (p.getStatus() != Status.FINISHED) {
      Thread.sleep(100);
    }
    Date dateFinished = p.getDateFinished();
    assertNotNull(dateFinished);

    // restart interpreter
    for (InterpreterSetting setting : note.getNoteReplLoader().getInterpreterSettings()) {
      notebook.getInterpreterFactory().restart(setting.id());
    }

    Thread.sleep(1000);
    while (p.getStatus() != Status.FINISHED) {
      Thread.sleep(100);
    }
    assertNotEquals(dateFinished, p.getDateFinished());

    // remove cron scheduler.
    config.put("cron", null);
    note.setConfig(config);
    notebook.refreshCron(note.id());
  }

  @Test
  public void testCloneNote() throws IOException, CloneNotSupportedException,
      InterruptedException {
    Note note = notebook.createNote();
    note.getNoteReplLoader().setInterpreters(factory.getDefaultInterpreterSettingList());

    final Paragraph p = note.addParagraph();
    p.setText("hello world");
    note.runAll();
    while(p.isTerminated()==false || p.getResult()==null) Thread.yield();

    p.setStatus(Status.RUNNING);
    Note cloneNote = notebook.cloneNote(note.getId(), "clone note");
    Paragraph cp = cloneNote.paragraphs.get(0);
    assertEquals(cp.getStatus(), Status.READY);
    assertNotEquals(cp.getId(), p.getId());
    assertEquals(cp.text, p.text);
    assertEquals(cp.getResult().message(), p.getResult().message());
  }

  @Test
  public void testResourceRemovealOnParagraphNoteRemove() throws IOException {
    Note note = notebook.createNote();
    note.getNoteReplLoader().setInterpreters(factory.getDefaultInterpreterSettingList());
    for (InterpreterGroup intpGroup : InterpreterGroup.getAll()) {
      intpGroup.setResourcePool(new LocalResourcePool(intpGroup.getId()));
    }
    Paragraph p1 = note.addParagraph();
    p1.setText("hello");
    Paragraph p2 = note.addParagraph();
    p2.setText("%mock2 world");

    note.runAll();
    while(p1.isTerminated()==false || p1.getResult()==null) Thread.yield();
    while(p2.isTerminated()==false || p2.getResult()==null) Thread.yield();

    assertEquals(2, ResourcePoolUtils.getAllResources().size());

    // remove a paragraph
    note.removeParagraph(p1.getId());
    assertEquals(1, ResourcePoolUtils.getAllResources().size());

    // remove note
    notebook.removeNote(note.id());
    assertEquals(0, ResourcePoolUtils.getAllResources().size());
  }

  @Test
  public void testAngularObjectRemovalOnNotebookRemove() throws InterruptedException,
      IOException {
    // create a note and a paragraph
    Note note = notebook.createNote();
    note.getNoteReplLoader().setInterpreters(factory.getDefaultInterpreterSettingList());

    AngularObjectRegistry registry = note.getNoteReplLoader()
        .getInterpreterSettings().get(0).getInterpreterGroup()
        .getAngularObjectRegistry();

    Paragraph p1 = note.addParagraph();

    // add paragraph scope object
    registry.add("o1", "object1", note.id(), p1.getId());

    // add notebook scope object
    registry.add("o2", "object2", note.id(), null);

    // add global scope object
    registry.add("o3", "object3", null, null);

    // remove notebook
    notebook.removeNote(note.id());

    // notebook scope or paragraph scope object should be removed
    assertNull(registry.get("o1", note.id(), null));
    assertNull(registry.get("o2", note.id(), p1.getId()));

    // global object sould be remained
    assertNotNull(registry.get("o3", null, null));
  }

  @Test
  public void testAngularObjectRemovalOnParagraphRemove() throws InterruptedException,
      IOException {
    // create a note and a paragraph
    Note note = notebook.createNote();
    note.getNoteReplLoader().setInterpreters(factory.getDefaultInterpreterSettingList());

    AngularObjectRegistry registry = note.getNoteReplLoader()
        .getInterpreterSettings().get(0).getInterpreterGroup()
        .getAngularObjectRegistry();

    Paragraph p1 = note.addParagraph();

    // add paragraph scope object
    registry.add("o1", "object1", note.id(), p1.getId());

    // add notebook scope object
    registry.add("o2", "object2", note.id(), null);

    // add global scope object
    registry.add("o3", "object3", null, null);

    // remove notebook
    note.removeParagraph(p1.getId());

    // paragraph scope should be removed
    assertNull(registry.get("o1", note.id(), null));

    // notebook scope and global object sould be remained
    assertNotNull(registry.get("o2", note.id(), null));
    assertNotNull(registry.get("o3", null, null));
  }

  @Test
  public void testAngularObjectRemovalOnInterpreterRestart() throws InterruptedException,
      IOException {
    // create a note and a paragraph
    Note note = notebook.createNote();
    note.getNoteReplLoader().setInterpreters(factory.getDefaultInterpreterSettingList());

    AngularObjectRegistry registry = note.getNoteReplLoader()
        .getInterpreterSettings().get(0).getInterpreterGroup()
        .getAngularObjectRegistry();

    // add local scope object
    registry.add("o1", "object1", note.id(), null);
    // add global scope object
    registry.add("o2", "object2", null, null);

    // restart interpreter
    factory.restart(note.getNoteReplLoader().getInterpreterSettings().get(0).id());
    registry = note.getNoteReplLoader()
    .getInterpreterSettings().get(0).getInterpreterGroup()
    .getAngularObjectRegistry();

    // local and global scope object should be removed
    assertNull(registry.get("o1", note.id(), null));
    assertNull(registry.get("o2", null, null));
    notebook.removeNote(note.id());
  }

  @Test
  public void testPermissions() throws IOException {
    // create a note and a paragraph
    Note note = notebook.createNote();
    NotebookAuthorization notebookAuthorization = notebook.getNotebookAuthorization();
    // empty owners, readers and writers means note is public
    assertEquals(notebookAuthorization.isOwner(note.id(),
            new HashSet<String>(Arrays.asList("user2"))), true);
    assertEquals(notebookAuthorization.isReader(note.id(),
            new HashSet<String>(Arrays.asList("user2"))), true);
    assertEquals(notebookAuthorization.isWriter(note.id(),
            new HashSet<String>(Arrays.asList("user2"))), true);

    notebookAuthorization.setOwners(note.id(),
            new HashSet<String>(Arrays.asList("user1")));
    notebookAuthorization.setReaders(note.id(),
            new HashSet<String>(Arrays.asList("user1", "user2")));
    notebookAuthorization.setWriters(note.id(),
            new HashSet<String>(Arrays.asList("user1")));

    assertEquals(notebookAuthorization.isOwner(note.id(),
            new HashSet<String>(Arrays.asList("user2"))), false);
    assertEquals(notebookAuthorization.isOwner(note.id(),
            new HashSet<String>(Arrays.asList("user1"))), true);

    assertEquals(notebookAuthorization.isReader(note.id(),
            new HashSet<String>(Arrays.asList("user3"))), false);
    assertEquals(notebookAuthorization.isReader(note.id(),
            new HashSet<String>(Arrays.asList("user2"))), true);

    assertEquals(notebookAuthorization.isWriter(note.id(),
            new HashSet<String>(Arrays.asList("user2"))), false);
    assertEquals(notebookAuthorization.isWriter(note.id(),
            new HashSet<String>(Arrays.asList("user1"))), true);

    notebook.removeNote(note.id());
  }

  @Test
  public void testAbortParagraphStatusOnInterpreterRestart() throws InterruptedException,
      IOException {
    Note note = notebook.createNote();
    note.getNoteReplLoader().setInterpreters(factory.getDefaultInterpreterSettingList());

    ArrayList<Paragraph> paragraphs = new ArrayList<>();
    for (int i = 0; i < 100; i++) {
      Paragraph tmp = note.addParagraph();
      tmp.setText("p" + tmp.getId());
      paragraphs.add(tmp);
    }

    for (Paragraph p : paragraphs) {
      assertEquals(Job.Status.READY, p.getStatus());
    }

    note.runAll();

    while (paragraphs.get(0).getStatus() != Status.FINISHED) Thread.yield();

    factory.restart(note.getNoteReplLoader().getInterpreterSettings().get(0).id());

    boolean isAborted = false;
    for (Paragraph p : paragraphs) {
      logger.debug(p.getStatus().name());
      if (isAborted) {
        assertEquals(Job.Status.ABORT, p.getStatus());
      }
      if (p.getStatus() == Status.ABORT) {
        isAborted = true;
      }
    }

    assertTrue(isAborted);
  }

  @Test
  public void testPerSessionInterpreterCloseOnNoteRemoval() throws IOException {
    // create a notes
    Note note1  = notebook.createNote();
    Paragraph p1 = note1.addParagraph();
    p1.setText("getId");

    // restart interpreter with per note session enabled
    for (InterpreterSetting setting : note1.getNoteReplLoader().getInterpreterSettings()) {
      setting.getOption().setPerNoteSession(true);
      notebook.getInterpreterFactory().restart(setting.id());
    }

    note1.run(p1.getId());
    while (p1.getStatus() != Status.FINISHED) Thread.yield();
    InterpreterResult result = p1.getResult();

    // remove note and recreate
    notebook.removeNote(note1.getId());
    note1 = notebook.createNote();
    p1 = note1.addParagraph();
    p1.setText("getId");

    note1.run(p1.getId());
    while (p1.getStatus() != Status.FINISHED) Thread.yield();
    assertNotEquals(p1.getResult().message(), result.message());

    notebook.removeNote(note1.getId());
  }

  @Test
  public void testPerSessionInterpreter() throws IOException {
    // create two notes
    Note note1  = notebook.createNote();
    Paragraph p1 = note1.addParagraph();

    Note note2  = notebook.createNote();
    Paragraph p2 = note2.addParagraph();

    p1.setText("getId");
    p2.setText("getId");

    // run per note session disabled
    note1.run(p1.getId());
    note2.run(p2.getId());

    while (p1.getStatus() != Status.FINISHED) Thread.yield();
    while (p2.getStatus() != Status.FINISHED) Thread.yield();

    assertEquals(p1.getResult().message(), p2.getResult().message());

    // restart interpreter with per note session enabled
    for (InterpreterSetting setting : note1.getNoteReplLoader().getInterpreterSettings()) {
      setting.getOption().setPerNoteSession(true);
      notebook.getInterpreterFactory().restart(setting.id());
    }

    // run per note session enabled
    note1.run(p1.getId());
    note2.run(p2.getId());

    while (p1.getStatus() != Status.FINISHED) Thread.yield();
    while (p2.getStatus() != Status.FINISHED) Thread.yield();

    assertNotEquals(p1.getResult().message(), p2.getResult().message());

    notebook.removeNote(note1.getId());
    notebook.removeNote(note2.getId());
  }

  @Test
  public void testPerSessionInterpreterCloseOnUnbindInterpreterSetting() throws IOException {
    // create a notes
    Note note1  = notebook.createNote();
    Paragraph p1 = note1.addParagraph();
    p1.setText("getId");

    // restart interpreter with per note session enabled
    for (InterpreterSetting setting : note1.getNoteReplLoader().getInterpreterSettings()) {
      setting.getOption().setPerNoteSession(true);
      notebook.getInterpreterFactory().restart(setting.id());
    }

    note1.run(p1.getId());
    while (p1.getStatus() != Status.FINISHED) Thread.yield();
    InterpreterResult result = p1.getResult();

    // unbind, and rebind setting. that result interpreter instance close
    List<String> bindedSettings = notebook.getBindedInterpreterSettingsIds(note1.getId());
    notebook.bindInterpretersToNote(note1.getId(), new LinkedList<String>());
    notebook.bindInterpretersToNote(note1.getId(), bindedSettings);

    note1.run(p1.getId());
    while (p1.getStatus() != Status.FINISHED) Thread.yield();

    assertNotEquals(result.message(), p1.getResult().message());

    notebook.removeNote(note1.getId());
  }

  private void delete(File file){
    if(file.isFile()) file.delete();
    else if(file.isDirectory()){
      File [] files = file.listFiles();
      if(files!=null && files.length>0){
        for(File f : files){
          delete(f);
        }
      }
      file.delete();
    }
  }

  @Override
  public ParagraphJobListener getParagraphJobListener(Note note) {
    return new ParagraphJobListener(){

      @Override
      public void onOutputAppend(Paragraph paragraph, InterpreterOutput out, String output) {
      }

      @Override
      public void onOutputUpdate(Paragraph paragraph, InterpreterOutput out, String output) {
      }

      @Override
      public void onProgressUpdate(Job job, int progress) {
      }

      @Override
      public void beforeStatusChange(Job job, Status before, Status after) {
      }

      @Override
      public void afterStatusChange(Job job, Status before, Status after) {
      }
    };
  }
}


A light and fluffy omelette with a cheese jacket and a pocketful of sautéed mushrooms.
Melt Astra in a non-stick pan.
Sauté sliced mushrooms and onions for a few minutes.
Beat the eggs with Knorr Chinese Chilli Recipe Mix and add it into the mushroom and onion mixture.
Sprinkle grated cheese on top and quickly stir it for a few seconds under a very low fire till the ingredients are mixed. Then let the mixture set as it cooks.
Fold it and serve with a vegetable salad and French Fries.
You can now make Party Food Snacks in no time at all.
Stirring the omelette makes it fluffier. But, if you keep on stirring for too long it will break and scramble. Thus you need to stir it quickly and immediately stop.