text:
Q: Flutter - Set the scale of a widget I am trying to create an animation that "pops" the widget to the front and returns to it
import "package:flutter/material.dart";

class ScoreCounter extends StatefulWidget {
  @override
  _ScoreCounter createState() => new _ScoreCounter();
}

class _ScoreCounter extends State<ScoreCounter> with SingleTickerProviderStateMixin{
  AnimationController _controller;

  @override
  void initState() {
    super.initState();
    _controller = new AnimationController(
      duration: const Duration(seconds: 10),
      vsync: this,
    )..forward();
  }

  @override
  build(BuildContext context){
    return new AnimatedBuilder(
      animation: _controller,
      child: new Container(width: 200.0, height: 200.0, color: Colors.green),
      builder: (BuildContext context, Widget child) {
        //What to return that scales the element
      },
    );
  }
}

For rotating, I would use a Transform and return a Matrix. But what should I return to accomplish the scaling animation?
Thanks in advance

A: If you're going to size your contents manually you could just read controller.value in your builder function and use that to set the size of the container.
Alternatively, you could consider a pair of SizeTransitions for each axis. The Align class may also be useful because you can set a sizeFactor in each dimension.
import 'package:flutter/material.dart';

void main() {
  runApp(new MaterialApp(
    home: new HomePage(),
  ));
}

class HomePage extends StatefulWidget {
  HomePageState createState() => new HomePageState();
}

class HomePageState extends State<HomePage> {

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      floatingActionButton: new FloatingActionButton(
        child: new Icon(Icons.sort),
        onPressed: () {},
      ),
      body: new Center(
        child: new ScoreCounter(),
      ),
    );
  }
}

class ScoreCounter extends StatefulWidget {
  @override
  _ScoreCounter createState() => new _ScoreCounter();
}

class _ScoreCounter extends State<ScoreCounter>
  with SingleTickerProviderStateMixin {
  AnimationController _controller;

  @override
  void initState() {
    super.initState();
    _controller = new AnimationController(
      duration: const Duration(seconds: 1),
      vsync: this,
    )
      ..forward();
  }

  @override
  build(BuildContext context){
    return new AnimatedBuilder(
      animation: _controller,
      builder: (BuildContext context, Widget child) {
        double size = _controller.value * 200.0;
        return new Container(width: size, height: size, color: Colors.green);
      },
    );
  }
}

A: Just as a alternative, to set just scale for a specific Widget.
Transform.scale(
  scale: 1.0,
  child: Container(
    height: 200.0,
    width: 200.0,
    color: Colors.pink,
  ),
),

A: Another Approach is to create generalized Scale Transformation.
Simply add this method to your component
  Matrix4 scaleXYZTransform({
    double scaleX = 1.00,
    double scaleY = 1.00,
    double scaleZ = 1.00,
  }) {
    return Matrix4.diagonal3Values(scaleX, scaleY, scaleZ);
  }

Now you can easily Scale any widget by wrapping it:
 Transform(
          transform: scaleXYZTransform(scaleX: .5, scaleY: .5),
          child: Container(
            child: myAwesomeWidget(),
          ));

redpajama_set_name: RedPajamaStackExchange


If you know an business or job very well, you'll be able to easily create and sell an internet course that teaches individuals a brand new talent. You just have to take a position the assets up entrance in developing the actual class. The profit right here is that you don't have to risk buying up stock in a product and dropping cash if it doesn't sell. The entry barrier is decrease and you don't have to speculate practically as much to get started.
Today, tens of 1000's of individuals are contemplating beginning a house primarily based enterprise , and for good reasons. On average, people can count on to have two and three careers during their work life. These leaving one career typically take into consideration their second or third career transfer being to their very own home. Individuals who have been part of the traditional nine-to-five work power and are on the verge of retiring from that life are pondering of what to do next. The good news: Starting a homebased enterprise is within the reach of virtually anyone who wants to take a danger and work onerous.
Take control of what content material you see. From inspiration on beginning a enterprise to learning extra about find out how to discover solutions – make our site yours and by no means miss a beat. What's more, it's essential to sell something by way of the blog. This can be ad house, products, digital products, sponsored posts, coaching, ebooks, etc.
Positive it's a bit old-fashioned, however persons are still making plenty of money on eBay To begin promoting, you are able to do one thing easy like head to a neighborhood clothes retailer and purchase some clothes on sale. If you realize any farmers in your area, you'll be able to reach out to them and supply to promote their product at Farmers Markets Fairly than paying up front, you may mitigate your risk by partnering with the farmers in trade for fee.
There are a number of young individuals, college students, housewives who want to earn money by spending couple of hours in a day or week. Alongside improved morale, increased employee flexibility and productivity, cross-education enables your team see the aspects of function their colleagues do. Job-shadowing is not only a profession-exploration activity, it is a common on-the-job learning technique. Thanks Ryan, I need to say.. Nicely there are tons of firms anyone can start these days taking into consideration the trend of economic recession. My gran, mum, 2 aunts and two cousins all had breast cancer. If you're a canine fan like I hope you are, this excellent side hustle enterprise idea can net you a standard profit by just taking some adorable pups for a stroll about the park. Start off a tutoring service for school students struggling with the subjects you happen to be acing at. Provide online courses or webinars to attain more folk. If you are carrying out a collection/pickup service then it will take you time to do that, time which has to be factored in. In your early days you may supply a cost-free pickup/delivery service, or you may possibly make a token charge, but you need to be measuring your time and keeping an eye on how much you are truly earning when you work. These are just a couple of of the a lot of breast cancer fundraising ideas that are out there. The packaged items are sold online, delivered to over one hundred shops in Mumbai and Bangalore, as properly as to a lot of B2B partners like Taj Hotels. Armed with Rs five lakh from their savings, and backed by eight embroiderers and designers, the two set up shop at Oshiwara, Mumbai.
Like dying and taxes, automotive insurance coverage is unavoidable if you wish to keep your vehicle on the highway and the proper aspect of the law. Accident-Free Protection: With this elective protection, your automobile insurance premium won't increase because of your first at-fault accident. Your automotive is private. Its protection ought to be, too. We'll prepare to your automotive to be recovered if you can't safely drive it after an insured accident.
Our automotive insurance policies cover your automobile whereas it is driven off-street. Nevertheless, the driving force must take cheap precautions to keep the automotive protected. Add cowl for non-customary sound methods or automobile equipment to your motor insurance policy.
Complete safety on your little piece of home – on the highway, at a caravan park or at dwelling. We cover caravans, camper trailers, motorhomes and extra. You are coated for the market value, or as much as $600, for any loss of or harm to trailers you own or that you're using.
Most automobile insurance insurance policies do not cowl the lack of private possessions, such when a thief steals golf clubs, clothes or private electronics from your automobile. Your own home or tenant's insurance often covers these losses.
Absolutely comp cowl insures against any accident that you may have, whether or not it's your fault or not. This consists of harm triggered to your car when it's unattended, reminiscent of a vandalism incident or a hit and run. Nonetheless, whether or not it's your fault, claims can result in loss of No Claims Bonus, so verify before you claim. Complete cowl additionally covers your authorized legal responsibility to third parties (including damage to their automobile or compensation for injuries sustained if the accident was your fault). The duvet extends to fire injury to your automobile, or damage arising out of the theft or tried theft of your car.
Pays for medical prices when you, your passengers, or your loved ones members are injured in an accident (no matter who is driving). Medical funds protection might be helpful even if in case you have medical health insurance, as there isn't a deductible you must meet earlier than we pay out.
Gigaba stated the PIC had also warned that South Africa risked exclusion from the globe government bond index. If she buys new garments in excess, she may well be trying to show them off to someone—especially if these garments are revealing or if she buys much more lingerie. Whether or not physically or mentally ill, many homeless men and women are disabled by their illnesses. Particular REPORT: Only a little quantity of oil and gas players in the Perth Basin are moving forward on projects. You are in for a season of all-round improvement if your dream featured engraving or engraved articles. You could have traded any pound pair profitably had you followed technical rules written in my hub about my forex trading technique. Steelmakers fight back over push by iron or oligopoly to inflate prices. These listings are generally updated often so that if no jobs listed meet your specifications now, there may possibly be one listed later nowadays or tomorrow that will, so preserve checking back. Ignorance these days, with all the details accessible at everyone's finger tips – libraries have computer systems and newspapers if people cannot afford their own – ignorance is a decision. Even so, my ability to network has accomplished far more for me than the degree I have not set my eyes on since the day I graduated. On my own really initial kayak trip, on a gently flowing creek with a handful of mild Class I rapids, I had a comparable knowledge. Despite the fact that 1995 was regarded the start of World wide web age for Malaysia, Malaysians started to develop momentum on on-line shopping only in 1998. Final but not least, holding a workshop or seminar is one more clever and legitimate way to market your business, and therefore the costs in these activities are tax deductible.
Delivering timely, environment friendly, reliable ongoing companies together with invoice fee, money receipts, payroll administration, money administration, monetary forecasting, funds preparation, and monetary reporting. Negotiating and administering financial arrangements with other governments, together with the Government of Canada and self-governing Yukon First Nations. The National Procurement and Tender Administration was established in accordance with Section 16 (1) of the Procurement Act 2003 which got here into effect in November 2004, with the signing of the Order by the Minister of Finance.
The Ministry's important process is to supply the Minister with ministerial providers inside the sphere of the Ministers jurisdiction, which includes monetary and economic issues. This contains the legislative work underpinning taxation-, fees and tariffs. As well as, the Ministry advices the Minister on matters regarding bank regulation as well as aiding with wage negotiations with unions representing public employees.
The Hon. Dr. Nigel Clarke, Minister of Finance and the Public Service (second right) unveils the Alliance Prepaid MasterCard, together with Alliance Funding Management President Peter Chin (left), Vice-President Robert Chin (second left), and MasterCard Country Supervisor for Jamaica, Trinidad and Tobago, Bermuda and Haiti, Uhriel Bedoya. The Alliance Pay as you go MasterCard is taken into account Jamaica's first and solely pay as you go MasterCard aimed at financial inclusion, catering to all Jamaicans, particularly those that shouldn't have a bank account.
So Wesley is saying there is actually finance and economic system influencers on instagram that mof could have used as a substitute to succeed in the young individuals? Names? If not, youre just parroting ST. The Minister of Finance appoints the heads of state authorities belonging to the Ministry's space of presidency in addition to the deputy secretary generals and the heads of departments of the Ministry.
What message went out although? That there's such a thing as a price range? That's a pretty low bar. For a marketing campaign like this to achieve success there needs to be a extra specific goal than elevating awareness" alone. What did MOF want these younger Singaporeans to do? Read up on the price range? Begin planning their finances? Now they know the budget exists (which is one thing I am pretty certain they knew already), now what? What are they presupposed to do with their newfound information? I'm afraid this campaign was a weak effort.
Info products. You promote products like ebooks, membership sites, video collection, and many others. One of these internet online affiliate marketing can earn you as much as 50% or extra in fee, has relatively low limitations to entry, and it is simple to seek out merchandise to advertise.
Take into account that you do not just begin a blog and expect the money to roll in. You could create content material persistently, and it additionally must be content material that educates, informs, or entertains people. In different words, it needs to capture their curiosity indirectly.
There are various directions you may take this enterprise. If you wish to work throughout hours when no one else does, you can focus on workplace purchasers. You may deal with retail companies and maintain your customers clumped into one or two blocks. Eating places are in nice need of every day thorough cleansing and could be a great supply of regular clients. Maybe you'd be more desirous about house cleaning. Many instances with cleaning providers you don't have to spend a lot of money on promoting or advertising as a result of your prospects will come by phrase of mouth.
One of many first issues you might want to do is go to each potential event location with which you propose to work. Work with the advertising supervisor to tour every site and learn what is accessible at each location. Start a database that may can help you sort venues by varying features-the variety of individuals every website holds, if there's AV tools accessible on website, will you should organize for rental chairs, and so on. Then when you find yourself beginning to plan an event with a consumer, you could find out what the important thing parameters are for the event and easily pull up the three or four sites that meet the fundamental criteria. and engagement events, and so on.
With the e-commerce route, in many markets, you will be competing against previous-college enterprise people who might or could not have any web advertising and marketing expertise. A lot of them have glitchy, out-of-date web sites, which leaves you plenty of room for enchancment, and you'll capitalize on their shortcomings.


