text:
Stephen Chukumba
About Stephen Chukumba
Tag Archives: remote sharing
2012 Will Be a Blogging Year (and what I didn't tell you about 2011)
I just looked at the end-of-year summary that WordPress sends to folks who use its blogging platform, showing me what 2011 looked like.
Sooooo….last year I authored exactly 14 posts.
That's abysmal.
I. Am. Ashamed.
I am constantly extolling the virtue of regular blogging to my clients, and in 2011 I was thoroughly remiss.
And unlike 2010, where I was a blogging superstar (relatively), in 2011, I was a friggin blogging hermit!
And it's not like I didn't have a lot going on to blog about.
So to make up for my total lack of posting, here is my 2011 in review.
December: Art Basel Miami
Hotness was all over..even on the walls.
I attended my first Art Basel Miami, which (if you didn't know) is the largest international art festival in the United States. I spent four days hanging with some of the hottest contemporary fine and street artists in the game, partying at Miami's most exclusive night clubs and meeting with clients in a whirlwind where days and nights seemed to blend together. Big ups to Sanford Biggers, Martin Luther, Rich Medina, Sapna Lal and all the good folks at Bardot, Townhouse, Gigi and Bond Street.
November: Jump N' Funk After Experience at Red Rooster
The After Experience at Red Rooster was the bomb!
If you've never been to a Jump N Funk, then you've been missing one of the best parties ever. Literally. Jump N Funk is an afrobeat party, celebrating the life and music of Fela. The first time I attended a JNF, at WMC 2005, I left the event sweating like a slave. I was hooked. 2011 was the 10 year anniversary, and Rich Medina was in top form as he tore the roof off of the Red Rooster in Harlem, after the anniversary show at Harlem Stage.
October: The Digital Strategist
I was the guest of David Muhammed, the Digital Strategist, on his public access show on SoMa TV. In the renovated studio at Columbia High School in Maplewood, New Jersey, I was interviewed about my experiences in the technology and mobile space. I posted a short piece about the interview, which lasted about 50 minutes, but felt like five, earlier, but if you missed it, here it is again.
September: Born To Shine
I spent some time with Rich Medina in September, who was fresh off of the show Master of the Mix (produced by GTM Central and presented by Smirnoff) on the set of Time Warner Cable's new program, Born To Shine. Rich was the resident DJ for the show, which was recorded on the 106 & Park set, and provided his unique banter and musical je ne sais quoi to the show.
August: Q3030
I started consulting a tech start-up out of Atlanta, called Q3030. The brain-child of Marq Sears, a serial entrepreneur, Q3030 had developed an new technology, called The Cube, an interactive platform that enables brands to place interactive branded advertisements on a number of highly trafficked websites, like MediaTakeOut.com. I was brought in to help map out the strategic direction for the company, content acquisition, capitalization and branding. They're actively seeking angel investment, but are moving forward.
July: Martha's Vineyard
In what has become somewhat of an annual tradition, I took a working vacation and spent a week in Martha's Vineyard with the family. We rented a quaint three bedroom house on a lake in Oaks Bluff. Every day we hit the beach, the strip, the lake or some other outdoor destination. Now my kids are now hooked on the place, and it's looking like this IS, in fact, going to be an actual annual tradition.
June: The Marksmen
I rejoined Marksmen Productions, a company I had worked with for several years, and immediately jumped back in the fray working on some really innovative projects. Several years ago, the Marksmen developed DOT.TUNES, a web-based application that gave users the ability to remotely access all the content of the iTunes library remotely over an internet-connected device. Since that time, they've developed several applications that run off of the DT platform, including HookUp (remote sharing over multiple DT instances), ReVenue and !mpulse. Stay tuned for the developments on this front in 2012!
May: Cannes Film Festival
Free Angela, the documentary film arrives in 2012.
I took my second trip to the South of France for the 64th Annual Cannes Film Festival, where I put to use everything I learned on my first trip. I attended a few premiers, ate frogs legs, partied in a castle…and…on the beach…and…on a yacht…and…well you get the picture. I also met with some of the hottest up-and-coming film-makers, directors and producers. I also started working with Free Angela, the documentary film on Angela Davis by Shola Lynch, in association with Canal Plus, De Films En Anguille, and BET (yes, BET).
April: The Today Show
I'm waxing eloquent about going grey!
The highlight for April (aside from my 41st birthday) was being invited to participate in a focus group that was being taped for the Today show on NBC. The focus group was assembled to talk about perceptions related to aging, and whether grey was sexy or not. The segment, which aired shortly after taping, can be seen here. Check me out in my 2 seconds of fame, when I say "I love her with the grey."
March: Winter Music Conference
I attended my third (or was it fourth?) WMC in Miami at the Miami Convention Center. It was my first WMC off the strip and in the convention center, and the mood was noticeably muted. I sat on a panel discussing the future of mobile with some mobile industry luminaries and hung out with Benzino and Dave Mays (the former owners of The Source Magazine) at their posh recording studio in downtown Miami (out of which they also publish their new publication, Hip Hop Weekly). I also spent a few hours at the King of Diamonds, the…ahem…'gentlemen's club', but we can talk about that later.
February: Morgan 4 Congress 2012
The new look of the M4C website!
If you followed me in 2010, you know that I was working with Vincent Morgan, a Democratic Candidate for Congress, running against Charles Rangel in the 15th District of New York (what is commonly referred to as Harlem or Upper Manhattan). Although he lost, it was a learning experience, and in February of this year, he assembled his inner circle to strategize for his 2012 run. We relaunched his website, created new marketing materials, and put together a strong team for his next run. Look for his formal announcement soon and repeat after me: "Morgan for Congress 2012!"
January: KiwiTech
I joined KiwiTech, a Washington, D.C. based mobile application development firm, that was moving from developing apps for the publishing sector, into the media space. This small family owned and operated outfit has developed over 600 iPhone, iPod Touch and iPad apps to date, and shows no signs of slowing down.
If you've made it down this far, let me say that one of my resolutions is to blog at least once a week in 2012. Which means that if I actually do what I say I'm going to do, you can expect at least 52 posts from me this year!
Yaayyy!
Now lets see how long it takes me to fall off the blogging wagon this time!
Filed under branding, Smack talking, technology
Tagged as !mpulse, afrobeat, Angela Davis, Art Basel, Art Basel Miami, Bardot, Benzino, BET, blogging, Bond Street, Canal Plus, Cannes Film Festival, Columbia High School, Dave Mays, David Muhammed, De Films En Anguille, DOT.TUNES, Fela, Gigi, Harlem Stage, Hip Hop Weekly, HookUp, JNF, Jump N Funk, Jump N Funk After Experience, KiwiTech, Maplewood, Marksmen Productions, Marq Sears, Martha's Vineyard, Martin Luther, Master of the Mix, MediaTakeOut.com, Morgan for Congress 2012, NBC, Oaks Bluff, Q3030, Red Rooster Harlem, remote sharing, ReVenue, Rich Medina, Sanford Biggers, Sapna Lal, Shola Lynch, Smirnoff, SoMa TV, The Cube, The Digital Strategist, The Marksmen, The Source Magazine, The Today Show, Townhouse, Vincent Morgan, Winter Music Conference, WMC, Wordpress
Apple, why is it so hard to love you?
What the f*!king f*!k? Top 10 reasons I hate the iPhone X.
No one cares about seeing you live.
72 hours with the iPhone 7. A love story.
The top 10 things I love and hate about iOS 10.
Stephen's Tweets
What exactly is the belt for, sir? #thatsaggylife #justwhy https://t.co/5btlCiIO4R 3 weeks ago
Read despite the title. Justice Kavanaugh wants us to know he's won - CNN apple.news/ANnTbX9cmRpija… 1 month ago
To all these men and women wearing a bottle of cologne or perfume, please stop it! Thank you. #fortheloveofgod #whatisthatsmell #younasty 1 month ago
Good riddance! #dingdongthewitchisgone White House press secretary Sarah Huckabee Sanders to step down, Trump tweet… twitter.com/i/web/status/1… 1 month ago
Creative. Resourceful. Courageous. Resilience. Passion. The five characteristics of an entrepreneur. Dr. Randal Pin… twitter.com/i/web/status/1… 1 month ago
3G Android app Apple Apple Watch apps App Store AT&T Ben Tannenbaum Blackberry blog blogging Charles Rangel Chris Anokute connected devices Digiwaxx Facebook Foursquare Google Harlem Instagram internet iOS iOS 6 iPad iPad 2 iPad Mini iPhone iPhone 5 iPhone 5s iTunes Jay Z Katy Perry Lil Wayne Linkedin Macbook Mark Hines mobile mobile devices Netflix New York New York Times Nicki Minaj Obama online Oprah Pandora Parenting PayPal Pinterest privacy Rich Medina Rihanna Samsung Shazam Siri SMS social media social media platform Spotify Starbucks Stephen Chukumba Stephen Chukumba says tablet TechCrunch technology text texting Tumblr tweet Twitter video Vincent Morgan Wordpress YouTube
Stephen Chukumba · Musings of a Flawed Mind


We are so excited to announce Hayley Jane and the Primates are coming back to Norfolk! You'll absolutely love her onstage energy and the Primates bring some serious chops and theatrics with their Jazz-Funk-Blues-Indie fusion. Come join us in welcoming Hayley Jane and the Primates back to the Norfolk stage!


Wish worked closely with this laundry powder manufacturer to develop and build a completely new brand. Using extensive qualitative consumer market research and market analysis, Wish developed the new Simply brand, it's 'challenger' packaging and all of the communications to support a national launch campaign to consumers and retailers alike. The product achieved a listing in a majority of the major grocery chains thanks to an innovative and highly creative marketing campaign, which utilised traditional as well as more guerrilla techniques.


TrueDoctors.com is an Internet portal owned by Quality Med Ltd. a company registered in the Republic of Colombia, under fiscal number 900.010.690-1, Quality Med Ltd. was founded in Barcelona (Spain) in 1980.
The two main purposes of this portal are to show the world the high scientific standards of the Colombian medicine and, to facilitate to any patient in the world the possibility of being treated and/or operated by a doctor with at least the very same skills than any doctor in Europe or the USA, but with the costs of a country not economically developed.
Hundreds of patients from all over the globe come every month for surgery in Colombia, and the cost of the surgery, the doctor's fees, the clinic, the hotel and the airfare only amount to three times less than just the surgery in his country of origin. Sometimes the cost has been six and even ten times less, depending on the medical specialty and the surgery involved.
It must be said as well that some of the patients who come either for treatment or surgery, come in order to have corrected an operation not well performed in their country of origin.
Besides the above, in Colombia there's still a human and warm relationship between patient and doctor, which we all need and appreciate.
We encourage you to see photographs and general information about Colombia by clicking here and, don't forget to see our Testimonials.


In my contribution to the 'State of Power' report (and in cooperation with Occupy.com), "State of Europe: How the European Round Table of Industrialists Came to Wage Class War on Europe," I examine the role of a major corporate interest group in shaping the policies of the European Union.
The tightening two-party duopoly has been moving relentlessly in the direction of common funding of candidates by the same privileged interests. The exclusion of independent or third party competitors through costly ballot access hurdles (see: opendebates.org for more information), litigious harassment, and barring them from debates has been well-documented. Gerrymandering into one-party districts has eliminated political competition in many states. Furthermore, there is no "none of the above option" on the ballot to allow for a no-confidence vote. Voters are told either to cast a yes vote or stay home.


text:
Q: JSVC starting tomcat with 2 process if i remove -errfile SYSLOG & -outfile SYSLOG from /etc/init.d We are starting the tomcat through command service tomcat-dev-app start and the file for it is in /etc/init.d/tomcat-dev-app. tomcat starting through JSVC daemon. Till now 2 root and 1 tomcat process is getting created.
Recently we found tomcat logging happening in /var/log/messages also. It was happening from the beginning but now only we observed as one particular application captures huge log in /var/log/messages. Already that application confirmed that they are not sending any logs to /var/log/messages. and this behavior also not for one application. We have 1000s of server and one or the other day there are some tomcat related logging in /var/log/messages.
I removed the highlighted parameter -errfile & -outfile from the /etc/init.d/tomcat-dev-app after which the logging stopped in /var/log/messages but it resulted in getting 1 root and 1 tomcat process getting created instead of 2 root and 1 tomcat process.
could someone please let me know why we used to get 3 process before but after removing this parameter we are getting 2 process through ps -ef | grep java
Also is it fine if we get 2 instead of 3. We need to change the template globally which will be changed in 1000s of server, so i want to understand before changing.
Below is the snippet from my service file. Removing -outfile "SYSLOG" & -errfile "SYSLOG" OR replacing SYSLOG with different path results in creating only 2 process instead of 3 process.
do_start()
{
  "$JSVC" $JSVC_OPTS \
    -java-home "$JAVA_HOME" \
    -user "$TOMCAT_USER" \
    -pidfile "$CATALINA_PID" \
    -wait 10 \
    -outfile "SYSLOG" \
    -errfile "SYSLOG" \
    -classpath "$CLASSPATH" \
    "$LOGGING_CONFIG" $JAVA_OPTS $CATALINA_OPTS \
    -Dcatalina.base="$CATALINA_BASE" \
    -Dcatalina.home="$CATALINA_HOME" \
    -Djava.io.tmpdir="$CATALINA_TMP" \
    $CATALINA_MAIN
  #exit $?
}

redpajama_set_name: RedPajamaStackExchange


God is Grander than we Imagine. God is beyond adequate description, but our inadequate words say this: The Father is the immutable Law that defines what is and how it behaves. The Spirit of Truth is what investigates, tests, knows. Jesus is the love that binds what is and what knows into a coherent whole. Together these eternal essences are God, but as Christians we know that we discover the Father only through Love; that is, through Jesus. Like the disciples, we may be privileged to experience that Love through human hands, but let us remember that Love is of God.
Testing Our Faith. In the spirit of James, the brother of Jesus, I suggest that each of us test our own actions to see if they follow Jesus' teachings. How much of our time and income do we devote to the things of God: feeding the poor, comforting prisoners, establishing justice in the courts and, of course, teaching the gospel? How much of that is, as in the case of supporting our local church, largely for our own convenience? How much is for our own indulgence, as when we sit back and expect sermons to cheer us up? As measured by the intensity of the effort we put in, how sincere is our effort?
I ask these questions because I know an elderly woman who claims to be an agnostic. Yet she has worked tirelessly, over a lifetime, for the dignity, security and well-being of others. She used to give about 5 percent of her income to help the poor and powerless. Now, in old age, she has raised that amount, first to 10 percent and now to 20. Much of her help has been given in person, one-on-one. But now that she cannot get out to do the work in person, she reads each appeal for her funds with hawklike focus, trying to make sure that organizations are delivering their aid effectively. Whatever I might want to believe about my own faithfulness to God, I think she is a better Christian than I will ever be. After all, she is cheerfully doing her good deeds in the expectation of receiving no reward at all. What greater faith in the eternal things of God could there be?
Conclusion of What Does it Mean to be a Christian?
Welcome page Back to first page of What Does it Mean to be a Christian?


Ask Reiki Rays Podcast #41: How Can I Help My Mother Who Is in the Hospital with Infection?
My name is Pat Cunningham.
My mother is in hospital, she's had a superbug – that's what they're calling it – which is resistant to antibiotics. She is allergic to penicillin, she's had intrauterine infections for almost a year now and has been on various antibiotics and sometimes the bugs change.
She's 86 years old. Right now she's in the hospital. She also has weakness in the legs and she has become incontinent, she's been on many drugs, and I don't have any idea what to do. I was wondering if someone could give me some advice.
My name is Tammy Hatherill, I'm a Reiki Master Teacher in Darwin, Australia, and this is a message to answer Patricia's concern that her mom is in hospital and on antibiotics, and not very well.
Patricia, I would really encourage you to send Reiki healing energy back into the past and allow the Reiki's intelligence to go back exactly to the time when your mom first became unwell. Reiki is intelligent as we know, so it will know where and when it all started for your mom and of course you can send it into the future, so send Reiki into the future so that your mom, every day, has beautiful Reiki healing energy before her. The minutes before her – she has the beautiful Reiki healing energy.
And of course, send it into the present, so that she has it.
So therefore your mom will have Reiki healing energy in the past, the present, and the future.
I encourage you to use the Reiki healing symbols, please use the symbols that you've learned in your Reiki as they're really very powerful. And of course, the physical healing, when you go and visit mom, if she's up for it, just give her the physical Reiki healing treatment and that will help also.
And by doing all of these things, I feel that will give you an upliftment in your spirit and an upliftment knowing that you're doing something – because a lot of the time people feel so frustrated because they're not doing something. By sending Reiki you're doing so very much. It will help your mom, and it will help you knowing that you're doing something.
I trust that this helps you in your question and I wish you and your mom all the very best.
Ask Reiki Rays Podcast #46: How Can I Help My Mother Who Is in the Hospital with Infection?
Ask Reiki Rays Podcast #44: How Can I Help My Mother Who Is in the Hospital with Infection?
Its really nice that each and every aritcle and every quesion give us hints on how we can use Reiki in our daily life.
Its so so nice , and thanks a lot.


text:
The worst chess game ever
By Nettie A. Casper	 On Nov 2, 2021
Throughout our lives, we continue to strive for the best. The best colleges, best places to work, best vacation spots, etc. The list is endless. Of course, in our chess world, we also follow this same trend and look for the best games and the best players of all time.
I wonder why no one is looking for the worst? [Ed. Note: We are sometimes!] Well, there is no point in looking for the worst chess player since he is well known. At least, if we trust US Secretary of State Henry Kissinger in 1972, who called GM Bobby fischer and introduced himself as "the world's worst chess player … calling himself the world's best player".
But what about the worst game of chess ever played? You might wonder why we would even need to research such a horrible game. Well, besides the obvious human curiosity, there is an obvious utility that such a game could provide. Suppose you are a beginner chess player: which game would you rather analyze, one-by-two super GM played with almost 100% accuracy, or the following game, which I saw as a child in one of my first books? 'failures?
I don't know about you, but I smiled when I first saw this game. Meanwhile, the near-perfect game played by two super-GMs would have just bored me by then. Plus, learning this outrageous game, where Black was tamed in just three moves, assured me that I would never lose a game the same way, as happened in the Chess Olympiad there. not so long ago:
So what criteria should we use to determine the worst game ever played? If this is just educational value that demonstrates what you should never do in chess, then the following "game" would be near the top of my list of the worst of all time:
To be fair, those horrible king moves didn't cause excessive damage (most of us would still lose to GM Magnus carlsen even after he played 2. Ke2 ??). Should we then consider the degree of damage caused by a bad blow? If so, few games can compete with such ultimate blunders as the following well-known examples.
We are all guilty of saying something like "I just played the worst game in all of chess history" after losing a particularly painful game. GM Tigran Petrosian probably thought the same after making an outrageous blunder in a very important tournament.
I just don't think it's fair to call a game "the worst ever" based on a single mistake, no matter how bad it was. For example, the Petrosian game above is actually a great example of constricting an opponent. in fact, without the tragic blunder, it would have been added to Petrosian's collection of positional masterpieces.
It is obvious that to be considered "the worst of all time", a game must always be played poorly from start to finish. Take for example the following game:
When one of the best grandmasters in the world behaves like an amateur player, you know the game is very bad. By the way, my apologies to amateur players, I know a lot of you can play better than that!
Yet even games where really bad moves were played from start to finish may not always be good material for our contest. Take, for example, the following notorious game:
It is a well known fact that this game was played under protest just like this infamous contest:
And I don't even want to know what kind of events forced two masters to produce the following recent gem:
As you can see, it is not easy to determine the worst game of chess ever played. Therefore, when IM Ali Mortazavi tweeted that he would like to name the worst game of chess, I was quite skeptical. However, looking at the game I think he has a valid point. Judge by yourself :
While blunders are an integral part of bullet chess, here it was a bit too much. Six consecutive checkmate blunders in one in three moves, by players over 2400 must be the world record. Seven blunders like this in a game that only lasted 15 moves, it's also a hard record to beat!
So, is this the worst game ever, or do you, my dear readers, have your own nominations? Let us know in the comments below!
3-player brain-burning chess game!
Phish challenges fans to online chess game on New Years Eve 2020
Chess: 'Game of the Year' decides title as Covid-19 hits Russian championship | Chess
With four additional squares, this chess game has a sure winner!
Dane County Judge Holds Court-Style Chess Game

redpajama_set_name: RedPajamaCommonCrawl


text:
IndianGlam.com
Kayne West premiers new songs for a Social Networking site
Doctors won't be prosecuted over MJ's death
Alternative Metal Band Ill Nino cancels Tour
Emma Thompson to get her own star on Hollywood Walk of Fame
Daniel Craig to star in Remake of The Girl With The Dragon Tattoo
Pakistani Bowler Mohammad Asif in Malayalam Movie
Home>>Hollywood>>Daniel Craig to star in Remake of The Girl With The Dragon Tattoo
IndianGlamJuly 28, 20100
English actor Daniel Craig, who played the role of James Bond in Casino Royale and Quantum of Solace, is going to star in the US remake of 2009 Swedish film The Girl with the Dragon Tattoo. The original movie was made from a novel with the same title, which was written by Stieg Larsson.
British actress Carey Mulligan will essay the role of Lisbeth Salander, the titular girl. Craig will be playing the journalist Mikael Blomkvist, who will be assisted by Salander in the investigations.
The English version of The Girl with the Dragon Tattoo will be directed by David Fincher and the script is penned by Steve Zaillian. The movie is likely to be released in theaters by next year.
Craig will be seen investigating the mystery of a missing girl, which leads to a string of decades-old murders. The 42-year old actor has taken up the role following the indefinite delaying of the latest James Bond movie.
The writer of the novel Larsson died in 2004, one year prior to the publishing of the first of his Millennium trilogy crime novels. In his native Sweden, the series of his books was made into film with Michael Nyqvist playing the journalist Mikael Blomkvist and Noomi Rapace playing the computer hacker Salander.
—Sampurn Wire
Related tags : Daniel CraigDavid FincherEnglish actorJames BondLisbeth SalanderSteve ZaillianSwedish filmThe Girl With The Dragon Tattoo
Creed Rock Band gets in Studio before Summer Tour
George Clooney Testifies
John never liked 'Sex Pistols'
Elton John's Concert Postponed due to Food Poisoning
Halle Berry and Nahla Aubry's day out
Sriram Samiksha to co-star Naga Chaitanya in his next Telugu Movie
Smriti Irani's first Bengali Movie Amrita to be released
Uro Chithi to commence shooting
Priyamani Eyes Bollywood
Mohanlal starrer Casanova to be shot in Bangkok
Vanessa Williams in Desperate Housewives
| Theme By WPOperation


text:
CSI, akronymet har forskellige betydninger:

 Center for Software Innovation – CSI er en del af den Jysk-fynske IT-satsning, der blev igangsat af Ministeriet for Videnskab, Teknologi og Udvikling i 2002.
 CSI: Crime Scene Investigation – TV-serie.
 CSI: Miami – TV-serie
 CSI: New York – TV-serie
 Crime Scene Investigation – computerspil.

redpajama_set_name: RedPajamaWikipedia


Evidently not as I and many others like me can not hear other players footsteps in any mode at all.
I don't know what to tell you. I can hear people absolutely fine. Do you have your audio mixed too much towards party chat?
Your headset must be broken. I am not saying that in a mean way, but I have no clue how the footsteps would be weird.
Footsteps are far from quite. I can hear them from the cargo ship if the enemy is by the road in front. Maybe they are using dead silence? If it's that big of a problem pop Awareness. If you want to improve in Blackout you have to make use of Equipment, traps, throwables, and perks.
Yup...the footstep sounds in BlackOut are terrible. The directional quality is mediocre at best and definitely needs improvement, but my biggest gripe is your own footsteps and your teammates footsteps. I understand that the footsteps of my character and my teammates need to be loud for enemy players to hear, but they're are too loud for me and my team.
They need to lower the volume of your & your teammates footsteps sound like to you, but keep the volume where it's at for how you sound to enemy players. My footsteps and my teammates footsteps are so loud, I often can't hear enemies around me. I also think it might be a good idea to make enemy footsteps a slightly different sound or pitch, compared to your own or your teammates.
I know it makes no sense in a real life situation. obviously irl your own footsteps would be louder than someone 50 feet away from you, but it's a video game, and these changes would make the gameplay better.
Just downloaded the patch and they are noticeably better in multiplayer.


text:
.class Landroid/hardware/input/ITabletModeChangedListener$Stub$Proxy;
.super Ljava/lang/Object;
.source "ITabletModeChangedListener.java"

# interfaces
.implements Landroid/hardware/input/ITabletModeChangedListener;

# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
    value = Landroid/hardware/input/ITabletModeChangedListener$Stub;
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0xa
    name = "Proxy"
.end annotation

# instance fields
.field private mRemote:Landroid/os/IBinder;

# direct methods
.method constructor <init>(Landroid/os/IBinder;)V
    .locals 0
    .param p1, "remote"    # Landroid/os/IBinder;

    .prologue
    .line 62
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 64
    iput-object p1, p0, Landroid/hardware/input/ITabletModeChangedListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;

    .line 62
    return-void
.end method

# virtual methods
.method public asBinder()Landroid/os/IBinder;
    .locals 1

    .prologue
    .line 68
    iget-object v0, p0, Landroid/hardware/input/ITabletModeChangedListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;

    return-object v0
.end method

.method public getInterfaceDescriptor()Ljava/lang/String;
    .locals 1

    .prologue
    .line 72
    const-string/jumbo v0, "android.hardware.input.ITabletModeChangedListener"

    return-object v0
.end method

.method public onTabletModeChanged(JZ)V
    .locals 5
    .param p1, "whenNanos"    # J
    .param p3, "inTabletMode"    # Z
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Landroid/os/RemoteException;
        }
    .end annotation

    .prologue
    const/4 v1, 0x1

    .line 77
    invoke-static {}, Landroid/os/Parcel;->obtain()Landroid/os/Parcel;

    move-result-object v0

    .line 79
    .local v0, "_data":Landroid/os/Parcel;
    :try_start_0
    const-string/jumbo v2, "android.hardware.input.ITabletModeChangedListener"

    invoke-virtual {v0, v2}, Landroid/os/Parcel;->writeInterfaceToken(Ljava/lang/String;)V

    .line 80
    invoke-virtual {v0, p1, p2}, Landroid/os/Parcel;->writeLong(J)V

    .line 81
    if-eqz p3, :cond_0

    :goto_0
    invoke-virtual {v0, v1}, Landroid/os/Parcel;->writeInt(I)V

    .line 82
    iget-object v1, p0, Landroid/hardware/input/ITabletModeChangedListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;

    const/4 v2, 0x1

    const/4 v3, 0x0

    const/4 v4, 0x1

    invoke-interface {v1, v2, v0, v3, v4}, Landroid/os/IBinder;->transact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
    :try_end_0
    .catchall {:try_start_0 .. :try_end_0} :catchall_0

    .line 85
    invoke-virtual {v0}, Landroid/os/Parcel;->recycle()V

    .line 75
    return-void

    .line 81
    :cond_0
    const/4 v1, 0x0

    goto :goto_0

    .line 84
    :catchall_0
    move-exception v1

    .line 85
    invoke-virtual {v0}, Landroid/os/Parcel;->recycle()V

    .line 84
    throw v1
.end method

redpajama_set_name: RedPajamaGithub


You could have a lot of things from modern installations that may be done with most advanced kind of materials and methods. One of these is the professional spray foam insulation in NC an item that has long been in development for home and building owners. This is one of the more amazing stuff that you can have these days.
This will address concerns for the home that needs good weather sealing or protection for instance. It is also one thing that might give your structure the sort of quality that can address environmental concerns. The foam is also one of the best of materials in insulating terms as well as one that is affordable.
For consumers, getting this is simply a matter of contacting a contractor or materials supplier for this item. In fact it is not a hard thing to do if you want to do it DIY. You could only make this a thing that is not fixed or not able to really fit all your spaces, those that have to be filled in or perhaps adjusted to give the foam good traction.
However, it only needs little adjustment, which could mean the contractor or you taking down some trusses or attachments in the attic. This is the space that is usually set up with the insulation or perhaps some thinner portion or layer just below the roof or perhaps attached to the ceiling. Actually, you simply need this layer done to have a perfect set up.
Foam being what it is, it is often provided in liquid form prior to the job. The products that are in the market can come in cans or gallon jars or perhaps provided directly from contractor stocks. This means that your contractor could come in with the crew to do the job and also have a small tank truck with the stuff.
The smaller products found or available commercially may be good for some repairs to cracks or added layers. You cannot usually do the job of installing well with these. Because the need is for some volume much larger than cans or jars can provide, and the tank truck can basically bring in the needed volume.
This is a thing that will work well with even the older and more traditional structures in the domestic scene. And it will be an essential part of construction for some of the most advanced buildings in cities, from the already classic glass and steel to modular ones. The installation is easy to do, but it becomes even faster with experts.
Mostly, this creates an airtight sealing that even obstructions cannot impede. Because it can be sprayed on with thickness and without air pockets, it can go around things like posts, trusses and the holes made by these. This works like roof sealants, but is more versatile.
The sealing process is going to be permanent, and will be durable. And while strong, the item or material is not that hard to take out when needed. It is not a fire hazard and may in fact be a fire retardant, which adds to home security.


text:
Rural Settlement Expansion and its Effect on Food Security in Salanpur, West Bengal, India
Rural Settlement, Expansion, Salanpur, Food Security, PR Index, SI Index, FISI, West Bengal, India
Sumana Nandi
Research Scholar
Tapas Mistri
Assistant Professor,The University of Burdwan.
The settlement may be viewed as the manifestation of delicate human-nature interaction and cultural impression of humanity in the landscape system. With the progress of civilisation, the perception of use of natural resources and cultural development become ever-changing phenomena that causes the changes in the rural settlement all over the world. Salanpur C.D. Block of Paschim Bardhhaman district has registered an unusual settlement arrangement and spatio-temporal changes. Using satellite imageries and competent GIS technologies it is observed that an unplanned growth of rural settlement has developed in this part of West Bengal. This paper examines the spatio-temporal dynamics of the rural settlement over ten years (2008-2018), employing PR index, and SI index. In doing so, it, analyses the dynamic change of rural settlement at Gram Panchayat Level and its relation with overall land-use in the study area. This paper also envisages how the rural settlement expansion affects the various dimension of food security in Salanpur C. D. Block.
Along with this, the Spearman Rank-order Correlation Coefficient (rho=p) is also applied to comprehend the effect of the rural settlement expansion on regional food security. Growth of rural settlement towards productive agricultural land, unequal access to food, insufficiency in clean water, sanitation, and health care facility are also indicators of increasing threat to the long run food security of the people in the study area. The result shows a positive correlation between the rural settlement expansion index (SI) and food insecurity Index (FISI), it indicating that if the rural settlements expand, it would enhance the risk of food insecurity of the area. Development and growth are the buzz of the modern era, but the dark side of it is that destruction of agricultural lands would be ultimately responsible for food insecurity and uneven economic growth. The findings suggest that lopsided and unplanned growth of settlements is pose threats on food security of the study area. Therefore, sound planning is required to come out of these potential threats for the sake of the inhabitants.
Nandi, S., & Mistri, T. (2019). Rural Settlement Expansion and its Effect on Food Security in Salanpur, West Bengal, India. Space and Culture, India, 6(5), 198-214. https://doi.org/10.20896/saci.v6i5.346
Tapas Mistri, Assistant Professor,The University of Burdwan.
Assistant Professor,Department of Geography, The University of Burdwan.
Acharya, S. (2009). Food Security and Indian Agriculture: Policies, Production
Performance and Marketing Environment. Agricultural Economics Research Review, 22, 1-19.
Bar-Massada, A., Radeloff, V., & Stewart, S. (2014). Biotic and Abiotic Effects of Human Settlement in the Wild land-Urban Interface. Bioscience, 64(5), 429-437. doi:10.1093/biosci/biu039
Beil, K., Budds, M., Hicks, E., Kennedy, D., Rencher, K., & Iannarone, S. (2014). Land Use Planning for Secure Regional Food Systems. Retrieved from: https://www.researchgate.net/publication/255650805_Land_Use_and_Planning_for_Secure_Regional_Food_Systems.
Bezbaruah, M. (2013). A Discussion in Light of India's National Food Security Act. Space and Culture, India, 1(2), 3-11. https://doi.org/10.20896/saci.v1i2.25
Bulkhairova S.Z., Gaukhar Amangeldievna Saimagambetova, G.A., Kizimbayeva, A. Kadyrova,G.M. and Abdiyeva,S.R. (2019). Situation of Food Security in Kazakhstan, Journal Space and Culture, India, 6(5), https://doi.org/10.20896/saci.v6i5.469
Chattopadhyay, E. (2000). Bardhaman Jelar Itihas O Sanskriti/ Pratham Khanda. In: Radical Impression, pp.11-28
Chen, J. (2007). Rapid urbanisation in China: A real challenge to soil protection and food security. Catena, 69(1), 1-15. Doi: 10.1016/j.catena.2006.04.019
Datt, R. & Sundharam, K.P.M. (2002). Indian Economy, S. Chand & Company LTD. [ISBN: 81-219-2045-0], pp. 481-499
Dhinwa, P.S., Pathan, S.K., Sastry, S.V.C., Rao, M., Majumder, K.L., Chotani, M.L., Singh, J.P., & Sinha, R.L.P. (1992). Land use change analysis of Bharatpur district using GIS. The Indian Society of Remote Sensing, 20(4), 237-250. https://doi.org/10.1007/BF03001921
District Census Handbook (2011). Census of India (2011), Series 20, Part XII-A, Directorate of Census Operations.
District Statistical Handbook (2008). Bureau of Applied Economics and Statistics, Department of Planning Statistics and Programme Monitoring.
District Statistical Handbook Burdwan (2015). Bureau of Applied Economics and Statistics, Department of Planning Statistics and Programme Monitoring.
FAO. (1996). Rome declaration on world food security and world food summit plan of action. Rome: FAO.
Gahukar, R.T. (2011). Food Security in India: The Challenge of Food Production and Distribution. Journal of Agricultural & Food Information. Taylor & Francis Group, 12, 270–286, ISSN: 1049-6505 print / 1540-4722 online, DOI: 10.1080/10496505.2011.588932
Ismail, M., & Mustaquim, M. (2013). Impact of Occupational Structure on Household
Food Security in Malda District (West Bengal). International Journal of Innovative Research and Development. 2(1), 76-88, ISSN: 2278 – 0211 (Online)
Jones, D. A., Ngure, M. F., Peltro, G., & Young, L.S. (2013). What Are We Assessing When We Measure Food Security? A Compendium and Review of Current Metrics Advances in Nutrition.4: 481–505, 2013; doi:10.3945/an.113.004119.
Karmakar, S. & Sarkar, D. (2014). Income Inequality, Poverty and Food Security in West Bengal, India. Journal of Social Science Studies. 1(1), ISSN 2329-9150, 31-43, doi:10.5296/jsss.v1i1.4170
Koner, K. (2018). Sanitation and Hygiene of Darjeeling City: A Crisis for Women and Adolescent Girls. Space and Culture, India, 5(3), 89-105. https://doi.org/10.20896/saci.v5i3.292
Kumar, A., Bantilan, M.C.S., Kumar, P., Kumar, S. & Jee, S. (2012). Food Security in India: Trends, Patterns and Determinants. Ind. Jn. of Agri. Econ. 67(3), 445-463.
Lambin, E., Turner, B.L., Geist, J.H., Agbola, B.S., Angelsen, A. et al., (2001). The causes of land-use and land-cover change: moving beyond the myths. Global Environmental Change, 11(4), 261-269. Retrieved from: https://doi.org/10.1016/S0959-3780 (01)00007-3
Mandal, J. & Sanyal, S.(2019).Geospatial Analysis of Fluoride Concentration in Groundwater in Puruliya District, West Bengal, Journal Space and Culture, India, 6(5),71-86, https://doi.org/10.20896/saci.v6i5.369
Matuschke, I. (2009). Rapid urbanisation and food security: Using food density maps to identify future food security hotspots. Contributed paper prepared for presentation at the International Association of Agricultural Economists Conference, Beijing, China, August 16-22, 2009.
Mohanty, B. & Mishra, S. (2018).Statistics for Behavioural and Social Sciences, SAGE Publications India Pvt Ltd, ISBN 978-93-515-0181-7,708-712.
Ramachandram, P. (2018). Role of Health Services in Nutrition, Yojana: A Development Monthly, 62, ISSN 0971-8400
Report on the State of Food Insecurity in Rural India (2008).M. S. Swaminathan Research Foundation & WFP, ISBN: 81-88355-06-2, Nagaraj and Company Private Limited.
Report on the State of Food Insecurity in Urban India (2010).M. S. Swaminathan Research Foundation & WFP, ISBN: 978-81-88355-21-1, Nagaraj and Company Private Limited.
Ritchie, H., Reay, D., & Higgins, P. (2018). Sustainable Food Security in India- Domestic Production and Macronutrient Availability. PLOS ONE. 13(3), 1-17, e0193766. Retrieved from https://doi.org/10.1371/journal.pone.0193766
Sarkar, A. (2010). Analysis of Human Settlement Patterns Using RS and GIS in the Plains of West Bengal. e Traverse, 1(1), 1-16.
Sarkar, S. & Shekhar, C. (2017). Household Food Insecurity and Coping Strategies
in a Rural Community of West Bengal. Social Science Spectrum. 3(1), 16-26, ISSN 2454-2806
Siddique, G., & Mukherjee, N. (2017). Transformation of Agricultural Land for Urbanisation, Infrastructural Development and Question of Future Food Security: Cases from Parts of Hugli District, West Bengal. Space and Culture, India, 5(2), 47-68. https://doi.org/10.20896/saci.v5i2.269
Singh, K. (2014). Food Security in India: Performance and Concerns. IOSR Journal of Humanities and Social Science (IOSR-JHSS). 19(7), 106-119, e-ISSN: 2279-0837, p-ISSN: 2279-0845
Szabo, S. (2016) Urbanisation and Food Insecurity Risks: Assessing the Role of Human Development, Oxford Development Studies, (44)1, 28-48, DOI:10.1080/13600818.2015.1067292
Tan, M., Li, X., Xie, H., & Lu, C. (2005). Urban land expansion and arable land loss in China—a case study of Beijing–Tianjin–Hebei region. Land Use Policy, 22(3), 187-196. Retrieved from: https://doi.org/10.1016/j.landusepol.2004.03.003
Tian, G., Yang, Z., & Zhang, Y. (2007). The Spatio-Temporal Dynamic Pattern of Rural Residential Land in China in the 1990s Using Landsat TM Images and GIS. Environ Manage, 40, 803–813. DOI 10.1007/s00267-006-0048-6
Verburg, H., Chen, Y. & Veldkamp, T. (2000). Spatial explorations of land use change
and grain production in China. Elsevier, Agriculture, Ecosystems and Environment 82 (2000) 333–354.www.elsevier.com/locate/agee
Xie, Y., Yu, M. Guangjin, T., & Xuerong, X. (2005). Socio-economic driving forces of arable land conversion: A case study of Wuxian City, China. Global Environmental Change, 15 (2005) 238–252. doi:10.1016/j.gloenvcha.2005.03.002a
Zhupley, I., Potenko, T., Gubarkov, S., Tretyak, N., & Grafov, R. (2018). Structural Shifts and Reform of the Agrarian Sector of the Russian Economy under the Conditions of the Import Substitution Policy. Space and Culture, India, 6(4), 25-35. https://doi.org/10.20896/saci.v6i4.385


Console / desktop enclosures · Phoenix Mecano Ltd.
Console enclosures and desktop enclosures are available for many different applications. The wide selection of our desktop enclosure range is made possible with the use of many different materials, shapes and sizes. Designs with air vents are especially necessary in those sectors where there is intensive heat development in the enclosure. These range from enclosures for checkout systems to telecommunications systems to enclosures for mini PCs. Thanks to a recessed surface, our console enclosures provide an ideal option for the fitting of all kinds of membrane keypads, and are all designed according to ergonomic guidelines.


text:
/**
 * @license Angular UI Tree v2.0.13
 * (c) 2010-2014. https://github.com/JimLiu/angular-ui-tree
 * License: MIT
 */
(function () {
  'use strict';

  angular.module('ui.tree', [])
    .constant('treeConfig', {
      treeClass: 'angular-ui-tree',
      emptyTreeClass: 'angular-ui-tree-empty',
      hiddenClass: 'angular-ui-tree-hidden',
      nodesClass: 'angular-ui-tree-nodes',
      nodeClass: 'angular-ui-tree-node',
      handleClass: 'angular-ui-tree-handle',
      placeHolderClass: 'angular-ui-tree-placeholder',
      dragClass: 'angular-ui-tree-drag',
      dragThreshold: 3,
      levelThreshold: 30
    });

})();

(function () {
  'use strict';

  angular.module('ui.tree')

   /**
    * @ngdoc service
    * @name ui.tree.service:$helper
    * @requires ng.$document
    * @requires ng.$window
    *
    * @description
    * angular-ui-tree.
    */
    .factory('$uiTreeHelper', ['$document', '$window',
      function ($document, $window) {
        return {

          /**
           * A hashtable used to storage data of nodes
           * @type {Object}
           */
          nodesData: {
          },

          setNodeAttribute: function(scope, attrName, val) {
            var data = this.nodesData[scope.$modelValue.$$hashKey];
            if (!data) {
              data = {};
              this.nodesData[scope.$modelValue.$$hashKey] = data;
            }
            data[attrName] = val;
          },

          getNodeAttribute: function(scope, attrName) {
            var data = this.nodesData[scope.$modelValue.$$hashKey];
            if (data) {
              return data[attrName];
            }
            return null;
          },

          /**
           * @ngdoc method
           * @methodOf ui.tree.service:$nodrag
           * @param  {Object} targetElm angular element
           * @return {Bool} check if the node can be dragged.
           */
          nodrag: function (targetElm) {
            return (typeof targetElm.attr('data-nodrag')) != "undefined";
          },

          /**
           * get the event object for touchs
           * @param  {[type]} e [description]
           * @return {[type]}   [description]
           */
          eventObj: function(e) {
            var obj = e;
            if (e.targetTouches !== undefined) {
              obj = e.targetTouches.item(0);
            } else if (e.originalEvent !== undefined && e.originalEvent.targetTouches !== undefined) {
              obj = e.originalEvent.targetTouches.item(0);
            }
            return obj;
          },

          dragInfo: function(node) {
            return {
              source: node,
              sourceInfo: {
                nodeScope: node,
                index: node.index(),
                nodesScope: node.$parentNodesScope
              },
              index: node.index(),
              siblings: node.siblings().slice(0),
              parent: node.$parentNodesScope,

              moveTo: function(parent, siblings, index) { // Move the node to a new position
                this.parent = parent;
                this.siblings = siblings.slice(0);
                var i = this.siblings.indexOf(this.source); // If source node is in the target nodes
                if (i > -1) {
                  this.siblings.splice(i, 1);
                  if (this.source.index() < index) {
                    index--;
                  }
                }
                this.siblings.splice(index, 0, this.source);
                this.index = index;
              },

              parentNode: function() {
                return this.parent.$nodeScope;
              },

              prev: function() {
                if (this.index > 0) {
                  return this.siblings[this.index - 1];
                }
                return null;
              },

              next: function() {
                if (this.index < this.siblings.length - 1) {
                  return this.siblings[this.index + 1];
                }
                return null;
              },

              isDirty: function() {
                return this.source.$parentNodesScope != this.parent ||
                        this.source.index() != this.index;
              },

              eventArgs: function(elements, pos) {
                return {
                  source: this.sourceInfo,
                  dest: {
                    index: this.index,
                    nodesScope: this.parent
                  },
                  elements: elements,
                  pos: pos
                };
              },

              apply: function() {
                var nodeData = this.source.$modelValue;
                this.source.remove();
                this.parent.insertNode(this.index, nodeData);
              }
            };
          },

          /**
          * @ngdoc method
          * @name hippo.theme#height
          * @methodOf ui.tree.service:$helper
          *
          * @description
          * Get the height of an element.
          *
          * @param {Object} element Angular element.
          * @returns {String} Height
          */
          height: function (element) {
            return element.prop('scrollHeight');
          },

          /**
          * @ngdoc method
          * @name hippo.theme#width
          * @methodOf ui.tree.service:$helper
          *
          * @description
          * Get the width of an element.
          *
          * @param {Object} element Angular element.
          * @returns {String} Width
          */
          width: function (element) {
            return element.prop('scrollWidth');
          },

          /**
          * @ngdoc method
          * @name hippo.theme#offset
          * @methodOf ui.nestedSortable.service:$helper
          *
          * @description
          * Get the offset values of an element.
          *
          * @param {Object} element Angular element.
          * @returns {Object} Object with properties width, height, top and left
          */
          offset: function (element) {
            var boundingClientRect = element[0].getBoundingClientRect();

            return {
                width: element.prop('offsetWidth'),
                height: element.prop('offsetHeight'),
                top: boundingClientRect.top + ($window.pageYOffset || $document[0].body.scrollTop || $document[0].documentElement.scrollTop),
                left: boundingClientRect.left + ($window.pageXOffset || $document[0].body.scrollLeft  || $document[0].documentElement.scrollLeft)
              };
          },

          /**
          * @ngdoc method
          * @name hippo.theme#positionStarted
          * @methodOf ui.tree.service:$helper
          *
          * @description
          * Get the start position of the target element according to the provided event properties.
          *
          * @param {Object} e Event
          * @param {Object} target Target element
          * @returns {Object} Object with properties offsetX, offsetY, startX, startY, nowX and dirX.
          */
          positionStarted: function (e, target) {
            var pos = {};
            pos.offsetX = e.pageX - this.offset(target).left;
            pos.offsetY = e.pageY - this.offset(target).top;
            pos.startX = pos.lastX = e.pageX;
            pos.startY = pos.lastY = e.pageY;
            pos.nowX = pos.nowY = pos.distX = pos.distY = pos.dirAx = 0;
            pos.dirX = pos.dirY = pos.lastDirX = pos.lastDirY = pos.distAxX = pos.distAxY = 0;
            return pos;
          },

          positionMoved: function (e, pos, firstMoving) {
            // mouse position last events
            pos.lastX = pos.nowX;
            pos.lastY = pos.nowY;

            // mouse position this events
            pos.nowX  = e.pageX;
            pos.nowY  = e.pageY;

            // distance mouse moved between events
            pos.distX = pos.nowX - pos.lastX;
            pos.distY = pos.nowY - pos.lastY;

            // direction mouse was moving
            pos.lastDirX = pos.dirX;
            pos.lastDirY = pos.dirY;

            // direction mouse is now moving (on both axis)
            pos.dirX = pos.distX === 0 ? 0 : pos.distX > 0 ? 1 : -1;
            pos.dirY = pos.distY === 0 ? 0 : pos.distY > 0 ? 1 : -1;

            // axis mouse is now moving on
            var newAx   = Math.abs(pos.distX) > Math.abs(pos.distY) ? 1 : 0;

            // do nothing on first move
            if (firstMoving) {
              pos.dirAx  = newAx;
              pos.moving = true;
              return;
            }

            // calc distance moved on this axis (and direction)
            if (pos.dirAx !== newAx) {
              pos.distAxX = 0;
              pos.distAxY = 0;
            } else {
              pos.distAxX += Math.abs(pos.distX);
              if (pos.dirX !== 0 && pos.dirX !== pos.lastDirX) {
                pos.distAxX = 0;
              }

              pos.distAxY += Math.abs(pos.distY);
              if (pos.dirY !== 0 && pos.dirY !== pos.lastDirY) {
                pos.distAxY = 0;
              }
            }

            pos.dirAx = newAx;
          }
        };
      }
    ]);

})();
(function () {
  'use strict';

  angular.module('ui.tree')

    .controller('TreeController', ['$scope', '$element', '$attrs', 'treeConfig',
      function ($scope, $element, $attrs, treeConfig) {
        this.scope = $scope;

        $scope.$element = $element;
        $scope.$nodesScope = null; // root nodes
        $scope.$type = 'uiTree';
        $scope.$emptyElm = null;
        $scope.$callbacks = null;

        $scope.dragEnabled = true;
        $scope.maxDepth = 0;
        $scope.dragDelay = 0;

        // Check if it's a empty tree
        $scope.isEmpty = function() {
          return ($scope.$nodesScope && $scope.$nodesScope.$modelValue
            && $scope.$nodesScope.$modelValue.length === 0);
        };

        // add placeholder to empty tree
        $scope.place = function(placeElm) {
          $scope.$nodesScope.$element.append(placeElm);
          $scope.$emptyElm.remove();
        };

        $scope.resetEmptyElement = function() {
          if ($scope.$nodesScope.$modelValue.length === 0) {
            $element.append($scope.$emptyElm);
          } else {
            $scope.$emptyElm.remove();
          }
        };

        var collapseOrExpand = function(scope, collapsed) {
          var nodes = scope.childNodes();
          for (var i = 0; i < nodes.length; i++) {
            collapsed ? nodes[i].collapse() : nodes[i].expand();
            var subScope = nodes[i].$childNodesScope;
            if (subScope) {
              collapseOrExpand(subScope, collapsed);
            }
          }
        };

        $scope.collapseAll = function() {
          collapseOrExpand($scope.$nodesScope, true);
        };

        $scope.expandAll = function() {
          collapseOrExpand($scope.$nodesScope, false);
        };

      }
    ]);
})();

(function () {
  'use strict';

  angular.module('ui.tree')

    .controller('TreeNodesController', ['$scope', '$element', '$timeout', 'treeConfig',
      function ($scope, $element, $timeout, treeConfig) {
        this.scope = $scope;

        $scope.$element = $element;
        $scope.$modelValue = null;
        $scope.$nodeScope = null; // the scope of node which the nodes belongs to
        $scope.$treeScope = null;
        $scope.$type = 'uiTreeNodes';
        $scope.$nodesMap = {};

        $scope.nodrop = false;
        $scope.maxDepth = 0;

        $scope.initSubNode = function(subNode) {
          $timeout(function() {
            $scope.$nodesMap[subNode.$modelValue.$$hashKey] = subNode;
          });
        };

        $scope.destroySubNode = function(subNode) {
          $scope.$nodesMap[subNode.$modelValue.$$hashKey] = null;
        };

        $scope.accept = function(sourceNode, destIndex) {
          return $scope.$treeScope.$callbacks.accept(sourceNode, $scope, destIndex);
        };

        $scope.isParent = function(node) {
          return node.$parentNodesScope == $scope;
        };

        $scope.hasChild = function() {
          return $scope.$modelValue.length > 0;
        };

        $scope.safeApply = function(fn) {
          var phase = this.$root.$$phase;
          if(phase == '$apply' || phase == '$digest') {
            if(fn && (typeof(fn) === 'function')) {
              fn();
            }
          } else {
            this.$apply(fn);
          }
        };

        $scope.removeNode = function(node) {
          var index = $scope.$modelValue.indexOf(node.$modelValue);
          if (index > -1) {
            $scope.safeApply(function() {
              $scope.$modelValue.splice(index, 1)[0];
            });
            return node;
          }
          return null;
        };

        $scope.insertNode = function(index, nodeData) {
          $scope.safeApply(function() {
            $scope.$modelValue.splice(index, 0, nodeData);
          });
        };

        $scope.childNodes = function() {
          var nodes = [];
          if ($scope.$modelValue) {
            for (var i = 0; i < $scope.$modelValue.length; i++) {
              nodes.push($scope.$nodesMap[$scope.$modelValue[i].$$hashKey]);
            }
          }
          return nodes;
        };

        $scope.depth = function() {
          if ($scope.$nodeScope) {
            return $scope.$nodeScope.depth();
          }
          return 0; // if it has no $nodeScope, it's root
        };

        // check if depth limit has reached
        $scope.outOfDepth = function(sourceNode) {
          var maxDepth = $scope.maxDepth || $scope.$treeScope.maxDepth;
          if (maxDepth > 0) {
            return $scope.depth() + sourceNode.maxSubDepth() + 1 > maxDepth;
          }
          return false;
        };

      }
    ]);
})();
(function () {
  'use strict';

  angular.module('ui.tree')

    .controller('TreeNodeController', ['$scope', '$element', '$attrs', 'treeConfig',
      function ($scope, $element, $attrs, treeConfig) {
        this.scope = $scope;

        $scope.$element = $element;
        $scope.$modelValue = null; // Model value for node;
        $scope.$parentNodeScope = null; // uiTreeNode Scope of parent node;
        $scope.$childNodesScope = null; // uiTreeNodes Scope of child nodes.
        $scope.$parentNodesScope = null; // uiTreeNodes Scope of parent nodes.
        $scope.$treeScope = null; // uiTree scope
        $scope.$handleScope = null; // it's handle scope
        $scope.$type = 'uiTreeNode';
        $scope.$$apply = false; //

        $scope.collapsed = false;

        $scope.init = function(controllersArr) {
          var treeNodesCtrl = controllersArr[0];
          $scope.$treeScope = controllersArr[1] ? controllersArr[1].scope : null;

          // find the scope of it's parent node
          $scope.$parentNodeScope = treeNodesCtrl.scope.$nodeScope;
          // modelValue for current node
          $scope.$modelValue = treeNodesCtrl.scope.$modelValue[$scope.$index];
          $scope.$parentNodesScope = treeNodesCtrl.scope;
          treeNodesCtrl.scope.initSubNode($scope); // init sub nodes

          $element.on('$destroy', function() {
            treeNodesCtrl.scope.destroySubNode($scope); // destroy sub nodes
          });
        };

        $scope.index = function() {
          return $scope.$parentNodesScope.$modelValue.indexOf($scope.$modelValue);
        };

        $scope.dragEnabled = function() {
          return !($scope.$treeScope && !$scope.$treeScope.dragEnabled);
        };

        $scope.isSibling = function(targetNode) {
          return $scope.$parentNodesScope == targetNode.$parentNodesScope;
        };

        $scope.isChild = function(targetNode) {
          var nodes = $scope.childNodes();
          return nodes && nodes.indexOf(targetNode) > -1;
        };

        $scope.prev = function() {
          var index = $scope.index();
          if (index > 0) {
            return $scope.siblings()[index - 1];
          }
          return null;
        };

        $scope.siblings = function() {
          return $scope.$parentNodesScope.childNodes();
        };

        $scope.childNodesCount = function() {
          return $scope.childNodes() ? $scope.childNodes().length : 0;
        };

        $scope.hasChild = function() {
          return $scope.childNodesCount() > 0;
        };

        $scope.childNodes = function() {
          return $scope.$childNodesScope && $scope.$childNodesScope.$modelValue ?
              $scope.$childNodesScope.childNodes() :
              null;
        };

        $scope.accept = function(sourceNode, destIndex) {
          return $scope.$childNodesScope && $scope.$childNodesScope.accept(sourceNode, destIndex);
        };

        $scope.remove = function() {
          return $scope.$parentNodesScope.removeNode($scope);
        };

        $scope.toggle = function() {
          $scope.collapsed = !$scope.collapsed;
        };

        $scope.collapse = function() {
          $scope.collapsed = true;
        };

        $scope.expand = function() {
          $scope.collapsed = false;
        };

        $scope.depth = function() {
          var parentNode = $scope.$parentNodeScope;
          if (parentNode) {
            return parentNode.depth() + 1;
          }
          return 1;
        };

        var subDepth = 0;
        var countSubDepth = function(scope) {
          var count = 0;
          var nodes = scope.childNodes();
          for (var i = 0; i < nodes.length; i++) {
            var childNodes = nodes[i].$childNodesScope;
            if (childNodes) {
              count = 1;
              countSubDepth(childNodes);
            }
          }
          subDepth += count;
        };

        $scope.maxSubDepth = function() {
          subDepth = 0;
          if ($scope.$childNodesScope) {
            countSubDepth($scope.$childNodesScope);
          }
          return subDepth;
        };

      }
    ]);
})();

(function () {
  'use strict';

  angular.module('ui.tree')

    .controller('TreeHandleController', ['$scope', '$element', '$attrs', 'treeConfig',
      function ($scope, $element, $attrs, treeConfig) {
        this.scope = $scope;

        $scope.$element = $element;
        $scope.$nodeScope = null;
        $scope.$type = 'uiTreeHandle';

      }
    ]);
})();

(function () {
  'use strict';

  angular.module('ui.tree')
  .directive('uiTree', [ 'treeConfig', '$window',
    function(treeConfig, $window) {
      return {
        restrict: 'A',
        scope: true,
        controller: 'TreeController',
        link: function(scope, element, attrs) {
          var callbacks = {
            accept: null
          };

          var config = {};
          angular.extend(config, treeConfig);
          if (config.treeClass) {
            element.addClass(config.treeClass);
          }

          scope.$emptyElm = angular.element($window.document.createElement('div'));
          if (config.emptyTreeClass) {
            scope.$emptyElm.addClass(config.emptyTreeClass);
          }

          scope.$watch('$nodesScope.$modelValue.length', function() {
            if (scope.$nodesScope.$modelValue) {
              scope.resetEmptyElement();
            }
          }, true);

          attrs.$observe('dragEnabled', function(val) {
            var de = scope.$eval(val);
            if((typeof de) == "boolean") {
              scope.dragEnabled = de;
            }
          });

          attrs.$observe('maxDepth', function(val) {
            var md = scope.$eval(val);
            if((typeof md) == "number") {
              scope.maxDepth = md;
            }
          });

          attrs.$observe('dragDelay', function(val) {
            var dd = scope.$eval(val);
            if((typeof dd) == "number") {
              scope.dragDelay = dd;
            }
          });

          // check if the dest node can accept the dragging node
          // by default, we check the 'data-nodrop' attribute in `ui-tree-nodes`
          // and the 'max-depth' attribute in `ui-tree` or `ui-tree-nodes`.
          // the method can be overrided
          callbacks.accept = function(sourceNodeScope, destNodesScope, destIndex) {
            if (destNodesScope.nodrop || destNodesScope.outOfDepth(sourceNodeScope)) {
              return false;
            }
            return true;
          };

          callbacks.dropped = function(event) {

          };

          //
          callbacks.dragStart = function(event) {

          };

          callbacks.dragMove = function(event) {

          };

          callbacks.dragStop = function(event) {

          };

          scope.$watch(attrs.uiTree, function(newVal, oldVal){
            angular.forEach(newVal, function(value, key){
              if (callbacks[key]) {
                if (typeof value === "function") {
                  callbacks[key] = value;
                }
              }
            });

            scope.$callbacks = callbacks;
          }, true);

        }
      };
    }
  ]);
})();

(function () {
  'use strict';

  angular.module('ui.tree')
  .directive('uiTreeNodes', [ 'treeConfig', '$window',
    function(treeConfig) {
      return {
        require: ['ngModel', '?^uiTreeNode', '^uiTree'],
        restrict: 'A',
        scope: true,
        controller: 'TreeNodesController',
        link: function(scope, element, attrs, controllersArr) {

          var config = {};
          angular.extend(config, treeConfig);
          if (config.nodesClass) {
            element.addClass(config.nodesClass);
          }

          var ngModel = controllersArr[0];
          var treeNodeCtrl = controllersArr[1];
          var treeCtrl = controllersArr[2];
          if (treeNodeCtrl) {
            treeNodeCtrl.scope.$childNodesScope = scope;
            scope.$nodeScope = treeNodeCtrl.scope;
          }
          else { // find the root nodes if there is no parent node and have a parent ui-tree
            treeCtrl.scope.$nodesScope = scope;
          }
          scope.$treeScope = treeCtrl.scope;

          if (ngModel) {
            ngModel.$render = function() {
              if (!ngModel.$modelValue || !angular.isArray(ngModel.$modelValue)) {
                scope.$modelValue = [];
              }
              scope.$modelValue = ngModel.$modelValue;
            };
          }

          attrs.$observe('maxDepth', function(val) {
            var md = scope.$eval(val);
            if((typeof md) == "number") {
              scope.maxDepth = md;
            }
          });

          attrs.$observe('nodrop', function(val) {
            scope.nodrop = ((typeof val) != "undefined");
          });

          attrs.$observe('horizontal', function(val) {
            scope.horizontal = ((typeof val) != "undefined");
          });

        }
      };
    }
  ]);
})();

(function () {
  'use strict';

  angular.module('ui.tree')

    .directive('uiTreeNode', ['treeConfig', '$uiTreeHelper', '$window', '$document','$timeout',
      function (treeConfig, $uiTreeHelper, $window, $document, $timeout) {
        return {
          require: ['^uiTreeNodes', '^uiTree'],
          restrict: 'A',
          controller: 'TreeNodeController',
          link: function(scope, element, attrs, controllersArr) {
            var config = {};
            angular.extend(config, treeConfig);
            if (config.nodeClass) {
              element.addClass(config.nodeClass);
            }
            scope.init(controllersArr);

            scope.collapsed = !!$uiTreeHelper.getNodeAttribute(scope, 'collapsed');
            attrs.$observe('collapsed', function(val) {
              var collapsed = scope.$eval(val);
              if((typeof collapsed) == "boolean") {
                scope.collapsed = collapsed;
              }
            });

            scope.$watch('collapsed', function(val) {
              $uiTreeHelper.setNodeAttribute(scope, 'collapsed', val);
              attrs.$set('collapsed', val);
            });

            var hasTouch = 'ontouchstart' in window;
            // todo startPos is unused
            var startPos, firstMoving, dragInfo, pos;
            var placeElm, hiddenPlaceElm, dragElm;
            var treeScope = null;
            var elements; // As a parameter for callbacks
            var dragTimer = null;
            var body = document.body,
                html = document.documentElement,
                document_height,
                document_width;

            var dragStart = function(e) {
              if (!hasTouch && (e.button == 2 || e.which == 3)) {
                // disable right click
                return;
              }
              if (e.uiTreeDragging || (e.originalEvent && e.originalEvent.uiTreeDragging)) { // event has already fired in other scope.
                return;
              }

              // the element which is clicked.
              var eventElm = angular.element(e.target);
              var eventScope = eventElm.scope();
              if (!eventScope || !eventScope.$type) {
                return;
              }
              if (eventScope.$type != 'uiTreeNode'
                && eventScope.$type != 'uiTreeHandle') { // Check if it is a node or a handle
                return;
              }
              if (eventScope.$type == 'uiTreeNode'
                && eventScope.$handleScope) { // If the node has a handle, then it should be clicked by the handle
                return;
              }

              // check if it or it's parents has a 'data-nodrag' attribute
              while (eventElm && eventElm[0] && eventElm[0] != element) {
                if ($uiTreeHelper.nodrag(eventElm)) { // if the node mark as `nodrag`, DONOT drag it.
                  return;
                }
                eventElm = eventElm.parent();
              }

              e.uiTreeDragging = true; // stop event bubbling
              if (e.originalEvent) {
                e.originalEvent.uiTreeDragging = true;
              }
              e.preventDefault();
              var eventObj = $uiTreeHelper.eventObj(e);

              firstMoving = true;
              dragInfo = $uiTreeHelper.dragInfo(scope);

              var tagName = scope.$element.prop('tagName');
              if (tagName.toLowerCase() === 'tr') {
                placeElm = angular.element($window.document.createElement(tagName));
                var tdElm = angular.element($window.document.createElement('td'))
                              .addClass(config.placeHolderClass);
                placeElm.append(tdElm);
              } else {
                placeElm = angular.element($window.document.createElement(tagName))
                              .addClass(config.placeHolderClass);
              }
              hiddenPlaceElm = angular.element($window.document.createElement(tagName));
              if (config.hiddenClass) {
                hiddenPlaceElm.addClass(config.hiddenClass);
              }
              pos = $uiTreeHelper.positionStarted(eventObj, scope.$element);
              placeElm.css('height', $uiTreeHelper.height(scope.$element) + 'px');
              placeElm.css('width', $uiTreeHelper.width(scope.$element) + 'px');
              dragElm = angular.element($window.document.createElement(scope.$parentNodesScope.$element.prop('tagName')))
                        .addClass(scope.$parentNodesScope.$element.attr('class')).addClass(config.dragClass);
              dragElm.css('width', $uiTreeHelper.width(scope.$element) + 'px');
              dragElm.css('z-index', 9999);

              scope.$element.after(placeElm);
              scope.$element.after(hiddenPlaceElm);
              dragElm.append(scope.$element);
              $document.find('body').append(dragElm);
              dragElm.css({
                'left' : eventObj.pageX - pos.offsetX + 'px',
                'top'  : eventObj.pageY - pos.offsetY + 'px'
              });
              elements = {
                placeholder: placeElm,
                dragging: dragElm
              };
              scope.$apply(function() {
                scope.$callbacks.dragStart(dragInfo.eventArgs(elements, pos));
              });

              angular.element($document).bind('touchend', dragEndEvent);
              angular.element($document).bind('touchcancel', dragEndEvent);
              angular.element($document).bind('touchmove', dragMoveEvent);
              angular.element($document).bind('mouseup', dragEndEvent);
              angular.element($document).bind('mousemove', dragMoveEvent);
              angular.element($document).bind('mouseleave', dragCancelEvent);
              document_height = Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);
              document_width = Math.max(body.scrollWidth, body.offsetWidth, html.clientWidth, html.scrollWidth, html.offsetWidth);
            };

            var dragMove = function(e) {
              var eventObj = $uiTreeHelper.eventObj(e);
              var prev, leftElmPos, topElmPos;

              if (dragElm) {
                e.preventDefault();
                $window.getSelection().removeAllRanges();

                leftElmPos = eventObj.pageX - pos.offsetX;
                topElmPos = eventObj.pageY - pos.offsetY;

                //dragElm can't leave the screen on the left
                if(leftElmPos < 0){
                  leftElmPos = 0;
                }

                //dragElm can't leave the screen on the top
                if(topElmPos < 0){
                  topElmPos = 0;
                }

                //dragElm can't leave the screen on the bottom
                if ((topElmPos + 10) > document_height){
                  topElmPos = document_height - 10;
                }

                //dragElm can't leave the screen on the right
                if((leftElmPos + 10) > document_width) {
                  leftElmPos = document_width - 10;
                }

                dragElm.css({
                  'left': leftElmPos + 'px',
                  'top': topElmPos + 'px'
                });

                var top_scroll = window.pageYOffset || $window.document.documentElement.scrollTop;
                var bottom_scroll = top_scroll + (window.innerHeight || $window.document.clientHeight || $window.document.clientHeight);

                // to scroll down if cursor y-position is greater than the bottom position the vertical scroll
                if (bottom_scroll < eventObj.pageY && bottom_scroll <= document_height) {
                  window.scrollBy(0, 10);
                }

                // to scroll top if cursor y-position is less than the top position the vertical scroll
                if (top_scroll > eventObj.pageY) {
                  window.scrollBy(0, -10);
                }

                $uiTreeHelper.positionMoved(e, pos, firstMoving);
                if (firstMoving) {
                  firstMoving = false;
                  return;
                }

                // move horizontal
                if (pos.dirAx && pos.distAxX >= config.levelThreshold) {
                  pos.distAxX = 0;

                  // increase horizontal level if previous sibling exists and is not collapsed
                  if (pos.distX > 0) {
                    prev = dragInfo.prev();
                    if (prev && !prev.collapsed
                      && prev.accept(scope, prev.childNodesCount())) {
                      prev.$childNodesScope.$element.append(placeElm);
                      dragInfo.moveTo(prev.$childNodesScope, prev.childNodes(), prev.childNodesCount());
                    }
                  }

                  // decrease horizontal level
                  if (pos.distX < 0) {
                    // we can't decrease a level if an item preceeds the current one
                    var next = dragInfo.next();
                    if (!next) {
                      var target = dragInfo.parentNode(); // As a sibling of it's parent node
                      if (target
                        && target.$parentNodesScope.accept(scope, target.index() + 1)) {
                        target.$element.after(placeElm);
                        dragInfo.moveTo(target.$parentNodesScope, target.siblings(), target.index() + 1);
                      }
                    }
                  }
                }

                // check if add it as a child node first
                // todo decrease is unused
                var decrease = ($uiTreeHelper.offset(dragElm).left - $uiTreeHelper.offset(placeElm).left) >= config.threshold;
                var targetX = eventObj.pageX - $window.document.body.scrollLeft;
                var targetY = eventObj.pageY - (window.pageYOffset || $window.document.documentElement.scrollTop);

                // Select the drag target. Because IE does not support CSS 'pointer-events: none', it will always
                // pick the drag element itself as the target. To prevent this, we hide the drag element while
                // selecting the target.
                if (angular.isFunction(dragElm.hide)) {
                  dragElm.hide();
                }

                // when using elementFromPoint() inside an iframe, you have to call
                // elementFromPoint() twice to make sure IE8 returns the correct value
                $window.document.elementFromPoint(targetX, targetY);

                var targetElm = angular.element($window.document.elementFromPoint(targetX, targetY));
                if (angular.isFunction(dragElm.show)) {
                  dragElm.show();
                }

                // move vertical
                if (!pos.dirAx) {
                  var targetBefore, targetNode;
                  // check it's new position
                  targetNode = targetElm.scope();
                  var isEmpty = false;
                  if (!targetNode) {
                    return;
                  }
                  if (targetNode.$type == 'uiTree' && targetNode.dragEnabled) {
                    isEmpty = targetNode.isEmpty(); // Check if it's empty tree
                  }
                  if (targetNode.$type == 'uiTreeHandle') {
                    targetNode = targetNode.$nodeScope;
                  }
                  if (targetNode.$type != 'uiTreeNode'
                    && !isEmpty) { // Check if it is a uiTreeNode or it's an empty tree
                    return;
                  }

                  // if placeholder move from empty tree, reset it.
                  if (treeScope && placeElm.parent()[0] != treeScope.$element[0]) {
                    treeScope.resetEmptyElement();
                    treeScope = null;
                  }

                  if (isEmpty) { // it's an empty tree
                    treeScope = targetNode;
                    if (targetNode.$nodesScope.accept(scope, 0)) {
                      targetNode.place(placeElm);
                      dragInfo.moveTo(targetNode.$nodesScope, targetNode.$nodesScope.childNodes(), 0);
                    }
                  } else if (targetNode.dragEnabled()){ // drag enabled
                    targetElm = targetNode.$element; // Get the element of ui-tree-node
                    var targetOffset = $uiTreeHelper.offset(targetElm);
                    targetBefore = targetNode.horizontal ? eventObj.pageX < (targetOffset.left + $uiTreeHelper.width(targetElm) / 2)
                                                         : eventObj.pageY < (targetOffset.top + $uiTreeHelper.height(targetElm) / 2);

                    if (targetNode.$parentNodesScope.accept(scope, targetNode.index())) {
                      if (targetBefore) {
                        targetElm[0].parentNode.insertBefore(placeElm[0], targetElm[0]);
                        dragInfo.moveTo(targetNode.$parentNodesScope, targetNode.siblings(), targetNode.index());
                      } else {
                        targetElm.after(placeElm);
                        dragInfo.moveTo(targetNode.$parentNodesScope, targetNode.siblings(), targetNode.index() + 1);
                      }
                    }
                    else if (!targetBefore && targetNode.accept(scope, targetNode.childNodesCount())) { // we have to check if it can add the dragging node as a child
                      targetNode.$childNodesScope.$element.append(placeElm);
                      dragInfo.moveTo(targetNode.$childNodesScope, targetNode.childNodes(), targetNode.childNodesCount());
                    }
                  }

                }

                scope.$apply(function() {
                  scope.$callbacks.dragMove(dragInfo.eventArgs(elements, pos));
                });
              }
            };

            var dragEnd = function(e) {
              e.preventDefault();

              if (dragElm) {
                // roll back elements changed
                hiddenPlaceElm.replaceWith(scope.$element);
                placeElm.remove();

                dragElm.remove();
                dragElm = null;
                if (scope.$$apply) {
                  dragInfo.apply();
                  scope.$treeScope.$apply(function() {
                    scope.$callbacks.dropped(dragInfo.eventArgs(elements, pos));
                  });
                } else {
                  bindDrag();
                }
                scope.$treeScope.$apply(function() {
                  scope.$callbacks.dragStop(dragInfo.eventArgs(elements, pos));
                });
                scope.$$apply = false;
                dragInfo = null;

              }

              angular.element($document).unbind('touchend', dragEndEvent); // Mobile
              angular.element($document).unbind('touchcancel', dragEndEvent); // Mobile
              angular.element($document).unbind('touchmove', dragMoveEvent); // Mobile
              angular.element($document).unbind('mouseup', dragEndEvent);
              angular.element($document).unbind('mousemove', dragMoveEvent);
              angular.element($window.document.body).unbind('mouseleave', dragCancelEvent);
            };

            var dragStartEvent = function(e) {
              if (scope.dragEnabled()) {
                dragStart(e);
              }
            };

            var dragMoveEvent = function(e) {
              dragMove(e);
            };

            var dragEndEvent = function(e) {
              scope.$$apply = true;
              dragEnd(e);
            };

            var dragCancelEvent = function(e) {
              dragEnd(e);
            };

            var bindDrag = function() {
              element.bind('touchstart', dragStartEvent);
              element.bind('mousedown', function (e) {
                dragTimer = $timeout(function(){dragStartEvent(e);}, scope.dragDelay);
              });
              element.bind('mouseup',function(){$timeout.cancel(dragTimer);});
            };
            bindDrag();

            angular.element($window.document.body).bind("keydown", function(e) {
              if (e.keyCode == 27) {
                scope.$$apply = false;
                dragEnd(e);
              }
            });
          }
        };
      }
    ]);

})();

