3DBrowser for 3D Users with Polygon Cruncher is a file browser that displays your 3D files and includes a very powerful optimization tool. This is a fast and powerful media manager to browse thousands of files thanks to its thumbnails window. You'll find user friendly features to display, organize and edit your 3D and images files. You'll get the most complete tool to document and find your files on your computer or your local network.
Display in the same window the files located in several folders: this is very useful as you can see your whole scenes or photos library.
Browse scenes stored in your ZIP archives without decompressing them.
Small thumbnails to browse thousands of files in a split second.
Grouping files together using logical criteria.
3DBrowser rotates automatically your digital camera pictures and also handles renaming and deleting files that share a given name but have different extensions (i.e. example.jpg image and example.wav sound).
Open your 3D files in the built-in OpenGL viewer.
Polygon Cruncher for 3DBrowser allows optimizing any one of the 3D files recognized by 3DBrowser.
Polygon Cruncher for 3DBrowser reduces the number of polygons of your objects without changing their appearance. You keep all details even at high optimization ratio. You also keep texture information and vertex colors.
You see the scene as long as you optimize it in order to choose the best simplification level. You can also batch optimize scenes stored in a folder and automatically decline them at various levels of details.
Polygon Cruncher uses an exceptional algorithm, which gives incomparable results. It also includes MagicCruncher which defines automatically the best optimization ratio for you.
Polygon Cruncher is really simple to use. This multi-awarded software is used by most of the 3D and video game companies.
Open your images or your videos in the built-in viewer.
You can also play your videos in full screen and extract images from your favorites movies.
3DBrowser also plays your audio files and allows MP3 tags edition (album, track, length...).
3DBrowser includes many additional features for handling conveniently your 3D and image files.
Version 14.15 Improvements 3D support - New OpenGL viewer with improved performances and faster reactivity for huge meshes. - 3ds Max 2019 plugin support - Maya 2019 plugin support - Sketchup 2019 file support. 3D viewer improvements - LWO: file are read faster - Wavefront files are readed faster. - Faster triangulation - Object scene tree panel is filled faster - Better handling of relative texture paths when exporting 3d scenes. Application improvements - Merge by Materials now works with Sketchup files (when face have different front / back face materials) Polygon Cruncher improvements - MagicCruncher is now x8 time faster.


text:
transient cookie (session cookie)
On the Web, a transient cookie, sometimes called a session cookie, is a small file that contains information about a user that disappears when the user's browser is closed. Unlike a persistent cookie, a transient cookie is not stored on your hard drive but is only stored in temporary memory that is erased when the browser is closed.
A transient cookie is created by simply not setting a date in the Set-Cookie option when an application creates the cookie. (For a persistent cookie, an expiration date is set and the cookie is stored on the user's hard drive until the expiration date or until the user deletes it.)
Transient cookies are often used to enable a site to be able to track the pages that a user has visited during a visit so that information can be customized for the user in some way. Some sites use Secure Sockets Layer (SSL) to encrypt the information contained in a cookie.
This was last updated in September 2005
Continue Reading About transient cookie (session cookie)
Cookie Central provides information about transient cookies and privacy-related issues with cookies.
The Electronic Privacy Information Center includes information about cookies, including links to related sites.

redpajama_set_name: RedPajamaCommonCrawl


Hydrolyzes phosphatidylinositol 4,5-bisphosphate (PtIns(4,5)P2) and the signaling molecule phosphatidylinositol 1,4,5-trisphosphate (PtIns(1,4,5)P3), and thereby modulates cellular signaling events.
INPP5B Polyclonal Antibody, Biotin Conjugated. Biotin. Raised in: Rabbit.


text:
We Crash YOUR Bash with House of Juju in Clovis For the BIG GAME February 12th with awesome food for your bash – click for info
The Drew Show – weekday mornings – 6a-10a Mornings done differently – weekday mornings
The Official Beer of the New Rock Nation Found exclusively at Tioga Sequoia Brewing Company – On draft and in cans!
New Rock is on your Alexa Devices Enable the skill now and listen to New Rock 104.1 on your Alexa Device
Billie Eilish: Live at the O2 exclusively in theatres Regal Edwards Fresno & IMAX – Friday January 27th – Click for info and tickets
Discover & Discover – Chad Tepper – I Wanna Be Your High
Discover and Download – New music from from Chad Tepper with his new song 'I Wanna Be Your High' – Click here to grab it for FREE NOW Website Instagram Twitter https://www.youtube.com/watch?v=lb4lh-SyY94
18th Annual Fresno Tattoo Expo
February 25th & 26th at the Fresno Fairgrounds – Click to get all the info and join us!
The Drew Show – weekday mornings
Weekday Mornings – 6a-10a – Mornings done a little different
Ozmosis with Mike Oz
Mike Oz takes over the New Rock Airwaves with Ozmosis, every Sunday night at 9pm with music you won't hear anywhere else, so check it out here on 104.1 and elevate your taste!
New Rock Blogs
Panic! at the Disco Break Up: 'Sometimes a Journey Must End'
January 25, 2023 | New Rock Blogs
Panic! at the Disco, is ending its run after seven albums and nearly two decades. Brendon Urie, the band's frontman and last remaining original member, made the announcement on Instagram Tuesday. The post said the band's upcoming […]
Ellitorial: HBO-Yeah And HBO-Noooo
January 19, 2023 | Elliott, New Rock Blogs
HBO to many has been the pinnacle of premier television programming. Over the years we've been given huge successes such as Entourage, Successions, Game of Thrones, Euphoria, and so much more. Growing up there was a […]
Fall Out Boy brings 'Love From the Other Side' with new music
Fall Out Boy announced that their eighth studio album So Much (For) Stardust will arrive March 24, 2023 and provided the first glimpse of the new music with the release of the record's first single […]
Blake Lively and Justin Baldoni to star in 'It Ends With Us'
February 1, 2023 | Entertainment Daypop
Blake Lively and Justin Baldoni will star in the film version of Colleen Hoover's popular novel, 'It Ends with Us.' Baldoni will also serve as director of the film. The novel center around Lily, a […]
See the teaser trailer for the new Amazon series 'Daisy Jones & the Six'
Amazon Prime Video shared the official teaser trailer for the upcoming series 'Daisy Jones & The Six,' starring Riley Keough and Sam Claflin. The trailer features the song "Regret Me," one of 24 original songs […]
'Laverne & Shirley' actor Cindy Williams dies at age 75
January 31, 2023 | Entertainment Daypop
Actor Cindy Williams, best known for her role in the 70s-80s TV sitcom "Laverne & Shirley", has died at age 75. Williams children said in a statement released by family spokesperson Liza Cranis that she […]
Rob Zombie and Alice Cooper announce co-headlining 'Freaks on Parade' tour
February 1, 2023 | Rock Daypop
Rob Zombie and Alice Cooper have announced their co-headlining 2023 'Freaks on Parade' tour, featuring support from Ministry and Filter. The 19-city run kicks off Thursday, August 24th in Dallas at Dos Equis Pavilion, with […]
Limp Bizkit, Papa Roach among 2023 Bamboozle Festival headliners
2023 Bamboozle Festival has announced that Limp Bizkit, Papa Roach, Blackbear and more will headline this years event. The three day festival takes place May 5-7th at Bader Field in Atlantic City, NJ, and marks […]
Metallica '72 Seasons Global Premiere' coming to movie theaters worldwide
January 31, 2023 | Rock Daypop
Metallica has announced the '72 Seasons Global Premiere' event, coming to movie theaters across the globe on Thursday, April 13 —the day before the record's release. The one-night-only worldwide listening party will give fans the […]
New Rock Nights
Jane's Addiction – Bakersfield, CA
Mechanics Bank Theater
Jane's Addiction – Los Angeles, CA
Muse – Los Angeles, CA
April 6 @ 6:30 pm
Muse – San Diego, CA
April 10 @ 6:30 pm
Pechanga Arena San Diego
Muse – Anaheim, CA
Honda Center
Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.0)
719018782cab7da9ad7dfc457b2d101eab0812ed


Entia non sunt multiplicanda praeter necessitate.
First, a disclaimer. I am not a mechanic. I have never been passionate about working on engines of any sort, nor vehicles of any kind at all. When I was young, my buddies gave me my baby-poop yellow Pinto wagon's radiator hose mounted on a wooden pedestal as recognition of my mechanical ineptitude. My RV maintenance blogs are an illustration that everyone can and should learn about their RV's systems. So, when we started having issues over the last few days with the 12v system, I decided to diagnose it.
The batteries didn't appear to be holding a charge despite hours of either driving the coach or the generator running. We would have a sudden "dim-out" of the lighting. The control panel of the Dometic refrigerator would flash "low dc". Since the Genset had been overhauled 8 months ago, I ruled that out after looking at it and making sure the breakers on it were set. That left the batteries.
Opening the bay and pulling out the tray didn't tell me much at first glance. I have two Duracell 6v golf car type house batteries, and I decided to get help from my friends.
I belong to a Facebook group called Class A RV Diesel Owners. These guys are the bomb! I've asked other questions before and within minutes of posting I started getting suggestions. Quickly, the batteries were identified as lead-acid and since I had never checked their water levels, I started with this. They were indeed low and so I purchased a bulb-type filler from an auto parts store and a gallon of distilled water from the grocery store. It's critical that you use ONLY distilled water. When you add the water, do so slowly until the plates inside are just covered. Do not overfill!
My batteries have toggle-slide bars that connect all three of the cells' caps together and operate as a unit. To open them, I had to remove the positive cable and the jumper cable between the two batteries. When I replaced the nuts and tightened them, I decided to check the negative cable nut on the rear battery. Eureka! It was loose, which would account for all the symptoms we had experienced!
We've had no more problems. Through the process I learned how to maintain my batteries and how often to check them (do so every month!). I learned (again) that the simplest solution is usually the best but that the process of learning is vital. I also reinforced that getting help early from people with experience is invaluable. Thanks to the gang at Class A RV Diesel Owners again!


text:
And the Killer Smartphone App Is...Games!
By Brad Reed
Network World |
If workers at your company insist they need you to buy them the latest iPhone and Android device to perform data-intensive business applications, you may want to treat the request skeptically.
[SLIDESHOW: The 36 best iPhone games]
According to the latest data released by Nielsen, 64% of mobile phone owners have used their device to play games in the past month, while only 21% have used them for work-related productivity applications. Other popular application types included weather apps (60%), social networking (56%) and maps (44%).
Are employees "working" on Angry Birds on their company-issued smartphones?
From a platform perspective, iPhone, Android and Windows Phone were the three drivers of mobile gaming as more than two-thirds of users for each operating system played a game on their device in the past month. Research in Motion's BlackBerry devices didn't provide anywhere near the same level of fun, apparently, as only 24% of BlackBerry users played a game on their device.
IPhone users by far spent the most time playing mobile games, as Nielsen reported that Apple fans spent an average of 14.7 hours per month using gaming apps. Android users spent the second-most hours playing games on their devices (an average of 9.3 hours last month) while Windows Phone users (4.7 hours) and BlackBerry users (4.5 hours) trailed further behind.
Mobile applications have become an increasingly popular feature of smartphones over the past couple of years, especially with the high-profile launches of application shopping centers such as Apple's App Store and Google's Android Market. Survey data released earlier late last year from research firm ChangeWave showed that 14% of smartphone users said that applications were what they liked best about new smartphones, followed by ease of use (12%) and Internet access (12%). Corporate e-mail access, which has long been RIM's bread-and-butter application, was considered the most important feature by 10% of users, the survey showed.
Read more about anti-malware in Network World's Anti-malware section.
This story, "And the Killer Smartphone App Is...Games!" was originally published by Network World.
Backcountry Coupon
Up to 60% off women's accessories - Backcountry Holiday Deals
FOREO Coupons
FOREO promo code: 17% off sitewide
Walgreens Coupon
Walgreens discount code for an additional 25% off pickup orders of $40+


