//////////////////////////////////////////////////////////////////////////////
//
// Copyright © 2002-2003, Microsoft Corporation.  All rights reserved.
//
// File: Cvobjs.js
//
// Description: Global utility functions
//
//////////////////////////////////////////////////////////////////////////////

//--------------------------------------------------------------------
// Function: ArrayPop
//
// Purpose: Removes the last element from an array. This function is
//	    provided for JScript versions that do not support this
//	    functionality (i.e. IE 5.01).
//
// Parameters: None
//
// Returns:
//	Object - The removed item
//--------------------------------------------------------------------
function ArrayPop()
{
	var oLast = this[this.length-1];
	this.length = Math.max(this.length-1,0);
	return oLast;
}

//--------------------------------------------------------------------
// Function: ArrayShift
//
// Purpose: Removes the first element from an array. This function is
//	    provided for JScript versions that do not support this
//	    functionality (i.e. IE 5.01).
//
// Parameters: None
//
// Returns: Object - The removed item
//--------------------------------------------------------------------
function ArrayShift() 
{
       	var oFirst = this[0];
       	this.reverse();
       	this.length = Math.max(this.length-1,0);
       	this.reverse();
       	return oFirst;
}

//--------------------------------------------------------------------
// Function: GetItemFromURL
//
// Purpose: Gets the value of the specified query string item.
//
// Parameters:
//	String sItem [in] - Query string item
//
// Returns: String
//--------------------------------------------------------------------
function GetItemFromURL(sItem)
{
	var sValue = "";
	var nItemLen = sItem.length;
	var aQuery = window.location.href.split("?");
	var oRegEx = new RegExp();

	oRegEx.compile(sItem,"gi");

	for (var i = 0; i < aQuery.length; i++)
	{
		if (oRegEx.test(aQuery[i]))
		{
			sValue = unescape(aQuery[i].substring(nItemLen+1,aQuery[i].length));
			break;
		}
	}

	return sValue;
}

//--------------------------------------------------------------------
// Function: AppendSlash
//
// Purpose: Appends a forward slash to the end of the supplied string,
//	    if one is not already present.
//
// Parameters:
//	String s [in] - String to update
//
// Returns: String
//--------------------------------------------------------------------
function AppendSlash(s)
{
	var sSlashes = "\\/";
	return (sSlashes.indexOf(s.charAt(s.length-1)) == -1) ? s + "/" : s;
}

//--------------------------------------------------------------------
// Function: IsBidiLang
//
// Purpose: Determines if the language code represents a bi-directional
//	    language.
//
// Parameters:
//	String sID [in] - Language code
//
// Returns: Boolean
//--------------------------------------------------------------------
function IsBidiLang(sID)
{
	var bRes = false;

	// Test for Urdu, Persian, Hebrew, Yiddish and Arabic
	if (sID == "ur" || sID == "fa" || sID == "he" || sID == "ji" || (sID.length > 3 && sID.substring(0,3) == "ar-"))
		bRes = true;

	return bRes;
}

//--------------------------------------------------------------------
// Method: GetBaseURL
//
// Purpose: Gets the viewer's URL minus the filename "viewer.htm".
//
// Parameters: None
//
// Returns: String
//--------------------------------------------------------------------
function GetBaseURL()
{
	var sBaseURL = "";

	try
	{
		var sURL = unescape(window.location.href.toLowerCase());
		
		var nPos = sURL.indexOf("viewer.htm");
		if (nPos != -1)	sBaseURL = sURL.substring(0,nPos);
	}
	catch(e)
	{	
	}

	return sBaseURL;
}