(function () {
  'use strict';

  angular.module('ui.tree')
  .directive('uiTreeHandle', [ 'treeConfig', '$window',
    function(treeConfig) {
      return {
        require: '^uiTreeNode',
        restrict: 'A',
        scope: true,
        controller: 'TreeHandleController',
        link: function(scope, element, attrs, treeNodeCtrl) {
          var config = {};
          angular.extend(config, treeConfig);
          if (config.handleClass) {
            element.addClass(config.handleClass);
          }
          // connect with the tree node.
          if (scope != treeNodeCtrl.scope) {
            scope.$nodeScope = treeNodeCtrl.scope;
            treeNodeCtrl.scope.$handleScope = scope;
          }
        }
      };
    }
  ]);
})();


I liked Denise Richards right off the bat when she made her debut on The Real Housewives of Beverly Hills, but she did something on last night's episode that made me like her even more, and it wasn't just picking those black crystal striped pants to wear. When Lisa Vanderpump kept her waiting at her birthday party and didn't apologize or end up having a drink with her anyone else on the cast would have ran to the next dinner and told all of the ladies the whole story. I mean, I'm pretty sure Teddi Mellencamp's first season revolved around Dorit keeping her waiting. Instead, Denise Richards went and didn't say a negative word about Lisa to the ladies. For that, she's a total class act and gets the Big Blonde Hair stamp of approval, along with her pants.


