We studied prospectively the midlife handgrip strength, living habits, and parents' longevity as predictors of length of life up to becoming a centenarian. The participants were 2,239 men from the Honolulu Heart Program/Honolulu–Asia Aging Study who were born before the end of June 1909 and who took part in baseline physical assessment in 1965–1968, when they were 56–68 years old. Deaths were followed until the end of June 2009 for 44 years with complete ascertainment. Longevity was categorized as centenarian (≥100 years, n = 47), nonagenarian (90–99 years, n = 545), octogenarian (80–89 years, n = 847), and ≤79 years (n = 801, reference). The average survival after baseline was 20.8 years (SD = 9.62). Compared with people who died at the age of ≤79 years, centenarians belonged 2.5 times (odds ratio (OR) = 2.52, 95% confidence interval (CI) = 1.23–5.10) more often to the highest third of grip strength in midlife, were never smokers (OR = 5.75 95% CI = 3.06–10.80), had participated in physical activity outside work (OR = 1.13 per daily hour, 95% CI = 1.02–1.25), and had a long-lived mother (≥80 vs. ≤60 years, OR = 2.3, 95% CI = 1.06–5.01). Associations for nonagenarians and octogenarians were parallel, but weaker. Multivariate modeling showed that mother's longevity and offspring's grip strength operated through the same or overlapping pathway to longevity. High midlife grip strength and long-lived mother may indicate resilience to aging, which, combined with healthy lifestyle, increases the probability of extreme longevity.
Recently, a study showed that those who survived 100 years needed less hospital care at a given age than their shorter lived contemporaries (Engberg et al. 2009), supporting centenarians as a model for healthy aging. Thus far, centenarian phenotype has been described, but studies have mostly been cross-sectional (Willcox et al. 2006a). Knowledge on early physiological predictors of exceptional longevity in humans is lacking. An appropriate approach to study predictors of human longevity is to follow a representative cohort of people studied earlier in life until their death, including cohort members who died at any age as well as long-lived groups of interest.
Long-lived people may have physiological reserve, which may be observed already in youth or midlife and which makes them less vulnerable to diseases, disability, and mortality in old age. Handgrip strength is a widely used measure of total body strength and a marker of physiological reserve during aging, with good strength protecting from disability and mortality (Rantanen et al. 1999, 2000). Handgrip strength declines at an approximate annual rate of 1% after midlife and may be a good biomarker of aging (Rantanen et al. 1998). Grip strength likely reflects the combined influences of genetic predisposition, acquired modifications of physical constitution, aging processes, and chronic diseases (Rantanen et al. 2003). Part of individual differences in handgrip strength may be explained by genetic and environmental factors also influencing aging and longevity (Rantanen et al. 2003). Genetic factors underlie 14–60% of individual differences in grip strength (Reed et al. 1991; Frederiksen et al. 2002; Tiainen et al. 2004; Silventoinen et al. 2008). Heritability of longevity ranges from 10% to 50% (Herskind et al. 1996; Mitchell et al. 2001; Yashin et al. 2000; Kenyon 2010). It is possible that there is overlap in genetic influences underlying grip strength and mortality. This is indirectly supported by studies showing that offspring of long-lived parents had, in their later life, better handgrip strength and less chronic diseases than offspring of parents with average life span (Frederiksen et al. 2002).
In addition to poor health and higher age per se, other well-known risk factors that strongly influence human mortality include physical activity (Hakim et al. 1988; Carlsson et al. 2007; Senchina and Kohut 2007; Nicklas et al. 2008; Autenrieth et al. 2009), smoking (Curb et al. 1990; Ferrucci et al. 1999), socioeconomic position (Rask et al. 2009), and social integration (Rask et al. 2009; Ford et al. 2006). These factors correlate with survival risk at least partly through their influence on biological processes influencing aging, such as inflammation, and risk for chronic age-related diseases (Jylhä et al. 2007; Kaptoge et al. 2010; Loucks et al. 2006; Willcox et al. 2006b).
We studied grip strength measured at the age of 56–68 years as a predictor of remaining length of life up to centenarian years among men born 1900–1909. We also assessed whether longevity of parents, smoking, and physical activity correlate with length of life and examined the possible role of these factors in underlying the association of grip strength with longevity.
The participants are from the Honolulu Heart Program/Honolulu–Asia Aging Study which began in 1965. Briefly, the World War II Selective Service Registration file was used to identify 12,417 possibly eligible men of Japanese ancestry born from 1900 to 1919 and living on Oahu. In 1965–1968, 8,006 men participated in Exam 1. Of them, 2,239 were included in the current study based on birth date of June 1909 or earlier. Thus, at least 100 years had passed since the birth of all participants by June 2009, when the vital status was last updated. The accuracy of the birth year in the database was 99.9% when contrasted against social security information. At the baseline, the average age of participants was 62 years (range 56–68). Mortality records were collected from the beginning of the study based upon a review of newspaper obituaries and listings of death certificates filed with the Hawaii State Department of Health. Survival time was calculated as the time between Exam 1 and the date of death. In the analyses of survival times, the death dates for the surviving 13 centenarians were replaced with the date at the end of the surveillance. For further analyses, the participants were categorized into four groups based on their longevity: ≤79 years (reference), 80–89 years (octogenarian), 90–99 years (nonagenarian), and 100 or more years (centenarian).
All procedures of the study were in accordance with institutional guidelines and approved by the Institutional Review Board of Kuakini Medical Center. Written informed consent was obtained from all study participants or family representatives if participants were unable to provide consent.
Handgrip strength was measured using the Smedley Hand Dynamometer (Stoelting, Wood Dale, IL). While sitting, participant extended his arm in front of him on the table and gripped the dynamometer. If necessary, the tester held the dynamometer steady. The width of the handle was adjusted so that the second phalanx was against the inner stirrup. Three trials, with brief pauses, were allowed for each hand alternately. Subjects were encouraged to exert their maximal grip. The best result was chosen for analyses. In all analyses, grip strength was adjusted for height, weight, and age at Exam 1. Body weight and height were measured directly and expressed as kilograms and centimeters, respectively.
Socioeconomic status at Exam 1 was described on the basis of level of education (1 = primary school or less; 2 = junior or senior high school; 3 = technical school or university) and usual occupation (1 = physically heavy work, unskilled, semiskilled, skilled or farming; 2 = light work, sales or clerical, managerial, professional). Marital status was categorized as married vs. never married, widowed or divorced. The participants were asked about how many hours they spent in a day doing heavy activity outside work such as shoveling or digging or moderate activity such as gardening or carpentry. The hours were summed up to describe the physical activity level during leisure. Smoking status was categorized as follows: 1 = never smoked; 2 = former or current smoker. Pack years of smoking were calculated based on the number of cigarettes smoked per day and years smoked.
Age of mother and father was self-reported at Exam1 and at Exam 4 (1991–1992). The age at death remained uncertain for 251 mothers and 64 fathers. For them, their reported age at Exam 1 or 4 was used in the analyses. Excluding these people did not materially change the results. For logistic regression analyses, we categorized mother's age as follows: 60 years or less, 61–79 years, and 80 years and older. There were 324 participants whose mother was dead at Exam 1 and who had again reported her age at death at Exam 4, 25 years later. The intra-class correlation (ICC) between these two measures was 0.876. For father's longevity, the ICC was 0.907 (n = 413). Reported parental longevity was not biased as the correlation between birth year of the participant and mother's (r = 0.02, p > 0.05) or father's age (r = 0.014, p > 0.05) was practically zero.
Information about prevalent chronic conditions was collected based on self-reports and clinical health examination at Exam 1. Data on present vs. absent diabetes, stroke, high blood pressure (140/100 mmHg), heart attack, angina pectoris, other heart disease, and gout are analyzed here.
General linear models were used to compare survival times between categories of baseline predictors and to compare baseline predictors as continuous variables between longevity groups. Potential confounders such as baseline age were added into the models as covariates and marginal means were reported. Disease prevalence and other categorical baseline variables were compared between longevity groups by cross-tabulation. Logistic regression models were used to assess the odds of becoming a centenarian (case) vs. dying at the age of 79 years or earlier (control) in tertiles of baseline grip strength and other predictor categories. The odds for surviving to become a nonagenarian or octogenarian were computed similarly. Several multiple logistic regression models were constructed to examine whether the other baseline predictors would explain the potential effect of grip strength on becoming a centenarian when compared with those who died at the age of 79 or earlier. First, each variable was added to the model one at a time, and the changes in the odds of highest vs. lowest and middle vs. lowest grip strength tertile were observed. Finally, all variables were included in the model.
Of the 2,239 participants who had been born at least 100 years ago, 2,226 participants (99.4%) had died and their length of life was determined. Altogether, 47 people became centenarians. The average length of survival after baseline was 20.8 years (SD = 9.62) and mean length of life was 82.4 years (SD = 9.4). The age at baseline (62.0 years, SE = 0.60, range 56–68), educational background (primary school or less 13%, junior or senior high school 75%, technical school or university 12%) or type of work (heavy 21% or light 79%) did not differ according to longevity. In midlife, the proportions of never married, separated, or widowed men were 13% for those who lived ≤79 years, 8% for 80–89 years, 9% for 90–99 years, and 8% for centenarians (p = 0.005).
A significant gradient of higher handgrip strength and daily hours in physical activity were observed for increasing longevity (Table 1). The proportion of never smokers from lowest to highest longevity category was 24% for those who died at the age of ≤79 years, 31% for octogenarians, 41% for nonagenarians, and 65% for centenarians (p < 0.001). Long-lived men had more often long-lived mothers than men with shorter lives, but fathers' longevity did not correlate with sons' longevity. Even though the total prevalence of chronic conditions at baseline was low, a statistically significant declining trend for baseline chronic conditions was observed for increasing longevity (Table 2). The most common chronic conditions were diabetes and high blood pressure.
The adjusted length of life was 2.2 years longer among those in the highest tertile of grip strength distribution compared with the lowest third (Fig. 1). If the mother had survived to ≥80 years, the survival of offspring was 2.1 years longer compared with if the mother died at age ≤60 years. For never vs. ever smoking, the difference was 3.1 years. Figure 2 shows the average survival times in groups according to mother's longevity, grip strength, and smoking status. For example, if the participants were in the highest grip strength tertile, their mother had survived ≥80 years, and they had never smoked, the average remaining survival time after baseline was 27.0 years (SE = 1.06). In contrast, for those in the lowest grip strength tertile, whose mothers died at age ≤60 years, and who had smoked, the survival time was 18.1 years (SE = 0.768). We examined all possible predictor interactions on survival, but none were statistically significant, suggesting that their influences may be additive (data not shown). The interactions of baseline age and baseline predictors on length of life were statistically not significant (data not shown).
The centenarians had 2.5 times the odds of having belonged in the highest third of grip strength compared with those who died at the age of ≤79 years. The odds for never smoking were almost six times higher, respectively. Centenarians more than twice as often had a mother who survived 80 years or more than those who died at 79 years or younger (Table 3). Similar gradient associations but lower odds were observed for nonagenarians and octogenarian when compared with those who died at the age of 79 years or earlier. When we adjusted the grip strength model for each variable in Table 3 one at a time, we observed that adding smoking in the model increased the OR for becoming centenarian in the highest (OR = 3.03 95% CI = 1.42–6.42) and middle (OR = 2.82, 95% CI = 1.10–7.21) grip strength tertiles due to the higher proportion of smokers in them. Adding mother's age in the model decreased the grip strength OR's to 2.43 (95% CI = 1.16–5.08) and 1.98 (95% CI = 0.81–4.85), respectively, suggesting that both of these variables operated through the same or overlapping pathways to longevity. Adjustment for other variables or including all variables in the model did not cause marked changes. Similarly, only minor changes in the OR's of the grip strength tertiles in nonagenarian and octogenarian models were observed after corresponding adjustments in the models.
The increasing longevity of populations will have enormous political and economic consequences (Olshansky et al. 2009). Centenarians may have delayed onset of disease and disability (Engberg et al. 2009; Willcox et al. 2007). Consequently, research on exceptional longevity will help us understand healthy aging and eventually to design interventions to minimize disease, disability, and premature mortality. The main results of our study following a cohort of men for 44 years until their death were that having good muscle strength, being physically active, not smoking, and absence of chronic conditions at the age of 62 years, as well as having a long-lived mother each contributed 1 to 3 years for the length of remaining life. The same variables also correlated with the likelihood of becoming a centenarian. These findings expand the earlier analyses showing that low midlife grip strength predicts an increased risk of disability and death (Rantanen et al. 1999, 2000; Cooper et al. 2010). Multivariate analyses suggested that mother's longevity and son's grip strength and longevity may be explained partly by the same genetic or environmental factors. This has not been reported before. An earlier study among people around the age of 70 observed that for every additional 10 years their parents had lived, their grip strength increased by 0.32 kg (95% CI = 0.00–0.63), and the risk of having, e.g., diabetes or hypertension decreased by approximately 20% (Frederiksen et al. 2002).
Contrary to earlier reports, paternal longevity did not correlate with son's longevity in our data (Kemkes-Grottenthaler 2004). It is possible that during the lifetime of the fathers of our participants, certain influences related to premature mortality may have been experienced more often in males than in females. Alternatively, greater maternal longevity may be adaptive for the enhancement of offspring survival and reproduction. Interestingly, mitochondrial genes have been found to be potential contributors to human longevity and are heritable solely through maternal lines (De Benedictis et al. 1999).
Regardless of physiological reserve marked by grip strength or inheritance marked by maternal longevity, longevity was increased with physical activity and reduced with smoking—and, importantly, these influences were additive. Longevity appears in this cohort to be a result of accumulation of good inheritance, health, physiological reserve, and lifestyle choices. Our findings validate conclusions based on earlier cross-sectional or retrospective studies among centenarians (Engberg et al. 2009; Christensen et al. 2009; Hagberg and Samuelsson 2008).
The current cohort comprises a high proportion of exceptionally long-lived individuals. The majority of the overall birth cohort 1900–1909 had died before 1965 when the study started as for that cohort, the average life expectancy in the USA was 47.6–52.5 years (Arias 2004). Nevertheless, in the current cohort, becoming a centenarian was much rarer than anticipated in future cohorts. Some project that most babies born since 2000 in countries with long life expectancies will celebrate their 100th birthdays (Christensen et al. 2009).
Contrary to earlier studies, indicators of socioeconomic disparities did not correlate with longevity in the current study. Possibly, in our cohort, the living conditions and health care availability did not differ extensively according to social position. At the beginning of the study, the participants had already exceeded the average life span of their birth cohort and may represent a selected group of survivors where social position no longer correlated with survival.
There are several strengths to this study: the prospective design and over four decades of follow-up, essentially complete data on life span for a large number of men, and no study attrition. Importantly, handgrip strength an objective, validated measure of physiologic reserve and a potential biomarker of aging, and other pertinent data, were collected in a standardized manner at the baseline when participants were of average 62 years of age. Within a birth cohort, we compared the long-lived groups of interest with a shorter life span reference group, and therefore our study is not confounded by cohort effects. Finally, we were able to study actual years lived rather than estimate expected survival times.
The limitations of the study are that it comprised only men, only one ethnic group, and the parental longevity was reported by the participants and was incomplete for approximately 10%. On the other hand, utilizing a monoethnic group avoids problems inherent in many studies of human longevity, such as population stratification artifact. The cohort had, as a group, exceeded the average male life span of their US birth cohort when entering the study. The selective mortality which took place before this study started may have caused an underestimation rather than overestimation of the associations studied. The baseline of the current study was collected in the 1960s, which explains why data on several promising predictors of health and longevity under intensive research today were not collected. The prevalence of some mortality risk factors at the baseline of this study during the 1960s was at a different level than today, which may have resulted in the underestimation of the importance of some risk factors prevalent today. For example, the prevalence of obesity (body mass index of 30 or more) was much lower among our baseline participants (1%) than currently among white middle-aged men in the USA (34%; Flegal et al. 2010). Unfortunately, we were unable to study healthy aging phenotypes as outcomes. However, some studies show that among people surviving to very old age, disease onset is delayed (Engberg et al. 2009). Consequently, the current analyses on length of life most likely provide us with information about healthy aging as well.
The current findings suggest that having good grip strength and a long-lived mother may indicate physiological reserve and inherited resilience to aging processes, which may be enhanced with physical activity and diminished with smoking. The probability to survive to extreme old age is a sum of both constitutional and behavioral factors. People with less physiological resilience to aging process may enhance their longevity by healthy lifestyle choices. Our study provides unique information useful to scientist studying genetics of aging processes (Karasik 2011), while we at the same time have a public health message for individuals and practitioners who wish to promote healthy aging.
We are indebted to the participants in the Honolulu–Asia Aging Study for their outstanding commitment and cooperation and to the entire Honolulu–Asia Aging Study staff for their expert and unfailing assistance. This work was financially supported by Academy of Finland and grants 5U01 AG19349, and 5UO1 AG017155, R01 AG027060-01) and contract N01-AG-4-2149 from the NIA, National Institutes of Health, and by the Office of Research and Development, Medical Research Service, Department of Veterans Affairs.


