Launching soon: the Afro Supa Hero exhibition, displaying independent creative director Jon Daniel's personal collection of Black pop cultural heroes and heroines of the African diaspora, through comics, action figures, memorabilia and games.
Opening at the International Slavery Museum in Liverpool on 13 May 2016, action figures of real-life icons Muhammad Ali, Dr. Martin Luther King, Jr and Nelson Mandela will stand alongside pop cultural figures including Mr. T and Lieutenant Uhura.
• Real Afro Supa Heroes. Includes action figures of Muhammad Ali, Dr. Martin Luther King, Jr and Nelson Mandela. 2016 marks the 50th anniversary of the founding of the Black Panther Party, and this section features a pamphlet and membership card for the Party, as well as a Black and Brown stamp album. Ten editions of The Golden Legacy comic book series, first published in 1966 showing real-life icons from history, will be on display including volume 2, which focusses on Harriet Tubman, the African American Abolitionist who will soon be featured on the American $20 note.
• Inspirational Afro Supa Heroes. A range of nine action figures including Apollo Creed from the Rocky films, Mr. T and Star Trek's Lieutenant Uhura, alongside a Harlem Globetrotters board game from 1971, and a signed 7 inch Parliament single, 'Aqua Boogie'.
• British Afro Supa Heroes. A look at Blake's 7, Red Dwarf, Panini football stickers of 1979 and a very special edition of The Hornet spotlighting Michael Jackson.
• Invincible Afro Supa Heroes. Exploring Marvel and DC fictional superheroes including both rare comics and action figures of Meteor Man, The Falcon and Black Lightning. There is an additional Luke Cage action figure and further, rare comics featuring The Black Panther, Nubia - in the New Adventures of the Original Wonder Woman, Black Goliath, Brother Voodoo and Green Lantern.
• AFROSUPASTARS. Jon Daniel is an award-winning, independent creative director. This section is a collection of Jon's Afro Supa Hero collectible designware, including, bowls and badges. A range of Jon's merchandise, including superhero capes, will be available to buy at the Museum and online.
Jon began collecting comics, games and action figures featuring positive Black role models of history and fiction in his late twenties, feeling that they most strongly embodied the era of his childhood and his search for identity. There are more than 100 pieces in the collection today, collected over 22 years.
"Afro Supa Hero is both retrospective and bang up to date. In this wide-ranging exhibition, visitors will see Marvel characters including Luke Cage and the Falcon, ahead of new film and TV releases later in the year.
"Liverpool visitors and Red Dwarf fans may also be pleased to find a there's copy of the Smegazine and an action figure of Dave Lister, both on display for the first time".
Jon Daniel is a British-born, award-winning creative of African Caribbean heritage. Classically trained as a graphic designer, Jon has worked primarily as an art director for many of London's leading advertising agencies, in a career spanning over twenty-five years.
Creating effective and award-winning campaigns for a diverse range of clients including IBM, the COI, Drink Drive, the Inland Revenue, The Institute of Contemporary Arts, Philips, Virgin Direct and most notably NHS Careers, which was recognised at the time as the most successful recruitment campaign ever within the public sector.
He has co-founded and served as Executive Creative Director with two creative companies: Headland; a creative partnership. And ebb&flow®, a boutique branding company who produced work for a diverse range of corporate, cultural commercial and governmental clients including the Mayor of London and the GLA; Greenpeace; and groundbreaking charity, Keep a Child Alive, co-founded by internationally renowned recording artist Alicia Keys.
This ethos is currently most evident in his unique role as a regular columnist for the leading UK design publication, Design Week, where his monthly column "4 Corners" celebrating pioneering, established and emerging creatives from the African diaspora has proved to be a popular fixture in Design Week's editorial repertoire since it was launched in January 2013.
But it can also be found in a huge body of work creating campaigns and branding for many of the UK's foremost Black organisations and individuals such as OBV; Ms. Dynamite; Colourful Radio and most recently providing the key design concept and creative direction behind the brand identity of the UK's first dedicated Black heritage institution, the Black Cultural Archives (BCA) opened in Windrush Square, Brixton in July 2014.
Now, alongside his commercial work, Jon has also begun to forge a reputation in the cultural arena. Curating the successful "POST-COLONIAL: Stamps from the African Diaspora" and "JA50" exhibitions with global stamp emporium, Stanley Gibbon; Creating a large pop-up outdoor display of his "Jamaicons" exhibition; as part of the Brixton Splash 2012 street festival, which he also rebranded the same year; and his AFRO SUPA HERO exhibition based on his personal collection of Black action figures and comic books, which was on display at the V&A Museum of Childhood in 2014,and will be exhibited at the International Slavery Museum, Liverpool from 13 May –11 December 2016. Based in London, he is married with two children.


We know he can sing and drive teenage girls crazy, but can he take care of a pet? It's been reported that last month, Justin Bieber got a tan and white bulldog puppy from a pet store in Canada. Many question whether this is a good idea seeing that his track record with pets is a little – shall we say – off beat. In December of 2012, he gave away his pet hamster to a random fan at at concert. Poor hamster died three months later. And who could miss the news about Justin's pet monkey being seized in Germany because he could not provide the proper vetting documents to the Munich airport authorities. He had the opportunity to retrieve the pet, but instead chose to abandon her, including the $8,000 bill for caring for the monkey. The monkey now lives in Serengeti Park near Hanover.


Half marionette, half stilt walker, these lofty characters with their long legs, their torso proudly poised high on top of long necks, will be the center of attention at your event. With a baby on their backs, they walk with surprising grace and ease throughout your street's event.
Come meet these fantastical characters and let yourself be carried away in their presence.
A mobile sound system playing lively african rhythms, accompanies their spirited strolls.


text:
kingdom of pavement
profiling rising creatives in the los angeles
underground and beyond
Come Play
About & Submit
Pavement Patrons
© 2023 Kingdom of Pavement
Amy Suto
founder, writer, producer
Amy Suto is a writer and the co-founder of KINGDOM OF PAVEMENT, and started this publication to bring visibility to rising creatives doing great things in Los Angeles and beyond. She's a TV writer, and most recently co-wrote an episode of the show CONDOR on the Audience Network. In her free time, she pole dances, teaches yoga, and attends immersive theater shows. She also runs a writing blog at AmySuto.com, and occasionally hosts writing workshops at her favorite coffeeshop, Paper or Plastik.
Flannery Maney
founder, writer, actress, producer
Flannery Maney is an LA-based actress, writer, producer, and co-founder of KINGDOM OF PAVEMENT. She is enthused to create a space for local artists -- and eventually the artists of the world -- to have a home for their work. Flannery loves writing female protagonists in hour-long historical dramas. Her short NEW YEAR NEW ME was directed by Oscar winner, Chris Overton. Flannery is a self-admitted travel addict. If you don't see her touring LA coffeeshops, at the Troubadour, or on a long run, she's somewhere in England. Check out her site, flannerymaney.com for clips from her acting work, produced projects, and more!
Will Cordova
musician, open mic sound engineer & pavement co-conspirator
Will Cordova is a singer/songwriter and producer from Albuquerque, New Mexico. Will is also an integral part of the Kingdom of Pavement team, handling the sweet sounds of our open mic night setups and a key creative force for upcoming Kingdom of Pavement programming and events. Check out his music on Spotify here.
Lex Schultz
Lex Schultz is an Arizona-based novelist, copywriter, and aspiring screenwriter. She is excited to be joining the Kingdom of Pavement team and to watch this network grow! Lex is a global enthusiast and an art-historian-in-training. She dreams of traveling the world, helping preserve art and culture, and using those experiences to color her writing.

redpajama_set_name: RedPajamaCommonCrawl


