text:
Newsletter #105 May 26, 2016
We publish our Newsletter during each of our exhibits to pass along information and reviews of the exhibit, selected images and news of participation opportunities at Image City. We thank you for your interest and we look forward to another great year of fine photographs and events. We hope to see you at each of the 13 shows we produce in 2016.
Urban Alchemy by Betsy Phillips
Current Show Runs Through Sunday, June 12
First Friday Gallery Night, 5 - 9pm, June 3
"Alchemy" is defined as "any power or process of transmuting a common substance, usually of little value, into a substance of great value". In the current exhibit, Gallery Partner, Betsy Philips captures oft-overlooked facets of urban life and elevates them to a life of their own, essentially transforming lead into gold. With Urban Alchemy Betsy has produced an exhibit from a myriad of meanderings through urban streets and backstreets, Her stunning images capture the color, exuberance and unexpected whimsy inherent in urban settings -- from graffiti and pavement repair to industrial paint jobs and movement down lit and mirrored corridors.
In the East Gallery, Nicholas Jospe, has returned with an exhibit that continues his photo trek with his Trek bicycle. Additional Guest Photographers in the exhibit are Donna Cox, John Ejaife, David Kotok, Robert Pierce, John Retallack and John Williamson.
The show also includes the work of Gallery Partners and Artists-in-Residence: Dick Bennett, Carl Crumley, Steve Levinson, Gil Maker, Dan Neuberger, Jim Patton, David Perlman, Betsy Phillips, John Solberg, Gary Thompson, and Phyllis Thompson.
With 17 photographers joining Betsy, you will enjoy the wide range of their photography interests and styles. Be sure to join us with a visit to the show that runs through Sunday, June 12.
First Friday Gallery Night is on June 3 from 5 to 9 pm. Our receptions are a great opportunity to view the art and support the photographers by your discussions or even better when you invest in their photographs. Click Here to see our webpage for show details and a preview of photographs in the exhibit.
Peter Marr's Picks of the Exhibit
After the installation of the photographs Peter Marr, noted photographer and competition judge, has selected three of his favorites and wrote commentary on what appealed to him in making his choices. Peter's Picks is a popular feature of our exhibits as visitors enjoy reading Peter's insightful comments while admiring the photographs.
Jubilation I by Betsy Phillps. It is important to realize that in abstract art, like some graffiti, form and other qualities may not be recognizable or understood, so it is salient to ask, what is it that the viewer sees and experiences, both visually and emotionally. Betsy has a remarkable artistic vision for both formal and non-formal design, wonderfully illustrated in Jubilation 1, in which she has creatively captured and interpreted a significant part of a much larger canvas. In doing this, the viewer's attention is immediately directed to the central area, where there is an irregular separation of material that has been painted a vibrant pink shade, together with a diagonal white swathe of paint. Although subordinate, but of important interest to this mauve-colored area, one is very aware of striking vertical strands of green paint, which hang down like fingers, the bright green acting wonderfully as a complementary hue to the pink areas. Included in the overall image, the artist or artists have randomly added both diagonal and curved segments of white paint that have their own textured details. What I see is that the principal graffiti artwork was painted on perhaps a cardboard substrate, which besides the dramatic color palette, has interesting textured features reminiscent of such material. This is supported by the fact that the jagged tears reveal lovely colored edges one would find in such a product. Tearing open a part of the base layer reveals an almost 3-dimensional view of what was possibly another graffiti painting that had been hidden by this spectacular overlay. It is reasonable to assume that the substance used to support the artwork was vulnerable to the elements, and a combination of wind and rain could have easily created a tear in the support structure. What I would like to imagine, is that the central white shaft of paint that slopes to the right is the real malefactor. It is very reminiscent of a knife, the handle being defined by the large glob of dripped paint. It is this fairly blunt knife that is depicted as being responsible for the jagged tear. Betsy has exquisitely captured a dramatic image, full of spectacular colors and textures and even some intrigue, a great credit to her aesthetic, exciting and creative talents.
Urban Graphic II by Betsy Phillips. This dynamic print is from a series of 6 powerful studies that clearly illustrate the author's exceptional visionary skills, creating memorable art from scenes that the majority of people would pass by without a second glance. This image has a sublime simplicity with no ambiguity, as the photograph directs the viewer's attention to all of the important elements. The eye responds immediately to the highest color contrast, to the red, yellow and silver-white against the black background, resulting in maximum impact in the scene. It is very evident that we are looking at the terminus of a loading dock, where the yellow painted driver viewing strips have seen evidence of vehicle contact. Immediately above the dock, one witnesses the imposing side of a large warehouse that is painted black. The various linear textures indicate sturdy concrete structures and a very large industrial-powered doorway to the far right. The highlight of this black structure is a closed, brightly painted red door, its dramatic edifice being supplemented by a metal door handle and lock, and 3 barely visible hinges. The last authoritative element in this image is a large metal pipe that is firmly affixed to the central wall structure. What is compelling, is that this pipe has 3 short exit tubes attached to it, all of which are capped securely. The entire image imposingly creates an uplifting graphic design, where the yellow diagonal lines impressively direct the viewer to immediately look at the features on the side of the warehouse. Beyond the inspiring visual impact, the strong graphic design, and the imposing display of different textures that are plainly visible across the black expanse, there is the unanswered question of what really transpires at this warehouse dock. It simply could be a loading station for a liquid or material product that can be delivered to three separate trucks at once. Is it possible that there is a more sinister reason for the whole set-up? The warehouse is painted black. The majestic red door exudes danger, and it is firmly locked. The fearsome looking silver-white pipe ends in 3 mysterious outlets and it comes from an unknown source, high above. Is it possible that this tube contains some ocular device, that with the eye pieces removed remotely, can easily survey both the trucks, and who comes and goes through the red door? Pure fantasy one would say, but a fitting piece of intrigue to complement this awesome image.
Genesee Brewery II by Nicholas Jospe. In the East Gallery, there is a fascinating and delightful exhibition of images by Nicholas Jospe, the majority of which he has placed a red bicycle into the picture. The prints range from the calm and peaceful, right through to the comedic and mysterious, and they are all a great credit to the artistic ingenuity and photographic expertise of the author. In Genesee Brewery II, the image has a strong graphic design quality, emphasized by the lovely side lighting on the building, together with the large area of negative space at the top, which is beautifully filled by the bright blue sky, and complemented by a few puffy clouds on the right hand side. The tilted camera angle greatly adds to the drama and sense of design. Impressively, at the top of the building, there is a brightly painted multi-hued model horse, that is reared up on its hind legs, and skillfully attached to one of its fore legs, is a can of beer, an advertising tour de force. By itself, this would be an imposing image, but the author has cleverly persuaded a colleague to vertically hold the red bicycle aloft, in a diagonal thrust that almost exactly mirrors the pose of the horse above. Judicious printing minimizes the assistant's presence, so that all attention can be given to the bicycle, whose frame and handlebars glow a deep red against the dark gray of the building. It is interesting to note that although the rear wheel follows the left to right orientation of the horse, the front wheel does not, tilting instead into the building, as though maybe it was not supporting the beer choice. Furthermore, the water bottle on the frame appears to support the placement of the beer can. An astute advertiser for Genesee Beer might use Nicholas's inspiring image, after first replacing the water bottle with a bottle of this beer. Other people might conjecture that rather than an endorsement of the Genesee product, it could be argued that perhaps water was a more desirable liquid to drink than beer. This image was brilliantly conceived and photographed, a great tribute to Nicholas's fertile imagination and outstanding photographic expertise.
Portfolio Showcase 2016
Call for Submissions - Deadline is fast approaching- June 9
We are pleased to announce that Image City Photography Gallery in partnership with Lumiere Photo, Kodak, and Rowe Photo are inviting you to submit your portfolio of photographs to one of the premier photography events in the area, the
Portfolio Showcase 2016 a Juried Exhibit
August 9 - September 4, 2016
Reception and Grand Prize Announcement August 12
Entries Must be Received by June 9
This is our eighth year for the Portfolio Showcase. We would like to invite your participation and submissions to this juried competition.
A few details:
Each entrant submits a portfolio of eight images on a CD or online
From those submitted, our judges will select the eight best portfolios. These will be exhibited and offered for sale by the winners at our Portfolio Showcase exhibit in August of 2016.
The Gallery Partners will select the Grand Prize Winner from this elite group.
Prizes totaling $2,500 will be given to the winners generously offered by our sponsors.
We will publish a catalog displaying all eight winning portfolios; the winners will receive a copy and the catalog will be on sale at the gallery.
Those not fortunate to be selected are offered a free, optional review of their work. The competition judges will not be a part of these review sessions.
A link of our suggestions of what makes a good portfolio is provided on our web site.
Click Here for full details and the downloadable entry form. You can also get a hard copy of the entry form at Image City Photography Gallery, Rowe Photo and Lumiere Photo. For the first time this year, you may also enter, pay the entry fee, and upload submitted images online.
If you have any questions, please feel free to contact
steve.levinson@ImageCityPhotographyGallery.com
The Gallery Partners and our sponsors look forward to receiving your submission by June 9 at the latest - see details at the link above.
Chairman of the Portfolio Showcase 2016
New Course by Steve Levinson
Creating Great Photographs with Adobe Lightroom
There are still a couple of openings for this class beginning TONIGHT, May 26. Sign up today.
After taking this lecture and workshop course, you will be have a workflow that you can efficiently follow for every photograph you make:
importing images into your computer so that you can easily find them at a later time
selecting the best images using an organized process
creating a fine digital image and then
making a fine digital print or posting on the Internet
Thursday May 26 and Wednesday	June 1, 8, 15, 2016 (Note corrected days)
Location: We will meet at the historic Pittsford Flour Mill, 15 Schoen Place, Pittsford.
Price: The price for this course will be $165 and the class will be limited to a maximum of eight photographers. You can sign up and prepay for the course at Image City Photography Gallery. Check the Link for Details on Courses at Image City.
Image City Critiques Group meets Wednesday, June 1
The Image City Critique Group will next meet on Wednesday, June 1st beginning at 6:30pm. We meet at the gallery on the first Wednesday of each month to critique each other's images and hopefully improve our photography. Please bring 2 prints of your best images; matted if possible. We do not critique digital images. There is a one-time $20 registration fee, but you can try it once for free. The Group will not be meeting in July or August and will resume the first Wednesday in September.
June 1, 6:30pm Image City Critiques Group Meeting
June 3, 5-9:00 pm First Friday Reception Urban Alchemy by Betsy Phillips
June 9, Last Day to Enter with submissions to Portfolio Showcase 2016
June 12, Last day of Urban Alchemy by Betsy Phillips
June 14 First Day of new exhibit of Landscapes by Anthony Ryan
June 17 5 - 8:30pm Reception for new exhibit Landscapes by Anthony Ryan
July 1, 5-9:00 pm First Friday Reception, exhibit by Anthony Ryan
Image City Photography Gallery Hours
Tuesday - Saturday Noon - 6pm
There is no admission fee to visit Image City
where our mission is to create a quality exhibition and learning experience for photographers and the art-loving community.


Here come the photos of my scientific trip to Serbia. This album focuses on the second largest city of Serbia that is Novi Sad. It turns out to be a very picturesque town with breathtaking views from the enchanting Petrovaradin Fortress.
Life scene in the Cathedral of Holy Great-Martyr George.
Street life scene around a shoe shop.
Old façade. The art of time.
The Art of the Doors.
Artistic capture in a shopping alley.
Life scene around the Liberty Square.
Street life scene at Zmaj Jovina Ulica.
Old Novi Sad seen from Petrovaradin Fortress.
Novia Sad seen from Petrovaradin Fortress.