text:
Dr. Kulanand Jha
Title: Professor, Geotechnical Engineer
Company: INDOT
Location: Indianapolis, Indiana, United States
Kulanand Jha, Senior Geotechnical Engineer at Department of Transportation, has been recognized by Marquis Who's Who Top Educators for dedication, achievements, and leadership in stabilization mechanics.
With more than four decades of professional experience to his credit, Dr. Jha has excelled as a professional engineer and educator since 1972. At the start of his career, he worked as a researcher and a consultant for 16 years before working as a university professor from 1988 to 1994. He taught at various institutions, including Purdue University and Birla Institute of Technology and Science in India. Between 1995 and 1999, he was a consulting engineer for various companies. Since 1999, Dr. Jha has held the title of a Senior Geotechnical Engineer for the Department of Transportation.
A graduate of the National Institute of Technology Jamshedpur, Dr. Jha earned a Bachelor of Science in Civil Engineering. Soon thereafter, he received a Master of Science in Transportation and Highway Engineering from West Virginia University in 1973. He concluded his academic efforts with a Doctor of Philosophy in Civil Engineering from the University of Oklahoma in 1977.
An expert in the field of soil mechanics, Dr. Jha has contributed to over 40 publications regarding rural roads, pavements, and soil stabilization. Achievements to his credit include serving as a fellow of the Institution of Engineers in India and as chairman of the Department of Civil Engineering at the University of Gorakhpur. To remain aware of changes in the field, he maintains affiliation with the American Society of Civil Engineers, the Indian Geotechnical Society, the Indian Society of Technical Education, and the Institution of Engineers (India). Inspired by outstanding civil engineering around the world, Dr. Jha hopes to remain a prominent engineer and professor in the coming years.
Contact Dr. Jha:
Posted in Engineering Education, Research, STEMTagged Birla Institute of Technology and Science, National Institute of Technology Jamshedpur, Purdue University, soil mechanics, University of Oklahoma, West Virginia University
Prev Laurence J. Walsh
Next Melanie Stewart


