text:
package it.unibz.krdb.obda.owlrefplatform.core.dag;

import it.unibz.krdb.obda.ontology.Description;
import it.unibz.krdb.obda.ontology.OClass;
import it.unibz.krdb.obda.ontology.OntologyFactory;
import it.unibz.krdb.obda.ontology.PropertyExpression;
import it.unibz.krdb.obda.ontology.SomeValuesFrom;
import it.unibz.krdb.obda.ontology.impl.OntologyFactoryImpl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Map;
import java.util.Queue;
import java.util.Set;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Implement Graph specific operations like get all ancestors and get all
 * descendants
 *
 * @author Sergejs Pugac
 */
@Deprecated
public class DAGOperations {
	private static final Logger	log	= LoggerFactory.getLogger(DAGOperations.class);

	public static void buildAncestors(DAG dag) {
		buildAncestors(dag.roles);
		buildAncestors(dag.classes);
	}

	/**
	 * Calculate the ancestors for all nodes in the given DAG
	 *
	 * @param dagnodes
	 *            a DAG
	 * @return Map from uri to the Set of their ancestors
	 */
	public static void buildAncestors(Map<Description, DAGNode> dagnodes) {
		Queue<DAGNode> stack = new LinkedList<DAGNode>();

		for (DAGNode n : dagnodes.values()) {
			n.getAncestors().clear();
			if (n.getParents().isEmpty()) {
				stack.add(n);
			}
		}

		if (stack.isEmpty() && !dagnodes.isEmpty()) {
			log.error("Can not build ancestors for graph with cycles");
		}

		while (!stack.isEmpty()) {
			DAGNode cur_el = stack.remove();

			for (DAGNode eq_node : cur_el.equivalents) {
				if (!cur_el.getAncestors().contains(eq_node))
					cur_el.getAncestors().add(eq_node);
			}

			for (DAGNode child_node : cur_el.getChildren()) {

				// add child to ancestor list
				if (!child_node.getAncestors().contains(cur_el)) {
					child_node.getAncestors().add(cur_el);
				}

				// add child children to descendants list
				for (DAGNode cur_el_ancestor : cur_el.getAncestors()) {
					if (!child_node.getAncestors().contains(cur_el_ancestor))
						child_node.getAncestors().add(cur_el_ancestor);
				}
				stack.add(child_node);
			}
		}
	}

	public static void buildDescendants(DAG dag) {
		buildDescendants(dag.roles);
		buildDescendants(dag.classes);
	}

	/**
	 * Calculate the descendants for all nodes in the given DAG
	 *
	 * @param dagnodes
	 *            a DAG
	 * @return Map from uri to the Set of their descendants
	 */
	public static void buildDescendants(Map<Description, DAGNode> dagnodes) {
		Queue<DAGNode> stack = new LinkedList<DAGNode>();

		// Start with bottom nodes, that don't have children
		for (DAGNode n : dagnodes.values()) {
			n.getDescendants().clear();
			if (n.getChildren().isEmpty()) {
				stack.add(n);
			}
		}
		if (stack.isEmpty() && !dagnodes.isEmpty()) {
			log.error("Can not build descendants for graph with cycles");
		}
		while (!stack.isEmpty()) {
			DAGNode cur_el = stack.remove();

//			cur_el.getDescendants().add(cur_el);

			for (DAGNode eq_node : cur_el.equivalents) {
				if (!cur_el.getDescendants().contains(eq_node))
					cur_el.getDescendants().add(eq_node);
			}

			for (DAGNode par_node : cur_el.getParents()) {

				// add child to descendants list
				if (!par_node.getDescendants().contains(cur_el)) {
					par_node.getDescendants().add(cur_el);
				}

				// add child children to descendants list
				for (DAGNode cur_el_descendant : cur_el.getDescendants()) {
					if (!par_node.getDescendants().contains(cur_el_descendant))
						par_node.getDescendants().add(cur_el_descendant);
				}
				stack.add(par_node);
			}
		}
	}

	/**
	 * Adds two edges between child and parent. The first edge is a child
	 * hasParent edge, the second edge is a parent hasChild edge. The method
	 * guarantees no duplicate edges in any single node, e.g., no node will have
	 * the edge A hasParent B two times.
	 *
	 * @param childnode
	 * @param parentnode
	 */
	private static void addParentEdge(DAGNode childnode, DAGNode parentnode) {

		if (childnode.equals(parentnode)) {
			return;
		}

		childnode.getParents().add(parentnode);
		parentnode.getChildren().add(childnode);
	}

	/**
	 * Removes the hasParent and hasChild edges between the two nodes, if they
	 * exist. The method also guarantees that if as a result of this operation
	 * the Node's children or parents list becomes empty, then they will be
	 * assigned NULL. This is done in order to gurantee that at any time, if a
	 * Node has no children or parents, then the correspondent collections will
	 * be NULL.
	 *
	 * @param childnode
	 * @param parentnode
	 */
	private static void removeParentEdge(DAGNode childnode, DAGNode parentnode) {
		childnode.getParents().remove(parentnode);
		parentnode.getChildren().remove(childnode);
	}

	public static void computeTransitiveReduct(Map<Description, DAGNode> dagnodes) {
		buildDescendants(dagnodes);

		LinkedList<Edge> redundantEdges = new LinkedList<Edge>();
		for (DAGNode node : dagnodes.values()) {
			for (DAGNode child : node.getChildren()) {
				for (DAGNode child_desc : child.getDescendants()) {
					redundantEdges.add(new Edge(node, child_desc));
				}
			}
		}
		for (Edge edge : redundantEdges) {
			DAGNode from = edge.getLeft();
			DAGNode to = edge.getRight();

			from.getChildren().remove(to);
			to.getParents().remove(from);
		}
	}

