com/masmovil/service/pubsub/PubSubSubscriber.java),
which implements RxJava's `Disposable` interface (although by now
calling `dispose()` produces an infinite loop). In the future, this 
class may also extend RxJava's `Flowable<T>` class.

## Running the tests

In order to run the tests, you need to provide these environment
variables:

* TEST_PUB_SUB_PROJECT_ID: your project Id for tests
* TEST_PUB_SUB_TOPIC_ID: your topic Id for tests
* TEST_PUB_SUB_SUBSCRIPTION_ID: your subscription Id for tests
* GOOGLE_APPLICATION_CREDENTIALS (only when not running in a gcloud
 environment, whether or not you're in test mode): points to your
 json keyOn March 31, President Joe Biden unveiled the United States’ most ambitious infrastructure investment plan in decades, designed to adapt the country to the new technological context and, above all, to meet the challenges it poses. This is a truly historic milestone — still awaiting approval by Congress and the Senate, which is not expected to be easy — because of its parallels with the great infrastructure plans of the 1950s and 1960s, which saw the construction of such iconic pillars of the US economy as the interstate highway system or the space program.
The plan intends to allocate some $2 trillion dollars to build a new economic approach that completely breaks with the policies of the last 40 years, based on tax cuts, deregulation, cuts in social benefits and strong control of monetary policy, and instead will see huge investment aimed at completely modernizing the country, based on a much wider understanding of the term and that includes the human infrastructure necessary to carry out these changes.
The new paradigm, dubbed Bidenomics, includes everything from classic infrastructure such as roads, airports, trains, public transport or electric vehicles, along with water supply, connectivity, electricity networks, renovation and construction of sustainable housing and education, to care for the elderly and the disabled, as well as research and development or retraining the workforce.
A central part of the plan includes the transition to clean energy and the progressive abandonment of fossil fuels over the next 15 years, setting ambitious targets that will require electricity utilities to meet very specific targets for wind and solar power, which will increase over time, to reach an energy mix based entirely on renewables by 2035, in what would be the largest federal intervention in the electricity sector in recent generations.
In addition, the plan means removing polluting vehicles from the roads by setting emissions targets so low that very few vehicles with internal combustion engines will be able to meet them, which would see them steadily withdrawn from circulation each year. Together with the progressive reduction of emissions from energy production and possible plans to capture carbon dioxide from the atmosphere, Biden wants the United States to be among world leaders in reducing its emissions, as well as technologies such as batteries, clean energy or electric vehicles.
The plan is also intended to condemn to oblivion all the outdated myths about changing the energy paradigm: change is not only possible, it is essential. Electric vehicles have long been a solution that allows for widespread use even when traveling on the basis of an adequate recharging network, and the modernization of generation infrastructures can be carried out without compromising supply when weather conditions change (although detractors tried to build a false narrative around the recent supply problems in Texas, which had nothing to do with renewables and could be repeated in other states).
We are talking about a huge change for a country that decidedly needs to update infrastructure built at a time before concerns about climate change. The funding of the ambitious proposal will be carried out by increasing corporate tax, partially rolling back Donald Trump’s tax cuts that took rates down to 21% from 35% in 2017 and placing the general rate at 28%, a change that a company like Amazon, usually singled out for its tax policies, has supported. In addition, inheritance taxes will be raised, and the level of debt, which many consider worrying, will also rise. But as we know, it is not the level of debt that is worrying, but what countries are able to obtain in exchange for that debt.
In practice, this is technical debt applied to a country to address the unbearable cost of not responding in terms of infrastructure to the huge changes that have taken place in recent decades. The ambitious plan has yet to win the approval of Congress and the Senate, which will mean not just convincing a few Republicans, but also many doubting Democrats. It won’t be easy.
The good news is that we have a US president who understands the priorities, who is not an ignoramus who confuses weather with climate, and who is prepared to step up to meet the challenge. As Michael Regan, the new administrator of the US Environmental Protection Agency, rightly says, “science is back.” Let’s hope that common sense returns as well.
Are Carbon Offsets a ‘Get Out of Jail Free’ Card?
The OpenDXL and McAfee Active Response (MAR) DXL modules have been added to the Node-RED palette.
A MAR DXL service is running and available on the DXL fabric.
The Node-RED DXL client is authorized to perform MAR search (see Authorize Client to Perform MAR Search).
"info": "This sample executes a `McAfee Active Response` search for the IP addresses of\r\nhosts that have an Active Response client installed. The IP addresses found are\r\ndisplayed on the Node-RED `debug` tab.\r\n\r\n### Prerequisites\r\n\r\n* The samples configuration step has been completed (see\r\n [Client Configuration](https://opendxl.github.io/node-red-contrib-dxl/jsdoc/tutorial-configuration.html)).\r\n* A McAfee Active Response (MAR) service is available on the DXL fabric.\r\n* The DXL client associated with the\r\n`Search MAR for hosts` node has been authorized to perform MAR searches\r\n (see [Authorize Client to Perform MAR Search](https://opendxl.github.io/opendxl-client-python/pydoc/marsendauth.html)).\r\n\r\n### Setup\r\n\r\nTo deploy the flow, press the `Deploy` button in the upper-right corner of the\r\n screen. If Node-RED is able to properly connect to the DXL fabric, a green dot\r\n with the word `connected` should appear under the `Search MAR for hosts` node.\r\n\r\n### Running\r\n\r\nTo exercise the flow, double-click the button on the left side of the\r\n`Specify search projections` node.\r\n\r\n### Output\r\n\r\nThe IP addresses found should appear in the Node-RED `debug` tab. For example:\r\n\r\n~~~\r\n[ \" |||IP_ADDRESS||| \", \" |||IP_ADDRESS||| \"]\r\n~~~\r\n\r\n### Details\r\n\r\nThe flow exercises the nodes below.\r\n\r\n#### Specify search projections\r\n\r\nThis is an `inject` input node which starts the flow. This node injects a new\r\nmessage with a `payload` property which specifies that the IP addresses of\r\nhosts which are found should be projected into the search results:\r\n\r\n```json\r\n[\r\n {\r\n \"name\": \"HostInfo\",\r\n \"outputs\": [\r\n \"ip_address\"\r\n ]\r\n }\r\n]\r\n```\r\n\r\n#### Set projections request parameter\r\n\r\nThis is a `change` node which copies the value from the `payload` property on\r\nthe message to the `projections` property. The `Search MAR for hosts` node uses\r\nthe `projections` property when constructing the parameters for the MAR search. \r\n\r\n#### Search MAR for hosts\r\n\r\nThis is a `mar search` node. This node connects to the DXL fabric and sends a\r\nsearch request to the MAR service using the `msg.projections` property set by\r\nthe `Set projections request parameter` node.\r\n\r\nThe `Limit` property specifies that up to the first \"10\" result items should be\r\nprovided.\r\n\r\nThe `Return` property is set to \"a parsed JSON object\" to indicate that the\r\n`payload` for the response should be added to the output message as a JavaScript\r\nobject decoded from JSON.\r\n\r\n#### Extract host IP addresses\r\n\r\nThis is a `function` node. This node includes a JavaScript code snippet which\r\niterates over the search result items that were set on the `msg.payload`\r\nproperty by the `Search MAR for hosts` node. The source code for the code\r\nsnippet is included below:\r\n\r\n```javascript\r\nmsg.payload = \r\n msg.payload.map(function (processEntry) {\