It is over forty years since the Shinkansen ('bullet train') began operating between Tokyo and Osaka. Since then the network has expanded, but other countries, most notably France and Germany, have been developing their own high speed railways, too. As other countries, mainly in Asia, look to develop high speed railways, the battle over which country will win the lucrative contracts for them is on. It is not only a matter of railway technology. Political, economic & cultural influences are also at stake. This paper will look at these various aspects in relation to the export of the Shinkansen to China in light of previous Japanese attempts to export the Shinkansen and the situation in Taiwan.
In 1946, the Chinese Nationalist Party, Kuomintang (KMT), fled to Taiwan as the Communist Party moved toward victory the mainland. The result, from 1949, was two Chinas – the People's Republic of China (China), and the Republic of China (Taiwan). The KMT vowed to unify China by retaking the mainland, a position it has maintained ever since. Unification has, however, become more likely at the initiative of the mainland. Taiwan continues in a state of autonomy with U.S. protection and with a dynamic industrial economy. But it has few formal diplomatic links with other countries, who are wary of hindering their relationship with China.
Japan, like many other countries has a de facto two-China policy with formal recognition of the People's Republic but extensive economic and other ties with the Republic. One example of this dual policy is the use of Haneda Airport by China Airlines (Taiwan), but the use of Narita Airport by airlines from China.
The Shinkansen is one of Japan's iconic symbols. The image of Mount Fuji with a passing Shinkansen is one of the most projected images of Japan. The history of the Shinkansen dates back to the Pacific War. Shima Yasujiro's plan for the dangan ressha ('bullet train') then included the idea of a line linking Tokyo with Korea and China (1). Although that plan never materialised, the Shinkansen idea was reborn nearly two decades later, as yume-no-chotokkyu ('super express of dreams'), with Shima Hideo, son of Yasujiro, among the key figures in its development (2).
Since the opening in 1964, the network has continued to expand. Figure 1 shows the state of the network in 2007. The first line is shown in blue, whilst subsequent main lines are shown in black. Two 'mini-Shinkansen' lines (where speeds are lower due to the line not meeting full Shinkansen standards) are shown in purple. Current sections under construction are shown in white. Lines which are likely to be built in the future are shown in yellow. The red line is the possible route for the Chuo Shinkansen – which would be built using linear or maglev technology if approved.
The Shinkansen has a large impact on local economies and populations, as well as on the national economy. Certainly it has been pivotal for Japan's economic growth in the past 40 years. However, the other side of the coin is that many towns and cities not on the route have experienced depopulation and company closures or relocations (3). The Shinkansen has further fuelled the centralization in large cities, ironic in that such proponents of the network as Prime Minister Tanaka Kakuei did so precisely to encourage development of the entire Japanese archipelago and less centralization.
Shinkansen, then, is not simply a bullet train; it is an entire system spanning and transforming the Japanese archipelago. Indeed, 'Shinkansen' literally refers to the line, not the train, although it has come to mean the train also. You cannot just put a bullet train on a railway line in another country and expect it to work to Japanese standards. Railroad bed and tracks must be designed to house the bullet train. Although it runs on 'standard gauge (width)' rails, the body is larger than that of trains found on most standard gauge railways around the world and precise technical specifications are critical to its ability to negotiate high speeds securely.
Whilst visitors to Japan are impressed by the trains, the 'hardware', it is the 'software' which is in many respects of greater important. People are integral to the smooth functioning of the system. Trains do not move automatically. Indeed underground trains in many cities around the world are more automated than the Shinkansen.
So how are high Shinkansen standards achieved and with what results? The speed is in part a result of the fact that the lines are quite straight and there are no level crossings on main lines that might slow the trains or result in accidents. (Accidents at level crossings account for about 50 percent of all railway accidents in Japan, averaging just over one per day.) (4). To ensure infrastructure maintenance, survey trains regularly travel at normal operating speeds (about 270km/h) to check the lines for any signs of problems with track, overhead cables, etc. There is no service between midnight and 6 a.m. so that timely repairs can be made. The result is that the top speed is now 300km/h. However, research is on-going to introduce a 360km/h train to be introduced in a few years.
Delays on some lines now average less than 10 seconds per train. To achieve this requires not only high skill on the part of drivers (in maintaining the schedule and stopping the train at exactly the right point on the platform), but also the co-operation of passengers. For, if passengers fail to queue up in the correct place, for example, it would be impossible to keep station stops down to 50 seconds. This level of emphasis on time is something that has been criticized by some, particularly in light of the Fukuchiyama Line derailment in 2005 when 105 people were killed when a conventional train derailed travelling too fast round a corner, in part due to the driver trying to make up for a delay on his service. However, the way in which the Shinkansen operates means that such accidents are not possible and in most cases 50 seconds is more than enough time to allow passengers to disembark and embark.
In 1987 Japanese National Railways (JNR) was broken up into six regional passenger companies and one nationwide freight company. The Shinkansen are operated by individual companies. This means that where a train passes from one region to another, the crew all change. Currently the only example of this is at Shin-Osaka with the through running of Shinkansen between the Tokaido Shinkansen linking Tokyo and Nagoya and the San'yo Shinkansen between Osaka and Fukuoka.
Two more features of the Shinkansen are relevant to this paper. First, the Shinkansen has a system to help deal with the effects of earthquakes. Although the Shinkansen suffered its first passenger-carrying service derailment in 2004 due to an earthquake, this was due to the very close proximity to the epicentre of the earthquake. It is worth noting that despite this, there were no significant injuries. The second feature is that all the trains are Electric Multiple Units (EMU), rather than 'push-pull' locomotive designs. This helps to reduce the weight of trains and damage to the infrastructure.
There are three types of Shinkansen export. First is the export of equipment by Japanese manufacturers. This is the system which tends to be used for conventional (i.e. non-Shinkansen) railways and undergrounds. As this is merely the provision of trains, for example, no involvement from any of the JR passenger companies is required. Second is the export of the complete system. This is a huge undertaking and in the case of the Shinkansen, it is yet to happen. Third, is a consortium export, where training and know-how is exported together with equipment. It is this type of export that happened in the case of the export of the Shinkansen to Taiwan – the first successful export of the Shinkansen.
Possibilities to export the Shinkansen date back to the 1970s during JNR days, but nothing materialized (5). South Korea was the first country in East Asia after Japan to look to develop high speed railway. Various Japanese manufacturers teamed together to bid for the South Korean lines. However, the bid was not flexible – e.g. it did not accommodate the South Korean request to allow trains to run in two directions on the same track, or to use existing track so that the new line could be opened in stages. Other factors working against the Japan bid were anti-Japanese feelings in South Korea and the high yen. Japan lost to France's TGV.
Taiwan is the site of the world's largest BOT (Build-Operate-Transfer) project. The Taiwan High Speed Railway Corporation (THSRC) was chosen to run the project after 10 years of government planning. The Taiwan government remains responsible for certain areas (e.g. main line acquisition and handover, station access roads, underground area of Taipei station, project supervision). THSRC was to manage stations and train operations for 35 years, as well as oversee investment in surrounding areas of stations for 50 years. Whilst totally funded by private money, the government has underwritten the project. Despite this, funding remained a problem for THSRC (6).
The technical specifications called for a train length of 300meters and top speed of 300km/h, with each train capable of carrying 900 or more passengers.
Many anticipate that the new line will turn Taiwan into one large metropolis. Comparisons are often made between the line and the Tokaido Shinkansen linking Tokyo and Nagoya. The length is comparable (345km compared with 342km) and the number of stations similar (12 compared with 13 at present on the Tokaido Shinkansen (7).
The main competition for passengers between the two terminals in Taipei and Kaohsiung is the airlines. This airline route is the 11th busiest in the world, carrying approximately 3.5 million passengers a year (8). It is also worth noting that four of the top ten airline routes, including the top three, are Japanese domestic routes. However, Tokyo-Nagoya is not one of them. This is because, since the opening of the Shinkansen, airlines have completely withdrawn flights on this route except for a special service linking Tokyo's New International Airport at Narita and Nagoya. The future for the domestic airline industry in Taiwan is likely to be bleak if the high speed line even approaches the standards set by the Tokaido Shinkansen.
So why was the Shinkansen chosen in Taiwan? Japan has a strong positive image in Taiwan, although some claim that saying "I love Japan" is another way of saying "I don't love China". Japanese railways have a particularly positive image in Taiwan. Chiang Ping-kun, Chairman of the Council for Economic Planning and Development, suggested that the railway will be a symbol of Taiwan-Japan relations (9). Initially the European (Siemens of Germany & Alstrom of France) bid seemed to have won after a strong 'negative campaign' against the Shinkansen. In 1998 Europe was the 'preferred bidder' to provide train carriages, locomotives, signalling, electrification, communications and operational control systems. Yet there were problems with the bid such as inability to guarantee the desired level of capacity. There were also question marks as a result of the poor performance of the metro that had been constructed in Taipei by a French consortium. On top of this, the European high speed railway contained no associated offers relating to military purchases (which had been included as part of the metro decision) (10).
Taiwanese President Lee stated his preference for the Japanese bid. Lee, known as a Japanophile, had stressed the importance of relations between Taiwan and Japan in the 1996 Presidential Elections. However, in his book The Road to Democracy (1999), he stated that cost and safety should take precedence over political considerations. In 1999 THSRC announced that the project was being postponed due to lack of funds. This opened the door for the Shinkansen. Liu Tai-Ying, the chairman of the China Development Industrial Bank, which also has links with the KMT and was apparently being offered support from the Japan Export & Import Bank, announced that financial support would be given to THSRC if it used the Shinkansen (11). Two further incidents helped the Shinkansen bid. In 1998 a high-speed ICE train in Germany was involved in a major accident. This dented the image of the European bid in terms of safety. Then in 1999 a large earthquake struck Taiwan. Japan not only provided much assistance in the wake of the earthquake, but this also alerted people to the need for the high speed line to help cope with such natural disasters. In this respect the Shinkansen had a proven system in place, whereas, with few significant earthquakes in Europe, their system lacked such features. In the end Japan won the main contract. The European team took legal action and in 2004 THSRC was ordered to pay US$73m in compensation (12). But Japan retained the contract.
One of the key advisors to THSRC has been Shima Takashi, son of Shima Hideo. The Shima family has been centrally involved in each step of the Shinkansen's progress – from the initial concept, to its inception in Japan, to the first export. Both JR Central and JR West have been involved in providing training and know-how, whereas equipment has come from companies such as Mitsubishi Heavy Industries, Kawasaki Heavy Industries, Mitsui, Mitsubishi Corporation, Sumitomo Corporation and Marubeni Corporation. Equipment orders totalled about ¥600bn. The result has been the 700T-series Shinkansen, based on the 700-series but without the 'duck bill' design which many do not like. The sets have been made by different companies (Kawasaki Heavy Industries, Hitachi and Nippon Sharyo) as is done in Japan. The trains use a combination of orange, white and grey, colours that are associated with no political party in Taiwan or with any side in the independence debate.
However, the line has not been without problems. The opening was long delayed. When it did open in January 2007, a number of problems arose. A key point is that whilst the Shinkansen is a whole system, the THSR is only about 70% Shinkansen, with the remaining 30% being comprised of European and Taiwanese elements (13). Changes made include allowing trains to run both ways on each track (allowing maintenance work to be done on one line during the day), the use of automatic driving, and allowing the conductor to open/close doors of any carriage. Some alterations were apparently made to keep close to original specifications so as to avoid giving further ammunition to the European consortium's legal case. But there is a concern that some alterations could lead to problems. For this reason it is rare to find a Japanese spokesperson alluding to the 'Taiwan Shinkansen' today, referring instead to the 'Taiwan High Speed Railway'.
The plan for a High Speed Railway line in China dates back over two decades. There was a strong desire to have a Beijing-Shanghai line in place for the 2008 Olympics. Latest estimates are that it will be ready in 2010 at the earliest. After the completion of that line, there are plans for a network of about 10,000km. For many years there was debate about whether to use linear/maglev technology. It was used for the Shanghai Airport line, but it has not done that well. The accident in 2006 on Germany's maglev line raised further questions about the German system (as used in Shanghai) compared to using the Japanese system or standard railways.
From the start Japanese politicians have been involved in the attempt to export the Shinkansen to China. One of the key areas plaguing the Japanese bid has been friction about war memory in general and the Nanjing Massacre in particular. With the memory wars inflaming China-Japan relations, many Chinese have been adamant that no Japanese construction should take place in that city. Visits by Prime Minister Koizumi to Yasukuni Shrine were also widely seen to be poison both Sino-Japanese relations and the Shinkansen bid, even as China-Japan economic relations remained generally on course.
Suddenly, in September 2004, a small announcement declared that the Shinkansen bid had won, albeit a scaled down version of the original plan. This led to protests concerning the failure to hold a public hearing before the decision. But this time, the Chinese government shut down a website dedicated to the protests. Japan is to provide the train equipment – and a limited amount of that. The trains will be a modified version of JR East's E2-1000 series sets made up of 8 carriages. Just 3 sets are to be made by Kawasaki Heavy Industries, while 57 more sets are to be made in China by Nanche Sifang in Qingdao working with Kawasaki. The issue of Chinese production of the trains, that is transfer of the technology, is crucial to the Chinese calculus. The trains will be white and blue – similar to the Shinkansen used by JR Central on the Tokaido Shinkansen. So while one will be able to see Shinkansen-like trains in China, this is not the Shinkansen system, so again it would not be appropriate to use the word in connection with China's high speed line.
Kasai Yoshiyuki has said that 'Although the Tokaido Shinkansen may be the best system for Tokyo-Osaka, it does not mean it is the most appropriate for everywhere.' Although this statement refers more to technical considerations, the implications may extend to cultural and political spheres. Railways have always been highly symbolic. The way they operate reflects and impinges on the nature of a region, company or country. One cannot expect to import railway technology – particularly one like the Shinkansen where the human element is so important – without problems. Although the high speed railways in China and Taiwan have their origins in Japan – in both cases the systems constructed have local variations. While the Japanese contribution is important the lines should be seen not as Shinkansen but as autonomous systems created and shaped by priorities and parameters in each country.
This article was written for Japan Focus. Posted on March 1, 2007.
(1) Hoshikawa, T. (ed.) (2003) Shinkansen Zenshi, Tōkyō: Gakken, p.32-3; Oka, N. (1985) 'The Unhappy Birth of a Tunnel', Japan Quarterly, Vol. 32, No. 3, p.324-326.
(2) Hood, C.P., 2006, Shinkansen: From Bullet Train to Symbol of Modern Japan, London: Routledge, p.22-7.
(3) Hood, C.P., 2006, Shinkansen: From Bullet Train to Symbol of Modern Japan, London: Routledge, p.108-118.
(4) Hood, C.P., 2006, Shinkansen: From Bullet Train to Symbol of Modern Japan, London: Routledge, p.132-3.
(5) Nehashi, A. (2001) 'Shinkansen Technology for Export to Taiwan', http://www.jef.or.jp/en/jti/200103_010.html accessed on 15 January 2003.
(6) Hood, C.P., 2006, Shinkansen: From Bullet Train to Symbol of Modern Japan, London: Routledge, p.196-7.
(7) Hood, C.P., 2006, Shinkansen: From Bullet Train to Symbol of Modern Japan, London: Routledge, p.197.
(8) Japan Airlines (2004) 'World Top 11 City-Pairs', SORA Data File.
(9) Okada, T. (2001) 'Former President Lee's Support Decisive Factor behind Taiwan's Decision to Opt for Japan's Shinkansen in Island-Spanning Rail Project', http://www.jef.or.jp/en/jti/200103_011.html accessed on 15 January 2003.
(10) Hood, C.P., 2006, Shinkansen: From Bullet Train to Symbol of Modern Japan, London: Routledge, p.200.
(11) Okada, T. (2001) 'Former President Lee's Support Decisive Factor behind Taiwan's Decision to Opt for Japan's Shinkansen in Island-Spanning Rail Project', http://www.jef.or.jp/en/jti/200103_011.html accessed on 15 January 2003.
(12) Taipei Times, 17 March 2004.
(13) Hood, C.P., 2006, Shinkansen: From Bullet Train to Symbol of Modern Japan, London: Routledge, p.206.


Thank God for Google, well for dictionaries before the Web came along. Searching to make sure I was thinking of the right word or rather the right meaning to parlay, I found something I had always known. I don't know everything, in fact, no one can know everything except Our God. As it turns out I thinking of 'parlez' as in the French to speak. Now, parlay is a new word that I am going to add to my vocabulary. So it's about the mindset of gamblers putting their money or winnings into more bets. I suppose they were hoping that they would win again, I wonder how many did.
'There was such a sense of helplessness she was overwhelmed. The crowd surged forward with sticks and any weapon they could lay their hands on.' This is where Sonya got stuck, she had a writer's block. Everyone she told this to, couldn't believe it because they thought it was a strong beginning and there were so many routes to take this story.
However Sonya is the only one to decide that but having opened the door to other people's thoughts and ideas, well it doesn't hurt to get peer, fan and critical input. What do you think?


text:
Apple confirms iPhone 13 series does not support built-in noise cancellation
Samsung Galaxy S22 Ultra might offer a faster charging rate
iPad Pro 2022 to get MagSafe charging even without an all-glass back panel
Busan court sentences defendant to 8 months in prison for flying drones to spy on others
Walmart cryptocurrency and NFTs could be in the works
Google System Updates for January 2022 adds changes to the Google Password Manager
'WWE 2K22' covers to feature Rey Mysterio
'Elden Ring' leaked videos reveal more terrifying NPCs
Microsoft to acquire Activision Blizzard for almost $69 billion in an all-cash deal
Oppo Find X5 Pro leaked specs doubles down on company's Hasselblad partnership
'Halo Infinite' devs to lower prices in the Shop on January 18
Report: Mac Pro is powered by a chip with more cores than M1 Max
'Among Us' 2022 roadmap includes 'Hide'n'Seek' mode and 'collabs'
Microsoft quietly discontinued all Xbox One models in late 2020
Apple to reportedly launch an M2-powered MacBook Pro in late 2022
'Battlefield 2042' is finally getting the highly requested Scoreboard in February
Apple Watch Series 8: New rugged design could launch in 2022 with updated Apple Watch SE
Photo credit: Daniel Korpai / Unsplash
Monday, December 6, 2021 8:11 AM UTC
Apple Mac products in 2022 may include a new high-end iMac and the first Mac Pro with Apple silicon
Apple mixed reality headset could be announced in 2022, but its release date may be set several months later
iPhone 14 specs may include support for Wi-Fi 6E in 2022, along with Apple's mixed reality headset
iMac Pro 2022 leak: Apple to revive AIO with HDMI, ProMotion, M1 Max/Pro, and possible Face ID support
MacBook Air 2022 specs leak: Apple could use new M2 chip and remove 'Air' from the official name
There may be three distinct models of Apple Watch launching in 2022. Aside from the standard Apple Watch Series 8, the company is reportedly planning to refresh the Apple Watch SE and introduce an all-new smartwatch with a rugged design.
Durability is one of the main concerns among people considering purchasing an Apple wearable device. While the company's latest Apple Watch is advertised as the line's "most durable" ever, Apple appears to be planning on introducing a new watch model specifically designed to endure extreme conditions.
But Bloomberg's Mark Gurman suggested in the latest edition of Power On newsletter that Apple is now more likely to move forward with releasing a rugged device as part of the Apple Watch Series 8. Technical specifications of the reported rugged model are still unknown. But when a device is categorized as rugged, it is normally designed to withstand more serious falls and extreme temperatures. Rugged devices are also usually marketed as more resistant to dust, water, and scratches than regular gadgets can endure.
The same report noted that the rugged Apple Watch Series 8 would be primarily marketed towards sports athletes. But if the upcoming device lives up to the rugged categorization, it could also be an appealing purchase for avid hikers and others who are often exposed to harsher environments.
The report corresponds with an earlier Bloomberg story, released in March, that revealed Apple has been working on a rugged Apple Watch often internally referred to as the "Explorer Edition." At the time, the report suggested the possibility of the rugged Apple Watch launching this year or in 2022. And Gurman's mention of the new Apple Watch design in Power On suggests the company may be closer to unveiling the rugged device, along with the launch of the Apple Watch Series 8.
Apple is also expected to introduce a new version of the Apple Watch SE next year, but it is unclear yet how it would improve upon the wearable device launched in 2020. While the first "SE" watch supports some health functions like heart rate alerts and irregular heart rhythm notifications, it does not have the more advanced features like blood oxygen monitoring and the ECG app.
Photo by Daniel Korpai on Unsplash


(Deming) – The Luna County Commissioners are expected to proclaim October as "Dignity and Respect" Month during their regular monthly meeting Thursday.
County Manager Kelly Kuenstler said the declaration is part of a national effort, and that she and the county's elected officials have appointed a team to promote the campaign this month.
The campaign material states that, "Inclusion begins with a core belief that everyone deserves dignity and respect" and says that dignity and respect are crucial to building and sustaining an environment in which everyone feels included, valued and appreciated.
Information on the campaign can be found at www.dignityandrespect.org.


text:
Home - World Maritime Day: 150+ Wishes, Quotes, Messages, Captions, Greetings, Images
World Maritime Day: 150+ Wishes, Quotes, Messages, Captions, Greetings, Images
World Maritime Day is celebrated worldwide every year, usually in the last week of September. This day came into recognition in 1978 as the International Maritime Organization (IMO) started to observe it to show the whole world the importance of shipping and its importance to the world's economy.
Grand National Messages
-World Maritime day is a day to explore the world beyond the seas and oceans and recognize the importance of shipping.
-Shipping with safety is the prime motto of World Maritime Day; the safety of the goods and services is the prime concern of shipping companies.
-A day to know the marine life, life beyond the seas, and the livelihoods maintained by shipping and maritime industries.
-The World Maritime Day aims at the knowledge of Marine safety among people and its security and protection.
-World Maritime Day is an opportunity for the people to know the maritime industry's values to the current world scenario and celebrate the achievements of marine life and shipping.
-The marine industry has contributed a lot to trade and communication among countries and brought the world closer.
-Celebrate the World Maritime Day to get information about many developments brought by the maritime industry.
-Maritime Industry has long been known in history for bridging the gap between continents, countries, cities, and towns, bringing people from all around closer to each other and leading the path for development.
-Not only in world trade but also in the marine industry has significantly contributed to shaping world history, changing the lives of people forever.
-On the eve of World Maritime day, it is essential for all the people and the younger generation to know the significance of marine life, marine industry, and its impact in today's world.
-The World Maritime day is an event of Global observance, and it should be celebrated with all the people by sharing knowledge about maritime safety, maritime importance, and it's impacted in the lives of people and generation.
-Celebrate the World Maritime day with young people and adults, know the significance of maritime security and visit a museum of Maritime history, helping all the people know about the bright minds behind this remarkable invention.
-The Marine industry has brought remarkable changes in its methods and developments, making transport of goods and services safer and more comfortable.
-Celebrate the massive success of safer and more comfortable travel and communication of goods across seas and celebrate World Maritime Day.
-Over time, many international companies have set up business in maritime industries, bringing in new safety and better shipping measures.
-World Maritime Day celebrates such better dimensions brought by International Trading companies.
-The general public should happily celebrate World Maritime Day in public events concerning maritime safety and precautions, sharing knowledge about the naval industry.
-Thank you to all the hard-working employees in maritime industries on the eve of World Maritime Day for your valuable contribution to the world economy and development.
World Maritime Day quotes
-"Some people spend an entire lifetime wondering if they made a difference in the world. But, the Marines don't have that problem."


Our speciality is the poetry show: we work with poets, directors and designers to create subtly theatricalised poetry performances which tour to theatres and arts centres. Our shows have played dozens of dates to thousands of people. We have poetry skills and pyrotechnic skills, and deploy them both in the service of the word!
We also work on literature exhibition projects, collaborating with writers and visual artists.
Jaybird Live Literature's tours and ongoing organisational development have been generously supported by Arts Council England.
We are committed to developing opportunities for up-and-coming arts producers and administrators, so each of our tours has its own trainee programme. If you are interested one of our traineeships, keep in touch via our newsletter, Twitter and Facebook and watch out for the invitation to apply.
Phoebe directs Jaybird Live Literature's poetry shows, moving the poets gracefully through time and space. She was born in 1979 and grew up in Gloucestershire, going on to train as an actor/director at Cygnet Training Theatre in Devon. Her directing credits include Hobson's Choice (Assistant Director), The Knicker Lady (Co-Director) and several one act plays including Two Women and a Chair and Birds in Church. Performances include Rosie in Snailly (a new play written by two Devon poets) and Clara in Not Anymore. She has also worked in the design department for BBC costume dramas.
Apart from our acoustic show I Gaze From My Kitchen Like An Astronaut, John has designed the lighting for all our shows through his company John Castle Sound & Lighting. He trained us all to operate the pyrotechnics in What Are They Whispering? - we still think we've never seen another show that combines poetry and fireworks before.
Jaybird Live Literature collaborates on projects with other organisations and individuals, and occasionally manages projects for other organisations - please get in contact if you've got an idea to discuss.
A dance graduate, Beatrix worked with us on Clare Pollard's Ovid's Heroines show.
Tamar graduated in theatre from Sheffield University and was the trainee associated with The Retold Ramayana. She also directed the Beginning to See the Light live show for us.
Harry was one of the director trainees on I Gaze From My Kitchen Like An Astronaut and went on to work for the Almeida Theatre.
Collette was also a director trainee on I Gaze From My Kitchen Like An Astronaut and went on to work for the RSC.


text:
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.

#nullable disable

using System.Linq;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Operations;
using Microsoft.CodeAnalysis.Test.Utilities;
using Xunit;

namespace Microsoft.CodeAnalysis.CSharp.UnitTests
{
    [CompilerTrait(CompilerFeature.IOperation)]
    public class IOperationTests_ITupleBinaryOperatorExpression : SemanticModelTestBase
    {
        [Fact]
        public void VerifyTupleEqualityBinaryOperator()
        {
            var source = @"
class C
{
    bool F((int, int) x, (int, int) y)
    {
        return /*<bind>*/x == y/*</bind>*/;
    }
}";

            string expectedOperationTree =
@"
ITupleBinaryOperation (BinaryOperatorKind.Equals) (OperationKind.TupleBinary, Type: System.Boolean) (Syntax: 'x == y')
  Left:
    IParameterReferenceOperation: x (OperationKind.ParameterReference, Type: (System.Int32, System.Int32)) (Syntax: 'x')
  Right:
    IParameterReferenceOperation: y (OperationKind.ParameterReference, Type: (System.Int32, System.Int32)) (Syntax: 'y')
";

            VerifyOperationTreeForTest<BinaryExpressionSyntax>(source, expectedOperationTree);
        }

        [Fact]
        public void VerifyTupleEqualityBinaryOperator_WithTupleLiteral()
        {
            var source = @"
class C
{
    bool F((int, int) x)
    {
        return /*<bind>*/x == (1, 2)/*</bind>*/;
    }
}";

            string expectedOperationTree =
@"
ITupleBinaryOperation (BinaryOperatorKind.Equals) (OperationKind.TupleBinary, Type: System.Boolean) (Syntax: 'x == (1, 2)')
  Left:
    IParameterReferenceOperation: x (OperationKind.ParameterReference, Type: (System.Int32, System.Int32)) (Syntax: 'x')
  Right:
    ITupleOperation (OperationKind.Tuple, Type: (System.Int32, System.Int32)) (Syntax: '(1, 2)')
      NaturalType: (System.Int32, System.Int32)
      Elements(2):
          ILiteralOperation (OperationKind.Literal, Type: System.Int32, Constant: 1) (Syntax: '1')
          ILiteralOperation (OperationKind.Literal, Type: System.Int32, Constant: 2) (Syntax: '2')
";

            VerifyOperationTreeForTest<BinaryExpressionSyntax>(source, expectedOperationTree);
        }

        [Fact]
        public void VerifyTupleEqualityBinaryOperator_WithNotEquals()
        {
            var source = @"
class C
{
    bool F((long, byte) y)
    {
        return /*<bind>*/(1, 2) != y/*</bind>*/;
    }
}";

            string expectedOperationTree =
@"
ITupleBinaryOperation (BinaryOperatorKind.NotEquals) (OperationKind.TupleBinary, Type: System.Boolean) (Syntax: '(1, 2) != y')
  Left:
    ITupleOperation (OperationKind.Tuple, Type: (System.Int64, System.Int32)) (Syntax: '(1, 2)')
      NaturalType: (System.Int32, System.Int32)
      Elements(2):
          IConversionOperation (TryCast: False, Unchecked) (OperationKind.Conversion, Type: System.Int64, Constant: 1, IsImplicit) (Syntax: '1')
            Conversion: CommonConversion (Exists: True, IsIdentity: False, IsNumeric: True, IsReference: False, IsUserDefined: False) (MethodSymbol: null)
            Operand:
              ILiteralOperation (OperationKind.Literal, Type: System.Int32, Constant: 1) (Syntax: '1')
          ILiteralOperation (OperationKind.Literal, Type: System.Int32, Constant: 2) (Syntax: '2')
  Right:
    IConversionOperation (TryCast: False, Unchecked) (OperationKind.Conversion, Type: (System.Int64, System.Int32), IsImplicit) (Syntax: 'y')
      Conversion: CommonConversion (Exists: True, IsIdentity: False, IsNumeric: False, IsReference: False, IsUserDefined: False) (MethodSymbol: null)
      Operand:
        IParameterReferenceOperation: y (OperationKind.ParameterReference, Type: (System.Int64, System.Byte)) (Syntax: 'y')
";

            VerifyOperationTreeForTest<BinaryExpressionSyntax>(source, expectedOperationTree);
        }

        [Fact]
        public void VerifyTupleEqualityBinaryOperator_WithNullsAndConversions()
        {
            var source = @"
class C
{
    bool F()
    {
        return /*<bind>*/(null, (1, 2L)) == (null, (3L, 4))/*</bind>*/;
    }
}";

            string expectedOperationTree =
@"
ITupleBinaryOperation (BinaryOperatorKind.Equals) (OperationKind.TupleBinary, Type: System.Boolean) (Syntax: '(null, (1,  ... l, (3L, 4))')
  Left:
    ITupleOperation (OperationKind.Tuple, Type: null) (Syntax: '(null, (1, 2L))')
      NaturalType: null
      Elements(2):
          ILiteralOperation (OperationKind.Literal, Type: null, Constant: null) (Syntax: 'null')
          ITupleOperation (OperationKind.Tuple, Type: (System.Int64, System.Int64)) (Syntax: '(1, 2L)')
            NaturalType: (System.Int32, System.Int64)
            Elements(2):
                IConversionOperation (TryCast: False, Unchecked) (OperationKind.Conversion, Type: System.Int64, Constant: 1, IsImplicit) (Syntax: '1')
                  Conversion: CommonConversion (Exists: True, IsIdentity: False, IsNumeric: True, IsReference: False, IsUserDefined: False) (MethodSymbol: null)
                  Operand:
                    ILiteralOperation (OperationKind.Literal, Type: System.Int32, Constant: 1) (Syntax: '1')
                ILiteralOperation (OperationKind.Literal, Type: System.Int64, Constant: 2) (Syntax: '2L')
  Right:
    ITupleOperation (OperationKind.Tuple, Type: null) (Syntax: '(null, (3L, 4))')
      NaturalType: null
      Elements(2):
          ILiteralOperation (OperationKind.Literal, Type: null, Constant: null) (Syntax: 'null')
          ITupleOperation (OperationKind.Tuple, Type: (System.Int64, System.Int64)) (Syntax: '(3L, 4)')
            NaturalType: (System.Int64, System.Int32)
            Elements(2):
                ILiteralOperation (OperationKind.Literal, Type: System.Int64, Constant: 3) (Syntax: '3L')
                IConversionOperation (TryCast: False, Unchecked) (OperationKind.Conversion, Type: System.Int64, Constant: 4, IsImplicit) (Syntax: '4')
                  Conversion: CommonConversion (Exists: True, IsIdentity: False, IsNumeric: True, IsReference: False, IsUserDefined: False) (MethodSymbol: null)
                  Operand:
                    ILiteralOperation (OperationKind.Literal, Type: System.Int32, Constant: 4) (Syntax: '4')
";

            VerifyOperationTreeForTest<BinaryExpressionSyntax>(source, expectedOperationTree);
        }

        [Fact]
        public void VerifyTupleEqualityBinaryOperator_WithDefault()
        {
            var source = @"
class C
{
    bool F((int, string) y)
    {
        return /*<bind>*/y == default/*</bind>*/;
    }
}";

            string expectedOperationTree =
@"
ITupleBinaryOperation (BinaryOperatorKind.Equals) (OperationKind.TupleBinary, Type: System.Boolean) (Syntax: 'y == default')
  Left:
    IParameterReferenceOperation: y (OperationKind.ParameterReference, Type: (System.Int32, System.String)) (Syntax: 'y')
  Right:
    IConversionOperation (TryCast: False, Unchecked) (OperationKind.Conversion, Type: (System.Int32, System.String), IsImplicit) (Syntax: 'default')
      Conversion: CommonConversion (Exists: True, IsIdentity: False, IsNumeric: False, IsReference: False, IsUserDefined: False) (MethodSymbol: null)
      Operand:
        IDefaultValueOperation (OperationKind.DefaultValue, Type: (System.Int32, System.String)) (Syntax: 'default')
";

            VerifyOperationTreeForTest<BinaryExpressionSyntax>(source, expectedOperationTree);
        }

        [Fact]
        public void VerifyTupleEqualityBinaryOperator_VerifyChildren()
        {
            string source = @"
class C
{
    void M1((int, int) t1, long l)
    {
        _ = /*<bind>*/t1 == (l, l)/*</bind>*/;
    }
}
";
            string expectedOperationTree =
@"
ITupleBinaryOperation (BinaryOperatorKind.Equals) (OperationKind.TupleBinary, Type: System.Boolean) (Syntax: 't1 == (l, l)')
    Left:
    IConversionOperation (TryCast: False, Unchecked) (OperationKind.Conversion, Type: (System.Int64, System.Int64), IsImplicit) (Syntax: 't1')
        Conversion: CommonConversion (Exists: True, IsIdentity: False, IsNumeric: False, IsReference: False, IsUserDefined: False) (MethodSymbol: null)
        Operand:
        IParameterReferenceOperation: t1 (OperationKind.ParameterReference, Type: (System.Int32, System.Int32)) (Syntax: 't1')
    Right:
    ITupleOperation (OperationKind.Tuple, Type: (System.Int64, System.Int64)) (Syntax: '(l, l)')
        NaturalType: (System.Int64, System.Int64)
        Elements(2):
            IParameterReferenceOperation: l (OperationKind.ParameterReference, Type: System.Int64) (Syntax: 'l')
            IParameterReferenceOperation: l (OperationKind.ParameterReference, Type: System.Int64) (Syntax: 'l')
";
            VerifyOperationTreeForTest<BinaryExpressionSyntax>(source, expectedOperationTree);
        }

        [Fact, CompilerTrait(CompilerFeature.IOperation, CompilerFeature.Dataflow)]
        public void TupleBinaryOperator_NoControlFlow()
        {
            var source = @"
class C
{
    void F((int, int) x, (int, int) y, bool b)
    /*<bind>*/
    {
        b = x == y;
    }/*</bind>*/
}";

            string expectedFlowGraph = @"
Block[B0] - Entry
    Statements (0)
    Next (Regular) Block[B1]
Block[B1] - Block
    Predecessors: [B0]
    Statements (1)
        IExpressionStatementOperation (OperationKind.ExpressionStatement, Type: null) (Syntax: 'b = x == y;')
          Expression:
            ISimpleAssignmentOperation (OperationKind.SimpleAssignment, Type: System.Boolean) (Syntax: 'b = x == y')
              Left:
                IParameterReferenceOperation: b (OperationKind.ParameterReference, Type: System.Boolean) (Syntax: 'b')
              Right:
                ITupleBinaryOperation (BinaryOperatorKind.Equals) (OperationKind.TupleBinary, Type: System.Boolean) (Syntax: 'x == y')
                  Left:
                    IParameterReferenceOperation: x (OperationKind.ParameterReference, Type: (System.Int32, System.Int32)) (Syntax: 'x')
                  Right:
                    IParameterReferenceOperation: y (OperationKind.ParameterReference, Type: (System.Int32, System.Int32)) (Syntax: 'y')

    Next (Regular) Block[B2]
Block[B2] - Exit
    Predecessors: [B1]
    Statements (0)
";

            var expectedDiagnostics = DiagnosticDescription.None;

            VerifyFlowGraphAndDiagnosticsForTest<BlockSyntax>(source, expectedFlowGraph, expectedDiagnostics);
        }

        [Fact, CompilerTrait(CompilerFeature.IOperation, CompilerFeature.Dataflow)]
        public void TupleBinaryOperator_ControlFlowInLeftOperand()
        {
            var source = @"
class C
{
    void F((int, int)? x1, (int, int) x2, (int, int) y, bool b)
    /*<bind>*/
    {
        b = (x1 ?? x2) == y;
    }/*</bind>*/
}";

            string expectedFlowGraph = @"
Block[B0] - Entry
    Statements (0)
    Next (Regular) Block[B1]
        Entering: {R1}

.locals {R1}
{
    CaptureIds: [0] [2]
    Block[B1] - Block
        Predecessors: [B0]
        Statements (1)
            IFlowCaptureOperation: 0 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'b')
              Value:
                IParameterReferenceOperation: b (OperationKind.ParameterReference, Type: System.Boolean) (Syntax: 'b')

        Next (Regular) Block[B2]
            Entering: {R2}

    .locals {R2}
    {
        CaptureIds: [1]
        Block[B2] - Block
            Predecessors: [B1]
            Statements (1)
                IFlowCaptureOperation: 1 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'x1')
                  Value:
                    IParameterReferenceOperation: x1 (OperationKind.ParameterReference, Type: (System.Int32, System.Int32)?) (Syntax: 'x1')

            Jump if True (Regular) to Block[B4]
                IIsNullOperation (OperationKind.IsNull, Type: System.Boolean, IsImplicit) (Syntax: 'x1')
                  Operand:
                    IFlowCaptureReferenceOperation: 1 (OperationKind.FlowCaptureReference, Type: (System.Int32, System.Int32)?, IsImplicit) (Syntax: 'x1')
                Leaving: {R2}

            Next (Regular) Block[B3]
        Block[B3] - Block
            Predecessors: [B2]
            Statements (1)
                IFlowCaptureOperation: 2 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'x1')
                  Value:
                    IInvocationOperation ( (System.Int32, System.Int32) (System.Int32, System.Int32)?.GetValueOrDefault()) (OperationKind.Invocation, Type: (System.Int32, System.Int32), IsImplicit) (Syntax: 'x1')
                      Instance Receiver:
                        IFlowCaptureReferenceOperation: 1 (OperationKind.FlowCaptureReference, Type: (System.Int32, System.Int32)?, IsImplicit) (Syntax: 'x1')
                      Arguments(0)

            Next (Regular) Block[B5]
                Leaving: {R2}
    }

    Block[B4] - Block
        Predecessors: [B2]
        Statements (1)
            IFlowCaptureOperation: 2 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'x2')
              Value:
                IParameterReferenceOperation: x2 (OperationKind.ParameterReference, Type: (System.Int32, System.Int32)) (Syntax: 'x2')

        Next (Regular) Block[B5]
    Block[B5] - Block
        Predecessors: [B3] [B4]
        Statements (1)
            IExpressionStatementOperation (OperationKind.ExpressionStatement, Type: null) (Syntax: 'b = (x1 ?? x2) == y;')
              Expression:
                ISimpleAssignmentOperation (OperationKind.SimpleAssignment, Type: System.Boolean) (Syntax: 'b = (x1 ?? x2) == y')
                  Left:
                    IFlowCaptureReferenceOperation: 0 (OperationKind.FlowCaptureReference, Type: System.Boolean, IsImplicit) (Syntax: 'b')
                  Right:
                    ITupleBinaryOperation (BinaryOperatorKind.Equals) (OperationKind.TupleBinary, Type: System.Boolean) (Syntax: '(x1 ?? x2) == y')
                      Left:
                        IFlowCaptureReferenceOperation: 2 (OperationKind.FlowCaptureReference, Type: (System.Int32, System.Int32), IsImplicit) (Syntax: 'x1 ?? x2')
                      Right:
                        IParameterReferenceOperation: y (OperationKind.ParameterReference, Type: (System.Int32, System.Int32)) (Syntax: 'y')

        Next (Regular) Block[B6]
            Leaving: {R1}
}