Join the conversation on how culture and digital technology can work better together.
#CultureisDigital is a conversation between Government, the cultural sector and tech companies, led by DCMS. It stems from our commitment in the Culture White Paper to review the digitisation of our public collections and enhance online cultural experiences.
The project looks at how culture and digital technology can work together to drive audience engagement, unleash the creative potential and boost the capability of cultural organisations.
Access and Participation: How can digital content and distribution support new forms of engagement and attract more diverse audiences?
Cultural Infrastructure: How can we position the UK as a world leader in digitised collections and digital cultural content?
Cultural Content and Technology: How can we encourage innovation between content and technology?
Skills, IP and Business Models: How can we build the digital skills and capability needed to drive innovation and ensure financial resilience?
Have your say at cultureisdigital.uk and follow the conversation on social media using the #CultureisDigital hashtag. You can also share your case studies and examples of work already being delivered in this area.
I would appreciate some information on the virtual house walk-through that appears at the 24- to 32-second mark of the video: who did it, and does it represent a real property?
The #CultureIsDigital initiative is excellent, and I look forward to the conversation.


text:
Q: How to prevent import.sql being executed in Spring Boot unit test I have an import.sql file with a few INSERT statements in my classpath. When running my application with profile=devel it's data is being loaded into a postgres db, which is OK so far.
When executing tests with the test profile import.sql is also being triggered for import which leads to "table not found" exceptions. Not sure what the reason is here, but I don't want to use that data for tests anyway.
How can I stop this? Setting hibernate.ddl-auto=none for the test profile does not seem to be a solution as it prevents generation of the schema as well.