text:
Food Tech Future
Submit Your Research Proposals
Select Title Mr Ms Mrs Prof Dr Assist Prof Dr Assoc Prof Dr
--Select Country-- Afghanistan Albania Algeria American Samoa Andorra Angola Anguilla Antarctica Antigua and Barbuda Argentina Armenia Aruba Australia Austria Azerbaijan Bahamas Bahrain Bangladesh Barbados Belarus Belgium Belize Benin Bermuda Bhutan Bolivia Bosnia and Herzegovina Botswana Bouvet Island Brazil British Indian Ocean Territory Brunei Darussalam Bulgaria Burkina Faso Burundi Cambodia Cameroon Canada Cape Verde Cayman Islands Central African Republic Chad Chile China Christmas Island Cocos (Keeling) Islands Colombia Comoros Congo Congo, the Democratic Republic of the Cook Islands Costa Rica Cote D'Ivoire Croatia Cuba Cyprus Czech Republic Denmark Djibouti Dominica Dominican Republic Ecuador Egypt El Salvador Equatorial Guinea Eritrea Estonia Ethiopia Falkland Islands (Malvinas) Faroe Islands Fiji Finland France French Guiana French Polynesia French Southern Territories Gabon Gambia Georgia Germany Ghana Gibraltar Greece Greenland Grenada Guadeloupe Guam Guatemala Guinea Guinea-Bissau Guyana Haiti Heard Island and Mcdonald Islands Holy See (Vatican City State) Honduras Hong Kong Hungary Iceland India Indonesia Iran, Islamic Republic of Iraq Ireland Israel Italy Jamaica Japan Jordan Kazakhstan Kenya Kiribati Korea, Democratic People's Republic of Korea, Republic of Kuwait Kyrgyzstan Lao People's Democratic Republic Latvia Lebanon Lesotho Liberia Libyan Arab Jamahiriya Liechtenstein Lithuania Luxembourg Macao Macedonia, the Former Yugoslav Republic of Madagascar Malawi Malaysia Maldives Mali Malta Marshall Islands Martinique Mauritania Mauritius Mayotte Mexico Micronesia, Federated States of Moldova, Republic of Monaco Mongolia Montserrat Morocco Mozambique Myanmar Namibia Nauru Nepal Netherlands Netherlands Antilles New Caledonia New Zealand Nicaragua Niger Nigeria Niue Norfolk Island Northern Mariana Islands Norway Oman Pakistan Palau Palestinian Territory, Occupied Panama Papua New Guinea Paraguay Peru Philippines Pitcairn Poland Portugal Puerto Rico Qatar Reunion Romania Russian Federation Rwanda Saint Helena Saint Kitts and Nevis Saint Lucia Saint Pierre and Miquelon Saint Vincent and the Grenadines Samoa San Marino Sao Tome and Principe Saudi Arabia Senegal Serbia and Montenegro Seychelles Sierra Leone Singapore Slovakia Slovenia Solomon Islands Somalia South Africa South Georgia and the South Sandwich Islands Spain Sri Lanka Sudan Suriname Svalbard and Jan Mayen Swaziland Sweden Switzerland Syrian Arab Republic Taiwan, Province of China Tajikistan Tanzania, United Republic of Thailand Timor-Leste Togo Tokelau Tonga Trinidad and Tobago Tunisia Turkey Turkmenistan Turks and Caicos Islands Tuvalu Uganda Ukraine United Arab Emirates United Kingdom United States United States Minor Outlying Islands Uruguay Uzbekistan Vanuatu Venezuela Viet Nam Virgin Islands, British Virgin Islands, U.s. Wallis and Futuna Western Sahara Yemen Zambia Zimbabwe Taiwan, Republic of China South Korea
Upload Research Ideas *
Upload Additional Files
"Revolutionizing the Way We Eat, The Future of Food Technology"
Food technology is the science of packaged food manufacturing, storage, preservation, canning, and packaging. Fruits, vegetables, meat, fish, eggs, milk, grains, spices, tea, coffee, and so forth are completely covered by technology. The food business is the country's sixth-largest industry. It now employs an estimated 1.9 million people. It has the potential to become the largest industry in India.
Food technology's future is projected to offer substantial breakthroughs in how we grow, produce, and consume food. Smart farming, vertical farming, and alternate nutrients are all examples of this. Machine learning, the Internet of Things, and blockchain interfaces will also play a significant role in increasing supply chain transparency and sustainability. Food customization, 3D printing, and lab-grown meat will also become standards in the food sector. The future of food technology is projected to be healthier, more sustainable, and more efficient.
Food science is a multifaceted field that brings together chemistry, biochemistry, nutrition, microbiology, and engineering to provide the scientific knowledge required to handle real-world difficulties connected to the many facets of the food system. The field is built on knowledge of the chemistry of culinary nutritious elements such as proteins, carbohydrates, lipids, and water, as well as the reactions that occur during processing and storage. It is critical to have a solid grasp of processing and preservation processes such as drying, freezing, pasteurization, canning, irradiation, and extrusion, to mention a few. The capacity to analyze food constituents is developed in tandem with statistical quality control approaches.
Today's technology, which was designed to pick up heavy metal components, is clever enough to pick up delicate goods like cheese, bread slices, and fruits without harming them. Food manufacturers may now use data analysis to monitor goods and customer needs and then match output to these needs. This would be made available by robotics and AI software engineering.
Quality inspector using an AI algorithm
AI in the food industry
Segregation and Preservation
Automated Intelligence Packaging
An amalgamation of sensors and AI
Moreover, financial obstacles must be removed to give low-income customers access to better, more sustainable food. Reduced waste and economic obstacles, however, are insufficient to ensure world food security. To feed the world's growing population by 2050, food production must increase by 70%. Additionally, diets should transition away from animal products and towards foods derived from plants, insects, and microalgae. Animal-based diets, on the other hand, are less sustainable due to their higher demand for natural resources, resulting in more environmental damage.
Both science and technology have a bright future since they offer so much potential. Initial innovations will most probably require a human ability to select, develop, and deploy resources in the right direction. Science and technology, along with improved human capital, have been powerful drivers of positive improvements in smallholder system performance and evolution.

redpajama_set_name: RedPajamaCommonCrawl


Very interested in this. From personal experience, I use music as a mouldable tool to cheer me up, get me to certain mental moods, facilitate emotional expressive processes, trigger overall healing, as an intellectual activator, and a sound track of day-to-day activities.
I have made my own tunes since I remember, and I use melodies and humming as a physical companion when I am lonely, cold, reflective or observant.
Music is just another way of colouring the world for me.
And in my workshops I carefully choose sounds and tunes to support and illustrate my exercises in coaching.
So, this scientific conclusions don't come as a surprise.
Before, some astrologers would say my calling for the beauty of sounds derives from my Taurine / Sagittarius nature.
Whatever explanation, sound frequencies shall not be ignored in wellbeing.


text:
Local businesses working through COVID-19 crisis
The COVID-19 crisis is affecting small businesses with those businesses closing, operating under reduced hours and staffing and employees asked to practice social distancing and to stay home unless absolutely necessary.
Much has been written and reported on concerning owners and employees of the hospitality industry, among the first ordered to close to minimize social contact. Bars and restaurants are permitted only to provide take-out or delivery of meals. Campaigns have begun to encourage everyone to patronize local businesses online and order take-out.
But what about the other small businesses, many having been around for generations?
Jim Sproat of Realty Counseling Company on South Side has applied for a waiver to continue operating as a property management company.
In the last week, properties the company manages had issues with flooding, a window being blown out from the wind and a gas dryer vent coming disconnected. "These are important life issues for people," he said.
"I think we're essential." He added someone has to be available to take care of these kind of problems.
Mr. Sproat said a big part of his business is fiduciary, collecting rent for his clients. He said as the crisis continues it will become harder for people to pay their rents noting many hospitality people have lost their income.
He sees a "trickle down" effect particularly with people in the hospitality industry. As people have trouble paying their rents, owners with mortgages will have trouble paying those mortgages.
He's already had calls from people saying they won't be able to pay their rent in the coming month. While some owners have been understanding, others are in the same financial situation at the renters – depending on the rent to pay the mortgage on the property.
The problem isn't confined to residential rentals, Mr. Sproat said with all the businesses closed they too may have trouble coming up with the money to continue to pay the rent. Compounding problems for the owners are the increases in water and sewage costs. In many cases the monthly water and sewage costs are greater than the taxes on the property.
"In the rental business, money comes in – money goes out," he said.
Social distancing is also having an affect on the funeral business according to Kevin Deterle at the Readshaw Funeral Home in Carrick.
Visitations are limited to no more than 10 people at a time and although churches are permitting Funeral Masses, they are also limited to 10 people, Mr. Deterle said.
"Cemeteries are requesting we go straight to the graveside," he said. And the National Cemetery is not accepting any services, only burial without a service.
Mr. Deterle said they continue to be available 24 hours a day, seven days a week with a full staff, but are staggering their hours to not have everyone together at one time unless needed.
Where possible, Mr. Deterle explained, they are making arrangements over the phone or by email. "Of course, there are some arrangements that have to be made in person."
"We're doing the best we can and taking the precautions necessary," he said.
Contractor George Zubasic, "The Big Z," says he's able to work and has work lined up, but has secluded himself for the past several weeks to "get the curve going the other way."
Another reason for him scaling back the work he's doing is that people are cautious about having workmen come to their homes and questioning any travel at all.
Mr. Zubasic said in the meantime, if there's an emergency, he's willing to go out and do the work.


The Polar Plunge Countdown is on!
The Chicago Polar Plunge is 10 days away and the #Body Gears team is super excited to #makeasplash for Special Olympics Chicago.
"Body Gears has gathered a team of 59 plungers and counting and we are excited to do our part to raise money and awareness for Special Olympics Chicago," says April Oury, PT MS, IOC, CFMT, FAAOMPT, president of Body Gears.
Whether you jump in or just get your feet wet, come join us at the 16th Annual Chicago Polar Plunge. Or if jumping into the lake in freezing temperatures isn't your thing, make a donation.