text:
package com.hazelcast.map;

import com.hazelcast.core.EntryEvent;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.map.listener.EntryAddedListener;
import com.hazelcast.map.listener.EntryRemovedListener;
import com.hazelcast.map.listener.EntryUpdatedListener;
import com.hazelcast.map.listener.MapListener;
import com.hazelcast.query.Predicate;
import com.hazelcast.query.Predicates;
import com.hazelcast.test.HazelcastTestSupport;
import org.junit.Test;

import java.io.Serializable;
import java.util.Collection;
import java.util.concurrent.Callable;
import java.util.concurrent.atomic.AtomicInteger;

import static java.util.Arrays.asList;
import static org.junit.runners.Parameterized.Parameter;
import static org.junit.runners.Parameterized.Parameters;

/**
 * Common superclass to test types of events published with different filtering strategies (default & query cache natural event
 * types)
 */
public abstract class AbstractEntryEventTypesTest extends HazelcastTestSupport {

    @Parameters(name = "includeValues: {0}")
    public static Collection<Object[]> data() {
        return asList(new Object[][]{
                {true},
                {false},
        });
    }

    @Parameter
    public boolean includeValue;

    @SuppressWarnings("unchecked")
    final Predicate<Integer, Person> predicate = Predicates.sql("age > 50");

    final AtomicInteger eventCounter = new AtomicInteger();
    HazelcastInstance instance;
    IMap<Integer, Person> map;

    // behavior varies between default & query-cache filtering strategies, so individual tests should implement these methods
    abstract MapListener mapListenerFor_entryUpdatedEvent_whenOldValueOutside_newValueMatchesPredicate();

    abstract MapListener mapListenerFor_entryUpdatedEvent_whenOldValueMatches_newValueOutsidePredicate();

    abstract Integer expectedCountFor_entryUpdatedEvent_whenOldValueMatches_newValueOutsidePredicate();

    public static class CountEntryAddedListener implements EntryAddedListener<Integer, Person> {

        private final AtomicInteger counter;

        CountEntryAddedListener(AtomicInteger counter) {
            this.counter = counter;
        }

        @Override
        public void entryAdded(EntryEvent<Integer, Person> event) {
            counter.incrementAndGet();
        }
    }

    public static class CountEntryRemovedListener implements EntryRemovedListener<Integer, Person> {

        private final AtomicInteger counter;

        CountEntryRemovedListener(AtomicInteger counter) {
            this.counter = counter;
        }

        @Override
        public void entryRemoved(EntryEvent<Integer, Person> event) {
            counter.incrementAndGet();
        }
    }

    public static class CountEntryUpdatedListener implements EntryUpdatedListener<Integer, Person> {

        private final AtomicInteger counter;

        CountEntryUpdatedListener(AtomicInteger counter) {
            this.counter = counter;
        }

        @Override
        public void entryUpdated(EntryEvent<Integer, Person> event) {
            counter.incrementAndGet();
        }
    }

    public static class Person implements Serializable {

        String name;
        int age;

        public Person() {
        }

        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
    }

    @Test
    public void entryAddedEvent_whenNoPredicateConfigured() {
        map.addEntryListener(new CountEntryAddedListener(eventCounter), includeValue);
        map.put(1, new Person("a", 40));
        assertEqualsEventually(new Callable<Integer>() {
            @Override
            public Integer call()
                    throws Exception {
                return eventCounter.get();
            }
        }, 1);
    }

    @Test
    public void entryAddedEvent_whenValueMatchesPredicate() {
        map.addEntryListener(new CountEntryAddedListener(eventCounter), predicate, includeValue);
        map.put(1, new Person("a", 75));
        assertEqualsEventually(new Callable<Integer>() {
            @Override
            public Integer call()
                    throws Exception {
                return eventCounter.get();
            }
        }, 1);
    }

    @Test
    public void entryAddedEvent_whenValueOutsidePredicate() {
        map.addEntryListener(new CountEntryAddedListener(eventCounter), predicate, includeValue);
        map.put(1, new Person("a", 35));
        assertEqualsEventually(new Callable<Integer>() {
            @Override
            public Integer call()
                    throws Exception {
                return eventCounter.get();
            }
        }, 0);
    }

    @Test
    public void entryRemovedEvent_whenNoPredicateConfigured() {
        map.addEntryListener(new CountEntryRemovedListener(eventCounter), includeValue);
        map.put(1, new Person("a", 40));
        map.remove(1);
        assertEqualsEventually(new Callable<Integer>() {
            @Override
            public Integer call()
                    throws Exception {
                return eventCounter.get();
            }
        }, 1);
    }

    @Test
    public void entryRemovedEvent_whenValueMatchesPredicate() {
        map.addEntryListener(new CountEntryRemovedListener(eventCounter), predicate, includeValue);
        map.put(1, new Person("a", 55));
        map.remove(1);
        assertEqualsEventually(new Callable<Integer>() {
            @Override
            public Integer call()
                    throws Exception {
                return eventCounter.get();
            }
        }, 1);
    }

    @Test
    public void entryRemovedEvent_whenValueOutsidePredicate() {
        map.addEntryListener(new CountEntryRemovedListener(eventCounter), predicate, includeValue);
        map.put(1, new Person("a", 35));
        map.remove(1);
        assertEqualsEventually(new Callable<Integer>() {
            @Override
            public Integer call()
                    throws Exception {
                return eventCounter.get();
            }
        }, 0);
    }

    @Test
    public void entryUpdatedEvent_whenNoPredicateConfigured() {
        map.addEntryListener(new CountEntryUpdatedListener(eventCounter), includeValue);
        map.put(1, new Person("a", 30));
        map.put(1, new Person("a", 60));

        assertEqualsEventually(new Callable<Integer>() {
            @Override
            public Integer call()
                    throws Exception {
                return eventCounter.get();
            }
        }, 1);
    }

    @Test
    public void entryUpdatedEvent_whenOldValueOutside_newValueMatchesPredicate() {
        map.addEntryListener(mapListenerFor_entryUpdatedEvent_whenOldValueOutside_newValueMatchesPredicate(),
                predicate, includeValue);
        map.put(1, new Person("a", 30));
        map.put(1, new Person("a", 60));

        assertEqualsEventually(new Callable<Integer>() {
            @Override
            public Integer call()
                    throws Exception {
                return eventCounter.get();
            }
        }, 1);
    }

    @Test
    public void entryUpdatedEvent_whenOldValueOutside_newValueOutsidePredicate() {
        map.addEntryListener(new CountEntryUpdatedListener(eventCounter), predicate, includeValue);
        map.put(1, new Person("a", 30));
        map.put(1, new Person("a", 20));

        assertEqualsEventually(new Callable<Integer>() {
            @Override
            public Integer call()
                    throws Exception {
                return eventCounter.get();
            }
        }, 0);
    }

    @Test
    public void entryUpdatedEvent_whenOldValueMatches_newValueMatchesPredicate() {
        map.addEntryListener(new CountEntryUpdatedListener(eventCounter), predicate, includeValue);
        map.put(1, new Person("a", 59));
        map.put(1, new Person("a", 60));

        assertEqualsEventually(new Callable<Integer>() {
            @Override
            public Integer call()
                    throws Exception {
                return eventCounter.get();
            }
        }, 1);
    }

    @Test
    public void entryUpdatedEvent_whenOldValueMatches_newValueOutsidePredicate() {
        map.addEntryListener(mapListenerFor_entryUpdatedEvent_whenOldValueMatches_newValueOutsidePredicate(),
                predicate, includeValue);
        map.put(1, new Person("a", 59));
        map.put(1, new Person("a", 30));

        assertEqualsEventually(new Callable<Integer>() {
            @Override
            public Integer call()
                    throws Exception {
                return eventCounter.get();
            }
        }, expectedCountFor_entryUpdatedEvent_whenOldValueMatches_newValueOutsidePredicate());
    }
}

redpajama_set_name: RedPajamaGithub


text:
Sunbelt Conference Title Game canceled
By Chris Kinkaid
COURTESY PHOTO/Ben Massey/Louisiana Athletics University of Louisiana at Lafayette's Andre Jones (10) is pictured during a Ragin' Cajuns' game. Jones, a 2017 Varnado High School graduate, along with 2020 Franklinton High School graduate Mike Martin are on the Ragin' Cajuns team.
The Sun Belt Conference championship football game between Coastal Carolina and the University of Louisiana at Lafayette has been canceled due to a positive COVID-19 test within the Coastal Carolina program. Because of contact tracing, an entire position group would not be available to play due to possible exposure and therefore the game cannot be played.
The game was scheduled for Dec. 19.
"We are very disappointed that the championship game cannot be played, but we are so proud of all of the players and staff members and their hard work during this truly challenging season," said Sun Belt Commissioner Keith Gill in a press release on Thursday. "We will honor both teams as 2020 Sun Belt Conference Co-Champions."
Two University of Louisiana at Lafayette players are graduates of schools in Washington Parish in Andre Jones and Mike Martin.
Jones, who is a redshirt junior, is a defensive lineman and a 2017 graduate of Varnado.
This season, Jones is tied for fifth on the team with Percy Butler with 40 tackles. Jones also has 3.5 stops for a loss along with two sacks, three quarterback hurries and a pass defended.
True freshman Martin, who plays running back, graduated from Franklinton in 2020.
Louisiana finished the regular season with a 9-1 record and is ranked 19th in the FBS college football playoff top 25.
The Rain' Cajuns are ranked 17th in the Associated Press Top 25 and 18th in the USA Today/Amway Coaches Poll.
The Ragin' Cajuns posted a 7-1 conference record and captured the West Division of the Sunbelt Conference.
Louisiana's only loss this season was to Coastal Carolina in a 30-27 contest held on Oct. 14 in Lafayette.
Coastal Carolina finished the regular season at 11-0.
Only three of the Chanticleers' wins were by one possession, which includes the game against Louisiana and their final two regular season games against BYU and Troy in 22-17 and 42-38 wins respectively.
Coastal Carolina is ranked No. 12 in the playoff poll.
Coastal Carolina is ninth in the AP Poll and 12th in the Coaches Poll.
More Z - Newsletter Sports
Ben's Ford wins against Discovery Christian School
Bogalusa victorious over Jewel Sumner
Southeastern, Riser Agree to Contract Extension
Bowling Green defeats Columbia Academy

redpajama_set_name: RedPajamaCommonCrawl


text:
#include <iostream>
#include <sstream>
#include <string>

#include "joynr/BrokerUrl.h"

namespace joynr
{

BrokerUrl::BrokerUrl(const std::string& brokerBaseUrlString)
        : _brokerBaseUrlString(brokerBaseUrlString)
{
    this->_brokerBaseUrl = Url(brokerBaseUrlString);
    if (!this->_brokerBaseUrl.isValid()) {
        std::ostringstream errorStringStream;
        errorStringStream << "could not parse URL >" << brokerBaseUrlString << "<";
        throw std::invalid_argument(errorStringStream.str());
    }
}

BrokerUrl& BrokerUrl::operator=(const BrokerUrl& brokerUrl)
{
    _brokerBaseUrlString = brokerUrl._brokerBaseUrlString;
    _brokerBaseUrl = brokerUrl._brokerBaseUrl;
    return *this;
}

bool BrokerUrl::operator==(const BrokerUrl& brokerUrl) const
{
    return _brokerBaseUrl == brokerUrl.getBrokerBaseUrl();
}

Url BrokerUrl::getBrokerBaseUrl() const
{
    Url url(_brokerBaseUrl);
    return url;
}

std::string BrokerUrl::toString() const
{
    return _brokerBaseUrlString;
}

} // namespace joynr