	public static void removeCycles(Map<Description, DAGNode> dagnodes, Map<Description, Description> equi_mapp, DAG dag) {

		// Finding the cycles (strongly connected components)
		OntologyFactory fac = OntologyFactoryImpl.getInstance();

		ArrayList<ArrayList<DAGNode>> sccs = scc(dagnodes);

		/*
		 * A set with all the nodes that have been proceesed as participating in
		 * an equivalence cycle. If a component contains any of these nodes, the
		 * component should be ignored, since a cycle involving the same nodes
		 * or nodes for inverse descriptions has already been processed.
		 */
		Set<DAGNode> processedNodes = new HashSet<DAGNode>();

		for (ArrayList<DAGNode> component : sccs) {

			/*
			 * Avoiding processing nodes two times
			 */
			boolean ignore = false;
			for (DAGNode node : component) {
				if (processedNodes.contains(node)) {
					ignore = true;
					break;
				}
			}
			if (ignore)
				continue;

			DAGNode cycleheadNode = component.get(0);
			DAGNode cycleheadinverseNode = null;
			DAGNode cycleheaddomainNode = null;
			DAGNode cycleheadrangeNode = null;

			if (cycleheadNode.getDescription() instanceof PropertyExpression) {

				PropertyExpression prop = (PropertyExpression) cycleheadNode.getDescription();

				PropertyExpression inverse = prop.getInverse();
				SomeValuesFrom domain = fac.createPropertySomeRestriction(prop);
				SomeValuesFrom range = fac.createPropertySomeRestriction(inverse);

				cycleheadinverseNode = dag.getNode(inverse);
				cycleheaddomainNode = dag.getNode(domain);
				cycleheadrangeNode = dag.getNode(range);
			}

			/*
			 * putting a cyclehead that is a named concept or named role
			 */
			if (component.size() > 1 && cycleheadNode.getDescription() instanceof SomeValuesFrom) {

				for (int i = 1; i < component.size(); i++) {
					if (component.get(i).getDescription() instanceof OClass) {
						DAGNode tmp = component.get(i);
						component.set(i, cycleheadNode);
						component.set(0, tmp);
						cycleheadNode = tmp;
						break;
					}
				}
			}

			if (component.size() > 0 && cycleheadNode.getDescription() instanceof PropertyExpression
					&& ((PropertyExpression) cycleheadNode.getDescription()).isInverse()) {
				for (int i = 1; i < component.size(); i++) {
					if (component.get(i).getDescription() instanceof PropertyExpression
							&& !((PropertyExpression) component.get(i).getDescription()).isInverse()) {
						DAGNode tmp = component.get(i);
						component.set(i, cycleheadNode);
						component.set(0, tmp);
						cycleheadNode = tmp;

						PropertyExpression prop = (PropertyExpression) cycleheadNode.getDescription();

						PropertyExpression inverse = prop.getInverse();
						SomeValuesFrom domain = fac.createPropertySomeRestriction(prop);
						SomeValuesFrom range = fac.createPropertySomeRestriction(inverse);

						cycleheadinverseNode = dag.getNode(inverse);
						cycleheaddomainNode = dag.getNode(domain);
						cycleheadrangeNode = dag.getNode(range);

						break;
					}
				}
			}
			processedNodes.add(cycleheadNode);

			if (cycleheadinverseNode != null) {
				processedNodes.add(cycleheadinverseNode);
				processedNodes.add(cycleheaddomainNode);
				processedNodes.add(cycleheadrangeNode);
			}

			/*
			 * Collapsing the cycle (the nodes in the component)
			 */
			for (int i = 1; i < component.size(); i++) {
				DAGNode equivnode = component.get(i);

				for (DAGNode parent : new LinkedList<DAGNode>(equivnode.getParents())) {
					removeParentEdge(equivnode, parent);
					addParentEdge(cycleheadNode, parent);
				}

				for (DAGNode childchild : new LinkedList<DAGNode>(equivnode.getChildren())) {
					removeParentEdge(childchild, equivnode);
					addParentEdge(childchild, cycleheadNode);
				}

				if (cycleheadinverseNode != null) {
					/*
					 * we are dealing with properties, so we need to also
					 * collapse the inverses and existentials
					 */
					PropertyExpression equiprop = (PropertyExpression) equivnode.getDescription();

					DAGNode equivinverseNode = dag.getNode(equiprop.getInverse());
					DAGNode equivDomainNode = dag.getNode(fac.createPropertySomeRestriction(equiprop));
					PropertyExpression inv = equiprop.getInverse();
					DAGNode equivRangeNode = dag.getNode(fac.createPropertySomeRestriction(inv));

					/*
					 * Doing the inverses
					 */
					for (DAGNode parent : new LinkedList<DAGNode>(equivinverseNode.getParents())) {
						removeParentEdge(equivinverseNode, parent);
						addParentEdge(cycleheadinverseNode, parent);
					}

					for (DAGNode childchild : new LinkedList<DAGNode>(equivinverseNode.getChildren())) {
						removeParentEdge(childchild, equivinverseNode);
						addParentEdge(childchild, cycleheadinverseNode);
					}

					/*
					 * Doing the domain
					 */

					for (DAGNode parent : new LinkedList<DAGNode>(equivDomainNode.getParents())) {
						removeParentEdge(equivDomainNode, parent);
						addParentEdge(cycleheaddomainNode, parent);
					}

					for (DAGNode childchild : new LinkedList<DAGNode>(equivDomainNode.getChildren())) {
						removeParentEdge(childchild, equivDomainNode);
						addParentEdge(childchild, cycleheaddomainNode);
					}

					/*
					 * Collapsing the range
					 */

					for (DAGNode parent : new LinkedList<DAGNode>(equivRangeNode.getParents())) {
						removeParentEdge(equivRangeNode, parent);
						addParentEdge(cycleheadrangeNode, parent);
					}

					for (DAGNode childchild : new LinkedList<DAGNode>(equivRangeNode.getChildren())) {
						removeParentEdge(childchild, equivRangeNode);
						addParentEdge(childchild, cycleheadrangeNode);
					}
				}

				Description description = equivnode.getDescription();

				/***
				 * Setting up the equivalence map
				 */

				dagnodes.remove(equivnode.getDescription());
				equi_mapp.put(equivnode.getDescription(), cycleheadNode.getDescription());
				cycleheadNode.equivalents.add(equivnode);
				dag.allnodes.remove(equivnode.getDescription());
				dag.classes.remove(equivnode.getDescription());
				dag.roles.remove(equivnode.getDescription());

				processedNodes.add(equivnode);

				if (description instanceof PropertyExpression) {

					/*
					 * we are dealing with properties, so we need to also
					 * collapse the inverses and existentials
					 */
					PropertyExpression equiprop = (PropertyExpression) equivnode.getDescription();

					PropertyExpression inverseequiprop = equiprop.getInverse();
					PropertyExpression cycleheadprop =(PropertyExpression)cycleheadNode.getDescription();
					PropertyExpression invesenonredundantprop = cycleheadprop.getInverse();
					equi_mapp.put(inverseequiprop, invesenonredundantprop);
					dag.equi_mappings.put(inverseequiprop, invesenonredundantprop);

					DAGNode equivinverseNode = dag.getNode(inverseequiprop);
					DAGNode equivDomainNode = dag.getNode(fac.createPropertySomeRestriction(equiprop));
					PropertyExpression inv = equiprop.getInverse();
					DAGNode equivRangeNode = dag.getNode(fac.createPropertySomeRestriction(inv));

					if (!(equivinverseNode == null && equivDomainNode == null && equivRangeNode == null)) {
						/*
						 * This check is only necesary because of ISA DAGs in
						 * which we removed all descriptions that are not named
						 * classes or roles... in the future we will simplify
						 * this.
						 */

						processedNodes.add(equivinverseNode);
						processedNodes.add(equivDomainNode);
						processedNodes.add(equivRangeNode);

						dag.getRoles().remove(equivinverseNode.getDescription());
						dag.getClasses().remove(equivDomainNode.getDescription());
						dag.getClasses().remove(equivRangeNode.getDescription());

						dag.allnodes.remove(equivinverseNode.getDescription());
						dag.classes.remove(equivinverseNode.getDescription());
						dag.roles.remove(equivinverseNode.getDescription());

						dag.allnodes.remove(equivDomainNode.getDescription());
						dag.classes.remove(equivDomainNode.getDescription());
						dag.roles.remove(equivDomainNode.getDescription());

						dag.allnodes.remove(equivRangeNode.getDescription());
						dag.classes.remove(equivRangeNode.getDescription());
						dag.roles.remove(equivRangeNode.getDescription());

						equi_mapp.put(equivinverseNode.getDescription(), cycleheadinverseNode.getDescription());
						equi_mapp.put(equivDomainNode.getDescription(), cycleheaddomainNode.getDescription());
						equi_mapp.put(equivRangeNode.getDescription(), cycleheadrangeNode.getDescription());

						cycleheadinverseNode.equivalents.add(equivinverseNode);
						cycleheaddomainNode.equivalents.add(equivDomainNode);
						cycleheadrangeNode.equivalents.add(equivRangeNode);
					}

				}

			}
		}
	}

	private static int								index	= 0;
	private static ArrayList<DAGNode>				stack;
	private static ArrayList<ArrayList<DAGNode>>	SCC;

	private static Map<DAGNode, Integer>			t_idx;
	private static Map<DAGNode, Integer>			t_low_idx;

	private static ArrayList<ArrayList<DAGNode>> scc(Map<Description, DAGNode> list) {
		stack = new ArrayList<DAGNode>();
		SCC = new ArrayList<ArrayList<DAGNode>>();
		t_idx = new HashMap<DAGNode, Integer>();
		t_low_idx = new HashMap<DAGNode, Integer>();
		for (DAGNode node : list.values()) {
			if (t_idx.get(node) == null) {
				strongconnect(node);
			}
		}
		return SCC;
	}

	private static void strongconnect(DAGNode v) {
		t_idx.put(v, index);
		t_low_idx.put(v, index);

		index++;
		stack.add(0, v);
		for (DAGNode child : v.getChildren()) {
			if (t_idx.get(child) == null) {
				strongconnect(child);
				t_low_idx.put(v, Math.min(t_low_idx.get(v), t_low_idx.get(child)));
			} else if (stack.contains(child)) {
				t_low_idx.put(v, Math.min(t_low_idx.get(v), t_idx.get(child)));
			}
		}
		if (t_low_idx.get(v).equals(t_idx.get(v))) {
			DAGNode n;
			ArrayList<DAGNode> component = new ArrayList<DAGNode>();
			do {
				n = stack.remove(0);
				component.add(n);
			} while (!n.equals(v));
			SCC.add(component);
		}
	}

}