"This is a really great project for us to get involved with."
We stepped into the great outdoors this month to kick off the Urban Buzz pollinator habitat project on the Solar System Cycle Greenway near Naburn, York.
Working with York Greenways as part of York Cares Team Challenge Week, we cleared invasive species, cut down stinging nettles (ouch), and planted wildflowers and seeds which will encourage pollinators such as bees, hoverflies and butterflies.
Partners Group director Monica Green said: "This is a really great project for us to get involved with. York has a fantastic network of cycle paths which also provide perfect natural habitats for insects and small animals. We had great fun helping to maintain and improve them for local wildlife, residents and visitors to enjoy."
York Greenways exists to protect and enhance the ecology of traffic-free routes from York into the surrounding countryside. It works in partnership with organisations such as Sustrans, City of York Council, Yorkshire Wildlife Trust and employee-volunteering charity York Cares.
For more informaiton visit www.yorkgreenways.org and www.yorkcares.co.uk.


text:
Joven Clarke is an Australian former rugby league footballer. He previously played for the South Sydney Rabbitohs in the National Rugby League (NRL) competition, primarily playing on the . He was one of the fastest players in rugby league in 2002.

Background
While attending Westfields Sports High School, Clarke played for the Australian Schoolboys team in 2000.
Clarke is of Filipino descent.

Playing career
Clarke played eight games for South Sydney between 2002 and 2006 and scoring 4 tries. He was an ex 100m sprinter with a best time of 9.89s.

Clarke was eligible for and selected in the national rugby union team for The Philippines "The Volcanos" playing two tests in the 5 Nations Asian Cup played in Korea in 2011.
He was also a member of the Australian Army team, they played a curtain raiser to the Australian/New Zealand test in 2011 at Skilled Stadium on the Gold Coast. Australian Army V Australian Navy

He was eligible for the Tomahawks, the United States national rugby league team, but was never selected. As an Australian, Clarke was eligible to represent for Australia but was never selected to play.

Footnotes

External links
Joven Clarke at NRL Stats
American National Rugby League

1983 births
Australian rugby league players
Australian people of American descent
Australian people of Filipino descent
Australian sportspeople of Asian descent
Sportspeople of Filipino descent
South Sydney Rabbitohs players
Rugby league wingers
Living people
Rugby league players from Sydney

redpajama_set_name: RedPajamaWikipedia


Like many women, do you find yourself dreading 'that time of the month'? Do the highs and lows of premenstrual syndrome (PMS), pelvic pain or heavy flow hamper normal functioning around the time of your period? Did you know that these symptoms (amongst others including hard-to-shift weight gain) may be related to imbalances in hormones such as oestrogen. This blog explores the important topic of oestrogen as this hormone can be amazingly beautiful in our bodies, but when out of balance, it may also turn ugly.
Oestrogen is predominately thought of as a female hormone; but just as women have small amounts of the male hormone, testosterone – men also need some oestrogen (albeit at lower levels) for optimal health.
Oestrogen wears many hats, and they're not all related to reproduction!
It also supports brain health. For example, it has been linked to slowing down the ravages of ageing and is protective against many neurological conditions such as Alzheimer's disease, schizophrenia and depression.1 Oestrogen is also considered the beauty hormone; she plays a role in collagen production and moisture retention for supple skin,2 helping you looking more youthful! She is part of the reason why women retain hair on their heads, but have thinner hair elsewhere on the body. Oestrogen will also help bones remain strong by preventing calcium loss, and even supports healthy cholesterol metabolism (see Figure 1).
Figure 1: The Many Effects of Oestrogen.
All that said, oestrogen's primary function is as a reproductive hormone. Levels begins to increase in young girls in puberty, around the time their periods begin. It is produced mainly by the ovaries, and will go on to shape and grow the breasts, the uterus and it's lining (known as the endometrium) – essentially preparing the female body for reproduction. Interestingly, males also rely on oestrogen for the all-important task of creating healthy sperm!
I know I mentioned earlier that oestrogen is produced primarily by the ovaries but this sneaky hormone can also be synthesised in other tissues in the body including the breast, the brain and even in body fat! Known as the science of intracrinology, the study of hormone levels in different tissues can give some fascinating insights into the activity of oestrogen throughout the body. As shown in Figure 2 below, many factors (such as increased production in various tissues and impaired detoxification) can disrupt the delicate balance of hormones and in some cases lead to having too much.
Figure 2: Many Factors Can Disrupt Hormonal Balance, But There Are Things You Can do to Correct This.
To give another example – if a woman is overweight, the extra fatty tissue can hold more oestrogen in the body, which can potentially lead to oestrogen excess and a worsening of hormonal symptoms. Learn about more ways hormones can become disrupted here.
Further, living in the modern world brings a constant exposure to environmental toxins such as plastics and other chemicals; those that have hormonal effects are known as endocrine disrupting chemicals (EDCs). EDCs such as bisphenol A (BPA) found in the lining of tins can actually increase oestrogen and change the way it works in the body. Read more about this here.
If your pain, PMS or hormonal symptoms may be caused by too much oestrogen, then it's time to take back control. There are many positive steps you can take towards rebalancing your hormones.
Many herbs and nutrients can be extremely beneficial in reigning in out-of-control hormones. Isoflavones from soy are used to support women's healthy oestrogen levels by modulating oestrogen receptors (the binding sites on the cells).7 This means that soy can effectively instruct cells to promote the healthy actions of oestrogen and turn down the dial down on the more negative impacts. Read more about soy in this article. Other natural medicines such as magnesium, broccoli, rosemary, and BCM-95™ Turmeric all have positive effects on supporting healthy oestrogen metabolism, helping to restore a state of balance.
There are also some simple strategies you can adopt on a daily basis to place you on the path of healthy oestrogen balance. Follow the healthy hormone dietary and lifestyle tips in Figure 3 below. Other suggestions include not microwaving food in plastic containers, and swapping your plastic drinking bottles for glass or stainless steel – this can help reduce the impact of EDCs exposure. For more simple tips to detox your environment check out this blog.
Figure 3: Healthy Hormone Diet and Lifestyle Tips.
By gradually changing your habits you can reduce exposure to harmful EDCs, improve your oestrogen metabolism, and maintain the beneficial effects that the beautiful hormone called oestrogen may bring. If you would like more support in improving hormonal harmony and freeing yourself from the symptoms of oestrogen imbalance, speak to your local natural healthcare Practitioner today.
1. Cutter WJ, Norbury R, Murphy DGM. Oestrogen, brain function, and neuropsychiatric disorders. J Neurol Neurosurg Psychiatry.2003 Jul;74(7):837-840.
3. Greenspan FS, Gardner DG. Basic and clinical endocrinology. 6th ed. Sydney, Australia: Lange Medical Books/McGraw-Hill; 2001. p. 575-602.
5. Bulun SE, Lin Z, Imir G, Amin S, Demura M, Yilmaz B, et al. Regulation of aromatase expression in estrogen-responsive breast and uterine disease: from bench to treatment. Pharmacol Rev. 2005 Sep;57(3):359-83. doi: 10.1124/pr.57.3.6.
6. Chetrite GS, Cortes-Prieto J, Philippe JC, Wright F, Pasqualini JR. Comparison of estrogen concentrations, estrone sulfatase and aromatase activities in normal, and in cancerous, human breast tissues. J Steroid Biochem Mol Biol. 2000 Jan-Feb;72(1-2):23-7. PMID: 10731634.
7. Kuiper GG, Lemmen JG, Carlsson B, Corton JC, Safe SH, van der Saag PT, et al. Interaction of estrogenic chemicals and phytoestrogens with estrogen receptor beta. Endocrinology. 1998 Oct;139(10):4252-4263.
Talia is a qualified Naturopath with over 10 years of natural health experience in clinical, retail and mentoring roles. Talia is passionate about educating people on diet and lifestyle medicine and has a keen interest in incorporating traditional naturopathic principles into modern evidence based medicine.


Anyone who loved watching the classic TV show "Happy Days" had to love Marion Ross, who played Mrs. Cunningham.
But it wasn't love at first sight for one of her castmates when they first began filming the show, as Ross revealed on TODAY Tuesday.
"For a couple of years," the 89-year-old explained, she and Tom Bosley (who played Mr. Cunningham) did not precisely click.
"Either Tom Bosley had somebody else in mind right at the beginning (of the show) ... but I had a very small part at the beginning," she said. "My lines were like, 'Oh, Howard,' 'Oh, children, you're not eating.'"
But over the course of the show's 11 seasons, "Mrs. C" became an integral member of the cast, beloved by family and associated family alike. And that included Bosley.
"So we had to work our way through that," she continued. "Because I learned to love him, I loved him and we became very close friends."
That's just one of the stories in Ross' new memoir, "My Days: Happy and Otherwise," which was published at the end of March.
Ross also revealed that sometimes being liked too much in Hollywood can be a problem. She was signed to a film contract at age 24, and explained to Megyn Kelly during her visit that navigating predators in the business was tricky even then.
One time, she said, a man promised he could "help" her in the business if she just did things his way.
"I punched him in the shoulder and I said, 'You have no character! I'm married!'" she said. "He didn't know what to do with me."
"She wound up getting the job," Kelly said.


text:
Created by Daiga Kuzmane, last modified by Paul Leys on Apr 09, 2021
New Erasmus+ Programme - new Erasmus+ App!
What is the Erasmus+ Mobile App?
The Erasmus+ App was initially launched in 2017 to celebrate the Erasmus Programme 30th anniversary. Now, at the start of the 2021-2027 Erasmus Programme, the App has been completely revamped allowing for solid foundations for the services of the European Student Card Initiative.
The users across the EU can benefit from an updated App that will serve as a students' single point of entry into the Erasmus+ programme. The App will provide a broad range of information, tools and services to help students plan and carry out their exchange, supporting a first-rate mobility experience.
Is it ready to use?
Yes, the updated Erasmus+ App has been launched at the end of 2020 and is available via the Google Play and Apple Store.
Throughout 2021 even more functionalities will be added to the App, including support for digital European Student Cards and the ability to let students apply for their Erasmus mobility directly through the App.
What are the key functionalities of the Erasmus+ App available now?
The first release of the new App includes the following functionalities:
Information about Erasmus+ Programme and the opportunities offered from the European Commission
Mobility Journey guiding the Learners through all phases of mobility: before, during and after
Tips and stories from fellow students and an opportunity to submit their own content
Information on events and deals from student organisations and a chance to browse through the opportunities available to all as well as at the specific location
Easy way to access relevant Erasmus services
Notifications from relevant Erasmus services
Authentication solution based on students academic credentials (eduGAIN), eIDAS or EU Login for participants in other Erasmus+ opportunities.
Who is developing the Erasmus+ App?
The Erasmus+ App is developed by a consortium consisting of Eötvös Loránd University (ELTE), the European University Foundation (EUF) and the Erasmus Student Network (ESN). The Aristotle University of Thessaloniki, who brings a lot of EWP and OLA-related expertise, is also involved. Furthermore the software provider EWORX, who has a longstanding experience of delivering digital solutions to the European Institutions in general and the European Commission in particular, also plays a central role in the development of this ambitious project.
Learn more about the App reliving the launch conference here. And stay tuned for the next webinar in spring 2021 for Higher Education Institutions on how to share information to their students via the App - stay tuned!
{"serverDuration": 83, "requestCorrelationId": "2a4c634aa5fe68d1"}