text:
Effective tax policies can boost state investment
Home News Effective tax policies can boost state investment
By sarah | News | 0 comment | 16 February, 2020 | 0
It's a good thing when state leaders recognize the strategic importance of innovation in job and wealth creation. It's also a good thing when a state considers legislation to help address capital gaps. Oklahoma's Technology Business Finance Program (TBFP) Seed Fund is a nationally recognized best practices example of legislated early stage capital that has stood a 20-plus year test of time.
Tax credits are another financial tool that states have attempted to use with varying success to stimulate early-stage investment in startups. The concept behind tax credits is that they will help investors offset a portion of the investment risk and thereby create more capital for startup companies.
Over the last 20 years, more than half the states, have experimented with tax credits as a way to stimulate investment capital in early stage deals. So, unlike 20 years ago when Oklahoma was trailblazing with TBFP, there is considerable data and real-world experience from other states to help a legislature considering an investment tax credit make better decisions based on what other states have tried.
State investment tax credits have ranged from 10 to 100 percent, typically applied to technology businesses often based on qualified research from the state that is providing the credit. Credits may include carry-forward provisions to off-set future tax liability. Some credits are transferable. Certain industries, for example real estate or finance, may be excluded.
An innovation economy grows when investors perform rigorous due diligence and challenge the assumptions, goals and plans of entrepreneurs seeking the highest quality startups — companies that have market-validated business plans, a track record of achieving growth milestones, and management teams focused on building a business with long-term potential for acquisition or exit.
Tax credits, however structured, should not be so lucrative that an investor would be attracted to invest in a startup company primarily for the tax benefit. Overly generous credits in the short run might attract more capital to early stage deals; however, the downside is that poorly constructed tax credits can undercut market discipline and cost a state much more in the long run than any passing short-term gains it might realize.
Tax credits and other tax write-offs, like most decisions, especially in economic policy, usually cut both ways. There is much to learn from Hawaii and other states that have already been down the path of utilizing tax policy to stimulate early stage investment. The bigger the tax credit or deduction, the greater the opportunity for unintended consequences. Public disclosures and comprehensive metrics with strict and highly transparent reporting requirements can prevent what Hawaii calls "opportunistic manipulation."
When early stage equity markets "behave," angels and venture capitalists are attracted to businesses with the potential to solve huge problems and disrupt markets. Investors reserve capital for follow-on investments as the company attains milestones of growth and sustainability. They provide mentoring, advice, and board of directors participation.
State initiatives that leverage this infrastructure to expand Oklahoma's pipeline of investable companies will accelerate our state's innovation economy, creating high-paying jobs and life changing products and services. Oklahoma's problem with a low level of startup investment is not really a capital problem but a low deal flow problem. Good deals get funded and bad deals do not. That is the way healthy startup ecosystems function.
Scott Meacham is president and CEO of i2E Inc., a nonprofit corporation that mentors many of the state's technology-based startup companies. i2E receives state appropriations from the Oklahoma Center for the Advancement of Science and Technology. Contact Meacham at i2E_Comments@i2E.org
angel investors, Scott Meacham, tax credits, TBFP, Technology Business Finance
Oklahoma's startup ecosystem ensures capital continuum for emerging ventures
By sarah | 0 comment
By Scott Meacham Entrepreneurship is hard. Most everything about building a new company is a heavy lift. Are there shout-from-the-mountain-tops moments? Most certainly. When the first prototype works as designed. When the first customer contractRead more
State-funded program managed by i2E boosts Oklahoma innovation
By Scott Meacham My mantra of investing, as any regular reader of this column knows, is capital begets capital. That's why Oklahoma's unique, pre-seed capital fund, Technology Business Finance Program (TBFP), is so critical toRead more
Investments of time and money are critical for startups' success
By Scott Meacham Mentoring is one of the most valuable venture services i2E provides to Oklahoma's innovators and entrepreneurs. Our mentoring covers a wide range of topics and situations based on the leadership team's experience,Read more
'Visionary' funding program boosts Oklahoma startups
By Scott Meacham This time of year, Christmas music is everywhere. Some people get a little tired of it, but for me it's all part of the season, and I like it. Christmas music remindsRead more
Author-entrepreneur says i2E offers 'founder-friendly' financing through state-funded program
By Scott Meacham Recently, when Elliott Adams, author of The Startup Mixtape: The Guide to Building and Launching a High-Growth Technology Startup signed up for i2E's Venture Assessment Program (VAP), it was a great opportunityRead more


text:
William Lees-Jones Talks Candidly to GMFBA
William Lees Jones Talks Candidly Gmfba
Britain's pub trade needs quality not quantity, one of the country's leading brewers declared this week. Speaking at a packed meeting of the Greater Manchester Family Business Association, William Lees-Jones, managing director of Middleton based brewery JW Lees, declared that the public and media should worry more about the quality of pubs rather than the quantity since it is not a numbers game.
"Many people have spoken about the number of pub closures and the 'shocking' fact we are down to 50,000 pubs in this country. I actually think we need to get that number down still further in some areas although no one should live in an area where there is no local pub. That way we can make our pubs a better experience by getting rid of the ones that don't work."
The Greater Manchester Family Business Association was launched last year by Stockport-based Gorvins Solicitors, accountancy and business advisory firm BDO and NatWest.
The aim of the association is to provide support and advice for family owned companies – from start-ups to those who have been operating for multiple generations.
In the case of JW Lees, the company was founded in 1828 by retired cotton manufacturer John Lees.
Mr Lees-Jones, who is the sixth generation of the family to work for the independent brewery business, told the capacity event, held at Manchester's new 20 Stories restaurant, that being part of such a dynasty didn't mean he automatically walked into a job as soon as he left university.
"There's a rule that no one can go into the business until at least five years after they have finished their education" explained the father of four who enjoyed a successful career in advertising before joining the family firm and becoming managing director in 2003.
He also said that part of the success behind the longevity of JW Lees is that it has always invested in freehold properties and that this has meant that the business is rooted it the communities where JW lees does business.
Christian Mancier, a Partner in the Gorvins Corporate and Commercial Law department said that William Lees-Jones candid, personal and fascinating insights reinforces the important role of the Greater Manchester Family Business Association.
"The association brings together family businesses from across Greater Manchester and the surrounding area to support one another, share best practice and to help each other feel less isolated by realising the issues they may be facing are faced by other family businesses."
Ian Bingham, partner in tax services at BDO, added that JW Lees had has continued to be successful because the company has never wavered from its core values. "This was an important reminder that it is vital to closely monitor developing market trends and remain agile enough to respond."
For more information about the Greater Manchester Family Business Association or to attend a future event, please e-mail paul.longmire@gorvins.com
Gorvins Partner Named As Global Influencer In Family Business
Family Business: The bedrock of Communities and the Engine Room of the UK Economy
Apprentice Star Headlines GM Family Business Day
Corporate and Commercial Law | Family Business | Gorvins
brewery | Christian Mancier | Family business | family businesses | Gorvins Solicitors | ian bingham | jw lees | Manchester Solicitors | Natwest | william lees-jones


text:
With staggeringly little fuss, Two Door Cinema Club spent a decade becoming one of Britain's biggest bands. Their route: irrepressible indie choruses built for very large festival crowds, motivational gym playlists and TV soundtracks. Their fourth album doesn't reject the band's USP but does mark a subtle evolution. Perhaps buoyed by their success subtly angling 2016's Gameshow towards dance floors, here the band take full gyrations. False Alarm is loose, alive, thoughtful and enriched by interesting guest artists—Zimbabwean Afrofusion outfit Mokoomba and Chicago rapper Open Mike Eagle—and crucially, none of it feels forced.
Supercharged singles "Talk" and "Satellite" will sit comfortably with the classics in their live set; "Break" ("from the McCartney school of songwriting," singer Alex Trimble has said) is the most charming thing they've ever recorded, while the cowbell-rich and Talking Heads-indebted "Nice to See You" makes excellent use of a charismatic Open Mike Eagle verse.
False Alarm Two Door Cinema Club
Satisfaction Guaranteed (feat. Mokoomba)
Nice to See You (feat. Open Mike Eagle)
Dirty Air
Talk (Single Edit)
Satellite (Single Edit)
℗ 2019 Prolifica Inc. under exclusive license to [PIAS]
More By Two Door Cinema Club
Tourist History
Beacon (Deluxe Version)
Tourist History (Deluxe Edition)
Gameshow (Deluxe Edition)