Block[B6] - Exit
    Predecessors: [B5]
    Statements (0)
";

            var expectedDiagnostics = DiagnosticDescription.None;

            VerifyFlowGraphAndDiagnosticsForTest<BlockSyntax>(source, expectedFlowGraph, expectedDiagnostics);
        }

        [Fact, CompilerTrait(CompilerFeature.IOperation, CompilerFeature.Dataflow)]
        public void TupleBinaryOperator_ControlFlowInRightOperand()
        {
            var source = @"
class C
{
    void F((int, int)? x1, (int, int) x2, (int, int) y, bool b)
    /*<bind>*/
    {
        b = y == (x1 ?? x2);
    }/*</bind>*/
}";

            string expectedFlowGraph = @"
Block[B0] - Entry
    Statements (0)
    Next (Regular) Block[B1]
        Entering: {R1}

.locals {R1}
{
    CaptureIds: [0] [1] [3]
    Block[B1] - Block
        Predecessors: [B0]
        Statements (2)
            IFlowCaptureOperation: 0 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'b')
              Value:
                IParameterReferenceOperation: b (OperationKind.ParameterReference, Type: System.Boolean) (Syntax: 'b')

            IFlowCaptureOperation: 1 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'y')
              Value:
                IParameterReferenceOperation: y (OperationKind.ParameterReference, Type: (System.Int32, System.Int32)) (Syntax: 'y')

        Next (Regular) Block[B2]
            Entering: {R2}

    .locals {R2}
    {
        CaptureIds: [2]
        Block[B2] - Block
            Predecessors: [B1]
            Statements (1)
                IFlowCaptureOperation: 2 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'x1')
                  Value:
                    IParameterReferenceOperation: x1 (OperationKind.ParameterReference, Type: (System.Int32, System.Int32)?) (Syntax: 'x1')

            Jump if True (Regular) to Block[B4]
                IIsNullOperation (OperationKind.IsNull, Type: System.Boolean, IsImplicit) (Syntax: 'x1')
                  Operand:
                    IFlowCaptureReferenceOperation: 2 (OperationKind.FlowCaptureReference, Type: (System.Int32, System.Int32)?, IsImplicit) (Syntax: 'x1')
                Leaving: {R2}

            Next (Regular) Block[B3]
        Block[B3] - Block
            Predecessors: [B2]
            Statements (1)
                IFlowCaptureOperation: 3 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'x1')
                  Value:
                    IInvocationOperation ( (System.Int32, System.Int32) (System.Int32, System.Int32)?.GetValueOrDefault()) (OperationKind.Invocation, Type: (System.Int32, System.Int32), IsImplicit) (Syntax: 'x1')
                      Instance Receiver:
                        IFlowCaptureReferenceOperation: 2 (OperationKind.FlowCaptureReference, Type: (System.Int32, System.Int32)?, IsImplicit) (Syntax: 'x1')
                      Arguments(0)

            Next (Regular) Block[B5]
                Leaving: {R2}
    }

    Block[B4] - Block
        Predecessors: [B2]
        Statements (1)
            IFlowCaptureOperation: 3 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'x2')
              Value:
                IParameterReferenceOperation: x2 (OperationKind.ParameterReference, Type: (System.Int32, System.Int32)) (Syntax: 'x2')

        Next (Regular) Block[B5]
    Block[B5] - Block
        Predecessors: [B3] [B4]
        Statements (1)
            IExpressionStatementOperation (OperationKind.ExpressionStatement, Type: null) (Syntax: 'b = y == (x1 ?? x2);')
              Expression:
                ISimpleAssignmentOperation (OperationKind.SimpleAssignment, Type: System.Boolean) (Syntax: 'b = y == (x1 ?? x2)')
                  Left:
                    IFlowCaptureReferenceOperation: 0 (OperationKind.FlowCaptureReference, Type: System.Boolean, IsImplicit) (Syntax: 'b')
                  Right:
                    ITupleBinaryOperation (BinaryOperatorKind.Equals) (OperationKind.TupleBinary, Type: System.Boolean) (Syntax: 'y == (x1 ?? x2)')
                      Left:
                        IFlowCaptureReferenceOperation: 1 (OperationKind.FlowCaptureReference, Type: (System.Int32, System.Int32), IsImplicit) (Syntax: 'y')
                      Right:
                        IFlowCaptureReferenceOperation: 3 (OperationKind.FlowCaptureReference, Type: (System.Int32, System.Int32), IsImplicit) (Syntax: 'x1 ?? x2')

        Next (Regular) Block[B6]
            Leaving: {R1}
}