A: I think I found a solution that fits me better:
According to http://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html it is possible to provide a data.sql file that inits the DB with data. Usually this would be picked up in every profile and thus populate a test or production environment with the given testdata - Not so nice!
To prevent this I renamed it to populate_db.sql and set spring.datasource.data=populate_db.sql only for the devel profile.

A: You can add an empty "import.sql" file in the "/resources" folder under your "test" folder, e.g. "src/test/resources".
That way, when you run test, hibernate will execute the empty "import.sql" in the "test/resources" folder (instead of executing the actual "import.sql" file in your main folder).

A: As far as I know, you can't configure it. The import.sql file is automatically invoked by Hibernate as soon as you use create-drop or create mode. This is also mentioned by the documentation and has nothing to do with Spring:

In addition, a file named import.sql in the root of the classpath is executed on startup if Hibernate creates the schema from scratch (that is, if the ddl-auto property is set to create or create-drop).

My guess is that you still want to keep generating your tables in your test scenarios. In that case, you probably want to switch to Spring boot's datasource initialization, by adding a file called schema.sql and data.sql on the classpath.
This file will be picked automatically on startup by Spring boot (only for embedded datasources in Spring boot 2.0), which is also mentioned by the documentation:

Spring Boot can automatically create the schema (DDL scripts) of your DataSource and initialize it (DML scripts). It loads SQL from the standard root classpath locations: schema.sql and data.sql, respectively.

Now, to be able to disable loading data during your test phase, you can work with profiles. For example, with Spring boot 2.x you can disable this by using the following property:
spring.datasource.initialization-mode=never # Property for Spring boot 2.0
spring.datasource.initialize=false # Property for Spring boot 1.0

Be aware, this disables both the schema creation, and the data loading SQL files. Disabling only the data.sql file is not possible, but can be achieved by using a simple trick by renaming the default filename that Spring boot will look for:
spring.datasource.data=somethingelse.sql

If you only configure this property during your tests, Spring boot will look for a file called somethingelse.sql, and won't pick up your data.sql file. While when running with the dev profile, you discard this property, and Spring boot will look for (and find) data.sql.

An alternative approach that works for both Spring boot's schema.sql/data.sql and Hibernate's import.sql is to work with Maven profiles and to load different classpath folders when running tests. However, I wouldn't recommend doing so, because it makes running tests in IDEs a bit more difficult.

redpajama_set_name: RedPajamaStackExchange


text:
Kickstarter MMORPG From Altis Life Team...
Posted January 6, 2015 by Blaine Smith in News
Kickstarter MMORPG From Altis Life Team Promises VOIP, Life Of Law Or Crime, Politics & More
Asylum Entertainment, spearheaded by John (Paratus) VanderZwet of Altis Life, today launched a Kickstarter campaign for one of the most promising MMO's to hit crowd-funding in months, Identity. Identity is said to be a modern-day, open-world MMORPG that focuses on providing players with freedom of choice in a dynamically generated game world, avoiding the shackles that restrain the traditional MMO game of today.
The Kickstarter has already raised $8,166 CAD in less than 24 hours, but still has some way to go to reach its $150,000 goal The official Kickstarter page for Identity is filled with exciting concepts for the game, a world that promises to give players the freedom to choose more than just a character class and a list of abilities.
Identity's modern-day foundation lays the way for a more realistic setting than the traditional MMO, presenting players with massive variety as they enjoy the life of a career businessman, tackle the dirt of the streets as a member of law enforcement or working in the shadows as a criminal or gun for hire. The developers seem to want to create a world that embodies the levels of freedom and choice available in today's sandbox MMO's, with the huge level of depth and variety provided by the more intricate roleplay based mods of today.
The pure scope of the project is difficult to do justice in simple text format. The above video is one of two available on the Kickstarter page, covering the basic elements and direction of the game while teasing players with potential features and updates.
The team released another video on their YouTube channel, 9 minutes of gorgeous in-game footage with detailed voice-over commentary taking players deeper into the world of Indentity.
Source: Kickstarter
Tags: News, PC News
Blaine "Captain Camper" Smith is one of the original founders of Gamers Heroes. Now operating under the guise of Editor-in-Chief (purely because we felt the position was needed for public relations purposes), he's tasked with a lot of the kind of jobs that would put you to sleep at your desk.
When he's not catching some Zs, you'll likely find him arguing points he knows nothing about, playing the latest rogue-like he'll never complete, or breaking something on the website that never needed fixing.
You can best reach him on Twitter

redpajama_set_name: RedPajamaCommonCrawl


Tablets designed to be integrated with standard desktops such as the Surface will be. Tablets such as the iPad and Galaxy Note....they are very very useful...especially for taking care of things on the fly. The other thing is that most of the tablet business was meant for office functionality. Most average people use them for that or for gaming devices. The prediction it seems is a bit more reasonable.
But alas I am a Luddite and don't adopt early on.


We used digital printing, screen printing, and embroidery for the clothing's designs. Please mention the desirable method of printing as you order.
Kingdom Showcases values the users of our website. Your privacy and trust are very important to us. We recognize that you may be concerned about our collection, use, and disclosure of the personally identifiable information that we collect when you use the website and the services offered on the website .
The designed item (s) that you order will be done in 2-3 (according to the quantity) and will take 2-5 days in shipping (according to your location) – If you need a faster shipping method, let us know at 626-241-0459.
To return a Kingdom Showcases' product: Return the item by USPS mail with your name, address, phone, the invoice sent for reimbursement, and why you want to return it.


text:
// Lexical scanning for BUILD file parser.

package build

import (
	"bytes"
	"fmt"
	"path/filepath"
	"sort"
	"strings"
	"unicode/utf8"
)

// FileType represents a type of a file (default (for .bzl files), BUILD, or WORKSPACE).
// Certain formatting or refactoring rules can be applied to several file types, so they support
// bitwise operations: `type1 | type2` can represent a scope (e.g. BUILD and WORKSPACE files) and
// `scope & fileType` can be used to check whether a file type belongs to a scope.
type FileType int