text:
All Judges Aenlle-Rocha, Fernando L. Alarcon, Gregory W. Bachner, Monica Bacigalupo, Paul A. Beaudet, Teresa A. Beckloff, Mitchell L. Belz, David L. Berle, Elihu M. Bernal, Margaret Miller Bird, George F. Blancarte, James E. Bogdanoff, Lee R. Borenstein, Mark A. Bowick, Stephanie M. Brazile, Kevin C. Broadbelt, Robert B. Bryant-Deason, Susan Buckley, Daniel J. Burdge, Richard J. Chalfant, James C. Chang, Wendy Cho, Lawrence Claster, William D. Cole, Lisa Hart Court, Michelle Williams Cowan, David J. Crandall, James L. Crowley, Daniel M. Delaney, Thomas A. Di Cesare, James J. Dillon, Timothy Patrick Doyle, John P. Draper, Robert S. Ellison, Laura Escalante , Kristin S. Feffer, Elizabeth R. Fell, Sheila B. Ford, H. Jay Fournier, Lori Ann Freeman, Kenneth R. Fruin, Richard L. Fujie, Holly J. Gastelum, John C. George, Stephanie Gilbertson, Rene C. Gooding, Martha K. Goorvitch, Stephen I. Gray II, Dudley W. Griffin, Craig Gross, Marc D. Hammock, Randolph M. Hernandez, Peter A. Hesseltine, David J. Highberger, William F. Hill, Deirdre Hofer, Ralph C. Hoffer, David A. Hogue, Amy D. Horn, H. Chester Howard, Theodore R. Ito, Roger Jessner, Samantha P. Jones, Ann I. Kaddo, James A. Karlan, Craig D. Keeny, Virginia Keosian, Gregory Killefer, Gail Kim, Andrew C. Kim, Mark C. Kin, Curtis A. Knill, Kimberly Kralik, John J. Kuhl, Carolyn B. Kwan, Ruth Ann Landin, Dennis J. Lee, Richard Y. Leiter, Maurice A. Levanas, Michael I. Lewis, Gregory H. Linfield, Michael P. Lofton, Joel L. Long, Thomas D. Lu, Elaine Lui, Christopher K. Lyons, Dalila Corral MacLaughlin, William A. Mackey, Malcolm Mandel, Elaine W. Margines, Charles Marks, Linda S. Mccormick, Melissa R. Melzer, Layne H. Meyers, Patrick T. Mohr, Anthony Mooney, Mark V. Moreton, Edward B. Moss, Robert J. Murillo, Serena R. Murphy, Daniel S. Nakamura, Kirk H. Nelson, Maren Nieto, Patricia D. Nishimoto, Cary Ongkeko, Rafael A. Orozco, Yolanda Palazuelos, Yvette M. Park, Ann H. Pfahler, Stephen P. Rhodes, Randy Rice, Stuart M. Richard S. Whitney Rico, Richard E. Rizk, Georgina Torres Robert P. Dahlquist Rogers, Randolph A. Rosales, Olivia Sahagun, Raul A. Salter, Glenn R. Sanders, Glenda Sandvig, Melvin D. Scheper, Barbara M. Schwarm, Walter P. Scott, Nathan R. See, Ramona G. Seigle, Laura A. Sepe-Wiesenfeld, Lisa K. Servino, Deborah C. Shaller, Frederick C. Sherman, Randall J. Sotelo, David Spear, Emily T. Stern, Douglas W. Stewart, William D. Strobel, Mary H. Stuart, David W. Takasugi, Jon R. Tanaka, Gary Y. Tarle, Norman P. Tillmon, Bobbi Torribio, John A. Traber, Theresa M. Tsao, Lee W. Uzcategui, Jessica A. Vazquez, Carlos E. Vicencia, Michael P. Watkins, Shirley K. Weiner, Timothy M. White, Elizabeth Allen White-Brown, Gloria Wilson, Peter Wilson, Renee E. Yep, Brian C. Young, Mark A. Zeltzer, Nancy E.
All Years 2019 2020
Select Judge Aenlle-Rocha, Fernando L. Alarcon, Gregory W. Bachner, Monica Bacigalupo, Paul A. Beaudet, Teresa A. Beckloff, Mitchell L. Belz, David L. Berle, Elihu M. Bernal, Margaret Miller Blancarte, James E. Borenstein, Mark A. Bowick, Stephanie M. Broadbelt, Robert B. Bryant-Deason, Susan Buckley, Daniel J. Burdge, Richard J. Chalfant, James C. Chang, Wendy Cho, Lawrence Claster, William D. Cole, Lisa Hart Court, Michelle Williams Cowan, David J. Crandall, James L. Crowley, Daniel M. Delaney, Thomas A. Di Cesare, James J. Dillon, Timothy Patrick Doyle, John P. Draper, Robert S. Ellison, Laura Escalante , Kristin S. Feffer, Elizabeth R. Ford, H. Jay Fournier, Lori Ann Freeman, Kenneth R. Fruin, Richard L. Fujie, Holly J. Gastelum, John C. George, Stephanie Gilbertson, Rene C. Gooding, Martha K. Goorvitch, Stephen I. Gray II, Dudley W. Gross, Marc D. Hammock, Randolph M. Hernandez, Peter A. Highberger, William F. Hill, Deirdre Hofer, Ralph C. Hoffer, David A. Hogue, Amy D. Horn, H. Chester Howard, Theodore R. Ito, Roger Jones, Ann I. Kaddo, James A. Karlan, Craig D. Keeny, Virginia Keosian, Gregory Kim, Andrew C. Kim, Mark C. Kin, Curtis A. Knill, Kimberly Kwan, Ruth Ann Landin, Dennis J. Lee, Richard Y. Leiter, Maurice A. Levanas, Michael I. Lewis, Gregory H. Linfield, Michael P. Lofton, Joel L. Lu, Elaine Lui, Christopher K. Lyons, Dalila Corral MacLaughlin, William A. Mackey, Malcolm Mandel, Elaine W.
Judicial Profile
Judge James C. Chalfant Judicial Profile
Judge James Cameron Chalfant received his B.A. in zoology from Pomona College in 1974, studied biochemistry in graduate school, and then obtained his J.D. from the University of California at Berkeley in 1979. After passing the Illinois bar in 1979, he worked as an associate at Sidley & Austin. He then passed the California bar in 1981 and worked as an associate at Irell & Manella before becoming a U.S. Attorney for the Central District of California. Thereafter, he joined the firm of Hochman, Salkin & DeRoy from 1986-1988, became a partner at McCambridge, Deixler, Marmaro & Goldberg from 1988-1995, and started a solo practice in 1995. He was appointed to the bench by Governor Pete Wilson in 1996. In 2008, he took over one of the writs and receivers courtrooms at Stanley Mosk Courthouse.
Los Angeles Superior Court - Courtroom Rules
The Robing Room - Hon. James C. Chalfant
James Chalfant - Ballotpedia
James Cameron Chalfant Judge Profile on Martindale.com
Judge Chalfant to Replace Janavs in Writs and Receivers - Metropolitan News-Enterprise
ABTL - Young Lawyers Division - Judicial Profile: The Honorable James C. Chalfant
Answering Summons to Service: New Municipal Judges Bring Assortment of Experiences to Bench - LA Times
Found 424 Rulings
Showing 20 Rulings per Page
# Case Number Date Judge
1 19STCV28594 01/07/2021 Judge Chalfant, James C.
2 20STCP01520 01/07/2021 Judge Chalfant, James C.
10 19STCV40062 12/15/2020 Judge Chalfant, James C.
11 20STCP01149 12/15/2020 Judge Chalfant, James C.
12 BS172553 12/15/2020 Judge Chalfant, James C.
20 20STLC05193 12/03/2020 Judge Chalfant, James C.
Simply fill the form below to sign up for updates
Thank you for signing up for updates
2019-2020 rulings.law LLC, All Rights Reserved.


text:
Уніря Волунтар Урзічень () — румунський футбольний клуб з міста Урзічень. Заснований у 1954 році. Домашні матчі проводив на стадіоні «Тінеретулуй», який вміщує 7000 глядачів. У 2011 році через фінансові проблеми клуб припинив своє існування

Досягнення
 Чемпіон Румунії (1) — 2008/09

Примітки

Посилання
 Офіційний сайт

Футбольні клуби Румунії
Футбольні клуби, засновані 1954
Футбольні клуби, розформовані 2011
2011 у румунському спорті
зникли в Європі 2011

redpajama_set_name: RedPajamaWikipedia


text:
Йован Манасиевский (; родился 21 мая 1968 года в Гостиваре) — министр обороны Республики Македонии с 2004 по 2006 год, председатель Либерально-демократической партии с 2007 по 2011 год.

Биография
В 1994 году Йован окончил Университет Св. Кирилла и Мефодия в Скопье по специальности социология.

Карьера
 С 1997 по 2002 год был советником мэра Скопье по связи и координации международного сотрудничества.
 В октябре 2002 года — депутат Собрания Республики Македонии.
 С 2002 по 2004 год — министр труда и социальной политики Республики Македонии.
 С 2004 по 2006 год — заместитель премьер-министра, министр обороны Республики Македонии.
 С 11 февраля 2007 по 6 июня 2011 год был председателем Либерально-демократической партии Македонии.

Ссылки
 Йован Манасиевский на сайте Собрания Республики Македонии.

Персоналии по алфавиту
Министры обороны Северной Македонии


PHILADELPHIA (embargoed until 10 AM ET, June 24, 2018) – Simon R. Cherry, PhD, Distinguished Professor at the University of California, Davis, has been named the 2018 recipient of the prestigious Paul C. Aebersold Award. Cherry was presented the award by the Society of Nuclear Medicine and Molecular Imaging (SNMMI) during its Annual Meeting, June 23-26 in Philadelphia, PA.
Cherry's research interests center around biomedical imaging and the development and application of in vivo molecular imaging systems. His major accomplishments have been in developing and applying high-resolution systems for positron emission tomography (PET), particularly the invention of microPET technology, and co-leading the EXPLORER project which recently has built the world's first total-body PET scanner.
The Aebersold Award is named for Paul C. Aebersold—a pioneer in the biologic and medical application of radioactive materials and the first director of the Atomic Energy Commission's Division of Isotope Development. It recognizes outstanding achievement in basic science applied to nuclear medicine and was first presented in 1973. The SNMMI Committee on Awards selects the recipient.


text:
/***************************************************************************/
/*                                                                         */
/*  cffobjs.c                                                              */
/*                                                                         */
/*    OpenType objects manager (body).                                     */
/*                                                                         */
/*  Copyright 1996-2011 by                                                 */
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
/*                                                                         */
/*  This file is part of the FreeType project, and may only be used,       */
/*  modified, and distributed under the terms of the FreeType project      */
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
/*  this file you indicate that you have read the license and              */
/*  understand and accept it fully.                                        */
/*                                                                         */
/***************************************************************************/

#include <plugin/FT_fontsys/ft2build.h>
#include FT_INTERNAL_DEBUG_H
#include FT_INTERNAL_CALC_H
#include FT_INTERNAL_STREAM_H
#include FT_ERRORS_H
#include FT_TRUETYPE_IDS_H
#include FT_TRUETYPE_TAGS_H
#include FT_INTERNAL_SFNT_H
#include "cffobjs.h"
#include "cffload.h"
#include "cffcmap.h"
#include "cfferrs.h"
#include "cffpic.h"

  /*************************************************************************/
  /*                                                                       */
  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
  /* messages during execution.                                            */
  /*                                                                       */
#undef  FT_COMPONENT
#define FT_COMPONENT  trace_cffobjs

  /*************************************************************************/
  /*                                                                       */
  /*                            SIZE FUNCTIONS                             */
  /*                                                                       */
  /*  Note that we store the global hints in the size's `internal' root    */
  /*  field.                                                               */
  /*                                                                       */
  /*************************************************************************/

  static PSH_Globals_Funcs
  cff_size_get_globals_funcs( CFF_Size  size )
  {
    CFF_Face          face     = (CFF_Face)size->root.face;
    CFF_Font          font     = (CFF_Font)face->extra.data;
    PSHinter_Service  pshinter = font->pshinter;
    FT_Module         module;

    module = FT_Get_Module( size->root.face->driver->root.library,
                            "pshinter" );
    return ( module && pshinter && pshinter->get_globals_funcs )
           ? pshinter->get_globals_funcs( module )
           : 0;
  }

  FT_LOCAL_DEF( void )
  cff_size_done( FT_Size  cffsize )        /* CFF_Size */
  {
    CFF_Size      size     = (CFF_Size)cffsize;
    CFF_Face      face     = (CFF_Face)size->root.face;
    CFF_Font      font     = (CFF_Font)face->extra.data;
    CFF_Internal  internal = (CFF_Internal)cffsize->internal;

    if ( internal )
    {
      PSH_Globals_Funcs  funcs;

      funcs = cff_size_get_globals_funcs( size );
      if ( funcs )
      {
        FT_UInt  i;

        funcs->destroy( internal->topfont );

        for ( i = font->num_subfonts; i > 0; i-- )
          funcs->destroy( internal->subfonts[i - 1] );
      }

      /* `internal' is freed by destroy_size (in ftobjs.c) */
    }
  }

  /* CFF and Type 1 private dictionaries have slightly different      */
  /* structures; we need to synthesize a Type 1 dictionary on the fly */

  static void
  cff_make_private_dict( CFF_SubFont  subfont,
                         PS_Private   priv )
  {
    CFF_Private  cpriv = &subfont->private_dict;
    FT_UInt      n, count;

    FT_MEM_ZERO( priv, sizeof ( *priv ) );

    count = priv->num_blue_values = cpriv->num_blue_values;
    for ( n = 0; n < count; n++ )
      priv->blue_values[n] = (FT_Short)cpriv->blue_values[n];

    count = priv->num_other_blues = cpriv->num_other_blues;
    for ( n = 0; n < count; n++ )
      priv->other_blues[n] = (FT_Short)cpriv->other_blues[n];

    count = priv->num_family_blues = cpriv->num_family_blues;
    for ( n = 0; n < count; n++ )
      priv->family_blues[n] = (FT_Short)cpriv->family_blues[n];

    count = priv->num_family_other_blues = cpriv->num_family_other_blues;
    for ( n = 0; n < count; n++ )
      priv->family_other_blues[n] = (FT_Short)cpriv->family_other_blues[n];

    priv->blue_scale = cpriv->blue_scale;
    priv->blue_shift = (FT_Int)cpriv->blue_shift;
    priv->blue_fuzz  = (FT_Int)cpriv->blue_fuzz;

    priv->standard_width[0]  = (FT_UShort)cpriv->standard_width;
    priv->standard_height[0] = (FT_UShort)cpriv->standard_height;

    count = priv->num_snap_widths = cpriv->num_snap_widths;
    for ( n = 0; n < count; n++ )
      priv->snap_widths[n] = (FT_Short)cpriv->snap_widths[n];

    count = priv->num_snap_heights = cpriv->num_snap_heights;
    for ( n = 0; n < count; n++ )
      priv->snap_heights[n] = (FT_Short)cpriv->snap_heights[n];

    priv->force_bold     = cpriv->force_bold;
    priv->language_group = cpriv->language_group;
    priv->lenIV          = cpriv->lenIV;
  }

  FT_LOCAL_DEF( FT_Error )
  cff_size_init( FT_Size  cffsize )         /* CFF_Size */
  {
    CFF_Size           size  = (CFF_Size)cffsize;
    FT_Error           error = CFF_Err_Ok;
    PSH_Globals_Funcs  funcs = cff_size_get_globals_funcs( size );

    if ( funcs )
    {
      CFF_Face      face     = (CFF_Face)cffsize->face;
      CFF_Font      font     = (CFF_Font)face->extra.data;
      CFF_Internal  internal = NULL;

      PS_PrivateRec  priv;
      FT_Memory      memory = cffsize->face->memory;

      FT_UInt  i;

      if ( FT_NEW( internal ) )
        goto Exit;

      cff_make_private_dict( &font->top_font, &priv );
      error = funcs->create( cffsize->face->memory, &priv,
                             &internal->topfont );
      if ( error )
        goto Exit;

      for ( i = font->num_subfonts; i > 0; i-- )
      {
        CFF_SubFont  sub = font->subfonts[i - 1];

        cff_make_private_dict( sub, &priv );
        error = funcs->create( cffsize->face->memory, &priv,
                               &internal->subfonts[i - 1] );
        if ( error )
          goto Exit;
      }

      cffsize->internal = (FT_Size_Internal)(void*)internal;
    }

    size->strike_index = 0xFFFFFFFFUL;

  Exit:
    return error;
  }