text:
Why Aren't There Electric Airplanes Yet?
Nov 27, 2018 4:17AM EST Popular
By Venkat Viswanathan,
Shashank Sripad and William Leif Fredericks
As electric cars and trucks appear increasingly on U.S. highways, it raises the question: When will commercially viable electric vehicles take to the skies? There are a number of ambitious efforts to build electric-powered airplanes, including regional jets and planes that can cover longer distances. Electrification is starting to enable a type of air travel that many have been hoping for, but haven't seen yet—a flying car.
A key challenge in building electric aircraft involves how much energy can be stored in a given amount of weight of the on-board energy source. Although the best batteries store about 40 times less energy per unit of weight than jet fuel, a greater share of their energy is available to drive motion. Ultimately, for a given weight, jet fuel contains about
14 times more usable energy than a state-of-the-art lithium-ion battery.
That makes batteries relatively heavy for aviation. Airline companies are already
worried about weight—imposing fees on luggage in part to limit how much planes have to carry. Road vehicles can handle heavier batteries, but there are similar concerns. Our research group has analyzed the weight-energy tradeoff in electric pickup trucks and tractor-trailer or semi-trucks.
This artist's concept of NASA's experimental electric plane design shows 14 motors along the wings. NASA
From Electric Trucks to Flying Vehicles
We based our research on a very accurate description of the energy required to move the vehicle along with details of the underlying chemical processes involved in Li-ion batteries. We found that an electric semi-truck similar to today's diesel-powered ones could be designed to travel up to 500 miles on a single charge while being able to carry the cargo of about 93 percent of all freight trips.
Batteries will need to get cheaper before it makes economic sense to begin the process of converting the U.S. trucking fleet to electric power. That seems
likely to happen by the early 2020s.
Flying vehicles are a bit further away, because they have different power needs, especially during taking off and landing.
What is an e-VTOL?
Unlike passenger planes,
small battery-powered drones that carry personal packages over short distances, while flying below 400 feet, are already coming into use. But carrying people and luggage requires 10 times as much energy—or more.
We looked at how much energy a small battery-powered aircraft capable of
vertical takeoff and landing would need. These are typically designed to launch straight up like helicopters, shift to a more efficient airplane mode by rotating their propellers or entire wings during flight, then transition back to helicopter mode for landing. They could be an efficient and economic way to navigate busy urban areas, avoiding clogged roads.
Energy Requirements of e-VTOL Aircraft
Our research group has built a computer model that calculates the power needed for a single-passenger e-VTOL along the lines of designs that are
already under development. One such example is an e-VTOL that weighs 1,000 kilograms, including the passenger.
The longest part of the trip, cruising in airplane mode, needs the least energy per mile. Our sample e-VTOL would need about 400 to 500 watt-hours per mile, around the same amount of energy an
electric pickup truck would need—and about twice the energy consumption of an electric passenger sedan.
However, takeoff and landing require much more power. Regardless of how far an e-VTOL travels, our analysis predicts takeoff and landing combined will require between 8,000 and 10,000 watt-hours per trip. This is about half the energy available in most compact electric cars, like a Nissan Leaf.
For an entire flight, with the best batteries available today, we calculated that a single-passenger e-VTOL designed to carry a person 20 miles or less would require about 800 to 900 watt-hours per mile. That's about half the amount of energy as a semi-truck, which is not very efficient: If you needed to make a quick visit to shop in a nearby town, you wouldn't hop into the cab of a fully loaded tractor-trailer to get there.
As batteries improve over the next few years, they may be able to pack in about
50 percent more energy for the same battery weight. That would help make e-VTOLS more viable for short- and medium-range trips. But, there are a few more things needed before people can really start using e-VTOLS regularly.
It's Not Just Energy
For ground vehicles, determining the useful range of travel is enough—but not for planes and helicopters. Aircraft designers also need to closely examine the power—or how quickly the stored energy is available. This is important because ramping up to take off in a jet or pushing down against gravity in a helicopter takes much more power than turning the wheels of a car or truck.
Therefore, e-VTOL batteries must be able to discharge at rates roughly 10 times faster than the batteries in electric road vehicles. When batteries discharge more quickly, they get a lot hotter. Just as your laptop fan spins up to full speed when you try to stream a TV show while playing a game and downloading a large file, a vehicle battery pack needs to be cooled down even faster whenever it is asked to produce more power.
Road vehicles' batteries don't heat up nearly as much while driving, so they can be cooled by the air passing by or with simple coolants. An e-VTOL taxi, however, would generate an enormous amount of heat on takeoff that would take a long time to cool—and on short trips might not even fully cool down before heating up again on landing. Relative to the battery pack size, for the same distance traveled, the amount of heat generated by an e-VTOL battery during takeoff and landing is
far more than electric cars and semi-trucks.
That extra heat will shorten e-VTOL batteries' useful lives, and possibly make them more susceptible to catching fire. To preserve both reliability and safety, electric aircraft will need specialized cooling systems—which would require more energy and weight.
This is a crucial difference between electric road vehicles and electric aircraft: Designers of trucks and cars don't have any need to radically improve either their power output or their cooling systems, because that would add cost without helping performance. Only specialized research will find these vital advances for electric aircraft.
Our next research topic will continue to explore ways to improve e-VTOL battery and cooling system requirements to provide enough energy for useful range and enough power for takeoff and landing—all without overheating.
Reposted with permission from our media associate The Conversation.
electric vehiclestransportation
Rare Earth Minerals Are Abundant Enough to Fuel Green Energy Shift, Study Says
NYC to Require Uber, Lyft Vehicles to Be Zero-Emissions by 2030


I am Making this Profile for My Daughter. She Completed Her Bachelor's Degree and is Now Working as a Consultant At Capgemini in Bangalore. Previously She Had Worked At Tcs Netcracker Technology. We Belong to a Middle Class Family Currently Settled in Cuttack. br br people Describe Her as Well-educated Independent SincereDisciplined and Career-oriented.
To access MI-566578's Education and Profession Details FREE !
To access MI-566578's Family Details FREE !


Ice King Chibi Doll from Adventure Time Dolls category. Hundreds of free printable papercraft templates of origami, cut out paper dolls, stickers, collages, notes, handmade gift boxes with do-it-yourself instructions.... Make an Ice King Mask! My kids went as Finn and Jake for Halloween, so in keeping with the Adventure Time theme, my husband and I went as the Ice King and Princess Bubblegum. Click through the steps for a bonus simple Princess Bubblegum tutorial.
During this time, Simon Petrikov—the name of the Ice King before he was overcome by the evil power of his crown—found Marceline in the ruins of a city and gave her a stuffed animal named Hambo to cheer her up; by the events of this episode, she is apparently 7 years old, as stated by Simon.... In the mean time have fun drawing the Ice King, step by step. Color him in, and place the drawing on your wall. Pendleton Ward did an excellent job with his creation, and soon everyone will let him know when the cartoon is aired on TV. Peace out people, and have a happy drawing day!
Game Wizard features original voiceover from Finn, Jake, Ice King, Princess Bubblegum, and special guest "Weird Al" Yankovic as the Doodle Wizard. Draw your own Adventure Time games in GAME WIZARD!
Ice King Chibi Doll from Adventure Time Dolls category. Hundreds of free printable papercraft templates of origami, cut out paper dolls, stickers, collages, notes, handmade gift boxes with do-it-yourself instructions.


Sankalp Sharma talks about his initiative to raise awareness about climate change and how small steps can make a big difference.
Inquisitiveness and the zeal to do something different has been a driving force behind 17-year-old Sankalp Sharma's fight for a greener planet. The youngster from Bengaluru has been participating in various school clubs that work to resolve environment-related issues and has even won the green Olympiad.
During various school meets or sports day, he would clean the trash left by students. And in class, his curiosity towards climate change topics made him ask a hundred questions to his teachers. So he decided to find a solution by researching on the subject. At his age, he has already addressed thousands of people to raise awareness about water conservation. He has given presentations on the climate crisis in schools, colleges, corporate organisations and to the Indian Army. He has met influencers and spread the word of climate crisis to many.
Sharma has organised events like the Grand Water Conservation Walk in Bengaluru with over 1,500 participants supporting the cause.
In recognition of his efforts, Sharma was selected as the youngest member of the Climate Reality Project Training in Houston, Texas in August, 2016. It is an initiative of Nobel Laureate and former US Vice President Al Gore.
He has been mentored by several esteemed personalities like Sir AL Gore himself – the 45th US Vice President, Robert Swan – first man to walk on the North and South Pole and Dr Robert Bullard – Father of Environmental Justice, to name a few. He has also been invited to represent India at the UN Youth Assembly Conference in New York which will explore sustainable ways to manage climate change and the water crisis the world is facing.
However, the young boy still struggles with people taking him seriously owing to his age. "A lot of times, when I get asked to showcase my presentation at Rotary clubs, IT companies or such places, people hear about what I do first and get extremely enthusiastic about it but when they hear my age, they become reluctant. I wish people would just hear what I have to say first," he sighs.
Sharma is also participating in International Youth leadership project where the group will clean polluted water in Indonesia and Philippines and try to similar techniques implemented in India. However, a lack of financial resources for this trip meant that Sharma had to use crowdfunding to raise funds. He is doing this through a campaign on Fueladream.com that aims to raise Rs 2 lakh and help him make the trip to the UN Youth Assembly. The campaign got off to a good start and has already raised Rs 73,700 as of June 12 with about 18 funders supporting him. The campaign has another 30 days to go.


Amman, The Anti-Narcotics Department (AND) has dealt with two separate cases in the northern Badia region during the last few days.
In the first case, the AND personnel apprehended five dealers of Arab nationality in possession of 140,000 narcotic pills, while in the other they arrested a "dangerous" person trying to sell a quantity of hashish in the Badia area, according to Spokesperson of the Public Security Department (PSD) Lt. Colonel, Amer Sartawi.


Branch wise list of Bharat Cooperative Bank Mumbai Mumbai IFSC code and MICR code in Maharashtra along with branch details.
Locate any details of Bharat Cooperative Bank Mumbai Mumbai branch in Maharashtra.
IFSC code: and MICR code: ; BHARAT COOPERATIVE BANK MUMBAI address : , - Maharashtra; Branch code is , Contact Number: , BHARAT COOPERATIVE BANK MUMBAI Timings: Monday to Friday: 10 AM to 4 PM, Saturday - 10 AM to 4 PM(Except 2nd and 4th Saturday).


I started a post on Sunday, August 22 to give my thoughts about what was going to be my last County Commission meeting on Monday. I decided not to finish that post. I guess I didn't want to get sentimental about what was my last official meeting as an elected official (maybe). I chose to attend the meeting, vote my conscience and meet with my Commission colleagues for the last time at the Blue Monkey for a drink.
I served for 8 years. I believe I served my constituents well. I feel blessed to have been given an opportunity to be a public servant and don't think I took the privilege for granted.
To my friend and neighbor Melvin Burgess, I know you will represent me and our district well.
I listened to first meeting of the new Commission and predict that it will be an interesting term. I'm sure former Commissioners said the same thing about me and my freshman Commissioners too.