Block[B6] - Exit
    Predecessors: [B5]
    Statements (0)
";

            var expectedDiagnostics = DiagnosticDescription.None;

            VerifyFlowGraphAndDiagnosticsForTest<BlockSyntax>(source, expectedFlowGraph, expectedDiagnostics);
        }

        [Fact, CompilerTrait(CompilerFeature.IOperation, CompilerFeature.Dataflow)]
        public void TupleBinaryOperator_ControlFlowInBothOperands()
        {
            var source = @"
class C
{
    void F((int, int)? x1, (int, int) x2, (int, int)? y1, (int, int) y2, bool b)
    /*<bind>*/
    {
        b = (x1 ?? x2) == (y1 ?? y2);
    }/*</bind>*/
}";

            string expectedFlowGraph = @"
Block[B0] - Entry
    Statements (0)
    Next (Regular) Block[B1]
        Entering: {R1}

.locals {R1}
{
    CaptureIds: [0] [2] [4]
    Block[B1] - Block
        Predecessors: [B0]
        Statements (1)
            IFlowCaptureOperation: 0 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'b')
              Value:
                IParameterReferenceOperation: b (OperationKind.ParameterReference, Type: System.Boolean) (Syntax: 'b')

        Next (Regular) Block[B2]
            Entering: {R2}

    .locals {R2}
    {
        CaptureIds: [1]
        Block[B2] - Block
            Predecessors: [B1]
            Statements (1)
                IFlowCaptureOperation: 1 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'x1')
                  Value:
                    IParameterReferenceOperation: x1 (OperationKind.ParameterReference, Type: (System.Int32, System.Int32)?) (Syntax: 'x1')

            Jump if True (Regular) to Block[B4]
                IIsNullOperation (OperationKind.IsNull, Type: System.Boolean, IsImplicit) (Syntax: 'x1')
                  Operand:
                    IFlowCaptureReferenceOperation: 1 (OperationKind.FlowCaptureReference, Type: (System.Int32, System.Int32)?, IsImplicit) (Syntax: 'x1')
                Leaving: {R2}

            Next (Regular) Block[B3]
        Block[B3] - Block
            Predecessors: [B2]
            Statements (1)
                IFlowCaptureOperation: 2 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'x1')
                  Value:
                    IInvocationOperation ( (System.Int32, System.Int32) (System.Int32, System.Int32)?.GetValueOrDefault()) (OperationKind.Invocation, Type: (System.Int32, System.Int32), IsImplicit) (Syntax: 'x1')
                      Instance Receiver:
                        IFlowCaptureReferenceOperation: 1 (OperationKind.FlowCaptureReference, Type: (System.Int32, System.Int32)?, IsImplicit) (Syntax: 'x1')
                      Arguments(0)

            Next (Regular) Block[B5]
                Leaving: {R2}
                Entering: {R3}
    }

    Block[B4] - Block
        Predecessors: [B2]
        Statements (1)
            IFlowCaptureOperation: 2 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'x2')
              Value:
                IParameterReferenceOperation: x2 (OperationKind.ParameterReference, Type: (System.Int32, System.Int32)) (Syntax: 'x2')

        Next (Regular) Block[B5]
            Entering: {R3}

    .locals {R3}
    {
        CaptureIds: [3]
        Block[B5] - Block
            Predecessors: [B3] [B4]
            Statements (1)
                IFlowCaptureOperation: 3 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'y1')
                  Value:
                    IParameterReferenceOperation: y1 (OperationKind.ParameterReference, Type: (System.Int32, System.Int32)?) (Syntax: 'y1')

            Jump if True (Regular) to Block[B7]
                IIsNullOperation (OperationKind.IsNull, Type: System.Boolean, IsImplicit) (Syntax: 'y1')
                  Operand:
                    IFlowCaptureReferenceOperation: 3 (OperationKind.FlowCaptureReference, Type: (System.Int32, System.Int32)?, IsImplicit) (Syntax: 'y1')
                Leaving: {R3}

            Next (Regular) Block[B6]
        Block[B6] - Block
            Predecessors: [B5]
            Statements (1)
                IFlowCaptureOperation: 4 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'y1')
                  Value:
                    IInvocationOperation ( (System.Int32, System.Int32) (System.Int32, System.Int32)?.GetValueOrDefault()) (OperationKind.Invocation, Type: (System.Int32, System.Int32), IsImplicit) (Syntax: 'y1')
                      Instance Receiver:
                        IFlowCaptureReferenceOperation: 3 (OperationKind.FlowCaptureReference, Type: (System.Int32, System.Int32)?, IsImplicit) (Syntax: 'y1')
                      Arguments(0)

            Next (Regular) Block[B8]
                Leaving: {R3}
    }

    Block[B7] - Block
        Predecessors: [B5]
        Statements (1)
            IFlowCaptureOperation: 4 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'y2')
              Value:
                IParameterReferenceOperation: y2 (OperationKind.ParameterReference, Type: (System.Int32, System.Int32)) (Syntax: 'y2')

        Next (Regular) Block[B8]
    Block[B8] - Block
        Predecessors: [B6] [B7]
        Statements (1)
            IExpressionStatementOperation (OperationKind.ExpressionStatement, Type: null) (Syntax: 'b = (x1 ??  ... (y1 ?? y2);')
              Expression:
                ISimpleAssignmentOperation (OperationKind.SimpleAssignment, Type: System.Boolean) (Syntax: 'b = (x1 ??  ...  (y1 ?? y2)')
                  Left:
                    IFlowCaptureReferenceOperation: 0 (OperationKind.FlowCaptureReference, Type: System.Boolean, IsImplicit) (Syntax: 'b')
                  Right:
                    ITupleBinaryOperation (BinaryOperatorKind.Equals) (OperationKind.TupleBinary, Type: System.Boolean) (Syntax: '(x1 ?? x2) == (y1 ?? y2)')
                      Left:
                        IFlowCaptureReferenceOperation: 2 (OperationKind.FlowCaptureReference, Type: (System.Int32, System.Int32), IsImplicit) (Syntax: 'x1 ?? x2')
                      Right:
                        IFlowCaptureReferenceOperation: 4 (OperationKind.FlowCaptureReference, Type: (System.Int32, System.Int32), IsImplicit) (Syntax: 'y1 ?? y2')

        Next (Regular) Block[B9]
            Leaving: {R1}
}