#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS

  FT_LOCAL_DEF( FT_Error )
  cff_size_select( FT_Size   size,
                   FT_ULong  strike_index )
  {
    CFF_Size           cffsize = (CFF_Size)size;
    PSH_Globals_Funcs  funcs;

    cffsize->strike_index = strike_index;

    FT_Select_Metrics( size->face, strike_index );

    funcs = cff_size_get_globals_funcs( cffsize );

    if ( funcs )
    {
      CFF_Face      face     = (CFF_Face)size->face;
      CFF_Font      font     = (CFF_Font)face->extra.data;
      CFF_Internal  internal = (CFF_Internal)size->internal;

      FT_ULong  top_upm  = font->top_font.font_dict.units_per_em;
      FT_UInt   i;

      funcs->set_scale( internal->topfont,
                        size->metrics.x_scale, size->metrics.y_scale,
                        0, 0 );

      for ( i = font->num_subfonts; i > 0; i-- )
      {
        CFF_SubFont  sub     = font->subfonts[i - 1];
        FT_ULong     sub_upm = sub->font_dict.units_per_em;
        FT_Pos       x_scale, y_scale;

        if ( top_upm != sub_upm )
        {
          x_scale = FT_MulDiv( size->metrics.x_scale, top_upm, sub_upm );
          y_scale = FT_MulDiv( size->metrics.y_scale, top_upm, sub_upm );
        }
        else
        {
          x_scale = size->metrics.x_scale;
          y_scale = size->metrics.y_scale;
        }

        funcs->set_scale( internal->subfonts[i - 1],
                          x_scale, y_scale, 0, 0 );
      }
    }

    return CFF_Err_Ok;
  }