text:
Used 2017 Ford Fusion Energi Titanium Car For Sale Apopka FL
3FA6P0SU4HR151978
I4 Hybrid
E-CVT Automatic
2017 Ford Fusion Energi Titanium Stock # 151978 Description
**FREE DELIVERY IN FLORIDA**, **NO DEALER FEES**, **4.6 STAR CUSTOMER RATED DEALERSHIP**, **BLIND SPOT MONITOR!**, **NAVIGATION!**, **SUNROOF!**, **REMOTE START**, **LOCAL ORLANDO AREA TRADE**, **LEATHER SEATING**, **LANE KEEPING TECHNOLOGY**, **SYNC3 W/8" TOUCH SCREEN**, **BACK-UP CAMERA W/ REVERSE SENSING SYSTEM**, Steering wheel mounted audio controls. FWD I4 Hybrid Clean CARFAX. Mullinax Bronze vehicles give you the assurance of a 5 DAY/300-Mile RETURN POLICY, if you don't like it, BRING IT BACK! At Mullinax, there are NO DEALER FEES! JUST ADD TAX! We save you over $900 vs. Our largest competitors every day! 4,000 vehicles to choose from! Awards: * 2017 KBB.com Brand Image Awards * 2017 KBB.com 10 Most Awarded Brands
2017 Ford Fusion Energi Titanium 4D Sedan Details
The 2017 Fusion is all about drivetrain options. Buyers have many engine and transmission choices, all of which produce stellar fuel economy. Engines include a 2.5L 4-cylinder, a 1.5L 4-cylinder turbo, a 2.0L 4-cylinder turbo, a new 2.7L turbocharged V6, a 2.0L 4-cylinder hybrid and a plug-in hybrid system. A 6-speed automatic transmission is mated to all but the Hybrid and Energi plug-in hybrid, which feature a continuously variable transmission. The automatic is controlled by a small rotary dial in the center console. Front-wheel drive is standard on most trims, with all-wheel drive optional, except on the Fusion Sport, where AWD is standard.
For those looking for efficiency, the Hybrid, Energi plug-in hybrid, and 1.5L turbo are the engines of choice. The 1.5L turbocharged engine returns up to 37 mpg on the highway. The Fusion Hybrid is more efficient and will sip gasoline to the tune of 47 mpg in the city and 44 mpg on the highway. Finally the Energi plug-in hybrid is capable of running only on electricity for shorter trips, potentially limiting gasoline consumption to almost nothing.
The Fusion comes in five trims: S, SE, Titanium, Sport, and Platinum. S models are the most basic but still come nicely equipped as is appropriate for a midsized sedan. The 175-horsepower 2.5L engine is the only powerplant available on S models. Features include power door locks and windows, halogen projector headlamps, push-button start, a tilting and telescoping steering wheel and a trip computer. Ford's SYNC system is standard, as is an MP3-capable stereo with an auxiliary input jack, along with a rearview camera. The stereo and the cruise control can be operated by buttons mounted on the steering wheel.
The SE model enhances the level of basic equipment and also allows buyers to choose from more drivetrain options. The 181-horsepower 1.5L turbo, the 245-horsepower 2.0L turbo and the 141-horsepower 2.0L Hybrid are all options for the SE. Standard equipment on the SE includes a 10-way power adjustable driver's seat, heated mirrors and 17-inch wheels.
Stepping up to the Titanium edition will bring buyers a more luxury-oriented Fusion. Starting at just over $3,000, the Titanium edition comes with the powerful 2.0L turbocharged engine and is available with all-wheel drive. Polished 18-inch aluminum wheels are standard. Seating surfaces are leather and heated, and a 12-speaker Sony audio system with satellite radio provides in-car entertainment. The improved SYNC3 infotainment system is standard meaning there is an 8-inch LCD touchscreen in the center console that houses the optional navigation system. Two smaller configurable LCD screens are also embedded in the instrument cluster.
The Sport is the most athletic trim of the Fusion lineup, with its turbocharged 2.7L V6 making 325 horsepower and 350 pound-feet of torque and delivering all that power to standard all-wheel drive. Standard equipment includes 19-inch alloy wheels, quad exhaust tips, adjustable suspension dampers, aluminum sport pedals, and 10-way power adjustable heated sport seating with Dark Earth Gray Miko suede and leather surfaces. Also included are continuously controlled dampers, which offer improved ride and handling on uneven surfaces.
The new top-of-the-line Platinum trim is the most luxurious Fusion to date, with heated and cooled front seats, a heated steering wheel, premium leather-wrapped interior surfaces, and adaptive cruise control.
Safety features on the Fusion are extensive. The car utilizes eight airbags as well as the standard suite of electronic safety equipment, including anti-lock brakes, traction and stability control. Emergency brake assistance is also standard on all Fusions, as is an electronic parking brake.
Available Plug-in Hybrid Drivetrain
Available All-wheel Drive
Available Turbocharged V6
The Ford Fusion sees many changes for 2017. Among them is a redesigned front end, with a wider hexagonal grille with either five slats or mesh, depending on trim. New headlight styling includes LED lighting on top trims, while the taillights have been restyled. Inside, a rotary dial replaces the traditional automatic shift lever, while the SYNC3 infotainment system replaces the previous MyFord Touch. The new system includes support for Apple CarPlay and Android Auto. A new Sport trim features Fords terrific 2.7L EcoBoost V6, while a new Platinum trim sits atop the Fusion hierarchy.
The Ford Fusion is a mid-sized sedan and must therefore compete in an incredibly competitive segment, going up against heavyweights such as the Toyota Camry and Honda Accord. Ford has priced the car accordingly, with models starting at $22,000. On the other end of the price spectrum, the Fusion Platinum is outfitted with a variety of luxury equipment, providing a sensible alternative to the entry-level cars sold by several luxury marques. And in the new Fusion Sport, a 325-horsepower turbocharged V6 provides plenty of punch for those looking to cruise in the fast lane.
AppLink/Apple CarPlay and Android Auto
Leather-Trimmed Heated Sport Bucket Seats
Wheels: 17" Premium Painted Luster Nickel
**BLIND SPOT MONITOR!**
**NAVIGATION!**
**SUNROOF!**
**REMOTE START**
**LEATHER SEATING**
**LANE KEEPING TECHNOLOGY**
**SYNC3 W/8" TOUCH SCREEN**
**BACK-UP CAMERA W/ REVERSE SENSING SYSTEM**
2016 Chrysler 200 LX
2014 Mercedes-Benz C-Class C 250
Used 2019 Nissan Armada Plati

redpajama_set_name: RedPajamaCommonCrawl


