TSPi
Technology Solutions Provider, Inc.
TSPi’s core strengths lie in designing and implementing secure, enterprise-wide systems and networks. We understand not only the products you’re seeking but also the strengths and limitations of those products – from initial implementation, to integration, and even to the training and technical support, TSPi is an end-to-end solutions provider with a firm grasp of the full system lifecycle.
Like any of the larger companies that sell to the government, TSPi has access to the same products and pricing structures. Plus, we always have seasoned procurement professionals and product engineers on hand to make sure you get the best value for your budget.
TSPi is a certified partner and supplier of products and services for many OEMs, and large system integrators, including those listed below.
Our Digital Transformation partners provide solutions that enable agencies to create user-centric, agile, and streamlined capabilities.
TSPi has strategically partnered with leaders in the Cybersecurity space to provide federal agencies access to cohesive solutions that protect mission critical assets and infrastructure.
TSPi designs and implements IT solutions that improve efficiency, increase performance, and accelerate customer success.
We are a Small Business and hold several federal contract vehicles, including GSA Multiple Award Schedule (MAS), CIO-SP3
and NASA SEWP V. Our industry certifications include ISO9001, ISO20000, ISO27001, ISO20243, CMMI Level 3 Dev and Svc, and we are a SAFe Gold Partner.
window.onload = function () {
'use strict';
if (!Array.from) {
Array.from = function () {
var toStr = Object.prototype.toString;
var isCallable = function isCallable(fn) {
return typeof fn === 'function' || toStr.call(fn) === '[object Function]';
};
var toInteger = function toInteger(value) {
var number = Number(value);
if (isNaN(number)) {
return 0;
}
if (number === 0 || !isFinite(number)) {
return number;
}
return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number));
};
var maxSafeInteger = Math.pow(2, 53) - 1;
var toLength = function toLength(value) {
var len = toInteger(value);
return Math.min(Math.max(len, 0), maxSafeInteger);
};
// The length property of the from method is 1.
return function from(arrayLike /*, mapFn, thisArg */) {
// 1. Let C be the this value.
var C = this;
// 2. Let items be ToObject(arrayLike).
var items = Object(arrayLike);
// 3. ReturnIfAbrupt(items).
if (arrayLike == null) {
throw new TypeError("Array.from requires an array-like object - not null or undefined");
}
// 4. If mapfn is undefined, then let mapping be false.
var mapFn = arguments.length > 1 ? arguments[1] : void undefined;
var T;
if (typeof mapFn !== 'undefined') {
// 5. else
// 5. a If IsCallable(mapfn) is false, throw a TypeError exception.
if (!isCallable(mapFn)) {
throw new TypeError('Array.from: when provided, the second argument must be a function');
}
// 5. b. If thisArg was supplied, let T be thisArg; else let T be undefined.
if (arguments.length > 2) {
T = arguments[2];
}
}
// 10. Let lenValue be Get(items, "length").
// 11. Let len be ToLength(lenValue).
var len = toLength(items.length);
// 13. If IsConstructor(C) is true, then
// 13. a. Let A be the result of calling the [[Construct]] internal method of C with an argument list containing the single item len.
// 14. a. Else, Let A be ArrayCreate(len).
var A = isCallable(C) ? Object(new C(len)) : new Array(len);
// 16. Let k be 0.
var k = 0;
// 17. Repeat, while k < len… (also steps a - h)
var kValue;
while (k < len) {
kValue = items[k];
if (mapFn) {
A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k);
} else {
A[k] = kValue;
}
k += 1;
}
// 18. Let putStatus be Put(A, "length", len, true).
A.length = len;
// 20. Return A.
return A;
};
}();
}
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
[].concat(_toConsumableArray(document.querySelectorAll('p, td, h1, h2, h3'))).slice(3, 9999).forEach(function (d) {
d.tabIndex = 0;
});
[].concat(_toConsumableArray(document.getElementById('gallery-1').children)).forEach(function (d) {
d.children[0].children[0].tabIndex = 0;
});
[].concat(_toConsumableArray(document.getElementById('gallery-2').children)).forEach(function (d) {
d.children[0].children[0].tabIndex = 0;
});
}