text:
package config

import (
	"bytes"
	"fmt"
	"os"
	"path/filepath"
	"strconv"
	"strings"
	"sync"

	"github.com/ThomsonReutersEikon/go-ntlm/ntlm"
	"github.com/bgentry/go-netrc/netrc"
	"github.com/github/git-lfs/git"
	"github.com/github/git-lfs/tools"
	"github.com/rubyist/tracerx"
)

var (
	Config                 = NewConfig()
	ShowConfigWarnings     = false
	defaultRemote          = "origin"
	gitConfigWarningPrefix = "lfs."
)

// FetchPruneConfig collects together the config options that control fetching and pruning
type FetchPruneConfig struct {
	// The number of days prior to current date for which (local) refs other than HEAD
	// will be fetched with --recent (default 7, 0 = only fetch HEAD)
	FetchRecentRefsDays int
	// Makes the FetchRecentRefsDays option apply to remote refs from fetch source as well (default true)
	FetchRecentRefsIncludeRemotes bool
	// number of days prior to latest commit on a ref that we'll fetch previous
	// LFS changes too (default 0 = only fetch at ref)
	FetchRecentCommitsDays int
	// Whether to always fetch recent even without --recent
	FetchRecentAlways bool
	// Number of days added to FetchRecent*; data outside combined window will be
	// deleted when prune is run. (default 3)
	PruneOffsetDays int
	// Always verify with remote before pruning
	PruneVerifyRemoteAlways bool
	// Name of remote to check for unpushed and verify checks
	PruneRemoteName string
}

type Configuration struct {
	CurrentRemote   string
	NtlmSession     ntlm.ClientSession
	envVars         map[string]string
	envVarsMutex    sync.Mutex
	IsTracingHttp   bool
	IsDebuggingHttp bool
	IsLoggingStats  bool

	loading           sync.Mutex // guards initialization of gitConfig and remotes
	gitConfig         map[string]string
	origConfig        map[string]string
	remotes           []string
	extensions        map[string]Extension
	fetchIncludePaths []string
	fetchExcludePaths []string
	fetchPruneConfig  *FetchPruneConfig
	manualEndpoint    *Endpoint
	parsedNetrc       netrcfinder
}

func NewConfig() *Configuration {
	c := &Configuration{
		CurrentRemote: defaultRemote,
		envVars:       make(map[string]string),
	}
	c.IsTracingHttp = c.GetenvBool("GIT_CURL_VERBOSE", false)
	c.IsDebuggingHttp = c.GetenvBool("LFS_DEBUG_HTTP", false)
	c.IsLoggingStats = c.GetenvBool("GIT_LOG_STATS", false)
	return c
}

// NewFromValues returns a new *config.Configuration instance as if it had
// been read from the .gitconfig specified by "gitconfig" parameter.
//
// NOTE: this method should only be called during testing.
func NewFromValues(gitconfig map[string]string) *Configuration {
	config := &Configuration{
		gitConfig: make(map[string]string, 0),
	}

	buf := bytes.NewBuffer([]byte{})
	for k, v := range gitconfig {
		fmt.Fprintf(buf, "%s=%s\n", k, v)
	}

	config.readGitConfig(
		string(buf.Bytes()),
		map[string]bool{},
		false,
	)

	return config
}

func (c *Configuration) Getenv(key string) string {
	c.envVarsMutex.Lock()
	defer c.envVarsMutex.Unlock()

	if i, ok := c.envVars[key]; ok {
		return i
	}

	v := os.Getenv(key)
	c.envVars[key] = v
	return v
}

func (c *Configuration) Setenv(key, value string) error {
	c.envVarsMutex.Lock()
	defer c.envVarsMutex.Unlock()

	// Check see if we have this in our cache, if so update it
	if _, ok := c.envVars[key]; ok {
		c.envVars[key] = value
	}

	// Now set in process
	return os.Setenv(key, value)
}

func (c *Configuration) GetAllEnv() map[string]string {
	c.envVarsMutex.Lock()
	defer c.envVarsMutex.Unlock()

	ret := make(map[string]string)
	for k, v := range c.envVars {
		ret[k] = v
	}
	return ret
}

func (c *Configuration) SetAllEnv(env map[string]string) {
	c.envVarsMutex.Lock()
	defer c.envVarsMutex.Unlock()

	c.envVars = make(map[string]string)
	for k, v := range env {
		c.envVars[k] = v
	}
}

// GetenvBool parses a boolean environment variable and returns the result as a bool.
// If the environment variable is unset, empty, or if the parsing fails,
// the value of def (default) is returned instead.
func (c *Configuration) GetenvBool(key string, def bool) bool {
	s := c.Getenv(key)
	if len(s) == 0 {
		return def
	}

	b, err := parseConfigBool(s)
	if err != nil {
		return def
	}
	return b
}

// GitRemoteUrl returns the git clone/push url for a given remote (blank if not found)
// the forpush argument is to cater for separate remote.name.pushurl settings
func (c *Configuration) GitRemoteUrl(remote string, forpush bool) string {
	if forpush {
		if u, ok := c.GitConfig("remote." + remote + ".pushurl"); ok {
			return u
		}
	}

	if u, ok := c.GitConfig("remote." + remote + ".url"); ok {
		return u
	}

	return ""

}

// Manually set an Endpoint to use instead of deriving from Git config
func (c *Configuration) SetManualEndpoint(e Endpoint) {
	c.manualEndpoint = &e
}

func (c *Configuration) Endpoint(operation string) Endpoint {
	if c.manualEndpoint != nil {
		return *c.manualEndpoint
	}

	if operation == "upload" {
		if url, ok := c.GitConfig("lfs.pushurl"); ok {
			return NewEndpointWithConfig(url, c)
		}
	}

	if url, ok := c.GitConfig("lfs.url"); ok {
		return NewEndpointWithConfig(url, c)
	}

	if len(c.CurrentRemote) > 0 && c.CurrentRemote != defaultRemote {
		if endpoint := c.RemoteEndpoint(c.CurrentRemote, operation); len(endpoint.Url) > 0 {
			return endpoint
		}
	}

	return c.RemoteEndpoint(defaultRemote, operation)
}

func (c *Configuration) ConcurrentTransfers() int {
	if c.NtlmAccess("download") {
		return 1
	}

	uploads := 3

	if v, ok := c.GitConfig("lfs.concurrenttransfers"); ok {
		n, err := strconv.Atoi(v)
		if err == nil && n > 0 {
			uploads = n
		}
	}

	return uploads
}

// BasicTransfersOnly returns whether to only allow "basic" HTTP transfers
// Default is false, including if the lfs.basictransfersonly is invalid
func (c *Configuration) BasicTransfersOnly() bool {
	value, ok := c.GitConfig("lfs.basictransfersonly")
	if !ok || len(value) == 0 {
		return false
	}

	basicOnly, err := parseConfigBool(value)
	if err != nil {
		return false
	}

	return basicOnly
}

func (c *Configuration) BatchTransfer() bool {
	value, ok := c.GitConfig("lfs.batch")
	if !ok || len(value) == 0 {
		return true
	}

	useBatch, err := parseConfigBool(value)
	if err != nil {
		return false
	}

	return useBatch
}

func (c *Configuration) NtlmAccess(operation string) bool {
	return c.Access(operation) == "ntlm"
}

// PrivateAccess will retrieve the access value and return true if
// the value is set to private. When a repo is marked as having private
// access, the http requests for the batch api will fetch the credentials
// before running, otherwise the request will run without credentials.
func (c *Configuration) PrivateAccess(operation string) bool {
	return c.Access(operation) != "none"
}

// Access returns the access auth type.
func (c *Configuration) Access(operation string) string {
	return c.EndpointAccess(c.Endpoint(operation))
}

// SetAccess will set the private access flag in .git/config.
func (c *Configuration) SetAccess(operation string, authType string) {
	c.SetEndpointAccess(c.Endpoint(operation), authType)
}

func (c *Configuration) FindNetrcHost(host string) (*netrc.Machine, error) {
	c.loading.Lock()
	defer c.loading.Unlock()
	if c.parsedNetrc == nil {
		n, err := c.parseNetrc()
		if err != nil {
			return nil, err
		}
		c.parsedNetrc = n
	}

	return c.parsedNetrc.FindMachine(host), nil
}

// Manually override the netrc config
func (c *Configuration) SetNetrc(n netrcfinder) {
	c.parsedNetrc = n
}

func (c *Configuration) EndpointAccess(e Endpoint) string {
	key := fmt.Sprintf("lfs.%s.access", e.Url)
	if v, ok := c.GitConfig(key); ok && len(v) > 0 {
		lower := strings.ToLower(v)
		if lower == "private" {
			return "basic"
		}
		return lower
	}
	return "none"
}

func (c *Configuration) SetEndpointAccess(e Endpoint, authType string) {
	tracerx.Printf("setting repository access to %s", authType)
	key := fmt.Sprintf("lfs.%s.access", e.Url)

	// Modify the config cache because it's checked again in this process
	// without being reloaded.
	switch authType {
	case "", "none":
		git.Config.UnsetLocalKey("", key)

		c.loading.Lock()
		delete(c.gitConfig, strings.ToLower(key))
		c.loading.Unlock()
	default:
		git.Config.SetLocal("", key, authType)

		c.loading.Lock()
		c.gitConfig[strings.ToLower(key)] = authType
		c.loading.Unlock()
	}
}

func (c *Configuration) FetchIncludePaths() []string {
	c.loadGitConfig()
	return c.fetchIncludePaths
}

func (c *Configuration) FetchExcludePaths() []string {
	c.loadGitConfig()
	return c.fetchExcludePaths
}

func (c *Configuration) RemoteEndpoint(remote, operation string) Endpoint {
	if len(remote) == 0 {
		remote = defaultRemote
	}

	// Support separate push URL if specified and pushing
	if operation == "upload" {
		if url, ok := c.GitConfig("remote." + remote + ".lfspushurl"); ok {
			return NewEndpointWithConfig(url, c)
		}
	}
	if url, ok := c.GitConfig("remote." + remote + ".lfsurl"); ok {
		return NewEndpointWithConfig(url, c)
	}

	// finally fall back on git remote url (also supports pushurl)
	if url := c.GitRemoteUrl(remote, operation == "upload"); url != "" {
		return NewEndpointFromCloneURLWithConfig(url, c)
	}

	return Endpoint{}
}

func (c *Configuration) Remotes() []string {
	c.loadGitConfig()
	return c.remotes
}

// GitProtocol returns the protocol for the LFS API when converting from a
// git:// remote url.
func (c *Configuration) GitProtocol() string {
	if value, ok := c.GitConfig("lfs.gitprotocol"); ok {
		return value
	}
	return "https"
}

func (c *Configuration) Extensions() map[string]Extension {
	c.loadGitConfig()
	return c.extensions
}

// SortedExtensions gets the list of extensions ordered by Priority
func (c *Configuration) SortedExtensions() ([]Extension, error) {
	return SortExtensions(c.Extensions())
}

// GitConfigInt parses a git config value and returns it as an integer.
func (c *Configuration) GitConfigInt(key string, def int) int {
	s, _ := c.GitConfig(key)
	if len(s) == 0 {
		return def
	}

	i, _ := strconv.Atoi(s)
	if i < 1 {
		return def
	}

	return i
}