const (
	// TypeDefault represents general Starlark files
	TypeDefault FileType = 1 << iota
	// TypeBuild represents BUILD files
	TypeBuild
	// TypeWorkspace represents WORKSPACE files
	TypeWorkspace
	// TypeBzl represents .bzl files
	TypeBzl
	//TypeModule represents MODULE.bazel files
	TypeModule
)

func (t FileType) String() string {
	switch t {
	case TypeDefault:
		return "default"
	case TypeBuild:
		return "BUILD"
	case TypeWorkspace:
		return "WORKSPACE"
	case TypeBzl:
		return ".bzl"
	case TypeModule:
		return "MODULE.bazel"
	}
	return "unknown"
}

// ParseBuild parses a file, marks it as a BUILD file and returns the corresponding parse tree.
//
// The filename is used only for generating error messages.
func ParseBuild(filename string, data []byte) (*File, error) {
	in := newInput(filename, data)
	f, err := in.parse()
	if f != nil {
		f.Type = TypeBuild
	}
	return f, err
}

// ParseWorkspace parses a file, marks it as a WORKSPACE file and returns the corresponding parse tree.
//
// The filename is used only for generating error messages.
func ParseWorkspace(filename string, data []byte) (*File, error) {
	in := newInput(filename, data)
	f, err := in.parse()
	if f != nil {
		f.Type = TypeWorkspace
	}
	return f, err
}

// ParseModule parses a file, marks it as a MODULE.bazel file and returns the corresponding parse tree.
//
// The filename is used only for generating error messages.
func ParseModule(filename string, data []byte) (*File, error) {
	in := newInput(filename, data)
	f, err := in.parse()
	if f != nil {
		f.Type = TypeModule
	}
	return f, err
}

// ParseBzl parses a file, marks it as a .bzl file and returns the corresponding parse tree.
//
// The filename is used only for generating error messages.
func ParseBzl(filename string, data []byte) (*File, error) {
	in := newInput(filename, data)
	f, err := in.parse()
	if f != nil {
		f.Type = TypeBzl
	}
	return f, err
}

// ParseDefault parses a file, marks it as a generic Starlark file and returns the corresponding parse tree.
//
// The filename is used only for generating error messages.
func ParseDefault(filename string, data []byte) (*File, error) {
	in := newInput(filename, data)
	f, err := in.parse()
	if f != nil {
		f.Type = TypeDefault
	}
	return f, err
}

func getFileType(filename string) FileType {
	if filename == "" { // stdin
		return TypeDefault
	}
	basename := strings.ToLower(filepath.Base(filename))
	if strings.HasSuffix(basename, ".oss") {
		basename = basename[:len(basename)-4]
	}
	if basename == "module.bazel" {
		return TypeModule
	}
	ext := filepath.Ext(basename)
	switch ext {
	case ".bzl":
		return TypeBzl
	case ".sky":
		return TypeDefault
	}
	base := basename[:len(basename)-len(ext)]
	switch {
	case ext == ".build" || base == "build" || strings.HasPrefix(base, "build."):
		return TypeBuild
	case ext == ".workspace" || base == "workspace" || strings.HasPrefix(base, "workspace."):
		return TypeWorkspace
	}
	return TypeDefault
}

// Parse parses the input data and returns the corresponding parse tree.
//
// Uses the filename to detect the formatting type (build, workspace, or default) and calls
// ParseBuild, ParseWorkspace, or ParseDefault correspondingly.
func Parse(filename string, data []byte) (*File, error) {
	switch getFileType(filename) {
	case TypeBuild:
		return ParseBuild(filename, data)
	case TypeWorkspace:
		return ParseWorkspace(filename, data)
	case TypeModule:
		return ParseModule(filename, data)
	case TypeBzl:
		return ParseBzl(filename, data)
	}
	return ParseDefault(filename, data)
}

// ParseError contains information about the error encountered during parsing.
type ParseError struct {
	Message  string
	Filename string
	Pos      Position
}

// Error returns a string representation of the parse error.
func (e ParseError) Error() string {
	filename := e.Filename
	if filename == "" {
		filename = "<stdin>"
	}
	return fmt.Sprintf("%s:%d:%d: %v", filename, e.Pos.Line, e.Pos.LineRune, e.Message)
}

// An input represents a single input file being parsed.
type input struct {
	// Lexing state.
	filename       string    // name of input file, for errors
	complete       []byte    // entire input
	remaining      []byte    // remaining input
	token          []byte    // token being scanned
	lastToken      string    // most recently returned token, for error messages
	pos            Position  // current input position
	lineComments   []Comment // accumulated line comments
	suffixComments []Comment // accumulated suffix comments
	depth          int       // nesting of [ ] { } ( )
	cleanLine      bool      // true if the current line only contains whitespace before the current position
	indent         int       // current line indentation in spaces
	indents        []int     // stack of indentation levels in spaces

	// Parser state.
	file       *File // returned top-level syntax tree
	parseError error // error encountered during parsing

	// Comment assignment state.
	pre  []Expr // all expressions, in preorder traversal
	post []Expr // all expressions, in postorder traversal
}

func newInput(filename string, data []byte) *input {
	// The syntax requires that each simple statement ends with '\n', however it's optional at EOF.
	// If `data` doesn't end with '\n' we add it here to keep parser simple.
	// It shouldn't affect neither the parsed tree nor its formatting.
	data = append(data, '\n')

	return &input{
		filename:  filename,
		complete:  data,
		remaining: data,
		pos:       Position{Line: 1, LineRune: 1, Byte: 0},
		cleanLine: true,
		indents:   []int{0},
	}
}

func (in *input) currentIndent() int {
	return in.indents[len(in.indents)-1]
}

// parse parses the input file.
func (in *input) parse() (f *File, err error) {
	// The parser panics for both routine errors like syntax errors
	// and for programmer bugs like array index errors.
	// Turn both into error returns. Catching bug panics is
	// especially important when processing many files.
	defer func() {
		if e := recover(); e != nil {
			if e == in.parseError {
				err = in.parseError
			} else {
				err = ParseError{Message: fmt.Sprintf("internal error: %v", e), Filename: in.filename, Pos: in.pos}
			}
		}
	}()

	// Invoke the parser generated from parse.y.
	yyParse(in)
	if in.parseError != nil {
		return nil, in.parseError
	}
	in.file.Path = in.filename

	// Assign comments to nearby syntax.
	in.assignComments()

	return in.file, nil
}

// Error is called to report an error.
// When called by the generated code s is always "syntax error".
// Error does not return: it panics.
func (in *input) Error(s string) {
	if s == "syntax error" && in.lastToken != "" {
		s += " near " + in.lastToken
	}
	in.parseError = ParseError{Message: s, Filename: in.filename, Pos: in.pos}
	panic(in.parseError)
}

// eof reports whether the input has reached end of file.
func (in *input) eof() bool {
	return len(in.remaining) == 0
}

// peekRune returns the next rune in the input without consuming it.
func (in *input) peekRune() int {
	if len(in.remaining) == 0 {
		return 0
	}
	r, _ := utf8.DecodeRune(in.remaining)
	return int(r)
}

// readRune consumes and returns the next rune in the input.
func (in *input) readRune() int {
	if len(in.remaining) == 0 {
		in.Error("internal lexer error: readRune at EOF")
	}
	r, size := utf8.DecodeRune(in.remaining)
	in.remaining = in.remaining[size:]
	if r == '\n' {
		in.pos.Line++
		in.pos.LineRune = 1
	} else {
		in.pos.LineRune++
	}
	in.pos.Byte += size
	return int(r)
}

// startToken marks the beginning of the next input token.
// It must be followed by a call to endToken, once the token has
// been consumed using readRune.
func (in *input) startToken(val *yySymType) {
	in.token = in.remaining
	val.tok = ""
	val.pos = in.pos
}

// yySymType (used in the next few functions) is defined by the
// generated parser. It is a struct containing all the fields listed
// in parse.y's %union [sic] section.

// endToken marks the end of an input token.
// It records the actual token string in val.tok if the caller
// has not done that already.
func (in *input) endToken(val *yySymType) {
	if val.tok == "" {
		tok := string(in.token[:len(in.token)-len(in.remaining)])
		val.tok = tok
		in.lastToken = val.tok
	}
}

