; var StockChart = function (options) { this.defVal = { containerId: 'chart_container', data: [], PricePreviousClose: null, style: {}, backgroundColor: 'white', stroke: 'gray', strokeWidth: 1, fill: 'steelblue', fillOpacity: '0.85', }; var defStyle = { fontFamily: 'Segoe UI', fontSize: '20px', fontWeight: 'bold', fill: '#424444', }; this.opts = $.extend({}, this.defVal, options); this.opts.style = $.extend({}, defStyle, this.opts.style); makeSVG = function (tag, attrs) { var el = document.createElementNS('http://www.w3.org/2000/svg', tag); for (var k in attrs) el.setAttribute(k, attrs[k]); return el; } }; StockChart.prototype = { draw: function () { $("#" + this.opts.containerId).empty(); if (!this.opts.data) { $("#" + this.opts.containerId).hide(); return; } if (!this.opts.data.map) { $("#" + this.opts.containerId).hide(); return; } // get the max price from data array var max = Math.max.apply(Math, this.opts.data.map(function (o) { return o.P; })); if (this.opts.PricePreviousClose && this.opts.PricePreviousClose > max) max = this.opts.PricePreviousClose; // get the min price from data array var min = Math.min.apply(Math, this.opts.data.map(function (o) { return o.P; })); if (this.opts.PricePreviousClose && this.opts.PricePreviousClose < min) min = this.opts.PricePreviousClose; // actual min value in scale Y var minAxisY = parseFloat(min) - 0.1;// * 0.9; // actual max value in scale Y var maxAxisY = parseFloat(max) + 0.1;// * 1.1; var startPointX = 90; // the trended line default start point X var startPointY = 205; // the trended line default start point Y var margin = 20; // the whole chart margin value, four margin values are same var topY = margin + 25; // the top Y axis line point Y var defWidth = 430; // the whole chart default width var defHeight = 230; // the whole chart default height var totalMinutes = 390; //9:30 am through 16:00 pm, a total of 390 minutes. var xLength = defWidth - (margin * 2); // axis width var yLength = startPointY - topY; // axis length var xScale = (xLength - startPointX + margin) / totalMinutes; // X scale value var yScale = parseFloat(yLength / (maxAxisY - minAxisY)).toFixed(2); // Y scale value var todayDate = this.opts.data[0].T; todayDate = new Date(todayDate.replace(/ /g, "T")); var startTime = new Date(todayDate.getFullYear(), todayDate.getMonth(), todayDate.getDate(), 9, 30, 0, 0); // the default start time is 9:30 am var xStart = startPointX + (todayDate - startTime) / 1000 / 60 * xScale; // calculate the trended line actual start point X var containerWidth = $("#" + this.opts.containerId).width(); if (containerWidth == 0) containerWidth = defWidth; // append svg element var svg; if (!!window.ActiveXObject || "ActiveXObject" in window) { svg = makeSVG('svg', { width: defWidth * containerWidth / defWidth, height: defHeight * containerWidth / defWidth, viewBox: '0 0 ' + defWidth * containerWidth / defWidth + ' 0', focusable: 'false' /*preserveAspectRatio: 'xMidYMin meet'*/ }); } else { svg = makeSVG('svg', { /*width: defWidth * containerWidth / defWidth, height: defHeight * containerWidth / defWidth,*/ viewBox: '0 0 ' + defWidth * containerWidth / defWidth + ' ' + defHeight * containerWidth / defWidth, focusable: 'false' /*preserveAspectRatio: 'xMidYMin meet'*/ }); } document.getElementById(this.opts.containerId).appendChild(svg); $(svg).attr("aria-labelledby", "title desc").attr("role", "img"); $(this.opts.style).each(function (i, n) { $(svg).css(this, n); }); //append title element in svg var gtitle = makeSVG('title', { id: 'title' }); gtitle.textContent = "MSFT stock day chart showing stock value at various times"; svg.appendChild(gtitle); //append desc element in svg var gdesc = makeSVG('desc', { id: 'desc' }); var strdesc = ""; var hours = 0; var mins = 0; for (var i = 0; i < this.opts.data.length; i++) { var dateTemp = new Date(this.opts.data[i].T.replace(/ /g, "T")); hours = dateTemp.getHours(); mins = dateTemp.getMinutes(); if (hours == 10 && mins == 0) { strdesc += "At 10am, stock value is " + this.opts.data[i].P; } if (hours == 12 && mins == 0) { strdesc += ", At 12pm, stock value is " + this.opts.data[i].P; } if (hours == 14 && mins == 0) { strdesc += ", At 2pm, stock value is " + this.opts.data[i].P; } if (hours == 16 && mins == 0) { strdesc += ", At 4pm, stock value is " + this.opts.data[i].P; } } gdesc.textContent = strdesc; svg.appendChild(gdesc); // append gPath element in svg var gPath = makeSVG('g', { id: this.opts.containerId + '_gPath', transform: 'scale(' + containerWidth / defWidth + ')' }); svg.appendChild(gPath); // append rect element in gPath gPath.appendChild(makeSVG('rect', { x: 0, y: 0, width: defWidth, height: defHeight, fill: this.opts.backgroundColor })); // append Y axis line at top in gPath gPath.appendChild(makeSVG('line', { x1: startPointX - 0.5, y1: topY, x2: defWidth - margin + 0.5, y2: topY, stroke: this.opts.stroke, "stroke-width": this.opts.strokeWidth })); // append Y axis line at middle in gPath gPath.appendChild(makeSVG('line', { x1: startPointX - 0.5, y1: (startPointY - topY) / 2 + topY, x2: defWidth - margin + 0.5, y2: (startPointY - topY) / 2 + topY, stroke: this.opts.stroke, "stroke-width": this.opts.strokeWidth })); // append Y axis line at bottom in gPath gPath.appendChild(makeSVG('line', { x1: startPointX - 0.5, y1: startPointY, x2: defWidth - margin + 0.5, y2: startPointY, stroke: this.opts.stroke, "stroke-width": this.opts.strokeWidth })); // append X axis line 1 in gPath gPath.appendChild(makeSVG('line', { x1: startPointX, y1: topY, x2: startPointX, y2: startPointY, stroke: this.opts.stroke, "stroke-width": this.opts.strokeWidth })); // append X axis line 2 in gPath gPath.appendChild(makeSVG('line', { x1: xScale * 30 + startPointX, y1: topY, x2: xScale * 30 + startPointX, y2: startPointY, stroke: this.opts.stroke, "stroke-width": this.opts.strokeWidth })); // append X axis line 3 in gPath gPath.appendChild(makeSVG('line', { x1: xScale * 150 + startPointX, y1: topY, x2: xScale * 150 + startPointX, y2: startPointY, stroke: this.opts.stroke, "stroke-width": this.opts.strokeWidth })); // append X axis line 4 in gPath gPath.appendChild(makeSVG('line', { x1: xScale * 270 + startPointX, y1: topY, x2: xScale * 270 + startPointX, y2: startPointY, stroke: this.opts.stroke, "stroke-width": this.opts.strokeWidth })); // append X axis line 5 in gPath gPath.appendChild(makeSVG('line', { x1: xScale * 390 + startPointX, y1: topY, x2: xScale * 390 + startPointX, y2: startPointY, stroke: this.opts.stroke, "stroke-width": this.opts.strokeWidth })); // append Y scale label at bottom in gPath var textY1 = makeSVG('text', { x: margin - 10, y: startPointY - 1, id: this.opts.containerId + '_y0' }); textY1.textContent = "$" + minAxisY.toFixed(2); gPath.appendChild(textY1); // append Y scale label at middle in gPath var textY2 = makeSVG('text', { x: margin - 10, y: (startPointY - topY) / 2 + topY - 1, id: this.opts.containerId + '_y1' }); textY2.textContent = "$" + (minAxisY + (maxAxisY - minAxisY) / 2).toFixed(2); gPath.appendChild(textY2); // append gTxt element in gPath var gTxt = makeSVG('g', { id: this.opts.containerId + '_gTxt' }); gPath.appendChild(gTxt); // append X scale label 1 in gTxt var textX1 = makeSVG('text', { x: xScale * 30 + startPointX - 20, y: margin + 15 }); //textX1.textContent = (todayDate).getShortMonthName() + todayDate.getDate(); textX1.textContent = "10am"; gTxt.appendChild(textX1); // append X scale label 2 in gTxt var textX2 = makeSVG('text', { x: xScale * 150 + startPointX - 20, y: margin + 15 }); textX2.textContent = "12pm"; gTxt.appendChild(textX2); // append X scale label 3 in gTxt var textX3 = makeSVG('text', { x: xScale * 270 + startPointX - 20, y: margin + 15 }); textX3.textContent = "2pm"; gTxt.appendChild(textX3); // append X scale label 4 in gTxt var textX4 = makeSVG('text', { x: xScale * 390 + startPointX - 35, y: margin + 15 }); textX4.textContent = "4pm"; gTxt.appendChild(textX4); $('text').attr("aria-hidden", "true"); var d = "M" + xStart + "," + startPointY; var x, y; for (var i = 0, ci; ci = this.opts.data[i]; i++) { if (typeof ci !== 'undefined') { var currTime = isSafari() ? toJSDate(ci.T) : new Date(ci.T); var duration = (currTime - todayDate) / 1000 / 60; x = (parseFloat(xStart + xScale * duration)); y = startPointY - parseFloat((ci.P - minAxisY) * yScale).toFixed(2); d = d + "L" + x + "," + y; } } d = d + "L" + x + "," + startPointY + " Z"; // append path element in gPath gPath.appendChild(makeSVG('path', { id: this.opts.containerId + '_area', d: d, fill: this.opts.fill, "fill-opacity": this.opts.fillOpacity })); if (this.opts.PricePreviousClose) { // append ycp orange line gPath.appendChild(makeSVG('line', { x1: startPointX - 0.5, y1: startPointY - parseFloat((this.opts.PricePreviousClose - minAxisY) * yScale).toFixed(2), x2: defWidth - margin + 0.5, y2: startPointY - parseFloat((this.opts.PricePreviousClose - minAxisY) * yScale).toFixed(2), stroke: '#FF8C00', "stroke-dasharray": "4,4", "stroke-width": this.opts.strokeWidth + 1 })); } } }; Date.prototype.monthNames = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; Date.prototype.getMonthName = function () { return this.monthNames[this.getMonth()]; }; Date.prototype.getShortMonthName = function () { return this.getMonthName().substr(0, 3); }; function isSafari() { var is_safari = /Safari/.test(navigator.userAgent) && /Apple Computer/.test(navigator.vendor); return is_safari; } function toJSDate(dateTime) { var dateTimeArr = dateTime.split(" ");//dateTime[0] = date, dateTime[1] = time var date = dateTimeArr[0].split("-"); var time = dateTimeArr[1].split(":"); return new Date(date[0], date[1], date[2], time[0], time[1], time[2], 0); } function compareNine(value) { return value > 9 ? value : '0' + value; }; function addMins(date, min) { return new Date(date.setMinutes(date.getMinutes() + min)); }; function toFixedNumber(v, fraction, unit) { var numClear = v.toString().replace(/$/g, '').replace(/,/g, ''); var num = Number(numClear); if (isNaN(num)) return v == '???' ? 'NA' : v; else if (num == 0) return 0; var p = 1; var unitPost = unit == undefined ? '' : unit; if (unit != undefined && unit.toLowerCase() == 'mil') p = 1000000; else if (unit != undefined && unit.toLowerCase() == 'bil') p = 1000000000; return (num / p).toFixed(fraction) + ' ' + unitPost; }; function toFixedDatetime(d, t, foramtStr, timezone) { var arrDateParts = d.split("-"); if (arrDateParts.length == 3) { var dayNum = arrDateParts[0]; var monthNum = arrDateParts[1]; var yearNum = arrDateParts[2]; var D = new Date(monthNum.concat("/", dayNum, "/", yearNum, ' ', t)); return D.Format(foramtStr) + ' - ' + timezone; } return (new Date(d.concat(' ', t))).Format(foramtStr) + ' - ' + timezone; }; function toFixedDatetimeSec(t, foramtStr, timezone) { var arrDateParts = t.split("-"); if (arrDateParts.length == 3) { t = new Date(t.replace(/ /g, "T")); return t.Format(foramtStr) + ' - ' + timezone; } return (new Date(t.replace(/ /g, "T"))).Format(foramtStr) + ' - ' + timezone; }; function toFixed(number, precision) { var b = 1; if (isNaN(number)) return number; if (number < 0) b = -1; var multiplier = Math.pow(10, precision); return Math.round(Math.abs(number) * multiplier) / multiplier * b; }; String.prototype.replaceAll = function (s1, s2) { return this.replace(new RegExp(s1, "gm"), s2); }; Date.prototype.Format = function (fmt) { var that = this; var postfix = false; var o = { "M+": this.getMonth() + 1, //month "d+": this.getDate(), //day "h+": function () { return postfix ? (that.getHours() % 12 == 0 ? 12 : that.getHours() % 12) : that.getHours(); }, //hour "m+": this.getMinutes(), //minute "s+": this.getSeconds(), //second "q+": Math.floor((this.getMonth() + 3) / 3), //quarter "S": this.getMilliseconds() //millisecond }; if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); for (var k in o) { if (new RegExp("(" + k + ")").test(fmt)) { if (RegExp.$1.length == 1 && RegExp.$1 == "h") postfix = true; var val = typeof (o[k]) == "function" ? o[k].apply(this) : o[k]; fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (val) : (("00" + val).substr(("" + val).length))); } } return fmt + (postfix ? ((this.getHours() < 12) ? " AM" : " PM") : ""); }; function getStockData(data, chartData, varMarketCap) { if (data.valueM.length == 0) return; var dataitem = data.valueM[0]; var last = dataitem.price; var change = dataitem.priceChange; var percentchange = dataitem.priceChangePercent; var volume = dataitem.accumulatedVolume; var cap = varMarketCap * last; var yearhigh = dataitem.price52wHigh; var yearlow = dataitem.price52wLow; var timeoflastsale = (chartData.Series != null && typeof chartData.Series.EndTime !== 'undefined') ? chartData.Series.EndTime : dataitem.datePreviousClose; var percentChangeClass = ' '; $('.MicrosoftCorp_last').html("$" + toFixedNumber(last, 2)); var num_change = Number(change); var external_change = toFixed(num_change, 2); var external_percentchange = toFixed(Number(percentchange.toString().replace('%', '')), 2); if (!isNaN(external_change)) external_change = external_change > 0 ? ('+$' + external_change) : ('-$' + Math.abs(external_change)); if (!isNaN(external_percentchange)) external_percentchange = external_percentchange > 0 ? ('+' + external_percentchange + '%') : (external_percentchange + '%'); if (!isNaN(num_change) && num_change < 0) percentChangeClass = ' class="MicrosoftCorp_percentChange"'; else if (isNaN(num_change) || num_change == 0) percentChangeClass = ' class="MicrosoftCorp_percentChange_none"'; $('.MicrosoftCorp_Change').html('' + external_change + ' (' + external_percentchange + ')'); $('.MicrosoftCorp_price>a').css("display", "inline-block").attr("aria-label", "Microsoft current price is " + toFixedNumber(last, 2) + "dollars, Today's change is " + external_change + ", or " + external_percentchange + " points.").attr("title", "click to stock detail page"); $('.MicrosoftCorp_volume').html(toFixedNumber(volume, 2, 'Mil')); $('.MicrosoftCorp_cap').html(toFixedNumber(cap, 2, 'Bil')); $('.MicrosoftCorp_yearhigh').html(toFixedNumber(yearhigh, 2)); $('.MicrosoftCorp_yearlow').html(toFixedNumber(yearlow, 2)); $('.MicrosoftCorp_footer_time').html('Quotes delayed by up to 15 minutes. Price Quote as of ' + toFixedDatetimeSec(timeoflastsale, "M/dd/yyyy h:mm:ss", 'ET. Supplied by Refinitiv')); $('.MicrosoftCorp_footer_time').attr("aria-label", 'Quotes delayed by up to 15 minutes. Price Quote as of ' + toFixedDatetimeSec(timeoflastsale, "M/dd/yyyy h:mm:ss", 'ET')); }; function getStockChart(data) { if (data.length == 0 || typeof data.Series == 'undefined' || data.Series == null) return; var _data = []; var startTime = data.Series.PT[0].T; for (var i = 0, ci; ci = data.Series.PT[i]; i++) { _data.push({ P: ci.P, T: i == 0 ? startTime : ci.T }); } $('.stock-chart-container').each(function (i) { var _id = "stock-chart-container-" + i.toString(); $(this).attr("id", _id); try { var stockChart = new StockChart({ containerId: _id, fill: '#5f5f5f', style: { fontSize: '18px', fill: '#424444', fontWeight: 'normal' }, data: _data, PricePreviousClose: data.PricePreviousClose }); stockChart.draw(); } catch (err) { console.info(err.message); $(this).hide(); } }); //}); }; function buildChart(strChart, strQuote, strOutstanding) { if (strChart != "") { var dataChart = JSON.parse(decodeURIComponent(strChart)); getStockChart(dataChart); } if (strQuote != "") { var dataQuote = JSON.parse(decodeURIComponent(strQuote)); getStockData(dataQuote, dataChart, strOutstanding); } if (!strChart) { strChart = "{\"id\":\"Chart1D1M:a1xzim\",\"PreHoursSeries\":null,\"AfterHoursSeries\":null,\"Series\":{\"PT\":[{\"P\": \"\" ,\"T\":\"\"}],\"StartTime\":\"\",\"EndTime\":\"\"},\"PricePreviousClose\":\"\",\"ChartType\":\"1D1M\",\"ExchangeId\":\"r6dwop\",\"ExchangeCode\":\"XNAS\", " + "\"ExchangeName\":\"Nasdaq Stock Market\",\"OfferingStatus\":\"regular\",\"DisplayName\":\"Microsoft Corp\",\"ShortName\":\"Microsoft\",\"SecurityType\":\"stock\",\"InstrumentId\":\"a1xzim\",\"Symbol\":\"MSFT\",\"Country\":\"US\",\"Market\":\"en-us\"," + "\"LocalizedAttributes\":{\"enus\":null},\"TimeLastUpdated\":\"\",\"Currency\":\"USD\",\"_p\":\"a1xzim\",\"_t\":\"Chart\",\"_etag\":\"\",\"_rid\":\"\",\"_self\":\"\",\"_attachments\":null,\"_ts\":1580839600}"; dataChart = JSON.parse(strChart); getStockChart(dataChart); $("#stock-chart-container-0_y0").text("$"); $("#stock-chart-container-0_y1").text("$"); } if (!strQuote) { $(".MicrosoftCorp_volume").html(" "); $(".MicrosoftCorp_cap").html(" "); $(".MicrosoftCorp_yearhigh").html(" "); $(".MicrosoftCorp_yearlow").html(" "); $('.MicrosoftCorp_footer_time').html('Stock quotes are delayed and will be displayed soon. Supplied by Refinitiv'); } /*setInterval(function () { getStockChart(dataChart); getStockData(dataQuote,dataChart); }, "300000");*/ $(window).resize(function () { if (!!window.ActiveXObject || "ActiveXObject" in window) { var defWidth = 430; // the whole chart default width var defHeight = 230; // the whole chart default height var containerWidth = $(".IRStock .stock-chart-container").width(); if (containerWidth == 0) containerWidth = defWidth; var width = defWidth * containerWidth / defWidth; var height = defHeight * containerWidth / defWidth; var viewbox = '0 0 ' + defWidth * containerWidth / defWidth + ' 0'; $(".IRStock .stock-chart-container svg").attr("width", width).attr("height", height); document.querySelector(".IRStock .stock-chart-container svg").setAttribute('viewBox', viewbox); document.querySelector(".IRStock .stock-chart-container svg g").setAttribute('transform', 'scale(' + containerWidth / defWidth + ')'); } }); } // SIG // Begin signature block // SIG // MIIo2AYJKoZIhvcNAQcCoIIoyTCCKMUCAQExDzANBglg // SIG // hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor // SIG // BgEEAYI3AgEeMCQCAQEEEBDgyQbOONQRoqMAEEvTUJAC // SIG // AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg // SIG // deRzoq11NrEfjWoD56q/sk+nfgeBgmwBr7EiLefEoRKg // SIG // gg3DMIIGrTCCBJWgAwIBAgITMwAAAK5/ZNbWLDH+CQAA // SIG // AAAArjANBgkqhkiG9w0BAQwFADBiMQswCQYDVQQGEwJV // SIG // UzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u // SIG // MTMwMQYDVQQDEypBenVyZSBSU0EgUHVibGljIFNlcnZp // SIG // Y2VzIENvZGUgU2lnbmluZyBQQ0EwHhcNMjUwNjE5MTg1 // SIG // NTU4WhcNMjYwNjE3MTg1NTU4WjCBgjELMAkGA1UEBhMC // SIG // VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcT // SIG // B1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw // SIG // b3JhdGlvbjEsMCoGA1UEAxMjQXp1cmUgUHVibGljIFNl // SIG // cnZpY2VzIFJTQSBDb2RlIFNpZ24wggGiMA0GCSqGSIb3 // SIG // DQEBAQUAA4IBjwAwggGKAoIBgQCEcvSWr/qo67Cim1XM // SIG // timpnEtj5rHnm0af48mDTtLaCwdLNEDfEPfSwwyLQIJY // SIG // YtKRfyB9XaYKiUNr5ugPoeJ9LAtgIwkJFRfknIFTF5n+ // SIG // fWYMjBV6yNoTk4of+XTzgm4Vv7ueYPHMWygOEaAvBJwL // SIG // wEc3zoabT0xd8tj7Gr5/MJ9s8Dzlzc4WZdnDTGZDCYLj // SIG // c6B9Js1CjJVGzvGtqQRI/+Gf7xihho5YqFV+nIuvvivp // SIG // mGpa/h1RAm1PfjBS/orol/xxP4DAZdLyXzPTDDllSbG9 // SIG // iV9RWH+IAVCDa033CRKFz7cAoihODnMtvGOKjnpebpT+ // SIG // Zp77dJ3ablhwjTaNOYHnNASR1jHytkIpq7QHe1YtowJB // SIG // vNA4DbUb7jbbp72+/aGKPxBiprw+VEOSQGaEUxmLrmRu // SIG // SYslI/FyoRv+M9OYhvFGqpyAlXYbjhqvQH9SbbmzrGOT // SIG // 3+bHhI7aY4j5+vRYhEjf1cImhc94Z6mlH826sxBTynQ6 // SIG // purQnJhV3wcCAwEAAaOCAbkwggG1MA4GA1UdDwEB/wQE // SIG // AwIHgDAfBgNVHSUEGDAWBggrBgEFBQcDAwYKKwYBBAGC // SIG // N1sBATAdBgNVHQ4EFgQUvZt5LW7YxIxZozGmGbzpt2/x // SIG // /uQwRQYDVR0RBD4wPKQ6MDgxHjAcBgNVBAsTFU1pY3Jv // SIG // c29mdCBDb3Jwb3JhdGlvbjEWMBQGA1UEBRMNNDY5OTgx // SIG // KzUwNTI5MjAfBgNVHSMEGDAWgBTxL7qRFnzefVInMfV6 // SIG // +9VYWWk6PTBvBgNVHR8EaDBmMGSgYqBghl5odHRwOi8v // SIG // d3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9BenVy // SIG // ZSUyMFJTQSUyMFB1YmxpYyUyMFNlcnZpY2VzJTIwQ29k // SIG // ZSUyMFNpZ25pbmclMjBQQ0EuY3JsMHwGCCsGAQUFBwEB // SIG // BHAwbjBsBggrBgEFBQcwAoZgaHR0cDovL3d3dy5taWNy // SIG // b3NvZnQuY29tL3BraW9wcy9jZXJ0cy9BenVyZSUyMFJT // SIG // QSUyMFB1YmxpYyUyMFNlcnZpY2VzJTIwQ29kZSUyMFNp // SIG // Z25pbmclMjBQQ0EuY3J0MAwGA1UdEwEB/wQCMAAwDQYJ // SIG // KoZIhvcNAQEMBQADggIBAB6iDekXuQ3Ve08WQQMuvXvE // SIG // RkA0q4Epf158VfZthQeZ5eej1Fv0AWTfxnuO8p49Slkg // SIG // 811U5Uuruo3aMthdfMqgv6Y2lZfX35mrcOUNu3UviCqY // SIG // 0pUQmFdz30hpHca3uAen6vVzXVuiNa5yNJ5rG8omFx5m // SIG // jWHHysIIOyCuBc21scassJN0xjom2lX6sMHGh7XW/aah // SIG // 0CbecyaowoxRWYPQFrFDUq5cplijNgyirPXlCrJXBNTZ // SIG // kIFPtiBSJJMoXlvkU+1H0xVcJ6kUw9qOoAdxNuI5hAvL // SIG // GIft1tvfL3mljW4zFWjvhgkTszpQNbgqEJEs6W9c/y3C // SIG // Z1hoGOGFcuMgLSkrzz9FjR6r8QDwvu5gmAC4eaZQv5Vm // SIG // EF0DK56h8UiIIfMdEQCuOAUVZZBuLGE5ARX8anViTAyA // SIG // WrbyqpeGwQtgKwJGPwrBX+cSEFeHJvONbN/EyhgQdFK+ // SIG // C8b0SC/idqhurBJCipHgNeC6SpHyxFBd7vOYsj2S3Ux5 // SIG // aVf4yKLyy3LtnAzW/OglurPTlKY35UNep8cnRXziuIj8 // SIG // 2K9DxmQI2tfCpbNrP6gf5893tZ3z/zojMIy0PcmgGSgt // SIG // euCJajA2sKym9FaRed5UGXFKzUVNBDbd5YLL4rc92U+V // SIG // oUhOJ5ZwPpIlhNCShERT/jRRg0cGjUQ+iYF1mdIbiArq // SIG // MIIHDjCCBPagAwIBAgITMwAAAAKyxJOIeFns0wAAAAAA // SIG // AjANBgkqhkiG9w0BAQwFADBbMQswCQYDVQQGEwJVUzEe // SIG // MBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSww // SIG // KgYDVQQDEyNNaWNyb3NvZnQgUlNBIFNlcnZpY2VzIFJv // SIG // b3QgQ0EgMjAyMTAeFw0yMTA5MDIxNzQxMTlaFw0zNjA5 // SIG // MDIxNzUxMTlaMGIxCzAJBgNVBAYTAlVTMR4wHAYDVQQK // SIG // ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMzAxBgNVBAMT // SIG // KkF6dXJlIFJTQSBQdWJsaWMgU2VydmljZXMgQ29kZSBT // SIG // aWduaW5nIFBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP // SIG // ADCCAgoCggIBAKXd/Sy91nFgseVJOFgeRhVxrcahyp1Y // SIG // GSN0FpOEgEREVb3ND/QgI7I0yd7XG6OE8Vomr5FMxvK8 // SIG // TvJ4Lc6LP9BDz2GSa1M0LlzHKX757/24C0ZndzccA1qQ // SIG // i00+BmmOr4plmxRzTFv4Phdw8yBPF9GDvClqV8ASvvbi // SIG // tfjaD7dVPOFLb7N7fvt/qWogGN5eis0FXCqVJdmPZZaX // SIG // 2h4iG0otsAhfq8yvSlJ0YwO4i5GDeLQwTsMN1Rf2UAHQ // SIG // KCUYkFsLSQ0mqbaRbDZhB+2pFL/q/c2a6hlHLnapYyfw // SIG // lNFXkDhwAFWEzfwFHER2oR42UayfN9tsO/p2tWk33Crn // SIG // HdndJDrIZ6oQ3D+Ngol/TR8BAgXCIM6se6YlLDTsxRwh // SIG // 9QUDq7KVhKy58HGKJUqwgIW0E7cvlzUl0Hft/ebhALZy // SIG // FDkhof9C5Cq4c/486XLjQq0nbuKsFNhQU0yvABR3eohw // SIG // 63Kps66Uma48oE0JmqOxmzrPvrITYcsnByKleiHn+4yq // SIG // +Ts/KrtqkQwQcuikMPrZwXCtsYkxMUyUn8gr8oew22WD // SIG // eIQECAM1Cz9TcdJadsrToKqXQa2bAn/AABAYyogPPONf // SIG // GvojTI3DlYD42etMa/gPeZJavX+z7x8d/4eYBnJ9WFSi // SIG // 9q0v+vLOGc3fyM2KQtq5eVbHX5rVyWc6bJ35AgMBAAGj // SIG // ggHCMIIBvjAQBgkrBgEEAYI3FQEEAwIBADAdBgNVHQ4E // SIG // FgQU8S+6kRZ83n1SJzH1evvVWFlpOj0wVAYDVR0gBE0w // SIG // SzBJBgRVHSAAMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly93 // SIG // d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvRG9jcy9SZXBv // SIG // c2l0b3J5Lmh0bTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBi // SIG // AEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB // SIG // /zAfBgNVHSMEGDAWgBQODLFkab0tsdVrJqZH6lZOgMPt // SIG // ijBmBgNVHR8EXzBdMFugWaBXhlVodHRwOi8vd3d3Lm1p // SIG // Y3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNyb3NvZnQl // SIG // MjBSU0ElMjBTZXJ2aWNlcyUyMFJvb3QlMjBDQSUyMDIw // SIG // MjEuY3JsMHMGCCsGAQUFBwEBBGcwZTBjBggrBgEFBQcw // SIG // AoZXaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9w // SIG // cy9jZXJ0cy9NaWNyb3NvZnQlMjBSU0ElMjBTZXJ2aWNl // SIG // cyUyMFJvb3QlMjBDQSUyMDIwMjEuY3J0MA0GCSqGSIb3 // SIG // DQEBDAUAA4ICAQBin7PMBnXjnIJ0x++LnudLDWWnZ8dZ // SIG // mJ14DuZfUss/doUThLAM4crrHaTbJoulUUELNd2AnOpX // SIG // /Z4tenUMT3sjYIdPYyJfIYWPRqfI6Nbz+JVK7RRvn2nl // SIG // 5EEMIuRE6UKS9ZGBbf02a7sb04E/7BN/NhhrmtS/tVFj // SIG // fRrrVh9zXku45rqWuCwUTzg3EqxKQ8OGbtjBQtq/Syb/ // SIG // clm5BHsoh3XhMnb9VLv3G1duNf90FL5/o88XZ4L18nx1 // SIG // lfky2nllY4HIA8PK8AarqAW4iKSTA3EGqn8s/47WtQKT // SIG // +qED2YbZXVOYL+L7vQDCnFbwhgAx6ucuMz7Ae1rqibg3 // SIG // AjsC7U5M3oA/vqAHDKDA3mdM5D6L/ZEdQgaG20HhUOSQ // SIG // +CiQD3TyHSiVCfVMuTv83IiKCni3LW/23tHC2tbN57rl // SIG // hMcoyjIi+IVd7j7s41MFBaDwJrmfXn/YM+lR/5QqvO7z // SIG // WAbbr/XU531v3jr/jBilmrqt6U/b7y8TXyA9nYxV9iSM // SIG // FmcbyIi2xgdcAHhxnpXcvcvyFWET6YiJiyeSJZwwJv8g // SIG // wXiBF+Zh0IHArl6KVsbAdsATuP1TCEBpPynXZmkviIEW // SIG // Ptnv315ZjTC7nPoOpSnOVaO7wZztrOefZunI5fBxw7mG // SIG // 1oyoRnADZawiFsVo9J/cDu15ErRCfDQRhwSiBTGCGm0w // SIG // ghppAgEBMHkwYjELMAkGA1UEBhMCVVMxHjAcBgNVBAoT // SIG // FU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEzMDEGA1UEAxMq // SIG // QXp1cmUgUlNBIFB1YmxpYyBTZXJ2aWNlcyBDb2RlIFNp // SIG // Z25pbmcgUENBAhMzAAAArn9k1tYsMf4JAAAAAACuMA0G // SIG // CWCGSAFlAwQCAQUAoIGuMBkGCSqGSIb3DQEJAzEMBgor // SIG // BgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEE // SIG // AYI3AgEVMC8GCSqGSIb3DQEJBDEiBCAULgUwGHY+/n5N // SIG // x08ErZiUmqARk/x+7L82ifgwpdwU1DBCBgorBgEEAYI3 // SIG // AgEMMTQwMqAUgBIATQBpAGMAcgBvAHMAbwBmAHShGoAY // SIG // aHR0cDovL3d3dy5taWNyb3NvZnQuY29tMA0GCSqGSIb3 // SIG // DQEBAQUABIIBgCnl7NUoNOe2Zy1qtdGRFvNtH6Qm2x4p // SIG // w+5qmevjsAFs7U0hBu17n7WtSyabNh9JMAuYQ+kWIr1i // SIG // kf6I8FSD3lWxvaKS8+fzz0u9XZLzKvEbH0CikkpMJ+Ze // SIG // 4jK4yzF2m8z97gLM4Hd7w9tPxRiGtpGOEKdeK/z1RI1U // SIG // /GURPBGq1CbrtGk/sFD+R2C/y+lxU7fNDiG4WABdomjk // SIG // 0vu0twynBrKy++gf8Sb2R4u3m/Gtxkm8o34diJR1zONh // SIG // /9yHeDFWZw4AnOrY9l62CJn2ZG/lB2zJjjKBTt2OAdwt // SIG // QvR/kI2WWjdFsABTTEGtFDsbbNjsTlycPXb2g8g/amUv // SIG // Z0ogcF+FVneULgrYPSygomz0uv5DYSCAfhEcVPMzM4yi // SIG // 394ZswuF160G4+4T6Ifm8NeBDzWRIrHyPas/eZv2Fqq6 // SIG // VcpwFXPNYblVjfdETr/iEjgKy5dVE9NPXhK33bWnYfLH // SIG // C6QgZICQU4CgtfZEJE5FhBoi7uuon2vTNLqhtpsrwaGC // SIG // F5QwgheQBgorBgEEAYI3AwMBMYIXgDCCF3wGCSqGSIb3 // SIG // DQEHAqCCF20wghdpAgEDMQ8wDQYJYIZIAWUDBAIBBQAw // SIG // ggFSBgsqhkiG9w0BCRABBKCCAUEEggE9MIIBOQIBAQYK // SIG // KwYBBAGEWQoDATAxMA0GCWCGSAFlAwQCAQUABCBkKus3 // SIG // q416IJZlLlpCw4ZDtzn7ugj8slpawiJpypllegIGacFJ // SIG // dHQtGBMyMDI2MDQwNzA0NTU1NC40MzVaMASAAgH0oIHR // SIG // pIHOMIHLMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2Fz // SIG // aGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UE // SIG // ChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSUwIwYDVQQL // SIG // ExxNaWNyb3NvZnQgQW1lcmljYSBPcGVyYXRpb25zMScw // SIG // JQYDVQQLEx5uU2hpZWxkIFRTUyBFU046QTAwMC0wNUUw // SIG // LUQ5NDcxJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0 // SIG // YW1wIFNlcnZpY2WgghHqMIIHIDCCBQigAwIBAgITMwAA // SIG // Aiu7AFD/TTuaoQABAAACKzANBgkqhkiG9w0BAQsFADB8 // SIG // MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv // SIG // bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWlj // SIG // cm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNy // SIG // b3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDAeFw0yNjAy // SIG // MTkxOTQwMTFaFw0yNzA1MTcxOTQwMTFaMIHLMQswCQYD // SIG // VQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4G // SIG // A1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0 // SIG // IENvcnBvcmF0aW9uMSUwIwYDVQQLExxNaWNyb3NvZnQg // SIG // QW1lcmljYSBPcGVyYXRpb25zMScwJQYDVQQLEx5uU2hp // SIG // ZWxkIFRTUyBFU046QTAwMC0wNUUwLUQ5NDcxJTAjBgNV // SIG // BAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZpY2Uw // SIG // ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCX // SIG // 3mi6OD3syUqQm4QqgkrKPbcsK/Qx3fYctL8+VM1uOY3b // SIG // ooi5GxwauTgQf6JFHITToxS7gjqKlK8OFLzL6UTl0jxE // SIG // K5t6DuOcgJXdvutimoTlOS0C3kyITXBAXoj/gp6hRR9z // SIG // 6WRip1Ktkilb3dJXCjQqT9P2Cuujr+Vz8r+Z+jDl09ji // SIG // /ic/4G34r3mVwjs//Gnx9Pu31V8rXFicNiAzxpubawpb // SIG // d8pqfzlWT2vnG3kF9l6MiREbvJ3XHLUwHQsh0t/TrSFx // SIG // /s/yCqpJWYJ6oClG70tvsFH0aRP8wB4cP/CFa2ILvk26 // SIG // i3OcJBl+pqKjHTSBy9mvwTPEDlnzco0Nt8R6pSPTXZgB // SIG // sscHhoKfC0WQmOzY2keXbAmRTcZMyXz5v/AJbmoI0y07 // SIG // Bazvt5NkXddG9TErQWwtsFyIKrElDgWfHeCoTu1wu2ci // SIG // D3dK72z3ca2gzoEDxT2j9BXIUKaiTzTdQPRsAMaO3dU0 // SIG // zaGwMMlwtSJyDh14YEgZoUu5vS8MugMqdrNjphyL65yK // SIG // hjpAWbhYkIHO/0uZju95tP8zZNqXIRh4tdfWHJPATn9r // SIG // +cxkyuh2x0VLdfx1lmK9X3NjH0NtgAs5JB/wOlkyuudx // SIG // mFTfWVyRrL37ispOZ8aPAFgvyR6cNTkGpkFo35JRjciN // SIG // mZiU4qT9Uty+V5gudFk1jwIDAQABo4IBSTCCAUUwHQYD // SIG // VR0OBBYEFD4WjuQTUJbtbd3jmvZku0FZ2eU2MB8GA1Ud // SIG // IwQYMBaAFJ+nFV0AXmJdg/Tl0mWnG1M1GelyMF8GA1Ud // SIG // HwRYMFYwVKBSoFCGTmh0dHA6Ly93d3cubWljcm9zb2Z0 // SIG // LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMFRpbWUt // SIG // U3RhbXAlMjBQQ0ElMjAyMDEwKDEpLmNybDBsBggrBgEF // SIG // BQcBAQRgMF4wXAYIKwYBBQUHMAKGUGh0dHA6Ly93d3cu // SIG // bWljcm9zb2Z0LmNvbS9wa2lvcHMvY2VydHMvTWljcm9z // SIG // b2Z0JTIwVGltZS1TdGFtcCUyMFBDQSUyMDIwMTAoMSku // SIG // Y3J0MAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYI // SIG // KwYBBQUHAwgwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3 // SIG // DQEBCwUAA4ICAQDO/CKsciEM8kr1fqH4TlfT66ENoTjx // SIG // Xw810pyEq0PdrgLwfgT3x+1gz7CQHtUdevqMQ5qHyDLh // SIG // m6pT911CYkGN+6g+MU7fMYTr6d3SxieJwBIoWkfR4g7S // SIG // itGzMKU465KEYejfddoUgovC/xcRpaALO5p3/A248Byh // SIG // JiMttBQNDtsT/HaCFwRFCURby/f8c1kky8F8xkCXFz+/ // SIG // MtZ5d1lWFjwOI2geZHWq9XihDOgee5nS2koo5V6n8XG2 // SIG // 20UTevVf+pgmpIH71XKDVIYTGGZJs6yPlfJ2aXqw1ME4 // SIG // NR6okNsY3P1M31H6DMYRfJGNBNep595kXGh3YzA3cCiy // SIG // g+jmJ58h/fTvjngIpuUFfODpDjFx0ic1YoLANxhCF3Rh // SIG // S9qYM7K40NEhKshYuaAkIG2XBKYig3r/0/b0sjvjBws5 // SIG // 5AYonMm3A8qcX/6k9Vfc0mv9dtonHuWGfA2b+qE2qpCn // SIG // hzGbdDHq7iOSZEw01nNupAMf1c41k9IoTQ2z3iw6w4ZZ // SIG // oLOyg4TKMbp1krpT4trip/y30Cv5khyqCDNqaXQpBkOY // SIG // ON8LgtoQ3amVOX7ix5jdrnx/vUxTUSigXvrWdL7Uk8kp // SIG // mS0zto2Toy7aT5oBzCTvfj9iJ/BN/E1vhFBkhJCvZ7PV // SIG // vsMSnTTmkx2Fal2lVkztuAI44fD/uyLJdaMQSzCCB3Ew // SIG // ggVZoAMCAQICEzMAAAAVxedrngKbSZkAAAAAABUwDQYJ // SIG // KoZIhvcNAQELBQAwgYgxCzAJBgNVBAYTAlVTMRMwEQYD // SIG // VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k // SIG // MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24x // SIG // MjAwBgNVBAMTKU1pY3Jvc29mdCBSb290IENlcnRpZmlj // SIG // YXRlIEF1dGhvcml0eSAyMDEwMB4XDTIxMDkzMDE4MjIy // SIG // NVoXDTMwMDkzMDE4MzIyNVowfDELMAkGA1UEBhMCVVMx // SIG // EzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1Jl // SIG // ZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh // SIG // dGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3Rh // SIG // bXAgUENBIDIwMTAwggIiMA0GCSqGSIb3DQEBAQUAA4IC // SIG // DwAwggIKAoICAQDk4aZM57RyIQt5osvXJHm9DtWC0/3u // SIG // nAcH0qlsTnXIyjVX9gF/bErg4r25PhdgM/9cT8dm95VT // SIG // cVrifkpa/rg2Z4VGIwy1jRPPdzLAEBjoYH1qUoNEt6aO // SIG // RmsHFPPFdvWGUNzBRMhxXFExN6AKOG6N7dcP2CZTfDlh // SIG // AnrEqv1yaa8dq6z2Nr41JmTamDu6GnszrYBbfowQHJ1S // SIG // /rboYiXcag/PXfT+jlPP1uyFVk3v3byNpOORj7I5LFGc // SIG // 6XBpDco2LXCOMcg1KL3jtIckw+DJj361VI/c+gVVmG1o // SIG // O5pGve2krnopN6zL64NF50ZuyjLVwIYwXE8s4mKyzbni // SIG // jYjklqwBSru+cakXW2dg3viSkR4dPf0gz3N9QZpGdc3E // SIG // XzTdEonW/aUgfX782Z5F37ZyL9t9X4C626p+Nuw2TPYr // SIG // bqgSUei/BQOj0XOmTTd0lBw0gg/wEPK3Rxjtp+iZfD9M // SIG // 269ewvPV2HM9Q07BMzlMjgK8QmguEOqEUUbi0b1qGFph // SIG // AXPKZ6Je1yh2AuIzGHLXpyDwwvoSCtdjbwzJNmSLW6Cm // SIG // gyFdXzB0kZSU2LlQ+QuJYfM2BjUYhEfb3BvR/bLUHMVr // SIG // 9lxSUV0S2yW6r1AFemzFER1y7435UsSFF5PAPBXbGjfH // SIG // CBUYP3irRbb1Hode2o+eFnJpxq57t7c+auIurQIDAQAB // SIG // o4IB3TCCAdkwEgYJKwYBBAGCNxUBBAUCAwEAATAjBgkr // SIG // BgEEAYI3FQIEFgQUKqdS/mTEmr6CkTxGNSnPEP8vBO4w // SIG // HQYDVR0OBBYEFJ+nFV0AXmJdg/Tl0mWnG1M1GelyMFwG // SIG // A1UdIARVMFMwUQYMKwYBBAGCN0yDfQEBMEEwPwYIKwYB // SIG // BQUHAgEWM2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9w // SIG // a2lvcHMvRG9jcy9SZXBvc2l0b3J5Lmh0bTATBgNVHSUE // SIG // DDAKBggrBgEFBQcDCDAZBgkrBgEEAYI3FAIEDB4KAFMA // SIG // dQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw // SIG // AwEB/zAfBgNVHSMEGDAWgBTV9lbLj+iiXGJo0T2UkFvX // SIG // zpoYxDBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8vY3Js // SIG // Lm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9N // SIG // aWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcmwwWgYIKwYB // SIG // BQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRwOi8vd3d3 // SIG // Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0Nl // SIG // ckF1dF8yMDEwLTA2LTIzLmNydDANBgkqhkiG9w0BAQsF // SIG // AAOCAgEAnVV9/Cqt4SwfZwExJFvhnnJL/Klv6lwUtj5O // SIG // R2R4sQaTlz0xM7U518JxNj/aZGx80HU5bbsPMeTCj/ts // SIG // 0aGUGCLu6WZnOlNN3Zi6th542DYunKmCVgADsAW+iehp // SIG // 4LoJ7nvfam++Kctu2D9IdQHZGN5tggz1bSNU5HhTdSRX // SIG // ud2f8449xvNo32X2pFaq95W2KFUn0CS9QKC/GbYSEhFd // SIG // PSfgQJY4rPf5KYnDvBewVIVCs/wMnosZiefwC2qBwoEZ // SIG // QhlSdYo2wh3DYXMuLGt7bj8sCXgU6ZGyqVvfSaN0DLzs // SIG // kYDSPeZKPmY7T7uG+jIa2Zb0j/aRAfbOxnT99kxybxCr // SIG // dTDFNLB62FD+CljdQDzHVG2dY3RILLFORy3BFARxv2T5 // SIG // JL5zbcqOCb2zAVdJVGTZc9d/HltEAY5aGZFrDZ+kKNxn // SIG // GSgkujhLmm77IVRrakURR6nxt67I6IleT53S0Ex2tVdU // SIG // CbFpAUR+fKFhbHP+CrvsQWY9af3LwUFJfn6Tvsv4O+S3 // SIG // Fb+0zj6lMVGEvL8CwYKiexcdFYmNcP7ntdAoGokLjzba // SIG // ukz5m/8K6TT4JDVnK+ANuOaMmdbhIurwJ0I9JZTmdHRb // SIG // atGePu1+oDEzfbzL6Xu/OHBE0ZDxyKs6ijoIYn/ZcGNT // SIG // TY3ugm2lBRDBcQZqELQdVTNYs6FwZvKhggNNMIICNQIB // SIG // ATCB+aGB0aSBzjCByzELMAkGA1UEBhMCVVMxEzARBgNV // SIG // BAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx // SIG // HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEl // SIG // MCMGA1UECxMcTWljcm9zb2Z0IEFtZXJpY2EgT3BlcmF0 // SIG // aW9uczEnMCUGA1UECxMeblNoaWVsZCBUU1MgRVNOOkEw // SIG // MDAtMDVFMC1EOTQ3MSUwIwYDVQQDExxNaWNyb3NvZnQg // SIG // VGltZS1TdGFtcCBTZXJ2aWNloiMKAQEwBwYFKw4DAhoD // SIG // FQAJrD90ykHpo/0AGb7lmwvsCtqROaCBgzCBgKR+MHwx // SIG // CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9u // SIG // MRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy // SIG // b3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jv // SIG // c29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwMA0GCSqGSIb3 // SIG // DQEBCwUAAgUA7X7jcjAiGA8yMDI2MDQwNzAxNTkxNFoY // SIG // DzIwMjYwNDA4MDE1OTE0WjB0MDoGCisGAQQBhFkKBAEx // SIG // LDAqMAoCBQDtfuNyAgEAMAcCAQACAgFtMAcCAQACAhMn // SIG // MAoCBQDtgDTyAgEAMDYGCisGAQQBhFkKBAIxKDAmMAwG // SIG // CisGAQQBhFkKAwKgCjAIAgEAAgMHoSChCjAIAgEAAgMB // SIG // hqAwDQYJKoZIhvcNAQELBQADggEBAFZ0WYSlfecITeHV // SIG // AGMcw4htuV16TvAtarSSEe/0Oh/YO/raw+7zbg/AWXmc // SIG // xgdXLLcVVBFionCaxDRZ8r1w3dtI+i+fy82OjM6XFvvU // SIG // sG3yc86KeLdskrjTNf/79epSAFF9km9Vf1m0BMmfGEUZ // SIG // Nywcqy12KNmAVHhLr86cCBW327n+mU9HHynJebrUAvVF // SIG // eD74wXhM+Lvb2vLihIroBljab5QmNcpGaMRD9JwNQR5o // SIG // Kb0HsrkG/HNBosTA6wEvUI+FScxadOCjuo7zrm+HOpT1 // SIG // MvTU+2lTDQml8R8TDektCOfigh46NDoKbEX5fgq/OYdD // SIG // Aycescelnk1gQMsH2CoxggQNMIIECQIBATCBkzB8MQsw // SIG // CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQ // SIG // MA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9z // SIG // b2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3Nv // SIG // ZnQgVGltZS1TdGFtcCBQQ0EgMjAxMAITMwAAAiu7AFD/ // SIG // TTuaoQABAAACKzANBglghkgBZQMEAgEFAKCCAUowGgYJ // SIG // KoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMC8GCSqGSIb3 // SIG // DQEJBDEiBCC5M4bedicQfDSyN2fxOqk7QkbwwODdBX2a // SIG // /h4/z+p12jCB+gYLKoZIhvcNAQkQAi8xgeowgecwgeQw // SIG // gb0EIHIOI/Q/kFftYA+M2OY+1Bx3ajBD6/WDAtPT2vFk // SIG // v25SMIGYMIGApH4wfDELMAkGA1UEBhMCVVMxEzARBgNV // SIG // BAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx // SIG // HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEm // SIG // MCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENB // SIG // IDIwMTACEzMAAAIruwBQ/007mqEAAQAAAiswIgQgA8Tg // SIG // Z/q9f4BbNCvnqHoKSrkuB0dSQRch87Co32ZDFfIwDQYJ // SIG // KoZIhvcNAQELBQAEggIAZT8GrPStRslaCWyv9e0ZvSuF // SIG // 19JMODM/eh+CpxYSdKypKcVBPzVhrm4alWBa7tvwkkAQ // SIG // WyjuMPAuPl7Kn8pRyxoS4IduP7qFnA7UnZPMT1fqFS3E // SIG // LSq7FNNmEXTLRjcGKLo/HpofoHwoPEnSh1goi7W6LT8I // SIG // WhkGkiwvDKhjr3Jm7k/R0V8uldyQyfWVmHsxeHlyHCE3 // SIG // nCx7LOdxHczoCudM1K4swXw7Vp0B+47e1zOvBHTbSrVb // SIG // W3rV2IyMvREynuevxd9RslqlZfIUgRyxToR71Jx1vCM8 // SIG // q15D74EzSO8/4zcvUZYFVb0r1EQjzNXSdLtsru4o8fg5 // SIG // QY98fj5PLvDaaPQbNuHtOGb4ybyFzL18NSOOlw5Z1wEw // SIG // pqwxc5t0zcfKJFbSCt9cpshOkMYDGB9QwF1eLpF4hlX+ // SIG // KHPhZvmRrbvwDthUvEiHyZ+Zai2anpA9XabJsmTlRrI/ // SIG // EernttpBHF9+Ya2dmlwwSL0Wyjv5bCkkblux9Xq8bW9t // SIG // UY/wP2cpFcshMSHNuI3e05xyxQXIjo1tACDM8VVxT0qD // SIG // gxCmfGo56SJl7kxNSPzb0cZynIPe8OwpXyG9rlJAqKyd // SIG // uLQk6q8514vnLG6DgamFiShSlY6kHuqiFQUd/L/QrHBS // SIG // 1dVQKhBymueePqA8SoMETJmspSDXzO/7e+8TLKjOktY= // SIG // End signature block