#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */

  FT_LOCAL_DEF( FT_Error )
  cff_size_request( FT_Size          size,
                    FT_Size_Request  req )
  {
    CFF_Size           cffsize = (CFF_Size)size;
    PSH_Globals_Funcs  funcs;

#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS

    if ( FT_HAS_FIXED_SIZES( size->face ) )
    {
      CFF_Face      cffface = (CFF_Face)size->face;
      SFNT_Service  sfnt    = (SFNT_Service)cffface->sfnt;
      FT_ULong      strike_index;

      if ( sfnt->set_sbit_strike( cffface, req, &strike_index ) )
        cffsize->strike_index = 0xFFFFFFFFUL;
      else
        return cff_size_select( size, strike_index );
    }

#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */

    FT_Request_Metrics( size->face, req );

    funcs = cff_size_get_globals_funcs( cffsize );

    if ( funcs )
    {
      CFF_Face      cffface  = (CFF_Face)size->face;
      CFF_Font      font     = (CFF_Font)cffface->extra.data;
      CFF_Internal  internal = (CFF_Internal)size->internal;

      FT_ULong  top_upm  = font->top_font.font_dict.units_per_em;
      FT_UInt   i;

      funcs->set_scale( internal->topfont,
                        size->metrics.x_scale, size->metrics.y_scale,
                        0, 0 );

      for ( i = font->num_subfonts; i > 0; i-- )
      {
        CFF_SubFont  sub     = font->subfonts[i - 1];
        FT_ULong     sub_upm = sub->font_dict.units_per_em;
        FT_Pos       x_scale, y_scale;

        if ( top_upm != sub_upm )
        {
          x_scale = FT_MulDiv( size->metrics.x_scale, top_upm, sub_upm );
          y_scale = FT_MulDiv( size->metrics.y_scale, top_upm, sub_upm );
        }
        else
        {
          x_scale = size->metrics.x_scale;
          y_scale = size->metrics.y_scale;
        }

        funcs->set_scale( internal->subfonts[i - 1],
                          x_scale, y_scale, 0, 0 );
      }
    }

    return CFF_Err_Ok;
  }

  /*************************************************************************/
  /*                                                                       */
  /*                            SLOT  FUNCTIONS                            */
  /*                                                                       */
  /*************************************************************************/

  FT_LOCAL_DEF( void )
  cff_slot_done( FT_GlyphSlot  slot )
  {
    slot->internal->glyph_hints = 0;
  }

  FT_LOCAL_DEF( FT_Error )
  cff_slot_init( FT_GlyphSlot  slot )
  {
    CFF_Face          face     = (CFF_Face)slot->face;
    CFF_Font          font     = (CFF_Font)face->extra.data;
    PSHinter_Service  pshinter = font->pshinter;

    if ( pshinter )
    {
      FT_Module  module;

      module = FT_Get_Module( slot->face->driver->root.library,
                              "pshinter" );
      if ( module )
      {
        T2_Hints_Funcs  funcs;

        funcs = pshinter->get_t2_funcs( module );
        slot->internal->glyph_hints = (void*)funcs;
      }
    }

    return CFF_Err_Ok;
  }

  /*************************************************************************/
  /*                                                                       */
  /*                           FACE  FUNCTIONS                             */
  /*                                                                       */
  /*************************************************************************/

  static FT_String*
  cff_strcpy( FT_Memory         memory,
              const FT_String*  source )
  {
    FT_Error    error;
    FT_String*  result;

    (void)FT_STRDUP( result, source );

    FT_UNUSED( error );

    return result;
  }

  /* Strip all subset prefixes of the form `ABCDEF+'.  Usually, there */
  /* is only one, but font names like `APCOOG+JFABTD+FuturaBQ-Bold'   */
  /* have been seen in the wild.                                      */

  static void
  remove_subset_prefix( FT_String*  name )
  {
    FT_Int32  idx             = 0;
    FT_Int32  length          = strlen( name ) + 1;
    FT_Bool   continue_search = 1;

    while ( continue_search )
    {
      if ( length >= 7 && name[6] == '+' )
      {
        for ( idx = 0; idx < 6; idx++ )
        {
          /* ASCII uppercase letters */
          if ( !( 'A' <= name[idx] && name[idx] <= 'Z' ) )
            continue_search = 0;
        }

        if ( continue_search )
        {
          for ( idx = 7; idx < length; idx++ )
            name[idx - 7] = name[idx];
          length -= 7;
        }
      }
      else
        continue_search = 0;
    }
  }

  /* Remove the style part from the family name (if present). */

  static void
  remove_style( FT_String*        family_name,
                const FT_String*  style_name )
  {
    FT_Int32  family_name_length, style_name_length;

    family_name_length = strlen( family_name );
    style_name_length  = strlen( style_name );

    if ( family_name_length > style_name_length )
    {
      FT_Int  idx;

      for ( idx = 1; idx <= style_name_length; ++idx )
      {
        if ( family_name[family_name_length - idx] !=
             style_name[style_name_length - idx] )
          break;
      }

      if ( idx > style_name_length )
      {
        /* family_name ends with style_name; remove it */
        idx = family_name_length - style_name_length - 1;

        /* also remove special characters     */
        /* between real family name and style */
        while ( idx > 0                     &&
                ( family_name[idx] == '-' ||
                  family_name[idx] == ' ' ||
                  family_name[idx] == '_' ||
                  family_name[idx] == '+' ) )
          --idx;

        if ( idx > 0 )
          family_name[idx + 1] = '\0';
      }
    }
  }

  FT_LOCAL_DEF( FT_Error )
  cff_face_init( FT_Stream      stream,
                 FT_Face        cffface,        /* CFF_Face */
                 FT_Int         face_index,
                 FT_Int         num_params,
                 FT_Parameter*  params )
  {
    CFF_Face            face        = (CFF_Face)cffface;
    FT_Error            error;
    SFNT_Service        sfnt;
    FT_Service_PsCMaps  psnames;
    PSHinter_Service    pshinter;
    FT_Bool             pure_cff    = 1;
    FT_Bool             sfnt_format = 0;
    FT_Library          library     = cffface->driver->root.library;

    sfnt = (SFNT_Service)FT_Get_Module_Interface(
             library, "sfnt" );
    if ( !sfnt )
      goto Bad_Format;

    FT_FACE_FIND_GLOBAL_SERVICE( face, psnames, POSTSCRIPT_CMAPS );

    pshinter = (PSHinter_Service)FT_Get_Module_Interface(
                 library, "pshinter" );

    /* create input stream from resource */
    if ( FT_STREAM_SEEK( 0 ) )
      goto Exit;

    /* check whether we have a valid OpenType file */
    error = sfnt->init_face( stream, face, face_index, num_params, params );
    if ( !error )
    {
      if ( face->format_tag != TTAG_OTTO )  /* `OTTO'; OpenType/CFF font */
      {
        FT_TRACE2(( "[not a valid OpenType/CFF font]\n" ));
        goto Bad_Format;
      }

      /* if we are performing a simple font format check, exit immediately */
      if ( face_index < 0 )
        return CFF_Err_Ok;

      /* UNDOCUMENTED!  A CFF in an SFNT can have only a single font. */
      if ( face_index > 0 )
      {
        FT_ERROR(( "cff_face_init: invalid face index\n" ));
        error = CFF_Err_Invalid_Argument;
        goto Exit;
      }

      sfnt_format = 1;

      /* now, the font can be either an OpenType/CFF font, or an SVG CEF */
      /* font; in the latter case it doesn't have a `head' table         */
      error = face->goto_table( face, TTAG_head, stream, 0 );
      if ( !error )
      {
        pure_cff = 0;

        /* load font directory */
        error = sfnt->load_face( stream, face, 0, num_params, params );
        if ( error )
          goto Exit;
      }
      else
      {
        /* load the `cmap' table explicitly */
        error = sfnt->load_cmap( face, stream );
        if ( error )
          goto Exit;

        /* XXX: we don't load the GPOS table, as OpenType Layout     */
        /* support will be added later to a layout library on top of */
        /* FreeType 2                                                */
      }

      /* now load the CFF part of the file */
      error = face->goto_table( face, TTAG_CFF, stream, 0 );
      if ( error )
        goto Exit;
    }
    else
    {
      /* rewind to start of file; we are going to load a pure-CFF font */
      if ( FT_STREAM_SEEK( 0 ) )
        goto Exit;
      error = CFF_Err_Ok;
    }

    /* now load and parse the CFF table in the file */
    {
      CFF_Font         cff = NULL;
      CFF_FontRecDict  dict;
      FT_Memory        memory = cffface->memory;
      FT_Int32         flags;
      FT_UInt          i;

      if ( FT_NEW( cff ) )
        goto Exit;

      face->extra.data = cff;
      error = cff_font_load( library, stream, face_index, cff, pure_cff );
      if ( error )
        goto Exit;

      cff->pshinter = pshinter;
      cff->psnames  = psnames;

      cffface->face_index = face_index;

      /* Complement the root flags with some interesting information. */
      /* Note that this is only necessary for pure CFF and CEF fonts; */
      /* SFNT based fonts use the `name' table instead.               */

      cffface->num_glyphs = cff->num_glyphs;

      dict = &cff->top_font.font_dict;

      /* we need the `PSNames' module for CFF and CEF formats */
      /* which aren't CID-keyed                               */
      if ( dict->cid_registry == 0xFFFFU && !psnames )
      {
        FT_ERROR(( "cff_face_init:"
                   " cannot open CFF & CEF fonts\n"
                   "              "
                   " without the `PSNames' module\n" ));
        goto Bad_Format;
      }

      if ( !dict->units_per_em )
        dict->units_per_em = pure_cff ? 1000 : face->root.units_per_EM;

      /* Normalize the font matrix so that `matrix->xx' is 1; the */
      /* scaling is done with `units_per_em' then (at this point, */
      /* it already contains the scaling factor, but without      */
      /* normalization of the matrix).                            */
      /*                                                          */
      /* Note that the offsets must be expressed in integer font  */
      /* units.                                                   */

      {
        FT_Matrix*  matrix = &dict->font_matrix;
        FT_Vector*  offset = &dict->font_offset;
        FT_ULong*   upm    = &dict->units_per_em;
        FT_Fixed    temp   = FT_ABS( matrix->yy );

        if ( temp != 0x10000L )
        {
          *upm = FT_DivFix( *upm, temp );

          matrix->xx = FT_DivFix( matrix->xx, temp );
          matrix->yx = FT_DivFix( matrix->yx, temp );
          matrix->xy = FT_DivFix( matrix->xy, temp );
          matrix->yy = FT_DivFix( matrix->yy, temp );
          offset->x  = FT_DivFix( offset->x,  temp );
          offset->y  = FT_DivFix( offset->y,  temp );
        }

        offset->x >>= 16;
        offset->y >>= 16;
      }

      for ( i = cff->num_subfonts; i > 0; i-- )
      {
        CFF_FontRecDict  sub = &cff->subfonts[i - 1]->font_dict;
        CFF_FontRecDict  top = &cff->top_font.font_dict;

        FT_Matrix*  matrix;
        FT_Vector*  offset;
        FT_ULong*   upm;
        FT_Fixed    temp;

        if ( sub->units_per_em )
        {
          FT_Long  scaling;

          if ( top->units_per_em > 1 && sub->units_per_em > 1 )
            scaling = FT_MIN( top->units_per_em, sub->units_per_em );
          else
            scaling = 1;

          FT_Matrix_Multiply_Scaled( &top->font_matrix,
                                     &sub->font_matrix,
                                     scaling );
          FT_Vector_Transform_Scaled( &sub->font_offset,
                                      &top->font_matrix,
                                      scaling );

          sub->units_per_em = FT_MulDiv( sub->units_per_em,
                                         top->units_per_em,
                                         scaling );
        }
        else
        {
          sub->font_matrix = top->font_matrix;
          sub->font_offset = top->font_offset;

          sub->units_per_em = top->units_per_em;
        }

        matrix = &sub->font_matrix;
        offset = &sub->font_offset;
        upm    = &sub->units_per_em;
        temp   = FT_ABS( matrix->yy );

        if ( temp != 0x10000L )
        {
          *upm = FT_DivFix( *upm, temp );

          /* if *upm is larger than 100*1000 we divide by 1000 --     */
          /* this can happen if e.g. there is no top-font FontMatrix  */
          /* and the subfont FontMatrix already contains the complete */
          /* scaling for the subfont (see section 5.11 of the PLRM)   */

          /* 100 is a heuristic value */

          if ( *upm > 100L * 1000L )
            *upm = ( *upm + 500 ) / 1000;

          matrix->xx = FT_DivFix( matrix->xx, temp );
          matrix->yx = FT_DivFix( matrix->yx, temp );
          matrix->xy = FT_DivFix( matrix->xy, temp );
          matrix->yy = FT_DivFix( matrix->yy, temp );
          offset->x  = FT_DivFix( offset->x,  temp );
          offset->y  = FT_DivFix( offset->y,  temp );
        }

        offset->x >>= 16;
        offset->y >>= 16;
      }

      if ( pure_cff )
      {
        char*  style_name = NULL;

        /* set up num_faces */
        cffface->num_faces = cff->num_faces;

        /* compute number of glyphs */
        if ( dict->cid_registry != 0xFFFFU )
          cffface->num_glyphs = cff->charset.max_cid + 1;
        else
          cffface->num_glyphs = cff->charstrings_index.count;

        /* set global bbox, as well as EM size */
        cffface->bbox.xMin =   dict->font_bbox.xMin            >> 16;
        cffface->bbox.yMin =   dict->font_bbox.yMin            >> 16;
        /* no `U' suffix here to 0xFFFF! */
        cffface->bbox.xMax = ( dict->font_bbox.xMax + 0xFFFF ) >> 16;
        cffface->bbox.yMax = ( dict->font_bbox.yMax + 0xFFFF ) >> 16;

        cffface->units_per_EM = (FT_UShort)( dict->units_per_em );

        cffface->ascender  = (FT_Short)( cffface->bbox.yMax );
        cffface->descender = (FT_Short)( cffface->bbox.yMin );

        cffface->height = (FT_Short)( ( cffface->units_per_EM * 12 ) / 10 );
        if ( cffface->height < cffface->ascender - cffface->descender )
          cffface->height = (FT_Short)( cffface->ascender - cffface->descender );

        cffface->underline_position  =
          (FT_Short)( dict->underline_position >> 16 );
        cffface->underline_thickness =
          (FT_Short)( dict->underline_thickness >> 16 );

        /* retrieve font family & style name */
        cffface->family_name = cff_index_get_name( cff, face_index );
        if ( cffface->family_name )
        {
          char*  full   = cff_index_get_sid_string( cff,
                                                    dict->full_name );
          char*  fullp  = full;
          char*  family = cffface->family_name;
          char*  family_name = NULL;

          remove_subset_prefix( cffface->family_name );

          if ( dict->family_name )
          {
            family_name = cff_index_get_sid_string( cff,
                                                    dict->family_name );
            if ( family_name )
              family = family_name;
          }

          /* We try to extract the style name from the full name.   */
          /* We need to ignore spaces and dashes during the search. */
          if ( full && family )
          {
            while ( *fullp )
            {
              /* skip common characters at the start of both strings */
              if ( *fullp == *family )
              {
                family++;
                fullp++;
                continue;
              }

              /* ignore spaces and dashes in full name during comparison */
              if ( *fullp == ' ' || *fullp == '-' )
              {
                fullp++;
                continue;
              }

              /* ignore spaces and dashes in family name during comparison */
              if ( *family == ' ' || *family == '-' )
              {
                family++;
                continue;
              }

              if ( !*family && *fullp )
              {
                /* The full name begins with the same characters as the  */
                /* family name, with spaces and dashes removed.  In this */
                /* case, the remaining string in `fullp' will be used as */
                /* the style name.                                       */
                style_name = cff_strcpy( memory, fullp );

                /* remove the style part from the family name (if present) */
                remove_style( cffface->family_name, style_name );
              }
              break;
            }
          }
        }
        else
        {
          char  *cid_font_name =
                   cff_index_get_sid_string( cff,
                                             dict->cid_font_name );

          /* do we have a `/FontName' for a CID-keyed font? */
          if ( cid_font_name )
            cffface->family_name = cff_strcpy( memory, cid_font_name );
        }

        if ( style_name )
          cffface->style_name = style_name;
        else
          /* assume "Regular" style if we don't know better */
          cffface->style_name = cff_strcpy( memory, (char *)"Regular" );

        /*******************************************************************/
        /*                                                                 */
        /* Compute face flags.                                             */
        /*                                                                 */
        flags = (FT_UInt32)( FT_FACE_FLAG_SCALABLE   | /* scalable outlines */
                             FT_FACE_FLAG_HORIZONTAL | /* horizontal data   */
                             FT_FACE_FLAG_HINTER );    /* has native hinter */

        if ( sfnt_format )
          flags |= (FT_UInt32)FT_FACE_FLAG_SFNT;

        /* fixed width font? */
        if ( dict->is_fixed_pitch )
          flags |= (FT_UInt32)FT_FACE_FLAG_FIXED_WIDTH;

  /* XXX: WE DO NOT SUPPORT KERNING METRICS IN THE GPOS TABLE FOR NOW */
#if 0
        /* kerning available? */
        if ( face->kern_pairs )
          flags |= (FT_UInt32)FT_FACE_FLAG_KERNING;
#endif

        cffface->face_flags = flags;

        /*******************************************************************/
        /*                                                                 */
        /* Compute style flags.                                            */
        /*                                                                 */
        flags = 0;

        if ( dict->italic_angle )
          flags |= FT_STYLE_FLAG_ITALIC;

        {
          char  *weight = cff_index_get_sid_string( cff,
                                                    dict->weight );

          if ( weight )
            if ( !ft_strcmp( weight, "Bold"  ) ||
                 !ft_strcmp( weight, "Black" ) )
              flags |= FT_STYLE_FLAG_BOLD;
        }

        /* double check */
        if ( !(flags & FT_STYLE_FLAG_BOLD) && cffface->style_name )
          if ( !ft_strncmp( cffface->style_name, "Bold", 4 )  ||
               !ft_strncmp( cffface->style_name, "Black", 5 ) )
            flags |= FT_STYLE_FLAG_BOLD;

        cffface->style_flags = flags;
      }

#ifndef FT_CONFIG_OPTION_NO_GLYPH_NAMES
      /* CID-keyed CFF fonts don't have glyph names -- the SFNT loader */
      /* has unset this flag because of the 3.0 `post' table.          */
      if ( dict->cid_registry == 0xFFFFU )
        cffface->face_flags |= FT_FACE_FLAG_GLYPH_NAMES;
#endif

      if ( dict->cid_registry != 0xFFFFU && pure_cff )
        cffface->face_flags |= FT_FACE_FLAG_CID_KEYED;

      /*******************************************************************/
      /*                                                                 */
      /* Compute char maps.                                              */
      /*                                                                 */

      /* Try to synthesize a Unicode charmap if there is none available */
      /* already.  If an OpenType font contains a Unicode "cmap", we    */
      /* will use it, whatever be in the CFF part of the file.          */
      {
        FT_CharMapRec  cmaprec;
        FT_CharMap     cmap;
        FT_UInt        nn;
        CFF_Encoding   encoding = &cff->encoding;

        for ( nn = 0; nn < (FT_UInt)cffface->num_charmaps; nn++ )
        {
          cmap = cffface->charmaps[nn];

          /* Windows Unicode? */
          if ( cmap->platform_id == TT_PLATFORM_MICROSOFT &&
               cmap->encoding_id == TT_MS_ID_UNICODE_CS   )
            goto Skip_Unicode;

          /* Apple Unicode platform id? */
          if ( cmap->platform_id == TT_PLATFORM_APPLE_UNICODE )
            goto Skip_Unicode; /* Apple Unicode */
        }

        /* since CID-keyed fonts don't contain glyph names, we can't */
        /* construct a cmap                                          */
        if ( pure_cff && cff->top_font.font_dict.cid_registry != 0xFFFFU )
          goto Exit;

#ifdef FT_MAX_CHARMAP_CACHEABLE
        if ( nn + 1 > FT_MAX_CHARMAP_CACHEABLE )
        {
          FT_ERROR(( "cff_face_init: no Unicode cmap is found, "
                     "and too many subtables (%d) to add synthesized cmap\n",
                     nn ));
          goto Exit;
        }
#endif

        /* we didn't find a Unicode charmap -- synthesize one */
        cmaprec.face        = cffface;
        cmaprec.platform_id = TT_PLATFORM_MICROSOFT;
        cmaprec.encoding_id = TT_MS_ID_UNICODE_CS;
        cmaprec.encoding    = FT_ENCODING_UNICODE;

        nn = (FT_UInt)cffface->num_charmaps;

        error = FT_CMap_New( &FT_CFF_CMAP_UNICODE_CLASS_REC_GET, NULL,
                             &cmaprec, NULL );
        if ( error && FT_Err_No_Unicode_Glyph_Name != error )
          goto Exit;
        error = FT_Err_Ok;

        /* if no Unicode charmap was previously selected, select this one */
        if ( cffface->charmap == NULL && nn != (FT_UInt)cffface->num_charmaps )
          cffface->charmap = cffface->charmaps[nn];

      Skip_Unicode:
#ifdef FT_MAX_CHARMAP_CACHEABLE
        if ( nn > FT_MAX_CHARMAP_CACHEABLE )
        {
          FT_ERROR(( "cff_face_init: Unicode cmap is found, "
                     "but too many preceding subtables (%d) to access\n",
                     nn - 1 ));
          goto Exit;
        }
#endif
        if ( encoding->count > 0 )
        {
          FT_CMap_Class  clazz;

          cmaprec.face        = cffface;
          cmaprec.platform_id = TT_PLATFORM_ADOBE;  /* Adobe platform id */

          if ( encoding->offset == 0 )
          {
            cmaprec.encoding_id = TT_ADOBE_ID_STANDARD;
            cmaprec.encoding    = FT_ENCODING_ADOBE_STANDARD;
            clazz               = &FT_CFF_CMAP_ENCODING_CLASS_REC_GET;
          }
          else if ( encoding->offset == 1 )
          {
            cmaprec.encoding_id = TT_ADOBE_ID_EXPERT;
            cmaprec.encoding    = FT_ENCODING_ADOBE_EXPERT;
            clazz               = &FT_CFF_CMAP_ENCODING_CLASS_REC_GET;
          }
          else
          {
            cmaprec.encoding_id = TT_ADOBE_ID_CUSTOM;
            cmaprec.encoding    = FT_ENCODING_ADOBE_CUSTOM;
            clazz               = &FT_CFF_CMAP_ENCODING_CLASS_REC_GET;
          }

          error = FT_CMap_New( clazz, NULL, &cmaprec, NULL );
        }
      }
    }

  Exit:
    return error;

  Bad_Format:
    error = CFF_Err_Unknown_File_Format;
    goto Exit;
  }

  FT_LOCAL_DEF( void )
  cff_face_done( FT_Face  cffface )         /* CFF_Face */
  {
    CFF_Face      face = (CFF_Face)cffface;
    FT_Memory     memory;
    SFNT_Service  sfnt;

    if ( !face )
      return;

    memory = cffface->memory;
    sfnt   = (SFNT_Service)face->sfnt;

    if ( sfnt )
      sfnt->done_face( face );

    {
      CFF_Font  cff = (CFF_Font)face->extra.data;

      if ( cff )
      {
        cff_font_done( cff );
        FT_FREE( face->extra.data );
      }
    }
  }

  FT_LOCAL_DEF( FT_Error )
  cff_driver_init( FT_Module  module )
  {
    FT_UNUSED( module );

    return CFF_Err_Ok;
  }

  FT_LOCAL_DEF( void )
  cff_driver_done( FT_Module  module )
  {
    FT_UNUSED( module );
  }