Block[B9] - Exit
    Predecessors: [B8]
    Statements (0)
";

            var expectedDiagnostics = DiagnosticDescription.None;

            VerifyFlowGraphAndDiagnosticsForTest<BlockSyntax>(source, expectedFlowGraph, expectedDiagnostics);
        }

        [Fact, CompilerTrait(CompilerFeature.IOperation, CompilerFeature.Dataflow)]
        public void TupleBinaryOperator_TupleExpressions_NoControlFlow()
        {
            var source = @"
class C
{
    void F(int i1, int i2, int i3, int i4, bool b)
    /*<bind>*/
    {
        b = (i1, i2) == (i3, i4);
    }/*</bind>*/
}";

            string expectedFlowGraph = @"
Block[B0] - Entry
    Statements (0)
    Next (Regular) Block[B1]
Block[B1] - Block
    Predecessors: [B0]
    Statements (1)
        IExpressionStatementOperation (OperationKind.ExpressionStatement, Type: null) (Syntax: 'b = (i1, i2 ... = (i3, i4);')
          Expression:
            ISimpleAssignmentOperation (OperationKind.SimpleAssignment, Type: System.Boolean) (Syntax: 'b = (i1, i2) == (i3, i4)')
              Left:
                IParameterReferenceOperation: b (OperationKind.ParameterReference, Type: System.Boolean) (Syntax: 'b')
              Right:
                ITupleBinaryOperation (BinaryOperatorKind.Equals) (OperationKind.TupleBinary, Type: System.Boolean) (Syntax: '(i1, i2) == (i3, i4)')
                  Left:
                    ITupleOperation (OperationKind.Tuple, Type: (System.Int32 i1, System.Int32 i2)) (Syntax: '(i1, i2)')
                      NaturalType: (System.Int32 i1, System.Int32 i2)
                      Elements(2):
                          IParameterReferenceOperation: i1 (OperationKind.ParameterReference, Type: System.Int32) (Syntax: 'i1')
                          IParameterReferenceOperation: i2 (OperationKind.ParameterReference, Type: System.Int32) (Syntax: 'i2')
                  Right:
                    ITupleOperation (OperationKind.Tuple, Type: (System.Int32 i3, System.Int32 i4)) (Syntax: '(i3, i4)')
                      NaturalType: (System.Int32 i3, System.Int32 i4)
                      Elements(2):
                          IParameterReferenceOperation: i3 (OperationKind.ParameterReference, Type: System.Int32) (Syntax: 'i3')
                          IParameterReferenceOperation: i4 (OperationKind.ParameterReference, Type: System.Int32) (Syntax: 'i4')

    Next (Regular) Block[B2]
Block[B2] - Exit
    Predecessors: [B1]
    Statements (0)
";

            var expectedDiagnostics = DiagnosticDescription.None;

            VerifyFlowGraphAndDiagnosticsForTest<BlockSyntax>(source, expectedFlowGraph, expectedDiagnostics);
        }

        [Fact, CompilerTrait(CompilerFeature.IOperation, CompilerFeature.Dataflow)]
        public void TupleBinaryOperator_TupleExpressions_ControlFlowInLeftOperand()
        {
            var source = @"
class C
{
    void F(int i1, int? i2, int i3, int i4, int i5, bool b)
    /*<bind>*/
    {
        b = (i1, i2 ?? i5) == (i3, i4);
    }/*</bind>*/
}";

            string expectedFlowGraph = @"
Block[B0] - Entry
    Statements (0)
    Next (Regular) Block[B1]
        Entering: {R1}

.locals {R1}
{
    CaptureIds: [0] [1] [3]
    Block[B1] - Block
        Predecessors: [B0]
        Statements (2)
            IFlowCaptureOperation: 0 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'b')
              Value:
                IParameterReferenceOperation: b (OperationKind.ParameterReference, Type: System.Boolean) (Syntax: 'b')

            IFlowCaptureOperation: 1 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'i1')
              Value:
                IParameterReferenceOperation: i1 (OperationKind.ParameterReference, Type: System.Int32) (Syntax: 'i1')

        Next (Regular) Block[B2]
            Entering: {R2}

    .locals {R2}
    {
        CaptureIds: [2]
        Block[B2] - Block
            Predecessors: [B1]
            Statements (1)
                IFlowCaptureOperation: 2 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'i2')
                  Value:
                    IParameterReferenceOperation: i2 (OperationKind.ParameterReference, Type: System.Int32?) (Syntax: 'i2')

            Jump if True (Regular) to Block[B4]
                IIsNullOperation (OperationKind.IsNull, Type: System.Boolean, IsImplicit) (Syntax: 'i2')
                  Operand:
                    IFlowCaptureReferenceOperation: 2 (OperationKind.FlowCaptureReference, Type: System.Int32?, IsImplicit) (Syntax: 'i2')
                Leaving: {R2}

            Next (Regular) Block[B3]
        Block[B3] - Block
            Predecessors: [B2]
            Statements (1)
                IFlowCaptureOperation: 3 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'i2')
                  Value:
                    IInvocationOperation ( System.Int32 System.Int32?.GetValueOrDefault()) (OperationKind.Invocation, Type: System.Int32, IsImplicit) (Syntax: 'i2')
                      Instance Receiver:
                        IFlowCaptureReferenceOperation: 2 (OperationKind.FlowCaptureReference, Type: System.Int32?, IsImplicit) (Syntax: 'i2')
                      Arguments(0)

            Next (Regular) Block[B5]
                Leaving: {R2}
    }

    Block[B4] - Block
        Predecessors: [B2]
        Statements (1)
            IFlowCaptureOperation: 3 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'i5')
              Value:
                IParameterReferenceOperation: i5 (OperationKind.ParameterReference, Type: System.Int32) (Syntax: 'i5')

        Next (Regular) Block[B5]
    Block[B5] - Block
        Predecessors: [B3] [B4]
        Statements (1)
            IExpressionStatementOperation (OperationKind.ExpressionStatement, Type: null) (Syntax: 'b = (i1, i2 ... = (i3, i4);')
              Expression:
                ISimpleAssignmentOperation (OperationKind.SimpleAssignment, Type: System.Boolean) (Syntax: 'b = (i1, i2 ... == (i3, i4)')
                  Left:
                    IFlowCaptureReferenceOperation: 0 (OperationKind.FlowCaptureReference, Type: System.Boolean, IsImplicit) (Syntax: 'b')
                  Right:
                    ITupleBinaryOperation (BinaryOperatorKind.Equals) (OperationKind.TupleBinary, Type: System.Boolean) (Syntax: '(i1, i2 ??  ... == (i3, i4)')
                      Left:
                        ITupleOperation (OperationKind.Tuple, Type: (System.Int32 i1, System.Int32)) (Syntax: '(i1, i2 ?? i5)')
                          NaturalType: (System.Int32 i1, System.Int32)
                          Elements(2):
                              IFlowCaptureReferenceOperation: 1 (OperationKind.FlowCaptureReference, Type: System.Int32, IsImplicit) (Syntax: 'i1')
                              IFlowCaptureReferenceOperation: 3 (OperationKind.FlowCaptureReference, Type: System.Int32, IsImplicit) (Syntax: 'i2 ?? i5')
                      Right:
                        ITupleOperation (OperationKind.Tuple, Type: (System.Int32 i3, System.Int32 i4)) (Syntax: '(i3, i4)')
                          NaturalType: (System.Int32 i3, System.Int32 i4)
                          Elements(2):
                              IParameterReferenceOperation: i3 (OperationKind.ParameterReference, Type: System.Int32) (Syntax: 'i3')
                              IParameterReferenceOperation: i4 (OperationKind.ParameterReference, Type: System.Int32) (Syntax: 'i4')

        Next (Regular) Block[B6]
            Leaving: {R1}
}