// GitConfigBool parses a git config value and returns true if defined as
// true, 1, on, yes
func (c *Configuration) GitConfigBool(key string) bool {
	s, _ := c.GitConfig(key)
	if len(s) == 0 {
		return false
	}

	ret, err := parseConfigBool(s)
	if err != nil {
		return false
	}
	return ret
}

func (c *Configuration) GitConfig(key string) (string, bool) {
	c.loadGitConfig()
	value, ok := c.gitConfig[strings.ToLower(key)]
	return value, ok
}

func (c *Configuration) AllGitConfig() map[string]string {
	c.loadGitConfig()
	return c.gitConfig
}

func (c *Configuration) FetchPruneConfig() *FetchPruneConfig {
	if c.fetchPruneConfig == nil {
		c.fetchPruneConfig = &FetchPruneConfig{
			FetchRecentRefsDays:           7,
			FetchRecentRefsIncludeRemotes: true,
			FetchRecentCommitsDays:        0,
			PruneOffsetDays:               3,
			PruneVerifyRemoteAlways:       false,
			PruneRemoteName:               "origin",
		}
		if v, ok := c.GitConfig("lfs.fetchrecentrefsdays"); ok {
			n, err := strconv.Atoi(v)
			if err == nil && n >= 0 {
				c.fetchPruneConfig.FetchRecentRefsDays = n
			}
		}
		if v, ok := c.GitConfig("lfs.fetchrecentremoterefs"); ok {
			if b, err := parseConfigBool(v); err == nil {
				c.fetchPruneConfig.FetchRecentRefsIncludeRemotes = b
			}
		}
		if v, ok := c.GitConfig("lfs.fetchrecentcommitsdays"); ok {
			n, err := strconv.Atoi(v)
			if err == nil && n >= 0 {
				c.fetchPruneConfig.FetchRecentCommitsDays = n
			}
		}
		if v, ok := c.GitConfig("lfs.fetchrecentalways"); ok {
			if b, err := parseConfigBool(v); err == nil {
				c.fetchPruneConfig.FetchRecentAlways = b
			}
		}
		if v, ok := c.GitConfig("lfs.pruneoffsetdays"); ok {
			n, err := strconv.Atoi(v)
			if err == nil && n >= 0 {
				c.fetchPruneConfig.PruneOffsetDays = n
			}
		}
		if v, ok := c.GitConfig("lfs.pruneverifyremotealways"); ok {
			if b, err := parseConfigBool(v); err == nil {
				c.fetchPruneConfig.PruneVerifyRemoteAlways = b
			}
		}
		if v, ok := c.GitConfig("lfs.pruneremotetocheck"); ok {
			c.fetchPruneConfig.PruneRemoteName = v
		}

	}
	return c.fetchPruneConfig
}

func (c *Configuration) SkipDownloadErrors() bool {
	return c.GetenvBool("GIT_LFS_SKIP_DOWNLOAD_ERRORS", false) || c.GitConfigBool("lfs.skipdownloaderrors")
}

func parseConfigBool(str string) (bool, error) {
	switch strings.ToLower(str) {
	case "true", "1", "on", "yes", "t":
		return true, nil
	case "false", "0", "off", "no", "f":
		return false, nil
	}
	return false, fmt.Errorf("Unable to parse %q as a boolean", str)
}

func (c *Configuration) loadGitConfig() bool {
	c.loading.Lock()
	defer c.loading.Unlock()

	if c.gitConfig != nil {
		return false
	}

	c.gitConfig = make(map[string]string)
	c.extensions = make(map[string]Extension)
	uniqRemotes := make(map[string]bool)

	configFiles := []string{
		filepath.Join(LocalWorkingDir, ".lfsconfig"),

		// TODO: remove .gitconfig support for Git LFS v2.0 https://github.com/github/git-lfs/issues/839
		filepath.Join(LocalWorkingDir, ".gitconfig"),
	}
	c.readGitConfigFromFiles(configFiles, 0, uniqRemotes)

	listOutput, err := git.Config.List()
	if err != nil {
		panic(fmt.Errorf("Error listing git config: %s", err))
	}

	c.readGitConfig(listOutput, uniqRemotes, false)

	c.remotes = make([]string, 0, len(uniqRemotes))
	for remote, isOrigin := range uniqRemotes {
		if isOrigin {
			continue
		}
		c.remotes = append(c.remotes, remote)
	}

	return true
}

func (c *Configuration) readGitConfigFromFiles(filenames []string, filenameIndex int, uniqRemotes map[string]bool) {
	filename := filenames[filenameIndex]
	_, err := os.Stat(filename)
	if err == nil {
		if filenameIndex > 0 && ShowConfigWarnings {
			expected := ".lfsconfig"
			fmt.Fprintf(os.Stderr, "WARNING: Reading LFS config from %q, not %q. Rename to %q before Git LFS v2.0 to remove this warning.\n",
				filepath.Base(filename), expected, expected)
		}

		fileOutput, err := git.Config.ListFromFile(filename)
		if err != nil {
			panic(fmt.Errorf("Error listing git config from %s: %s", filename, err))
		}
		c.readGitConfig(fileOutput, uniqRemotes, true)
		return
	}

	if os.IsNotExist(err) {
		newIndex := filenameIndex + 1
		if len(filenames) > newIndex {
			c.readGitConfigFromFiles(filenames, newIndex, uniqRemotes)
		}
		return
	}

	panic(fmt.Errorf("Error listing git config from %s: %s", filename, err))
}

func (c *Configuration) readGitConfig(output string, uniqRemotes map[string]bool, onlySafe bool) {
	lines := strings.Split(output, "\n")
	uniqKeys := make(map[string]string)

	for _, line := range lines {
		pieces := strings.SplitN(line, "=", 2)
		if len(pieces) < 2 {
			continue
		}

		allowed := !onlySafe
		key := strings.ToLower(pieces[0])
		value := pieces[1]

		if origKey, ok := uniqKeys[key]; ok {
			if ShowConfigWarnings && c.gitConfig[key] != value && strings.HasPrefix(key, gitConfigWarningPrefix) {
				fmt.Fprintf(os.Stderr, "WARNING: These git config values clash:\n")
				fmt.Fprintf(os.Stderr, "  git config %q = %q\n", origKey, c.gitConfig[key])
				fmt.Fprintf(os.Stderr, "  git config %q = %q\n", pieces[0], value)
			}
		} else {
			uniqKeys[key] = pieces[0]
		}

		keyParts := strings.Split(key, ".")
		if len(keyParts) == 4 && keyParts[0] == "lfs" && keyParts[1] == "extension" {
			name := keyParts[2]
			ext := c.extensions[name]
			switch keyParts[3] {
			case "clean":
				if onlySafe {
					continue
				}
				ext.Clean = value
			case "smudge":
				if onlySafe {
					continue
				}
				ext.Smudge = value
			case "priority":
				allowed = true
				p, err := strconv.Atoi(value)
				if err == nil && p >= 0 {
					ext.Priority = p
				}
			}

			ext.Name = name
			c.extensions[name] = ext
		} else if len(keyParts) > 1 && keyParts[0] == "remote" {
			if onlySafe && (len(keyParts) == 3 && keyParts[2] != "lfsurl") {
				continue
			}

			allowed = true
			remote := keyParts[1]
			uniqRemotes[remote] = remote == "origin"
		} else if len(keyParts) > 2 && keyParts[len(keyParts)-1] == "access" {
			allowed = true
		}

		if !allowed && keyIsUnsafe(key) {
			continue
		}

		c.gitConfig[key] = value

		if len(keyParts) == 2 && keyParts[0] == "lfs" {
			switch keyParts[1] {
			case "fetchinclude":
				c.fetchIncludePaths = tools.CleanPaths(value, ",")
			case "fetchexclude":
				c.fetchExcludePaths = tools.CleanPaths(value, ",")
			}
		}
	}
}

func keyIsUnsafe(key string) bool {
	for _, safe := range safeKeys {
		if safe == key {
			return false
		}
	}
	return true
}

var safeKeys = []string{
	"lfs.fetchexclude",
	"lfs.fetchinclude",
	"lfs.gitprotocol",
	"lfs.url",
}

// only used for tests
func (c *Configuration) SetConfig(key, value string) {
	if c.loadGitConfig() {
		c.loading.Lock()
		c.origConfig = make(map[string]string)
		for k, v := range c.gitConfig {
			c.origConfig[k] = v
		}
		c.loading.Unlock()
	}

	c.gitConfig[key] = value
}

func (c *Configuration) ClearConfig() {
	if c.loadGitConfig() {
		c.loading.Lock()
		c.origConfig = make(map[string]string)
		for k, v := range c.gitConfig {
			c.origConfig[k] = v
		}
		c.loading.Unlock()
	}

	c.gitConfig = make(map[string]string)
}

func (c *Configuration) ResetConfig() {
	c.loading.Lock()
	c.gitConfig = make(map[string]string)
	for k, v := range c.origConfig {
		c.gitConfig[k] = v
	}
	c.loading.Unlock()
}


text:
Marc Baker, President of Elliott, Powell, Baden & Baker is proud to announce a new partnership with ISU Insurance Agency Network. "We are honored to have been invited to affiliate with the ISU Network. This partnership allows us to maintain our independent local presence while providing additional resources and markets to our current and future customers," Baker remarked.
Steve Pearson, President of ISU Insurance Network added, "EPB&B is a leading agency in Oregon with innovative marketing strategies and a company culture that promotes world class service for their customers. Being a 'Top Workplaces' award winner year after year validates EPB&B's mission to work hard, provide outstanding customer service and give back to the community".
ISU Network is an invitation only membership organization with 180 midsized agencies controlling $2.6B of premium in 30 states. Member agencies maintain local ownership and their complete independence while leveraging the strength and resources of the premiere insurance network with offices from coast to coast.
Congratulations to 2017 Oregon Music Hall of Fame (OMHOF) Scholarship winner Savanah Campbell. Savanah knew herself well enough at age ten to recognize that playing French Horn suited her unique personality. Honored to receive the OMHOF scholarship, Savanah plans to continue her love of this instrument at the University of Oregon as a Music Performance major next fall. Influenced by Indy as well as Classical music, Savanah hopes to one day collaborate with alternative music artists as both a lyricist and composer.
Congratulations to 2017 Oregon Music Hall of Fame (OMHOF) Scholarship winner Koby Haigerty. Growing up, Koby recalls being influenced most by his father who was an ongoing source of music for him. Because of this, he enjoys a broad range of musical genres from Classical to Musical Theatre to Progressive Metal. The OMHOF scholarship will assist with tuition this fall when Koby begins his degree studies in Music Theory and Composition at Whitman College.
Congratulations to 2017 Oregon Music Hall of Fame (OMHOF) Scholarship winner Wesley Shin. Wesley is a senior at Lincoln High School with plans to study at Harvard University in the fall. He's grateful that the OMHOF scholarship will help cover instrument maintenance and lesson costs. Wesley has always loved the Mozart clarinet concerto and it was a major factor in why he chose to play clarinet. Although he loves all music, he especially enjoys music by Mozart, Tchaikovsky, Glier and the Beatles.
Fumika Mizuno Wins 2017 OMHOF Scholarship
Congratulations to 2017 Oregon Music Hall of Fame (OMHOF) Scholarship winner Fumika Mizuno. Fumika is passionate about classical music but also loves jazz, 80's Japanese Disco and R&B. A graduate of Tualatin High School and now at Princeton University, the OMHOF scholarship will aid Fumika as she continues her pursuit of degrees in public affairs and violin performance.
Jonathon Wolotira Rocks 2017 OMHOF Schlorship
Kathy Cerkoney & Jeff Bruss celebrate milestones with EPBB
Snow Day For Portland and EPB&B
EPB&B wins Top Workplaces 2016 award