text:
Q: Script Manager 4.5 handling errors I have a script manager (ASP.NET 4.5 - MSForms.js etc) i am working on methods to handle errors.
And i have mapped the following (which worked properly previous versions)
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginRequestHandler);

This works great in the event of a failure i want to handle errors. The problem is that it doesnt catch when the connection to the server is broken. The console simply displays:
Uncaught TypeError: Cannot read property 'PRM_ServerError' of undefined
Sys.WebForms.PageRequestManager._createPageRequestManagerServerError
Sys.WebForms.PageRequestManager._onFormSubmitCompleted
(anonymous function)
(anonymous function)
Sys.Net.WebRequest.completed

How can i catch errors when a connection the server is broken? onEndRequest does not even get to fire.
Thanks

A: Basically what I found that that AsyncPostBackErrorMessage is null which generate that exception.
I corrected it by changing string before work with it.
<asp:ScriptManager runat="server" ID="MyToolkitScriptManager" OnAsyncPostBackError="MyToolkitScriptManager_AsyncPostBackError">

 protected void MyToolkitScriptManager_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)
 {
 MyToolkitScriptManager.AsyncPostBackErrorMessage = e.Exception.Message;
 }


text:
About Postcolonial Studies
How to Cite Our Pages
Critics & Theorists
Terms & Issues
Digital Bookshelf
You can contribute
Global & Postcolonial Studies
Emory GPS Events
In Authors & Artists
Emecheta, Buchi
Image by My little camera2005/CC Licensed
On July 21, 1944 in Yaba near Lagos, Nigeria, Buchi Emecheta was born to Jeremy Nwabudike and Alice Okwuekwu Emecheta. At a young age, Emecheta was orphaned and she spent her early childhood years being educated at a missionary school. In 1960, at the age of sixteen, Emecheta was married to Sylvester Onwordi, a student to whom she had been engaged since she was eleven. After their marriage, Sylvester and Buchi moved to London. Over the course of her six year marriage, Emecheta gave birth to five children. Her marriage as well as her childhood are alluded to in her semi-autobiographical novel, Second-Class Citizen. She published widely and received numerous awards for her work, including the Order of the British Empire in 2005. She passed away in January 2017.
Major Themes
Buchi Emecheta's works deal primarily with portrayals of African women. The main characters of her novels show what it means to be a woman and a mother in Nigerian society. Emecheta looks at how sexuality and the ability to bear children can sometimes be the terms only used to define femininity and womanhood. She is interested in how gender intersects and engages with education, poverty and enslavement (see Gender and Nation, Third World and Third World Women).
In the Ditch, published in 1972, is inspired by Emecheta's life after she leaves her husband and is living on her own with her children in a poor neighborhood of London. The main character, Adah, supports her children by working in a library at the British Museum. Adah is forced to live in an housing estate set aside for problem families. This estate is known as Pussy Cat Mansions and it is a place filled with women. Adah can not identify with the women of Pussy Cat Mansions and her dignity is wounded because of the charity she is forced to accept. The main focus of the novel is the importance of initiative and determination, for these are the only tools which help Adah get out of "the ditch".
In Emecheta's second novel, Second-Class Citizen, Adah is being denied a Western education because she is a girl. This novel again characterizes Adah as having the initiative and determination to get what she wants — the Western education being denied to her. The basic theme of Second-Class Citizen is one of vehement animosity at the gender discrimination that is often found in the culture of her people. Adah is also encumbered because of the gender discrimination that is the foundation of her marriage. Her husband, Francis, treats her as property. Adah is forced to support the family and is responsible for the children. In the meanwhile, Francis goes to school, studies, and continuously fails exams. Adah is in constant battle to try to preserve her womanhood, and when she finally leaves Francis, she experiences a strong sense of relief. After leaving Francis, Adah has moments of loneliness and despair but in the end she comes out triumphant because of her willpower.
One of Emecheta's finest novels, The Joys of Motherhood, is set in a time of great political and economic change for Nigeria. The chapter titles, "The Mother," "The Mother's Mother," "The Mother's Early Life," "First Shock of Motherhood," etc., follow the highs and lows of the heroine, Nnu Ego's, destiny. Nnu Ego's whole destiny is centered around her as a mother. Nnu Ego places all her hope for happiness and prosperity in her children, yet she is constantly disappointed. As a result, Nnu Ego finds no joy in her grown children.
Emecheta's 1986 novel, Head Above Water, continues to describe her struggle to raise her family all alone. Adah finds jobs to support her family, gains a degree in sociology, and still manages to find time to write. Head Above Water looks at the social conditions of blacks in late-twentieth-century London and it shows Emecheta's progression as a novelist. The novel ends with two monumental accomplishments — the purchase of her own house and her becoming a full-time writer.
Emecheta, Buchi. The Bride Price. New York: George Braziller, 1976.
—. The Slave Girl. New York: George Braziller, 1977.
—. Titch the Cat. London: Allison & Busby, 1979.
—. Nowhere to Play. London: Allison & Busby, 1980.
—. The Moonlight Bride. New York: George Braziller, 1980.
—. The Wrestling Match. New York: George Braziller, 1980.
—. On Our Freedom. London: Sheba Feminist, 1981.
—. Destination Biafra. Portsmouth: Heinemann, 1982.
—. Naira Power. Oxford: Macmillan, 1982.
—. Double Yoke. New York: George Braziller, 1982.
—. The Rape of Shavi. George Braziller, 1983.
—. Adah's Story. London: Allison & Busby, 1983.
—. A Kind of Marriage. Oxford: Macmillan, 1986.
—. Family Bargain. New York: George Braziller, 1987.
—. Gwendolen. New York: W W Norton & Co Inc, 1990.
Kehinde (Heinemann, African Writers Series, 1994).
The New Tribe (Heinemann, African Writers Series, 1999)
Anthony, Barthelemy. "Western Time, African Lives : Time in the Novels of Buchi Emecheta." Callaloo 12.3 (1989) :559-574.
Bruner, Charlotte, and David Bruner. "Buchi Emecheta and Maryse Conde : Contemporary Writing from Africa and the Caribbean." World Literature Today 59(1985) : 9-13.
Jahn, Janhenz. Who's Who in African Literature. Grand Rapids: Eerdman, 1972. 209-211.
Popkin, Michael, ed. Modern Black Writers. Ann Arbor: Ungar, 1978.
Umeh, Marie, "African Women in Transition in the Novels of Buchi Emecheta." Presence Africane 116 (1980) : 190-201.
Postcolonial Web, http://www.postcolonialweb.org/nigeria/emecheta/emechetaov.html
Author: Benecia L. Williams, Fall 1997
Last Updated: May 2017
AfricaDiasporaEducationEnglandFeminismGenderNigeriaViolence
Partition: Oral Histories
Glissant, Edouard
Mies, Maria
Yulan Jiang 3 years ago	 Reply
Dear Williams:
You've made an exquisite introduction to Buchi Emecheta. Thank you!
I've been considering talking to Buchi Emecheta whether she would consider letting one or some of her novels published in other languages, such as the Chinese language, so that peoples of the world could increase virtuously their mutual understanding; therefore, I wonder whether I could trouble you to find out Buchi Emecheta's email address and tell me via my email address. My email address is as follows: j2011yl@163.com
Ms. Jiang
Molly Marie Slavin Post Author 3 years ago	 Reply
Dear Ms. Jiang,
Thank you for your comment. Unfortunately, as this is a third-party site, we have no way to get you in contact with Buchi Emecheta. Best of luck with your project!
– Postcolonial Studies @ Emory
Dear Marie Slavin:
Thank you all the same!
Amadou Diop 3 years ago	 Reply
I want to ask you a question: what is Buchi Emecheta now? where does she live ? Thanks in advance
Hi Amadou,
As a third-party site, we do not speak for Buchi Emecheta or have any contact with her. Thanks for your understanding.
Pingback: Goodbye to Buchi Emecheta, Celebrated Nigerian Novelist Who Broke Gender Barriers | Complete World News
Amaitem Udoh 8 months ago	 Reply
Thanks, Molly Slavin. Could you please discuss some themes from the novel, SECOND CLASS CITIZEN. Thanks, again.
Mike Lehman 8 months ago	 Reply
Hi Amaitem,
Here is a link that discusses some themes from the novel:
https://wmich.edu/dialogues/texts/secondclasscitizen.html
–postcolonial studies @ emory
Reply To Amadou Diop Cancel Reply