// Lex is called from the generated parser to obtain the next input token.
// It returns the token value (either a rune like '+' or a symbolic token _FOR)
// and sets val to the data associated with the token.
//
// For all our input tokens, the associated data is
// val.Pos (the position where the token begins)
// and val.Token (the input string corresponding to the token).
func (in *input) Lex(val *yySymType) int {
	// Skip past spaces, stopping at non-space or EOF.
	countNL := 0 // number of newlines we've skipped past
	for !in.eof() {
		// Skip over spaces. Count newlines so we can give the parser
		// information about where top-level blank lines are,
		// for top-level comment assignment.
		c := in.peekRune()
		if c == ' ' || c == '\t' || c == '\r' || c == '\n' {
			if c == '\n' {
				in.indent = 0
				in.cleanLine = true
				if in.depth == 0 {
					// Not in a statememt. Tell parser about top-level blank line.
					in.startToken(val)
					in.readRune()
					in.endToken(val)
					return '\n'
				}
				countNL++
			} else if c == ' ' && in.cleanLine {
				in.indent++
			}
			in.readRune()
			continue
		}

		// Comment runs to end of line.
		if c == '#' {
			// If a line contains just a comment its indentation level doesn't matter.
			// Reset it to zero.
			in.indent = 0
			isLineComment := in.cleanLine
			in.cleanLine = true

			// Is this comment the only thing on its line?
			// Find the last \n before this # and see if it's all
			// spaces from there to here.
			// If it's a suffix comment but the last non-space symbol before
			// it is one of (, [, or {, or it's a suffix comment to "):"
			// (e.g. trailing closing bracket or a function definition),
			// treat it as a line comment that should be
			// put inside the corresponding block.
			i := bytes.LastIndex(in.complete[:in.pos.Byte], []byte("\n"))
			prefix := bytes.TrimSpace(in.complete[i+1 : in.pos.Byte])
			prefix = bytes.Replace(prefix, []byte{' '}, []byte{}, -1)
			isSuffix := true
			if len(prefix) == 0 ||
				(len(prefix) == 2 && prefix[0] == ')' && prefix[1] == ':') ||
				prefix[len(prefix)-1] == '[' ||
				prefix[len(prefix)-1] == '(' ||
				prefix[len(prefix)-1] == '{' {
				isSuffix = false
			}

			// Consume comment without the \n it ends with.
			in.startToken(val)
			for len(in.remaining) > 0 && in.peekRune() != '\n' {
				in.readRune()
			}

			in.endToken(val)

			val.tok = strings.TrimRight(val.tok, "\n")
			in.lastToken = "comment"

			// If we are at top level (not in a rule), hand the comment to
			// the parser as a _COMMENT token. The grammar is written
			// to handle top-level comments itself.
			if in.depth == 0 && isLineComment {
				// Not in a statement. Tell parser about top-level comment.
				return _COMMENT
			}

			// Otherwise, save comment for later attachment to syntax tree.
			if countNL > 1 {
				in.lineComments = append(in.lineComments, Comment{val.pos, ""})
			}
			if isSuffix {
				in.suffixComments = append(in.suffixComments, Comment{val.pos, val.tok})
			} else {
				in.lineComments = append(in.lineComments, Comment{val.pos, val.tok})
			}
			countNL = 0
			continue
		}

		if c == '\\' && len(in.remaining) >= 2 && in.remaining[1] == '\n' {
			// We can ignore a trailing \ at end of line together with the \n.
			in.readRune()
			in.readRune()
			continue
		}

		// Found non-space non-comment.
		break
	}

	// Check for changes in indentation
	// Skip if we're inside a statement, or if there were non-space
	// characters before in the current line.
	if in.depth == 0 && in.cleanLine {
		if in.indent > in.currentIndent() {
			// A new indentation block starts
			in.indents = append(in.indents, in.indent)
			in.lastToken = "indent"
			in.cleanLine = false
			return _INDENT
		} else if in.indent < in.currentIndent() {
			// An indentation block ends
			in.indents = in.indents[:len(in.indents)-1]

			// It's a syntax error if the current line indentation level in now greater than
			// currentIndent(), should be either equal (a parent block continues) or still less
			// (need to unindent more).
			if in.indent > in.currentIndent() {
				in.pos = val.pos
				in.Error("unexpected indentation")
			}
			in.lastToken = "unindent"
			return _UNINDENT
		}
	}

	in.cleanLine = false

	// If the file ends with an indented block, return the corresponding amounts of unindents.
	if in.eof() && in.currentIndent() > 0 {
		in.indents = in.indents[:len(in.indents)-1]
		in.lastToken = "unindent"
		return _UNINDENT
	}

	// Found the beginning of the next token.
	in.startToken(val)
	defer in.endToken(val)

	// End of file.
	if in.eof() {
		in.lastToken = "EOF"
		return _EOF
	}

	// Punctuation tokens.
	switch c := in.peekRune(); c {
	case '[', '(', '{':
		in.depth++
		in.readRune()
		return c

	case ']', ')', '}':
		in.depth--
		in.readRune()
		return c

	case '.', ':', ';', ',': // single-char tokens
		in.readRune()
		return c

	case '<', '>', '=', '!', '+', '-', '*', '/', '%', '|', '&', '~', '^': // possibly followed by =
		in.readRune()

		if c == '~' {
			// unary bitwise not, shouldn't be followed by anything
			return c
		}

		if c == '*' && in.peekRune() == '*' {
			// double asterisk
			in.readRune()
			return _STAR_STAR
		}

		if c == '-' && in.peekRune() == '>' {
			// functions type annotation
			in.readRune()
			return _ARROW
		}

		if c == in.peekRune() {
			switch c {
			case '/':
				// integer division
				in.readRune()
				c = _INT_DIV
			case '<':
				// left shift
				in.readRune()
				c = _BIT_LSH
			case '>':
				// right shift
				in.readRune()
				c = _BIT_RSH
			}
		}

		if in.peekRune() == '=' {
			in.readRune()
			switch c {
			case '<':
				return _LE
			case '>':
				return _GE
			case '=':
				return _EQ
			case '!':
				return _NE
			default:
				return _AUGM
			}
		}
		return c

	case 'r': // possible beginning of raw quoted string
		if len(in.remaining) < 2 || in.remaining[1] != '"' && in.remaining[1] != '\'' {
			break
		}
		in.readRune()
		c = in.peekRune()
		fallthrough

	case '"', '\'': // quoted string
		quote := c
		if len(in.remaining) >= 3 && in.remaining[0] == byte(quote) && in.remaining[1] == byte(quote) && in.remaining[2] == byte(quote) {
			// Triple-quoted string.
			in.readRune()
			in.readRune()
			in.readRune()
			var c1, c2, c3 int
			for {
				if in.eof() {
					in.pos = val.pos
					in.Error("unexpected EOF in string")
				}
				c1, c2, c3 = c2, c3, in.readRune()
				if c1 == quote && c2 == quote && c3 == quote {
					break
				}
				if c3 == '\\' {
					if in.eof() {
						in.pos = val.pos
						in.Error("unexpected EOF in string")
					}
					in.readRune()
				}
			}
		} else {
			in.readRune()
			for {
				if in.eof() {
					in.pos = val.pos
					in.Error("unexpected EOF in string")
				}
				if in.peekRune() == '\n' {
					in.Error("unexpected newline in string")
				}
				c := in.readRune()
				if c == quote {
					break
				}
				if c == '\\' {
					if in.eof() {
						in.pos = val.pos
						in.Error("unexpected EOF in string")
					}
					in.readRune()
				}
			}
		}
		in.endToken(val)
		s, triple, err := Unquote(val.tok)
		if err != nil {
			in.Error(fmt.Sprint(err))
		}
		val.str = s
		val.triple = triple
		return _STRING
	}

	// Checked all punctuation. Must be identifier token.
	if c := in.peekRune(); !isIdent(c) {
		in.Error(fmt.Sprintf("unexpected input character %#q", c))
	}

	// Scan over alphanumeric identifier.
	for {
		c := in.peekRune()
		if !isIdent(c) {
			break
		}
		in.readRune()
	}

	// Call endToken to set val.tok to identifier we just scanned,
	// so we can look to see if val.tok is a keyword.
	in.endToken(val)
	if k := keywordToken[val.tok]; k != 0 {
		return k
	}
	switch val.tok {
	case "pass":
		return _PASS
	case "break":
		return _BREAK
	case "continue":
		return _CONTINUE
	}
	if len(val.tok) > 0 && val.tok[0] >= '0' && val.tok[0] <= '9' {
		return _INT
	}
	return _IDENT
}