STAY 4 NIGHTS AND WE'LL WAIVE THE CLEANING FEE! This warm and inviting 3 bedroom/1.75 bath cabin overlooks a small pond frequented by Moose and Elk. The country decor and wood-burning fireplace make this cabin a perfect place for a relaxing getaway. You'll enjoy spending time on the large deck that overlooks the pond having a BBQ with friends and family, reading a good book or just listening to the peace and quiet. This cabin provides a combination of privacy and tranquility while also having the added convenience of being a short drive from town and Rocky Mountain National Park. Plenty of games and toys for the children and DVDs for all ages as well as books are also provided for your enjoyment.
"Columbine Lake is a private, covenant-controlled community. Renters are not allowed to use the clubhouse, gazebo, horse pasture, OHVs or Columbine Lake." Plan on using one of the other three lakes (Grand, Granby and Shadow Mountain) for all your lake activities.". Keep in mind when booking, that this property is located in a quiet neighborhood with owner residents. Minimum Age Requirement to rent this home is 25.
We were a party of 6 staying in beginning of December. The cabin was perfect for us. The kids had a blast playing in the snow on the deck and we could watch from the living room. The heaters and wood burning stove kept us warm and toasty. The property management team could not have been nicer or helped us anymore. They are really fabulous. Things I wish I would have known that where available are spices to cook with and plenty of fans. This was a perfect little cabin in the woods and covered all out needs wonderfully. Thanks for the great trip!
So glad you enjoyed your stay. Come back and see us again. Happy Holidays!
Had a great stay with my family. House was well stocked and in a great location to grand lake and Rocky Mountain national park!
We're happy to hear you and your family enjoyed your stay. Moose Pond is in a great location.
Great starting off point forRocky Mountain National Park!
Hey Karen! So glad the wildlife cooperated and you had a great stay. Come back and see us again.
Beautiful scenery, comfortable cabin, so vlose to the park entrance.
Moose Pond is a wonderful place. Glad you enjoyed your stay.
Had another peaceful stay at Moose Pond Cabin!
So happy for you! Hope to see you again soon.
Our stay here was amazing, very relaxing, abundant wildlife cozy home.
Thanks Denise, the wildlife always seem to cooperate at Moose Pond!
Had another awesome experience on Moose Pond. Experienced wild life and a very relaxing and clean cabin.
We're glad you continue to enjoy Moose Pond. It's a special place. We look forward to seeing you again.
perfect location only 5 min drive from Grand Lake entrance to RMNP. This side of park is less congested and has more wildlife sightings. We had a wonderful stay- just wish it was longer!
We had a great stay. Place was wonderful and had everything we needed.
Wonderful! We're glad you had a great sty.
The back deck feeder. Cabin provided everything we needed for a comfotable stay. Would recommend an additional television in one of the bedrooms so guests wouldn't have to watch the same programming at night.
July 21-24, 2018. Moose Pond Cabin was PERFECT! Very clean and very cozy and very nicely decorated. The kitchen had everything you would ever need in it. All you need is your clothes and food. The beds were soooo very comfortable. Love the deck and all the wildlife we seen. This cabin sits just outside of the Rocky Mountain National Park. Moose came to the pond about 6:30 am. We loved this cabin!! Also the staff with Grand Mountain Rentals are absolutely the best! Very caring and compassionate. There is no question about it, Moose Pond Cabin is where we will always stay.
Thanks Tracy, we're happy everything went so well. Please come back and see us again.
Wasnt sure if we were going to be allowed to stay since a wild fire caused an evacuation of the area. Thanks to a tremendous effort the fire was quickly extinquised and the vacation was fantastic.
Yes! That was quite the experience and we are all grateful to our fire fighting team. We're so happy you were able to enjoy your vacation.
This is the 4th time we have stayed at Moose Pond Cabin and we love it more each time! This visit we saw a mama moose and her baby in the backyard and also 2 other female moose. We also had a fox come visit. Moose Pond is such a peaceful place to stay. We enjoy sitting on the deck to play games and watch the animals. We intend to come back again!
We look forward to seeing you again! I'm glad the wildlife was so cooperative!
I rented here because I really wanted to see a moose and based on reviews, I thought I might have a pretty good chance. To my dismay no moose sightings anywhere. The cabin was woodsy. Very Clean and well stocked and very comfortable. The pond was beautiful. The only thing that could be better is the couch. It needed cleaned and had a sloppy loose cover over it. One queen bed was comfy, one not so. We had a lovely stay there.
Moose Pond has the most perfect location in all of Grand Lake! When we werent revetted by our view of the beautiful and peaceful lake, we were enjoying this cozy cabin with its fabulous new kitchen and cozy rooms. Located in the Columbine neighborhood,we enjoyed being near the amenities of town AND the wonders of Rocky Mountain National Park! It is such a special property!!
Our only concerns with this property have to do with safety. When returning to the property after dark, we found the uneven steps very difficult to manage because they were VERY dark. Solar lights would be SO helpful! As for the motion activated flood light, it was not much help.. It was not aimed at the walk AND we had to navigate the dark steps before tripping it. Also a rail to steady your guests on the steps as they bring luggage and supplies in and out would be fantastic! We hope youll consider these little tweaks because we love your cabin!
Once again we had a fabulous stay at Moose Pond Cabin! Loved the newly updated kitchen as well.
We didn't spend much time at the rental as we spend the majority of our time at the Rocky National Mountain Park. However, this property is the perfect location from the park and from town. We would gladly stay here again. The home was clean, and for the first time ever (while vacationing) we were provided with enough bath towels and wash cloths for our stay.
Perfect girls weekend and we saw 2 huge moose right next to the patio! Will definitely book this cabin again!
Nice house with deck overlooking pond. Saw mooses everyday plus other wildlife. Close to town.
We enjoyed our stay at the Moose Pond Cabin. The management company was extremely helpful. We noticed a minor issue when we checked in, and they sent someone out within minutes to fix it. We watched hummingbirds on the deck, ducks on the pond, and saw a moose multiple times off the road to/from the cabin. You can't beat the location for day trips into RMNP. There were toys, games, and coloring books for the kids as well as kid friendly plates and cups. Overall, this was a great place to stay.
We stayed in Moose Pond July 2017. The house was clean and spacious for our family of 6. We enjoyed watching the hummingbirds and the ducks in the pond. We did not see moose near the rental property. The house is a great location, near RMNP and near Grand Lake.
Loved seeing on the deck watching the wildlife.
We loved the location with pond view, we saw ducks daily in the pond and watched the many humming birds fly around the porch, and best of all we got to see moose in and around the pond several times! the house was clean and had most amenities needed, management was helpful and friendly (tip everything management suggested to eat, have coffee, etc. was the best, better than anything we picked, so take the locals advice:), location was very close to everything we wanted to do. Highly recommend especially if you are a large family more comfortable than a hotel, and a true mountain lake experience with a more home feel.
The cottage is in good condition and has a new kitchen. Perfect setup for a family with children yet was nice for my wife and I. The drawbacks are the houses that are so close on each side and the pond is very shallow and something you want to fish or swim in. We had moose walk up to within 20 feet of the back deck each day we were there. Overall a very good experience.
Perfect, quite location with clean accommodations.
As always, we totally enjoyed our stay at Moose Pond Cabin. We keep coming back year after year and we're never disappointed!
A lovely cabin in a wonderful location. Very clean and well equiped.
Very happy you enjoyed you recent stay at Moose Pond. It is a very special cabin and the deck overlooking the pond is just an added bonus! Hope you get to come back next year!
Very good. Good place to stay.
So glad you enjoyed Moose Pond! Please come back again!
Grand Lake is our families favorite mountain retreat. We have been enjoying Grand Lake for over 40 years! This was our first stay in the Columbine Lake area and Moose Pond did not disappoint. Our favorite spot was the deck area and we were very fortunate to be entertained by a mother moose and her baby on two afternoon/evenings! That was quite a treat for my 5 year old grandson.
My only suggestion would be for better cookware. The frying pans had seen better days!
We had a great experience with Grand Mountain Rentals. The house was cute & in a perfect location. We hadn't even unloaded our stuff when we saw a male moose in the pond. He got out and walked right behind the house. The deck was great and looked out directly over the pond. We were able to feed ducks & geese every day. The house was the perfect size for our family of four.
Thank you for such a nice review! We are so happy you enjoyed Moose Pond. It is a very special cabin!
Weve never been to Grand Lake and a friend recommended we stay in this cabin. We liked it because it was more isolated than a lot of the vacation homes in the area. The inside of the house is fine. Nothing fancy, but thats ok for a vacation home. It was just the 2 of us, but theres definitely enough room for another couple and a few kids. The living room windows and deck overlook the small, peaceful pond. The picture doesnt show you that there are 2 houses on both sides of the cabin. One of which is pretty close, but they were quiet so it wasnt a big deal.
This cabin is in a beautiful location, was very clean, and had firewood readily available for the wood stove. The owners were friendly, and it was a great place to spend our Christmas. The only major flaw I found with this cabin was the beds. The queen was in the worst shape, but the full was also in need of replacement. They had no support, and left us very stiff and sore in the morning. Either the box spring or both mattress and box are in desperate need of replacement. Unfortunately I cannot recommend it to anyone, as that is a major flaw. Otherwise, it was a very cozy and inviting place to stay.
Thank you for the nice review of Moose Pond. It is a special place. We are sorry you felt the queen mattress was uncomfortable. We have had no other complaints regarding this mattress and this home gets very positive feedback. Mattresses can really be a very personal preference. We are so glad you found the cabin cozy and inviting and had a nice Christimas staying there. Have a very happy New Year too!
We did spot a moose, and the feeder brought a flock of birds to the terrace. A lovely, relaxing location. The cabin was well stocked with all our needs.
I never dreamt I would see a moose that close, let alone a moose swim across the pond - twice. It was great to be on a deck so close to the water. The accommodations were perfect and we got everything we expected with the cabin. My brothers are ready to buy this cabin.
We are so glad you enjoyed your stay at Moose Pond. It most definitely is a very special cabin. Come back and visit again!
We still love the place just needs better maid service and TLC to keep up with some of the competition for the price that is charged.
Moose Pond was perfect for our family getaway. There were 9 of us who stayed and there was plenty of room. The Cabin was clean and well maintained. Very quiet as it appeared we were the only ones around. We were able to see a Mother and baby moose in the pond one morning. great place to visit.
Moose Pond is such a special cabin and we are so glad you enjoyed your stay. Glad you saw a mama moose with her baby right from the cabin! Please come back and stay with us again!
We are so happy you enjoyed Moose Pond. It certainly is a peaceful and relaxing place. Wonderful for moose watching too! Come back and visit again!
Had a wonderful stay with my children and grandchildren! The kids saw 4 moose and a moose baby. Loved Grand Lake and the Rocky Mtn National Park that are within a few minutes drive. We will be back for sure!
So glad you had a good time in Grand Lake and the Rocky Mountain National Park! Moose Pond is such a special cabin and in the perfect location to experience everything our town and surroundings offer. We look forward to your return visit!
Great and cozy family place to stay on vacation!
We had wonderful time as always and appreciated the instant coffee that was at the cabin as we had forgotten ours, Also enjoyed the Fireworks over the lake on Saturday. My mom really loved the ducks visiting each day on the pond. No luck seeing any Moose this year. Also enjoyed strolling, shopping and having lunch in town everyone was very friendly.
The leaves were beautiful this year! Thank You "Calise" for everything!! Hope to see you next year again!
We loved the location and the beautiful deck. We watched ducks and river otter on the tranquil pond. The only thing that was difficult was the place smelled like cigarettes even though it is a non smoking cabin. We let the office know when we left, at first they were certain that wasn't the case however discovered another renter had been there since they had visited. There was no compensation for this and I felt like since I had signed a promise for this exact issue and they were so adamant about it they would have made some adjustment.
My family and I had a great stay at the Moose Pond cabin, very convenient location to town and the park. Cabin was clean and well maintained but be advised there is NO INTERNET and cell service is spotty at best. Lots of wildlife right around the cabin at all different times of the day. On our next trip to Grand Lake I will definitely inquire about this cabin.
We loved staying at Moose Pond and on the last day of our vacation, there were three bull moose on the pond!! Cabin was spacious and easily accomodated six. Great location - close to town and to RMNP. There is no dishwasher, but that wasn't a problem for us. Property Management staff were wonderful. I would definitely recommend this property!!
Serene and beautiful scenery. Close to Rocky Mountain National Park and hiking trails.


The local bourse shrugged off the relatively mixed economic data out of China which showed that the world's second largest economy grew at its slowest pace since 2009. European stocks traded mostly weaker due to this data, however on the JSE strong gains from blue chip stocks mitigated the potential downside to the local bourse. Chinese GDP YoY grew by 6.4% which was less than the forecasted 6.5%, further highlighting the concerns investors have shown due to the ongoing trade war. Retail sales and industrial production numbers did come in better than expected which perhaps helped to soften the negative impact from the weak GDP numbers.
On the JSE, Sappi [JSE:SAP] was buoyant as it gained 3.9% to close at R77.08, while British American Tobacco [JSE:BTI] firmed to R459.98 after gaining 2.5%. Index heavyweight, Naspers [JSE:NPN] climbed 3.34% to R3164.85 after its Hang Seng listed associate managed to close firmer. Reinet Investments [JSE:RNI] added 2.85% to close at R213.27, Richemont [JSE:CFR] closed 1.91% firmer at R96.34, and Mondi Ltd [JSE:MND] closed at R327.67 after adding 1.81%.
Imperial Logistics [JSE:IPL] closed amongst the day's biggest losers after the stock lost 1.65% to end the day at R70.30. Gold miners also struggled as the gold metal price remained subdued. Harmony Gold [JSE:HAR] lost 1.73% to close at R23.85, AngloGold Ashanti [JSE:ANG] closed 2.12% weaker at R166.02, and Gold Fields [JSE:GFI] dropped 0.75% to R49.16. Dis-Chem Pharmacies [JSE:DCP] pulled back by 2.84% to close at R26.04, while sugar producer, Tongaat Hulett [JSE:TON] closed at R51.00 after dropping 2.39%.
At 17.00 CAT, Ethereum was down 1.34% at $117.96/coin, while Bitcoin had lost 0.2% to trade at $3581.50/coin.


Virtual Switchboard includes a welcome message, to introduce your company and a list of different department options for the callers to select.
You can also filter one of your options so calls go directly to our Live Call Handling agents ensuring all calls are answered and dealt with in a professional manner.
A Virtual Switchboard is used by most companies to provide a professional image and positive first impression for callers.
This service increases efficiency as callers can be directed through to the correct department.
We can record any message you require for this with male or female voice options.


text:
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "services/network/network_service.h"

#include <map>
#include <utility>
#include <vector>