text:
Posted on April 13th, 2018 by straightshooter
Calling for violent jihad in Australia
Posted in Related News Tags: australia, Islam propagation, jihad, Koran, Mark Durie, musallah, Muslim prayer room, Quran, Saudis' global da'wa, The Noble Qur'an
(COUNTER JIHAD REPORT) — By Mark Durie
There is not a Bible, Jewish or Christian, containing such incendiary commentary as populates page after page of 'The Noble Qur'an', which for four years has preached to the faithful in Canberra Airport's prayer room. The ideology it promotes is violent jihad. It is a book to start a war.
The Saudis, the United Arab Emirates and Egypt recently cut diplomatic ties with Qatar and imposed sanctions, accusing the Qataris of supporting terrorism. The Saudis have demanded that Qatar close Al-Jazeera and cut all ties with the Muslim Brotherhood, Al Qaeda, Hezbollah and the Islamic State. Qatar's long-standing and well-known support for the Muslim Brotherhood, which aims to unify Muslim nations under an Islamic caliphate and has networks of supporters across the Middle East, is now perceived as a serious threat its neighbours.
This is the pot calling the kettle black, for Saudi Arabia itself has a long record of exporting Islamic radicalism. Among its most notable exports are millions of Korans in translation, which, through commentary (mainly in footnotes) and accompanying materials, incite Muslims to wage violent jihad to establish an Islamic state.
Among the Saudis' exported Korans is an English-language edition, TheNoble Qur'an, which can be found in mosques, prayer rooms and meeting places around the world. Anyone who applies to the Saudi embassy in Canberra will be sent a copy gratis.
The Noble Qur'an can be found in the musallah or prayer room of Canberra's airport. What is apparently the same edition, with "AIRPORT MUSALLAH" written in black marker pen on the page ends, has been sitting there for the past four years, ever since the new airport was built. The Noble Qur'an is also publicly available in other "multi-faith" spaces that have been springing up in institutions across Australia in recent years, in universities, hospitals and other public places.
Canberra airport's Noble Qur'an was printed by the order of King Abdullah of Saudi Arabia, who ruled from 2005 to 2015. It includes the Arabic text, and, side-by-side, the English translation by Muhammad Taqi-ud-Din al-Hilali and Muhammad Muhsin Khan. There is also an endorsement by Shaikh Abdul-Aziz ibn Baz, Chief Justice of Saudi Arabia from 1993 to 1999, and a foreword by Shaikh Salih ibn Abdul-Aziz al-Shaikh, the current Saudi Minister for Islamic Affairs. After the Koranic text there are a hundred pages or so of appendices, and under the text there are footnotes, which offer a commentary. There are also frequent interpolations in brackets to help clarify the meaning in translation.
Marked "not for sale", vast numbers of The Noble Qur'an printed by the Saudis are exported around the world. The King Fahd Complex for the Printing of the Holy Qur'an in Medina has printed over one hundred million Korans in thirty-nine languages since it was established in 1985. The handsomely gilded Noble Qur'an is distributed as part of the Saudis' global da'wa or effort to propagate Islam. It appears to target two kinds of readers.
First, The Noble Qur'an seeks to enlist Muslims in violent jihad against non-Muslims, to establish an Islamic caliphate. Second, it aims to engage with Christians. The longest essay in the appendices is an argument that Jesus was a prophet of Islam, and commentary throughout The Noble Qur'an—in the explanatory footnotes, the interpolations in brackets and the appendices—challenges and "corrects" Christian teachings.
Sometimes it is said that when people use verses from the Koran to justify violence, they have taken them out of context. This criticism cannot be applied to The Noble Qur'an, which follows a traditional Islamic method of interpreting the Koran in the light of Muhammad's example and teachings, known as the Sunna. In keeping with this tradition, citations from the Sunnasupply the great bulk of the explanatory footnotes.
On non-Muslims
The footnotes in The Noble Qur'an are repeatedly derogatory of non-Muslims.
For example, a note to Sura 10:19 (p. 272, fn1) quotes Muhammad to say that human beings are born Muslims, and are "converted" away from Islam by non-Muslim parents. For Jewish or Christian parents to raise their child in their own faith is like mutilating them:
Every child is born on al-Fitrah, but his parents convert him to Judaism or Christianity … An animal gives birth to a perfect baby animal. Do you find it mutilated?
The Arabic phrase al-fitrah refers to the doctrine that the innate state of human beings is to be a Muslim.
The Arabic text of the Koran calls non-Muslims unclean (Sura 9:28), using a derogatory word (najas). The footnote to this verse explains about non-Muslims that:
Their impurity is spiritual and physical: spiritual because they don't believe in Allah's Oneness and in his Prophet Muhammad … and physical, because they lack personal hygiene (filthy as regards urine, stools and [menstrual] blood). [p. 248, fn 2]
Sura 3:85 states that "whoever seeks a religion other than Islam, it will never be accepted of him, and in the Hereafter he will be one of the losers". In the footnote commentary on this verse, The Noble Qur'an quotes Muhammad to explain that Christians and Jews who die disbelieving in Muhammad will end up in Hell:
there is none from amongst the Jews and Christians … who hears about me and then dies without believing in the Message with which I have been sent … but he will be from the dwellers of the (Hell) Fire. [p. 84, fn 1]
Sura 4:47 warns Christians and Jews that they should believe in Muhammad, or else their faces will be taken away in hell, to which the translators add, in brackets, "by making them like the back of necks; without nose, mouth, eyes". The footnote commentary explains further:
This Verse is a severe warning to the Jews and Christians, and an absolute obligation that they must believe in Allah's Messenger Muhammad … and also in his Message of Islamic Monotheism and in this Qur'an. [p. 115, fn 2]
The Koran has verses which exhort tolerance of Christians and Jews. Yet The Noble Qur'an takes pains to emphasise that such verses have been cancelled by later verses, following the Islamic contextual principle of abrogation (naskh). Here are two examples:
First, Sura 2:62 states that a Christian or Jew who "believes in Allah and the Last Day and does righteous good deeds shall have their reward with their Lord, on them shall be no fear, nor shall they grieve". This could be taken to imply that Christians and Jews will be accepted by God if they follow their faith properly. However, the commentary on this verse clarifies that:
This Verse (and Verse 5:69) … should not be misinterpreted by the reader … the provision of this Verse was abrogated by Verse 3:85 "And whosoever seeks a religion other than Islam, it will never be accepted of him, and in the Hereafter, he will be one of the losers" (i.e. after the coming of Prophet Muhammad … on the earth, no other religion except Islam, will be accepted from anyone). [p. 13, fn 2]
What this footnote is actually asserting is that Christians and Jews will go to Hell unless they accept Islam, because earlier verses which seemed to counsel tolerance have been superseded and cancelled by later verses.
Second, Sura 2:109 states that Muslims should "forgive and overlook" the Christians and Jews, "till Allah brings His Command".Yet the footnote makes clear that "the provision of this verse has been abrogated" (p. 21, fn 1) by Sura 9:29. The later verse commands Muslims to fight (that is, kill) Christians and Jews unless or until they surrender to Muslims and pay tribute:
Fight against those who believe not in Allah, nor in the Last Day, nor forbid that which has been forbidden by Allah and His Messenger (Muhammad …) and those who acknowledge not the religion of truth (i.e. Islam) among the people of the Scripture (Jews and Christians), until they pay the Jizyah with willing submission, and feel themselves subdued. [Sura 9:29, p. 248]
Here again, a more tolerant verse is claimed to have been abrogated by a later verse which commands violence against non-Muslims.
The meaning of jihad
Some Muslims have proposed that the basic meaning of jihad is peaceful struggle. In contrast, The Noble Qur'an defines jihad as waging war against non-Muslims to make Islam dominant in the world. This jihad is obligatory for all Muslims, and rejecting this obligation will lead to hellfire.
This interpretation is made clear in the glossary, where the entry for jihad is:
Holy fighting in the Cause of Allah or any other kind of effort to make Allah's Word (i.e. Islam) superior. Jihad is regarded as one of the fundamentals of Islam. See the footnote of (V.2:190) [p. 873]
The footnote referred to is a comment on Sura 2:190, "And fight in the Way of Allahthose who fight you …" This footnote reads:
Al-Jihad (holy fighting) in Allah's Cause (with full force of numbers and weaponry) is given the utmost importance in Islam and is one of its pillars (on which it stands). By Jihad Islam is established, Allah's Word is made superior, (His Word being La ilaha illallah which means none has the right to be worshipped but Allah), and His Religion (Islam) is propagated. By abandoning Jihad (may Allah protect us from that) Islam is destroyed and the Muslims fall into an inferior position; their honour is lost, their lands are stolen, their rule and authority vanish. Jihad is an obligatory duty in Islam on every Muslim, and he who tries to escape from this duty, or does not in his innermost heart wish to fulfil this duty, dies with one of the qualities of a hypocrite. [p. 39, fn 1]
Here The Noble Qur'an is saying that the purpose of jihad is to make Muslims dominant over non-Muslims, and Islam dominant over other religions; Islamic warfare against non-Muslims is a kind of missionary enterprise to spread the faith, and any Muslim who does not fulfil this obligatory duty is a "hypocrite".
What is bad about being a "hypocrite" is made clear by The Noble Qur'an on page 906 of the appendices: a hypocrite will end up in the lowest depths of Hell, the place of worst punishment. The Noble Qur'an is teaching here that any Muslim who does not engage in and support warfare to establish the dominance of Islam is destined to occupy the hottest place in Hell, worse even than that occupied by non-Muslims.
In its footnote on Sura 27:59, The Noble Qur'an quotes a tradition of Muhammad which refers to jihad (p. 512 fn 1). (Here again jihad is defined as "holy fighting".) The footnote emphasises that fighting non-Muslims is the best possible pious deed for a Muslim, second only to becoming a Muslim.
The caliphate and universal war against non-Muslims
Sura 2:252 (p. 55, fn2, running on to p. 56) refers to Muhammad as a messenger of Allah. The footnote to this verse reports that Muhammad's prophethood was distinguished by certain characteristics. Three of these are:
(i) Muhammad was victorious through fear or terror for a distance of one month's journey: "Allah made me victorious by awe (by His frightening my enemies) for a distance of one month's journey."
(ii) He was the first prophet from Allah given permission to take booty from his enemies: "The booty has been made Halal (lawful) to me yet it was not lawful to anyone else before me."
(iii) Unlike previous prophets, he was sent to all mankind, not just to a specific group: "Every Prophet used to be sent to his nation only, but I have been sent to all mankind."
The implication of this third point is that everyone, everywhere is obligated to accept Muhammad as their prophet, and the first two points show that he was uniquely commissioned to wage war against disbelievers, by terrorising and looting them. Muhammad is considered to be the best example for Muslims to follow, including, it becomes clear, in these aspects of his prophetic career. The Noble Qur'an emphasises these aspects of Muhammad's mission to activate them for jihad.
In its footnote on Sura 3:55 (p. 76, fn 1), The Noble Qur'an states that when Jesus returns he will impose Islamic law and break the cross (that is, destroy Christianity). At that time Jesus will do away with toleration of non-Muslims, so that "all people will be required to embrace Islam and there will be no other alternative". In other words they will be compelled to convert by force if required.
This teaching about Jesus's return is repeated in a commentary on Sura 8:39 (p. 236, fn 1), and a comment on Sura 61:6 (p. 761, fn 2), which states that this tradition is intended as "a severe warning to Christians who claim to be the followers of 'Isa (Jesus) …" In essence The Noble Qur'an tells its Christian readers that when he returns Jesus will compel them to embrace Islam, and all people on the earth will have to choose between Islam and death.
In its commentary on Sura 9:29 (p. 248, fn 2) The Noble Qur'an cites a tradition of Muhammad about the Jews, which states, "The Hour (i.e. the final hour) will not be established until you fight against the Jews, and the stone behind which a Jew will be hiding will say, 'O Muslim! There is a Jew hiding behind me, so kill him.'" So, at the end, creation itself will cry out for Jewish blood.
In an interpolation in Sura 8:73, The Noble Qur'an states that Muslims of the world must not ally themselves with non-Muslims, but join together "to make victorious Allah's religion of Islamic monotheism" (p. 242). It is explained in commentary that if Muslims do not do this, there will be terrible disorder and tribulation in the world, with wars and battles and calamitous breakdown of civil society. This is because of the deleterious effects of non-Muslim rule. Moreover, it is also wrong to have "many Muslim rulers", because Muslims should unite under one ruler, the caliph: "it is a legal obligation … that there shall not be more than one Khalifah for the whole Muslim world …" Furthermore, anyone who works to divide Muslims into different groups under different rulers should be killed, according to Muhammad, who is reported to have said, "When you all [Muslims] are united … and a man comes up to disintegrate you and separate you into different groups, then kill that man" (p. 242, fn 1). This can be taken to imply that anyone who upholds the division of Muslims into distinct nation-states, which is the international order today, stands under a death sentence.
The Noble Qur'an paints a supremacist vision of an ultimate Islamic victory over non-Muslim religions, in which all non-Muslims will be converted to Islam or killed. The text of Sura 3:110 reads:
You (true believers in Islamic monotheism …) are the best of people ever raised up for mankind; you enjoin al-Mahruf (Islamic Monotheism and all that Islam has ordained) and forbid Al-Munkar (polytheism, disbelief, and all that Islam has forbidden), and you believe in Allah. [Sura 3:110]
The footnote commentary on this verse explains:
"You … are the best of people ever raised up for mankind" means, the best of the people for the people, as you bring them with chains on their necks till they embrace Islam (and thereby save them from the eternal punishment in the Hell-fire and make them enter paradise in the Hereafter) … The people referred to here may be the prisoners of war who were captured and chained by the Muslims and their imprisonment was the cause of their conversion to Islam. So, it is as if their chains were the means of winning Paradise. [p. 89, fn 1]
This footnote is a reference to a tradition of Muhammad which states that Allah is pleased to see people entering Paradise in chains. This justifies making war on non-Muslims, and forcing them into Islam through enslaving them; enslaving non-Muslims is a kindness to them, because it enables them to attain Paradise.
This interpretation of Sura 3:110 is based on Muhammad's teaching. Could it have any application in today's world, or is it just a dead letter?
The very same tradition was cited by the Islamic State in the October 2014 edition of its magazine Dabiq, which included an article titled "The Return of Slavery Before the Hour":
[Muhammad] said, "Allah marvels at a people who enter Jannah in chains." The hadith commentators mentioned that this refers to people entering Islam as slaves and then entering Jannah [Paradise]. Abu Hurayrah … said while commenting on Allah's words, "You are the best nation produced for mankind" … "You are the best people for people. You bring them with chains around their necks, until they enter Islam."
The same sentiment was also expressed by a Dutch Islamic State fighter, Israfil Yilmaz, who blogged about the correct Islamic motivation for sex slavery:
People [who] think that having a concubine for sexual pleasure only have a very simple mindset about this matter … The biggest and best thing of having concubines is introducing them to Islam in an Islamic environment—showing them and teaching them the religion. Many of the concubines/slaves of the Companions of the Prophet … became Muslim and some even big commanders and leaders in Islamic history and this is if you ask me the true essence of having slaves/concubines.
The translators who crafted the commentary in The Noble Qur'an, and the Saudi leaders who endorsed the text, no doubt desired that readers would take to heart the teachings they had laboured hard to present. The evidence is that many have done so. The investment by the Saudis of billions of dollars to spread the kinds of ideas found in The Noble Qur'an has not been in vain, and the Islamic State provides the proof.
Evidence for their success is found in Israfil Yilmaz's justification for sex-slavery. This not only aligns with official ISIS propaganda: it also is fully in line with the teachings of The Noble Qur'an. Another sign of the influence of The Noble Qur'an's ideas has been the river of thousands of ISIS recruits flowing from Western nations to join the jihad in Syria and Iraq.
Ahmed Farouk Musa, a graduate of Monash University medical school in Melbourne, told a forum on Muslim extremism in Kuala Lumpur on December 7, 2014, that The Noble Qur'an incites violence against Christians and other non-Muslims: "I believe that propaganda such as the Hilali-Khan translation and other materials coming out of Saudi Arabia are one of the major root causes that feed extremist ideas among Muslims, violence against Christians and other minorities."
There is not a Bible in print, anywhere in the world, Jewish or Christian, which contains such incendiary commentary as is found on page after page of The Noble Qur'an. This is a book with which to start a war. The ideology it promotes is primed to light the fuse of violent jihad.
Given its contents, it might seem surprising that a copy of The Noble Qur'an has been sitting in the Canberra airport prayer room for the past four years. The theological characteristics of this edition of the Koran are not a secret. Yet it seems no Muslim who used the musallah has objected, or if they did, the Canberra airport authorities paid no attention. Canberra's politicians and their many advisers also regularly pass along the corridor where the musallah is located, but none of them seems to have thought to check what version of the Koran was being used in their airport's prayer room.
Earlier this year the Public Health Association of Australia asked the Standing Committee on Foreign Affairs, Defence and Trade to reject the "notion" that there is any inherent link between Islam and terrorism. It seems that Public Health Association of Australia officials have also not visited the Canberra airport musallah to read its Koran.
There has been much discussion and sometimes puzzlement about how young Muslim men have become radicalised enough to fight for ISIS. Reading and believing the messages implanted in The Noble Qur'an in the Canberra airport prayer room would be sufficient to convert some people to the key points of the ideology of ISIS.
The message of The Noble Qur'an is no marginal phenomenon. It is not an opinion from the extremities of the Islamic world, but from its heartland, presented as a gilt-edged free gift from the Saudi king, the Guardian of the Two Holy Mosques. The political theology of The Noble Qur'an aligns with the official dogma of Saudi Arabia, and it has been endorsed by the Saudi king and the nation's chief justice, the Grand Mufti.
It is necessary to grasp the authenticity of The Noble Qur'an and its message to the world. Those behind The Noble Qur'an manifestly believe that justice will be served only when Muslims rule the world, and that warfare necessary to achieve this goal is not only justified: it is a divinely instituted, inescapable obligation incumbent on every Muslim, because Muhammad and his Koran are, as Sura 21:107 puts it, "a mercy to the worlds".
One sometimes hears the view that it is not up to non-Muslims to express opinions about Islam or its canonical texts, such as the Koran. But The Noble Qur'an's running commentary on the text, because it has so much to say about non-Muslims, especially Jews and Christians, therefore gives non-Muslims, especially Jews and Christians, every right to form their own opinions about it. If a book talks about you, you have a right to make up your own mind about what it has to say.
In 2002 Christopher Hitchens fielded a question from Tony Jones on ABC's Lateline as to why young, mostly well-educated men committed the 9/11 atrocity. Hitchens's answer was, "Well, it could be they believe their own propaganda." We have to assume that those responsible for The Noble Qur'an believe their own propaganda too, and that some who have read it have been influenced to believe it too.
What should Australians make of the fact that the Saudis have been presenting an open and unashamed apology for violent jihad, even commending the practice of enslaving enemies, in our own backyard for years, not to show Islam in a poor light, but to glorify it?
The fact that The Noble Qur'an is in the Canberra airport musallah is no accident. This edition of the Koran and the teachings it promotes can be found in Islamic bookshops, public libraries, prayer rooms and Sunni mosques all over the English-speaking world.
The British historian Tom Holland recently produced a documentary on ISIS called The Origins of Violence. A scathing review by the English journalist Peter Oborne was published in the Middle East Eye. Oborne excoriated Holland for suggesting that the problem with ISIS lies with Islam. Oborne found it repugnant to suggest that there is anything about Islam that might be considered a "threat", and he railed against Holland's suggestion that there could be anything in the example and teaching of Muhammad (whom Oborne respectfully calls "The Prophet") which could have guided the actions of the Islamic State.
Such ignorance is the fruit of religious illiteracy. Or might fear be the issue? Has Muhammad, praised in the pages of the Koran for being "victorious by awe", now extended his reign of fear, not just for the distance of one month's journey as Muhammad declared he had achieved in seventh-century Arabia, but across fourteen centuries to Australia and the rest of the world?
Of course many Australian Muslims would, like Ahmed Farouk Musa, find the messages promoted through the footnotes and glosses of The Noble Qur'anutterly repugnant. It is disappointing that these well-meaning Muslims have not been able to determine which version of their own scriptures is to be placed in a public prayer room designated for their use. They could have lobbied Canberra airport to have this version of the Koran replaced by another, but if they have done so, their attempts must have failed.
The message contained in The Noble Qur'an and its widespread public distribution are matters Australians have every right to be concerned about. Its message has been promoted in public for years with hardly a whisper of objection coming from those who should know better.
It would be inappropriate, and indeed irrelevant if our leaders were to respond to the message of The Noble Qur'an with statements like "True Islam does not promote terrorism" or "No true religion supports violence". For Australian officials to dare to instruct the Grand Mufti of Saudi Arabia or the Guardian of the Two Holy Mosques on what is true Islam would be ludicrous and offensive. But the leaders of our nation, against whose non-Muslim citizens The Noble Qur'an incites such undisguised enmity, have every right to say, "Not in our backyard!"
Dr. Mark Durie is an academic, human rights activist, Anglican pastor, a Shillman-Ginsburg Writing Fellow at the Middle East Forum, and Adjunct Research Fellow of the Arthur Jeffery Centre for the Study of Islam at Melbourne School of Theology.
This article was first published by the Quadrant in November 2017.
« Interview with a German journalist: "Like many other women in Germany, I no longer feel safe."
ISIS 'Beatles' in chilling terror warning: 'There will be MORE attacks in Europe' »