THE live cattle trade could be about to face its biggest challenge yet, as Indonesia's trade minister escalates the spying row with threats to cut imports of Australian beef cattle.
Indonesian Trade Minister Gita Wirjawan made the comments late today, after a state-owned firm last week threatened to suspend its own contracts with Australian cattle suppliers.
The move will be seen by many as an escalation of the diplomatic scandal surrounding the alleged tapping of President Susilo Bambang Yudhoyono's phone.
Mr Wirjawan told the ABC the move was either partly of mostly linked to the scandal, saying the relationship could be mended, but the spying allegations had damaged trust.
His comments follow Agriculture Minister Barnaby Joyce postponing a trade visit to Indonesia last week, a trip originally planned to include talks on the live cattle trade.


We report the spontaneous, symptom-free expulsion of such a stent from a patient in whom cystogastrostomy was done for WON.
A 24-year-old man presented with acute abdominal pain and was diagnosed to have moderately severe acute pancreatitis (revised Atlanta classification).5 An initial CT of the abdomen showed features of acute necrotizing pancreatitis (CT severity index 9). In the fourth week, the patient had persistent fever and leucocytosis. Repeat CT showed a 10.9 cm x 6.6 cm x 7.8 cm WON. ERCP revealed a pancreatic duct leak, which was managed by duct stenting. The WON was treated by endoscopic cystogastrostomy using a 20 mm x 16 mm CSEMS (Nagi Stent, Taewoong Medical Co. Ltd., Gyeonggi-do, Korea) (Figure 1). Following the procedure, the patient was relieved of fever and pain. One week later, he complained of acute-onset severe abdominal pain. Free air was seen in the peritoneum on a plain radiograph but no leak of oral contrast was found on CT scan. He was managed conservatively.
Two months later, the patient developed a second episode of pancreatitis. Repeat CT imaging revealed no residual collection and the PD stent was in situ; however, the Nagi stent was missing (Figure 2). This was confirmed by endoscopy and fluoroscopy (Figure 3). The patient is doing well one year later.
Stent displacement has been reported only rarely with these stents due to the flanges incorporated into their design. Yamamoto et al reported one patient with spontaneous stent migration among 9 patients undergoing cystogastrostomy.3 Talreja et al reported one such case in a series of 18 patients.4 In our patient, the CSEMS got spontaneously expelled through the gut without causing any symptoms and this was only incidentally detected during follow-up.
Migration of metal stents may lead to complications such as intestinal obstruction or perforation, which fortunately did not happen in our patient.
Boerma D, van Gulik TM, Obertop H, et al. Internal drainage of infected pancreatic pseudocysts: safe or sorry? Dig Surg 1999;16:501-506.
Neff R. Pancreatic pseudocyst and fluid collections: percutaneous approaches. Surg Clin North Am 2001;81:399-403.
Yamamoto N, Isayama H, Kawakami H, et al. Preliminary report on a new, fully covered, metal stent designed for the treatment of pancreatic fluid collections. Gastrointest Endosc 2013;77:809.
Talreja JP, Shami VM, Jennifer Ku, et al. Transenteric drainage of pancreatic-fluid collections with fully covered self-expanding metallic stents. FASGE Gastroint Endosc 2008;68:1199.
Banks PA, Bollen TL, Dervenis C, et al. Classification of acute pancreatitis: 2012 revision of the Atlanta classification and definitions by international consensus. Gut 2013;62:102-111.
Perez-Miranda M, Mata L, Saracibar E, et al. Temporary access fistulas (TAFs) using covered self-expandable metal stents (cSEMS): a feasible tool for interventional pancreaticobiliary endoscopy. GastrointestEndosc 2007;65:AB123.


text:
Q: How do proxy/stub and typelib marshaling performance compare? Suppose I need to implement an out-proc COM server and all the COM-interfaces are Automation-compatible. I can either create and register a proxy/stub combination or create and register a type library and rely on Automation marshaller.
I'm well aware of all the maintenance aspects of the two approaches. This question is about runtime performance only.
I can't find any hard data - only claims like

*

*"Automation marshaller is generic, so it is slower" which I won't believe right away because there're just several Automation-compatible types and so switching between them is not that hard

*"Automation marshaller will have to load the type library" which is fair point, but this will have to be done only once and if I have hundred thousand COM-calls afterwards I don't care much of that one-time overhead
Is there any measurement data on which - proxy/stub marshaling or typelib marshaling - is faster in the long run?

A: Once the proxy is created, the performance of PSOAInterface should be identical to that of a /Oicf proxy/stub library, according to Don Box in Essential Com (p. 228) and his Microsoft Systems Journal article (Jan 1999).
But as of Windows 8.1, the creation of the PSOAInterface proxies can be very sub-optimal. Don Box claims in the above article that combase!CreateProxyFromTypeInfo and the type library marshaler perform caching. However, in my testing the type library is reloaded from file after every time you release all your interfaces. This is a significant problem with the UIAutomation library, which uses the IGlobalInterfaceTable extensively, causing a bunch of extra system calls.
Here is my test. One apartment instantiates a coclass, and then another apartment unmarshals it into proxies 10000 times. It takes about 5s when using PSOAInterface. If I instead create and register a MIDL proxy/stub, it only takes about 100ms.
#include <stdio.h>
#include <tchar.h>
#include <Windows.h>
#include <comdef.h>

// RemoteProxyFactory32 from oleacc.dll {53362c64-a296-4f2d-a2f8-fd984d08340b}
static IID CLSID_RemoteProxyFactory32 = GUID{ 0x53362c64, 0xa296, 0x4f2d, { 0xa2, 0xf8, 0xfd, 0x98, 0x4d, 0x08, 0x34, 0x0b } };
// IRemoteProxyFactory from oleacc.dll {8628f27d-64a2-4ed6-906b-e6155314c16a}
static IID IID_IRemoteProxyFactory = GUID{ 0x8628f27d, 0x64a2, 0x4ed6, { 0x90, 0x6b, 0xe6, 0x15, 0x53, 0x14, 0xc1, 0x6a } };

struct register_interface_thread {
    HANDLE hInterfaceRegistered;
    DWORD dwCookie;
    HANDLE hShouldClose;
};
DWORD WINAPI RegisterInterfaceThread(_In_  LPVOID lpParameter) {
    struct register_interface_thread& state = *(struct register_interface_thread*)(lpParameter);
    HRESULT hr;
    if (FAILED(hr = CoInitializeEx(NULL, COINIT_MULTITHREADED))) {
        fprintf(stderr, "Error CoInitializeEx: 0x%08x\n", hr);
    }
    else {
        IUnknown *pv;
        if (FAILED(hr = CoCreateInstance(CLSID_RemoteProxyFactory32, NULL, CLSCTX_LOCAL_SERVER, IID_IRemoteProxyFactory, (LPVOID*)&pv))) {
            fprintf(stderr, "CocCreateInstance(RemoteProxyFactory32 of oleacc.dll) failed with hresult 0x%x\n", hr);
        }
        else {
            IGlobalInterfaceTable *pIGlobalInterfaceTable;
            if (FAILED(hr = CoCreateInstance
                (
                CLSID_StdGlobalInterfaceTable,
                NULL,
                CLSCTX_INPROC_SERVER,
                IID_IGlobalInterfaceTable,
                (void **)&pIGlobalInterfaceTable
                ))) {
                fprintf(stderr, "CocCreateInstance(StdGlobalInterfaceTable) failed with hresult 0x%x\n", hr);
            }
            else {
                DWORD dwCookie;
                if (FAILED(hr = pIGlobalInterfaceTable->RegisterInterfaceInGlobal(pv, IID_IRemoteProxyFactory, &dwCookie))) {
                    fprintf(stderr, "RegisterInterfaceInGlobal failed with hresult 0x%x\n", hr);
                }
                else {
                    fprintf(stdout, "Successfully registered interface; cookie=0x%x\n", dwCookie);
                    state.dwCookie = dwCookie;
                    if (!SetEvent(state.hInterfaceRegistered)) {
                        DWORD err = GetLastError();
                        fprintf(stderr, "Error SetEvent(hInterfaceRegistered): 0x%x\n", err);
                    }
                    else {
                        DWORD waitResult;
                        if (WAIT_OBJECT_0 != (waitResult = WaitForSingleObject(state.hShouldClose, INFINITE))) {
                            DWORD err = GetLastError();
                            fprintf(stderr, "Error WaitForSingleObject: returned 0x%x; error=0x%08x\n", waitResult, err);
                            hr = err;
                        }
                        else {
                            fprintf(stdout, "Successfully joined thread; dwCookie=0x%x\n", state.dwCookie);
                        }
                    }
                }
                pIGlobalInterfaceTable->Release();
            }
            if (pv != NULL)
                pv->Release();
        }
        CoUninitialize();
        fprintf(stdout, "Thread going away\n");
    }
    return 0;
}

int main(int argc, char* argv[]) {
    HRESULT hr;
    if (FAILED(hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED))) {
        fprintf(stderr, "Error CoInitializeEx: 0x%08x\n", hr);
    }
    else {
        struct register_interface_thread state;
        state.dwCookie = 0;
        state.hInterfaceRegistered = CreateEventEx(NULL, TEXT("hInterfaceRegistered"), CREATE_EVENT_MANUAL_RESET, EVENT_ALL_ACCESS);
        state.hShouldClose = CreateEventEx(NULL, TEXT("hShouldClose"), CREATE_EVENT_MANUAL_RESET, EVENT_ALL_ACCESS);

        HANDLE hThread = CreateThread(NULL, 0, RegisterInterfaceThread, &state, 0, NULL);
        if (hThread == NULL) {
            DWORD err = GetLastError();
            fprintf(stderr, "Error CreateThread: 0x%08x\n", err);
            hr = err;
        }
        else {
            DWORD waitResult;
            if (WAIT_OBJECT_0 != (waitResult = WaitForSingleObject(state.hInterfaceRegistered, INFINITE))) {
                DWORD err = GetLastError();
                fprintf(stderr, "Error WaitForSingleObject: returned 0x%x; error=0x%08x\n", waitResult, err);
                hr = err;
            }
            else {
                fprintf(stdout, "Successfully waited for hInterfaceRegistered; dwCookie=0x%x\n", state.dwCookie);
                IGlobalInterfaceTable *pIGlobalInterfaceTable;
                if (FAILED(hr = CoCreateInstance
                    (
                    CLSID_StdGlobalInterfaceTable,
                    NULL,
                    CLSCTX_INPROC_SERVER,
                    IID_IGlobalInterfaceTable,
                    (void **)&pIGlobalInterfaceTable
                    ))) {
                    fprintf(stderr, "CoCreateInstance(StdGlobalInterfaceTable) failed with hresult 0x%x\n", hr);
                }
                else {
                    IUnknown *pv = NULL;
                    DWORD start_time = GetTickCount();
                    DWORD i;
                    for (i = 0; i != 10000; i++) {
                        if (FAILED(hr = pIGlobalInterfaceTable->GetInterfaceFromGlobal(state.dwCookie, IID_IRemoteProxyFactory, (LPVOID*)&pv))) {
                            fprintf(stderr, "GetInterfaceFromGlobal failed with hresult 0x%x\n", hr);
                            break;
                        }
                        else {
                            pv->Release();
                        }
                    }
                    DWORD end_time = GetTickCount();
                    DWORD difference = end_time - start_time;
                    fprintf(stdout, "%u iterations completed in %ums\n", i, difference);
                    pIGlobalInterfaceTable->Release();
                }
                if (!SetEvent(state.hShouldClose)) {
                    DWORD err = GetLastError();
                    fprintf(stderr, "SetEvent(hShouldClose) failed; err=0x%x\n", err);
                    hr = err;
                }
                else {
                    if (WAIT_OBJECT_0 != (waitResult = WaitForSingleObject(hThread, INFINITE))) {
                        DWORD err = GetLastError();
                        fprintf(stderr, "Error WaitForSingleObject(hThread): returned 0x%x; error=0x%08x\n", waitResult, err);
                        hr = err;
                    }
                    else {
                        printf("successfully joined thread.\n");
                    }
                }
            }
        }
    }
    return hr;
}