#include "base/bind.h"
#include "base/command_line.h"
#include "base/debug/crash_logging.h"
#include "base/debug/dump_without_crashing.h"
#include "base/environment.h"
#include "base/feature_list.h"
#include "base/logging.h"
#include "base/memory/ptr_util.h"
#include "base/metrics/histogram_macros.h"
#include "base/numerics/ranges.h"
#include "base/stl_util.h"
#include "base/task/post_task.h"
#include "base/task/thread_pool.h"
#include "base/timer/timer.h"
#include "base/values.h"
#include "build/chromecast_buildflags.h"
#include "components/network_session_configurator/common/network_features.h"
#include "components/os_crypt/os_crypt.h"
#include "mojo/core/embedder/embedder.h"
#include "mojo/public/cpp/bindings/scoped_message_error_crash_key.h"
#include "net/base/logging_network_change_observer.h"
#include "net/base/network_change_notifier.h"
#include "net/base/network_change_notifier_posix.h"
#include "net/base/port_util.h"
#include "net/cert/cert_database.h"
#include "net/cert/ct_log_response_parser.h"
#include "net/cert/signed_tree_head.h"
#include "net/dns/dns_config_overrides.h"
#include "net/dns/host_resolver.h"
#include "net/dns/host_resolver_manager.h"
#include "net/http/http_auth_handler_factory.h"
#include "net/log/file_net_log_observer.h"
#include "net/log/net_log.h"
#include "net/log/net_log_capture_mode.h"
#include "net/log/net_log_util.h"
#include "net/nqe/network_quality_estimator.h"
#include "net/socket/client_socket_pool_manager.h"
#include "net/ssl/ssl_key_logger_impl.h"
#include "net/url_request/url_request_context.h"
#include "services/network/crl_set_distributor.h"
#include "services/network/cross_origin_read_blocking.h"
#include "services/network/dns_config_change_manager.h"
#include "services/network/http_auth_cache_copier.h"
#include "services/network/legacy_tls_config_distributor.h"
#include "services/network/net_log_exporter.h"
#include "services/network/net_log_proxy_sink.h"
#include "services/network/network_context.h"
#include "services/network/network_usage_accumulator.h"
#include "services/network/public/cpp/features.h"
#include "services/network/public/cpp/initiator_lock_compatibility.h"
#include "services/network/public/cpp/load_info_util.h"
#include "services/network/public/cpp/network_switches.h"
#include "services/network/url_loader.h"

#if defined(OS_ANDROID) && defined(ARCH_CPU_ARMEL)
#include "crypto/openssl_util.h"
#include "third_party/boringssl/src/include/openssl/cpu.h"
#endif

#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !BUILDFLAG(IS_CHROMECAST)
#include "components/os_crypt/key_storage_config_linux.h"
#endif

#if defined(OS_ANDROID)
#include "base/android/application_status_listener.h"
#include "net/android/http_auth_negotiate_android.h"
#endif

namespace network {

namespace {

NetworkService* g_network_service = nullptr;

// The interval for calls to NetworkService::UpdateLoadStates
constexpr auto kUpdateLoadStatesInterval =
    base::TimeDelta::FromMilliseconds(250);

std::unique_ptr<net::NetworkChangeNotifier> CreateNetworkChangeNotifierIfNeeded(
    net::NetworkChangeNotifier::ConnectionType initial_connection_type,
    net::NetworkChangeNotifier::ConnectionSubtype initial_connection_subtype,
    bool mock_network_change_notifier) {
  // There is a global singleton net::NetworkChangeNotifier if NetworkService
  // is running inside of the browser process.
  if (mock_network_change_notifier)
    return net::NetworkChangeNotifier::CreateMockIfNeeded();
  return net::NetworkChangeNotifier::CreateIfNeeded(initial_connection_type,
                                                    initial_connection_subtype);
}

void OnGetNetworkList(std::unique_ptr<net::NetworkInterfaceList> networks,
                      mojom::NetworkService::GetNetworkListCallback callback,
                      bool success) {
  if (success) {
    std::move(callback).Run(*networks);
  } else {
    std::move(callback).Run(base::nullopt);
  }
}

#if defined(OS_ANDROID) && BUILDFLAG(USE_KERBEROS)
// Used for Negotiate authentication on Android, which needs to generate tokens
// in the browser process.
class NetworkServiceAuthNegotiateAndroid : public net::HttpAuthMechanism {
 public:
  NetworkServiceAuthNegotiateAndroid(NetworkContext* network_context,
                                     const net::HttpAuthPreferences* prefs)
      : network_context_(network_context), auth_negotiate_(prefs) {}
  ~NetworkServiceAuthNegotiateAndroid() override = default;

  // HttpAuthMechanism implementation:
  bool Init(const net::NetLogWithSource& net_log) override {
    return auth_negotiate_.Init(net_log);
  }

  bool NeedsIdentity() const override {
    return auth_negotiate_.NeedsIdentity();
  }

  bool AllowsExplicitCredentials() const override {
    return auth_negotiate_.AllowsExplicitCredentials();
  }

  net::HttpAuth::AuthorizationResult ParseChallenge(
      net::HttpAuthChallengeTokenizer* tok) override {
    return auth_negotiate_.ParseChallenge(tok);
  }

  int GenerateAuthToken(const net::AuthCredentials* credentials,
                        const std::string& spn,
                        const std::string& channel_bindings,
                        std::string* auth_token,
                        const net::NetLogWithSource& net_log,
                        net::CompletionOnceCallback callback) override {
    network_context_->client()->OnGenerateHttpNegotiateAuthToken(
        auth_negotiate_.server_auth_token(), auth_negotiate_.can_delegate(),
        auth_negotiate_.GetAuthAndroidNegotiateAccountType(), spn,
        base::BindOnce(&NetworkServiceAuthNegotiateAndroid::Finish,
                       weak_factory_.GetWeakPtr(), auth_token,
                       std::move(callback)));
    return net::ERR_IO_PENDING;
  }

  void SetDelegation(net::HttpAuth::DelegationType delegation_type) override {
    auth_negotiate_.SetDelegation(delegation_type);
  }

 private:
  void Finish(std::string* auth_token_out,
              net::CompletionOnceCallback callback,
              int result,
              const std::string& auth_token) {
    *auth_token_out = auth_token;
    std::move(callback).Run(result);
  }

  NetworkContext* network_context_ = nullptr;
  net::android::HttpAuthNegotiateAndroid auth_negotiate_;
  base::WeakPtrFactory<NetworkServiceAuthNegotiateAndroid> weak_factory_{this};
};

std::unique_ptr<net::HttpAuthMechanism> CreateAuthSystem(
    NetworkContext* network_context,
    const net::HttpAuthPreferences* prefs) {
  return std::make_unique<NetworkServiceAuthNegotiateAndroid>(network_context,
                                                              prefs);
}
#endif

// Called when NetworkService received a bad IPC message (but only when
// NetworkService is running in a separate process - otherwise the existing bad
// message handling inside the Browser process is sufficient).
void HandleBadMessage(const std::string& error) {
  LOG(WARNING) << "Mojo error in NetworkService:" << error;
  mojo::debug::ScopedMessageErrorCrashKey crash_key_value(error);
  base::debug::DumpWithoutCrashing();
}

}  // namespace

// static
const base::TimeDelta NetworkService::kInitialDohProbeTimeout =
    base::TimeDelta::FromSeconds(5);

// Handler of delaying calls to NetworkContext::ActivateDohProbes() until after
// an initial service startup delay.
class NetworkService::DelayedDohProbeActivator {
 public:
  explicit DelayedDohProbeActivator(NetworkService* network_service)
      : network_service_(network_service) {
    DCHECK(network_service_);

    // Delay initial DoH probes to prevent interference with startup tasks.
    doh_probes_timer_.Start(
        FROM_HERE, NetworkService::kInitialDohProbeTimeout,
        base::BindOnce(&DelayedDohProbeActivator::ActivateAllDohProbes,
                       base::Unretained(this)));
  }

  DelayedDohProbeActivator(const DelayedDohProbeActivator&) = delete;
  DelayedDohProbeActivator& operator=(const DelayedDohProbeActivator&) = delete;

  // Activates DoH probes for |network_context| iff the initial startup delay
  // has expired. Intended to be called on registration of contexts to activate
  // probes for contexts created and registered after the initial delay has
  // expired.
  void MaybeActivateDohProbes(NetworkContext* network_context) {
    // If timer is still running, probes will be started on completion.
    if (doh_probes_timer_.IsRunning())
      return;

    network_context->ActivateDohProbes();
  }

  // Attempts to activate DoH probes for all contexts registered with the
  // service. Intended to be called on expiration of |doh_probes_timer_| to
  // activate probes for contexts registered during the initial delay.
  void ActivateAllDohProbes() {
    for (auto* network_context : network_service_->network_contexts_) {
      MaybeActivateDohProbes(network_context);
    }
  }

 private:
  NetworkService* const network_service_;