// isIdent reports whether c is an identifier rune.
// We treat all non-ASCII runes as identifier runes.
func isIdent(c int) bool {
	return '0' <= c && c <= '9' ||
		'A' <= c && c <= 'Z' ||
		'a' <= c && c <= 'z' ||
		c == '_' ||
		c >= 0x80
}

// keywordToken records the special tokens for
// strings that should not be treated as ordinary identifiers.
var keywordToken = map[string]int{
	"and":    _AND,
	"for":    _FOR,
	"if":     _IF,
	"else":   _ELSE,
	"elif":   _ELIF,
	"in":     _IN,
	"is":     _IS,
	"lambda": _LAMBDA,
	"load":   _LOAD,
	"not":    _NOT,
	"or":     _OR,
	"def":    _DEF,
	"return": _RETURN,
}

// Comment assignment.
// We build two lists of all subexpressions, preorder and postorder.
// The preorder list is ordered by start location, with outer expressions first.
// The postorder list is ordered by end location, with outer expressions last.
// We use the preorder list to assign each whole-line comment to the syntax
// immediately following it, and we use the postorder list to assign each
// end-of-line comment to the syntax immediately preceding it.

// order walks the expression adding it and its subexpressions to the
// preorder and postorder lists.
func (in *input) order(v Expr) {
	if v != nil {
		in.pre = append(in.pre, v)
	}
	switch v := v.(type) {
	default:
		panic(fmt.Errorf("order: unexpected type %T", v))
	case nil:
		// nothing
	case *End:
		// nothing
	case *File:
		for _, stmt := range v.Stmt {
			in.order(stmt)
		}
	case *CommentBlock:
		// nothing
	case *CallExpr:
		in.order(v.X)
		for _, x := range v.List {
			in.order(x)
		}
		in.order(&v.End)
	case *LoadStmt:
		in.order(v.Module)
		for i := range v.From {
			in.order(v.To[i])
			in.order(v.From[i])
		}
		in.order(&v.Rparen)
	case *LiteralExpr:
		// nothing
	case *StringExpr:
		// nothing
	case *Ident:
		// nothing
	case *TypedIdent:
		in.order(v.Type)
	case *BranchStmt:
		// nothing
	case *DotExpr:
		in.order(v.X)
	case *ListExpr:
		for _, x := range v.List {
			in.order(x)
		}
		in.order(&v.End)
	case *Comprehension:
		in.order(v.Body)
		for _, c := range v.Clauses {
			in.order(c)
		}
		in.order(&v.End)
	case *SetExpr:
		for _, x := range v.List {
			in.order(x)
		}
		in.order(&v.End)
	case *ForClause:
		in.order(v.Vars)
		in.order(v.X)
	case *IfClause:
		in.order(v.Cond)
	case *KeyValueExpr:
		in.order(v.Key)
		in.order(v.Value)
	case *DictExpr:
		for _, x := range v.List {
			in.order(x)
		}
		in.order(&v.End)
	case *TupleExpr:
		for _, x := range v.List {
			in.order(x)
		}
		if !v.NoBrackets {
			in.order(&v.End)
		}
	case *UnaryExpr:
		in.order(v.X)
	case *BinaryExpr:
		in.order(v.X)
		in.order(v.Y)
	case *AssignExpr:
		in.order(v.LHS)
		in.order(v.RHS)
	case *ConditionalExpr:
		in.order(v.Then)
		in.order(v.Test)
		in.order(v.Else)
	case *ParenExpr:
		in.order(v.X)
		in.order(&v.End)
	case *SliceExpr:
		in.order(v.X)
		in.order(v.From)
		in.order(v.To)
		in.order(v.Step)
	case *IndexExpr:
		in.order(v.X)
		in.order(v.Y)
	case *LambdaExpr:
		for _, param := range v.Params {
			in.order(param)
		}
		for _, expr := range v.Body {
			in.order(expr)
		}
	case *ReturnStmt:
		if v.Result != nil {
			in.order(v.Result)
		}
	case *DefStmt:
		for _, x := range v.Params {
			in.order(x)
		}
		for _, x := range v.Body {
			in.order(x)
		}
	case *ForStmt:
		in.order(v.Vars)
		in.order(v.X)
		for _, x := range v.Body {
			in.order(x)
		}
	case *IfStmt:
		in.order(v.Cond)
		for _, s := range v.True {
			in.order(s)
		}
		if len(v.False) > 0 {
			in.order(&v.ElsePos)
		}
		for _, s := range v.False {
			in.order(s)
		}
	}
	if v != nil {
		in.post = append(in.post, v)
	}
}

// assignComments attaches comments to nearby syntax.
func (in *input) assignComments() {
	// Generate preorder and postorder lists.
	in.order(in.file)
	in.assignSuffixComments()
	in.assignLineComments()
}

func (in *input) assignSuffixComments() {
	// Assign suffix comments to syntax immediately before.
	suffix := in.suffixComments
	for i := len(in.post) - 1; i >= 0; i-- {
		x := in.post[i]

		// Do not assign suffix comments to file or to block statements
		switch x.(type) {
		case *File, *DefStmt, *IfStmt, *ForStmt, *CommentBlock:
			continue
		}

		_, end := x.Span()
		xcom := x.Comment()
		for len(suffix) > 0 && end.Byte <= suffix[len(suffix)-1].Start.Byte {
			xcom.Suffix = append(xcom.Suffix, suffix[len(suffix)-1])
			suffix = suffix[:len(suffix)-1]
		}
	}

	// We assigned suffix comments in reverse.
	// If multiple suffix comments were appended to the same
	// expression node, they are now in reverse. Fix that.
	for _, x := range in.post {
		reverseComments(x.Comment().Suffix)
	}

	// Remaining suffix comments go at beginning of file.
	in.file.Before = append(in.file.Before, suffix...)
}

func (in *input) assignLineComments() {
	// Assign line comments to syntax immediately following.
	line := in.lineComments
	for _, x := range in.pre {
		start, _ := x.Span()
		xcom := x.Comment()
		for len(line) > 0 && start.Byte >= line[0].Start.Byte {
			xcom.Before = append(xcom.Before, line[0])
			line = line[1:]
		}
		// Line comments can be sorted in a wrong order because they get assigned from different
		// parts of the lexer and the parser. Restore the original order.
		sort.SliceStable(xcom.Before, func(i, j int) bool {
			return xcom.Before[i].Start.Byte < xcom.Before[j].Start.Byte
		})
	}

	// Remaining line comments go at end of file.
	in.file.After = append(in.file.After, line...)
}

// reverseComments reverses the []Comment list.
func reverseComments(list []Comment) {
	for i, j := 0, len(list)-1; i < j; i, j = i+1, j-1 {
		list[i], list[j] = list[j], list[i]
	}
}

redpajama_set_name: RedPajamaGithub


The FLEX VRT (Vertical) was designed to deliver premium performance for backcountry exploration. The new DynamicFit™ binding with the Boa® Closure System produces evenly distributed tension around your boot for ultimate precision. The FLEX Tail™ design eases stress on your joints, allowing you to reach even the most intense summits.
Rotating Toe Cord design enables the tail of the snowshoe to drop and snow to shed off the tail. The underfoot pivot point also allows the toe traction teeth to bite deeply into the snow when weighted. A rotation limiter prevents over-rotation and shin bang.


text:
Q: Notation for conditional indexed family of sets Normally, I'd denote by $(S_{i})_{i \in I}$ an indexed family of sets.
What if each $S_{i}$ depends on a variable $x$?
My thought was:
$$
(S_{i} \mid x)_{i \in I}.
$$
Is there a better (more standard) way?
Edit:
For example, for some $x \in \mathbb{R}$, let
$$
S_{i} := \{\, s \in \mathbb{R} \mid (s-i-x)(s-1-i-x) = 0 \,\},
$$
namely $S_{i} = \{\, i+x,1+i+x \,\}$.
(It occurs to me that maybe I should just include the additional variable as part of the index $i$, but I would prefer a conceptual distinction in the role of $x$.)

A: The notation $(S_{i} \mid x)_{i \in I}$ is very unusual and I would not recommend it; this is not a standard usage of the symbol $\mid$ in mathematics.  If $x$ is just a constant that is fixed in the background, there is no need to mention it in the notation at all.  If you want to let $x$ vary so you really have a different family $(S_i)_{i\in I}$ for each value of $x$, then what you actually have is a family of sets that are indexed by both $i$ and $x$.  You could write this as $(S_{i,x})$, for instance, or perhaps $(S_i(x))$ or $(S_i^x)$ if you want to make the role of $x$ more visually distinct.  Basically, you can just use any standard notation that is used to denote a family with $x$ as an index (or equivalently, a function of $x$).