redpajama_set_name: RedPajamaCommonCrawl


text:
@class ComGoogleCommonCollectImmutableList;
@class ComGoogleCommonCollectImmutableSet_Builder;
@class ComGoogleCommonCollectUnmodifiableIterator;
@class IOSObjectArray;
@protocol JavaLangIterable;
@protocol JavaUtilCollection;
@protocol JavaUtilIterator;
@protocol JavaUtilStreamCollector;

@interface ComGoogleCommonCollectImmutableSet : ComGoogleCommonCollectImmutableCollection < JavaUtilSet >

#pragma mark Public

- (ComGoogleCommonCollectImmutableList *)asList;

+ (ComGoogleCommonCollectImmutableSet_Builder *)builder;

+ (ComGoogleCommonCollectImmutableSet *)copyOfWithJavaUtilCollection:(id<JavaUtilCollection>)elements OBJC_METHOD_FAMILY_NONE;

+ (ComGoogleCommonCollectImmutableSet *)copyOfWithNSObjectArray:(IOSObjectArray *)elements OBJC_METHOD_FAMILY_NONE;

+ (ComGoogleCommonCollectImmutableSet *)copyOfWithJavaLangIterable:(id<JavaLangIterable>)elements OBJC_METHOD_FAMILY_NONE;

+ (ComGoogleCommonCollectImmutableSet *)copyOfWithJavaUtilIterator:(id<JavaUtilIterator>)elements OBJC_METHOD_FAMILY_NONE;

- (jboolean)isEqual:(id)object;

- (NSUInteger)hash;

- (ComGoogleCommonCollectUnmodifiableIterator *)iterator;

+ (ComGoogleCommonCollectImmutableSet *)of;

+ (ComGoogleCommonCollectImmutableSet *)ofWithId:(id)element;

+ (ComGoogleCommonCollectImmutableSet *)ofWithId:(id)e1
                                          withId:(id)e2;

+ (ComGoogleCommonCollectImmutableSet *)ofWithId:(id)e1
                                          withId:(id)e2
                                          withId:(id)e3;

+ (ComGoogleCommonCollectImmutableSet *)ofWithId:(id)e1
                                          withId:(id)e2
                                          withId:(id)e3
                                          withId:(id)e4;

+ (ComGoogleCommonCollectImmutableSet *)ofWithId:(id)e1
                                          withId:(id)e2
                                          withId:(id)e3
                                          withId:(id)e4
                                          withId:(id)e5;

+ (ComGoogleCommonCollectImmutableSet *)ofWithId:(id)e1
                                          withId:(id)e2
                                          withId:(id)e3
                                          withId:(id)e4
                                          withId:(id)e5
                                          withId:(id)e6
                               withNSObjectArray:(IOSObjectArray *)others;

+ (id<JavaUtilStreamCollector>)toImmutableSet;

#pragma mark Package-Private

- (instancetype)init;

+ (jint)chooseTableSizeWithInt:(jint)setSize;

- (ComGoogleCommonCollectImmutableList *)createAsList;

- (jboolean)isHashCodeFast;

- (id)writeReplace;

@end

J2OBJC_EMPTY_STATIC_INIT(ComGoogleCommonCollectImmutableSet)

inline jint ComGoogleCommonCollectImmutableSet_get_SPLITERATOR_CHARACTERISTICS();
#define ComGoogleCommonCollectImmutableSet_SPLITERATOR_CHARACTERISTICS 1297
J2OBJC_STATIC_FIELD_CONSTANT(ComGoogleCommonCollectImmutableSet, SPLITERATOR_CHARACTERISTICS, jint)

inline jint ComGoogleCommonCollectImmutableSet_get_MAX_TABLE_SIZE();
#define ComGoogleCommonCollectImmutableSet_MAX_TABLE_SIZE 1073741824
J2OBJC_STATIC_FIELD_CONSTANT(ComGoogleCommonCollectImmutableSet, MAX_TABLE_SIZE, jint)

FOUNDATION_EXPORT id<JavaUtilStreamCollector> ComGoogleCommonCollectImmutableSet_toImmutableSet();

FOUNDATION_EXPORT ComGoogleCommonCollectImmutableSet *ComGoogleCommonCollectImmutableSet_of();

FOUNDATION_EXPORT ComGoogleCommonCollectImmutableSet *ComGoogleCommonCollectImmutableSet_ofWithId_(id element);

FOUNDATION_EXPORT ComGoogleCommonCollectImmutableSet *ComGoogleCommonCollectImmutableSet_ofWithId_withId_(id e1, id e2);

FOUNDATION_EXPORT ComGoogleCommonCollectImmutableSet *ComGoogleCommonCollectImmutableSet_ofWithId_withId_withId_(id e1, id e2, id e3);

FOUNDATION_EXPORT ComGoogleCommonCollectImmutableSet *ComGoogleCommonCollectImmutableSet_ofWithId_withId_withId_withId_(id e1, id e2, id e3, id e4);

FOUNDATION_EXPORT ComGoogleCommonCollectImmutableSet *ComGoogleCommonCollectImmutableSet_ofWithId_withId_withId_withId_withId_(id e1, id e2, id e3, id e4, id e5);

FOUNDATION_EXPORT ComGoogleCommonCollectImmutableSet *ComGoogleCommonCollectImmutableSet_ofWithId_withId_withId_withId_withId_withId_withNSObjectArray_(id e1, id e2, id e3, id e4, id e5, id e6, IOSObjectArray *others);

FOUNDATION_EXPORT jint ComGoogleCommonCollectImmutableSet_chooseTableSizeWithInt_(jint setSize);

FOUNDATION_EXPORT ComGoogleCommonCollectImmutableSet *ComGoogleCommonCollectImmutableSet_copyOfWithJavaUtilCollection_(id<JavaUtilCollection> elements);

FOUNDATION_EXPORT ComGoogleCommonCollectImmutableSet *ComGoogleCommonCollectImmutableSet_copyOfWithJavaLangIterable_(id<JavaLangIterable> elements);

FOUNDATION_EXPORT ComGoogleCommonCollectImmutableSet *ComGoogleCommonCollectImmutableSet_copyOfWithJavaUtilIterator_(id<JavaUtilIterator> elements);

FOUNDATION_EXPORT ComGoogleCommonCollectImmutableSet *ComGoogleCommonCollectImmutableSet_copyOfWithNSObjectArray_(IOSObjectArray *elements);

FOUNDATION_EXPORT void ComGoogleCommonCollectImmutableSet_init(ComGoogleCommonCollectImmutableSet *self);

FOUNDATION_EXPORT ComGoogleCommonCollectImmutableSet_Builder *ComGoogleCommonCollectImmutableSet_builder();

J2OBJC_TYPE_LITERAL_HEADER(ComGoogleCommonCollectImmutableSet)

#endif

#if !defined (ComGoogleCommonCollectImmutableSet_Indexed_) && (INCLUDE_ALL_ComGoogleCommonCollectImmutableSet || defined(INCLUDE_ComGoogleCommonCollectImmutableSet_Indexed))
#define ComGoogleCommonCollectImmutableSet_Indexed_

@class ComGoogleCommonCollectImmutableList;
@class ComGoogleCommonCollectUnmodifiableIterator;
@protocol JavaUtilFunctionConsumer;
@protocol JavaUtilSpliterator;

@interface ComGoogleCommonCollectImmutableSet_Indexed : ComGoogleCommonCollectImmutableSet

#pragma mark Public

- (void)forEachWithJavaUtilFunctionConsumer:(id<JavaUtilFunctionConsumer>)consumer;

- (ComGoogleCommonCollectUnmodifiableIterator *)iterator;

- (id<JavaUtilSpliterator>)spliterator;

#pragma mark Package-Private

- (instancetype)init;

- (ComGoogleCommonCollectImmutableList *)createAsList;

- (id)getWithInt:(jint)index;

@end

J2OBJC_EMPTY_STATIC_INIT(ComGoogleCommonCollectImmutableSet_Indexed)

FOUNDATION_EXPORT void ComGoogleCommonCollectImmutableSet_Indexed_init(ComGoogleCommonCollectImmutableSet_Indexed *self);

J2OBJC_TYPE_LITERAL_HEADER(ComGoogleCommonCollectImmutableSet_Indexed)

#endif

#if !defined (ComGoogleCommonCollectImmutableSet_Builder_) && (INCLUDE_ALL_ComGoogleCommonCollectImmutableSet || defined(INCLUDE_ComGoogleCommonCollectImmutableSet_Builder))
#define ComGoogleCommonCollectImmutableSet_Builder_

#define RESTRICT_ComGoogleCommonCollectImmutableCollection 1
#define INCLUDE_ComGoogleCommonCollectImmutableCollection_ArrayBasedBuilder 1
#include "com/google/common/collect/ImmutableCollection.h"

@class ComGoogleCommonCollectImmutableSet;
@class IOSObjectArray;
@protocol JavaLangIterable;
@protocol JavaUtilIterator;

@interface ComGoogleCommonCollectImmutableSet_Builder : ComGoogleCommonCollectImmutableCollection_ArrayBasedBuilder

#pragma mark Public

- (instancetype)init;

- (ComGoogleCommonCollectImmutableSet_Builder *)addWithId:(id)element;

- (ComGoogleCommonCollectImmutableSet_Builder *)addWithNSObjectArray:(IOSObjectArray *)elements;

- (ComGoogleCommonCollectImmutableSet_Builder *)addAllWithJavaLangIterable:(id<JavaLangIterable>)elements;

- (ComGoogleCommonCollectImmutableSet_Builder *)addAllWithJavaUtilIterator:(id<JavaUtilIterator>)elements;

- (ComGoogleCommonCollectImmutableSet *)build;

#pragma mark Package-Private

- (instancetype)initWithInt:(jint)capacity;

- (ComGoogleCommonCollectImmutableSet_Builder *)combineWithComGoogleCommonCollectImmutableCollection_ArrayBasedBuilder:(ComGoogleCommonCollectImmutableCollection_ArrayBasedBuilder *)builder;

@end

J2OBJC_EMPTY_STATIC_INIT(ComGoogleCommonCollectImmutableSet_Builder)

FOUNDATION_EXPORT void ComGoogleCommonCollectImmutableSet_Builder_init(ComGoogleCommonCollectImmutableSet_Builder *self);

FOUNDATION_EXPORT ComGoogleCommonCollectImmutableSet_Builder *new_ComGoogleCommonCollectImmutableSet_Builder_init() NS_RETURNS_RETAINED;

FOUNDATION_EXPORT ComGoogleCommonCollectImmutableSet_Builder *create_ComGoogleCommonCollectImmutableSet_Builder_init();

FOUNDATION_EXPORT void ComGoogleCommonCollectImmutableSet_Builder_initWithInt_(ComGoogleCommonCollectImmutableSet_Builder *self, jint capacity);

FOUNDATION_EXPORT ComGoogleCommonCollectImmutableSet_Builder *new_ComGoogleCommonCollectImmutableSet_Builder_initWithInt_(jint capacity) NS_RETURNS_RETAINED;