  // If running, DoH probes will be started on completion. If not running, DoH
  // probes may be started at any time.
  base::OneShotTimer doh_probes_timer_;
};

NetworkService::NetworkService(
    std::unique_ptr<service_manager::BinderRegistry> registry,
    mojo::PendingReceiver<mojom::NetworkService> receiver,
    bool delay_initialization_until_set_client)
    : net_log_(net::NetLog::Get()), registry_(std::move(registry)) {
  DCHECK(!g_network_service);
  g_network_service = this;

  // |registry_| is nullptr when an in-process NetworkService is
  // created directly, like in most unit tests.
  if (registry_) {
    mojo::core::SetDefaultProcessErrorCallback(
        base::BindRepeating(&HandleBadMessage));
  }

  if (receiver.is_valid())
    Bind(std::move(receiver));

  if (!delay_initialization_until_set_client)
    Initialize(mojom::NetworkServiceParams::New());
}

void NetworkService::Initialize(mojom::NetworkServiceParamsPtr params,
                                bool mock_network_change_notifier) {
  if (initialized_)
    return;

  initialized_ = true;

#if defined(OS_ANDROID) && defined(ARCH_CPU_ARMEL)
  // Make sure OpenSSL is initialized before using it to histogram data.
  crypto::EnsureOpenSSLInit();

  // Measure CPUs with broken NEON units. See https://crbug.com/341598.
  UMA_HISTOGRAM_BOOLEAN("Net.HasBrokenNEON", CRYPTO_has_broken_NEON());
  // Measure Android kernels with missing AT_HWCAP2 auxv fields. See
  // https://crbug.com/boringssl/46.
  UMA_HISTOGRAM_BOOLEAN("Net.NeedsHWCAP2Workaround",
                        CRYPTO_needs_hwcap2_workaround());
#endif

  if (!params->environment.empty())
    SetEnvironment(std::move(params->environment));

  base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();

  // Set-up the global port overrides.
  if (command_line->HasSwitch(switches::kExplicitlyAllowedPorts)) {
    std::string allowed_ports =
        command_line->GetSwitchValueASCII(switches::kExplicitlyAllowedPorts);
    net::SetExplicitlyAllowedPorts(allowed_ports);
  }

  // Record this once per session, though the switch is appled on a
  // per-NetworkContext basis.
  UMA_HISTOGRAM_BOOLEAN(
      "Net.Certificate.IgnoreCertificateErrorsSPKIListPresent",
      command_line->HasSwitch(switches::kIgnoreCertificateErrorsSPKIList));

  network_change_manager_ = std::make_unique<NetworkChangeManager>(
      CreateNetworkChangeNotifierIfNeeded(
          net::NetworkChangeNotifier::ConnectionType(
              params->initial_connection_type),
          net::NetworkChangeNotifier::ConnectionSubtype(
              params->initial_connection_subtype),
          mock_network_change_notifier));

  trace_net_log_observer_.WatchForTraceStart(net_log_);

  // Add an observer that will emit network change events to |net_log_|.
  // Assuming NetworkChangeNotifier dispatches in FIFO order, we should be
  // logging the network change before other IO thread consumers respond to it.
  network_change_observer_ =
      std::make_unique<net::LoggingNetworkChangeObserver>(net_log_);

  network_quality_estimator_manager_ =
      std::make_unique<NetworkQualityEstimatorManager>(net_log_);

  dns_config_change_manager_ = std::make_unique<DnsConfigChangeManager>();

  host_resolver_manager_ = std::make_unique<net::HostResolverManager>(
      net::HostResolver::ManagerOptions(),
      net::NetworkChangeNotifier::GetSystemDnsConfigNotifier(), net_log_);
  host_resolver_factory_ = std::make_unique<net::HostResolver::Factory>();

  network_usage_accumulator_ = std::make_unique<NetworkUsageAccumulator>();

  http_auth_cache_copier_ = std::make_unique<HttpAuthCacheCopier>();

  crl_set_distributor_ = std::make_unique<CRLSetDistributor>();

  legacy_tls_config_distributor_ =
      std::make_unique<LegacyTLSConfigDistributor>();

  doh_probe_activator_ = std::make_unique<DelayedDohProbeActivator>(this);

  trust_token_key_commitments_ = std::make_unique<TrustTokenKeyCommitments>();
}

NetworkService::~NetworkService() {
  DCHECK_EQ(this, g_network_service);

  doh_probe_activator_.reset();

  g_network_service = nullptr;
  // Destroy owned network contexts.
  DestroyNetworkContexts();

  // All NetworkContexts (Owned and unowned) must have been deleted by this
  // point.
  DCHECK(network_contexts_.empty());

  if (file_net_log_observer_) {
    file_net_log_observer_->StopObserving(nullptr /*polled_data*/,
                                          base::OnceClosure());
  }

  if (initialized_)
    trace_net_log_observer_.StopWatchForTraceStart();
}

void NetworkService::set_os_crypt_is_configured() {
  os_crypt_config_set_ = true;
}

std::unique_ptr<NetworkService> NetworkService::Create(
    mojo::PendingReceiver<mojom::NetworkService> receiver) {
  return std::make_unique<NetworkService>(nullptr, std::move(receiver));
}

std::unique_ptr<NetworkService> NetworkService::CreateForTesting() {
  return std::make_unique<NetworkService>(
      std::make_unique<service_manager::BinderRegistry>());
}

void NetworkService::RegisterNetworkContext(NetworkContext* network_context) {
  // If IsPrimaryNetworkContext() is true, there must be no other
  // NetworkContexts created yet.
  DCHECK(!network_context->IsPrimaryNetworkContext() ||
         network_contexts_.empty());

  DCHECK_EQ(0u, network_contexts_.count(network_context));
  network_contexts_.insert(network_context);
  if (quic_disabled_)
    network_context->DisableQuic();

  // The params may already be present, so we propagate it
  // to this new network_context. When params gets changed
  // via ConfigureHttpAuthPrefs method, we propagate the change
  // to all NetworkContexts in |network_contexts_|
  if (http_auth_dynamic_network_service_params_) {
    network_context->OnHttpAuthDynamicParamsChanged(
        http_auth_dynamic_network_service_params_.get());
  }

  if (doh_probe_activator_)
    doh_probe_activator_->MaybeActivateDohProbes(network_context);
}

void NetworkService::DeregisterNetworkContext(NetworkContext* network_context) {
  // If the NetworkContext is the primary network context, all other
  // NetworkContexts must already have been destroyed.
  DCHECK(!network_context->IsPrimaryNetworkContext() ||
         network_contexts_.size() == 1);

  DCHECK_EQ(1u, network_contexts_.count(network_context));
  network_contexts_.erase(network_context);
}

#if defined(OS_CHROMEOS)
void NetworkService::ReinitializeLogging(mojom::LoggingSettingsPtr settings) {
  logging::LoggingSettings logging_settings;
  logging_settings.logging_dest = settings->logging_dest;
  base::ScopedFD log_file_descriptor = settings->log_file_descriptor.TakeFD();
  logging_settings.log_file = fdopen(log_file_descriptor.release(), "a");
  if (!logging_settings.log_file) {
    LOG(ERROR) << "Failed to open new log file handle";
    return;
  }
  if (!logging::InitLogging(logging_settings))
    LOG(ERROR) << "Unable to reinitialize logging";
}
#endif

void NetworkService::CreateNetLogEntriesForActiveObjects(
    net::NetLog::ThreadSafeObserver* observer) {
  std::set<net::URLRequestContext*> contexts;
  for (NetworkContext* nc : network_contexts_)
    contexts.insert(nc->url_request_context());
  return net::CreateNetLogEntriesForActiveObjects(contexts, observer);
}

void NetworkService::SetClient(
    mojo::PendingRemote<mojom::NetworkServiceClient> client,
    mojom::NetworkServiceParamsPtr params) {
  client_.Bind(std::move(client));
  Initialize(std::move(params));
}

void NetworkService::StartNetLog(base::File file,
                                 net::NetLogCaptureMode capture_mode,
                                 base::Value client_constants) {
  DCHECK(client_constants.is_dict());
  std::unique_ptr<base::DictionaryValue> constants = net::GetNetConstants();
  constants->MergeDictionary(&client_constants);

  file_net_log_observer_ = net::FileNetLogObserver::CreateUnboundedPreExisting(
      std::move(file), std::move(constants));
  file_net_log_observer_->StartObserving(net_log_, capture_mode);
}

void NetworkService::AttachNetLogProxy(
    mojo::PendingRemote<mojom::NetLogProxySource> proxy_source,
    mojo::PendingReceiver<mojom::NetLogProxySink> proxy_sink) {
  if (!net_log_proxy_sink_)
    net_log_proxy_sink_ = std::make_unique<NetLogProxySink>();
  net_log_proxy_sink_->AttachSource(std::move(proxy_source),
                                    std::move(proxy_sink));
}

void NetworkService::SetSSLKeyLogFile(base::File file) {
  net::SSLClientSocket::SetSSLKeyLogger(
      std::make_unique<net::SSLKeyLoggerImpl>(std::move(file)));
}

void NetworkService::CreateNetworkContext(
    mojo::PendingReceiver<mojom::NetworkContext> receiver,
    mojom::NetworkContextParamsPtr params) {
  // Only the first created NetworkContext can have |primary_next_context| set
  // to true.
  DCHECK(!params->primary_network_context || network_contexts_.empty());

  owned_network_contexts_.emplace(std::make_unique<NetworkContext>(
      this, std::move(receiver), std::move(params),
      base::BindOnce(&NetworkService::OnNetworkContextConnectionClosed,
                     base::Unretained(this))));
}

void NetworkService::ConfigureStubHostResolver(
    bool insecure_dns_client_enabled,
    net::DnsConfig::SecureDnsMode secure_dns_mode,
    base::Optional<std::vector<mojom::DnsOverHttpsServerPtr>>
        dns_over_https_servers) {
  DCHECK(!dns_over_https_servers || !dns_over_https_servers->empty());

  // Enable or disable the insecure part of DnsClient. "DnsClient" is the class
  // that implements the stub resolver.
  host_resolver_manager_->SetInsecureDnsClientEnabled(
      insecure_dns_client_enabled);

  // Configure DNS over HTTPS.
  net::DnsConfigOverrides overrides;
  if (dns_over_https_servers && !dns_over_https_servers.value().empty()) {
    overrides.dns_over_https_servers.emplace();
    for (const auto& doh_server : *dns_over_https_servers) {
      overrides.dns_over_https_servers.value().emplace_back(
          doh_server->server_template, doh_server->use_post);
    }
  }
  overrides.secure_dns_mode = secure_dns_mode;
  overrides.allow_dns_over_https_upgrade =
      base::FeatureList::IsEnabled(features::kDnsOverHttpsUpgrade);
  overrides.disabled_upgrade_providers =
      SplitString(features::kDnsOverHttpsUpgradeDisabledProvidersParam.Get(),
                  ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
  host_resolver_manager_->SetDnsConfigOverrides(overrides);
}

void NetworkService::DisableQuic() {
  quic_disabled_ = true;

  for (auto* network_context : network_contexts_) {
    network_context->DisableQuic();
  }
}

void NetworkService::SetUpHttpAuth(
    mojom::HttpAuthStaticParamsPtr http_auth_static_params) {
  DCHECK(!http_auth_static_network_service_params_);
  DCHECK(network_contexts_.empty());
  http_auth_static_network_service_params_ = std::move(http_auth_static_params);
}

void NetworkService::ConfigureHttpAuthPrefs(
    mojom::HttpAuthDynamicParamsPtr http_auth_dynamic_params) {
  // We need to store it as a member variable because the method
  // NetworkService::RegisterNetworkContext(NetworkContext *network_context)
  // uses it to populate the HttpAuthPreferences of the incoming network_context
  // with the latest dynamic params of the NetworkService.
  http_auth_dynamic_network_service_params_ =
      std::move(http_auth_dynamic_params);

  for (NetworkContext* network_context : network_contexts_) {
    network_context->OnHttpAuthDynamicParamsChanged(
        http_auth_dynamic_network_service_params_.get());
  }
}

void NetworkService::SetRawHeadersAccess(
    int32_t process_id,
    const std::vector<url::Origin>& origins) {
  DCHECK(process_id);
  if (!origins.size()) {
    raw_headers_access_origins_by_pid_.erase(process_id);
  } else {
    raw_headers_access_origins_by_pid_[process_id] =
        base::flat_set<url::Origin>(origins.begin(), origins.end());
  }
}

void NetworkService::SetMaxConnectionsPerProxy(int32_t max_connections) {
  int new_limit = max_connections;
  if (new_limit < 0)
    new_limit = net::kDefaultMaxSocketsPerProxyServer;

  // Clamp the value between min_limit and max_limit.
  int max_limit = 99;
  int min_limit = net::ClientSocketPoolManager::max_sockets_per_group(
      net::HttpNetworkSession::NORMAL_SOCKET_POOL);
  new_limit = base::ClampToRange(new_limit, min_limit, max_limit);

  // Assign the global limit.
  net::ClientSocketPoolManager::set_max_sockets_per_proxy_server(
      net::HttpNetworkSession::NORMAL_SOCKET_POOL, new_limit);
}

bool NetworkService::HasRawHeadersAccess(int32_t process_id,
                                         const GURL& resource_url) const {
  // Allow raw headers for browser-initiated requests.
  if (!process_id)
    return true;
  auto it = raw_headers_access_origins_by_pid_.find(process_id);
  if (it == raw_headers_access_origins_by_pid_.end())
    return false;
  return it->second.find(url::Origin::Create(resource_url)) != it->second.end();
}

net::NetLog* NetworkService::net_log() const {
  return net_log_;
}

void NetworkService::GetNetworkChangeManager(
    mojo::PendingReceiver<mojom::NetworkChangeManager> receiver) {
  network_change_manager_->AddReceiver(std::move(receiver));
}

void NetworkService::GetNetworkQualityEstimatorManager(
    mojo::PendingReceiver<mojom::NetworkQualityEstimatorManager> receiver) {
  network_quality_estimator_manager_->AddReceiver(std::move(receiver));
}

void NetworkService::GetDnsConfigChangeManager(
    mojo::PendingReceiver<mojom::DnsConfigChangeManager> receiver) {
  dns_config_change_manager_->AddReceiver(std::move(receiver));
}

void NetworkService::GetTotalNetworkUsages(
    mojom::NetworkService::GetTotalNetworkUsagesCallback callback) {
  std::move(callback).Run(network_usage_accumulator_->GetTotalNetworkUsages());
}

void NetworkService::GetNetworkList(
    uint32_t policy,
    mojom::NetworkService::GetNetworkListCallback callback) {
  auto networks = std::make_unique<net::NetworkInterfaceList>();
  auto* raw_networks = networks.get();
  // net::GetNetworkList may block depending on platform.
  base::ThreadPool::PostTaskAndReplyWithResult(
      FROM_HERE, {base::MayBlock()},
      base::BindOnce(&net::GetNetworkList, raw_networks, policy),
      base::BindOnce(&OnGetNetworkList, std::move(networks),
                     std::move(callback)));
}

void NetworkService::UpdateCRLSet(
    base::span<const uint8_t> crl_set,
    mojom::NetworkService::UpdateCRLSetCallback callback) {
  crl_set_distributor_->OnNewCRLSet(crl_set, std::move(callback));
}

void NetworkService::UpdateLegacyTLSConfig(
    base::span<const uint8_t> config,
    mojom::NetworkService::UpdateLegacyTLSConfigCallback callback) {
  legacy_tls_config_distributor_->OnNewLegacyTLSConfig(config,
                                                       std::move(callback));
}

void NetworkService::OnCertDBChanged() {
  net::CertDatabase::GetInstance()->NotifyObserversCertDBChanged();
}

#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
void NetworkService::SetCryptConfig(mojom::CryptConfigPtr crypt_config) {
#if !BUILDFLAG(IS_CHROMECAST)
  DCHECK(!os_crypt_config_set_);
  auto config = std::make_unique<os_crypt::Config>();
  config->store = crypt_config->store;
  config->product_name = crypt_config->product_name;
  config->main_thread_runner = base::ThreadTaskRunnerHandle::Get();
  config->should_use_preference = crypt_config->should_use_preference;
  config->user_data_path = crypt_config->user_data_path;
  OSCrypt::SetConfig(std::move(config));
  os_crypt_config_set_ = true;
#endif
}
#endif

#if defined(OS_WIN) || (defined(OS_MACOSX) && !defined(OS_IOS))
void NetworkService::SetEncryptionKey(const std::string& encryption_key) {
  OSCrypt::SetRawEncryptionKey(encryption_key);
}
#endif

void NetworkService::AddCorbExceptionForPlugin(int32_t process_id) {
  DCHECK_NE(mojom::kBrowserProcessId, process_id);
  CrossOriginReadBlocking::AddExceptionForPlugin(process_id);
}

void NetworkService::AddAllowedRequestInitiatorForPlugin(
    int32_t process_id,
    const url::Origin& allowed_request_initiator) {
  DCHECK_NE(mojom::kBrowserProcessId, process_id);
  std::map<int, std::set<url::Origin>>& map = plugin_origins_;
  map[process_id].insert(allowed_request_initiator);
}

void NetworkService::RemoveSecurityExceptionsForPlugin(int32_t process_id) {
  DCHECK_NE(mojom::kBrowserProcessId, process_id);

  CrossOriginReadBlocking::RemoveExceptionForPlugin(process_id);

  std::map<int, std::set<url::Origin>>& map = plugin_origins_;
  map.erase(process_id);
}

bool NetworkService::IsInitiatorAllowedForPlugin(
    int process_id,
    const url::Origin& request_initiator) {
  const std::map<int, std::set<url::Origin>>& map = plugin_origins_;
  const auto it = map.find(process_id);
  if (it == map.end())
    return false;

  const std::set<url::Origin>& allowed_origins = it->second;
  return base::Contains(allowed_origins, request_initiator);
}

void NetworkService::OnMemoryPressure(
    base::MemoryPressureListener::MemoryPressureLevel memory_pressure_level) {
  base::MemoryPressureListener::NotifyMemoryPressure(memory_pressure_level);
}

void NetworkService::OnPeerToPeerConnectionsCountChange(uint32_t count) {
  network_quality_estimator_manager_->GetNetworkQualityEstimator()
      ->OnPeerToPeerConnectionsCountChange(count);
}

#if defined(OS_ANDROID)
void NetworkService::OnApplicationStateChange(
    base::android::ApplicationState state) {
  for (auto* network_context : network_contexts_)
    network_context->app_status_listener()->Notify(state);
}
#endif

void NetworkService::SetEnvironment(
    std::vector<mojom::EnvironmentVariablePtr> environment) {
  std::unique_ptr<base::Environment> env(base::Environment::Create());
  for (const auto& variable : environment)
    env->SetVar(variable->name, variable->value);
}

void NetworkService::SetTrustTokenKeyCommitments(
    const std::string& raw_commitments,
    base::OnceClosure done) {
  trust_token_key_commitments_->ParseAndSet(raw_commitments);
  std::move(done).Run();
}

#if defined(OS_ANDROID)
void NetworkService::DumpWithoutCrashing(base::Time dump_request_time) {
  static base::debug::CrashKeyString* time_key =
      base::debug::AllocateCrashKeyString("time_since_dump_request_ms",
                                          base::debug::CrashKeySize::Size32);
  base::debug::ScopedCrashKeyString scoped_time(
      time_key, base::NumberToString(
                    (base::Time::Now() - dump_request_time).InMilliseconds()));
  base::debug::DumpWithoutCrashing();
}
#endif

void NetworkService::BindTestInterface(
    mojo::PendingReceiver<mojom::NetworkServiceTest> receiver) {
  if (registry_) {
    auto pipe = receiver.PassPipe();
    registry_->TryBindInterface(mojom::NetworkServiceTest::Name_, &pipe);
  }
}

std::unique_ptr<net::HttpAuthHandlerFactory>
NetworkService::CreateHttpAuthHandlerFactory(NetworkContext* network_context) {
  if (!http_auth_static_network_service_params_) {
    return net::HttpAuthHandlerFactory::CreateDefault(
        network_context->GetHttpAuthPreferences()
#if defined(OS_ANDROID) && BUILDFLAG(USE_KERBEROS)
            ,
        base::BindRepeating(&CreateAuthSystem, network_context)
#endif
    );
  }

  return net::HttpAuthHandlerRegistryFactory::Create(
      network_context->GetHttpAuthPreferences(),
      http_auth_static_network_service_params_->supported_schemes
#if BUILDFLAG(USE_EXTERNAL_GSSAPI)
      ,
      http_auth_static_network_service_params_->gssapi_library_name
#endif
#if defined(OS_ANDROID) && BUILDFLAG(USE_KERBEROS)
      ,
      base::BindRepeating(&CreateAuthSystem, network_context)
#endif
  );
}

void NetworkService::OnBeforeURLRequest() {
  MaybeStartUpdateLoadInfoTimer();
}

void NetworkService::DestroyNetworkContexts() {
  // Delete NetworkContexts. If there's a primary NetworkContext, it must be
  // deleted after all other NetworkContexts, to avoid use-after-frees.
  for (auto it = owned_network_contexts_.begin();
       it != owned_network_contexts_.end();) {
    const auto last = it;
    ++it;
    if (!(*last)->IsPrimaryNetworkContext())
      owned_network_contexts_.erase(last);
  }

  DCHECK_LE(owned_network_contexts_.size(), 1u);
  owned_network_contexts_.clear();
}

void NetworkService::OnNetworkContextConnectionClosed(
    NetworkContext* network_context) {
  if (network_context->IsPrimaryNetworkContext()) {
    DestroyNetworkContexts();
    return;
  }

  auto it = owned_network_contexts_.find(network_context);
  DCHECK(it != owned_network_contexts_.end());
  owned_network_contexts_.erase(it);
}

void NetworkService::MaybeStartUpdateLoadInfoTimer() {
  if (waiting_on_load_state_ack_ || update_load_info_timer_.IsRunning())
    return;

  bool has_loader = false;
  for (auto* network_context : network_contexts_) {
    if (!network_context->url_request_context()->url_requests()->empty()) {
      has_loader = true;
      break;
    }
  }

  if (!has_loader)
    return;

  update_load_info_timer_.Start(FROM_HERE, kUpdateLoadStatesInterval, this,
                                &NetworkService::UpdateLoadInfo);
}

void NetworkService::UpdateLoadInfo() {
  // For requests from the same {process_id, routing_id} pair, pick the most
  // important. For ones from the browser, return all of them.
  std::vector<mojom::LoadInfoPtr> infos;
  std::map<std::pair<int32_t, int32_t>, mojom::LoadInfoPtr> frame_infos;

  for (auto* network_context : network_contexts_) {
    for (auto* loader :
         *network_context->url_request_context()->url_requests()) {
      auto* url_loader = URLLoader::ForRequest(*loader);
      if (!url_loader)
        continue;

      auto process_id = url_loader->GetProcessId();
      auto routing_id = url_loader->GetRenderFrameId();
      if (routing_id == MSG_ROUTING_NONE) {
        // If there is no routing_id, then the browser can't associate this with
        // a page so no need to send.
        continue;
      }

      auto load_info = mojom::LoadInfo::New();
      load_info->process_id = process_id;
      load_info->routing_id = routing_id;
      load_info->host = loader->url().host();
      auto load_state = loader->GetLoadState();
      load_info->load_state = static_cast<uint32_t>(load_state.state);
      load_info->state_param = std::move(load_state.param);
      auto upload_progress = loader->GetUploadProgress();
      load_info->upload_size = upload_progress.size();
      load_info->upload_position = upload_progress.position();

      if (process_id == 0) {
        // Requests from the browser can't be compared to ones from child
        // processes, so send them all without looking for the most interesting.
        infos.push_back(std::move(load_info));
        continue;
      }

      auto key = std::make_pair(process_id, routing_id);
      auto existing = frame_infos.find(key);
      if (existing == frame_infos.end() ||
          LoadInfoIsMoreInteresting(*load_info, *existing->second)) {
        frame_infos[key] = std::move(load_info);
      }
    }
  }

  for (auto& it : frame_infos)
    infos.push_back(std::move(it.second));

  if (infos.empty())
    return;

  DCHECK(!waiting_on_load_state_ack_);
  waiting_on_load_state_ack_ = true;
  client_->OnLoadingStateUpdate(
      std::move(infos), base::BindOnce(&NetworkService::AckUpdateLoadInfo,
                                       base::Unretained(this)));
}

void NetworkService::AckUpdateLoadInfo() {
  DCHECK(waiting_on_load_state_ack_);
  waiting_on_load_state_ack_ = false;
  MaybeStartUpdateLoadInfoTimer();
}

void NetworkService::Bind(
    mojo::PendingReceiver<mojom::NetworkService> receiver) {
  DCHECK(!receiver_.is_bound());
  receiver_.Bind(std::move(receiver));
}

// static
NetworkService* NetworkService::GetNetworkServiceForTesting() {
  return g_network_service;
}

}  // namespace network

redpajama_set_name: RedPajamaGithub


text:
Medicinal plants with cholesterol-lowering effect marketed in the Buenos Aires-La Plata conurbation, Argentina: An Urban Ethnobotany study
Julio Alberto Hurrell Laboratorio de Etnobotánica y Botánica Aplicada (LEBA), Facultad de Ciencias Naturales y Museo, Universidad Nacional de La Plata. Calle 64 nro. 3, 1900-La Plata. Argentina
Jeremías Pedro Puentes Laboratorio de Etnobotánica y Botánica Aplicada (LEBA), Facultad de Ciencias Naturales y Museo, Universidad Nacional de La Plata. Calle 64 nro. 3, 1900-La Plata. Argentina
Patricia Marta Arenas Laboratorio de Etnobotánica y Botánica Aplicada (LEBA), Facultad de Ciencias Naturales y Museo, Universidad Nacional de La Plata. Calle 64 nro. 3, 1900-La Plata. Argentina
https://doi.org/10.15451/ec2015-9-4.7-1-19
Multicultural Contexts, Methodological Approach, Plants and Knowledge Visibility, Botanical Knowledge Transmission
This contribution presents 82 species of medicinal plants whose products are sold and consumed as cholesterol-lowering in the Buenos Aires-La Plata conurbation, Argentina. The hypocholesterolemic effect is relevant because the high level of blood cholesterol is one of the major risk factors for cardiovascular diseases, leading causes of death and disability almost worldwide. The species were selected from their locally assigned use, obtained from interviews with informants, data labels, prospectus and leaflets of products, and information diffused in the media, specially the Internet. Furthermore, a bibliographic review on scientific studies that validate the biological activity and effects of each species was accomplished. The theoretical framework of this research argues that urban botanical knowledge comprising some knowledge linked to traditions of various immigrants segments (invisible to most of the local population), and other non-traditional knowledge (visible). The evaluation of these kinds of knowledge is approached from the plant products circulation in the restricted circuits of immigrants (Bolivian and Chinese for this contribution) and the general commercial circuit, so that products that pass from the first circuit to the second gain visibility. The movement of plant products that acquire visibility also expressed the botanical knowledge transmission from one context to another, a transmission enhanced and accelerated by the media. In this frame, the visibility levels of plant products considered hypocholesterolemic in the study area are discussed.
Julio Alberto Hurrell, Laboratorio de Etnobotánica y Botánica Aplicada (LEBA), Facultad de Ciencias Naturales y Museo, Universidad Nacional de La Plata. Calle 64 nro. 3, 1900-La Plata. Argentina
Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET) Investigador Independiente
Jeremías Pedro Puentes, Laboratorio de Etnobotánica y Botánica Aplicada (LEBA), Facultad de Ciencias Naturales y Museo, Universidad Nacional de La Plata. Calle 64 nro. 3, 1900-La Plata. Argentina
Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET) Becario
Patricia Marta Arenas, Laboratorio de Etnobotánica y Botánica Aplicada (LEBA), Facultad de Ciencias Naturales y Museo, Universidad Nacional de La Plata. Calle 64 nro. 3, 1900-La Plata. Argentina
Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET) Profesional Principal
Hurrell, J. A., Puentes, J. P., & Arenas, P. M. (2015). Medicinal plants with cholesterol-lowering effect marketed in the Buenos Aires-La Plata conurbation, Argentina: An Urban Ethnobotany study. Ethnobiology and Conservation, 4. https://doi.org/10.15451/ec2015-9-4.7-1-19
This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.
Julio Alberto Hurrell, Jeremías P. Puentes, Plant species and products of the Traditional Chinese Phytotherapy in the Ciudade Autónoma de Buenos Aires, Argentina , Ethnobiology and Conservation: Vol. 6 (2017)
Julio Alberto Hurrell, Ulysses Paulino Albuquerque, Is Ethnobotany an Ecological Science? Steps towards a complex Ethnobotany , Ethnobiology and Conservation: Vol. 1 (2012)
Jeremías Pedro Puentes, Patricia Marta Arenas, Julio Alberto Hurrell, Chinese functional foods and nutraceuticals: plants and products commercialized in the Ciudad Autónoma de Buenos Aires, Argentina , Ethnobiology and Conservation: Vol. 8 (2019)
Julio Alberto Hurrell, Jeremías Pedro Puentes, Medicinal and aromatic species of Asteraceae commercialized in the conurbation Buenos Aires-La Plata (Argentina) , Ethnobiology and Conservation: Vol. 2 (2013)
Jacinto Esteban Hernandez Bermejo, Gustavo Delucchi, Gustavo Charra, María Lelia Pochettino, Julio Alberto Hurrell, "Cardos" of two worlds: Transfer and re-signification of the uses of thistles between the Iberian Peninsula and Argentina , Ethnobiology and Conservation: Vol. 8 (2019)