/* END */


text:
Home Featured Editorials and Opinions
What we know so far: Huawei Mate 20 and Mate 20 Pro
Alexandra Arici
October is going to be a very interesting month for smartphone lovers, as a handful of Android OEMs are gearing up to introduce new flagship devices. Among them is Huawei who has scheduled a press event in London on October 16, during which the company is expected to officially introduce the Mate 20 series.
The rumor mill hasn't been lacking when it comes to giving us a glimpse of the purported specs and features of the upcoming duo, so below you'll find all the things we (kinda) know about the Mate 20 and Mate 20 Pro collected in one place.
A lot of leaks centering the Mate 20 and its more premium brother, the Mate 20 Pro have come to us via XDA Developers. Most of this info comes from renders of the Mate 20 based on the verified photos from an engineering sample of the phone, which the publication has published.
The images revealed the Mate 20 might come with 6.3-inch LCD display with a very tiny notch on top that appears to be teardrop-shaped (this appears to be quite unlikely at this point).
It was originally believed that the Mate 20 will bring an in-display fingerprint sensor, but according to a leaked image showing a pre-production unit, the flagship will continue to have an authentication sensor on the back.
XDA also revealed the back of the phone will be made of glass, so it will be capable of wireless charging.
Huawei Mate 20 or Mate 20 Pro
As for the Huawei Mate 20 Pro, The Bell reports that the handset will feature a ginormous 6.9-inch OLED notched display, as well as an in-display fingerprint sensor. In this case the notch will be significantly bigger compared to the P20 series due to the Face ID-like technology that it incorporates, in addition the in-ear speaker and front-facing camera.
Mate 20 Pro case render
As we can see in the latest leaked case render leaks, the Mate 20 Pro will benefit from a regular notch. Nevertheless it could be still possible that the regular Mate 20 will come with a teardrop-shaped-one.
Update 09/25/2018: This week we get to take an even clearer look at the Huawei Mate 20 Pro, as seen in this batch of official-looking press renders. According to the images, the phone will be available in Black, Blue and Twilight (via WinFuture).
What are the rumored internal specs?
While Huawei did not launch the Mate 20 and Mate 20 Pro at IFA in Berlin last month, it did announce the SoC on which they are both going to be based: the Kirin 980.
The company debuted its ambitious plans to work with neural networking (or AI) in smartphones last year with the NPU (neural processing unit) in the 970. Now, Huawei is doubling down on its efforts on the Kirin 980, which is based on a 7nm process, by implementing a dual NPU setup.
At launch, Huawei boasted the new processor will feature a 75% improvement in power and 58% upgrade in efficiency over the previous generation. The new Kirin chip also promises major photography performance upgrades.
The Chinese company says the 980 is using a new dual ISP (imagine signal processor) which allows it to be 46% faster at camera processing. Users are also likely to notice improvements in power efficiency (23%) while recording and latency (33%).
According to tech blogger, Ronald Quandt, the Mate 20 will ship out with 6GB of RAM and 128GB of storage. If we are to believe GizmoChina, the more powerful Mate 20 Pro will quite possibly benefit from 8GB of RAM.
There's also this lovely little Toshiba UFS 2.1 128GB memory chip on Huawei's dev boards for the #Kirin980 at #IFA2018. So, 6/128GB as standard for #HuaweiMate20, I guess. There's also a DAC on that board. pic.twitter.com/oAfZTRPu5a
— Roland Quandt (@rquandt) August 31, 2018
When it comes to batteries, once again the XDA Developers suggest the Mate 20 will include a 4,200 mAh battery. As for the Mate 20 Pro, it might come with an even larger power source.
Given that the standard Mate 20 is expected to feature wireless charging, the Mate 20 Pro will also most likely benefit from this option.
Perhaps the most intriguing aspect of the Mate 20 series is going to be the main camera. As it appears, the phones will feature a rounded square camera housing which Huawei teased recently in a video.
The use of the square camera shell indicates at least one of the models will feature a tri-lens rear camera with a lens in each corner and the flash in the fourth. Previously, the P20 Pro also featured a triple camera on the back, but it was arranged in a different fashion.
According to sources, the setup will bring forth an improvement, packing a main 48MP sensor instead of the 40MP one on the P20 Pro. This lens setup combined with the Kirin 980 chip, will offer real-time image processing and scene recognition.
What else should you know about the Mate 20 duo?
Well, some sources have suggested the phones will feature some kind of IP rating for protection against water and dust. Moreover, both will launch with Android 9.0 Pie out of the box, with Huawei's proprietary EMUI skin on top.
On top of that, it appears Hauwei plans to launch a pair of AirPods-like wireless headphones. Called the Freebuds 2 Pro, the audio accessories will support Hi-Res audio, have Google Assistant on board and AI to help with noise reduction.
But the coolest part is that users will apparently be able to recharge their Freebuds by placing them on the back of the Mate 20.
The Huawei Mate 20 duo will all of their upgrades are highly unlikely to be priced the same as their predecessors. The Mate 10 launched with a €700 price tag, while the Pro version was offered for around €800. The US only got the Pro version, which initially retailed for $800.
So will the Mate 20 reach the €1,000 / $1,000 threshold? It's quite possible the Pro model will. Given that Mate phablets are usually more expensive than P series smartphones, and that the P20 Pro sells for around €900, we do expect the Mate 20 duo to be quite expensive. So you better start saving if you want one of these babies!
A slight synesthesiac with a love for words. Follower of all tech trends, daydreamer and art enthusiast. Contact me at [email protected]