FOUNDATION_EXPORT ComGoogleCommonCollectImmutableSet_Builder *create_ComGoogleCommonCollectImmutableSet_Builder_initWithInt_(jint capacity);

J2OBJC_TYPE_LITERAL_HEADER(ComGoogleCommonCollectImmutableSet_Builder)

#endif

#if __has_feature(nullability)
#pragma clang diagnostic pop
#endif
#pragma pop_macro("INCLUDE_ALL_ComGoogleCommonCollectImmutableSet")

redpajama_set_name: RedPajamaGithub


And here are the old freebies. Click on the preview to download them.
Thank you for all the goodies in your newsletter :) Merry Christmas and Happy New Year!
A very Merry Christmas to you and yours! Many THANKS for all the lovelies!!


text:
  <?php if(count($category_items)): foreach($category_items as $id=>$item): ?>

                  <?php if($item->image!=null):?>
		                <img src="<?php echo base_url().$item->image?>" alt="" class="img-responsive img-circle">
		          <?php else: ?>
		              	<img src="<?php echo base_url();?>img/member-default.jpg" alt="" class="img-responsive img-circle">
		          <?php endif; ?>

<?php echo $item->title  ?>

Founder(this should be custom field)

<?php echo $item->body  ?>

	<?php endforeach; ?>
	<?php else: ?>

We could not find any items in this category.

	<?php endif; ?>


The Holly Contemporary Loveseat with Welt Cording by Flexsteel at Mueller Furniture in the Lake St. Louis, Wentzville, O'Fallon, MO, St.Charles, St.Louis Area, MO Furniture Store and Belleville, Shiloh, O'Fallon,IL area. Product availability may vary. Contact us for the most current availability on this product.
The Holly collection is a great option if you are looking for Contemporary furniture in the Lake St. Louis, Wentzville, O'Fallon, MO, St.Charles, St.Louis Area, MO Furniture Store and Belleville, Shiloh, O'Fallon,IL area.
Browse other items in the Holly collection from Mueller Furniture in the Lake St. Louis, Wentzville, O'Fallon, MO, St.Charles, St.Louis Area, MO Furniture Store and Belleville, Shiloh, O'Fallon,IL area.


text:
Get the ultimate experience Download our app now
Alvaro Morata opens up on his Chelsea nightmare
Andrew Smyth June 6, 2019 6:06 pm June 6, 20196:08 pm
Alvaro Morata has lifted the lid on the hellish experience he suffered at Chelsea, where he felt unappreciated by everyone at the club.
Chelsea signed Morata in 2017 to replace Diego Costa in a club-record deal of £60m from Real Madrid. However, he didn't fit in at Stamford Bridge and became a forlorn figure in the squad.
The Spanish striker scored just 24 times in 72 outings before his nightmare in London ended in January when he sealed an 18-month loan switch to boyhood club Atletico Madrid.
Since returning to Spain, Morata began to show flashes of his old self and finished the season with six goals in 17 games for Atletico.
And now the 26-year-old has opened up on his horrible time at Chelsea and slammed Blues coach Maurizio Sarri for the broken promises he made to him.
"I had lost confidence in myself previously," Morata told Goal.
"I was very upset by the opinion of the people in England. I think they caught me in the middle of everything.
"I didn't quite feel loved or appreciated by the club or the fans. I started very well at Chelsea, but an injury, in the end, leaves you a bit stuck.
LONDON, ENGLAND – JANUARY 17: Alvaro Morata of Chelsea is chased by Christoph Zimmermann of Norwich City during The Emirates FA Cup Third Round Replay between Chelsea and Norwich City at Stamford Bridge on January 17, 2018 in London, England. (Photo by Mike Hewitt/Getty Images)
"As bad as it was, I still scored 15 goals and won the FA Cup… but I was out of the World Cup, and for me, that was the hardest thing that could happen to me in my life.
"I've dreamed of being able to play in a World Cup since I was 10 years old, and I chose Chelsea because I thought it would be the best club to later be able to play in the World Cup.
"Now, signing for Atletico has been the best thing that could happen to me in my life.
"I had a very bad time in London. In the end, I was training alone. I talked to Maurizio Sarri and he told me some things that I knew were not going to be as he had said. I was very nervous. My wife was in shock with me."
SAN SEBASTIAN, SPAIN – MARCH 03: Alvaro Morata of Atletico Madrid celebrates after scoring his team's second goal during the La Liga match between Real Sociedad and Club Atletico de Madrid at Estadio Anoeta on March 03, 2019 in San Sebastian, Spain. (Photo by Juan Manuel Serrano Arce/Getty Images)
Morata will remain at the Wanda Metropolitano until June 2020 and has already indicated a desire to remain beyond that deal.
And the Spain international will likely play a big role next season at Atletico given star forward Antoine Griezmann's expected departure.
"I already knew that I could sign for Atletico if everything went well, and they had four games previously [before Morata officially signed for them on January 29]. I saw them all at home with my wife and she was amazed!" Morata added.
"She does not like football very much, and she did not understand how I could get like this, so crazy, watching Atletico games, screeching at home, nervous, when I was not an Atletico player yet."
Upon arriving at Chelsea in 2017, Morata scored seven times in his opening eight matches under Antonio Conte. But hamstring and back problems soon hampered his progress at Stamford Bridge.
"It's a story I'd like to tell very slowly in the future," continued Morata.
"I went from being tied on the same amount of goals as [Mohamed] Salah and [Harry] Kane at the start of the first year, and people made a song about me, I could not even go out in London!
"And one day I get up with a shooting pain in my back, my level goes down, and they start telling me everything [referring to criticism about him] in England.
"You are supposed to be respected by fans, but you know…"
LONDON, ENGLAND – AUGUST 05: A Chelsea fan holds up a sign about Alvaro Morata of Chelsea during the FA Community Shield between Manchester City and Chelsea at Wembley Stadium on August 5, 2018 in London, England. (Photo by Michael Regan/Getty Images)
Latest news January 12, 2021 12:23 pm January 12, 20217:34 pm
Top 10 leaders in the European Golden Shoe race
Latest news January 12, 2021 8:54 am January 12, 20218:54 am
Ronaldo or Messi? Ozil gives his verdict on the GOAT debate
Juventus December 27, 2020 3:48 pm December 27, 20208:19 pm
2020 Golden Foot Live Stream: How To Watch Online & Times
Latest news December 26, 2020 2:33 pm December 26, 20202:33 pm
Cristiano Ronaldo's toughest opponent reveals the key to stopping him
Supercoppa Italiana 11 minutes ago
Juventus vs Napoli: Italian Super Cup Final Preview & Stats
Latest news yesterday
Did Ronaldo's hint at possible Man Utd return go unnoticed?
Real Madrid yesterday
Valdano suggests a Ronaldo replacement for Real Madrid
Ronaldo or Messi? Arthur names which GOAT he prefers
Serie A 2 days ago
'He's not a robot!' – Ronaldo defended for poor display vs Inter
Beating Ronaldo's Juve shows Inter are on 'right track' – Conte
Inter Milan 2-0 Juventus – Serie A Player Ratings
Ronaldo chasing TWO records against Inter Milan
Inter Milan vs Juventus: Preview, Betting Tips, Stats & Prediction
Manchester United 3 days ago
'Ronaldo is not Manchester United's greatest signing'
Real Madrid 3 days ago
"Ronaldo was a voracious killer," says Real Madrid legend
Latest news 3 days ago
Juventus legend claims Cristiano Ronaldo is in decline
Ronaldo explains how CR7 is 'different' since Real Madrid exit
Juventus 4 days ago
Morata reveals what it's like to play alongside Ronaldo
Cristiano Ronaldo fails to make the Top 10 Playmakers of the Decade list
How much does Ronaldo earn at Juventus? Facts & Figures
Coppa Italia 5 days ago
Sly Ronaldo fools 4 Genoa players in lead-up to Juve winner
Juventus 3-2 Genoa – Coppa Italia Player Ratings
Official: Ronaldo won't start for Juventus in Coppa Italia tonight
The reason Barcelona 'rejected' Cristiano Ronaldo revealed
Juventus vs Genoa: Preview, Betting Tips, Stats & Prediction
On this day: Ronaldo wins his first Player of the Year Award
Bayern legend leaves both Ronaldo & Messi out of Team of the Year
'He can be a world-beater!' – Man Utd new boy likened to Ronaldo
Featured January 12, 2021 10:46 am January 13, 202110:50 am
What does the future hold for digital currencies and online casinos?
Juventus January 11, 2021 7:15 pm January 11, 20217:21 pm
Cristiano Ronaldo is about to break the greatest record ever
Real Madrid January 11, 2021 4:15 pm January 11, 20214:15 pm
'Real Madrid & Ramos won't repeat Ronaldo mistake'
Serie A January 11, 2021 3:26 pm January 11, 20213:26 pm
Ronaldo OUT-JUMPS GOALKEEPER with gravity-defying leap!


text:
In Album Review Music Reviews
Apophys – "Devoratis" [Album Review]
By Toby Saunders 01/26/2018
Death metal bands are forever caught in a quandary: push new boundaries in terms of speed, technicality or innovation, or playing it safe and the risks that come with it. Apophys have attempted to address this on their second full-length Devoratis. Based on a science fiction story written by the band's vocalist, Kevin Quilligan, the record tells a solid sci-fi tale about an unlikely union of two forces facing off against an evil intergalactic race across a backdrop of some blistering pace, brutal hooks and technical playing.
The record opens with a downright barnstormer. "Children of the Stars" is an excellent death metal piece, with a catchy central riff, devastating brutality and clean, powerful chorus. It's an exciting, very well-written track that unfortunately doesn't quite see an equal further down the line. The rest of the album is by no means bad, with some stellar moments and great tracks cropping up from time to time (the rolling guitars of the chorus in "The Verdict" is a good example), but it doesn't live up to the excellent opening track, instead largely trading layered songwriting for more blistering pace.
With "Matters Unresolved", things tend to get heavy.
One track that doesn't go down this path so much is "Xiux – The Parasite". The band showcases their ability to show progression here, with a slower opening that builds into something brutal and very enjoyable. "What We Will Be", too, offers a little more. Its main riff is a great one and some particularly strong vocals from Quilligan, whose death growls carry a lot of power throughout, but also have a great snarl to them here. Apophys are better when they turn the tempo down just a little bit. Blistering pace is all well and good, but Apophys sound better when slower. When Devoratis is at its best, we are treated to detailed tracks that build themselves around quality central riffs, escalating and providing awesome guitar solos when necessary – "Retaliate" is another example, but one that also shows what the band is capable of when playing at speed.
I wanted to like Devoratis a lot more than I did. Four of its nine songs are great listens and show what the band can do when they don't just focus on speed. "Children of the Stars", "Xiux – The Parasite", "What We Will Be" and "Retaliate" all showcase layered and detail-rich songwriting that is unfortunately absent from the majority of the record. This is an album that's almost all there, but the good stuff here is executed very well and is well worth a listen and make for a record that you should definitely consider picking up.
Dudes, "What We Will Be" we will be. Deal with it.
Devoratis Track Listing:
01. Children of the Stars
02. The Verdict
03. Xiux – The Parasite
04. Matters Unresolved
05. Deadlock
06. Respite (Interlude)
07. What We Will Be
08. Retaliate
09. Occasus
Run Time: 36:17
Record Label: Ultimate Massacre Productions
album reviewdeath metalpuregrainaudioreviewtech
Toby Saunders