Block[B6] - Exit
    Predecessors: [B5]
    Statements (0)
";

            var expectedDiagnostics = DiagnosticDescription.None;

            VerifyFlowGraphAndDiagnosticsForTest<BlockSyntax>(source, expectedFlowGraph, expectedDiagnostics);
        }

        [Fact, CompilerTrait(CompilerFeature.IOperation, CompilerFeature.Dataflow)]
        public void TupleBinaryOperator_TupleExpressions_ControlFlowInRightOperand()
        {
            var source = @"
class C
{
    void F(int i1, int i2, int i3, int? i4, int i5, bool b)
    /*<bind>*/
    {
        b = (i1, i2) == (i3, i4 ?? i5);
    }/*</bind>*/
}";

            string expectedFlowGraph = @"
Block[B0] - Entry
    Statements (0)
    Next (Regular) Block[B1]
        Entering: {R1}

.locals {R1}
{
    CaptureIds: [0] [1] [2] [3] [5]
    Block[B1] - Block
        Predecessors: [B0]
        Statements (4)
            IFlowCaptureOperation: 0 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'b')
              Value:
                IParameterReferenceOperation: b (OperationKind.ParameterReference, Type: System.Boolean) (Syntax: 'b')

            IFlowCaptureOperation: 1 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'i1')
              Value:
                IParameterReferenceOperation: i1 (OperationKind.ParameterReference, Type: System.Int32) (Syntax: 'i1')

            IFlowCaptureOperation: 2 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'i2')
              Value:
                IParameterReferenceOperation: i2 (OperationKind.ParameterReference, Type: System.Int32) (Syntax: 'i2')

            IFlowCaptureOperation: 3 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'i3')
              Value:
                IParameterReferenceOperation: i3 (OperationKind.ParameterReference, Type: System.Int32) (Syntax: 'i3')

        Next (Regular) Block[B2]
            Entering: {R2}

    .locals {R2}
    {
        CaptureIds: [4]
        Block[B2] - Block
            Predecessors: [B1]
            Statements (1)
                IFlowCaptureOperation: 4 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'i4')
                  Value:
                    IParameterReferenceOperation: i4 (OperationKind.ParameterReference, Type: System.Int32?) (Syntax: 'i4')

            Jump if True (Regular) to Block[B4]
                IIsNullOperation (OperationKind.IsNull, Type: System.Boolean, IsImplicit) (Syntax: 'i4')
                  Operand:
                    IFlowCaptureReferenceOperation: 4 (OperationKind.FlowCaptureReference, Type: System.Int32?, IsImplicit) (Syntax: 'i4')
                Leaving: {R2}

            Next (Regular) Block[B3]
        Block[B3] - Block
            Predecessors: [B2]
            Statements (1)
                IFlowCaptureOperation: 5 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'i4')
                  Value:
                    IInvocationOperation ( System.Int32 System.Int32?.GetValueOrDefault()) (OperationKind.Invocation, Type: System.Int32, IsImplicit) (Syntax: 'i4')
                      Instance Receiver:
                        IFlowCaptureReferenceOperation: 4 (OperationKind.FlowCaptureReference, Type: System.Int32?, IsImplicit) (Syntax: 'i4')
                      Arguments(0)

            Next (Regular) Block[B5]
                Leaving: {R2}
    }

    Block[B4] - Block
        Predecessors: [B2]
        Statements (1)
            IFlowCaptureOperation: 5 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'i5')
              Value:
                IParameterReferenceOperation: i5 (OperationKind.ParameterReference, Type: System.Int32) (Syntax: 'i5')

        Next (Regular) Block[B5]
    Block[B5] - Block
        Predecessors: [B3] [B4]
        Statements (1)
            IExpressionStatementOperation (OperationKind.ExpressionStatement, Type: null) (Syntax: 'b = (i1, i2 ...  i4 ?? i5);')
              Expression:
                ISimpleAssignmentOperation (OperationKind.SimpleAssignment, Type: System.Boolean) (Syntax: 'b = (i1, i2 ... , i4 ?? i5)')
                  Left:
                    IFlowCaptureReferenceOperation: 0 (OperationKind.FlowCaptureReference, Type: System.Boolean, IsImplicit) (Syntax: 'b')
                  Right:
                    ITupleBinaryOperation (BinaryOperatorKind.Equals) (OperationKind.TupleBinary, Type: System.Boolean) (Syntax: '(i1, i2) == ... , i4 ?? i5)')
                      Left:
                        ITupleOperation (OperationKind.Tuple, Type: (System.Int32 i1, System.Int32 i2)) (Syntax: '(i1, i2)')
                          NaturalType: (System.Int32 i1, System.Int32 i2)
                          Elements(2):
                              IFlowCaptureReferenceOperation: 1 (OperationKind.FlowCaptureReference, Type: System.Int32, IsImplicit) (Syntax: 'i1')
                              IFlowCaptureReferenceOperation: 2 (OperationKind.FlowCaptureReference, Type: System.Int32, IsImplicit) (Syntax: 'i2')
                      Right:
                        ITupleOperation (OperationKind.Tuple, Type: (System.Int32 i3, System.Int32)) (Syntax: '(i3, i4 ?? i5)')
                          NaturalType: (System.Int32 i3, System.Int32)
                          Elements(2):
                              IFlowCaptureReferenceOperation: 3 (OperationKind.FlowCaptureReference, Type: System.Int32, IsImplicit) (Syntax: 'i3')
                              IFlowCaptureReferenceOperation: 5 (OperationKind.FlowCaptureReference, Type: System.Int32, IsImplicit) (Syntax: 'i4 ?? i5')

        Next (Regular) Block[B6]
            Leaving: {R1}
}

Block[B6] - Exit
    Predecessors: [B5]
    Statements (0)
