A finca for sale in the hills above the pretty village of Bayarque here in the Almanzora Valley. At the heart of the 10,475m2 plot is a small property which enjoys truly stunning views of the town and valley.The casita has one room with fireplace of approximately 20 m2 and a porch area of 8m2. The land surrounding the plot has almond and olive trees and comes with watering rights.There is also the option of purchasing three adjacent plots of land totalling approximately 8600m2.The property has access to connect water from a pumping station with spring water and the possibility of connection to mains electric or power can be supplied using solar panels.
There is good road access to the property and it is a short drive to the village of Bayarque and the larger town of Tijola is a ten minute journey by car.
This is a property with great potential,with the opportunity to make a beautiful garden in a natural setting with unbeatable views.The owner has further reduced the price to allow for the cost of connecting the electricity and water.


Used Kirpy Stone crushers For Sale - Agriaffaires. Find great deals of Used Kirpy Stone crushers For Sale amongst 13 ads by private parties and dealers on .
Second Hand Kirpy Rock Crusher - 200tph jaw crusher .
Kirpy - Used and new Kirpy Stone crusher available - Agriaffaires . Look for your Kirpy stone crusher by model: Kirpy BPB250, Kirpy BPB-S 200, Kirpy BSC 250, Kirpy BP 185, Kirpy BP185, Kirpy BP 135, Kirpy, Kirpy BPS 150, Kirpy BP .
specifications crusher wx300 [ 4.8 - 3853 Ratings ] The Gulin product line, consisting . kirpy stone crusher specification - Grinding Mill China.
Search for Used Kirpy Stone crushers For Sale on Agriaffaires. Use the simple search function to find your Used Kirpy Stone crushers For Sale amongst 9 ads.
Tractor driven stone crushers breaks through the constraint of traditional fixed and high-cost of transportation crushing plant. . Kirpy Stone Crushers.
Used Kirpy for sale. Top quality machinery listings .
Search for used kirpy for sale on Machinio.
Find New & Used Rock Crushers for Sale in Australia from . Kirpy Broons Rock Crusher 2002 Model BPB200 Working Width 1800 mm Cutters 1280 . Stone crusher - .
other case used kirpy rock crushers about ciros used kirpy rock crushers modern stone crushers stone crusher sanbo portable crushe. broons kirpy rock crusher 250 ? samac.
Celtic Soil Solutions - Celtic Soil Solutions Ltd.
The crusher will crusher stone up to 20inches, as long as it is not solid rock and the tractor can travel over it. This is also ideal for crushing field stone where for example, ditches have been knocked. The Kirpy stone crusher contains a anvil that allows you to change of material size.


text:
L'épreuve des moins de 58 kg en haltérophilie des Jeux olympiques d'été de 2012 a lieu le  dans le ExCeL de Londres.

Médaillés

Qualification

Calendrier
Toutes les heures sont en British Summer Time (UTC+1).

Résultats
En , la Comité international olympique annonce la disqualification de l'ukrainienne Yuliya Kalina pour dopage. Elle doit rendre sa médaille de bronze qui est récupérée par la thaïlandaise Rattikan Gulnoi.

Lien externe
 Page de l'épreuve sur london2012.com

Notes et références

58 kg

redpajama_set_name: RedPajamaWikipedia


text:
A Sneak Peek At Disgaea 4's Tyrant Valvatorez And Fuka DLC Chapters
By Siliconera Staff July 1, 2011
As reported earlier this week, Disgaea 4: A Promise Unforgotten will get two sets of downloadable chapters.
The Tyrant Valvatorez, shows a "new" side of the Disgaea 4 protagonist. You'll get to see a new side of Valvatorez and his true power. This scenario will be released on August 31 for 600 yen ($7.50) in Japan. Tyrant Valvatorez is a new character and Dengeki PlayStation hints you may get to use him after you clear this scenario.
A four episode scenario starring Fuka and Desco will be released later this year. Fuka & Desco chapter will be released on the PlayStation Store for 2,000 yen ($25). Nippon Ichi will also sell the Fuka & Desco chapter on an append disc (this requires the original disc), which includes a maxi single soundtrack and Desco figure for 4,179 yen ($52). A PlayStation 3 package with Disgaea 4 and the Fuka & Desco scenario will also be available for 6,090 yen ($75).
The center of this scenario is sisterly love. Fuka is said to act as the big sister and Desco is a spoiled baby sister.
PlayStation's 25 Years of Play Official Trailer
By Sato January 3, 2020 0
Monster Hunter Frontier Gets Proper Farewell With Thanks To All Players
By Alistair Wong December 31, 2019 0
Final Fantasy XIII Celebrates Its 10th Anniversary Today
By Sato December 17, 2019 0

redpajama_set_name: RedPajamaCommonCrawl


text:
Antidepressants Under Scrutiny Over Efficacy
Sweeping Overview Suggests Suppression of Negative Data Has Distorted View of Drugs
David Armstrong and
Keith J. Winstein
Updated Jan. 17, 2008 12:01 am ET
The effectiveness of a dozen popular antidepressants has been exaggerated by selective publication of favorable results, according to a review of unpublished data submitted to the Food and Drug Administration.
As a result, doctors and patients are getting a distorted view of how well blockbuster antidepressants like Wyeth's Effexor and Pfizer Inc.'s Zoloft really work, researchers asserted in this week's New England Journal of Medicine.