text:
Q: php extracting first image from html string, remove all images tag, and truncate html string I save in database an html content from tinymce editor, so I would want display this html content on php page, but in beautiful way.
I would want first check if in html string is present an image, if it is present then display it first in php page. Then I would want display some text on right of image, truncating it first 200 words, but it must maintain html because it is possible that are present also links not only simple text.
Is there a php library or php class for manipulating html and for truncating html string for "read more" functionality?

A: This looks like a nice tool:
http://simplehtmldom.sourceforge.net/
Funnily enough it even has the example your looking for on the front page.
EDIT:
PHP actually comes with its own library for handling HTML documented at: http://docs.php.net/manual/en/book.dom.php
Also take a look at http://code.google.com/p/phpquery/

redpajama_set_name: RedPajamaStackExchange


text:
Largest Divorce Settlement in History Gives $729 Million to Princess
Patricia Claus - December 21, 2021
The mind-boggling amount of $728,552.00 is due to be paid by the Prime Minister of Dubai to his estranged wife in the largest divorce settlement in recorded history. The agreement, which calls for Sheikh Mohammed Bin Rashid Al-Maktoum to pay...
Asteroid Annihilated City, Possibly Inspiring Biblical Story of Sodom
guest - September 22, 2021
New research suggests that fire from the sky in the form of a small asteroid annihilated an ancient city near the Dead Sea now called Tall el-Hammam, in the biblical city of Sodom in the Jordan Valley 3,600 years...
The Stunning Greek-inspired Architecture of the Ancient City of Petra
Kerry Kolasa-Sikiaridi - September 1, 2021
The stunningly-beautiful ancient city known as Petra in southern Jordan is a world treasure like none other on the globe. The ancient rock city is built into the dramatic pink-colored stone of Jabal Al-Madbah mountain, facing outward to a...
Jordan Joins Greece, Cyprus in Opposition to Turkey's Varosha Plans
Patricia Claus - July 29, 2021
Greece, Cyprus and Jordan called for a "comprehensive and viable settlement of the Cyprus problem" after Turkey said it would reopen Varosha.
Greece Beats Jordan Ahead of FIBA World Cup in China
Helen Skopis - August 24, 2019
The Greek National basketball team beat Jordan 92-65 on Saturday in the first game of the 2019 Suzhou International Basketball Challenge in China ahead of the World Cup. NBA MVP Giannis Antetokounmpo scored 13 points, behind Giorgos Printezis with 17...
Greek Island of Skiathos Hosts Members of Jordan's Royal Family
Nick Kampouris - July 31, 2019
Approximately ten members of the royal family of Jordan recently spent a few days on Greece's idyllic island of Skiathos to enjoy their summer break, according to reports on Wednesday. Reports from several sources on the island said that the...
Leaders of Greece, Cyprus and Jordan Agree to Enhanced Cooperation
Tasos Kokkinidis - April 15, 2019
Leaders of Greece, Cyprus and Jordan agreed at their summit meeting in Amman on Sunday to expand cooperation in vital sectors, including energy, water, agriculture, tourism, healthcare, education, trade and investment. Jordan's King Abdullah, Cypriot President Nicos Anastasiades and Greek...
UN Exhibition on Migration Comes to Athens October 26
Nick Kampouris - October 24, 2018
A photographic exhibition titled "Light on the Move" will be presented at the Museum of Cycladic Art in Athens between October 26-31. The exhibition is being organized by the International Organization for Migration (IOM), the United Nation's migration body. Photographs...
Greek Anti-Terror Cops Trump European Rivals in International Contest
Tasos Kokkinidis - May 21, 2018
Greek anti-terrorist officers have trumped their European colleagues in an international competition among elite special forces held in Jordan. EKAM officers secured the highest score from all European countries in the 10th annual contest between special forces held at a...
Greek, Cypriot, Jordanian Leaders Meet in Nicosia
Theo Ioannou - January 16, 2018
Cyprus hosted the leaders of Greece and Jordan in Nicosia on Tuesday, in a three-way meeting aimed at strengthening ties in the volatile Mediterranean region on a host of issues, from water management to the protection of artefacts. Jordan and...