text:
Parliament to Tackle Elections, 2011 Budget during September Session
By Congo News Agency | Published on September 14, 2010
Upcoming elections and the 2011 budget will be the main points on the agendas of the National Assembly and the Senate when they convene for the September session on Wednesday.
During the session, MPs and Senators will elect the seven members of the new Independent National Electoral Commission (INEC), which will replace the Independent Electoral Commission (IEC) as the main body overseeing elections nationwide.
The INEC will have four members elected by representatives from the parliamentary majority and three members elected by representatives from the opposition.
The September session being primarily budgetary, the government will submit its budget plan for 2011, which has to take into account the cost of elections.
Unlike in 2006, when 90% of the total cost of elections was borne by the international community, the government has said it will fund 60% of the $ 712 million the IEC has said is needed for elections until 2013.
On the web: Congo News Agency
@Congoplanet | info@congoplanet.com
• Constitutional Court Declares Tshisekedi Winner of Presidential Election (January 19, 2019)
• Martin Fayulu Challenges Presidential Election Results in Court (January 12, 2019)
• Felix Tshisekedi Vows to Be the President of All Congolese (January 10, 2019)
• Martin Fayulu Rejects Presidential Election Results (January 10, 2019)
• Felix Tshisekedi Elected DR Congo President (January 10, 2019)
• DR Congo Delays Results of December Election (January 6, 2019)
• Bemba, Katumbi renew their support for joint opposition presidential candidate Fayulu (November 16, 2018)
• Vital Kamerhe also withdraws support for joint opposition presidential bid (November 12, 2018)
• Felix Tshisekedi withdraws support for joint opposition presidential bid (November 12, 2018)
• Jean-Pierre Bemba banned from running for president (August 25, 2018)
• Vital Kamerhe named UNC presidential candidate (August 4, 2018)
• Bemba says Katumbi should be allowed to run for president (August 4, 2018)
• Moise Katumbi blocked from entering DR Congo (August 3, 2018)
• Jean-Pierre Bemba Returns to DR Congo (August 1, 2018)
• Jean-Pierre Bemba named MLC presidential candidate (July 13, 2018)
• Botswana Urges Joseph Kabila to Step Down (February 26, 2018)
• No elections in DR Congo in December without electronic voting machines: INEC (February 13, 2018)
• US Warns DR Congo Against Electronic Voting for Delayed Election (February 12, 2018)
• Presidential election scheduled for December 23, 2018 (November 5, 2017)
• Felix Tshisekedi accuses INEC of illegally prolonging Kabila's mandate (October 24, 2017)
• DRC Seeks Arrest of Presidential Candidate Moise Katumbi (May 19, 2016)
• Political tensions 'running high' in DR Congo ahead of 2016 elections (October 7, 2015)
• Rights Groups: DR Congo Must Free Pro-democracy Activists (April 13, 2015)
• Electoral commission sets DR Congo presidential election date (February 12, 2015)
• Police Open Fire on Crowd Protesting Election Law Change (January 19, 2015)
• Etienne Tshisekedi Evacuated to Belgium for Medical Treatment (August 16, 2014)
• Kerry Calls on Kabila to Honor Constitution (May 4, 2014)
• DR Congo Honors Nelson Mandela, Hero and Model for Humanity (December 6, 2013)
• The M23 Rebels Want to Overthrow Kabila? Nonsense (November 28, 2012)
• Kabila Names Finance Minister as New Prime Minister (April 19, 2012)
Load older related articles
• Elections
• Independent Electoral Commission (IEC)
• Independent National Electoral Commission (INEC)
• National Assembly
• Senate


'Seal Magna' is a well presented Seal 850. Having has been cruised extensively around Scotland she has all the necessary specification for cruising. Engine replaced in 2011. A lifting keel and new Genoa, 'Seal Magna' is well suited for shallower waters.
Double V berth forwards with storage shelves. The heads is aft of the forepeak, and to starboard, with a hanging locker to port. The main saloon has berths on each side, and a good size fold out table above the keel. The galley is to port and the nav station is to starboard, just in front of a good size quarter berth.
DepthsounderLiferaftBattery chargerPlotterVhfCompassAutopi lotTenderSpray hoodGennaker cruising spinnakerGpsMarine headShore power inletFurling genoaManual bilge pumpMainsail coverIn this case we are acting as brokers only. The Vendor is not selling in the course of a business. Whilst every care has been taken in their preparation, the correctness of these particulars is not guaranteed. The particulars are intended only as a guide and they do not constitute a term of any contract. A prospective buyer is strongly advised to check the particulars and where appropriate at his own expense to employ a qualified Marine Surveyor to carry out a survey and / or to have an engine trial conducted, which if carried out by us shall not imply any liability for such engine on our part. Note to seller and purchaser: If the boat you are selling or purchasing is registered, please ensure that the registration is completed after the sale of the boat. If the purchaser wishes to cancel the registration is the duty of the seller to contact the Registry and inform them that the registration is to be cancelled. If the purchaser wishes to continue with the registration, it is the duty of the purchaser to complete the relevant forms and post off the bill of sale to the Registrar.