//--------------------------------------------------------------------
// Method: UnderlineHotkey
//
// Purpose: Underlines the mnemonic key within a string.
//
// Parameters: 
//	String sLabel [in] - String to modify
//	String sChar [in] - Character to underline
//
// Returns: String (HTML)
//--------------------------------------------------------------------
function UnderlineHotkey(sLabel,sChar)
{
	var sTmpLabel = sLabel.toLowerCase();
	var nPos = sTmpLabel.indexOf(sChar.toLowerCase());
	return (nPos == -1) ? sLabel : sLabel.substring(0,nPos) + "<u style='font-size: 100%' onclick='this.parentElement.click();'>" + sLabel.substring(nPos,nPos+1) + "</u>" + sLabel.substring(nPos+1,sLabel.length);
}

//--------------------------------------------------------------------
// Method: TrimStr
//
// Purpose: Removes whitespace characters from both ends of the
//	    supplied string.
//
// Parameters: 
//	String s [in] - String to trim
//
// Returns: String (HTML)
//--------------------------------------------------------------------
function TrimStr(s)
{
	var oRegEx = new RegExp("^(\\s*)([\\W\\w]*)(\\b\\s*$)","gim");
   	return s.replace(oRegEx,"$2");
}

//--------------------------------------------------------------------
// Method: ConfirmDeletion
//
// Purpose:
//
// Parameters:
//	String sMsgTxt [in] - 
//	String sReplaceTxt [in] - 
//
// Returns: Boolean
//--------------------------------------------------------------------
function ConfirmDeletion(sMsgTxt, sReplaceTxt)
{
	sMsgTxt = TextReplace(sMsgTxt,"%s",sReplaceTxt);

	var bDelete = window.confirm(sMsgTxt);

	return bDelete;
}

//--------------------------------------------------------------------
// Method: TextReplace
//
// Purpose: Replaces placeholder text with the specified value(s)
//
// Parameters:
//	String sTxt [in] - Text to parse
//	String|Array oFindTxt [in] - Placeholder(s) to locate
//	String|Array oReplaceTxt [in] - Replacement value(s)
//
// Returns: String
//--------------------------------------------------------------------
function TextReplace(sTxt,oFindTxt,oReplaceTxt)
{
	var sTmp = sTxt;

	if (typeof(oFindTxt) == "string")
		sTmp = sTmp.replace(new RegExp(oFindTxt,"gi"),oReplaceTxt);
	else if (typeof(oFindTxt) == "object" && typeof(oReplaceTxt) == "object" && oFindTxt.length == oReplaceTxt.length)
	{
		for (i = 0; i < oFindTxt.length; i++)
			sTmp = sTmp.replace(new RegExp(oFindTxt[i],"gi"),oReplaceTxt[i]);
	}

	return sTmp;
}

//--------------------------------------------------------------------
// Function: CancelEvent
//
// Purpose: Cancels the current event.
//
// Parameters: None
//
// Returns: None
//--------------------------------------------------------------------
function CancelEvent(oEvent)
{
    if (oEvent == undefined)
        return;
	oEvent.cancelBubble = true;
	oEvent.returnValue = false;
}