Dan Ryan, Jane Byrne, Bessie Coleman, and Casimir Pulaski - these are all names that we hear about almost every day. Yet, who were these people and why do they hold such a place of honor on Chicago's landmarks? Historian Jim Gibbons will explain just that and more about Chicago's most well-known landmarks and the famous names behind the.


Everything is super, looks chic. Thank you store!!!
It came quickly, everything suits. I did not communicate with the store.
Very good quality canvas and paint. The picture is really large-2 m wide turns out.
I'm very happy with it, thank you so much for fast delivery and awesome quality!


What would you constitute as a bad habit? Can you self-reflect on your lifestyle choices and pinpoint a few that you could do away with? Or at least identify a few as warranting improvement? They could be as simple as staying up too late and drinking caffeinated drinks to compensate or as complex as smoking a pack of cigarettes a day. Most individuals would weigh inadequate sleep as less of a bad habit as smoking however impacting both habits can be done in the same way. (I have yet to find a single benefit to smoking a single cigarette; let alone a pack a day.) This is not a knock on those who find themselves in the grasps of smoking, there is hope, I know, I used to smoke.
Of the many models and theories of change, the self-determination theory (refereed to here as the SDT) is what I believe to be an easier model to implement to affect a habit. Developed by Deci and Ryan in the 1980's, the model has been used to promote exercise Given that almost every smoker can attribute the habit to be directly detrimental to their health, the SDT emphasizes human control of their own lives.
The SDT assumes that people are naturally inclined towards growth and development; hence most cigarette smokers admitting they wish they'd never started. Now the question becomes, how do I implement the SDT to affect a negative habit? Deci and Ryan state: "Self-determination describes the motivation for intentional behavior that comes from a person. Motivation stems from efforts to meet the basic psychological needs of autonomy, competence and relatedness" Autonomy being the causal agent to one's behaviors and actions, competence being the experience of overcoming a challenge (smoking cessation) and relatedness being the direct connection and experience of caring for others.
I want to be in control of my own life and quit smoking and if I do, it was by my own will-power.
I want to conquer something that had a massive hold on my life and feel accomplished.
I want to relate to others who do not smoke or who have quit, and will appreciate my improved health-outlook.
As a fitness professional, I would use several motivational principles from the SDT to encourage and motivate a client to exercise, setting a plan to aid in smoking cessation, making sure the client has input in their training program (autonomy) and connecting them to other clients and like-minded individuals for support (relatedness).
So for those at home, whether you sleep too little or smoke too much, there are many resources and courses of action that can be taken to influence and spark change. When I chose to quit smoking, I did it first for me, to be in control, to run my own life, to increase my level of physical fitness and to be a part of a group of people who had beat it. In my case, that group was my family. Whatever your motivation may be, only you can make the initial step forward. I hear quite a bit of Texan's say, "I can only lead the horse to water; I can't force it to drink".


Give B.B. Bop a warm welcome to Lower Greenville as they bring their seoul style to one of the best areas in Dallas!
Lower Greenville gets a Tex-Mex update thanks to Yucatan Taco Stand's extensive menu and tequila bar.
Walking into Boulevardier is like walking into a quaint French bistro off a side street in the Bishop Arts District.
Foodies, line up: Rapscallion is here! And when it comes to delicious food, enchanting cocktails, and ideal ambiance, Dallas' new neighborhood bistro with the funny name knows exactly how to satisfy.
For months, eager diners have been keeping their eye on Rapscallion, the newest brainchild of the brilliant brothers behind Boulevardier and Veritas. It's finally open, and with just as much of a bang as expected. From a tastefully crafted menu stacked with inventive dishes inspired by Southern cooking, to a sweeping wine list straight out of any sommelier's dreams, Rapscallion has everything needed to perfectly blend refinement with comfort.
When you visit Rapscallion, leave no stone unturned; everything on the menu is delectable, and skipping out on any course – including cocktails – is simply a missed opportunity. Definitely begin with a drink, because their menu is packed with clever craft cocktails that offer brilliant blends of unique specialty ingredients. If you're a whisky drinker, try the Hidden In the Grain, which features a balanced blending of blueberry-infused Canadian rye whisky blended with tart lemon, sweet sorghum, salt, and foamy egg white. It may sound unusual, but it's whisky-lover approved, and a delicious selection no matter what you typically drink.
The Hidden in the Grain cocktail adds fresh flavor to whisky in ways that please the palate.
If you're seeking a more familiar sip, order a House Mule, which can be made to order with rum, bourbon, gin, mezcal, or vodka. At Rapscallion, they take these seriously; they're fresh, light, and packed with all the ginger spice you want in a good mule. Their wine menu is also artfully curated and extensive – it takes up 2 pages – so don't be afraid to get lost in a glass or two if a perfect pairing is what you seek.
Rapscallion's House Mule is a top-notch variation of a classic cocktail.
The food at Rapscallion is divine, and choosing just one dish can prove to be quite a challenge because they all look so good. To tide you over while you contemplate your choices, we suggest ordering the Cast Iron Pan De Campo, a cornbread unlike anything you've had before. It comes served piping hot in a cast-iron skillet, and it's packed full of flavor thanks to delicious chunks of duck confit that are baked right in. The accompanying house-made sweet sorghum butter alone is worth ordering the dish for, but when paired with the cornbread, the resulting flavors are fantastic.
The Pan De Campo is baked fresh to order and served with a side of deliciously sweet sorghum butter.
When it comes to the main course, a few standouts are worth special mention. The Grass Fed Burger may sound deceptively simple, but calling it delicious doesn't quite do it justice. For starters, it's massive, but don't let that deter you; it's so good, you'll have no qualms about taking your leftovers to go. The patty is thick, flavorful, and cooked perfectly to order, and it comes topped with a heavenly helping of house pepper bacon, 3-cheese pimento, dill pickle, and creole mustard. Plus, it comes paired with a side of razor-thin spiced sweet potato chips that are sure to make you swoon.
The sizable Grass Fed Burger at Rapscallion is fresh, flavorful, and filling.
Another perfect selection is the Rotisserized Chicken, which is tea-brined, spit-roasted, and served with a side of house-recipe rye whisky jus. You can order it in two sizes: a half-bird will give you about 5 pieces, and a whole bird yields close to 10, so it's a great dish for sharing. Pair it with a side of peppery fermented Greens and you've got yourself a perfect meal straight out of the South. Round out your meal with a slice of Chocolate Sheath Cake – if you aren't too full already – and you'll be glad you came.
Rapscallion's Rotisserized Chicken is slow-roasted to tender perfection, and pairs perfectly with a side of Greens.
Rapscallion hasn't been open long, but it's already turned into quite the hotspot. It can be tough to get a table last minute, so we recommend calling ahead to make a reservation. Their dining room doesn't open until 5:30, but there's no shame in grabbing a cocktail at the bar before settling down for the dinner of your dreams; it's definitely worth waiting for.