text:
Emil Paur (Chernivtsi, 19 de julho de 1855 – Frýdek-Místek, 7 de junho de 1932) foi um maestro austríaco.

Paur nasceu em Czernowitz, Áustria, atual Ucrânia, e mudou-se para Viena depois de trabalhar como maestro em Kassel, Königsber e Leipzig. Ele então imigrou para os Estados Unidos onde se tornou diretor musical da Orquestra Sinfônica de Boston, da Filarmônica de Nova Iorque e da Sinfônica de Pittsburgh. Depois retornou para Alemanha para conduzir a Ópera do Estado de Berlim. Paur foi considerado um sério maestro, favorito para executar obras de Brahms.

Paur morreu em Místek, Checoslováquia, atual República Checa.

* Kenny, Ellen (Setembro de 1951)

Maestros da Áustria

redpajama_set_name: RedPajamaWikipedia


text:
Ron Vale
Website: http://valelab.ucsf.edu
Email: valer / janiela, hhmi, org
600 16th Street, MC 2200
Genentech Hall, Room N312E
Phoebe Grigg
phoebe.grigg / cmp, ucsf, edu
Dr. Vale received a B.A. degree in biology and chemistry from the University of California, Santa Barbara, and a Ph.D. degree in neuroscience from Stanford University. His postdoctoral studies at the NIH Marine Biological Laboratory were on microtubule-based motors. Dr. Vale has been at UCSF since 1986 and currently is a Professor in the CMP department. Dr. Vale also holds appointments as Investigator in the Howard Hughes Medical Institute.
Our laboratory is interested in the organization and functions of intracellular compartments in eukaryotic cells. For the past thirty years, our laboratory have studied how microtubules and their associated proteins, including molecular motors, transport and organize membrane organelles, such as the Golgi and endosomes, during interphase and how they segregate chromosomes by building the mitotic spindle during mitosis. In addition to our work on the cytoskeleton, our laboratory also studies the signaling pathways that govern T cell signaling and apoptotic cell clearance. Most relevant to this grant, our laboratory also has had a long-term interest in RNA biology, which have included discovering and studying the mechanism of mRNA transport in budding yeast, using ribosomal profiling to study translational regulation at different stages of the cell cycle, developing assays to observe protein translation in real-time from single mRNAs molecules, and the development of a new hypothesis involving RNA phase separation, which might contribute to certain types of neurodegeneration. We have approached our studies using a wide variety of techniques, including advanced light microscopy, single molecule studies, structural work (X-ray crystallography, cryo-EM), whole genome screening, and in vitro reconstitution and biochemistry. We consider this breadth of experimental approaches to be a strength of our laboratory and will apply our skills in light microscopy and cell biology to this grant. In addition to our scientific work, I am very interested in education and am leading the iBiology.org project, advancing mentoring of young scientists in India, promoting better practices is scientific publishing, and advancing education in microscopy for students spanning from K-12 to graduate school.


Copies of images on request possibility of purchasing the allegro or directly from me sell images made or the performance of work on request.
Implementation of arbitrarily selected copies the selected size. Images done in oil on canvas. Portraits based on the photos. Help in choosing models to copy. Painting works realized on paper. I use high quality materials.
Copyright © 2019 Andrzej Masianis -Wszelkie prawa zastrzeżone.


On vacant land in the newly revitalized U Street corridor, Robertson Development constructed an all-new, eight unit condominium project made up of four structural masonry town homes. Each five-level building contains one lower-level duplex and one upper-level triplex with a large rooftop terrace. The development set a new company standard. The grand exterior features extensive historic detailing while the interiors offer unique finishes, dramatic spaces and the company's trademark attention to detail.


text:
Calling on Miami University of Ohio to Double its Student Body Diversity
0 have signed. Let's get to 100!
At 100 signatures, this petition is more likely to be featured in recommendations!
Marianne Lombardo started this petition to Miami University of Ohio Board of Trustees
We call on Miami University of Ohio to double its enrollment of students from underrepresented racial minority, working class, and low-income backgrounds over the next five years.
Miami University enrolled a lower percentage of working class and low-income students than every other public college in America, outside the College of William and Mary between the years 2015 and 2017. While some 30% of four-year college students nationwide and in Ohio received federal Pell Grant aid between 2015 and 2017, at Miami, not even 11% of first-year students at its main Oxford campus were Pell Grant recipients.
Miami University calls itself the "Original Public Ivy," but lags well behind the Ivy League in enrolling low-income students and historically underrepresented racial minorities. According to the U.S. Census, 13% of Ohio residents are African-American, but only 4.3% percent of Miami University undergraduate students are. At Miami's main campus, only 3.6% of undergraduates in 2019 were African-American.
Everyone will benefit if Miami University makes a more meaningful commitment to diversity. We live in a diverse nation too often divided along the lines of class and race. As universities prepare students for success in the workplace and life, exposure to a broad range of perspectives, identities, and experience will help everyone succeed.
As the second oldest public college in America, Miami University continues to be and has been supported by the taxpayers of Ohio for almost 200 years. We believe that with current and historic amounts of public support comes public responsibility on the part of Miami University, including making a meaningful commitment to diversity and socioeconomic mobility.
Diversity should be valued and treated as a strength at Miami University, in our state, and in our country.
Sign this petition


text:
Red Right 88
In Cleveland, hope dies last
Super Bowl odds & ends
The New York Giants win over New England in Super Bowl XLVI confirmed a couple of truths about life in the National Football League.
A team's regular-season record no longer matters; all that is important is getting into the playoffs and getting the right match-ups once you are there.
At 9-7, the Giants were clearly not the best team in the league during the regular season. But they made the playoffs in part because Dallas fell apart down the stretch and, once there, the Giants made the most of their opportunities.
It helped that New York played a flawed team in Atlanta, a flat Green Bay squad and an over-rated San Francisco team. They also matched up very well with New England.
They still had to play the games, of course, so we're not taking away anything from the Giants. But it makes us wonder what might have been if the Browns had been able to get into the playoffs in 2007.
Even though Derek Anderson spent the second half of that season falling apart, if he could have gotten hot for a game or two, who knows what would have happened?
Secondly, New York coach Tom Coughlin is something else. Giants fans were ready to run him out of town when the team was 7-7 following their second loss of the season against Washington.
But he showed everyone the reward of having patience. Hopefully Browns fans were paying attention.
A few other thoughts as we close the books on another NFL season:
With their Super Bowl win, the Giants move into a tie with the Browns for the third most championships in professional football with eight. The Packers lead with 13, followed by the Bears with nine titles. Wonder what the odds are on the Browns being the team that breaks the tie with New York?
New England coach Bill Belichick hasn't won a Super Bowl since Romeo Crennel left his staff following the 2004 season and the Patriots are just 7-6 in the playoffs in that span. Crennel is the only former Belichick staff member to not be infected by the "my way or the highway" brand of arrogant coaching employed by every other member of the Belichick coaching tree. Is it a coincidence that the Patriots haven't won anything without Romeo balancing things out on the sidelines?
How is it that in their two Super Bowl wins over the Patriots, the Giants were able to drive 83 yards and then 88 yards for the game-winning touchdowns against a defensive "mastermind" like Belichick?
As the Super Bowl champions, we know the Giants will kick off the 2012 NFL season at home on Sept. 6. In addition to their divisional games, the home opponents on the Giants' schedule are Green Bay, New Orleans, Pittsburgh, Tampa Bay and … Cleveland. The NFL wouldn't make the Browns a sacrificial lamb for that game, would they?
Sounds like Gisele Bundchen and Brad McCoy should have lunch together sometime during the off season. Bundchen stood by her man, Tom Brady, after the game, blaming the Patriots' receivers for the loss.
Free agency starts on March 13.
The NFL Draft is April 26-28.
Until then, remember the wise words of Marvin Gaye: Believe half of what you see, son, and none of what you hear.
(Photo by Getty Images)
Posted in Cleveland Browns, New York Giants, NFL, Super Bowl
Did The Tribe Win Last Night?
Let's Go Tribe
Rush the Kop
World Soccer Talk
Archives Select Month December 2020 (1) July 2018 (1) June 2018 (1) May 2018 (6) April 2018 (6) June 2016 (2) March 2016 (3) February 2016 (2) January 2016 (1) December 2015 (3) November 2015 (8) October 2015 (11) August 2015 (6) July 2015 (16) June 2015 (12) May 2015 (15) April 2015 (18) March 2015 (11) February 2015 (11) January 2015 (14) December 2014 (12) November 2014 (13) October 2014 (17) September 2014 (14) August 2014 (12) July 2014 (14) June 2014 (17) May 2014 (16) April 2014 (15) March 2014 (16) February 2014 (11) January 2014 (14) December 2013 (20) November 2013 (15) October 2013 (13) September 2013 (21) August 2013 (18) July 2013 (15) June 2013 (18) May 2013 (18) April 2013 (19) March 2013 (27) February 2013 (25) January 2013 (22) December 2012 (22) November 2012 (23) October 2012 (24) September 2012 (25) August 2012 (25) July 2012 (20) June 2012 (27) May 2012 (22) April 2012 (23) March 2012 (20) February 2012 (18) January 2012 (17) December 2011 (25) November 2011 (26) October 2011 (21) September 2011 (22) August 2011 (23) July 2011 (21) June 2011 (29) May 2011 (27) April 2011 (27) March 2011 (29) February 2011 (22) January 2011 (29) December 2010 (25) November 2010 (30) October 2010 (34) September 2010 (29) August 2010 (23) July 2010 (24) June 2010 (29) May 2010 (15) April 2010 (23) March 2010 (2)
www.redright88.com