Running it in windbg confirms that it reloads the type library 10000 times.
bp KERNELBASE!CreateFileW "r $t0 = @$t0 + 1; g"
bp OLEAUT32!LoadTypeLibEx "r $t1 = @$t1 + 1; g"
g
r $t0, $t1
$t0=000000000000c35c $t1=0000000000002712


text:
Switched On Thinking Episode 4 – Innovations in Live OTT Sports Broadcasting with NETGEAR and Hawk-Eye
Business , NETGEAR
In Episode 4 of Switched On Thinking, Kat Hayes, Senior Network Engineer from Hawk-Eye, joins NETGEAR's Business Development and Technical Manager Kieran Purdie and host Neil C Hughes to explore the many challenges associated with live, fast-paced OTT sports broadcasting, where network switch performance and stability are absolutely crucial.
"It has to work, and it has to work now!"
Hawk-Eye is a leading innovator in sports technology. Perhaps best known as the broadcast tool used to analyze decisions in cricket, Hawk-Eye is an integral part of over 20 sports and covers 20,000 events across 500+ stadiums in over 90 countries every year, ranging from tennis to Iranian volleyball.
Neil, Kat, and Kieran talk about the challenges of keeping data flowing in this rapidly-evolving OTT broadcast environment, whether the event is held in a world-class stadium or a remote location where internet connectivity is a constant struggle.
"Hawk-Eye is the most sophisticated vision processing system in broadcasting, and it demands a robust, high-performance networking solution to ensure that critical moments are never missed,"
said Kieran Purdie. "As a global company, NETGEAR has resources in almost every country, which allows us to rapidly test and adapt to the evolving challenges that Hawk-Eye Innovations faces."
The importance of partnerships
The podcast also discusses the importance of the close working partnership NETGEAR and Hawk-Eye Innovations have and how such partnerships are fundamental to the reliability of the platform.
"Unlike traditional networking, where you can delay a project for a day or even a week, with live sports, everything has to work from the get-go," said Kat Hayes. "This means ensuring that the network, which is effectively the heart of the Hawk-Eye platform, is robust and reliable. Moreover, we need a global partner we can rely on to ensure that when unforeseen technical challenges arise, we can solve them together, quickly and easily."
How to listen to Switched On Thinking
You can listen to Switched On Thinking on all the major podcast platforms around the globe, including Spotify, Apple Podcasts, Google Podcasts, and many more…
•Switched on Thinking Podcast Page
•Apple
•Spotify •Stitcher
•Podbean
•TuneIn Radio •Deezer
•Radio Public
•PlayerFM
•Acast
A new episode every two weeks
Twice a month, Switched On Thinking will deliver insightful analysis by exploring real-world networking challenges faced by businesses today and in the future.
Every episode, we will discuss the key role that networking technology plays in driving business success and continuity, so you can spend more time on what matters – growing your business.
Craig Shields


text:
Belgrave Mews North
Wilton Crescent, London, Westminster
Belgrave Mews North is a cobbled cul-de-sac, approached through its own arch off Wilton Crescent in Westminster, just south of Hyde Park. Situated between Kinnerton Street and Wilton Row (both original/ surviving Mews streets), the Mews is oriented in a south-west to north-east direction and contains 26 properties used for residential purposes.
Between October 1940 and June 1941, a high explosive bomb is recorded falling onto Wilton Crescent, near to Belgrave Mews North and presumably some of the properties were affected, meaning that they had to be rebuilt. The area was noted as being upper-middle class and wealthy when the London Poverty Maps were first published.
The Mews is part of Westminster City Council's Belgravia Conservation Area; first designated in 1968, it was laid out as a fashionable residential area to the west of Buckingham Palace. There is a high degree of townscape uniformity and a formal layout based on a grid pattern. The area is predominantly residential with some shops on the edges. There are also a significant number of embassies, diplomatic buildings and institutional headquarters.
Belgrave Mews North contains two, three and four storey buildings with mansard and parapet roofs. The facades of the properties are a mixture of different styles with a variety of materials being used in the construction. Parking is restricted and the garages are still intact.
2 Wilton Crescent has a Blue Plaque erected in 2002 inscribed 'EARL MOUNTBATTEN OF BURMA 1900-1979 COUNTESS MOUNTBATTEN OF BURMA 1901-1960. Last Viceroy and Vicereine of India lived here'
The 1948 film '˜The Fallen Idol' and 1960 film 'The League of Gentlemen' were both filmed in Belgrave Mews North.
The original purpose of Belgrave Mews North was to serve as coach house/ stable accommodation to the larger properties in Wilton Crescent and Belgrave Square and it was actually known as Wilton Crescent Mews until 1937. Now the primary usage of the Mews buildings is residential and the original two storey properties have been largely extended to three, and four storey households.
There have been a vast number of planning applications made both before and since 2003. Most notably; basement excavations, additional storeys, changes to the fenestration and the use of a flat roof as a terrace. Conservation Area controls now apply to new development in the Mews.
Address: Wilton Crescent
Zip: SW1X 8RS
I'm interested in [ Belgrave Mews North ]
Bedlam Mews
Belgrave Mews South


This beautiful limited edition 13"x19" poster, illustrated by Jim Zahniser (Red Robot), depicts the vintage Googie Premiere Lanes Bowling sign that was located in Santa Fe Springs, CA. Each poster is hand signed, numbered and comes sealed. Only 100 posters were made for The Valley Relics Museum where this amazing sign is on display!


Childhood is a journey filled with special landmarks. From birth, to baby's first Christmas, to big school and beyond, they are moments that deserve to be remembered and celebrated. A personalised kids' word art picture print, featuring their name, birthday and all their favourite things, is a great way to give them a gift that will remain a treasured part of their childhood forever.
Are you struggling to think of ideas for a unique and lasting gift for a new born baby boy or girl? How about creating a personalised picture of wall art with words for their nursery? Our personalised gifts for new born babies enable you to create a bespoke wall art gift which would make a fabulous unique addition to the baby's nursery. All you need to do to create a personalised picture for the children's bedroom is to type your unique words, choose your colour option and with our instant previews, you'll see your personalised word art create before you buy.
If you are decorating and adding some interior design ideas for your nursery or child's bedroom, what better way to add some typographic style and a unique statement with words on the walls than to create your own personalised name art. Children's name art is very popular for nursery and kids room walls. Our personalised pictures with words and names make a lovely unique gift for the nursery or bedroom of any new born baby's walls.
You can even offer new parents an appreciation of their hard work and a sign of your wish to be a part of the happy event by giving them a personalised baby poster print or canvas full to the brim with special words. Add the birth date and time, the weight, the head measurement and of course the new bundle of joy's name. You can also use these designs to create personalised typographic family word art for other members of the family or older children.
All our designs are also available as a box framed canvas, and don't forget as an optional extra we can frame your nursery wall print art in a stylish photographers black or white wooden frame. All you need to do is to click on the add frame option and we'll do the rest and your personalised childrens picture will be sent to you in a few days.
Our kids and baby wall art with words make both a perfect personalised gift for a new born baby birth or christening present, plus if you are into interior design are a trendy customised piece of word picture art to adorn a newly decorated kids bedroom.