text:
Guest post by Eugene Linden: The Ancient Intelligence in Deep Past is Fictional, But Could It Have Happened?
Written by Seregil of Rhiminee
Risingshadow has the honour of featuring a guest post by Eugene Linden.
About Eugene Linden:
Eugene Linden is an award-winning journalist and author on science, nature, and the environment. Deep Past is his first novel, which draws on his long career in non-fiction as the author of ten books, including his celebrated works on animal intelligence and climate change.
About Deep Past:
If nature could invent intelligence of our scale in a blink of geologic time, who's to say it hasn't been done before...
A routine dig in Kazakhstan takes a radical turn for thirty-two-year-old anthropologist Claire Knowland when a stranger turns up at the site with a bizarre find from a remote section of the desolate Kazakh Steppe. Her initial skepticism of this mysterious discovery gives way to a realization that the find will shake the very foundations of our understanding of evolution and intelligence.
Corrupt politics of Kazakhstan force Claire to take reckless chances with the discovery. Among the allies she gathers in her fight to save herself and bring the discovery to light is Sergei Anachev, a brilliant but enigmatic Russian geologist who becomes her unlikely protector even as he deals with his own unknown crisis.
Ultimately, Claire finds herself fighting not just for the discovery and her academic reputation, but for her very life as great power conflict engulfs the unstable region and an unscrupulous oligarch attempts to take advantage of the chaos.
Drawing on Eugene Linden's celebrated non-fiction investigations into what makes humans different from other species, this international thriller mixes fact and the fantastical, the realities of academic politics, and high stakes geopolitics — engaging the reader every step of the way.
Publishing date: May 2019.
Without giving anything away, my forthcoming novel, Deep Past, centers on the discovery of an intelligent species that inhabited the planet millions of years before humans appeared on the scene. The narrative spine of the thriller involves professional jealousy, international intrigue and great power competition, all of which, while fictional, would be plausible to readers of contemporary headlines. It's the discovery of an ancient intelligence that moves the novel into the realm of science fiction, and the natural question is could this ever happen?
The answer: it's much more likely than it would seem at first glance.
To some degree this is a question of probabilities, and a change in the view of the role of which intelligence/consciousness as an adaptive strategy that has taken place of the past few decades.
Until the 1970s, the conventional wisdom was that propositional intelligence, language, and consciousness were the unique province of humanity, and that animals lacked the capacity for symbolic thought and conscious decision-making. Experiments showing that chimpanzees (and then orangutans, gorillas, parrots, and dolphins) understood the meaning of words and could use those words to communicate with humans and describe their surroundings began to crack that view. As studies and observations of various aspects of higher mental abilities proliferated, it became clear that a wide number of species had some degree of problem solving abilities.
This, in turn, implied that some degree of consciousness was a widely shared adaptive strategy. At the same time, evidence problem solving abilities began showing up in smaller brained animals such as octopus, crows, even bees, fracturing the assumption that only place to look for evidence of consciousness is in large brained animals.
These developments were all part of a paradigm shift as the conventional wisdom changed from viewing humans as entirely different in higher mental abilities to humans being part of a continuum in which intelligence is widely spread though in varying degrees throughout the animal kingdom.
If many different animals possess some ability to solve problems in the present, then it increases the likelihood that a number of animals might have had some ability to solve problems in the past.
All well and good, but if some past creature had an intelligence that rivaled ours, wouldn't we know about it?
Maybe not. If we, as a species, had disappeared 15,000 years ago, there would have been little trace of our intelligence for some future species to discover.
And then there is the element of time. Organized brains began to appear on the planet roughly 780 million years ago. That's a lot of time for an intelligent species to come and go. Moreover, a look at our evolutionary history underscores the point that it doesn't take a huge amount of time for intelligence to grow by leaps and bounds.
Tool making only lodged as an adaptive strategy for our ancestors about 1.85 million years ago, and the great growth in our brains took place in the past few hundred thousand years. Once a species becomes committed to relying on brains rather than brawn, things can happen pretty fast.
As of now, there is no convincing, material evidence that a creature with human-like abilities has come and gone in the deep past, but, as the saying goes, absence of evidence is not evidence of absence. The more we know about the nature of what we call intelligence and its origins the more likely it becomes that humans are not nature's first experiment with extraordinary higher mental abilities. And so, if someday such evidence surfaces, we should be awestruck, but not surprised.
Discuss this article in the forums (0 replies).


Each blog post also contains a keyword-rich subdomain with the date and title. However, it takes many years of industry experience to notice trends and developments to help you find the right keywords and keyphrases. The robots exclusion standard or robots.txt, is a standard used by websites to communicate with web crawlers and robots. It specifies which areas of the website should not be processed. Not all robots cooperate with robots.txt; namely: email harvesters, spambots, malware, and robots which scan for security vulnerabilities. Strategic Business Insights provides a popular classification of lifestyles using psychographic segmentation.
Unfortunately, you'll also find a pestilence of self-appointed SEO gurus spouting off specific minimum word counts your content has to meet to avoid the dreaded thin content penalty: 200 words, 250 words, 300 words, 500 words. SEO can help a growing Do your homework! The primary resources are all available here. Its as simple as your ABC's startup establish its presence and meet business goals. It's a new era for SEO, an era where you can no longer keyword-stuff your way to search ranking success. Nowadays, if Google finds out that you are blatantly overusing (or hiding) keywords on your site, your credibility (and rankings) could take a serious hit. However, this doesn't mean that keywords are totally irrelevant. In fact, if you're doing what Google wants you to do (creating high-quality content), keywords will work there way naturally into your website's pages. Not all search results are cluttered.
Broken hyperlinks between pages can prevent search engines from finding parts of your site and stops your pages from passing on the boost in search rank that come from page links. . If your site For example, where would one find hire equipment around here? using the same tags for all the pages, you are not helping search engines figure out the subject or relevance of your individual pages. Most people get SEO wrong, because they focus on what they think search engines want instead of focusing on the user. When we take this approach, we are rewarded by Google since this meets their quality guidelines.
Information may make the purchasing process appear to be simple and convenient, which can entice customers to travel to the store to finalize a purchase. As technology develops, search engines also adapt to these changes by altering their algorithms that define how you website gets ranked. f you are familiar with Google's algorithm, you are aware that it is predicated based off of backlinks. This is simply a hyperlink on an external website that links back to your website. Gaz Hall, from SEO Hull, had the following to say: "You already know that a considerable amount of Internet traffic these days comes from mobile operating systems."
By performing Search Engine Optimization on a website, it is possible to make that website show up more often in search results, as well as higher on the list of results given when search engine users search for similar stuff on those various search engines. An A great example that I like to use is Save Our Schools. advertising agency might have relevant experience without representing a competitor. Link Building adds a level of credibility to your website which just isn't present without those links to reliable information sources backing up whatever claims you're making back on your own website. Everyone knows not to trust everything they read on the Internet, but finding other sites saying the same things sure doesn't hurt. Marketers should design social media programs to engage consumers.
Are you making these meta tags mistakes?


text:
Phoenix Satellite Television Holdings Ltd ou Phoenix Television é uma rede de televisão baseada em Hong Kong. É uma das poucas emissoras privadas autorizadas a transmitir na China continental.

A sede da empresa está localizada em Tai Po, Novos Territórios, e também tem escritórios correspondentes em Pequim, Xangai e Shenzhen. O escritório de Shenzhen é responsável por metade da produção dos programas de TV.

Lançada em Hong Kong em 1996, a Phoenix Satellite Television expandiu-se rapidamente de um único canal de entretenimento para um grupo multimídia integrado com 5 canais de televisão transmitindo em chinês mandarim e cobrindo mais de 150 países ao redor do mundo.

Ligações externas
 Site Oficial (em Chinês)

Empresas fundadas em 1996
Empresas de comunicação
Empresas de Hong Kong
Canais de televisão fundados em 1996
Canais de televisão da China
Canais de televisão de língua chinesa

redpajama_set_name: RedPajamaWikipedia


Standards/RFCs for non-Diffie-Hellman perfect forward secrecy?
Common pitfalls of session key activation?
Reliability of a single-pass deniable authentication protocol?
Should layered use of crypto always have a cryptographic binding between the layers?
Why do authors execute a leakage resilient election protocol inside a leak-free phase?


The gas leak, which was discovered by Southern California Gas Co. officials at 4:50 p.m. last Monday, was in an above-ground pipe used to withdraw natural gas from the reservoir, Gas Co. officials said in an email notification to interested parties sent at about 9:30 p.m.
"Our initial findings indicate the leak began only a short period of time before its discovery and that the release of natural gas was small," the notification said.
Monday's gas leak was at least the fourth at the Aliso Canyon field since Oct. 23 — when a natural gas storage well operated by the Gas Co. began spewing an estimated 100,000 metric tons of methane in the worst natural gas leak in U.S. history. The nearly four-month leak that displaced some 8,000 area families and sickened others was apparently caused by damage to the well casing several hundred feet underground though state officials have not yet released the results of their investigation.
A second minor oil and gas leak caused by a failed rubber seal on a device in April caused about 84 gallons of oil mixed with water and gas to spill from a well at the Aliso Canyon field. Another natural gas leak in a pipeline near a well ended up found and fixed in July shortly after it was discovered.
The cause of the latest leak had yet to be determined. Gas Co. officials said they did not expect area residents to notice the gas.
"At no point was there a threat to public safety," the notification said.
The Gas Co. has notified relevant agencies and "is in the process of making permanent repairs," officials said.