text:
Freedom of Information Requests are the means that a member of the public may request information regarding a public (government owned) organisation. As East Coast was government owned until Virgin Trains East Coast took over the operation of the franchise on 1 March 2015 it was possible to do a Freedom of Information request to find out more about the operation of East Coast Rewards. How many members it had and whether the scheme was successful at increasing sales.
FoI Request 1: Popularity and Viability of EC Rewards
Fri 6 Mar 2015
The reply to my Freedom of Information Request for East Coast Rewards is here (PDF) . As East Coast was owned by... More
FoI2: Proof of the popularity of East Coast Rewards
Download the latest Freedom of Information request here. Even after my first Freedom of Information request (see... More


text:
Q: Understanding passing data from a page to a user control I have been struggling with how to pass data between a page and a UserControl and could use some clarification as to what I may be doing incorrectly. I know that the UserControl is working if I remove the data part of the code and replace it with just TextBlocks.
I do know that the NetWorth is being displayed, but just can't see why the List<Account> isn't passed on. I don't know what it is I am doing wrong here.
PanelNavigation.xaml
        <!-- Navigation Section -->
        <ScrollViewer HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Auto" CanContentScroll="True" Grid.Row="1" Margin="0,0.333,0,0" Grid.ColumnSpan="2">
            <UserControls:NavigationPanel DataContext="{Binding Accounts}"/>
        </ScrollViewer>

        <!-- Networth Panel -->
        <Grid Grid.Row="2" Height="40">
            <Border BorderThickness="0,1,0,0" BorderBrush="{StaticResource MenuBarBrush}" Background="{StaticResource BackgroundLightBrush}">
                <Grid Margin="5,5,10,5">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition />
                    </Grid.ColumnDefinitions>

                    <TextBlock Margin="10,1,10,1" FontSize="16" FontWeight="Normal" Grid.Column="0" Foreground="#FF346C9C" Text="Net Worth" />
                    <TextBlock FontSize="16" FontWeight="Normal" Grid.Column="1"
                               HorizontalAlignment="Right" Text="{Binding NetWorth, Converter={StaticResource CurrencyConverter}}"
                               Foreground="{Binding NetWorth, Converter={StaticResource ChangeColor}}"/>
                </Grid>
            </Border>
        </Grid>

PanelNavigation.xaml.cs

using APTest.ViewModels;
using System.Windows.Controls;

namespace APTest.Views
{
    /// <summary>
    /// Interaction logic for PanelNavigation.xaml
    /// </summary>
    public partial class PanelNavigation : Page
    {
        public PanelNavigation()
        {
            InitializeComponent();

            this.DataContext = new VMNavigationPanel(this);

        }
    }
}

NavigationPanel.xaml
<UserControl x:Class="APTest.UserControls.NavigationPanel"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:UserControls="clr-namespace:APTest.UserControls"
             mc:Ignorable="d"
             d:DesignHeight="800" d:DesignWidth="400">

    <StackPanel>
        <StackPanel>
            <ItemsControl x:Name="DataTest" ItemsSource ="{Binding Accounts}">
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding TotalBalance}" />
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </StackPanel>
    </StackPanel>

</UserControl>

NavigationPanel.xaml.cs
using System.Windows.Controls;

namespace APTest.UserControls
{
    public partial class NavigationPanel : UserControl
    {
        public NavigationPanel()
        {
            InitializeComponent();
        }
    }

and lastly
VMNavigationPanel.cs
using AccountingPlus.ViewModels;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;

namespace APTest.ViewModels
{
    class VMNavigationPanel  : BaseViewModel
    {
        private Page mPage;
        private ObservableCollection<Account> accounts;
        public ObservableCollection<Account> Accounts {
            get => accounts;
            set {
                accounts = value;
                OnPropertyChanged();
            }
        }

        public double NetWorth { get; set; } = 127492.30;

        public VMNavigationPanel(Page page)
        {
            mPage = page;

            Accounts = new ObservableCollection<Account>();

            Account test = new Account();
            test.TotalBalance = 100234.23;

            Accounts.Add(test);
        }
    }

    public class Account
    {
        public double TotalBalance {get; set;}
    }
}

BaseViewModel.cs
using PropertyChanged;
using System.ComponentModel;
using System.Runtime.CompilerServices;

namespace APTest
{
    [AddINotifyPropertyChangedInterface]
    class BaseViewModel : INotifyPropertyChanged
    {

        public event PropertyChangedEventHandler PropertyChanged = (Sender, e) => { };

        protected void OnPropertyChanged([CallerMemberName] string name = null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(name));
        }
    }
}

A: First of all, you need property in your model to bind the object. You cannot bind a field.
So that your Account class should be like that:
public class Account
{
    public double TotalBalance { get; set; }

}

Also keep that in mind, to update UI in WPF we need to use ObservableCollections. For example if you clicked a button and you added an item to your Accounts collection then item'll be in your collection but in the UI you won't see the updated result if you use List collections that's why you need to use ObservableCollections.
https://learn.microsoft.com/en-us/dotnet/api/system.collections.objectmodel.observablecollection-1?view=netcore-3.1
Another thing is your binding is misspelled. In your NavigationPanel.xaml it should TotalBalance.
<TextBlock Text="{Binding TotalBalnce}" />

Here is the working code of your View Model:
I also implemented INotifyPropertyChanged interface for you but haven't used with any other properties.
class VMNavigationPanel : INotifyPropertyChanged
{

    public event PropertyChangedEventHandler PropertyChanged;

    public void OnPropertyChanged<T>(ref T property, T value, [CallerMemberName] string propertyName = null)
    {
        property = value;
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }

    private Page mPage;

    public double NetWorth { get; set; } = 127492.30;

    private ObservableCollection<Account> accounts;
    public ObservableCollection<Account> Accounts
    {
        get => accounts;
        set
        {
            accounts = value;
        }
    }

    public VMNavigationPanel(Page page)
    {
        mPage = page;

        Accounts = new ObservableCollection<Account>();

        Account test = new Account();
        test.TotalBalance = 100234.23;

        Accounts.Add(test);
    }

}

public class Account
{
    public double TotalBalance { get; set; }

}


In February, Munich-based car giant BMW set up a corporate fund, BMW i Ventures, in New York City, with the goal of fostering startups that are developing location-based technologies. The fund's first investment was MyCityWay, a company founded by three former Wall Street execs who created a series of apps designed to help people find products and services in 50 cities around the world—starting with their hometown of NYC. BMW is currently searching for office space to house the fund and an accompanying technology incubator.
BMW's head of Project Mobility Services, Bernhard Blattel, is based in Munich and working with a team of four New York-based colleagues to get i Ventures off the ground. Xconomy spoke with Blattel by phone about why the automaker is fostering the development of technologies that are not necessarily car-based, and why it chose New York as the fund's home.
Xconomy: What was the genesis of BMW i Ventures?
Bernhard Blattel: We were seeing trends that we thought provided growth opportunities for a company like BMW. One trend is growing urbanization—the tendency for people to move into urban areas. These people will still have the need for mobility, and the desire to be comfortable when they're being mobile.
One enabler of transportation in urban areas is electric cars, which speaks to new products, like our new i3 and the i8 vehicles. But on the other hand, we think that connectivity, location-based services, and the rising penetration of smartphones will make the future a great enabler for a new set of services that will help customers to be more mobile.
We believed that we could combine our engineering know-how, products, great brand, and marketing with the agility and the drive and innovative ideas within startup companies. That's why we created i Ventures and decided to invest in these companies.
X: You created the fund and chose its first investment in parallel. Why that strategy?
BB: When we started the plan for BMW i Ventures, we thought it was important to show our board and other people internally what we meant when we said we were going to invest in these new companies. So we had to very quickly focus on making the first investment.
We chose MyCityWay because it is a one-stop city portal. It goes way beyond classical concentric services, and provides a complete menu of city information. We were able to demonstrate immediately what the mission of BMW i Ventures is.
X: But the MyCityWay app was not designed to be used in a car. So why is it of interest to BMW?


text:
Q: Android - Using Muiltiple Navigation Graphs Is Not Working I'm using the Google's solution for the fragment state problem of the BottomNavigationView and navigation component, which is using multiple nav graphs along with this extension function: https://github.com/android/architecture-components-samples/blob/master/NavigationAdvancedSample/app/src/main/java/com/example/android/navigationadvancedsample/NavigationExtensions.kt
However, the problem is the initial navigation graph is totally different than the ones I've provided (its id is 2131230909 as you can see from the logs)
I have no idea where it gets that id from. And because of that, selectedId if check (if (this.selectedItemId == graphId) ) is failing in the extension function and therefore it's never attaching the navHostFragment.
Setting the selectedItem of the BottomNav is not working either:    binding.bottomNavView.setSelectedItemId( R.navigation.game_list)

Here are my logs, let me know if you have any idea why this might be happening:
D/NavigationExtensionsKt: creating NavHostFragment with id: 2131623937
D/NavigationExtensionsKt: detaching NavHostFragment with id: 2131623937
D/NavigationExtensionsKt: creating NavHostFragment with id: 2131623936
D/NavigationExtensionsKt: detaching NavHostFragment with id: 2131623936
D/NavigationExtensionsKt: selectedItemId: 2131230909, firstFragmentTag: bottomNavigation#0, isOnFirstFragment: false

Game List Navigation Graph
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/game_list"
    app:startDestination="@id/gameListFragment">

    <fragment
        android:id="@+id/gameListFragment"
        android:name="com.developerkurt.gamedatabase.ui.GameListFragment"
        android:label="GameListFragment"
        tools:layout="@layout/game_list_fragment">
        <action
            android:id="@+id/action_gameListFragment_to_gameDetailsFragment"
            app:destination="@id/gameDetailsFragment" />
    </fragment>

    <fragment
        android:id="@+id/gameDetailsFragment"
        android:name="com.developerkurt.gamedatabase.ui.GameDetailsFragment"
        android:label="GameDetailsFragment"
        tools:layout="@layout/game_details_fragment_motion_scene_end">
        <argument
            android:name="id"
            app:argType="integer" />
        <argument
            android:name="isInFavorites"
            app:argType="boolean" />
    </fragment>