Last fall I had the amazing opportunity to travel to India to participate in the Science for Monks programme. Science for monks is a project that has been established by the Library for Tibetan Works and Archives to teach monastic graduates (mostly geshes) about Western science. They have created this programme at the request of His Holiness the Dalai Lama. Every year a group of monastic graduates from a wide range of monasteries all over India (this year even including some from Bhutan) travel to study together for a month and learn the basics of physics and neuroscience. The programme is mostly taught by faculty from the Exploratorium, a science museum in San Francisco. However, towards the end of the programme, some scientists currently doing research are invited to share some of their latest findings. This is how I came in. I was requested to come to India to teach about my work on computational models of the mind and meditation. You can imagine I was pretty excited!
One morning in October I left for India. I went a few days early so I could travel to Varanasi and enjoy my chance to go to the East a bit more. In some sense, that may not have been an amazing idea, since it was just the holiday of Diwali, meaning that the city was packed. It was a bit of a culture shock, but also quite beautiful to be surrounded by so many devout people making their rounds between the temples. Probably a highlight was an early morning boatride on the Ganges, seeing the sun arise between the burning ghats, the cremation places. It is almost surreal.
Now what a difference was the arrival in Dharamsala, where the course was held, with crammed Varanasi! When we flew into Dharamsala, we were welcomed by a team from the organisation and brought to the monastery. The teaching programme took place in Sarah, a monastic study college somewhere to the south of Dharamsala. Every day was divided into four sessions with lectures from each of the lecturers in turn. We had all sent our slides beforehand, so they could be translated into Tibetan. Now how often does it happen that you get to present from Tibetan slides, and have a translator by your side who turns every phrase into Tibetan? What made this interesting is that it forced me to be much more precise about what I am saying!
In my lectures I talked about creating computer models of the mind, with which we basically simulate what we think the humans are doing in particular cognitive tasks. We test these models by giving them the same tasks as humans and then seeing whether those produce the behavior we see in humans. The idea is that if you can build a system, then you understand it. We talked about computational models of decision making that assume that decisions are driven by a noisy process that meanders over time as information accumulations, and that turns into a response when it crossed a decision threshold. To better understand it we acted out this model: some monks being the decision threshold, some a meandering piece of information. It was great fun! One of the amazing things of teaching these monastics is that they are quick to laugh and extremely engaged. No bored looks here!
Things got a bit more intense when I presented my computational model of meditation (or at least the beginnings thereof). While they understood my interest in studying meditation, they were worried that this ignored many important aspects of the practice. I agree, and this led to good discussions about how science consists of making models of reality, that are clearly only approximations. The important thing is not to start believing in them too seriously! Another interesting question they asked me is why I needed all these participants in my experiments. Since I am a meditator myself, why could I not just study myself? This led to some good discussions about the science of measurement and needing larger groups to be able to generalize to the whole population.
The monastics had pretty intense days, because apart from our lectures during the day, they did some ritual practices ("puja") in the evenings, as well as debate. Debate is its own story, and quite fascinating to watch. In a very stylized physical game, monks debate important philosophical issues to increase their understanding. Even when you do not speak Tibetan and cannot understand what they are talking about, it is still a fascinating thing to watch!
Apart from this being an amazing experience, what did it teach me? First, it showed me that Tibetan monks do not spend most of their time meditating, but rather, study place a prime role. I think it would be really interesting to do scientific studies on how these study programs help to transform people's minds. Another lesson was that the monastic don't make such a difference between science and ethics as we do in the West. They kept asking me about compassion and about how my work was going to alleviate the suffering of beings. I think it is really good to be reminded of that time and again. Maybe we should do a little more of that. And wouldn't it be awesome if we could introduce some of the debating or analytical meditation methods in our Western university classrooms?


