home *** CD-ROM | disk | FTP | other *** search
/ Clickx 75 / Clickx 75.iso / software / expressionweb / expressionwebv3 / ExpressionWeb_en.exe / Setup / WeConen.cab / xweb.ACTIONS.SWAPIMG.JS.en < prev    next >
Encoding:
Text File  |  2009-06-09  |  24.9 KB  |  784 lines

  1. 
  2. // globals
  3.  
  4. var oImages        = new Array();
  5.  
  6. /////////////////////////////////////////////////////////////////
  7. //
  8. // DHTML Scripting methods
  9. //
  10. /////////////////////////////////////////////////////////////////
  11.  
  12. ///////////////////////////////////////////////////////////
  13. //
  14. // FP_swapImg()
  15. //
  16. //  Arguments:
  17. //        ( { 1 | 0 } preload flag, { 1 | 0 } restore flag, id of <img> element, path of image to swap ), repeat...
  18.  
  19. function FP_swapImg() {//v1.0
  20.  var doc=document,args=arguments,elm,n; doc.$imgSwaps=new Array(); for(n=2; n<args.length;
  21.  n+=2) { elm=FP_getObjectByID(args[n]); if(elm) { doc.$imgSwaps[doc.$imgSwaps.length]=elm;
  22.  elm.$src=elm.src; elm.src=args[n+1]; } }
  23. }
  24.  
  25. /////////////////////////////////////////////////////////////////
  26. //
  27. // DHTML Scripting Extensions API methods
  28. //
  29. /////////////////////////////////////////////////////////////////
  30.  
  31. function getScript()
  32. {
  33.     return "FP_swapImg,FP_preloadImgs,FP_getObjectByID";
  34. }
  35.  
  36. //////////////////////////////////////////////////////////
  37.  
  38. function getScriptCall()
  39. {
  40.     var aImageURLs        = new Array();
  41.     var strArgumentList    = new String( "" );        
  42.     var oListItems        = theForm.lvImages.ListItems;    
  43.     var oDoc            = FrontPage.ActiveDocument;
  44.  
  45.     for( var nListItem = 1; nListItem <= oListItems.Count; nListItem++ )
  46.     {
  47.         var oListItem        = oListItems.Item( nListItem );
  48.         var strSwapImage    = trimStringLeft( trimStringRight( getPropSwapURL( oListItem ) ) );
  49.         var oImage            = oImages[nListItem-1];
  50.         var strImageID        = getImageID( oImage );
  51.         
  52.         if( 0 < strSwapImage.length )             
  53.         {
  54.             // assign <img> tag a unique ID if it doesn't already have one
  55.             if( 0 >= strImageID.length )
  56.             {
  57.                 strImageID = oImage.id = generateUniqueID( oDoc, getDefaultIDPrefix( "img" ) );
  58.             }
  59.         
  60.             if( 0 < strArgumentList.length )
  61.             {
  62.                 strArgumentList += ",";
  63.             }
  64.  
  65.             strArgumentList += FP_ADJECTIVE_ID + "'" + strImageID + "'," + FP_ADJECTIVE_URL + "'" + strSwapImage + "'";
  66.  
  67.             aImageURLs[aImageURLs.length] = strSwapImage;
  68.         }
  69.     }
  70.     
  71.     // handle preloading
  72.     
  73.     var bPreloadImages    = theForm.chkPreloadImages.checked;
  74.             
  75.     if( bPreloadImages )            
  76.         managePreloads( oDoc, aImageURLs, new Array( 0 ) );        // add preloads
  77.     else
  78.         managePreloads( oDoc, new Array( 0 ), aImageURLs );        // remove preloads
  79.  
  80.     var strPreload = bPreloadImages ? "1" : "0";    
  81.     
  82.     // handle restore on mouseout
  83.     
  84.     var bRestore = theForm.chkRestore.checked;
  85.     
  86.     if( bRestore )
  87.     {
  88.         var oElmt        = getBehaviorElement();
  89.         var strMouseOut = oElmt.getAttribute( "onmouseout" );        
  90.         
  91.         if( !strMouseOut ||
  92.             -1 == strMouseOut.search( "FP_swapImgRestore()" ) )
  93.         {        
  94.             oDoc.addScript( oElmt, "onmouseout", "FP_swapImgRestore()" );
  95.         }
  96.     }
  97.     else
  98.     {        
  99.         var oElmt = getBehaviorElement();
  100.         var n;
  101.         var strStatement;
  102.         
  103.         for( 
  104.             strStatement = oDoc.getScript( oElmt, "onmouseout", n = 1 );
  105.             strStatement != "";
  106.             strStatement = oDoc.getScript( oElmt, "onmouseout", ++n ) )
  107.         {
  108.             if( -1 != strStatement.search( "FP_swapImgRestore()" ) )
  109.             {
  110.                 oDoc.removeScript( oElmt, "onmouseout", n );
  111.                 
  112.                 n--;
  113.             }
  114.         }
  115.     }
  116.     
  117.     var strRestore = bRestore ? "1" : "0";
  118.  
  119.     return "FP_swapImg(" + strPreload + "," + strRestore + "," + strArgumentList + ")";    
  120. }
  121.  
  122. //////////////////////////////////////////////////////////
  123.  
  124. function isScriptEnabled( oDoc )
  125. {
  126.     var oImgs = gatherImgTags( oDoc );
  127.     
  128.     return ( 0 < oImgs.length ) ? "onmouseover" : false;    
  129. }
  130.  
  131. //////////////////////////////////////////////////////////
  132.  
  133. function initPropertyDialog( strScriptCall )
  134. {
  135.     var aScriptCallArgs    = extractArgumentsFromScriptCall( strScriptCall );
  136.     var nArguments    = aScriptCallArgs.length;
  137.     var oListItems    = theForm.lvImages.ListItems;    
  138.     var nListItems    = oListItems.Count;
  139.  
  140.     var bPreload    = aScriptCallArgs[0].strArgument == '0' ? false : true;
  141.     var bRestore    = aScriptCallArgs[1].strArgument == '0' ? false : true;
  142.  
  143.     theForm.chkPreloadImages.checked = bPreload;
  144.     theForm.chkRestore.checked = bRestore;
  145.  
  146.     for( var nArg = 2; nArg < nArguments; nArg += 2 )
  147.     {
  148.         var    strImageID        = trimQuotes( aScriptCallArgs[nArg].strArgument );
  149.         var strImageSwapURL = unescapeString( trimStringLeft( trimStringRight( trimQuotes( aScriptCallArgs[nArg+1].strArgument ) ) ) );
  150.         
  151.         for( var nListItem = 1; nListItem <= nListItems; nListItem++ )
  152.         {
  153.             var oListItem        = oListItems.Item( nListItem );
  154.             var strItemImageID    = getPropID( oListItem );
  155.         
  156.             if( strImageID == strItemImageID )
  157.             {
  158.                 setPropSwapURL( oListItem, strImageSwapURL );
  159.             }
  160.         }
  161.     }        
  162.  
  163.     selectionChanged();    
  164.  
  165. //////////////////////////////////////////////////////////
  166.  
  167. function removeScript( oDoc, strScriptCall )
  168. {    
  169.     var aScriptCallArgs    = extractArgumentsFromScriptCall( strScriptCall );
  170.     var nArguments        = aScriptCallArgs.length;
  171.  
  172.     if( 0 >= aScriptCallArgs.length )
  173.         return;
  174.         
  175.     // '1' indicates this swap image added a preload, let's remove it
  176.     if( aScriptCallArgs[0].strArgument == '1' )
  177.     {    
  178.         var astrToAdd = new Array();
  179.         var astrToRemove = new Array();
  180.         
  181.         for( var nArg = 2; nArg + 1 < aScriptCallArgs.length; nArg += 2 )
  182.         {
  183.             astrToRemove[astrToRemove.length] = trimQuotes( aScriptCallArgs[nArg+1].strArgument );
  184.         }            
  185.  
  186.         managePreloads( oDoc, astrToAdd, astrToRemove );        
  187.     }
  188. }
  189.  
  190. //////////////////////////////////////////////////////////
  191.  
  192. function onOk()
  193. {
  194.     var bCanSwap    = false;
  195.     var oListItems    = theForm.lvImages.ListItems;
  196.     
  197.     for( var nListItem = 1; nListItem <= oListItems.Count; nListItem++ )
  198.     {
  199.         var oListItem        = oListItems.Item( nListItem );
  200.         var strSwapImage    = trimStringLeft( trimStringRight( getPropSwapURL( oListItem ) ) );
  201.         
  202.         if( 0 < strSwapImage.length )
  203.         {
  204.             bCanSwap = true;
  205.             
  206.             break;
  207.         }
  208.     }
  209.  
  210.     if( bCanSwap )
  211.     {
  212.         window.returnValue = RETURN_OK;
  213.         window.close();
  214.     }
  215.     else
  216.     {
  217.         alert( L_OkFailed_ErrorMessage );
  218.         
  219.         theForm.edFilename.focus();
  220.     }
  221. }
  222.  
  223. //////////////////////////////////////////////////////////
  224.  
  225. function onCancel()
  226. {
  227.     window.returnValue = RETURN_CANCEL;
  228.     window.close();
  229. }
  230.  
  231. //////////////////////////////////////////////////////////
  232.  
  233. function onResize()
  234. {
  235.     resizeColumnHeaders();
  236. }
  237. //////////////////////////////////////////////////////////
  238.  
  239. function initializeForm()
  240. {    
  241.     window.onresize = onResize;
  242.     
  243.     var oColumnHeaders = theForm.lvImages.ColumnHeaders;
  244.         
  245.     oColumnHeaders.Clear();
  246.  
  247.     var colHeader0 = oColumnHeaders.Add(
  248.                         oColumnHeaders.Count + 1,
  249.                         "", 
  250.                         "",
  251.                         0 );    
  252.  
  253.     var colHeader1 = oColumnHeaders.Add(
  254.                         oColumnHeaders.Count + 1,
  255.                         L_HeaderColumn1_Text, 
  256.                         L_HeaderColumn1_Text,
  257.                         theForm.lvImages.clientWidth / 3 );    
  258.         
  259.     var colHeader2 = oColumnHeaders.Add(
  260.                         oColumnHeaders.Count + 1,
  261.                         L_HeaderColumn2_Text, 
  262.                         L_HeaderColumn2_Text,
  263.                         theForm.lvImages.clientWidth / 3 );    
  264.  
  265.     var colHeader3 = oColumnHeaders.Add(
  266.                         oColumnHeaders.Count + 1,
  267.                         L_HeaderColumn3_Text, 
  268.                         L_HeaderColumn3_Text,
  269.                         theForm.lvImages.clientWidth / 3 );    
  270.                     
  271.     theForm.lvImages.Font.Name        = g_fontName;
  272.     theForm.lvImages.Font.Charset    = g_fontCharSet;
  273.                     
  274.     if( document.dir == "rtl" )
  275.     {
  276.         colHeader1.Alignment = 1;    // lvwColumnRight
  277.         colHeader2.Alignment = 1;    // lvwColumnRight
  278.         colHeader3.Alignment = 1;    // lvwColumnRight
  279.     }    
  280.                     
  281.     populateImageList();    
  282.     
  283.     resizeColumnHeaders();
  284.     
  285.     selectSelectedImage();
  286.         
  287.     selectionChanged();    
  288.     
  289.     var oSel = getBehaviorElement();
  290.         
  291.     // check if we find an existing restore
  292.     var strMouseOut = oSel.getAttribute( 'onmouseout' );
  293.     
  294.     if( strMouseOut )
  295.     {
  296.         if( -1 != strMouseOut.indexOf( "FP_swapImgRestore()" ) )
  297.             theForm.chkRestore.checked = true;
  298.     }    
  299.             
  300.     safeFocus( theForm.edFilename );
  301. }
  302.  
  303. //////////////////////////////////////////////////////////
  304.  
  305. function resizeColumnHeaders()
  306. {
  307.     var nColumn1Width = theForm.lvImages.clientWidth * 0.2;
  308.     var nColumn2Width = theForm.lvImages.clientWidth * 0.4;
  309.     var nColumn3Width = theForm.lvImages.clientWidth - nColumn1Width - nColumn2Width - 5;
  310.     
  311.     nColumn3Width = 0 < nColumn3Width ? nColumn3Width : 0;
  312.     
  313.     theForm.lvImages.ColumnHeaders.Item( 2 ).Width    = nColumn1Width;
  314.     theForm.lvImages.ColumnHeaders.Item( 3 ).Width    = nColumn2Width;
  315.     theForm.lvImages.ColumnHeaders.Item( 4 ).Width    = nColumn3Width;
  316. }
  317.  
  318. //////////////////////////////////////////////////////////
  319.  
  320. function selectSelectedImage()
  321. {
  322.     var oSel = getBehaviorElement();
  323.  
  324.     if( "img" == oSel.tagName )
  325.     {
  326.         for( nImg = 0; nImg < oImages.length; nImg++ )
  327.         {
  328.             if( oImages[nImg] == oSel )
  329.             {
  330.                 var oListItems = theForm.lvImages.ListItems;
  331.             
  332.                 theForm.lvImages.SelectedItem = oListItems.Item( nImg+1 );
  333.                 
  334.                 return;
  335.             }
  336.         }
  337.     }
  338. }
  339.  
  340. //////////////////////////////////////////////////////////
  341.  
  342. function populateImageList()
  343. {
  344.     oImages = gatherImgTags( FrontPage.ActiveDocument );
  345.     
  346.     for( var nImg = 0; nImg < oImages.length; nImg++ )
  347.     {
  348.         addImage( oImages[nImg] );            
  349.     }
  350.     
  351.     var oListItems = theForm.lvImages.ListItems;
  352.     
  353.     if( 0 < oListItems.Count )
  354.     {    
  355.         theForm.lvImages.SelectedItem = oListItems.Item( 1 );
  356.     }
  357.     
  358.     theForm.lvImages.Refresh();
  359. }
  360.  
  361. //////////////////////////////////////////////////////////
  362.  
  363. function gatherImgTags( oDoc )
  364. {    
  365.     var        aoImgs        = oDoc.all.tags( "img" );
  366.     var        oImgs        = new Array();
  367.     
  368.     for( var nImg = 0; nImg < aoImgs.length; nImg++ )
  369.     {
  370.         var    oImg= aoImgs[nImg];
  371.         
  372.         if( isValidElmt( oDoc, oImg ) )        
  373.             oImgs[oImgs.length] = oImg;
  374.     }
  375.     
  376.     return oImgs;
  377. }
  378.  
  379. //////////////////////////////////////////////////////////
  380.  
  381. function addImage( oImage )
  382. {
  383.     var oListItems    = theForm.lvImages.ListItems;
  384.     var nIndex        = oListItems.Count + 1;    
  385.     var    strID         = getImageID( oImage );
  386.             
  387.     if( "" == strID )
  388.     {
  389.         strID = L_UnnamedImage_Text;
  390.     }
  391.         
  392.     var oListItem = oListItems.Add( 
  393.         nIndex,
  394.         "_" + strID + nIndex,            // key
  395.         "" );
  396.         
  397.     oListItem.Tag = new Object();
  398.     
  399.     oListItem.Tag.strID = "";
  400.     oListItem.Tag.strURL = "";
  401.     oListItem.Tag.strSwapURL = "";
  402.  
  403.     var strImageURL = oImage.src;
  404.  
  405.     if( null != FrontPage.ActivePageWindow.Web )
  406.     {
  407.         var strWebUrl = FrontPage.ActivePageWindow.Web.Url + '\\';
  408.         
  409.         strImageURL = FrontPage.MakeRel( strWebUrl, strImageURL );
  410.     }
  411.     else
  412.     {
  413.         strImageURL = FrontPage.MakeAbs( "", strImageURL );
  414.     }
  415.             
  416.     setPropID( oListItem, strID );
  417.     setPropURL( oListItem, strImageURL );
  418. }
  419.  
  420. //////////////////////////////////////////////////////////
  421.  
  422. function fileURLChanged()
  423. {
  424.     var oSelection = theForm.lvImages.SelectedItem;
  425.  
  426.     if( oSelection )
  427.     {
  428.         var strValue = String( theForm.edFilename.value );        
  429.                 
  430.         setPropSwapURL( oSelection, strValue );
  431.     }
  432. }
  433.  
  434. //////////////////////////////////////////////////////////
  435.  
  436. function selectionChanged()
  437. {
  438.     var oSelection = theForm.lvImages.SelectedItem;
  439.  
  440.     if( oSelection )
  441.     {
  442.         theForm.edFilename.value = getPropSwapURL( oSelection );
  443.     }
  444. }
  445.  
  446. //////////////////////////////////////////////////////////
  447.  
  448. function getFileURL()
  449. {
  450.     var oDlgFilePicker = FrontPage.FileDialog( 3 );
  451.     
  452.     oDlgFilePicker.Filters.Clear();
  453.     oDlgFilePicker.Filters.Add( L_FilterImages_Text, "*.gif; *.jpg; *.jpeg; *.png; *.bmp", 1 );
  454.     oDlgFilePicker.AllowMultiSelect = false;
  455.  
  456.     // set initial path to Browse dialog if this is first time run
  457.     var strInitialPath = "";
  458.    
  459.     // only set an initial folder if one hasn't been set already (i.e. the first invocation
  460.     // of the browse dialog
  461.     if( "" == oDlgFilePicker.InitialFileName )
  462.     {        
  463.         if( FrontPage.ActivePageWindow.Web )
  464.         {
  465.             // use web root for webs
  466.             strInitialPath = FrontPage.ActivePageWindow.Web.Url;
  467.         }
  468.         else
  469.         {
  470.             // use My Documents for non-webs
  471.             var oWshShell = new ActiveXObject( "WScript.Shell" );
  472.                 
  473.             strInitialPath = oWshShell.SpecialFolders( "MyDocuments" );
  474.         }
  475.                     
  476.         if( strInitialPath.length && strInitialPath[strInitialPath.length-1] != '\\' && strInitialPath[strInitialPath.length-1] != '/' )        
  477.             strInitialPath = strInitialPath + '\\';        
  478.     }                            
  479.             
  480.     oDlgFilePicker.InitialFileName = strInitialPath;    
  481.     
  482.     oDlgFilePicker.Show();
  483.     
  484.     var oSelectedItems = oDlgFilePicker.SelectedItems;
  485.     
  486.     if( 0 < oSelectedItems.Count )
  487.     {
  488.         var strPickedURL = oSelectedItems.Item( 1 );
  489.         
  490.         // make relative if possible, use document as base URL
  491.         strPickedURL = FrontPage.MakeRel( FrontPage.ActiveDocument.location.href, strPickedURL );
  492.         
  493.         theForm.edFilename.value = strPickedURL;
  494.         
  495.         fileURLChanged();
  496.     }    
  497. }
  498.  
  499. function getImageID( oImage )
  500. {
  501.     var    strID = oImage.id;
  502.     
  503.     if( "" == strID )
  504.     {
  505.         strID = oImage.name;
  506.     }
  507.         
  508.     return strID;
  509. }
  510.  
  511. function toScriptArgumentsString( astrArgs )
  512. {
  513.     var strReturn = "";
  514.  
  515.     for( var nArg= 0; nArg < astrArgs.length; nArg++ )
  516.     {            
  517.         if( 0 < strReturn.length )
  518.         {
  519.             strReturn += ",";
  520.         }
  521.  
  522.         strReturn += "/*url*/'" + astrArgs[nArg] + "'";
  523.     }
  524.     
  525.     return strReturn;
  526. }
  527.  
  528. //////////////////////////////////////////////////////////
  529.  
  530. function getPropID( oItem )
  531. {
  532.     return oItem.Tag.strID;
  533. }
  534.  
  535. //////////////////////////////////////////////////////////
  536.  
  537. function getPropURL( oItem )
  538. {
  539.     return oItem.Tag.strURL;
  540. }
  541.  
  542. //////////////////////////////////////////////////////////
  543.  
  544. function getPropSwapURL( oItem )
  545. {
  546.     return oItem.Tag.strSwapURL;
  547. }
  548.  
  549. //////////////////////////////////////////////////////////
  550.  
  551. function setPropID( oItem, strID )
  552. {
  553.     oItem.SubItems( 1 ) = strID;
  554.     oItem.Tag.strID = strID;
  555. }
  556.  
  557. //////////////////////////////////////////////////////////
  558.  
  559. function setPropURL( oItem, strURL )
  560. {
  561.     oItem.SubItems( 2 ) = strURL;
  562.     oItem.Tag.strURL = strURL;
  563. }
  564.  
  565. //////////////////////////////////////////////////////////
  566.  
  567. function setPropSwapURL( oItem, strSwapURL )
  568. {
  569.     oItem.SubItems( 3 ) = strSwapURL;
  570.     oItem.Tag.strSwapURL = strSwapURL;
  571. }
  572.  
  573. // SIG // Begin signature block
  574. // SIG // MIIasgYJKoZIhvcNAQcCoIIaozCCGp8CAQExCzAJBgUr
  575. // SIG // DgMCGgUAMGcGCisGAQQBgjcCAQSgWTBXMDIGCisGAQQB
  576. // SIG // gjcCAR4wJAIBAQQQEODJBs441BGiowAQS9NQkAIBAAIB
  577. // SIG // AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFObR68mKDaNq
  578. // SIG // RgF/isyaLsjvcBYaoIIVkzCCA8QwggMtoAMCAQICEEe/
  579. // SIG // GZXfjVJGQ/fbbUgNMaQwDQYJKoZIhvcNAQEFBQAwgYsx
  580. // SIG // CzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENh
  581. // SIG // cGUxFDASBgNVBAcTC0R1cmJhbnZpbGxlMQ8wDQYDVQQK
  582. // SIG // EwZUaGF3dGUxHTAbBgNVBAsTFFRoYXd0ZSBDZXJ0aWZp
  583. // SIG // Y2F0aW9uMR8wHQYDVQQDExZUaGF3dGUgVGltZXN0YW1w
  584. // SIG // aW5nIENBMB4XDTAzMTIwNDAwMDAwMFoXDTEzMTIwMzIz
  585. // SIG // NTk1OVowUzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZl
  586. // SIG // cmlTaWduLCBJbmMuMSswKQYDVQQDEyJWZXJpU2lnbiBU
  587. // SIG // aW1lIFN0YW1waW5nIFNlcnZpY2VzIENBMIIBIjANBgkq
  588. // SIG // hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqcqypMzNIK8K
  589. // SIG // fYmsh3XwtE7x38EPv2dhvaNkHNq7+cozq4QwiVh+jNtr
  590. // SIG // 3TaeD7/R7Hjyd6Z+bzy/k68Numj0bJTKvVItq0g99bbV
  591. // SIG // XV8bAp/6L2sepPejmqYayALhf0xS4w5g7EAcfrkN3j/H
  592. // SIG // tN+HvV96ajEuA5mBE6hHIM4xcw1XLc14NDOVEpkSud5o
  593. // SIG // L6rm48KKjCrDiyGHZr2DWFdvdb88qiaHXcoQFTyfhOpU
  594. // SIG // wQpuxP7FSt25BxGXInzbPifRHnjsnzHJ8eYiGdvEs0dD
  595. // SIG // mhpfoB6Q5F717nzxfatiAY/1TQve0CJWqJXNroh2ru66
  596. // SIG // DfPkTdmg+2igrhQ7s4fBuwIDAQABo4HbMIHYMDQGCCsG
  597. // SIG // AQUFBwEBBCgwJjAkBggrBgEFBQcwAYYYaHR0cDovL29j
  598. // SIG // c3AudmVyaXNpZ24uY29tMBIGA1UdEwEB/wQIMAYBAf8C
  599. // SIG // AQAwQQYDVR0fBDowODA2oDSgMoYwaHR0cDovL2NybC52
  600. // SIG // ZXJpc2lnbi5jb20vVGhhd3RlVGltZXN0YW1waW5nQ0Eu
  601. // SIG // Y3JsMBMGA1UdJQQMMAoGCCsGAQUFBwMIMA4GA1UdDwEB
  602. // SIG // /wQEAwIBBjAkBgNVHREEHTAbpBkwFzEVMBMGA1UEAxMM
  603. // SIG // VFNBMjA0OC0xLTUzMA0GCSqGSIb3DQEBBQUAA4GBAEpr
  604. // SIG // +epYwkQcMYl5mSuWv4KsAdYcTM2wilhu3wgpo17IypMT
  605. // SIG // 5wRSDe9HJy8AOLDkyZNOmtQiYhX3PzchT3AxgPGLOIez
  606. // SIG // 6OiXAP7PVZZOJNKpJ056rrdhQfMqzufJ2V7duyuFPrWd
  607. // SIG // tdnhV/++tMV+9c8MnvCX/ivTO1IbGzgn9z9KMIID/zCC
  608. // SIG // AuegAwIBAgIQDekr8NTYKYgYMgUJXpp2iDANBgkqhkiG
  609. // SIG // 9w0BAQUFADBTMQswCQYDVQQGEwJVUzEXMBUGA1UEChMO
  610. // SIG // VmVyaVNpZ24sIEluYy4xKzApBgNVBAMTIlZlcmlTaWdu
  611. // SIG // IFRpbWUgU3RhbXBpbmcgU2VydmljZXMgQ0EwHhcNMDMx
  612. // SIG // MjA0MDAwMDAwWhcNMDgxMjAzMjM1OTU5WjBXMQswCQYD
  613. // SIG // VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4x
  614. // SIG // LzAtBgNVBAMTJlZlcmlTaWduIFRpbWUgU3RhbXBpbmcg
  615. // SIG // U2VydmljZXMgU2lnbmVyMIIBIjANBgkqhkiG9w0BAQEF
  616. // SIG // AAOCAQ8AMIIBCgKCAQEAslAoSN3TaHqEGERmdV1+xLif
  617. // SIG // Yyb/PUOcfBE4ECVVc9l1J2n9TrkgXNMK+aAbKu1VViFh
  618. // SIG // 2B7b5Lwza8fv3aM3ZY4bkwy2Ux5cfGY1XwWKRf52Tt9T
  619. // SIG // gKKBIJ2uiFyiCPflMPnuIjdMQgrO38YfxNZV6YE/tVKj
  620. // SIG // LKoBevKiqo01/p/mXWoFnz1r47+WwP7MYPlA5wegROuB
  621. // SIG // UW6lKvK2ihAo7Y/cBqCGUJp7SggNMB3KEJ5r9+lYrgSp
  622. // SIG // QJmyKOiPFqw841NvS9M1nbVvZB2zliy7Ped56216+Rbm
  623. // SIG // Jq2v75lTt0Aslbh5qv7UUqspdH5C7DkeomoW5lm7JGjY
  624. // SIG // AIBDEIeAawIDAQABo4HKMIHHMDQGCCsGAQUFBwEBBCgw
  625. // SIG // JjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AudmVyaXNp
  626. // SIG // Z24uY29tMAwGA1UdEwEB/wQCMAAwMwYDVR0fBCwwKjAo
  627. // SIG // oCagJIYiaHR0cDovL2NybC52ZXJpc2lnbi5jb20vdHNz
  628. // SIG // LWNhLmNybDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAO
  629. // SIG // BgNVHQ8BAf8EBAMCBsAwJAYDVR0RBB0wG6QZMBcxFTAT
  630. // SIG // BgNVBAMTDFRTQTIwNDgtMS01NDANBgkqhkiG9w0BAQUF
  631. // SIG // AAOCAQEAh3hw2k5SASBb4HnJgjDE/bkZlr2RAMO9zc3G
  632. // SIG // 9A7Y//lNwDNiMBHF9XQb1JLeX5wgE7F8Rb5QzYPngBeD
  633. // SIG // pyeTZxNG+8q4mEEDzJtRWwWLf6hv8xtQGyQu8mmNbCL3
  634. // SIG // u8oWle0MdMBod9nrmWKHwXOQ+Il0eiOro5h7l7H3jylx
  635. // SIG // TS51G0hB2vC1DSBU1negl4Jjaf0Jz4rwdbsJm9n5EVUm
  636. // SIG // mmEyvnoCsHuGvqLDiyIseNE1drySc1z5ueZMFQojzOTS
  637. // SIG // 1DQuSUAVPA9geiTGpWbvls9w6z7n9A1+3NF8o3ZxacGc
  638. // SIG // T0cwNSGxoq8aYjwr2Y6qKgd72BizXHvinaVv/jyJrTCC
  639. // SIG // BBIwggL6oAMCAQICDwDBAIs8PIgR0T72Y+zfQDANBgkq
  640. // SIG // hkiG9w0BAQQFADBwMSswKQYDVQQLEyJDb3B5cmlnaHQg
  641. // SIG // KGMpIDE5OTcgTWljcm9zb2Z0IENvcnAuMR4wHAYDVQQL
  642. // SIG // ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xITAfBgNVBAMT
  643. // SIG // GE1pY3Jvc29mdCBSb290IEF1dGhvcml0eTAeFw05NzAx
  644. // SIG // MTAwNzAwMDBaFw0yMDEyMzEwNzAwMDBaMHAxKzApBgNV
  645. // SIG // BAsTIkNvcHlyaWdodCAoYykgMTk5NyBNaWNyb3NvZnQg
  646. // SIG // Q29ycC4xHjAcBgNVBAsTFU1pY3Jvc29mdCBDb3Jwb3Jh
  647. // SIG // dGlvbjEhMB8GA1UEAxMYTWljcm9zb2Z0IFJvb3QgQXV0
  648. // SIG // aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
  649. // SIG // CgKCAQEAqQK9wXDmO/JOGyifl3heMOqiqY0lX/j+lUyj
  650. // SIG // t/6doiA+fFGim6KPYDJr0UJkee6sdslU2vLrnIYcj5+E
  651. // SIG // ZrPFa3piI9YdPN4PAZLolsS/LWaammgmmdA6LL8MtVgm
  652. // SIG // wUbnCj44liypKDmo7EmDQuOED7uabFVhrIJ8oWAtd0zp
  653. // SIG // mbRkO5pQHDEIJBSfqeeRKxjmPZhjFGBYBWWfHTdSh/en
  654. // SIG // 75QCxhvTv1VFs4mAvzrsVJROrv2nem10Tq8YzJYJKCEA
  655. // SIG // V5BgaTe7SxIHPFb/W/ukZgoIptKBVlfvtjteFoF3BNr2
  656. // SIG // vq6Alf6wzX/WpxpyXDzKvPAIoyIwswaFybMgdxOF3wID
  657. // SIG // AQABo4GoMIGlMIGiBgNVHQEEgZowgZeAEFvQcO9pcp4j
  658. // SIG // UX4Usk2O/8uhcjBwMSswKQYDVQQLEyJDb3B5cmlnaHQg
  659. // SIG // KGMpIDE5OTcgTWljcm9zb2Z0IENvcnAuMR4wHAYDVQQL
  660. // SIG // ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xITAfBgNVBAMT
  661. // SIG // GE1pY3Jvc29mdCBSb290IEF1dGhvcml0eYIPAMEAizw8
  662. // SIG // iBHRPvZj7N9AMA0GCSqGSIb3DQEBBAUAA4IBAQCV6AvA
  663. // SIG // jfOXGDXtuAEk2HcR81xgMp+eC8s+BZGIj8k65iHy8FeT
  664. // SIG // LLWgR8hi7/zXzDs7Wqk2VGn+JG0/ycyq3gV83TGNPZ8Q
  665. // SIG // cGq7/hJPGGnA/NBD4xFaIE/qYnuvqhnIKzclLb5loRKK
  666. // SIG // JQ9jo/dUHPkhydYV81KsbkMyB/2CF/jlZ2wNUfa98VLH
  667. // SIG // vefEMPwgMQmIHZUpGk3VHQKl8YDgA7Rb9LHdyFfuZUnH
  668. // SIG // UlS2tAMoEv+Q1vAIj364l8WrNyzkeuSod+N2oADQaj/B
  669. // SIG // 0jaK4EESqDVqG2rbNeHUHATkqEUEyFozOG5NHA1itwqi
  670. // SIG // jNPVVD9GzRxVpnDbEjqHk3Wfp9KgMIIEyTCCA7GgAwIB
  671. // SIG // AgIQaguZT8AA3qoR1NhAmqi+5jANBgkqhkiG9w0BAQQF
  672. // SIG // ADBwMSswKQYDVQQLEyJDb3B5cmlnaHQgKGMpIDE5OTcg
  673. // SIG // TWljcm9zb2Z0IENvcnAuMR4wHAYDVQQLExVNaWNyb3Nv
  674. // SIG // ZnQgQ29ycG9yYXRpb24xITAfBgNVBAMTGE1pY3Jvc29m
  675. // SIG // dCBSb290IEF1dGhvcml0eTAeFw0wMDEyMTAwODAwMDBa
  676. // SIG // Fw0wNTExMTIwODAwMDBaMIGmMQswCQYDVQQGEwJVUzET
  677. // SIG // MBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVk
  678. // SIG // bW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0
  679. // SIG // aW9uMSswKQYDVQQLEyJDb3B5cmlnaHQgKGMpIDIwMDAg
  680. // SIG // TWljcm9zb2Z0IENvcnAuMSMwIQYDVQQDExpNaWNyb3Nv
  681. // SIG // ZnQgQ29kZSBTaWduaW5nIFBDQTCCASAwDQYJKoZIhvcN
  682. // SIG // AQEBBQADggENADCCAQgCggEBAKKEFVPYCzAONJX/OhvC
  683. // SIG // 8y97bTcjTfPSjOX9r/3FAjQfJMflodxU7H4CdEer2zJY
  684. // SIG // FhRRKTjxfrK0jDpHtTlOblTCMQw6bfvNzctQnBuup9jZ
  685. // SIG // SiY/tcXLj5biSfJt2OmWPt4Fz/CmVTetL2DNgGFCoUlU
  686. // SIG // Sg8Yt0vZk5kwWkd1ZLTTu922qwydT7hzOxg6qrSHjLCI
  687. // SIG // sE1PH04RtTOA3w06ZG9ExzS9SpObvKYd+QUjTmApj8wq
  688. // SIG // 8oSama2o2wpwe9Y0QZClt2bHXBsdozMOm1QDGj+YkLjM
  689. // SIG // 5z0EdEMcj/c55rOsSHprKg5iAWE5dm79PpgHSxTxAUb9
  690. // SIG // FQDgR9pP5AXkgCUCAQOjggEoMIIBJDATBgNVHSUEDDAK
  691. // SIG // BggrBgEFBQcDAzCBogYDVR0BBIGaMIGXgBBb0HDvaXKe
  692. // SIG // I1F+FLJNjv/LoXIwcDErMCkGA1UECxMiQ29weXJpZ2h0
  693. // SIG // IChjKSAxOTk3IE1pY3Jvc29mdCBDb3JwLjEeMBwGA1UE
  694. // SIG // CxMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSEwHwYDVQQD
  695. // SIG // ExhNaWNyb3NvZnQgUm9vdCBBdXRob3JpdHmCDwDBAIs8
  696. // SIG // PIgR0T72Y+zfQDAQBgkrBgEEAYI3FQEEAwIBADAdBgNV
  697. // SIG // HQ4EFgQUKVy5G7bNM+67nll99+XKLsQNNCgwGQYJKwYB
  698. // SIG // BAGCNxQCBAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgFG
  699. // SIG // MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQAD
  700. // SIG // ggEBAEVY4ppBf/ydv0h3d66M2eYZxVe0Gr20uV8CoUVq
  701. // SIG // OVn5uSecLU2e/KLkOIo4ZCJC37kvKs+31gbK6yq/4BqF
  702. // SIG // fNtRCD30ItPUwG2IgRVEX2SDZMSplCyK25A3Sg+36NRh
  703. // SIG // j3Z24dkl/ySElY0EVlSUoRw6PoK87qWHjByMS3lftUn6
  704. // SIG // XjJpOh9UrXVN32TnMDzbZElE+/vEHEJx5qA9Re5rAJ+s
  705. // SIG // Qr26EbNW5PvVoiqB2B9OolW+J49wpqJsG/9UioK8gUum
  706. // SIG // obFmeqkXp8sGwEfrprPpMRVTPSoEv/9zSNyLJ0P8Y+ju
  707. // SIG // JIdbvjbR6DH1Mtle33l6ujCsaYZK+4wRvxuNVFkwggTh
  708. // SIG // MIIDyaADAgECAgphDn2nAAAAAABIMA0GCSqGSIb3DQEB
  709. // SIG // BQUAMIGmMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2Fz
  710. // SIG // aGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UE
  711. // SIG // ChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSswKQYDVQQL
  712. // SIG // EyJDb3B5cmlnaHQgKGMpIDIwMDAgTWljcm9zb2Z0IENv
  713. // SIG // cnAuMSMwIQYDVQQDExpNaWNyb3NvZnQgQ29kZSBTaWdu
  714. // SIG // aW5nIFBDQTAeFw0wMzEwMjUwNTU5MTRaFw0wNTAxMjUw
  715. // SIG // NjA5MTRaMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpX
  716. // SIG // YXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYD
  717. // SIG // VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xHjAcBgNV
  718. // SIG // BAMTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjCCASIwDQYJ
  719. // SIG // KoZIhvcNAQEBBQADggEPADCCAQoCggEBALIthwm1XN9V
  720. // SIG // metSYufT9ONFcakyv5TyDukNrf6dxwRqWE6cpNHYREH7
  721. // SIG // ZH4PZe7IF9pN29nWULQMVltsFohLvwPuUEiD7E+Ik5pR
  722. // SIG // 45QZf/qzl6XOYG2f3UyTOL3NNFlx5obO6YOZoJa46uBE
  723. // SIG // WxNCuTpITlRy9wiW5ADEggF2Q69hwtv65cXwAhPd+DW0
  724. // SIG // Dw1SNkZ0Q7GiypzdfpnxNRF3+xUmAY7P4LgEeCoV/XLG
  725. // SIG // YHaRDOdPshgYG2mJtPEvIRtm6sqRx0YNuRdYcVhWhmUj
  726. // SIG // 0QIyrmSgb9pSlf373Y009cEMNaNH1+kbavoPRbToMh1w
  727. // SIG // Gb3R+eVkH+uHN+pv1A2Dj/0CAwEAAaOCAUAwggE8MA4G
  728. // SIG // A1UdDwEB/wQEAwIGwDAdBgNVHQ4EFgQUgo+nF2RkckTV
  729. // SIG // MK4WhOJTkMs+ntQwEwYDVR0lBAwwCgYIKwYBBQUHAwMw
  730. // SIG // gakGA1UdIwSBoTCBnoAUKVy5G7bNM+67nll99+XKLsQN
  731. // SIG // NCihdKRyMHAxKzApBgNVBAsTIkNvcHlyaWdodCAoYykg
  732. // SIG // MTk5NyBNaWNyb3NvZnQgQ29ycC4xHjAcBgNVBAsTFU1p
  733. // SIG // Y3Jvc29mdCBDb3Jwb3JhdGlvbjEhMB8GA1UEAxMYTWlj
  734. // SIG // cm9zb2Z0IFJvb3QgQXV0aG9yaXR5ghBqC5lPwADeqhHU
  735. // SIG // 2ECaqL7mMEoGA1UdHwRDMEEwP6A9oDuGOWh0dHA6Ly9j
  736. // SIG // cmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3Rz
  737. // SIG // L0NvZGVTaWduUENBLmNybDANBgkqhkiG9w0BAQUFAAOC
  738. // SIG // AQEASkjcMrB6Zz+LKwG0DPXbeUFd4Dftv1Fzf9b5fmxt
  739. // SIG // f5+8paRIHqjj7ab1PIZqkVlM1FMU697uzcPckKMIsYtF
  740. // SIG // Ov1qcPDOBAY2LjC0j0yr6t1DWc2DoNfupEmuECRPmf/V
  741. // SIG // Avnshkyl2CLoARct6xOQmZoRgDMMGYh+BhnUMe1MyX67
  742. // SIG // JMexveVUO+p3EImHbOCcgI3SEORKl6nqVxnXeCsNmzUn
  743. // SIG // sTi+0r+tx/DmbVqfEPbK8fLgMKsBphPItjlkvQkJ7Yu2
  744. // SIG // FBhqeinGdEs7R/EUycveF92yXNjMOYc8OUjFMHyOdVfu
  745. // SIG // 7RugDYVyNWRJvqFJOOKanEp8gmQNAXhfVv6IdDGCBIsw
  746. // SIG // ggSHAgEBMIG1MIGmMQswCQYDVQQGEwJVUzETMBEGA1UE
  747. // SIG // CBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEe
  748. // SIG // MBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSsw
  749. // SIG // KQYDVQQLEyJDb3B5cmlnaHQgKGMpIDIwMDAgTWljcm9z
  750. // SIG // b2Z0IENvcnAuMSMwIQYDVQQDExpNaWNyb3NvZnQgQ29k
  751. // SIG // ZSBTaWduaW5nIFBDQQIKYQ59pwAAAAAASDAJBgUrDgMC
  752. // SIG // GgUAoIGoMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEE
  753. // SIG // MBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMCMG
  754. // SIG // CSqGSIb3DQEJBDEWBBQYuRHJivlf/YVzBU1vzPTqJg3Y
  755. // SIG // ITBIBgorBgEEAYI3AgEMMTowOKAWgBQAcwB3AGEAcABp
  756. // SIG // AG0AZwAuAGoAc6EegBxodHRwOi8vb2ZmaWNlLm1pY3Jv
  757. // SIG // c29mdC5jb20gMA0GCSqGSIb3DQEBAQUABIIBAEhRmtkY
  758. // SIG // F8H92T60lHEcYjz08kqDWP3IAxdQwaax8fYn3HEO2KM6
  759. // SIG // /kF/GXl1gKqyKccqHkVUgyzn6QVq+dHKe0pkBlXqW30Y
  760. // SIG // wgu+J0MyP8yf1q/JIoXCQ8WQeK0SFLmtqLz+c4dOpN+L
  761. // SIG // iLTfwJtm3tYTmcN+9htfTyvWKxPmWFYx5QppCFjGc0xA
  762. // SIG // Do0Uyh852Gp2Rq7+cSfLZ67axC3RTWIZJ+nGBJVvrqdA
  763. // SIG // 2GlNScZ0PE9AuOaZJOK2iUE9ezjU/k8ME7NSPksVFCeU
  764. // SIG // R6iPUDL+uJzIaU1JGaLSf7TovvWDtRMBX1fu8LycAawn
  765. // SIG // 70KCt4VTon+m9mo9mCTLW3SlOM+hggH/MIIB+wYJKoZI
  766. // SIG // hvcNAQkGMYIB7DCCAegCAQEwZzBTMQswCQYDVQQGEwJV
  767. // SIG // UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xKzApBgNV
  768. // SIG // BAMTIlZlcmlTaWduIFRpbWUgU3RhbXBpbmcgU2Vydmlj
  769. // SIG // ZXMgQ0ECEA3pK/DU2CmIGDIFCV6adogwDAYIKoZIhvcN
  770. // SIG // AgUFAKBZMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEw
  771. // SIG // HAYJKoZIhvcNAQkFMQ8XDTA0MDQxNjA5MzcyMlowHwYJ
  772. // SIG // KoZIhvcNAQkEMRIEEL5RHYCgoVIUFdICRMdGVc8wDQYJ
  773. // SIG // KoZIhvcNAQEBBQAEggEAbYnrOmz6u0fBXHBvUotyN5tV
  774. // SIG // z4gcCTuM9z8Bityuy8BqZ4Fa9IKIWbMZDbB3GRFgp82M
  775. // SIG // ZC574ivG8BbSGTKC42HuHafhZ2Lu7pYwxtf6aKIcK8u6
  776. // SIG // tIpaJpb5c8ITh1X9RUa2m6frBCRgcMvSYi5spPw8KV+6
  777. // SIG // C19SEhpk3sgqqKHyyR99fyMWXP53+bjaakhfhKvfqTFv
  778. // SIG // mqIrRUP19Lx04i1cV6fuslDPB/lbk49B3hlSA8wj1vYO
  779. // SIG // gunhdSnkhvUCsnYsMPSbyhzETPVjCBH9vTQgnNZcWPHL
  780. // SIG // 4i2YNzG1kYkpRc9JpYs+gaTE3cyJonN3iy0L7CCNSSUt
  781. // SIG // h3tBwltqow==
  782. // SIG // End signature block
  783.