";

            var expectedDiagnostics = DiagnosticDescription.None;

            VerifyFlowGraphAndDiagnosticsForTest<BlockSyntax>(source, expectedFlowGraph, expectedDiagnostics);
        }

        [Fact, CompilerTrait(CompilerFeature.IOperation, CompilerFeature.Dataflow)]
        public void TupleBinaryOperator_TupleExpressions_ControlFlowInBothOperands()
        {
            var source = @"
class C
{
    void F(int? i1, int i2, int i3, int? i4, int i5, int i6, bool b)
    /*<bind>*/
    {
        b = (i1 ?? i5, i2) == (i3, i4 ?? i6);
    }/*</bind>*/
}";

            string expectedFlowGraph = @"
Block[B0] - Entry
    Statements (0)
    Next (Regular) Block[B1]
        Entering: {R1}

.locals {R1}
{
    CaptureIds: [0] [2] [3] [4] [6]
    Block[B1] - Block
        Predecessors: [B0]
        Statements (1)
            IFlowCaptureOperation: 0 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'b')
              Value:
                IParameterReferenceOperation: b (OperationKind.ParameterReference, Type: System.Boolean) (Syntax: 'b')

        Next (Regular) Block[B2]
            Entering: {R2}

    .locals {R2}
    {
        CaptureIds: [1]
        Block[B2] - Block
            Predecessors: [B1]
            Statements (1)
                IFlowCaptureOperation: 1 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'i1')
                  Value:
                    IParameterReferenceOperation: i1 (OperationKind.ParameterReference, Type: System.Int32?) (Syntax: 'i1')

            Jump if True (Regular) to Block[B4]
                IIsNullOperation (OperationKind.IsNull, Type: System.Boolean, IsImplicit) (Syntax: 'i1')
                  Operand:
                    IFlowCaptureReferenceOperation: 1 (OperationKind.FlowCaptureReference, Type: System.Int32?, IsImplicit) (Syntax: 'i1')
                Leaving: {R2}

            Next (Regular) Block[B3]
        Block[B3] - Block
            Predecessors: [B2]
            Statements (1)
                IFlowCaptureOperation: 2 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'i1')
                  Value:
                    IInvocationOperation ( System.Int32 System.Int32?.GetValueOrDefault()) (OperationKind.Invocation, Type: System.Int32, IsImplicit) (Syntax: 'i1')
                      Instance Receiver:
                        IFlowCaptureReferenceOperation: 1 (OperationKind.FlowCaptureReference, Type: System.Int32?, IsImplicit) (Syntax: 'i1')
                      Arguments(0)

            Next (Regular) Block[B5]
                Leaving: {R2}
    }

    Block[B4] - Block
        Predecessors: [B2]
        Statements (1)
            IFlowCaptureOperation: 2 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'i5')
              Value:
                IParameterReferenceOperation: i5 (OperationKind.ParameterReference, Type: System.Int32) (Syntax: 'i5')

        Next (Regular) Block[B5]
    Block[B5] - Block
        Predecessors: [B3] [B4]
        Statements (2)
            IFlowCaptureOperation: 3 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'i2')
              Value:
                IParameterReferenceOperation: i2 (OperationKind.ParameterReference, Type: System.Int32) (Syntax: 'i2')

            IFlowCaptureOperation: 4 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'i3')
              Value:
                IParameterReferenceOperation: i3 (OperationKind.ParameterReference, Type: System.Int32) (Syntax: 'i3')

        Next (Regular) Block[B6]
            Entering: {R3}

    .locals {R3}
    {
        CaptureIds: [5]
        Block[B6] - Block
            Predecessors: [B5]
            Statements (1)
                IFlowCaptureOperation: 5 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'i4')
                  Value:
                    IParameterReferenceOperation: i4 (OperationKind.ParameterReference, Type: System.Int32?) (Syntax: 'i4')

            Jump if True (Regular) to Block[B8]
                IIsNullOperation (OperationKind.IsNull, Type: System.Boolean, IsImplicit) (Syntax: 'i4')
                  Operand:
                    IFlowCaptureReferenceOperation: 5 (OperationKind.FlowCaptureReference, Type: System.Int32?, IsImplicit) (Syntax: 'i4')
                Leaving: {R3}

            Next (Regular) Block[B7]
        Block[B7] - Block
            Predecessors: [B6]
            Statements (1)
                IFlowCaptureOperation: 6 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'i4')
                  Value:
                    IInvocationOperation ( System.Int32 System.Int32?.GetValueOrDefault()) (OperationKind.Invocation, Type: System.Int32, IsImplicit) (Syntax: 'i4')
                      Instance Receiver:
                        IFlowCaptureReferenceOperation: 5 (OperationKind.FlowCaptureReference, Type: System.Int32?, IsImplicit) (Syntax: 'i4')
                      Arguments(0)

            Next (Regular) Block[B9]
                Leaving: {R3}
    }

    Block[B8] - Block
        Predecessors: [B6]
        Statements (1)
            IFlowCaptureOperation: 6 (OperationKind.FlowCapture, Type: null, IsImplicit) (Syntax: 'i6')
              Value:
                IParameterReferenceOperation: i6 (OperationKind.ParameterReference, Type: System.Int32) (Syntax: 'i6')

        Next (Regular) Block[B9]
    Block[B9] - Block
        Predecessors: [B7] [B8]
        Statements (1)
            IExpressionStatementOperation (OperationKind.ExpressionStatement, Type: null) (Syntax: 'b = (i1 ??  ...  i4 ?? i6);')
              Expression:
                ISimpleAssignmentOperation (OperationKind.SimpleAssignment, Type: System.Boolean) (Syntax: 'b = (i1 ??  ... , i4 ?? i6)')
                  Left:
                    IFlowCaptureReferenceOperation: 0 (OperationKind.FlowCaptureReference, Type: System.Boolean, IsImplicit) (Syntax: 'b')
                  Right:
                    ITupleBinaryOperation (BinaryOperatorKind.Equals) (OperationKind.TupleBinary, Type: System.Boolean) (Syntax: '(i1 ?? i5,  ... , i4 ?? i6)')
                      Left:
                        ITupleOperation (OperationKind.Tuple, Type: (System.Int32, System.Int32 i2)) (Syntax: '(i1 ?? i5, i2)')
                          NaturalType: (System.Int32, System.Int32 i2)
                          Elements(2):
                              IFlowCaptureReferenceOperation: 2 (OperationKind.FlowCaptureReference, Type: System.Int32, IsImplicit) (Syntax: 'i1 ?? i5')
                              IFlowCaptureReferenceOperation: 3 (OperationKind.FlowCaptureReference, Type: System.Int32, IsImplicit) (Syntax: 'i2')
                      Right:
                        ITupleOperation (OperationKind.Tuple, Type: (System.Int32 i3, System.Int32)) (Syntax: '(i3, i4 ?? i6)')
                          NaturalType: (System.Int32 i3, System.Int32)
                          Elements(2):
                              IFlowCaptureReferenceOperation: 4 (OperationKind.FlowCaptureReference, Type: System.Int32, IsImplicit) (Syntax: 'i3')
                              IFlowCaptureReferenceOperation: 6 (OperationKind.FlowCaptureReference, Type: System.Int32, IsImplicit) (Syntax: 'i4 ?? i6')

        Next (Regular) Block[B10]
            Leaving: {R1}
}

Block[B10] - Exit
    Predecessors: [B9]
    Statements (0)
";

            var expectedDiagnostics = DiagnosticDescription.None;

            VerifyFlowGraphAndDiagnosticsForTest<BlockSyntax>(source, expectedFlowGraph, expectedDiagnostics);
        }
    }
}

redpajama_set_name: RedPajamaGithub


Pneumocystosis is a fungal (Pneumocystis carinii) infection of the respiratory system. Commonly found in the environment, P. carinii only affects dogs (or humans) with compromised immune systems. This is because the weakened body defenses allows the organism to multiply and grow to critical levels in the lungs.
Pneumocystosis is caused by an overabundance of the P. carinii fungus in the respiratory system, typically found in immune-compromised dogs.


text:
Moderat: More D4ta
Genre: Electro/Ambient
Label: MONKEYTOWN RECORDS
Order Number: MTR122CD
For bands, a "hiatus" is usually just a polite way of announcing a break-up, but sometimes, a hiatus is just that—a hiatus. Back in 2017, when Moderat announced that they'd be taking an extended break following a final concert in their hometown of Berlin, many assumed that the group was basically calling it quits. After all, they'd already completed a celebrated trilogy of albums, repeatedly broken into the pop charts and performed all around the globe (including MainStage sets at some of the world's biggest festivals including Coachella, Roskilde, Rock Werchter, Glastonbury, Primavera, Sónar and many many more)—what else was left for the German trio to accomplish? Moderat, however, always knew that they'd find their way back to one another.
MORE D4TA, the group's fourth album, arrives more than six years after its predecessor (2016's III), yet its contents are quintessentially Moderat. Although the trio's hiatus was absolutely real—exhausted after years of touring, Apparat (a.k.a. Sascha Ring) and Modeselektor (a.k.a. Gernot Bronsert and Sebastian Szary) spent two years away from one another, focusing instead on their own respective projects—once they decided to resume working together, the music (eventually) started flowing again.
It wasn't an easy process. It's never been easy for Moderat, an outfit who tellingly titled their debut EP Auf Kosten Der Gesundheit (translation: At the Cost of Health) and then needed seven years to put together a follow-up. Back in those days, the group's members were essentially remixing each other, but over time, they've gradually developed into a proper band, writing together and developing a workflow that's totally distinct from their other projects. (In a band where all three members are artists, producers and mixing engineers, striking that sort of creative balance is trickier than it might seem.)
Created largely during a time when touring (and most traveling) was off the table, MORE D4TA is an album that wrestles with feelings of isolation and information overload—issues that have become particularly pronounced over the past two years. Many of its lyrics are rooted in Ring's frequent trips to Berlin's Gemäldegalerie museum (often with his infant daughter in tow), where he'd seek refuge in the great paintings of the past while worrying about the future.
MORE D4TA is rooted in that same collaborative spirit, but long before any of its tracks were laid down, Moderat spent months hanging out and getting musically reacquainted, indulging in extended bouts of experimentation and slowly fleshing out ideas as they dove into modular composition, field recordings and other sonic oddities. That said, MORE D4TA is very much a Moderat album. No matter how far the band ventures into music's outer realms, they always wind up back in their own unique soundworld, a place where emotive pop and fluttering electronic soundscapes walk hand in hand. What they make isn't necessarily dance music, but it is something that shines brightest in the dark of night, the group's rich melodies and Ring's ethereal vocals emitting a warm, almost bioluminescent glow.
MORE D4TA
Although the LP's title is an anagram for "Moderat 4," there's more to it than cheeky wordplay. In a time where everyone is constantly bombarded with content, and taking part in the cultural conversation requires engaging with digital platforms more interested in harvesting data than celebrating art, it's easy to feel overwhelmed and disillusioned. MORE D4TA acknowledges that reality, but it also refuses to be cowed by it. Moderat's new album is ultimately just another addition to the content pile—there's no escaping that—but the trio still yearns to create and connect. They're not a conceptual outfit, and never have been: After spending the better part of two decades making music together, they've carved out a sound and aesthetic that are all their own, and MORE D4TA showcases a group that's creatively recharged and fully dedicated to its craft. Maybe bands should take hiatuses—real ones— a little more often.
Available on COMPACT DISC, VINYL and DELUXE VINYL
- CD: 6-fold CD cardboard pac including inner sleeve
1. FAST LAND
2. EASY PREY
3. DRUM GLOW
4. SOFT EDIT
5. UNDO REDO
6. NEON RATS
7. MORE LOVE
8. NUMB BELL
9. DOOM HYPE
10. COPY COPY
© 2009 Traum Baum Records - All rights reserved. | Design: Don Ludwig, erstererster | Realization: Freaked-Out I.S.
OF THE MONTH
NOFX, Morbid Angel, RHAPSODY OF FIRE, AIRTO, Blackmore's Night, DOORS, WEST BOUND, BONGOLIAN, THE, BALTHAZAR, GRETA VAN FLEET, BARRY ADAMSON, Fatboy Slim presents..., Wig Wam, Rolling Stones, The, JON FRATELLI, Bts, ERLANDSSON, MIKAEL, SABATON, COME TASTE THE BAND, Nat King Cole, Orbital, Orianthi, MOTORPSYCHO, WALTER TROUT, Lang,K.D., Yuno, FRANK,HERMAN, Legend, John, SPIRITS OF FIRE, Seal, Fields Of The Nephilim
Traum Baum Records
Oppenheimer Weg 4
Phone +49 30 44 03 45 10