text:
Liz Hutchinson
ehutchinson shb.com
Direct:303.285.5337
Main:303.285.5300
Banking and Financial Services Design and Construction Energy Food, Beverage and Agribusiness Life Sciences and Biotechnology Pharmaceutical and Medical Device Technology and Telecommunications
Business Litigation Litigation Environmental Toxic Tort and Exposure Litigation Appellate Class Action and Complex Litigation Employment Litigation and Policy
Liz concentrates her practice in business litigation, handling matters at every phase from pretrial counsel to appeals. Liz not only regularly counsels clients in pre-litigation strategy, but also is frequently asked to pull upon her clerking experience to brief and prepare oral arguments for appellate cases in both state and federal courts.
She has researched and drafted legal opinions, memoranda and briefs on a diverse range of matters, including construction and design-defect laws, the Clean Air Act, Mineral Leasing Act, Wild and Scenic Rivers Act, the application of the Endangered Species Act in tribal lands, the U.S. Environmental Protection Agency's (EPA) renewable fuels program, state and tribal jurisdiction of Native American child custody proceedings, education-related legislation and federal civil rights laws. Liz focuses her pro bono practice on assisting low-income clients fleeing gender- and political-based violence.
Before joining Shook, Liz served as an appellate law clerk to the Hon. Gregory A. Phillips, Judge for the U.S. Court of Appeals for the Tenth Circuit; the Hon. William W. Hood, III, Associate Justice for the Colorado Supreme Court; and the Hon. John R. Webb, Judge for the Colorado Court of Appeals. She also was a staff attorney for the U.S. District Court for the District of Wyoming.
In addition, Liz is a former staff attorney and pro bono coordinator for Equal Justice Wyoming, an independent division of the Wyoming Supreme Court, where she expanded pro bono programs to serve low-income individuals across the state; helped to launch Wyoming Free Legal Answers, an online platform with functions similar to a walk-in legal advice clinic; and supported research and policy initiatives of the Wyoming Access to Justice Commission.
Liz received her J.D. from the University of Denver Sturm College of Law, with a certificate in environmental and natural resources law. During law school, she completed internships with the U.S. Department of Justice, the U.S. Department of the Interior and EPA. She also was a law clerk for the Native American Rights Fund in Alaska and served as a legislative fellow for Colorado Sen. Mike Johnston.
Liz remains actively involved in her community. She serves on the Alumni Council of the University of Denver Sturm College of Law, the board of directors of the Wyoming Outdoor Council, and the Executive Council of the Denver Bar Association—Young Lawyers Division. She also has volunteered for more than a decade with the Colorado High School Cycling League to support youth mountain biking.
Before entering the legal profession, Liz was a high school teacher in California where she served as director of community involvement leading local, national and international service-learning trips for students and faculty. She received her B.A. with honors from the University of California, Davis, where she was a member of the NCAA Division I Women's Rowing Team.
J.D., University of Denver Sturm College of Law, 2013
Certificate in Environmental and Natural Resources Law
Order of St. Ives (Top 10% of Class)
University of Denver Water Law Review, Managing Editor
Reese Persuasive Writing Award
Recipient, Full Tuition Scholarships
Recipient, Rocky Mountain Mineral Law Foundation Scholarship
Scholastic Excellence Awards (Objective Legal Writing; Evidence; Environmental Law; Natural Resources in Indian Country; Sustainable Development; Poverty Law)
Navajo Nation Legal Aid Volunteer
Natural Resources and Environmental Law Society, President
B.A., with honors, University of California, Davis, 2007 (International Relations; Minor in Comparative Literature)
Alfred J. Hoefer Memorial Scholarship
NCAA Division I Women's Rowing Team (2003-07)
Western Intercollegiate Rowing Association Honors for Most Tenacious Rower
Denver Bar Association
Executive Council, Young Lawyers Division
William E. Doyle Inn of Court
University of Denver Sturm College of Law, Alumni Council
Wyoming Outdoor Council, Board of Directors
Colorado High School Cycling League, Volunteer
Clerk for the Hon. Gregory A. Phillips, Judge of the U.S. Court of Appeals for the Tenth Circuit (2015-16, 2019)
Clerk for the Hon. William W. Hood, III, Associate Justice of the Colorado Supreme Court (2014-15)
Clerk for the Hon. John R. Webb, Judge of the Colorado Court of Appeals (2013-14)