text:
Vanni MP alleges conspiracy to derail peace talks
[TamilNet, Friday, 10 May 2002, 17:48 GMT]
A leading MP of the Tamil National Alliance, Mr. 'Selvam' Adaikalanathan, alleged Friday that there is a conspiracy by anti-peace Sinhala nationalist elements in the opposition and in the Sri Lankan armed forces to destabilize the United Front Government and its peace efforts. He said that there are patently systematic moves in sections of the Sinhala media and in the armed forces to discredit the UNF's peace initiative among the Sinhala masses.
"Why is the Sri Lanka Navy continuing to shoot innocent Tamils in the Trincomalee district and provoke the LTTE into retaliation in the eastern seas?" he asked, referring to the second incident in recent weeks in which the SLN Friday shot Tamil fishermen in Trincomalee.
Speaking on the debate in the Sri Lankan Parliament on the cease-fire agreement between Colombo and the Liberation Tigers Thursday, Mr. Adaikalanathan said: "The government should investigate the ramifications of the Navy's allegations regarding the incident in Vaharai last week".
"The allegations are clearly aimed at destabilising the United National Front's peace effort. Does the Navy want us to believe that it recovered 12 boxes of 122 mm artillery rounds and RPG shells intact from a boat that blew up? Either the ammunition was made of plastic or the Navy is lying. I am a military trained person. A small charge is enough to blow up a box of artillery shells. The hon. minister of defence can ascertain for himself the fact. Sections of the media quoted the military as saying that the ammo boxes were found floating. This is an insult to our common sense."
"I think the Hon. Minister of Defence knows the weight of an artillery round. Why are such ludicrously blatant fabrications being given wide publicity in sections of the media? The UNF government should investigate whether these are all part of a conspiracy to destabilise the peace process and eventually threaten the UNF leadership itself."
"The provocateurs and their supporters in sections of the Sinhala and English media should understand that their ruses to mislead the Sinhala masses into falling prey to their war profiteering cannot weaken our determination to work for peace," Mr. Adaikalanathan said.
10.05.02 Tamil fisherman wounded in navy firing
03.05.02 Muslim, Sinhala fishermen describe SLN attack
Email this article Print this article Feedback on this article
http://www.tamilnet.com/art.html?catid=13&artid=6919


Our game servers will be stopped on June 30 at 03:30 CEST for ~ 30 minutes.
Just a few technical fixes, don`t worry!
Oh let's try to be optimistic!
I also want to know, I was in 19 minutes and out of nowhere it was 46 !!


Working with me is quite easy. I'm used to working with Purchaser's all over the world. We can use email or telephone. Whatever works best for you.
main concerns are, what your time frame is and what specific inspections are you interested in.
2. We agree on a price and schedule for getting the inspection completed. You would then contact your agent with your selected time so he/she can ensure entry.
3. I'll do project research which includes pulling permits to determine age of components, size and age of structure.
4. I can meet you at the property at the scheduled time where I can walk you through and help you understand the conditions observed and talk about maintenance.
5. All reports are produced electronically, using my phone and ipad. Photos are embedded into report and deficiencies listed. Report will be uploaded to your email before end of business day. All home inspections include a free wind mitigation verification report.
6. Full payment is required before reports are released.


Getting busted for coming home late becomes the least of Quint Silver's problems when he finds himself outside, beneath a full moon, in the middle of a blackout. Ethereal, humanoid creatures rise from every shadow he crosses, intent on smothering him.
With Chelsea Price, the childhood friend he secretly loves, they discover the truth behind his mother's death and begin to uncover the mysteries surrounding his unpredictable gift. If his paranoid father discovers them Quint will be grounded for the rest of his teenage life.
Adding to his problems, Quint has caught the interest of a magical society hidden within their community. Two clans of warring supernatural beings are vying for dominance, recruiting every soldier they can find. And they want him.


text:
Climate change deal to keep rises under 2C
French President Francois Hollande has urged countries to adopt the first universal climate change deal in history, telling them it would be a major leap for mankind.
In a rhetoric-laden speech that appeared to be aimed at those nations resistant to a deal, he called on ministers to make a choice for their country, their continent, "but also a choice for the world", so December 12, 2015 goes down in history.
The final draft of the deal, negotiated at United Nations talks in Paris, includes a target to keep temperature rises "well below" 2C and commits to strive to curb increases to 1.5C.
It also includes a five-year review system to increase ambition on cutting emissions, differentiation between countries as to their responsibilities for action, and finance for poor countries to deal with rising temperatures.
Mr Hollande said: "This text will, if you should so decide, be the first universal agreement in history on climate change."
He told them that, in the coming hours: "You will make a choice for your country, for your continent, but also a choice for the world. It will be a major leap for mankind."
He added: "History is here."
French foreign minister Laurent Fabius, who is chairing the climate talks, said: "It's my deep conviction that we have come up with an ambitious and balanced agreement".
He told ministers: "You are going to be deciding a historic agreement. The world is holding its breath, it's counting on all of us."
Delegates applauded the start of the meeting of the Paris Committee at the two-week talks, which have overrun their official deadline yesterday.
If adopted the deal will be the world's first comprehensive climate agreement with all countries taking action to tackle the problem.
The text is still being translated and will be presented to delegates shortly, before a meeting of the whole conference scheduled for 3.45pm Paris time (2.45pm Irish time).
Minister for the Enviroment Alan Kelly has described the Climate Change Summit in Paris as probably the most important meeting in the history of the world.
Speaking on RTÉ's Marian Finuchan programme Minister Kelly said he believed the deal done will be ambitious.
"It is certainly something that is going to have to be actioned on very quickly but it is a necessity.
"Look at what is happening with flooding in Ireland, it is unprecedented. It is a direct causality," he said.
rte.ie
COP21: Climate deal final draft 'agreed' in Paris...
Organizers of climate talks in Paris have released details of a proposed landmark deal to curb climate change...
Αναρτήθηκε από antixronos στις Saturday, December 12, 2015
Ετικέτες climate change, drought, floods, global warming, mankind, Paris, planet, temperatures


text:
The Thoughtful Animal
Editor's Selections: Throwing Words, Deceptive Spider Sex, and Littering
By Jason G. Goldman on April 3, 2012
Here are my Research Blogging Editor's Selections for this week:
Did language emerge from the neural systems supporting aimed throwing? The argument, explained by Andrew Wilson, is more reasonable than you might expect.
Sex, Lies and... Spider Silk? At The Scorpion and the Frog, blogger Miss Behavior discusses the nursery web spider's guide to love and sex.
Here's an easy way to modify your messy roommate's behavior: make the place smell like citrus. At BPS Research Digest, find out why: Passengers litter less on carriages that smell of cleaning product.
Jason G. Goldman
Jason G. Goldman is a science journalist based in Los Angeles. He has written about animal behavior, wildlife biology, conservation, and ecology for Scientific American, Los Angeles magazine, the Washington Post, the Guardian, the BBC, Conservation magazine, and elsewhere. He contributes to Scientific American's "60-Second Science" podcast, and is co-editor of Science Blogging: The Essential Guide (Yale University Press). He enjoys sharing his wildlife knowledge on television and on the radio, and often speaks to the public about wildlife and science communication.
Gratitude: Uniquely Human or Shared with Animals?
Hurricanes: Bad for People, Good for Dolphins
Where Did The Thoughtful Animal Go?
Sunday Photoblogging: Locals, Tourists, and Data
Published! Cortical Thickness, Reading Skill, and Reading Experience


text:
Women In Parliament Join Forces
Posted on July 22, 2022 by Kaitlyn Aliperti
Many Democratic Representatives were among 17 members of Congress who were among the dozens of abortion rights protesters who were detained outside the Supreme Court on Tuesday during a rally calling for immediate action to protect abortion in the wake of the court's decision to overturn Roe v. Wade last month. Amongst the members of congress were members like Cori Bush, Ilhan Omar, and Alexandria Ocasio-Cortez.
People were arrested for crowding, obstructing, or incommoding, a D.C. code frequently used when detaining protestors during peaceful, organized, and planned acts of civil disobedience like on the march on Tuesday, 35 persons were detained. According to Capitol Police spokesperson Tim Barber, those detained were issued tickets and released immediately, as is customary at events like this.
Among those arrested were members of the Democratic Women's Caucus and including Assistant House Speaker Katherine M. Clark and Representatives Bush, Omar, Ayanna Pressley, Barbara Lee, and Carolyn B. Maloney, according to their offices. 13 states had "trigger prohibitions" that were set to go into effect within 30 days of the decision to overturn Roe at the time. On the day the decision was announced, the surgery was prohibited in at least eight states.
According to the testimonies of clinicians in numerous areas where new rules have taken effect, common consequences, such as incomplete miscarriages and ectopic pregnancies, have now been investigated, delayed, and even rejected. With a giant orange banner that reads, "Our Bodies," the pro-abortion demonstrators on Tuesday marched from the U.S. Capitol to the sidewalk in front of the Supreme Court.
The courts A live feed of the protest was provided by the Center for Popular Democracy Action, a conglomerate of liberal organizations, and it was titled "Our Democracy." When they arrived, they stayed on the roadway in defiance of police orders to disperse or face arrest. "We won't go back," the group chanted as other people sat in the street. This protest will not be the first of many to come, and the women in parliament are showing their support to the rest of America.
This entry was posted in Politics and tagged democracy, Democratic Women's Caucus, liberal organizations, protesters, roe v wade, US, women, women in parliament.
Kaitlyn Aliperti
Carleton University student in Public Affairs and Policy Management
Monarch Butterflies Are Now At Risk.
You Might Need To Grow A Tree.


Welcome to Camo Warehouse - Australia's leading supplier of Camo Clothing & Accessories!
On all website orders over $50!
Camo Warehouse is a leading supplier of hunting clothing in Australia, offering an extensive range of hunting apparel which includes high quality brands such as Hunters Element, Ridgeline, Spika and 5.11. Whether you are looking for a hunting jacket or hunting pants, Camo Warehouse have an excellent selection, with all the hunting accessories you could ever need under one roof, we are the single shop solution for hunting gear in Australia. Stylish women's Camo clothing affords the best protection, while keeping you dry and warm in all weather conditions. Selected hunting jackets are designed with stealth in mind, with special fibres that enable silent movement, while the double layer fabric keeps you ventilated.
Camo Warehouse offer customers several buy now-pay later options, which include Afterpay that allows you to spread the cost over four equal payments. Simply choose Afterpay at the checkout, select the credit or debit card you wish to use and the cost is automatically divided into four equal payments. Alternatively, you can create a Zip account, which allows you to order now and pay later, with flexible interest-free payments that can be weekly, fortnightly, or monthly. Zip allows for multiple purchasing, so you can add to your account at a later date, while instant approval allows for the goods to be despatched immediately. Whatever your hunting requirements, Camo Warehouse have an extensive selection of clothing and accessories at very affordable prices.
Our extensive selection of hunting clothes and accessories are very competitively-priced, with a range of quality hunting shirts and hunting pants with a Camo pattern that helps you to blend with the background. For summer hunting, a camo T-shirt offers comfortable camouflage in the heat, while Camo jackets are ideal for cooler weather and are light and easily packed away in the heat of the day. At Camo Warehouse, we only stock the best brands and our buy now pay later options ensure that you can kit yourself out for your next hunting adventure when it matters.
At Camo Warehouse, we have a great selection of gaiters, gloves, socks and headwear to complete your hunting outfit. Venomous snakes are always a danger, which is why you should always wear gaiters and boots for the ultimate protection. We also stock a selection of packs and bags to ensure you can comfortably carry all you need on your next hunting trip. Whether you require an over the shoulder bag or are venturing into the bush for a few days with a complete backpack, we have you covered. Stylish and functional gun bags keep your weapon safe and dry, while our selection of top quality hunting boots ensure safe footing in all conditions. Let's not forget optics - our extensive section of Bushnell rifle scopes will help you to hit your target every time – along with a selection of rangefinders to ensure accurate distance gauging. Binoculars are another essential item to include, making sure you spot the target well in advance and can make the ideal approach.
Whatever your hunting needs, we at Camo Warehouse have everything you need and with several zero interest payment options, you can kit yourself out for that next hunting trip and spread the payments to suit your lifestyle. Successful hunting is very much down to your clothing and equipment and with Australia's leading online supplier of all things connected with hunting, Camo Warehouse are the go-to people for all your hunting requirements.