text:
Constant Geography
The United States and Canada
The Russian Realm
Africa, South of the Sahara
Introduction to Weather and Climate
Earth-Sun Relationship and Solar Radiation
Energy and Temperature
Pressure and Wind
Atmospheric Moisture
Moisture in the Atmosphere
Atmospheric Circulation
Air Masses and Fronts
Mid-Latitude Cyclones
Tropical Storms and Hurricanes
Lightning, Thunder, and Tornadoes
Climate: Past, Present, Future
Human Influences on the Atmosphere
Earth's Climates
Climates: Past and Future
Geography Store
South Asia represents one of the most significant regions in terms of human history. The Indus River system is the location of multiple ancient civilizations and considerable archaeological studies are finding substantial evidence of ancient human communities and landscape modification.
This realm has been critical throughout human history playing the role of a corridor for human migration and settlement. The realm is well-watered and contains many rivers which assist in the movement of people and their belongings and also provide moisture for agriculture.
In more modern history, can you believe that Great Britain ran this large piece of real estate for nearly 100 years? Staggering…
Everything from present-day Pakistan to present-day Bangladesh once fell under control of the British Crown. After World War 2, Britain was too distracted by its own re-construction to be able to manage its overseas territories. Eventually, India was turned loose, on its own, but not after being heavily influenced and directed by Great Britain.
Even India couldn't hold together its parts for very long. East and West Pakistan were created to help establish countries that essentially recognized the differences between the Hindu and Muslim populations. East and West Pakistan couldn't keep it together, either, one government managing two different cultures that share one religion, separated by almost 900 miles. In 1973, after a three-month civil war, Pakistan and Bangladesh were born.
This is one of our smaller realms, in terms of size, but not in terms of population. India has population of slightly over 1,000,000,000 (one billion) people and is on pace to become more populous than China in about two decades.
By 2025, the entire sub-continent may become the world's most populous realm, as well. The realm is a hot-bed of commerce and economic growth (India) and also extremist movements (Pakistan). The Himalayas are a prominent physiographic feature that separates this realm from Central and East Asia.
Please share me :)
Hey; Thanks for taking the time to leave a comment! Your feedback is greatly appreciated! Cancel reply
Anna Banks
Bethanne Patrick
Between Fact and Fiction
Del Ray and Spectra
Evan Dorkin
Jennifer Laughran
Julie A Lindsey
Laurell K Hamilton
Liana Brooks
Lit Reactor
Little Red Reviewer
Myra McEntire
NinaNerdFace
Paul Steele
Shannon Mayer
Shannon Thompson (Author)
Starburst Magazine
Super Writer Mom
The Comic Academy
The Crazy Life of a Writing Mom
Tim Akers
21st Century Teacher
Adventures in Vietnam
Careers in GIS
Diving Archaeology
ed Social Media
Education Week Teacher
Elke Teaches
James M Lang
Mark Brumley
Patrick Riccards
Tom Whitby