text:
Q: How does framebuffer get updated in qemu running kvm/arm I am running qemu-system-arm with kvm following this tutorial :
http://www.virtualopensystems.org/media/chromebook/chromebook.pdf
After reading some documentations (mostly blogs, lkml, and mailing list archives) and skim through codes (qemu, kvm, kernel), also, utilizing kernel trace function to trace kvm events, I can ascertain that vcpu thread runs guest code until hyp-trap occurs, and this is, mostly because of guest accessing mmio address for:
1. gpio access (I can't figure out what)
2. virtio-net, accessing ethernet
3. serial access
the execution then goes back to kvm code to request userspace device emulation to qemu, and back again to guest.
My question is, for framebuffer, when does qemu have time to update the display (sdl)? if I am not mistaken, framebuffer memory range is within RAM itself, thus it is not MMIO. So, it does not interrupt cpu, nor it generates hyp-trap.

redpajama_set_name: RedPajamaStackExchange


Testing Wireless and Wired Network environments from just a few network nodes to testing large networks. We will assess the security posture of your environments to identify areas of concern, during which we will identify vulnerabilities and assess real business risk against local and international compliance standards, such as ISO 27002, PCI-DSS, HIPAA, SANS 20, GDPR and other security compliance mandates.
Internet enabled applications such as web based portals, to complex enterprise applications all represent attack surface for an organisation. We assess them all to attempt to identify exploitable weakness that can be used by an attacker to compromise any business asset or customer data processed by the application.
Mobile applications, in this everything everywhere connected age mobile applications are everywhere and as a result they represent attack surface for those attacking an organisation. We've expertise and experience in the review and assessment of mobile applications to attempt to identify any weaknesses.
In addition to traditional testing of live applications we have extensive experience in conducting Source Code based security reviews of applications. Reviewing an application from the standpoint of the source code can provide additional insight into possible security weaknesses that may not be readily identified by testing a live running application. With this greater level of access and understanding it allows our team to work more closely with your developer community to provide recommendations and advice to address identified issues.
Red Team Assessment Services (RTAS) is designed to identify and assess the security of an organisation at an enterprise wide level, identifying and exploiting vulnerabilities within an organisation to provide insight into realisable risk based on threats and concerns within the organisation.
Our red team services target specific identifiable assets of an organisation or concerns and use what ever means available to attempt compromise those assets or realise the addressed concerns.
We are addressing the problem that has emerged from current testing approaches which have become too focused, only looking at a specific application or system, rarely looking at the bigger picture due to the constraints of scope.
Traditional testing often stops at flaw identification, proving the flaw exists then moving on to the next issue.
Organisations rarely assess flaws in combination, looking at the interactions between flaws to enact a wider compromise in the system they exist in or rarer still the interaction between flaws in different systems.
Our approach used long term assessment, as a key element of our methodology used by our Red Team, this enables use to mimic the adversary as closely as possible.


text:
Nov. 13, 2019, 6 a.m.
Nattering nabobs of news criticism: 50 years ago today, Spiro Agnew laid out a blueprint for attacking the press
"In his attacks on television news, Agnew struck a chord with conservatives who had long regarded the media with suspicion. Nixon later called Agnew's speech a 'turning point' in his presidency."
By Thomas Alan Schwartz Nov. 13, 2019, 6 a.m.
Americans witnessed an unprecedented event 50 years ago today: live television coverage on all three national networks of a speech by the vice president of the United States.
Speeches by vice presidents never received such attention. But the address on Nov. 13, 1969, by Vice President Spiro Agnew to the Midwest Regional Republican Committee Meeting in Des Moines, blandly titled "The Responsibilities of Television," set off a public uproar. Almost overnight, it made Agnew one of the most significant conservative political leaders in the country.
Agnew argued that the television network news programs, and the "tiny and closed fraternity of privileged men" who produced them, had acquired "a profound influence over public opinion," with few checks on their "vast power."
He then attacked their treatment of President Richard Nixon's recent speech on the Vietnam War, known now as the "Silent Majority" speech. According to Agnew, after the president finished the "most important address of his administration," a "small band of network commentators and self-appointed analysts" subjected it to instant and "querulous criticism," demonstrating their outright hostility to the president's policy. In Agnew's view, their opposition was at odds with how the majority of Americans viewed the speech.
Although he said he was not calling for any censorship, Agnew posed the question of whether it was "time that the networks were made more responsive to the views of the nation and more responsible to the people they serve."
In many respects, Agnew was Donald Trump before Donald Trump. He was a polarizing political figure, beloved by conservatives, hated and mocked by liberals, yet favored as the likely Republican nominee to succeed Richard Nixon.
In his attacks on television news, Agnew struck a chord with conservatives who had long regarded the media with suspicion. Nixon later called Agnew's speech a "turning point" in his presidency. He described how "within a few hours, telegrams began arriving at the White House; the switchboards were tied up all night by people calling to express their relief that someone had finally spoken up."
The networks themselves calculated that the messages they were receiving were running almost five to one in support of Agnew.
Why did Agnew speak out when he did? The immediate background to the speech involves the intersection of two developments, both connected to the long, bloody war in Vietnam that appeared to have no end.
The first was the rise of adversarial journalism during the Vietnam War. Before Vietnam most news coverage "tended to be bland and deferential to government." The government's lies and false optimism about the war, revealed most dramatically after the losses of the Tet Offensive, fundamentally changed the relationship.
Vietnam, as the historian of journalism Matthew Pressman argues, "established a baseline level of antagonism between the press and the government." Most famously, Walter Cronkite, the anchor of CBS News and the "most trusted man in America," delivered an unusual editorial in February 1968 calling on the Johnson administration to negotiate an end to the war.
In the weeks before the Agnew speech, television news provided extensive and overwhelmingly positive coverage of the large antiwar protests, including the October "moratorium" against the war.
The second development was the failure to end the protracted war. Nixon and his National Security Adviser Henry Kissinger tried a variety of military threats and enticement to convince North Vietnam to negotiate. They even launched a secret nuclear alert to intimidate Hanoi. Nothing worked, and Nixon's Silent Majority speech was a plea to the American people to give him more time to achieve "peace with honor" in Vietnam.
The absence of any dramatic new steps toward peace in Nixon's speech was the main reason the network's "self-appointed analysts," including the former Paris negotiator W. Averell Harriman, engaged in the "instant" and "querulous criticism" that Agnew described. Their abrupt dismissal of the speech infuriated Nixon and his aides and motivated them to respond forcefully.
Patrick Buchanan, Nixon's ultra-conservative speechwriter, encouraged the president to launch an attack on the networks and drafted the speech for Agnew. Buchanan later remembered that, as Nixon read his proposed draft, he heard him mutter, "This'll tear the scab off those bastards."
The networks reacted strongly, with NBC's president Julian Goodman calling it "an appeal to prejudice," implying that Agnew's focus on the small group of "privileged men" living in New York was a code for anti-Semitism.
Both Goodman and CBS president Frank Stanton accused Agnew of trying to undermine the freedom of the press, especially in the attempt to "intimidate a news medium which depends for its existence upon government licenses."
Some journalists saw this as an overreaction, and viewed Agnew's attack as part of the larger challenge to the country's traditional institutions that the war in Vietnam had catalyzed. Richard Harwood and Laurence Stern wrote in The Washington Post that "the issue of media performance is not going to evaporate in this country simply because publishers and network presidents wrap themselves in the First Amendment and sneer at Spiro Agnew. For the facts are that the media are as blemished as any other institution in this society and that there is growing public concern over their performance."
But CBS's renowned news magazine "60 Minutes" devoted an hour-long special to rebutting Agnew's criticism, featuring Walter Cronkite speaking at a Chamber of Commerce function in his hometown of St. Joseph, Missouri. Cronkite rejected the idea that the media overreacted, and maintained that "What we're defending is the people's right to know, and we have to be at the frontline of that battle at all times."
This early version of a government war on the news media did not give Agnew what he and the president wanted. Although the networks eventually stepped away from "instant analysis" of presidential speeches in favor of giving the opposition "equal time" to respond, TV network news continued to retain the trust of most Americans as the most objective source for their news well into the 1970s, particularly during the Watergate period. And when Agnew himself resigned in disgrace, brought down by his own greed in a bribery scandal, his assault on TV news seemed discredited as well.
But Agnew had demonstrated the vulnerability of the mass media to populist attacks — firing some of the first shots in a culture war that persists to this day.
Thomas Alan Schwartz is a professor of history, political science, and European studies at Vanderbilt University. This article is republished from The Conversation under a Creative Commons license.
Photo of a Spiro Agnew watch by Joe Haupt used under a Creative Commons license.
POSTED Nov. 13, 2019, 6 a.m.
nattering nabobs of negativity
Schwartz, Thomas Alan. "Nattering nabobs of news criticism: 50 years ago today, Spiro Agnew laid out a blueprint for attacking the press." Nieman Journalism Lab. Nieman Foundation for Journalism at Harvard, 13 Nov. 2019. Web. 20 Jan. 2021.
Schwartz, T. (2019, Nov. 13). Nattering nabobs of news criticism: 50 years ago today, Spiro Agnew laid out a blueprint for attacking the press. Nieman Journalism Lab. Retrieved January 20, 2021, from https://www.niemanlab.org/2019/11/nattering-nabobs-of-news-criticism-50-years-ago-today-spiro-agnew-laid-out-a-blueprint-for-attacking-the-press/
Schwartz, Thomas Alan. "Nattering nabobs of news criticism: 50 years ago today, Spiro Agnew laid out a blueprint for attacking the press." Nieman Journalism Lab. Last modified November 13, 2019. Accessed January 20, 2021. https://www.niemanlab.org/2019/11/nattering-nabobs-of-news-criticism-50-years-ago-today-spiro-agnew-laid-out-a-blueprint-for-attacking-the-press/.
| url = https://www.niemanlab.org/2019/11/nattering-nabobs-of-news-criticism-50-years-ago-today-spiro-agnew-laid-out-a-blueprint-for-attacking-the-press/
| title = Nattering nabobs of news criticism: 50 years ago today, Spiro Agnew laid out a blueprint for attacking the press
| first = Thomas Alan
| date = 13 November 2019


Hospice UK makes every effort to ensure that education and training events we organise take place as planned. Sometimes unforeseen circumstances may affect their viability in which case the following cancellation policy applies to each delegate booking.
A full refund of the registration fee paid for the course or conference.
Instead of a refund, the option to have his/her registration fee transferred to pay for the next scheduled course or conference provided by Hospice UK of his/her choice to which the same registration fee applies.
Hospice UK or conference outsourcing companies will not reimburse the cost of pre-booked travel or of any other costs incurred by the delegate in connection with the cancelled conference or course.
Telephone the relevant conference outsourcing company between the hours of 9am and 5pm Monday to Friday.
Email confirmation of the cancellation to the email address advised by the conference outsourcing company.
There will be a cancellation charge of 25% of the value of the course or conference; where events are free please check individual event policies as there will normally be a charge.
Substitute delegates are offered free of charge, please follow the instructions above to notify relevant conference outsourcing company.
For cancellations more than 10 working days prior to the course date, 75% of the course fee will be refunded.
For cancellations less than 10 working days prior to the course date no refunds will be made.
Free courses may incur non attendance charges, check individual course details.
Substitutions are offered free of charge – please follow the instructions above to notify relevant conference outsourcing company.
For cancellations more than six weeks prior to the conference, 75% of the conference fee will be refunded.
For cancellations less than six weeks prior to the conference no refunds will be made.


text:
<?xml version="1.0" encoding="UTF-8"?>
<!--
    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <parent>
        <groupId>org.apache.aries</groupId>
        <artifactId>java5-parent</artifactId>
        <version>1.0.0</version>
        <relativePath />
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.apache.aries.ejb</groupId>
    <artifactId>org.apache.aries.ejb.openejb.extender.itest</artifactId>
    <version>1.0.1-SNAPSHOT</version>
    <name>Aries EJB Extender iTests</name>

     <scm>
       <connection>scm:svn:http://svn.apache.org/repos/asf/aries/trunk/ejb/openejb-extender-itest</connection>
      <developerConnection>scm:svn:https://svn.apache.org/repos/asf/aries/trunk/ejb/openejb-extender-itest</developerConnection>
      <url>http://svn.apache.org/viewvc/aries/trunk/ejb/openejb-extender-itest</url>
</scm>

    <properties>
      <openWebBeansVersion>1.1.1</openWebBeansVersion>
      <xbeansVersion>3.8</xbeansVersion>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.osgi</groupId>
            <artifactId>org.osgi.core</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.osgi</groupId>
            <artifactId>org.osgi.compendium</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>org.eclipse.osgi</artifactId>
            <version>3.7.0.v20110613</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.ops4j.pax.logging</groupId>
            <artifactId>pax-logging-api</artifactId>
            <scope>test</scope>
            <version>1.6.3</version>
        </dependency>
        <dependency>
            <groupId>org.ops4j.pax.logging</groupId>
            <artifactId>pax-logging-service</artifactId>
            <scope>test</scope>
            <version>1.6.3</version>
        </dependency>
        <dependency>
          <groupId>org.ops4j.pax.runner</groupId>
          <artifactId>pax-runner-no-jcl</artifactId>
          <version>1.7.3</version>
        </dependency>
        <dependency>
            <groupId>org.ops4j.pax.exam</groupId>
            <artifactId>pax-exam-container-default</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.ops4j.pax.exam</groupId>
            <artifactId>pax-exam-junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.aries</groupId>
            <artifactId>org.apache.aries.util</artifactId>
            <version>1.0.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.aries.proxy</groupId>
            <artifactId>org.apache.aries.proxy</artifactId>
            <version>1.0.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.ow2.asm</groupId>
            <artifactId>asm-all</artifactId>
            <version>4.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.aries.blueprint</groupId>
            <artifactId>org.apache.aries.blueprint</artifactId>
            <version>1.0.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.aries.transaction</groupId>
            <artifactId>org.apache.aries.transaction.manager</artifactId>
            <version>1.0.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.ops4j.pax.url</groupId>
            <artifactId>pax-url-mvn</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
          <groupId>org.apache.aries.testsupport</groupId>
          <artifactId>org.apache.aries.testsupport.unit</artifactId>
          <version>1.0.0</version>
          <scope>test</scope>
        </dependency>
        <dependency>
        	<groupId>org.apache.aries.ejb</groupId>
        	<artifactId>org.apache.aries.ejb.openejb.extender</artifactId>
        	<version>1.0.0</version>
        	<type>bundle</type>
        	<scope>test</scope>
        </dependency>
        <dependency>
        	<groupId>org.apache.aries.jpa</groupId>
        	<artifactId>org.apache.aries.jpa.api</artifactId>
        	<version>1.0.0</version>
        	<type>bundle</type>
        	<scope>compile</scope>
        </dependency>
        <dependency>
        	<groupId>org.apache.aries.jpa</groupId>
        	<artifactId>org.apache.aries.jpa.container</artifactId>
        	<version>1.0.0</version>
        	<scope>test</scope>
        </dependency>
        <dependency>
        	<groupId>org.apache.aries.jpa</groupId>
        	<artifactId>org.apache.aries.jpa.container.context</artifactId>
        	<version>1.0.0</version>
        </dependency>
        <dependency>
    		<groupId>org.apache.openejb</groupId>
    		<artifactId>openejb-core</artifactId>
    		<version>4.0.0-beta-1</version>
    		<type>jar</type>
    		<scope>test</scope>
    	</dependency>
    	<dependency>
    		<groupId>org.apache.openejb</groupId>
    		<artifactId>openejb-api</artifactId>
    		<version>4.0.0-beta-1</version>
    		<type>jar</type>
    		<scope>test</scope>
    	</dependency>
    	<dependency>
    		<groupId>org.apache.openejb</groupId>
    		<artifactId>openejb-javaagent</artifactId>
    		<version>4.0.0-beta-1</version>
    		<type>jar</type>
    		<scope>test</scope>
    	</dependency>
    	<dependency>
			<groupId>org.apache.openejb</groupId>
			<artifactId>openejb-jee</artifactId>
			<version>4.0.0-beta-1</version>
			<type>pom</type>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.openejb</groupId>
			<artifactId>openejb-loader</artifactId>
			<version>4.0.0-beta-1</version>
			<type>pom</type>
			<scope>test</scope>
		</dependency>
		<dependency>
    		<groupId>org.apache.servicemix.bundles</groupId>
    		<artifactId>org.apache.servicemix.bundles.javassist</artifactId>
    		<version>3.12.1.ga_1</version>
		</dependency>
		<dependency>
   	 		<groupId>org.apache.geronimo.specs</groupId>
    		<artifactId>geronimo-annotation_1.1_spec</artifactId>
    		<version>1.0.1</version>
		</dependency>
		<dependency>
   	 		<groupId>org.apache.geronimo.specs</groupId>
    		<artifactId>geronimo-ejb_3.1_spec</artifactId>
    		<version>1.0.2</version>
		</dependency>
		<dependency>
    		<groupId>org.apache.geronimo.specs</groupId>
    		<artifactId>geronimo-jcdi_1.0_spec</artifactId>
    		<version>1.0</version>
		</dependency>
		<dependency>
    		<groupId>org.apache.geronimo.specs</groupId>
    		<artifactId>geronimo-el_2.2_spec</artifactId>
    		<version>1.0.2</version>
		</dependency>
		<dependency>
    		<groupId>org.apache.geronimo.specs</groupId>
    		<artifactId>geronimo-jta_1.1_spec</artifactId>
    		<version>1.1.1</version>
		</dependency>
		<dependency>
    		<groupId>org.apache.geronimo.specs</groupId>
    		<artifactId>geronimo-jaxrpc_1.1_spec</artifactId>
    		<version>2.1</version>
		</dependency>
		<dependency>
    		<groupId>org.apache.geronimo.specs</groupId>
    		<artifactId>geronimo-atinject_1.0_spec</artifactId>
    		<version>1.0</version>
		</dependency>
		<dependency>
    		<groupId>org.apache.geronimo.specs</groupId>
    		<artifactId>geronimo-servlet_3.0_spec</artifactId>
    		<version>1.0</version>
		</dependency>
		<dependency>
    		<groupId>org.apache.geronimo.specs</groupId>
    		<artifactId>geronimo-jsp_2.2_spec</artifactId>
    		<version>1.0</version>
		</dependency>
		<dependency>
    		<groupId>org.apache.geronimo.specs</groupId>
    		<artifactId>geronimo-interceptor_1.1_spec</artifactId>
    		<version>1.0</version>
		</dependency>
		<dependency>
    		<groupId>org.apache.geronimo.specs</groupId>
    		<artifactId>geronimo-saaj_1.3_spec</artifactId>
    		<version>1.1</version>
		</dependency>
		<dependency>
    		<groupId>org.apache.geronimo.specs</groupId>
    		<artifactId>geronimo-activation_1.1_spec</artifactId>
    		<version>1.1</version>
		</dependency>
		<dependency>
    		<groupId>org.apache.geronimo.specs</groupId>
    		<artifactId>geronimo-j2ee-management_1.1_spec</artifactId>
    		<version>1.0.1</version>
		</dependency>
		<dependency>
    		<groupId>org.apache.geronimo.specs</groupId>
    		<artifactId>geronimo-jpa_2.0_spec</artifactId>
    		<version>1.1</version>
    	</dependency>
    	<dependency>
    		<groupId>org.apache.geronimo.specs</groupId>
    		<artifactId>geronimo-j2ee-connector_1.6_spec</artifactId>
    		<version>1.0</version>
		</dependency>
		<dependency>
    		<groupId>org.apache.geronimo.specs</groupId>
    		<artifactId>geronimo-jacc_1.4_spec</artifactId>
    		<version>1.0</version>
		</dependency>
		<dependency>
    		<groupId>org.apache.geronimo.specs</groupId>
    		<artifactId>geronimo-validation_1.0_spec</artifactId>
    		<version>1.1</version>
		</dependency>
		<dependency>
    		<groupId>org.apache.geronimo.specs</groupId>
    		<artifactId>geronimo-jaxrs_1.1_spec</artifactId>
    		<version>1.0</version>
		</dependency>
		<dependency>
    		<groupId>org.apache.geronimo.specs</groupId>
    		<artifactId>geronimo-ws-metadata_2.0_spec</artifactId>
    		<version>1.1.2</version>
		</dependency>
		<dependency>
    		<groupId>org.apache.geronimo.specs</groupId>
    		<artifactId>geronimo-jaspic_1.0_spec</artifactId>
    		<version>1.1</version>
		</dependency>
		<dependency>
    		<groupId>org.apache.geronimo.specs</groupId>
    		<artifactId>geronimo-jaxb_2.2_spec</artifactId>
    		<version>1.0.1</version>
		</dependency>
		<dependency>
    		<groupId>org.apache.geronimo.specs</groupId>
    		<artifactId>geronimo-stax-api_1.2_spec</artifactId>
    		<version>1.1</version>
		</dependency>
		<dependency>
		    <groupId>org.apache.geronimo.specs</groupId>
		    <artifactId>geronimo-jaxws_2.2_spec</artifactId>
		    <version>1.1</version>
		</dependency>
		<dependency>
    		<groupId>org.apache.geronimo.specs</groupId>
    		<artifactId>geronimo-jms_1.1_spec</artifactId>
    		<version>1.1.1</version>
		</dependency>
		<dependency>
			<groupId>org.apache.servicemix.bundles</groupId>
			<artifactId>org.apache.servicemix.bundles.wsdl4j-1.6.1</artifactId>
			<version>4.0-m1</version>
			<type>bundle</type>
			<scope>test</scope>
		</dependency>
		<dependency>
    		<groupId>org.apache.servicemix.bundles</groupId>
    		<artifactId>org.apache.servicemix.bundles.jaxb-impl</artifactId>
    		<version>2.2.1.1_2</version>
		</dependency>
		<dependency>
    		<groupId>commons-cli</groupId>
    		<artifactId>commons-cli</artifactId>
    		<version>1.2</version>
		</dependency>
		<dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>
		<dependency>
			<groupId>org.apache.geronimo.components</groupId>
			<artifactId>geronimo-connector</artifactId>
			<version>3.0</version>
			<type>bundle</type>
			<scope>compile</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.geronimo.components</groupId>
			<artifactId>geronimo-transaction</artifactId>
			<version>3.0</version>
			<type>bundle</type>
			<scope>compile</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.openwebbeans</groupId>
			<artifactId>openwebbeans-spi</artifactId>
			<version>${openWebBeansVersion}</version>
			<type>jar</type>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.openwebbeans</groupId>
			<artifactId>openwebbeans-impl</artifactId>
			<version>${openWebBeansVersion}</version>
			<type>jar</type>
			<scope>test</scope>
		</dependency>
	    <dependency>
			<groupId>org.apache.openwebbeans</groupId>
			<artifactId>openwebbeans-ee</artifactId>
			<version>${openWebBeansVersion}</version>
			<type>jar</type>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.openwebbeans</groupId>
			<artifactId>openwebbeans-ejb</artifactId>
			<version>${openWebBeansVersion}</version>
			<type>jar</type>
			<scope>test</scope>
		</dependency>
	    <dependency>
			<groupId>org.apache.openwebbeans</groupId>
			<artifactId>openwebbeans-web</artifactId>
			<version>${openWebBeansVersion}</version>
			<type>jar</type>
			<scope>test</scope>
		</dependency>
		<dependency>
    		<groupId>org.apache.geronimo.bundles</groupId>
    		<artifactId>scannotation</artifactId>
    		<version>1.0.2_1</version>
		</dependency>

		<dependency>
			<groupId>org.apache.xbean</groupId>
			<artifactId>xbean-asm-shaded</artifactId>
			<version>${xbeansVersion}</version>
			<type>bundle</type>
			<scope>test</scope>
		</dependency>
	    <dependency>
			<groupId>org.apache.xbean</groupId>
			<artifactId>xbean-finder-shaded</artifactId>
			<version>${xbeansVersion}</version>
			<type>bundle</type>
			<scope>test</scope>
		</dependency>
	    <dependency>
			<groupId>org.apache.xbean</groupId>
			<artifactId>xbean-naming</artifactId>
			<version>${xbeansVersion}</version>
			<type>bundle</type>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.xbean</groupId>
			<artifactId>xbean-reflect</artifactId>
			<version>${xbeansVersion}</version>
			<type>bundle</type>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>commons-beanutils</groupId>
			<artifactId>commons-beanutils</artifactId>
			<version>1.8.3</version>
			<type>jar</type>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>commons-collections</groupId>
			<artifactId>commons-collections</artifactId>
			<version>3.2.1</version>
			<type>jar</type>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.hsqldb</groupId>
			<artifactId>hsqldb</artifactId>
			<version>2.2.4</version>
		</dependency>
		<dependency>
            <groupId>org.apache.openjpa</groupId>
            <artifactId>openjpa</artifactId>
            <version>2.0.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.servicemix.bundles</groupId>
            <artifactId>org.apache.servicemix.bundles.serp</artifactId>
            <version>1.13.1_2</version>
        </dependency>
        <dependency>
            <groupId>commons-pool</groupId>
            <artifactId>commons-pool</artifactId>
            <version>1.5.3</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.derby</groupId>
            <artifactId>derby</artifactId>
            <version>10.5.3.0_1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.servicemix.tooling</groupId>
                <artifactId>depends-maven-plugin</artifactId>
                <version>1.2</version>
                <executions>
                    <execution>
                        <id>generate-depends-file</id>
                        <goals>
                            <goal>generate-depends-file</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>ci-build-profile</id>
            <activation>
                <property>
                    <name>maven.repo.local</name>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <!--
                              when the local repo location has been specified, we need
                              to pass on this information to PAX mvn url
                            -->
                            <argLine>-Dorg.ops4j.pax.url.mvn.localRepository=${maven.repo.local}
                            </argLine>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>

redpajama_set_name: RedPajamaGithub


text:
on May 10, 2015 June 3, 2020 Share Facebook Twitter Pinterest Email
Several news articles highlighted the deteriorating air quality in Delhi and its impact on health. Many of my friends and colleagues started contemplating options that can save them from air-pollution. They discussed options ranging from buying masks and air-purifiers to shifting to a city with better air quality. These frequent news and articles about air-pollution made them really concerned.
Mainstream media has an unparalleled capacity of influencing our priorities. However, mainstream media is very stubbornly selective in what it chooses to highlight and what it chooses to ignore.
One such issue that never got duly highlighted by the mainstream media is the impact of household air pollution (HAP) on health.
A traditional cookstove in a rural household
Annually more than 4.3 million deaths occur due to HAP. The deaths are caused by HAP from household cooking. HAP is a silent killer in many households. The majority of victims are women and children from economically backward rural population. These households use solid fuels such as wood, crop-residue, dung, charcoal etc in their traditional cookstoves, often made of three stones put together. There are more than 3 billion still dependent on solid fuel for their cooking energy needs (see here for more info).
These lives can be saved if these households shift to cleaner cooking fuel such as liquid petroleum gas (LPG), electricity; or improved biomass cookstoves which can be used with solid fuels but emissions are within the permissible safe limit. In fact, improved biomass cookstoves make a very good case for replacing traditional cookstoves. These can be used with locally available fuel and are considerable cheaper (cost USD 10–70) than LPG. Sadly, moving from traditional cookstoves to clean cooking devices is not an easy transition.
LPG is expensive and access to reliable and affordable electricity is limited. Furthermore, households have limited budget for cooking fuel and stoves. Many households build their own cookstoves and collect fuels at nominal or no cost. This makes them reluctant to spend a significant sum of money from their limited resources. Households are also not aware of the extent of health risk. Most believe that smoke is just an irritating inconvenience associated with cooking. In some areas, LPG distribution network disappoints many of the households that aspire to get LPG.
There are behavioural challenges as well. Households have been using traditional cookstoves since generations. The traditional cookstove is central in many of rituals and festivals. Switching to a new cooking devices often requires changing the way a person cooks or compromising the convenience of their age-old cooking methods. Improved cookstoves are also not seen as aspirational as LPGs or induction cooker. Several households also do not feel comfortable paying the upfront cost of improved cookstoves despite its economic and health benefits.
All of the above challenges are surmountable. But the issue itself has not got its due attention from policy makers and most importantly from the users of traditional cookstoves. Households do not feel the need to move from life threatening inefficient traditional cookstoves. They have limited awareness on its ill-effects and fail to see the benefits of clean cooking devices in context of its cost.
Creating mass awareness about the ill-effects of emission from traditional cookstoves, and need for switching to a clean cooking device is essential in solving this problem. Our media can play a monumental role. I hope more main-stream media houses start highlighting this issue so that it goes up in the priority list of policy makers and households.
Development Challenges
Bihar: A Glorious Past and An Uncertain Future


text:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Research.Naiad.Serialization;
using Microsoft.Research.Naiad.DataStructures;

namespace Microsoft.Research.Naiad.Frameworks.DifferentialDataflow.CollectionTrace
{
    internal class CollectionTraceWithAggregation<S> : CollectionTraceCheckpointable<S>
        where S : IEquatable<S>
    {
        VariableLengthHeap<CollectionTraceWithAggregationIncrement<S>> increments;   // stores regions of increments, each corresponding to a time

        Func<int, int, bool> TimeLessThan;          // wraps the "less than" partial order on time indices
        Func<int, int> UpdateTime;                  // wraps the reachability-based time advancement
        Func<Int64, S, S, S> axpy;                    // (weight, new record, old record) -> newer record
        Func<S, bool> isZero;                       // indicates if x is logically zero.

        OffsetLength cachedIncrementOffset;
        CollectionTraceWithAggregationIncrement<S> cacheContents;

        public void ReleaseCache()
        {
            if (!cachedIncrementOffset.IsEmpty)
            {
                cachedIncrementOffset = new OffsetLength();
                cacheContents = new CollectionTraceWithAggregationIncrement<S>();
            }
        }

        public void Introduce(ref int offsetLength, S element, Int64 weight, int timeIndex)
        {
            var ol = new OffsetLength(offsetLength);

            // internal Introduce uses aggregated element and weight, so should aggregate first

            Introduce(ref ol, this.axpy(weight, element, default(S)), weight, timeIndex);

            offsetLength = ol.offsetLength;

            ReleaseCache();
        }

        void Introduce(ref OffsetLength offsetLength, S element, Int64 weight, int timeIndex)
        {
            var handle = EnsureTime(ref offsetLength, timeIndex);

            var position = 0;
            while (handle.Array[handle.Offset + position].TimeIndex != timeIndex)
                position++;

            if (handle.Array[handle.Offset + position].IsEmpty(isZero))
                handle.Array[handle.Offset + position] = new CollectionTraceWithAggregationIncrement<S>(weight, timeIndex, element);
            else
            {
                var incr = handle.Array[handle.Offset + position];
                var result = new CollectionTraceWithAggregationIncrement<S>(incr.Weight + weight, timeIndex, axpy(1, element, incr.Value));
                handle.Array[handle.Offset + position] = result;
            }

            // if the introduction results in an empty region, we need to clean up
            if (handle.Array[handle.Offset + position].IsEmpty(isZero))
            {
                // drag everything after it down one
                for (int i = position + 1; i < handle.Length; i++)
                    handle.Array[handle.Offset + i - 1] = handle.Array[handle.Offset + i];

                handle.Array[handle.Offset + handle.Length - 1] = new CollectionTraceWithAggregationIncrement<S>();

                // if the root element is empty, the list must be empty
                if (handle.Array[handle.Offset].IsEmpty(isZero))
                    increments.Release(ref offsetLength);
            }
        }

        void Introduce(ref OffsetLength thisOffsetLength, OffsetLength thatOffsetLength, int scale)
        {
            var handle = increments.Dereference(thatOffsetLength);
            for (int i = 0; i < handle.Length && !handle.Array[handle.Offset + i].IsEmpty(isZero); i++)
            {
                Introduce(ref thisOffsetLength, axpy(scale, handle.Array[handle.Offset + i].Value, default(S)), scale * handle.Array[handle.Offset + i].Weight, handle.Array[handle.Offset + i].TimeIndex);
            }
        }

        Handle<CollectionTraceWithAggregationIncrement<S>> EnsureTime(ref OffsetLength offsetLength, int timeIndex)
        {
            var handle = increments.Dereference(offsetLength);

            for (int i = 0; i < handle.Length; i++)
            {
                // if we found the time, it is ensured and we can return
                if (handle.Array[handle.Offset + i].TimeIndex == timeIndex)
                    return handle;

                // if we found an empty slot, new it up and return
                if (handle.Array[handle.Offset + i].IsEmpty(isZero))
                {
                    handle.Array[handle.Offset + i] = new CollectionTraceWithAggregationIncrement<S>(timeIndex);
                    return handle;
                }
            }

            // if we didn't find it, and no empty space for it
            var oldLength = handle.Length;
            handle = increments.EnsureAllocation(ref offsetLength, handle.Length + 1);
            handle.Array[handle.Offset + oldLength] = new CollectionTraceWithAggregationIncrement<S>(timeIndex);

            return handle;
        }

        public void IntroduceFrom(ref int thisKeyIndex, ref int thatKeyIndex, bool delete = true)
        {
            var ol1 = new OffsetLength(thisKeyIndex);
            var ol2 = new OffsetLength(thatKeyIndex);

            if (!ol2.IsEmpty)
            {
                Introduce(ref ol1, ol2, 1);

                thisKeyIndex = ol1.offsetLength;

                if (delete)
                    ZeroState(ref thatKeyIndex);

                ReleaseCache();
            }
        }

        public void SubtractStrictlyPriorDifferences(ref int keyIndex, int timeIndex)
        {
            var ol = new OffsetLength(keyIndex);

            // if there aren't any strictly prior differences we can just return
            if (ol.IsEmpty)
                return;

            var handle = EnsureTime(ref ol, timeIndex);
            var position = 0;
            while (handle.Array[handle.Offset + position].TimeIndex != timeIndex)
                position++;

            // if the destination time is empty, we can swap in the accumulation (negated)
            if (!handle.Array[handle.Offset + position].IsEmpty(isZero))
            {
                // swap the accumulation in, and zero out the accumulation (the new correct accumulation for this key).
                var accum = UpdateAccumulation(ref ol, timeIndex);
                handle.Array[handle.Offset + position] = new CollectionTraceWithAggregationIncrement<S>(timeIndex).Add(accum, axpy);

                // we may have ended up with a null acculumation, must clean up
                if (handle.Array[handle.Offset + position].Weight == 0)
                {
                    for (int i = position + 1; i < handle.Length; i++)
                        handle.Array[handle.Offset + i - 1] = handle.Array[handle.Offset + i];

                    handle.Array[handle.Offset + handle.Length - 1] = new CollectionTraceWithAggregationIncrement<S>();
                    if (handle.Array[handle.Offset].Weight == 0)
                        increments.Release(ref ol);
                }

                // important to update the cached accumulation to reflect the emptiness
                // only do this if the cached accumulation is what we are working with
                if (cachedIncrementOffset.offsetLength == ol.offsetLength)
                {
                    cachedIncrementOffset = ol;
                    cacheContents = new CollectionTraceWithAggregationIncrement<S>(timeIndex);
                }
            }
            else
                throw new Exception("Attemping subtraction from non-empty time; something wrong in Operator logic");

            keyIndex = ol.offsetLength;
        }

        public void EnumerateCollectionAt(int offsetLength, int timeIndex, NaiadList<Weighted<S>> toFill)
        {
            if (toFill.Count == 0)
            {
                var temp = new OffsetLength(offsetLength);
                var accum = UpdateAccumulation(ref temp, timeIndex);

                if (!accum.IsEmpty(isZero))
                    toFill.Add(new Weighted<S>(accum.Value, 1));
            }
            else
                throw new NotImplementedException();
        }

        // no caching at the moment; should do, but need to figure out how...
        CollectionTraceWithAggregationIncrement<S> UpdateAccumulation(ref OffsetLength ol, int timeIndex)
        {
#if true
            if (ol.IsEmpty)
                return new CollectionTraceWithAggregationIncrement<S>(timeIndex);

            var handle = increments.Dereference(ol);

            // special-case single element accumulations to avoid unprocessed accumulation dropping processed accumulation
            if (handle.Length == 1)
            {
                if (TimeLessThan(handle.Array[handle.Offset].TimeIndex, timeIndex))
                    return handle.Array[handle.Offset];
                else
                    return new CollectionTraceWithAggregationIncrement<S>(timeIndex);
            }

            else
#else
            var handle = increments.Dereference(ol);
#endif
            {
                // if we have a hit on the cache ...
                if (ol.offsetLength == cachedIncrementOffset.offsetLength)
                {
                    for (int i = 0; i < handle.Length && !handle.Array[handle.Offset + i].IsEmpty(isZero); i++)
                    {
                        if (!handle.Array[handle.Offset + i].IsEmpty(isZero))
                        {
                            var inNew = TimeLessThan(handle.Array[handle.Offset + i].TimeIndex, timeIndex);
                            var inOld = TimeLessThan(handle.Array[handle.Offset + i].TimeIndex, cacheContents.TimeIndex);

                            if (inOld != inNew)
                                cacheContents.Add(handle.Array[handle.Offset + i], axpy, inOld ? -1 : +1);
                        }
                    }

                    cacheContents.TimeIndex = timeIndex;
                }
                else
                {
                    ReleaseCache(); // blow cache away and start over

                    for (int i = 0; i < handle.Length && !handle.Array[handle.Offset + i].IsEmpty(isZero); i++)
                        if (TimeLessThan(handle.Array[handle.Offset + i].TimeIndex, timeIndex))
                            cacheContents.Add(handle.Array[handle.Offset + i], axpy);

                    cachedIncrementOffset = ol;
                    cacheContents.TimeIndex = timeIndex;
                }

                return cacheContents;
            }
        }

        public void EnumerateDifferenceAt(int offsetLength, int timeIndex, NaiadList<Weighted<S>> toFill)
        {
            if (toFill.Count == 0)
            {
                var temp = new OffsetLength(offsetLength);

                var accum = new CollectionTraceWithAggregationIncrement<S>();

                var handle = increments.Dereference(temp);
                for (int i = 0; i < handle.Length && !handle.Array[handle.Offset + i].IsEmpty(isZero); i++)
                    if (handle.Array[handle.Offset + i].TimeIndex == timeIndex)
                        accum.Add(handle.Array[handle.Offset + i], axpy);

                if (!accum.IsEmpty(isZero))
                    toFill.Add(new Weighted<S>(accum.Value, 1));
            }
            else
                throw new NotImplementedException();
        }

        HashSet<int> hashSet = new HashSet<int>();
        public void EnumerateTimes(int keyIndex, NaiadList<int> timelist)
        {
            var ol = new OffsetLength(keyIndex);

            if (timelist.Count == 0)
            {
                var handle = increments.Dereference(ol);
                for (int i = 0; i < handle.Length && !handle.Array[handle.Offset + i].IsEmpty(isZero); i++)
                    timelist.Add(handle.Array[handle.Offset + i].TimeIndex);
            }
            else
            {
                hashSet.Clear();
                for (int i = 0; i < timelist.Count; i++)
                    hashSet.Add(timelist.Array[i]);

                var handle = increments.Dereference(ol);
                for (int i = 0; i < handle.Length && !handle.Array[handle.Offset + i].IsEmpty(isZero); i++)
                {
                    var time = handle.Array[handle.Offset + i].TimeIndex;
                    if (!hashSet.Contains(time))
                    {
                        timelist.Add(time);
                        hashSet.Add(time);
                    }
                }
            }
        }

        public int AllocateState() { throw new NotImplementedException(); }

        public void ReleaseState(ref int keyIndex)
        {
            var temp = new OffsetLength(keyIndex);

            if (!temp.IsEmpty)
            {
                increments.Release(ref temp);
                keyIndex = temp.offsetLength;
            }

            ReleaseCache();
        }

        public void ZeroState(ref int keyIndex)
        {
            ReleaseState(ref keyIndex);
        }

        public bool IsZero(ref int keyIndex) { return keyIndex == 0; }

        public void EnsureStateIsCurrentWRTAdvancedTimes(ref int offsetLength)
        {
            var ol = new OffsetLength(offsetLength);

            if (!ol.IsEmpty)
            {
                var handle = increments.Dereference(ol);

                for (int i = 0; i < handle.Length; i++)
                {
                    if (handle.Array[handle.Offset + i].Weight != 0)
                    {
                        handle.Array[handle.Offset + i].TimeIndex = UpdateTime(handle.Array[handle.Offset + i].TimeIndex);
                        for (int j = 0; j < i && !handle.Array[handle.Offset + i].IsEmpty(isZero); j++)
                        {
                            if (handle.Array[handle.Offset + j].TimeIndex == handle.Array[handle.Offset + i].TimeIndex)
                            {
                                handle.Array[handle.Offset + j].Add(handle.Array[handle.Offset + i], axpy);
                                handle.Array[handle.Offset + i] = new CollectionTraceWithAggregationIncrement<S>();
                            }
                        }
                    }
                }

                var position = 0;
                for (int i = 0; i < handle.Length; i++)
                    if (!handle.Array[handle.Offset + i].IsEmpty(isZero))
                    {
                        var temp = handle.Array[handle.Offset + i];
                        handle.Array[handle.Offset + i] = new CollectionTraceWithAggregationIncrement<S>();
                        handle.Array[handle.Offset + (position++)] = temp;
                    }

                if (handle.Array[handle.Offset].IsEmpty(isZero))
                    increments.Release(ref ol);

                offsetLength = ol.offsetLength;
            }
        }

        public void Release() { }
        public void Compact() { }

        public void Checkpoint(NaiadWriter writer)
        {
            this.increments.Checkpoint(writer);
        }

        public void Restore(NaiadReader reader)
        {
            this.ReleaseCache();
            this.increments.Restore(reader);
        }

        public bool Stateful { get { return true; } }

        public CollectionTraceWithAggregation(Func<int, int, bool> tCompare, Func<int, int> update, Func<Int64, S, S, S> a, Func<S, bool> isZ)
        {
            TimeLessThan = tCompare;
            UpdateTime = update;

            axpy = a;
            isZero = isZ;

            increments = new VariableLengthHeap<CollectionTraceWithAggregationIncrement<S>>(32);
        }
    }
}