@kusto/language-service-next
Version:
Azure Data Explorer (a.k.a Kusto) language service for javascript
828 lines (736 loc) • 39.4 kB
JavaScript
/**
* @version : 17.10.1 - Bridge.NET
* @author : Object.NET, Inc. http://bridge.net/
* @copyright : Copyright 2008-2019 Object.NET, Inc. http://object.net/
* @license : See license.txt and https://github.com/bridgedotnet/Bridge/blob/master/LICENSE.md
*/
Bridge.assembly("Bridge", function ($asm, globals) {
"use strict";
Bridge.define("Bridge.Console", {
statics: {
fields: {
BODY_WRAPPER_ID: null,
CONSOLE_MESSAGES_ID: null,
position: null,
instance$1: null
},
props: {
instance: {
get: function () {
if (Bridge.Console.instance$1 == null) {
Bridge.Console.instance$1 = new Bridge.Console();
}
return Bridge.Console.instance$1;
}
}
},
ctors: {
init: function () {
this.BODY_WRAPPER_ID = "bridge-body-wrapper";
this.CONSOLE_MESSAGES_ID = "bridge-console-messages";
this.position = "horizontal";
}
},
methods: {
initConsoleFunctions: function () {
var wl = System.Console.WriteLine;
var w = System.Console.Write;
var clr = System.Console.Clear;
var debug = System.Diagnostics.Debug.writeln;
var con = Bridge.global.console;
if (wl) {
System.Console.WriteLine = function (value) {
wl(value);
Bridge.Console.log(value, true);
}
}
if (w) {
System.Console.Write = function (value) {
w(value);
Bridge.Console.log(value, false);
}
}
if (clr) {
System.Console.Clear = function () {
clr();
Bridge.Console.clear();
}
}
if (debug) {
System.Diagnostics.Debug.writeln = function (value) {
debug(value);
Bridge.Console.debug(value);
}
}
if (con && con.error) {
var err = con.error;
con.error = function (msg) {
err.apply(con, arguments);
Bridge.Console.error(msg);
}
}
if (Bridge.isDefined(Bridge.global.window)) {
Bridge.global.window.addEventListener("error", function (e) {
Bridge.Console.error(System.Exception.create(e));
});
}
},
logBase: function (value, newLine, messageType) {
var $t;
if (newLine === void 0) { newLine = true; }
if (messageType === void 0) { messageType = 0; }
var self = Bridge.Console.instance;
var v = "";
if (value != null) {
var hasToString = value.ToString !== undefined;
v = (value.toString == { }.toString && !hasToString) ? JSON.stringify(value, null, 2) : hasToString ? value.ToString() : value.toString();
}
if (self.bufferedOutput != null) {
self.bufferedOutput = (self.bufferedOutput || "") + (v || "");
if (newLine) {
self.bufferedOutput = (self.bufferedOutput || "") + ("\n" || "");
}
return;
}
Bridge.Console.show();
if (self.isNewLine || self.currentMessageElement == null) {
var m = self.buildConsoleMessage(v, messageType);
self.consoleMessages.appendChild(m);
self.currentMessageElement = m;
} else {
var m1 = Bridge.unbox(self.currentMessageElement);
($t = m1.lastChild).innerHTML = ($t.innerHTML || "") + (v || "");
}
self.isNewLine = newLine;
},
error: function (value) {
Bridge.Console.logBase(value, true, 2);
},
debug: function (value) {
Bridge.Console.logBase(value, true, 1);
},
log: function (value, newLine) {
if (newLine === void 0) { newLine = true; }
Bridge.Console.logBase(value, newLine);
},
clear: function () {
var self = Bridge.Console.instance$1;
if (self == null) {
return;
}
var m = self.consoleMessages;
if (m != null) {
while (m.firstChild != null) {
m.removeChild(m.firstChild);
}
self.currentMessageElement = null;
}
if (self.bufferedOutput != null) {
self.bufferedOutput = "";
}
self.isNewLine = false;
},
hide: function () {
if (Bridge.Console.instance$1 == null) {
return;
}
var self = Bridge.Console.instance;
if (self.hidden) {
return;
}
self.close();
},
show: function () {
var self = Bridge.Console.instance;
if (!self.hidden) {
return;
}
self.init(true);
},
toggle: function () {
if (Bridge.Console.instance.hidden) {
Bridge.Console.show();
} else {
Bridge.Console.hide();
}
}
}
},
fields: {
svgNS: null,
consoleHeight: null,
consoleHeaderHeight: null,
tooltip: null,
consoleWrap: null,
consoleMessages: null,
bridgeIcon: null,
bridgeIconPath: null,
bridgeConsoleLabel: null,
closeBtn: null,
closeIcon: null,
closeIconPath: null,
consoleHeader: null,
consoleBody: null,
hidden: false,
isNewLine: false,
currentMessageElement: null,
bufferedOutput: null
},
ctors: {
init: function () {
this.svgNS = "http://www.w3.org/2000/svg";
this.consoleHeight = "300px";
this.consoleHeaderHeight = "35px";
this.hidden = true;
this.isNewLine = false;
},
ctor: function () {
this.$initialize();
this.init();
}
},
methods: {
init: function (reinit) {
if (reinit === void 0) { reinit = false; }
this.hidden = false;
var consoleWrapStyles = Bridge.fn.bind(this, $asm.$.Bridge.Console.f1)(new (System.Collections.Generic.Dictionary$2(System.String,System.String)).ctor());
var consoleHeaderStyles = $asm.$.Bridge.Console.f2(new (System.Collections.Generic.Dictionary$2(System.String,System.String)).ctor());
var consoleBodyStyles = $asm.$.Bridge.Console.f3(new (System.Collections.Generic.Dictionary$2(System.String,System.String)).ctor());
this.bridgeIcon = this.bridgeIcon || document.createElementNS(this.svgNS, "svg");
var items = Bridge.fn.bind(this, $asm.$.Bridge.Console.f4)(new (System.Collections.Generic.Dictionary$2(System.String,System.String)).ctor());
this.setAttributes(this.bridgeIcon, items);
this.bridgeIconPath = this.bridgeIconPath || document.createElementNS(this.svgNS, "path");
var items2 = new (System.Collections.Generic.Dictionary$2(System.String,System.String)).ctor();
items2.setItem("d", "M19 14.4h2.2V9.6L19 7.1v7.3zm4.3-2.5v2.5h2.2l-2.2-2.5zm-8.5 2.5H17V4.8l-2.2-2.5v12.1zM0 14.4h3l7.5-8.5v8.5h2.2V0L0 14.4z");
items2.setItem("fill", "#555");
this.setAttributes(this.bridgeIconPath, items2);
this.bridgeConsoleLabel = this.bridgeConsoleLabel || document.createElement("span");
this.bridgeConsoleLabel.innerHTML = "Bridge Console";
this.closeBtn = this.closeBtn || document.createElement("span");
this.closeBtn.setAttribute("style", "position: relative;display: inline-block;float: right;cursor: pointer");
this.closeIcon = this.closeIcon || document.createElementNS(this.svgNS, "svg");
var items3 = Bridge.fn.bind(this, $asm.$.Bridge.Console.f5)(new (System.Collections.Generic.Dictionary$2(System.String,System.String)).ctor());
this.setAttributes(this.closeIcon, items3);
this.closeIconPath = this.closeIconPath || document.createElementNS(this.svgNS, "path");
var items4 = $asm.$.Bridge.Console.f6(new (System.Collections.Generic.Dictionary$2(System.String,System.String)).ctor());
this.setAttributes(this.closeIconPath, items4);
this.tooltip = this.tooltip || document.createElement("div");
this.tooltip.innerHTML = "Refresh page to open Bridge Console";
this.tooltip.setAttribute("style", "position: absolute;right: 30px;top: -6px;white-space: nowrap;padding: 7px;border-radius: 3px;background-color: rgba(0, 0, 0, 0.75);color: #eee;text-align: center;visibility: hidden;opacity: 0;-webkit-transition: all 0.25s ease-in-out;transition: all 0.25s ease-in-out;z-index: 1;");
Bridge.Console.position = "horizontal";
if (Bridge.referenceEquals(Bridge.Console.position, "horizontal")) {
this.wrapBodyContent();
consoleWrapStyles.setItem("right", "0");
consoleHeaderStyles.setItem("border-top", "1px solid #a3a3a3");
consoleBodyStyles.setItem("height", this.consoleHeight);
} else if (Bridge.referenceEquals(Bridge.Console.position, "vertical")) {
var consoleWidth = "400px";
document.body.style.marginLeft = consoleWidth;
consoleWrapStyles.setItem("top", "0");
consoleWrapStyles.setItem("width", consoleWidth);
consoleWrapStyles.setItem("border-right", "1px solid #a3a3a3");
consoleBodyStyles.setItem("height", "100%");
}
this.consoleWrap = this.consoleWrap || document.createElement("div");
this.consoleWrap.setAttribute("style", this.obj2Css(consoleWrapStyles));
this.consoleHeader = this.consoleHeader || document.createElement("div");
this.consoleHeader.setAttribute("style", this.obj2Css(consoleHeaderStyles));
this.consoleBody = this.consoleBody || document.createElement("div");
this.consoleBody.setAttribute("style", this.obj2Css(consoleBodyStyles));
this.consoleMessages = this.consoleMessages || document.createElement("ul");
var cm = this.consoleMessages;
cm.id = Bridge.Console.CONSOLE_MESSAGES_ID;
cm.setAttribute("style", "margin: 0;padding: 0;list-style: none;");
if (!reinit) {
this.bridgeIcon.appendChild(this.bridgeIconPath);
this.closeIcon.appendChild(this.closeIconPath);
this.closeBtn.appendChild(this.closeIcon);
this.closeBtn.appendChild(this.tooltip);
this.consoleHeader.appendChild(this.bridgeIcon);
this.consoleHeader.appendChild(this.bridgeConsoleLabel);
this.consoleHeader.appendChild(this.closeBtn);
this.consoleBody.appendChild(cm);
this.consoleWrap.appendChild(this.consoleHeader);
this.consoleWrap.appendChild(this.consoleBody);
document.body.appendChild(this.consoleWrap);
this.closeBtn.addEventListener("click", Bridge.fn.cacheBind(this, this.close));
this.closeBtn.addEventListener("mouseover", Bridge.fn.cacheBind(this, this.showTooltip));
this.closeBtn.addEventListener("mouseout", Bridge.fn.cacheBind(this, this.hideTooltip));
}
},
showTooltip: function () {
var self = Bridge.Console.instance;
self.tooltip.style.right = "20px";
self.tooltip.style.visibility = "visible";
self.tooltip.style.opacity = "1";
},
hideTooltip: function () {
var self = Bridge.Console.instance;
self.tooltip.style.right = "30px";
self.tooltip.style.opacity = "0";
},
close: function () {
this.hidden = true;
this.consoleWrap.style.display = "none";
if (Bridge.referenceEquals(Bridge.Console.position, "horizontal")) {
this.unwrapBodyContent();
} else if (Bridge.referenceEquals(Bridge.Console.position, "vertical")) {
document.body.removeAttribute("style");
}
},
wrapBodyContent: function () {
if (document.body == null) {
return;
}
var bodyStyle = document.defaultView.getComputedStyle(document.body, null);
var bodyPaddingTop = bodyStyle.paddingTop;
var bodyPaddingRight = bodyStyle.paddingRight;
var bodyPaddingBottom = bodyStyle.paddingBottom;
var bodyPaddingLeft = bodyStyle.paddingLeft;
var bodyMarginTop = bodyStyle.marginTop;
var bodyMarginRight = bodyStyle.marginRight;
var bodyMarginBottom = bodyStyle.marginBottom;
var bodyMarginLeft = bodyStyle.marginLeft;
var div = document.createElement("div");
div.id = Bridge.Console.BODY_WRAPPER_ID;
div.setAttribute("style", "height: calc(100vh - " + (this.consoleHeight || "") + " - " + (this.consoleHeaderHeight || "") + ");" + "margin-top: calc(-1 * " + "(" + (((bodyMarginTop || "") + " + " + (bodyPaddingTop || "")) || "") + "));" + "margin-right: calc(-1 * " + "(" + (((bodyMarginRight || "") + " + " + (bodyPaddingRight || "")) || "") + "));" + "margin-left: calc(-1 * " + "(" + (((bodyMarginLeft || "") + " + " + (bodyPaddingLeft || "")) || "") + "));" + "padding-top: calc(" + (((bodyMarginTop || "") + " + " + (bodyPaddingTop || "")) || "") + ");" + "padding-right: calc(" + (((bodyMarginRight || "") + " + " + (bodyPaddingRight || "")) || "") + ");" + "padding-bottom: calc(" + (((bodyMarginBottom || "") + " + " + (bodyPaddingBottom || "")) || "") + ");" + "padding-left: calc(" + (((bodyMarginLeft || "") + " + " + (bodyPaddingLeft || "")) || "") + ");" + "overflow-x: auto;" + "box-sizing: border-box !important;");
while (document.body.firstChild != null) {
div.appendChild(document.body.firstChild);
}
document.body.appendChild(div);
},
unwrapBodyContent: function () {
var bridgeBodyWrap = document.getElementById(Bridge.Console.BODY_WRAPPER_ID);
if (bridgeBodyWrap == null) {
return;
}
while (bridgeBodyWrap.firstChild != null) {
document.body.insertBefore(bridgeBodyWrap.firstChild, bridgeBodyWrap);
}
document.body.removeChild(bridgeBodyWrap);
},
buildConsoleMessage: function (message, messageType) {
var messageItem = document.createElement("li");
messageItem.setAttribute("style", "padding:5px 10px;border-bottom:1px solid #f0f0f0;position:relative;");
var messageIcon = document.createElementNS(this.svgNS, "svg");
var items5 = Bridge.fn.bind(this, $asm.$.Bridge.Console.f7)(new (System.Collections.Generic.Dictionary$2(System.String,System.String)).ctor());
this.setAttributes(messageIcon, items5);
var color = "#555";
if (messageType === 2) {
color = "#d65050";
} else if (messageType === 1) {
color = "#1800FF";
}
var messageIconPath = document.createElementNS(this.svgNS, "path");
var items6 = new (System.Collections.Generic.Dictionary$2(System.String,System.String)).ctor();
items6.setItem("d", "M3.8 3.5L.7 6.6s-.1.1-.2.1-.1 0-.2-.1l-.2-.3C0 6.2 0 6.2 0 6.1c0 0 0-.1.1-.1l2.6-2.6L.1.7C0 .7 0 .6 0 .6 0 .5 0 .5.1.4L.4.1c0-.1.1-.1.2-.1s.1 0 .2.1l3.1 3.1s.1.1.1.2-.1.1-.2.1z");
items6.setItem("fill", color);
this.setAttributes(messageIconPath, items6);
messageIcon.appendChild(messageIconPath);
var messageContainer = document.createElement("div");
messageContainer.innerText = message;
messageContainer.setAttribute("style", "color:" + (color || "") + ";white-space:pre;margin-left:12px;line-height:1.4;min-height:18px;");
messageItem.appendChild(messageIcon);
messageItem.appendChild(messageContainer);
return messageItem;
},
setAttributes: function (el, attrs) {
var $t;
$t = Bridge.getEnumerator(attrs);
try {
while ($t.moveNext()) {
var item = $t.Current;
el.setAttribute(item.key, item.value);
}
} finally {
if (Bridge.is($t, System.IDisposable)) {
$t.System$IDisposable$Dispose();
}
}
},
obj2Css: function (obj) {
var $t;
var str = "";
$t = Bridge.getEnumerator(obj);
try {
while ($t.moveNext()) {
var item = $t.Current;
str = (str || "") + (((item.key.toLowerCase() || "") + ":" + (item.value || "") + ";") || "");
}
} finally {
if (Bridge.is($t, System.IDisposable)) {
$t.System$IDisposable$Dispose();
}
}
return str;
}
}
});
Bridge.ns("Bridge.Console", $asm.$);
Bridge.apply($asm.$.Bridge.Console, {
f1: function (_o1) {
_o1.add("position", "fixed");
_o1.add("left", "0");
_o1.add("bottom", "0");
_o1.add("padding-top", this.consoleHeaderHeight);
_o1.add("background-color", "#fff");
_o1.add("font", "normal normal normal 13px/1 sans-serif");
_o1.add("color", "#555");
return _o1;
},
f2: function (_o2) {
_o2.add("position", "absolute");
_o2.add("top", "0");
_o2.add("left", "0");
_o2.add("right", "0");
_o2.add("height", "35px");
_o2.add("padding", "9px 15px 7px 10px");
_o2.add("border-bottom", "1px solid #ccc");
_o2.add("background-color", "#f3f3f3");
_o2.add("box-sizing", "border-box");
return _o2;
},
f3: function (_o3) {
_o3.add("overflow-x", "auto");
_o3.add("font-family", "Menlo, Monaco, Consolas, 'Courier New', monospace");
return _o3;
},
f4: function (_o4) {
_o4.add("xmlns", this.svgNS);
_o4.add("width", "25.5");
_o4.add("height", "14.4");
_o4.add("viewBox", "0 0 25.5 14.4");
_o4.add("style", "margin: 0 3px 3px 0;vertical-align:middle;");
return _o4;
},
f5: function (_o5) {
_o5.add("xmlns", this.svgNS);
_o5.add("width", "11.4");
_o5.add("height", "11.4");
_o5.add("viewBox", "0 0 11.4 11.4");
_o5.add("style", "vertical-align: middle;");
return _o5;
},
f6: function (_o6) {
_o6.add("d", "M11.4 1.4L10 0 5.7 4.3 1.4 0 0 1.4l4.3 4.3L0 10l1.4 1.4 4.3-4.3 4.3 4.3 1.4-1.4-4.3-4.3");
_o6.add("fill", "#555");
return _o6;
},
f7: function (_o1) {
_o1.add("xmlns", this.svgNS);
_o1.add("width", "3.9");
_o1.add("height", "6.7");
_o1.add("viewBox", "0 0 3.9 6.7");
_o1.add("style", "vertical-align:middle;position: absolute;top: 10.5px;");
return _o1;
}
});
Bridge.init(function () { Bridge.Console.initConsoleFunctions(); });
});
// SIG // Begin signature block
// SIG // MIInRAYJKoZIhvcNAQcCoIInNTCCJzECAQExDzANBglg
// SIG // hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor
// SIG // BgEEAYI3AgEeMCQCAQEEEBDgyQbOONQRoqMAEEvTUJAC
// SIG // AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg
// SIG // npOZEttwfLOvxsSAqCD+4RvnugblfJEeQcqnl+m1dpig
// SIG // ggy6MIIF9TCCA92gAwIBAgITMwAAAh1NGchO1w9XSAAA
// SIG // AAACHTANBgkqhkiG9w0BAQsFADBXMQswCQYDVQQGEwJV
// SIG // UzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u
// SIG // MSgwJgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBTaWduaW5n
// SIG // IFBDQSAyMDI0MB4XDTI2MDQxNjE4NTk0M1oXDTI3MDQx
// SIG // NTE4NTk0M1owdDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
// SIG // Cldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc
// SIG // BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEeMBwG
// SIG // A1UEAxMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMIIBIjAN
// SIG // BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0L3sF8cf
// SIG // YGWRQumLNVgWsvASfJBgOCUJx+QjGn6jgEpU6SvR/KOW
// SIG // V017dHGlUEzTFD7eOOcF2A/nRbWilk8A59SOdqFEqwvb
// SIG // yYp9RrKrfs8iiS+Q4N3kF20DUetQ5jMttBi0yDt0hXnf
// SIG // UX4v6KYYAixhSw0d69Crx48DG/42FktHHpVf+C89uy3w
// SIG // HpJvL/ROSF2nol2wFGGSitPdJ+AlZdyQbWzfvQ7SPUjb
// SIG // v8o76M1udv7u0V/07aWvyg5abqJGfmXG75rXfbq/YBS7
// SIG // 2c4eNaPTLBP3JULXWhVhr7qOibmv57aYJHstxOf7wRXv
// SIG // jCTxuqYXZ7qOq+e2bnQrnYiNWwIDAQABo4IBmzCCAZcw
// SIG // DgYDVR0PAQH/BAQDAgeAMB8GA1UdJQQYMBYGCisGAQQB
// SIG // gjdMCAEGCCsGAQUFBwMDMB0GA1UdDgQWBBR+kLjMKnDx
// SIG // tIUJUOnOYwrU0y61XjBFBgNVHREEPjA8pDowODEeMBwG
// SIG // A1UECxMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMRYwFAYD
// SIG // VQQFEw0yMzAwMTIrNTA3NTU5MB8GA1UdIwQYMBaAFH9Z
// SIG // P1Qh2q1P7wXl5qPXLQaUEggxMGAGA1UdHwRZMFcwVaBT
// SIG // oFGGT2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lv
// SIG // cHMvY3JsL01pY3Jvc29mdCUyMENvZGUlMjBTaWduaW5n
// SIG // JTIwUENBJTIwMjAyNC5jcmwwbQYIKwYBBQUHAQEEYTBf
// SIG // MF0GCCsGAQUFBzAChlFodHRwOi8vd3d3Lm1pY3Jvc29m
// SIG // dC5jb20vcGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMENv
// SIG // ZGUlMjBTaWduaW5nJTIwUENBJTIwMjAyNC5jcnQwDAYD
// SIG // VR0TAQH/BAIwADANBgkqhkiG9w0BAQsFAAOCAgEASk22
// SIG // Do88Exvw1xms/bOvn0Hmk7Q3BZjGPuVMlRQso+z7/uYt
// SIG // +6n1/JUi/7QSH2EH1rDLgUJX2bqyQ+q+B1Sdgnh/tX4I
// SIG // qvHXB3VSqGd0mtql6F93KvYkvHFW9Oge/uf1yeyNDsRx
// SIG // /Xw7Lyd098OVf2bQCBZi65fj9ArRvvdrs0bJ9J023RYz
// SIG // pCzC1jywFN0x6ISkZUhDIBSaT5JuZ+VAGd+cV+hVgqwy
// SIG // 7Eim+eeW04n8GvJiQcHZaH9G5n2InR/ncWdRXQ8by5zZ
// SIG // fc3irAOJHo2miKqiD4LocALYuUJewZUzaCTcMQrwZqlt
// SIG // jEC5wpGDf1VVLEd1dsf63Ezc6AX/2f0qUTr3WgNmTjnd
// SIG // boqFybd7XS0O7x6aqYm9Cn1q/xVl1tdKt/FcXwp0UAas
// SIG // 20rs7Ue5xDLs1+wpPgf12jw13daoe9vkGMgdGdlc1pjv
// SIG // c7J2/VKv3cLvCxnkKp8ruu0gxgAr514otn2/flEuPdlU
// SIG // 510pxSsqsIM1MhTLWStf7B2E7+mxuE7UFMoEMUzfmVfm
// SIG // iSJSjtjKme2yqwJzs0vZujYKE3VjqtdW0zmcCpSBFfxI
// SIG // VfUlpA5naUf4Tz09r+kxI+BfD0/8x40XsyFOXPwxpbf1
// SIG // YWP6StF5CbRMjJpktQTLY1P66gWVTCJt3Z8ULP0wQcq/
// SIG // gn/Gda+2on0FUPlkqs4wgga9MIIEpaADAgECAhMzAAAA
// SIG // OTu2Nxm/Bh1nAAAAAAA5MA0GCSqGSIb3DQEBDAUAMIGI
// SIG // MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv
// SIG // bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWlj
// SIG // cm9zb2Z0IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNy
// SIG // b3NvZnQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkg
// SIG // MjAxMTAeFw0yNDA4MDgyMDU0MThaFw0zNjAzMjIyMjEz
// SIG // MDRaMFcxCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNy
// SIG // b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jv
// SIG // c29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMjQwggIiMA0G
// SIG // CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDYAZwe4zjH
// SIG // qpUWBzWtuub+CGPXx/EyoXph3zyDXtYKS2ld3YYN9uFs
// SIG // B9Oi3B26Z7AbpAgzYra8qNHbUvxFuiP8hC/2y0mPISqW
// SIG // 30LlrrAT6/ams2HA8Qlv6p42+SbCNbPGzToN21QE70FS
// SIG // +LXH9N2k8nLM/EHgnTNJf8h0TmyfUKmszNa+lTxDieyy
// SIG // /rhBG+98OkArobPPWtbr9c3qzmDJ7J3kUcAm6cltdSHI
// SIG // IFNHESgw6taY1ScyGyBevqIl120XjrIHiPM7tRckHytH
// SIG // 1ZGsmvEplR0P7Tn9t5meFvZNEYttkFvad1IEguTlA5LS
// SIG // scXAphi+rVy3zhklhyCFeGK0yU0+jzbcuURKIxybmRwK
// SIG // 5BfVZx0xEVqE4wM3yN5D/uW+GpVHYYAGe7bTrtW1Z13x
// SIG // 2qj2Jdqz7NtI4tNyzlVrIf62nYBNe3rOYS/repVdHlR6
// SIG // 1YbLLETlibs9jFzAre4sO5RTxvS1yho7JqJ59oKLRnRy
// SIG // LhIOSZyTCVZosXeS0ZZJoGEWSs4cUgsMqBiKtD4WgO2P
// SIG // lT3LeaQh5Io3CCA5tJ5ZCvtCsnqaJXKhptE/xmEETIRy
// SIG // ZRjjplUKKd+sFFVGJJVMvvrw1nhIBKOLO4cTepiG39jE
// SIG // iEP4iHzGYCcQuvaLpDFFwqzgt0pBP8SJIKX5dtjDNYrZ
// SIG // Gd+ZzV5DKJVNZQIDAQABo4IBTjCCAUowDgYDVR0PAQH/
// SIG // BAQDAgGGMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQW
// SIG // BBR/WT9UIdqtT+8F5eaj1y0GlBIIMTAZBgkrBgEEAYI3
// SIG // FAIEDB4KAFMAdQBiAEMAQTAPBgNVHRMBAf8EBTADAQH/
// SIG // MB8GA1UdIwQYMBaAFHItOgIxkEO5FAVO4eqnxzHRI4k0
// SIG // MFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwubWlj
// SIG // cm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jv
// SIG // b0NlckF1dDIwMTFfMjAxMV8wM18yMi5jcmwwXgYIKwYB
// SIG // BQUHAQEEUjBQME4GCCsGAQUFBzAChkJodHRwOi8vd3d3
// SIG // Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0Nl
// SIG // ckF1dDIwMTFfMjAxMV8wM18yMi5jcnQwDQYJKoZIhvcN
// SIG // AQEMBQADggIBABSUHzgoT+6J5+nyyDCq0pTdVmCsAxYA
// SIG // HXcpjlDtxazPHewf1v4kOg8V7A5+w+VuMDMGHi8rLXBK
// SIG // n5I8+DVEUYGs8jLuckc0IeC6owOLUrU3CYdaKRMaO55+
// SIG // T7jwWJ27tPkx0rlR03tFU0z1YYpcv6Yhaw6N2sUPT+Av
// SIG // jpecnrftoE33pCAkucUvnGH0iL4J9CZLFQVTGFSOUBbv
// SIG // 6oZy4bBBRFMxvH779IY4JDvpZKVfbcuhpDeL3Z3e8muk
// SIG // Omkfct+GojNapsWsQYujlJ8jZen5Lrp/3YkxZ2Ay06aT
// SIG // pK/5oOVknwog1TDQsbY+MDyguTph5tQ0CLfzDaJG2x91
// SIG // BrBT9UG87C6HLkqiwrx9PSKN3wz05rHEfWO+RuKl+0U1
// SIG // /AHQT6NCOjhKI39/c7hWbdKjh5uuWFkBOvXGTNrnhNTA
// SIG // dOXTTYByvYExO8yryv34PAdqo1vPDE/1heVebr2Rramv
// SIG // RUi9kWswKwPqwz7n+iRmM+B6YDGRweEurM1kimAb9FYr
// SIG // As38YHlPnarl1vW3dGrmJTgefAz3DmCnXN0nveIPsS+K
// SIG // XBIWweeCToAJMGE7v/XS3h9qQ6niWQAAVQ1kUAml3zuS
// SIG // 4MisCgi2F6YoK2WAo1EgXK/lXvDxVjIVU0JdL+KvCfwF
// SIG // JkDeVuJ9dNXGNi+AOxk0BtYd9hxwL30BElj9MYIZ4jCC
// SIG // Gd4CAQEwbjBXMQswCQYDVQQGEwJVUzEeMBwGA1UEChMV
// SIG // TWljcm9zb2Z0IENvcnBvcmF0aW9uMSgwJgYDVQQDEx9N
// SIG // aWNyb3NvZnQgQ29kZSBTaWduaW5nIFBDQSAyMDI0AhMz
// SIG // AAACHU0ZyE7XD1dIAAAAAAIdMA0GCWCGSAFlAwQCAQUA
// SIG // oIGuMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwG
// SIG // CisGAQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMC8GCSqG
// SIG // SIb3DQEJBDEiBCApYuNLHd7myvyTlZXuX9Gbme+klaob
// SIG // qnaugB6yRFMeqzBCBgorBgEEAYI3AgEMMTQwMqAUgBIA
// SIG // TQBpAGMAcgBvAHMAbwBmAHShGoAYaHR0cDovL3d3dy5t
// SIG // aWNyb3NvZnQuY29tMA0GCSqGSIb3DQEBAQUABIIBAIL0
// SIG // XEmTrUWiJvy7bSlFqOxyUPGNjpR/3oqqsyvpaebt7Dfw
// SIG // kuqsCuhfkSKCA0Blp6WDjpX/sUqmeskO6K9y4EzkKi/l
// SIG // O1MCsvCOGf5vJyG5Z6SY92VJQQLOsD4Pka2kHV2jfXDO
// SIG // EksoZZdMrKAnRlDxhNZg/nN0zLhRaUn7VpVi/lEelWPX
// SIG // 4Gn4GrWEga8EE66ZTmRssRcCAyv4vwZEPvTFeR4pcnrk
// SIG // pyT/KzlNa7k4M8UBS5ybm1sGkvkH+dwO2UcRNMNi0Z4P
// SIG // JaTAUJXQqUL+TmXjuZjY6jfOfxXqPW2LkdZ5pGGN0K24
// SIG // WbB4AaWdfHh4SW6Njw/qLSzyr8C8qBWhgheUMIIXkAYK
// SIG // KwYBBAGCNwMDATGCF4Awghd8BgkqhkiG9w0BBwKgghdt
// SIG // MIIXaQIBAzEPMA0GCWCGSAFlAwQCAQUAMIIBUgYLKoZI
// SIG // hvcNAQkQAQSgggFBBIIBPTCCATkCAQEGCisGAQQBhFkK
// SIG // AwEwMTANBglghkgBZQMEAgEFAAQg1w2q+Ei5IB1lk+/g
// SIG // RTl4H/jjYHQjuLDigd4KKs6gbWoCBmnnXIxMgxgTMjAy
// SIG // NjA1MDYwNTM0NTMuMjczWjAEgAIB9KCB0aSBzjCByzEL
// SIG // MAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24x
// SIG // EDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv
// SIG // c29mdCBDb3Jwb3JhdGlvbjElMCMGA1UECxMcTWljcm9z
// SIG // b2Z0IEFtZXJpY2EgT3BlcmF0aW9uczEnMCUGA1UECxMe
// SIG // blNoaWVsZCBUU1MgRVNOOkEwMDAtMDVFMC1EOTQ3MSUw
// SIG // IwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2
// SIG // aWNloIIR6jCCByAwggUIoAMCAQICEzMAAAIruwBQ/007
// SIG // mqEAAQAAAiswDQYJKoZIhvcNAQELBQAwfDELMAkGA1UE
// SIG // BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV
// SIG // BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD
// SIG // b3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRp
// SIG // bWUtU3RhbXAgUENBIDIwMTAwHhcNMjYwMjE5MTk0MDEx
// SIG // WhcNMjcwNTE3MTk0MDExWjCByzELMAkGA1UEBhMCVVMx
// SIG // EzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1Jl
// SIG // ZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh
// SIG // dGlvbjElMCMGA1UECxMcTWljcm9zb2Z0IEFtZXJpY2Eg
// SIG // T3BlcmF0aW9uczEnMCUGA1UECxMeblNoaWVsZCBUU1Mg
// SIG // RVNOOkEwMDAtMDVFMC1EOTQ3MSUwIwYDVQQDExxNaWNy
// SIG // b3NvZnQgVGltZS1TdGFtcCBTZXJ2aWNlMIICIjANBgkq
// SIG // hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAl95oujg97MlK
// SIG // kJuEKoJKyj23LCv0Md32HLS/PlTNbjmN26KIuRscGrk4
// SIG // EH+iRRyE06MUu4I6ipSvDhS8y+lE5dI8RCubeg7jnICV
// SIG // 3b7rYpqE5TktAt5MiE1wQF6I/4KeoUUfc+lkYqdSrZIp
// SIG // W93SVwo0Kk/T9grro6/lc/K/mfow5dPY4v4nP+Bt+K95
// SIG // lcI7P/xp8fT7t9VfK1xYnDYgM8abm2sKW3fKan85Vk9r
// SIG // 5xt5BfZejIkRG7yd1xy1MB0LIdLf060hcf7P8gqqSVmC
// SIG // eqApRu9Lb7BR9GkT/MAeHD/whWtiC75NuotznCQZfqai
// SIG // ox00gcvZr8EzxA5Z83KNDbfEeqUj012YAbLHB4aCnwtF
// SIG // kJjs2NpHl2wJkU3GTMl8+b/wCW5qCNMtOwWs77eTZF3X
// SIG // RvUxK0FsLbBciCqxJQ4Fnx3gqE7tcLtnIg93Su9s93Gt
// SIG // oM6BA8U9o/QVyFCmok803UD0bADGjt3VNM2hsDDJcLUi
// SIG // cg4deGBIGaFLub0vDLoDKnazY6Yci+ucioY6QFm4WJCB
// SIG // zv9LmY7vebT/M2TalyEYeLXX1hyTwE5/a/nMZMrodsdF
// SIG // S3X8dZZivV9zYx9DbYALOSQf8DpZMrrncZhU31lckay9
// SIG // +4rKTmfGjwBYL8kenDU5BqZBaN+SUY3IjZmYlOKk/VLc
// SIG // vleYLnRZNY8CAwEAAaOCAUkwggFFMB0GA1UdDgQWBBQ+
// SIG // Fo7kE1CW7W3d45r2ZLtBWdnlNjAfBgNVHSMEGDAWgBSf
// SIG // pxVdAF5iXYP05dJlpxtTNRnpcjBfBgNVHR8EWDBWMFSg
// SIG // UqBQhk5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtp
// SIG // b3BzL2NybC9NaWNyb3NvZnQlMjBUaW1lLVN0YW1wJTIw
// SIG // UENBJTIwMjAxMCgxKS5jcmwwbAYIKwYBBQUHAQEEYDBe
// SIG // MFwGCCsGAQUFBzAChlBodHRwOi8vd3d3Lm1pY3Jvc29m
// SIG // dC5jb20vcGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMFRp
// SIG // bWUtU3RhbXAlMjBQQ0ElMjAyMDEwKDEpLmNydDAMBgNV
// SIG // HRMBAf8EAjAAMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMI
// SIG // MA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOC
// SIG // AgEAzvwirHIhDPJK9X6h+E5X0+uhDaE48V8PNdKchKtD
// SIG // 3a4C8H4E98ftYM+wkB7VHXr6jEOah8gy4ZuqU/ddQmJB
// SIG // jfuoPjFO3zGE6+nd0sYnicASKFpH0eIO0orRszClOOuS
// SIG // hGHo33XaFIKLwv8XEaWgCzuad/wNuPAcoSYjLbQUDQ7b
// SIG // E/x2ghcERQlEW8v3/HNZJMvBfMZAlxc/vzLWeXdZVhY8
// SIG // DiNoHmR1qvV4oQzoHnuZ0tpKKOVep/FxtttFE3r1X/qY
// SIG // JqSB+9Vyg1SGExhmSbOsj5Xydml6sNTBODUeqJDbGNz9
// SIG // TN9R+gzGEXyRjQTXqefeZFxod2MwN3AosoPo5iefIf30
// SIG // 7454CKblBXzg6Q4xcdInNWKCwDcYQhd0YUvamDOyuNDR
// SIG // ISrIWLmgJCBtlwSmIoN6/9P29LI74wcLOeQGKJzJtwPK
// SIG // nF/+pPVX3NJr/XbaJx7lhnwNm/qhNqqQp4cxm3Qx6u4j
// SIG // kmRMNNZzbqQDH9XONZPSKE0Ns94sOsOGWaCzsoOEyjG6
// SIG // dZK6U+La4qf8t9Ar+ZIcqggzaml0KQZDmDjfC4LaEN2p
// SIG // lTl+4seY3a58f71MU1EooF761nS+1JPJKZktM7aNk6Mu
// SIG // 2k+aAcwk734/YifwTfxNb4RQZISQr2ez1b7DEp005pMd
// SIG // hWpdpVZM7bgCOOHw/7siyXWjEEswggdxMIIFWaADAgEC
// SIG // AhMzAAAAFcXna54Cm0mZAAAAAAAVMA0GCSqGSIb3DQEB
// SIG // CwUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2Fz
// SIG // aGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UE
// SIG // ChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTIwMAYDVQQD
// SIG // EylNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRo
// SIG // b3JpdHkgMjAxMDAeFw0yMTA5MzAxODIyMjVaFw0zMDA5
// SIG // MzAxODMyMjVaMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQI
// SIG // EwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4w
// SIG // HAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAk
// SIG // BgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAy
// SIG // MDEwMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC
// SIG // AgEA5OGmTOe0ciELeaLL1yR5vQ7VgtP97pwHB9KpbE51
// SIG // yMo1V/YBf2xK4OK9uT4XYDP/XE/HZveVU3Fa4n5KWv64
// SIG // NmeFRiMMtY0Tz3cywBAY6GB9alKDRLemjkZrBxTzxXb1
// SIG // hlDcwUTIcVxRMTegCjhuje3XD9gmU3w5YQJ6xKr9cmmv
// SIG // Haus9ja+NSZk2pg7uhp7M62AW36MEBydUv626GIl3GoP
// SIG // z130/o5Tz9bshVZN7928jaTjkY+yOSxRnOlwaQ3KNi1w
// SIG // jjHINSi947SHJMPgyY9+tVSP3PoFVZhtaDuaRr3tpK56
// SIG // KTesy+uDRedGbsoy1cCGMFxPLOJiss254o2I5JasAUq7
// SIG // vnGpF1tnYN74kpEeHT39IM9zfUGaRnXNxF803RKJ1v2l
// SIG // IH1+/NmeRd+2ci/bfV+AutuqfjbsNkz2K26oElHovwUD
// SIG // o9Fzpk03dJQcNIIP8BDyt0cY7afomXw/TNuvXsLz1dhz
// SIG // PUNOwTM5TI4CvEJoLhDqhFFG4tG9ahhaYQFzymeiXtco
// SIG // dgLiMxhy16cg8ML6EgrXY28MyTZki1ugpoMhXV8wdJGU
// SIG // lNi5UPkLiWHzNgY1GIRH29wb0f2y1BzFa/ZcUlFdEtsl
// SIG // uq9QBXpsxREdcu+N+VLEhReTwDwV2xo3xwgVGD94q0W2
// SIG // 9R6HXtqPnhZyacaue7e3PmriLq0CAwEAAaOCAd0wggHZ
// SIG // MBIGCSsGAQQBgjcVAQQFAgMBAAEwIwYJKwYBBAGCNxUC
// SIG // BBYEFCqnUv5kxJq+gpE8RjUpzxD/LwTuMB0GA1UdDgQW
// SIG // BBSfpxVdAF5iXYP05dJlpxtTNRnpcjBcBgNVHSAEVTBT
// SIG // MFEGDCsGAQQBgjdMg30BATBBMD8GCCsGAQUFBwIBFjNo
// SIG // dHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL0Rv
// SIG // Y3MvUmVwb3NpdG9yeS5odG0wEwYDVR0lBAwwCgYIKwYB
// SIG // BQUHAwgwGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEw
// SIG // CwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHwYD
// SIG // VR0jBBgwFoAU1fZWy4/oolxiaNE9lJBb186aGMQwVgYD
// SIG // VR0fBE8wTTBLoEmgR4ZFaHR0cDovL2NybC5taWNyb3Nv
// SIG // ZnQuY29tL3BraS9jcmwvcHJvZHVjdHMvTWljUm9vQ2Vy
// SIG // QXV0XzIwMTAtMDYtMjMuY3JsMFoGCCsGAQUFBwEBBE4w
// SIG // TDBKBggrBgEFBQcwAoY+aHR0cDovL3d3dy5taWNyb3Nv
// SIG // ZnQuY29tL3BraS9jZXJ0cy9NaWNSb29DZXJBdXRfMjAx
// SIG // MC0wNi0yMy5jcnQwDQYJKoZIhvcNAQELBQADggIBAJ1V
// SIG // ffwqreEsH2cBMSRb4Z5yS/ypb+pcFLY+TkdkeLEGk5c9
// SIG // MTO1OdfCcTY/2mRsfNB1OW27DzHkwo/7bNGhlBgi7ulm
// SIG // ZzpTTd2YurYeeNg2LpypglYAA7AFvonoaeC6Ce5732pv
// SIG // vinLbtg/SHUB2RjebYIM9W0jVOR4U3UkV7ndn/OOPcbz
// SIG // aN9l9qRWqveVtihVJ9AkvUCgvxm2EhIRXT0n4ECWOKz3
// SIG // +SmJw7wXsFSFQrP8DJ6LGYnn8AtqgcKBGUIZUnWKNsId
// SIG // w2FzLixre24/LAl4FOmRsqlb30mjdAy87JGA0j3mSj5m
// SIG // O0+7hvoyGtmW9I/2kQH2zsZ0/fZMcm8Qq3UwxTSwethQ
// SIG // /gpY3UA8x1RtnWN0SCyxTkctwRQEcb9k+SS+c23Kjgm9
// SIG // swFXSVRk2XPXfx5bRAGOWhmRaw2fpCjcZxkoJLo4S5pu
// SIG // +yFUa2pFEUep8beuyOiJXk+d0tBMdrVXVAmxaQFEfnyh
// SIG // YWxz/gq77EFmPWn9y8FBSX5+k77L+DvktxW/tM4+pTFR
// SIG // hLy/AsGConsXHRWJjXD+57XQKBqJC4822rpM+Zv/Cuk0
// SIG // +CQ1ZyvgDbjmjJnW4SLq8CdCPSWU5nR0W2rRnj7tfqAx
// SIG // M328y+l7vzhwRNGQ8cirOoo6CGJ/2XBjU02N7oJtpQUQ
// SIG // wXEGahC0HVUzWLOhcGbyoYIDTTCCAjUCAQEwgfmhgdGk
// SIG // gc4wgcsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNo
// SIG // aW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQK
// SIG // ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJTAjBgNVBAsT
// SIG // HE1pY3Jvc29mdCBBbWVyaWNhIE9wZXJhdGlvbnMxJzAl
// SIG // BgNVBAsTHm5TaGllbGQgVFNTIEVTTjpBMDAwLTA1RTAt
// SIG // RDk0NzElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3Rh
// SIG // bXAgU2VydmljZaIjCgEBMAcGBSsOAwIaAxUACaw/dMpB
// SIG // 6aP9ABm+5ZsL7ArakTmggYMwgYCkfjB8MQswCQYDVQQG
// SIG // EwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UE
// SIG // BxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENv
// SIG // cnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGlt
// SIG // ZS1TdGFtcCBQQ0EgMjAxMDANBgkqhkiG9w0BAQsFAAIF
// SIG // AO2k9o0wIhgPMjAyNjA1MDUyMzA2NTNaGA8yMDI2MDUw
// SIG // NjIzMDY1M1owdDA6BgorBgEEAYRZCgQBMSwwKjAKAgUA
// SIG // 7aT2jQIBADAHAgEAAgIHpTAHAgEAAgITrDAKAgUA7aZI
// SIG // DQIBADA2BgorBgEEAYRZCgQCMSgwJjAMBgorBgEEAYRZ
// SIG // CgMCoAowCAIBAAIDB6EgoQowCAIBAAIDAYagMA0GCSqG
// SIG // SIb3DQEBCwUAA4IBAQB/Pbfc91NPCjb+wsASlhItxcQS
// SIG // QitF8e6YcHBvl8fC+sMkpuBHEssRflByM0dUzcWGA+K4
// SIG // y+olcSO++X7PTD3i171z09uIS7FcAHJGQjP9yNhdwoVx
// SIG // h8lbLADbEehKp8S/nRxlZXfOj8/alaHDzVWinsC63kg1
// SIG // fAd3J8du/4yri0wUYgYC8OoejpOaOlQ98XKyLqg29Hv4
// SIG // whEVv5hdoCUXpkvxFn6shL6tLx0pxAIYokx+m4P8e3vn
// SIG // rD43gM6UKTbfQsOOrJ7RMgfIwqHeaOhcQtgcmaUPl7G5
// SIG // C/DxG98ru+JjL3BPo2ac1FgarpfE73QiTeDmbQ5M4djB
// SIG // GE7DCI+BMYIEDTCCBAkCAQEwgZMwfDELMAkGA1UEBhMC
// SIG // VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcT
// SIG // B1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw
// SIG // b3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUt
// SIG // U3RhbXAgUENBIDIwMTACEzMAAAIruwBQ/007mqEAAQAA
// SIG // AiswDQYJYIZIAWUDBAIBBQCgggFKMBoGCSqGSIb3DQEJ
// SIG // AzENBgsqhkiG9w0BCRABBDAvBgkqhkiG9w0BCQQxIgQg
// SIG // Ee4yH6zATMYGdzdto+M2T7d1tZ5ZJ6BZWYRANKNO55ow
// SIG // gfoGCyqGSIb3DQEJEAIvMYHqMIHnMIHkMIG9BCByDiP0
// SIG // P5BX7WAPjNjmPtQcd2owQ+v1gwLT09rxZL9uUjCBmDCB
// SIG // gKR+MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNo
// SIG // aW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQK
// SIG // ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMT
// SIG // HU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwAhMz
// SIG // AAACK7sAUP9NO5qhAAEAAAIrMCIEIF4bMLsZTM3naaih
// SIG // KaVOzZsFYuf/KgnFcMyscW5eS4EaMA0GCSqGSIb3DQEB
// SIG // CwUABIICAACregb7JKgZDkVMFqzU9HOXj5SCxFG/xdGa
// SIG // mWk4qlHYuWPJfvrbvaiGOGeAt4gaC5voOxi6SEXShbQC
// SIG // c4in0/+sxVTJlUuURp+uI6Z1L+jQA0fnnX71pqOgd+LT
// SIG // HlKhh+VZjbI9WFAfTNv4AsAannuMQ88fWmRIDJpUV7uy
// SIG // aY7EcMHy0Q/ptVW4NqC3aTEDwZ63kgC5wLlYj6cckYP/
// SIG // O6+wuSsHsYlOpf+Bu86GKu5fZb9nZxtnr8GeoAq31KQq
// SIG // y1vJ1z3VNBvwehx9GeWGFG17NgJxRIhqyXIkuIuLX/wV
// SIG // N19y3oh9gWQ+W8xREZUu79h8lC/LJfC4FukqY1Fg4cfv
// SIG // FTDZRiO6cBQbMDQOmsIV97+T3sU9DUiYemp7UW2soJDW
// SIG // 1aY5WubIqPKRutrEtkSJW3M8YPJKMCjk71/VUA5iNzbk
// SIG // 5SuNKMf54DLs4o/F6wVSCIo1RjGTHSyto31lHVpVAiB6
// SIG // sg5v8wvu2dqWBEIefannVDNs23iebpO3Wrf96XPj/AJr
// SIG // igGk8vZEqMKVDfWPLTdh/FLMuLTdmLkfejp+T8ZN73GG
// SIG // SIiq/GlPI/75gAP5lNY+wa9lA0qhv6IW+ypxtzmxNvqt
// SIG // +cBERU5fDkYdQrCYCn40yra0PVmxEDn10lnkhvKMlbwV
// SIG // lzSzb4FRS5eLFgQPvejSBkytth9A5z2H
// SIG // End signature block