About the author .. It would be imprudent to read this short and thoughtful poem without learning something about Robert Frost, the legendary Nature-lover. Frost spent most part of his active literary life wandering around the lands, forests, rivers, valleys and mountains, and feasting his eyes in their beauty. He discovered many philosophical truths about the mundane world when he passed by Daffodils, snow-covered trees, woods, and streams. For the reader, it comes as a revelation to find the great many emotions and inspiration he drew from such trifling and innocuous things as a flower drifting in a stream or snowflakes falling from above. This short poem is one such composition of Robert Frost.
The poem.. The poet sits under a hemlock tree in a vacant, cheerless mind, unable to engage anything worthwhile. He is bored, and a bit sad, because an idle day seems to lies ahead. It is snowing and the snowflakes have settled on the foliage. A crow flies in from nowhere, and causes a flutter in the branches. The resulting movement makes a few flakes to fall on the poet, shaking off his idle and lazy mind.
Till then, the poet had nothing in mind. He had no plans for the day. All sorts of creative energy had taken leave of his mind and body. On the whole, a lazy and activity-less day appeared to be in store for him. The fall of the snowflakes from the branch jerks his mind and body. He springs to action, and gets ready to indulge something creative and meaningful. The day that seemed to be dull so far appears to be exciting and joyful. Such was the impact of a tiny flake of falling snow on his mind. Crow, black and seldom a sign of inspiration, has caused this great change in his day's routine.
Thinking about the poem ..
What is 'Dust of Snow' ……………………….Dust of snow means the small snow particles that get dislodged with a little shaking of the surface where it settles. The falling of the snow dust on him breaks the inactive state of his mind as it virtually awakes him. The poet's mood becomes positive and creative again.
How does Frost present ……….. Nature, according to Frost, has an overwhelming influence on human minds. At times, nature can make a man lazy, negative, and listless. At other times, it can make the mind exuberant, lively and positive.
Sir, can u pls post the explanation / summary of "The Sound Machine" by Roald Dahl… It's urgent sir… As soon as possible, pls. Thank you.
Thank you Rajini for writing to me. I had long ago tried to write this story, but somehow, found it uninteresting. So, I gave up. Now, like you, some more students have requested me to write it. I will, therefore, write it, but you will have to wait at least for three weeks.


text:
Home > October 2002 - Volume 23 - Issue 5 > Effects of Sensorineural Hearing Loss on Cortical Event-Rela...
Thought you might appreciate this item(s) I saw at Ear and Hearing.
Effects of Sensorineural Hearing Loss on Cortical Event-Related Potential and Behavioral Measures of Speech-Sound Processing
Oates, Peggy A.; Kurtzberg, Diane; Stapells, David R.
Ear and Hearing: October 2002 - Volume 23 - Issue 5 - p 399-415
Objective To investigate systematically the effects of sensorineural hearing loss on cortical event-related potentials (ERPs) N1, MMN, N2 and P3 and their associated behavioral measures (d′ sensitivity and reaction time) to the speech sounds /ba/ and /da/ presented at 65 and 80 dB ppe SPL.
Design Cortical ERPs were recorded to /ba/ and /da/ speech stimuli presented at 65 and 80 dB ppe SPL from 20 normal-hearing adults and 20 adults who are hearing impaired. The degree of sensorineural impairments at 1000 to 2000 Hz ranged from mild losses (defined as 25 to 49 dB HL) to severe/profound losses (75 to 120 dB HL). The speech stimuli were presented in an oddball paradigm and the cortical ERPs were recorded in both active and passive listening conditions for each stimulus intensity.
Results Both ERP amplitudes and behavioral discrimination (d′) scores were lower for listeners with sensorineural hearing loss than for those with normal hearing. However, these differences in response strength were evident only for those listeners whose average hearing loss at 1000 to 2000 Hz exceeded 60 dB HL for the lower intensity stimuli and exceeded 75 dB HL for the higher intensity stimuli. In contrast, prolongations in the ERP and behavioral latencies, relative to responses from normal-hearing subjects, began with even mild (25 to 49 dB HL) threshold elevations. The amplitude and latency response changes that occurred with sensorineural hearing loss were significantly greater for the later ERP peaks (N2/P3) and behavioral discrimination measures (d′ and RT) in comparison with earlier (N1, MMN) responses.
Conclusions The results indicate that latency measures are more sensitive indicators of the early effects of decreased audibility than are response strength (amplitude, d′ or percent correct) measures. Sensorineural hearing loss has a greater impact on higher level or "nonsensory" cortical processing in comparison with lower level or "sensory" cortical processing. Possible physiologic mechanisms within the cortex that may be responsible for these response changes are presented. Lastly, the possible clinical significance of these ERP and behavioral findings is discussed.
There is considerable interest in the use of cortical event-related potentials (ERPs), especially MMN, for assessing populations where behavioral measures of speech detection and discrimination are difficult to obtain (e.g., infants, young children, and difficult-to-test patients). These potentials have shown promising, though preliminary, results in assessing benefit from sensory aids and monitoring of an individual's progress with auditory training. This study aimed to investigate systematically the effects of sensorineural hearing loss on cortical event-related potentials and their associated behavioral measures (d sensitivity and reaction-time) to the speech sounds /ba/ and /da/. Both ERP amplitudes and behavioral discrimination (d) scores were lower for listeners with sensorineural hearing loss than for those with normal hearing, but this effect was evident only for listeners with more pronounced hearing impairment. In contrast, prolongations in the ERP and behavioral latencies, relative to responses from normal-hearing subjects, began with even mild threshold elevations. The results indicate that latency measures are more sensitive indicators of the early effects of decreased audibility than are response strength (amplitude, d, or percent correct) measures.
Department of Communication Sciences and Disorders (P.A.O.), Towson University, Towson, Maryland; Department of Neuroscience and Neurology (D.K.), Albert Einstein College of Medicine, Bronx, New York; and School of Audiology and Speech Sciences (D.R.S.), University of British Columbia, Vancouver, B.C., Canada.
Address for correspondence: Peggy Oates, Ph.D., Department of Communication Sciences and Disorders, Towson University, 8000 York Road, Towson, Maryland 21252-0001. E-mail: poates@towson.edu.
Received June 11, 2001 accepted June 7 2002
Portions of this paper were presented at the XV Biennial International Symposium of the International Evoked Response Audiology Study Group, August, 1997.
Ear and Hearing23(5):399-415, October 2002.
Articles in PubMed by Peggy A. Oates
Articles in Google Scholar by Peggy A. Oates
Other articles in this journal by Peggy A. Oates
Clinical Practice for Children with Mild Bilateral and Unilateral Hearing Loss
The Hearing Handicap Inventory for the Elderly: a New Tool
Children with Minimal Sensorineural Hearing Loss: Prevalence, Educational Performance, and Functional Status
Effects of Sensorineural Hearing Loss and Personal Hearing Aids on Cortical Event-Related Potential and Behavioral Measures of Speech-Sound Processing
Speech Evoked Potentials: From the Laboratory to the Clinic