If you have any question which isn't answered on this page, or just want to drop me a line, please don't hesitate to send me email at steve@housefullofgames.com.
Q: Why does Tichu keep crashing when it logs into Game Center?
Turn on airplane mode when you want to play Tichu.
Unfortunately, Apple no longer is supporting iOS 4.1 and none of the several devices at my disposal are using that version. Since Apple, in its wisdom, doesn't give developers any way to install unsupported versions of iOS, my hands are rather tied.
Q: I've played four games. How do I play a fifth?
A: Tichu has enough saved game slots to track up to four games at once. If you choose the slot that holds your current game from the games list you will be asked if you want to start a new game in that slot.
Q: Why is Tichu so slow on my device?
A: While Tichu isn't a terribly difficult game to understand, there is a large number of potential plays on any given turn. As if that weren't enough, players are free to play a bomb at almost any time so the computer has to account for that as well. On any given turn, the computer can easily analyze over a million different positions. A player's first lead of a hand is particularly troublesome because, not only does a player have a lot more potential moves with a full hand, the player also needs to decide whether or not to call Tichu, and that requires additional analysis.
In fact, I almost didn't even begin this project because I was so worried that the iPhone wouldn't be powerful enough for the job. I'm honestly quite thrilled that the game plays as quickly as it does.
My target platform for Tichu was an iPhone 3GS. It will play fine on older devices but it may be slower than you would like.
If you find that you are spending too much time waiting, play the game at the "Normal" skill setting (or even below). Think time goes up dramatically on the "Better" setting and, truth be told, the game doesn't really play all that much better at that setting.
Q: Why does my partner play the way she does? How can I get a challenging game that isn't full of risky or strange plays?
A: The AI's play style can vary quite a bit based upon the difficulty setting. It is important to understand what each setting means. The settings are documented in the "How to Play" section of the game's documentation but I find that a lot of people are jumping straight to the "Best" setting without really understanding what that means. That is a big mistake. You need to read and understand the following so you know exactly what you are getting into.
Conservative At this setting, the player will be much less inclined to call Tichu.
Normal At this setting, the player will call Tichu whenever it thinks it has a good chance of going out first.
Aggressive At this setting, the player will tend to call Tichu more frequently.
Worst At this setting, the player makes mostly random choices. It will follow the rules of the game but beyond that it is unpredictable.
Poor At this setting, the player tries to make intelligent decisions about what to play but it doesn't fully take into account cards beyond those in its own hand and it makes pretty simplistic and selfish choices. It's at least smart enough to avoid some of the most common blunders; for instance, it will at least try to avoid going out first if its partner has called "Tichu".
Normal At this setting, the player analyzes the current conditions and looks ahead beyond the current trick. It has a perfect memory of every card it has seen and it should provide a somewhat competent opponent or partner.
Better This setting is much like the Normal setting except that the player spends more time analyzing the trick before settling on a card to play and it's a little more sophisticated in the way it evaluates tricks. Be advised that this additional analysis may result in a slowdown in play, particularly on older devices. If you find that you are waiting too long at this setting, you should try a different one.
Best To put it bluntly, at this setting the computer cheats. It knows exactly what cards each player is holding and it tries to use that information to determine which cards to play (although it doesn't use that information when deciding which cards to pass; that would be a little too nasty). Despite that, it will not play perfectly and it can be beaten. Tichu is a very complicated game and there just isn't enough horsepower to completely analyze every hand. It still has to work with the cards it has and it can't think far enough ahead to correctly predict the outcome of every situation. Furthermore, it can't predict exactly which cards you will play, only which cards you could play. Often that is enough of a difference.
One thing to keep in mind about the AI is that at all but the simplest skill setting, it has a perfect memory. This means that whenever there are two players left in the game, the computer knows all the cards. It also means that if a bomb is no longer possible, the computer will know that too. This can sometimes lead the computer to make moves that most human players might consider risky, or perhaps a little strange.
If you are looking for a challenging game with a human-like partner, I recommend that you set both of your opponents to the "Best" skill setting but that you set your partner no higher than the "Better" setting. That way your partner won't assume that you know what cards everyone is holding and your partner will make plays based upon the same information that you have. It will tend to play more like you would expect a human partner to play.
If you get frustrated that your partner seems to be calling Tichu and failing too often, then I suggest that you set your partner to the "Conservative" play style but leave the others at "Normal".
Q: How can I play the Phoenix as the low card in a set?
A: Usually when you play the Phoenix, it's obvious which card it represents, but every so often a situation will arise where you have a choice between either a low card or a high one. For instance, if you play the Phoenix with a pair of 3s and a pair of Kings, the Phoenix could be used as either a 3 or a King. It's very rare that you would intend to play the Phoenix as the low card in this situation so the game will normally assume that you meant to play the Phoenix high. In the rare case that you want to play the Phoenix as the low card, all you have to do is pick it up and drag it to the left of the cards you are playing. The game will realize that the Phoenix is in the lowest position and it will treat it as the low card in the set.
Q: Can I still listen to my own music while I play?
Absolutely. Beginning with Tichu version 1.3, just start your music before you start Tichu. Tichu will notice that you're already listening to music and the game's music will be silenced.
Start Tichu and go to the settings screen.
Drag the music slider all the way to the left.
Press the home button and start the iPod app.
Since the game's music volume is all the way down, the game will know to leave your music running.
A: Tichu does not support Pass-N-Play. I felt that there really wouldn't be any acceptable way to implement passing cards, calling Tichu out of turn, or playing bombs out of turn if the players were forced to constantly pass the device from player to player. Could it be done? Probably. Would it work well? Probably not. Instead I chose to focus on a solid networked multiplayer experience.
Q: Can I play with my friends over the internet?
A: Yes! Beginning with version 1.3, Tichu now supports internet play over Game Center. You need to be using a device that supports Game Center, which means an iPhone 3GS or later iPhone, an iPad, or a 2nd generation or later iPod touch. You also must be running iOS version 4.1 or later. Consult Apple's web site for precise details of what is supported but basically, if your device has a Game Center icon on it like the one at the right, then you should be able to play.
Furthermore, you need to be logged in with your Game Center account. Game Center accounts are free so there is really no reason not to get one. If don't already have a Game Center account then you will be prompted to create one when you first run Tichu. Again, if you have any other questions about whether your device supports Game Center or how to get an account, consult Apple's web site.
Q: I'm having difficulty connecting over Game Center. What can I do?
A: Other than consulting Apple's web site, here are a few things to try.
Make sure that you have notifications enabled for Tichu, otherwise you will never receive game invites.
Make sure that your iDevice's clock is set to the correct time. I have noticed that if the clock is off, often it will be difficult to establish a connection.
Make sure that your device can connect to the internet and that it is actually capable of connecting to Game Center. Older devices don't support it. Consult Apple's web site if you have any doubt about whether your device supports it or not.
Q: Why doesn't Tichu respect the mute switch when I play a linked game over Game Center?
If you want your game's audio to remain silent when you play on line, you will have to go into the game's settings and turn the volume down yourself, or else you could use the volume rocker on your device to lower the system volume but that would also lower the volume of the Voice Chat channel.
Q: I can join a game but I can't seem to use Voice Chat. Either I can't get Voice Chat working at all or I can't keep the connection working. What can I do?
A: Voice Chat requires a fast internet connection (think WiFi) in order to work, and it isn't supported by all devices. (This is Apple's limitation, not Tichu's.) Even then, if the connection speed begins to slow too much, the Voice Chat channel may be dropped. This is a bandwidth saving measure implemented by Apple to make sure that the overall game connection can continue uninterrupted. If your Voice Chat channel has been dropped you can try to reestablish the connection by toggling the microphone on and off. (The microphone is on when the microphone button is red.) Often that will be enough to reestablish the connection.
It's usually best to keep the microphone off unless you actually have something to say. Broadcasting always requires more bandwidth and so the act of using the voice channel can, unfortunately, sometimes contribute to the problem.
Note that text chat is always available and does not use significantly more bandwidth than other game functions.
Q: What changed in version 1.6?
Some AI "tells" were removed by ensuring that the AI now pauses a reasonable amount of time in situations where even though it can't play, the other players couldn't know that. Care was taken to avoid pausing in most cases where it should be obvious that the AI can't play (for instance, when the AI doesn't hold enough cards to cover the play) and when there are no human players still holding cards. The length of these pauses is carefully calculated so as to make it indistinguishable from cases where the AI could have played and merely chose not to.
Fixed a bug where, in certain rare instances, the AI might treat a Phoenix as the low card in a full house even when it clearly wasn't.
Q: What changed in version 1.5?
Fixed some animation issues that appeared in iOS 5.
Fixed an intermittent crash in the stats screen.
Fixed a bug that caused the game to fail to properly award a couple of achievements in some rare circumstances.
Fixed a bug that (rarely) allowed the AI to play the dog even though it could fulfill an active wish (a rules violation).
Q: What changed in version 1.4?
Fixed a bug where the AI might not realize that it was required to fulfill an active wish after a singleton phoenix was played as the very first card of a trick.
The AI is a little more likely to dog to a partner who has called Tichu than previously.
The AI is very slightly more conservative about calling Tichu at the normal agression setting.
The wish picker can now be cancelled.
The version number is now (very faintly) shown on the credits title bar.
Minor stability improvements (mostly relating to Game Center).
Q: What changed in version 1.3?
New matchmaking screen that makes it easier to configure a new game.
Significantly improved AI Tichu calling algorithms (at all skill levels).
Somewhat improved AI card play (at all skill levels). Although that was not the primary focus of this release. Don't expect perfection.
Improved behavior when a user's music is playing.
Visual indicators added to the player badges so you can tell at a glance how the AI opponents are configured.
Visual indicator added to cards that were received in the pass.
Enhanced end of game summary screen, including a "New Game" button and an "Email Log" button.
Elo-style rating that adjusts to reflect your overall performance.
Various anti-cheating measures (although I certainly won't promise that people won't figure out ways to cheat).
Q: What changed in version 1.2?
Q: What does BSW-style game logging mean?
A: BSW stands for BrettspielWelt.de, which is a wildly popular German web site where players from all over the world have been able to play Tichu (and other games) on line against other human opponents for many years. For some time now, BrettspielWelt has had the ability to log Tichu games played over its service. These logs contain a complete record of every card drawn, passed, or played during a game. From these logs, a complete game can be reconstructed and analyzed. Some enterprising people have even written software tools to analyze them and/or replay them.
The iOS version of Tichu, beginning with version 1.3, now keeps a log of its games using the exact same format used by BSW. At the end of each game you have the opportunity to email your game's log to yourself or to anyone else you like.
Q: How does the new rating system work?
A: The rating system assigns each player a numeric rating which is displayed in the statistics screen. Your rating is also displayed after each game and it is shown on the primary Game Center leaderboard.
Your initial rating starts at 600 (which is quite low) and is adjusted after each game. The amount by which your rating is adjusted depends upon several factors, including the average rating of your partnership, the average rating of your opponents, and the game's point spread. The precise formula is a secret but it is a modified Elo system, similar to those used to rank chess players and other competitive games. The important thing to keep in mind is that if you are battling a stronger opponent, you don't actually need to win the game for your score to improve, and vice versa. Whether you win or lose isn't so important; what is important is that you do at least as well as the system expects.
You may also be interested to to know that over your first few games your score will be adjusted quite a bit but the more games you play, the less your score will be adjusted. The idea is to get you close to your appropriate rating as quickly as possible. After you have a few games under your belt, you should find that your score begins to settle and that it only continues to go up as your skill improves.
You should also notice that the ratings for the computer opponents is fixed. This is because the AI does not learn over repeated games like a human does. The AI, when set at a particular setting, will always play the same way.
Eventually, you may find that you need to seek out matches with highly rated opponents to attain a higher rating.
Q: What happens to my rating if I (or my opponent) abandons a game in progress?
Ratings are only adjusted when a game is scored. Games are generally only scored when a game is played to completion HOWEVER if a game has progressed beyond a certain point (which is deliberately NOT fixed to discourage people from gaming the system) the game may be scored as if the game had been played to completion. If you are losing, you can expect that you will have passed this "point of no return" much sooner than if you were winning. So abandoning a game because you are losing is much more likely to hurt your rating than abandoning a game because you are winning is likely to help you. In other words, be a good sport and play your games to completion whenever possible. You will almost always be better off for it.
Obviously, there will be times when someone will have to leave a game in progress. If this happens, the best thing to do is to try and arrange a time when the game can be continued at a later date. If that isn't possible then you may find that it is best to continue the game to completion by allowing the computer to take over. Abandoned games are only scored if a new game is started in their same slot, so as long as you come back and finish your game later, your rating shouldn't be harmed.
Q: Why does the leaderboard only show my highest rating instead of showing my current rating?
A: Game Center leaderboards are implemented by Apple in such a way as to only show your highest score over a given interval of time. They don't offer any way of correctly dealing with a player rating that rises and falls. This is an unfortunate limitation of Game Center which has been brought to Apple's attention. Hopefully at some point they will correct it. Until then, we are left with leaderboards that really only show a "high water mark".
One way to partially work around this limitation is to go to the leaderboard section of the Game Center application and ask it to show you only those ratings that have been recorded over the last day. This will still only measure your highest rating on that day against the highest ratings of other players who played on that same day, but it's still pretty close to what you would really like to know, which is: how do you currently measure up against all the other Tichu players out there?
Q: I think someone is cheating. What can be done?
A: Unfortunately, very little. Apple has not given me any way to ban players or to remove scores from the leaderboards. You could email Apple support and report someone who you suspect of cheating but there is very little likelihood that anything will be done. For this reason, it's probably best to take any very high ranking you see on the leaderboards with a grain of salt and just take things in stride. After all, this isn't a tournament and there is no money on the line so it's best to just try to ignore the cheaters and enjoy yourself as much as possible.
Q: How can I reset my scores on the leaderboards?
A: You can't. There is no way for you (or me) to erase leaderboard scores. Apple doesn't allow it. The only thing you can do is create a new Game Center account. Since your scores and stats are tied to your Game Center account, creating a new account is basically the same as starting over.
Q: What future plans do you have for Tichu?
A: As my schedule permits, I hope to continue improving the AI. It is clear to me that, despite vast improvement over the last couple of updates, the AI still has a lot of weaknesses and, while improving it is greatly hampered by the CPU power available, I do plan to make improvements where I can. This is an ongoing priority for me.
A: I recently brought Ted Alspach's Start Player to iOS. What'll be next? I don't know. We'll just have to wait and see. I'm sure I'll think of something. Feel free to email me your suggestions so long as you'll be understanding if I don't choose to do them.
Q: The cards have all disappeared! How can I get them back?
A: I am aware that on very rare occasions, usually when returning from one of the auxiliary screens, the cards can disappear. I believe it is the result of a low memory condition but I haven't been able to reliably reproduce the problem. If this happens, exiting the game and restarting it should clear the problem up.
Press the home button to switch to the desktop.
Press the home button twice in succession to bring up the "running applications" tray.
TAP and HOLD the Tichu icon on that tray. The icons will eventually wiggle and you'll see a little dash in a red circle appear on each icon.
Click on the dash in the red circle on the Tichu icon to force Tichu to close.
Press the home button again to stop the icons from wiggling.