</navigation>

Favorite Games Navigation Graph
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/fav_games"
    app:startDestination="@id/favoriteGamesFragment">

    <fragment
        android:id="@+id/favoriteGamesFragment"
        android:name="com.developerkurt.gamedatabase.ui.FavoriteGamesFragment"
        android:label="FavoriteGamesFragment"
        tools:layout="@layout/favorite_games_fragment">
        <action
            android:id="@+id/action_favoriteGamesFragment_to_gameDetailsFragment"
            app:destination="@id/gameDetailsFragment" />
    </fragment>
    <fragment
        android:id="@+id/gameDetailsFragment"
        android:name="com.developerkurt.gamedatabase.ui.GameDetailsFragment"
        android:label="GameDetailsFragment"
        tools:layout="@layout/game_details_fragment_motion_scene_end">
        <argument
            android:name="id"
            app:argType="integer" />
        <argument
            android:name="isInFavorites"
            app:argType="boolean" />
    </fragment>
</navigation>

MainActivity
class MainActivity : AppCompatActivity()
{

    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?)
    {
        super.onCreate(savedInstanceState)

        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        if (savedInstanceState == null)
        {
            setupBottomNavigationBar()
        } // Else, need to wait for onRestoreInstanceState
    }

    override fun onRestoreInstanceState(savedInstanceState: Bundle)
    {
        super.onRestoreInstanceState(savedInstanceState)
        // Now that BottomNavigationBar has restored its instance state
        // and its selectedItemId, we can proceed with setting up the
        // BottomNavigationBar with Navigation
        setupBottomNavigationBar()
    }

    fun setupBottomNavigationBar()
    {
        binding.bottomNavView.visibility = View.VISIBLE

        val navGraphIds = listOf(R.navigation.game_list, R.navigation.fav_games)

        // Setup the bottom navigation view with a list of navigation graphs
        binding.bottomNavView.setupWithNavController(
                navGraphIds = navGraphIds,
                fragmentManager = supportFragmentManager,
                containerId = R.id.fragment_container,
                intent = intent)

    }
}

MainActivity Layout
  <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main_activity"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ui.MainActivity">

    <androidx.fragment.app.FragmentContainerView
        android:id="@+id/fragment_container"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="0dp"

        app:layout_constraintBottom_toTopOf="@+id/bottom_nav_view"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        />

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottom_nav_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        app:layout_constraintBottom_toBottomOf="parent"
        app:menu="@menu/bottom_nav_menu" />

</androidx.constraintlayout.widget.ConstraintLayout>

BottomNavMenu
  <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/bottom_nav_menu">

        <item
            android:id="@+id/gameListFragment"
            android:icon="@drawable/ic_home"
            android:menuCategory="secondary"
            android:title="@string/home" />
        <item
            android:id="@+id/favoriteGamesFragment"
            android:icon="@drawable/ic_favorite"
            android:menuCategory="secondary"
            android:title="@string/favorites" />
</menu>

A: You're using the wrong IDs for your menu items - the NavigationExtensions is comparing your menu IDs to the android:id on the root <navigation> element and not the IDs of the start destinations of those graphs.
Therefore you should be using android:id="@+id/game_list" and android:id="@+id/fav_games" for your menu items to match the graph IDs.

A: A series of destinations can be grouped into a nested graph within a parent navigation graph called the root graph. Nested graphs are useful to organize, optimize and reuse sections of your app's UI.
<include app:graph="@navigation/B_nav_graph" />
<include app:graph="@navigation/C_nav_graph" />
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/A_nav_graph"
    app:startDestination="@id/A1_fragment">
    <include app:graph="@navigation/B_nav_graph" />
    <include app:graph="@navigation/C_nav_graph" />
    <fragment
        android:id="@+id/A1_fragment"
        android:name="com.example.multiplenavigation.A_nav_graph.A1"
        android:label="A1"
        tools:layout="@layout/fragment_A1">
        <action
            android:id="@+id/A1_to_B_nav_graph"
            app:destination="@id/B_nav_graph" />
        <action
            android:id="@+id/A1_to_C_nav_graph"
            app:destination="@id/C_nav_graph" />
        <action
            android:id="@+id/A1_to_A2"
            app:destination="@id/A2_fragment" />
    </fragment>
    <fragment
        android:id="@+id/A2_fragment"
        android:name="com.example.multiplenavigation.A_nav_graph.A2"
        android:label="A2"
        tools:layout="@layout/fragment_A2" />
</navigation>

And our B_nav_graph.xml file looks like -
    <?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/B_nav_graph"
    app:startDestination="@id/B1_fragment">
    <fragment
        android:id="@+id/B1_fragment"
        android:name="com.example.multiplenavigation.B_nav_graph.B1 "
        android:label="B1"
        tools:layout="@layout/fragment_B1">
        <action
            android:id="@+id/B1_to_B2_fragment"
            app:destination="@id/B2_fragment" />
    </fragment>
    <fragment
        android:id="@+id/B2_fragment"
        android:name="com.example.multiplenavigation.B_nav_graph.B2"
        android:label="B2"
        tools:layout="@layout/fragment_B2" >
        <action
            android:id="@+id/B2_to_A1"
            app:destination="@id/A_nav_graph"
            app:popUpToInclusive="true"
            app:popUpTo="@id/A_nav_graph"/>
    </fragment>
</navigation>

And C_nav_graph.xml file looks like -
 <?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/C_nav_graph"
    app:startDestination="@id/C1_fragment">
    <fragment
        android:id="@+id/C1_fragment"
        android:name="com.example.multiplenavigation.C_nav_graph.C1 "
        android:label="C1"
        tools:layout="@layout/fragment_C1">
        <action
            android:id="@+id/C1_to_C2_fragment"
            app:destination="@id/C2_fragment" />
    </fragment>
    <fragment
        android:id="@+id/C2_fragment"
        android:name="com.example.multiplenavigation.C_nav_graph.C2"
        android:label="C2"
        tools:layout="@layout/fragment_C2" >
        <action
            android:id="@+id/C2_to_A1"
            app:destination="@id/A_nav_graph"
            app:popUpToInclusive="true"
            app:popUpTo="@id/A_nav_graph"/>
    </fragment>
</navigation>

Here's a link! And a reference-example.


The Boston Red Sox eventually passed on signing Eric Hosmer. So far that is being shown as the right move for both the short and long term.
Much of the off-season discussion on the Red Sox percolated around two high-profile and certainly high-priced free agents. Would it be Eric Hosmer, or would it be J.D. Martinez? For many a Red Sox fan, the solution would be rather simple and just sign both. I am sure the luxury tax bean counters would wipe the tears off their shades on that bill.
The drag on drama with both free agents eventually was resolved with the Red Sox signing JDM to a five-year and $110 MM contract. The contract contains a flurry of opt-outs and buy-outs. And Hosmer? Patience paid off for the left-hand hitting Hosmer. The final tally was eight years of servitude for a mere $144 MM that the Padres gifted Hosmer. I do not expect a go fund me for either.
The Red Sox made the right choice since Martinez brings right-hand power to the lineup and for fewer years. But what about first base? Hosmer would have played first, and Boston already had a resigned Mitch Moreland and a quite wealthy Hanley Ramirez scheduled to play first. Hosmer would have provided stellar defense and a potent bat. In conjunction with Martinez that would certainly catapult Boston's offense up the ladder. Or would it?
The early results are in and the Red Sox – at least at this juncture – made the smart move. Hosmer has been the go-to guy at first for the Padres with 225 innings (through 4/29). The multiple Gold Glove winner has seen four others have limited roles at first account for 36 innings. Collectively the defense has been rather tepid with Hosmer only at 0.1 UZR and a zero on DRS. Still early with the metrics.
For the Red Sox, it has been a sharing opportunity with HanRam getting 125 innings and Moreland 128 innings. Moreland certainly has far better defensive credentials than Ramirez, but collectively they are in the same area as Hosmer with a -1 DRS and -0.4 UZR. But what about the hitting?
Checking in on Hosmer I wondered if my screen needed cleaning. Was a number missing? So far in 113 plate appearances, Hosmer has four RBI. The average is still comfortable at .281 and his .389 OBP is exceptional. But those RBI!
The Red Sox are paying their duo $29.250 MM this season compared to Hosmer's $21 MM. But the collective production is not even close. The Red Sox are sitting at a 5/28/.306 line for first base with a 0.8 fWAR. The Padres at 2/6/.224 and a 0.3 fWAR. Thank you, Chase Headley, and a .079 average.
The early results show that Dave Dombrowski the right choice by not signing Hosmer and sticking with Moreland and Ramirez. Of course, having a DH is a big plus in the decision-making process. With Hosmer aboard the Red Sox would have been in a bind with Ramirez. Sit him? Play him? Trade him? Cut him? Then you have the long view.
When Ramirez contract expires either this season or next you have an opening at first base. Moreland also goes two years. Sam Travis could be the future and a far cheaper future. What about Rafael Devers? Talk around the campfire is Devers may eventually be at first.
Short and long-term the smart move was passing on Hosmer.


text:
Mónica Gama (Matosinhos, 8 de Março de 1970) é uma antiga atleta portuguesa de fundo. Salientou-se em provas de pista enquanto júnior e também em corta-mato.

Ligações externas

Naturais de Matosinhos
Fundistas de Portugal
Corredores de cross country de Portugal