I've noticed something fascinating that happens this PARTICULAR time of year to "good" relationships.
Especially in relationships where the couple has been dating for several months or a year or longer and they're getting along and have a great connection.
The holidays roll around and a lot of women begin to wonder if their guy is finally going to either pop the question, buy them a ring or make more of a long-term commitment.
To top it off, maybe your friends or family are giving you the impression that it's something THEY think should happen, too.
Are you wondering if your man is finally going to pop the question or buy you a ring and make that last big commitment to you soon?
And if so, what is it about this particular time of year that brings this topic up for so many women?
I don't have any scientific studies or statistics to quote to you, but I do have my own theories about why the holidays cast such a strong spotlight on commitment.
One is that a lot of single women spend the holidays visiting friends and family and listening to a lot of unsolicited advice about their love lives.
How many times have you had to bite your tongue and be tactful when "Aunt Mae" or whomever starts asking you when you're going to finally "settle down" and get married?
Sometimes even in front of your guy!
It's a tricky question because even though you may not admit it openly, deep down, you're probably wondering that very thing, too.
Or if you will have a real and solid future together – one that you can feel good about and plan for.
You wonder what it's going to take to get him THINKING and PLANNING about your future together instead of just thinking about what's on TV tonight or worrying about whether or not his team is going to the Super Bowl this year.
After all, you've been "serious" with him for a while now. You've been seeing each other exclusively, you've been saying "I love you" to each other and you plan vacations and trips together. You've even met each other's families.
So shouldn't a long-term commitment or proposal be the NEXT LOGICAL STEP?
If you're "living it", why not just make it official, right?
Actually, many men do think about it. It's not unheard-of for a guy to think about a deeper commitment with his girlfriend around the holidays or other special occasions like birthdays.
I've personally known a few couples who got engaged on Christmas, or Valentine's Day or whatever.
But does it happen JUST BECAUSE it's a special time of year, or does it happen based on OTHER criteria?
On one hand, if a man is ready to commit to a woman, he may CHOOSE special occasions or times of the year to bring it up or pop the question. Those occasions, such as holidays or birthdays, are opportunities to give gifts that symbolize what the person means to you.
It's all part of a man's desire to make the woman he loves happy by making it SPECIAL.
It's one thing to wonder and feel excited about the POSSIBILITIES of what might happen, without necessarily being attached to any particular course of events.
This kind of excited ANTICIPATION can actually add a lot of positive feelings to your relationship.
It's quite ANOTHER THING if you're spending A LOT of time feeling worried and anxious about whether or not the holidays are going to pass by… without a ring or long-term commitment from your man.
Not to mention all that anxiety and worry can cause you to come off as seeming "on edge" and irritable, which can send the WRONG signal to the guy.
Holidays are stressful enough as it is… so adding to the stress by acting "on edge" can really freak him out and start to question your relationship… even MORE than any other time of year.
He might wonder if he's done something wrong to make you feel that way… but if he feels like this discussion has come totally out of "left field" and is not understanding where he stands in the commitment process he may start to feel mistrustful or resentful of you.
And if you're wondering if "dropping hints" or asking his friends or family for clues about "what he's thinking" about a more permanent commitment is a good strategy… think again.
That will actually have the OPPOSITE EFFECT of what you're hoping to achieve.
I hope you're starting to see how easy it is to create a bunch of negative feelings and unrealistic expectations around your relationship when you didn't intend to.
So why don't you step back for a minute and let me help you get some perspective here?
Even though this time of year can be special for a lot of reasons and can be a great time to reconnect with family and friends, it doesn't mean that something is necessarily going to CHANGE in your relationship.
This is because a man doesn't commit to a woman JUST BECAUSE it's a special time of year or because it's been exactly so-many-months or years since you met.
Many guys aren't even AWARE of exactly how much time you've been together… or what that means to you.
So the fact that it's a holiday and you're in a comfortable and connected relationship is no indication IN ITSELF that a man is going to want to commit to you.
For a man, a commitment on the level of a proposal or a ring is the culmination of SEVERAL THINGS that happen at a much, much deeper level.
It's much deeper than simply feeling like it's the next logical step in his great relationship with you.
In a man's mind, asking a woman to marry him or move in with him is an internal decision based on HOW HE FEELS when he's with you, and how he pictures his life with you in the future.
Whatever happens once the holidays are over depends on whether your expectations were realistic or unrealistic.
How can you tell if your hopes for the relationship are realistic or just wishful thinking?
— You'll instantly dismiss or "forget" any conversation or comment where he seems to not be "in sync" with what you want in your future together. If what he says doesn't fit with what you want, you choose to ignore it (consciously or subconsciously).
— You fantasize about where your relationship will be a year or two from now, but you haven't actually had real discussions about it with him.
On the other hand, if you have realistic expectations based on HONESTY and good communication, chances are you won't have to worry that you're putting out bad "vibes" or misunderstanding each other.
Which means that getting a ring or a proposal will be a pleasant surprise instead of being a source of WORRY and TENSION all the time.
1. YOU ASSUME HE WANTS WHAT YOU WANT.
When the woman feels such an amazing connection with a man, she assumes that he wants the same things she does from the relationship. The assumptions – such as automatically getting a commitment because things are "going well" and you've been dating a year or two – become so strong and real that they become BELIEFS.
When you start to BELIEVE things NEED to happen a certain way, you'll have a hard time even "accepting" if your relationship differs from the way you picture it in your mind. And then when/if it doesn't happen, it becomes an even more monumental "blow" to your relationship.
Women would like to think that a man should be able to "read their mind" because of the connection they share. Guess what? No one is a mind-reader, no matter how in love they are.
2. YOU HAVE HIDDEN OR UNSPOKEN EXPECTATIONS.
Do you expect your relationship to progress in a certain way or have particular goals that you have NOT discussed or shared with your man?
You may be hoping that he'll pop the question soon, but has the idea of a long-term, serious commitment even been a topic of discussion between you? If not, you may be setting yourself up for disappointment if you're not talking to your man about what you want and need to be happy.
You may have put off talking to him about what you want simply because you're afraid you'll scare him off, or because you don't know how to approach the subject.
This can create a disconnect between what you and the man expect out of the relationship, which leads to misunderstandings, fights, resentment and hurt feelings.
I'll explain why one particular kind of approach works BETTER for getting him to start thinking about committing to you WITHOUT pleading, arguing, drama or tension.
3. YOU'RE THINKING COMMITMENT TOO SOON.
Have you already committed yourself to your relationship – physically, emotionally and otherwise – without "checking in" to make sure the man is AS INVESTED as you are?
For example, you and your man have amazing chemistry and everything is always intense when you're together – you always have deep and thoughtful conversations and the way you connect on a physical level is amazing. You assume things are "going somewhere" and you aren't seeing anyone else… or even considering it for that matter.
Are you sure that he's in the same place you are?
Does he think your relationship is headed toward serious, monogamous commitment and living together someday?
How do you know? Have you asked him? Or are you ASSUMING (re-read point #1) that he automatically wants what you want?
Sometimes women discover that their man wasn't thinking of a future together in the same way they were.
In other words, he was enjoying the time he was spending with you, but wasn't considering what it would be like to CREATE A LIFE TOGETHER or be exclusive.
You can imagine the conflict and hurt feelings that can develop when one or the other person finally OPENS UP and admits where their head and heart are really at… and it doesn't match the other person's experience.
… especially if you have been assuming these beliefs to be true for months…or EVEN YEARS.
Many women hold back from sharing their real feelings and desires because they're unsure of what a man is thinking, or how best to have "the talk" with him.
When all these pent-up feelings come out, they create intense "drama" because of all the passive-aggressive feelings that develop between the man and woman.
And if there's one thing men hate… it's a bunch of DRAMA from a woman about the relationship.
That's when you have situations like the holidays coming and going… and no ring… and you're disappointed and mad.
And before you know it, there's an awkwardness that develops, things feel strained, and he starts DOUBTING your relationship and his ability to make you happy.
Look, I'm not telling you this to discourage you from getting in touch with what you really NEED and WANT for your love life, and being able to share those thoughts with your man.
expectations based on what you BOTH want… instead of looking at it as something you "deserve" or that he "owes" you.
Now that you've figured out if your expectations are realistic or not, let me ask you another question, if you don't mind.
Have you ever known a woman who didn't have to spend one single minute worrying or wondering whether or not her man was going to commit to her?
It just happened… and she didn't have to do anything out of the ordinary or have any kind of "heavy talk" with the man because he was the one begging HER for the commitment.
She didn't worry about where things were headed. She didn't have to threaten him that she would "move on" if he wasn't on board with having a REAL RELATIONSHIP.
Don't you wonder what special MINDSET OR QUALITY a woman like this has, because committed relationships and love come so easily and naturally for her?
It definitely takes a certain kind of woman to make a man feel like she's the one and ONLY woman he wants to be with. Now, or in the future.
Would you like to know how to make your man feel this way about YOU?
The key factor that makes a man want to commit to a woman is whether he feels like he is BETTER OFF being in a committed relationship with her than being single.
He also needs to believe, without a doubt, that he is better off with her than ANY OTHER WOMAN.
If you can unlock a man's deep desire for true love and deep connection, you can avoid hearing the other kinds of fake EXCUSES give when they're not ready.
Excuses like he "needs to figure out his career first", or "get his finances in order", or "figure out where his life is headed" before he can settle down with you.
from an uncertain "casual" relationship to a more meaningful and long-lasting one.
You'll know exactly where your relationship is headed, and you'll feel a whole lot more SECURE about it.
Will He Pop The Question This Year?
Will He Ever Pop the Question?


text:
JD Souther
Saturday, October 9, 2021 7:30 p.m.
Souther proves his work holds up as well as Dylan's or Simon's or Lennon and McCartney's and . . . deserves such astute re-examination.
Souther did more than sketch out the emotional landscape for the introspective West Coast country-rock sound of the 1970s. He set the template.
—No Depression
A pivotal member of the L.A. country-rock posse of the Seventies
John David "JD" Souther was one of the principal architects of the Southern California country-rock sound and is one of the most respected songwriters in American music.
Born in Detroit, Michigan, and raised in Texas, Souther came into his own upon moving to Los Angeles and becoming part of the burgeoning singer-songwriter scene surrounding the Troubadour bar. It was here that he met the artists who would figure so prominently in his career: Glenn Frey, Linda Ronstadt, Jackson Browne, Ry Cooder, and many others.
By 1976, the Eagles had huge hits with his music and Linda Ronstadt had made breathtaking recordings of his songs, some of them duets with him. But it was 1979 when Souther registered his first massive hit as a solo artist: "You're Only Lonely" from the record You're Only Lonely. The 1980s and 1990s saw Souther's songs sell another ten million units on records by George Strait, Trisha Yearwood, Brooks and Dunn, and the Dixie Chicks, to name a few.
He received a major career accolade in 2013 when he was inducted into the Songwriters Hall of Fame.
Recently, Souther has adopted more of a jazz songwriter persona, with records full of new and old originals recorded in a stripped-down, haunting style. On his latest record, Tenderness, he balances his pop and jazz sensibilities, paying particular homage to his earliest influences, the geniuses of the twentieth-century Great American Songbook.
jdsouther.net
Thursday, February 9 Brian Chartrand and the Project
Sunday, February 19 Haley Reinhart
Saturday, February 25 Jon McLaughlin
Thursday, April 20 Ron Pope


"These References Don't Match Up!" — There Is A Reason Why – Foreign Courts Doing Business Here! Fraud!
You have to find and read the Old Federal Code pre-1946 when the Municipal United States took over as "service providers" and "revised" the Code and basically repealed all of it except for one small brutal section of Title 50, the Trading with the Enemy Act. Everything referred to in the China article is pre-1946 and pertains to the time period 1922-43. By the time the vermin in DC began their "Revised Code" scheme in 1946, the China Deal was already done and over.
Just like when the Supreme Court goes back to the meanings of the words in 1789 to interpret the Constitution, you have to go back to the Federal Code as it was prior to being Revised to grasp what was going on in the time period prior to 1946. The "Post-War" Era was the beginning of another round and run up of the Great Fraud. Everything changed according to Bretton Woods and FDR's idea of America as the bank and policeman of the world.
People also need to become more adept at reading and de-coding Federal-ese. What does that long list of corporations and "mixed-government" corporations have to do with the generation skipping trust scheme that deprives Americans of the benefit of their own actual estates?
These are the corporations (just a small partial list of corporations) that the "government" — and now you understand that the "government" has been operating as a for-profit corporation since 1868 — invested your money in.
This is the admission of the start of government investment activities "in your behalf".
Whose money are they investing in all these corporations? Yours. Where are they getting your money from? Your estates and your rents and leases of your assets — everything these pikers stole from you when you were just a baby in your cradle.
This is the revelation of when the gross corruption started and how Walter Burien's CAFR research ties in — where all these "un-budgeted income accounts" go and how the "US Government" became the single largest investor on Wall Street and the the controlling interest holder in virtually all Fortune 500 Companies.
They've been seizing upon your Good Names and Estates virtually at birth, working and taxing you to death during your lives, and investing your money for their benefit after your death — and of course, you never see a penny of. You are never even told that YOU have a stock portfolio.
It all gets rolled over to fund new enterprises and buy more shares in everyone else's commercial corporations and the vermin involved in this scheme claim that this is a "benefit" to the poor — you — because it helps pay for public services.
This is nothing but the extension of the post-Civil War Public Charitable Trust scheme. The "government" which was just then beginning to be operated as a private, foreign, for-profit organization set up the "Public Charitable Trust" for the welfare relief of displaced plantation slaves who couldn't find work or figure out how to make a life for themselves after the plantation system broke down in the South. On the surface this sounds like a good and philanthropic thing, doesn't it?
But in order to get any benefit or relief from the Public Charitable Trust (PCT) the poor blacks in need of it had to re-enslave themselves and "pledge" their bodies and labor and any possessions they had to the Federal Government Corporation — at that time, the Scottish shill calling itself The United States of America, Inc.
Incredible as it may seem, the bankers and politicians are trying to do the same thing again, by setting up a Scottish corporation calling itself THE UNITED STATES OF AMERICA, LTD. and are trying to foist that off on us right now, in 2018, as "our" government.
And just like the poor black people who were forced to "voluntarily" re-enslave themselves by unconscionable contract with the "government" after the Civil War, the criminals responsible have colluded and schemed to establish the same kind of predatory interest in all of us and all of our estates using the same venal excuses and control mechanisms.
First, they deprive you of the benefit of your own assets, leaving you in a state of "eternal scarcity and need", and then to survive, they entrap you into "pledging" your labor and your assets to them—-that is what the "Pledge of Allegiance" is actually for.
It's not a Pledge of Allegiance to this country or to the actual government of this country. It's a pledge to a venal, self-interested, criminal Scottish member of the British Crown Group pretending to "represent" the republics we are owed.