text:
Give to florida southern
Request Info global header
Visit global header
Apply global header
About FSC
FSC Values
All Academic Programs
Clubs and More
Wellness & Recreation
Undergraduate
Adult & Graduate
SouthernNews
Search Florida Southern:
Formal Complaint of
FSC Home >Campus Offices > Student Accountability
This Report provides community members with the opportunity to notify the College of prohibited conduct. This form is used to formally file a complaint of racial discrimination.
Florida Southern College (the "College") is committed to the principles of equal opportunity and seeks to establish and maintain an environment which ensures equal access to education for all College community members including students, applicants for admission, employees, applicants for employment, guests, and visitors. To foster this environment, the College encourages individuals with knowledge or concerns of an incident of discrimination to report the incident to either of the College's Title IX Co-Coordinators.
In this document, you will see various terms. The definitions of these terms are below:
Complainant: An individual who is alleged to be the victim of conduct that could constitute sexual harassment
Respondent: An individual who has been reported to be the perpetrator of conduct that could constitute sexual harassment
Witness: An individual with first-hand knowledge of the alleged incident. This may include someone you told about the alleged incident after it occurred.
The College accepts anonymous reports, which will be reviewed by the Title IX Co-Coordinator(s) and included in campus safety assessments. If an anonymous report is submitted by a third-party and contains the identity of the complainant, the Title IX Co-Coordinator will contact the complainant to inquire about the incident, offer supportive measures, and explain the process for filing a formal complaint. If an anonymous report does not contain the identity of the complainant, the College will be unable to contact the complainant and offer supportive measures. While the Title IX Co-Coordinator will keep confidential the identity of the complainant (unless disclosing the complainant's identity is necessary to provide supportive measures such as no-contact orders), the Title IX Co-Coordinator must know the identity of the complainant to offer supportive measures.
Any person (the actual complainant or a third party) may report anonymously using the appropriate anonymous reporting form. However, the College's ability to respond to anonymous reports is significantly limited.
Complaints of Sexual Discrimination
In accordance with the Florida Southern College Policy on Sexual Misconduct & Sexual Harassment, any person may report an incident(s) of sex discrimination, sexual misconduct, or sexual harassment to the Title IX Co-Coordinator(s). Forms of sexual harassment include sexual assault, dating violence, domestic violence, and stalking. The reporting party may be the person directly affected by the alleged incident (referred to as "complainant") or a third party.
Regarding complaints of sexual harassment, it is important to note the following:
Title IX is a federal law that prohibits discrimination on the basis of sex in education programs or activities receiving federal financial assistance. Sexual harassment is a form of sex discrimination, and Title IX defines sexual harassment as conduct on the basis of sex that constitutes one or more of the following three types of behavior:
Quid Pro Quo harassment - When a person's participation in an education program or activity is directly tied to submitting to unwelcome sexual advances, requests for sexual favors, or other verbal, nonverbal, or physical conduct of a sexual nature.
Severe, Pervasive, and Objectively Offensive Conduct that Denies a Party Equal Educational Access
Sexual Assault, Dating Violence, Domestic Violence, and Stalking
Under Title IX, Florida Southern College (the "College") is obligated to investigate formal complaints of sexual harassment and will treat parties equally and equitably throughout the grievance process. For more information about the definitions of sexual harassment, filing a formal complaint, and the Title IX investigation and grievance process, refer to the Florida Southern College Policy on Sexual Misconduct & Sexual Harassment.
Important: Only the individual who is the alleged victim of conduct that could constitute sexual harassment ("complainant") may file a formal complaint.
Filing a formal complaint will initiate the Title IX grievance process, which requires notifying the respondent of the allegations and grievance process.
If a Title IX Co-Coordinator receives a formal complaint which does not meet the Title IX definition of sexual harassment, they will contact the complainant to discuss available options.
See the Sexual Misconduct & Sexual Harassment Policy for more information about the College's complaint resolution procedures as well as the Title IX formal complaint and grievance process.
If you have questions about filing a formal complaint, we encourage you to contact one of the Title IX Co-Coordinators. The Title IX Co-Coordinators' contact information is as follows:
Amanda Blount, Ed.D.
Title IX Co-Coordinator, Assistant Dean of Student Development for Accountability, Education, and Compliance
Carlisle Rogers Building, 244
Katherine Pawlak
Title IX Co-Coordinator, Assistant Vice President for Operations & Director of Human Resources
Raulerson Building
Once the report is received, the Title IX Co-Coordinator will contact the complainant to discuss supportive measures and explain how to file a formal complaint and/or initiate the complaint resolution procedures, if applicable and desired by the complainant. Supportive measures will be available to complainants regardless of whether or not they wish to file a formal complaint to initiate a Title IX grievance process or complaint to initiate the College's grievance procedures.
Complainants, respondents, and reporters may also contact Counseling Services, if desired, which can be found on pages 30 & 31 of the Sexual Misconduct & Sexual Harassment Policy.
Thank you for filing a formal complaint. You can find additional resources about the College's policies and protocols regarding incidents of discrimination, including sexual harassment on our website.
Complainant Information
*Complainant Type:
Faculty Staff Student Student-Employee Applicant
( ) - Second three digits Last four digits
Ethnicity (Hispanic or Non-Hispanic):
Race of Complainant:
White Hispanic or Latino Black or African American Native Hawaiian or Pacific Islander Asian Two or More Races
Gender of Complainant:
Male Female Trans Identifying Gender Queer - Gender Non-Conforming Different Identity Prefer Not to Answer
Direct Supervisor:
Office Phone Number:
Office Phone Extension:
Basis of the Complaint
*Basis of Complaint (check all that apply):
Respondent Information
*Gender:
*Race:
*Ethnicity (Hispanic or Non-Hispanic):
*This person is:
Faculty Staff Student Student-Employee Other
Office Phone:
Description of Complaint
*Description of Complaint:
Please describe in detail the incident(s) you consider to be discriminatory or retaliatory and why you believe this person discriminated or retaliated against you. Also, please provide the date(s) and locations(s) for each incident including first and last names of individuals involved. Explain why you have contact with these individuals (supervisor, co-worker, faculty, customer, etc.).
Complaint Documentation:
Do you have any documentation supporting your complaint such as text messages, print screens, or e-mails? If so, please provide copies of the documentation supporting your complaint along with any explanation behind the documentation.
Complaint Documentation Attachment 1:
Previous Action:
Have you brought this matter to the attention of any other person or department at the college or any external agency such as law enforcement or the EEOC? If so, please list the name(s) and department(s) of all other persons with whom you have discussed this matter and when you had the discussion.
*Corrective Action Sought:
Describe the relief or corrective action you are seeking from the college and/or the respondent.
Identify the witnesses who will support your allegations.
How do you know the witness?:
Friend Fellow Student in Class Fraternity/Sorority Brother/Sister Faculty Staff Coworker Other
Authorization and Signature
I understand that by submitting this formal complaint, I am knowingly initiating the formal grievance process (i.e. formal investigation) related to the allegations that have been described.
*Yes, I understand:
I understand that upon receipt of this formal complaint, the Title IX Co-Coordinator may contact me to gather additional information, if necessary.
I understand that upon the Title IX Co-Coordinator's review, the College will dismiss a formal complaint of sexual harassment under Title IX if the alleged conduct:
Would not constitute sexual harassment as defined in the Sexual Misconduct & Sexual Harassment Policy if proven;
Did not occur in the College's education program or activity; or
Did not occur in the United States.
I also understand that if a formal complaint of sexual harassment under Title IX is dismissed, the Title IX Co-Coordinator will notify the respondent and me of the dismissal. However, the behavior that does not meet the above criteria may still be addressed under different College policies.
Yes, I understand:
By typing my name below, I confirm that I am the person making this formal complaint. I also confirm that the information provided in this formal complaint is true to the best of my knowledge.
*Full Legal Name:
*Date:
*College ID Number:
visit florida southern on face book visit florida southern on instagram visit florida southern on twitter visit florida southern on linked in visit florida southern on snap chat visit florida southern on you tube
111 Lake Hollingsworth Drive
Compliance & Disclosures
Copyright ©2023 Florida Southern College • Feedback
Search FSC:


text:
Taxpayers Pay When Public Officials Fail To Provide For Differing Site Condition In Public Works Bidding
Lindsay T. Watkins
Construction News and Notes, Contracting, Government Contracts
Last Tuesday (June 21, 2011), Oak Harbor's $8.35 million downtown improvement project was abruptly shut down after the contractor encountered a Native American burial site under SE Pioneer Way. The Project's first interruption occurred on June 16th when the remains of at least three Native Americans were unearthed by the excavator on the Project. Tuesday was the first attempt to pick up where they left off, but "[a] 15-foot square was about as far as they got," Larry Cort, a project manager for the Project stated. The additional bones were discovered by a construction worker who was excavating the roadway just a few feet from the cordoned off pit where the remains were found on June 16th. As soon as the new discovery was made, the Department of Archeology and Historic Preservation ordered that all construction activities be stopped. Strider Construction, the general contractor on the Project, stopped construction immediately.
While Native American remains are common within the State of Washington, and even more common on Whidbey Island (Oak Harbor is a community located on the Island), the most troubling part of these discoveries is that the Oak Harbor city officials knew the Project was close to a known archeological site, received instructions from the Department of Archeology and Historic Preservation on how to handle the potential situation, but yet moved ahead, ignoring the recommendations from state experts. Then, once the remains were unearthed, are reported to have lied to the public, claiming surprise and stating they had no prior knowledge that a Native American site was close to the Project.
The State Department of Archaeology and Historic Preservation wrote to the City in May 2009, informing the City that the Department was concerned the contractor may encounter archeological deposits during construction. The Department then provided a series of recommendations to monitor the construction work, develop protocols in case remains are discovered, and consult with tribes that may have a connection to the remains. Each of these recommendations would have likely kept costs and delays down. Despite such advanced notice, the City officially, blatantly and inexplicably ignored the Department's recommendations.
City Engineer Eric Johnston, who was at the excavation site when the bones were discovered, feigned surprise after the discovery. He claimed that the City had done its due diligence by hiring an archeological firm to evaluate the project and that no indication of a Native American site had been found. This is in stark contrast to the Department's warnings to the City over a year ago. Further, it appears that a firm was never hired, nor was an evaluation completed.
The City's (Johnston's) response? "I was mistaken."
Oak Harbor's Mayor, Jim Slownik, states that the recommendation should have been followed and that the City plans to find out what happened, as the "city has a good record of following state requirements."
The Mayor's statements, just weeks after he announced he will seek a second term in November, however, are a day late and a dollar short. Not only were the Native American remains at great risk of destruction and were not treated with the respect they deserved, but construction cannot resume until the project site has been cleared. In light of the number of bones found and the number of tribes that may be involved (eleven tribes were advised of the discovery), questions arise over what will become of the Project. In 2000, an expansion of the wastewater treatment plant on the Semiahmoo spit was terminated after the contractor unearthed Native American remains and artifacts on the construction site. The site was then designated a Native American burial area and historical site. After the City of Blaine settled with the Lumni Nation, the plant had to be relocated to a new site. The new treatment facility, with a price tag of over $33 million, was finally opened in 2010!
Although the City did not break any laws and the bones would have been discovered regardless, "it would have saved the City a lot of time and expense if they had followed our recommendations," a representative from the Department said. Instead, the City has transferred this burden to Oak Harbor taxpayers, local merchants, and the general contractor, who are now forced to wait for the City to obtain an emergency permit. The Project began March 1st with a scheduled completion date of September 2, although Strider Construction was ahead of schedule. How long these discoveries will delay the project is unclear. Mayor Slownik and Johnston's "mistakes" are costly, in more ways than one. And then, adding insult to injury, Johnston lies about the 2009 report. At the very least, one hopes that taxpayers will remember this debacle come November.
The upshot of this fiasco will be a significantly delayed public works project, a substantial claim by the contractor whose work is delayed and interrupted and possibly, litigation while the dispute is resolved in the courts. Clearly, the City's engineers should have properly provided for the potential differing site conditions, made appropriate arrangements and included appropriate contingencies in the contract documents. When the differing site conditions were encountered (as the Department of Acheology recomended), procedures would have been in place to quickly resolve the matter and move on with the project at a minimal cost the contractor and the taxpaying public. Instead, this project will be mired down for many months, if not years while this inevitable dispute will wind its way through the dispute resolution process and possible through court intervention.
This regrettable incident comes on the heals of the RCI/Herzog claim against Sound Transit on the Central Link Project on which a Dispute Review Board ("DRB") found that Sound Transit had "materially breached its contract." Sound Transit also failed to account for differing site conditions in its contract and when encountered, failed to expeditiously and equitably adjust the contract price. That "mistake" by the public officials (employed by Sound Transit) to provide a through subsurface investigation, cost the taxpayers nearly $70 million. The DRB panel was critical of the Sound Transit engineers for failing to properly investigate buried utilities and contaminated soils before the project started and account for those conditions in the contract documents which would have resulted in substantial savings to the taxpaying public.
Sound Transit officials and its legal counsel candidly admitted that Sound Transit was aware of potential buried utilities and contaminated soils, but chose not to properly account for those differing site conditions in the contract drawings, instead allowed the contractor to discover the inevitable changed conditions and the project to suffer the consequent impact and delay generally associated when conditions on a construction project change.
Public works owners owe the taxpaying public (their constituents – all of us) a proper investigation of the subsurface and concealed conditions and not simply rely upon exculpatory clauses in the contract to improperly shift the risk of differing site conditions to the contractor and thereby increasing the cost of public works projects. (An earlier blog on the subject can be found here). Prudent public owners understand that the best prices in the long term are achieved when contingencies such as differing site conditions on a construction project are limited. In the long run, the taxpayers win when the risk of differing site conditions is thoroughly investigated and assumed by the entity (public works owner) best able to control that risk.
PrevPreviousThe Chinese Drywall Crisis: Chinese Drywall Supplier Reaches $55 Million Settlement With Florida Homeowners
NextAnother Washington Dam To Be Removed To Open Fish HabitatNext