if (navigator.userAgent.indexOf('MSIE') < 0) {

    Window.prototype.attachEvent = function(evt, evtHandler) {
        this.addEventListener(evt.slice(2), evtHandler, false);
    };

    Document.prototype.attachEvent = function(evt, evtHandler) {
        this.addEventListener(evt.slice(2), evtHandler, false);
    };

    Element.prototype.attachEvent = function(evt, evtHandler) {
        this.addEventListener(evt.slice(2), evtHandler, false);
    };
    
    Window.prototype.detachEvent = function(evt, evtHandler) {
        this.removeEventListener(evt.slice(2), evtHandler, false);
    };

    Document.prototype.detachEvent = function(evt, evtHandler) {
        this.removeEventListener(evt.slice(2), evtHandler, false);
    };

    Element.prototype.detachEvent = function(evt, evtHandler) {
        this.removeEventListener(evt.slice(2), evtHandler, false);
    };
    
    //CancelEvent
    Window.prototype.CancelEvent = function(evt) {
        evt.cancelBubble = true;
    };

    Element.prototype.__defineGetter__("parentElement", function() {
        return this.parentNode;
    });
    Element.prototype.__defineGetter__("innerText", function() {
        return this.textContent;
    });
    
    Element.prototype.__defineSetter__("innerText", function(strValue) {
        return this.textContent=strValue;
    });
    
    Element.prototype.__defineGetter__("srcElement", function() {
        return this.target;
    });
    
    Event.prototype.__defineGetter__("srcElement", function() {
        return this.target;
    });
    
    Event.prototype.__defineGetter__("keyCode", function() {
        return this.target;
    });
    
    Document.prototype.createTextRange = function() {
        return this.createRange();
    };
    
    Document.prototype.__defineGetter__("url", function() {
        return this.documentURI;
    });
}
// SIG // Begin signature block
// SIG // MIIbDAYJKoZIhvcNAQcCoIIa/TCCGvkCAQExCzAJBgUr
// SIG // DgMCGgUAMGcGCisGAQQBgjcCAQSgWTBXMDIGCisGAQQB
// SIG // gjcCAR4wJAIBAQQQEODJBs441BGiowAQS9NQkAIBAAIB
// SIG // AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFHjtSay/6Eb8
// SIG // oHAOC1uO9hTkf71hoIIV5zCCBIUwggNtoAMCAQICCmEI
// SIG // d18AAAAAAEowDQYJKoZIhvcNAQEFBQAweTELMAkGA1UE
// SIG // BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV
// SIG // BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD
// SIG // b3Jwb3JhdGlvbjEjMCEGA1UEAxMaTWljcm9zb2Z0IENv
// SIG // ZGUgU2lnbmluZyBQQ0EwHhcNMTAwNzE5MjI1MzEwWhcN
// SIG // MTExMDE5MjI1MzEwWjCBgzELMAkGA1UEBhMCVVMxEzAR
// SIG // BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v
// SIG // bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv
// SIG // bjENMAsGA1UECxMETU9QUjEeMBwGA1UEAxMVTWljcm9z
// SIG // b2Z0IENvcnBvcmF0aW9uMIIBIjANBgkqhkiG9w0BAQEF
// SIG // AAOCAQ8AMIIBCgKCAQEAzH6Ae0H6i7RNmSlD3eb4Ut9b
// SIG // Qpe9Mxmc77Xa0MDc6PG3vlzhCrLCNaB+5PPUOKfyD0Jy
// SIG // p7qbzx8k3lYNhHPM02P3F82vaW9hTUyAT8h3HFFkyNME
// SIG // 8xQms7hCPzNDsNsmWViTtW2JYg8HVlvVEqCxCcwWK/mM
// SIG // 32FW6AZ4f9dziCYDZ9Gj/zSCrC1M2ALs7W+5ojHFMky7
// SIG // 9v1fYlte8fZkkceFd0cc9qcrRy0LN1RPth8EjbXsYCen
// SIG // 8362fKFMkaaLcdbGNWFHvMEVS92sMyK+BhmWS4oebgDr
// SIG // vh5p3VhZIQMrPL7mEwUXZjWnhi0a8dk0wAGAGvyaRp1u
// SIG // pOdI3DXqNwIDAQABo4IBAjCB/zATBgNVHSUEDDAKBggr
// SIG // BgEFBQcDAzAdBgNVHQ4EFgQU5G9fyon5U77wcFcGUKrC
// SIG // eQ2sVpswDgYDVR0PAQH/BAQDAgeAMB8GA1UdIwQYMBaA
// SIG // FFdFdBxdsPbIQwXgjFQtjzKn/kiWMEkGA1UdHwRCMEAw
// SIG // PqA8oDqGOGh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9w
// SIG // a2kvY3JsL3Byb2R1Y3RzL0NvZGVTaWdQQ0EuY3JsME0G
// SIG // CCsGAQUFBwEBBEEwPzA9BggrBgEFBQcwAoYxaHR0cDov
// SIG // L3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9Db2Rl
// SIG // U2lnUENBLmNydDANBgkqhkiG9w0BAQUFAAOCAQEAlkFd
// SIG // PVwrpM64KkUvQgJeoZAcTHQnCc4LVH1wKEFyO6QVvNEE
// SIG // Ulevd3RtC1VXhzcQSR7W5tTCY5S0/aQuLfpf4hlZFYTZ
// SIG // t7bpUqJS3iNfIC9Z06sahH8d473qD98BiDkl2O1kYRkb
// SIG // eq+mFEpGUEjZckvVS5Ld8A+EfMvTxvJMeG79vP9mEAr3
// SIG // A10V6l6YDAnSmY8utSC9YebJbwUUEct7+0IIvQPxJldn
// SIG // TY9Zi7hEx0XTYgQMLTADWF7sSPRuqBQxBP00orgELQLd
// SIG // OqEJXq1hsY9wwHhVI2Oon1l3otu5G3EoHPwu4QSPte80
// SIG // vkqZR+NkUhY8+r3g6OAUDBAiNIKCHjCCBMowggOyoAMC
// SIG // AQICCmED3PYAAAAAAAwwDQYJKoZIhvcNAQEFBQAwdzEL
// SIG // MAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24x
// SIG // EDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv
// SIG // c29mdCBDb3Jwb3JhdGlvbjEhMB8GA1UEAxMYTWljcm9z
// SIG // b2Z0IFRpbWUtU3RhbXAgUENBMB4XDTA4MDcyNTE5MTI1
// SIG // MFoXDTExMDcyNTE5MjI1MFowgbMxCzAJBgNVBAYTAlVT
// SIG // MRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS
// SIG // ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y
// SIG // YXRpb24xDTALBgNVBAsTBE1PUFIxJzAlBgNVBAsTHm5D
// SIG // aXBoZXIgRFNFIEVTTjoxNTlDLUEzRjctMjU3MDElMCMG
// SIG // A1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vydmlj
// SIG // ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
// SIG // AMDtgRShXnfAW/R2iWL6rXxoFLT3vTXYE3laF8rZbFFF
// SIG // YiZ6Lx/Y6sFuARf5w6YfZ9tRsCzeihft/yCtNOqY+6XW
// SIG // KtLxRCcHWi06k/9WU7DI9fMD8knMFtD1AExY+Jv1ByWx
// SIG // ZhfAvcjSUoWNwis4ssM2vvmH2vSOXUPXBr+ZBZ+kzv6r
// SIG // jWFj5znF8xj22PwxNmlyWqIaTD7qhyVCndE+8ZfSGDKT
// SIG // cFVTgR7jOw3ovoJ4beb6zZikb9vuZvSVyM01yZ67Ng2D
// SIG // lpQmp5DgqTQ71cCePvDUR42GDIKkWDA6HHbjrZVmtLf9
// SIG // CYoFYA+jD+KTllginJ0r26KUGJCVAr0GQJUCAwEAAaOC
// SIG // ARkwggEVMB0GA1UdDgQWBBTS7Q0eJLs3qdggak0d0hbV
// SIG // Lr6e6zAfBgNVHSMEGDAWgBQjNPjZUkZwCu1A+3b7syuw
// SIG // wzWzDzBUBgNVHR8ETTBLMEmgR6BFhkNodHRwOi8vY3Js
// SIG // Lm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9N
// SIG // aWNyb3NvZnRUaW1lU3RhbXBQQ0EuY3JsMFgGCCsGAQUF
// SIG // BwEBBEwwSjBIBggrBgEFBQcwAoY8aHR0cDovL3d3dy5t
// SIG // aWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNyb3NvZnRU
// SIG // aW1lU3RhbXBQQ0EuY3J0MBMGA1UdJQQMMAoGCCsGAQUF
// SIG // BwMIMA4GA1UdDwEB/wQEAwIGwDANBgkqhkiG9w0BAQUF
// SIG // AAOCAQEAnApVyMxEEzQM2GMndn0++jgyg1Od8gj5MvXF
// SIG // bnChybFjaxmdCWfZneuKattgZunpUibzO8Zq08JSvqi5
// SIG // 62qqeIzJFn2QlaDMIbOegb3NwYspvWIl7wlX54ZOKuyA
// SIG // yrv8IRbEP05SGeYOsdjBwnmQZLRQcxA1Xl0Rwbi6qs9S
// SIG // 9oCRAObvUUNG6dDolPYsJA2KxrIxiqN+NmykBUxnByq7
// SIG // uxClpTAactAGIDskk1sV2TmT03MtGsTUbB6hCOz2Mbhr
// SIG // S+zuXDMCFDKMfBEgLyADf/kMnbjTnl/WCPyBoJm4u1Vu
// SIG // zUJLOk2MFCvKyBLTYm7qDQqdCaNm2XlPjhqi/8yYBDCC
// SIG // BgcwggPvoAMCAQICCmEWaDQAAAAAABwwDQYJKoZIhvcN
// SIG // AQEFBQAwXzETMBEGCgmSJomT8ixkARkWA2NvbTEZMBcG
// SIG // CgmSJomT8ixkARkWCW1pY3Jvc29mdDEtMCsGA1UEAxMk
// SIG // TWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9y
// SIG // aXR5MB4XDTA3MDQwMzEyNTMwOVoXDTIxMDQwMzEzMDMw
// SIG // OVowdzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp
// SIG // bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoT
// SIG // FU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEhMB8GA1UEAxMY
// SIG // TWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBMIIBIjANBgkq
// SIG // hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn6Fssd/bSJIq
// SIG // fGsuGeG94uPFmVEjUK3O3RhOJA/u0afRTK10MCAR6wfV
// SIG // VJUVSZQbQpKumFwwJtoAa+h7veyJBw/3DgSY8InMH8sz
// SIG // JIed8vRnHCz8e+eIHernTqOhwSNTyo36Rc8J0F6v0LBC
// SIG // BKL5pmyTZ9co3EZTsIbQ5ShGLieshk9VUgzkAyz7apCQ
// SIG // MG6H81kwnfp+1pez6CGXfvjSE/MIt1NtUrRFkJ9IAEpH
// SIG // ZhEnKWaol+TTBoFKovmEpxFHFAmCn4TtVXj+AZodUAiF
// SIG // ABAwRu233iNGu8QtVJ+vHnhBMXfMm987g5OhYQK1HQ2x
// SIG // /PebsgHOIktU//kFw8IgCwIDAQABo4IBqzCCAacwDwYD
// SIG // VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUIzT42VJGcArt
// SIG // QPt2+7MrsMM1sw8wCwYDVR0PBAQDAgGGMBAGCSsGAQQB
// SIG // gjcVAQQDAgEAMIGYBgNVHSMEgZAwgY2AFA6sgmBAVieX
// SIG // 5SUT/CrhClOVWeSkoWOkYTBfMRMwEQYKCZImiZPyLGQB
// SIG // GRYDY29tMRkwFwYKCZImiZPyLGQBGRYJbWljcm9zb2Z0
// SIG // MS0wKwYDVQQDEyRNaWNyb3NvZnQgUm9vdCBDZXJ0aWZp
// SIG // Y2F0ZSBBdXRob3JpdHmCEHmtFqFKoKWtTHNY9AcTLmUw
// SIG // UAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC5taWNy
// SIG // b3NvZnQuY29tL3BraS9jcmwvcHJvZHVjdHMvbWljcm9z
// SIG // b2Z0cm9vdGNlcnQuY3JsMFQGCCsGAQUFBwEBBEgwRjBE
// SIG // BggrBgEFBQcwAoY4aHR0cDovL3d3dy5taWNyb3NvZnQu
// SIG // Y29tL3BraS9jZXJ0cy9NaWNyb3NvZnRSb290Q2VydC5j
// SIG // cnQwEwYDVR0lBAwwCgYIKwYBBQUHAwgwDQYJKoZIhvcN
// SIG // AQEFBQADggIBABCXisNcA0Q23em0rXfbznlRTQGxLnRx
// SIG // W20ME6vOvnuPuC7UEqKMbWK4VwLLTiATUJndekDiV7uv
// SIG // WJoc4R0Bhqy7ePKL0Ow7Ae7ivo8KBciNSOLwUxXdT6uS
// SIG // 5OeNatWAweaU8gYvhQPpkSokInD79vzkeJkuDfcH4nC8
// SIG // GE6djmsKcpW4oTmcZy3FUQ7qYlw/FpiLID/iBxoy+cwx
// SIG // SnYxPStyC8jqcD3/hQoT38IKYY7w17gX606Lf8U1K16j
// SIG // v+u8fQtCe9RTciHuMMq7eGVcWwEXChQO0toUmPU8uWZY
// SIG // sy0v5/mFhsxRVuidcJRsrDlM1PZ5v6oYemIp76KbKTQG
// SIG // dxpiyT0ebR+C8AvHLLvPQ7Pl+ex9teOkqHQ1uE7FcSMS
// SIG // JnYLPFKMcVpGQxS8s7OwTWfIn0L/gHkhgJ4VMGboQhJe
// SIG // GsieIiHQQ+kr6bv0SMws1NgygEwmKkgkX1rqVu+m3pmd
// SIG // yjpvvYEndAYR7nYhv5uCwSdUtrFqPYmhdmG0bqETpr+q
// SIG // R/ASb/2KMmyy/t9RyIwjyWa9nR2HEmQCPS2vWY+45CHl
// SIG // tbDKY7R4VAXUQS5QrJSwpXirs6CWdRrZkocTdSIvMqgI
// SIG // bqBbjCW/oO+EyiHW6x5PyZruSeD3AWVviQt9yGnI5m7q
// SIG // p5fOMSn/DsVbXNhNG6HY+i+ePy5VFmvJE6P9MIIGgTCC
// SIG // BGmgAwIBAgIKYRUIJwAAAAAADDANBgkqhkiG9w0BAQUF
// SIG // ADBfMRMwEQYKCZImiZPyLGQBGRYDY29tMRkwFwYKCZIm
// SIG // iZPyLGQBGRYJbWljcm9zb2Z0MS0wKwYDVQQDEyRNaWNy
// SIG // b3NvZnQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkw
// SIG // HhcNMDYwMTI1MjMyMjMyWhcNMTcwMTI1MjMzMjMyWjB5
// SIG // MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv
// SIG // bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWlj
// SIG // cm9zb2Z0IENvcnBvcmF0aW9uMSMwIQYDVQQDExpNaWNy
// SIG // b3NvZnQgQ29kZSBTaWduaW5nIFBDQTCCASIwDQYJKoZI
// SIG // hvcNAQEBBQADggEPADCCAQoCggEBAJ+N34U3jLEGVmY2
// SIG // TtQK6zYjkR6vq41Y6cTPwZ86CiTExMResO4VFMX6Ppkz
// SIG // axlpcvR8BV/lmSVE1zUZipDcKI6QDO/VkGGt3twYcC2D
// SIG // yW+vhSz43bm5MP1xeByD/cipuYJnDXq4wQnCvBaXVz8c
// SIG // mNNp1zCQkJCNMB/YJtSee4jZ4gntl0lF6wRSgXV7uLUi
// SIG // uC5Wu9fPqU48CoOiqDrFrbYBDmrPIrQjH2zVJ+e3fsG0
// SIG // 1TKteSUcQobinYX0V9obWS8tJpIpxbPXhaOeYFqU5nuc
// SIG // e16CNEtt/9TuJ9Ci3NGQDM59DhV8iKw0x8BsmIRKyUR5
// SIG // aCjfIoMNuIosSGHi/hECAwEAAaOCAiMwggIfMBAGCSsG
// SIG // AQQBgjcVAQQDAgEAMB0GA1UdDgQWBBRXRXQcXbD2yEMF
// SIG // 4IxULY8yp/5IljALBgNVHQ8EBAMCAcYwDwYDVR0TAQH/
// SIG // BAUwAwEB/zCBmAYDVR0jBIGQMIGNgBQOrIJgQFYnl+Ul
// SIG // E/wq4QpTlVnkpKFjpGEwXzETMBEGCgmSJomT8ixkARkW
// SIG // A2NvbTEZMBcGCgmSJomT8ixkARkWCW1pY3Jvc29mdDEt
// SIG // MCsGA1UEAxMkTWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNh
// SIG // dGUgQXV0aG9yaXR5ghB5rRahSqClrUxzWPQHEy5lMFAG
// SIG // A1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwubWljcm9z
// SIG // b2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL21pY3Jvc29m
// SIG // dHJvb3RjZXJ0LmNybDBUBggrBgEFBQcBAQRIMEYwRAYI
// SIG // KwYBBQUHMAKGOGh0dHA6Ly93d3cubWljcm9zb2Z0LmNv
// SIG // bS9wa2kvY2VydHMvTWljcm9zb2Z0Um9vdENlcnQuY3J0
// SIG // MHYGA1UdIARvMG0wawYJKwYBBAGCNxUvMF4wXAYIKwYB
// SIG // BQUHAgIwUB5OAEMAbwBwAHkAcgBpAGcAaAB0ACAAqQAg
// SIG // ADIAMAAwADYAIABNAGkAYwByAG8AcwBvAGYAdAAgAEMA
// SIG // bwByAHAAbwByAGEAdABpAG8AbgAuMBMGA1UdJQQMMAoG
// SIG // CCsGAQUFBwMDMA0GCSqGSIb3DQEBBQUAA4ICAQAwvLAg
// SIG // pGKgp+85JmE93KzGmdCGxC71gzJlXiI+m9aG+Oi2n8qL
// SIG // 1jt1C6GRPkzdZHSMSfKIjBhnbP4VZka4OkZCl8iRN9Qk
// SIG // sees0+pBFIN308lPBV+jFFK/lqQvPlZbEHXOU8POBVRp
// SIG // tGXJJKUP4SW4GrlN5QK5UB5Ps5gMHZUC7iJZrSLLBXQL
// SIG // BEV7BFng2A+z60z4YN3CeJ7Rup9r9/PufkQRQNK9uptL
// SIG // FghupL5V5KY4EqNI9BxVeoog0X3+kduUjy/Ce2umZIVP
// SIG // o+UsNCldC7/1xzgvxCDEVjH2ac6F+AqR7NDWrro4BQzr
// SIG // bk9MnAMpqqL8GKApDA1cXFYjV9oclg3IJjbBRMvl4eZv
// SIG // ieeP6Zi1c9N44+2jATx05V68bPYhiWcF7JedtbH9r6bp
// SIG // cqXDNOEvn/n0ajniLQSCW/zQnK58nRH55rVTGXS6OUo5
// SIG // 631Cs0o7Nz3CSnsnmOfiTpsbSlQ4aiM3vmq3SO7qQg1J
// SIG // JJGOtwQul2/k50W7j039YNnXWcLYgNZgNHu3oZMg/oG4
// SIG // qqVcCemKDb4oTX7X6A/tZXjRMV+5ZtvfQucLzAIHjd//
// SIG // IAajRWW0szKNLpHiTbSpyfq8awQOsp/qn96kyQqW9I33
// SIG // 2Jio8IUCCFmkIKYsCxryUgbtaeVkGBvgo6veynwUYUO4
// SIG // ZfU2o1UTK2csTRswTDGCBJEwggSNAgEBMIGHMHkxCzAJ
// SIG // BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAw
// SIG // DgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3Nv
// SIG // ZnQgQ29ycG9yYXRpb24xIzAhBgNVBAMTGk1pY3Jvc29m
// SIG // dCBDb2RlIFNpZ25pbmcgUENBAgphCHdfAAAAAABKMAkG
// SIG // BSsOAwIaBQCggb4wGQYJKoZIhvcNAQkDMQwGCisGAQQB
// SIG // gjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcC
// SIG // ARUwIwYJKoZIhvcNAQkEMRYEFHNhL5zyv7Ykvd/hUpPX
// SIG // ZI6n15nAMF4GCisGAQQBgjcCAQwxUDBOoCaAJABNAGkA
// SIG // YwByAG8AcwBvAGYAdAAgAEwAZQBhAHIAbgBpAG4AZ6Ek
// SIG // gCJodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vbGVhcm5p
// SIG // bmcgMA0GCSqGSIb3DQEBAQUABIIBAF87fl22V8mOWHn2
// SIG // SK11JVPKZAl8Tu0UKBQs/yajN5Gwc4J5S6Rotz59+kx/
// SIG // e2fL7/niAcMxL/BajQy94JzGw7SUNlyIoeFQ202cBS8G
// SIG // sZt3JZzh+KHjPLEi//0O4n8+d0ewqzzKyz1s1pu/xtXu
// SIG // jnmrjp7WR/Qi1qHJy8E0tZyBHgx4rVTtNZfvOCiFZaC/
// SIG // /o7JKjZKg/7t4v2NfY2lmEwlTo+bylHBxmmr/lhYMFMe
// SIG // v0uYI1OQ9eB5iKTdQqGzguP02QOLcCnEYM3mfiBdMCvP
// SIG // LOWpskQXKrLHkshWVckwBgnMhU7J46Ps5CtERANU0yKb
// SIG // zVXmv1KIh3QcTt/UksihggIdMIICGQYJKoZIhvcNAQkG
// SIG // MYICCjCCAgYCAQEwgYUwdzELMAkGA1UEBhMCVVMxEzAR
// SIG // BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v
// SIG // bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv
// SIG // bjEhMB8GA1UEAxMYTWljcm9zb2Z0IFRpbWUtU3RhbXAg
// SIG // UENBAgphA9z2AAAAAAAMMAcGBSsOAwIaoF0wGAYJKoZI
// SIG // hvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUx
// SIG // DxcNMTAxMTEwMTc1MDU2WjAjBgkqhkiG9w0BCQQxFgQU
// SIG // aAfxk2Ekd+qYMkXXa3tgfv6kjUgwDQYJKoZIhvcNAQEF
// SIG // BQAEggEAc3km8JvWAbbHoGcnvUJLhO2oJhRNASyED6vn
// SIG // tBYwkoIpnDUSZNqESux/FZAg5a3qEG0z9UeE6PMIy56X
// SIG // u+I5VSjgLaoVfnHe2ahPg7clQAIuSNJJTyoKXRbzeI1v
// SIG // tYx6EV9+XOFGgvSxQURj9S6j+Y2FkSi2R9k+bkwwTKNS
// SIG // 2ATFEAm3C9ewm5VdvW81jHjptzVkLUvM90lJOscnXhr1
// SIG // 8K7zEcRIdTCH8xS6kuCuoto9JcabpXSTYRF93233G1Fl
// SIG // D2NYq7z72DDvAg43KZfbrkbNdiyM/oQxViq0/pZM6uRy
// SIG // vIlfcplkWGPFcHCfXQNZgyye9ZqepZ7QuwfInL6rMg==
// SIG // End signature block