Surely I am not meant to be able to eat this much yet!?
I feel exactly the same and I have to do the same. I've forgotten what hunger is. But if I don't eat I feel like i'm Going to fall over. I do love not feeling hungry. It helps motivate me when I feel like things are too hard.
Ahhh. My surgeon was/is super strict. Still is. Did you feel any hunger post op?
I'm super surprised you're eating eggs at 2 weeks post op? I thought it was liquid only diet for the first 4 weeks. Then moving onto yogurt and purées in week 5 then soft foods (like eggs) in week 6. And I'm even more surprised you can stomach it. I remember feeling physically vile at even the thought of eating food! Haha! But that might just be me.
Weighed myself this morning and i'm 86.2kg or exactly 190lb! I can't remember the last time I felt this good mentally or physically. 4 months since surgery and I've dropped almost 40kg (which is more than my 12 yro weighs!). I started plateauing about 3 weeks ago, so I upped my exercise from 30 mins/day to 30 mins of walking and 1 hr of intense cardio or weights. It's so good to feel this good! I'd love to hear what everyone else is feeling good about this week! Love me some good vibes! P.S. A little pic of my progress. Top ones - 1st day of the VLC Diet. Bottom is last week at the gym after boxing.
What's your "go to" when you don't feel like fussing with food?
Hey @Aussie Bear, which protein powder do you use? So many brands... where do I even start?!?
Thanks so much guys!!! I'm so proud of myself. I have stuck to an exercise regime (even when we were in Europe) that I know I will stick to. I think that has been a big factor in my losses. I have bought myself a couple of Australian size 10 (sz 6 US) jumpsuits and my MIL bought me an Australian size 8 (size 4 US) dress for Christmas just gone. Hoping to fit into them by Christmas this year. My surgeon told me not to stress that the weight isn't dropping as quickly now. But I will definitely take your advice and go to the "Op Shop" (thrift store) and find some clothes that actually fit now. Hope everyone is having an awesome day!
I weighed myself after 5 weeks in Europe and 3 months post op and I am now 92.1kg! I couldn't actually believe it!!! I have dropped almost 31kg to date. I still see the old me in the mirror, but my clothes all seem to be sliding off! Time to go shopping me thinks!
Hi All! So I'm 5 weeks post surgery and I've lost a total of 18.7kg. Yay me! My question is this... I'm on soft foods now, is it normal for food to hurt and get stuck going down? I'm doing thumbnail sized pieces, per the dietian. But I'm struggling. I saw my surgeon and he wanted to do a laproscopy. I don't have the time to take off work to get it done though... so just holding off as long as possible. He said there was probably nothing wrong with the sutures, but he just wanted to check as a precaution. Also.... I don't feel hunger and I don't feel full when I eat. How do I stop eating before I all of a sudden need to vomit? I did this on the weekend and it was not fun times!! thanks!!!
Good luck! The first week is rough (I'm 1 week post op today) but you see the results start happening straight away! I've dropped 4.5kg in a week post op. Honestly through all the feelings and concerns you might have about it, truely the best thing you'll ever do for yourself!
Got my first FF meal today. I've never appreciated food more in my life than right now.
Thanks @cinwa. The Doctors and nurses keep asking me if I've passed wind or done number 2's which I haven't. I haven't eaten for 4 days... what would I need to expel?!
A bit of a personal question here... did you struggle to pass wind post surgery? Or do number 2's? Is it normal to not need to or feel like you don't need to?
The hospital food is the worst isn't it?! I'm on a floor with all oldies and they are loving it. One fellow called someone to tell them how delicious the fish is in here. I laughed so hard my stitches hurt.
Thanks all. Still in hospital. Just been checked on by my surgeon. Looks like I'll be staying in til tomorrow because my nausea isn't subsiding.


Unlike static PDF The Essentials Of Computer Organization And Architecture 4th Edition solution manuals or printed answer keys, our experts show you how to solve each problem step-by-step. No need to wait for office hours or assignments to be graded to find out where you took a wrong turn. You can check your reasoning as you tackle a problem using our interactive solutions viewer. murachs c 2015 by anne boehm and joel murach pdf essentials of computer organization and architecture Download essentials of computer organization and architecture or read online books in PDF, EPUB, Tuebl, and Mobi Format.
DOWNLOAD NOW » Bestselling text, The Essentials of Computer Organization and Architecture, Fourth Edition, is comprehensive enough to address all necessary organization and architecture topics, but concise enough to be appropriate for a single-term course.
the essentials of computer organization and architecture Download Book The Essentials Of Computer Organization And Architecture in PDF format. You can Read Online The Essentials Of Computer Organization And Architecture here in PDF, EPUB, Mobi or Docx formats.
Download essentials of computer architecture or read online books in PDF, EPUB, Tuebl, and Mobi Format. Click Download or Read Online button to get essentials of computer architecture book now. This site is like a library, Use search box in the widget to get ebook that you want.
Updated and revised with the latest data in the field, The Essentials of Computer Organization and Architecture, Third Edition is a comprehensive resource that addresses all of the necessary organization and architecture topics, yet is appropriate for the one-term course.


Stephanie is someone that both Kelly and Marg have known online for many years, so we are grateful for her continued support, and this is Chris and Melissa's 3rd year participating so thanks to them too! This is Lilly's first year of participating, so a warm welcome to her also!
Thanks girls for the warm welcome! It is already 9:30 am and I have just posted my advent recollections. I am sorry for being a little late but I certainly had a lot of fun doing it.
Ah....this is one of my new favorite holiday traditions!! I love you guys!


© Provided by Quartz a raft of sea otters floating in the ocean.
Sea otters are arguably the most adorable-looking mammals of the sea. They're also some of the hungriest.
Even though adult sea otters tend to max out around 100 pounds (45 kg), these predators need about 7,500 calories per day—way more than most animals their size, and three times as much as the average human being. That amount of energy amounts to 25% of their body weight in food.
Otters lack blubber, that big layer of juicy insulation for all other marine mammals. Instead, otters have to keep warm even in frigid waters entirely through their diet, which consists of sea urchins, mussels, crabs, clams, and the occasional slow-swimming fish.
Scientists have often puzzled over how sea otters are capable of eating these foods in such massive quantities—particularly when many of these delicacies are on the ocean floor or in dark ocean waters. Sea otters can only dive for about five minutes, so they can't go hunting for long periods of time.
It's been nearly impossible to study the phenomenon in the wild: Otters tend to get camera-shy when they know humans are watching and water can be so murky hidden cameras become useless, Sarah McKay Strobel, a graduate student in marine biologist at the University of California Santa Cruz, told Popular Science.
Strobel and her team had an opportunity to work with a rehabilitated sea otter to try to understand its hunting skills. According to work published this week, it appears that sea otters have a heightened sense of touch (paywall) in their paws and whiskers they helps them distinguish food from rocks and sediment.
Between 2014 and 2016, the team trained Selka, a rehabilitated sea otter then living at the UCSC Marine Laboratory and declared unfit to return to the wild, to explore an experimental setting that included a cabinet with a slot for her paw. Behind the slot were grooves of plastic that ranged from 2 to 5 mm (a millimeter is about the size of a pencil point). If Selka pressed on the 2 mm groove, she got a treat.
Eventually, the research team introduced Selka to a blindfold. Selka grew accustomed to swimming around the experimental setting without sight, feeling the cabinet and grooves with her paws and whiskers. The team tested Selka's ability to find the 2 mm groove by moving and replacing the smaller grooves over time.
Feeling with just her paws and whiskers, it took her a fraction of a second to distinguish the 2 mm groove from a 3 mm groove and 2.1 mm groove, all in the same place. Most of the time, she didn't even feel others to compare their sizes; she just appeared to know what the right size felt like. For comparison, members of the lab tried to feel out the same differences with their hands, and it took them about 15 seconds.
The results of the experiment, carried out with one otter in a lab setting, are similar to outcomes of tests with seals, walruses, and manatees.
"Our results suggest that sea otters are capable of using touch in this short amount of time to detect prey," Strobel said in a statement. It's likely they spend about 30 seconds of each dive actually feeling around the bottom of the ocean with their paws and whiskers looking for food.


text:
Q: C preprocessor direct expansion Hi I've a problem with my cpp macros:
#define DATA_TYPE_B uchar
#define DATA_TYPE_A DATA_TYPE_B    //line 2
#undef DATA_TYPE_B
#define DATA_TYPE_B double
DATA_TYPE_A A;
DATA_TYPE_B B;

this wil give me
double A;
double B;

instead of
uchar A;
double B;

because line 2 doesn't expand DATA_TYPE_B, how can i force that expansion?

A: When the preprocessor sees the use of DATA_TYPE_A it replaces it with DATA_TYPE_B, and then it replaces DATA_TYPE_B with its definition, which is double. It doesn't keep notes about what the definition of DATA_TYPE_B used to be.

A: you say to the compiler: everything with DATA_TYPE_A replace with DATA_TYPE_B
and then everything with DATA_TYPE_B replace with double

A: Take a look at #pragma push_macro/#pragma pop_macro (originally limited to MSVC but apparently now supported by both gcc and clang), they allow you to temporarily redefine macro values then revert to the prior value.
Unfortunately macro values are not evaluated until actual expansion so in the case of:
#define macroA float
#define macro B macroA
#undef macroA
#define macroA double
macroB var;

'var' simply is going to expand to double.
But with a compiler that supports push_macro:
#define macroA float
#define macroB macroA
#pragma push_macro("macroA")
#undef macroA
#define macroA double
macroB var1; // var1 is a double
#pragma pop_macro("macroA")
macroB var2; // var2 is a float

A: I found a possible solution to my problem replacing line 2 by something like:
#if DATA_TYPE_B==uchar
 #define DATA_TYPE_A uchar
#elif DATA_TYPE_B==float
 #define DATA_TYPE_A float
#elif DATA_TYPE_B==uint
 #define DATA_TYPE_A uint
#else
 #error Unknown DATA_TYPE_B
#endif

That is a bit ugly and i wish there was just some expansion or evaluation macro though, think I have to write such a macro using such if statements. :-/
Also these camparisons can't be made directly but I have to replace the strings by integers it seems.. :-/


text:
// Copyright (c) 2012 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 "net/third_party/quic/test_tools/simulator/quic_endpoint.h"

#include "net/third_party/quic/core/crypto/crypto_handshake_message.h"
#include "net/third_party/quic/core/crypto/crypto_protocol.h"
#include "net/third_party/quic/core/quic_data_writer.h"
#include "net/third_party/quic/platform/api/quic_ptr_util.h"
#include "net/third_party/quic/platform/api/quic_str_cat.h"
#include "net/third_party/quic/platform/api/quic_test_output.h"
#include "net/third_party/quic/platform/api/quic_text_utils.h"
#include "net/third_party/quic/test_tools/quic_connection_peer.h"
#include "net/third_party/quic/test_tools/quic_test_utils.h"
#include "net/third_party/quic/test_tools/simulator/simulator.h"

namespace quic {
namespace simulator {

const QuicStreamId kDataStream = 3;
const QuicByteCount kWriteChunkSize = 128 * 1024;
const char kStreamDataContents = 'Q';

// Takes a SHA-1 hash of the name and converts it into five 32-bit integers.
static std::vector<uint32_t> HashNameIntoFive32BitIntegers(QuicString name) {
  const QuicString hash = test::Sha1Hash(name);

  std::vector<uint32_t> output;
  uint32_t current_number = 0;
  for (size_t i = 0; i < hash.size(); i++) {
    current_number = (current_number << 8) + hash[i];
    if (i % 4 == 3) {
      output.push_back(i);
      current_number = 0;
    }
  }

  return output;
}

QuicSocketAddress GetAddressFromName(QuicString name) {
  const std::vector<uint32_t> hash = HashNameIntoFive32BitIntegers(name);

  // Generate a random port between 1025 and 65535.
  const uint16_t port = 1025 + hash[0] % (65535 - 1025 + 1);

  // Generate a random 10.x.x.x address, where x is between 1 and 254.
  QuicString ip_address{"\xa\0\0\0", 4};
  for (size_t i = 1; i < 4; i++) {
    ip_address[i] = 1 + hash[i] % 254;
  }
  QuicIpAddress host;
  host.FromPackedString(ip_address.c_str(), ip_address.length());
  return QuicSocketAddress(host, port);
}

QuicEndpoint::QuicEndpoint(Simulator* simulator,
                           QuicString name,
                           QuicString peer_name,
                           Perspective perspective,
                           QuicConnectionId connection_id)
    : Endpoint(simulator, name),
      peer_name_(peer_name),
      writer_(this),
      nic_tx_queue_(simulator,
                    QuicStringPrintf("%s (TX Queue)", name.c_str()),
                    kMaxPacketSize * kTxQueueSize),
      connection_(connection_id,
                  GetAddressFromName(peer_name),
                  simulator,
                  simulator->GetAlarmFactory(),
                  &writer_,
                  false,
                  perspective,
                  ParsedVersionOfIndex(CurrentSupportedVersions(), 0)),
      bytes_to_transfer_(0),
      bytes_transferred_(0),
      write_blocked_count_(0),
      wrong_data_received_(false),
      drop_next_packet_(false),
      notifier_(nullptr) {
  nic_tx_queue_.set_listener_interface(this);

  connection_.SetSelfAddress(GetAddressFromName(name));
  connection_.set_visitor(this);
  connection_.SetEncrypter(ENCRYPTION_FORWARD_SECURE,
                           QuicMakeUnique<NullEncrypter>(perspective));
  connection_.SetDecrypter(ENCRYPTION_FORWARD_SECURE,
                           QuicMakeUnique<NullDecrypter>(perspective));
  connection_.SetDefaultEncryptionLevel(ENCRYPTION_FORWARD_SECURE);
  if (perspective == Perspective::IS_SERVER) {
    // Skip version negotiation.
    test::QuicConnectionPeer::SetNegotiatedVersion(&connection_);
  }
  connection_.SetDataProducer(&producer_);
  connection_.SetSessionNotifier(this);
  if (connection_.session_decides_what_to_write()) {
    notifier_ = QuicMakeUnique<test::SimpleSessionNotifier>(&connection_);
  }

  // Configure the connection as if it received a handshake.  This is important
  // primarily because
  //  - this enables pacing, and
  //  - this sets the non-handshake timeouts.
  QuicString error;
  CryptoHandshakeMessage peer_hello;
  peer_hello.SetValue(kICSL,
                      static_cast<uint32_t>(kMaximumIdleTimeoutSecs - 1));
  peer_hello.SetValue(kMIDS,
                      static_cast<uint32_t>(kDefaultMaxStreamsPerConnection));
  QuicConfig config;
  QuicErrorCode error_code = config.ProcessPeerHello(
      peer_hello, perspective == Perspective::IS_CLIENT ? SERVER : CLIENT,
      &error);
  DCHECK_EQ(error_code, QUIC_NO_ERROR) << "Configuration failed: " << error;
  connection_.SetFromConfig(config);
}

QuicEndpoint::~QuicEndpoint() {
#ifndef QUIC_TRACE_DISABLED
  if (trace_visitor_ != nullptr) {
    const char* perspective_prefix =
        connection_.perspective() == Perspective::IS_CLIENT ? "C" : "S";

    QuicString identifier =
        QuicStrCat(perspective_prefix, connection_.connection_id().ToString());
    QuicRecordTestOutput(identifier,
                         trace_visitor_->trace()->SerializeAsString());
  }
#endif
}

QuicByteCount QuicEndpoint::bytes_received() const {
  QuicByteCount total = 0;
  for (auto& interval : offsets_received_) {
    total += interval.max() - interval.min();
  }
  return total;
}

QuicByteCount QuicEndpoint::bytes_to_transfer() const {
  if (notifier_ != nullptr) {
    return notifier_->StreamBytesToSend();
  }
  return bytes_to_transfer_;
}

QuicByteCount QuicEndpoint::bytes_transferred() const {
  if (notifier_ != nullptr) {
    return notifier_->StreamBytesSent();
  }
  return bytes_transferred_;
}

void QuicEndpoint::AddBytesToTransfer(QuicByteCount bytes) {
  if (notifier_ != nullptr) {
    if (notifier_->HasBufferedStreamData()) {
      Schedule(clock_->Now());
    }
    notifier_->WriteOrBufferData(kDataStream, bytes, NO_FIN);
    return;
  }

  if (bytes_to_transfer_ > 0) {
    Schedule(clock_->Now());
  }

  bytes_to_transfer_ += bytes;
  WriteStreamData();
}

void QuicEndpoint::DropNextIncomingPacket() {
  drop_next_packet_ = true;
}

void QuicEndpoint::RecordTrace() {
#ifndef QUIC_TRACE_DISABLED
  trace_visitor_ = QuicMakeUnique<QuicTraceVisitor>(&connection_);
  connection_.set_debug_visitor(trace_visitor_.get());
#endif
}

void QuicEndpoint::AcceptPacket(std::unique_ptr<Packet> packet) {
  if (packet->destination != name_) {
    return;
  }
  if (drop_next_packet_) {
    drop_next_packet_ = false;
    return;
  }

  QuicReceivedPacket received_packet(packet->contents.data(),
                                     packet->contents.size(), clock_->Now());
  connection_.ProcessUdpPacket(connection_.self_address(),
                               connection_.peer_address(), received_packet);
}

UnconstrainedPortInterface* QuicEndpoint::GetRxPort() {
  return this;
}

void QuicEndpoint::SetTxPort(ConstrainedPortInterface* port) {
  // Any egress done by the endpoint is actually handled by a queue on an NIC.
  nic_tx_queue_.set_tx_port(port);
}

void QuicEndpoint::OnPacketDequeued() {
  if (writer_.IsWriteBlocked() &&
      (nic_tx_queue_.capacity() - nic_tx_queue_.bytes_queued()) >=
          kMaxPacketSize) {
    writer_.SetWritable();
    connection_.OnCanWrite();
  }
}

void QuicEndpoint::OnStreamFrame(const QuicStreamFrame& frame) {
  // Verify that the data received always matches the expected.
  DCHECK(frame.stream_id == kDataStream);
  for (size_t i = 0; i < frame.data_length; i++) {
    if (frame.data_buffer[i] != kStreamDataContents) {
      wrong_data_received_ = true;
    }
  }
  offsets_received_.Add(frame.offset, frame.offset + frame.data_length);
  // Sanity check against very pathological connections.
  DCHECK_LE(offsets_received_.Size(), 1000u);
}

void QuicEndpoint::OnCryptoFrame(const QuicCryptoFrame& frame) {}

void QuicEndpoint::OnCanWrite() {
  if (notifier_ != nullptr) {
    notifier_->OnCanWrite();
    return;
  }
  WriteStreamData();
}
bool QuicEndpoint::WillingAndAbleToWrite() const {
  if (notifier_ != nullptr) {
    return notifier_->WillingToWrite();
  }
  return bytes_to_transfer_ != 0;
}
bool QuicEndpoint::HasPendingHandshake() const {
  return false;
}
bool QuicEndpoint::ShouldKeepConnectionAlive() const {
  return true;
}

bool QuicEndpoint::AllowSelfAddressChange() const {
  return false;
}

bool QuicEndpoint::OnFrameAcked(const QuicFrame& frame,
                                QuicTime::Delta ack_delay_time) {
  if (notifier_ != nullptr) {
    return notifier_->OnFrameAcked(frame, ack_delay_time);
  }
  return false;
}

void QuicEndpoint::OnFrameLost(const QuicFrame& frame) {
  DCHECK(notifier_);
  notifier_->OnFrameLost(frame);
}

void QuicEndpoint::RetransmitFrames(const QuicFrames& frames,
                                    TransmissionType type) {
  DCHECK(notifier_);
  notifier_->RetransmitFrames(frames, type);
}

bool QuicEndpoint::IsFrameOutstanding(const QuicFrame& frame) const {
  DCHECK(notifier_);
  return notifier_->IsFrameOutstanding(frame);
}

bool QuicEndpoint::HasUnackedCryptoData() const {
  return false;
}

QuicEndpoint::Writer::Writer(QuicEndpoint* endpoint)
    : endpoint_(endpoint), is_blocked_(false) {}

QuicEndpoint::Writer::~Writer() {}

WriteResult QuicEndpoint::Writer::WritePacket(
    const char* buffer,
    size_t buf_len,
    const QuicIpAddress& self_address,
    const QuicSocketAddress& peer_address,
    PerPacketOptions* options) {
  DCHECK(!IsWriteBlocked());
  DCHECK(options == nullptr);
  DCHECK(buf_len <= kMaxPacketSize);

  // Instead of losing a packet, become write-blocked when the egress queue is
  // full.
  if (endpoint_->nic_tx_queue_.packets_queued() > kTxQueueSize) {
    is_blocked_ = true;
    endpoint_->write_blocked_count_++;
    return WriteResult(WRITE_STATUS_BLOCKED, 0);
  }

  auto packet = QuicMakeUnique<Packet>();
  packet->source = endpoint_->name();
  packet->destination = endpoint_->peer_name_;
  packet->tx_timestamp = endpoint_->clock_->Now();

  packet->contents = QuicString(buffer, buf_len);
  packet->size = buf_len;

  endpoint_->nic_tx_queue_.AcceptPacket(std::move(packet));

  return WriteResult(WRITE_STATUS_OK, buf_len);
}

bool QuicEndpoint::Writer::IsWriteBlocked() const {
  return is_blocked_;
}

void QuicEndpoint::Writer::SetWritable() {
  is_blocked_ = false;
}

QuicByteCount QuicEndpoint::Writer::GetMaxPacketSize(
    const QuicSocketAddress& /*peer_address*/) const {
  return kMaxPacketSize;
}

bool QuicEndpoint::Writer::SupportsReleaseTime() const {
  return false;
}

bool QuicEndpoint::Writer::IsBatchMode() const {
  return false;
}

char* QuicEndpoint::Writer::GetNextWriteLocation(
    const QuicIpAddress& self_address,
    const QuicSocketAddress& peer_address) {
  return nullptr;
}

WriteResult QuicEndpoint::Writer::Flush() {
  return WriteResult(WRITE_STATUS_OK, 0);
}

WriteStreamDataResult QuicEndpoint::DataProducer::WriteStreamData(
    QuicStreamId id,
    QuicStreamOffset offset,
    QuicByteCount data_length,
    QuicDataWriter* writer) {
  writer->WriteRepeatedByte(kStreamDataContents, data_length);
  return WRITE_SUCCESS;
}

bool QuicEndpoint::DataProducer::WriteCryptoData(EncryptionLevel leve,
                                                 QuicStreamOffset offset,
                                                 QuicByteCount data_length,
                                                 QuicDataWriter* writer) {
  QUIC_BUG << "QuicEndpoint::DataProducer::WriteCryptoData is unimplemented";
  return false;
}

void QuicEndpoint::WriteStreamData() {
  // Instantiate a flusher which would normally be here due to QuicSession.
  QuicConnection::ScopedPacketFlusher flusher(
      &connection_, QuicConnection::SEND_ACK_IF_QUEUED);

  while (bytes_to_transfer_ > 0) {
    // Transfer data in chunks of size at most |kWriteChunkSize|.
    const size_t transmission_size =
        std::min(kWriteChunkSize, bytes_to_transfer_);

    QuicConsumedData consumed_data = connection_.SendStreamData(
        kDataStream, transmission_size, bytes_transferred_, NO_FIN);

    DCHECK(consumed_data.bytes_consumed <= transmission_size);
    bytes_transferred_ += consumed_data.bytes_consumed;
    bytes_to_transfer_ -= consumed_data.bytes_consumed;
    if (consumed_data.bytes_consumed != transmission_size) {
      return;
    }
  }
}

QuicEndpointMultiplexer::QuicEndpointMultiplexer(
    QuicString name,
    std::initializer_list<QuicEndpoint*> endpoints)
    : Endpoint((*endpoints.begin())->simulator(), name) {
  for (QuicEndpoint* endpoint : endpoints) {
    mapping_.insert(std::make_pair(endpoint->name(), endpoint));
  }
}

QuicEndpointMultiplexer::~QuicEndpointMultiplexer() {}

void QuicEndpointMultiplexer::AcceptPacket(std::unique_ptr<Packet> packet) {
  auto key_value_pair_it = mapping_.find(packet->destination);
  if (key_value_pair_it == mapping_.end()) {
    return;
  }

  key_value_pair_it->second->GetRxPort()->AcceptPacket(std::move(packet));
}
UnconstrainedPortInterface* QuicEndpointMultiplexer::GetRxPort() {
  return this;
}
void QuicEndpointMultiplexer::SetTxPort(ConstrainedPortInterface* port) {
  for (auto& key_value_pair : mapping_) {
    key_value_pair.second->SetTxPort(port);
  }
}

}  // namespace simulator
}  // namespace quic

redpajama_set_name: RedPajamaGithub