text:
Q: Understanding consequences of using bad react keys Recently, I made a trivial mistake using array values instead of indexes for keys like below:
import React, { useState } from 'react';
import ReactDOM from 'react-dom';

function NamesView(props: {names: string[], setNames(l: string[]) : void}) {
    const {names, setNames} = props;
    function setName(index: number, name: string) {
        setNames(names.map((n, i) => i===index ? name : names[i]));
    }
    return

        {/***** THE key IS WRONG!!! */ }
        {names.map((n, i) => <input key={n} value={n} onChange={e => setName(i, e.target.value)}/>)}

;
}

function MainView() {
    const [names, setNames] = useState(() => ['one', 'two']);
    return <NamesView names={names} setNames={setNames}/>
}

ReactDOM.render(<MainView/>, document.getElementById('root'));

Here, using key={i} would be right. What I don't understand is the behavior of the wrong code: Each input can be edited just once. You can add or delete a character or paste something and it works, but all subsequent changes get ignored - until you e.g., change focus.
Can someone explain why?

A: When you are mapping through names which is an array of input values.
You are rendering the inputs in the following way.
return (

    {/***** THE key IS WRONG!!! */}
    {names.map((n, i) => (
      <input key={n} value={n} onChange={(e) => setName(i, e.target.value)} />
    ))}

);

As soon as you change the input, setNames is triggered through your setName via onChange.
This means react will now check for new items generated.
Since key={n} would change the input itself i.e a new input element is generated and updated now in the dom, that is why you lose focus each time when you change it.
This is not the case, when you are using index as the key.
Because then the keys of input remain same and only the value changes.
However, there are some caveats using index as keys too.
You can read more about them here:

*

*https://reactjs.org/docs/lists-and-keys.html

*https://reactjs.org/docs/reconciliation.html#recursing-on-children

A: Keys are used for lists to help React identify which items have changed, been added or been removed. In your case you're using the name as the key, so whenever you update the value of your input field, the key is updated as well. React detects this as an element being removed, and a new element being added.
So instead of just updating the value, React actually removes the input field, and add an input field again, which is why the input loses focus after updating one of the inputs.

redpajama_set_name: RedPajamaStackExchange


the free news and announcement service for all things Visual Studio - .NET, C#, ASP.NET, COM+ etc.
this week in the UK. "It's free to add an announcement, and VS.NET news can be delivered via email straight to your desktop as it happens."
iDevResource.com is aimed at, and run by, professional developers for those using predominantly Microsoft technologies, languages and operating systems. VisualStudiowire.NET is the first launch this quarter in a series of websites for professional developers using proprietary solutions developed in-house by the independent team.
through 20 or 30 well-known discussion groups such as COMdevelopers and dev-xml.
the C++, COM and C# guru, buttonholed at VSLive in San Francisco recently.
available to all interested parties), and most excitingly free .NET server space for European developers. Advertisers, sponsors and the community from global corporations continue to support the team in their initiatives.
This press release was distributed by ResponseSource Press Release Wire on behalf of iDevResource.com in the following categories: Consumer Technology, Personal Finance, Business & Finance, Computing & Telecoms, for more information visit https://pressreleasewire.responsesource.com/about.


text:
Pensacola woman brought to brink by legal system processes
Having been awarded $900,000 in a civil lawsuit Monday, a Pensacola woman divulges the emohttps://presto.gannettdigital.com/tional agony of a long legal battle.
Pensacola woman brought to brink by legal system processes Having been awarded $900,000 in a civil lawsuit Monday, a Pensacola woman divulges the emohttps://presto.gannettdigital.com/tional agony of a long legal battle. Check out this story on pnj.com: https://www.pnj.com/story/news/crime/2019/07/02/pensacola-woman-brought-brink-legal-system-processes/1582228001/
Colin Warren-Hicks, Pensacola News Journal Published 6:00 a.m. CT July 2, 2019 | Updated 11:42 a.m. CT July 3, 2019
Letitiea Feagins, a 44-year-old Pensacola mother of four, knows that the better portion of $900,000 she won Monday at the conclusion of a civil lawsuit will never enter her bank account.
But that's OK, Feagins said, because she won something more valuable to her well-being than financial gain.
When an Escambia County jury sided with Feagins in her lawsuit against Terry Hamilton — a man who Feagins told jurors raped her in 2017 — she won validation. After two years of doubting that anyone believed her side of the story, she felt her credibility was restored.
Feagins' story is an exemplary tale of the stress and pains that many people experience while enduring an extended legal battle — stress levels capable of slowly deteriorating a person's mental health.
An arrest: Pensacola maintenance man charged with sexual assault
A $100,000 settlement: Pensacola housing provider pays woman $100K to settle sexual harassment claims
A $900,000 win: Woman wins $900,000 in civil court from man she accused of rape in 2017
"I have small kids. What I'm going through, they have to go through," Feagins said. "But they don't understand why, why they can't go outside or why mama is in the corner crying."
She added, "I think a lot of victims need to know that it is not an overnight thing. It takes time — years."
Stress and pains
On March 17, 2017, Feagins had gone to sleep on her couch in her Area Housing Commission apartment in Pensacola. Court records show she was taking prescribed medication, which induced a heavy sleep, after a recent hysterectomy.
She was unaware and at first unresponsive when her apartment's maintenance man, Hamilton, used his access to facility keys to unlock her apartment door and climb on top of her.
"Knowing that I was going in and out of consciousness," Feagins said. "Knowing that something was happening to me that wasn't agreed upon, or asked to be done to me …"
Since that night over two years ago, there have been many days Feagins has not wanted to leave her home or go outside, she said, "You don't want anybody to see your face, because you feel embarrassed and ashamed."
Immediately following the assault, however, she forced herself to contact police. She said the first thing she told them was that she and Hamilton had been in a consenting relationship three years prior to the night he broke into her home.
She showed law enforcement the texts messages she had sent Hamilton accusing him of assaulting her. She also showed police Hamilton's replies.
A Pensacola Police Department search warrant revealed that Hamilton texted Feagins and wrote "And I didn't know you was on NO MEDICATION. YOU WAS ACTING LIKE YOU WAS SLEEP … DON'T START!"
He was arrested on March 21, 2017, on charges of burglary and sexual battery. He was released on bond Oct. 19, 2017, but it was weeks before Feagins learned he was out of jail.
A neighbor stopped her one afternoon while she searched for her keys, her arms full of groceries with kids in tow. "The woman said, 'I hear Mr. Hamilton is out.' And I lost it."
Feagins started to shake. She dropped her keys. She dropped her groceries.
"I started calling everyone. I called my lawyer. I called the Escambia County Jail. I called my children in a real way, 'Get in this house! Get here, now!'"
Attorney Ryan Barnett listens as his client, Letitiea Feagins, talks June 27 about her lawsuit at his office in Pensacola. (Photo: Gregg Pachkowski/gregg@pnj.com)
Feagins lived in terror of Hamilton seeking revenge and of merely running into him in a casual or everyday way, out-and-about on the street, saying "I was scared for me and my children's safety."
She was relieved when Hamilton was sentenced to five years in prison after pleading guilty to two counts of burglary of a dwelling with assault or battery on Nov. 6, 2018, but a feeling of injustice lingered.
Because he pleaded guilty, the need for a trial was negated, and Feagins felt stung by not having an opportunity to retell the story of her ordeal in a courtroom — unable to attain validation from a jury's judgement.
She read social media comments underneath articles detailing what had happened to her and about Hamilton's guilty plea. Some of the comments referenced the fact that she and Hamilton had had a prior romantic history, and based on that, the commenters had called her a liar, crazy and a "nut," she said. The words took their toll.
Letitiea Feagins talks June 27 about winning a lawsuit in civil court against the apartment maintenance man convicted of sexually assaulting her and the man's employer, the Area Housing Commission. (Photo: Gregg Pachkowski/gregg@pnj.com)
The oldest of Feagins' four children, 24-year-old Quandarius Purifoy, said his mother's smile started to change.
Sitting next to his mother during a recent interview, Purifoy explained having witnessed "the experience of a person changing over a period of time," he said.
"My sister just saw a picture of her taken few years ago, just before all this happened," Purifoy said. "It was a picture I took on a Father's Day. I always celebrate her on Father's Day — cause she's a single mom and all."
Purifoy's sister looked at the picture of their mother and then looked at their mother standing nearby, Purifoy recalled. "My sister looked at her and said, 'Look how happy you looked.'"
Feagins burst into tears, just hearing her son retell the moment Thursday.
"It's true. It's true," she interjected.
"It's just been a lot," Purifoy added.
"As time went on, it mentally weighs on you," Feagins said through tears. "It mentally weighed on me."
Although Feagins did not get a chance to have her story heard in criminal court, she did in civil court.
On Sept. 19, 2017, Feagins and her attorney, Ryan Barnett, filed a civil lawsuit against Hamilton and his employer, the Area Housing Commission in Pensacola.
Attorney Ryan Barnett talks June 27 about a civil lawsuit his client, Letitiea Feagins, filed against an apartment maintenance man who sexually assaulted her and his employer, the Area Housing Commission in Pensacola. (Photo: Gregg Pachkowski/gregg@pnj.com)
The Area Housing Commission settled its part of the civil suit, pertaining to sexual harassment claims, by agreeing to pay Feagins $100,000, according to court documents.
As part of the settlement, Feagins insisted that the Area Housing Commission agree to a stipulation of her choosing — a concession to address sexual harassment.
According to a conciliation agreement signed Aug. 10, 2018, the AHC agreed to write and approve a non-discrimination policy "which includes a policy prohibiting sexual harassment of AHC applicants, tenants, and voucher program participants, and will update its employee handbook to reflect this policy."
Unlike his employer, Hamilton did not settle in the civil case and chose represent himself in court, court documents show.
A jury sided with Feagins, validating her claims of civil battery and intentional infliction of emotional distress.
"For me, going through this civil trail, I want to say that it healed me more than seeing him sent to jail because I was able to speak my truth," Feagins said. "The jury heard me. They believed what I said."
Want to stay up to date on the latest news? Click here to subscribe to pnj.com.
Hamilton was court ordered to pay Feagins $900,000 in damages.
"If he can't pay it, she doesn't necessarily have an immediate recourse. ... The judgement could, could in theory, go uncollected," Barnett said. "But we are certainly going to do everything we can to try and collect on it."
The next phase of the case for his client will be attempting to collect by "trying to get assets, property, that type of thing," Barnett said.
But the next phase in Feagins' everyday life will be trying to recapture her smile.
"I'm going to do my best to try and come out of my shell, but it takes time," she said. It's really hard."
Colin Warren-Hicks can be reached at colinwarrenhicks@pnj.com or 850-435-8680.
Read or Share this story: https://www.pnj.com/story/news/crime/2019/07/02/pensacola-woman-brought-brink-legal-system-processes/1582228001/
Lawsuits alleges Sheriff David Morgan involved in 'sex ring'
Gulf Breeze family rescues injured Jet Ski rider
Noticed the Sears construction? Here's what's going up instead
Why ECSD rejected a $2.3 million Triumph grant
'It's horrifying': Milton mom claims epidural was stuck in her back for days