System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact ae47542aecb764e3c3a8af705e3ef612a10fa5c9:


0000: 2f 2a 0d 0a 20 2a 20 49 6e 73 74 61 6c 6c 65 72  /*.. * Installer
0010: 2e 63 73 20 2d 2d 0d 0a 20 2a 0d 0a 20 2a 20 57  .cs --.. *.. * W
0020: 72 69 74 74 65 6e 20 62 79 20 4a 6f 65 20 4d 69  ritten by Joe Mi
0030: 73 74 61 63 68 6b 69 6e 2e 0d 0a 20 2a 20 52 65  stachkin... * Re
0040: 6c 65 61 73 65 64 20 74 6f 20 74 68 65 20 70 75  leased to the pu
0050: 62 6c 69 63 20 64 6f 6d 61 69 6e 2c 20 75 73 65  blic domain, use
0060: 20 61 74 20 79 6f 75 72 20 6f 77 6e 20 72 69 73   at your own ris
0070: 6b 21 0d 0a 20 2a 2f 0d 0a 0d 0a 75 73 69 6e 67  k!.. */....using
0080: 20 53 79 73 74 65 6d 3b 0d 0a 75 73 69 6e 67 20   System;..using 
0090: 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f  System.Collectio
00a0: 6e 73 2e 47 65 6e 65 72 69 63 3b 0d 0a 75 73 69  ns.Generic;..usi
00b0: 6e 67 20 53 79 73 74 65 6d 2e 44 69 61 67 6e 6f  ng System.Diagno
00c0: 73 74 69 63 73 3b 0d 0a 75 73 69 6e 67 20 53 79  stics;..using Sy
00d0: 73 74 65 6d 2e 45 6e 74 65 72 70 72 69 73 65 53  stem.EnterpriseS
00e0: 65 72 76 69 63 65 73 2e 49 6e 74 65 72 6e 61 6c  ervices.Internal
00f0: 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  ;..using System.
0100: 49 4f 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74 65  IO;..using Syste
0110: 6d 2e 52 65 66 6c 65 63 74 69 6f 6e 3b 0d 0a 75  m.Reflection;..u
0120: 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 75 6e 74  sing System.Runt
0130: 69 6d 65 2e 43 6f 6d 70 69 6c 65 72 53 65 72 76  ime.CompilerServ
0140: 69 63 65 73 3b 0d 0a 0d 0a 23 69 66 20 57 49 4e  ices;....#if WIN
0150: 44 4f 57 53 0d 0a 75 73 69 6e 67 20 53 79 73 74  DOWS..using Syst
0160: 65 6d 2e 52 75 6e 74 69 6d 65 2e 49 6e 74 65 72  em.Runtime.Inter
0170: 6f 70 53 65 72 76 69 63 65 73 3b 0d 0a 23 65 6e  opServices;..#en
0180: 64 69 66 0d 0a 0d 0a 75 73 69 6e 67 20 53 79 73  dif....using Sys
0190: 74 65 6d 2e 53 65 63 75 72 69 74 79 3b 0d 0a 0d  tem.Security;...
01a0: 0a 23 69 66 20 4e 45 54 5f 32 30 20 7c 7c 20 4e  .#if NET_20 || N
01b0: 45 54 5f 33 35 0d 0a 75 73 69 6e 67 20 53 79 73  ET_35..using Sys
01c0: 74 65 6d 2e 53 65 63 75 72 69 74 79 2e 50 65 72  tem.Security.Per
01d0: 6d 69 73 73 69 6f 6e 73 3b 0d 0a 23 65 6e 64 69  missions;..#endi
01e0: 66 0d 0a 0d 0a 75 73 69 6e 67 20 53 79 73 74 65  f....using Syste
01f0: 6d 2e 54 65 78 74 3b 0d 0a 75 73 69 6e 67 20 53  m.Text;..using S
0200: 79 73 74 65 6d 2e 54 68 72 65 61 64 69 6e 67 3b  ystem.Threading;
0210: 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 57  ..using System.W
0220: 69 6e 64 6f 77 73 2e 46 6f 72 6d 73 3b 0d 0a 75  indows.Forms;..u
0230: 73 69 6e 67 20 53 79 73 74 65 6d 2e 58 6d 6c 3b  sing System.Xml;
0240: 0d 0a 75 73 69 6e 67 20 4d 69 63 72 6f 73 6f 66  ..using Microsof
0250: 74 2e 57 69 6e 33 32 3b 0d 0a 0d 0a 6e 61 6d 65  t.Win32;....name
0260: 73 70 61 63 65 20 53 79 73 74 65 6d 2e 44 61 74  space System.Dat
0270: 61 2e 53 51 4c 69 74 65 0d 0a 7b 0d 0a 20 20 20  a.SQLite..{..   
0280: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
0290: 44 65 6c 65 67 61 74 65 73 0d 0a 20 20 20 20 69  Delegates..    i
02a0: 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65  nternal delegate
02b0: 20 76 6f 69 64 20 54 72 61 63 65 43 61 6c 6c 62   void TraceCallb
02c0: 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 73 74  ack(..        st
02d0: 72 69 6e 67 20 6d 65 73 73 61 67 65 2c 20 2f 2a  ring message, /*
02e0: 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
02f0: 73 74 72 69 6e 67 20 63 61 74 65 67 6f 72 79 20  string category 
0300: 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 29 3b  /* in */..    );
0310: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
0320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0360: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72  ///....    inter
0370: 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 62 6f 6f  nal delegate boo
0380: 6c 20 46 72 61 6d 65 77 6f 72 6b 43 6f 6e 66 69  l FrameworkConfi
0390: 67 43 61 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20  gCallback(..    
03a0: 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
03b0: 61 6d 65 2c 20 20 20 20 20 20 20 20 20 20 20 2f  ame,           /
03c0: 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
03d0: 20 73 74 72 69 6e 67 20 69 6e 76 61 72 69 61 6e   string invarian
03e0: 74 4e 61 6d 65 2c 20 20 20 20 20 20 2f 2a 20 69  tName,      /* i
03f0: 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 73 74  n */..        st
0400: 72 69 6e 67 20 6e 61 6d 65 2c 20 20 20 20 20 20  ring name,      
0410: 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
0420: 2f 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  /..        strin
0430: 67 20 64 65 73 63 72 69 70 74 69 6f 6e 2c 20 20  g description,  
0440: 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
0450: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 74          string t
0460: 79 70 65 4e 61 6d 65 2c 20 20 20 20 20 20 20 20  ypeName,        
0470: 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
0480: 20 20 20 20 20 41 73 73 65 6d 62 6c 79 4e 61 6d       AssemblyNam
0490: 65 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20  e assemblyName, 
04a0: 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
04b0: 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f    string directo
04c0: 72 79 2c 20 20 20 20 20 20 20 20 20 20 2f 2a 20  ry,          /* 
04d0: 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 6f  in */..        o
04e0: 62 6a 65 63 74 20 63 6c 69 65 6e 74 44 61 74 61  bject clientData
04f0: 2c 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20  ,         /* in 
0500: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c  */..        bool
0510: 20 70 65 72 55 73 65 72 2c 20 20 20 20 20 20 20   perUser,       
0520: 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d         /* in */.
0530: 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 6f  .        bool wo
0540: 77 36 34 2c 20 20 20 20 20 20 20 20 20 20 20 20  w64,            
0550: 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
0560: 20 20 20 20 20 20 62 6f 6f 6c 20 74 68 72 6f 77        bool throw
0570: 4f 6e 4d 69 73 73 69 6e 67 2c 20 20 20 20 20 20  OnMissing,      
0580: 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
0590: 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66 2c 20     bool whatIf, 
05a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
05b0: 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
05c0: 62 6f 6f 6c 20 76 65 72 62 6f 73 65 2c 20 20 20  bool verbose,   
05d0: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e             /* in
05e0: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 72 65 66   */..        ref
05f0: 20 62 6f 6f 6c 20 73 61 76 65 64 2c 20 20 20 20   bool saved,    
0600: 20 20 20 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a          /* out *
0610: 2f 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 73  /..        ref s
0620: 74 72 69 6e 67 20 65 72 72 6f 72 20 20 20 20 20  tring error     
0630: 20 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d        /* out */.
0640: 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
0650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
06a0: 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67    internal deleg
06b0: 61 74 65 20 62 6f 6f 6c 20 46 72 61 6d 65 77 6f  ate bool Framewo
06c0: 72 6b 52 65 67 69 73 74 72 79 43 61 6c 6c 62 61  rkRegistryCallba
06d0: 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 73  ck(..        Ins
06e0: 74 61 6c 6c 65 72 2e 4d 6f 63 6b 52 65 67 69 73  taller.MockRegis
06f0: 74 72 79 4b 65 79 20 72 6f 6f 74 4b 65 79 2c 20  tryKey rootKey, 
0700: 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
0710: 20 20 73 74 72 69 6e 67 20 66 72 61 6d 65 77 6f    string framewo
0720: 72 6b 4e 61 6d 65 2c 20 20 20 20 20 20 20 20 20  rkName,         
0730: 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20       /* in */.. 
0740: 20 20 20 20 20 20 20 56 65 72 73 69 6f 6e 20 66         Version f
0750: 72 61 6d 65 77 6f 72 6b 56 65 72 73 69 6f 6e 2c  rameworkVersion,
0760: 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20            /* in 
0770: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69  */..        stri
0780: 6e 67 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 2c  ng platformName,
0790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
07a0: 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
07b0: 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72   string director
07c0: 79 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20  y,              
07d0: 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
07e0: 20 20 20 20 20 20 6f 62 6a 65 63 74 20 63 6c 69        object cli
07f0: 65 6e 74 44 61 74 61 2c 20 20 20 20 20 20 20 20  entData,        
0800: 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
0810: 2f 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20  /..        bool 
0820: 70 65 72 55 73 65 72 2c 20 20 20 20 20 20 20 20  perUser,        
0830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
0840: 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
0850: 62 6f 6f 6c 20 77 6f 77 36 34 2c 20 20 20 20 20  bool wow64,     
0860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0870: 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
0880: 20 20 20 20 20 62 6f 6f 6c 20 74 68 72 6f 77 4f       bool throwO
0890: 6e 4d 69 73 73 69 6e 67 2c 20 20 20 20 20 20 20  nMissing,       
08a0: 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f          /* in */
08b0: 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77  ..        bool w
08c0: 68 61 74 49 66 2c 20 20 20 20 20 20 20 20 20 20  hatIf,          
08d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
08e0: 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 62  in */..        b
08f0: 6f 6f 6c 20 76 65 72 62 6f 73 65 2c 20 20 20 20  ool verbose,    
0900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0910: 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
0920: 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 65      ref string e
0930: 72 72 6f 72 20 20 20 20 20 20 20 20 20 20 20 20  rror            
0940: 20 20 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f         /* out */
0950: 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
0960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
09a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
09b0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65     internal dele
09c0: 67 61 74 65 20 62 6f 6f 6c 20 56 69 73 75 61 6c  gate bool Visual
09d0: 53 74 75 64 69 6f 52 65 67 69 73 74 72 79 43 61  StudioRegistryCa
09e0: 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20  llback(..       
09f0: 20 49 6e 73 74 61 6c 6c 65 72 2e 4d 6f 63 6b 52   Installer.MockR
0a00: 65 67 69 73 74 72 79 4b 65 79 20 72 6f 6f 74 4b  egistryKey rootK
0a10: 65 79 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  ey, /* in */..  
0a20: 20 20 20 20 20 20 56 65 72 73 69 6f 6e 20 76 73        Version vs
0a30: 56 65 72 73 69 6f 6e 2c 20 20 20 20 20 20 20 20  Version,        
0a40: 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
0a50: 2f 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  /..        strin
0a60: 67 20 73 75 66 66 69 78 2c 20 20 20 20 20 20 20  g suffix,       
0a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
0a80: 20 69 6e 2c 20 6f 70 74 69 6f 6e 61 6c 20 2a 2f   in, optional */
0a90: 0d 0a 20 20 20 20 20 20 20 20 49 6e 73 74 61 6c  ..        Instal
0aa0: 6c 65 72 2e 50 61 63 6b 61 67 65 20 70 61 63 6b  ler.Package pack
0ab0: 61 67 65 2c 20 20 20 20 20 20 20 20 20 2f 2a 20  age,         /* 
0ac0: 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 73  in */..        s
0ad0: 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 2c  tring directory,
0ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0af0: 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
0b00: 20 20 20 20 6f 62 6a 65 63 74 20 63 6c 69 65 6e      object clien
0b10: 74 44 61 74 61 2c 20 20 20 20 20 20 20 20 20 20  tData,          
0b20: 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d         /* in */.
0b30: 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 70 65  .        bool pe
0b40: 72 55 73 65 72 2c 20 20 20 20 20 20 20 20 20 20  rUser,          
0b50: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69              /* i
0b60: 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 62 6f  n */..        bo
0b70: 6f 6c 20 77 6f 77 36 34 2c 20 20 20 20 20 20 20  ol wow64,       
0b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0b90: 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
0ba0: 20 20 20 62 6f 6f 6c 20 74 68 72 6f 77 4f 6e 4d     bool throwOnM
0bb0: 69 73 73 69 6e 67 2c 20 20 20 20 20 20 20 20 20  issing,         
0bc0: 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
0bd0: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61          bool wha
0be0: 74 49 66 2c 20 20 20 20 20 20 20 20 20 20 20 20  tIf,            
0bf0: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e             /* in
0c00: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f   */..        boo
0c10: 6c 20 76 65 72 62 6f 73 65 2c 20 20 20 20 20 20  l verbose,      
0c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0c30: 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
0c40: 20 20 72 65 66 20 73 74 72 69 6e 67 20 65 72 72    ref string err
0c50: 6f 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20  or              
0c60: 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a       /* out */..
0c70: 20 20 20 20 29 3b 0d 0a 20 20 20 20 23 65 6e 64      );..    #end
0c80: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
0c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
0ce0: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
0cf0: 45 6e 75 6d 65 72 61 74 69 6f 6e 73 0d 0a 20 20  Enumerations..  
0d00: 20 20 5b 46 6c 61 67 73 28 29 5d 0d 0a 20 20 20    [Flags()]..   
0d10: 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 49 6e 73   public enum Ins
0d20: 74 61 6c 6c 46 6c 61 67 73 0d 0a 20 20 20 20 7b  tallFlags..    {
0d30: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
0d40: 6e 20 4e 6f 72 6d 61 6c 20 56 61 6c 75 65 73 0d  n Normal Values.
0d50: 0a 20 20 20 20 20 20 20 20 4e 6f 6e 65 20 3d 20  .        None = 
0d60: 30 78 30 2c 0d 0a 20 20 20 20 20 20 20 20 43 6f  0x0,..        Co
0d70: 72 65 47 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79  reGlobalAssembly
0d80: 43 61 63 68 65 20 3d 20 30 78 31 2c 0d 0a 20 20  Cache = 0x1,..  
0d90: 20 20 20 20 20 20 4c 69 6e 71 47 6c 6f 62 61 6c        LinqGlobal
0da0: 41 73 73 65 6d 62 6c 79 43 61 63 68 65 20 3d 20  AssemblyCache = 
0db0: 30 78 32 2c 0d 0a 20 20 20 20 20 20 20 20 45 66  0x2,..        Ef
0dc0: 36 47 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79 43  6GlobalAssemblyC
0dd0: 61 63 68 65 20 3d 20 30 78 34 2c 0d 0a 20 20 20  ache = 0x4,..   
0de0: 20 20 20 20 20 41 73 73 65 6d 62 6c 79 46 6f 6c       AssemblyFol
0df0: 64 65 72 73 20 3d 20 30 78 38 2c 0d 0a 20 20 20  ders = 0x8,..   
0e00: 20 20 20 20 20 44 62 50 72 6f 76 69 64 65 72 46       DbProviderF
0e10: 61 63 74 6f 72 79 20 3d 20 30 78 31 30 2c 0d 0a  actory = 0x10,..
0e20: 20 20 20 20 20 20 20 20 56 73 50 61 63 6b 61 67          VsPackag
0e30: 65 20 3d 20 30 78 32 30 2c 0d 0a 20 20 20 20 20  e = 0x20,..     
0e40: 20 20 20 56 73 50 61 63 6b 61 67 65 47 6c 6f 62     VsPackageGlob
0e50: 61 6c 41 73 73 65 6d 62 6c 79 43 61 63 68 65 20  alAssemblyCache 
0e60: 3d 20 30 78 34 30 2c 0d 0a 20 20 20 20 20 20 20  = 0x40,..       
0e70: 20 56 73 44 61 74 61 53 6f 75 72 63 65 20 3d 20   VsDataSource = 
0e80: 30 78 38 30 2c 0d 0a 20 20 20 20 20 20 20 20 56  0x80,..        V
0e90: 73 44 61 74 61 50 72 6f 76 69 64 65 72 20 3d 20  sDataProvider = 
0ea0: 30 78 31 30 30 2c 0d 0a 20 20 20 20 20 20 20 20  0x100,..        
0eb0: 56 73 44 65 76 45 6e 76 53 65 74 75 70 20 3d 20  VsDevEnvSetup = 
0ec0: 30 78 32 30 30 2c 0d 0a 20 20 20 20 20 20 20 20  0x200,..        
0ed0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
0ee0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
0ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
0f30: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
0f40: 20 43 6f 6d 70 6f 73 69 74 65 20 56 61 6c 75 65   Composite Value
0f50: 73 0d 0a 20 20 20 20 20 20 20 20 46 72 61 6d 65  s..        Frame
0f60: 77 6f 72 6b 47 6c 6f 62 61 6c 41 73 73 65 6d 62  workGlobalAssemb
0f70: 6c 79 43 61 63 68 65 20 3d 20 43 6f 72 65 47 6c  lyCache = CoreGl
0f80: 6f 62 61 6c 41 73 73 65 6d 62 6c 79 43 61 63 68  obalAssemblyCach
0f90: 65 20 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e |..           
0fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0fb0: 20 20 20 20 20 20 20 20 20 20 20 20 4c 69 6e 71              Linq
0fc0: 47 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79 43 61  GlobalAssemblyCa
0fd0: 63 68 65 20 7c 0d 0a 20 20 20 20 20 20 20 20 20  che |..         
0fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45 66                Ef
1000: 36 47 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79 43  6GlobalAssemblyC
1010: 61 63 68 65 2c 0d 0a 0d 0a 20 20 20 20 20 20 20  ache,....       
1020: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1060: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1070: 20 20 20 20 46 72 61 6d 65 77 6f 72 6b 20 3d 20      Framework = 
1080: 46 72 61 6d 65 77 6f 72 6b 47 6c 6f 62 61 6c 41  FrameworkGlobalA
1090: 73 73 65 6d 62 6c 79 43 61 63 68 65 20 7c 20 41  ssemblyCache | A
10a0: 73 73 65 6d 62 6c 79 46 6f 6c 64 65 72 73 20 7c  ssemblyFolders |
10b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10c0: 20 20 20 20 20 20 44 62 50 72 6f 76 69 64 65 72        DbProvider
10d0: 46 61 63 74 6f 72 79 2c 0d 0a 0d 0a 20 20 20 20  Factory,....    
10e0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
10f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1130: 20 20 20 20 20 20 20 56 73 20 3d 20 56 73 50 61         Vs = VsPa
1140: 63 6b 61 67 65 20 7c 20 56 73 50 61 63 6b 61 67  ckage | VsPackag
1150: 65 47 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79 43  eGlobalAssemblyC
1160: 61 63 68 65 20 7c 20 56 73 44 61 74 61 53 6f 75  ache | VsDataSou
1170: 72 63 65 20 7c 0d 0a 20 20 20 20 20 20 20 20 20  rce |..         
1180: 20 20 20 20 56 73 44 61 74 61 50 72 6f 76 69 64      VsDataProvid
1190: 65 72 20 7c 20 56 73 44 65 76 45 6e 76 53 65 74  er | VsDevEnvSet
11a0: 75 70 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  up,....        /
11b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11f0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1200: 20 20 41 6c 6c 47 6c 6f 62 61 6c 41 73 73 65 6d    AllGlobalAssem
1210: 62 6c 79 43 61 63 68 65 20 3d 20 46 72 61 6d 65  blyCache = Frame
1220: 77 6f 72 6b 47 6c 6f 62 61 6c 41 73 73 65 6d 62  workGlobalAssemb
1230: 6c 79 43 61 63 68 65 20 7c 0d 0a 20 20 20 20 20  lyCache |..     
1240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1250: 20 20 20 20 20 20 20 20 20 20 20 20 56 73 50 61              VsPa
1260: 63 6b 61 67 65 47 6c 6f 62 61 6c 41 73 73 65 6d  ckageGlobalAssem
1270: 62 6c 79 43 61 63 68 65 2c 0d 0a 0d 0a 20 20 20  blyCache,....   
1280: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
12d0: 20 20 20 20 20 20 20 20 41 6c 6c 20 3d 20 46 72          All = Fr
12e0: 61 6d 65 77 6f 72 6b 20 7c 20 56 73 2c 0d 0a 0d  amework | Vs,...
12f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1340: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 41 6c 6c 45  ....        AllE
1350: 78 63 65 70 74 47 6c 6f 62 61 6c 41 73 73 65 6d  xceptGlobalAssem
1360: 62 6c 79 43 61 63 68 65 20 3d 20 41 6c 6c 20 26  blyCache = All &
1370: 20 7e 41 6c 6c 47 6c 6f 62 61 6c 41 73 73 65 6d   ~AllGlobalAssem
1380: 62 6c 79 43 61 63 68 65 2c 0d 0a 20 20 20 20 20  blyCache,..     
1390: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
13a0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
13b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
1400: 69 6f 6e 20 53 75 67 67 65 73 74 65 64 20 44 65  ion Suggested De
1410: 66 61 75 6c 74 20 56 61 6c 75 65 73 0d 0a 20 20  fault Values..  
1420: 20 20 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20        Default = 
1430: 41 6c 6c 0d 0a 20 20 20 20 20 20 20 20 23 65 6e  All..        #en
1440: 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a  dregion..    }..
1450: 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
1460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14a0: 2f 0d 0a 0d 0a 20 20 20 20 5b 46 6c 61 67 73 28  /....    [Flags(
14b0: 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 65  )]..    public e
14c0: 6e 75 6d 20 50 72 6f 76 69 64 65 72 46 6c 61 67  num ProviderFlag
14d0: 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  s..    {..      
14e0: 20 20 23 72 65 67 69 6f 6e 20 4e 6f 72 6d 61 6c    #region Normal
14f0: 20 56 61 6c 75 65 73 0d 0a 20 20 20 20 20 20 20   Values..       
1500: 20 4e 6f 6e 65 20 3d 20 30 78 30 2c 0d 0a 20 20   None = 0x0,..  
1510: 20 20 20 20 20 20 53 79 73 74 65 6d 45 66 36 4d        SystemEf6M
1520: 75 73 74 42 65 47 6c 6f 62 61 6c 20 3d 20 30 78  ustBeGlobal = 0x
1530: 31 2c 0d 0a 20 20 20 20 20 20 20 20 44 69 64 4c  1,..        DidL
1540: 69 6e 71 46 6f 72 63 65 54 72 61 63 65 20 3d 20  inqForceTrace = 
1550: 30 78 32 2c 0d 0a 20 20 20 20 20 20 20 20 44 69  0x2,..        Di
1560: 64 45 66 36 46 6f 72 63 65 54 72 61 63 65 20 3d  dEf6ForceTrace =
1570: 20 30 78 34 2c 0d 0a 20 20 20 20 20 20 20 20 44   0x4,..        D
1580: 69 64 45 66 36 52 65 73 6f 6c 76 65 54 72 61 63  idEf6ResolveTrac
1590: 65 20 3d 20 30 78 38 2c 0d 0a 20 20 20 20 20 20  e = 0x8,..      
15a0: 20 20 46 6f 72 63 65 4c 69 6e 71 45 6e 61 62 6c    ForceLinqEnabl
15b0: 65 64 20 3d 20 30 78 31 30 2c 0d 0a 20 20 20 20  ed = 0x10,..    
15c0: 20 20 20 20 46 6f 72 63 65 4c 69 6e 71 44 69 73      ForceLinqDis
15d0: 61 62 6c 65 64 20 3d 20 30 78 32 30 2c 0d 0a 20  abled = 0x20,.. 
15e0: 20 20 20 20 20 20 20 46 6f 72 63 65 45 66 36 45         ForceEf6E
15f0: 6e 61 62 6c 65 64 20 3d 20 30 78 34 30 2c 0d 0a  nabled = 0x40,..
1600: 20 20 20 20 20 20 20 20 46 6f 72 63 65 45 66 36          ForceEf6
1610: 44 69 73 61 62 6c 65 64 20 3d 20 30 78 38 30 2c  Disabled = 0x80,
1620: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
1630: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
1640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1680: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1690: 20 20 20 23 72 65 67 69 6f 6e 20 53 75 67 67 65     #region Sugge
16a0: 73 74 65 64 20 44 65 66 61 75 6c 74 20 56 61 6c  sted Default Val
16b0: 75 65 73 0d 0a 20 20 20 20 20 20 20 20 44 65 66  ues..        Def
16c0: 61 75 6c 74 20 3d 20 4e 6f 6e 65 0d 0a 20 20 20  ault = None..   
16d0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
16e0: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
16f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1740: 20 5b 46 6c 61 67 73 28 29 5d 0d 0a 20 20 20 20   [Flags()]..    
1750: 70 75 62 6c 69 63 20 65 6e 75 6d 20 54 72 61 63  public enum Trac
1760: 65 50 72 69 6f 72 69 74 79 0d 0a 20 20 20 20 7b  ePriority..    {
1770: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
1780: 6e 20 4e 6f 72 6d 61 6c 20 56 61 6c 75 65 73 0d  n Normal Values.
1790: 0a 20 20 20 20 20 20 20 20 4e 6f 6e 65 20 3d 20  .        None = 
17a0: 30 78 30 2c 0d 0a 20 20 20 20 20 20 20 20 4c 6f  0x0,..        Lo
17b0: 77 65 73 74 20 3d 20 30 78 31 2c 0d 0a 20 20 20  west = 0x1,..   
17c0: 20 20 20 20 20 4c 6f 77 65 72 20 3d 20 30 78 32       Lower = 0x2
17d0: 2c 0d 0a 20 20 20 20 20 20 20 20 4c 6f 77 20 3d  ,..        Low =
17e0: 20 30 78 34 2c 0d 0a 20 20 20 20 20 20 20 20 4d   0x4,..        M
17f0: 65 64 69 75 6d 4c 6f 77 20 3d 20 30 78 38 2c 0d  ediumLow = 0x8,.
1800: 0a 20 20 20 20 20 20 20 20 4d 65 64 69 75 6d 20  .        Medium 
1810: 3d 20 30 78 31 30 2c 0d 0a 20 20 20 20 20 20 20  = 0x10,..       
1820: 20 4d 65 64 69 75 6d 48 69 67 68 20 3d 20 30 78   MediumHigh = 0x
1830: 32 30 2c 0d 0a 20 20 20 20 20 20 20 20 48 69 67  20,..        Hig
1840: 68 20 3d 20 30 78 34 30 2c 0d 0a 20 20 20 20 20  h = 0x40,..     
1850: 20 20 20 48 69 67 68 65 72 20 3d 20 30 78 38 30     Higher = 0x80
1860: 2c 0d 0a 20 20 20 20 20 20 20 20 48 69 67 68 65  ,..        Highe
1870: 73 74 20 3d 20 30 78 31 30 30 2c 0d 0a 20 20 20  st = 0x100,..   
1880: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
1890: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
18a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
18f0: 65 67 69 6f 6e 20 53 75 67 67 65 73 74 65 64 20  egion Suggested 
1900: 44 65 66 61 75 6c 74 20 46 6c 61 67 73 0d 0a 20  Default Flags.. 
1910: 20 20 20 20 20 20 20 44 65 66 61 75 6c 74 20 3d         Default =
1920: 20 4d 65 64 69 75 6d 0d 0a 20 20 20 20 20 20 20   Medium..       
1930: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20   #endregion..   
1940: 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
1950: 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
1960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
19b0: 67 69 6f 6e 20 49 6e 73 74 61 6c 6c 65 72 20 43  gion Installer C
19c0: 6c 61 73 73 0d 0a 23 69 66 20 4e 45 54 5f 34 30  lass..#if NET_40
19d0: 20 7c 7c 20 4e 45 54 5f 34 35 20 7c 7c 20 4e 45   || NET_45 || NE
19e0: 54 5f 34 35 31 20 7c 7c 20 4e 45 54 5f 34 35 32  T_451 || NET_452
19f0: 20 7c 7c 20 4e 45 54 5f 34 36 20 7c 7c 20 4e 45   || NET_46 || NE
1a00: 54 5f 34 36 31 20 7c 7c 20 4e 45 54 5f 34 36 32  T_461 || NET_462
1a10: 20 7c 7c 20 4e 45 54 5f 34 37 20 7c 7c 20 4e 45   || NET_47 || NE
1a20: 54 5f 34 37 31 0d 0a 20 20 20 20 5b 53 65 63 75  T_471..    [Secu
1a30: 72 69 74 79 43 72 69 74 69 63 61 6c 28 29 5d 0d  rityCritical()].
1a40: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 53 65 63  .#else..    [Sec
1a50: 75 72 69 74 79 50 65 72 6d 69 73 73 69 6f 6e 28  urityPermission(
1a60: 53 65 63 75 72 69 74 79 41 63 74 69 6f 6e 2e 4c  SecurityAction.L
1a70: 69 6e 6b 44 65 6d 61 6e 64 2c 20 55 6e 6d 61 6e  inkDemand, Unman
1a80: 61 67 65 64 43 6f 64 65 20 3d 20 74 72 75 65 29  agedCode = true)
1a90: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1aa0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63  nternal static c
1ab0: 6c 61 73 73 20 49 6e 73 74 61 6c 6c 65 72 0d 0a  lass Installer..
1ac0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23      {..        #
1ad0: 72 65 67 69 6f 6e 20 55 6e 73 61 66 65 20 4e 61  region Unsafe Na
1ae0: 74 69 76 65 20 4d 65 74 68 6f 64 73 20 43 6c 61  tive Methods Cla
1af0: 73 73 0d 0a 20 20 20 20 20 20 20 20 5b 53 75 70  ss..        [Sup
1b00: 70 72 65 73 73 55 6e 6d 61 6e 61 67 65 64 43 6f  pressUnmanagedCo
1b10: 64 65 53 65 63 75 72 69 74 79 28 29 5d 0d 0a 20  deSecurity()].. 
1b20: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
1b30: 65 61 6c 65 64 20 63 6c 61 73 73 20 55 6e 73 61  ealed class Unsa
1b40: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 0d  feNativeMethods.
1b50: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
1b60: 57 49 4e 44 4f 57 53 0d 0a 20 20 20 20 20 20 20  WINDOWS..       
1b70: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74       #region Nat
1b80: 69 76 65 20 57 69 6e 33 32 20 43 6f 6e 73 74 61  ive Win32 Consta
1b90: 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nts..           
1ba0: 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 69   private const i
1bb0: 6e 74 20 4d 41 58 5f 50 41 54 48 20 3d 20 32 36  nt MAX_PATH = 26
1bc0: 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  0;....          
1bd0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c10: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1c20: 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e       private con
1c30: 73 74 20 69 6e 74 20 43 53 49 44 4c 5f 53 59 53  st int CSIDL_SYS
1c40: 54 45 4d 58 38 36 20 3d 20 30 78 30 30 32 39 3b  TEMX86 = 0x0029;
1c50: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
1cb0: 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
1cc0: 20 69 6e 74 20 53 48 47 46 50 5f 54 59 50 45 5f   int SHGFP_TYPE_
1cd0: 43 55 52 52 45 4e 54 20 3d 20 30 3b 0d 0a 0d 0a  CURRENT = 0;....
1ce0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
1cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1d30: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
1d40: 72 69 76 61 74 65 20 63 6f 6e 73 74 20 69 6e 74  rivate const int
1d50: 20 53 5f 4f 4b 20 3d 20 30 3b 20 2f 2a 20 48 52   S_OK = 0; /* HR
1d60: 45 53 55 4c 54 20 2a 2f 0d 0a 20 20 20 20 20 20  ESULT */..      
1d70: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
1d80: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
1de0: 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76     #region Nativ
1df0: 65 20 57 69 6e 64 6f 77 73 20 4d 65 74 68 6f 64  e Windows Method
1e00: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b  s..            [
1e10: 44 6c 6c 49 6d 70 6f 72 74 28 22 73 68 66 6f 6c  DllImport("shfol
1e20: 64 65 72 2e 64 6c 6c 22 2c 0d 0a 20 20 20 20 20  der.dll",..     
1e30: 20 20 20 20 20 20 20 20 20 20 20 43 61 6c 6c 69             Calli
1e40: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1e50: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e60: 2e 57 69 6e 61 70 69 2c 0d 0a 20 20 20 20 20 20  .Winapi,..      
1e70: 20 20 20 20 20 20 20 20 20 20 43 68 61 72 53 65            CharSe
1e80: 74 20 3d 20 43 68 61 72 53 65 74 2e 41 75 74 6f  t = CharSet.Auto
1e90: 2c 20 42 65 73 74 46 69 74 4d 61 70 70 69 6e 67  , BestFitMapping
1ea0: 20 3d 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20   = false,..     
1eb0: 20 20 20 20 20 20 20 20 20 20 20 54 68 72 6f 77             Throw
1ec0: 4f 6e 55 6e 6d 61 70 70 61 62 6c 65 43 68 61 72  OnUnmappableChar
1ed0: 20 3d 20 74 72 75 65 2c 20 53 65 74 4c 61 73 74   = true, SetLast
1ee0: 45 72 72 6f 72 20 3d 20 74 72 75 65 29 5d 0d 0a  Error = true)]..
1ef0: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
1f00: 61 74 65 20 73 74 61 74 69 63 20 65 78 74 65 72  ate static exter
1f10: 6e 20 69 6e 74 20 53 48 47 65 74 46 6f 6c 64 65  n int SHGetFolde
1f20: 72 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20 20  rPath(..        
1f30: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 68          IntPtr h
1f40: 57 6e 64 4f 77 6e 65 72 2c 20 69 6e 74 20 6e 46  WndOwner, int nF
1f50: 6f 6c 64 65 72 2c 20 49 6e 74 50 74 72 20 68 54  older, IntPtr hT
1f60: 6f 6b 65 6e 2c 20 75 69 6e 74 20 66 6c 61 67 73  oken, uint flags
1f70: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1f80: 20 20 20 49 6e 74 50 74 72 20 62 75 66 66 65 72     IntPtr buffer
1f90: 20 2f 2a 20 3e 3d 20 4d 41 58 5f 50 41 54 48 20   /* >= MAX_PATH 
1fa0: 2a 2f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  */);..          
1fb0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
1fc0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
1fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2010: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
2020: 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 57 72  region Public Wr
2030: 61 70 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20  apper Methods.. 
2040: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
2050: 63 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  c static string 
2060: 47 65 74 53 79 73 74 65 6d 44 69 72 65 63 74 6f  GetSystemDirecto
2070: 72 79 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ry()..          
2080: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2090: 20 20 20 20 20 49 6e 74 50 74 72 20 62 75 66 66       IntPtr buff
20a0: 65 72 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  er = IntPtr.Zero
20b0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
20c0: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
20d0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
20e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20f0: 20 62 75 66 66 65 72 20 3d 20 4d 61 72 73 68 61   buffer = Marsha
2100: 6c 2e 41 6c 6c 6f 63 43 6f 54 61 73 6b 4d 65 6d  l.AllocCoTaskMem
2110: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2120: 20 20 20 20 20 20 20 20 20 20 20 73 69 7a 65 6f             sizeo
2130: 66 28 63 68 61 72 29 20 2a 20 28 4d 41 58 5f 50  f(char) * (MAX_P
2140: 41 54 48 20 2b 20 31 29 29 3b 0d 0a 0d 0a 20 20  ATH + 1));....  
2150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2160: 20 20 69 66 20 28 62 75 66 66 65 72 20 21 3d 20    if (buffer != 
2170: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
2180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2190: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
21a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
21b0: 28 53 48 47 65 74 46 6f 6c 64 65 72 50 61 74 68  (SHGetFolderPath
21c0: 28 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d 0a 20  (IntPtr.Zero,.. 
21d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
21f0: 53 49 44 4c 5f 53 59 53 54 45 4d 58 38 36 2c 20  SIDL_SYSTEMX86, 
2200: 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d 0a 20 20  IntPtr.Zero,..  
2210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 48                SH
2230: 47 46 50 5f 54 59 50 45 5f 43 55 52 52 45 4e 54  GFP_TYPE_CURRENT
2240: 2c 20 62 75 66 66 65 72 29 20 3d 3d 20 53 5f 4f  , buffer) == S_O
2250: 4b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  K)..            
2260: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2280: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2290: 6e 20 4d 61 72 73 68 61 6c 2e 50 74 72 54 6f 53  n Marshal.PtrToS
22a0: 74 72 69 6e 67 41 75 74 6f 28 62 75 66 66 65 72  tringAuto(buffer
22b0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
22c0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
22d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22e0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
22f0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2300: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
2310: 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 20 20  Exception e)..  
2320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2330: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2340: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2350: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2360: 54 4f 44 4f 3a 20 49 73 20 74 68 69 73 20 74 68  TODO: Is this th
2370: 65 20 72 69 67 68 74 20 65 72 72 6f 72 20 68 61  e right error ha
2380: 6e 64 6c 69 6e 67 20 73 6f 6c 75 74 69 6f 6e 0d  ndling solution.
2390: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23a0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 6f       //       to
23b0: 20 75 73 65 20 61 74 20 74 68 69 73 20 70 6f 69   use at this poi
23c0: 6e 74 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt?..           
23d0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
23e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f0: 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
2400: 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72 69  ndTrace(TracePri
2410: 6f 72 69 74 79 2e 4d 65 64 69 75 6d 48 69 67 68  ority.MediumHigh
2420: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2430: 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67             debug
2440: 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43  Callback, traceC
2450: 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e  allback, String.
2460: 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
2470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2480: 20 22 43 6f 75 6c 64 20 6e 6f 74 20 67 65 74 20   "Could not get 
2490: 73 79 73 74 65 6d 20 64 69 72 65 63 74 6f 72 79  system directory
24a0: 3a 20 7b 30 7d 22 2c 20 65 29 2c 0d 0a 20 20 20  : {0}", e),..   
24b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c0: 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
24d0: 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
24e0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
24f0: 77 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  w;..            
2500: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2510: 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
2520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2530: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2540: 20 20 20 20 20 20 20 69 66 20 28 62 75 66 66 65         if (buffe
2550: 72 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  r != IntPtr.Zero
2560: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2570: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2590: 20 20 4d 61 72 73 68 61 6c 2e 46 72 65 65 43 6f    Marshal.FreeCo
25a0: 54 61 73 6b 4d 65 6d 28 62 75 66 66 65 72 29 3b  TaskMem(buffer);
25b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25c0: 20 20 20 20 20 20 20 20 20 20 62 75 66 66 65 72            buffer
25d0: 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
25e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25f0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2600: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2610: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2620: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
2630: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2640: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2650: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
2660: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
2670: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
2680: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
26d0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
26e0: 69 76 61 74 65 20 48 65 6c 70 65 72 20 43 6c 61  ivate Helper Cla
26f0: 73 73 65 73 0d 0a 20 20 20 20 20 20 20 20 23 72  sses..        #r
2700: 65 67 69 6f 6e 20 41 6e 79 50 61 69 72 20 43 6c  egion AnyPair Cl
2710: 61 73 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ass..        pri
2720: 76 61 74 65 20 73 65 61 6c 65 64 20 63 6c 61 73  vate sealed clas
2730: 73 20 41 6e 79 50 61 69 72 3c 54 31 2c 20 54 32  s AnyPair<T1, T2
2740: 3e 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  >..        {..  
2750: 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
2760: 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75  n Public Constru
2770: 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20  ctors..         
2780: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2790: 20 20 20 2f 2f 20 57 41 52 4e 49 4e 47 3a 20 54     // WARNING: T
27a0: 68 69 73 20 63 6f 6e 73 74 72 75 63 74 6f 72 20  his constructor 
27b0: 70 72 6f 64 75 63 65 73 20 61 6e 20 69 6d 6d 75  produces an immu
27c0: 74 61 62 6c 65 20 22 65 6d 70 74 79 22 20 70 61  table "empty" pa
27d0: 69 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ir..            
27e0: 2f 2f 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65  //          obje
27f0: 63 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct...           
2800: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
2810: 20 70 75 62 6c 69 63 20 41 6e 79 50 61 69 72 28   public AnyPair(
2820: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2830: 20 20 20 3a 20 62 61 73 65 28 29 0d 0a 20 20 20     : base()..   
2840: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2850: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
2860: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
2870: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2880: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
2890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
28d0: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
28e0: 69 63 20 41 6e 79 50 61 69 72 28 54 31 20 78 29  ic AnyPair(T1 x)
28f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2900: 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20    : this()..    
2910: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2920: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
2930: 78 20 3d 20 78 3b 0d 0a 20 20 20 20 20 20 20 20  x = x;..        
2940: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2950: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2990: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
29a0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 41          public A
29b0: 6e 79 50 61 69 72 28 54 31 20 78 2c 20 54 32 20  nyPair(T1 x, T2 
29c0: 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y)..            
29d0: 20 20 20 20 3a 20 74 68 69 73 28 78 29 0d 0a 20      : this(x).. 
29e0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
29f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
2a00: 69 73 2e 79 20 3d 20 79 3b 0d 0a 20 20 20 20 20  is.y = y;..     
2a10: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2a20: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2a30: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a80: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
2a90: 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69     #region Publi
2aa0: 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20  c Properties..  
2ab0: 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
2ac0: 65 20 54 31 20 78 3b 0d 0a 20 20 20 20 20 20 20  e T1 x;..       
2ad0: 20 20 20 20 20 70 75 62 6c 69 63 20 54 31 20 58       public T1 X
2ae0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2af0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b00: 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 78 3b   get { return x;
2b10: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2b20: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2b30: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b70: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2b80: 20 20 20 20 70 72 69 76 61 74 65 20 54 32 20 79      private T2 y
2b90: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
2ba0: 75 62 6c 69 63 20 54 32 20 59 0d 0a 20 20 20 20  ublic T2 Y..    
2bb0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2bc0: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
2bd0: 20 72 65 74 75 72 6e 20 79 3b 20 7d 0d 0a 20 20   return y; }..  
2be0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2bf0: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
2c00: 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ion..        }..
2c10: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
2c20: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
2c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c70: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2c80: 20 23 72 65 67 69 6f 6e 20 54 72 61 63 65 4f 70   #region TraceOp
2c90: 73 20 43 6c 61 73 73 0d 0a 20 20 20 20 20 20 20  s Class..       
2ca0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
2cb0: 63 6c 61 73 73 20 54 72 61 63 65 4f 70 73 0d 0a  class TraceOps..
2cc0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2cd0: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
2ce0: 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73  rivate Constants
2cf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
2d00: 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69  ivate const stri
2d10: 6e 67 20 44 65 66 61 75 6c 74 44 65 62 75 67 46  ng DefaultDebugF
2d20: 6f 72 6d 61 74 20 3d 20 22 23 7b 30 3a 30 30 30  ormat = "#{0:000
2d30: 7d 20 40 20 7b 31 7d 3a 20 7b 32 7d 22 3b 0d 0a  } @ {1}: {2}";..
2d40: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
2d50: 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  ate const string
2d60: 20 44 65 66 61 75 6c 74 54 72 61 63 65 46 6f 72   DefaultTraceFor
2d70: 6d 61 74 20 3d 20 22 23 7b 30 3a 30 30 30 7d 20  mat = "#{0:000} 
2d80: 40 20 7b 31 7d 3a 20 7b 32 7d 22 3b 0d 0a 0d 0a  @ {1}: {2}";....
2d90: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
2da0: 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  ate const string
2db0: 20 49 73 6f 38 36 30 31 44 61 74 65 54 69 6d 65   Iso8601DateTime
2dc0: 4f 75 74 70 75 74 46 6f 72 6d 61 74 20 3d 0d 0a  OutputFormat =..
2dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2de0: 22 79 79 79 79 2e 4d 4d 2e 64 64 54 48 48 3a 6d  "yyyy.MM.ddTHH:m
2df0: 6d 3a 73 73 2e 66 66 66 66 66 66 66 22 3b 0d 0a  m:ss.fffffff";..
2e00: 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
2e10: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
2e20: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2e70: 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
2e80: 20 50 72 69 76 61 74 65 20 53 74 61 74 69 63 20   Private Static 
2e90: 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20  Data..          
2ea0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
2eb0: 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74   object syncRoot
2ec0: 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b   = new object();
2ed0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
2ee0: 69 76 61 74 65 20 73 74 61 74 69 63 20 6c 6f 6e  ivate static lon
2ef0: 67 20 6e 65 78 74 44 65 62 75 67 49 64 3b 0d 0a  g nextDebugId;..
2f00: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
2f10: 61 74 65 20 73 74 61 74 69 63 20 6c 6f 6e 67 20  ate static long 
2f20: 6e 65 78 74 54 72 61 63 65 49 64 3b 0d 0a 20 20  nextTraceId;..  
2f30: 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
2f40: 65 20 73 74 61 74 69 63 20 49 4c 69 73 74 3c 54  e static IList<T
2f50: 72 61 63 65 4c 69 73 74 65 6e 65 72 3e 20 64 65  raceListener> de
2f60: 62 75 67 4c 69 73 74 65 6e 65 72 73 3b 0d 0a 20  bugListeners;.. 
2f70: 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
2f80: 74 65 20 73 74 61 74 69 63 20 54 72 61 63 65 50  te static TraceP
2f90: 72 69 6f 72 69 74 79 20 64 65 62 75 67 50 72 69  riority debugPri
2fa0: 6f 72 69 74 79 20 3d 20 54 72 61 63 65 50 72 69  ority = TracePri
2fb0: 6f 72 69 74 79 2e 44 65 66 61 75 6c 74 3b 0d 0a  ority.Default;..
2fc0: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
2fd0: 61 74 65 20 73 74 61 74 69 63 20 54 72 61 63 65  ate static Trace
2fe0: 50 72 69 6f 72 69 74 79 20 74 72 61 63 65 50 72  Priority tracePr
2ff0: 69 6f 72 69 74 79 20 3d 20 54 72 61 63 65 50 72  iority = TracePr
3000: 69 6f 72 69 74 79 2e 44 65 66 61 75 6c 74 3b 0d  iority.Default;.
3010: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
3020: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
3030: 6e 67 20 64 65 62 75 67 46 6f 72 6d 61 74 20 3d  ng debugFormat =
3040: 20 44 65 66 61 75 6c 74 44 65 62 75 67 46 6f 72   DefaultDebugFor
3050: 6d 61 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  mat;..          
3060: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
3070: 20 73 74 72 69 6e 67 20 74 72 61 63 65 46 6f 72   string traceFor
3080: 6d 61 74 20 3d 20 44 65 66 61 75 6c 74 54 72 61  mat = DefaultTra
3090: 63 65 46 6f 72 6d 61 74 3b 0d 0a 20 20 20 20 20  ceFormat;..     
30a0: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
30b0: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
30c0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
30d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3100: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
3110: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
3120: 69 63 20 53 74 61 74 69 63 20 50 72 6f 70 65 72  ic Static Proper
3130: 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20  ties..          
3140: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
3150: 54 72 61 63 65 50 72 69 6f 72 69 74 79 20 44 65  TracePriority De
3160: 62 75 67 50 72 69 6f 72 69 74 79 0d 0a 20 20 20  bugPriority..   
3170: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
3180: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
3190: 7b 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74  { lock (syncRoot
31a0: 29 20 7b 20 72 65 74 75 72 6e 20 64 65 62 75 67  ) { return debug
31b0: 50 72 69 6f 72 69 74 79 3b 20 7d 20 7d 0d 0a 20  Priority; } }.. 
31c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
31d0: 65 74 20 7b 20 6c 6f 63 6b 20 28 73 79 6e 63 52  et { lock (syncR
31e0: 6f 6f 74 29 20 7b 20 64 65 62 75 67 50 72 69 6f  oot) { debugPrio
31f0: 72 69 74 79 20 3d 20 76 61 6c 75 65 3b 20 7d 20  rity = value; } 
3200: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
3210: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3260: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
3270: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
3280: 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 20 54   TracePriority T
3290: 72 61 63 65 50 72 69 6f 72 69 74 79 0d 0a 20 20  racePriority..  
32a0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
32b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
32c0: 20 7b 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f   { lock (syncRoo
32d0: 74 29 20 7b 20 72 65 74 75 72 6e 20 74 72 61 63  t) { return trac
32e0: 65 50 72 69 6f 72 69 74 79 3b 20 7d 20 7d 0d 0a  ePriority; } }..
32f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3300: 73 65 74 20 7b 20 6c 6f 63 6b 20 28 73 79 6e 63  set { lock (sync
3310: 52 6f 6f 74 29 20 7b 20 74 72 61 63 65 50 72 69  Root) { tracePri
3320: 6f 72 69 74 79 20 3d 20 76 61 6c 75 65 3b 20 7d  ority = value; }
3330: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
3340: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
3350: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
3360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3390: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
33a0: 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
33b0: 63 20 73 74 72 69 6e 67 20 44 65 62 75 67 46 6f  c string DebugFo
33c0: 72 6d 61 74 0d 0a 20 20 20 20 20 20 20 20 20 20  rmat..          
33d0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
33e0: 20 20 20 20 20 67 65 74 20 7b 20 6c 6f 63 6b 20       get { lock 
33f0: 28 73 79 6e 63 52 6f 6f 74 29 20 7b 20 72 65 74  (syncRoot) { ret
3400: 75 72 6e 20 64 65 62 75 67 46 6f 72 6d 61 74 3b  urn debugFormat;
3410: 20 7d 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20   } }..          
3420: 20 20 20 20 20 20 73 65 74 20 7b 20 6c 6f 63 6b        set { lock
3430: 20 28 73 79 6e 63 52 6f 6f 74 29 20 7b 20 64 65   (syncRoot) { de
3440: 62 75 67 46 6f 72 6d 61 74 20 3d 20 76 61 6c 75  bugFormat = valu
3450: 65 3b 20 7d 20 7d 0d 0a 20 20 20 20 20 20 20 20  e; } }..        
3460: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
3470: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
3480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34b0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
34c0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
34d0: 74 61 74 69 63 20 73 74 72 69 6e 67 20 54 72 61  tatic string Tra
34e0: 63 65 46 6f 72 6d 61 74 0d 0a 20 20 20 20 20 20  ceFormat..      
34f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3500: 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 6c           get { l
3510: 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 20 7b  ock (syncRoot) {
3520: 20 72 65 74 75 72 6e 20 74 72 61 63 65 46 6f 72   return traceFor
3530: 6d 61 74 3b 20 7d 20 7d 0d 0a 20 20 20 20 20 20  mat; } }..      
3540: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
3550: 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 20  lock (syncRoot) 
3560: 7b 20 74 72 61 63 65 46 6f 72 6d 61 74 20 3d 20  { traceFormat = 
3570: 76 61 6c 75 65 3b 20 7d 20 7d 0d 0a 20 20 20 20  value; } }..    
3580: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
3590: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
35a0: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
35b0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
35c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
3600: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65      #region Inte
3610: 72 61 63 74 69 76 65 20 53 75 70 70 6f 72 74 20  ractive Support 
3620: 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
3630: 20 20 20 20 20 5b 4d 65 74 68 6f 64 49 6d 70 6c       [MethodImpl
3640: 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70 74 69 6f  (MethodImplOptio
3650: 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d  ns.NoInlining)].
3660: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
3670: 6c 69 63 20 73 74 61 74 69 63 20 44 69 61 6c 6f  lic static Dialo
3680: 67 52 65 73 75 6c 74 20 53 68 6f 77 4d 65 73 73  gResult ShowMess
3690: 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  age(..          
36a0: 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72        TracePrior
36b0: 69 74 79 20 74 72 61 63 65 50 72 69 6f 72 69 74  ity tracePriorit
36c0: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
36d0: 20 20 20 20 54 72 61 63 65 43 61 6c 6c 62 61 63      TraceCallbac
36e0: 6b 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c  k debugCallback,
36f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3700: 20 20 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20    TraceCallback 
3710: 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 0d 0a  traceCallback,..
3720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3730: 41 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c  Assembly assembl
3740: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
3750: 20 20 20 20 73 74 72 69 6e 67 20 6d 65 73 73 61      string messa
3760: 67 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ge,..           
3770: 20 20 20 20 20 73 74 72 69 6e 67 20 63 61 74 65       string cate
3780: 67 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20  gory,..         
3790: 20 20 20 20 20 20 20 4d 65 73 73 61 67 65 42 6f         MessageBo
37a0: 78 42 75 74 74 6f 6e 73 20 62 75 74 74 6f 6e 73  xButtons buttons
37b0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
37c0: 20 20 20 4d 65 73 73 61 67 65 42 6f 78 49 63 6f     MessageBoxIco
37d0: 6e 20 69 63 6f 6e 0d 0a 20 20 20 20 20 20 20 20  n icon..        
37e0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
37f0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
3800: 20 20 20 20 20 20 20 20 20 20 44 69 61 6c 6f 67            Dialog
3810: 52 65 73 75 6c 74 20 72 65 73 75 6c 74 20 3d 20  Result result = 
3820: 44 69 61 6c 6f 67 52 65 73 75 6c 74 2e 4f 4b 3b  DialogResult.OK;
3830: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3840: 20 20 20 20 44 65 62 75 67 41 6e 64 54 72 61 63      DebugAndTrac
3850: 65 28 74 72 61 63 65 50 72 69 6f 72 69 74 79 2c  e(tracePriority,
3860: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3870: 20 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62        debugCallb
3880: 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61  ack, traceCallba
3890: 63 6b 2c 20 6d 65 73 73 61 67 65 2c 20 63 61 74  ck, message, cat
38a0: 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
38b0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53             if (S
38c0: 79 73 74 65 6d 49 6e 66 6f 72 6d 61 74 69 6f 6e  ystemInformation
38d0: 2e 55 73 65 72 49 6e 74 65 72 61 63 74 69 76 65  .UserInteractive
38e0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
38f0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
3900: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
3910: 20 74 69 74 6c 65 20 3d 20 47 65 74 41 73 73 65   title = GetAsse
3920: 6d 62 6c 79 54 69 74 6c 65 28 61 73 73 65 6d 62  mblyTitle(assemb
3930: 6c 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ly);....        
3940: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
3950: 74 69 74 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  title == null)..
3960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3970: 20 20 20 20 20 20 20 20 74 69 74 6c 65 20 3d 20          title = 
3980: 41 70 70 6c 69 63 61 74 69 6f 6e 2e 50 72 6f 64  Application.Prod
3990: 75 63 74 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20  uctName;....    
39a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
39b0: 72 65 73 75 6c 74 20 3d 20 4d 65 73 73 61 67 65  result = Message
39c0: 42 6f 78 2e 53 68 6f 77 28 6d 65 73 73 61 67 65  Box.Show(message
39d0: 2c 20 74 69 74 6c 65 2c 20 62 75 74 74 6f 6e 73  , title, buttons
39e0: 2c 20 69 63 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20  , icon);....    
39f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a00: 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 74 72  DebugAndTrace(tr
3a10: 61 63 65 50 72 69 6f 72 69 74 79 2c 0d 0a 20 20  acePriority,..  
3a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a30: 20 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62        debugCallb
3a40: 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61  ack, traceCallba
3a50: 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ck, String.Forma
3a60: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
3a70: 20 20 20 20 20 20 20 20 20 20 20 20 22 55 73 65              "Use
3a80: 72 20 63 68 6f 69 63 65 20 6f 66 20 7b 30 7d 2e  r choice of {0}.
3a90: 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 72 65  ", ForDisplay(re
3aa0: 73 75 6c 74 29 29 2c 0d 0a 20 20 20 20 20 20 20  sult)),..       
3ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ac0: 20 63 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20   category);.... 
3ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ae0: 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
3af0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
3b00: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
3b10: 20 20 20 20 20 20 20 20 44 65 62 75 67 41 6e 64          DebugAnd
3b20: 54 72 61 63 65 28 74 72 61 63 65 50 72 69 6f 72  Trace(tracePrior
3b30: 69 74 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ity,..          
3b40: 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43            debugC
3b50: 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61  allback, traceCa
3b60: 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46  llback, String.F
3b70: 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
3b80: 20 20 20 20 20 20 20 20 20 20 20 20 22 44 65 66              "Def
3b90: 61 75 6c 74 20 63 68 6f 69 63 65 20 6f 66 20 7b  ault choice of {
3ba0: 30 7d 2e 22 2c 20 46 6f 72 44 69 73 70 6c 61 79  0}.", ForDisplay
3bb0: 28 72 65 73 75 6c 74 29 29 2c 0d 0a 20 20 20 20  (result)),..    
3bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3bd0: 63 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  category);....  
3be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
3bf0: 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20  turn result;..  
3c00: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
3c10: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
3c20: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
3c30: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
3c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c70: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
3c80: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 54 72        #region Tr
3c90: 61 63 69 6e 67 20 53 75 70 70 6f 72 74 20 4d 65  acing Support Me
3ca0: 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 20  thods..         
3cb0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
3cc0: 20 76 6f 69 64 20 53 65 74 75 70 44 65 62 75 67   void SetupDebug
3cd0: 4c 69 73 74 65 6e 65 72 73 28 29 0d 0a 20 20 20  Listeners()..   
3ce0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
3cf0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
3d00: 64 65 62 75 67 4c 69 73 74 65 6e 65 72 73 20 3d  debugListeners =
3d10: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
3d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62               deb
3d30: 75 67 4c 69 73 74 65 6e 65 72 73 20 3d 20 6e 65  ugListeners = ne
3d40: 77 20 4c 69 73 74 3c 54 72 61 63 65 4c 69 73 74  w List<TraceList
3d50: 65 6e 65 72 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20  ener>();....    
3d60: 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75              debu
3d70: 67 4c 69 73 74 65 6e 65 72 73 2e 41 64 64 28 6e  gListeners.Add(n
3d80: 65 77 20 43 6f 6e 73 6f 6c 65 54 72 61 63 65 4c  ew ConsoleTraceL
3d90: 69 73 74 65 6e 65 72 28 29 29 3b 0d 0a 20 20 20  istener());..   
3da0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
3db0: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
3dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
3e00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
3e10: 6c 69 63 20 73 74 61 74 69 63 20 6c 6f 6e 67 20  lic static long 
3e20: 4e 65 78 74 44 65 62 75 67 49 64 28 29 0d 0a 20  NextDebugId().. 
3e30: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
3e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
3e50: 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64  turn Interlocked
3e60: 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 6e  .Increment(ref n
3e70: 65 78 74 44 65 62 75 67 49 64 29 3b 0d 0a 20 20  extDebugId);..  
3e80: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
3e90: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
3ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
3ee0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
3ef0: 62 6c 69 63 20 73 74 61 74 69 63 20 6c 6f 6e 67  blic static long
3f00: 20 4e 65 78 74 54 72 61 63 65 49 64 28 29 0d 0a   NextTraceId()..
3f10: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
3f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
3f30: 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65  eturn Interlocke
3f40: 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Increment(ref 
3f50: 6e 65 78 74 54 72 61 63 65 49 64 29 3b 0d 0a 20  nextTraceId);.. 
3f60: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
3f70: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
3f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
3fc0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
3fd0: 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72  ublic static str
3fe0: 69 6e 67 20 54 69 6d 65 53 74 61 6d 70 28 44 61  ing TimeStamp(Da
3ff0: 74 65 54 69 6d 65 20 64 61 74 65 54 69 6d 65 29  teTime dateTime)
4000: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
4010: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4020: 20 72 65 74 75 72 6e 20 64 61 74 65 54 69 6d 65   return dateTime
4030: 2e 54 6f 53 74 72 69 6e 67 28 49 73 6f 38 36 30  .ToString(Iso860
4040: 31 44 61 74 65 54 69 6d 65 4f 75 74 70 75 74 46  1DateTimeOutputF
4050: 6f 72 6d 61 74 29 3b 0d 0a 20 20 20 20 20 20 20  ormat);..       
4060: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
4070: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
4080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
40a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
40b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
40c0: 20 20 20 20 20 20 20 20 20 5b 4d 65 74 68 6f 64           [Method
40d0: 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c 4f  Impl(MethodImplO
40e0: 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e  ptions.NoInlinin
40f0: 67 29 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  g)]..           
4100: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73   public static s
4110: 74 72 69 6e 67 20 47 65 74 4d 65 74 68 6f 64 4e  tring GetMethodN
4120: 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
4130: 20 20 20 20 20 20 53 74 61 63 6b 54 72 61 63 65        StackTrace
4140: 20 73 74 61 63 6b 54 72 61 63 65 2c 0d 0a 20 20   stackTrace,..  
4150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
4160: 74 20 6c 65 76 65 6c 0d 0a 20 20 20 20 20 20 20  t level..       
4170: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
4180: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
4190: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
41a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
41b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
41c0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
41d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
41e0: 2f 20 4e 4f 54 45 3a 20 49 66 20 61 20 76 61 6c  / NOTE: If a val
41f0: 69 64 20 73 74 61 63 6b 20 74 72 61 63 65 20 77  id stack trace w
4200: 61 73 20 6e 6f 74 20 73 75 70 70 6c 69 65 64 20  as not supplied 
4210: 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  by the..        
4220: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
4230: 20 20 20 20 20 63 61 6c 6c 65 72 2c 20 63 72 65       caller, cre
4240: 61 74 65 20 6f 6e 65 20 6e 6f 77 20 62 61 73 65  ate one now base
4250: 64 20 6f 6e 20 74 68 65 20 63 75 72 72 65 6e 74  d on the current
4260: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4270: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 65        //       e
4280: 78 65 63 75 74 69 6f 6e 20 73 74 61 63 6b 2e 0d  xecution stack..
4290: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
42a0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
42b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
42c0: 28 73 74 61 63 6b 54 72 61 63 65 20 3d 3d 20 6e  (stackTrace == n
42d0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
42e0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
42f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4300: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
4310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4320: 20 2f 2f 20 4e 4f 54 45 3a 20 47 72 61 62 20 74   // NOTE: Grab t
4330: 68 65 20 63 75 72 72 65 6e 74 20 65 78 65 63 75  he current execu
4340: 74 69 6f 6e 20 73 74 61 63 6b 2e 0d 0a 20 20 20  tion stack...   
4350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4360: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
4370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4380: 20 73 74 61 63 6b 54 72 61 63 65 20 3d 20 6e 65   stackTrace = ne
4390: 77 20 53 74 61 63 6b 54 72 61 63 65 28 29 3b 0d  w StackTrace();.
43a0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
43b0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
43c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
43d0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
43e0: 41 6c 77 61 79 73 20 73 6b 69 70 20 74 68 69 73  Always skip this
43f0: 20 63 61 6c 6c 20 66 72 61 6d 65 20 77 68 65 6e   call frame when
4400: 20 77 65 20 63 61 70 74 75 72 65 0d 0a 20 20 20   we capture..   
4410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4420: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
4430: 65 20 73 74 61 63 6b 20 74 72 61 63 65 2e 0d 0a  e stack trace...
4440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4450: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
4460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4470: 20 20 20 20 6c 65 76 65 6c 2b 2b 3b 0d 0a 20 20      level++;..  
4480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4490: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
44a0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
44b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
44c0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 47 65 74 20     // NOTE: Get 
44d0: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 73 74  the specified st
44e0: 61 63 6b 20 66 72 61 6d 65 20 28 61 6c 77 61 79  ack frame (alway
44f0: 73 20 61 64 64 20 6f 6e 65 20 74 6f 0d 0a 20 20  s add one to..  
4500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4510: 20 20 2f 2f 20 20 20 20 20 20 20 73 6b 69 70 20    //       skip 
4520: 74 68 69 73 20 6d 65 74 68 6f 64 29 2e 0d 0a 20  this method)... 
4530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4540: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
4550: 20 20 20 20 20 20 20 20 20 20 20 53 74 61 63 6b             Stack
4560: 46 72 61 6d 65 20 73 74 61 63 6b 46 72 61 6d 65  Frame stackFrame
4570: 20 3d 20 73 74 61 63 6b 54 72 61 63 65 2e 47 65   = stackTrace.Ge
4580: 74 46 72 61 6d 65 28 6c 65 76 65 6c 29 3b 0d 0a  tFrame(level);..
4590: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
45a0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
45b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
45c0: 20 4e 4f 54 45 3a 20 47 65 74 20 74 68 65 20 6d   NOTE: Get the m
45d0: 65 74 68 6f 64 20 66 6f 72 20 74 68 65 20 73 74  ethod for the st
45e0: 61 63 6b 20 66 72 61 6d 65 2e 0d 0a 20 20 20 20  ack frame...    
45f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4600: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
4610: 20 20 20 20 20 20 20 20 4d 65 74 68 6f 64 42 61          MethodBa
4620: 73 65 20 6d 65 74 68 6f 64 42 61 73 65 20 3d 20  se methodBase = 
4630: 73 74 61 63 6b 46 72 61 6d 65 2e 47 65 74 4d 65  stackFrame.GetMe
4640: 74 68 6f 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  thod();....     
4650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
4660: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
4670: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
4680: 47 65 74 20 74 68 65 20 74 79 70 65 20 66 6f 72  Get the type for
4690: 20 74 68 65 20 6d 65 74 68 6f 64 2e 0d 0a 20 20   the method...  
46a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
46b0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
46c0: 20 20 20 20 20 20 20 20 20 20 54 79 70 65 20 74            Type t
46d0: 79 70 65 20 3d 20 6d 65 74 68 6f 64 42 61 73 65  ype = methodBase
46e0: 2e 44 65 63 6c 61 72 69 6e 67 54 79 70 65 3b 0d  .DeclaringType;.
46f0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
4700: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
4710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
4720: 2f 20 4e 4f 54 45 3a 20 47 65 74 20 74 68 65 20  / NOTE: Get the 
4730: 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d 65 74 68  name of the meth
4740: 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
4750: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
4760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4770: 20 73 74 72 69 6e 67 20 6e 61 6d 65 20 3d 20 6d   string name = m
4780: 65 74 68 6f 64 42 61 73 65 2e 4e 61 6d 65 3b 0d  ethodBase.Name;.
4790: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
47a0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
47b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
47c0: 2f 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e 20 74  / NOTE: Return t
47d0: 68 65 20 70 72 6f 70 65 72 6c 79 20 66 6f 72 6d  he properly form
47e0: 61 74 74 65 64 20 72 65 73 75 6c 74 2e 0d 0a 20  atted result... 
47f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4800: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
4810: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
4820: 6e 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  n String.Format(
4830: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4840: 20 20 20 20 20 20 20 20 20 20 22 7b 30 7d 7b 31            "{0}{1
4850: 7d 7b 32 7d 22 2c 20 74 79 70 65 2e 4e 61 6d 65  }{2}", type.Name
4860: 2c 20 54 79 70 65 2e 44 65 6c 69 6d 69 74 65 72  , Type.Delimiter
4870: 2c 20 6e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20  , name);..      
4880: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
4890: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
48a0: 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
48b0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
48c0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
48d0: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
48e0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
48f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4900: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
4910: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
4920: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
4930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
4970: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
4980: 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69 64  blic static void
4990: 20 44 65 62 75 67 43 6f 72 65 28 0d 0a 20 20 20   DebugCore(..   
49a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
49b0: 69 6e 67 20 6d 65 73 73 61 67 65 2c 0d 0a 20 20  ing message,..  
49c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
49d0: 72 69 6e 67 20 63 61 74 65 67 6f 72 79 0d 0a 20  ring category.. 
49e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
49f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
4a00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4a10: 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
4a20: 20 2f 2a 20 54 52 41 4e 53 41 43 54 49 4f 4e 41   /* TRANSACTIONA
4a30: 4c 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  L */..          
4a40: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
4a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
4a60: 28 64 65 62 75 67 4c 69 73 74 65 6e 65 72 73 20  (debugListeners 
4a70: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
4a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
4a90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4aa0: 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68           foreach
4ab0: 20 28 54 72 61 63 65 4c 69 73 74 65 6e 65 72 20   (TraceListener 
4ac0: 6c 69 73 74 65 6e 65 72 20 69 6e 20 64 65 62 75  listener in debu
4ad0: 67 4c 69 73 74 65 6e 65 72 73 29 0d 0a 20 20 20  gListeners)..   
4ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4af0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
4b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4b10: 20 20 20 20 6c 69 73 74 65 6e 65 72 2e 57 72 69      listener.Wri
4b20: 74 65 4c 69 6e 65 28 6d 65 73 73 61 67 65 2c 20  teLine(message, 
4b30: 63 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20  category);..    
4b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4b50: 20 20 20 20 20 20 20 20 6c 69 73 74 65 6e 65 72          listener
4b60: 2e 46 6c 75 73 68 28 29 3b 0d 0a 20 20 20 20 20  .Flush();..     
4b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4b80: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
4b90: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
4ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
4bb0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
4bc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
4bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c10: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
4c20: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
4c30: 69 64 20 54 72 61 63 65 43 6f 72 65 28 0d 0a 20  id TraceCore(.. 
4c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
4c50: 74 72 69 6e 67 20 6d 65 73 73 61 67 65 2c 0d 0a  tring message,..
4c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4c70: 73 74 72 69 6e 67 20 63 61 74 65 67 6f 72 79 0d  string category.
4c80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4c90: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
4ca0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
4cb0: 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
4cc0: 74 29 20 2f 2a 20 54 52 41 4e 53 41 43 54 49 4f  t) /* TRANSACTIO
4cd0: 4e 41 4c 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  NAL */..        
4ce0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
4cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
4d00: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
4d10: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
4d20: 57 72 69 74 65 20 74 68 65 20 6d 65 73 73 61 67  Write the messag
4d30: 65 20 74 6f 20 61 6c 6c 20 74 68 65 20 61 63 74  e to all the act
4d40: 69 76 65 20 74 72 61 63 65 0d 0a 20 20 20 20 20  ive trace..     
4d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
4d60: 2f 20 20 20 20 20 20 20 6c 69 73 74 65 6e 65 72  /       listener
4d70: 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s...            
4d80: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
4d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4da0: 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
4db0: 6d 65 73 73 61 67 65 2c 20 63 61 74 65 67 6f 72  message, categor
4dc0: 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
4dd0: 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 46           Trace.F
4de0: 6c 75 73 68 28 29 3b 0d 0a 20 20 20 20 20 20 20  lush();..       
4df0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
4e00: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
4e10: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
4e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
4e60: 20 20 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74              [Met
4e70: 68 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d  hodImpl(MethodIm
4e80: 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69  plOptions.NoInli
4e90: 6e 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20  ning)]..        
4ea0: 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
4eb0: 63 20 73 74 72 69 6e 67 20 44 65 62 75 67 41 6e  c string DebugAn
4ec0: 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20  dTrace(..       
4ed0: 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72           TracePr
4ee0: 69 6f 72 69 74 79 20 74 72 61 63 65 50 72 69 6f  iority tracePrio
4ef0: 72 69 74 79 2c 0d 0a 20 20 20 20 20 20 20 20 20  rity,..         
4f00: 20 20 20 20 20 20 20 54 72 61 63 65 43 61 6c 6c         TraceCall
4f10: 62 61 63 6b 20 64 65 62 75 67 43 61 6c 6c 62 61  back debugCallba
4f20: 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck,..           
4f30: 20 20 20 20 20 54 72 61 63 65 43 61 6c 6c 62 61       TraceCallba
4f40: 63 6b 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b  ck traceCallback
4f50: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
4f60: 20 20 20 45 78 63 65 70 74 69 6f 6e 20 65 78 63     Exception exc
4f70: 65 70 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20  eption,..       
4f80: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
4f90: 63 61 74 65 67 6f 72 79 0d 0a 20 20 20 20 20 20  category..      
4fa0: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
4fb0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
4fc0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
4fd0: 65 78 63 65 70 74 69 6f 6e 20 21 3d 20 6e 75 6c  exception != nul
4fe0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
4ff0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 44          return D
5000: 65 62 75 67 41 6e 64 54 72 61 63 65 28 74 72 61  ebugAndTrace(tra
5010: 63 65 50 72 69 6f 72 69 74 79 2c 20 64 65 62 75  cePriority, debu
5020: 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  gCallback,..    
5030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5040: 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
5050: 6b 2c 20 6e 65 77 20 53 74 61 63 6b 54 72 61 63  k, new StackTrac
5060: 65 28 65 78 63 65 70 74 69 6f 6e 2c 20 74 72 75  e(exception, tru
5070: 65 29 2c 20 30 2c 0d 0a 20 20 20 20 20 20 20 20  e), 0,..        
5080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5090: 65 78 63 65 70 74 69 6f 6e 2e 54 6f 53 74 72 69  exception.ToStri
50a0: 6e 67 28 29 2c 20 63 61 74 65 67 6f 72 79 29 3b  ng(), category);
50b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
50c0: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
50d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
50e0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
50f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5130: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
5140: 20 20 5b 4d 65 74 68 6f 64 49 6d 70 6c 28 4d 65    [MethodImpl(Me
5150: 74 68 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e 73 2e  thodImplOptions.
5160: 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a 20 20  NoInlining)]..  
5170: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
5180: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 44   static string D
5190: 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20  ebugAndTrace(.. 
51a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
51b0: 72 61 63 65 50 72 69 6f 72 69 74 79 20 74 72 61  racePriority tra
51c0: 63 65 50 72 69 6f 72 69 74 79 2c 0d 0a 20 20 20  cePriority,..   
51d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
51e0: 63 65 43 61 6c 6c 62 61 63 6b 20 64 65 62 75 67  ceCallback debug
51f0: 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Callback,..     
5200: 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
5210: 43 61 6c 6c 62 61 63 6b 20 74 72 61 63 65 43 61  Callback traceCa
5220: 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
5230: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
5240: 6d 65 73 73 61 67 65 2c 0d 0a 20 20 20 20 20 20  message,..      
5250: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
5260: 20 63 61 74 65 67 6f 72 79 0d 0a 20 20 20 20 20   category..     
5270: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
5280: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
5290: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
52a0: 75 72 6e 20 44 65 62 75 67 41 6e 64 54 72 61 63  urn DebugAndTrac
52b0: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
52c0: 20 20 20 20 20 20 20 20 74 72 61 63 65 50 72 69          tracePri
52d0: 6f 72 69 74 79 2c 20 64 65 62 75 67 43 61 6c 6c  ority, debugCall
52e0: 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62  back, traceCallb
52f0: 61 63 6b 2c 20 6e 75 6c 6c 2c 20 31 2c 0d 0a 20  ack, null, 1,.. 
5300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5310: 20 20 20 6d 65 73 73 61 67 65 2c 20 63 61 74 65     message, cate
5320: 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  gory);..        
5330: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
5340: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
5350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5380: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
5390: 20 20 20 20 20 20 20 20 5b 4d 65 74 68 6f 64 49          [MethodI
53a0: 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70  mpl(MethodImplOp
53b0: 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67  tions.NoInlining
53c0: 29 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  )]..            
53d0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
53e0: 74 72 69 6e 67 20 44 65 62 75 67 41 6e 64 54 72  tring DebugAndTr
53f0: 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ace(..          
5400: 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72        TracePrior
5410: 69 74 79 20 74 72 61 63 65 50 72 69 6f 72 69 74  ity tracePriorit
5420: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
5430: 20 20 20 20 54 72 61 63 65 43 61 6c 6c 62 61 63      TraceCallbac
5440: 6b 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c  k debugCallback,
5450: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5460: 20 20 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20    TraceCallback 
5470: 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 0d 0a  traceCallback,..
5480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5490: 53 74 61 63 6b 54 72 61 63 65 20 73 74 61 63 6b  StackTrace stack
54a0: 54 72 61 63 65 2c 0d 0a 20 20 20 20 20 20 20 20  Trace,..        
54b0: 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65 76 65          int leve
54c0: 6c 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l,..            
54d0: 20 20 20 20 73 74 72 69 6e 67 20 6d 65 73 73 61      string messa
54e0: 67 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ge,..           
54f0: 20 20 20 20 20 73 74 72 69 6e 67 20 63 61 74 65       string cate
5500: 67 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20  gory..          
5510: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
5520: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5530: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
5540: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
5550: 4f 54 45 3a 20 41 6c 77 61 79 73 20 73 6b 69 70  OTE: Always skip
5560: 20 74 68 69 73 20 63 61 6c 6c 20 66 72 61 6d 65   this call frame
5570: 20 69 66 20 74 68 65 20 73 74 61 63 6b 20 74 72   if the stack tr
5580: 61 63 65 20 69 73 0d 0a 20 20 20 20 20 20 20 20  ace is..        
5590: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
55a0: 20 67 6f 69 6e 67 20 74 6f 20 62 65 20 63 61 70   going to be cap
55b0: 74 75 72 65 64 20 62 79 20 47 65 74 4d 65 74 68  tured by GetMeth
55c0: 6f 64 4e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20  odName...       
55d0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
55e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
55f0: 28 73 74 61 63 6b 54 72 61 63 65 20 3d 3d 20 6e  (stackTrace == n
5600: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
5610: 20 20 20 20 20 20 20 20 20 20 6c 65 76 65 6c 2b            level+
5620: 2b 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  +;....          
5630: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
5640: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
5650: 45 3a 20 46 6f 72 6d 61 74 20 74 68 65 20 6d 65  E: Format the me
5660: 73 73 61 67 65 20 66 6f 72 20 64 69 73 70 6c 61  ssage for displa
5670: 79 20 28 6f 6e 63 65 29 2e 0d 0a 20 20 20 20 20  y (once)...     
5680: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
5690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
56a0: 74 72 69 6e 67 20 66 6f 72 6d 61 74 74 65 64 20  tring formatted 
56b0: 3d 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  = String.Format(
56c0: 22 7b 30 7d 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  "{0}: {1}",..   
56d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
56e0: 20 47 65 74 4d 65 74 68 6f 64 4e 61 6d 65 28 73   GetMethodName(s
56f0: 74 61 63 6b 54 72 61 63 65 2c 20 6c 65 76 65 6c  tackTrace, level
5700: 29 2c 20 6d 65 73 73 61 67 65 29 3b 0d 0a 0d 0a  ), message);....
5710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5720: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
5730: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
5740: 74 68 65 20 64 65 62 75 67 20 63 61 6c 6c 62 61  the debug callba
5750: 63 6b 20 69 73 20 69 6e 76 61 6c 69 64 20 6f 72  ck is invalid or
5760: 20 74 68 65 20 74 72 61 63 65 20 70 72 69 6f 72   the trace prior
5770: 69 74 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ity..           
5780: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 66       //       of
5790: 20 74 68 69 73 20 6d 65 73 73 61 67 65 20 69 73   this message is
57a0: 20 6c 65 73 73 20 74 68 61 6e 20 77 68 61 74 20   less than what 
57b0: 77 65 20 63 75 72 72 65 6e 74 6c 79 20 77 61 6e  we currently wan
57c0: 74 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 20 20  t to..          
57d0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64        //       d
57e0: 65 62 75 67 2c 20 73 6b 69 70 20 69 74 2e 0d 0a  ebug, skip it...
57f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5800: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
5810: 20 20 20 20 69 66 20 28 28 64 65 62 75 67 43 61      if ((debugCa
5820: 6c 6c 62 61 63 6b 20 21 3d 20 6e 75 6c 6c 29 20  llback != null) 
5830: 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
5840: 20 20 20 20 20 20 20 20 28 74 72 61 63 65 50 72          (tracePr
5850: 69 6f 72 69 74 79 20 3e 3d 20 44 65 62 75 67 50  iority >= DebugP
5860: 72 69 6f 72 69 74 79 29 29 0d 0a 20 20 20 20 20  riority))..     
5870: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
5880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5890: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
58a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
58b0: 45 3a 20 49 6e 76 6f 6b 65 20 74 68 65 20 64 65  E: Invoke the de
58c0: 62 75 67 20 63 61 6c 6c 62 61 63 6b 20 77 69 74  bug callback wit
58d0: 68 20 74 68 65 20 66 6f 72 6d 61 74 74 65 64 0d  h the formatted.
58e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
58f0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6d 65       //       me
5900: 73 73 61 67 65 20 61 6e 64 20 74 68 65 20 63 61  ssage and the ca
5910: 74 65 67 6f 72 79 20 73 70 65 63 69 66 69 65 64  tegory specified
5920: 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20   by the..       
5930: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
5940: 20 20 20 20 20 20 63 61 6c 6c 65 72 2e 0d 0a 20        caller... 
5950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5960: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
5970: 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67             debug
5980: 43 61 6c 6c 62 61 63 6b 28 66 6f 72 6d 61 74 74  Callback(formatt
5990: 65 64 2c 20 63 61 74 65 67 6f 72 79 29 3b 0d 0a  ed, category);..
59a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59b0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
59c0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
59d0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
59e0: 3a 20 49 66 20 74 68 65 20 74 72 61 63 65 20 63  : If the trace c
59f0: 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 61 6c  allback is inval
5a00: 69 64 20 6f 72 20 74 68 65 20 74 72 61 63 65 20  id or the trace 
5a10: 70 72 69 6f 72 69 74 79 0d 0a 20 20 20 20 20 20  priority..      
5a20: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
5a30: 20 20 20 6f 66 20 74 68 69 73 20 6d 65 73 73 61     of this messa
5a40: 67 65 20 69 73 20 6c 65 73 73 20 74 68 61 6e 20  ge is less than 
5a50: 77 68 61 74 20 77 65 20 63 75 72 72 65 6e 74 6c  what we currentl
5a60: 79 20 77 61 6e 74 20 74 6f 0d 0a 20 20 20 20 20  y want to..     
5a70: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
5a80: 20 20 20 20 74 72 61 63 65 2c 20 73 6b 69 70 20      trace, skip 
5a90: 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  it...           
5aa0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
5ab0: 20 20 20 20 20 20 20 20 20 69 66 20 28 28 74 72           if ((tr
5ac0: 61 63 65 43 61 6c 6c 62 61 63 6b 20 21 3d 20 6e  aceCallback != n
5ad0: 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20 20 20  ull) &&..       
5ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 72               (tr
5af0: 61 63 65 50 72 69 6f 72 69 74 79 20 3e 3d 20 54  acePriority >= T
5b00: 72 61 63 65 50 72 69 6f 72 69 74 79 29 29 0d 0a  racePriority))..
5b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b20: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
5b30: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
5b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
5b50: 2f 20 4e 4f 54 45 3a 20 49 6e 76 6f 6b 65 20 74  / NOTE: Invoke t
5b60: 68 65 20 74 72 61 63 65 20 63 61 6c 6c 62 61 63  he trace callbac
5b70: 6b 20 77 69 74 68 20 74 68 65 20 66 6f 72 6d 61  k with the forma
5b80: 74 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20  tted..          
5b90: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
5ba0: 20 20 20 6d 65 73 73 61 67 65 20 61 6e 64 20 74     message and t
5bb0: 68 65 20 63 61 74 65 67 6f 72 79 20 73 70 65 63  he category spec
5bc0: 69 66 69 65 64 20 62 79 20 74 68 65 0d 0a 20 20  ified by the..  
5bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5be0: 20 20 2f 2f 20 20 20 20 20 20 20 63 61 6c 6c 65    //       calle
5bf0: 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r...            
5c00: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
5c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c20: 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 66 6f  traceCallback(fo
5c30: 72 6d 61 74 74 65 64 2c 20 63 61 74 65 67 6f 72  rmatted, categor
5c40: 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
5c50: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
5c60: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
5c70: 20 6d 65 73 73 61 67 65 3b 0d 0a 20 20 20 20 20   message;..     
5c80: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
5c90: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
5ca0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
5cb0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
5cc0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
5cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d10: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
5d20: 65 67 69 6f 6e 20 4d 6f 63 6b 52 65 67 69 73 74  egion MockRegist
5d30: 72 79 20 43 6c 61 73 73 0d 0a 20 20 20 20 20 20  ry Class..      
5d40: 20 20 70 72 69 76 61 74 65 20 73 65 61 6c 65 64    private sealed
5d50: 20 63 6c 61 73 73 20 4d 6f 63 6b 52 65 67 69 73   class MockRegis
5d60: 74 72 79 20 3a 20 49 44 69 73 70 6f 73 61 62 6c  try : IDisposabl
5d70: 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  e..        {..  
5d80: 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
5d90: 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75  n Public Constru
5da0: 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20  ctors..         
5db0: 20 20 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65     public MockRe
5dc0: 67 69 73 74 72 79 28 29 0d 0a 20 20 20 20 20 20  gistry()..      
5dd0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
5de0: 20 20 20 20 20 20 20 20 20 77 68 61 74 49 66 20           whatIf 
5df0: 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
5e00: 20 20 20 20 20 20 20 20 20 72 65 61 64 4f 6e 6c           readOnl
5e10: 79 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  y = true;..     
5e20: 20 20 20 20 20 20 20 20 20 20 20 73 61 66 65 20             safe 
5e30: 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
5e40: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
5e50: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
5e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
5ea0: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
5eb0: 4d 6f 63 6b 52 65 67 69 73 74 72 79 28 0d 0a 20  MockRegistry(.. 
5ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
5ed0: 6f 6f 6c 20 77 68 61 74 49 66 0d 0a 20 20 20 20  ool whatIf..    
5ee0: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
5ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a                 :
5f00: 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20   this()..       
5f10: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5f20: 20 20 20 20 20 20 20 20 74 68 69 73 2e 77 68 61          this.wha
5f30: 74 49 66 20 3d 20 77 68 61 74 49 66 3b 0d 0a 20  tIf = whatIf;.. 
5f40: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
5f50: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
5f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
5fa0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
5fb0: 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74  ublic MockRegist
5fc0: 72 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry(..           
5fd0: 20 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66       bool whatIf
5fe0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
5ff0: 20 20 20 62 6f 6f 6c 20 72 65 61 64 4f 6e 6c 79     bool readOnly
6000: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6010: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
6020: 20 20 20 20 20 3a 20 74 68 69 73 28 77 68 61 74       : this(what
6030: 49 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  If)..           
6040: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
6050: 20 20 20 20 74 68 69 73 2e 72 65 61 64 4f 6e 6c      this.readOnl
6060: 79 20 3d 20 72 65 61 64 4f 6e 6c 79 3b 0d 0a 20  y = readOnly;.. 
6070: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
6080: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
6090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
60a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
60b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
60c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
60d0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
60e0: 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74  ublic MockRegist
60f0: 72 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry(..           
6100: 20 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66       bool whatIf
6110: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
6120: 20 20 20 62 6f 6f 6c 20 72 65 61 64 4f 6e 6c 79     bool readOnly
6130: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
6140: 20 20 20 62 6f 6f 6c 20 73 61 66 65 0d 0a 20 20     bool safe..  
6150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
6160: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6170: 20 3a 20 74 68 69 73 28 77 68 61 74 49 66 2c 20   : this(whatIf, 
6180: 72 65 61 64 4f 6e 6c 79 29 0d 0a 20 20 20 20 20  readOnly)..     
6190: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
61a0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 73            this.s
61b0: 61 66 65 20 3d 20 73 61 66 65 3b 0d 0a 20 20 20  afe = safe;..   
61c0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
61d0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
61e0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
61f0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
6200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6230: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
6240: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
6250: 6c 69 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a  lic Properties..
6260: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
6270: 61 74 65 20 62 6f 6f 6c 20 77 68 61 74 49 66 3b  ate bool whatIf;
6280: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
6290: 62 6c 69 63 20 62 6f 6f 6c 20 57 68 61 74 49 66  blic bool WhatIf
62a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
62b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
62c0: 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70   get { CheckDisp
62d0: 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20 77  osed(); return w
62e0: 68 61 74 49 66 3b 20 7d 0d 0a 20 20 20 20 20 20  hatIf; }..      
62f0: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
6300: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
6310: 20 77 68 61 74 49 66 20 3d 20 76 61 6c 75 65 3b   whatIf = value;
6320: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
6330: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
6340: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
6350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6380: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
6390: 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
63a0: 20 72 65 61 64 4f 6e 6c 79 3b 0d 0a 20 20 20 20   readOnly;..    
63b0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
63c0: 6f 6f 6c 20 52 65 61 64 4f 6e 6c 79 0d 0a 20 20  ool ReadOnly..  
63d0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
63e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
63f0: 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
6400: 28 29 3b 20 72 65 74 75 72 6e 20 72 65 61 64 4f  (); return readO
6410: 6e 6c 79 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  nly; }..        
6420: 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 43 68          set { Ch
6430: 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72  eckDisposed(); r
6440: 65 61 64 4f 6e 6c 79 20 3d 20 76 61 6c 75 65 3b  eadOnly = value;
6450: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
6460: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
6470: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
6480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64b0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
64c0: 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
64d0: 20 73 61 66 65 3b 0d 0a 20 20 20 20 20 20 20 20   safe;..        
64e0: 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
64f0: 53 61 66 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Safe..          
6500: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
6510: 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b       get { Check
6520: 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75  Disposed(); retu
6530: 72 6e 20 73 61 66 65 3b 20 7d 0d 0a 20 20 20 20  rn safe; }..    
6540: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
6550: 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
6560: 29 3b 20 73 61 66 65 20 3d 20 76 61 6c 75 65 3b  ); safe = value;
6570: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
6580: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
6590: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
65a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
65b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
65c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
65d0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
65e0: 20 20 20 20 70 72 69 76 61 74 65 20 4d 6f 63 6b      private Mock
65f0: 52 65 67 69 73 74 72 79 4b 65 79 20 63 6c 61 73  RegistryKey clas
6600: 73 65 73 52 6f 6f 74 3b 0d 0a 20 20 20 20 20 20  sesRoot;..      
6610: 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f 63        public Moc
6620: 6b 52 65 67 69 73 74 72 79 4b 65 79 20 43 6c 61  kRegistryKey Cla
6630: 73 73 65 73 52 6f 6f 74 0d 0a 20 20 20 20 20 20  ssesRoot..      
6640: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
6650: 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20           get..  
6660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
6670: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6680: 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
6690: 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
66a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
66b0: 28 63 6c 61 73 73 65 73 52 6f 6f 74 20 3d 3d 20  (classesRoot == 
66c0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
66d0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
66e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
66f0: 20 20 20 20 20 20 63 6c 61 73 73 65 73 52 6f 6f        classesRoo
6700: 74 20 3d 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69  t = new MockRegi
6710: 73 74 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20  stryKey(..      
6720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6730: 20 20 20 20 20 20 52 65 67 69 73 74 72 79 2e 43        Registry.C
6740: 6c 61 73 73 65 73 52 6f 6f 74 2c 20 77 68 61 74  lassesRoot, what
6750: 49 66 2c 20 72 65 61 64 4f 6e 6c 79 2c 20 73 61  If, readOnly, sa
6760: 66 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  fe);..          
6770: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
6780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6790: 20 20 20 72 65 74 75 72 6e 20 63 6c 61 73 73 65     return classe
67a0: 73 52 6f 6f 74 3b 0d 0a 20 20 20 20 20 20 20 20  sRoot;..        
67b0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
67c0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
67d0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
67e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
67f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
6820: 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
6830: 74 65 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b  te MockRegistryK
6840: 65 79 20 63 75 72 72 65 6e 74 43 6f 6e 66 69 67  ey currentConfig
6850: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
6860: 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74  ublic MockRegist
6870: 72 79 4b 65 79 20 43 75 72 72 65 6e 74 43 6f 6e  ryKey CurrentCon
6880: 66 69 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20  fig..           
6890: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
68a0: 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
68b0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
68c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
68d0: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
68e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
68f0: 20 20 20 20 20 20 20 20 69 66 20 28 63 75 72 72          if (curr
6900: 65 6e 74 43 6f 6e 66 69 67 20 3d 3d 20 6e 75 6c  entConfig == nul
6910: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
6920: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
6930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6940: 20 20 20 63 75 72 72 65 6e 74 43 6f 6e 66 69 67     currentConfig
6950: 20 3d 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73   = new MockRegis
6960: 74 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20 20  tryKey(..       
6970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6980: 20 20 20 20 20 52 65 67 69 73 74 72 79 2e 43 75       Registry.Cu
6990: 72 72 65 6e 74 43 6f 6e 66 69 67 2c 20 77 68 61  rrentConfig, wha
69a0: 74 49 66 2c 20 72 65 61 64 4f 6e 6c 79 2c 20 73  tIf, readOnly, s
69b0: 61 66 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  afe);..         
69c0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
69d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
69e0: 20 20 20 20 72 65 74 75 72 6e 20 63 75 72 72 65      return curre
69f0: 6e 74 43 6f 6e 66 69 67 3b 0d 0a 20 20 20 20 20  ntConfig;..     
6a00: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
6a10: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
6a20: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
6a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
6a70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
6a80: 69 76 61 74 65 20 4d 6f 63 6b 52 65 67 69 73 74  ivate MockRegist
6a90: 72 79 4b 65 79 20 63 75 72 72 65 6e 74 55 73 65  ryKey currentUse
6aa0: 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r;..            
6ab0: 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73  public MockRegis
6ac0: 74 72 79 4b 65 79 20 43 75 72 72 65 6e 74 55 73  tryKey CurrentUs
6ad0: 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  er..            
6ae0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
6af0: 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
6b00: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
6b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
6b20: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
6b30: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
6b40: 20 20 20 20 20 20 20 69 66 20 28 63 75 72 72 65         if (curre
6b50: 6e 74 55 73 65 72 20 3d 3d 20 6e 75 6c 6c 29 0d  ntUser == null).
6b60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6b70: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
6b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6b90: 63 75 72 72 65 6e 74 55 73 65 72 20 3d 20 6e 65  currentUser = ne
6ba0: 77 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65  w MockRegistryKe
6bb0: 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y(..            
6bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6bd0: 52 65 67 69 73 74 72 79 2e 43 75 72 72 65 6e 74  Registry.Current
6be0: 55 73 65 72 2c 20 77 68 61 74 49 66 2c 20 72 65  User, whatIf, re
6bf0: 61 64 4f 6e 6c 79 2c 20 73 61 66 65 29 3b 0d 0a  adOnly, safe);..
6c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6c10: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
6c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
6c30: 75 72 6e 20 63 75 72 72 65 6e 74 55 73 65 72 3b  urn currentUser;
6c40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6c50: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
6c60: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
6c70: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
6c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6cb0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
6cc0: 20 20 20 20 20 70 72 69 76 61 74 65 20 4d 6f 63       private Moc
6cd0: 6b 52 65 67 69 73 74 72 79 4b 65 79 20 64 79 6e  kRegistryKey dyn
6ce0: 44 61 74 61 3b 0d 0a 20 20 20 20 20 20 20 20 20  Data;..         
6cf0: 20 20 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65     public MockRe
6d00: 67 69 73 74 72 79 4b 65 79 20 44 79 6e 44 61 74  gistryKey DynDat
6d10: 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  a..            {
6d20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6d30: 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20    get..         
6d40: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
6d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68                Ch
6d60: 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
6d70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6d80: 20 20 20 20 20 20 69 66 20 28 64 79 6e 44 61 74        if (dynDat
6d90: 61 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  a == null)..    
6da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6db0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
6dc0: 20 20 20 20 20 20 20 20 20 20 20 64 79 6e 44 61             dynDa
6dd0: 74 61 20 3d 20 6e 65 77 20 4d 6f 63 6b 52 65 67  ta = new MockReg
6de0: 69 73 74 72 79 4b 65 79 28 0d 0a 20 20 20 20 20  istryKey(..     
6df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6e00: 20 20 20 20 20 20 20 52 65 67 69 73 74 72 79 2e         Registry.
6e10: 44 79 6e 44 61 74 61 2c 20 77 68 61 74 49 66 2c  DynData, whatIf,
6e20: 20 72 65 61 64 4f 6e 6c 79 2c 20 73 61 66 65 29   readOnly, safe)
6e30: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
6e40: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
6e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6e60: 72 65 74 75 72 6e 20 64 79 6e 44 61 74 61 3b 0d  return dynData;.
6e70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6e80: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
6e90: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
6ea0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
6eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ee0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
6ef0: 20 20 20 20 70 72 69 76 61 74 65 20 4d 6f 63 6b      private Mock
6f00: 52 65 67 69 73 74 72 79 4b 65 79 20 6c 6f 63 61  RegistryKey loca
6f10: 6c 4d 61 63 68 69 6e 65 3b 0d 0a 20 20 20 20 20  lMachine;..     
6f20: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f         public Mo
6f30: 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 4c 6f  ckRegistryKey Lo
6f40: 63 61 6c 4d 61 63 68 69 6e 65 0d 0a 20 20 20 20  calMachine..    
6f50: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
6f60: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
6f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6f80: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
6f90: 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
6fa0: 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
6fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
6fc0: 66 20 28 6c 6f 63 61 6c 4d 61 63 68 69 6e 65 20  f (localMachine 
6fd0: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
6fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
6ff0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7000: 20 20 20 20 20 20 20 20 20 6c 6f 63 61 6c 4d 61           localMa
7010: 63 68 69 6e 65 20 3d 20 6e 65 77 20 4d 6f 63 6b  chine = new Mock
7020: 52 65 67 69 73 74 72 79 4b 65 79 28 0d 0a 20 20  RegistryKey(..  
7030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7040: 20 20 20 20 20 20 20 20 20 20 52 65 67 69 73 74            Regist
7050: 72 79 2e 4c 6f 63 61 6c 4d 61 63 68 69 6e 65 2c  ry.LocalMachine,
7060: 20 77 68 61 74 49 66 2c 20 72 65 61 64 4f 6e 6c   whatIf, readOnl
7070: 79 2c 20 73 61 66 65 29 3b 0d 0a 20 20 20 20 20  y, safe);..     
7080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
7090: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
70a0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c          return l
70b0: 6f 63 61 6c 4d 61 63 68 69 6e 65 3b 0d 0a 20 20  ocalMachine;..  
70c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
70d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
70e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
70f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7130: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
7140: 20 70 72 69 76 61 74 65 20 4d 6f 63 6b 52 65 67   private MockReg
7150: 69 73 74 72 79 4b 65 79 20 70 65 72 66 6f 72 6d  istryKey perform
7160: 61 6e 63 65 44 61 74 61 3b 0d 0a 20 20 20 20 20  anceData;..     
7170: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f         public Mo
7180: 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 50 65  ckRegistryKey Pe
7190: 72 66 6f 72 6d 61 6e 63 65 44 61 74 61 0d 0a 20  rformanceData.. 
71a0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
71b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
71c0: 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t..             
71d0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
71e0: 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44            CheckD
71f0: 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
7200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7210: 20 20 69 66 20 28 70 65 72 66 6f 72 6d 61 6e 63    if (performanc
7220: 65 44 61 74 61 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  eData == null)..
7230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7240: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
7250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
7260: 65 72 66 6f 72 6d 61 6e 63 65 44 61 74 61 20 3d  erformanceData =
7270: 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73 74 72   new MockRegistr
7280: 79 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20  yKey(..         
7290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
72a0: 20 20 20 52 65 67 69 73 74 72 79 2e 50 65 72 66     Registry.Perf
72b0: 6f 72 6d 61 6e 63 65 44 61 74 61 2c 20 77 68 61  ormanceData, wha
72c0: 74 49 66 2c 20 72 65 61 64 4f 6e 6c 79 2c 20 73  tIf, readOnly, s
72d0: 61 66 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  afe);..         
72e0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
72f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7300: 20 20 20 20 72 65 74 75 72 6e 20 70 65 72 66 6f      return perfo
7310: 72 6d 61 6e 63 65 44 61 74 61 3b 0d 0a 20 20 20  rmanceData;..   
7320: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
7330: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
7340: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
7350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7390: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
73a0: 70 72 69 76 61 74 65 20 4d 6f 63 6b 52 65 67 69  private MockRegi
73b0: 73 74 72 79 4b 65 79 20 75 73 65 72 73 3b 0d 0a  stryKey users;..
73c0: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
73d0: 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b  ic MockRegistryK
73e0: 65 79 20 55 73 65 72 73 0d 0a 20 20 20 20 20 20  ey Users..      
73f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
7400: 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20           get..  
7410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
7420: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7430: 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
7440: 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
7450: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
7460: 28 75 73 65 72 73 20 3d 3d 20 6e 75 6c 6c 29 0d  (users == null).
7470: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7480: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
7490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
74a0: 75 73 65 72 73 20 3d 20 6e 65 77 20 4d 6f 63 6b  users = new Mock
74b0: 52 65 67 69 73 74 72 79 4b 65 79 28 0d 0a 20 20  RegistryKey(..  
74c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
74d0: 20 20 20 20 20 20 20 20 20 20 52 65 67 69 73 74            Regist
74e0: 72 79 2e 55 73 65 72 73 2c 20 77 68 61 74 49 66  ry.Users, whatIf
74f0: 2c 20 72 65 61 64 4f 6e 6c 79 2c 20 73 61 66 65  , readOnly, safe
7500: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
7510: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
7520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7530: 20 72 65 74 75 72 6e 20 75 73 65 72 73 3b 0d 0a   return users;..
7540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7550: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
7560: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
7570: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
7580: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
7590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
75d0: 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
75e0: 6f 6e 20 50 75 62 6c 69 63 20 22 52 65 67 69 73  on Public "Regis
75f0: 74 72 79 22 20 4d 65 74 68 6f 64 73 0d 0a 23 69  try" Methods..#i
7600: 66 20 66 61 6c 73 65 0d 0a 20 20 20 20 20 20 20  f false..       
7610: 20 20 20 20 20 70 75 62 6c 69 63 20 6f 62 6a 65       public obje
7620: 63 74 20 47 65 74 56 61 6c 75 65 28 0d 0a 20 20  ct GetValue(..  
7630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
7640: 72 69 6e 67 20 6b 65 79 4e 61 6d 65 2c 0d 0a 20  ring keyName,.. 
7650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
7660: 74 72 69 6e 67 20 76 61 6c 75 65 4e 61 6d 65 2c  tring valueName,
7670: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7680: 20 20 6f 62 6a 65 63 74 20 64 65 66 61 75 6c 74    object default
7690: 56 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20  Value..         
76a0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
76b0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
76c0: 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69           CheckDi
76d0: 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
76e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
76f0: 75 72 6e 20 52 65 67 69 73 74 72 79 2e 47 65 74  urn Registry.Get
7700: 56 61 6c 75 65 28 6b 65 79 4e 61 6d 65 2c 20 76  Value(keyName, v
7710: 61 6c 75 65 4e 61 6d 65 2c 20 64 65 66 61 75 6c  alueName, defaul
7720: 74 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20  tValue);..      
7730: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
7740: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
7750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
7790: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
77a0: 20 76 6f 69 64 20 53 65 74 56 61 6c 75 65 28 0d   void SetValue(.
77b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
77c0: 20 73 74 72 69 6e 67 20 6b 65 79 4e 61 6d 65 2c   string keyName,
77d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
77e0: 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 4e 61    string valueNa
77f0: 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
7800: 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75       object valu
7810: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
7820: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
7830: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
7840: 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
7850: 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ed();..         
7860: 20 20 20 20 20 20 20 43 68 65 63 6b 52 65 61 64         CheckRead
7870: 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only();....     
7880: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
7890: 77 68 61 74 49 66 29 0d 0a 20 20 20 20 20 20 20  whatIf)..       
78a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 52 65 67               Reg
78b0: 69 73 74 72 79 2e 53 65 74 56 61 6c 75 65 28 6b  istry.SetValue(k
78c0: 65 79 4e 61 6d 65 2c 20 76 61 6c 75 65 4e 61 6d  eyName, valueNam
78d0: 65 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  e, value);..    
78e0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
78f0: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
7900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
7940: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
7950: 69 63 20 76 6f 69 64 20 53 65 74 56 61 6c 75 65  ic void SetValue
7960: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
7970: 20 20 20 73 74 72 69 6e 67 20 6b 65 79 4e 61 6d     string keyNam
7980: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
7990: 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65      string value
79a0: 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  Name,..         
79b0: 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61         object va
79c0: 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  lue,..          
79d0: 20 20 20 20 20 20 52 65 67 69 73 74 72 79 56 61        RegistryVa
79e0: 6c 75 65 4b 69 6e 64 20 76 61 6c 75 65 4b 69 6e  lueKind valueKin
79f0: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
7a00: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
7a10: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
7a20: 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
7a30: 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ed();..         
7a40: 20 20 20 20 20 20 20 43 68 65 63 6b 52 65 61 64         CheckRead
7a50: 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only();....     
7a60: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
7a70: 77 68 61 74 49 66 29 0d 0a 20 20 20 20 20 20 20  whatIf)..       
7a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 52 65 67               Reg
7a90: 69 73 74 72 79 2e 53 65 74 56 61 6c 75 65 28 6b  istry.SetValue(k
7aa0: 65 79 4e 61 6d 65 2c 20 76 61 6c 75 65 4e 61 6d  eyName, valueNam
7ab0: 65 2c 20 76 61 6c 75 65 2c 20 76 61 6c 75 65 4b  e, value, valueK
7ac0: 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ind);..         
7ad0: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
7ae0: 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
7af0: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
7b00: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
7b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b40: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
7b50: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
7b60: 72 69 76 61 74 65 20 4d 65 74 68 6f 64 73 0d 0a  rivate Methods..
7b70: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
7b80: 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 52 65  ate void CheckRe
7b90: 61 64 4f 6e 6c 79 28 29 0d 0a 20 20 20 20 20 20  adOnly()..      
7ba0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
7bb0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
7bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
7bd0: 4e 4f 54 45 3a 20 49 6e 20 22 72 65 61 64 2d 6f  NOTE: In "read-o
7be0: 6e 6c 79 22 20 6d 6f 64 65 2c 20 77 65 20 64 69  nly" mode, we di
7bf0: 73 61 6c 6c 6f 77 20 61 6c 6c 20 77 72 69 74 65  sallow all write
7c00: 20 61 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20   access...      
7c10: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
7c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
7c30: 20 28 21 72 65 61 64 4f 6e 6c 79 29 0d 0a 20 20   (!readOnly)..  
7c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7c50: 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20    return;....   
7c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
7c70: 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70  ow new InvalidOp
7c80: 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e  erationException
7c90: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
7ca0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
7cb0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
7cc0: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
7cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
7d10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
7d20: 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65  gion IDisposable
7d30: 20 22 50 61 74 74 65 72 6e 22 20 4d 65 6d 62 65   "Pattern" Membe
7d40: 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  rs..            
7d50: 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 64 69 73  private bool dis
7d60: 70 6f 73 65 64 3b 0d 0a 20 20 20 20 20 20 20 20  posed;..        
7d70: 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64      private void
7d80: 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
7d90: 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
7da0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
7db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
7dc0: 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20  (!disposed)..   
7dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7de0: 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
7df0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
7e00: 77 20 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70  w new ObjectDisp
7e10: 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a  osedException(..
7e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e30: 20 20 20 20 74 79 70 65 6f 66 28 4d 6f 63 6b 52      typeof(MockR
7e40: 65 67 69 73 74 72 79 29 2e 4e 61 6d 65 29 3b 0d  egistry).Name);.
7e50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
7e60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
7e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7eb0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
7ec0: 20 70 72 69 76 61 74 65 20 2f 2a 20 70 72 6f 74   private /* prot
7ed0: 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 2a 2f  ected virtual */
7ee0: 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 0d 0a   void Dispose(..
7ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f00: 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 0d 0a  bool disposing..
7f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f20: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
7f30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7f40: 20 20 69 66 20 28 21 64 69 73 70 6f 73 65 64 29    if (!disposed)
7f50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7f60: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
7f70: 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69 73           if (dis
7f80: 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20  posing)..       
7f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
7fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7fb0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
7fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
7fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7ff0: 20 20 20 20 20 20 2f 2f 20 64 69 73 70 6f 73 65        // dispose
8000: 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63   managed resourc
8010: 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20  es here.....    
8020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8030: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
8040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8050: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
8060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8070: 20 20 20 20 69 66 20 28 63 6c 61 73 73 65 73 52      if (classesR
8080: 6f 6f 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  oot != null)..  
8090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
80a0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
80b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
80c0: 20 20 20 20 20 63 6c 61 73 73 65 73 52 6f 6f 74       classesRoot
80d0: 2e 43 6c 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20  .Close();..     
80e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
80f0: 20 20 20 20 20 20 20 63 6c 61 73 73 65 73 52 6f         classesRo
8100: 6f 74 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  ot = null;..    
8110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8120: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
8130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8140: 20 69 66 20 28 63 75 72 72 65 6e 74 43 6f 6e 66   if (currentConf
8150: 69 67 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ig != null)..   
8160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8170: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
8180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8190: 20 20 20 20 63 75 72 72 65 6e 74 43 6f 6e 66 69      currentConfi
81a0: 67 2e 43 6c 6f 73 65 28 29 3b 0d 0a 20 20 20 20  g.Close();..    
81b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
81c0: 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 43          currentC
81d0: 6f 6e 66 69 67 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  onfig = null;.. 
81e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
81f0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
8200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8210: 20 20 20 20 69 66 20 28 63 75 72 72 65 6e 74 55      if (currentU
8220: 73 65 72 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ser != null)..  
8230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8240: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8260: 20 20 20 20 20 63 75 72 72 65 6e 74 55 73 65 72       currentUser
8270: 2e 43 6c 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20  .Close();..     
8280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8290: 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 55 73         currentUs
82a0: 65 72 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  er = null;..    
82b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
82c0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
82d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
82e0: 20 69 66 20 28 64 79 6e 44 61 74 61 20 21 3d 20   if (dynData != 
82f0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
8300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
8310: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 79                dy
8330: 6e 44 61 74 61 2e 43 6c 6f 73 65 28 29 3b 0d 0a  nData.Close();..
8340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8350: 20 20 20 20 20 20 20 20 20 20 20 20 64 79 6e 44              dynD
8360: 61 74 61 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20  ata = null;..   
8370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8380: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
8390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
83a0: 20 20 69 66 20 28 6c 6f 63 61 6c 4d 61 63 68 69    if (localMachi
83b0: 6e 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ne != null)..   
83c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
83d0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
83e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
83f0: 20 20 20 20 6c 6f 63 61 6c 4d 61 63 68 69 6e 65      localMachine
8400: 2e 43 6c 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20  .Close();..     
8410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8420: 20 20 20 20 20 20 20 6c 6f 63 61 6c 4d 61 63 68         localMach
8430: 69 6e 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20  ine = null;..   
8440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8450: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
8460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8470: 20 20 69 66 20 28 70 65 72 66 6f 72 6d 61 6e 63    if (performanc
8480: 65 44 61 74 61 20 21 3d 20 6e 75 6c 6c 29 0d 0a  eData != null)..
8490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
84a0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
84b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
84c0: 20 20 20 20 20 20 20 70 65 72 66 6f 72 6d 61 6e         performan
84d0: 63 65 44 61 74 61 2e 43 6c 6f 73 65 28 29 3b 0d  ceData.Close();.
84e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
84f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 65 72               per
8500: 66 6f 72 6d 61 6e 63 65 44 61 74 61 20 3d 20 6e  formanceData = n
8510: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
8520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
8530: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
8540: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 75             if (u
8550: 73 65 72 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  sers != null).. 
8560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8570: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
8580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8590: 20 20 20 20 20 20 75 73 65 72 73 2e 43 6c 6f 73        users.Clos
85a0: 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  e();..          
85b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
85c0: 20 20 75 73 65 72 73 20 3d 20 6e 75 6c 6c 3b 0d    users = null;.
85d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
85e0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
85f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8600: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
8610: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
8620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
8640: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8650: 20 20 20 20 20 2f 2f 20 72 65 6c 65 61 73 65 20       // release 
8660: 75 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72  unmanaged resour
8670: 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20  ces here.....   
8680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8690: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
86a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
86b0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
86c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
86d0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
86e0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
86f0: 54 68 69 73 20 6f 62 6a 65 63 74 20 69 73 20 6e  This object is n
8700: 6f 77 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20  ow disposed...  
8710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8720: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
8730: 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6f 73            dispos
8740: 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ed = true;..    
8750: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
8760: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
8770: 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
8780: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
8790: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
87a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
87b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
87c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
87d0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
87e0: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49         #region I
87f0: 44 69 73 70 6f 73 61 62 6c 65 20 4d 65 6d 62 65  Disposable Membe
8800: 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  rs..            
8810: 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70  public void Disp
8820: 6f 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20  ose()..         
8830: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
8840: 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72        Dispose(tr
8850: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
8860: 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73        GC.Suppres
8870: 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b  sFinalize(this);
8880: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
8890: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e  .            #en
88a0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
88b0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
88c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
8900: 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
8910: 6e 20 44 65 73 74 72 75 63 74 6f 72 0d 0a 20 20  n Destructor..  
8920: 20 20 20 20 20 20 20 20 20 20 7e 4d 6f 63 6b 52            ~MockR
8930: 65 67 69 73 74 72 79 28 29 0d 0a 20 20 20 20 20  egistry()..     
8940: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
8950: 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f 73            Dispos
8960: 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20  e(false);..     
8970: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
8980: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
8990: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
89a0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
89b0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
89c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8a00: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
8a10: 65 67 69 6f 6e 20 4d 6f 63 6b 52 65 67 69 73 74  egion MockRegist
8a20: 72 79 4b 65 79 20 43 6c 61 73 73 0d 0a 20 20 20  ryKey Class..   
8a30: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65       internal se
8a40: 61 6c 65 64 20 63 6c 61 73 73 20 4d 6f 63 6b 52  aled class MockR
8a50: 65 67 69 73 74 72 79 4b 65 79 20 3a 20 49 44 69  egistryKey : IDi
8a60: 73 70 6f 73 61 62 6c 65 0d 0a 20 20 20 20 20 20  sposable..      
8a70: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
8a80: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
8a90: 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20   Constructors.. 
8aa0: 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
8ab0: 74 65 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b  te MockRegistryK
8ac0: 65 79 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ey()..          
8ad0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
8ae0: 20 20 20 20 20 77 68 61 74 49 66 20 3d 20 74 72       whatIf = tr
8af0: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
8b00: 20 20 20 20 20 72 65 61 64 4f 6e 6c 79 20 3d 20       readOnly = 
8b10: 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
8b20: 20 20 20 20 20 20 20 73 61 66 65 20 3d 20 74 72         safe = tr
8b30: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
8b40: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
8b50: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
8b60: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
8b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
8bb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
8bc0: 67 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73  gion Public Cons
8bd0: 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20  tructors..      
8be0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f 63        public Moc
8bf0: 6b 52 65 67 69 73 74 72 79 4b 65 79 28 0d 0a 20  kRegistryKey(.. 
8c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52                 R
8c10: 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79 0d 0a  egistryKey key..
8c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8c30: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
8c40: 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20     : this()..   
8c50: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
8c60: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
8c70: 2e 6b 65 79 20 3d 20 6b 65 79 3b 0d 0a 20 20 20  .key = key;..   
8c80: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
8c90: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
8ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
8ce0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
8cf0: 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79  lic MockRegistry
8d00: 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Key(..          
8d10: 20 20 20 20 20 20 52 65 67 69 73 74 72 79 4b 65        RegistryKe
8d20: 79 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20  y key,..        
8d30: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73          string s
8d40: 75 62 4b 65 79 4e 61 6d 65 0d 0a 20 20 20 20 20  ubKeyName..     
8d50: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
8d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20                : 
8d70: 74 68 69 73 28 6b 65 79 29 0d 0a 20 20 20 20 20  this(key)..     
8d80: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
8d90: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 73            this.s
8da0: 75 62 4b 65 79 4e 61 6d 65 20 3d 20 73 75 62 4b  ubKeyName = subK
8db0: 65 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  eyName;..       
8dc0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
8dd0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
8de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
8e20: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
8e30: 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 28  MockRegistryKey(
8e40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8e50: 20 20 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65    RegistryKey ke
8e60: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
8e70: 20 20 20 20 73 74 72 69 6e 67 20 73 75 62 4b 65      string subKe
8e80: 79 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  yName,..        
8e90: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61          bool wha
8ea0: 74 49 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tIf..           
8eb0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
8ec0: 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 6b          : this(k
8ed0: 65 79 2c 20 73 75 62 4b 65 79 4e 61 6d 65 29 0d  ey, subKeyName).
8ee0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
8ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8f00: 74 68 69 73 2e 77 68 61 74 49 66 20 3d 20 77 68  this.whatIf = wh
8f10: 61 74 49 66 3b 0d 0a 20 20 20 20 20 20 20 20 20  atIf;..         
8f20: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
8f30: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
8f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f70: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
8f80: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f         public Mo
8f90: 63 6b 52 65 67 69 73 74 72 79 4b 65 79 28 0d 0a  ckRegistryKey(..
8fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8fb0: 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79 2c  RegistryKey key,
8fc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8fd0: 20 20 73 74 72 69 6e 67 20 73 75 62 4b 65 79 4e    string subKeyN
8fe0: 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
8ff0: 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49        bool whatI
9000: 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f,..            
9010: 20 20 20 20 62 6f 6f 6c 20 72 65 61 64 4f 6e 6c      bool readOnl
9020: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
9030: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
9040: 20 20 20 20 20 20 3a 20 74 68 69 73 28 6b 65 79        : this(key
9050: 2c 20 73 75 62 4b 65 79 4e 61 6d 65 2c 20 77 68  , subKeyName, wh
9060: 61 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20 20  atIf)..         
9070: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
9080: 20 20 20 20 20 20 74 68 69 73 2e 72 65 61 64 4f        this.readO
9090: 6e 6c 79 20 3d 20 72 65 61 64 4f 6e 6c 79 3b 0d  nly = readOnly;.
90a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
90b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
90c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9100: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
9110: 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69   public MockRegi
9120: 73 74 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20  stryKey(..      
9130: 20 20 20 20 20 20 20 20 20 20 52 65 67 69 73 74            Regist
9140: 72 79 4b 65 79 20 6b 65 79 2c 0d 0a 20 20 20 20  ryKey key,..    
9150: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
9160: 6e 67 20 73 75 62 4b 65 79 4e 61 6d 65 2c 0d 0a  ng subKeyName,..
9170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9180: 62 6f 6f 6c 20 77 68 61 74 49 66 2c 0d 0a 20 20  bool whatIf,..  
9190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
91a0: 6f 6c 20 72 65 61 64 4f 6e 6c 79 2c 0d 0a 20 20  ol readOnly,..  
91b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
91c0: 6f 6c 20 73 61 66 65 0d 0a 20 20 20 20 20 20 20  ol safe..       
91d0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
91e0: 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
91f0: 69 73 28 6b 65 79 2c 20 73 75 62 4b 65 79 4e 61  is(key, subKeyNa
9200: 6d 65 2c 20 77 68 61 74 49 66 2c 20 72 65 61 64  me, whatIf, read
9210: 4f 6e 6c 79 29 0d 0a 20 20 20 20 20 20 20 20 20  Only)..         
9220: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
9230: 20 20 20 20 20 20 74 68 69 73 2e 73 61 66 65 20        this.safe 
9240: 3d 20 73 61 66 65 3b 0d 0a 20 20 20 20 20 20 20  = safe;..       
9250: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
9260: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
9270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
92a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
92b0: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
92c0: 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 28  MockRegistryKey(
92d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
92e0: 20 20 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65    RegistryKey ke
92f0: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
9300: 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66 0d      bool whatIf.
9310: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9320: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
9330: 20 20 20 20 3a 20 74 68 69 73 28 6b 65 79 2c 20      : this(key, 
9340: 6e 75 6c 6c 2c 20 77 68 61 74 49 66 29 0d 0a 20  null, whatIf).. 
9350: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
9360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
9370: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
9380: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
9390: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
93a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
93e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
93f0: 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72  blic MockRegistr
9400: 79 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20  yKey(..         
9410: 20 20 20 20 20 20 20 52 65 67 69 73 74 72 79 4b         RegistryK
9420: 65 79 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20  ey key,..       
9430: 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68           bool wh
9440: 61 74 49 66 2c 0d 0a 20 20 20 20 20 20 20 20 20  atIf,..         
9450: 20 20 20 20 20 20 20 62 6f 6f 6c 20 72 65 61 64         bool read
9460: 4f 6e 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  Only..          
9470: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
9480: 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28           : this(
9490: 6b 65 79 2c 20 6e 75 6c 6c 2c 20 77 68 61 74 49  key, null, whatI
94a0: 66 2c 20 72 65 61 64 4f 6e 6c 79 29 0d 0a 20 20  f, readOnly)..  
94b0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
94c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
94d0: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
94e0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
94f0: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
9500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
9540: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
9550: 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79  lic MockRegistry
9560: 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Key(..          
9570: 20 20 20 20 20 20 52 65 67 69 73 74 72 79 4b 65        RegistryKe
9580: 79 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20  y key,..        
9590: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61          bool wha
95a0: 74 49 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf,..          
95b0: 20 20 20 20 20 20 62 6f 6f 6c 20 72 65 61 64 4f        bool readO
95c0: 6e 6c 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  nly,..          
95d0: 20 20 20 20 20 20 62 6f 6f 6c 20 73 61 66 65 0d        bool safe.
95e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
95f0: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
9600: 20 20 20 20 3a 20 74 68 69 73 28 6b 65 79 2c 20      : this(key, 
9610: 6e 75 6c 6c 2c 20 77 68 61 74 49 66 2c 20 72 65  null, whatIf, re
9620: 61 64 4f 6e 6c 79 2c 20 73 61 66 65 29 0d 0a 20  adOnly, safe).. 
9630: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
9640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
9650: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
9660: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
9670: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
9680: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
9690: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
96a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96d0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
96e0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
96f0: 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20  blic Methods..  
9700: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
9710: 20 76 6f 69 64 20 43 6c 6f 73 65 28 29 0d 0a 20   void Close().. 
9720: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
9730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
9740: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9750: 20 20 2f 2f 20 4e 4f 54 45 3a 20 4e 6f 20 64 69    // NOTE: No di
9760: 73 70 6f 73 65 64 20 63 68 65 63 6b 20 68 65 72  sposed check her
9770: 65 20 62 65 63 61 75 73 65 20 63 61 6c 6c 69 6e  e because callin
9780: 67 20 74 68 69 73 20 6d 65 74 68 6f 64 0d 0a 20  g this method.. 
9790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
97a0: 2f 20 20 20 20 20 20 20 73 68 6f 75 6c 64 20 62  /       should b
97b0: 65 20 6a 75 73 74 20 6c 69 6b 65 20 63 61 6c 6c  e just like call
97c0: 69 6e 67 20 44 69 73 70 6f 73 65 2e 0d 0a 20 20  ing Dispose...  
97d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
97e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
97f0: 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b    Dispose(true);
9800: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
9810: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
9820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9860: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
9870: 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69    public void Di
9880: 73 61 62 6c 65 43 6c 6f 73 65 28 29 0d 0a 20 20  sableClose()..  
9890: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
98a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65               Che
98b0: 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d  ckDisposed();...
98c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
98d0: 20 6e 6f 43 6c 6f 73 65 20 3d 20 74 72 75 65 3b   noClose = true;
98e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
98f0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
9900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9940: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
9950: 20 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67    public MockReg
9960: 69 73 74 72 79 4b 65 79 20 43 72 65 61 74 65 53  istryKey CreateS
9970: 75 62 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20  ubKey(..        
9980: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73          string s
9990: 75 62 4b 65 79 4e 61 6d 65 0d 0a 20 20 20 20 20  ubKeyName..     
99a0: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
99b0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
99c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65               Che
99d0: 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20  ckDisposed();.. 
99e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
99f0: 68 65 63 6b 52 65 61 64 4f 6e 6c 79 28 29 3b 0d  heckReadOnly();.
9a00: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
9a10: 20 20 20 69 66 20 28 6b 65 79 20 3d 3d 20 6e 75     if (key == nu
9a20: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
9a30: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
9a40: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
9a50: 20 20 20 20 20 20 20 20 20 69 66 20 28 77 68 61           if (wha
9a60: 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf)..          
9a70: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
9a90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9aa0: 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20 41 74       // HACK: At
9ab0: 74 65 6d 70 74 20 74 6f 20 6f 70 65 6e 20 74 68  tempt to open th
9ac0: 65 20 73 70 65 63 69 66 69 65 64 20 73 75 62 2d  e specified sub-
9ad0: 6b 65 79 2e 20 20 49 66 20 74 68 69 73 0d 0a 20  key.  If this.. 
9ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9af0: 20 20 20 2f 2f 20 20 20 20 20 20 20 66 61 69 6c     //       fail
9b00: 73 2c 20 77 65 20 77 69 6c 6c 20 73 69 6d 70 6c  s, we will simpl
9b10: 79 20 72 65 74 75 72 6e 20 74 68 65 20 77 72 61  y return the wra
9b20: 70 70 65 64 20 72 6f 6f 74 20 6b 65 79 0d 0a 20  pped root key.. 
9b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9b40: 20 20 20 2f 2f 20 20 20 20 20 20 20 69 74 73 65     //       itse
9b50: 6c 66 20 73 69 6e 63 65 20 6e 6f 20 77 72 69 74  lf since no writ
9b60: 65 73 20 61 72 65 20 61 6c 6c 6f 77 65 64 20 69  es are allowed i
9b70: 6e 20 22 77 68 61 74 2d 69 66 22 0d 0a 20 20 20  n "what-if"..   
9b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9b90: 20 2f 2f 20 20 20 20 20 20 20 6d 6f 64 65 20 61   //       mode a
9ba0: 6e 79 68 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20  nyhow...        
9bb0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
9bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9bd0: 20 20 20 20 52 65 67 69 73 74 72 79 4b 65 79 20      RegistryKey 
9be0: 73 75 62 4b 65 79 20 3d 20 6b 65 79 2e 4f 70 65  subKey = key.Ope
9bf0: 6e 53 75 62 4b 65 79 28 73 75 62 4b 65 79 4e 61  nSubKey(subKeyNa
9c00: 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
9c10: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
9c20: 73 75 62 4b 65 79 20 21 3d 20 6e 75 6c 6c 29 0d  subKey != null).
9c30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9c40: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c60: 72 65 74 75 72 6e 20 6e 65 77 20 4d 6f 63 6b 52  return new MockR
9c70: 65 67 69 73 74 72 79 4b 65 79 28 0d 0a 20 20 20  egistryKey(..   
9c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c90: 20 20 20 20 20 20 20 20 20 73 75 62 4b 65 79 2c           subKey,
9ca0: 20 77 68 61 74 49 66 2c 20 72 65 61 64 4f 6e 6c   whatIf, readOnl
9cb0: 79 2c 20 73 61 66 65 29 3b 0d 0a 20 20 20 20 20  y, safe);..     
9cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
9cd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9ce0: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
9cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9d00: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
9d10: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
9d20: 6e 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73 74  n new MockRegist
9d30: 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20  ryKey(..        
9d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9d50: 20 20 20 20 6b 65 79 2c 20 73 75 62 4b 65 79 4e      key, subKeyN
9d60: 61 6d 65 2c 20 77 68 61 74 49 66 2c 20 72 65 61  ame, whatIf, rea
9d70: 64 4f 6e 6c 79 2c 20 73 61 66 65 29 3b 0d 0a 20  dOnly, safe);.. 
9d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9d90: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
9da0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
9db0: 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20           else.. 
9dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
9dd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9de0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77        return new
9df0: 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
9e00: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
9e10: 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 2e 43             key.C
9e20: 72 65 61 74 65 53 75 62 4b 65 79 28 73 75 62 4b  reateSubKey(subK
9e30: 65 79 4e 61 6d 65 29 2c 20 77 68 61 74 49 66 2c  eyName), whatIf,
9e40: 20 72 65 61 64 4f 6e 6c 79 2c 20 73 61 66 65 29   readOnly, safe)
9e50: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
9e60: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
9e70: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
9e80: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
9e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ec0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
9ed0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69        public voi
9ee0: 64 20 44 65 6c 65 74 65 53 75 62 4b 65 79 28 0d  d DeleteSubKey(.
9ef0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9f00: 20 73 74 72 69 6e 67 20 73 75 62 4b 65 79 4e 61   string subKeyNa
9f10: 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
9f20: 20 20 20 20 20 62 6f 6f 6c 20 74 68 72 6f 77 4f       bool throwO
9f30: 6e 4d 69 73 73 69 6e 67 0d 0a 20 20 20 20 20 20  nMissing..      
9f40: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
9f50: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
9f60: 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
9f70: 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20  kDisposed();..  
9f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68                Ch
9f90: 65 63 6b 52 65 61 64 4f 6e 6c 79 28 29 3b 0d 0a  eckReadOnly();..
9fa0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9fb0: 20 20 69 66 20 28 6b 65 79 20 3d 3d 20 6e 75 6c    if (key == nul
9fc0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
9fd0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
9fe0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
9ff0: 20 20 20 69 66 20 28 21 77 68 61 74 49 66 29 0d     if (!whatIf).
a000: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a010: 20 20 20 20 20 6b 65 79 2e 44 65 6c 65 74 65 53       key.DeleteS
a020: 75 62 4b 65 79 28 73 75 62 4b 65 79 4e 61 6d 65  ubKey(subKeyName
a030: 2c 20 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67  , throwOnMissing
a040: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
a050: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
a060: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
a070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a0a0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
a0b0: 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20      public void 
a0c0: 44 65 6c 65 74 65 53 75 62 4b 65 79 54 72 65 65  DeleteSubKeyTree
a0d0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
a0e0: 20 20 20 73 74 72 69 6e 67 20 73 75 62 4b 65 79     string subKey
a0f0: 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Name..          
a100: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
a110: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
a120: 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
a130: 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20  posed();..      
a140: 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 52            CheckR
a150: 65 61 64 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20  eadOnly();....  
a160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
a170: 20 28 6b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a   (key == null)..
a180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a190: 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20      return;.... 
a1a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
a1b0: 66 20 28 21 77 68 61 74 49 66 29 0d 0a 20 20 20  f (!whatIf)..   
a1c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a1d0: 20 6b 65 79 2e 44 65 6c 65 74 65 53 75 62 4b 65   key.DeleteSubKe
a1e0: 79 54 72 65 65 28 73 75 62 4b 65 79 4e 61 6d 65  yTree(subKeyName
a1f0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
a200: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
a210: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
a220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a250: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
a260: 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20      public void 
a270: 44 65 6c 65 74 65 56 61 6c 75 65 28 0d 0a 20 20  DeleteValue(..  
a280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
a290: 72 69 6e 67 20 6e 61 6d 65 2c 0d 0a 20 20 20 20  ring name,..    
a2a0: 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
a2b0: 20 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67 0d   throwOnMissing.
a2c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a2d0: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
a2e0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
a2f0: 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
a300: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
a310: 20 20 20 20 20 43 68 65 63 6b 52 65 61 64 4f 6e       CheckReadOn
a320: 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ly();....       
a330: 20 20 20 20 20 20 20 20 20 69 66 20 28 6b 65 79           if (key
a340: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
a350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
a360: 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  eturn;....      
a370: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 77            if (!w
a380: 68 61 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20  hatIf)..        
a390: 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 2e              key.
a3a0: 44 65 6c 65 74 65 56 61 6c 75 65 28 6e 61 6d 65  DeleteValue(name
a3b0: 2c 20 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67  , throwOnMissing
a3c0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
a3d0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
a3e0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
a3f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a420: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
a430: 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e      public strin
a440: 67 5b 5d 20 47 65 74 53 75 62 4b 65 79 4e 61 6d  g[] GetSubKeyNam
a450: 65 73 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  es()..          
a460: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
a470: 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
a480: 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
a490: 20 20 20 20 20 20 20 20 20 69 66 20 28 6b 65 79           if (key
a4a0: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
a4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
a4c0: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
a4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
a4e0: 65 74 75 72 6e 20 6b 65 79 2e 47 65 74 53 75 62  eturn key.GetSub
a4f0: 4b 65 79 4e 61 6d 65 73 28 29 3b 0d 0a 20 20 20  KeyNames();..   
a500: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
a510: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
a520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
a560: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
a570: 6c 69 63 20 6f 62 6a 65 63 74 20 47 65 74 56 61  lic object GetVa
a580: 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  lue(..          
a590: 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d        string nam
a5a0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
a5b0: 20 20 20 20 6f 62 6a 65 63 74 20 64 65 66 61 75      object defau
a5c0: 6c 74 56 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  ltValue..       
a5d0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
a5e0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
a5f0: 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
a600: 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
a610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
a620: 66 20 28 6b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d  f (key == null).
a630: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a640: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
a650: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
a660: 20 20 20 20 20 72 65 74 75 72 6e 20 6b 65 79 2e       return key.
a670: 47 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20 64  GetValue(name, d
a680: 65 66 61 75 6c 74 56 61 6c 75 65 29 3b 0d 0a 20  efaultValue);.. 
a690: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
a6a0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
a6b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
a6f0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
a700: 75 62 6c 69 63 20 73 74 72 69 6e 67 5b 5d 20 47  ublic string[] G
a710: 65 74 56 61 6c 75 65 4e 61 6d 65 73 28 29 0d 0a  etValueNames()..
a720: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
a730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
a740: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
a750: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
a760: 20 20 20 69 66 20 28 6b 65 79 20 3d 3d 20 6e 75     if (key == nu
a770: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
a780: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
a790: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
a7a0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
a7b0: 6b 65 79 2e 47 65 74 56 61 6c 75 65 4e 61 6d 65  key.GetValueName
a7c0: 73 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  s();..          
a7d0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
a7e0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
a7f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a820: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
a830: 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f 63        public Moc
a840: 6b 52 65 67 69 73 74 72 79 4b 65 79 20 4f 70 65  kRegistryKey Ope
a850: 6e 53 75 62 4b 65 79 28 0d 0a 20 20 20 20 20 20  nSubKey(..      
a860: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
a870: 20 73 75 62 4b 65 79 4e 61 6d 65 0d 0a 20 20 20   subKeyName..   
a880: 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
a890: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
a8a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
a8b0: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
a8c0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
a8d0: 20 20 20 72 65 74 75 72 6e 20 4f 70 65 6e 53 75     return OpenSu
a8e0: 62 4b 65 79 28 73 75 62 4b 65 79 4e 61 6d 65 2c  bKey(subKeyName,
a8f0: 20 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20   false);..      
a900: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
a910: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
a920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
a960: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
a970: 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
a980: 20 4f 70 65 6e 53 75 62 4b 65 79 28 0d 0a 20 20   OpenSubKey(..  
a990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
a9a0: 72 69 6e 67 20 73 75 62 4b 65 79 4e 61 6d 65 2c  ring subKeyName,
a9b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a9c0: 20 20 62 6f 6f 6c 20 77 72 69 74 61 62 6c 65 0d    bool writable.
a9d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a9e0: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
a9f0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
aa00: 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
aa10: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
aa20: 20 20 20 20 20 20 20 69 66 20 28 77 72 69 74 61         if (writa
aa30: 62 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ble)..          
aa40: 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 52            CheckR
aa50: 65 61 64 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20  eadOnly();....  
aa60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
aa70: 20 28 6b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a   (key == null)..
aa80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa90: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
aaa0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
aab0: 20 20 20 20 52 65 67 69 73 74 72 79 4b 65 79 20      RegistryKey 
aac0: 73 75 62 4b 65 79 20 3d 20 6b 65 79 2e 4f 70 65  subKey = key.Ope
aad0: 6e 53 75 62 4b 65 79 28 0d 0a 20 20 20 20 20 20  nSubKey(..      
aae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 75                su
aaf0: 62 4b 65 79 4e 61 6d 65 2c 20 77 68 61 74 49 66  bKeyName, whatIf
ab00: 20 3f 20 66 61 6c 73 65 20 3a 20 77 72 69 74 61   ? false : writa
ab10: 62 6c 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ble);....       
ab20: 20 20 20 20 20 20 20 20 20 69 66 20 28 73 75 62           if (sub
ab30: 4b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  Key == null)..  
ab40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ab50: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
ab60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ab70: 20 20 72 65 74 75 72 6e 20 6e 65 77 20 4d 6f 63    return new Moc
ab80: 6b 52 65 67 69 73 74 72 79 4b 65 79 28 73 75 62  kRegistryKey(sub
ab90: 4b 65 79 2c 20 77 68 61 74 49 66 2c 20 72 65 61  Key, whatIf, rea
aba0: 64 4f 6e 6c 79 2c 20 73 61 66 65 29 3b 0d 0a 20  dOnly, safe);.. 
abb0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
abc0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
abd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
abe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
abf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
ac10: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
ac20: 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 56 61  ublic void SetVa
ac30: 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  lue(..          
ac40: 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d        string nam
ac50: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
ac60: 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65      object value
ac70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ac80: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
ac90: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
aca0: 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
acb0: 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d();..          
acc0: 20 20 20 20 20 20 43 68 65 63 6b 52 65 61 64 4f        CheckReadO
acd0: 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  nly();....      
ace0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6b 65            if (ke
acf0: 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y == null)..    
ad00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ad10: 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20  return;....     
ad20: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
ad30: 77 68 61 74 49 66 29 0d 0a 20 20 20 20 20 20 20  whatIf)..       
ad40: 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79               key
ad50: 2e 53 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20  .SetValue(name, 
ad60: 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  value);..       
ad70: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
ad80: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
ad90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
ada0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
adb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
adc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
add0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ade0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
adf0: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
ae00: 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20  Properties..    
ae10: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
ae20: 74 72 69 6e 67 20 4e 61 6d 65 0d 0a 20 20 20 20  tring Name..    
ae30: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
ae40: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
ae50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ae60: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
ae70: 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
ae80: 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
ae90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
aea0: 66 20 28 6b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d  f (key == null).
aeb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
aec0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
aed0: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
aee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
aef0: 75 72 6e 20 21 53 74 72 69 6e 67 2e 49 73 4e 75  urn !String.IsNu
af00: 6c 6c 4f 72 45 6d 70 74 79 28 73 75 62 4b 65 79  llOrEmpty(subKey
af10: 4e 61 6d 65 29 20 3f 0d 0a 20 20 20 20 20 20 20  Name) ?..       
af20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
af30: 20 52 65 67 69 73 74 72 79 48 65 6c 70 65 72 2e   RegistryHelper.
af40: 4a 6f 69 6e 4b 65 79 4e 61 6d 65 73 28 6b 65 79  JoinKeyNames(key
af50: 2e 4e 61 6d 65 2c 20 73 75 62 4b 65 79 4e 61 6d  .Name, subKeyNam
af60: 65 29 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  e) :..          
af70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65                ke
af80: 79 2e 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  y.Name;..       
af90: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
afa0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
afb0: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
afc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
afd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
afe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
b000: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
b010: 61 74 65 20 52 65 67 69 73 74 72 79 4b 65 79 20  ate RegistryKey 
b020: 6b 65 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  key;..          
b030: 20 20 70 75 62 6c 69 63 20 52 65 67 69 73 74 72    public Registr
b040: 79 4b 65 79 20 4b 65 79 0d 0a 20 20 20 20 20 20  yKey Key..      
b050: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
b060: 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 43           get { C
b070: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
b080: 43 68 65 63 6b 53 61 66 65 28 29 3b 20 72 65 74  CheckSafe(); ret
b090: 75 72 6e 20 6b 65 79 3b 20 7d 0d 0a 20 20 20 20  urn key; }..    
b0a0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
b0b0: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
b0c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
b100: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
b110: 61 74 65 20 73 74 72 69 6e 67 20 73 75 62 4b 65  ate string subKe
b120: 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  yName;..        
b130: 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e      public strin
b140: 67 20 53 75 62 4b 65 79 4e 61 6d 65 0d 0a 20 20  g SubKeyName..  
b150: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
b160: 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
b170: 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
b180: 28 29 3b 20 72 65 74 75 72 6e 20 73 75 62 4b 65  (); return subKe
b190: 79 4e 61 6d 65 3b 20 7d 0d 0a 20 20 20 20 20 20  yName; }..      
b1a0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
b1b0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
b1c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
b200: 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
b210: 65 20 62 6f 6f 6c 20 77 68 61 74 49 66 3b 0d 0a  e bool whatIf;..
b220: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
b230: 69 63 20 62 6f 6f 6c 20 57 68 61 74 49 66 0d 0a  ic bool WhatIf..
b240: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
b250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
b260: 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73  et { CheckDispos
b270: 65 64 28 29 3b 20 72 65 74 75 72 6e 20 77 68 61  ed(); return wha
b280: 74 49 66 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  tIf; }..        
b290: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
b2a0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
b2b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2e0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
b2f0: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
b300: 62 6f 6f 6c 20 72 65 61 64 4f 6e 6c 79 3b 0d 0a  bool readOnly;..
b310: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
b320: 69 63 20 62 6f 6f 6c 20 52 65 61 64 4f 6e 6c 79  ic bool ReadOnly
b330: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
b340: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b350: 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70   get { CheckDisp
b360: 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20 72  osed(); return r
b370: 65 61 64 4f 6e 6c 79 3b 20 7d 0d 0a 20 20 20 20  eadOnly; }..    
b380: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
b390: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
b3a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b3d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
b3e0: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
b3f0: 69 63 20 62 6f 6f 6c 20 73 61 66 65 3b 0d 0a 20  ic bool safe;.. 
b400: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
b410: 63 20 62 6f 6f 6c 20 53 61 66 65 0d 0a 20 20 20  c bool Safe..   
b420: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
b430: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
b440: 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
b450: 29 3b 20 72 65 74 75 72 6e 20 73 61 66 65 3b 20  ); return safe; 
b460: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
b470: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
b480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4c0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
b4d0: 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 6e     public bool n
b4e0: 6f 43 6c 6f 73 65 3b 0d 0a 20 20 20 20 20 20 20  oClose;..       
b4f0: 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c       public bool
b500: 20 4e 6f 43 6c 6f 73 65 0d 0a 20 20 20 20 20 20   NoClose..      
b510: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
b520: 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 43           get { C
b530: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
b540: 72 65 74 75 72 6e 20 6e 6f 43 6c 6f 73 65 3b 20  return noClose; 
b550: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
b560: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
b570: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
b580: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
b590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
b5d0: 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
b5e0: 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f  on Private Metho
b5f0: 64 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ds..            
b600: 70 72 69 76 61 74 65 20 76 6f 69 64 20 43 68 65  private void Che
b610: 63 6b 52 65 61 64 4f 6e 6c 79 28 29 0d 0a 20 20  ckReadOnly()..  
b620: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
b630: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
b640: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b650: 20 2f 2f 20 4e 4f 54 45 3a 20 49 6e 20 22 72 65   // NOTE: In "re
b660: 61 64 2d 6f 6e 6c 79 22 20 6d 6f 64 65 2c 20 77  ad-only" mode, w
b670: 65 20 64 69 73 61 6c 6c 6f 77 20 61 6c 6c 20 77  e disallow all w
b680: 72 69 74 65 20 61 63 63 65 73 73 2e 0d 0a 20 20  rite access...  
b690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
b6a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b6b0: 20 20 69 66 20 28 21 72 65 61 64 4f 6e 6c 79 29    if (!readOnly)
b6c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b6d0: 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d        return;...
b6e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b6f0: 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c   throw new Inval
b700: 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70  idOperationExcep
b710: 74 69 6f 6e 28 29 3b 0d 0a 20 20 20 20 20 20 20  tion();..       
b720: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
b730: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
b740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
b780: 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
b790: 20 76 6f 69 64 20 43 68 65 63 6b 53 61 66 65 28   void CheckSafe(
b7a0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
b7b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b7c0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
b7d0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
b7e0: 6e 20 22 73 61 66 65 22 20 6d 6f 64 65 2c 20 77  n "safe" mode, w
b7f0: 65 20 64 69 73 61 6c 6c 6f 77 20 61 6c 6c 20 64  e disallow all d
b800: 69 72 65 63 74 20 61 63 63 65 73 73 20 74 6f 20  irect access to 
b810: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  the..           
b820: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f       //       co
b830: 6e 74 61 69 6e 65 64 20 72 65 67 69 73 74 72 79  ntained registry
b840: 20 6b 65 79 2e 0d 0a 20 20 20 20 20 20 20 20 20   key...         
b850: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
b860: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
b870: 73 61 66 65 29 0d 0a 20 20 20 20 20 20 20 20 20  safe)..         
b880: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
b890: 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  n;....          
b8a0: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
b8b0: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
b8c0: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 20 20  Exception();..  
b8d0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
b8e0: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
b8f0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
b900: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
b910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b940: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
b950: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 53 79        #region Sy
b960: 73 74 65 6d 2e 4f 62 6a 65 63 74 20 4f 76 65 72  stem.Object Over
b970: 72 69 64 65 73 0d 0a 20 20 20 20 20 20 20 20 20  rides..         
b980: 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
b990: 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69  de string ToStri
b9a0: 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ng()..          
b9b0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
b9c0: 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
b9d0: 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
b9e0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
b9f0: 74 68 69 73 2e 4e 61 6d 65 3b 0d 0a 20 20 20 20  this.Name;..    
ba00: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
ba10: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
ba20: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
ba30: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
ba40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ba50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ba60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ba70: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
ba80: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
ba90: 69 63 20 53 74 61 74 69 63 20 4d 65 74 68 6f 64  ic Static Method
baa0: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  s..            p
bab0: 75 62 6c 69 63 20 73 74 61 74 69 63 20 62 6f 6f  ublic static boo
bac0: 6c 20 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a 20  l NameEquals(.. 
bad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
bae0: 74 72 69 6e 67 20 6e 61 6d 65 31 2c 0d 0a 20 20  tring name1,..  
baf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
bb00: 72 69 6e 67 20 6e 61 6d 65 32 0d 0a 20 20 20 20  ring name2..    
bb10: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
bb20: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
bb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
bb40: 74 75 72 6e 20 53 74 72 69 6e 67 2e 45 71 75 61  turn String.Equa
bb50: 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ls(..           
bb60: 20 20 20 20 20 20 20 20 20 6e 61 6d 65 31 2c 20           name1, 
bb70: 6e 61 6d 65 32 2c 20 53 74 72 69 6e 67 43 6f 6d  name2, StringCom
bb80: 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49  parison.OrdinalI
bb90: 67 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 20 20 20  gnoreCase);..   
bba0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
bbb0: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
bbc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bbd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bbe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bbf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
bc00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
bc10: 6c 69 63 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  lic static bool 
bc20: 56 61 6c 75 65 45 71 75 61 6c 73 28 0d 0a 20 20  ValueEquals(..  
bc30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62                ob
bc40: 6a 65 63 74 20 76 61 6c 75 65 31 2c 0d 0a 20 20  ject value1,..  
bc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62                ob
bc60: 6a 65 63 74 20 76 61 6c 75 65 32 0d 0a 20 20 20  ject value2..   
bc70: 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
bc80: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
bc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
bca0: 66 20 28 28 76 61 6c 75 65 31 20 3d 3d 20 6e 75  f ((value1 == nu
bcb0: 6c 6c 29 20 7c 7c 20 28 76 61 6c 75 65 32 20 3d  ll) || (value2 =
bcc0: 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20  = null))..      
bcd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
bce0: 74 75 72 6e 20 28 28 76 61 6c 75 65 31 20 3d 3d  turn ((value1 ==
bcf0: 20 6e 75 6c 6c 29 20 26 26 20 28 76 61 6c 75 65   null) && (value
bd00: 32 20 3d 3d 20 6e 75 6c 6c 29 29 3b 0d 0a 0d 0a  2 == null));....
bd10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd20: 69 66 20 28 4f 62 6a 65 63 74 2e 52 65 66 65 72  if (Object.Refer
bd30: 65 6e 63 65 45 71 75 61 6c 73 28 76 61 6c 75 65  enceEquals(value
bd40: 31 2c 20 76 61 6c 75 65 32 29 29 0d 0a 20 20 20  1, value2))..   
bd50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd60: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 0d   return true;...
bd70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bd80: 20 54 79 70 65 20 74 79 70 65 31 20 3d 20 76 61   Type type1 = va
bd90: 6c 75 65 31 2e 47 65 74 54 79 70 65 28 29 3b 0d  lue1.GetType();.
bda0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bdb0: 20 54 79 70 65 20 74 79 70 65 32 20 3d 20 76 61   Type type2 = va
bdc0: 6c 75 65 32 2e 47 65 74 54 79 70 65 28 29 3b 0d  lue2.GetType();.
bdd0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
bde0: 20 20 20 69 66 20 28 21 4f 62 6a 65 63 74 2e 52     if (!Object.R
bdf0: 65 66 65 72 65 6e 63 65 45 71 75 61 6c 73 28 74  eferenceEquals(t
be00: 79 70 65 31 2c 20 74 79 70 65 32 29 29 0d 0a 20  ype1, type2)).. 
be10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
be20: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
be30: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
be40: 20 20 20 20 69 66 20 28 74 79 70 65 31 20 3d 3d      if (type1 ==
be50: 20 74 79 70 65 6f 66 28 69 6e 74 29 29 20 2f 2f   typeof(int)) //
be60: 20 44 57 6f 72 64 0d 0a 20 20 20 20 20 20 20 20   DWord..        
be70: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
be80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
be90: 65 74 75 72 6e 20 28 28 69 6e 74 29 76 61 6c 75  eturn ((int)valu
bea0: 65 31 20 3d 3d 20 28 69 6e 74 29 76 61 6c 75 65  e1 == (int)value
beb0: 32 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  2);..           
bec0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
bed0: 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
bee0: 28 74 79 70 65 31 20 3d 3d 20 74 79 70 65 6f 66  (type1 == typeof
bef0: 28 6c 6f 6e 67 29 29 20 2f 2f 20 51 57 6f 72 64  (long)) // QWord
bf00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bf10: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
bf20: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
bf30: 28 28 6c 6f 6e 67 29 76 61 6c 75 65 31 20 3d 3d  ((long)value1 ==
bf40: 20 28 6c 6f 6e 67 29 76 61 6c 75 65 32 29 3b 0d   (long)value2);.
bf50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bf60: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
bf70: 20 20 20 20 65 6c 73 65 20 69 66 20 28 74 79 70      else if (typ
bf80: 65 31 20 3d 3d 20 74 79 70 65 6f 66 28 73 74 72  e1 == typeof(str
bf90: 69 6e 67 29 29 20 2f 2f 20 53 74 72 69 6e 67 20  ing)) // String 
bfa0: 2f 20 45 78 70 61 6e 64 53 74 72 69 6e 67 0d 0a  / ExpandString..
bfb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bfc0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
bfd0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 74         return St
bfe0: 72 69 6e 67 2e 45 71 75 61 6c 73 28 0d 0a 20 20  ring.Equals(..  
bff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c000: 20 20 20 20 20 20 28 73 74 72 69 6e 67 29 76 61        (string)va
c010: 6c 75 65 31 2c 20 28 73 74 72 69 6e 67 29 76 61  lue1, (string)va
c020: 6c 75 65 32 2c 0d 0a 20 20 20 20 20 20 20 20 20  lue2,..         
c030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
c040: 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e  tringComparison.
c050: 4f 72 64 69 6e 61 6c 29 3b 0d 0a 20 20 20 20 20  Ordinal);..     
c060: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
c070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
c080: 73 65 20 69 66 20 28 74 79 70 65 31 20 3d 3d 20  se if (type1 == 
c090: 74 79 70 65 6f 66 28 73 74 72 69 6e 67 5b 5d 29  typeof(string[])
c0a0: 29 20 2f 2f 20 4d 75 6c 74 69 53 74 72 69 6e 67  ) // MultiString
c0b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c0c0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
c0d0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b           string[
c0e0: 5d 20 61 72 72 61 79 31 20 3d 20 28 73 74 72 69  ] array1 = (stri
c0f0: 6e 67 5b 5d 29 76 61 6c 75 65 31 3b 0d 0a 20 20  ng[])value1;..  
c100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c110: 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 72 61 79    string[] array
c120: 32 20 3d 20 28 73 74 72 69 6e 67 5b 5d 29 76 61  2 = (string[])va
c130: 6c 75 65 32 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  lue2;....       
c140: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
c150: 20 6c 65 6e 67 74 68 31 20 3d 20 61 72 72 61 79   length1 = array
c160: 31 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20 20 20  1.Length;....   
c170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c180: 20 69 66 20 28 6c 65 6e 67 74 68 31 20 21 3d 20   if (length1 != 
c190: 61 72 72 61 79 32 2e 4c 65 6e 67 74 68 29 0d 0a  array2.Length)..
c1a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c1b0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
c1c0: 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
c1d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72               for
c1e0: 20 28 69 6e 74 20 69 6e 64 65 78 31 20 3d 20 30   (int index1 = 0
c1f0: 3b 20 69 6e 64 65 78 31 20 3c 20 6c 65 6e 67 74  ; index1 < lengt
c200: 68 31 3b 20 69 6e 64 65 78 31 2b 2b 29 0d 0a 20  h1; index1++).. 
c210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c220: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
c230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
c240: 20 28 21 53 74 72 69 6e 67 2e 45 71 75 61 6c 73   (!String.Equals
c250: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
c260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c270: 20 20 20 61 72 72 61 79 31 5b 69 6e 64 65 78 31     array1[index1
c280: 5d 2c 20 61 72 72 61 79 32 5b 69 6e 64 65 78 31  ], array2[index1
c290: 5d 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ],..            
c2a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c2b0: 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72      StringCompar
c2c0: 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 29 29 0d 0a  ison.Ordinal))..
c2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c2e0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
c2f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c300: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
c310: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
c320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
c330: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c340: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
c350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
c360: 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20  turn true;..    
c370: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
c380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
c390: 6c 73 65 20 69 66 20 28 74 79 70 65 31 20 3d 3d  lse if (type1 ==
c3a0: 20 74 79 70 65 6f 66 28 62 79 74 65 5b 5d 29 29   typeof(byte[]))
c3b0: 20 2f 2f 20 42 69 6e 61 72 79 0d 0a 20 20 20 20   // Binary..    
c3c0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
c3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c3e0: 20 20 20 62 79 74 65 5b 5d 20 61 72 72 61 79 31     byte[] array1
c3f0: 20 3d 20 28 62 79 74 65 5b 5d 29 76 61 6c 75 65   = (byte[])value
c400: 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  1;..            
c410: 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20 61          byte[] a
c420: 72 72 61 79 32 20 3d 20 28 62 79 74 65 5b 5d 29  rray2 = (byte[])
c430: 76 61 6c 75 65 32 3b 0d 0a 0d 0a 20 20 20 20 20  value2;....     
c440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
c450: 6e 74 20 6c 65 6e 67 74 68 31 20 3d 20 61 72 72  nt length1 = arr
c460: 61 79 31 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20  ay1.Length;.... 
c470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c480: 20 20 20 69 66 20 28 6c 65 6e 67 74 68 31 20 21     if (length1 !
c490: 3d 20 61 72 72 61 79 32 2e 4c 65 6e 67 74 68 29  = array2.Length)
c4a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c4b0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
c4c0: 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
c4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
c4e0: 6f 72 20 28 69 6e 74 20 69 6e 64 65 78 31 20 3d  or (int index1 =
c4f0: 20 30 3b 20 69 6e 64 65 78 31 20 3c 20 6c 65 6e   0; index1 < len
c500: 67 74 68 31 3b 20 69 6e 64 65 78 31 2b 2b 29 0d  gth1; index1++).
c510: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c520: 20 20 20 20 20 20 20 20 20 69 66 20 28 61 72 72           if (arr
c530: 61 79 31 5b 69 6e 64 65 78 31 5d 20 21 3d 20 61  ay1[index1] != a
c540: 72 72 61 79 32 5b 69 6e 64 65 78 31 5d 29 0d 0a  rray2[index1])..
c550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c560: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
c570: 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
c580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c590: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
c5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
c5b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c5c0: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
c5d0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
c5e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c5f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c630: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
c640: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
c650: 20 69 6e 74 20 56 61 6c 75 65 48 61 73 68 43 6f   int ValueHashCo
c660: 64 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de(..           
c670: 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75       object valu
c680: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
c690: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
c6a0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
c6b0: 20 20 20 20 20 69 6e 74 20 72 65 73 75 6c 74 20       int result 
c6c0: 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  = 0;....        
c6d0: 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
c6e0: 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
c6f0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
c700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c710: 20 20 20 54 79 70 65 20 74 79 70 65 20 3d 20 76     Type type = v
c720: 61 6c 75 65 2e 47 65 74 54 79 70 65 28 29 3b 0d  alue.GetType();.
c730: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
c740: 20 20 20 20 20 20 20 69 66 20 28 28 74 79 70 65         if ((type
c750: 20 3d 3d 20 74 79 70 65 6f 66 28 69 6e 74 29 29   == typeof(int))
c760: 20 7c 7c 20 2f 2f 20 44 57 6f 72 64 0d 0a 20 20   || // DWord..  
c770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c780: 20 20 20 20 20 20 28 74 79 70 65 20 3d 3d 20 74        (type == t
c790: 79 70 65 6f 66 28 6c 6f 6e 67 29 29 20 7c 7c 20  ypeof(long)) || 
c7a0: 2f 2f 20 51 57 6f 72 64 0d 0a 20 20 20 20 20 20  // QWord..      
c7b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c7c0: 20 20 28 74 79 70 65 20 3d 3d 20 74 79 70 65 6f    (type == typeo
c7d0: 66 28 73 74 72 69 6e 67 29 29 29 20 2f 2f 20 53  f(string))) // S
c7e0: 74 72 69 6e 67 20 2f 20 45 78 70 61 6e 64 53 74  tring / ExpandSt
c7f0: 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20  ring..          
c800: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
c810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c820: 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 76 61       result = va
c830: 6c 75 65 2e 47 65 74 48 61 73 68 43 6f 64 65 28  lue.GetHashCode(
c840: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
c850: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
c860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
c870: 6c 73 65 20 69 66 20 28 28 74 79 70 65 20 3d 3d  lse if ((type ==
c880: 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67 5b 5d   typeof(string[]
c890: 29 29 20 7c 7c 20 2f 2f 20 4d 75 6c 74 69 53 74  )) || // MultiSt
c8a0: 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20  ring..          
c8b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74                (t
c8c0: 79 70 65 20 3d 3d 20 74 79 70 65 6f 66 28 62 79  ype == typeof(by
c8d0: 74 65 5b 5d 29 29 29 20 2f 2f 20 42 69 6e 61 72  te[]))) // Binar
c8e0: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
c8f0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
c900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c910: 20 20 41 72 72 61 79 20 61 72 72 61 79 20 3d 20    Array array = 
c920: 28 41 72 72 61 79 29 76 61 6c 75 65 3b 0d 0a 20  (Array)value;.. 
c930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c940: 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74         int lengt
c950: 68 20 3d 20 61 72 72 61 79 2e 4c 65 6e 67 74 68  h = array.Length
c960: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
c970: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72               for
c980: 20 28 69 6e 74 20 69 6e 64 65 78 20 3d 20 30 3b   (int index = 0;
c990: 20 69 6e 64 65 78 20 3c 20 6c 65 6e 67 74 68 3b   index < length;
c9a0: 20 69 6e 64 65 78 2b 2b 29 0d 0a 20 20 20 20 20   index++)..     
c9b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c9c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
c9d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c9e0: 20 20 6f 62 6a 65 63 74 20 65 6c 65 6d 65 6e 74    object element
c9f0: 20 3d 20 61 72 72 61 79 2e 47 65 74 56 61 6c 75   = array.GetValu
ca00: 65 28 69 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20 20  e(index);....   
ca10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ca20: 20 20 20 20 20 20 20 20 20 69 66 20 28 65 6c 65           if (ele
ca30: 6d 65 6e 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ment == null).. 
ca40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ca50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
ca60: 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20  ontinue;....    
ca70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ca80: 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 5e          result ^
ca90: 3d 20 65 6c 65 6d 65 6e 74 2e 47 65 74 48 61 73  = element.GetHas
caa0: 68 43 6f 64 65 28 29 3b 0d 0a 20 20 20 20 20 20  hCode();..      
cab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cac0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
cad0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
cae0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
caf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cb00: 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d   return result;.
cb10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
cb20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
cb30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb70: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
cb80: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73   public static s
cb90: 74 72 69 6e 67 20 56 61 6c 75 65 54 6f 53 74 72  tring ValueToStr
cba0: 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ing(..          
cbb0: 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c        object val
cbc0: 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue,..           
cbd0: 20 20 20 20 20 73 74 72 69 6e 67 20 64 65 6c 69       string deli
cbe0: 6d 69 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20  miter,..        
cbf0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e          string n
cc00: 75 6c 6c 56 61 6c 75 65 0d 0a 20 20 20 20 20 20  ullValue..      
cc10: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
cc20: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
cc30: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
cc40: 6e 67 20 72 65 73 75 6c 74 20 3d 20 6e 75 6c 6c  ng result = null
cc50: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
cc60: 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 21       if (value !
cc70: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
cc80: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
cc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cca0: 54 79 70 65 20 74 79 70 65 20 3d 20 76 61 6c 75  Type type = valu
ccb0: 65 2e 47 65 74 54 79 70 65 28 29 3b 0d 0a 0d 0a  e.GetType();....
ccc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ccd0: 20 20 20 20 69 66 20 28 28 74 79 70 65 20 3d 3d      if ((type ==
cce0: 20 74 79 70 65 6f 66 28 69 6e 74 29 29 20 7c 7c   typeof(int)) ||
ccf0: 20 2f 2f 20 44 57 6f 72 64 0d 0a 20 20 20 20 20   // DWord..     
cd00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd10: 20 20 20 28 74 79 70 65 20 3d 3d 20 74 79 70 65     (type == type
cd20: 6f 66 28 6c 6f 6e 67 29 29 20 7c 7c 20 2f 2f 20  of(long)) || // 
cd30: 51 57 6f 72 64 0d 0a 20 20 20 20 20 20 20 20 20  QWord..         
cd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
cd50: 74 79 70 65 20 3d 3d 20 74 79 70 65 6f 66 28 73  type == typeof(s
cd60: 74 72 69 6e 67 29 29 29 20 2f 2f 20 53 74 72 69  tring))) // Stri
cd70: 6e 67 20 2f 20 45 78 70 61 6e 64 53 74 72 69 6e  ng / ExpandStrin
cd80: 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  g..             
cd90: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
cda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cdb0: 20 20 72 65 73 75 6c 74 20 3d 20 76 61 6c 75 65    result = value
cdc0: 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
cdd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cde0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
cdf0: 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
ce00: 20 28 28 74 79 70 65 20 3d 3d 20 74 79 70 65 6f   ((type == typeo
ce10: 66 28 73 74 72 69 6e 67 5b 5d 29 29 20 7c 7c 20  f(string[])) || 
ce20: 2f 2f 20 4d 75 6c 74 69 53 74 72 69 6e 67 0d 0a  // MultiString..
ce30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce40: 20 20 20 20 20 20 20 20 28 74 79 70 65 20 3d 3d          (type ==
ce50: 20 74 79 70 65 6f 66 28 62 79 74 65 5b 5d 29 29   typeof(byte[]))
ce60: 29 20 2f 2f 20 42 69 6e 61 72 79 0d 0a 20 20 20  ) // Binary..   
ce70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce80: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
ce90: 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69              Stri
cea0: 6e 67 42 75 69 6c 64 65 72 20 62 75 69 6c 64 65  ngBuilder builde
ceb0: 72 20 3d 20 6e 65 77 20 53 74 72 69 6e 67 42 75  r = new StringBu
cec0: 69 6c 64 65 72 28 29 3b 0d 0a 20 20 20 20 20 20  ilder();..      
ced0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cee0: 20 20 41 72 72 61 79 20 61 72 72 61 79 20 3d 20    Array array = 
cef0: 28 41 72 72 61 79 29 76 61 6c 75 65 3b 0d 0a 20  (Array)value;.. 
cf00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf10: 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74         int lengt
cf20: 68 20 3d 20 61 72 72 61 79 2e 4c 65 6e 67 74 68  h = array.Length
cf30: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
cf40: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72               for
cf50: 20 28 69 6e 74 20 69 6e 64 65 78 20 3d 20 30 3b   (int index = 0;
cf60: 20 69 6e 64 65 78 20 3c 20 6c 65 6e 67 74 68 3b   index < length;
cf70: 20 69 6e 64 65 78 2b 2b 29 0d 0a 20 20 20 20 20   index++)..     
cf80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf90: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
cfa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cfb0: 20 20 69 66 20 28 28 69 6e 64 65 78 20 3e 20 30    if ((index > 0
cfc0: 29 20 26 26 20 28 64 65 6c 69 6d 69 74 65 72 20  ) && (delimiter 
cfd0: 21 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20  != null))..     
cfe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cff0: 20 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64             build
d000: 65 72 2e 41 70 70 65 6e 64 28 64 65 6c 69 6d 69  er.Append(delimi
d010: 74 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ter);....       
d020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d030: 20 20 20 20 20 6f 62 6a 65 63 74 20 65 6c 65 6d       object elem
d040: 65 6e 74 20 3d 20 61 72 72 61 79 2e 47 65 74 56  ent = array.GetV
d050: 61 6c 75 65 28 69 6e 64 65 78 29 3b 0d 0a 0d 0a  alue(index);....
d060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d070: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
d080: 65 6c 65 6d 65 6e 74 20 3d 3d 20 6e 75 6c 6c 29  element == null)
d090: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d0a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
d0b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d0c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d0d0: 20 69 66 20 28 6e 75 6c 6c 56 61 6c 75 65 20 21   if (nullValue !
d0e0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
d0f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d100: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75 69               bui
d110: 6c 64 65 72 2e 41 70 70 65 6e 64 28 6e 75 6c 6c  lder.Append(null
d120: 56 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  Value);....     
d130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d140: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69             conti
d150: 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nue;..          
d160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d170: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
d180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d190: 20 20 20 62 75 69 6c 64 65 72 2e 41 70 70 65 6e     builder.Appen
d1a0: 64 28 65 6c 65 6d 65 6e 74 2e 54 6f 53 74 72 69  d(element.ToStri
d1b0: 6e 67 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  ng());..        
d1c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d1d0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
d1e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73               res
d1f0: 75 6c 74 20 3d 20 62 75 69 6c 64 65 72 2e 54 6f  ult = builder.To
d200: 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20  String();..     
d210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
d220: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d230: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
d240: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65         return re
d250: 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  sult;..         
d260: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
d270: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
d280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d2a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d2b0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
d2c0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
d2d0: 61 74 69 63 20 62 6f 6f 6c 20 45 71 75 61 6c 73  atic bool Equals
d2e0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
d2f0: 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b     MockRegistryK
d300: 65 79 20 6b 65 79 31 2c 0d 0a 20 20 20 20 20 20  ey key1,..      
d310: 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65            MockRe
d320: 67 69 73 74 72 79 4b 65 79 20 6b 65 79 32 0d 0a  gistryKey key2..
d330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d340: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
d350: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d360: 20 20 69 66 20 28 28 6b 65 79 31 20 3d 3d 20 6e    if ((key1 == n
d370: 75 6c 6c 29 20 7c 7c 20 28 6b 65 79 32 20 3d 3d  ull) || (key2 ==
d380: 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20   null))..       
d390: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
d3a0: 75 72 6e 20 28 28 6b 65 79 31 20 3d 3d 20 6e 75  urn ((key1 == nu
d3b0: 6c 6c 29 20 26 26 20 28 6b 65 79 32 20 3d 3d 20  ll) && (key2 == 
d3c0: 6e 75 6c 6c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  null));....     
d3d0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 4f             if (O
d3e0: 62 6a 65 63 74 2e 52 65 66 65 72 65 6e 63 65 45  bject.ReferenceE
d3f0: 71 75 61 6c 73 28 6b 65 79 31 2c 20 6b 65 79 32  quals(key1, key2
d400: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
d410: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
d420: 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  rue;....        
d430: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e          return N
d440: 61 6d 65 45 71 75 61 6c 73 28 6b 65 79 31 2e 4e  ameEquals(key1.N
d450: 61 6d 65 2c 20 6b 65 79 32 2e 4e 61 6d 65 29 3b  ame, key2.Name);
d460: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
d470: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
d480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d4c0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
d4d0: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
d4e0: 69 6e 74 20 47 65 74 48 61 73 68 43 6f 64 65 28  int GetHashCode(
d4f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d500: 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65    MockRegistryKe
d510: 79 20 6b 65 79 0d 0a 20 20 20 20 20 20 20 20 20  y key..         
d520: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
d530: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
d540: 20 20 20 20 20 20 20 20 20 69 66 20 28 6b 65 79           if (key
d550: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
d560: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
d570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d580: 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 20 3d 20    string name = 
d590: 6b 65 79 2e 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20  key.Name;....   
d5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d5b0: 20 69 66 20 28 6e 61 6d 65 20 21 3d 20 6e 75 6c   if (name != nul
d5c0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
d5d0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
d5e0: 72 6e 20 6e 61 6d 65 2e 47 65 74 48 61 73 68 43  rn name.GetHashC
d5f0: 6f 64 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ode();..        
d600: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
d610: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
d620: 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20 20 20  urn 0;..        
d630: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
d640: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
d650: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
d660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d6a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
d6b0: 23 72 65 67 69 6f 6e 20 49 6d 70 6c 69 63 69 74  #region Implicit
d6c0: 20 43 6f 6e 76 65 72 73 69 6f 6e 20 4f 70 65 72   Conversion Oper
d6d0: 61 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20  ators..         
d6e0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
d6f0: 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 52 65     // BUGBUG: Re
d700: 6d 6f 76 65 20 6d 65 3f 20 20 54 68 69 73 20 73  move me?  This s
d710: 68 6f 75 6c 64 20 62 65 20 73 61 66 65 20 62 65  hould be safe be
d720: 63 61 75 73 65 20 69 6e 20 22 77 68 61 74 2d 69  cause in "what-i
d730: 66 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f"..            
d740: 2f 2f 20 20 20 20 20 20 20 20 20 6d 6f 64 65 20  //         mode 
d750: 61 6c 6c 20 6b 65 79 73 20 61 72 65 20 6f 70 65  all keys are ope
d760: 6e 65 64 20 72 65 61 64 2d 6f 6e 6c 79 2e 0d 0a  ned read-only...
d770: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
d780: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
d790: 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63  ic static implic
d7a0: 69 74 20 6f 70 65 72 61 74 6f 72 20 52 65 67 69  it operator Regi
d7b0: 73 74 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20  stryKey(..      
d7c0: 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65            MockRe
d7d0: 67 69 73 74 72 79 4b 65 79 20 6b 65 79 0d 0a 20  gistryKey key.. 
d7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
d7f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
d800: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d810: 20 72 65 74 75 72 6e 20 28 6b 65 79 20 21 3d 20   return (key != 
d820: 6e 75 6c 6c 29 20 3f 20 6b 65 79 2e 4b 65 79 20  null) ? key.Key 
d830: 3a 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  : null;..       
d840: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
d850: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
d860: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
d870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d8a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d8b0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
d8c0: 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73   #region IDispos
d8d0: 61 62 6c 65 20 22 50 61 74 74 65 72 6e 22 20 4d  able "Pattern" M
d8e0: 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
d8f0: 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
d900: 20 64 69 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20   disposed;..    
d910: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
d920: 76 6f 69 64 20 43 68 65 63 6b 44 69 73 70 6f 73  void CheckDispos
d930: 65 64 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  ed() /* throw */
d940: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
d950: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d960: 20 69 66 20 28 21 64 69 73 70 6f 73 65 64 29 0d   if (!disposed).
d970: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d980: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a       return;....
d990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d9a0: 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63 74  throw new Object
d9b0: 44 69 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f  DisposedExceptio
d9c0: 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
d9d0: 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 4d          typeof(M
d9e0: 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 29 2e  ockRegistryKey).
d9f0: 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  Name);..        
da00: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
da10: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
da20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da50: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
da60: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
da70: 2f 2a 20 70 72 6f 74 65 63 74 65 64 20 76 69 72  /* protected vir
da80: 74 75 61 6c 20 2a 2f 20 76 6f 69 64 20 44 69 73  tual */ void Dis
da90: 70 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20  pose(..         
daa0: 20 20 20 20 20 20 20 62 6f 6f 6c 20 64 69 73 70         bool disp
dab0: 6f 73 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20  osing..         
dac0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
dad0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
dae0: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 64 69           if (!di
daf0: 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20  sposed)..       
db00: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
db10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db20: 69 66 20 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a  if (disposing)..
db30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db40: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
db50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
db60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
db70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
db80: 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ///..           
db90: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
dba0: 64 69 73 70 6f 73 65 20 6d 61 6e 61 67 65 64 20  dispose managed 
dbb0: 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e  resources here..
dbc0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
dbd0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
dbe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dbf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
dc00: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
dc10: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6b             if (k
dc20: 65 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ey != null)..   
dc30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc40: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
dc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc60: 20 20 20 20 69 66 20 28 21 6e 6f 43 6c 6f 73 65      if (!noClose
dc70: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
dc80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc90: 20 20 20 6b 65 79 2e 43 6c 6f 73 65 28 29 3b 0d     key.Close();.
dca0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
dcb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b                 k
dcc0: 65 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  ey = null;..    
dcd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dce0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
dcf0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
dd00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dd10: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
dd20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dd30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
dd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dd50: 2f 2f 20 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e  // release unman
dd60: 61 67 65 64 20 72 65 73 6f 75 72 63 65 73 20 68  aged resources h
dd70: 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20  ere.....        
dd80: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
dd90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dda0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ddb0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
ddc0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
ddd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dde0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20    // NOTE: This 
ddf0: 6f 62 6a 65 63 74 20 69 73 20 6e 6f 77 20 64 69  object is now di
de00: 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20  sposed...       
de10: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
de20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
de30: 20 20 20 20 20 64 69 73 70 6f 73 65 64 20 3d 20       disposed = 
de40: 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
de50: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
de60: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
de70: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
de80: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
de90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
deb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ded0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
dee0: 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f    #region IDispo
def0: 73 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20  sable Members.. 
df00: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
df10: 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 29  c void Dispose()
df20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
df30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
df40: 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d   Dispose(true);.
df50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
df60: 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61   GC.SuppressFina
df70: 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20  lize(this);..   
df80: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
df90: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
dfa0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
dfb0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
dfc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dfd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dfe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dff0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
e000: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 73       #region Des
e010: 74 72 75 63 74 6f 72 0d 0a 20 20 20 20 20 20 20  tructor..       
e020: 20 20 20 20 20 7e 4d 6f 63 6b 52 65 67 69 73 74       ~MockRegist
e030: 72 79 4b 65 79 28 29 0d 0a 20 20 20 20 20 20 20  ryKey()..       
e040: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
e050: 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65 28          Dispose(
e060: 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20  false);..       
e070: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
e080: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
e090: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
e0a0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
e0b0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
e0c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e0d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e0e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e0f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e100: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
e110: 69 6f 6e 20 52 65 67 69 73 74 72 79 52 6f 6f 74  ion RegistryRoot
e120: 4b 65 79 4e 61 6d 65 73 20 43 6c 61 73 73 0d 0a  KeyNames Class..
e130: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
e140: 73 74 61 74 69 63 20 63 6c 61 73 73 20 52 65 67  static class Reg
e150: 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d 65  istryRootKeyName
e160: 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  s..        {..  
e170: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
e180: 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 48 4b   const string HK
e190: 45 59 5f 43 4c 41 53 53 45 53 5f 52 4f 4f 54 20  EY_CLASSES_ROOT 
e1a0: 3d 20 22 48 4b 45 59 5f 43 4c 41 53 53 45 53 5f  = "HKEY_CLASSES_
e1b0: 52 4f 4f 54 22 3b 0d 0a 20 20 20 20 20 20 20 20  ROOT";..        
e1c0: 20 20 20 20 70 75 62 6c 69 63 20 63 6f 6e 73 74      public const
e1d0: 20 73 74 72 69 6e 67 20 48 4b 43 52 20 3d 20 22   string HKCR = "
e1e0: 48 4b 43 52 22 3b 0d 0a 0d 0a 20 20 20 20 20 20  HKCR";....      
e1f0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
e200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
e240: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
e250: 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 48 4b 45  const string HKE
e260: 59 5f 43 55 52 52 45 4e 54 5f 43 4f 4e 46 49 47  Y_CURRENT_CONFIG
e270: 20 3d 20 22 48 4b 45 59 5f 43 55 52 52 45 4e 54   = "HKEY_CURRENT
e280: 5f 43 4f 4e 46 49 47 22 3b 0d 0a 20 20 20 20 20  _CONFIG";..     
e290: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 63 6f         public co
e2a0: 6e 73 74 20 73 74 72 69 6e 67 20 48 4b 43 43 20  nst string HKCC 
e2b0: 3d 20 22 48 4b 43 43 22 3b 0d 0a 0d 0a 20 20 20  = "HKCC";....   
e2c0: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
e2d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e2e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e2f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
e310: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
e320: 69 63 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  ic const string 
e330: 48 4b 45 59 5f 43 55 52 52 45 4e 54 5f 55 53 45  HKEY_CURRENT_USE
e340: 52 20 3d 20 22 48 4b 45 59 5f 43 55 52 52 45 4e  R = "HKEY_CURREN
e350: 54 5f 55 53 45 52 22 3b 0d 0a 20 20 20 20 20 20  T_USER";..      
e360: 20 20 20 20 20 20 70 75 62 6c 69 63 20 63 6f 6e        public con
e370: 73 74 20 73 74 72 69 6e 67 20 48 4b 43 55 20 3d  st string HKCU =
e380: 20 22 48 4b 43 55 22 3b 0d 0a 0d 0a 20 20 20 20   "HKCU";....    
e390: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
e3a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e3d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
e3e0: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
e3f0: 63 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 48  c const string H
e400: 4b 45 59 5f 44 59 4e 5f 44 41 54 41 20 3d 20 22  KEY_DYN_DATA = "
e410: 48 4b 45 59 5f 44 59 4e 5f 44 41 54 41 22 3b 0d  HKEY_DYN_DATA";.
e420: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
e430: 6c 69 63 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  lic const string
e440: 20 48 4b 44 44 20 3d 20 22 48 4b 44 44 22 3b 0d   HKDD = "HKDD";.
e450: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
e460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e4a0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
e4b0: 20 20 70 75 62 6c 69 63 20 63 6f 6e 73 74 20 73    public const s
e4c0: 74 72 69 6e 67 20 48 4b 45 59 5f 4c 4f 43 41 4c  tring HKEY_LOCAL
e4d0: 5f 4d 41 43 48 49 4e 45 20 3d 20 22 48 4b 45 59  _MACHINE = "HKEY
e4e0: 5f 4c 4f 43 41 4c 5f 4d 41 43 48 49 4e 45 22 3b  _LOCAL_MACHINE";
e4f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
e500: 62 6c 69 63 20 63 6f 6e 73 74 20 73 74 72 69 6e  blic const strin
e510: 67 20 48 4b 4c 4d 20 3d 20 22 48 4b 4c 4d 22 3b  g HKLM = "HKLM";
e520: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
e530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e570: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
e580: 20 20 20 70 75 62 6c 69 63 20 63 6f 6e 73 74 20     public const 
e590: 73 74 72 69 6e 67 20 48 4b 45 59 5f 50 45 52 46  string HKEY_PERF
e5a0: 4f 52 4d 41 4e 43 45 5f 44 41 54 41 20 3d 20 22  ORMANCE_DATA = "
e5b0: 48 4b 45 59 5f 50 45 52 46 4f 52 4d 41 4e 43 45  HKEY_PERFORMANCE
e5c0: 5f 44 41 54 41 22 3b 0d 0a 20 20 20 20 20 20 20  _DATA";..       
e5d0: 20 20 20 20 20 70 75 62 6c 69 63 20 63 6f 6e 73       public cons
e5e0: 74 20 73 74 72 69 6e 67 20 48 4b 50 44 20 3d 20  t string HKPD = 
e5f0: 22 48 4b 50 44 22 3b 0d 0a 0d 0a 20 20 20 20 20  "HKPD";....     
e600: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
e610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
e650: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
e660: 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 48 4b   const string HK
e670: 45 59 5f 55 53 45 52 53 20 3d 20 22 48 4b 45 59  EY_USERS = "HKEY
e680: 5f 55 53 45 52 53 22 3b 0d 0a 20 20 20 20 20 20  _USERS";..      
e690: 20 20 20 20 20 20 70 75 62 6c 69 63 20 63 6f 6e        public con
e6a0: 73 74 20 73 74 72 69 6e 67 20 48 4b 55 20 3d 20  st string HKU = 
e6b0: 22 48 4b 55 22 3b 0d 0a 20 20 20 20 20 20 20 20  "HKU";..        
e6c0: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
e6d0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
e6e0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
e6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e720: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
e730: 20 20 20 20 23 72 65 67 69 6f 6e 20 52 65 67 69      #region Regi
e740: 73 74 72 79 48 65 6c 70 65 72 20 43 6c 61 73 73  stryHelper Class
e750: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
e760: 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61  n Private Consta
e770: 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69  nts..        pri
e780: 76 61 74 65 20 63 6f 6e 73 74 20 63 68 61 72 20  vate const char 
e790: 4b 65 79 4e 61 6d 65 53 65 70 61 72 61 74 6f 72  KeyNameSeparator
e7a0: 20 3d 20 27 5c 5c 27 3b 0d 0a 0d 0a 20 20 20 20   = '\\';....    
e7b0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
e7c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
e800: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
e810: 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 63  tatic readonly c
e820: 68 61 72 5b 5d 20 4b 65 79 4e 61 6d 65 53 65 70  har[] KeyNameSep
e830: 61 72 61 74 6f 72 73 20 3d 20 7b 0d 0a 20 20 20  arators = {..   
e840: 20 20 20 20 20 20 20 20 20 4b 65 79 4e 61 6d 65           KeyName
e850: 53 65 70 61 72 61 74 6f 72 0d 0a 20 20 20 20 20  Separator..     
e860: 20 20 20 7d 3b 0d 0a 20 20 20 20 20 20 20 20 23     };..        #
e870: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
e880: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
e890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e8a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e8b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e8c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
e8d0: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
e8e0: 73 74 61 74 69 63 20 63 6c 61 73 73 20 52 65 67  static class Reg
e8f0: 69 73 74 72 79 48 65 6c 70 65 72 0d 0a 20 20 20  istryHelper..   
e900: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
e910: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
e920: 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20  ate Data..      
e930: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
e940: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54        // NOTE: T
e950: 68 69 73 20 69 73 20 75 73 65 64 20 74 6f 20 73  his is used to s
e960: 79 6e 63 68 72 6f 6e 69 7a 65 20 61 63 63 65 73  ynchronize acces
e970: 73 20 74 6f 20 74 68 65 20 6c 69 73 74 20 6f 66  s to the list of
e980: 20 6c 6f 67 67 65 64 0d 0a 20 20 20 20 20 20 20   logged..       
e990: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72 65       //       re
e9a0: 67 69 73 74 72 79 20 6f 70 65 72 61 74 69 6f 6e  gistry operation
e9b0: 73 20 28 6a 75 73 74 20 62 65 6c 6f 77 29 2e 0d  s (just below)..
e9c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  .            //.
e9d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
e9e0: 76 61 74 65 20 73 74 61 74 69 63 20 6f 62 6a 65  vate static obje
e9f0: 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  ct syncRoot = ne
ea00: 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20  w object();.... 
ea10: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
ea20: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
ea30: 54 45 3a 20 54 68 69 73 20 69 73 20 74 68 65 20  TE: This is the 
ea40: 6c 69 73 74 20 6f 66 20 72 65 67 69 73 74 72 79  list of registry
ea50: 20 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e   write operation
ea60: 73 20 77 68 65 6e 20 69 74 20 69 73 0d 0a 20 20  s when it is..  
ea70: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
ea80: 20 20 20 73 65 74 20 74 6f 20 6e 6f 6e 2d 6e 75     set to non-nu
ea90: 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll...           
eaa0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
eab0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
eac0: 52 65 67 69 73 74 72 79 4f 70 65 72 61 74 69 6f  RegistryOperatio
ead0: 6e 4c 69 73 74 20 6f 70 65 72 61 74 69 6f 6e 4c  nList operationL
eae0: 69 73 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ist;..          
eaf0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
eb00: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
eb10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
eb50: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
eb60: 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 53 74  region Public St
eb70: 61 74 69 63 20 50 72 6f 70 65 72 74 69 65 73 0d  atic Properties.
eb80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
eb90: 76 61 74 65 20 73 74 61 74 69 63 20 4d 6f 63 6b  vate static Mock
eba0: 52 65 67 69 73 74 72 79 20 72 65 61 64 4f 6e 6c  Registry readOnl
ebb0: 79 52 65 67 69 73 74 72 79 3b 0d 0a 20 20 20 20  yRegistry;..    
ebc0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
ebd0: 74 61 74 69 63 20 4d 6f 63 6b 52 65 67 69 73 74  tatic MockRegist
ebe0: 72 79 20 52 65 61 64 4f 6e 6c 79 52 65 67 69 73  ry ReadOnlyRegis
ebf0: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
ec00: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
ec10: 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
ec20: 20 72 65 61 64 4f 6e 6c 79 52 65 67 69 73 74 72   readOnlyRegistr
ec30: 79 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  y; }..          
ec40: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
ec50: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
ec60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec90: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
eca0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
ecb0: 61 74 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72  atic MockRegistr
ecc0: 79 20 72 65 61 64 57 72 69 74 65 52 65 67 69 73  y readWriteRegis
ecd0: 74 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  try;..          
ece0: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
ecf0: 4d 6f 63 6b 52 65 67 69 73 74 72 79 20 52 65 61  MockRegistry Rea
ed00: 64 57 72 69 74 65 52 65 67 69 73 74 72 79 0d 0a  dWriteRegistry..
ed10: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
ed20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
ed30: 65 74 20 7b 20 72 65 74 75 72 6e 20 72 65 61 64  et { return read
ed40: 57 72 69 74 65 52 65 67 69 73 74 72 79 3b 20 7d  WriteRegistry; }
ed50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
ed60: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
ed70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eda0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
edb0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
edc0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
edd0: 20 69 6e 74 20 73 75 62 4b 65 79 73 43 72 65 61   int subKeysCrea
ede0: 74 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ted;..          
edf0: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
ee00: 69 6e 74 20 53 75 62 4b 65 79 73 43 72 65 61 74  int SubKeysCreat
ee10: 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ed..            
ee20: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
ee30: 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
ee40: 73 75 62 4b 65 79 73 43 72 65 61 74 65 64 3b 20  subKeysCreated; 
ee50: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
ee60: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
ee70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eeb0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
eec0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
eed0: 63 20 69 6e 74 20 73 75 62 4b 65 79 73 44 65 6c  c int subKeysDel
eee0: 65 74 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 20  eted;..         
eef0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
ef00: 20 69 6e 74 20 53 75 62 4b 65 79 73 44 65 6c 65   int SubKeysDele
ef10: 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ted..           
ef20: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
ef30: 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
ef40: 20 73 75 62 4b 65 79 73 44 65 6c 65 74 65 64 3b   subKeysDeleted;
ef50: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
ef60: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
ef70: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
ef80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
efa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
efb0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
efc0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
efd0: 69 63 20 69 6e 74 20 6b 65 79 56 61 6c 75 65 73  ic int keyValues
efe0: 52 65 61 64 3b 0d 0a 20 20 20 20 20 20 20 20 20  Read;..         
eff0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
f000: 20 69 6e 74 20 4b 65 79 56 61 6c 75 65 73 52 65   int KeyValuesRe
f010: 61 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ad..            
f020: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
f030: 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
f040: 6b 65 79 56 61 6c 75 65 73 52 65 61 64 3b 20 7d  keyValuesRead; }
f050: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
f060: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
f070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f0a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f0b0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
f0c0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
f0d0: 20 69 6e 74 20 6b 65 79 56 61 6c 75 65 73 57 72   int keyValuesWr
f0e0: 69 74 74 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20  itten;..        
f0f0: 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
f100: 63 20 69 6e 74 20 4b 65 79 56 61 6c 75 65 73 57  c int KeyValuesW
f110: 72 69 74 74 65 6e 0d 0a 20 20 20 20 20 20 20 20  ritten..        
f120: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
f130: 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
f140: 75 72 6e 20 6b 65 79 56 61 6c 75 65 73 57 72 69  urn keyValuesWri
f150: 74 74 65 6e 3b 20 7d 0d 0a 20 20 20 20 20 20 20  tten; }..       
f160: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
f170: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
f180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f1a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f1b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
f1c0: 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
f1d0: 20 73 74 61 74 69 63 20 69 6e 74 20 6b 65 79 56   static int keyV
f1e0: 61 6c 75 65 73 44 65 6c 65 74 65 64 3b 0d 0a 20  aluesDeleted;.. 
f1f0: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
f200: 63 20 73 74 61 74 69 63 20 69 6e 74 20 4b 65 79  c static int Key
f210: 56 61 6c 75 65 73 44 65 6c 65 74 65 64 0d 0a 20  ValuesDeleted.. 
f220: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
f230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
f240: 74 20 7b 20 72 65 74 75 72 6e 20 6b 65 79 56 61  t { return keyVa
f250: 6c 75 65 73 44 65 6c 65 74 65 64 3b 20 7d 0d 0a  luesDeleted; }..
f260: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
f270: 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
f280: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
f290: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
f2a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f2b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f2c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f2d0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
f2e0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
f2f0: 50 75 62 6c 69 63 20 53 74 61 74 69 63 20 4d 65  Public Static Me
f300: 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 20  thods..         
f310: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
f320: 20 76 6f 69 64 20 45 6e 61 62 6c 65 4f 72 44 69   void EnableOrDi
f330: 73 61 62 6c 65 4f 70 65 72 61 74 69 6f 6e 4c 69  sableOperationLi
f340: 73 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  st(..           
f350: 20 20 20 20 20 62 6f 6f 6c 20 65 6e 61 62 6c 65       bool enable
f360: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f370: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
f380: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
f390: 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
f3a0: 6f 74 29 20 2f 2a 20 54 52 41 4e 53 41 43 54 49  ot) /* TRANSACTI
f3b0: 4f 4e 41 4c 20 2a 2f 0d 0a 20 20 20 20 20 20 20  ONAL */..       
f3c0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
f3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f3e0: 69 66 20 28 65 6e 61 62 6c 65 29 0d 0a 20 20 20  if (enable)..   
f3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f400: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
f410: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
f420: 6f 70 65 72 61 74 69 6f 6e 4c 69 73 74 20 3d 3d  operationList ==
f430: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
f440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f450: 20 20 20 20 6f 70 65 72 61 74 69 6f 6e 4c 69 73      operationLis
f460: 74 20 3d 20 6e 65 77 20 52 65 67 69 73 74 72 79  t = new Registry
f470: 4f 70 65 72 61 74 69 6f 6e 4c 69 73 74 28 29 3b  OperationList();
f480: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f490: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
f4a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
f4b0: 65 20 69 66 20 28 6f 70 65 72 61 74 69 6f 6e 4c  e if (operationL
f4c0: 69 73 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ist != null)..  
f4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f4e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
f4f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 65               ope
f500: 72 61 74 69 6f 6e 4c 69 73 74 2e 44 69 73 70 6f  rationList.Dispo
f510: 73 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  se();..         
f520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
f530: 70 65 72 61 74 69 6f 6e 4c 69 73 74 20 3d 20 6e  perationList = n
f540: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
f550: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
f560: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
f570: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
f580: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
f590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
f5e0: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
f5f0: 69 64 20 52 65 69 6e 69 74 69 61 6c 69 7a 65 44  id ReinitializeD
f600: 65 66 61 75 6c 74 52 65 67 69 73 74 72 69 65 73  efaultRegistries
f610: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
f620: 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66 2c 0d     bool whatIf,.
f630: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f640: 20 62 6f 6f 6c 20 73 61 66 65 0d 0a 20 20 20 20   bool safe..    
f650: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
f660: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
f670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
f680: 20 28 72 65 61 64 4f 6e 6c 79 52 65 67 69 73 74   (readOnlyRegist
f690: 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ry != null)..   
f6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
f6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f6c0: 20 20 20 20 72 65 61 64 4f 6e 6c 79 52 65 67 69      readOnlyRegi
f6d0: 73 74 72 79 2e 44 69 73 70 6f 73 65 28 29 3b 0d  stry.Dispose();.
f6e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f6f0: 20 20 20 20 20 72 65 61 64 4f 6e 6c 79 52 65 67       readOnlyReg
f700: 69 73 74 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  istry = null;.. 
f710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
f720: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
f730: 20 20 20 20 69 66 20 28 72 65 61 64 57 72 69 74      if (readWrit
f740: 65 52 65 67 69 73 74 72 79 20 21 3d 20 6e 75 6c  eRegistry != nul
f750: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
f760: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
f770: 20 20 20 20 20 20 20 20 20 20 20 72 65 61 64 57             readW
f780: 72 69 74 65 52 65 67 69 73 74 72 79 2e 44 69 73  riteRegistry.Dis
f790: 70 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20 20 20  pose();..       
f7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 61               rea
f7b0: 64 57 72 69 74 65 52 65 67 69 73 74 72 79 20 3d  dWriteRegistry =
f7c0: 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
f7d0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
f7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 61               rea
f7f0: 64 4f 6e 6c 79 52 65 67 69 73 74 72 79 20 3d 20  dOnlyRegistry = 
f800: 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73 74 72 79  new MockRegistry
f810: 28 77 68 61 74 49 66 2c 20 74 72 75 65 2c 20 73  (whatIf, true, s
f820: 61 66 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  afe);..         
f830: 20 20 20 20 20 20 20 72 65 61 64 57 72 69 74 65         readWrite
f840: 52 65 67 69 73 74 72 79 20 3d 20 6e 65 77 20 4d  Registry = new M
f850: 6f 63 6b 52 65 67 69 73 74 72 79 28 77 68 61 74  ockRegistry(what
f860: 49 66 2c 20 66 61 6c 73 65 2c 20 73 61 66 65 29  If, false, safe)
f870: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
f880: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
f890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f8a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f8b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f8c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f8d0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
f8e0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
f8f0: 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
f900: 20 47 65 74 52 65 61 64 4f 6e 6c 79 52 6f 6f 74   GetReadOnlyRoot
f910: 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Key(..          
f920: 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d        string nam
f930: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
f940: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
f950: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
f960: 20 20 20 20 20 72 65 74 75 72 6e 20 47 65 74 52       return GetR
f970: 6f 6f 74 4b 65 79 28 72 65 61 64 4f 6e 6c 79 52  ootKey(readOnlyR
f980: 65 67 69 73 74 72 79 2c 20 6e 61 6d 65 29 3b 0d  egistry, name);.
f990: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
f9a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
f9b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f9c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f9d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f9e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f9f0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
fa00: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 4d   public static M
fa10: 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 47  ockRegistryKey G
fa20: 65 74 52 65 61 64 57 72 69 74 65 52 6f 6f 74 4b  etReadWriteRootK
fa30: 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ey(..           
fa40: 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65       string name
fa50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fa60: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
fa70: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
fa80: 20 20 20 20 72 65 74 75 72 6e 20 47 65 74 52 6f      return GetRo
fa90: 6f 74 4b 65 79 28 72 65 61 64 57 72 69 74 65 52  otKey(readWriteR
faa0: 65 67 69 73 74 72 79 2c 20 6e 61 6d 65 29 3b 0d  egistry, name);.
fab0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
fac0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
fad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
faf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb10: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
fb20: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 4d   public static M
fb30: 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 47  ockRegistryKey G
fb40: 65 74 52 6f 6f 74 4b 65 79 28 0d 0a 20 20 20 20  etRootKey(..    
fb50: 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b              Mock
fb60: 52 65 67 69 73 74 72 79 20 72 65 67 69 73 74 72  Registry registr
fb70: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
fb80: 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 0d      string name.
fb90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fba0: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
fbb0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
fbc0: 20 20 20 69 66 20 28 72 65 67 69 73 74 72 79 20     if (registry 
fbd0: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
fbe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
fbf0: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
fc00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
fc10: 20 28 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65   (MockRegistryKe
fc20: 79 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a 20  y.NameEquals(.. 
fc30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fc40: 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 52 65 67         name, Reg
fc50: 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d 65  istryRootKeyName
fc60: 73 2e 48 4b 45 59 5f 43 4c 41 53 53 45 53 5f 52  s.HKEY_CLASSES_R
fc70: 4f 4f 54 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20  OOT) ||..       
fc80: 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63               Moc
fc90: 6b 52 65 67 69 73 74 72 79 4b 65 79 2e 4e 61 6d  kRegistryKey.Nam
fca0: 65 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20  eEquals(..      
fcb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fcc0: 20 20 6e 61 6d 65 2c 20 52 65 67 69 73 74 72 79    name, Registry
fcd0: 52 6f 6f 74 4b 65 79 4e 61 6d 65 73 2e 48 4b 43  RootKeyNames.HKC
fce0: 52 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  R))..           
fcf0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
fd00: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
fd10: 72 6e 20 72 65 67 69 73 74 72 79 2e 43 6c 61 73  rn registry.Clas
fd20: 73 65 73 52 6f 6f 74 3b 0d 0a 20 20 20 20 20 20  sesRoot;..      
fd30: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
fd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
fd50: 65 20 69 66 20 28 4d 6f 63 6b 52 65 67 69 73 74  e if (MockRegist
fd60: 72 79 4b 65 79 2e 4e 61 6d 65 45 71 75 61 6c 73  ryKey.NameEquals
fd70: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
fd80: 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65 2c             name,
fd90: 20 52 65 67 69 73 74 72 79 52 6f 6f 74 4b 65 79   RegistryRootKey
fda0: 4e 61 6d 65 73 2e 48 4b 45 59 5f 43 55 52 52 45  Names.HKEY_CURRE
fdb0: 4e 54 5f 43 4f 4e 46 49 47 29 20 7c 7c 0d 0a 20  NT_CONFIG) ||.. 
fdc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fdd0: 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b     MockRegistryK
fde0: 65 79 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a  ey.NameEquals(..
fdf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fe00: 20 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 52 65          name, Re
fe10: 67 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d  gistryRootKeyNam
fe20: 65 73 2e 48 4b 43 43 29 29 0d 0a 20 20 20 20 20  es.HKCC))..     
fe30: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
fe40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fe50: 20 20 72 65 74 75 72 6e 20 72 65 67 69 73 74 72    return registr
fe60: 79 2e 43 75 72 72 65 6e 74 43 6f 6e 66 69 67 3b  y.CurrentConfig;
fe70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fe80: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
fe90: 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 6f       else if (Mo
fea0: 63 6b 52 65 67 69 73 74 72 79 4b 65 79 2e 4e 61  ckRegistryKey.Na
feb0: 6d 65 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20  meEquals(..     
fec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fed0: 20 20 20 6e 61 6d 65 2c 20 52 65 67 69 73 74 72     name, Registr
fee0: 79 52 6f 6f 74 4b 65 79 4e 61 6d 65 73 2e 48 4b  yRootKeyNames.HK
fef0: 45 59 5f 43 55 52 52 45 4e 54 5f 55 53 45 52 29  EY_CURRENT_USER)
ff00: 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
ff10: 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65 67           MockReg
ff20: 69 73 74 72 79 4b 65 79 2e 4e 61 6d 65 45 71 75  istryKey.NameEqu
ff30: 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20  als(..          
ff40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
ff50: 6d 65 2c 20 52 65 67 69 73 74 72 79 52 6f 6f 74  me, RegistryRoot
ff60: 4b 65 79 4e 61 6d 65 73 2e 48 4b 43 55 29 29 0d  KeyNames.HKCU)).
ff70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ff80: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
ff90: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
ffa0: 65 67 69 73 74 72 79 2e 43 75 72 72 65 6e 74 55  egistry.CurrentU
ffb0: 73 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ser;..          
ffc0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
ffd0: 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
ffe0: 20 28 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65   (MockRegistryKe
fff0: 79 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a 20  y.NameEquals(.. 
10000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10010 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 52 65 67         name, Reg
10020 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d 65  istryRootKeyName
10030 73 2e 48 4b 45 59 5f 44 59 4e 5f 44 41 54 41 29  s.HKEY_DYN_DATA)
10040 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
10050 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65 67           MockReg
10060 69 73 74 72 79 4b 65 79 2e 4e 61 6d 65 45 71 75  istryKey.NameEqu
10070 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20  als(..          
10080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
10090 6d 65 2c 20 52 65 67 69 73 74 72 79 52 6f 6f 74  me, RegistryRoot
100a0 4b 65 79 4e 61 6d 65 73 2e 48 4b 44 44 29 29 0d  KeyNames.HKDD)).
100b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
100c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
100d0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
100e0 65 67 69 73 74 72 79 2e 44 79 6e 44 61 74 61 3b  egistry.DynData;
100f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10100 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
10110 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 6f       else if (Mo
10120 63 6b 52 65 67 69 73 74 72 79 4b 65 79 2e 4e 61  ckRegistryKey.Na
10130 6d 65 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20  meEquals(..     
10140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10150 20 20 20 6e 61 6d 65 2c 20 52 65 67 69 73 74 72     name, Registr
10160 79 52 6f 6f 74 4b 65 79 4e 61 6d 65 73 2e 48 4b  yRootKeyNames.HK
10170 45 59 5f 4c 4f 43 41 4c 5f 4d 41 43 48 49 4e 45  EY_LOCAL_MACHINE
10180 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20  ) ||..          
10190 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65            MockRe
101a0 67 69 73 74 72 79 4b 65 79 2e 4e 61 6d 65 45 71  gistryKey.NameEq
101b0 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20  uals(..         
101c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
101d0 61 6d 65 2c 20 52 65 67 69 73 74 72 79 52 6f 6f  ame, RegistryRoo
101e0 74 4b 65 79 4e 61 6d 65 73 2e 48 4b 4c 4d 29 29  tKeyNames.HKLM))
101f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10200 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
10210 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
10220 72 65 67 69 73 74 72 79 2e 4c 6f 63 61 6c 4d 61  registry.LocalMa
10230 63 68 69 6e 65 3b 0d 0a 20 20 20 20 20 20 20 20  chine;..        
10240 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
10250 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
10260 69 66 20 28 4d 6f 63 6b 52 65 67 69 73 74 72 79  if (MockRegistry
10270 4b 65 79 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d  Key.NameEquals(.
10280 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10290 20 20 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 52           name, R
102a0 65 67 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61  egistryRootKeyNa
102b0 6d 65 73 2e 48 4b 45 59 5f 50 45 52 46 4f 52 4d  mes.HKEY_PERFORM
102c0 41 4e 43 45 5f 44 41 54 41 29 20 7c 7c 0d 0a 20  ANCE_DATA) ||.. 
102d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
102e0 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b     MockRegistryK
102f0 65 79 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a  ey.NameEquals(..
10300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10310 20 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 52 65          name, Re
10320 67 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d  gistryRootKeyNam
10330 65 73 2e 48 4b 50 44 29 29 0d 0a 20 20 20 20 20  es.HKPD))..     
10340 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
10350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10360 20 20 72 65 74 75 72 6e 20 72 65 67 69 73 74 72    return registr
10370 79 2e 50 65 72 66 6f 72 6d 61 6e 63 65 44 61 74  y.PerformanceDat
10380 61 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  a;..            
10390 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
103a0 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
103b0 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 2e  MockRegistryKey.
103c0 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a 20 20 20  NameEquals(..   
103d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
103e0 20 20 20 20 20 6e 61 6d 65 2c 20 52 65 67 69 73       name, Regis
103f0 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d 65 73 2e  tryRootKeyNames.
10400 48 4b 45 59 5f 55 53 45 52 53 29 20 7c 7c 0d 0a  HKEY_USERS) ||..
10410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10420 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79      MockRegistry
10430 4b 65 79 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d  Key.NameEquals(.
10440 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10450 20 20 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 52           name, R
10460 65 67 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61  egistryRootKeyNa
10470 6d 65 73 2e 48 4b 55 29 29 0d 0a 20 20 20 20 20  mes.HKU))..     
10480 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
10490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
104a0 20 20 72 65 74 75 72 6e 20 72 65 67 69 73 74 72    return registr
104b0 79 2e 55 73 65 72 73 3b 0d 0a 20 20 20 20 20 20  y.Users;..      
104c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
104d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
104e0 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
104f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
10500 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
10510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
10550 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
10560 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69 6e  lic static strin
10570 67 20 4a 6f 69 6e 4b 65 79 4e 61 6d 65 73 28 0d  g JoinKeyNames(.
10580 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10590 20 70 61 72 61 6d 73 20 73 74 72 69 6e 67 5b 5d   params string[]
105a0 20 6e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20   names..        
105b0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
105c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
105d0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 6e            if ((n
105e0 61 6d 65 73 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c  ames == null) ||
105f0 20 28 6e 61 6d 65 73 2e 4c 65 6e 67 74 68 20 3d   (names.Length =
10600 3d 20 30 29 29 0d 0a 20 20 20 20 20 20 20 20 20  = 0))..         
10610 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
10620 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
10630 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e             Strin
10640 67 42 75 69 6c 64 65 72 20 62 75 69 6c 64 65 72  gBuilder builder
10650 20 3d 20 6e 65 77 20 53 74 72 69 6e 67 42 75 69   = new StringBui
10660 6c 64 65 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  lder();....     
10670 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61             forea
10680 63 68 20 28 73 74 72 69 6e 67 20 6e 61 6d 65 20  ch (string name 
10690 69 6e 20 6e 61 6d 65 73 29 0d 0a 20 20 20 20 20  in names)..     
106a0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
106b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
106c0 20 20 69 66 20 28 6e 61 6d 65 20 3d 3d 20 6e 75    if (name == nu
106d0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
106e0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
106f0 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  tinue;....      
10700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
10710 72 69 6e 67 20 6e 65 77 4e 61 6d 65 20 3d 20 6e  ring newName = n
10720 61 6d 65 2e 54 72 69 6d 28 4b 65 79 4e 61 6d 65  ame.Trim(KeyName
10730 53 65 70 61 72 61 74 6f 72 29 3b 0d 0a 0d 0a 20  Separator);.... 
10740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10750 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73     if (String.Is
10760 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 6e 65 77 4e  NullOrEmpty(newN
10770 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
10780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
10790 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20  ontinue;....    
107a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
107b0 69 66 20 28 62 75 69 6c 64 65 72 2e 4c 65 6e 67  if (builder.Leng
107c0 74 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20  th > 0)..       
107d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
107e0 20 62 75 69 6c 64 65 72 2e 41 70 70 65 6e 64 28   builder.Append(
107f0 4b 65 79 4e 61 6d 65 53 65 70 61 72 61 74 6f 72  KeyNameSeparator
10800 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
10810 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64 65            builde
10820 72 2e 41 70 70 65 6e 64 28 6e 65 77 4e 61 6d 65  r.Append(newName
10830 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
10840 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
10850 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
10860 62 75 69 6c 64 65 72 2e 54 6f 53 74 72 69 6e 67  builder.ToString
10870 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
10880 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
10890 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
108a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
108b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
108c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
108d0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
108e0 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
108f0 69 63 20 73 74 72 69 6e 67 20 4a 6f 69 6e 4b 65  ic string JoinKe
10900 79 4e 61 6d 65 73 28 0d 0a 20 20 20 20 20 20 20  yNames(..       
10910 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65 67           MockReg
10920 69 73 74 72 79 4b 65 79 20 6b 65 79 2c 0d 0a 20  istryKey key,.. 
10930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
10940 61 72 61 6d 73 20 73 74 72 69 6e 67 5b 5d 20 6e  arams string[] n
10950 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20  ames..          
10960 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
10970 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
10980 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 72          string r
10990 65 73 75 6c 74 20 3d 20 4a 6f 69 6e 4b 65 79 4e  esult = JoinKeyN
109a0 61 6d 65 73 28 6e 61 6d 65 73 29 3b 0d 0a 0d 0a  ames(names);....
109b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
109c0 69 66 20 28 6b 65 79 20 21 3d 20 6e 75 6c 6c 29  if (key != null)
109d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
109e0 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 4a        result = J
109f0 6f 69 6e 4b 65 79 4e 61 6d 65 73 28 6b 65 79 2e  oinKeyNames(key.
10a00 4e 61 6d 65 2c 20 72 65 73 75 6c 74 29 3b 0d 0a  Name, result);..
10a10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10a20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b    return result;
10a30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
10a40 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
10a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a90 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
10aa0 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
10ab0 73 74 72 69 6e 67 5b 5d 20 53 70 6c 69 74 4b 65  string[] SplitKe
10ac0 79 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  yName(..        
10ad0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6b          string k
10ae0 65 79 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  eyName..        
10af0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
10b00 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
10b10 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6b 65            if (ke
10b20 79 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  yName == null)..
10b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10b40 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
10b50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10b60 20 20 20 20 72 65 74 75 72 6e 20 6b 65 79 4e 61      return keyNa
10b70 6d 65 2e 53 70 6c 69 74 28 0d 0a 20 20 20 20 20  me.Split(..     
10b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4b                 K
10b90 65 79 4e 61 6d 65 53 65 70 61 72 61 74 6f 72 73  eyNameSeparators
10ba0 2c 20 53 74 72 69 6e 67 53 70 6c 69 74 4f 70 74  , StringSplitOpt
10bb0 69 6f 6e 73 2e 52 65 6d 6f 76 65 45 6d 70 74 79  ions.RemoveEmpty
10bc0 45 6e 74 72 69 65 73 29 3b 0d 0a 20 20 20 20 20  Entries);..     
10bd0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
10be0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
10bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
10c30 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
10c40 63 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  c static string 
10c50 4c 61 73 74 53 75 62 4b 65 79 4e 61 6d 65 28 0d  LastSubKeyName(.
10c60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10c70 20 73 74 72 69 6e 67 20 6b 65 79 4e 61 6d 65 0d   string keyName.
10c80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10c90 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
10ca0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
10cb0 20 20 20 73 74 72 69 6e 67 5b 5d 20 73 75 62 4b     string[] subK
10cc0 65 79 4e 61 6d 65 73 20 3d 20 53 70 6c 69 74 4b  eyNames = SplitK
10cd0 65 79 4e 61 6d 65 28 6b 65 79 4e 61 6d 65 29 3b  eyName(keyName);
10ce0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10cf0 20 20 20 20 69 66 20 28 28 73 75 62 4b 65 79 4e      if ((subKeyN
10d00 61 6d 65 73 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c  ames == null) ||
10d10 20 28 73 75 62 4b 65 79 4e 61 6d 65 73 2e 4c 65   (subKeyNames.Le
10d20 6e 67 74 68 20 3d 3d 20 30 29 29 0d 0a 20 20 20  ngth == 0))..   
10d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d40 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
10d50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10d60 20 72 65 74 75 72 6e 20 73 75 62 4b 65 79 4e 61   return subKeyNa
10d70 6d 65 73 5b 73 75 62 4b 65 79 4e 61 6d 65 73 2e  mes[subKeyNames.
10d80 4c 65 6e 67 74 68 20 2d 20 31 5d 3b 0d 0a 20 20  Length - 1];..  
10d90 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
10da0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
10db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
10df0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 4d  ..            [M
10e00 65 74 68 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64  ethodImpl(Method
10e10 49 6d 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e  ImplOptions.NoIn
10e20 6c 69 6e 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20  lining)]..      
10e30 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
10e40 74 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79  tic MockRegistry
10e50 4b 65 79 20 4f 70 65 6e 53 75 62 4b 65 79 28 0d  Key OpenSubKey(.
10e60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10e70 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
10e80 20 72 6f 6f 74 4b 65 79 2c 0d 0a 20 20 20 20 20   rootKey,..     
10e90 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
10ea0 67 20 73 75 62 4b 65 79 4e 61 6d 65 2c 0d 0a 20  g subKeyName,.. 
10eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
10ec0 6f 6f 6c 20 77 72 69 74 61 62 6c 65 2c 0d 0a 20  ool writable,.. 
10ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
10ee0 6f 6f 6c 20 77 68 61 74 49 66 2c 0d 0a 20 20 20  ool whatIf,..   
10ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
10f00 6c 20 76 65 72 62 6f 73 65 0d 0a 20 20 20 20 20  l verbose..     
10f10 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
10f20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
10f30 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
10f40 28 76 65 72 62 6f 73 65 29 0d 0a 20 20 20 20 20  (verbose)..     
10f50 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
10f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10f70 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67    TraceOps.Debug
10f80 41 6e 64 54 72 61 63 65 28 77 72 69 74 61 62 6c  AndTrace(writabl
10f90 65 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e ?..           
10fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
10fb0 63 65 50 72 69 6f 72 69 74 79 2e 48 69 67 68 65  cePriority.Highe
10fc0 73 74 20 3a 20 54 72 61 63 65 50 72 69 6f 72 69  st : TracePriori
10fd0 74 79 2e 48 69 67 68 65 72 2c 0d 0a 20 20 20 20  ty.Higher,..    
10fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10ff0 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63      debugCallbac
11000 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b  k, traceCallback
11010 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  , String.Format(
11020 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11030 20 20 20 20 20 20 20 20 20 20 22 72 6f 6f 74 4b            "rootK
11040 65 79 20 3d 20 7b 30 7d 2c 20 73 75 62 4b 65 79  ey = {0}, subKey
11050 4e 61 6d 65 20 3d 20 7b 31 7d 2c 20 77 72 69 74  Name = {1}, writ
11060 61 62 6c 65 20 3d 20 7b 32 7d 22 2c 0d 0a 20 20  able = {2}",..  
11070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11080 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79        ForDisplay
11090 28 72 6f 6f 74 4b 65 79 29 2c 20 46 6f 72 44 69  (rootKey), ForDi
110a0 73 70 6c 61 79 28 73 75 62 4b 65 79 4e 61 6d 65  splay(subKeyName
110b0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
110c0 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44              ForD
110d0 69 73 70 6c 61 79 28 77 72 69 74 61 62 6c 65 29  isplay(writable)
110e0 29 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79  ), traceCategory
110f0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
11100 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
11110 20 20 20 20 20 20 20 20 20 69 66 20 28 72 6f 6f           if (roo
11120 74 4b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  tKey == null).. 
11130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11140 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
11150 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
11160 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
11170 20 20 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20         // HACK: 
11180 41 6c 77 61 79 73 20 66 6f 72 62 69 64 20 77 72  Always forbid wr
11190 69 74 61 62 6c 65 20 61 63 63 65 73 73 20 77 68  itable access wh
111a0 65 6e 20 6f 70 65 72 61 74 69 6e 67 20 69 6e 0d  en operating in.
111b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
111c0 20 2f 2f 20 20 20 20 20 20 20 22 77 68 61 74 2d   //       "what-
111d0 69 66 22 20 6d 6f 64 65 2e 0d 0a 20 20 20 20 20  if" mode...     
111e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
111f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
11200 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 6b  ockRegistryKey k
11210 65 79 20 3d 20 72 6f 6f 74 4b 65 79 2e 4f 70 65  ey = rootKey.Ope
11220 6e 53 75 62 4b 65 79 28 0d 0a 20 20 20 20 20 20  nSubKey(..      
11230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 75                su
11240 62 4b 65 79 4e 61 6d 65 2c 20 77 68 61 74 49 66  bKeyName, whatIf
11250 20 3f 20 66 61 6c 73 65 20 3a 20 77 72 69 74 61   ? false : writa
11260 62 6c 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ble);....       
11270 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
11280 28 6b 65 79 20 21 3d 20 6e 75 6c 6c 29 20 3f 0d  (key != null) ?.
11290 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
112a0 20 20 20 20 20 6e 65 77 20 4d 6f 63 6b 52 65 67       new MockReg
112b0 69 73 74 72 79 4b 65 79 28 6b 65 79 2c 20 77 68  istryKey(key, wh
112c0 61 74 49 66 2c 20 66 61 6c 73 65 2c 20 66 61 6c  atIf, false, fal
112d0 73 65 29 20 3a 20 6e 75 6c 6c 3b 0d 0a 20 20 20  se) : null;..   
112e0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
112f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
11300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
11340 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 4d 65  .            [Me
11350 74 68 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49  thodImpl(MethodI
11360 6d 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c  mplOptions.NoInl
11370 69 6e 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20  ining)]..       
11380 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
11390 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b  ic MockRegistryK
113a0 65 79 20 43 72 65 61 74 65 53 75 62 4b 65 79 28  ey CreateSubKey(
113b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
113c0 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65    MockRegistryKe
113d0 79 20 72 6f 6f 74 4b 65 79 2c 0d 0a 20 20 20 20  y rootKey,..    
113e0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
113f0 6e 67 20 73 75 62 4b 65 79 4e 61 6d 65 2c 0d 0a  ng subKeyName,..
11400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11410 62 6f 6f 6c 20 77 68 61 74 49 66 2c 0d 0a 20 20  bool whatIf,..  
11420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
11430 6f 6c 20 76 65 72 62 6f 73 65 0d 0a 20 20 20 20  ol verbose..    
11440 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
11450 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
11460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
11470 20 28 76 65 72 62 6f 73 65 29 0d 0a 20 20 20 20   (verbose)..    
11480 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
11490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
114a0 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75     TraceOps.Debu
114b0 67 41 6e 64 54 72 61 63 65 28 54 72 61 63 65 50  gAndTrace(TraceP
114c0 72 69 6f 72 69 74 79 2e 48 69 67 68 65 73 74 2c  riority.Highest,
114d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
114e0 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43            debugC
114f0 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61  allback, traceCa
11500 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46  llback, String.F
11510 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
11520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11530 22 72 6f 6f 74 4b 65 79 20 3d 20 7b 30 7d 2c 20  "rootKey = {0}, 
11540 73 75 62 4b 65 79 4e 61 6d 65 20 3d 20 7b 31 7d  subKeyName = {1}
11550 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
11560 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44              ForD
11570 69 73 70 6c 61 79 28 72 6f 6f 74 4b 65 79 29 2c  isplay(rootKey),
11580 20 46 6f 72 44 69 73 70 6c 61 79 28 73 75 62 4b   ForDisplay(subK
11590 65 79 4e 61 6d 65 29 29 2c 0d 0a 20 20 20 20 20  eyName)),..     
115a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
115b0 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
115c0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
115d0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
115e0 20 20 20 20 20 20 20 20 20 69 66 20 28 72 6f 6f           if (roo
115f0 74 4b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  tKey == null).. 
11600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11610 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
11620 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
11630 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
11640 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
11660 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
11670 20 20 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20         // HACK: 
11680 41 6c 77 61 79 73 20 6f 70 65 6e 20 61 20 6b 65  Always open a ke
11690 79 2c 20 72 61 74 68 65 72 20 74 68 61 6e 20 63  y, rather than c
116a0 72 65 61 74 69 6e 67 20 6f 6e 65 20 77 68 65 6e  reating one when
116b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
116c0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f        //       o
116d0 70 65 72 61 74 69 6e 67 20 69 6e 20 22 77 68 61  perating in "wha
116e0 74 2d 69 66 22 20 6d 6f 64 65 2e 0d 0a 20 20 20  t-if" mode...   
116f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11700 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
11710 20 20 20 20 20 20 20 20 20 69 66 20 28 77 68 61           if (wha
11720 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf)..          
11730 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
11740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11750 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
11760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11770 20 2f 2f 20 48 41 43 4b 3a 20 41 74 74 65 6d 70   // HACK: Attemp
11780 74 20 74 6f 20 6f 70 65 6e 20 74 68 65 20 73 70  t to open the sp
11790 65 63 69 66 69 65 64 20 73 75 62 2d 6b 65 79 2e  ecified sub-key.
117a0 20 20 49 66 0d 0a 20 20 20 20 20 20 20 20 20 20    If..          
117b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
117c0 20 20 20 20 20 20 20 74 68 69 73 20 66 61 69 6c         this fail
117d0 73 2c 20 77 65 20 77 69 6c 6c 20 73 69 6d 70 6c  s, we will simpl
117e0 79 20 72 65 74 75 72 6e 20 74 68 65 20 72 6f 6f  y return the roo
117f0 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t..             
11800 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
11810 20 20 20 20 6b 65 79 20 69 74 73 65 6c 66 20 73      key itself s
11820 69 6e 63 65 20 6e 6f 20 77 72 69 74 65 73 20 61  ince no writes a
11830 72 65 20 61 6c 6c 6f 77 65 64 20 69 6e 0d 0a 20  re allowed in.. 
11840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11850 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
11860 22 77 68 61 74 2d 69 66 22 20 6d 6f 64 65 20 61  "what-if" mode a
11870 6e 79 68 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20  nyhow...        
11880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11890 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
118a0 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b              Mock
118b0 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79 20  RegistryKey key 
118c0 3d 20 72 6f 6f 74 4b 65 79 2e 4f 70 65 6e 53 75  = rootKey.OpenSu
118d0 62 4b 65 79 28 73 75 62 4b 65 79 4e 61 6d 65 29  bKey(subKeyName)
118e0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
118f0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
11900 75 72 6e 20 28 6b 65 79 20 21 3d 20 6e 75 6c 6c  urn (key != null
11910 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) ?..           
11920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11930 20 6b 65 79 20 3a 20 6e 65 77 20 4d 6f 63 6b 52   key : new MockR
11940 65 67 69 73 74 72 79 4b 65 79 28 0d 0a 20 20 20  egistryKey(..   
11950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11960 20 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 6f               roo
11970 74 4b 65 79 2c 20 73 75 62 4b 65 79 4e 61 6d 65  tKey, subKeyName
11980 2c 20 77 68 61 74 49 66 2c 20 66 61 6c 73 65 2c  , whatIf, false,
11990 20 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20   false);..      
119a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
119b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
119c0 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
119d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
119e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
119f0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
11a00 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73 74 72   new MockRegistr
11a10 79 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20  yKey(..         
11a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a30 20 20 20 72 6f 6f 74 4b 65 79 2e 43 72 65 61 74     rootKey.Creat
11a40 65 53 75 62 4b 65 79 28 73 75 62 4b 65 79 4e 61  eSubKey(subKeyNa
11a50 6d 65 29 2c 20 77 68 61 74 49 66 2c 20 66 61 6c  me), whatIf, fal
11a60 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se,..           
11a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a80 20 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20   false);..      
11a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
11aa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11ab0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
11ac0 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
11ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
11ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11af0 20 20 20 20 4d 61 79 62 65 4c 6f 67 4f 70 65 72      MaybeLogOper
11b00 61 74 69 6f 6e 28 47 65 74 4d 65 74 68 6f 64 4e  ation(GetMethodN
11b10 61 6d 65 28 29 2c 20 72 6f 6f 74 4b 65 79 2c 20  ame(), rootKey, 
11b20 73 75 62 4b 65 79 4e 61 6d 65 29 3b 0d 0a 0d 0a  subKeyName);....
11b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b40 20 20 20 20 73 75 62 4b 65 79 73 43 72 65 61 74      subKeysCreat
11b50 65 64 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20  ed++;..         
11b60 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
11b70 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
11b80 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
11b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
11bd0 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74 68 6f            [Metho
11be0 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c  dImpl(MethodImpl
11bf0 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69  Options.NoInlini
11c00 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20 20 20  ng)]..          
11c10 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
11c20 76 6f 69 64 20 44 65 6c 65 74 65 53 75 62 4b 65  void DeleteSubKe
11c30 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y(..            
11c40 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79      MockRegistry
11c50 4b 65 79 20 72 6f 6f 74 4b 65 79 2c 0d 0a 20 20  Key rootKey,..  
11c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
11c70 72 69 6e 67 20 73 75 62 4b 65 79 4e 61 6d 65 2c  ring subKeyName,
11c80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11c90 20 20 62 6f 6f 6c 20 74 68 72 6f 77 4f 6e 4d 69    bool throwOnMi
11ca0 73 73 69 6e 67 2c 0d 0a 20 20 20 20 20 20 20 20  ssing,..        
11cb0 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61          bool wha
11cc0 74 49 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf,..          
11cd0 20 20 20 20 20 20 62 6f 6f 6c 20 76 65 72 62 6f        bool verbo
11ce0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
11cf0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
11d00 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11d10 20 20 20 20 20 20 69 66 20 28 76 65 72 62 6f 73        if (verbos
11d20 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
11d30 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
11d40 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
11d50 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
11d60 65 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e  e(TracePriority.
11d70 48 69 67 68 65 73 74 2c 0d 0a 20 20 20 20 20 20  Highest,..      
11d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d90 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c    debugCallback,
11da0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20   traceCallback, 
11db0 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
11dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11dd0 20 20 20 20 20 20 20 20 22 72 6f 6f 74 4b 65 79          "rootKey
11de0 20 3d 20 7b 30 7d 2c 20 73 75 62 4b 65 79 4e 61   = {0}, subKeyNa
11df0 6d 65 20 3d 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  me = {1}",..    
11e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11e10 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 72      ForDisplay(r
11e20 6f 6f 74 4b 65 79 29 2c 20 46 6f 72 44 69 73 70  ootKey), ForDisp
11e30 6c 61 79 28 73 75 62 4b 65 79 4e 61 6d 65 29 29  lay(subKeyName))
11e40 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
11e50 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
11e60 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20  Category);..    
11e70 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
11e80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11e90 20 69 66 20 28 72 6f 6f 74 4b 65 79 20 3d 3d 20   if (rootKey == 
11ea0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
11eb0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
11ec0 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  n;....          
11ed0 20 20 20 20 20 20 69 66 20 28 21 77 68 61 74 49        if (!whatI
11ee0 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f)..            
11ef0 20 20 20 20 20 20 20 20 72 6f 6f 74 4b 65 79 2e          rootKey.
11f00 44 65 6c 65 74 65 53 75 62 4b 65 79 28 73 75 62  DeleteSubKey(sub
11f10 4b 65 79 4e 61 6d 65 2c 20 74 68 72 6f 77 4f 6e  KeyName, throwOn
11f20 4d 69 73 73 69 6e 67 29 3b 0d 0a 0d 0a 20 20 20  Missing);....   
11f30 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 79               May
11f40 62 65 4c 6f 67 4f 70 65 72 61 74 69 6f 6e 28 47  beLogOperation(G
11f50 65 74 4d 65 74 68 6f 64 4e 61 6d 65 28 29 2c 20  etMethodName(), 
11f60 72 6f 6f 74 4b 65 79 2c 20 73 75 62 4b 65 79 4e  rootKey, subKeyN
11f70 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ame);....       
11f80 20 20 20 20 20 20 20 20 20 73 75 62 4b 65 79 73           subKeys
11f90 44 65 6c 65 74 65 64 2b 2b 3b 0d 0a 20 20 20 20  Deleted++;..    
11fa0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
11fb0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
11fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
12000 20 20 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74              [Met
12010 68 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d  hodImpl(MethodIm
12020 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69  plOptions.NoInli
12030 6e 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20  ning)]..        
12040 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
12050 63 20 76 6f 69 64 20 44 65 6c 65 74 65 53 75 62  c void DeleteSub
12060 4b 65 79 54 72 65 65 28 0d 0a 20 20 20 20 20 20  KeyTree(..      
12070 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65            MockRe
12080 67 69 73 74 72 79 4b 65 79 20 72 6f 6f 74 4b 65  gistryKey rootKe
12090 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
120a0 20 20 20 20 73 74 72 69 6e 67 20 73 75 62 4b 65      string subKe
120b0 79 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  yName,..        
120c0 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61          bool wha
120d0 74 49 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf,..          
120e0 20 20 20 20 20 20 62 6f 6f 6c 20 76 65 72 62 6f        bool verbo
120f0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
12100 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
12110 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
12120 20 20 20 20 20 20 69 66 20 28 76 65 72 62 6f 73        if (verbos
12130 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
12140 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12150 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
12160 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
12170 65 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e  e(TracePriority.
12180 48 69 67 68 65 73 74 2c 0d 0a 20 20 20 20 20 20  Highest,..      
12190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
121a0 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c    debugCallback,
121b0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20   traceCallback, 
121c0 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
121d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
121e0 20 20 20 20 20 20 20 20 22 72 6f 6f 74 4b 65 79          "rootKey
121f0 20 3d 20 7b 30 7d 2c 20 73 75 62 4b 65 79 4e 61   = {0}, subKeyNa
12200 6d 65 20 3d 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  me = {1}",..    
12210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12220 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 72      ForDisplay(r
12230 6f 6f 74 4b 65 79 29 2c 20 46 6f 72 44 69 73 70  ootKey), ForDisp
12240 6c 61 79 28 73 75 62 4b 65 79 4e 61 6d 65 29 29  lay(subKeyName))
12250 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
12260 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
12270 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20  Category);..    
12280 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
12290 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
122a0 20 69 66 20 28 72 6f 6f 74 4b 65 79 20 3d 3d 20   if (rootKey == 
122b0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
122c0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
122d0 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  n;....          
122e0 20 20 20 20 20 20 69 66 20 28 21 77 68 61 74 49        if (!whatI
122f0 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f)..            
12300 20 20 20 20 20 20 20 20 72 6f 6f 74 4b 65 79 2e          rootKey.
12310 44 65 6c 65 74 65 53 75 62 4b 65 79 54 72 65 65  DeleteSubKeyTree
12320 28 73 75 62 4b 65 79 4e 61 6d 65 29 3b 0d 0a 0d  (subKeyName);...
12330 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12340 20 4d 61 79 62 65 4c 6f 67 4f 70 65 72 61 74 69   MaybeLogOperati
12350 6f 6e 28 47 65 74 4d 65 74 68 6f 64 4e 61 6d 65  on(GetMethodName
12360 28 29 2c 20 72 6f 6f 74 4b 65 79 2c 20 73 75 62  (), rootKey, sub
12370 4b 65 79 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  KeyName);....   
12380 20 20 20 20 20 20 20 20 20 20 20 20 20 73 75 62               sub
12390 4b 65 79 73 44 65 6c 65 74 65 64 2b 2b 3b 0d 0a  KeysDeleted++;..
123a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
123b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
123c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
123d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
123e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
123f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12400 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
12410 5b 4d 65 74 68 6f 64 49 6d 70 6c 28 4d 65 74 68  [MethodImpl(Meth
12420 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f  odImplOptions.No
12430 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a 20 20 20 20  Inlining)]..    
12440 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
12450 74 61 74 69 63 20 73 74 72 69 6e 67 5b 5d 20 47  tatic string[] G
12460 65 74 53 75 62 4b 65 79 4e 61 6d 65 73 28 0d 0a  etSubKeyNames(..
12470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12480 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20  MockRegistryKey 
12490 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  key,..          
124a0 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49        bool whatI
124b0 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f,..            
124c0 20 20 20 20 62 6f 6f 6c 20 76 65 72 62 6f 73 65      bool verbose
124d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
124e0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
124f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12500 20 20 20 20 69 66 20 28 76 65 72 62 6f 73 65 29      if (verbose)
12510 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12520 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
12530 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f 70           TraceOp
12540 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28  s.DebugAndTrace(
12550 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 48 69  TracePriority.Hi
12560 67 68 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gh,..           
12570 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62               deb
12580 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63  ugCallback, trac
12590 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e  eCallback, Strin
125a0 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
125b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
125c0 20 20 20 22 6b 65 79 20 3d 20 7b 30 7d 22 2c 20     "key = {0}", 
125d0 46 6f 72 44 69 73 70 6c 61 79 28 6b 65 79 29 29  ForDisplay(key))
125e0 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29  , traceCategory)
125f0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
12600 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
12610 20 20 20 20 20 20 20 20 69 66 20 28 6b 65 79 20          if (key 
12620 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
12630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
12640 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
12650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
12660 74 75 72 6e 20 6b 65 79 2e 47 65 74 53 75 62 4b  turn key.GetSubK
12670 65 79 4e 61 6d 65 73 28 29 3b 0d 0a 20 20 20 20  eyNames();..    
12680 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
12690 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
126a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
126b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
126c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
126d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
126e0 20 20 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74              [Met
126f0 68 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d  hodImpl(MethodIm
12700 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69  plOptions.NoInli
12710 6e 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20  ning)]..        
12720 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
12730 63 20 6f 62 6a 65 63 74 20 47 65 74 56 61 6c 75  c object GetValu
12740 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
12750 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79      MockRegistry
12760 4b 65 79 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20  Key key,..      
12770 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
12780 20 6e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20   name,..        
12790 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 64          object d
127a0 65 66 61 75 6c 74 56 61 6c 75 65 2c 0d 0a 20 20  efaultValue,..  
127b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
127c0 6f 6c 20 77 68 61 74 49 66 2c 0d 0a 20 20 20 20  ol whatIf,..    
127d0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
127e0 20 76 65 72 62 6f 73 65 0d 0a 20 20 20 20 20 20   verbose..      
127f0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
12800 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12810 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
12820 76 65 72 62 6f 73 65 29 0d 0a 20 20 20 20 20 20  verbose)..      
12830 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
12840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12850 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
12860 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72 69  ndTrace(TracePri
12870 6f 72 69 74 79 2e 48 69 67 68 2c 0d 0a 20 20 20  ority.High,..   
12880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12890 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61       debugCallba
128a0 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63  ck, traceCallbac
128b0 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
128c0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
128d0 20 20 20 20 20 20 20 20 20 20 20 22 6b 65 79 20             "key 
128e0 3d 20 7b 30 7d 2c 20 6e 61 6d 65 20 3d 20 7b 31  = {0}, name = {1
128f0 7d 2c 20 64 65 66 61 75 6c 74 56 61 6c 75 65 20  }, defaultValue 
12900 3d 20 7b 32 7d 22 2c 0d 0a 20 20 20 20 20 20 20  = {2}",..       
12910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12920 20 46 6f 72 44 69 73 70 6c 61 79 28 6b 65 79 29   ForDisplay(key)
12930 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e 61 6d  , ForDisplay(nam
12940 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
12950 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72               For
12960 44 69 73 70 6c 61 79 28 64 65 66 61 75 6c 74 56  Display(defaultV
12970 61 6c 75 65 29 29 2c 20 74 72 61 63 65 43 61 74  alue)), traceCat
12980 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20  egory);..       
12990 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
129a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
129b0 20 28 6b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a   (key == null)..
129c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
129d0 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
129e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
129f0 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65      object value
12a00 20 3d 20 6b 65 79 2e 47 65 74 56 61 6c 75 65 28   = key.GetValue(
12a10 6e 61 6d 65 2c 20 64 65 66 61 75 6c 74 56 61 6c  name, defaultVal
12a20 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ue);....        
12a30 20 20 20 20 20 20 20 20 6b 65 79 56 61 6c 75 65          keyValue
12a40 73 52 65 61 64 2b 2b 3b 0d 0a 0d 0a 20 20 20 20  sRead++;....    
12a50 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
12a60 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  rn value;..     
12a70 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
12a80 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
12a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
12ad0 20 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74 68             [Meth
12ae0 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70  odImpl(MethodImp
12af0 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e  lOptions.NoInlin
12b00 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20 20  ing)]..         
12b10 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
12b20 20 76 6f 69 64 20 53 65 74 56 61 6c 75 65 28 0d   void SetValue(.
12b30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12b40 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
12b50 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20 20   key,..         
12b60 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61         string na
12b70 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
12b80 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75       object valu
12b90 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
12ba0 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66 2c      bool whatIf,
12bb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12bc0 20 20 62 6f 6f 6c 20 76 65 72 62 6f 73 65 0d 0a    bool verbose..
12bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12be0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
12bf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12c00 20 20 69 66 20 28 76 65 72 62 6f 73 65 29 0d 0a    if (verbose)..
12c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12c20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
12c30 20 20 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e         TraceOps.
12c40 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 54 72  DebugAndTrace(Tr
12c50 61 63 65 50 72 69 6f 72 69 74 79 2e 48 69 67 68  acePriority.High
12c60 65 73 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  est,..          
12c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
12c80 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61  bugCallback, tra
12c90 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69  ceCallback, Stri
12ca0 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
12cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12cc0 20 20 20 20 22 6b 65 79 20 3d 20 7b 30 7d 2c 20      "key = {0}, 
12cd0 6e 61 6d 65 20 3d 20 7b 31 7d 2c 20 76 61 6c 75  name = {1}, valu
12ce0 65 20 3d 20 7b 32 7d 22 2c 0d 0a 20 20 20 20 20  e = {2}",..     
12cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12d00 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 6b 65     ForDisplay(ke
12d10 79 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e  y), ForDisplay(n
12d20 61 6d 65 29 2c 20 46 6f 72 44 69 73 70 6c 61 79  ame), ForDisplay
12d30 28 76 61 6c 75 65 29 29 2c 0d 0a 20 20 20 20 20  (value)),..     
12d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12d50 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
12d60 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
12d70 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
12d80 20 20 20 20 20 20 20 20 20 69 66 20 28 6b 65 79           if (key
12d90 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
12da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
12db0 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  eturn;....      
12dc0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 77            if (!w
12dd0 68 61 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20  hatIf)..        
12de0 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 2e              key.
12df0 53 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20 76  SetValue(name, v
12e00 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  alue);....      
12e10 20 20 20 20 20 20 20 20 20 20 4d 61 79 62 65 4c            MaybeL
12e20 6f 67 4f 70 65 72 61 74 69 6f 6e 28 47 65 74 4d  ogOperation(GetM
12e30 65 74 68 6f 64 4e 61 6d 65 28 29 2c 20 6b 65 79  ethodName(), key
12e40 2c 20 6e 61 6d 65 2c 20 76 61 6c 75 65 29 3b 0d  , name, value);.
12e50 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
12e60 20 20 20 6b 65 79 56 61 6c 75 65 73 57 72 69 74     keyValuesWrit
12e70 74 65 6e 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20  ten++;..        
12e80 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
12e90 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
12ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ed0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
12ee0 20 20 20 20 20 20 20 20 5b 4d 65 74 68 6f 64 49          [MethodI
12ef0 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70  mpl(MethodImplOp
12f00 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67  tions.NoInlining
12f10 29 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  )]..            
12f20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
12f30 69 64 20 44 65 6c 65 74 65 56 61 6c 75 65 28 0d  id DeleteValue(.
12f40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12f50 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
12f60 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20 20   key,..         
12f70 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61         string na
12f80 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
12f90 20 20 20 20 20 62 6f 6f 6c 20 74 68 72 6f 77 4f       bool throwO
12fa0 6e 4d 69 73 73 69 6e 67 2c 0d 0a 20 20 20 20 20  nMissing,..     
12fb0 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
12fc0 77 68 61 74 49 66 2c 0d 0a 20 20 20 20 20 20 20  whatIf,..       
12fd0 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 76 65           bool ve
12fe0 72 62 6f 73 65 0d 0a 20 20 20 20 20 20 20 20 20  rbose..         
12ff0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
13000 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13010 20 20 20 20 20 20 20 20 20 69 66 20 28 76 65 72           if (ver
13020 62 6f 73 65 29 0d 0a 20 20 20 20 20 20 20 20 20  bose)..         
13030 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
13040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
13050 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54  aceOps.DebugAndT
13060 72 61 63 65 28 54 72 61 63 65 50 72 69 6f 72 69  race(TracePriori
13070 74 79 2e 48 69 67 68 65 73 74 2c 0d 0a 20 20 20  ty.Highest,..   
13080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13090 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61       debugCallba
130a0 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63  ck, traceCallbac
130b0 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
130c0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
130d0 20 20 20 20 20 20 20 20 20 20 20 22 6b 65 79 20             "key 
130e0 3d 20 7b 30 7d 2c 20 6e 61 6d 65 20 3d 20 7b 31  = {0}, name = {1
130f0 7d 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6b  }", ForDisplay(k
13100 65 79 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ey),..          
13110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f                Fo
13120 72 44 69 73 70 6c 61 79 28 6e 61 6d 65 29 29 2c  rDisplay(name)),
13130 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
13140 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13150 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
13160 20 20 20 20 20 20 20 69 66 20 28 6b 65 79 20 3d         if (key =
13170 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
13180 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
13190 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  urn;....        
131a0 20 20 20 20 20 20 20 20 69 66 20 28 21 77 68 61          if (!wha
131b0 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf)..          
131c0 20 20 20 20 20 20 20 20 20 20 6b 65 79 2e 44 65            key.De
131d0 6c 65 74 65 56 61 6c 75 65 28 6e 61 6d 65 2c 20  leteValue(name, 
131e0 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67 29 3b  throwOnMissing);
131f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
13200 20 20 20 20 4d 61 79 62 65 4c 6f 67 4f 70 65 72      MaybeLogOper
13210 61 74 69 6f 6e 28 47 65 74 4d 65 74 68 6f 64 4e  ation(GetMethodN
13220 61 6d 65 28 29 2c 20 6b 65 79 2c 20 6e 61 6d 65  ame(), key, name
13230 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20  , null);....    
13240 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 56              keyV
13250 61 6c 75 65 73 44 65 6c 65 74 65 64 2b 2b 3b 0d  aluesDeleted++;.
13260 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
13270 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
13280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132c0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
132d0 20 5b 4d 65 74 68 6f 64 49 6d 70 6c 28 4d 65 74   [MethodImpl(Met
132e0 68 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e 73 2e 4e  hodImplOptions.N
132f0 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a 20 20 20  oInlining)]..   
13300 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
13310 73 74 61 74 69 63 20 69 6e 74 20 57 72 69 74 65  static int Write
13320 4f 70 65 72 61 74 69 6f 6e 4c 69 73 74 28 0d 0a  OperationList(..
13330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13340 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c  string fileName,
13350 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13360 20 20 62 6f 6f 6c 20 76 65 72 62 6f 73 65 0d 0a    bool verbose..
13370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13380 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
13390 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
133a0 20 20 69 6e 74 20 63 6f 75 6e 74 20 3d 20 30 3b    int count = 0;
133b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
133c0 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49      if (String.I
133d0 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c  sNullOrEmpty(fil
133e0 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
133f0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
13400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13410 69 66 20 28 76 65 72 62 6f 73 65 29 0d 0a 20 20  if (verbose)..  
13420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13430 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
13440 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
13450 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
13460 61 63 65 28 54 72 61 63 65 50 72 69 6f 72 69 74  ace(TracePriorit
13470 79 2e 48 69 67 68 65 73 74 2c 0d 0a 20 20 20 20  y.Highest,..    
13480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13490 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61 6c          debugCal
134a0 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c  lback, traceCall
134b0 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
134c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
134d0 20 20 20 22 52 65 67 69 73 74 72 79 20 6f 70 65     "Registry ope
134e0 72 61 74 69 6f 6e 20 6c 6f 67 20 66 69 6c 65 20  ration log file 
134f0 6e 61 6d 65 20 6e 6f 74 20 73 65 74 2e 22 2c 0d  name not set.",.
13500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13510 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
13520 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20  ceCategory);..  
13530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13540 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
13550 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
13560 6e 20 63 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20  n count;..      
13570 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
13580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
13590 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 20 2f  ock (syncRoot) /
135a0 2a 20 54 52 41 4e 53 41 43 54 49 4f 4e 41 4c 20  * TRANSACTIONAL 
135b0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
135c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
135d0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
135e0 70 65 72 61 74 69 6f 6e 4c 69 73 74 20 3d 3d 20  perationList == 
135f0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
13600 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
13610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13620 20 20 20 20 20 20 69 66 20 28 76 65 72 62 6f 73        if (verbos
13630 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
13640 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
13650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13660 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
13670 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
13680 65 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e  e(TracePriority.
13690 48 69 67 68 65 73 74 2c 0d 0a 20 20 20 20 20 20  Highest,..      
136a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
136b0 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43            debugC
136c0 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61  allback, traceCa
136d0 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
136e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
136f0 20 20 20 20 20 20 20 20 20 22 52 65 67 69 73 74           "Regist
13700 72 79 20 6f 70 65 72 61 74 69 6f 6e 20 6c 69 73  ry operation lis
13710 74 20 69 73 20 69 6e 76 61 6c 69 64 2e 22 2c 0d  t is invalid.",.
13720 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13740 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
13750 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13760 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
13770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13780 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 6f         return co
13790 75 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  unt;..          
137a0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
137b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
137c0 20 20 20 75 73 69 6e 67 20 28 53 74 72 65 61 6d     using (Stream
137d0 57 72 69 74 65 72 20 73 74 72 65 61 6d 57 72 69  Writer streamWri
137e0 74 65 72 20 3d 20 6e 65 77 20 53 74 72 65 61 6d  ter = new Stream
137f0 57 72 69 74 65 72 28 0d 0a 20 20 20 20 20 20 20  Writer(..       
13800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13810 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 29 29 0d       fileName)).
13820 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13830 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
13840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13850 66 6f 72 65 61 63 68 20 28 52 65 67 69 73 74 72  foreach (Registr
13860 79 4f 70 65 72 61 74 69 6f 6e 20 6f 70 65 72 61  yOperation opera
13870 74 69 6f 6e 20 69 6e 20 6f 70 65 72 61 74 69 6f  tion in operatio
13880 6e 4c 69 73 74 29 0d 0a 20 20 20 20 20 20 20 20  nList)..        
13890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
138a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
138b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
138c0 66 20 28 6f 70 65 72 61 74 69 6f 6e 20 3d 3d 20  f (operation == 
138d0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
138e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
138f0 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
13900 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
13910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13920 73 74 72 65 61 6d 57 72 69 74 65 72 2e 57 72 69  streamWriter.Wri
13930 74 65 4c 69 6e 65 28 6f 70 65 72 61 74 69 6f 6e  teLine(operation
13940 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 20  .ToString());.. 
13950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13960 20 20 20 20 20 20 20 20 20 20 20 63 6f 75 6e 74             count
13970 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ++;..           
13980 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
13990 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
139a0 20 20 20 20 20 20 20 20 20 20 73 74 72 65 61 6d            stream
139b0 57 72 69 74 65 72 2e 46 6c 75 73 68 28 29 3b 0d  Writer.Flush();.
139c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
139d0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
139e0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
139f0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
13a00 28 76 65 72 62 6f 73 65 29 0d 0a 20 20 20 20 20  (verbose)..     
13a10 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
13a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a30 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67    TraceOps.Debug
13a40 41 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72  AndTrace(TracePr
13a50 69 6f 72 69 74 79 2e 48 69 67 68 65 73 74 2c 0d  iority.Highest,.
13a60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13a70 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61           debugCa
13a80 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c  llback, traceCal
13a90 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f  lback, String.Fo
13aa0 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
13ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
13ac0 57 72 6f 74 65 20 7b 30 7d 20 72 65 67 69 73 74  Wrote {0} regist
13ad0 72 79 20 6f 70 65 72 61 74 69 6f 6e 73 20 74 6f  ry operations to
13ae0 20 69 74 73 20 6c 6f 67 20 66 69 6c 65 2e 22 2c   its log file.",
13af0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13b00 20 20 20 20 20 20 20 20 20 20 63 6f 75 6e 74 29            count)
13b10 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29  , traceCategory)
13b20 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
13b30 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
13b40 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63          return c
13b50 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  ount;..         
13b60 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
13b70 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
13b80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
13b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
13bd0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
13be0 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 53  region Private S
13bf0 74 61 74 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20  tatic Methods.. 
13c00 20 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74 68             [Meth
13c10 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70  odImpl(MethodImp
13c20 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e  lOptions.NoInlin
13c30 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20 20  ing)]..         
13c40 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
13c50 63 20 73 74 72 69 6e 67 20 47 65 74 4d 65 74 68  c string GetMeth
13c60 6f 64 4e 61 6d 65 28 29 0d 0a 20 20 20 20 20 20  odName()..      
13c70 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13c80 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
13c90 54 72 61 63 65 4f 70 73 2e 47 65 74 4d 65 74 68  TraceOps.GetMeth
13ca0 6f 64 4e 61 6d 65 28 6e 75 6c 6c 2c 20 31 29 3b  odName(null, 1);
13cb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
13cc0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
13cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d10 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
13d20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
13d30 20 76 6f 69 64 20 4d 61 79 62 65 4c 6f 67 4f 70   void MaybeLogOp
13d40 65 72 61 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20  eration(..      
13d50 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
13d60 20 6d 65 74 68 6f 64 4e 61 6d 65 2c 0d 0a 20 20   methodName,..  
13d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f                Mo
13d80 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65  ckRegistryKey ke
13d90 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
13da0 20 20 20 20 73 74 72 69 6e 67 20 73 75 62 4b 65      string subKe
13db0 79 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20  yName..         
13dc0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
13dd0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13de0 20 20 20 20 20 20 20 20 20 4d 61 79 62 65 4c 6f           MaybeLo
13df0 67 4f 70 65 72 61 74 69 6f 6e 28 6d 65 74 68 6f  gOperation(metho
13e00 64 4e 61 6d 65 2c 20 6b 65 79 2c 20 73 75 62 4b  dName, key, subK
13e10 65 79 4e 61 6d 65 2c 20 6e 75 6c 6c 2c 20 6e 75  eyName, null, nu
13e20 6c 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ll);..          
13e30 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
13e40 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
13e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13e80 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
13e90 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
13ea0 61 74 69 63 20 76 6f 69 64 20 4d 61 79 62 65 4c  atic void MaybeL
13eb0 6f 67 4f 70 65 72 61 74 69 6f 6e 28 0d 0a 20 20  ogOperation(..  
13ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
13ed0 72 69 6e 67 20 6d 65 74 68 6f 64 4e 61 6d 65 2c  ring methodName,
13ee0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13ef0 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65    MockRegistryKe
13f00 79 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20  y key,..        
13f10 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76          string v
13f20 61 6c 75 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20  alueName,..     
13f30 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63             objec
13f40 74 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  t value..       
13f50 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
13f60 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
13f70 20 20 20 20 20 20 20 20 20 20 20 4d 61 79 62 65             Maybe
13f80 4c 6f 67 4f 70 65 72 61 74 69 6f 6e 28 6d 65 74  LogOperation(met
13f90 68 6f 64 4e 61 6d 65 2c 20 6b 65 79 2c 20 6e 75  hodName, key, nu
13fa0 6c 6c 2c 20 76 61 6c 75 65 4e 61 6d 65 2c 20 76  ll, valueName, v
13fb0 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
13fc0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
13fd0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
13fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14010 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
14020 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
14030 73 74 61 74 69 63 20 76 6f 69 64 20 4d 61 79 62  static void Mayb
14040 65 4c 6f 67 4f 70 65 72 61 74 69 6f 6e 28 0d 0a  eLogOperation(..
14050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14060 73 74 72 69 6e 67 20 6d 65 74 68 6f 64 4e 61 6d  string methodNam
14070 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
14080 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79      MockRegistry
14090 4b 65 79 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20  Key key,..      
140a0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
140b0 20 73 75 62 4b 65 79 4e 61 6d 65 2c 0d 0a 20 20   subKeyName,..  
140c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
140d0 72 69 6e 67 20 76 61 6c 75 65 4e 61 6d 65 2c 0d  ring valueName,.
140e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
140f0 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 0d 0a 20   object value.. 
14100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
14110 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
14120 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14130 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
14140 20 2f 2a 20 54 52 41 4e 53 41 43 54 49 4f 4e 41   /* TRANSACTIONA
14150 4c 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  L */..          
14160 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
14170 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
14180 28 6f 70 65 72 61 74 69 6f 6e 4c 69 73 74 20 3d  (operationList =
14190 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
141a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
141b0 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
141c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
141d0 6f 70 65 72 61 74 69 6f 6e 4c 69 73 74 2e 41 64  operationList.Ad
141e0 64 28 6e 65 77 20 52 65 67 69 73 74 72 79 4f 70  d(new RegistryOp
141f0 65 72 61 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20  eration(..      
14200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14210 20 20 6d 65 74 68 6f 64 4e 61 6d 65 2c 20 6b 65    methodName, ke
14220 79 2c 20 73 75 62 4b 65 79 4e 61 6d 65 2c 20 76  y, subKeyName, v
14230 61 6c 75 65 4e 61 6d 65 2c 20 76 61 6c 75 65 29  alueName, value)
14240 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
14250 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
14260 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
14270 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
14280 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
14290 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
142a0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
142b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
142c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
142d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
142e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
142f0 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
14300 6e 20 52 65 67 69 73 74 72 79 4f 70 65 72 61 74  n RegistryOperat
14310 69 6f 6e 4c 69 73 74 20 43 6c 61 73 73 0d 0a 20  ionList Class.. 
14320 20 20 20 20 20 20 20 5b 53 65 72 69 61 6c 69 7a         [Serializ
14330 61 62 6c 65 28 29 5d 0d 0a 20 20 20 20 20 20 20  able()]..       
14340 20 70 72 69 76 61 74 65 20 73 65 61 6c 65 64 20   private sealed 
14350 63 6c 61 73 73 20 52 65 67 69 73 74 72 79 4f 70  class RegistryOp
14360 65 72 61 74 69 6f 6e 4c 69 73 74 20 3a 0d 0a 20  erationList :.. 
14370 20 20 20 20 20 20 20 20 20 20 20 4c 69 73 74 3c             List<
14380 52 65 67 69 73 74 72 79 4f 70 65 72 61 74 69 6f  RegistryOperatio
14390 6e 3e 2c 20 49 44 69 73 70 6f 73 61 62 6c 65 0d  n>, IDisposable.
143a0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
143b0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
143c0 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74  Public Construct
143d0 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ors..           
143e0 20 70 75 62 6c 69 63 20 52 65 67 69 73 74 72 79   public Registry
143f0 4f 70 65 72 61 74 69 6f 6e 4c 69 73 74 28 29 0d  OperationList().
14400 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
14410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14420 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
14430 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
14440 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
14450 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
14460 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
14470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
144a0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
144b0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
144c0 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61 74  IDisposable "Pat
144d0 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20  tern" Members.. 
144e0 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
144f0 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64  te bool disposed
14500 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
14510 72 69 76 61 74 65 20 76 6f 69 64 20 43 68 65 63  rivate void Chec
14520 6b 44 69 73 70 6f 73 65 64 28 29 20 2f 2a 20 74  kDisposed() /* t
14530 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
14540 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
14550 20 20 20 20 20 20 20 20 69 66 20 28 21 64 69 73          if (!dis
14560 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20  posed)..        
14570 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
14580 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  rn;....         
14590 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
145a0 20 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45   ObjectDisposedE
145b0 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20  xception(..     
145c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
145d0 79 70 65 6f 66 28 52 65 67 69 73 74 72 79 4f 70  ypeof(RegistryOp
145e0 65 72 61 74 69 6f 6e 4c 69 73 74 29 2e 4e 61 6d  erationList).Nam
145f0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
14600 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
14610 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
14620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14650 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
14660 20 20 20 20 20 70 72 69 76 61 74 65 20 2f 2a 20       private /* 
14670 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61  protected virtua
14680 6c 20 2a 2f 20 76 6f 69 64 20 44 69 73 70 6f 73  l */ void Dispos
14690 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
146a0 20 20 20 20 62 6f 6f 6c 20 64 69 73 70 6f 73 69      bool disposi
146b0 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ng..            
146c0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
146d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
146e0 20 20 20 20 20 20 69 66 20 28 21 64 69 73 70 6f        if (!dispo
146f0 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20  sed)..          
14700 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
14710 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
14720 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20  (disposing)..   
14730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14740 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
14750 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
14760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14780 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14790 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 69 73            // dis
147a0 70 6f 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73  pose managed res
147b0 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a  ources here.....
147c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
147d0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
147e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
147f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
14800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14810 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20          foreach 
14820 28 52 65 67 69 73 74 72 79 4f 70 65 72 61 74 69  (RegistryOperati
14830 6f 6e 20 6f 70 65 72 61 74 69 6f 6e 20 69 6e 20  on operation in 
14840 74 68 69 73 29 0d 0a 20 20 20 20 20 20 20 20 20  this)..         
14850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
14860 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
14880 20 28 6f 70 65 72 61 74 69 6f 6e 20 3d 3d 20 6e   (operation == n
14890 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
148a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
148b0 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
148c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
148d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
148e0 70 65 72 61 74 69 6f 6e 2e 44 69 73 70 6f 73 65  peration.Dispose
148f0 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
14900 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
14910 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14920 20 20 20 20 20 20 20 20 20 20 43 6c 65 61 72 28            Clear(
14930 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
14940 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
14950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14960 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
14970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14980 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20  ///////..       
14990 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
149a0 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67 65  release unmanage
149b0 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72 65  d resources here
149c0 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .....           
149d0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
149e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
149f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
14a00 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
14a10 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
14a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
14a30 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 6f 62 6a  / NOTE: This obj
14a40 65 63 74 20 69 73 20 6e 6f 77 20 64 69 73 70 6f  ect is now dispo
14a50 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  sed...          
14a60 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
14a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14a80 20 20 64 69 73 70 6f 73 65 64 20 3d 20 74 72 75    disposed = tru
14a90 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
14aa0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
14ab0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
14ac0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
14ad0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
14ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
14b20 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
14b30 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62  region IDisposab
14b40 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20  le Members..    
14b50 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
14b60 6f 69 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20  oid Dispose().. 
14b70 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
14b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 69                Di
14b90 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20  spose(true);..  
14ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47 43                GC
14bb0 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a  .SuppressFinaliz
14bc0 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20  e(this);..      
14bd0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
14be0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
14bf0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
14c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c40 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
14c50 20 20 23 72 65 67 69 6f 6e 20 44 65 73 74 72 75    #region Destru
14c60 63 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  ctor..          
14c70 20 20 7e 52 65 67 69 73 74 72 79 4f 70 65 72 61    ~RegistryOpera
14c80 74 69 6f 6e 4c 69 73 74 28 29 0d 0a 20 20 20 20  tionList()..    
14c90 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
14ca0 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f             Dispo
14cb0 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20  se(false);..    
14cc0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
14cd0 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
14ce0 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  n..        }..  
14cf0 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
14d00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
14d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d50 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
14d60 72 65 67 69 6f 6e 20 52 65 67 69 73 74 72 79 4f  region RegistryO
14d70 70 65 72 61 74 69 6f 6e 20 43 6c 61 73 73 0d 0a  peration Class..
14d80 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
14d90 73 65 61 6c 65 64 20 63 6c 61 73 73 20 52 65 67  sealed class Reg
14da0 69 73 74 72 79 4f 70 65 72 61 74 69 6f 6e 0d 0a  istryOperation..
14db0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
14dc0 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
14dd0 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73  rivate Constants
14de0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
14df0 69 76 61 74 65 20 63 6f 6e 73 74 20 63 68 61 72  ivate const char
14e00 20 46 69 65 6c 64 44 65 6c 69 6d 69 74 65 72 20   FieldDelimiter 
14e10 3d 20 27 5c 74 27 3b 0d 0a 20 20 20 20 20 20 20  = '\t';..       
14e20 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e       private con
14e30 73 74 20 73 74 72 69 6e 67 20 4c 69 73 74 45 6c  st string ListEl
14e40 65 6d 65 6e 74 44 65 6c 69 6d 69 74 65 72 20 3d  ementDelimiter =
14e50 20 22 2c 20 22 3b 0d 0a 20 20 20 20 20 20 20 20   ", ";..        
14e60 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
14e70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
14e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ec0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
14ed0 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
14ee0 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
14ef0 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
14f00 20 52 65 67 69 73 74 72 79 4f 70 65 72 61 74 69   RegistryOperati
14f10 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
14f20 20 20 20 20 20 73 74 72 69 6e 67 20 6d 65 74 68       string meth
14f30 6f 64 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20  odName,..       
14f40 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65 67           MockReg
14f50 69 73 74 72 79 4b 65 79 20 6b 65 79 2c 0d 0a 20  istryKey key,.. 
14f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
14f70 74 72 69 6e 67 20 73 75 62 4b 65 79 4e 61 6d 65  tring subKeyName
14f80 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
14f90 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 4e     string valueN
14fa0 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
14fb0 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c        object val
14fc0 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ue..            
14fd0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
14fe0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
14ff0 20 20 20 20 20 20 74 68 69 73 2e 6d 65 74 68 6f        this.metho
15000 64 4e 61 6d 65 20 3d 20 6d 65 74 68 6f 64 4e 61  dName = methodNa
15010 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
15020 20 20 20 20 20 74 68 69 73 2e 73 75 62 4b 65 79       this.subKey
15030 4e 61 6d 65 20 3d 20 73 75 62 4b 65 79 4e 61 6d  Name = subKeyNam
15040 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
15050 20 20 20 20 74 68 69 73 2e 76 61 6c 75 65 4e 61      this.valueNa
15060 6d 65 20 3d 20 76 61 6c 75 65 4e 61 6d 65 3b 0d  me = valueName;.
15070 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15080 20 74 68 69 73 2e 76 61 6c 75 65 20 3d 20 76 61   this.value = va
15090 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lue;....        
150a0 20 20 20 20 20 20 20 20 53 65 74 4b 65 79 28 6b          SetKey(k
150b0 65 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ey);..          
150c0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
150d0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
150e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
150f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
15130 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72  ..            #r
15140 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d 65  egion Private Me
15150 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 20  thods..         
15160 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64 20     private void 
15170 53 65 74 4b 65 79 28 0d 0a 20 20 20 20 20 20 20  SetKey(..       
15180 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65 67           MockReg
15190 69 73 74 72 79 4b 65 79 20 6b 65 79 0d 0a 20 20  istryKey key..  
151a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
151b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
151c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
151d0 69 66 20 28 6b 65 79 20 21 3d 20 6e 75 6c 6c 29  if (key != null)
151e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
151f0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
15200 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
15210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15220 20 2f 2f 20 4e 4f 54 45 3a 20 4d 61 6b 65 20 73   // NOTE: Make s
15230 75 72 65 20 74 68 69 73 20 63 6f 70 79 20 6f 66  ure this copy of
15240 20 74 68 65 20 72 6f 6f 74 20 72 65 67 69 73 74   the root regist
15250 72 79 20 6b 65 79 0d 0a 20 20 20 20 20 20 20 20  ry key..        
15260 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
15270 20 20 20 20 20 63 61 6e 6e 6f 74 20 62 65 20 75       cannot be u
15280 73 65 64 20 74 6f 20 61 63 63 69 64 65 6e 74 61  sed to accidenta
15290 6c 6c 79 20 6d 61 6b 65 20 72 65 67 69 73 74 72  lly make registr
152a0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
152b0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
152c0 63 68 61 6e 67 65 73 2e 20 20 41 6c 73 6f 2c 20  changes.  Also, 
152d0 70 72 65 76 65 6e 74 20 74 68 69 73 20 4d 6f 63  prevent this Moc
152e0 6b 52 65 67 69 73 74 72 79 4b 65 79 0d 0a 20 20  kRegistryKey..  
152f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15300 20 20 2f 2f 20 20 20 20 20 20 20 6f 62 6a 65 63    //       objec
15310 74 20 66 72 6f 6d 20 63 6c 6f 73 69 6e 67 20 69  t from closing i
15320 74 73 20 75 6e 64 65 72 6c 79 69 6e 67 20 72 65  ts underlying re
15330 67 69 73 74 72 79 0d 0a 20 20 20 20 20 20 20 20  gistry..        
15340 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
15350 20 20 20 20 20 6b 65 79 20 61 73 20 77 65 20 77       key as we w
15360 69 6c 6c 20 6e 65 65 64 20 69 74 20 6c 61 74 65  ill need it late
15370 72 2e 20 20 54 68 69 73 20 69 6e 73 74 61 6e 63  r.  This instanc
15380 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
15390 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
153a0 77 69 6c 6c 20 63 6c 6f 73 65 20 69 74 2e 0d 0a  will close it...
153b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
153c0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
153d0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
153e0 2e 6b 65 79 20 3d 20 6e 65 77 20 4d 6f 63 6b 52  .key = new MockR
153f0 65 67 69 73 74 72 79 4b 65 79 28 6b 65 79 2c 20  egistryKey(key, 
15400 74 72 75 65 2c 20 74 72 75 65 2c 20 74 72 75 65  true, true, true
15410 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
15420 20 20 20 20 20 20 20 20 20 20 6b 65 79 2e 44 69            key.Di
15430 73 61 62 6c 65 43 6c 6f 73 65 28 29 3b 0d 0a 20  sableClose();.. 
15440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
15450 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15460 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
15470 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
15480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
15490 68 69 73 2e 6b 65 79 20 3d 20 6e 75 6c 6c 3b 0d  his.key = null;.
154a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
154b0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
154c0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
154d0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
154e0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
154f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
15530 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
15540 69 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65  ion Public Prope
15550 72 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20 20  rties..         
15560 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69 6e     private strin
15570 67 20 6d 65 74 68 6f 64 4e 61 6d 65 3b 0d 0a 20  g methodName;.. 
15580 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
15590 63 20 73 74 72 69 6e 67 20 4d 65 74 68 6f 64 4e  c string MethodN
155a0 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ame..           
155b0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
155c0 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44      get { CheckD
155d0 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72  isposed(); retur
155e0 6e 20 6d 65 74 68 6f 64 4e 61 6d 65 3b 20 7d 0d  n methodName; }.
155f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
15600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
15610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15650 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
15660 20 70 72 69 76 61 74 65 20 4d 6f 63 6b 52 65 67   private MockReg
15670 69 73 74 72 79 4b 65 79 20 6b 65 79 3b 0d 0a 20  istryKey key;.. 
15680 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
15690 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65  c MockRegistryKe
156a0 79 20 4b 65 79 0d 0a 20 20 20 20 20 20 20 20 20  y Key..         
156b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
156c0 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63        get { Chec
156d0 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74  kDisposed(); ret
156e0 75 72 6e 20 6b 65 79 3b 20 7d 0d 0a 20 20 20 20  urn key; }..    
156f0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
15700 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
15710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
15750 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
15760 61 74 65 20 73 74 72 69 6e 67 20 73 75 62 4b 65  ate string subKe
15770 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  yName;..        
15780 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e      public strin
15790 67 20 53 75 62 4b 65 79 4e 61 6d 65 0d 0a 20 20  g SubKeyName..  
157a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
157b0 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
157c0 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
157d0 28 29 3b 20 72 65 74 75 72 6e 20 73 75 62 4b 65  (); return subKe
157e0 79 4e 61 6d 65 3b 20 7d 0d 0a 20 20 20 20 20 20  yName; }..      
157f0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
15800 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
15810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
15850 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
15860 65 20 73 74 72 69 6e 67 20 76 61 6c 75 65 4e 61  e string valueNa
15870 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
15880 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 56   public string V
15890 61 6c 75 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20  alueName..      
158a0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
158b0 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 43           get { C
158c0 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
158d0 72 65 74 75 72 6e 20 76 61 6c 75 65 4e 61 6d 65  return valueName
158e0 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
158f0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
15900 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
15910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15940 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
15950 20 20 20 20 20 70 72 69 76 61 74 65 20 6f 62 6a       private obj
15960 65 63 74 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20  ect value;..    
15970 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
15980 62 6a 65 63 74 20 56 61 6c 75 65 0d 0a 20 20 20  bject Value..   
15990 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
159a0 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
159b0 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
159c0 29 3b 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b  ); return value;
159d0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
159e0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
159f0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
15a00 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
15a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
15a50 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
15a60 69 6f 6e 20 53 79 73 74 65 6d 2e 4f 62 6a 65 63  ion System.Objec
15a70 74 20 4f 76 65 72 72 69 64 65 73 0d 0a 20 20 20  t Overrides..   
15a80 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
15a90 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 45 71  override bool Eq
15aa0 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20  uals(..         
15ab0 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 6f 62         object ob
15ac0 6a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  j..             
15ad0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
15ae0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
15af0 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
15b00 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
15b10 20 20 20 20 20 20 20 20 20 52 65 67 69 73 74 72           Registr
15b20 79 4f 70 65 72 61 74 69 6f 6e 20 6f 70 65 72 61  yOperation opera
15b30 74 69 6f 6e 20 3d 20 6f 62 6a 20 61 73 20 52 65  tion = obj as Re
15b40 67 69 73 74 72 79 4f 70 65 72 61 74 69 6f 6e 3b  gistryOperation;
15b50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
15b60 20 20 20 20 69 66 20 28 6f 70 65 72 61 74 69 6f      if (operatio
15b70 6e 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  n == null)..    
15b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15b90 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
15ba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15bb0 20 69 66 20 28 21 53 74 72 69 6e 67 2e 45 71 75   if (!String.Equ
15bc0 61 6c 73 28 6f 70 65 72 61 74 69 6f 6e 2e 6d 65  als(operation.me
15bd0 74 68 6f 64 4e 61 6d 65 2c 20 6d 65 74 68 6f 64  thodName, method
15be0 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
15bf0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
15c00 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
15c10 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
15c20 28 21 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65  (!MockRegistryKe
15c30 79 2e 45 71 75 61 6c 73 28 6f 70 65 72 61 74 69  y.Equals(operati
15c40 6f 6e 2e 6b 65 79 2c 20 6b 65 79 29 29 0d 0a 20  on.key, key)).. 
15c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15c60 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
15c70 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
15c80 20 20 20 20 69 66 20 28 21 4d 6f 63 6b 52 65 67      if (!MockReg
15c90 69 73 74 72 79 4b 65 79 2e 4e 61 6d 65 45 71 75  istryKey.NameEqu
15ca0 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20  als(..          
15cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 70                op
15cc0 65 72 61 74 69 6f 6e 2e 73 75 62 4b 65 79 4e 61  eration.subKeyNa
15cd0 6d 65 2c 20 73 75 62 4b 65 79 4e 61 6d 65 29 29  me, subKeyName))
15ce0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15cf0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
15d00 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
15d10 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
15d20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
15d30 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
15d40 28 21 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28  (!String.Equals(
15d50 6f 70 65 72 61 74 69 6f 6e 2e 76 61 6c 75 65 4e  operation.valueN
15d60 61 6d 65 2c 20 76 61 6c 75 65 4e 61 6d 65 29 29  ame, valueName))
15d70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15d80 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
15d90 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
15da0 20 20 20 20 20 20 20 69 66 20 28 21 4d 6f 63 6b         if (!Mock
15db0 52 65 67 69 73 74 72 79 4b 65 79 2e 56 61 6c 75  RegistryKey.Valu
15dc0 65 45 71 75 61 6c 73 28 6f 70 65 72 61 74 69 6f  eEquals(operatio
15dd0 6e 2e 76 61 6c 75 65 2c 20 76 61 6c 75 65 29 29  n.value, value))
15de0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15df0 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
15e00 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
15e10 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
15e20 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
15e30 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
15e40 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
15e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e80 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
15e90 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72       public over
15ea0 72 69 64 65 20 69 6e 74 20 47 65 74 48 61 73 68  ride int GetHash
15eb0 43 6f 64 65 28 29 0d 0a 20 20 20 20 20 20 20 20  Code()..        
15ec0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
15ed0 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
15ee0 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
15ef0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 72             int r
15f00 65 73 75 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20  esult = 0;....  
15f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
15f20 20 28 6d 65 74 68 6f 64 4e 61 6d 65 20 21 3d 20   (methodName != 
15f30 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
15f40 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
15f50 74 20 5e 3d 20 6d 65 74 68 6f 64 4e 61 6d 65 2e  t ^= methodName.
15f60 47 65 74 48 61 73 68 43 6f 64 65 28 29 3b 0d 0a  GetHashCode();..
15f70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15f80 20 20 72 65 73 75 6c 74 20 5e 3d 20 4d 6f 63 6b    result ^= Mock
15f90 52 65 67 69 73 74 72 79 4b 65 79 2e 47 65 74 48  RegistryKey.GetH
15fa0 61 73 68 43 6f 64 65 28 6b 65 79 29 3b 0d 0a 0d  ashCode(key);...
15fb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15fc0 20 69 66 20 28 73 75 62 4b 65 79 4e 61 6d 65 20   if (subKeyName 
15fd0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
15fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
15ff0 73 75 6c 74 20 5e 3d 20 73 75 62 4b 65 79 4e 61  sult ^= subKeyNa
16000 6d 65 2e 47 65 74 48 61 73 68 43 6f 64 65 28 29  me.GetHashCode()
16010 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
16020 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 4e 61       if (valueNa
16030 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me != null)..   
16040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16050 20 72 65 73 75 6c 74 20 5e 3d 20 76 61 6c 75 65   result ^= value
16060 4e 61 6d 65 2e 47 65 74 48 61 73 68 43 6f 64 65  Name.GetHashCode
16070 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
16080 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 5e 3d         result ^=
16090 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
160a0 2e 56 61 6c 75 65 48 61 73 68 43 6f 64 65 28 76  .ValueHashCode(v
160b0 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  alue);....      
160c0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
160d0 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20   result;..      
160e0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
160f0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
16100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
16140 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
16150 20 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e 67   override string
16160 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20   ToString()..   
16170 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
16180 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
16190 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a  kDisposed();....
161a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
161b0 53 74 72 69 6e 67 42 75 69 6c 64 65 72 20 62 75  StringBuilder bu
161c0 69 6c 64 65 72 20 3d 20 6e 65 77 20 53 74 72 69  ilder = new Stri
161d0 6e 67 42 75 69 6c 64 65 72 28 29 3b 0d 0a 0d 0a  ngBuilder();....
161e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
161f0 62 75 69 6c 64 65 72 2e 41 70 70 65 6e 64 28 46  builder.Append(F
16200 6f 72 44 69 73 70 6c 61 79 28 6d 65 74 68 6f 64  orDisplay(method
16210 4e 61 6d 65 29 29 3b 0d 0a 20 20 20 20 20 20 20  Name));..       
16220 20 20 20 20 20 20 20 20 20 62 75 69 6c 64 65 72           builder
16230 2e 41 70 70 65 6e 64 28 46 69 65 6c 64 44 65 6c  .Append(FieldDel
16240 69 6d 69 74 65 72 29 3b 0d 0a 20 20 20 20 20 20  imiter);..      
16250 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64 65            builde
16260 72 2e 41 70 70 65 6e 64 28 46 6f 72 44 69 73 70  r.Append(ForDisp
16270 6c 61 79 28 6b 65 79 29 29 3b 0d 0a 20 20 20 20  lay(key));..    
16280 20 20 20 20 20 20 20 20 20 20 20 20 62 75 69 6c              buil
16290 64 65 72 2e 41 70 70 65 6e 64 28 46 69 65 6c 64  der.Append(Field
162a0 44 65 6c 69 6d 69 74 65 72 29 3b 0d 0a 20 20 20  Delimiter);..   
162b0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75 69               bui
162c0 6c 64 65 72 2e 41 70 70 65 6e 64 28 46 6f 72 44  lder.Append(ForD
162d0 69 73 70 6c 61 79 28 73 75 62 4b 65 79 4e 61 6d  isplay(subKeyNam
162e0 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  e));..          
162f0 20 20 20 20 20 20 62 75 69 6c 64 65 72 2e 41 70        builder.Ap
16300 70 65 6e 64 28 46 69 65 6c 64 44 65 6c 69 6d 69  pend(FieldDelimi
16310 74 65 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ter);..         
16320 20 20 20 20 20 20 20 62 75 69 6c 64 65 72 2e 41         builder.A
16330 70 70 65 6e 64 28 46 6f 72 44 69 73 70 6c 61 79  ppend(ForDisplay
16340 28 76 61 6c 75 65 4e 61 6d 65 29 29 3b 0d 0a 20  (valueName));.. 
16350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
16360 75 69 6c 64 65 72 2e 41 70 70 65 6e 64 28 46 69  uilder.Append(Fi
16370 65 6c 64 44 65 6c 69 6d 69 74 65 72 29 3b 0d 0a  eldDelimiter);..
16380 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16390 20 20 62 75 69 6c 64 65 72 2e 41 70 70 65 6e 64    builder.Append
163a0 28 46 6f 72 44 69 73 70 6c 61 79 28 4d 6f 63 6b  (ForDisplay(Mock
163b0 52 65 67 69 73 74 72 79 4b 65 79 2e 56 61 6c 75  RegistryKey.Valu
163c0 65 54 6f 53 74 72 69 6e 67 28 0d 0a 20 20 20 20  eToString(..    
163d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
163e0 76 61 6c 75 65 2c 20 4c 69 73 74 45 6c 65 6d 65  value, ListEleme
163f0 6e 74 44 65 6c 69 6d 69 74 65 72 2c 20 44 69 73  ntDelimiter, Dis
16400 70 6c 61 79 4e 75 6c 6c 29 29 29 3b 0d 0a 0d 0a  playNull)));....
16410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16420 72 65 74 75 72 6e 20 62 75 69 6c 64 65 72 2e 54  return builder.T
16430 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20  oString();..    
16440 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
16450 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
16460 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
16470 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
16480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
164b0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
164c0 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73      #region IDis
164d0 70 6f 73 61 62 6c 65 20 22 50 61 74 74 65 72 6e  posable "Pattern
164e0 22 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20  " Members..     
164f0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62         private b
16500 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a 20  ool disposed;.. 
16510 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
16520 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44 69 73  te void CheckDis
16530 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72 6f 77  posed() /* throw
16540 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
16550 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
16560 20 20 20 20 69 66 20 28 21 64 69 73 70 6f 73 65      if (!dispose
16570 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d)..            
16580 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
16590 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
165a0 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a     throw new Obj
165b0 65 63 74 44 69 73 70 6f 73 65 64 45 78 63 65 70  ectDisposedExcep
165c0 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  tion(..         
165d0 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f             typeo
165e0 66 28 52 65 67 69 73 74 72 79 4f 70 65 72 61 74  f(RegistryOperat
165f0 69 6f 6e 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20  ion).Name);..   
16600 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
16610 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
16620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
16660 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
16670 76 61 74 65 20 2f 2a 20 70 72 6f 74 65 63 74 65  vate /* protecte
16680 64 20 76 69 72 74 75 61 6c 20 2a 2f 20 76 6f 69  d virtual */ voi
16690 64 20 44 69 73 70 6f 73 65 28 0d 0a 20 20 20 20  d Dispose(..    
166a0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
166b0 20 64 69 73 70 6f 73 69 6e 67 0d 0a 20 20 20 20   disposing..    
166c0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
166d0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
166e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
166f0 20 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20   (!disposed)..  
16700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
16710 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16720 20 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 69       if (disposi
16730 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng)..           
16740 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
16750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16760 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
16770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16780 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
16790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
167a0 20 20 2f 2f 20 64 69 73 70 6f 73 65 20 6d 61 6e    // dispose man
167b0 61 67 65 64 20 72 65 73 6f 75 72 63 65 73 20 68  aged resources h
167c0 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20  ere.....        
167d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
167e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
167f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16800 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
16810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16820 69 66 20 28 6b 65 79 20 21 3d 20 6e 75 6c 6c 29  if (key != null)
16830 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16840 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
16850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16860 20 20 20 20 20 20 20 20 20 6b 65 79 2e 43 6c 6f           key.Clo
16870 73 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  se();..         
16880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16890 20 20 20 6b 65 79 20 3d 20 6e 75 6c 6c 3b 0d 0a     key = null;..
168a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
168b0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
168c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
168d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
168e0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
168f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
16910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16920 20 20 20 20 2f 2f 20 72 65 6c 65 61 73 65 20 75      // release u
16930 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63  nmanaged resourc
16940 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20  es here.....    
16950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16980 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
16990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
169a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
169b0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54        // NOTE: T
169c0 68 69 73 20 6f 62 6a 65 63 74 20 69 73 20 6e 6f  his object is no
169d0 77 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20  w disposed...   
169e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
169f0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
16a00 20 20 20 20 20 20 20 20 20 64 69 73 70 6f 73 65           dispose
16a10 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  d = true;..     
16a20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
16a30 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
16a40 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
16a50 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
16a60 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
16a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16aa0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
16ab0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44        #region ID
16ac0 69 73 70 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72  isposable Member
16ad0 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  s..            p
16ae0 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f  ublic void Dispo
16af0 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  se()..          
16b00 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
16b10 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75       Dispose(tru
16b20 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
16b30 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73       GC.Suppress
16b40 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d  Finalize(this);.
16b50 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
16b60 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
16b70 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
16b80 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
16b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
16bd0 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
16be0 20 44 65 73 74 72 75 63 74 6f 72 0d 0a 20 20 20   Destructor..   
16bf0 20 20 20 20 20 20 20 20 20 7e 52 65 67 69 73 74           ~Regist
16c00 72 79 4f 70 65 72 61 74 69 6f 6e 28 29 0d 0a 20  ryOperation().. 
16c10 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
16c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 69                Di
16c30 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20  spose(false);.. 
16c40 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
16c50 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
16c60 67 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d  gion..        }.
16c70 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
16c80 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
16c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16cd0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
16ce0 20 20 23 72 65 67 69 6f 6e 20 53 74 72 69 6e 67    #region String
16cf0 4c 69 73 74 20 43 6c 61 73 73 0d 0a 20 20 20 20  List Class..    
16d00 20 20 20 20 70 72 69 76 61 74 65 20 73 65 61 6c      private seal
16d10 65 64 20 63 6c 61 73 73 20 53 74 72 69 6e 67 4c  ed class StringL
16d20 69 73 74 20 3a 20 4c 69 73 74 3c 73 74 72 69 6e  ist : List<strin
16d30 67 3e 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  g>..        {.. 
16d40 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
16d50 63 20 53 74 72 69 6e 67 4c 69 73 74 28 29 0d 0a  c StringList()..
16d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16d70 3a 20 62 61 73 65 28 29 0d 0a 20 20 20 20 20 20  : base()..      
16d80 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
16d90 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
16da0 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
16db0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
16dc0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
16dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
16e10 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
16e20 53 74 72 69 6e 67 4c 69 73 74 28 49 45 6e 75 6d  StringList(IEnum
16e30 65 72 61 62 6c 65 3c 73 74 72 69 6e 67 3e 20 63  erable<string> c
16e40 6f 6c 6c 65 63 74 69 6f 6e 29 0d 0a 20 20 20 20  ollection)..    
16e50 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62 61              : ba
16e60 73 65 28 63 6f 6c 6c 65 63 74 69 6f 6e 29 0d 0a  se(collection)..
16e70 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
16e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
16e90 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
16ea0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
16eb0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
16ec0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
16ed0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
16ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
16f20 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
16f30 6e 20 53 74 72 69 6e 67 44 69 63 74 69 6f 6e 61  n StringDictiona
16f40 72 79 20 43 6c 61 73 73 0d 0a 20 20 20 20 20 20  ry Class..      
16f50 20 20 70 72 69 76 61 74 65 20 73 65 61 6c 65 64    private sealed
16f60 20 63 6c 61 73 73 20 53 74 72 69 6e 67 44 69 63   class StringDic
16f70 74 69 6f 6e 61 72 79 20 3a 20 44 69 63 74 69 6f  tionary : Dictio
16f80 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 73 74 72  nary<string, str
16f90 69 6e 67 3e 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ing>..        {.
16fa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
16fb0 6c 69 63 20 53 74 72 69 6e 67 44 69 63 74 69 6f  lic StringDictio
16fc0 6e 61 72 79 28 29 0d 0a 20 20 20 20 20 20 20 20  nary()..        
16fd0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
16fe0 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
16ff0 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
17000 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
17010 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
17020 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
17030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17070 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
17080 20 20 23 72 65 67 69 6f 6e 20 56 65 72 73 69 6f    #region Versio
17090 6e 4c 69 73 74 20 43 6c 61 73 73 0d 0a 20 20 20  nList Class..   
170a0 20 20 20 20 20 70 72 69 76 61 74 65 20 73 65 61       private sea
170b0 6c 65 64 20 63 6c 61 73 73 20 56 65 72 73 69 6f  led class Versio
170c0 6e 4c 69 73 74 20 3a 20 4c 69 73 74 3c 56 65 72  nList : List<Ver
170d0 73 69 6f 6e 3e 0d 0a 20 20 20 20 20 20 20 20 7b  sion>..        {
170e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
170f0 62 6c 69 63 20 56 65 72 73 69 6f 6e 4c 69 73 74  blic VersionList
17100 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ()..            
17110 20 20 20 20 3a 20 62 61 73 65 28 29 0d 0a 20 20      : base()..  
17120 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
17130 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
17140 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
17150 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
17160 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
17170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
171b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
171c0 6c 69 63 20 56 65 72 73 69 6f 6e 4c 69 73 74 28  lic VersionList(
171d0 49 45 6e 75 6d 65 72 61 62 6c 65 3c 56 65 72 73  IEnumerable<Vers
171e0 69 6f 6e 3e 20 63 6f 6c 6c 65 63 74 69 6f 6e 29  ion> collection)
171f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17200 20 20 3a 20 62 61 73 65 28 63 6f 6c 6c 65 63 74    : base(collect
17210 69 6f 6e 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ion)..          
17220 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
17230 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
17240 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
17250 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
17260 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
17270 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
17280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
172a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
172b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
172c0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
172d0 23 72 65 67 69 6f 6e 20 56 65 72 73 69 6f 6e 4d  #region VersionM
172e0 61 70 20 43 6c 61 73 73 0d 0a 20 20 20 20 20 20  ap Class..      
172f0 20 20 70 72 69 76 61 74 65 20 73 65 61 6c 65 64    private sealed
17300 20 63 6c 61 73 73 20 56 65 72 73 69 6f 6e 4d 61   class VersionMa
17310 70 20 3a 20 44 69 63 74 69 6f 6e 61 72 79 3c 73  p : Dictionary<s
17320 74 72 69 6e 67 2c 20 56 65 72 73 69 6f 6e 4c 69  tring, VersionLi
17330 73 74 3e 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  st>..        {..
17340 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
17350 69 63 20 56 65 72 73 69 6f 6e 4d 61 70 28 29 0d  ic VersionMap().
17360 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
17370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17380 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
17390 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
173a0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
173b0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
173c0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
173d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
173e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
173f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
17410 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
17420 6f 6e 20 50 61 63 6b 61 67 65 20 43 6c 61 73 73  on Package Class
17430 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
17440 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  al sealed class 
17450 50 61 63 6b 61 67 65 0d 0a 20 20 20 20 20 20 20  Package..       
17460 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
17470 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 43  #region Public C
17480 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20  onstructors..   
17490 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
174a0 50 61 63 6b 61 67 65 28 29 0d 0a 20 20 20 20 20  Package()..     
174b0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
174c0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
174d0 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
174e0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
174f0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
17500 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
17510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17550 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
17560 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
17570 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20   Properties..   
17580 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
17590 20 73 74 72 69 6e 67 20 70 72 6f 76 69 64 65 72   string provider
175a0 49 6e 76 61 72 69 61 6e 74 4e 61 6d 65 3b 0d 0a  InvariantName;..
175b0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
175c0 69 63 20 73 74 72 69 6e 67 20 50 72 6f 76 69 64  ic string Provid
175d0 65 72 49 6e 76 61 72 69 61 6e 74 4e 61 6d 65 0d  erInvariantName.
175e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
175f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17600 67 65 74 20 7b 20 72 65 74 75 72 6e 20 70 72 6f  get { return pro
17610 76 69 64 65 72 49 6e 76 61 72 69 61 6e 74 4e 61  viderInvariantNa
17620 6d 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  me; }..         
17630 20 20 20 20 20 20 20 73 65 74 20 7b 20 70 72 6f         set { pro
17640 76 69 64 65 72 49 6e 76 61 72 69 61 6e 74 4e 61  viderInvariantNa
17650 6d 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20  me = value; }.. 
17660 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
17670 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
17680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
176a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
176b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
176c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
176d0 72 69 76 61 74 65 20 73 74 72 69 6e 67 20 66 61  rivate string fa
176e0 63 74 6f 72 79 54 79 70 65 4e 61 6d 65 3b 0d 0a  ctoryTypeName;..
176f0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
17700 69 63 20 73 74 72 69 6e 67 20 46 61 63 74 6f 72  ic string Factor
17710 79 54 79 70 65 4e 61 6d 65 0d 0a 20 20 20 20 20  yTypeName..     
17720 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
17730 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
17740 72 65 74 75 72 6e 20 66 61 63 74 6f 72 79 54 79  return factoryTy
17750 70 65 4e 61 6d 65 3b 20 7d 0d 0a 20 20 20 20 20  peName; }..     
17760 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
17770 20 66 61 63 74 6f 72 79 54 79 70 65 4e 61 6d 65   factoryTypeName
17780 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20   = value; }..   
17790 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
177a0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
177b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
177f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
17800 76 61 74 65 20 41 73 73 65 6d 62 6c 79 4e 61 6d  vate AssemblyNam
17810 65 20 70 72 6f 76 69 64 65 72 41 73 73 65 6d 62  e providerAssemb
17820 6c 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  lyName;..       
17830 20 20 20 20 20 70 75 62 6c 69 63 20 41 73 73 65       public Asse
17840 6d 62 6c 79 4e 61 6d 65 20 50 72 6f 76 69 64 65  mblyName Provide
17850 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 0d 0a 20  rAssemblyName.. 
17860 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
17870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
17880 74 20 7b 20 72 65 74 75 72 6e 20 70 72 6f 76 69  t { return provi
17890 64 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 3b  derAssemblyName;
178a0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
178b0 20 20 20 20 73 65 74 20 7b 20 70 72 6f 76 69 64      set { provid
178c0 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d  erAssemblyName =
178d0 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20   value; }..     
178e0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
178f0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
17900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
17940 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
17950 74 65 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20  te AssemblyName 
17960 64 65 73 69 67 6e 65 72 41 73 73 65 6d 62 6c 79  designerAssembly
17970 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
17980 20 20 20 70 75 62 6c 69 63 20 41 73 73 65 6d 62     public Assemb
17990 6c 79 4e 61 6d 65 20 44 65 73 69 67 6e 65 72 41  lyName DesignerA
179a0 73 73 65 6d 62 6c 79 4e 61 6d 65 0d 0a 20 20 20  ssemblyName..   
179b0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
179c0 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
179d0 7b 20 72 65 74 75 72 6e 20 64 65 73 69 67 6e 65  { return designe
179e0 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 3b 20 7d  rAssemblyName; }
179f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17a00 20 20 73 65 74 20 7b 20 64 65 73 69 67 6e 65 72    set { designer
17a10 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20 76  AssemblyName = v
17a20 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  alue; }..       
17a30 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
17a40 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
17a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
17a90 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
17aa0 20 62 6f 6f 6c 20 67 6c 6f 62 61 6c 41 73 73 65   bool globalAsse
17ab0 6d 62 6c 79 43 61 63 68 65 3b 0d 0a 20 20 20 20  mblyCache;..    
17ac0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
17ad0 6f 6f 6c 20 47 6c 6f 62 61 6c 41 73 73 65 6d 62  ool GlobalAssemb
17ae0 6c 79 43 61 63 68 65 0d 0a 20 20 20 20 20 20 20  lyCache..       
17af0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
17b00 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
17b10 74 75 72 6e 20 67 6c 6f 62 61 6c 41 73 73 65 6d  turn globalAssem
17b20 62 6c 79 43 61 63 68 65 3b 20 7d 0d 0a 20 20 20  blyCache; }..   
17b30 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
17b40 20 7b 20 67 6c 6f 62 61 6c 41 73 73 65 6d 62 6c   { globalAssembl
17b50 79 43 61 63 68 65 20 3d 20 76 61 6c 75 65 3b 20  yCache = value; 
17b60 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
17b70 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
17b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17bc0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
17bd0 20 20 20 70 72 69 76 61 74 65 20 47 75 69 64 20     private Guid 
17be0 70 61 63 6b 61 67 65 49 64 3b 0d 0a 20 20 20 20  packageId;..    
17bf0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 47          public G
17c00 75 69 64 20 50 61 63 6b 61 67 65 49 64 0d 0a 20  uid PackageId.. 
17c10 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
17c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
17c30 74 20 7b 20 72 65 74 75 72 6e 20 70 61 63 6b 61  t { return packa
17c40 67 65 49 64 3b 20 7d 0d 0a 20 20 20 20 20 20 20  geId; }..       
17c50 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 70           set { p
17c60 61 63 6b 61 67 65 49 64 20 3d 20 76 61 6c 75 65  ackageId = value
17c70 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
17c80 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
17c90 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
17ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17cd0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
17ce0 20 20 20 20 20 70 72 69 76 61 74 65 20 47 75 69       private Gui
17cf0 64 20 73 65 72 76 69 63 65 49 64 3b 0d 0a 20 20  d serviceId;..  
17d00 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
17d10 20 47 75 69 64 20 53 65 72 76 69 63 65 49 64 0d   Guid ServiceId.
17d20 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
17d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17d40 67 65 74 20 7b 20 72 65 74 75 72 6e 20 73 65 72  get { return ser
17d50 76 69 63 65 49 64 3b 20 7d 0d 0a 20 20 20 20 20  viceId; }..     
17d60 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
17d70 20 73 65 72 76 69 63 65 49 64 20 3d 20 76 61 6c   serviceId = val
17d80 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  ue; }..         
17d90 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
17da0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
17db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17de0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
17df0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 47         private G
17e00 75 69 64 20 64 61 74 61 53 6f 75 72 63 65 49 64  uid dataSourceId
17e10 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
17e20 75 62 6c 69 63 20 47 75 69 64 20 44 61 74 61 53  ublic Guid DataS
17e30 6f 75 72 63 65 49 64 0d 0a 20 20 20 20 20 20 20  ourceId..       
17e40 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
17e50 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
17e60 74 75 72 6e 20 64 61 74 61 53 6f 75 72 63 65 49  turn dataSourceI
17e70 64 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  d; }..          
17e80 20 20 20 20 20 20 73 65 74 20 7b 20 64 61 74 61        set { data
17e90 53 6f 75 72 63 65 49 64 20 3d 20 76 61 6c 75 65  SourceId = value
17ea0 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
17eb0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
17ec0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
17ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f00 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
17f10 20 20 20 20 20 70 72 69 76 61 74 65 20 47 75 69       private Gui
17f20 64 20 64 61 74 61 50 72 6f 76 69 64 65 72 49 64  d dataProviderId
17f30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
17f40 75 62 6c 69 63 20 47 75 69 64 20 44 61 74 61 50  ublic Guid DataP
17f50 72 6f 76 69 64 65 72 49 64 0d 0a 20 20 20 20 20  roviderId..     
17f60 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
17f70 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
17f80 72 65 74 75 72 6e 20 64 61 74 61 50 72 6f 76 69  return dataProvi
17f90 64 65 72 49 64 3b 20 7d 0d 0a 20 20 20 20 20 20  derId; }..      
17fa0 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
17fb0 64 61 74 61 50 72 6f 76 69 64 65 72 49 64 20 3d  dataProviderId =
17fc0 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20   value; }..     
17fd0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
17fe0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
17ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
18030 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
18040 74 65 20 47 75 69 64 20 61 64 6f 4e 65 74 54 65  te Guid adoNetTe
18050 63 68 6e 6f 6c 6f 67 79 49 64 3b 0d 0a 20 20 20  chnologyId;..   
18060 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
18070 47 75 69 64 20 41 64 6f 4e 65 74 54 65 63 68 6e  Guid AdoNetTechn
18080 6f 6c 6f 67 79 49 64 0d 0a 20 20 20 20 20 20 20  ologyId..       
18090 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
180a0 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
180b0 74 75 72 6e 20 61 64 6f 4e 65 74 54 65 63 68 6e  turn adoNetTechn
180c0 6f 6c 6f 67 79 49 64 3b 20 7d 0d 0a 20 20 20 20  ologyId; }..    
180d0 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
180e0 7b 20 61 64 6f 4e 65 74 54 65 63 68 6e 6f 6c 6f  { adoNetTechnolo
180f0 67 79 49 64 20 3d 20 76 61 6c 75 65 3b 20 7d 0d  gyId = value; }.
18100 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
18110 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
18120 72 65 67 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20  region..        
18130 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
18140 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
18150 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
18160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18190 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
181a0 20 20 20 20 23 72 65 67 69 6f 6e 20 43 6f 6e 66      #region Conf
181b0 69 67 75 72 61 74 69 6f 6e 20 43 6c 61 73 73 0d  iguration Class.
181c0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
181d0 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 43 6f   sealed class Co
181e0 6e 66 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20 20  nfiguration..   
181f0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
18200 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
18210 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20  ate Constants.. 
18220 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
18230 74 65 20 63 6f 6e 73 74 20 63 68 61 72 20 53 77  te const char Sw
18240 69 74 63 68 20 3d 20 27 2d 27 3b 0d 0a 20 20 20  itch = '-';..   
18250 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
18260 20 63 6f 6e 73 74 20 63 68 61 72 20 41 6c 74 53   const char AltS
18270 77 69 74 63 68 20 3d 20 27 2f 27 3b 0d 0a 0d 0a  witch = '/';....
18280 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
18290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
182d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
182e0 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65  rivate static re
182f0 61 64 6f 6e 6c 79 20 63 68 61 72 5b 5d 20 53 77  adonly char[] Sw
18300 69 74 63 68 43 68 61 72 73 20 3d 20 7b 0d 0a 20  itchChars = {.. 
18310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
18320 77 69 74 63 68 2c 20 41 6c 74 53 77 69 74 63 68  witch, AltSwitch
18330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 3b  ..            };
18340 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
18350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18390 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
183a0 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
183b0 20 73 74 72 69 6e 67 20 49 6e 76 61 72 69 61 6e   string Invarian
183c0 74 4e 61 6d 65 20 3d 20 22 53 79 73 74 65 6d 2e  tName = "System.
183d0 44 61 74 61 2e 53 51 4c 69 74 65 22 3b 0d 0a 20  Data.SQLite";.. 
183e0 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
183f0 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  te const string 
18400 45 66 36 49 6e 76 61 72 69 61 6e 74 4e 61 6d 65  Ef6InvariantName
18410 20 3d 20 22 53 79 73 74 65 6d 2e 44 61 74 61 2e   = "System.Data.
18420 53 51 4c 69 74 65 2e 45 46 36 22 3b 0d 0a 0d 0a  SQLite.EF6";....
18430 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
18440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
18480 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
18490 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72  rivate const str
184a0 69 6e 67 20 46 61 63 74 6f 72 79 54 79 70 65 4e  ing FactoryTypeN
184b0 61 6d 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ame =..         
184c0 20 20 20 20 20 20 20 22 53 79 73 74 65 6d 2e 44         "System.D
184d0 61 74 61 2e 53 51 4c 69 74 65 2e 53 51 4c 69 74  ata.SQLite.SQLit
184e0 65 46 61 63 74 6f 72 79 22 3b 0d 0a 0d 0a 20 20  eFactory";....  
184f0 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
18500 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 45  e const string E
18510 66 36 46 61 63 74 6f 72 79 54 79 70 65 4e 61 6d  f6FactoryTypeNam
18520 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e =..           
18530 20 20 20 20 20 22 53 79 73 74 65 6d 2e 44 61 74       "System.Dat
18540 61 2e 53 51 4c 69 74 65 2e 45 46 36 2e 53 51 4c  a.SQLite.EF6.SQL
18550 69 74 65 50 72 6f 76 69 64 65 72 46 61 63 74 6f  iteProviderFacto
18560 72 79 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ry";..          
18570 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
18580 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
18590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
185d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
185e0 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 53  region Private S
185f0 74 61 74 69 63 20 44 61 74 61 0d 0a 20 20 20 20  tatic Data..    
18600 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
18610 73 74 61 74 69 63 20 41 73 73 65 6d 62 6c 79 20  static Assembly 
18620 73 79 73 74 65 6d 45 66 36 41 73 73 65 6d 62 6c  systemEf6Assembl
18630 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y;..            
18640 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
18650 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
18660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
186a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
186b0 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74  gion Private Dat
186c0 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  a..            p
186d0 72 69 76 61 74 65 20 41 73 73 65 6d 62 6c 79 4e  rivate AssemblyN
186e0 61 6d 65 20 63 6f 72 65 41 73 73 65 6d 62 6c 79  ame coreAssembly
186f0 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
18700 20 20 20 70 72 69 76 61 74 65 20 41 73 73 65 6d     private Assem
18710 62 6c 79 4e 61 6d 65 20 6c 69 6e 71 41 73 73 65  blyName linqAsse
18720 6d 62 6c 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  mblyName;..     
18730 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 41         private A
18740 73 73 65 6d 62 6c 79 4e 61 6d 65 20 65 66 36 41  ssemblyName ef6A
18750 73 73 65 6d 62 6c 79 4e 61 6d 65 3b 0d 0a 20 20  ssemblyName;..  
18760 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
18770 65 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 64  e AssemblyName d
18780 65 73 69 67 6e 65 72 41 73 73 65 6d 62 6c 79 4e  esignerAssemblyN
18790 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
187a0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
187b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
187c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
18800 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
18810 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43  region Private C
18820 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20  onstructors..   
18830 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
18840 20 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 28 0d   Configuration(.
18850 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18860 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62   Assembly assemb
18870 6c 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ly,..           
18880 20 20 20 20 20 73 74 72 69 6e 67 20 6c 6f 67 46       string logF
18890 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  ileName,..      
188a0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
188b0 20 72 65 67 69 73 74 72 79 4c 6f 67 46 69 6c 65   registryLogFile
188c0 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  Name,..         
188d0 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69         string di
188e0 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20  rectory,..      
188f0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
18900 20 63 6f 72 65 46 69 6c 65 4e 61 6d 65 2c 0d 0a   coreFileName,..
18910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18920 73 74 72 69 6e 67 20 6c 69 6e 71 46 69 6c 65 4e  string linqFileN
18930 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
18940 20 20 20 20 20 20 73 74 72 69 6e 67 20 65 66 36        string ef6
18950 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20  FileName,..     
18960 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
18970 67 20 64 65 73 69 67 6e 65 72 46 69 6c 65 4e 61  g designerFileNa
18980 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
18990 20 20 20 20 20 73 74 72 69 6e 67 20 72 65 67 69       string regi
189a0 73 74 72 79 56 65 72 73 69 6f 6e 2c 0d 0a 20 20  stryVersion,..  
189b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
189c0 72 69 6e 67 20 63 6f 6e 66 69 67 56 65 72 73 69  ring configVersi
189d0 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on,..           
189e0 20 20 20 20 20 73 74 72 69 6e 67 20 76 73 56 65       string vsVe
189f0 72 73 69 6f 6e 53 75 66 66 69 78 2c 0d 0a 20 20  rsionSuffix,..  
18a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
18a10 72 69 6e 67 20 64 65 62 75 67 46 6f 72 6d 61 74  ring debugFormat
18a20 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
18a30 20 20 20 73 74 72 69 6e 67 20 74 72 61 63 65 46     string traceF
18a40 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
18a50 20 20 20 20 20 20 20 20 49 6e 73 74 61 6c 6c 46          InstallF
18a60 6c 61 67 73 20 69 6e 73 74 61 6c 6c 46 6c 61 67  lags installFlag
18a70 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s,..            
18a80 20 20 20 20 50 72 6f 76 69 64 65 72 46 6c 61 67      ProviderFlag
18a90 73 20 70 72 6f 76 69 64 65 72 46 6c 61 67 73 2c  s providerFlags,
18aa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18ab0 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 20    TracePriority 
18ac0 64 65 62 75 67 50 72 69 6f 72 69 74 79 2c 0d 0a  debugPriority,..
18ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18ae0 54 72 61 63 65 50 72 69 6f 72 69 74 79 20 74 72  TracePriority tr
18af0 61 63 65 50 72 69 6f 72 69 74 79 2c 0d 0a 20 20  acePriority,..  
18b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
18b10 6f 6c 20 70 65 72 55 73 65 72 2c 0d 0a 20 20 20  ol perUser,..   
18b20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
18b30 6c 20 69 6e 73 74 61 6c 6c 2c 0d 0a 20 20 20 20  l install,..    
18b40 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
18b50 20 77 6f 77 36 34 2c 0d 0a 20 20 20 20 20 20 20   wow64,..       
18b60 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f           bool no
18b70 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 2c 0d  RuntimeVersion,.
18b80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18b90 20 62 6f 6f 6c 20 6e 6f 44 65 73 6b 74 6f 70 2c   bool noDesktop,
18ba0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18bb0 20 20 62 6f 6f 6c 20 6e 6f 43 6f 6d 70 61 63 74    bool noCompact
18bc0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
18bd0 20 20 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 32     bool noNetFx2
18be0 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0,..            
18bf0 20 20 20 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78      bool noNetFx
18c00 33 35 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  35,..           
18c10 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46       bool noNetF
18c20 78 34 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  x40,..          
18c30 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 4e 65 74        bool noNet
18c40 46 78 34 35 2c 0d 0a 20 20 20 20 20 20 20 20 20  Fx45,..         
18c50 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 4e 65         bool noNe
18c60 74 46 78 34 35 31 2c 0d 0a 20 20 20 20 20 20 20  tFx451,..       
18c70 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f           bool no
18c80 4e 65 74 46 78 34 35 32 2c 0d 0a 20 20 20 20 20  NetFx452,..     
18c90 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
18ca0 6e 6f 4e 65 74 46 78 34 36 2c 0d 0a 20 20 20 20  noNetFx46,..    
18cb0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
18cc0 20 6e 6f 4e 65 74 46 78 34 36 31 2c 0d 0a 20 20   noNetFx461,..  
18cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
18ce0 6f 6c 20 6e 6f 4e 65 74 46 78 34 36 32 2c 0d 0a  ol noNetFx462,..
18cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18d00 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 37 2c 0d  bool noNetFx47,.
18d10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18d20 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 37 31   bool noNetFx471
18d30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
18d40 20 20 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 30 35     bool noVs2005
18d50 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
18d60 20 20 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 30 38     bool noVs2008
18d70 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
18d80 20 20 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 31 30     bool noVs2010
18d90 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
18da0 20 20 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 31 32     bool noVs2012
18db0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
18dc0 20 20 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 31 33     bool noVs2013
18dd0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
18de0 20 20 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 31 35     bool noVs2015
18df0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
18e00 20 20 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 31 37     bool noVs2017
18e10 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
18e20 20 20 20 62 6f 6f 6c 20 6e 6f 54 72 61 63 65 2c     bool noTrace,
18e30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18e40 20 20 62 6f 6f 6c 20 6e 6f 43 6f 6e 73 6f 6c 65    bool noConsole
18e50 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
18e60 20 20 20 62 6f 6f 6c 20 6e 6f 4c 6f 67 2c 0d 0a     bool noLog,..
18e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18e80 62 6f 6f 6c 20 74 68 72 6f 77 4f 6e 4d 69 73 73  bool throwOnMiss
18e90 69 6e 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ing,..          
18ea0 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49        bool whatI
18eb0 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f,..            
18ec0 20 20 20 20 62 6f 6f 6c 20 64 65 62 75 67 2c 0d      bool debug,.
18ed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18ee0 20 62 6f 6f 6c 20 76 65 72 62 6f 73 65 2c 0d 0a   bool verbose,..
18ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18f00 62 6f 6f 6c 20 63 6f 6e 66 69 72 6d 0d 0a 20 20  bool confirm..  
18f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
18f20 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
18f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18f40 74 68 69 73 2e 61 73 73 65 6d 62 6c 79 20 3d 20  this.assembly = 
18f50 61 73 73 65 6d 62 6c 79 3b 0d 0a 20 20 20 20 20  assembly;..     
18f60 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
18f70 6c 6f 67 46 69 6c 65 4e 61 6d 65 20 3d 20 6c 6f  logFileName = lo
18f80 67 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20  gFileName;..    
18f90 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
18fa0 2e 72 65 67 69 73 74 72 79 4c 6f 67 46 69 6c 65  .registryLogFile
18fb0 4e 61 6d 65 20 3d 20 72 65 67 69 73 74 72 79 4c  Name = registryL
18fc0 6f 67 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20  ogFileName;..   
18fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
18fe0 73 2e 64 69 72 65 63 74 6f 72 79 20 3d 20 64 69  s.directory = di
18ff0 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20  rectory;..      
19000 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63            this.c
19010 6f 72 65 46 69 6c 65 4e 61 6d 65 20 3d 20 63 6f  oreFileName = co
19020 72 65 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20  reFileName;..   
19030 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
19040 73 2e 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 20 3d  s.linqFileName =
19050 20 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 3b 0d 0a   linqFileName;..
19060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19070 74 68 69 73 2e 65 66 36 46 69 6c 65 4e 61 6d 65  this.ef6FileName
19080 20 3d 20 65 66 36 46 69 6c 65 4e 61 6d 65 3b 0d   = ef6FileName;.
19090 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
190a0 20 74 68 69 73 2e 64 65 73 69 67 6e 65 72 46 69   this.designerFi
190b0 6c 65 4e 61 6d 65 20 3d 20 64 65 73 69 67 6e 65  leName = designe
190c0 72 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20  rFileName;..    
190d0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
190e0 2e 72 65 67 69 73 74 72 79 56 65 72 73 69 6f 6e  .registryVersion
190f0 20 3d 20 72 65 67 69 73 74 72 79 56 65 72 73 69   = registryVersi
19100 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on;..           
19110 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 66 69 67       this.config
19120 56 65 72 73 69 6f 6e 20 3d 20 63 6f 6e 66 69 67  Version = config
19130 56 65 72 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20  Version;..      
19140 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 76            this.v
19150 73 56 65 72 73 69 6f 6e 53 75 66 66 69 78 20 3d  sVersionSuffix =
19160 20 76 73 56 65 72 73 69 6f 6e 53 75 66 66 69 78   vsVersionSuffix
19170 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
19180 20 20 20 74 68 69 73 2e 64 65 62 75 67 46 6f 72     this.debugFor
19190 6d 61 74 20 3d 20 64 65 62 75 67 46 6f 72 6d 61  mat = debugForma
191a0 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t;..            
191b0 20 20 20 20 74 68 69 73 2e 74 72 61 63 65 46 6f      this.traceFo
191c0 72 6d 61 74 20 3d 20 74 72 61 63 65 46 6f 72 6d  rmat = traceForm
191d0 61 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at;..           
191e0 20 20 20 20 20 74 68 69 73 2e 69 6e 73 74 61 6c       this.instal
191f0 6c 46 6c 61 67 73 20 3d 20 69 6e 73 74 61 6c 6c  lFlags = install
19200 46 6c 61 67 73 3b 0d 0a 20 20 20 20 20 20 20 20  Flags;..        
19210 20 20 20 20 20 20 20 20 74 68 69 73 2e 70 72 6f          this.pro
19220 76 69 64 65 72 46 6c 61 67 73 20 3d 20 70 72 6f  viderFlags = pro
19230 76 69 64 65 72 46 6c 61 67 73 3b 0d 0a 20 20 20  viderFlags;..   
19240 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
19250 73 2e 64 65 62 75 67 50 72 69 6f 72 69 74 79 20  s.debugPriority 
19260 3d 20 64 65 62 75 67 50 72 69 6f 72 69 74 79 3b  = debugPriority;
19270 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19280 20 20 74 68 69 73 2e 74 72 61 63 65 50 72 69 6f    this.tracePrio
19290 72 69 74 79 20 3d 20 74 72 61 63 65 50 72 69 6f  rity = tracePrio
192a0 72 69 74 79 3b 0d 0a 20 20 20 20 20 20 20 20 20  rity;..         
192b0 20 20 20 20 20 20 20 74 68 69 73 2e 70 65 72 55         this.perU
192c0 73 65 72 20 3d 20 70 65 72 55 73 65 72 3b 0d 0a  ser = perUser;..
192d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
192e0 74 68 69 73 2e 69 6e 73 74 61 6c 6c 20 3d 20 69  this.install = i
192f0 6e 73 74 61 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  nstall;..       
19300 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 77 6f           this.wo
19310 77 36 34 20 3d 20 77 6f 77 36 34 3b 0d 0a 20 20  w64 = wow64;..  
19320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
19330 69 73 2e 6e 6f 52 75 6e 74 69 6d 65 56 65 72 73  is.noRuntimeVers
19340 69 6f 6e 20 3d 20 6e 6f 52 75 6e 74 69 6d 65 56  ion = noRuntimeV
19350 65 72 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20  ersion;..       
19360 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 6f           this.no
19370 44 65 73 6b 74 6f 70 20 3d 20 6e 6f 44 65 73 6b  Desktop = noDesk
19380 74 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  top;..          
19390 20 20 20 20 20 20 74 68 69 73 2e 6e 6f 43 6f 6d        this.noCom
193a0 70 61 63 74 20 3d 20 6e 6f 43 6f 6d 70 61 63 74  pact = noCompact
193b0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
193c0 20 20 20 74 68 69 73 2e 6e 6f 4e 65 74 46 78 32     this.noNetFx2
193d0 30 20 3d 20 6e 6f 4e 65 74 46 78 32 30 3b 0d 0a  0 = noNetFx20;..
193e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
193f0 74 68 69 73 2e 6e 6f 4e 65 74 46 78 33 35 20 3d  this.noNetFx35 =
19400 20 6e 6f 4e 65 74 46 78 33 35 3b 0d 0a 20 20 20   noNetFx35;..   
19410 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
19420 73 2e 6e 6f 4e 65 74 46 78 34 30 20 3d 20 6e 6f  s.noNetFx40 = no
19430 4e 65 74 46 78 34 30 3b 0d 0a 20 20 20 20 20 20  NetFx40;..      
19440 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e            this.n
19450 6f 4e 65 74 46 78 34 35 20 3d 20 6e 6f 4e 65 74  oNetFx45 = noNet
19460 46 78 34 35 3b 0d 0a 20 20 20 20 20 20 20 20 20  Fx45;..         
19470 20 20 20 20 20 20 20 74 68 69 73 2e 6e 6f 4e 65         this.noNe
19480 74 46 78 34 35 31 20 3d 20 6e 6f 4e 65 74 46 78  tFx451 = noNetFx
19490 34 35 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  451;..          
194a0 20 20 20 20 20 20 74 68 69 73 2e 6e 6f 4e 65 74        this.noNet
194b0 46 78 34 35 32 20 3d 20 6e 6f 4e 65 74 46 78 34  Fx452 = noNetFx4
194c0 35 32 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  52;..           
194d0 20 20 20 20 20 74 68 69 73 2e 6e 6f 4e 65 74 46       this.noNetF
194e0 78 34 36 20 3d 20 6e 6f 4e 65 74 46 78 34 36 3b  x46 = noNetFx46;
194f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19500 20 20 74 68 69 73 2e 6e 6f 4e 65 74 46 78 34 36    this.noNetFx46
19510 31 20 3d 20 6e 6f 4e 65 74 46 78 34 36 31 3b 0d  1 = noNetFx461;.
19520 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19530 20 74 68 69 73 2e 6e 6f 4e 65 74 46 78 34 36 32   this.noNetFx462
19540 20 3d 20 6e 6f 4e 65 74 46 78 34 36 32 3b 0d 0a   = noNetFx462;..
19550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19560 74 68 69 73 2e 6e 6f 4e 65 74 46 78 34 37 20 3d  this.noNetFx47 =
19570 20 6e 6f 4e 65 74 46 78 34 37 3b 0d 0a 20 20 20   noNetFx47;..   
19580 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
19590 73 2e 6e 6f 4e 65 74 46 78 34 37 31 20 3d 20 6e  s.noNetFx471 = n
195a0 6f 4e 65 74 46 78 34 37 31 3b 0d 0a 20 20 20 20  oNetFx471;..    
195b0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
195c0 2e 6e 6f 56 73 32 30 30 35 20 3d 20 6e 6f 56 73  .noVs2005 = noVs
195d0 32 30 30 35 3b 0d 0a 20 20 20 20 20 20 20 20 20  2005;..         
195e0 20 20 20 20 20 20 20 74 68 69 73 2e 6e 6f 56 73         this.noVs
195f0 32 30 30 38 20 3d 20 6e 6f 56 73 32 30 30 38 3b  2008 = noVs2008;
19600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19610 20 20 74 68 69 73 2e 6e 6f 56 73 32 30 31 30 20    this.noVs2010 
19620 3d 20 6e 6f 56 73 32 30 31 30 3b 0d 0a 20 20 20  = noVs2010;..   
19630 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
19640 73 2e 6e 6f 56 73 32 30 31 32 20 3d 20 6e 6f 56  s.noVs2012 = noV
19650 73 32 30 31 32 3b 0d 0a 20 20 20 20 20 20 20 20  s2012;..        
19660 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 6f 56          this.noV
19670 73 32 30 31 33 20 3d 20 6e 6f 56 73 32 30 31 33  s2013 = noVs2013
19680 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
19690 20 20 20 74 68 69 73 2e 6e 6f 56 73 32 30 31 35     this.noVs2015
196a0 20 3d 20 6e 6f 56 73 32 30 31 35 3b 0d 0a 20 20   = noVs2015;..  
196b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
196c0 69 73 2e 6e 6f 56 73 32 30 31 37 20 3d 20 6e 6f  is.noVs2017 = no
196d0 56 73 32 30 31 37 3b 0d 0a 20 20 20 20 20 20 20  Vs2017;..       
196e0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 6f           this.no
196f0 54 72 61 63 65 20 3d 20 6e 6f 54 72 61 63 65 3b  Trace = noTrace;
19700 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19710 20 20 74 68 69 73 2e 6e 6f 43 6f 6e 73 6f 6c 65    this.noConsole
19720 20 3d 20 6e 6f 43 6f 6e 73 6f 6c 65 3b 0d 0a 20   = noConsole;.. 
19730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
19740 68 69 73 2e 6e 6f 4c 6f 67 20 3d 20 6e 6f 4c 6f  his.noLog = noLo
19750 67 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g;..            
19760 20 20 20 20 74 68 69 73 2e 74 68 72 6f 77 4f 6e      this.throwOn
19770 4d 69 73 73 69 6e 67 20 3d 20 74 68 72 6f 77 4f  Missing = throwO
19780 6e 4d 69 73 73 69 6e 67 3b 0d 0a 20 20 20 20 20  nMissing;..     
19790 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
197a0 77 68 61 74 49 66 20 3d 20 77 68 61 74 49 66 3b  whatIf = whatIf;
197b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
197c0 20 20 74 68 69 73 2e 64 65 62 75 67 20 3d 20 64    this.debug = d
197d0 65 62 75 67 3b 0d 0a 20 20 20 20 20 20 20 20 20  ebug;..         
197e0 20 20 20 20 20 20 20 74 68 69 73 2e 76 65 72 62         this.verb
197f0 6f 73 65 20 3d 20 76 65 72 62 6f 73 65 3b 0d 0a  ose = verbose;..
19800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19810 74 68 69 73 2e 63 6f 6e 66 69 72 6d 20 3d 20 63  this.confirm = c
19820 6f 6e 66 69 72 6d 3b 0d 0a 20 20 20 20 20 20 20  onfirm;..       
19830 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
19840 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
19850 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
19860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198a0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
198b0 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
198c0 20 53 74 61 74 69 63 20 4d 65 74 68 6f 64 73 0d   Static Methods.
198d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
198e0 76 61 74 65 20 73 74 61 74 69 63 20 76 6f 69 64  vate static void
198f0 20 47 65 74 44 65 66 61 75 6c 74 46 69 6c 65 4e   GetDefaultFileN
19900 61 6d 65 73 28 0d 0a 20 20 20 20 20 20 20 20 20  ames(..         
19910 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e         ref strin
19920 67 20 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20  g directory,..  
19930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
19940 66 20 73 74 72 69 6e 67 20 63 6f 72 65 46 69 6c  f string coreFil
19950 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  eName,..        
19960 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69          ref stri
19970 6e 67 20 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 2c  ng linqFileName,
19980 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19990 20 20 72 65 66 20 73 74 72 69 6e 67 20 65 66 36    ref string ef6
199a0 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20  FileName,..     
199b0 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73             ref s
199c0 74 72 69 6e 67 20 64 65 73 69 67 6e 65 72 46 69  tring designerFi
199d0 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  leName..        
199e0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
199f0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
19a00 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68            if (th
19a10 69 73 41 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75  isAssembly == nu
19a20 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
19a30 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
19a40 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
19a50 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20      directory = 
19a60 50 61 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72  Path.GetDirector
19a70 79 4e 61 6d 65 28 74 68 69 73 41 73 73 65 6d 62  yName(thisAssemb
19a80 6c 79 2e 4c 6f 63 61 74 69 6f 6e 29 3b 0d 0a 0d  ly.Location);...
19a90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19aa0 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75   if (String.IsNu
19ab0 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63 74  llOrEmpty(direct
19ac0 6f 72 79 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ory))..         
19ad0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
19ae0 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  n;....          
19af0 20 20 20 20 20 20 63 6f 72 65 46 69 6c 65 4e 61        coreFileNa
19b00 6d 65 20 3d 20 50 61 74 68 2e 43 6f 6d 62 69 6e  me = Path.Combin
19b10 65 28 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20  e(directory,..  
19b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19b30 20 20 49 6e 73 74 61 6c 6c 65 72 2e 43 6f 72 65    Installer.Core
19b40 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  FileName);....  
19b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 69                li
19b60 6e 71 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74  nqFileName = Pat
19b70 68 2e 43 6f 6d 62 69 6e 65 28 64 69 72 65 63 74  h.Combine(direct
19b80 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ory,..          
19b90 20 20 20 20 20 20 20 20 20 20 49 6e 73 74 61 6c            Instal
19ba0 6c 65 72 2e 4c 69 6e 71 46 69 6c 65 4e 61 6d 65  ler.LinqFileName
19bb0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
19bc0 20 20 20 20 20 20 65 66 36 46 69 6c 65 4e 61 6d        ef6FileNam
19bd0 65 20 3d 20 50 61 74 68 2e 43 6f 6d 62 69 6e 65  e = Path.Combine
19be0 28 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20  (directory,..   
19bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19c00 20 49 6e 73 74 61 6c 6c 65 72 2e 45 66 36 46 69   Installer.Ef6Fi
19c10 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
19c20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 73 69              desi
19c30 67 6e 65 72 46 69 6c 65 4e 61 6d 65 20 3d 20 50  gnerFileName = P
19c40 61 74 68 2e 43 6f 6d 62 69 6e 65 28 64 69 72 65  ath.Combine(dire
19c50 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20  ctory,..        
19c60 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 73 74              Inst
19c70 61 6c 6c 65 72 2e 44 65 73 69 67 6e 65 72 46 69  aller.DesignerFi
19c80 6c 65 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20  leName);..      
19c90 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
19ca0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
19cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
19cf0 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
19d00 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 43 68  e static bool Ch
19d10 65 63 6b 4f 70 74 69 6f 6e 28 0d 0a 20 20 20 20  eckOption(..    
19d20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
19d30 73 74 72 69 6e 67 20 61 72 67 0d 0a 20 20 20 20  string arg..    
19d40 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
19d50 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
19d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
19d70 72 69 6e 67 20 72 65 73 75 6c 74 20 3d 20 61 72  ring result = ar
19d80 67 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  g;....          
19d90 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e        if (!Strin
19da0 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
19db0 72 65 73 75 6c 74 29 29 0d 0a 20 20 20 20 20 20  result))..      
19dc0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
19dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19de0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
19df0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
19e00 3a 20 52 65 6d 6f 76 65 20 61 6c 6c 20 6c 65 61  : Remove all lea
19e10 64 69 6e 67 20 73 77 69 74 63 68 20 63 68 61 72  ding switch char
19e20 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s...            
19e30 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
19e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19e50 72 65 73 75 6c 74 20 3d 20 72 65 73 75 6c 74 2e  result = result.
19e60 54 72 69 6d 53 74 61 72 74 28 53 77 69 74 63 68  TrimStart(Switch
19e70 43 68 61 72 73 29 3b 0d 0a 0d 0a 20 20 20 20 20  Chars);....     
19e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
19e90 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
19ea0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
19eb0 48 6f 77 20 6d 61 6e 79 20 63 68 61 72 73 20 77  How many chars w
19ec0 65 72 65 20 72 65 6d 6f 76 65 64 3f 0d 0a 20 20  ere removed?..  
19ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19ee0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
19ef0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 63 6f            int co
19f00 75 6e 74 20 3d 20 61 72 67 2e 4c 65 6e 67 74 68  unt = arg.Length
19f10 20 2d 20 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68   - result.Length
19f20 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
19f30 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
19f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19f50 20 2f 2f 20 4e 4f 54 45 3a 20 57 61 73 20 74 68   // NOTE: Was th
19f60 65 72 65 20 61 74 20 6c 65 61 73 74 20 6f 6e 65  ere at least one
19f70 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ?..             
19f80 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
19f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
19fa0 66 20 28 63 6f 75 6e 74 20 3e 20 30 29 0d 0a 20  f (count > 0).. 
19fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19fc0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
19fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
19fe0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19ff0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
1a000 45 3a 20 4f 6b 2c 20 72 65 70 6c 61 63 65 20 74  E: Ok, replace t
1a010 68 65 69 72 20 6f 72 69 67 69 6e 61 6c 0d 0a 20  heir original.. 
1a020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a030 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
1a040 61 72 67 75 6d 65 6e 74 2e 0d 0a 20 20 20 20 20  argument...     
1a050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a060 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
1a070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61                 a
1a080 72 67 20 3d 20 72 65 73 75 6c 74 3b 0d 0a 0d 0a  rg = result;....
1a090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a0a0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1a0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a0c0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 59 65 73      // NOTE: Yes
1a0d0 2c 20 74 68 69 73 20 69 73 20 61 20 73 77 69 74  , this is a swit
1a0e0 63 68 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ch...           
1a0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1a100 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a110 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1a120 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
1a130 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1a140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1a150 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1a160 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
1a170 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1a180 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
1a190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a1d0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
1a1e0 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
1a1f0 20 62 6f 6f 6c 20 4d 61 74 63 68 4f 70 74 69 6f   bool MatchOptio
1a200 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
1a210 20 20 20 20 73 74 72 69 6e 67 20 61 72 67 2c 0d      string arg,.
1a220 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a230 20 73 74 72 69 6e 67 20 6f 70 74 69 6f 6e 0d 0a   string option..
1a240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a250 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
1a260 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a270 20 20 69 66 20 28 28 61 72 67 20 3d 3d 20 6e 75    if ((arg == nu
1a280 6c 6c 29 20 7c 7c 20 28 6f 70 74 69 6f 6e 20 3d  ll) || (option =
1a290 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20  = null))..      
1a2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1a2b0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
1a2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1a2d0 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 43 6f 6d  eturn String.Com
1a2e0 70 61 72 65 28 61 72 67 2c 20 30 2c 20 6f 70 74  pare(arg, 0, opt
1a2f0 69 6f 6e 2c 20 30 2c 0d 0a 20 20 20 20 20 20 20  ion, 0,..       
1a300 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67               arg
1a310 2e 4c 65 6e 67 74 68 2c 20 53 74 72 69 6e 67 43  .Length, StringC
1a320 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61  omparison.Ordina
1a330 6c 49 67 6e 6f 72 65 43 61 73 65 29 20 3d 3d 20  lIgnoreCase) == 
1a340 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0;..            
1a350 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
1a360 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1a370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a3a0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1a3b0 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
1a3c0 69 63 20 62 6f 6f 6c 3f 20 50 61 72 73 65 42 6f  ic bool? ParseBo
1a3d0 6f 6c 65 61 6e 28 0d 0a 20 20 20 20 20 20 20 20  olean(..        
1a3e0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 74          string t
1a3f0 65 78 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ext..           
1a400 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
1a410 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1a420 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69         if (!Stri
1a430 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
1a440 28 74 65 78 74 29 29 0d 0a 20 20 20 20 20 20 20  (text))..       
1a450 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1a460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a470 62 6f 6f 6c 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20  bool value;.... 
1a480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a490 20 20 20 69 66 20 28 62 6f 6f 6c 2e 54 72 79 50     if (bool.TryP
1a4a0 61 72 73 65 28 74 65 78 74 2c 20 6f 75 74 20 76  arse(text, out v
1a4b0 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alue))..        
1a4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a4d0 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20  return value;.. 
1a4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1a4f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1a500 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
1a510 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1a520 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
1a530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a570 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
1a580 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
1a590 20 6f 62 6a 65 63 74 20 50 61 72 73 65 45 6e 75   object ParseEnu
1a5a0 6d 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m(..            
1a5b0 20 20 20 20 54 79 70 65 20 65 6e 75 6d 54 79 70      Type enumTyp
1a5c0 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
1a5d0 20 20 20 20 73 74 72 69 6e 67 20 74 65 78 74 2c      string text,
1a5e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a5f0 20 20 62 6f 6f 6c 20 6e 6f 43 61 73 65 0d 0a 20    bool noCase.. 
1a600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
1a610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1a620 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a630 20 69 66 20 28 28 65 6e 75 6d 54 79 70 65 20 3d   if ((enumType =
1a640 3d 20 6e 75 6c 6c 29 20 7c 7c 20 21 65 6e 75 6d  = null) || !enum
1a650 54 79 70 65 2e 49 73 45 6e 75 6d 29 0d 0a 20 20  Type.IsEnum)..  
1a660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a670 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
1a680 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a690 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73    if (!String.Is
1a6a0 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 74 65 78 74  NullOrEmpty(text
1a6b0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
1a6c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1a6d0 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
1a6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a6f0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1a700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1a710 65 74 75 72 6e 20 45 6e 75 6d 2e 50 61 72 73 65  eturn Enum.Parse
1a720 28 65 6e 75 6d 54 79 70 65 2c 20 74 65 78 74 2c  (enumType, text,
1a730 20 6e 6f 43 61 73 65 29 3b 0d 0a 20 20 20 20 20   noCase);..     
1a740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1a750 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a760 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
1a770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a780 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1a790 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
1a7a0 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
1a7b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a7c0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1a7d0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1a7e0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
1a7f0 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
1a800 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
1a810 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1a820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a850 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1a860 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
1a870 61 74 69 63 20 62 6f 6f 6c 20 49 73 53 79 73 74  atic bool IsSyst
1a880 65 6d 45 66 36 41 73 73 65 6d 62 6c 79 47 6c 6f  emEf6AssemblyGlo
1a890 62 61 6c 28 29 0d 0a 20 20 20 20 20 20 20 20 20  bal()..         
1a8a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1a8b0 20 20 20 20 20 20 69 66 20 28 73 79 73 74 65 6d        if (system
1a8c0 45 66 36 41 73 73 65 6d 62 6c 79 20 3d 3d 20 6e  Ef6Assembly == n
1a8d0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1a8e0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1a8f0 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
1a900 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1a910 6e 20 73 79 73 74 65 6d 45 66 36 41 73 73 65 6d  n systemEf6Assem
1a920 62 6c 79 2e 47 6c 6f 62 61 6c 41 73 73 65 6d 62  bly.GlobalAssemb
1a930 6c 79 43 61 63 68 65 3b 0d 0a 20 20 20 20 20 20  lyCache;..      
1a940 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1a950 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
1a960 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
1a970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a9b0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
1a9c0 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
1a9d0 20 53 74 61 74 69 63 20 4d 65 74 68 6f 64 73 0d   Static Methods.
1a9e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
1a9f0 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69 64 20  lic static void 
1aa00 42 72 65 61 6b 49 6e 74 6f 44 65 62 75 67 67 65  BreakIntoDebugge
1aa10 72 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r()..           
1aa20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1aa30 20 20 20 20 43 6f 6e 73 6f 6c 65 2e 57 72 69 74      Console.Writ
1aa40 65 4c 69 6e 65 28 0d 0a 20 20 20 20 20 20 20 20  eLine(..        
1aa50 20 20 20 20 20 20 20 20 20 20 20 20 22 41 74 74              "Att
1aa60 61 63 68 20 61 20 64 65 62 75 67 67 65 72 20 74  ach a debugger t
1aa70 6f 20 70 72 6f 63 65 73 73 20 7b 30 7d 20 61 6e  o process {0} an
1aa80 64 20 70 72 65 73 73 20 22 20 2b 0d 0a 20 20 20  d press " +..   
1aa90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1aaa0 20 22 61 6e 79 20 6b 65 79 20 74 6f 20 63 6f 6e   "any key to con
1aab0 74 69 6e 75 65 2e 22 2c 20 28 74 68 69 73 50 72  tinue.", (thisPr
1aac0 6f 63 65 73 73 20 21 3d 20 6e 75 6c 6c 29 20 3f  ocess != null) ?
1aad0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1aae0 20 20 20 20 20 20 74 68 69 73 50 72 6f 63 65 73        thisProces
1aaf0 73 2e 49 64 2e 54 6f 53 74 72 69 6e 67 28 29 20  s.Id.ToString() 
1ab00 3a 20 22 3c 75 6e 6b 6e 6f 77 6e 3e 22 29 3b 0d  : "<unknown>");.
1ab10 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1ab20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
1ab30 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1ab40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
1ab50 6f 6e 73 6f 6c 65 2e 52 65 61 64 4b 65 79 28 74  onsole.ReadKey(t
1ab60 72 75 65 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  rue); /* throw *
1ab70 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1ab80 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1ab90 20 20 20 20 20 20 63 61 74 63 68 20 28 49 6e 76        catch (Inv
1aba0 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63  alidOperationExc
1abb0 65 70 74 69 6f 6e 29 20 2f 2f 20 43 6f 6e 73 6f  eption) // Conso
1abc0 6c 65 2e 52 65 61 64 4b 65 79 0d 0a 20 20 20 20  le.ReadKey..    
1abd0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1abe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1abf0 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
1ac00 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1ac10 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1ac20 20 20 20 20 20 20 20 20 44 65 62 75 67 67 65 72          Debugger
1ac30 2e 42 72 65 61 6b 28 29 3b 0d 0a 20 20 20 20 20  .Break();..     
1ac40 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1ac50 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1ac60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1aca0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
1acb0 63 20 73 74 61 74 69 63 20 43 6f 6e 66 69 67 75  c static Configu
1acc0 72 61 74 69 6f 6e 20 43 72 65 61 74 65 44 65 66  ration CreateDef
1acd0 61 75 6c 74 28 29 0d 0a 20 20 20 20 20 20 20 20  ault()..        
1ace0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1acf0 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69         string di
1ad00 72 65 63 74 6f 72 79 20 3d 20 6e 75 6c 6c 3b 0d  rectory = null;.
1ad10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ad20 20 73 74 72 69 6e 67 20 63 6f 72 65 46 69 6c 65   string coreFile
1ad30 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20  Name = null;..  
1ad40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
1ad50 72 69 6e 67 20 6c 69 6e 71 46 69 6c 65 4e 61 6d  ring linqFileNam
1ad60 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  e = null;..     
1ad70 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
1ad80 67 20 65 66 36 46 69 6c 65 4e 61 6d 65 20 3d 20  g ef6FileName = 
1ad90 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
1ada0 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 65         string de
1adb0 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 20 3d  signerFileName =
1adc0 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
1add0 20 20 20 20 20 20 20 20 20 20 47 65 74 44 65 66            GetDef
1ade0 61 75 6c 74 46 69 6c 65 4e 61 6d 65 73 28 0d 0a  aultFileNames(..
1adf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ae00 20 20 20 20 72 65 66 20 64 69 72 65 63 74 6f 72      ref director
1ae10 79 2c 20 72 65 66 20 63 6f 72 65 46 69 6c 65 4e  y, ref coreFileN
1ae20 61 6d 65 2c 20 72 65 66 20 6c 69 6e 71 46 69 6c  ame, ref linqFil
1ae30 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  eName,..        
1ae40 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
1ae50 65 66 36 46 69 6c 65 4e 61 6d 65 2c 20 72 65 66  ef6FileName, ref
1ae60 20 64 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d   designerFileNam
1ae70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
1ae80 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65         return ne
1ae90 77 20 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 28  w Configuration(
1aea0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1aeb0 20 20 20 20 20 20 74 68 69 73 41 73 73 65 6d 62        thisAssemb
1aec0 6c 79 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20  ly, null, null, 
1aed0 64 69 72 65 63 74 6f 72 79 2c 20 63 6f 72 65 46  directory, coreF
1aee0 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  ileName,..      
1aef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 69                li
1af00 6e 71 46 69 6c 65 4e 61 6d 65 2c 20 65 66 36 46  nqFileName, ef6F
1af10 69 6c 65 4e 61 6d 65 2c 20 64 65 73 69 67 6e 65  ileName, designe
1af20 72 46 69 6c 65 4e 61 6d 65 2c 20 6e 75 6c 6c 2c  rFileName, null,
1af30 20 6e 75 6c 6c 2c 0d 0a 20 20 20 20 20 20 20 20   null,..        
1af40 20 20 20 20 20 20 20 20 20 20 20 20 6e 75 6c 6c              null
1af50 2c 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67  , TraceOps.Debug
1af60 46 6f 72 6d 61 74 2c 20 54 72 61 63 65 4f 70 73  Format, TraceOps
1af70 2e 54 72 61 63 65 46 6f 72 6d 61 74 2c 0d 0a 20  .TraceFormat,.. 
1af80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1af90 20 20 20 49 6e 73 74 61 6c 6c 46 6c 61 67 73 2e     InstallFlags.
1afa0 44 65 66 61 75 6c 74 2c 20 50 72 6f 76 69 64 65  Default, Provide
1afb0 72 46 6c 61 67 73 2e 44 65 66 61 75 6c 74 2c 0d  rFlags.Default,.
1afc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1afd0 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69       TracePriori
1afe0 74 79 2e 44 65 66 61 75 6c 74 2c 20 54 72 61 63  ty.Default, Trac
1aff0 65 50 72 69 6f 72 69 74 79 2e 44 65 66 61 75 6c  ePriority.Defaul
1b000 74 2c 20 66 61 6c 73 65 2c 20 74 72 75 65 2c 0d  t, false, true,.
1b010 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b020 20 20 20 20 20 66 61 6c 73 65 2c 20 66 61 6c 73       false, fals
1b030 65 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c  e, false, false,
1b040 20 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66   false, false, f
1b050 61 6c 73 65 2c 20 66 61 6c 73 65 2c 0d 0a 20 20  alse, false,..  
1b060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b070 20 20 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20    false, false, 
1b080 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66 61  false, false, fa
1b090 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73  lse, false, fals
1b0a0 65 2c 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20  e, false,..     
1b0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
1b0c0 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66 61 6c  alse, false, fal
1b0d0 73 65 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73 65  se, false, false
1b0e0 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20  , false, false, 
1b0f0 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20  false,..        
1b100 20 20 20 20 20 20 20 20 20 20 20 20 66 61 6c 73              fals
1b110 65 2c 20 74 72 75 65 2c 20 74 72 75 65 2c 20 66  e, true, true, f
1b120 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66 61 6c  alse, false, fal
1b130 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  se);..          
1b140 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
1b150 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1b160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b190 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1b1a0 20 20 20 20 20 20 5b 4d 65 74 68 6f 64 49 6d 70        [MethodImp
1b1b0 6c 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70 74 69  l(MethodImplOpti
1b1c0 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d  ons.NoInlining)]
1b1d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
1b1e0 62 6c 69 63 20 73 74 61 74 69 63 20 62 6f 6f 6c  blic static bool
1b1f0 20 46 72 6f 6d 41 72 67 73 28 0d 0a 20 20 20 20   FromArgs(..    
1b200 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
1b210 6e 67 5b 5d 20 61 72 67 73 2c 0d 0a 20 20 20 20  ng[] args,..    
1b220 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
1b230 20 73 74 72 69 63 74 2c 0d 0a 20 20 20 20 20 20   strict,..      
1b240 20 20 20 20 20 20 20 20 20 20 72 65 66 20 43 6f            ref Co
1b250 6e 66 69 67 75 72 61 74 69 6f 6e 20 63 6f 6e 66  nfiguration conf
1b260 69 67 75 72 61 74 69 6f 6e 2c 0d 0a 20 20 20 20  iguration,..    
1b270 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
1b280 73 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a 20 20  string error..  
1b290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
1b2a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1b2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b2c0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
1b2d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1b2e0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1b2f0 61 72 67 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  args == null).. 
1b300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b310 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
1b320 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ue;....         
1b330 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63             if (c
1b340 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 3d 3d 20  onfiguration == 
1b350 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1b360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1b370 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 3d 20 43  onfiguration = C
1b380 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 43 72 65  onfiguration.Cre
1b390 61 74 65 44 65 66 61 75 6c 74 28 29 3b 0d 0a 0d  ateDefault();...
1b3a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b3b0 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 20       int length 
1b3c0 3d 20 61 72 67 73 2e 4c 65 6e 67 74 68 3b 0d 0a  = args.Length;..
1b3d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b3e0 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69        for (int i
1b3f0 6e 64 65 78 20 3d 20 30 3b 20 69 6e 64 65 78 20  ndex = 0; index 
1b400 3c 20 6c 65 6e 67 74 68 3b 20 69 6e 64 65 78 2b  < length; index+
1b410 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  +)..            
1b420 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1b430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b440 20 20 20 73 74 72 69 6e 67 20 61 72 67 20 3d 20     string arg = 
1b450 61 72 67 73 5b 69 6e 64 65 78 5d 3b 0d 0a 0d 0a  args[index];....
1b460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b470 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1b480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b490 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 6b 69      // NOTE: Ski
1b4a0 70 20 61 6e 79 20 61 72 67 75 6d 65 6e 74 20 74  p any argument t
1b4b0 68 61 74 20 69 73 20 6e 75 6c 6c 20 28 3f 29 20  hat is null (?) 
1b4c0 6f 72 20 61 6e 20 65 6d 70 74 79 0d 0a 20 20 20  or an empty..   
1b4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b4e0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 73 74       //       st
1b4f0 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  ring...         
1b500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1b510 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1b520 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53             if (S
1b530 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
1b540 70 74 79 28 61 72 67 29 29 0d 0a 20 20 20 20 20  pty(arg))..     
1b550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b560 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
1b570 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1b580 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
1b590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b5a0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
1b5b0 20 57 65 20 61 72 65 20 67 6f 69 6e 67 20 74 6f   We are going to
1b5c0 20 6d 6f 64 69 66 79 20 74 68 65 20 6f 72 69 67   modify the orig
1b5d0 69 6e 61 6c 20 61 72 67 75 6d 65 6e 74 0d 0a 20  inal argument.. 
1b5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b5f0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
1b600 62 79 20 72 65 6d 6f 76 69 6e 67 20 61 6e 79 20  by removing any 
1b610 6c 65 61 64 69 6e 67 20 6f 70 74 69 6f 6e 20 63  leading option c
1b620 68 61 72 61 63 74 65 72 73 3b 0d 0a 20 20 20 20  haracters;..    
1b630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b640 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
1b650 72 65 66 6f 72 65 2c 20 77 65 20 75 73 65 20 61  refore, we use a
1b660 20 6e 65 77 20 73 74 72 69 6e 67 20 74 6f 20 68   new string to h
1b670 6f 6c 64 20 74 68 65 0d 0a 20 20 20 20 20 20 20  old the..       
1b680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b690 20 2f 2f 20 20 20 20 20 20 20 6d 6f 64 69 66 69   //       modifi
1b6a0 65 64 20 61 72 67 75 6d 65 6e 74 2e 0d 0a 20 20  ed argument...  
1b6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b6c0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
1b6d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b6e0 20 20 73 74 72 69 6e 67 20 6e 65 77 41 72 67 20    string newArg 
1b6f0 3d 20 61 72 67 3b 0d 0a 0d 0a 20 20 20 20 20 20  = arg;....      
1b700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b710 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
1b720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1b730 20 4e 4f 54 45 3a 20 41 6c 6c 20 74 68 65 20 73   NOTE: All the s
1b740 75 70 70 6f 72 74 65 64 20 63 6f 6d 6d 61 6e 64  upported command
1b750 20 6c 69 6e 65 20 6f 70 74 69 6f 6e 73 20 6d 75   line options mu
1b760 73 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  st..            
1b770 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
1b780 20 20 20 20 20 62 65 67 69 6e 20 77 69 74 68 20       begin with 
1b790 61 6e 20 6f 70 74 69 6f 6e 20 63 68 61 72 61 63  an option charac
1b7a0 74 65 72 20 28 65 2e 67 2e 20 61 20 6d 69 6e 75  ter (e.g. a minu
1b7b0 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  s..             
1b7c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
1b7d0 20 20 20 20 6f 72 20 66 6f 72 77 61 72 64 20 73      or forward s
1b7e0 6c 61 73 68 29 3b 20 61 74 74 65 6d 70 74 20 74  lash); attempt t
1b7f0 6f 20 76 61 6c 69 64 61 74 65 20 74 68 61 74 0d  o validate that.
1b800 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b810 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
1b820 20 20 6e 6f 77 2e 20 20 49 66 20 77 65 20 66 61    now.  If we fa
1b830 69 6c 20 69 6e 20 73 74 72 69 63 74 20 6d 6f 64  il in strict mod
1b840 65 2c 20 77 65 20 61 72 65 20 64 6f 6e 65 3b 0d  e, we are done;.
1b850 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b860 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
1b870 20 20 6f 74 68 65 72 77 69 73 65 2c 20 6a 75 73    otherwise, jus
1b880 74 20 73 6b 69 70 20 74 68 69 73 20 61 72 67 75  t skip this argu
1b890 6d 65 6e 74 20 61 6e 64 20 61 64 76 61 6e 63 65  ment and advance
1b8a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b8b0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1b8c0 20 20 20 74 6f 20 74 68 65 20 6e 65 78 74 20 6f     to the next o
1b8d0 6e 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ne...           
1b8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1b8f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b900 20 20 20 20 20 20 20 20 20 69 66 20 28 21 43 68           if (!Ch
1b910 65 63 6b 4f 70 74 69 6f 6e 28 72 65 66 20 6e 65  eckOption(ref ne
1b920 77 41 72 67 29 29 0d 0a 20 20 20 20 20 20 20 20  wArg))..        
1b930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b940 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1b950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
1b960 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e  rror = TraceOps.
1b970 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a  DebugAndTrace(..
1b980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b9a0 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f  TracePriority.Lo
1b9b0 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62  west, debugCallb
1b9c0 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ack,..          
1b9d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b9e0 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
1b9f0 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d  ack, String.Form
1ba00 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
1ba10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ba20 20 20 20 20 20 22 55 6e 73 75 70 70 6f 72 74 65       "Unsupporte
1ba30 64 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 61  d command line a
1ba40 72 67 75 6d 65 6e 74 3a 20 7b 30 7d 22 2c 0d 0a  rgument: {0}",..
1ba50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ba60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ba70 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 29  ForDisplay(arg))
1ba80 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29  , traceCategory)
1ba90 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1baa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bab0 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20   if (strict)..  
1bac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1bae0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
1baf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bb00 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69             conti
1bb10 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nue;..          
1bb20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1bb30 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1bb40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1bb50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bb60 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
1bb70 41 6c 6c 20 74 68 65 20 73 75 70 70 6f 72 74 65  All the supporte
1bb80 64 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 6f  d command line o
1bb90 70 74 69 6f 6e 73 20 6d 75 73 74 0d 0a 20 20 20  ptions must..   
1bba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bbb0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68 61       //       ha
1bbc0 76 65 20 61 20 76 61 6c 75 65 3b 20 74 68 65 72  ve a value; ther
1bbd0 65 66 6f 72 65 2c 20 61 74 74 65 6d 70 74 20 74  efore, attempt t
1bbe0 6f 20 61 64 76 61 6e 63 65 0d 0a 20 20 20 20 20  o advance..     
1bbf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bc00 20 20 20 2f 2f 20 20 20 20 20 20 20 74 6f 20 69     //       to i
1bc10 74 20 6e 6f 77 2e 20 20 49 66 20 77 65 20 66 61  t now.  If we fa
1bc20 69 6c 2c 20 77 65 20 61 72 65 20 64 6f 6e 65 2e  il, we are done.
1bc30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1bc40 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1bc50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bc60 20 20 20 20 20 20 69 6e 64 65 78 2b 2b 3b 0d 0a        index++;..
1bc70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1bc80 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 6e            if (in
1bc90 64 65 78 20 3e 3d 20 6c 65 6e 67 74 68 29 0d 0a  dex >= length)..
1bca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bcb0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1bcc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bcd0 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54         error = T
1bce0 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64  raceOps.DebugAnd
1bcf0 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20  Trace(..        
1bd00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bd10 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69          TracePri
1bd20 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65  ority.Lowest, de
1bd30 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20  bugCallback,..  
1bd40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bd50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
1bd60 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72  aceCallback, Str
1bd70 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
1bd80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bd90 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4d 69               "Mi
1bda0 73 73 69 6e 67 20 76 61 6c 75 65 20 66 6f 72 20  ssing value for 
1bdb0 6f 70 74 69 6f 6e 3a 20 7b 30 7d 22 2c 0d 0a 20  option: {0}",.. 
1bdc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bdd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46                 F
1bde0 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 29 2c  orDisplay(arg)),
1bdf0 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
1be00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1be10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1be20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20  if (strict)..   
1be30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1be40 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1be50 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
1be60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1be70 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b            break;
1be80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1be90 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
1bea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1beb0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1bec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bed0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 47 72 61 62     // NOTE: Grab
1bee0 20 74 68 65 20 74 65 78 74 75 61 6c 20 76 61 6c   the textual val
1bef0 75 65 20 6f 66 20 74 68 69 73 20 63 6f 6d 6d 61  ue of this comma
1bf00 6e 64 20 6c 69 6e 65 0d 0a 20 20 20 20 20 20 20  nd line..       
1bf10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bf20 20 2f 2f 20 20 20 20 20 20 20 6f 70 74 69 6f 6e   //       option
1bf30 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1bf40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1bf50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bf60 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 74 65         string te
1bf70 78 74 20 3d 20 61 72 67 73 5b 69 6e 64 65 78 5d  xt = args[index]
1bf80 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1bf90 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1bfa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1bfb0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
1bfc0 3a 20 46 69 67 75 72 65 20 6f 75 74 20 77 68 69  : Figure out whi
1bfd0 63 68 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20  ch command line 
1bfe0 6f 70 74 69 6f 6e 20 74 68 69 73 20 69 73 0d 0a  option this is..
1bff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c000 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
1c010 20 28 62 61 73 65 64 20 6f 6e 20 61 20 70 61 72   (based on a par
1c020 74 69 61 6c 20 6e 61 6d 65 20 6d 61 74 63 68 29  tial name match)
1c030 20 61 6e 64 20 74 68 65 6e 20 74 72 79 0d 0a 20   and then try.. 
1c040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c050 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
1c060 74 6f 20 69 6e 74 65 72 70 72 65 74 20 74 68 65  to interpret the
1c070 20 74 65 78 74 75 61 6c 20 76 61 6c 75 65 20 61   textual value a
1c080 73 20 74 68 65 20 63 6f 72 72 65 63 74 0d 0a 20  s the correct.. 
1c090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c0a0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
1c0b0 74 79 70 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  type...         
1c0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1c0d0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1c0e0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 4d             if (M
1c0f0 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72  atchOption(newAr
1c100 67 2c 20 22 62 72 65 61 6b 22 29 29 0d 0a 20 20  g, "break"))..  
1c110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c120 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1c130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c140 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65       bool? value
1c150 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28   = ParseBoolean(
1c160 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  text);....      
1c170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c180 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
1c190 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
1c1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c1b0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1c1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c1d0 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d           error =
1c1e0 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
1c1f0 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20  ndTrace(..      
1c200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
1c220 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65  acePriority.Lowe
1c230 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63  st, debugCallbac
1c240 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
1c250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c260 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c          traceCal
1c270 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f  lback, String.Fo
1c280 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
1c290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c2a0 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 76 61             "Inva
1c2b0 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20  lid {0} boolean 
1c2c0 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20  value: {1}",..  
1c2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c2f0 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67    ForDisplay(arg
1c300 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65  ), ForDisplay(te
1c310 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  xt)),..         
1c320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c330 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
1c340 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
1c350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1c370 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20   (strict)..     
1c380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1c3a0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
1c3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c3d0 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20  continue;..     
1c3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c3f0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1c400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c410 20 20 20 20 20 20 20 20 69 66 20 28 28 62 6f 6f          if ((boo
1c420 6c 29 76 61 6c 75 65 29 0d 0a 20 20 20 20 20 20  l)value)..      
1c430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c440 20 20 20 20 20 20 20 20 20 20 42 72 65 61 6b 49            BreakI
1c450 6e 74 6f 44 65 62 75 67 67 65 72 28 29 3b 0d 0a  ntoDebugger();..
1c460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c470 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1c480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c490 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63     else if (Matc
1c4a0 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20  hOption(newArg, 
1c4b0 22 63 6f 6e 66 69 67 56 65 72 73 69 6f 6e 22 29  "configVersion")
1c4c0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1c4d0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1c4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c4f0 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67            config
1c500 75 72 61 74 69 6f 6e 2e 63 6f 6e 66 69 67 56 65  uration.configVe
1c510 72 73 69 6f 6e 20 3d 20 74 65 78 74 3b 0d 0a 20  rsion = text;.. 
1c520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c530 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1c540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c550 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68    else if (Match
1c560 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22  Option(newArg, "
1c570 63 6f 6e 66 69 72 6d 22 29 29 0d 0a 20 20 20 20  confirm"))..    
1c580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c590 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1c5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c5b0 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d     bool? value =
1c5c0 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65   ParseBoolean(te
1c5d0 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  xt);....        
1c5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c5f0 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d      if (value ==
1c600 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
1c610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c620 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1c630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c640 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54         error = T
1c650 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64  raceOps.DebugAnd
1c660 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20  Trace(..        
1c670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c680 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
1c690 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74  ePriority.Lowest
1c6a0 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c  , debugCallback,
1c6b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c6d0 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
1c6e0 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d  ack, String.Form
1c6f0 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
1c700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c710 20 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69           "Invali
1c720 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61  d {0} boolean va
1c730 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  lue: {1}",..    
1c740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c760 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c  ForDisplay(arg),
1c770 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74   ForDisplay(text
1c780 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
1c790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c7a0 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
1c7b0 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
1c7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c7d0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1c7e0 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20  strict)..       
1c7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c800 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1c810 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
1c820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
1c840 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20  ntinue;..       
1c850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c860 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1c870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c880 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74        configurat
1c890 69 6f 6e 2e 63 6f 6e 66 69 72 6d 20 3d 20 28 62  ion.confirm = (b
1c8a0 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20  ool)value;..    
1c8b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c8c0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1c8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
1c8e0 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74  lse if (MatchOpt
1c8f0 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 63 6f 72  ion(newArg, "cor
1c900 65 46 69 6c 65 4e 61 6d 65 22 29 29 0d 0a 20 20  eFileName"))..  
1c910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c920 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1c930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c940 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
1c950 6f 6e 2e 63 6f 72 65 46 69 6c 65 4e 61 6d 65 20  on.coreFileName 
1c960 3d 20 74 65 78 74 3b 0d 0a 20 20 20 20 20 20 20  = text;..       
1c970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c980 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1c990 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
1c9a0 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e   if (MatchOption
1c9b0 28 6e 65 77 41 72 67 2c 20 22 64 65 62 75 67 22  (newArg, "debug"
1c9c0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
1c9d0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1c9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c9f0 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f             bool?
1ca00 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f   value = ParseBo
1ca10 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a  olean(text);....
1ca20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ca30 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1ca40 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  value == null)..
1ca50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ca60 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1ca70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ca80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
1ca90 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e  rror = TraceOps.
1caa0 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a  DebugAndTrace(..
1cab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cad0 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74      TracePriorit
1cae0 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43  y.Lowest, debugC
1caf0 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
1cb00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cb10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
1cb20 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72  aceCallback, Str
1cb30 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
1cb40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cb50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cb60 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f   "Invalid {0} bo
1cb70 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d  olean value: {1}
1cb80 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
1cb90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cba0 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c          ForDispl
1cbb0 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70  ay(arg), ForDisp
1cbc0 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20  lay(text)),..   
1cbd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cbf0 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
1cc00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1cc10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cc20 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d      if (strict).
1cc30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1cc40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cc50 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
1cc60 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
1cc70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cc80 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
1cc90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1cca0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1ccb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ccc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
1ccd0 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64 65 62 75  nfiguration.debu
1cce0 67 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b  g = (bool)value;
1ccf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1cd00 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1cd10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cd20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61       else if (Ma
1cd30 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67  tchOption(newArg
1cd40 2c 20 22 64 65 62 75 67 46 6f 72 6d 61 74 22 29  , "debugFormat")
1cd50 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1cd60 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1cd70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cd80 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67            config
1cd90 75 72 61 74 69 6f 6e 2e 64 65 62 75 67 46 6f 72  uration.debugFor
1cda0 6d 61 74 20 3d 20 74 65 78 74 3b 0d 0a 20 20 20  mat = text;..   
1cdb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cdc0 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f 70           TraceOp
1cdd0 73 2e 44 65 62 75 67 46 6f 72 6d 61 74 20 3d 20  s.DebugFormat = 
1cde0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64 65  configuration.de
1cdf0 62 75 67 46 6f 72 6d 61 74 3b 0d 0a 20 20 20 20  bugFormat;..    
1ce00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ce10 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1ce20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
1ce30 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74  lse if (MatchOpt
1ce40 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 64 65 62  ion(newArg, "deb
1ce50 75 67 50 72 69 6f 72 69 74 79 22 29 29 0d 0a 20  ugPriority")).. 
1ce60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ce70 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1ce80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ce90 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c        object val
1cea0 75 65 20 3d 20 50 61 72 73 65 45 6e 75 6d 28 0d  ue = ParseEnum(.
1ceb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1cec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ced0 20 74 79 70 65 6f 66 28 54 72 61 63 65 50 72 69   typeof(TracePri
1cee0 6f 72 69 74 79 29 2c 20 74 65 78 74 2c 20 74 72  ority), text, tr
1cef0 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ue);....        
1cf00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cf10 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d      if (value ==
1cf20 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
1cf30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cf40 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1cf50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cf60 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54         error = T
1cf70 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64  raceOps.DebugAnd
1cf80 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20  Trace(..        
1cf90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cfa0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
1cfb0 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74  ePriority.Lowest
1cfc0 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c  , debugCallback,
1cfd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1cfe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cff0 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
1d000 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d  ack, String.Form
1d010 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
1d020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d030 20 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69           "Invali
1d040 64 20 7b 30 7d 20 76 61 6c 75 65 3a 20 7b 31 7d  d {0} value: {1}
1d050 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
1d060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d070 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c          ForDispl
1d080 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70  ay(arg), ForDisp
1d090 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20  lay(text)),..   
1d0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d0c0 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
1d0d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1d0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d0f0 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d      if (strict).
1d100 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d120 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
1d130 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
1d140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d150 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
1d160 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d170 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1d180 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
1d1a0 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64 65 62 75  nfiguration.debu
1d1b0 67 50 72 69 6f 72 69 74 79 20 3d 20 28 54 72 61  gPriority = (Tra
1d1c0 63 65 50 72 69 6f 72 69 74 79 29 76 61 6c 75 65  cePriority)value
1d1d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1d1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
1d1f0 72 61 63 65 4f 70 73 2e 44 65 62 75 67 50 72 69  raceOps.DebugPri
1d200 6f 72 69 74 79 20 3d 20 63 6f 6e 66 69 67 75 72  ority = configur
1d210 61 74 69 6f 6e 2e 64 65 62 75 67 50 72 69 6f 72  ation.debugPrior
1d220 69 74 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ity;..          
1d230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1d240 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d250 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
1d260 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65   (MatchOption(ne
1d270 77 41 72 67 2c 20 22 64 65 73 69 67 6e 65 72 46  wArg, "designerF
1d280 69 6c 65 4e 61 6d 65 22 29 29 0d 0a 20 20 20 20  ileName"))..    
1d290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d2a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1d2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d2c0 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
1d2d0 2e 64 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d  .designerFileNam
1d2e0 65 20 3d 20 74 65 78 74 3b 0d 0a 20 20 20 20 20  e = text;..     
1d2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d300 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1d310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
1d320 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69  se if (MatchOpti
1d330 6f 6e 28 6e 65 77 41 72 67 2c 20 22 64 69 72 65  on(newArg, "dire
1d340 63 74 6f 72 79 22 29 29 0d 0a 20 20 20 20 20 20  ctory"))..      
1d350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d360 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1d370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d380 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64   configuration.d
1d390 69 72 65 63 74 6f 72 79 20 3d 20 74 65 78 74 3b  irectory = text;
1d3a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1d3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d3c0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1d3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d3e0 2f 2f 20 4e 4f 54 45 3a 20 2a 53 50 45 43 49 41  // NOTE: *SPECIA
1d3f0 4c 2a 20 4d 75 73 74 20 72 65 66 72 65 73 68 20  L* Must refresh 
1d400 74 68 65 20 66 69 6c 65 20 6e 61 6d 65 73 0d 0a  the file names..
1d410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d420 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
1d430 20 20 20 20 20 68 65 72 65 20 62 65 63 61 75 73       here becaus
1d440 65 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67  e the underlying
1d450 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20 20 20   directory..    
1d460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d470 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
1d480 20 68 61 73 20 63 68 61 6e 67 65 64 2e 0d 0a 20   has changed... 
1d490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d4a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1d4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d4c0 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
1d4d0 67 20 63 6f 72 65 46 69 6c 65 4e 61 6d 65 20 3d  g coreFileName =
1d4e0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 63   configuration.c
1d4f0 6f 72 65 46 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a  oreFileName;....
1d500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d510 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1d520 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  !String.IsNullOr
1d530 45 6d 70 74 79 28 63 6f 72 65 46 69 6c 65 4e 61  Empty(coreFileNa
1d540 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
1d550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d560 20 20 20 20 20 20 63 6f 72 65 46 69 6c 65 4e 61        coreFileNa
1d570 6d 65 20 3d 20 50 61 74 68 2e 47 65 74 46 69 6c  me = Path.GetFil
1d580 65 4e 61 6d 65 28 63 6f 72 65 46 69 6c 65 4e 61  eName(coreFileNa
1d590 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
1d5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d5b0 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49      if (String.I
1d5c0 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 63 6f 72  sNullOrEmpty(cor
1d5d0 65 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  eFileName))..   
1d5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 72               cor
1d600 65 46 69 6c 65 4e 61 6d 65 20 3d 20 49 6e 73 74  eFileName = Inst
1d610 61 6c 6c 65 72 2e 43 6f 72 65 46 69 6c 65 4e 61  aller.CoreFileNa
1d620 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  me;....         
1d630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d640 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
1d650 2e 63 6f 72 65 46 69 6c 65 4e 61 6d 65 20 3d 20  .coreFileName = 
1d660 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 0d 0a 20  Path.Combine(.. 
1d670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1d690 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64 69 72  onfiguration.dir
1d6a0 65 63 74 6f 72 79 2c 20 63 6f 72 65 46 69 6c 65  ectory, coreFile
1d6b0 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Name);....      
1d6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d6d0 20 20 20 20 20 20 73 74 72 69 6e 67 20 6c 69 6e        string lin
1d6e0 71 46 69 6c 65 4e 61 6d 65 20 3d 20 63 6f 6e 66  qFileName = conf
1d6f0 69 67 75 72 61 74 69 6f 6e 2e 6c 69 6e 71 46 69  iguration.linqFi
1d700 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20  leName;....     
1d710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d720 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69         if (!Stri
1d730 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
1d740 28 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 29 29 0d  (linqFileName)).
1d750 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d770 20 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 20 3d 20   linqFileName = 
1d780 50 61 74 68 2e 47 65 74 46 69 6c 65 4e 61 6d 65  Path.GetFileName
1d790 28 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 29 3b 0d  (linqFileName);.
1d7a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1d7b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1d7c0 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c  f (String.IsNull
1d7d0 4f 72 45 6d 70 74 79 28 6c 69 6e 71 46 69 6c 65  OrEmpty(linqFile
1d7e0 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
1d7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d800 20 20 20 20 20 20 20 20 6c 69 6e 71 46 69 6c 65          linqFile
1d810 4e 61 6d 65 20 3d 20 49 6e 73 74 61 6c 6c 65 72  Name = Installer
1d820 2e 4c 69 6e 71 46 69 6c 65 4e 61 6d 65 3b 0d 0a  .LinqFileName;..
1d830 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
1d850 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6c 69 6e 71  nfiguration.linq
1d860 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68 2e  FileName = Path.
1d870 43 6f 6d 62 69 6e 65 28 0d 0a 20 20 20 20 20 20  Combine(..      
1d880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d890 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67            config
1d8a0 75 72 61 74 69 6f 6e 2e 64 69 72 65 63 74 6f 72  uration.director
1d8b0 79 2c 20 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 29  y, linqFileName)
1d8c0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1d8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d8e0 20 73 74 72 69 6e 67 20 65 66 36 46 69 6c 65 4e   string ef6FileN
1d8f0 61 6d 65 20 3d 20 63 6f 6e 66 69 67 75 72 61 74  ame = configurat
1d900 69 6f 6e 2e 65 66 36 46 69 6c 65 4e 61 6d 65 3b  ion.ef6FileName;
1d910 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1d920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d930 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75  if (!String.IsNu
1d940 6c 6c 4f 72 45 6d 70 74 79 28 65 66 36 46 69 6c  llOrEmpty(ef6Fil
1d950 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
1d960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d970 20 20 20 20 20 20 20 20 20 65 66 36 46 69 6c 65           ef6File
1d980 4e 61 6d 65 20 3d 20 50 61 74 68 2e 47 65 74 46  Name = Path.GetF
1d990 69 6c 65 4e 61 6d 65 28 65 66 36 46 69 6c 65 4e  ileName(ef6FileN
1d9a0 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ame);....       
1d9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d9c0 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e       if (String.
1d9d0 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 65 66  IsNullOrEmpty(ef
1d9e0 36 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  6FileName))..   
1d9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1da00 20 20 20 20 20 20 20 20 20 20 20 20 20 65 66 36               ef6
1da10 46 69 6c 65 4e 61 6d 65 20 3d 20 49 6e 73 74 61  FileName = Insta
1da20 6c 6c 65 72 2e 45 66 36 46 69 6c 65 4e 61 6d 65  ller.Ef6FileName
1da30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1da40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1da50 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 65   configuration.e
1da60 66 36 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74  f6FileName = Pat
1da70 68 2e 43 6f 6d 62 69 6e 65 28 0d 0a 20 20 20 20  h.Combine(..    
1da80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1da90 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
1daa0 69 67 75 72 61 74 69 6f 6e 2e 64 69 72 65 63 74  iguration.direct
1dab0 6f 72 79 2c 20 65 66 36 46 69 6c 65 4e 61 6d 65  ory, ef6FileName
1dac0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1dad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dae0 20 20 73 74 72 69 6e 67 20 64 65 73 69 67 6e 65    string designe
1daf0 72 46 69 6c 65 4e 61 6d 65 20 3d 20 63 6f 6e 66  rFileName = conf
1db00 69 67 75 72 61 74 69 6f 6e 2e 64 65 73 69 67 6e  iguration.design
1db10 65 72 46 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20  erFileName;.... 
1db20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1db30 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
1db40 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
1db50 6d 70 74 79 28 64 65 73 69 67 6e 65 72 46 69 6c  mpty(designerFil
1db60 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
1db70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1db80 20 20 20 20 20 20 20 20 20 64 65 73 69 67 6e 65           designe
1db90 72 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68  rFileName = Path
1dba0 2e 47 65 74 46 69 6c 65 4e 61 6d 65 28 64 65 73  .GetFileName(des
1dbb0 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 29 3b 0d  ignerFileName);.
1dbc0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1dbd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1dbe0 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c  f (String.IsNull
1dbf0 4f 72 45 6d 70 74 79 28 64 65 73 69 67 6e 65 72  OrEmpty(designer
1dc00 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20  FileName))..    
1dc10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dc20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 73 69              desi
1dc30 67 6e 65 72 46 69 6c 65 4e 61 6d 65 20 3d 20 49  gnerFileName = I
1dc40 6e 73 74 61 6c 6c 65 72 2e 44 65 73 69 67 6e 65  nstaller.Designe
1dc50 72 46 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20  rFileName;....  
1dc60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dc70 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67            config
1dc80 75 72 61 74 69 6f 6e 2e 64 65 73 69 67 6e 65 72  uration.designer
1dc90 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68 2e  FileName = Path.
1dca0 43 6f 6d 62 69 6e 65 28 0d 0a 20 20 20 20 20 20  Combine(..      
1dcb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dcc0 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67            config
1dcd0 75 72 61 74 69 6f 6e 2e 64 69 72 65 63 74 6f 72  uration.director
1dce0 79 2c 20 64 65 73 69 67 6e 65 72 46 69 6c 65 4e  y, designerFileN
1dcf0 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ame);..         
1dd00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1dd10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1dd20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
1dd30 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e  f (MatchOption(n
1dd40 65 77 41 72 67 2c 20 22 65 66 36 46 69 6c 65 4e  ewArg, "ef6FileN
1dd50 61 6d 65 22 29 29 0d 0a 20 20 20 20 20 20 20 20  ame"))..        
1dd60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dd70 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1dd80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1dd90 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 65 66 36  onfiguration.ef6
1dda0 46 69 6c 65 4e 61 6d 65 20 3d 20 74 65 78 74 3b  FileName = text;
1ddb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ddc0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1ddd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dde0 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61       else if (Ma
1ddf0 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67  tchOption(newArg
1de00 2c 20 22 69 6e 73 74 61 6c 6c 22 29 29 0d 0a 20  , "install")).. 
1de10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1de20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1de30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1de40 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75        bool? valu
1de50 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e  e = ParseBoolean
1de60 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  (text);....     
1de70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1de80 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
1de90 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
1dea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1deb0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1dec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ded0 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20            error 
1dee0 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67  = TraceOps.Debug
1def0 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20  AndTrace(..     
1df00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1df10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
1df20 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77  racePriority.Low
1df30 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61  est, debugCallba
1df40 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck,..           
1df50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1df60 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
1df70 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46  llback, String.F
1df80 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
1df90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dfa0 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 76              "Inv
1dfb0 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e  alid {0} boolean
1dfc0 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20   value: {1}",.. 
1dfd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dfe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dff0 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72     ForDisplay(ar
1e000 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74  g), ForDisplay(t
1e010 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ext)),..        
1e020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e030 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
1e040 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
1e050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1e070 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20  f (strict)..    
1e080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e0a0 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
1e0b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e0d0 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20   continue;..    
1e0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e0f0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1e100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e110 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
1e120 72 61 74 69 6f 6e 2e 69 6e 73 74 61 6c 6c 20 3d  ration.install =
1e130 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20   (bool)value;.. 
1e140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e150 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1e160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e170 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68    else if (Match
1e180 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22  Option(newArg, "
1e190 69 6e 73 74 61 6c 6c 46 6c 61 67 73 22 29 29 0d  installFlags")).
1e1a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e1b0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1e1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e1d0 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76          object v
1e1e0 61 6c 75 65 20 3d 20 50 61 72 73 65 45 6e 75 6d  alue = ParseEnum
1e1f0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1e200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e210 20 20 20 74 79 70 65 6f 66 28 49 6e 73 74 61 6c     typeof(Instal
1e220 6c 46 6c 61 67 73 29 2c 20 74 65 78 74 2c 20 74  lFlags), text, t
1e230 72 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  rue);....       
1e240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e250 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
1e260 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
1e270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e280 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1e290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e2a0 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20          error = 
1e2b0 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e  TraceOps.DebugAn
1e2c0 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20  dTrace(..       
1e2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
1e2f0 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73  cePriority.Lowes
1e300 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b  t, debugCallback
1e310 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1e320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e330 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
1e340 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72  back, String.For
1e350 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
1e360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e370 20 20 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c            "Inval
1e380 69 64 20 7b 30 7d 20 76 61 6c 75 65 3a 20 7b 31  id {0} value: {1
1e390 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
1e3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e3b0 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70           ForDisp
1e3c0 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73  lay(arg), ForDis
1e3d0 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20  play(text)),..  
1e3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e3f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e400 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
1e410 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1e420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e430 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29       if (strict)
1e440 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e460 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
1e470 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
1e480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e490 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
1e4a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1e4c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1e4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1e4e0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 69 6e 73  onfiguration.ins
1e4f0 74 61 6c 6c 46 6c 61 67 73 20 3d 20 28 49 6e 73  tallFlags = (Ins
1e500 74 61 6c 6c 46 6c 61 67 73 29 76 61 6c 75 65 3b  tallFlags)value;
1e510 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e520 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1e530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e540 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61       else if (Ma
1e550 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67  tchOption(newArg
1e560 2c 20 22 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 22  , "linqFileName"
1e570 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
1e580 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1e590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e5a0 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
1e5b0 67 75 72 61 74 69 6f 6e 2e 6c 69 6e 71 46 69 6c  guration.linqFil
1e5c0 65 4e 61 6d 65 20 3d 20 74 65 78 74 3b 0d 0a 20  eName = text;.. 
1e5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e5e0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1e5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e600 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68    else if (Match
1e610 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22  Option(newArg, "
1e620 6c 6f 67 46 69 6c 65 4e 61 6d 65 22 29 29 0d 0a  logFileName"))..
1e630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e640 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1e650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e660 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
1e670 74 69 6f 6e 2e 6c 6f 67 46 69 6c 65 4e 61 6d 65  tion.logFileName
1e680 20 3d 20 74 65 78 74 3b 0d 0a 20 20 20 20 20 20   = text;..      
1e690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e6a0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1e6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
1e6c0 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f  e if (MatchOptio
1e6d0 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 43 6f 6d  n(newArg, "noCom
1e6e0 70 61 63 74 22 29 29 0d 0a 20 20 20 20 20 20 20  pact"))..       
1e6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e700 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1e710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e720 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61  bool? value = Pa
1e730 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29  rseBoolean(text)
1e740 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1e750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e760 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
1e770 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
1e780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e790 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1e7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e7b0 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63      error = Trac
1e7c0 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61  eOps.DebugAndTra
1e7d0 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce(..           
1e7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e7f0 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72           TracePr
1e800 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64  iority.Lowest, d
1e810 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20  ebugCallback,.. 
1e820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e840 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
1e850 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  , String.Format(
1e860 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e880 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b        "Invalid {
1e890 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65  0} boolean value
1e8a0 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
1e8b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72               For
1e8d0 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f  Display(arg), Fo
1e8e0 72 44 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c  rDisplay(text)),
1e8f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e910 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
1e920 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
1e930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e940 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72           if (str
1e950 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ict)..          
1e960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e970 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1e980 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
1e990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e9a0 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69             conti
1e9b0 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nue;..          
1e9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e9d0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
1e9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e9f0 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
1ea00 2e 6e 6f 43 6f 6d 70 61 63 74 20 3d 20 28 62 6f  .noCompact = (bo
1ea10 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  ol)value;..     
1ea20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ea30 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1ea40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
1ea50 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69  se if (MatchOpti
1ea60 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 43 6f  on(newArg, "noCo
1ea70 6e 73 6f 6c 65 22 29 29 0d 0a 20 20 20 20 20 20  nsole"))..      
1ea80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ea90 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1eaa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eab0 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50   bool? value = P
1eac0 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74  arseBoolean(text
1ead0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1eae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eaf0 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
1eb00 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1eb10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eb20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1eb30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eb40 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61       error = Tra
1eb50 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
1eb60 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ace(..          
1eb70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eb80 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50            TraceP
1eb90 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20  riority.Lowest, 
1eba0 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a  debugCallback,..
1ebb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ebc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ebd0 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
1ebe0 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
1ebf0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1ec00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ec10 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20         "Invalid 
1ec20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75  {0} boolean valu
1ec30 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20  e: {1}",..      
1ec40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ec50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f                Fo
1ec60 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46  rDisplay(arg), F
1ec70 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29 29  orDisplay(text))
1ec80 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1ec90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eca0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
1ecb0 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
1ecc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ecd0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74            if (st
1ece0 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20  rict)..         
1ecf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ed00 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1ed10 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
1ed20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ed30 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74              cont
1ed40 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  inue;..         
1ed50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ed60 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1ed70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ed80 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
1ed90 6e 2e 6e 6f 43 6f 6e 73 6f 6c 65 20 3d 20 28 62  n.noConsole = (b
1eda0 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20  ool)value;..    
1edb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1edc0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1edd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
1ede0 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74  lse if (MatchOpt
1edf0 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 44  ion(newArg, "noD
1ee00 65 73 6b 74 6f 70 22 29 29 0d 0a 20 20 20 20 20  esktop"))..     
1ee10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ee20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1ee30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ee40 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20    bool? value = 
1ee50 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78  ParseBoolean(tex
1ee60 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
1ee70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ee80 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
1ee90 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1eea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eeb0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1eec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eed0 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72        error = Tr
1eee0 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54  aceOps.DebugAndT
1eef0 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20  race(..         
1ef00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ef10 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
1ef20 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c  Priority.Lowest,
1ef30 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d   debugCallback,.
1ef40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ef50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ef60 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
1ef70 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ck, String.Forma
1ef80 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
1ef90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1efa0 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64          "Invalid
1efb0 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c   {0} boolean val
1efc0 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  ue: {1}",..     
1efd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1efe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46                 F
1eff0 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20  orDisplay(arg), 
1f000 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29  ForDisplay(text)
1f010 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
1f020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f030 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
1f040 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
1f050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f060 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
1f070 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20  trict)..        
1f080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f090 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1f0a0 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
1f0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
1f0d0 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  tinue;..        
1f0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f0f0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1f100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f110 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
1f120 6f 6e 2e 6e 6f 44 65 73 6b 74 6f 70 20 3d 20 28  on.noDesktop = (
1f130 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20  bool)value;..   
1f140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f150 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1f160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f170 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70  else if (MatchOp
1f180 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f  tion(newArg, "no
1f190 4c 6f 67 22 29 29 0d 0a 20 20 20 20 20 20 20 20  Log"))..        
1f1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f1b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1f1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
1f1d0 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72  ool? value = Par
1f1e0 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b  seBoolean(text);
1f1f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1f200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f210 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
1f220 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1f230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f240 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1f250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f260 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65     error = Trace
1f270 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
1f280 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
1f290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f2a0 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69          TracePri
1f2b0 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65  ority.Lowest, de
1f2c0 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20  bugCallback,..  
1f2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f2f0 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c    traceCallback,
1f300 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d   String.Format(.
1f310 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f330 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30       "Invalid {0
1f340 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a  } boolean value:
1f350 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
1f360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f370 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44              ForD
1f380 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72  isplay(arg), For
1f390 44 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d  Display(text)),.
1f3a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f3c0 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
1f3d0 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
1f3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f3f0 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69          if (stri
1f400 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct)..           
1f410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f420 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1f430 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
1f440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f450 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e            contin
1f460 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
1f470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f480 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
1f490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f4a0 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e    configuration.
1f4b0 6e 6f 4c 6f 67 20 3d 20 28 62 6f 6f 6c 29 76 61  noLog = (bool)va
1f4c0 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lue;..          
1f4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1f4e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f4f0 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
1f500 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65   (MatchOption(ne
1f510 77 41 72 67 2c 20 22 6e 6f 4e 65 74 46 78 32 30  wArg, "noNetFx20
1f520 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "))..           
1f530 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1f540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f550 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
1f560 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42  ? value = ParseB
1f570 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d  oolean(text);...
1f580 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f590 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1f5a0 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
1f5b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1f5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f5f0 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73  error = TraceOps
1f600 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d  .DebugAndTrace(.
1f610 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f630 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69       TracePriori
1f640 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67  ty.Lowest, debug
1f650 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Callback,..     
1f660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1f680 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74  raceCallback, St
1f690 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
1f6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f6c0 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62    "Invalid {0} b
1f6d0 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31  oolean value: {1
1f6e0 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
1f6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f700 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70           ForDisp
1f710 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73  lay(arg), ForDis
1f720 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20  play(text)),..  
1f730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f750 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
1f760 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1f770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f780 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29       if (strict)
1f790 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f7b0 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
1f7c0 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
1f7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f7e0 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
1f7f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1f810 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1f820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1f830 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e  onfiguration.noN
1f840 65 74 46 78 32 30 20 3d 20 28 62 6f 6f 6c 29 76  etFx20 = (bool)v
1f850 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alue;..         
1f860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1f870 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f880 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
1f890 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e  f (MatchOption(n
1f8a0 65 77 41 72 67 2c 20 22 6e 6f 4e 65 74 46 78 33  ewArg, "noNetFx3
1f8b0 35 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  5"))..          
1f8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1f8d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
1f8f0 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65  l? value = Parse
1f900 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a  Boolean(text);..
1f910 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1f930 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29   (value == null)
1f940 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1f960 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f980 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70   error = TraceOp
1f990 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28  s.DebugAndTrace(
1f9a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f9c0 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72        TracePrior
1f9d0 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75  ity.Lowest, debu
1f9e0 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  gCallback,..    
1f9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa10 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53  traceCallback, S
1fa20 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
1fa30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa50 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20     "Invalid {0} 
1fa60 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b  boolean value: {
1fa70 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
1fa80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa90 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73            ForDis
1faa0 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69  play(arg), ForDi
1fab0 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20  splay(text)),.. 
1fac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fae0 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
1faf0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1fb00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fb10 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74        if (strict
1fb20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1fb30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fb40 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
1fb50 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
1fb60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fb70 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65          continue
1fb80 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1fb90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1fba0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1fbb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fbc0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f  configuration.no
1fbd0 4e 65 74 46 78 33 35 20 3d 20 28 62 6f 6f 6c 29  NetFx35 = (bool)
1fbe0 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
1fbf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fc00 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1fc10 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
1fc20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28  if (MatchOption(
1fc30 6e 65 77 41 72 67 2c 20 22 6e 6f 4e 65 74 46 78  newArg, "noNetFx
1fc40 34 30 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20  40"))..         
1fc50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1fc60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1fc70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
1fc80 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73  ol? value = Pars
1fc90 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d  eBoolean(text);.
1fca0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1fcb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1fcc0 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c  f (value == null
1fcd0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1fce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1fcf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1fd00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fd10 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f    error = TraceO
1fd20 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65  ps.DebugAndTrace
1fd30 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1fd40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fd50 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f         TracePrio
1fd60 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62  rity.Lowest, deb
1fd70 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20  ugCallback,..   
1fd80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fd90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fda0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20   traceCallback, 
1fdb0 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
1fdc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fdd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fde0 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d      "Invalid {0}
1fdf0 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20   boolean value: 
1fe00 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {1}",..         
1fe10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fe20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69             ForDi
1fe30 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44  splay(arg), ForD
1fe40 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a  isplay(text)),..
1fe50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fe60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fe70 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
1fe80 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
1fe90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fea0 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63         if (stric
1feb0 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
1fec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fed0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
1fee0 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
1fef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ff00 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75           continu
1ff10 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
1ff20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ff30 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
1ff40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ff50 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e   configuration.n
1ff60 6f 4e 65 74 46 78 34 30 20 3d 20 28 62 6f 6f 6c  oNetFx40 = (bool
1ff70 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  )value;..       
1ff80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ff90 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1ffa0 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
1ffb0 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e   if (MatchOption
1ffc0 28 6e 65 77 41 72 67 2c 20 22 6e 6f 4e 65 74 46  (newArg, "noNetF
1ffd0 78 34 35 22 29 29 0d 0a 20 20 20 20 20 20 20 20  x45"))..        
1ffe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fff0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
20000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
20010 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72  ool? value = Par
20020 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b  seBoolean(text);
20030 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
20040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20050 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
20060 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
20070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20080 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
20090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
200a0 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65     error = Trace
200b0 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
200c0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
200d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
200e0 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69          TracePri
200f0 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65  ority.Lowest, de
20100 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20  bugCallback,..  
20110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20130 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c    traceCallback,
20140 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d   String.Format(.
20150 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20170 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30       "Invalid {0
20180 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a  } boolean value:
20190 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
201a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
201b0 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44              ForD
201c0 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72  isplay(arg), For
201d0 44 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d  Display(text)),.
201e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
201f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20200 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
20210 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
20220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20230 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69          if (stri
20240 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct)..           
20250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20260 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
20270 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
20280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20290 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e            contin
202a0 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
202b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
202c0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
202d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
202e0 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e    configuration.
202f0 6e 6f 4e 65 74 46 78 34 35 20 3d 20 28 62 6f 6f  noNetFx45 = (boo
20300 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  l)value;..      
20310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20320 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
20330 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
20340 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f  e if (MatchOptio
20350 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 4e 65 74  n(newArg, "noNet
20360 46 78 34 35 31 22 29 29 0d 0a 20 20 20 20 20 20  Fx451"))..      
20370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20380 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
20390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
203a0 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50   bool? value = P
203b0 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74  arseBoolean(text
203c0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
203d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
203e0 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
203f0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
20400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20410 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
20420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20430 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61       error = Tra
20440 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
20450 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ace(..          
20460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20470 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50            TraceP
20480 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20  riority.Lowest, 
20490 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a  debugCallback,..
204a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
204b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
204c0 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
204d0 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
204e0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
204f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20500 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20         "Invalid 
20510 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75  {0} boolean valu
20520 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20  e: {1}",..      
20530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f                Fo
20550 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46  rDisplay(arg), F
20560 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29 29  orDisplay(text))
20570 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
20580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20590 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
205a0 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
205b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
205c0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74            if (st
205d0 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20  rict)..         
205e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
205f0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
20600 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
20610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20620 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74              cont
20630 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  inue;..         
20640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20650 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
20660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20670 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
20680 6e 2e 6e 6f 4e 65 74 46 78 34 35 31 20 3d 20 28  n.noNetFx451 = (
20690 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20  bool)value;..   
206a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
206b0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
206c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
206d0 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70  else if (MatchOp
206e0 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f  tion(newArg, "no
206f0 4e 65 74 46 78 34 35 32 22 29 29 0d 0a 20 20 20  NetFx452"))..   
20700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20710 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
20720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20730 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20      bool? value 
20740 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74  = ParseBoolean(t
20750 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ext);....       
20760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20770 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
20780 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
20790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
207a0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
207b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
207c0 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20          error = 
207d0 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e  TraceOps.DebugAn
207e0 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20  dTrace(..       
207f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20800 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
20810 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73  cePriority.Lowes
20820 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b  t, debugCallback
20830 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
20840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20850 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
20860 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72  back, String.For
20870 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
20880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20890 20 20 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c            "Inval
208a0 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76  id {0} boolean v
208b0 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  alue: {1}",..   
208c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
208d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
208e0 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29   ForDisplay(arg)
208f0 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78  , ForDisplay(tex
20900 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  t)),..          
20910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20920 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
20930 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
20940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20950 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
20960 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20  (strict)..      
20970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
20990 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
209a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
209b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
209c0 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20  ontinue;..      
209d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
209e0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
209f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a00 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
20a10 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34 35 32 20  tion.noNetFx452 
20a20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a  = (bool)value;..
20a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a40 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
20a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a60 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63     else if (Matc
20a70 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20  hOption(newArg, 
20a80 22 6e 6f 4e 65 74 46 78 34 36 22 29 29 0d 0a 20  "noNetFx46")).. 
20a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20aa0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
20ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20ac0 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75        bool? valu
20ad0 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e  e = ParseBoolean
20ae0 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  (text);....     
20af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20b00 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
20b10 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
20b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20b30 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
20b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20b50 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20            error 
20b60 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67  = TraceOps.Debug
20b70 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20  AndTrace(..     
20b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
20ba0 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77  racePriority.Low
20bb0 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61  est, debugCallba
20bc0 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck,..           
20bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20be0 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
20bf0 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46  llback, String.F
20c00 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
20c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20c20 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 76              "Inv
20c30 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e  alid {0} boolean
20c40 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20   value: {1}",.. 
20c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20c70 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72     ForDisplay(ar
20c80 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74  g), ForDisplay(t
20c90 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ext)),..        
20ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20cb0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
20cc0 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
20cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
20cf0 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20  f (strict)..    
20d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20d20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
20d30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20d50 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20   continue;..    
20d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20d70 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
20d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20d90 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
20da0 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34 36  ration.noNetFx46
20db0 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d   = (bool)value;.
20dc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20dd0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
20de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20df0 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74      else if (Mat
20e00 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c  chOption(newArg,
20e10 20 22 6e 6f 4e 65 74 46 78 34 36 31 22 29 29 0d   "noNetFx461")).
20e20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20e30 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
20e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20e50 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61          bool? va
20e60 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65  lue = ParseBoole
20e70 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20  an(text);....   
20e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20e90 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
20ea0 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue == null)..   
20eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20ec0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
20ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20ee0 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
20ef0 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62  r = TraceOps.Deb
20f00 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20  ugAndTrace(..   
20f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20f30 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c   TracePriority.L
20f40 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c  owest, debugCall
20f50 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
20f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20f70 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
20f80 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67  Callback, String
20f90 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
20fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49                "I
20fc0 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65  nvalid {0} boole
20fd0 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d  an value: {1}",.
20fe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21000 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28       ForDisplay(
21010 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79  arg), ForDisplay
21020 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20  (text)),..      
21030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
21050 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
21060 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21080 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20   if (strict)..  
21090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
210a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
210b0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
210c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
210d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
210e0 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20     continue;..  
210f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21100 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
21110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21120 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
21130 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78  guration.noNetFx
21140 34 36 31 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75  461 = (bool)valu
21150 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
21160 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
21170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21180 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
21190 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41  MatchOption(newA
211a0 72 67 2c 20 22 6e 6f 4e 65 74 46 78 34 36 32 22  rg, "noNetFx462"
211b0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
211c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
211d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
211e0 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f             bool?
211f0 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f   value = ParseBo
21200 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a  olean(text);....
21210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21220 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
21230 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  value == null)..
21240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21250 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
21260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
21280 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e  rror = TraceOps.
21290 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a  DebugAndTrace(..
212a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
212b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
212c0 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74      TracePriorit
212d0 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43  y.Lowest, debugC
212e0 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
212f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
21310 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72  aceCallback, Str
21320 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
21330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21350 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f   "Invalid {0} bo
21360 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d  olean value: {1}
21370 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
21380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21390 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c          ForDispl
213a0 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70  ay(arg), ForDisp
213b0 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20  lay(text)),..   
213c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
213d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
213e0 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
213f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
21400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21410 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d      if (strict).
21420 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21440 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
21450 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
21460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21470 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
21480 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21490 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
214a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
214b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
214c0 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65  nfiguration.noNe
214d0 74 46 78 34 36 32 20 3d 20 28 62 6f 6f 6c 29 76  tFx462 = (bool)v
214e0 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alue;..         
214f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
21500 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21510 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
21520 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e  f (MatchOption(n
21530 65 77 41 72 67 2c 20 22 6e 6f 4e 65 74 46 78 34  ewArg, "noNetFx4
21540 37 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  7"))..          
21550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
21560 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21570 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
21580 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65  l? value = Parse
21590 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a  Boolean(text);..
215a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
215b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
215c0 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29   (value == null)
215d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
215e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
215f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21610 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70   error = TraceOp
21620 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28  s.DebugAndTrace(
21630 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21650 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72        TracePrior
21660 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75  ity.Lowest, debu
21670 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  gCallback,..    
21680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
216a0 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53  traceCallback, S
216b0 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
216c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
216d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
216e0 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20     "Invalid {0} 
216f0 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b  boolean value: {
21700 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
21710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21720 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73            ForDis
21730 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69  play(arg), ForDi
21740 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20  splay(text)),.. 
21750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21770 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
21780 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
21790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
217a0 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74        if (strict
217b0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
217c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
217d0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
217e0 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
217f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21800 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65          continue
21810 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
21820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
21830 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
21840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21850 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f  configuration.no
21860 4e 65 74 46 78 34 37 20 3d 20 28 62 6f 6f 6c 29  NetFx47 = (bool)
21870 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
21880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21890 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
218a0 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
218b0 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28  if (MatchOption(
218c0 6e 65 77 41 72 67 2c 20 22 6e 6f 4e 65 74 46 78  newArg, "noNetFx
218d0 34 37 31 22 29 29 0d 0a 20 20 20 20 20 20 20 20  471"))..        
218e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
218f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
21900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
21910 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72  ool? value = Par
21920 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b  seBoolean(text);
21930 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
21940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21950 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
21960 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
21970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21980 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
21990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
219a0 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65     error = Trace
219b0 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
219c0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
219d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
219e0 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69          TracePri
219f0 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65  ority.Lowest, de
21a00 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20  bugCallback,..  
21a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21a30 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c    traceCallback,
21a40 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d   String.Format(.
21a50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21a70 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30       "Invalid {0
21a80 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a  } boolean value:
21a90 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
21aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ab0 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44              ForD
21ac0 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72  isplay(arg), For
21ad0 44 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d  Display(text)),.
21ae0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21b00 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
21b10 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
21b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21b30 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69          if (stri
21b40 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct)..           
21b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21b60 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
21b70 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
21b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21b90 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e            contin
21ba0 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
21bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21bc0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
21bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21be0 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e    configuration.
21bf0 6e 6f 4e 65 74 46 78 34 37 31 20 3d 20 28 62 6f  noNetFx471 = (bo
21c00 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  ol)value;..     
21c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21c20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
21c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
21c40 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69  se if (MatchOpti
21c50 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 52 75  on(newArg, "noRu
21c60 6e 74 69 6d 65 56 65 72 73 69 6f 6e 22 29 29 0d  ntimeVersion")).
21c70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21c80 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
21c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ca0 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61          bool? va
21cb0 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65  lue = ParseBoole
21cc0 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20  an(text);....   
21cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ce0 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
21cf0 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue == null)..   
21d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21d10 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
21d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21d30 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
21d40 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62  r = TraceOps.Deb
21d50 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20  ugAndTrace(..   
21d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21d80 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c   TracePriority.L
21d90 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c  owest, debugCall
21da0 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
21db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21dc0 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
21dd0 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67  Callback, String
21de0 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
21df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49                "I
21e10 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65  nvalid {0} boole
21e20 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d  an value: {1}",.
21e30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e50 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28       ForDisplay(
21e60 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79  arg), ForDisplay
21e70 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20  (text)),..      
21e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
21ea0 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
21eb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ed0 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20   if (strict)..  
21ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21f00 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
21f10 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
21f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21f30 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20     continue;..  
21f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21f50 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
21f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21f70 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
21f80 67 75 72 61 74 69 6f 6e 2e 6e 6f 52 75 6e 74 69  guration.noRunti
21f90 6d 65 56 65 72 73 69 6f 6e 20 3d 20 28 62 6f 6f  meVersion = (boo
21fa0 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  l)value;..      
21fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21fc0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
21fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
21fe0 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f  e if (MatchOptio
21ff0 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 54 72 61  n(newArg, "noTra
22000 63 65 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ce"))..         
22010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
22020 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
22040 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73  ol? value = Pars
22050 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d  eBoolean(text);.
22060 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
22070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
22080 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c  f (value == null
22090 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
220a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
220b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
220c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
220d0 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f    error = TraceO
220e0 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65  ps.DebugAndTrace
220f0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
22100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22110 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f         TracePrio
22120 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62  rity.Lowest, deb
22130 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20  ugCallback,..   
22140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22160 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20   traceCallback, 
22170 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
22180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
221a0 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d      "Invalid {0}
221b0 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20   boolean value: 
221c0 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {1}",..         
221d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
221e0 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69             ForDi
221f0 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44  splay(arg), ForD
22200 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a  isplay(text)),..
22210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22230 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
22240 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
22250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22260 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63         if (stric
22270 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
22280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22290 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
222a0 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
222b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
222c0 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75           continu
222d0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
222e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
222f0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
22300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22310 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e   configuration.n
22320 6f 54 72 61 63 65 20 3d 20 28 62 6f 6f 6c 29 76  oTrace = (bool)v
22330 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alue;..         
22340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
22350 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22360 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
22370 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e  f (MatchOption(n
22380 65 77 41 72 67 2c 20 22 6e 6f 56 73 32 30 30 35  ewArg, "noVs2005
22390 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "))..           
223a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
223b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
223c0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
223d0 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42  ? value = ParseB
223e0 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d  oolean(text);...
223f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22400 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
22410 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
22420 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22430 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
22440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22460 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73  error = TraceOps
22470 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d  .DebugAndTrace(.
22480 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
224a0 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69       TracePriori
224b0 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67  ty.Lowest, debug
224c0 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Callback,..     
224d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
224e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
224f0 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74  raceCallback, St
22500 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
22510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22530 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62    "Invalid {0} b
22540 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31  oolean value: {1
22550 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
22560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22570 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70           ForDisp
22580 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73  lay(arg), ForDis
22590 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20  play(text)),..  
225a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
225b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
225c0 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
225d0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
225e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
225f0 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29       if (strict)
22600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22620 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
22630 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
22640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22650 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
22660 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
22680 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
22690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
226a0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 56  onfiguration.noV
226b0 73 32 30 30 35 20 3d 20 28 62 6f 6f 6c 29 76 61  s2005 = (bool)va
226c0 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lue;..          
226d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
226e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
226f0 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
22700 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65   (MatchOption(ne
22710 77 41 72 67 2c 20 22 6e 6f 56 73 32 30 30 38 22  wArg, "noVs2008"
22720 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
22730 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
22740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22750 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f             bool?
22760 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f   value = ParseBo
22770 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a  olean(text);....
22780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22790 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
227a0 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  value == null)..
227b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
227c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
227d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
227e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
227f0 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e  rror = TraceOps.
22800 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a  DebugAndTrace(..
22810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22830 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74      TracePriorit
22840 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43  y.Lowest, debugC
22850 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
22860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
22880 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72  aceCallback, Str
22890 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
228a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
228b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
228c0 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f   "Invalid {0} bo
228d0 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d  olean value: {1}
228e0 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
228f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22900 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c          ForDispl
22910 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70  ay(arg), ForDisp
22920 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20  lay(text)),..   
22930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22950 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
22960 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
22970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22980 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d      if (strict).
22990 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
229a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
229b0 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
229c0 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
229d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
229e0 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
229f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22a00 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
22a10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
22a30 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73  nfiguration.noVs
22a40 32 30 30 38 20 3d 20 28 62 6f 6f 6c 29 76 61 6c  2008 = (bool)val
22a50 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
22a60 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
22a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22a80 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
22a90 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77  (MatchOption(new
22aa0 41 72 67 2c 20 22 6e 6f 56 73 32 30 31 30 22 29  Arg, "noVs2010")
22ab0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
22ac0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
22ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22ae0 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20            bool? 
22af0 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f  value = ParseBoo
22b00 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20  lean(text);.... 
22b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22b20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
22b30 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
22b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22b50 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
22b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72                er
22b80 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44  ror = TraceOps.D
22b90 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20  ebugAndTrace(.. 
22ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22bc0 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79     TracePriority
22bd0 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61  .Lowest, debugCa
22be0 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
22bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22c00 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
22c10 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69  ceCallback, Stri
22c20 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
22c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22c50 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f  "Invalid {0} boo
22c60 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22  lean value: {1}"
22c70 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
22c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22c90 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61         ForDispla
22ca0 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c  y(arg), ForDispl
22cb0 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20  ay(text)),..    
22cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22ce0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
22cf0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
22d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22d10 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a     if (strict)..
22d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22d40 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
22d50 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
22d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22d70 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
22d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22d90 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
22da0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22db0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
22dc0 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32  figuration.noVs2
22dd0 30 31 30 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75  010 = (bool)valu
22de0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
22df0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
22e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22e10 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
22e20 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41  MatchOption(newA
22e30 72 67 2c 20 22 6e 6f 56 73 32 30 31 32 22 29 29  rg, "noVs2012"))
22e40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22e50 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
22e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22e70 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76           bool? v
22e80 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c  alue = ParseBool
22e90 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20  ean(text);....  
22ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22eb0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
22ec0 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
22ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22ee0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
22ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22f00 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72               err
22f10 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65  or = TraceOps.De
22f20 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20  bugAndTrace(..  
22f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22f50 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e    TracePriority.
22f60 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c  Lowest, debugCal
22f70 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
22f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22f90 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
22fa0 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e  eCallback, Strin
22fb0 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
22fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
22fe0 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c  Invalid {0} bool
22ff0 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c  ean value: {1}",
23000 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23020 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79        ForDisplay
23030 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61  (arg), ForDispla
23040 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20  y(text)),..     
23050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
23070 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
23080 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
230a0 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20    if (strict).. 
230b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
230c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
230d0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
230e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
230f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23100 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20      continue;.. 
23110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23120 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
23130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23140 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
23150 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30  iguration.noVs20
23160 31 32 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65  12 = (bool)value
23170 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
23180 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
23190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
231a0 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d        else if (M
231b0 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72  atchOption(newAr
231c0 67 2c 20 22 6e 6f 56 73 32 30 31 33 22 29 29 0d  g, "noVs2013")).
231d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
231e0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
231f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23200 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61          bool? va
23210 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65  lue = ParseBoole
23220 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20  an(text);....   
23230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23240 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
23250 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue == null)..   
23260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23270 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
23280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23290 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
232a0 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62  r = TraceOps.Deb
232b0 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20  ugAndTrace(..   
232c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
232d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
232e0 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c   TracePriority.L
232f0 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c  owest, debugCall
23300 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
23310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23320 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
23330 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67  Callback, String
23340 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
23350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49                "I
23370 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65  nvalid {0} boole
23380 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d  an value: {1}",.
23390 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
233a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
233b0 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28       ForDisplay(
233c0 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79  arg), ForDisplay
233d0 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20  (text)),..      
233e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
233f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
23400 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
23410 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23430 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20   if (strict)..  
23440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23460 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
23470 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
23480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23490 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20     continue;..  
234a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
234b0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
234c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
234d0 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
234e0 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 31  guration.noVs201
234f0 33 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b  3 = (bool)value;
23500 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23510 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
23520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23530 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61       else if (Ma
23540 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67  tchOption(newArg
23550 2c 20 22 6e 6f 56 73 32 30 31 35 22 29 29 0d 0a  , "noVs2015"))..
23560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23570 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
23580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23590 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c         bool? val
235a0 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61  ue = ParseBoolea
235b0 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20  n(text);....    
235c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
235d0 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
235e0 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
235f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23600 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
23610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23620 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72             error
23630 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75   = TraceOps.Debu
23640 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20  gAndTrace(..    
23650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23670 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f  TracePriority.Lo
23680 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62  west, debugCallb
23690 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ack,..          
236a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
236b0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
236c0 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e  allback, String.
236d0 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
236e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
236f0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e               "In
23700 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61  valid {0} boolea
23710 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a  n value: {1}",..
23720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23740 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61      ForDisplay(a
23750 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  rg), ForDisplay(
23760 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20  text)),..       
23770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23780 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
23790 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a  ceCategory);....
237a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
237b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
237c0 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20  if (strict)..   
237d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
237e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
237f0 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
23800 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23820 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20    continue;..   
23830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23840 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
23850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23860 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67            config
23870 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 31 35  uration.noVs2015
23880 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d   = (bool)value;.
23890 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
238a0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
238b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
238c0 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74      else if (Mat
238d0 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c  chOption(newArg,
238e0 20 22 6e 6f 56 73 32 30 31 37 22 29 29 0d 0a 20   "noVs2017")).. 
238f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23900 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
23910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23920 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75        bool? valu
23930 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e  e = ParseBoolean
23940 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  (text);....     
23950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23960 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
23970 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
23980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23990 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
239a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
239b0 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20            error 
239c0 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67  = TraceOps.Debug
239d0 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20  AndTrace(..     
239e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
239f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
23a00 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77  racePriority.Low
23a10 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61  est, debugCallba
23a20 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck,..           
23a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23a40 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
23a50 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46  llback, String.F
23a60 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
23a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23a80 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 76              "Inv
23a90 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e  alid {0} boolean
23aa0 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20   value: {1}",.. 
23ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ad0 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72     ForDisplay(ar
23ae0 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74  g), ForDisplay(t
23af0 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ext)),..        
23b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23b10 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
23b20 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
23b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
23b50 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20  f (strict)..    
23b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23b80 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
23b90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23bb0 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20   continue;..    
23bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23bd0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
23be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23bf0 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
23c00 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 31 37 20  ration.noVs2017 
23c10 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a  = (bool)value;..
23c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23c30 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
23c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23c50 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63     else if (Matc
23c60 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20  hOption(newArg, 
23c70 22 70 65 72 55 73 65 72 22 29 29 0d 0a 20 20 20  "perUser"))..   
23c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23c90 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
23ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23cb0 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20      bool? value 
23cc0 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74  = ParseBoolean(t
23cd0 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ext);....       
23ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23cf0 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
23d00 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
23d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23d20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
23d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23d40 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20          error = 
23d50 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e  TraceOps.DebugAn
23d60 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20  dTrace(..       
23d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23d80 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
23d90 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73  cePriority.Lowes
23da0 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b  t, debugCallback
23db0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
23dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23dd0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
23de0 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72  back, String.For
23df0 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
23e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23e10 20 20 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c            "Inval
23e20 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76  id {0} boolean v
23e30 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  alue: {1}",..   
23e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23e60 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29   ForDisplay(arg)
23e70 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78  , ForDisplay(tex
23e80 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  t)),..          
23e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ea0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
23eb0 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
23ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
23ee0 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20  (strict)..      
23ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
23f10 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
23f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
23f40 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20  ontinue;..      
23f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f60 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
23f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f80 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
23f90 74 69 6f 6e 2e 70 65 72 55 73 65 72 20 3d 20 28  tion.perUser = (
23fa0 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20  bool)value;..   
23fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23fc0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
23fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23fe0 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70  else if (MatchOp
23ff0 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 70 72  tion(newArg, "pr
24000 6f 76 69 64 65 72 46 6c 61 67 73 22 29 29 0d 0a  oviderFlags"))..
24010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24020 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
24030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24040 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61         object va
24050 6c 75 65 20 3d 20 50 61 72 73 65 45 6e 75 6d 28  lue = ParseEnum(
24060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24080 20 20 74 79 70 65 6f 66 28 50 72 6f 76 69 64 65    typeof(Provide
24090 72 46 6c 61 67 73 29 2c 20 74 65 78 74 2c 20 74  rFlags), text, t
240a0 72 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  rue);....       
240b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
240c0 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
240d0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
240e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
240f0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
24100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24110 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20          error = 
24120 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e  TraceOps.DebugAn
24130 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20  dTrace(..       
24140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24150 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
24160 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73  cePriority.Lowes
24170 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b  t, debugCallback
24180 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
24190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
241a0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
241b0 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72  back, String.For
241c0 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
241d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
241e0 20 20 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c            "Inval
241f0 69 64 20 7b 30 7d 20 76 61 6c 75 65 3a 20 7b 31  id {0} value: {1
24200 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
24210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24220 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70           ForDisp
24230 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73  lay(arg), ForDis
24240 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20  play(text)),..  
24250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24270 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
24280 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
24290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
242a0 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29       if (strict)
242b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
242c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
242d0 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
242e0 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
242f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24300 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
24310 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
24330 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
24340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
24350 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 70 72 6f  onfiguration.pro
24360 76 69 64 65 72 46 6c 61 67 73 20 3d 20 28 50 72  viderFlags = (Pr
24370 6f 76 69 64 65 72 46 6c 61 67 73 29 76 61 6c 75  oviderFlags)valu
24380 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
24390 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
243a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
243b0 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
243c0 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41  MatchOption(newA
243d0 72 67 2c 20 22 72 65 67 69 73 74 72 79 4c 6f 67  rg, "registryLog
243e0 46 69 6c 65 4e 61 6d 65 22 29 29 0d 0a 20 20 20  FileName"))..   
243f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24400 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
24410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24420 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
24430 6e 2e 72 65 67 69 73 74 72 79 4c 6f 67 46 69 6c  n.registryLogFil
24440 65 4e 61 6d 65 20 3d 20 74 65 78 74 3b 0d 0a 20  eName = text;.. 
24450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24460 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
24470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24480 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68    else if (Match
24490 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22  Option(newArg, "
244a0 72 65 67 69 73 74 72 79 56 65 72 73 69 6f 6e 22  registryVersion"
244b0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
244c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
244d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
244e0 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
244f0 67 75 72 61 74 69 6f 6e 2e 72 65 67 69 73 74 72  guration.registr
24500 79 56 65 72 73 69 6f 6e 20 3d 20 74 65 78 74 3b  yVersion = text;
24510 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24520 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
24530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24540 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61       else if (Ma
24550 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67  tchOption(newArg
24560 2c 20 22 73 74 72 69 63 74 22 29 29 0d 0a 20 20  , "strict"))..  
24570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24580 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
24590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
245a0 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65       bool? value
245b0 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28   = ParseBoolean(
245c0 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  text);....      
245d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
245e0 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
245f0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
24600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24610 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
24620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24630 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d           error =
24640 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
24650 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20  ndTrace(..      
24660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
24680 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65  acePriority.Lowe
24690 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63  st, debugCallbac
246a0 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
246b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
246c0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c          traceCal
246d0 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f  lback, String.Fo
246e0 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
246f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24700 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 76 61             "Inva
24710 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20  lid {0} boolean 
24720 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20  value: {1}",..  
24730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24750 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67    ForDisplay(arg
24760 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65  ), ForDisplay(te
24770 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  xt)),..         
24780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24790 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
247a0 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
247b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
247c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
247d0 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20   (strict)..     
247e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
247f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
24800 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
24810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24830 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20  continue;..     
24840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24850 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
24860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24870 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
24880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24890 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
248a0 20 41 6c 6c 6f 77 20 74 68 65 20 63 6f 6d 6d 61   Allow the comma
248b0 6e 64 20 6c 69 6e 65 20 61 72 67 75 6d 65 6e 74  nd line argument
248c0 73 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 20 20  s to..          
248d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
248e0 20 20 2f 2f 20 20 20 20 20 20 20 6f 76 65 72 72    //       overr
248f0 69 64 65 20 74 68 65 20 22 73 74 72 69 63 74 6e  ide the "strictn
24900 65 73 73 22 20 73 65 74 74 69 6e 67 0d 0a 20 20  ess" setting..  
24910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24920 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
24930 20 20 20 70 72 6f 76 69 64 65 64 20 62 79 20 6f     provided by o
24940 75 72 20 63 61 6c 6c 65 72 2e 0d 0a 20 20 20 20  ur caller...    
24950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24960 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
24970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24980 20 20 20 20 20 20 20 20 73 74 72 69 63 74 20 3d          strict =
24990 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20   (bool)value;.. 
249a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
249b0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
249c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
249d0 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68    else if (Match
249e0 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22  Option(newArg, "
249f0 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67 22 29  throwOnMissing")
24a00 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
24a10 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
24a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24a30 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20            bool? 
24a40 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f  value = ParseBoo
24a50 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20  lean(text);.... 
24a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24a70 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
24a80 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
24a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24aa0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
24ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72                er
24ad0 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44  ror = TraceOps.D
24ae0 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20  ebugAndTrace(.. 
24af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24b10 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79     TracePriority
24b20 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61  .Lowest, debugCa
24b30 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
24b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24b50 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
24b60 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69  ceCallback, Stri
24b70 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
24b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24ba0 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f  "Invalid {0} boo
24bb0 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22  lean value: {1}"
24bc0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
24bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24be0 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61         ForDispla
24bf0 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c  y(arg), ForDispl
24c00 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20  ay(text)),..    
24c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c30 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
24c40 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
24c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c60 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a     if (strict)..
24c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c90 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
24ca0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
24cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24cc0 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
24cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24ce0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
24cf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24d00 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
24d10 66 69 67 75 72 61 74 69 6f 6e 2e 74 68 72 6f 77  figuration.throw
24d20 4f 6e 4d 69 73 73 69 6e 67 20 3d 20 28 62 6f 6f  OnMissing = (boo
24d30 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  l)value;..      
24d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24d50 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
24d60 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
24d70 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f  e if (MatchOptio
24d80 6e 28 6e 65 77 41 72 67 2c 20 22 74 72 61 63 65  n(newArg, "trace
24d90 46 6f 72 6d 61 74 22 29 29 0d 0a 20 20 20 20 20  Format"))..     
24da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24db0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
24dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24dd0 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e    configuration.
24de0 74 72 61 63 65 46 6f 72 6d 61 74 20 3d 20 74 65  traceFormat = te
24df0 78 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  xt;..           
24e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24e10 20 54 72 61 63 65 4f 70 73 2e 54 72 61 63 65 46   TraceOps.TraceF
24e20 6f 72 6d 61 74 20 3d 20 63 6f 6e 66 69 67 75 72  ormat = configur
24e30 61 74 69 6f 6e 2e 74 72 61 63 65 46 6f 72 6d 61  ation.traceForma
24e40 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t;..            
24e50 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
24e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24e70 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
24e80 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41  MatchOption(newA
24e90 72 67 2c 20 22 74 72 61 63 65 50 72 69 6f 72 69  rg, "tracePriori
24ea0 74 79 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ty"))..         
24eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
24ec0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62                ob
24ee0 6a 65 63 74 20 76 61 6c 75 65 20 3d 20 50 61 72  ject value = Par
24ef0 73 65 45 6e 75 6d 28 0d 0a 20 20 20 20 20 20 20  seEnum(..       
24f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24f10 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28           typeof(
24f20 54 72 61 63 65 50 72 69 6f 72 69 74 79 29 2c 20  TracePriority), 
24f30 74 65 78 74 2c 20 74 72 75 65 29 3b 0d 0a 0d 0a  text, true);....
24f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24f50 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
24f60 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  value == null)..
24f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24f80 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
24f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
24fb0 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e  rror = TraceOps.
24fc0 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a  DebugAndTrace(..
24fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24ff0 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74      TracePriorit
25000 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43  y.Lowest, debugC
25010 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
25020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
25040 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72  aceCallback, Str
25050 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
25060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25080 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 76 61   "Invalid {0} va
25090 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  lue: {1}",..    
250a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
250b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
250c0 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c  ForDisplay(arg),
250d0 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74   ForDisplay(text
250e0 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
250f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25100 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
25110 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
25120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25130 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
25140 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20  strict)..       
25150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25160 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
25170 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
25180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
251a0 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20  ntinue;..       
251b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
251c0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
251d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
251e0 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74        configurat
251f0 69 6f 6e 2e 74 72 61 63 65 50 72 69 6f 72 69 74  ion.tracePriorit
25200 79 20 3d 20 28 54 72 61 63 65 50 72 69 6f 72 69  y = (TracePriori
25210 74 79 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  ty)value;..     
25220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25230 20 20 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e         TraceOps.
25240 54 72 61 63 65 50 72 69 6f 72 69 74 79 20 3d 20  TracePriority = 
25250 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 74 72  configuration.tr
25260 61 63 65 50 72 69 6f 72 69 74 79 3b 0d 0a 20 20  acePriority;..  
25270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25280 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
25290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
252a0 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f   else if (MatchO
252b0 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 76  ption(newArg, "v
252c0 65 72 62 6f 73 65 22 29 29 0d 0a 20 20 20 20 20  erbose"))..     
252d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
252e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
252f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25300 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20    bool? value = 
25310 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78  ParseBoolean(tex
25320 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
25330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25340 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
25350 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
25360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25370 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
25380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25390 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72        error = Tr
253a0 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54  aceOps.DebugAndT
253b0 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20  race(..         
253c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
253d0 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
253e0 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c  Priority.Lowest,
253f0 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d   debugCallback,.
25400 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25420 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
25430 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ck, String.Forma
25440 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
25450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25460 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64          "Invalid
25470 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c   {0} boolean val
25480 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  ue: {1}",..     
25490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
254a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46                 F
254b0 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20  orDisplay(arg), 
254c0 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29  ForDisplay(text)
254d0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
254e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
254f0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
25500 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
25510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25520 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
25530 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20  trict)..        
25540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25550 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
25560 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
25570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25580 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
25590 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  tinue;..        
255a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
255b0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
255c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
255d0 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
255e0 6f 6e 2e 76 65 72 62 6f 73 65 20 3d 20 28 62 6f  on.verbose = (bo
255f0 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  ol)value;..     
25600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25610 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
25620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
25630 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69  se if (MatchOpti
25640 6f 6e 28 6e 65 77 41 72 67 2c 20 22 76 73 56 65  on(newArg, "vsVe
25650 72 73 69 6f 6e 53 75 66 66 69 78 22 29 29 0d 0a  rsionSuffix"))..
25660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25670 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
25680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25690 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
256a0 74 69 6f 6e 2e 76 73 56 65 72 73 69 6f 6e 53 75  tion.vsVersionSu
256b0 66 66 69 78 20 3d 20 74 65 78 74 3b 0d 0a 20 20  ffix = text;..  
256c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
256d0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
256e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
256f0 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f   else if (MatchO
25700 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 77  ption(newArg, "w
25710 68 61 74 49 66 22 29 29 0d 0a 20 20 20 20 20 20  hatIf"))..      
25720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25730 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
25740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25750 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50   bool? value = P
25760 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74  arseBoolean(text
25770 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
25780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25790 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
257a0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
257b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
257c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
257d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
257e0 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61       error = Tra
257f0 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
25800 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ace(..          
25810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25820 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50            TraceP
25830 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20  riority.Lowest, 
25840 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a  debugCallback,..
25850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25870 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
25880 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
25890 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
258a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
258b0 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20         "Invalid 
258c0 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75  {0} boolean valu
258d0 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20  e: {1}",..      
258e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
258f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f                Fo
25900 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46  rDisplay(arg), F
25910 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29 29  orDisplay(text))
25920 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
25930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25940 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
25950 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
25960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25970 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74            if (st
25980 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20  rict)..         
25990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
259a0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
259b0 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
259c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
259d0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74              cont
259e0 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  inue;..         
259f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25a00 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
25a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25a20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
25a30 6e 2e 77 68 61 74 49 66 20 3d 20 28 62 6f 6f 6c  n.whatIf = (bool
25a40 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  )value;..       
25a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25a60 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
25a70 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
25a80 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e   if (MatchOption
25a90 28 6e 65 77 41 72 67 2c 20 22 77 6f 77 36 34 22  (newArg, "wow64"
25aa0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
25ab0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
25ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25ad0 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f             bool?
25ae0 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f   value = ParseBo
25af0 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a  olean(text);....
25b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25b10 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
25b20 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  value == null)..
25b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25b40 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
25b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
25b70 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e  rror = TraceOps.
25b80 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a  DebugAndTrace(..
25b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25bb0 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74      TracePriorit
25bc0 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43  y.Lowest, debugC
25bd0 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
25be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
25c00 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72  aceCallback, Str
25c10 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
25c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25c40 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f   "Invalid {0} bo
25c50 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d  olean value: {1}
25c60 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
25c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25c80 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c          ForDispl
25c90 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70  ay(arg), ForDisp
25ca0 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20  lay(text)),..   
25cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25cd0 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
25ce0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
25cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25d00 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d      if (strict).
25d10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25d30 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
25d40 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
25d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25d60 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
25d70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25d80 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
25d90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
25db0 6e 66 69 67 75 72 61 74 69 6f 6e 2e 77 6f 77 36  nfiguration.wow6
25dc0 34 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b  4 = (bool)value;
25dd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25de0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
25df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25e00 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
25e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25e20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
25e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25e40 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f    error = TraceO
25e50 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65  ps.DebugAndTrace
25e60 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
25e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25e80 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79     TracePriority
25e90 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61  .Lowest, debugCa
25ea0 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
25eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25ec0 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
25ed0 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46  llback, String.F
25ee0 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
25ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25f00 20 20 20 20 20 20 20 20 22 55 6e 73 75 70 70 6f          "Unsuppo
25f10 72 74 65 64 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e  rted command lin
25f20 65 20 6f 70 74 69 6f 6e 3a 20 7b 30 7d 22 2c 0d  e option: {0}",.
25f30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25f50 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29   ForDisplay(arg)
25f60 29 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79  ), traceCategory
25f70 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
25f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25f90 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20    if (strict).. 
25fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
25fc0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
25fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25fe0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
25ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
26000 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26010 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
26020 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
26030 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
26040 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
26050 63 65 70 74 69 6f 6e 20 65 29 0d 0a 20 20 20 20  ception e)..    
26060 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
26070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26080 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75     TraceOps.Debu
26090 67 41 6e 64 54 72 61 63 65 28 54 72 61 63 65 50  gAndTrace(TraceP
260a0 72 69 6f 72 69 74 79 2e 48 69 67 68 65 73 74 2c  riority.Highest,
260b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
260c0 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43            debugC
260d0 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61  allback, traceCa
260e0 6c 6c 62 61 63 6b 2c 20 65 2c 20 74 72 61 63 65  llback, e, trace
260f0 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
26100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26110 20 20 65 72 72 6f 72 20 3d 20 22 46 61 69 6c 65    error = "Faile
26120 64 20 74 6f 20 6d 6f 64 69 66 79 20 63 6f 6e 66  d to modify conf
26130 69 67 75 72 61 74 69 6f 6e 2e 22 3b 0d 0a 20 20  iguration.";..  
26140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
26150 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
26160 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
26170 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
26180 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
26190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
261a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
261b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
261c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
261d0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
261e0 20 20 5b 4d 65 74 68 6f 64 49 6d 70 6c 28 4d 65    [MethodImpl(Me
261f0 74 68 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e 73 2e  thodImplOptions.
26200 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a 20 20  NoInlining)]..  
26210 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
26220 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 50 72 6f   static bool Pro
26230 63 65 73 73 28 0d 0a 20 20 20 20 20 20 20 20 20  cess(..         
26240 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20         string[] 
26250 61 72 67 73 2c 0d 0a 20 20 20 20 20 20 20 20 20  args,..         
26260 20 20 20 20 20 20 20 43 6f 6e 66 69 67 75 72 61         Configura
26270 74 69 6f 6e 20 63 6f 6e 66 69 67 75 72 61 74 69  tion configurati
26280 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on,..           
26290 20 20 20 20 20 62 6f 6f 6c 20 73 74 72 69 63 74       bool strict
262a0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
262b0 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 65 72     ref string er
262c0 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ror..           
262d0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
262e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
262f0 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
26300 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
26310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26320 20 20 20 69 66 20 28 63 6f 6e 66 69 67 75 72 61     if (configura
26330 74 69 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  tion == null).. 
26340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26350 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
26360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72                er
26370 72 6f 72 20 3d 20 22 49 6e 76 61 6c 69 64 20 63  ror = "Invalid c
26380 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 22 3b 0d  onfiguration.";.
26390 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
263a0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
263b0 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
263c0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
263d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
263e0 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73       Assembly as
263f0 73 65 6d 62 6c 79 20 3d 20 63 6f 6e 66 69 67 75  sembly = configu
26400 72 61 74 69 6f 6e 2e 61 73 73 65 6d 62 6c 79 3b  ration.assembly;
26410 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
26420 20 20 20 20 20 20 20 20 69 66 20 28 61 73 73 65          if (asse
26430 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  mbly == null).. 
26440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26450 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
26460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72                er
26470 72 6f 72 20 3d 20 22 49 6e 76 61 6c 69 64 20 61  ror = "Invalid a
26480 73 73 65 6d 62 6c 79 2e 22 3b 0d 0a 20 20 20 20  ssembly.";..    
26490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
264a0 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
264b0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
264c0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
264d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
264e0 69 66 20 28 21 63 6f 6e 66 69 67 75 72 61 74 69  if (!configurati
264f0 6f 6e 2e 6e 6f 54 72 61 63 65 29 0d 0a 20 20 20  on.noTrace)..   
26500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26510 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
26520 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
26530 21 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e  !configuration.n
26540 6f 4c 6f 67 20 26 26 0d 0a 20 20 20 20 20 20 20  oLog &&..       
26550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26560 20 20 20 20 20 53 74 72 69 6e 67 2e 49 73 4e 75       String.IsNu
26570 6c 6c 4f 72 45 6d 70 74 79 28 63 6f 6e 66 69 67  llOrEmpty(config
26580 75 72 61 74 69 6f 6e 2e 6c 6f 67 46 69 6c 65 4e  uration.logFileN
26590 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
265a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
265b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
265c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
265d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
265e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
265f0 20 4e 4f 54 45 3a 20 55 73 65 20 74 68 65 20 64   NOTE: Use the d
26600 65 66 61 75 6c 74 20 6c 6f 67 20 66 69 6c 65 20  efault log file 
26610 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  name...         
26620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26630 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
26640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26650 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
26660 2e 6c 6f 67 46 69 6c 65 4e 61 6d 65 20 3d 20 47  .logFileName = G
26670 65 74 4c 6f 67 46 69 6c 65 4e 61 6d 65 28 0d 0a  etLogFileName(..
26680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
266a0 22 74 72 61 63 65 22 29 3b 0d 0a 20 20 20 20 20  "trace");..     
266b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
266c0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
266d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
266e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
266f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26710 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
26720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26730 20 20 20 69 66 20 28 21 63 6f 6e 66 69 67 75 72     if (!configur
26740 61 74 69 6f 6e 2e 6e 6f 43 6f 6e 73 6f 6c 65 29  ation.noConsole)
26750 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26760 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
26770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26780 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
26790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
267a0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
267b0 3a 20 49 6e 20 76 65 72 62 6f 73 65 20 6d 6f 64  : In verbose mod
267c0 65 2c 20 64 65 62 75 67 20 6f 75 74 70 75 74 20  e, debug output 
267d0 28 74 68 61 74 20 6d 65 65 74 73 0d 0a 20 20 20  (that meets..   
267e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
267f0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
26800 20 20 74 68 65 20 63 6f 6e 66 69 67 75 72 65 64    the configured
26810 20 70 72 69 6f 72 69 74 79 20 63 72 69 74 65 72   priority criter
26820 69 61 29 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20  ia) will be..   
26830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26840 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
26850 20 20 64 69 73 70 6c 61 79 65 64 20 74 6f 20 74    displayed to t
26860 68 65 20 63 6f 6e 73 6f 6c 65 3b 20 6f 74 68 65  he console; othe
26870 72 77 69 73 65 2c 20 74 72 61 63 65 0d 0a 20 20  rwise, trace..  
26880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26890 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
268a0 20 20 20 6f 75 74 70 75 74 20 28 74 68 61 74 20     output (that 
268b0 6d 65 65 74 73 20 74 68 65 20 63 6f 6e 66 69 67  meets the config
268c0 75 72 65 64 20 70 72 69 6f 72 69 74 79 0d 0a 20  ured priority.. 
268d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
268e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
268f0 20 20 20 20 63 72 69 74 65 72 69 61 29 20 77 69      criteria) wi
26900 6c 6c 20 62 65 20 64 69 73 70 6c 61 79 65 64 20  ll be displayed 
26910 74 6f 20 74 68 65 20 63 6f 6e 73 6f 6c 65 2e 0d  to the console..
26920 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26930 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
26940 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26950 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
26960 28 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64  (configuration.d
26970 65 62 75 67 29 0d 0a 20 20 20 20 20 20 20 20 20  ebug)..         
26980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26990 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
269a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
269b0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
269c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
269d0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
269e0 45 3a 20 41 64 64 20 74 68 65 20 63 6f 6e 73 6f  E: Add the conso
269f0 6c 65 20 74 72 61 63 65 20 6c 69 73 74 65 6e 65  le trace listene
26a00 72 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  r to the..      
26a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26a20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
26a30 20 20 20 6c 69 73 74 20 6f 66 20 74 72 61 63 65     list of trace
26a40 20 6c 69 73 74 65 6e 65 72 73 20 6d 61 69 6e 74   listeners maint
26a50 61 69 6e 65 64 20 62 79 0d 0a 20 20 20 20 20 20  ained by..      
26a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26a70 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
26a80 20 20 20 74 68 65 20 54 72 61 63 65 4f 70 73 20     the TraceOps 
26a90 63 6c 61 73 73 20 28 69 2e 65 2e 20 6f 6e 6c 79  class (i.e. only
26aa0 20 6d 65 73 73 61 67 65 73 0d 0a 20 20 20 20 20   messages..     
26ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26ac0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
26ad0 20 20 20 20 74 68 61 74 20 6d 65 65 74 20 74 68      that meet th
26ae0 65 20 64 65 62 75 67 20 70 72 69 6f 72 69 74 79  e debug priority
26af0 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20   will be..      
26b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26b10 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
26b20 20 20 20 73 65 65 6e 20 6f 6e 20 74 68 65 20 63     seen on the c
26b30 6f 6e 73 6f 6c 65 29 2e 0d 0a 20 20 20 20 20 20  onsole)...      
26b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26b50 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
26b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
26b80 61 63 65 4f 70 73 2e 53 65 74 75 70 44 65 62 75  aceOps.SetupDebu
26b90 67 4c 69 73 74 65 6e 65 72 73 28 29 3b 0d 0a 20  gListeners();.. 
26ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26bb0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
26bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26bd0 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a            else..
26be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26bf0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
26c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
26c20 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
26c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26c40 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 64 64 20     // NOTE: Add 
26c50 74 68 65 20 63 6f 6e 73 6f 6c 65 20 74 72 61 63  the console trac
26c60 65 20 6c 69 73 74 65 6e 65 72 20 74 6f 20 74 68  e listener to th
26c70 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
26c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26c90 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69 73 74     //       list
26ca0 20 6f 66 20 62 75 69 6c 74 2d 69 6e 20 74 72 61   of built-in tra
26cb0 63 65 20 6c 69 73 74 65 6e 65 72 73 20 28 69 2e  ce listeners (i.
26cc0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
26cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26ce0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c      //       onl
26cf0 79 20 6d 65 73 73 61 67 65 73 20 74 68 61 74 20  y messages that 
26d00 6d 65 65 74 20 74 68 65 20 74 72 61 63 65 0d 0a  meet the trace..
26d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26d30 2f 2f 20 20 20 20 20 20 20 70 72 69 6f 72 69 74  //       priorit
26d40 79 20 77 69 6c 6c 20 62 65 20 73 65 65 6e 20 6f  y will be seen o
26d50 6e 20 74 68 65 20 63 6f 6e 73 6f 6c 65 29 2e 0d  n the console)..
26d60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26d80 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
26d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26da0 20 20 20 20 20 54 72 61 63 65 2e 4c 69 73 74 65       Trace.Liste
26db0 6e 65 72 73 2e 41 64 64 28 6e 65 77 20 43 6f 6e  ners.Add(new Con
26dc0 73 6f 6c 65 54 72 61 63 65 4c 69 73 74 65 6e 65  soleTraceListene
26dd0 72 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  r());..         
26de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26df0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
26e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
26e10 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
26e20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
26e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e60 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
26e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
26e80 20 28 21 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e   (!configuration
26e90 2e 6e 6f 4c 6f 67 20 26 26 0d 0a 20 20 20 20 20  .noLog &&..     
26ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26eb0 20 20 20 20 20 20 20 21 53 74 72 69 6e 67 2e 49         !String.I
26ec0 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 63 6f 6e  sNullOrEmpty(con
26ed0 66 69 67 75 72 61 74 69 6f 6e 2e 6c 6f 67 46 69  figuration.logFi
26ee0 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
26ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26f00 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
26f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26f20 20 54 72 61 63 65 2e 4c 69 73 74 65 6e 65 72 73   Trace.Listeners
26f30 2e 41 64 64 28 6e 65 77 20 54 65 78 74 57 72 69  .Add(new TextWri
26f40 74 65 72 54 72 61 63 65 4c 69 73 74 65 6e 65 72  terTraceListener
26f50 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
26f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26f70 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
26f80 2e 6c 6f 67 46 69 6c 65 4e 61 6d 65 29 29 3b 0d  .logFileName));.
26f90 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
26fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
26fb0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
26fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
26fd0 2f 20 4e 4f 54 45 3a 20 54 65 63 68 6e 69 63 61  / NOTE: Technica
26fe0 6c 6c 79 2c 20 77 65 20 63 72 65 61 74 65 64 20  lly, we created 
26ff0 74 68 65 20 6c 6f 67 20 66 69 6c 65 2e 0d 0a 20  the log file... 
27000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27010 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
27020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27030 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 73             files
27040 43 72 65 61 74 65 64 2b 2b 3b 0d 0a 20 20 20 20  Created++;..    
27050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27060 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
27070 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
27080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27090 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
270a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
270b0 4f 54 45 3a 20 44 75 6d 70 20 74 68 65 20 63 6f  OTE: Dump the co
270c0 6e 66 69 67 75 72 61 74 69 6f 6e 20 6e 6f 77 20  nfiguration now 
270d0 69 6e 20 63 61 73 65 20 77 65 20 6e 65 65 64 20  in case we need 
270e0 74 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  to..            
270f0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
27100 20 74 72 6f 75 62 6c 65 73 68 6f 6f 74 20 61 6e   troubleshoot an
27110 79 20 69 73 73 75 65 73 2e 0d 0a 20 20 20 20 20  y issues...     
27120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
27130 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
27140 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 66 69         if (confi
27150 67 75 72 61 74 69 6f 6e 2e 64 65 62 75 67 50 72  guration.debugPr
27160 69 6f 72 69 74 79 20 3c 3d 20 54 72 61 63 65 50  iority <= TraceP
27170 72 69 6f 72 69 74 79 2e 4d 65 64 69 75 6d 29 0d  riority.Medium).
27180 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27190 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
271a0 72 61 74 69 6f 6e 2e 44 75 6d 70 28 64 65 62 75  ration.Dump(debu
271b0 67 43 61 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a 20  gCallback);.... 
271c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
271d0 20 20 20 69 66 20 28 63 6f 6e 66 69 67 75 72 61     if (configura
271e0 74 69 6f 6e 2e 74 72 61 63 65 50 72 69 6f 72 69  tion.tracePriori
271f0 74 79 20 3c 3d 20 54 72 61 63 65 50 72 69 6f 72  ty <= TracePrior
27200 69 74 79 2e 4d 65 64 69 75 6d 29 0d 0a 20 20 20  ity.Medium)..   
27210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27220 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
27230 6f 6e 2e 44 75 6d 70 28 74 72 61 63 65 43 61 6c  on.Dump(traceCal
27240 6c 62 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20 20 20  lback);....     
27250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
27260 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
27270 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
27280 53 68 6f 77 20 77 68 65 72 65 20 77 65 20 61 72  Show where we ar
27290 65 20 72 75 6e 6e 69 6e 67 20 66 72 6f 6d 20 61  e running from a
272a0 6e 64 20 68 6f 77 20 77 65 20 77 65 72 65 0d 0a  nd how we were..
272b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
272c0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 6e 76      //       inv
272d0 6f 6b 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  oked...         
272e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
272f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27300 20 20 20 73 74 72 69 6e 67 20 6c 6f 63 61 74 69     string locati
27310 6f 6e 20 3d 20 61 73 73 65 6d 62 6c 79 2e 4c 6f  on = assembly.Lo
27320 63 61 74 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20  cation;....     
27330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
27340 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64  raceOps.DebugAnd
27350 54 72 61 63 65 28 54 72 61 63 65 50 72 69 6f 72  Trace(TracePrior
27360 69 74 79 2e 4d 65 64 69 75 6d 4c 6f 77 2c 0d 0a  ity.MediumLow,..
27370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27380 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61 6c          debugCal
27390 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c  lback, traceCall
273a0 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72  back, String.For
273b0 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
273c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 52                "R
273d0 75 6e 6e 69 6e 67 20 65 78 65 63 75 74 61 62 6c  unning executabl
273e0 65 20 69 73 3a 20 7b 30 7d 22 2c 20 46 6f 72 44  e is: {0}", ForD
273f0 69 73 70 6c 61 79 28 6c 6f 63 61 74 69 6f 6e 29  isplay(location)
27400 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
27410 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
27420 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
27430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27440 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75     TraceOps.Debu
27450 67 41 6e 64 54 72 61 63 65 28 54 72 61 63 65 50  gAndTrace(TraceP
27460 72 69 6f 72 69 74 79 2e 4d 65 64 69 75 6d 4c 6f  riority.MediumLo
27470 77 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  w,..            
27480 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75              debu
27490 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65  gCallback, trace
274a0 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67  Callback, String
274b0 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
274c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
274d0 20 20 22 4f 72 69 67 69 6e 61 6c 20 63 6f 6d 6d    "Original comm
274e0 61 6e 64 20 6c 69 6e 65 20 69 73 3a 20 7b 30 7d  and line is: {0}
274f0 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
27500 20 20 20 20 20 20 20 20 20 20 20 20 45 6e 76 69              Envi
27510 72 6f 6e 6d 65 6e 74 2e 43 6f 6d 6d 61 6e 64 4c  ronment.CommandL
27520 69 6e 65 29 2c 20 74 72 61 63 65 43 61 74 65 67  ine), traceCateg
27530 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
27540 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
27550 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
27560 61 63 65 28 54 72 61 63 65 50 72 69 6f 72 69 74  ace(TracePriorit
27570 79 2e 4d 65 64 69 75 6d 4c 6f 77 2c 0d 0a 20 20  y.MediumLow,..  
27580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27590 20 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62        debugCallb
275a0 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61  ack, traceCallba
275b0 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ck, String.Forma
275c0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
275d0 20 20 20 20 20 20 20 20 20 20 20 20 22 52 75 6e              "Run
275e0 6e 69 6e 67 20 70 72 6f 63 65 73 73 20 69 73 20  ning process is 
275f0 7b 30 7d 2e 22 2c 20 49 73 36 34 42 69 74 50 72  {0}.", Is64BitPr
27600 6f 63 65 73 73 28 29 20 3f 0d 0a 20 20 20 20 20  ocess() ?..     
27610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27620 20 20 20 20 20 20 20 22 36 34 2d 62 69 74 22 20         "64-bit" 
27630 3a 20 22 33 32 2d 62 69 74 22 29 2c 20 74 72 61  : "32-bit"), tra
27640 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a  ceCategory);....
27650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27660 20 20 20 20 69 66 20 28 21 63 6f 6e 66 69 67 75      if (!configu
27670 72 61 74 69 6f 6e 2e 77 68 61 74 49 66 29 0d 0a  ration.whatIf)..
27680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27690 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
276a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
276b0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
276c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
276d0 54 45 3a 20 49 66 20 74 68 65 20 64 65 62 75 67  TE: If the debug
276e0 67 65 72 20 69 73 20 61 74 74 61 63 68 65 64 20  ger is attached 
276f0 61 6e 64 20 22 77 68 61 74 2d 69 66 22 0d 0a 20  and "what-if".. 
27700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27710 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
27720 6d 6f 64 65 20 69 73 20 5b 6e 6f 77 5d 20 64 69  mode is [now] di
27730 73 61 62 6c 65 64 2c 20 69 73 73 75 65 20 61 20  sabled, issue a 
27740 77 61 72 6e 69 6e 67 2e 0d 0a 20 20 20 20 20 20  warning...      
27750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27760 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
27770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
27780 20 28 44 65 62 75 67 67 65 72 2e 49 73 41 74 74   (Debugger.IsAtt
27790 61 63 68 65 64 29 0d 0a 20 20 20 20 20 20 20 20  ached)..        
277a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
277b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
277c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
277d0 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64  raceOps.DebugAnd
277e0 54 72 61 63 65 28 54 72 61 63 65 50 72 69 6f 72  Trace(TracePrior
277f0 69 74 79 2e 4d 65 64 69 75 6d 48 69 67 68 2c 0d  ity.MediumHigh,.
27800 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27820 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20   debugCallback, 
27830 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 0d 0a  traceCallback,..
27840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27860 22 46 6f 72 63 65 64 20 74 6f 20 64 69 73 61 62  "Forced to disab
27870 6c 65 20 5c 22 77 68 61 74 2d 69 66 5c 22 20 6d  le \"what-if\" m
27880 6f 64 65 20 77 69 74 68 20 22 20 2b 0d 0a 20 20  ode with " +..  
27890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
278a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 64                "d
278b0 65 62 75 67 67 65 72 20 61 74 74 61 63 68 65 64  ebugger attached
278c0 2e 22 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72  .", traceCategor
278d0 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
278e0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
278f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27900 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
27910 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
27920 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27930 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
27940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27950 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e  TraceOps.DebugAn
27960 64 54 72 61 63 65 28 54 72 61 63 65 50 72 69 6f  dTrace(TracePrio
27970 72 69 74 79 2e 4d 65 64 69 75 6d 48 69 67 68 2c  rity.MediumHigh,
27980 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
279a0 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61  bugCallback, tra
279b0 63 65 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20  ceCallback,..   
279c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
279d0 20 20 20 20 20 20 20 20 20 22 4e 6f 20 61 63 74           "No act
279e0 75 61 6c 20 63 68 61 6e 67 65 73 20 77 69 6c 6c  ual changes will
279f0 20 62 65 20 6d 61 64 65 20 74 6f 20 74 68 69 73   be made to this
27a00 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
27a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27a20 20 20 22 73 79 73 74 65 6d 20 62 65 63 61 75 73    "system becaus
27a30 65 20 5c 22 77 68 61 74 2d 69 66 5c 22 20 6d 6f  e \"what-if\" mo
27a40 64 65 20 69 73 20 65 6e 61 62 6c 65 64 2e 22 2c  de is enabled.",
27a50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
27a70 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20  aceCategory);.. 
27a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27a90 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
27aa0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
27ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27ac0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
27ad0 74 68 65 20 72 65 67 69 73 74 72 79 20 6c 6f 67  the registry log
27ae0 20 66 69 6c 65 20 6e 61 6d 65 20 68 61 73 20 62   file name has b
27af0 65 65 6e 20 73 65 74 2c 20 69 74 73 0d 0a 20 20  een set, its..  
27b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27b10 20 20 2f 2f 20 20 20 20 20 20 20 76 61 6c 75 65    //       value
27b20 20 77 69 6c 6c 20 62 65 20 75 73 65 64 20 76 65   will be used ve
27b30 72 62 61 74 69 6d 20 61 73 20 74 68 65 20 70 6c  rbatim as the pl
27b40 61 63 65 20 77 68 65 72 65 0d 0a 20 20 20 20 20  ace where..     
27b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
27b60 2f 20 20 20 20 20 20 20 61 6c 6c 20 72 65 67 69  /       all regi
27b70 73 74 72 79 20 77 72 69 74 65 20 6f 70 65 72 61  stry write opera
27b80 74 69 6f 6e 73 20 77 69 6c 6c 20 28 65 76 65 6e  tions will (even
27b90 74 75 61 6c 6c 79 29 0d 0a 20 20 20 20 20 20 20  tually)..       
27ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
27bb0 20 20 20 20 20 20 62 65 20 6c 6f 67 67 65 64 2e        be logged.
27bc0 20 20 4d 61 6b 65 20 73 75 72 65 20 74 68 65 20    Make sure the 
27bd0 72 65 67 69 73 74 72 79 20 68 65 6c 70 65 72 20  registry helper 
27be0 63 6c 61 73 73 0d 0a 20 20 20 20 20 20 20 20 20  class..         
27bf0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
27c00 20 20 20 20 68 61 73 20 61 20 76 61 6c 69 64 20      has a valid 
27c10 6f 70 65 72 61 74 69 6f 6e 20 6c 69 73 74 3b 20  operation list; 
27c20 6f 74 68 65 72 77 69 73 65 2c 20 69 74 20 77 69  otherwise, it wi
27c30 6c 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ll..            
27c40 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
27c50 20 6e 6f 74 20 70 65 72 66 6f 72 6d 20 61 6e 79   not perform any
27c60 20 6c 6f 67 67 69 6e 67 2e 0d 0a 20 20 20 20 20   logging...     
27c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
27c80 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
27c90 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 66 69         if (confi
27ca0 67 75 72 61 74 69 6f 6e 2e 72 65 67 69 73 74 72  guration.registr
27cb0 79 4c 6f 67 46 69 6c 65 4e 61 6d 65 20 21 3d 20  yLogFileName != 
27cc0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
27cd0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
27ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27cf0 20 20 20 20 20 20 52 65 67 69 73 74 72 79 48 65        RegistryHe
27d00 6c 70 65 72 2e 45 6e 61 62 6c 65 4f 72 44 69 73  lper.EnableOrDis
27d10 61 62 6c 65 4f 70 65 72 61 74 69 6f 6e 4c 69 73  ableOperationLis
27d20 74 28 74 72 75 65 29 3b 0d 0a 0d 0a 20 20 20 20  t(true);....    
27d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27d40 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62      TraceOps.Deb
27d50 75 67 41 6e 64 54 72 61 63 65 28 54 72 61 63 65  ugAndTrace(Trace
27d60 50 72 69 6f 72 69 74 79 2e 4d 65 64 69 75 6d 48  Priority.MediumH
27d70 69 67 68 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  igh,..          
27d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27d90 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c    debugCallback,
27da0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20   traceCallback, 
27db0 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
27dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27dd0 20 20 20 20 20 20 20 20 20 20 20 20 22 52 65 67              "Reg
27de0 69 73 74 72 79 20 6c 6f 67 67 69 6e 67 20 74 6f  istry logging to
27df0 20 66 69 6c 65 20 7b 30 7d 20 65 6e 61 62 6c 65   file {0} enable
27e00 64 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  d.",..          
27e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27e20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 63 6f 6e    ForDisplay(con
27e30 66 69 67 75 72 61 74 69 6f 6e 2e 72 65 67 69 73  figuration.regis
27e40 74 72 79 4c 6f 67 46 69 6c 65 4e 61 6d 65 29 29  tryLogFileName))
27e50 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
27e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
27e70 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
27e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27e90 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
27ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
27eb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27ec0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
27ed0 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e   the command lin
27ee0 65 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 6d  e has not been m
27ef0 61 6e 75 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  anually..       
27f00 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
27f10 20 20 20 20 20 20 63 6f 6e 66 69 72 6d 65 64 20        confirmed 
27f20 28 69 2e 65 2e 20 76 69 61 20 74 68 65 20 65 78  (i.e. via the ex
27f30 70 6c 69 63 69 74 20 63 6f 6d 6d 61 6e 64 20 6c  plicit command l
27f40 69 6e 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ine..           
27f50 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
27f60 20 20 6f 70 74 69 6f 6e 29 2c 20 74 68 65 6e 20    option), then 
27f70 73 74 6f 70 20 70 72 6f 63 65 73 73 69 6e 67 20  stop processing 
27f80 6e 6f 77 2e 20 20 57 65 20 65 6e 66 6f 72 63 65  now.  We enforce
27f90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27fa0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
27fb0 68 69 73 20 72 75 6c 65 20 73 6f 20 74 68 61 74  his rule so that
27fc0 20 73 69 6d 70 6c 79 20 64 6f 75 62 6c 65 2d 63   simply double-c
27fd0 6c 69 63 6b 69 6e 67 20 74 68 65 0d 0a 20 20 20  licking the..   
27fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27ff0 20 2f 2f 20 20 20 20 20 20 20 65 78 65 63 75 74   //       execut
28000 61 62 6c 65 20 77 69 6c 6c 20 6e 6f 74 20 72 65  able will not re
28010 73 75 6c 74 20 69 6e 20 61 6e 79 20 63 68 61 6e  sult in any chan
28020 67 65 73 20 62 65 69 6e 67 0d 0a 20 20 20 20 20  ges being..     
28030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
28040 2f 20 20 20 20 20 20 20 6d 61 64 65 20 74 6f 20  /       made to 
28050 74 68 65 20 73 79 73 74 65 6d 2e 0d 0a 20 20 20  the system...   
28060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28070 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
28080 20 20 20 20 20 20 20 20 20 69 66 20 28 21 63 6f           if (!co
28090 6e 66 69 67 75 72 61 74 69 6f 6e 2e 63 6f 6e 66  nfiguration.conf
280a0 69 72 6d 29 0d 0a 20 20 20 20 20 20 20 20 20 20  irm)..          
280b0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
280c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
280d0 20 20 20 20 20 65 72 72 6f 72 20 3d 20 22 43 61       error = "Ca
280e0 6e 6e 6f 74 20 63 6f 6e 74 69 6e 75 65 2c 20 74  nnot continue, t
280f0 68 65 20 5c 22 63 6f 6e 66 69 72 6d 5c 22 20 6f  he \"confirm\" o
28100 70 74 69 6f 6e 20 69 73 20 22 20 2b 0d 0a 20 20  ption is " +..  
28110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28120 20 20 20 20 20 20 20 20 20 20 22 6e 6f 74 20 65            "not e
28130 6e 61 62 6c 65 64 2e 22 3b 0d 0a 0d 0a 20 20 20  nabled.";....   
28140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28150 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
28160 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
28170 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
28180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28190 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
281a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
281b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
281c0 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69    catch (Excepti
281d0 6f 6e 20 65 29 0d 0a 20 20 20 20 20 20 20 20 20  on e)..         
281e0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
281f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
28200 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54  aceOps.DebugAndT
28210 72 61 63 65 28 54 72 61 63 65 50 72 69 6f 72 69  race(TracePriori
28220 74 79 2e 48 69 67 68 65 73 74 2c 0d 0a 20 20 20  ty.Highest,..   
28230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28240 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61       debugCallba
28250 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63  ck, traceCallbac
28260 6b 2c 20 65 2c 20 74 72 61 63 65 43 61 74 65 67  k, e, traceCateg
28270 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
28280 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72               err
28290 6f 72 20 3d 20 22 46 61 69 6c 65 64 20 74 6f 20  or = "Failed to 
282a0 70 72 6f 63 65 73 73 20 63 6f 6e 66 69 67 75 72  process configur
282b0 61 74 69 6f 6e 2e 22 3b 0d 0a 20 20 20 20 20 20  ation.";..      
282c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
282d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
282e0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
282f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
28300 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
28310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
28350 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 4d  ..            [M
28360 65 74 68 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64  ethodImpl(Method
28370 49 6d 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e  ImplOptions.NoIn
28380 6c 69 6e 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20  lining)]..      
28390 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
283a0 74 69 63 20 62 6f 6f 6c 20 43 68 65 63 6b 52 75  tic bool CheckRu
283b0 6e 74 69 6d 65 56 65 72 73 69 6f 6e 28 0d 0a 20  ntimeVersion(.. 
283c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
283d0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 63 6f 6e  onfiguration con
283e0 66 69 67 75 72 61 74 69 6f 6e 2c 0d 0a 20 20 20  figuration,..   
283f0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
28400 6c 20 73 74 72 69 63 74 2c 0d 0a 20 20 20 20 20  l strict,..     
28410 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73             ref s
28420 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20  tring error..   
28430 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
28440 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
28450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
28460 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
28470 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
28480 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63             if (c
28490 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 3d 3d 20  onfiguration == 
284a0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
284b0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
284c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
284d0 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 22 49        error = "I
284e0 6e 76 61 6c 69 64 20 63 6f 6e 66 69 67 75 72 61  nvalid configura
284f0 74 69 6f 6e 2e 22 3b 0d 0a 20 20 20 20 20 20 20  tion.";..       
28500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28510 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
28520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28530 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
28540 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
28550 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28560 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 68       // NOTE: Wh
28570 61 74 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68  at version of th
28580 65 20 72 75 6e 74 69 6d 65 20 77 61 73 20 74 68  e runtime was th
28590 65 20 63 6f 72 65 20 28 70 72 69 6d 61 72 79 29  e core (primary)
285a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
285b0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61        //       a
285c0 73 73 65 6d 62 6c 79 20 63 6f 6d 70 69 6c 65 64  ssembly compiled
285d0 20 61 67 61 69 6e 73 74 20 28 65 2e 67 2e 20 22   against (e.g. "
285e0 76 32 2e 30 2e 35 30 37 32 37 22 20 6f 72 0d 0a  v2.0.50727" or..
285f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28600 20 20 20 20 2f 2f 20 20 20 20 20 20 20 22 76 34      //       "v4
28610 2e 30 2e 33 30 33 31 39 22 29 2e 0d 0a 20 20 20  .0.30319")...   
28620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28630 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
28640 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
28650 63 6f 72 65 49 6d 61 67 65 52 75 6e 74 69 6d 65  coreImageRuntime
28660 56 65 72 73 69 6f 6e 20 3d 20 47 65 74 49 6d 61  Version = GetIma
28670 67 65 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e  geRuntimeVersion
28680 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
28690 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
286a0 67 75 72 61 74 69 6f 6e 2e 63 6f 72 65 46 69 6c  guration.coreFil
286b0 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  eName);....     
286c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
286d0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
286e0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
286f0 57 65 20 61 6c 6c 6f 77 20 74 68 65 20 61 63 74  We allow the act
28700 75 61 6c 20 69 6d 61 67 65 20 72 75 6e 74 69 6d  ual image runtim
28710 65 20 63 68 65 63 6b 69 6e 67 20 74 6f 20 62 65  e checking to be
28720 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28730 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 62        //       b
28740 79 70 61 73 73 65 64 20 76 69 61 20 74 68 65 20  ypassed via the 
28750 22 2d 6e 6f 52 75 6e 74 69 6d 65 56 65 72 73 69  "-noRuntimeVersi
28760 6f 6e 22 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65  on" command line
28770 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28780 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f        //       o
28790 70 74 69 6f 6e 2e 20 20 54 68 65 20 63 6f 6d 6d  ption.  The comm
287a0 61 6e 64 20 6c 69 6e 65 20 6f 70 74 69 6f 6e 20  and line option 
287b0 69 73 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 0d  is intended for.
287c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
287d0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 65 78       //       ex
287e0 70 65 72 74 20 75 73 65 20 6f 6e 6c 79 2e 0d 0a  pert use only...
287f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28800 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
28810 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
28820 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f  configuration.no
28830 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 29 0d  RuntimeVersion).
28840 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28850 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
28860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28870 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e  TraceOps.DebugAn
28880 64 54 72 61 63 65 28 54 72 61 63 65 50 72 69 6f  dTrace(TracePrio
28890 72 69 74 79 2e 4d 65 64 69 75 6d 2c 0d 0a 20 20  rity.Medium,..  
288a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
288b0 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43            debugC
288c0 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61  allback, traceCa
288d0 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46  llback, String.F
288e0 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
288f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28900 20 20 20 20 22 41 73 73 65 6d 62 6c 79 20 69 73      "Assembly is
28910 20 63 6f 6d 70 69 6c 65 64 20 66 6f 72 20 74 68   compiled for th
28920 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b  e .NET Framework
28930 20 7b 30 7d 3b 20 22 20 2b 0d 0a 20 20 20 20 20   {0}; " +..     
28940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28950 20 20 20 20 20 20 20 22 68 6f 77 65 76 65 72 2c         "however,
28960 20 69 6e 73 74 61 6c 6c 61 74 69 6f 6e 20 72 65   installation re
28970 73 74 72 69 63 74 69 6f 6e 73 20 62 61 73 65 64  strictions based
28980 20 6f 6e 20 74 68 69 73 20 22 20 2b 0d 0a 20 20   on this " +..  
28990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
289a0 20 20 20 20 20 20 20 20 20 20 22 66 61 63 74 20            "fact 
289b0 68 61 76 65 20 62 65 65 6e 20 64 69 73 61 62 6c  have been disabl
289c0 65 64 20 76 69 61 20 74 68 65 20 63 6f 6d 6d 61  ed via the comma
289d0 6e 64 20 6c 69 6e 65 2e 22 2c 0d 0a 20 20 20 20  nd line.",..    
289e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
289f0 20 20 20 20 20 20 20 20 63 6f 72 65 49 6d 61 67          coreImag
28a00 65 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 29  eRuntimeVersion)
28a10 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29  , traceCategory)
28a20 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
28a30 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
28a40 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  urn true;..     
28a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
28a60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
28a70 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
28a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28a90 2f 2f 20 54 4f 44 4f 3a 20 52 65 73 74 72 69 63  // TODO: Restric
28aa0 74 20 74 68 65 20 63 6f 6e 66 69 67 75 72 61 74  t the configurat
28ab0 69 6f 6e 20 62 61 73 65 64 20 6f 6e 20 77 68 69  ion based on whi
28ac0 63 68 20 69 6d 61 67 65 0d 0a 20 20 20 20 20 20  ch image..      
28ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
28ae0 20 20 20 20 20 20 20 72 75 6e 74 69 6d 65 20 76         runtime v
28af0 65 72 73 69 6f 6e 73 20 28 77 68 69 63 68 20 6d  ersions (which m
28b00 6f 72 65 2d 6f 72 2d 6c 65 73 73 20 63 6f 72 72  ore-or-less corr
28b10 65 73 70 6f 6e 64 0d 0a 20 20 20 20 20 20 20 20  espond..        
28b20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
28b30 20 20 20 20 20 74 6f 20 2e 4e 45 54 20 46 72 61       to .NET Fra
28b40 6d 65 77 6f 72 6b 20 76 65 72 73 69 6f 6e 73 29  mework versions)
28b50 20 61 72 65 20 73 75 70 70 6f 72 74 65 64 20 62   are supported b
28b60 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  y the..         
28b70 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
28b80 20 20 20 20 76 65 72 73 69 6f 6e 73 20 6f 66 20      versions of 
28b90 56 69 73 75 61 6c 20 53 74 75 64 69 6f 20 74 68  Visual Studio th
28ba0 61 74 20 61 72 65 20 69 6e 73 74 61 6c 6c 65 64  at are installed
28bb0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
28bc0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
28bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
28be0 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c  f (String.IsNull
28bf0 4f 72 45 6d 70 74 79 28 63 6f 72 65 49 6d 61 67  OrEmpty(coreImag
28c00 65 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 29  eRuntimeVersion)
28c10 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
28c20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
28c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28c40 20 20 65 72 72 6f 72 20 3d 20 22 69 6e 76 61 6c    error = "inval
28c50 69 64 20 63 6f 72 65 20 66 69 6c 65 20 69 6d 61  id core file ima
28c60 67 65 20 72 75 6e 74 69 6d 65 20 76 65 72 73 69  ge runtime versi
28c70 6f 6e 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  on";..          
28c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
28c90 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
28ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28cb0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
28cc0 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
28cd0 28 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28 0d  (String.Equals(.
28ce0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 72               cor
28d00 65 49 6d 61 67 65 52 75 6e 74 69 6d 65 56 65 72  eImageRuntimeVer
28d10 73 69 6f 6e 2c 20 43 4c 52 76 32 49 6d 61 67 65  sion, CLRv2Image
28d20 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 2c 0d  RuntimeVersion,.
28d30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28d40 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72               Str
28d50 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72  ingComparison.Or
28d60 64 69 6e 61 6c 29 29 0d 0a 20 20 20 20 20 20 20  dinal))..       
28d70 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
28d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28d90 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
28da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28db0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 6f 72      // NOTE: For
28dc0 20 74 68 65 20 43 4c 52 20 76 32 2e 30 20 72 75   the CLR v2.0 ru
28dd0 6e 74 69 6d 65 2c 20 6d 61 6b 65 20 73 75 72 65  ntime, make sure
28de0 20 77 65 20 64 69 73 61 62 6c 65 0d 0a 20 20 20   we disable..   
28df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28e00 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 6e       //       an
28e10 79 20 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65  y attempt to use
28e20 20 69 74 20 66 6f 72 20 74 68 69 6e 67 73 20 74   it for things t
28e30 68 61 74 20 72 65 71 75 69 72 65 0d 0a 20 20 20  hat require..   
28e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28e50 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 6e       //       an
28e60 20 61 73 73 65 6d 62 6c 79 20 63 6f 6d 70 69 6c   assembly compil
28e70 65 64 20 66 6f 72 20 74 68 65 20 43 4c 52 20 76  ed for the CLR v
28e80 34 2e 30 2e 20 20 49 74 20 69 73 0d 0a 20 20 20  4.0.  It is..   
28e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28ea0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75 6e       //       un
28eb0 63 65 72 74 61 69 6e 20 69 66 20 74 68 69 73 20  certain if this 
28ec0 69 73 20 61 63 74 75 61 6c 6c 79 20 61 20 70 72  is actually a pr
28ed0 6f 62 6c 65 6d 20 69 6e 0d 0a 20 20 20 20 20 20  oblem in..      
28ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28ef0 20 20 2f 2f 20 20 20 20 20 20 20 70 72 61 63 74    //       pract
28f00 69 63 65 20 61 73 20 74 68 65 20 43 4c 52 20 76  ice as the CLR v
28f10 34 2e 30 20 63 61 6e 20 6c 6f 61 64 20 61 6e 64  4.0 can load and
28f20 20 75 73 65 20 61 6e 0d 0a 20 20 20 20 20 20 20   use an..       
28f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28f40 20 2f 2f 20 20 20 20 20 20 20 61 73 73 65 6d 62   //       assemb
28f50 6c 79 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  ly compiled with
28f60 20 74 68 65 20 43 4c 52 20 76 32 2e 30 3b 20 68   the CLR v2.0; h
28f70 6f 77 65 76 65 72 2c 0d 0a 20 20 20 20 20 20 20  owever,..       
28f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28f90 20 2f 2f 20 20 20 20 20 20 20 73 69 6e 63 65 20   //       since 
28fa0 74 68 69 73 20 70 72 6f 6a 65 63 74 20 6f 66 66  this project off
28fb0 65 72 73 20 62 6f 74 68 20 63 6f 6e 66 69 67 75  ers both configu
28fc0 72 61 74 69 6f 6e 73 2c 0d 0a 20 20 20 20 20 20  rations,..      
28fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28fe0 20 20 2f 2f 20 20 20 20 20 20 20 77 65 20 63 75    //       we cu
28ff0 72 72 65 6e 74 6c 79 20 64 69 73 61 6c 6c 6f 77  rrently disallow
29000 20 74 68 69 73 20 6d 69 73 6d 61 74 63 68 2e 0d   this mismatch..
29010 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29020 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
29030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29040 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
29050 6f 6e 2e 6e 6f 4e 65 74 46 78 34 30 20 3d 20 74  on.noNetFx40 = t
29060 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
29070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
29080 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65  nfiguration.noNe
29090 74 46 78 34 35 20 3d 20 74 72 75 65 3b 0d 0a 20  tFx45 = true;.. 
290a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
290b0 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
290c0 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34 35 31 20  tion.noNetFx451 
290d0 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
290e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
290f0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e   configuration.n
29100 6f 4e 65 74 46 78 34 35 32 20 3d 20 74 72 75 65  oNetFx452 = true
29110 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
29120 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
29130 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78  guration.noNetFx
29140 34 36 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  46 = true;..    
29150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29160 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
29170 6e 2e 6e 6f 4e 65 74 46 78 34 36 31 20 3d 20 74  n.noNetFx461 = t
29180 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
29190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
291a0 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65  nfiguration.noNe
291b0 74 46 78 34 36 32 20 3d 20 74 72 75 65 3b 0d 0a  tFx462 = true;..
291c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
291d0 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72          configur
291e0 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34 37 20  ation.noNetFx47 
291f0 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
29200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29210 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e   configuration.n
29220 6f 4e 65 74 46 78 34 37 31 20 3d 20 74 72 75 65  oNetFx471 = true
29230 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
29240 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
29250 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 31  guration.noVs201
29260 30 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  0 = true;..     
29270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29280 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
29290 2e 6e 6f 56 73 32 30 31 32 20 3d 20 74 72 75 65  .noVs2012 = true
292a0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
292b0 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
292c0 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 31  guration.noVs201
292d0 33 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  3 = true;..     
292e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
292f0 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
29300 2e 6e 6f 56 73 32 30 31 35 20 3d 20 74 72 75 65  .noVs2015 = true
29310 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
29320 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
29330 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 31  guration.noVs201
29340 37 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20  7 = true;....   
29350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29360 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65       TraceOps.De
29370 62 75 67 41 6e 64 54 72 61 63 65 28 54 72 61 63  bugAndTrace(Trac
29380 65 50 72 69 6f 72 69 74 79 2e 4d 65 64 69 75 6d  ePriority.Medium
29390 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
293a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
293b0 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72  ebugCallback, tr
293c0 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72  aceCallback, Str
293d0 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
293e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
293f0 20 20 20 20 20 20 20 20 20 22 41 73 73 65 6d 62           "Assemb
29400 6c 79 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 66  ly is compiled f
29410 6f 72 20 74 68 65 20 2e 4e 45 54 20 46 72 61 6d  or the .NET Fram
29420 65 77 6f 72 6b 20 7b 30 7d 2c 20 22 20 2b 0d 0a  ework {0}, " +..
29430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29440 20 20 20 20 20 20 20 20 20 20 20 20 22 73 75 70              "sup
29450 70 6f 72 74 20 66 6f 72 20 74 68 65 20 2e 4e 45  port for the .NE
29460 54 20 46 72 61 6d 65 77 6f 72 6b 20 7b 31 7d 20  T Framework {1} 
29470 69 73 20 6e 6f 77 20 64 69 73 61 62 6c 65 64 2e  is now disabled.
29480 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
29490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
294a0 43 4c 52 76 32 49 6d 61 67 65 52 75 6e 74 69 6d  CLRv2ImageRuntim
294b0 65 56 65 72 73 69 6f 6e 2c 20 43 4c 52 76 34 49  eVersion, CLRv4I
294c0 6d 61 67 65 52 75 6e 74 69 6d 65 56 65 72 73 69  mageRuntimeVersi
294d0 6f 6e 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  on),..          
294e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
294f0 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
29500 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
29510 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
29520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
29530 73 65 20 69 66 20 28 53 74 72 69 6e 67 2e 45 71  se if (String.Eq
29540 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20  uals(..         
29550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29560 20 20 20 63 6f 72 65 49 6d 61 67 65 52 75 6e 74     coreImageRunt
29570 69 6d 65 56 65 72 73 69 6f 6e 2c 20 43 4c 52 76  imeVersion, CLRv
29580 34 49 6d 61 67 65 52 75 6e 74 69 6d 65 56 65 72  4ImageRuntimeVer
29590 73 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20  sion,..         
295a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
295b0 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69     StringCompari
295c0 73 6f 6e 2e 4f 72 64 69 6e 61 6c 29 29 0d 0a 20  son.Ordinal)).. 
295d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
295e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
295f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
29600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29610 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
29620 45 3a 20 46 6f 72 20 74 68 65 20 43 4c 52 20 76  E: For the CLR v
29630 34 2e 30 20 72 75 6e 74 69 6d 65 2c 20 6d 61 6b  4.0 runtime, mak
29640 65 20 73 75 72 65 20 77 65 20 64 69 73 61 62 6c  e sure we disabl
29650 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
29660 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
29670 20 20 20 20 61 6e 79 20 61 74 74 65 6d 70 74 20      any attempt 
29680 74 6f 20 75 73 65 20 69 74 20 66 6f 72 20 74 68  to use it for th
29690 69 6e 67 73 20 74 68 61 74 20 72 65 71 75 69 72  ings that requir
296a0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
296b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
296c0 20 20 20 20 61 6e 20 61 73 73 65 6d 62 6c 79 20      an assembly 
296d0 63 6f 6d 70 69 6c 65 64 20 66 6f 72 20 74 68 65  compiled for the
296e0 20 43 4c 52 20 76 32 2e 30 2e 0d 0a 20 20 20 20   CLR v2.0...    
296f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29700 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
29710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29720 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f  configuration.no
29730 4e 65 74 46 78 32 30 20 3d 20 74 72 75 65 3b 0d  NetFx20 = true;.
29740 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29750 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
29760 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 33 35  ration.noNetFx35
29770 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
29780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29790 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e    configuration.
297a0 6e 6f 56 73 32 30 30 35 20 3d 20 74 72 75 65 3b  noVs2005 = true;
297b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
297c0 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67            config
297d0 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 30 38  uration.noVs2008
297e0 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20   = true;....    
297f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29800 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62      TraceOps.Deb
29810 75 67 41 6e 64 54 72 61 63 65 28 54 72 61 63 65  ugAndTrace(Trace
29820 50 72 69 6f 72 69 74 79 2e 4d 65 64 69 75 6d 2c  Priority.Medium,
29830 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
29850 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61  bugCallback, tra
29860 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69  ceCallback, Stri
29870 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
29880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29890 20 20 20 20 20 20 20 20 22 41 73 73 65 6d 62 6c          "Assembl
298a0 79 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 66 6f  y is compiled fo
298b0 72 20 74 68 65 20 2e 4e 45 54 20 46 72 61 6d 65  r the .NET Frame
298c0 77 6f 72 6b 20 7b 30 7d 2c 20 22 20 2b 0d 0a 20  work {0}, " +.. 
298d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
298e0 20 20 20 20 20 20 20 20 20 20 20 22 73 75 70 70             "supp
298f0 6f 72 74 20 66 6f 72 20 74 68 65 20 2e 4e 45 54  ort for the .NET
29900 20 46 72 61 6d 65 77 6f 72 6b 20 7b 31 7d 20 69   Framework {1} i
29910 73 20 6e 6f 77 20 64 69 73 61 62 6c 65 64 2e 22  s now disabled."
29920 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
29930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46                 F
29940 6f 72 44 69 73 70 6c 61 79 28 43 4c 52 76 34 49  orDisplay(CLRv4I
29950 6d 61 67 65 52 75 6e 74 69 6d 65 56 65 72 73 69  mageRuntimeVersi
29960 6f 6e 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  on),..          
29970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29980 20 20 46 6f 72 44 69 73 70 6c 61 79 28 43 4c 52    ForDisplay(CLR
29990 76 32 49 6d 61 67 65 52 75 6e 74 69 6d 65 56 65  v2ImageRuntimeVe
299a0 72 73 69 6f 6e 29 29 2c 0d 0a 20 20 20 20 20 20  rsion)),..      
299b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
299c0 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
299d0 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ory);..         
299e0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
299f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29a00 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
29a10 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
29a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29a30 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 53         error = S
29a40 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
29a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29a60 20 20 20 20 20 20 20 20 20 20 20 22 75 6e 73 75             "unsu
29a70 70 70 6f 72 74 65 64 20 63 6f 72 65 20 66 69 6c  pported core fil
29a80 65 20 69 6d 61 67 65 20 72 75 6e 74 69 6d 65 20  e image runtime 
29a90 76 65 72 73 69 6f 6e 20 22 20 2b 0d 0a 20 20 20  version " +..   
29aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29ab0 20 20 20 20 20 20 20 20 20 22 7b 30 7d 2c 20 6d           "{0}, m
29ac0 75 73 74 20 62 65 20 7b 31 7d 20 6f 72 20 7b 32  ust be {1} or {2
29ad0 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
29ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29af0 20 46 6f 72 44 69 73 70 6c 61 79 28 63 6f 72 65   ForDisplay(core
29b00 49 6d 61 67 65 52 75 6e 74 69 6d 65 56 65 72 73  ImageRuntimeVers
29b10 69 6f 6e 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  ion),..         
29b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29b30 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 43 4c     ForDisplay(CL
29b40 52 76 32 49 6d 61 67 65 52 75 6e 74 69 6d 65 56  Rv2ImageRuntimeV
29b50 65 72 73 69 6f 6e 29 2c 0d 0a 20 20 20 20 20 20  ersion),..      
29b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29b70 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79        ForDisplay
29b80 28 43 4c 52 76 34 49 6d 61 67 65 52 75 6e 74 69  (CLRv4ImageRunti
29b90 6d 65 56 65 72 73 69 6f 6e 29 29 3b 0d 0a 0d 0a  meVersion));....
29ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29bb0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
29bc0 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
29bd0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
29be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29bf0 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
29c00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29c10 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
29c20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
29c30 70 74 69 6f 6e 20 65 29 0d 0a 20 20 20 20 20 20  ption e)..      
29c40 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
29c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29c60 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
29c70 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72 69  ndTrace(TracePri
29c80 6f 72 69 74 79 2e 48 69 67 68 65 73 74 2c 0d 0a  ority.Highest,..
29c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29ca0 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61 6c          debugCal
29cb0 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c  lback, traceCall
29cc0 62 61 63 6b 2c 20 65 2c 20 74 72 61 63 65 43 61  back, e, traceCa
29cd0 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
29ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29cf0 65 72 72 6f 72 20 3d 20 22 46 61 69 6c 65 64 20  error = "Failed 
29d00 74 6f 20 63 68 65 63 6b 20 69 6d 61 67 65 20 72  to check image r
29d10 75 6e 74 69 6d 65 20 76 65 72 73 69 6f 6e 2e 22  untime version."
29d20 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
29d30 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
29d40 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
29d50 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
29d60 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
29d70 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
29d80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
29d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
29dd0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
29de0 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d  region Private M
29df0 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
29e00 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69      private stri
29e10 6e 67 20 47 65 74 49 6e 76 61 72 69 61 6e 74 4e  ng GetInvariantN
29e20 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
29e30 20 20 20 20 20 20 62 6f 6f 6c 20 74 72 61 63 65        bool trace
29e40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29e50 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
29e60 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
29e70 20 20 20 20 72 65 74 75 72 6e 20 55 73 65 45 66      return UseEf
29e80 36 50 72 6f 76 69 64 65 72 28 74 72 61 63 65 29  6Provider(trace)
29e90 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   ?..            
29ea0 20 20 20 20 20 20 20 20 45 66 36 49 6e 76 61 72          Ef6Invar
29eb0 69 61 6e 74 4e 61 6d 65 20 3a 20 49 6e 76 61 72  iantName : Invar
29ec0 69 61 6e 74 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  iantName;..     
29ed0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
29ee0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
29ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
29f30 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
29f40 74 65 20 62 6f 6f 6c 20 49 73 53 79 73 74 65 6d  te bool IsSystem
29f50 45 66 36 41 73 73 65 6d 62 6c 79 41 76 61 69 6c  Ef6AssemblyAvail
29f60 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20  able(..         
29f70 20 20 20 20 20 20 20 62 6f 6f 6c 20 74 72 61 63         bool trac
29f80 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
29f90 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
29fa0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
29fb0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
29fc0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
29fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29fe0 20 69 66 20 28 73 79 73 74 65 6d 45 66 36 41 73   if (systemEf6As
29ff0 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d  sembly == null).
2a000 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a010 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2a020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a030 73 79 73 74 65 6d 45 66 36 41 73 73 65 6d 62 6c  systemEf6Assembl
2a040 79 20 3d 20 41 73 73 65 6d 62 6c 79 2e 52 65 66  y = Assembly.Ref
2a050 6c 65 63 74 69 6f 6e 4f 6e 6c 79 4c 6f 61 64 28  lectionOnlyLoad(
2a060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 79                Sy
2a080 73 74 65 6d 45 66 36 41 73 73 65 6d 62 6c 79 4e  stemEf6AssemblyN
2a090 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ame);..         
2a0a0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2a0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a0c0 20 20 20 20 69 66 20 28 73 79 73 74 65 6d 45 66      if (systemEf
2a0d0 36 41 73 73 65 6d 62 6c 79 20 21 3d 20 6e 75 6c  6Assembly != nul
2a0e0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2a0f0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2a100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a110 20 20 20 69 66 20 28 74 72 61 63 65 20 26 26 0d     if (trace &&.
2a120 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a130 20 20 20 20 20 20 20 20 20 20 20 20 20 21 48 61               !Ha
2a140 73 46 6c 61 67 73 28 50 72 6f 76 69 64 65 72 46  sFlags(ProviderF
2a150 6c 61 67 73 2e 44 69 64 45 66 36 52 65 73 6f 6c  lags.DidEf6Resol
2a160 76 65 54 72 61 63 65 2c 20 74 72 75 65 29 29 0d  veTrace, true)).
2a170 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a180 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2a190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a1a0 20 20 20 20 20 20 20 20 54 72 61 63 65 4f 70 73          TraceOps
2a1b0 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 54  .DebugAndTrace(T
2a1c0 72 61 63 65 50 72 69 6f 72 69 74 79 2e 48 69 67  racePriority.Hig
2a1d0 68 65 73 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  hest,..         
2a1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a1f0 20 20 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c         debugCall
2a200 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62  back, traceCallb
2a210 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d  ack, String.Form
2a220 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
2a230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a240 20 20 20 20 20 22 45 6e 74 69 74 79 20 46 72 61       "Entity Fra
2a250 6d 65 77 6f 72 6b 20 36 20 61 73 73 65 6d 62 6c  mework 6 assembl
2a260 79 20 77 61 73 20 22 20 2b 0d 0a 20 20 20 20 20  y was " +..     
2a270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a280 20 20 20 20 20 20 20 20 20 20 20 22 72 65 73 6f             "reso
2a290 6c 76 65 64 20 74 6f 20 7b 30 7d 2e 22 2c 20 46  lved to {0}.", F
2a2a0 6f 72 44 69 73 70 6c 61 79 28 0d 0a 20 20 20 20  orDisplay(..    
2a2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a2c0 20 20 20 20 20 20 20 20 20 20 20 20 73 79 73 74              syst
2a2d0 65 6d 45 66 36 41 73 73 65 6d 62 6c 79 2e 4c 6f  emEf6Assembly.Lo
2a2e0 63 61 74 69 6f 6e 29 29 2c 0d 0a 20 20 20 20 20  cation)),..     
2a2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a300 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2a310 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
2a320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a330 20 20 20 20 20 20 20 20 20 20 70 72 6f 76 69 64            provid
2a340 65 72 46 6c 61 67 73 20 7c 3d 20 50 72 6f 76 69  erFlags |= Provi
2a350 64 65 72 46 6c 61 67 73 2e 44 69 64 45 66 36 52  derFlags.DidEf6R
2a360 65 73 6f 6c 76 65 54 72 61 63 65 3b 0d 0a 20 20  esolveTrace;..  
2a370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a380 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2a390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a3a0 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
2a3b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a3c0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2a3d0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2a3e0 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
2a3f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a400 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2a410 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
2a420 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
2a430 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2a440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2a450 20 28 74 72 61 63 65 20 26 26 0d 0a 20 20 20 20   (trace &&..    
2a460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a470 21 48 61 73 46 6c 61 67 73 28 50 72 6f 76 69 64  !HasFlags(Provid
2a480 65 72 46 6c 61 67 73 2e 44 69 64 45 66 36 52 65  erFlags.DidEf6Re
2a490 73 6f 6c 76 65 54 72 61 63 65 2c 20 74 72 75 65  solveTrace, true
2a4a0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
2a4b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2a4c0 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
2a4d0 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
2a4e0 65 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e  e(TracePriority.
2a4f0 48 69 67 68 65 73 74 2c 0d 0a 20 20 20 20 20 20  Highest,..      
2a500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a510 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c    debugCallback,
2a520 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 0d   traceCallback,.
2a530 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a540 20 20 20 20 20 20 20 20 20 22 45 6e 74 69 74 79           "Entity
2a550 20 46 72 61 6d 65 77 6f 72 6b 20 36 20 61 73 73   Framework 6 ass
2a560 65 6d 62 6c 79 20 77 61 73 20 6e 6f 74 20 72 65  embly was not re
2a570 73 6f 6c 76 65 64 2e 22 2c 0d 0a 20 20 20 20 20  solved.",..     
2a580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a590 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
2a5a0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2a5b0 20 20 20 20 20 20 20 20 20 20 70 72 6f 76 69 64            provid
2a5c0 65 72 46 6c 61 67 73 20 7c 3d 20 50 72 6f 76 69  erFlags |= Provi
2a5d0 64 65 72 46 6c 61 67 73 2e 44 69 64 45 66 36 52  derFlags.DidEf6R
2a5e0 65 73 6f 6c 76 65 54 72 61 63 65 3b 0d 0a 20 20  esolveTrace;..  
2a5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2a600 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2a610 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
2a620 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2a630 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e  .            #en
2a640 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
2a650 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2a660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2a6a0 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
2a6b0 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64 73  n Public Methods
2a6c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
2a6d0 62 6c 69 63 20 62 6f 6f 6c 20 48 61 73 46 6c 61  blic bool HasFla
2a6e0 67 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gs(..           
2a6f0 20 20 20 20 20 49 6e 73 74 61 6c 6c 46 6c 61 67       InstallFlag
2a700 73 20 68 61 73 46 6c 61 67 73 2c 0d 0a 20 20 20  s hasFlags,..   
2a710 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
2a720 6c 20 61 6c 6c 0d 0a 20 20 20 20 20 20 20 20 20  l all..         
2a730 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
2a740 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2a750 20 20 20 20 20 20 20 20 20 69 66 20 28 61 6c 6c           if (all
2a760 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2a770 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28         return ((
2a780 69 6e 73 74 61 6c 6c 46 6c 61 67 73 20 26 20 68  installFlags & h
2a790 61 73 46 6c 61 67 73 29 20 3d 3d 20 68 61 73 46  asFlags) == hasF
2a7a0 6c 61 67 73 29 3b 0d 0a 20 20 20 20 20 20 20 20  lags);..        
2a7b0 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
2a7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a7d0 20 20 72 65 74 75 72 6e 20 28 28 69 6e 73 74 61    return ((insta
2a7e0 6c 6c 46 6c 61 67 73 20 26 20 68 61 73 46 6c 61  llFlags & hasFla
2a7f0 67 73 29 20 21 3d 20 49 6e 73 74 61 6c 6c 46 6c  gs) != InstallFl
2a800 61 67 73 2e 4e 6f 6e 65 29 3b 0d 0a 20 20 20 20  ags.None);..    
2a810 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2a820 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
2a830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2a870 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
2a880 69 63 20 62 6f 6f 6c 20 48 61 73 46 6c 61 67 73  ic bool HasFlags
2a890 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2a8a0 20 20 20 50 72 6f 76 69 64 65 72 46 6c 61 67 73     ProviderFlags
2a8b0 20 68 61 73 46 6c 61 67 73 2c 0d 0a 20 20 20 20   hasFlags,..    
2a8c0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
2a8d0 20 61 6c 6c 0d 0a 20 20 20 20 20 20 20 20 20 20   all..          
2a8e0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
2a8f0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2a900 20 20 20 20 20 20 20 20 69 66 20 28 61 6c 6c 29          if (all)
2a910 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a920 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28 70        return ((p
2a930 72 6f 76 69 64 65 72 46 6c 61 67 73 20 26 20 68  roviderFlags & h
2a940 61 73 46 6c 61 67 73 29 20 3d 3d 20 68 61 73 46  asFlags) == hasF
2a950 6c 61 67 73 29 3b 0d 0a 20 20 20 20 20 20 20 20  lags);..        
2a960 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
2a970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a980 20 20 72 65 74 75 72 6e 20 28 28 70 72 6f 76 69    return ((provi
2a990 64 65 72 46 6c 61 67 73 20 26 20 68 61 73 46 6c  derFlags & hasFl
2a9a0 61 67 73 29 20 21 3d 20 50 72 6f 76 69 64 65 72  ags) != Provider
2a9b0 46 6c 61 67 73 2e 4e 6f 6e 65 29 3b 0d 0a 20 20  Flags.None);..  
2a9c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2a9d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
2a9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2aa20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
2aa30 62 6c 69 63 20 62 6f 6f 6c 20 49 73 4c 69 6e 71  blic bool IsLinq
2aa40 53 75 70 70 6f 72 74 65 64 28 0d 0a 20 20 20 20  Supported(..    
2aa50 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
2aa60 20 74 72 61 63 65 0d 0a 20 20 20 20 20 20 20 20   trace..        
2aa70 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2aa80 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2aa90 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2aaa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2aab0 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 74 6f 20   NOTE: Check to 
2aac0 73 65 65 20 69 66 20 74 68 65 20 63 61 6c 6c 65  see if the calle
2aad0 72 20 68 61 73 20 66 6f 72 63 65 64 20 4c 49 4e  r has forced LIN
2aae0 51 20 73 75 70 70 6f 72 74 20 74 6f 0d 0a 20 20  Q support to..  
2aaf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2ab00 20 20 20 20 20 20 20 62 65 20 65 6e 61 62 6c 65         be enable
2ab10 64 20 2d 4f 52 2d 20 64 69 73 61 62 6c 65 64 2c  d -OR- disabled,
2ab20 20 74 68 65 72 65 62 79 20 62 79 70 61 73 73 69   thereby bypassi
2ab30 6e 67 20 74 68 65 20 6e 65 65 64 0d 0a 20 20 20  ng the need..   
2ab40 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2ab50 20 20 20 20 20 20 66 6f 72 20 22 61 75 74 6f 6d        for "autom
2ab60 61 74 69 63 20 64 65 74 65 63 74 69 6f 6e 22 20  atic detection" 
2ab70 62 79 20 74 68 69 73 20 6d 65 74 68 6f 64 2e 0d  by this method..
2ab80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ab90 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
2aba0 20 20 20 20 20 69 66 20 28 48 61 73 46 6c 61 67       if (HasFlag
2abb0 73 28 50 72 6f 76 69 64 65 72 46 6c 61 67 73 2e  s(ProviderFlags.
2abc0 46 6f 72 63 65 4c 69 6e 71 45 6e 61 62 6c 65 64  ForceLinqEnabled
2abd0 2c 20 74 72 75 65 29 29 0d 0a 20 20 20 20 20 20  , true))..      
2abe0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2abf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ac00 20 69 66 20 28 74 72 61 63 65 20 26 26 0d 0a 20   if (trace &&.. 
2ac10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ac20 20 20 20 20 20 20 20 21 48 61 73 46 6c 61 67 73         !HasFlags
2ac30 28 50 72 6f 76 69 64 65 72 46 6c 61 67 73 2e 44  (ProviderFlags.D
2ac40 69 64 4c 69 6e 71 46 6f 72 63 65 54 72 61 63 65  idLinqForceTrace
2ac50 2c 20 74 72 75 65 29 29 0d 0a 20 20 20 20 20 20  , true))..      
2ac60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2ac70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ac80 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f 70           TraceOp
2ac90 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28  s.DebugAndTrace(
2aca0 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4d 65  TracePriority.Me
2acb0 64 69 75 6d 48 69 67 68 2c 0d 0a 20 20 20 20 20  diumHigh,..     
2acc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2acd0 20 20 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c         debugCall
2ace0 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62  back, traceCallb
2acf0 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ack,..          
2ad00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ad10 20 20 22 46 6f 72 63 65 64 20 74 6f 20 65 6e 61    "Forced to ena
2ad20 62 6c 65 20 73 75 70 70 6f 72 74 20 66 6f 72 20  ble support for 
2ad30 5c 22 4c 69 6e 71 5c 22 2e 22 2c 0d 0a 20 20 20  \"Linq\".",..   
2ad40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ad50 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2ad60 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
2ad70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ad80 20 20 20 20 70 72 6f 76 69 64 65 72 46 6c 61 67      providerFlag
2ad90 73 20 7c 3d 20 50 72 6f 76 69 64 65 72 46 6c 61  s |= ProviderFla
2ada0 67 73 2e 44 69 64 4c 69 6e 71 46 6f 72 63 65 54  gs.DidLinqForceT
2adb0 72 61 63 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  race;..         
2adc0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2add0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ade0 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
2adf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ae00 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2ae10 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 48 61       else if (Ha
2ae20 73 46 6c 61 67 73 28 50 72 6f 76 69 64 65 72 46  sFlags(ProviderF
2ae30 6c 61 67 73 2e 46 6f 72 63 65 4c 69 6e 71 44 69  lags.ForceLinqDi
2ae40 73 61 62 6c 65 64 2c 20 74 72 75 65 29 29 0d 0a  sabled, true))..
2ae50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ae60 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2ae70 20 20 20 20 20 20 20 69 66 20 28 74 72 61 63 65         if (trace
2ae80 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
2ae90 20 20 20 20 20 20 20 20 20 20 20 20 20 21 48 61               !Ha
2aea0 73 46 6c 61 67 73 28 50 72 6f 76 69 64 65 72 46  sFlags(ProviderF
2aeb0 6c 61 67 73 2e 44 69 64 4c 69 6e 71 46 6f 72 63  lags.DidLinqForc
2aec0 65 54 72 61 63 65 2c 20 74 72 75 65 29 29 0d 0a  eTrace, true))..
2aed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aee0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2aef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
2af00 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64  raceOps.DebugAnd
2af10 54 72 61 63 65 28 54 72 61 63 65 50 72 69 6f 72  Trace(TracePrior
2af20 69 74 79 2e 4d 65 64 69 75 6d 48 69 67 68 2c 0d  ity.MediumHigh,.
2af30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2af40 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62               deb
2af50 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63  ugCallback, trac
2af60 65 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  eCallback,..    
2af70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2af80 20 20 20 20 20 20 20 20 22 46 6f 72 63 65 64 20          "Forced 
2af90 74 6f 20 64 69 73 61 62 6c 65 20 73 75 70 70 6f  to disable suppo
2afa0 72 74 20 66 6f 72 20 5c 22 4c 69 6e 71 5c 22 2e  rt for \"Linq\".
2afb0 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
2afc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2afd0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
2afe0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2aff0 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 76 69             provi
2b000 64 65 72 46 6c 61 67 73 20 7c 3d 20 50 72 6f 76  derFlags |= Prov
2b010 69 64 65 72 46 6c 61 67 73 2e 44 69 64 4c 69 6e  iderFlags.DidLin
2b020 71 46 6f 72 63 65 54 72 61 63 65 3b 0d 0a 20 20  qForceTrace;..  
2b030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b040 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2b050 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2b060 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  n false;..      
2b070 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2b080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2b090 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2b0a0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 52 65 74 75     // NOTE: Retu
2b0b0 72 6e 20 6e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  rn non-zero if t
2b0c0 68 65 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53  he System.Data.S
2b0d0 51 4c 69 74 65 2e 4c 69 6e 71 0d 0a 20 20 20 20  QLite.Linq..    
2b0e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
2b0f0 20 20 20 20 20 61 73 73 65 6d 62 6c 79 20 73 68       assembly sh
2b100 6f 75 6c 64 20 62 65 20 70 72 6f 63 65 73 73 65  ould be processe
2b110 64 20 64 75 72 69 6e 67 20 74 68 65 20 69 6e 73  d during the ins
2b120 74 61 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 20  tall...         
2b130 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
2b140 49 66 20 74 68 65 20 74 61 72 67 65 74 20 69 73  If the target is
2b150 20 56 69 73 75 61 6c 20 53 74 75 64 69 6f 20 32   Visual Studio 2
2b160 30 30 35 2c 20 74 68 69 73 20 6d 75 73 74 0d 0a  005, this must..
2b170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b180 2f 2f 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  //       return 
2b190 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 20 20 20  zero...         
2b1a0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
2b1b0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2b1c0 6e 20 21 6e 6f 4e 65 74 46 78 33 35 20 7c 7c 20  n !noNetFx35 || 
2b1d0 21 6e 6f 4e 65 74 46 78 34 30 20 7c 7c 20 21 6e  !noNetFx40 || !n
2b1e0 6f 4e 65 74 46 78 34 35 20 7c 7c 0d 0a 20 20 20  oNetFx45 ||..   
2b1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b200 20 21 6e 6f 4e 65 74 46 78 34 35 31 20 7c 7c 20   !noNetFx451 || 
2b210 21 6e 6f 4e 65 74 46 78 34 35 32 20 7c 7c 20 21  !noNetFx452 || !
2b220 6e 6f 4e 65 74 46 78 34 36 20 7c 7c 0d 0a 20 20  noNetFx46 ||..  
2b230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b240 20 20 21 6e 6f 4e 65 74 46 78 34 36 31 20 7c 7c    !noNetFx461 ||
2b250 20 21 6e 6f 4e 65 74 46 78 34 36 32 20 7c 7c 20   !noNetFx462 || 
2b260 21 6e 6f 4e 65 74 46 78 34 37 20 7c 7c 0d 0a 20  !noNetFx47 ||.. 
2b270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b280 20 20 20 21 6e 6f 4e 65 74 46 78 34 37 31 3b 0d     !noNetFx471;.
2b290 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2b2a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2b2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b2f0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
2b300 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 49 73 45   public bool IsE
2b310 66 36 53 75 70 70 6f 72 74 65 64 28 0d 0a 20 20  f6Supported(..  
2b320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
2b330 6f 6c 20 74 72 61 63 65 0d 0a 20 20 20 20 20 20  ol trace..      
2b340 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
2b350 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2b360 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2b370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b380 2f 2f 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 74  // NOTE: Check t
2b390 6f 20 73 65 65 20 69 66 20 74 68 65 20 63 61 6c  o see if the cal
2b3a0 6c 65 72 20 68 61 73 20 66 6f 72 63 65 64 20 45  ler has forced E
2b3b0 46 36 20 73 75 70 70 6f 72 74 20 74 6f 0d 0a 20  F6 support to.. 
2b3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2b3d0 2f 20 20 20 20 20 20 20 62 65 20 65 6e 61 62 6c  /       be enabl
2b3e0 65 64 20 2d 4f 52 2d 20 64 69 73 61 62 6c 65 64  ed -OR- disabled
2b3f0 2c 20 74 68 65 72 65 62 79 20 62 79 70 61 73 73  , thereby bypass
2b400 69 6e 67 20 74 68 65 20 6e 65 65 64 0d 0a 20 20  ing the need..  
2b410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2b420 20 20 20 20 20 20 20 66 6f 72 20 22 61 75 74 6f         for "auto
2b430 6d 61 74 69 63 20 64 65 74 65 63 74 69 6f 6e 22  matic detection"
2b440 20 62 79 20 74 68 69 73 20 6d 65 74 68 6f 64 2e   by this method.
2b450 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b460 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2b470 20 20 20 20 20 20 69 66 20 28 48 61 73 46 6c 61        if (HasFla
2b480 67 73 28 50 72 6f 76 69 64 65 72 46 6c 61 67 73  gs(ProviderFlags
2b490 2e 46 6f 72 63 65 45 66 36 45 6e 61 62 6c 65 64  .ForceEf6Enabled
2b4a0 2c 20 74 72 75 65 29 29 0d 0a 20 20 20 20 20 20  , true))..      
2b4b0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2b4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b4d0 20 69 66 20 28 74 72 61 63 65 20 26 26 0d 0a 20   if (trace &&.. 
2b4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b4f0 20 20 20 20 20 20 20 21 48 61 73 46 6c 61 67 73         !HasFlags
2b500 28 50 72 6f 76 69 64 65 72 46 6c 61 67 73 2e 44  (ProviderFlags.D
2b510 69 64 45 66 36 46 6f 72 63 65 54 72 61 63 65 2c  idEf6ForceTrace,
2b520 20 74 72 75 65 29 29 0d 0a 20 20 20 20 20 20 20   true))..       
2b530 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2b540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b550 20 20 20 20 20 20 20 20 54 72 61 63 65 4f 70 73          TraceOps
2b560 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 54  .DebugAndTrace(T
2b570 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4d 65 64  racePriority.Med
2b580 69 75 6d 48 69 67 68 2c 0d 0a 20 20 20 20 20 20  iumHigh,..      
2b590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b5a0 20 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62        debugCallb
2b5b0 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61  ack, traceCallba
2b5c0 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck,..           
2b5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b5e0 20 22 46 6f 72 63 65 64 20 74 6f 20 65 6e 61 62   "Forced to enab
2b5f0 6c 65 20 73 75 70 70 6f 72 74 20 66 6f 72 20 5c  le support for \
2b600 22 45 66 36 5c 22 2e 22 2c 0d 0a 20 20 20 20 20  "Ef6\".",..     
2b610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b620 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
2b630 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
2b640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b650 20 20 70 72 6f 76 69 64 65 72 46 6c 61 67 73 20    providerFlags 
2b660 7c 3d 20 50 72 6f 76 69 64 65 72 46 6c 61 67 73  |= ProviderFlags
2b670 2e 44 69 64 45 66 36 46 6f 72 63 65 54 72 61 63  .DidEf6ForceTrac
2b680 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
2b690 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2b6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b6b0 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
2b6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2b6d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b6e0 20 20 65 6c 73 65 20 69 66 20 28 48 61 73 46 6c    else if (HasFl
2b6f0 61 67 73 28 50 72 6f 76 69 64 65 72 46 6c 61 67  ags(ProviderFlag
2b700 73 2e 46 6f 72 63 65 45 66 36 44 69 73 61 62 6c  s.ForceEf6Disabl
2b710 65 64 2c 20 74 72 75 65 29 29 0d 0a 20 20 20 20  ed, true))..    
2b720 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2b730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b740 20 20 20 69 66 20 28 74 72 61 63 65 20 26 26 0d     if (trace &&.
2b750 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b760 20 20 20 20 20 20 20 20 20 21 48 61 73 46 6c 61           !HasFla
2b770 67 73 28 50 72 6f 76 69 64 65 72 46 6c 61 67 73  gs(ProviderFlags
2b780 2e 44 69 64 45 66 36 46 6f 72 63 65 54 72 61 63  .DidEf6ForceTrac
2b790 65 2c 20 74 72 75 65 29 29 0d 0a 20 20 20 20 20  e, true))..     
2b7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2b7b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b7c0 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f            TraceO
2b7d0 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65  ps.DebugAndTrace
2b7e0 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4d  (TracePriority.M
2b7f0 65 64 69 75 6d 48 69 67 68 2c 0d 0a 20 20 20 20  ediumHigh,..    
2b800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b810 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61 6c          debugCal
2b820 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c  lback, traceCall
2b830 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
2b840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b850 20 20 20 22 46 6f 72 63 65 64 20 74 6f 20 64 69     "Forced to di
2b860 73 61 62 6c 65 20 73 75 70 70 6f 72 74 20 66 6f  sable support fo
2b870 72 20 5c 22 45 66 36 5c 22 2e 22 2c 0d 0a 20 20  r \"Ef6\".",..  
2b880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b890 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2b8a0 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
2b8b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b8c0 20 20 20 20 20 70 72 6f 76 69 64 65 72 46 6c 61       providerFla
2b8d0 67 73 20 7c 3d 20 50 72 6f 76 69 64 65 72 46 6c  gs |= ProviderFl
2b8e0 61 67 73 2e 44 69 64 45 66 36 46 6f 72 63 65 54  ags.DidEf6ForceT
2b8f0 72 61 63 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  race;..         
2b900 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2b910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b920 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
2b930 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2b940 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2b950 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2b960 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
2b970 4f 54 45 3a 20 52 65 74 75 72 6e 20 6e 6f 6e 2d  OTE: Return non-
2b980 7a 65 72 6f 20 69 66 20 74 68 65 20 53 79 73 74  zero if the Syst
2b990 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 45  em.Data.SQLite.E
2b9a0 46 36 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  F6..            
2b9b0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 73 73      //       ass
2b9c0 65 6d 62 6c 79 20 73 68 6f 75 6c 64 20 62 65 20  embly should be 
2b9d0 70 72 6f 63 65 73 73 65 64 20 64 75 72 69 6e 67  processed during
2b9e0 20 74 68 65 20 69 6e 73 74 61 6c 6c 2e 0d 0a 20   the install... 
2b9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2ba00 2f 20 20 20 20 20 20 20 49 66 20 74 68 65 20 74  /       If the t
2ba10 61 72 67 65 74 20 69 73 20 56 69 73 75 61 6c 20  arget is Visual 
2ba20 53 74 75 64 69 6f 20 32 30 30 35 20 6f 72 20 56  Studio 2005 or V
2ba30 69 73 75 61 6c 0d 0a 20 20 20 20 20 20 20 20 20  isual..         
2ba40 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
2ba50 53 74 75 64 69 6f 20 32 30 30 38 2c 20 74 68 69  Studio 2008, thi
2ba60 73 20 6d 75 73 74 20 72 65 74 75 72 6e 20 7a 65  s must return ze
2ba70 72 6f 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro...           
2ba80 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2ba90 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f 4e           if (noN
2baa0 65 74 46 78 34 30 20 26 26 0d 0a 20 20 20 20 20  etFx40 &&..     
2bab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2bac0 6f 4e 65 74 46 78 34 35 20 26 26 20 6e 6f 4e 65  oNetFx45 && noNe
2bad0 74 46 78 34 35 31 20 26 26 20 6e 6f 4e 65 74 46  tFx451 && noNetF
2bae0 78 34 35 32 20 26 26 20 6e 6f 4e 65 74 46 78 34  x452 && noNetFx4
2baf0 36 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20  6 &&..          
2bb00 20 20 20 20 20 20 20 20 20 20 6e 6f 4e 65 74 46            noNetF
2bb10 78 34 36 31 20 26 26 20 6e 6f 4e 65 74 46 78 34  x461 && noNetFx4
2bb20 36 32 20 26 26 20 6e 6f 4e 65 74 46 78 34 37 20  62 && noNetFx47 
2bb30 26 26 20 6e 6f 4e 65 74 46 78 34 37 31 29 0d 0a  && noNetFx471)..
2bb40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bb50 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2bb60 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
2bb70 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
2bb80 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2bb90 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2bba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2bbb0 2f 20 4e 4f 54 45 3a 20 41 6c 73 6f 2c 20 69 66  / NOTE: Also, if
2bbc0 20 74 68 65 20 45 46 36 20 63 6f 72 65 20 61 73   the EF6 core as
2bbd0 73 65 6d 62 6c 79 20 69 73 20 75 6e 61 76 61 69  sembly is unavai
2bbe0 6c 61 62 6c 65 2c 20 74 68 69 73 0d 0a 20 20 20  lable, this..   
2bbf0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2bc00 20 20 20 20 20 20 6d 75 73 74 20 72 65 74 75 72        must retur
2bc10 6e 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 20  n zero...       
2bc20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2bc30 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2bc40 28 21 49 73 53 79 73 74 65 6d 45 66 36 41 73 73  (!IsSystemEf6Ass
2bc50 65 6d 62 6c 79 41 76 61 69 6c 61 62 6c 65 28 74  emblyAvailable(t
2bc60 72 61 63 65 29 29 0d 0a 20 20 20 20 20 20 20 20  race))..        
2bc70 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2bc80 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
2bc90 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2bca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2bcb0 20 2f 2f 20 4e 4f 54 45 3a 20 46 69 6e 61 6c 6c   // NOTE: Finall
2bcc0 79 2c 20 69 66 20 74 68 65 20 45 46 36 20 63 6f  y, if the EF6 co
2bcd0 72 65 20 61 73 73 65 6d 62 6c 79 20 69 73 20 6e  re assembly is n
2bce0 6f 74 20 61 76 61 69 6c 61 62 6c 65 0d 0a 20 20  ot available..  
2bcf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2bd00 20 20 20 20 20 20 20 67 6c 6f 62 61 6c 6c 79 20         globally 
2bd10 5b 61 6e 64 20 74 68 69 73 20 69 73 20 61 20 72  [and this is a r
2bd20 65 71 75 69 72 65 6d 65 6e 74 20 66 6f 72 20 74  equirement for t
2bd30 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20  he current..    
2bd40 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
2bd50 20 20 20 20 20 69 6e 73 74 61 6c 6c 5d 2c 20 72       install], r
2bd60 65 74 75 72 6e 20 7a 65 72 6f 2e 0d 0a 20 20 20  eturn zero...   
2bd70 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2bd80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2bd90 20 72 65 74 75 72 6e 20 48 61 73 46 6c 61 67 73   return HasFlags
2bda0 28 50 72 6f 76 69 64 65 72 46 6c 61 67 73 2e 53  (ProviderFlags.S
2bdb0 79 73 74 65 6d 45 66 36 4d 75 73 74 42 65 47 6c  ystemEf6MustBeGl
2bdc0 6f 62 61 6c 2c 20 74 72 75 65 29 20 3f 0d 0a 20  obal, true) ?.. 
2bdd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bde0 20 20 20 49 73 53 79 73 74 65 6d 45 66 36 41 73     IsSystemEf6As
2bdf0 73 65 6d 62 6c 79 47 6c 6f 62 61 6c 28 29 20 3a  semblyGlobal() :
2be00 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
2be10 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2be20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2be30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be60 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2be70 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
2be80 62 6f 6f 6c 20 49 73 45 66 36 41 73 73 65 6d 62  bool IsEf6Assemb
2be90 6c 79 47 6c 6f 62 61 6c 28 29 0d 0a 20 20 20 20  lyGlobal()..    
2bea0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2beb0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65             if (e
2bec0 66 36 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d  f6AssemblyName =
2bed0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2bee0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2bef0 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
2bf00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 73                As
2bf10 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79 20  sembly assembly 
2bf20 3d 20 41 73 73 65 6d 62 6c 79 2e 52 65 66 6c 65  = Assembly.Refle
2bf30 63 74 69 6f 6e 4f 6e 6c 79 4c 6f 61 64 28 0d 0a  ctionOnlyLoad(..
2bf40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bf50 20 20 20 20 65 66 36 41 73 73 65 6d 62 6c 79 4e      ef6AssemblyN
2bf60 61 6d 65 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b  ame.ToString());
2bf70 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2bf80 20 20 20 20 72 65 74 75 72 6e 20 28 61 73 73 65      return (asse
2bf90 6d 62 6c 79 20 21 3d 20 6e 75 6c 6c 29 20 26 26  mbly != null) &&
2bfa0 20 61 73 73 65 6d 62 6c 79 2e 47 6c 6f 62 61 6c   assembly.Global
2bfb0 41 73 73 65 6d 62 6c 79 43 61 63 68 65 3b 0d 0a  AssemblyCache;..
2bfc0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2bfd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2bfe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c020 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2c030 70 75 62 6c 69 63 20 62 6f 6f 6c 20 55 73 65 45  public bool UseE
2c040 66 36 50 72 6f 76 69 64 65 72 28 0d 0a 20 20 20  f6Provider(..   
2c050 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
2c060 6c 20 74 72 61 63 65 0d 0a 20 20 20 20 20 20 20  l trace..       
2c070 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
2c080 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2c090 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2c0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2c0b0 2f 20 4e 4f 54 45 3a 20 57 65 20 63 61 6e 6e 6f  / NOTE: We canno
2c0c0 74 20 75 73 65 20 74 68 65 20 45 46 36 20 61 73  t use the EF6 as
2c0d0 73 65 6d 62 6c 79 20 61 73 20 74 68 65 20 70 72  sembly as the pr
2c0e0 6f 76 69 64 65 72 20 69 66 20 69 74 0d 0a 20 20  ovider if it..  
2c0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2c100 20 20 20 20 20 20 20 69 73 20 6e 6f 74 20 73 75         is not su
2c110 70 70 6f 72 74 65 64 20 62 79 20 74 68 69 73 20  pported by this 
2c120 69 6e 73 74 61 6c 6c 61 74 69 6f 6e 2e 0d 0a 20  installation... 
2c130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2c140 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2c150 20 20 20 69 66 20 28 21 49 73 45 66 36 53 75 70     if (!IsEf6Sup
2c160 70 6f 72 74 65 64 28 74 72 61 63 65 29 29 0d 0a  ported(trace))..
2c170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c180 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
2c190 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2c1a0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2c1b0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
2c1c0 3a 20 46 6f 72 20 74 68 65 20 45 46 36 20 61 73  : For the EF6 as
2c1d0 73 65 6d 62 6c 79 20 74 6f 20 62 65 20 75 73 61  sembly to be usa
2c1e0 62 6c 65 20 61 73 20 61 20 70 72 6f 76 69 64 65  ble as a provide
2c1f0 72 20 69 6e 0d 0a 20 20 20 20 20 20 20 20 20 20  r in..          
2c200 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
2c210 68 65 20 6d 61 63 68 69 6e 65 20 63 6f 6e 66 69  he machine confi
2c220 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2c 20 69  guration file, i
2c230 74 20 6d 75 73 74 20 62 65 20 69 6e 20 74 68 65  t must be in the
2c240 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c250 20 20 2f 2f 20 20 20 20 20 20 20 67 6c 6f 62 61    //       globa
2c260 6c 20 61 73 73 65 6d 62 6c 79 20 63 61 63 68 65  l assembly cache
2c270 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2c280 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2c290 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 73         return Is
2c2a0 45 66 36 41 73 73 65 6d 62 6c 79 47 6c 6f 62 61  Ef6AssemblyGloba
2c2b0 6c 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  l();..          
2c2c0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2c2d0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2c2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c310 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2c320 20 20 20 20 20 20 2f 2a 20 52 45 51 55 49 52 45        /* REQUIRE
2c330 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
2c340 20 20 70 75 62 6c 69 63 20 41 73 73 65 6d 62 6c    public Assembl
2c350 79 4e 61 6d 65 20 47 65 74 43 6f 72 65 41 73 73  yName GetCoreAss
2c360 65 6d 62 6c 79 4e 61 6d 65 28 0d 0a 20 20 20 20  emblyName(..    
2c370 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
2c380 20 74 72 61 63 65 20 2f 2a 20 4e 4f 54 20 55 53   trace /* NOT US
2c390 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ED */..         
2c3a0 20 20 20 20 20 20 20 29 20 2f 2a 20 74 68 72 6f         ) /* thro
2c3b0 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
2c3c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2c3d0 20 20 20 20 20 69 66 20 28 63 6f 72 65 41 73 73       if (coreAss
2c3e0 65 6d 62 6c 79 4e 61 6d 65 20 3d 3d 20 6e 75 6c  emblyName == nul
2c3f0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2c400 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2c410 20 20 20 20 20 20 20 20 20 20 20 63 6f 72 65 41             coreA
2c420 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20 41 73  ssemblyName = As
2c430 73 65 6d 62 6c 79 4e 61 6d 65 2e 47 65 74 41 73  semblyName.GetAs
2c440 73 65 6d 62 6c 79 4e 61 6d 65 28 0d 0a 20 20 20  semblyName(..   
2c450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c460 20 20 20 20 20 43 6f 72 65 46 69 6c 65 4e 61 6d       CoreFileNam
2c470 65 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  e); /* throw */.
2c480 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c490 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2c4a0 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 6f 72        return cor
2c4b0 65 41 73 73 65 6d 62 6c 79 4e 61 6d 65 3b 0d 0a  eAssemblyName;..
2c4c0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2c4d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c520 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2c530 2f 2a 20 4f 50 54 49 4f 4e 41 4c 20 2a 2f 0d 0a  /* OPTIONAL */..
2c540 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
2c550 69 63 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20  ic AssemblyName 
2c560 47 65 74 4c 69 6e 71 41 73 73 65 6d 62 6c 79 4e  GetLinqAssemblyN
2c570 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
2c580 20 20 20 20 20 20 62 6f 6f 6c 20 74 72 61 63 65        bool trace
2c590 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c5a0 20 20 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d    ) /* throw */.
2c5b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2c5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c5d0 69 66 20 28 49 73 4c 69 6e 71 53 75 70 70 6f 72  if (IsLinqSuppor
2c5e0 74 65 64 28 74 72 61 63 65 29 20 26 26 20 28 6c  ted(trace) && (l
2c5f0 69 6e 71 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20  inqAssemblyName 
2c600 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20  == null))..     
2c610 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2c620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c630 20 20 6c 69 6e 71 41 73 73 65 6d 62 6c 79 4e 61    linqAssemblyNa
2c640 6d 65 20 3d 20 41 73 73 65 6d 62 6c 79 4e 61 6d  me = AssemblyNam
2c650 65 2e 47 65 74 41 73 73 65 6d 62 6c 79 4e 61 6d  e.GetAssemblyNam
2c660 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2c670 20 20 20 20 20 20 20 20 20 20 20 20 4c 69 6e 71              Linq
2c680 46 69 6c 65 4e 61 6d 65 29 3b 20 2f 2a 20 74 68  FileName); /* th
2c690 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
2c6a0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2c6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2c6c0 75 72 6e 20 6c 69 6e 71 41 73 73 65 6d 62 6c 79  urn linqAssembly
2c6d0 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
2c6e0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2c6f0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2c700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c730 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2c740 20 20 20 20 20 20 20 2f 2a 20 4f 50 54 49 4f 4e         /* OPTION
2c750 41 4c 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  AL */..         
2c760 20 20 20 70 75 62 6c 69 63 20 41 73 73 65 6d 62     public Assemb
2c770 6c 79 4e 61 6d 65 20 47 65 74 45 66 36 41 73 73  lyName GetEf6Ass
2c780 65 6d 62 6c 79 4e 61 6d 65 28 0d 0a 20 20 20 20  emblyName(..    
2c790 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
2c7a0 20 74 72 61 63 65 0d 0a 20 20 20 20 20 20 20 20   trace..        
2c7b0 20 20 20 20 20 20 20 20 29 20 2f 2a 20 74 68 72          ) /* thr
2c7c0 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
2c7d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2c7e0 20 20 20 20 20 20 69 66 20 28 49 73 45 66 36 53        if (IsEf6S
2c7f0 75 70 70 6f 72 74 65 64 28 74 72 61 63 65 29 20  upported(trace) 
2c800 26 26 20 28 65 66 36 41 73 73 65 6d 62 6c 79 4e  && (ef6AssemblyN
2c810 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20  ame == null)).. 
2c820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2c830 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c840 20 20 20 20 20 20 65 66 36 41 73 73 65 6d 62 6c        ef6Assembl
2c850 79 4e 61 6d 65 20 3d 20 41 73 73 65 6d 62 6c 79  yName = Assembly
2c860 4e 61 6d 65 2e 47 65 74 41 73 73 65 6d 62 6c 79  Name.GetAssembly
2c870 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20  Name(..         
2c880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45                 E
2c890 66 36 46 69 6c 65 4e 61 6d 65 29 3b 20 2f 2a 20  f6FileName); /* 
2c8a0 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
2c8b0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2c8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2c8d0 65 74 75 72 6e 20 65 66 36 41 73 73 65 6d 62 6c  eturn ef6Assembl
2c8e0 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  yName;..        
2c8f0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2c900 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2c910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c940 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2c950 20 20 20 20 20 20 20 20 2f 2a 20 52 45 51 55 49          /* REQUI
2c960 52 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  RED */..        
2c970 20 20 20 20 70 75 62 6c 69 63 20 41 73 73 65 6d      public Assem
2c980 62 6c 79 4e 61 6d 65 20 47 65 74 44 65 73 69 67  blyName GetDesig
2c990 6e 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 28  nerAssemblyName(
2c9a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c9b0 20 20 62 6f 6f 6c 20 74 72 61 63 65 20 2f 2a 20    bool trace /* 
2c9c0 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
2c9d0 20 20 20 20 20 20 20 20 20 20 20 20 20 29 20 2f               ) /
2c9e0 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
2c9f0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2ca00 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
2ca10 65 73 69 67 6e 65 72 41 73 73 65 6d 62 6c 79 4e  esignerAssemblyN
2ca20 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ame == null)..  
2ca30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2ca40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ca50 20 20 20 20 20 64 65 73 69 67 6e 65 72 41 73 73       designerAss
2ca60 65 6d 62 6c 79 4e 61 6d 65 20 3d 20 41 73 73 65  emblyName = Asse
2ca70 6d 62 6c 79 4e 61 6d 65 2e 47 65 74 41 73 73 65  mblyName.GetAsse
2ca80 6d 62 6c 79 4e 61 6d 65 28 0d 0a 20 20 20 20 20  mblyName(..     
2ca90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2caa0 20 20 20 44 65 73 69 67 6e 65 72 46 69 6c 65 4e     DesignerFileN
2cab0 61 6d 65 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  ame); /* throw *
2cac0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2cad0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2cae0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
2caf0 65 73 69 67 6e 65 72 41 73 73 65 6d 62 6c 79 4e  esignerAssemblyN
2cb00 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
2cb10 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2cb20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2cb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb60 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2cb70 20 20 20 20 20 20 2f 2a 20 52 45 51 55 49 52 45        /* REQUIRE
2cb80 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
2cb90 20 20 70 75 62 6c 69 63 20 41 73 73 65 6d 62 6c    public Assembl
2cba0 79 4e 61 6d 65 20 47 65 74 50 72 6f 76 69 64 65  yName GetProvide
2cbb0 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 28 0d 0a  rAssemblyName(..
2cbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cbd0 62 6f 6f 6c 20 74 72 61 63 65 0d 0a 20 20 20 20  bool trace..    
2cbe0 20 20 20 20 20 20 20 20 20 20 20 20 29 20 2f 2a              ) /*
2cbf0 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
2cc00 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2cc10 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2cc20 20 55 73 65 45 66 36 50 72 6f 76 69 64 65 72 28   UseEf6Provider(
2cc30 74 72 61 63 65 29 20 3f 0d 0a 20 20 20 20 20 20  trace) ?..      
2cc40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65                Ge
2cc50 74 45 66 36 41 73 73 65 6d 62 6c 79 4e 61 6d 65  tEf6AssemblyName
2cc60 28 74 72 61 63 65 29 20 3a 20 47 65 74 43 6f 72  (trace) : GetCor
2cc70 65 41 73 73 65 6d 62 6c 79 4e 61 6d 65 28 74 72  eAssemblyName(tr
2cc80 61 63 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ace);..         
2cc90 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2cca0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2ccb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ccc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ccd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cce0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2ccf0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
2cd00 72 69 6e 67 20 47 65 74 43 6f 6e 66 69 67 49 6e  ring GetConfigIn
2cd10 76 61 72 69 61 6e 74 4e 61 6d 65 28 0d 0a 20 20  variantName(..  
2cd20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
2cd30 6f 6c 20 74 72 61 63 65 0d 0a 20 20 20 20 20 20  ol trace..      
2cd40 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
2cd50 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2cd60 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2cd70 72 6e 20 47 65 74 49 6e 76 61 72 69 61 6e 74 4e  rn GetInvariantN
2cd80 61 6d 65 28 74 72 61 63 65 29 3b 0d 0a 20 20 20  ame(trace);..   
2cd90 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2cda0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
2cdb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cdc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cdd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cde0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2cdf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
2ce00 6c 69 63 20 73 74 72 69 6e 67 20 47 65 74 50 72  lic string GetPr
2ce10 6f 76 69 64 65 72 49 6e 76 61 72 69 61 6e 74 4e  oviderInvariantN
2ce20 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
2ce30 20 20 20 20 20 20 62 6f 6f 6c 20 74 72 61 63 65        bool trace
2ce40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ce50 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
2ce60 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2ce70 20 20 20 20 72 65 74 75 72 6e 20 47 65 74 49 6e      return GetIn
2ce80 76 61 72 69 61 6e 74 4e 61 6d 65 28 74 72 61 63  variantName(trac
2ce90 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
2cea0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2ceb0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2cec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ced0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cef0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2cf00 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69       public stri
2cf10 6e 67 20 47 65 74 46 61 63 74 6f 72 79 54 79 70  ng GetFactoryTyp
2cf20 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  eName(..        
2cf30 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 74 72 61          bool tra
2cf40 63 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ce..            
2cf50 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
2cf60 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2cf70 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 73 65        return Use
2cf80 45 66 36 50 72 6f 76 69 64 65 72 28 74 72 61 63  Ef6Provider(trac
2cf90 65 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20  e) ?..          
2cfa0 20 20 20 20 20 20 20 20 20 20 45 66 36 46 61 63            Ef6Fac
2cfb0 74 6f 72 79 54 79 70 65 4e 61 6d 65 20 3a 20 46  toryTypeName : F
2cfc0 61 63 74 6f 72 79 54 79 70 65 4e 61 6d 65 3b 0d  actoryTypeName;.
2cfd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2cfe0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2cff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d030 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
2d040 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44 75 6d   public void Dum
2d050 70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  p(..            
2d060 20 20 20 20 54 72 61 63 65 43 61 6c 6c 62 61 63      TraceCallbac
2d070 6b 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 0d  k traceCallback.
2d080 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d090 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
2d0a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2d0b0 20 20 20 69 66 20 28 74 72 61 63 65 43 61 6c 6c     if (traceCall
2d0c0 62 61 63 6b 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  back != null).. 
2d0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2d0e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d0f0 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
2d100 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ack(String.Forma
2d110 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f  t(NameAndValueFo
2d120 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  rmat,..         
2d130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2d140 41 73 73 65 6d 62 6c 79 22 2c 20 46 6f 72 44 69  Assembly", ForDi
2d150 73 70 6c 61 79 28 61 73 73 65 6d 62 6c 79 29 29  splay(assembly))
2d160 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2d170 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2d180 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
2d190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d1a0 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28    traceCallback(
2d1b0 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61  String.Format(Na
2d1c0 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74  meAndValueFormat
2d1d0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2d1e0 20 20 20 20 20 20 20 20 20 20 20 22 4c 6f 67 46             "LogF
2d1f0 69 6c 65 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73  ileName", ForDis
2d200 70 6c 61 79 28 6c 6f 67 46 69 6c 65 4e 61 6d 65  play(logFileName
2d210 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
2d220 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2d230 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a  ceCategory);....
2d240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d250 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
2d260 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  k(String.Format(
2d270 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d  NameAndValueForm
2d280 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at,..           
2d290 20 20 20 20 20 20 20 20 20 20 20 20 20 22 52 65               "Re
2d2a0 67 69 73 74 72 79 4c 6f 67 46 69 6c 65 4e 61 6d  gistryLogFileNam
2d2b0 65 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e",..           
2d2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72               For
2d2d0 44 69 73 70 6c 61 79 28 72 65 67 69 73 74 72 79  Display(registry
2d2e0 4c 6f 67 46 69 6c 65 4e 61 6d 65 29 29 2c 0d 0a  LogFileName)),..
2d2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d300 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2d310 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2d320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2d330 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2d340 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2d350 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2d360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d370 20 20 20 20 20 20 20 20 22 44 69 72 65 63 74 6f          "Directo
2d380 72 79 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  ry", ForDisplay(
2d390 64 69 72 65 63 74 6f 72 79 29 29 2c 0d 0a 20 20  directory)),..  
2d3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d3b0 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
2d3c0 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
2d3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2d3e0 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
2d3f0 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
2d400 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
2d410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d420 20 20 20 20 20 20 22 43 6f 72 65 46 69 6c 65 4e        "CoreFileN
2d430 61 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c 61 79  ame", ForDisplay
2d440 28 63 6f 72 65 46 69 6c 65 4e 61 6d 65 29 29 2c  (coreFileName)),
2d450 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d460 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2d470 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
2d480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d490 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
2d4a0 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
2d4b0 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
2d4c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d4d0 20 20 20 20 20 20 20 20 20 20 22 4c 69 6e 71 46            "LinqF
2d4e0 69 6c 65 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73  ileName", ForDis
2d4f0 70 6c 61 79 28 6c 69 6e 71 46 69 6c 65 4e 61 6d  play(linqFileNam
2d500 65 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  e)),..          
2d510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2d520 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
2d530 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d540 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
2d550 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
2d560 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
2d570 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
2d580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 45                "E
2d590 66 36 46 69 6c 65 4e 61 6d 65 22 2c 20 46 6f 72  f6FileName", For
2d5a0 44 69 73 70 6c 61 79 28 65 66 36 46 69 6c 65 4e  Display(ef6FileN
2d5b0 61 6d 65 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ame)),..        
2d5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d5d0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
2d5e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2d5f0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
2d600 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
2d610 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
2d620 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
2d630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d640 22 44 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d  "DesignerFileNam
2d650 65 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 64  e", ForDisplay(d
2d660 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 29  esignerFileName)
2d670 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2d680 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2d690 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2d6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d6b0 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
2d6c0 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
2d6d0 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
2d6e0 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2d6f0 20 20 20 20 20 20 20 20 20 20 20 20 22 52 65 67              "Reg
2d700 69 73 74 72 79 56 65 72 73 69 6f 6e 22 2c 20 46  istryVersion", F
2d710 6f 72 44 69 73 70 6c 61 79 28 72 65 67 69 73 74  orDisplay(regist
2d720 72 79 56 65 72 73 69 6f 6e 29 29 2c 0d 0a 20 20  ryVersion)),..  
2d730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d740 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
2d750 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
2d760 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2d770 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
2d780 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
2d790 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
2d7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d7b0 20 20 20 20 20 20 22 43 6f 6e 66 69 67 56 65 72        "ConfigVer
2d7c0 73 69 6f 6e 22 2c 20 46 6f 72 44 69 73 70 6c 61  sion", ForDispla
2d7d0 79 28 63 6f 6e 66 69 67 56 65 72 73 69 6f 6e 29  y(configVersion)
2d7e0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2d7f0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2d800 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2d810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d820 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
2d830 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
2d840 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
2d850 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2d860 20 20 20 20 20 20 20 20 20 20 20 20 22 56 73 56              "VsV
2d870 65 72 73 69 6f 6e 53 75 66 66 69 78 22 2c 20 46  ersionSuffix", F
2d880 6f 72 44 69 73 70 6c 61 79 28 76 73 56 65 72 73  orDisplay(vsVers
2d890 69 6f 6e 53 75 66 66 69 78 29 29 2c 0d 0a 20 20  ionSuffix)),..  
2d8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d8b0 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
2d8c0 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
2d8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2d8e0 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
2d8f0 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
2d900 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
2d910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d920 20 20 20 20 20 20 22 44 65 62 75 67 46 6f 72 6d        "DebugForm
2d930 61 74 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  at", ForDisplay(
2d940 64 65 62 75 67 46 6f 72 6d 61 74 29 29 2c 0d 0a  debugFormat)),..
2d950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d960 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2d970 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2d980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2d990 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2d9a0 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2d9b0 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2d9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d9d0 20 20 20 20 20 20 20 20 22 54 72 61 63 65 46 6f          "TraceFo
2d9e0 72 6d 61 74 22 2c 20 46 6f 72 44 69 73 70 6c 61  rmat", ForDispla
2d9f0 79 28 74 72 61 63 65 46 6f 72 6d 61 74 29 29 2c  y(traceFormat)),
2da00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2da10 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2da20 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
2da30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2da40 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
2da50 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
2da60 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
2da70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2da80 20 20 20 20 20 20 20 20 20 20 22 49 6e 73 74 61            "Insta
2da90 6c 6c 46 6c 61 67 73 22 2c 20 46 6f 72 44 69 73  llFlags", ForDis
2daa0 70 6c 61 79 28 69 6e 73 74 61 6c 6c 46 6c 61 67  play(installFlag
2dab0 73 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  s)),..          
2dac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2dad0 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
2dae0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2daf0 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
2db00 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
2db10 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
2db20 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
2db30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50                "P
2db40 72 6f 76 69 64 65 72 46 6c 61 67 73 22 2c 20 46  roviderFlags", F
2db50 6f 72 44 69 73 70 6c 61 79 28 70 72 6f 76 69 64  orDisplay(provid
2db60 65 72 46 6c 61 67 73 29 29 2c 0d 0a 20 20 20 20  erFlags)),..    
2db70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2db80 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
2db90 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
2dba0 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2dbb0 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
2dbc0 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
2dbd0 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
2dbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dbf0 20 20 20 20 22 44 65 62 75 67 50 72 69 6f 72 69      "DebugPriori
2dc00 74 79 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  ty", ForDisplay(
2dc10 64 65 62 75 67 50 72 69 6f 72 69 74 79 29 29 2c  debugPriority)),
2dc20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2dc30 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2dc40 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
2dc50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dc60 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
2dc70 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
2dc80 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
2dc90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2dca0 20 20 20 20 20 20 20 20 20 20 22 54 72 61 63 65            "Trace
2dcb0 50 72 69 6f 72 69 74 79 22 2c 20 46 6f 72 44 69  Priority", ForDi
2dcc0 73 70 6c 61 79 28 74 72 61 63 65 50 72 69 6f 72  splay(tracePrior
2dcd0 69 74 79 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ity)),..        
2dce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dcf0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
2dd00 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2dd10 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
2dd20 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
2dd30 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
2dd40 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
2dd50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dd60 22 50 65 72 55 73 65 72 22 2c 20 46 6f 72 44 69  "PerUser", ForDi
2dd70 73 70 6c 61 79 28 70 65 72 55 73 65 72 29 29 2c  splay(perUser)),
2dd80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2dd90 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2dda0 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
2ddb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ddc0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
2ddd0 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
2dde0 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
2ddf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2de00 20 20 20 20 20 20 20 20 20 20 22 49 6e 73 74 61            "Insta
2de10 6c 6c 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  ll", ForDisplay(
2de20 69 6e 73 74 61 6c 6c 29 29 2c 0d 0a 20 20 20 20  install)),..    
2de30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2de40 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
2de50 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
2de60 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2de70 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
2de80 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
2de90 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
2dea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2deb0 20 20 20 20 22 57 6f 77 36 34 22 2c 20 46 6f 72      "Wow64", For
2dec0 44 69 73 70 6c 61 79 28 77 6f 77 36 34 29 29 2c  Display(wow64)),
2ded0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2dee0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2def0 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
2df00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2df10 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
2df20 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
2df30 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
2df40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2df50 20 20 20 20 20 20 20 20 20 20 22 4e 6f 52 75 6e            "NoRun
2df60 74 69 6d 65 56 65 72 73 69 6f 6e 22 2c 20 46 6f  timeVersion", Fo
2df70 72 44 69 73 70 6c 61 79 28 6e 6f 52 75 6e 74 69  rDisplay(noRunti
2df80 6d 65 56 65 72 73 69 6f 6e 29 29 2c 0d 0a 20 20  meVersion)),..  
2df90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dfa0 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
2dfb0 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
2dfc0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2dfd0 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
2dfe0 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
2dff0 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
2e000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e010 20 20 20 20 20 20 22 4e 6f 44 65 73 6b 74 6f 70        "NoDesktop
2e020 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f  ", ForDisplay(no
2e030 44 65 73 6b 74 6f 70 29 29 2c 0d 0a 20 20 20 20  Desktop)),..    
2e040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e050 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
2e060 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
2e070 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2e080 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
2e090 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
2e0a0 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
2e0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e0c0 20 20 20 20 22 4e 6f 43 6f 6d 70 61 63 74 22 2c      "NoCompact",
2e0d0 20 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f 43 6f   ForDisplay(noCo
2e0e0 6d 70 61 63 74 29 29 2c 0d 0a 20 20 20 20 20 20  mpact)),..      
2e0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e100 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
2e110 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2e120 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2e130 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f  llback(String.Fo
2e140 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75  rmat(NameAndValu
2e150 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
2e160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e170 20 20 22 4e 6f 4e 65 74 46 78 32 30 22 2c 20 46    "NoNetFx20", F
2e180 6f 72 44 69 73 70 6c 61 79 28 6e 6f 4e 65 74 46  orDisplay(noNetF
2e190 78 32 30 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  x20)),..        
2e1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e1b0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
2e1c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2e1d0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
2e1e0 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
2e1f0 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
2e200 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
2e210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e220 22 4e 6f 4e 65 74 46 78 33 35 22 2c 20 46 6f 72  "NoNetFx35", For
2e230 44 69 73 70 6c 61 79 28 6e 6f 4e 65 74 46 78 33  Display(noNetFx3
2e240 35 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  5)),..          
2e250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2e260 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
2e270 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e280 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
2e290 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
2e2a0 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
2e2b0 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
2e2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
2e2d0 6f 4e 65 74 46 78 34 30 22 2c 20 46 6f 72 44 69  oNetFx40", ForDi
2e2e0 73 70 6c 61 79 28 6e 6f 4e 65 74 46 78 34 30 29  splay(noNetFx40)
2e2f0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2e300 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2e310 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2e320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e330 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
2e340 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
2e350 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
2e360 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2e370 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 4e              "NoN
2e380 65 74 46 78 34 35 22 2c 20 46 6f 72 44 69 73 70  etFx45", ForDisp
2e390 6c 61 79 28 6e 6f 4e 65 74 46 78 34 35 29 29 2c  lay(noNetFx45)),
2e3a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e3b0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2e3c0 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
2e3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e3e0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
2e3f0 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
2e400 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
2e410 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e420 20 20 20 20 20 20 20 20 20 20 22 4e 6f 4e 65 74            "NoNet
2e430 46 78 34 35 31 22 2c 20 46 6f 72 44 69 73 70 6c  Fx451", ForDispl
2e440 61 79 28 6e 6f 4e 65 74 46 78 34 35 31 29 29 2c  ay(noNetFx451)),
2e450 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e460 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2e470 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
2e480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e490 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
2e4a0 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
2e4b0 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
2e4c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e4d0 20 20 20 20 20 20 20 20 20 20 22 4e 6f 4e 65 74            "NoNet
2e4e0 46 78 34 35 32 22 2c 20 46 6f 72 44 69 73 70 6c  Fx452", ForDispl
2e4f0 61 79 28 6e 6f 4e 65 74 46 78 34 35 32 29 29 2c  ay(noNetFx452)),
2e500 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e510 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2e520 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
2e530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e540 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
2e550 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
2e560 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
2e570 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e580 20 20 20 20 20 20 20 20 20 20 22 4e 6f 4e 65 74            "NoNet
2e590 46 78 34 36 22 2c 20 46 6f 72 44 69 73 70 6c 61  Fx46", ForDispla
2e5a0 79 28 6e 6f 4e 65 74 46 78 34 36 29 29 2c 0d 0a  y(noNetFx46)),..
2e5b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e5c0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2e5d0 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2e5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2e5f0 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2e600 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2e610 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2e620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e630 20 20 20 20 20 20 20 20 22 4e 6f 4e 65 74 46 78          "NoNetFx
2e640 34 36 31 22 2c 20 46 6f 72 44 69 73 70 6c 61 79  461", ForDisplay
2e650 28 6e 6f 4e 65 74 46 78 34 36 31 29 29 2c 0d 0a  (noNetFx461)),..
2e660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e670 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2e680 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2e690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2e6a0 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2e6b0 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2e6c0 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2e6d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e6e0 20 20 20 20 20 20 20 20 22 4e 6f 4e 65 74 46 78          "NoNetFx
2e6f0 34 36 32 22 2c 20 46 6f 72 44 69 73 70 6c 61 79  462", ForDisplay
2e700 28 6e 6f 4e 65 74 46 78 34 36 32 29 29 2c 0d 0a  (noNetFx462)),..
2e710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e720 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2e730 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2e740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2e750 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2e760 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2e770 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2e780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e790 20 20 20 20 20 20 20 20 22 4e 6f 4e 65 74 46 78          "NoNetFx
2e7a0 34 37 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  47", ForDisplay(
2e7b0 6e 6f 4e 65 74 46 78 34 37 29 29 2c 0d 0a 20 20  noNetFx47)),..  
2e7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e7d0 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
2e7e0 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
2e7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2e800 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
2e810 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
2e820 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
2e830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e840 20 20 20 20 20 20 22 4e 6f 4e 65 74 46 78 34 37        "NoNetFx47
2e850 31 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e  1", ForDisplay(n
2e860 6f 4e 65 74 46 78 34 37 31 29 29 2c 0d 0a 20 20  oNetFx471)),..  
2e870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e880 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
2e890 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
2e8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2e8b0 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
2e8c0 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
2e8d0 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
2e8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e8f0 20 20 20 20 20 20 22 4e 6f 56 73 32 30 30 35 22        "NoVs2005"
2e900 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f 56  , ForDisplay(noV
2e910 73 32 30 30 35 29 29 2c 0d 0a 20 20 20 20 20 20  s2005)),..      
2e920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e930 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
2e940 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2e950 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2e960 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f  llback(String.Fo
2e970 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75  rmat(NameAndValu
2e980 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
2e990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e9a0 20 20 22 4e 6f 56 73 32 30 30 38 22 2c 20 46 6f    "NoVs2008", Fo
2e9b0 72 44 69 73 70 6c 61 79 28 6e 6f 56 73 32 30 30  rDisplay(noVs200
2e9c0 38 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  8)),..          
2e9d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2e9e0 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
2e9f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ea00 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
2ea10 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
2ea20 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
2ea30 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
2ea40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
2ea50 6f 56 73 32 30 31 30 22 2c 20 46 6f 72 44 69 73  oVs2010", ForDis
2ea60 70 6c 61 79 28 6e 6f 56 73 32 30 31 30 29 29 2c  play(noVs2010)),
2ea70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ea80 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2ea90 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
2eaa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eab0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
2eac0 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
2ead0 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
2eae0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2eaf0 20 20 20 20 20 20 20 20 20 20 22 4e 6f 56 73 32            "NoVs2
2eb00 30 31 32 22 2c 20 46 6f 72 44 69 73 70 6c 61 79  012", ForDisplay
2eb10 28 6e 6f 56 73 32 30 31 32 29 29 2c 0d 0a 20 20  (noVs2012)),..  
2eb20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eb30 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
2eb40 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
2eb50 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2eb60 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
2eb70 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
2eb80 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
2eb90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eba0 20 20 20 20 20 20 22 4e 6f 56 73 32 30 31 33 22        "NoVs2013"
2ebb0 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f 56  , ForDisplay(noV
2ebc0 73 32 30 31 33 29 29 2c 0d 0a 20 20 20 20 20 20  s2013)),..      
2ebd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ebe0 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
2ebf0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2ec00 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2ec10 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f  llback(String.Fo
2ec20 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75  rmat(NameAndValu
2ec30 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
2ec40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ec50 20 20 22 4e 6f 56 73 32 30 31 35 22 2c 20 46 6f    "NoVs2015", Fo
2ec60 72 44 69 73 70 6c 61 79 28 6e 6f 56 73 32 30 31  rDisplay(noVs201
2ec70 35 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  5)),..          
2ec80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2ec90 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
2eca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ecb0 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
2ecc0 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
2ecd0 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
2ece0 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
2ecf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
2ed00 6f 56 73 32 30 31 37 22 2c 20 46 6f 72 44 69 73  oVs2017", ForDis
2ed10 70 6c 61 79 28 6e 6f 56 73 32 30 31 37 29 29 2c  play(noVs2017)),
2ed20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ed30 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2ed40 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
2ed50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ed60 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
2ed70 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
2ed80 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
2ed90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2eda0 20 20 20 20 20 20 20 20 20 20 22 4e 6f 54 72 61            "NoTra
2edb0 63 65 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  ce", ForDisplay(
2edc0 6e 6f 54 72 61 63 65 29 29 2c 0d 0a 20 20 20 20  noTrace)),..    
2edd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ede0 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
2edf0 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
2ee00 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2ee10 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
2ee20 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
2ee30 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
2ee40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ee50 20 20 20 20 22 4e 6f 43 6f 6e 73 6f 6c 65 22 2c      "NoConsole",
2ee60 20 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f 43 6f   ForDisplay(noCo
2ee70 6e 73 6f 6c 65 29 29 2c 0d 0a 20 20 20 20 20 20  nsole)),..      
2ee80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ee90 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
2eea0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2eeb0 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2eec0 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f  llback(String.Fo
2eed0 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75  rmat(NameAndValu
2eee0 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
2eef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ef00 20 20 22 4e 6f 4c 6f 67 22 2c 20 46 6f 72 44 69    "NoLog", ForDi
2ef10 73 70 6c 61 79 28 6e 6f 4c 6f 67 29 29 2c 0d 0a  splay(noLog)),..
2ef20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ef30 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2ef40 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2ef50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2ef60 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2ef70 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2ef80 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2ef90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2efa0 20 20 20 20 20 20 20 20 22 54 68 72 6f 77 4f 6e          "ThrowOn
2efb0 4d 69 73 73 69 6e 67 22 2c 20 46 6f 72 44 69 73  Missing", ForDis
2efc0 70 6c 61 79 28 74 68 72 6f 77 4f 6e 4d 69 73 73  play(throwOnMiss
2efd0 69 6e 67 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ing)),..        
2efe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eff0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
2f000 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2f010 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
2f020 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
2f030 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
2f040 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
2f050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f060 22 57 68 61 74 49 66 22 2c 20 46 6f 72 44 69 73  "WhatIf", ForDis
2f070 70 6c 61 79 28 77 68 61 74 49 66 29 29 2c 0d 0a  play(whatIf)),..
2f080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f090 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2f0a0 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2f0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2f0c0 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2f0d0 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2f0e0 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2f0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f100 20 20 20 20 20 20 20 20 22 44 65 62 75 67 22 2c          "Debug",
2f110 20 46 6f 72 44 69 73 70 6c 61 79 28 64 65 62 75   ForDisplay(debu
2f120 67 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  g)),..          
2f130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2f140 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
2f150 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f160 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
2f170 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
2f180 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
2f190 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
2f1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 56                "V
2f1b0 65 72 62 6f 73 65 22 2c 20 46 6f 72 44 69 73 70  erbose", ForDisp
2f1c0 6c 61 79 28 76 65 72 62 6f 73 65 29 29 2c 0d 0a  lay(verbose)),..
2f1d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f1e0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2f1f0 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2f200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2f210 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2f220 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2f230 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2f240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f250 20 20 20 20 20 20 20 20 22 43 6f 6e 66 69 72 6d          "Confirm
2f260 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 63 6f  ", ForDisplay(co
2f270 6e 66 69 72 6d 29 29 2c 0d 0a 20 20 20 20 20 20  nfirm)),..      
2f280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f290 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
2f2a0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2f2b0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
2f2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f2f0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2f300 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2f310 61 73 73 65 6d 62 6c 79 20 21 3d 20 6e 75 6c 6c  assembly != null
2f320 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2f330 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2f340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f350 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28    traceCallback(
2f360 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61  String.Format(Na
2f370 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74  meAndValueFormat
2f380 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2f390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2f3a0 41 73 73 65 6d 62 6c 79 54 69 74 6c 65 22 2c 0d  AssemblyTitle",.
2f3b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72               For
2f3d0 44 69 73 70 6c 61 79 28 47 65 74 41 73 73 65 6d  Display(GetAssem
2f3e0 62 6c 79 54 69 74 6c 65 28 61 73 73 65 6d 62 6c  blyTitle(assembl
2f3f0 79 29 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  y))),..         
2f400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f410 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
2f420 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2f430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2f440 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69  aceCallback(Stri
2f450 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e  ng.Format(NameAn
2f460 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20  dValueFormat,.. 
2f470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f480 20 20 20 20 20 20 20 20 20 20 20 22 41 73 73 65             "Asse
2f490 6d 62 6c 79 43 6f 6e 66 69 67 75 72 61 74 69 6f  mblyConfiguratio
2f4a0 6e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n",..           
2f4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f4c0 20 46 6f 72 44 69 73 70 6c 61 79 28 47 65 74 41   ForDisplay(GetA
2f4d0 73 73 65 6d 62 6c 79 43 6f 6e 66 69 67 75 72 61  ssemblyConfigura
2f4e0 74 69 6f 6e 28 61 73 73 65 6d 62 6c 79 29 29 29  tion(assembly)))
2f4f0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2f500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2f510 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
2f520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f530 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2f540 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f               ///
2f550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f580 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2f590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f5a0 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74  traceCallback(St
2f5b0 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65  ring.Format(Name
2f5c0 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d  AndValueFormat,.
2f5d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f5e0 20 20 20 20 20 20 20 20 20 22 49 73 53 79 73 74           "IsSyst
2f5f0 65 6d 45 66 36 41 73 73 65 6d 62 6c 79 41 76 61  emEf6AssemblyAva
2f600 69 6c 61 62 6c 65 22 2c 20 46 6f 72 44 69 73 70  ilable", ForDisp
2f610 6c 61 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  lay(..          
2f620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 73                Is
2f630 53 79 73 74 65 6d 45 66 36 41 73 73 65 6d 62 6c  SystemEf6Assembl
2f640 79 41 76 61 69 6c 61 62 6c 65 28 66 61 6c 73 65  yAvailable(false
2f650 29 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ))),..          
2f660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2f670 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
2f680 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f690 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
2f6a0 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
2f6b0 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
2f6c0 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
2f6d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49                "I
2f6e0 73 53 79 73 74 65 6d 45 66 36 41 73 73 65 6d 62  sSystemEf6Assemb
2f6f0 6c 79 47 6c 6f 62 61 6c 22 2c 20 46 6f 72 44 69  lyGlobal", ForDi
2f700 73 70 6c 61 79 28 0d 0a 20 20 20 20 20 20 20 20  splay(..        
2f710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f720 49 73 53 79 73 74 65 6d 45 66 36 41 73 73 65 6d  IsSystemEf6Assem
2f730 62 6c 79 47 6c 6f 62 61 6c 28 29 29 29 2c 0d 0a  blyGlobal())),..
2f740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f750 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2f760 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2f770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2f780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2f7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f7d0 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28    traceCallback(
2f7e0 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61  String.Format(Na
2f7f0 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74  meAndValueFormat
2f800 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2f810 20 20 20 20 20 20 20 20 20 20 20 22 49 73 4c 69             "IsLi
2f820 6e 71 53 75 70 70 6f 72 74 65 64 22 2c 20 46 6f  nqSupported", Fo
2f830 72 44 69 73 70 6c 61 79 28 49 73 4c 69 6e 71 53  rDisplay(IsLinqS
2f840 75 70 70 6f 72 74 65 64 28 66 61 6c 73 65 29 29  upported(false))
2f850 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2f860 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2f870 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2f880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f890 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
2f8a0 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
2f8b0 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
2f8c0 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2f8d0 20 20 20 20 20 20 20 20 20 20 20 20 22 49 73 45              "IsE
2f8e0 66 36 53 75 70 70 6f 72 74 65 64 22 2c 20 46 6f  f6Supported", Fo
2f8f0 72 44 69 73 70 6c 61 79 28 49 73 45 66 36 53 75  rDisplay(IsEf6Su
2f900 70 70 6f 72 74 65 64 28 66 61 6c 73 65 29 29 29  pported(false)))
2f910 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2f920 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2f930 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
2f940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f950 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28    traceCallback(
2f960 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61  String.Format(Na
2f970 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74  meAndValueFormat
2f980 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2f990 20 20 20 20 20 20 20 20 20 20 20 22 49 73 45 66             "IsEf
2f9a0 36 41 73 73 65 6d 62 6c 79 47 6c 6f 62 61 6c 22  6AssemblyGlobal"
2f9b0 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 0d 0a 20  , ForDisplay(.. 
2f9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f9d0 20 20 20 20 20 20 20 49 73 45 66 36 41 73 73 65         IsEf6Asse
2f9e0 6d 62 6c 79 47 6c 6f 62 61 6c 28 29 29 29 2c 0d  mblyGlobal())),.
2f9f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2fa00 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2fa10 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
2fa20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fa30 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74  traceCallback(St
2fa40 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65  ring.Format(Name
2fa50 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d  AndValueFormat,.
2fa60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2fa70 20 20 20 20 20 20 20 20 20 22 55 73 65 45 66 36           "UseEf6
2fa80 50 72 6f 76 69 64 65 72 22 2c 20 46 6f 72 44 69  Provider", ForDi
2fa90 73 70 6c 61 79 28 55 73 65 45 66 36 50 72 6f 76  splay(UseEf6Prov
2faa0 69 64 65 72 28 66 61 6c 73 65 29 29 29 2c 0d 0a  ider(false))),..
2fab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fac0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2fad0 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2fae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2faf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2fb30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fb40 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
2fb50 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2fb60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fb70 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
2fb80 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ack(String.Forma
2fb90 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f  t(NameAndValueFo
2fba0 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  rmat,..         
2fbb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fbc0 20 20 20 22 47 65 74 43 6f 72 65 41 73 73 65 6d     "GetCoreAssem
2fbd0 62 6c 79 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73  blyName", ForDis
2fbe0 70 6c 61 79 28 0d 0a 20 20 20 20 20 20 20 20 20  play(..         
2fbf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fc00 20 20 20 47 65 74 43 6f 72 65 41 73 73 65 6d 62     GetCoreAssemb
2fc10 6c 79 4e 61 6d 65 28 66 61 6c 73 65 29 29 29 2c  lyName(false))),
2fc20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
2fc30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2fc40 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2fc50 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
2fc60 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29  ch (Exception e)
2fc70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2fc80 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2fc90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fca0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
2fcb0 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
2fcc0 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
2fcd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2fce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 47                "G
2fcf0 65 74 43 6f 72 65 41 73 73 65 6d 62 6c 79 4e 61  etCoreAssemblyNa
2fd00 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  me", ForDisplay(
2fd10 65 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  e)),..          
2fd20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fd30 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
2fd40 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2fd50 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2fd60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fd70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2fdb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fdc0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
2fdd0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2fde0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fdf0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
2fe00 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
2fe10 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
2fe20 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
2fe30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fe40 20 20 20 20 22 47 65 74 4c 69 6e 71 41 73 73 65      "GetLinqAsse
2fe50 6d 62 6c 79 4e 61 6d 65 22 2c 20 46 6f 72 44 69  mblyName", ForDi
2fe60 73 70 6c 61 79 28 0d 0a 20 20 20 20 20 20 20 20  splay(..        
2fe70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fe80 20 20 20 20 47 65 74 4c 69 6e 71 41 73 73 65 6d      GetLinqAssem
2fe90 62 6c 79 4e 61 6d 65 28 66 61 6c 73 65 29 29 29  blyName(false)))
2fea0 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29  , traceCategory)
2feb0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2fec0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2fed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
2fee0 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
2fef0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2ff00 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2ff10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ff20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28    traceCallback(
2ff30 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61  String.Format(Na
2ff40 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74  meAndValueFormat
2ff50 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2ff60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2ff70 47 65 74 4c 69 6e 71 41 73 73 65 6d 62 6c 79 4e  GetLinqAssemblyN
2ff80 61 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c 61 79  ame", ForDisplay
2ff90 28 65 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  (e)),..         
2ffa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ffb0 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
2ffc0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2ffd0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2ffe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fff0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
30000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
30030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30040 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
30050 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
30060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30070 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c          traceCal
30080 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72  lback(String.For
30090 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65  mat(NameAndValue
300a0 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20  Format,..       
300b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
300c0 20 20 20 20 20 22 47 65 74 45 66 36 41 73 73 65       "GetEf6Asse
300d0 6d 62 6c 79 4e 61 6d 65 22 2c 20 46 6f 72 44 69  mblyName", ForDi
300e0 73 70 6c 61 79 28 0d 0a 20 20 20 20 20 20 20 20  splay(..        
300f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30100 20 20 20 20 47 65 74 45 66 36 41 73 73 65 6d 62      GetEf6Assemb
30110 6c 79 4e 61 6d 65 28 66 61 6c 73 65 29 29 29 2c  lyName(false))),
30120 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
30130 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30140 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
30150 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
30160 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29  ch (Exception e)
30170 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30180 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
30190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
301a0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
301b0 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
301c0 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
301d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
301e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 47                "G
301f0 65 74 45 66 36 41 73 73 65 6d 62 6c 79 4e 61 6d  etEf6AssemblyNam
30200 65 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 65  e", ForDisplay(e
30210 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
30220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30230 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
30240 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30250 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
30260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
30270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
302a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
302b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
302c0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
302d0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
302e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
302f0 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
30300 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ack(String.Forma
30310 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f  t(NameAndValueFo
30320 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  rmat,..         
30330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30340 20 20 20 22 47 65 74 44 65 73 69 67 6e 65 72 41     "GetDesignerA
30350 73 73 65 6d 62 6c 79 4e 61 6d 65 22 2c 20 46 6f  ssemblyName", Fo
30360 72 44 69 73 70 6c 61 79 28 0d 0a 20 20 20 20 20  rDisplay(..     
30370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30380 20 20 20 20 20 20 20 47 65 74 44 65 73 69 67 6e         GetDesign
30390 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 28 66  erAssemblyName(f
303a0 61 6c 73 65 29 29 29 2c 20 74 72 61 63 65 43 61  alse))), traceCa
303b0 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20  tegory);..      
303c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
303d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
303e0 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
303f0 70 74 69 6f 6e 20 65 29 0d 0a 20 20 20 20 20 20  ption e)..      
30400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
30410 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30420 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
30430 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f  llback(String.Fo
30440 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75  rmat(NameAndValu
30450 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
30460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30470 20 20 20 20 20 20 22 47 65 74 44 65 73 69 67 6e        "GetDesign
30480 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 22 2c  erAssemblyName",
30490 20 46 6f 72 44 69 73 70 6c 61 79 28 65 29 29 2c   ForDisplay(e)),
304a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
304b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
304c0 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20  aceCategory);.. 
304d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
304e0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
304f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
30500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30530 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
30540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
30550 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
30560 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
30570 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
30580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30590 20 20 20 20 20 20 20 20 22 47 65 74 49 6e 76 61          "GetInva
305a0 72 69 61 6e 74 4e 61 6d 65 22 2c 20 46 6f 72 44  riantName", ForD
305b0 69 73 70 6c 61 79 28 47 65 74 49 6e 76 61 72 69  isplay(GetInvari
305c0 61 6e 74 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20  antName(..      
305d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
305e0 20 20 66 61 6c 73 65 29 29 29 2c 20 74 72 61 63    false))), trac
305f0 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
30600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30610 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
30620 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
30630 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
30640 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
30650 20 20 20 20 20 20 20 20 20 20 20 20 22 47 65 74              "Get
30660 43 6f 6e 66 69 67 49 6e 76 61 72 69 61 6e 74 4e  ConfigInvariantN
30670 61 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c 61 79  ame", ForDisplay
30680 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
30690 20 20 20 20 20 20 20 20 20 20 20 47 65 74 43 6f             GetCo
306a0 6e 66 69 67 49 6e 76 61 72 69 61 6e 74 4e 61 6d  nfigInvariantNam
306b0 65 28 66 61 6c 73 65 29 29 29 2c 20 74 72 61 63  e(false))), trac
306c0 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
306d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
306e0 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
306f0 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
30700 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
30710 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
30720 20 20 20 20 20 20 20 20 20 20 20 20 22 47 65 74              "Get
30730 50 72 6f 76 69 64 65 72 49 6e 76 61 72 69 61 6e  ProviderInvarian
30740 74 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c  tName", ForDispl
30750 61 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ay(..           
30760 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74               Get
30770 50 72 6f 76 69 64 65 72 49 6e 76 61 72 69 61 6e  ProviderInvarian
30780 74 4e 61 6d 65 28 66 61 6c 73 65 29 29 29 2c 20  tName(false))), 
30790 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
307a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
307b0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
307c0 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
307d0 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
307e0 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
307f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30800 22 47 65 74 46 61 63 74 6f 72 79 54 79 70 65 4e  "GetFactoryTypeN
30810 61 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c 61 79  ame", ForDisplay
30820 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
30830 20 20 20 20 20 20 20 20 20 20 20 47 65 74 46 61             GetFa
30840 63 74 6f 72 79 54 79 70 65 4e 61 6d 65 28 66 61  ctoryTypeName(fa
30850 6c 73 65 29 29 29 2c 20 74 72 61 63 65 43 61 74  lse))), traceCat
30860 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
30870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
30880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
308a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
308b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
308c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
308d0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
308e0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
308f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30900 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
30910 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ack(String.Forma
30920 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f  t(NameAndValueFo
30930 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  rmat,..         
30940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30950 20 20 20 22 47 65 74 50 72 6f 76 69 64 65 72 41     "GetProviderA
30960 73 73 65 6d 62 6c 79 4e 61 6d 65 22 2c 20 46 6f  ssemblyName", Fo
30970 72 44 69 73 70 6c 61 79 28 0d 0a 20 20 20 20 20  rDisplay(..     
30980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30990 20 20 20 20 20 20 20 47 65 74 50 72 6f 76 69 64         GetProvid
309a0 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 28 66  erAssemblyName(f
309b0 61 6c 73 65 29 29 29 2c 20 74 72 61 63 65 43 61  alse))), traceCa
309c0 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20  tegory);..      
309d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
309e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
309f0 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
30a00 70 74 69 6f 6e 20 65 29 0d 0a 20 20 20 20 20 20  ption e)..      
30a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
30a20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30a30 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
30a40 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f  llback(String.Fo
30a50 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75  rmat(NameAndValu
30a60 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
30a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a80 20 20 20 20 20 20 22 47 65 74 50 72 6f 76 69 64        "GetProvid
30a90 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 22 2c  erAssemblyName",
30aa0 20 46 6f 72 44 69 73 70 6c 61 79 28 65 29 29 2c   ForDisplay(e)),
30ab0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
30ad0 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20  aceCategory);.. 
30ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30af0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
30b00 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
30b10 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
30b20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
30b30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
30b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30b80 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
30b90 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
30ba0 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20  Properties..    
30bb0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
30bc0 41 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c  Assembly assembl
30bd0 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y;..            
30be0 70 75 62 6c 69 63 20 41 73 73 65 6d 62 6c 79 20  public Assembly 
30bf0 41 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20  Assembly..      
30c00 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
30c10 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
30c20 65 74 75 72 6e 20 61 73 73 65 6d 62 6c 79 3b 20  eturn assembly; 
30c30 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
30c40 20 20 20 73 65 74 20 7b 20 61 73 73 65 6d 62 6c     set { assembl
30c50 79 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  y = value; }..  
30c60 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
30c70 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
30c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
30cc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
30cd0 69 76 61 74 65 20 73 74 72 69 6e 67 20 6c 6f 67  ivate string log
30ce0 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  FileName;..     
30cf0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
30d00 72 69 6e 67 20 4c 6f 67 46 69 6c 65 4e 61 6d 65  ring LogFileName
30d10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
30d20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30d30 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6c 6f   get { return lo
30d40 67 46 69 6c 65 4e 61 6d 65 3b 20 7d 0d 0a 20 20  gFileName; }..  
30d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
30d60 74 20 7b 20 6c 6f 67 46 69 6c 65 4e 61 6d 65 20  t { logFileName 
30d70 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
30d80 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
30d90 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
30da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
30de0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
30df0 61 74 65 20 73 74 72 69 6e 67 20 72 65 67 69 73  ate string regis
30e00 74 72 79 4c 6f 67 46 69 6c 65 4e 61 6d 65 3b 0d  tryLogFileName;.
30e10 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
30e20 6c 69 63 20 73 74 72 69 6e 67 20 52 65 67 69 73  lic string Regis
30e30 74 72 79 4c 6f 67 46 69 6c 65 4e 61 6d 65 0d 0a  tryLogFileName..
30e40 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
30e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
30e60 65 74 20 7b 20 72 65 74 75 72 6e 20 72 65 67 69  et { return regi
30e70 73 74 72 79 4c 6f 67 46 69 6c 65 4e 61 6d 65 3b  stryLogFileName;
30e80 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
30e90 20 20 20 20 73 65 74 20 7b 20 72 65 67 69 73 74      set { regist
30ea0 72 79 4c 6f 67 46 69 6c 65 4e 61 6d 65 20 3d 20  ryLogFileName = 
30eb0 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
30ec0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
30ed0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
30ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
30f20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
30f30 65 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f  e string directo
30f40 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry;..           
30f50 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 44   public string D
30f60 69 72 65 63 74 6f 72 79 0d 0a 20 20 20 20 20 20  irectory..      
30f70 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
30f80 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
30f90 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b  eturn directory;
30fa0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
30fb0 20 20 20 20 73 65 74 20 7b 20 64 69 72 65 63 74      set { direct
30fc0 6f 72 79 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  ory = value; }..
30fd0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
30fe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
30ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31030 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
31040 70 72 69 76 61 74 65 20 73 74 72 69 6e 67 20 63  private string c
31050 6f 72 65 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20  oreFileName;..  
31060 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
31070 20 73 74 72 69 6e 67 20 43 6f 72 65 46 69 6c 65   string CoreFile
31080 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Name..          
31090 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
310a0 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
310b0 6e 20 63 6f 72 65 46 69 6c 65 4e 61 6d 65 3b 20  n coreFileName; 
310c0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
310d0 20 20 20 73 65 74 20 7b 20 63 6f 72 65 46 69 6c     set { coreFil
310e0 65 4e 61 6d 65 20 3d 20 76 61 6c 75 65 3b 20 7d  eName = value; }
310f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
31100 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
31110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31150 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
31160 20 20 70 72 69 76 61 74 65 20 73 74 72 69 6e 67    private string
31170 20 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 3b 0d 0a   linqFileName;..
31180 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
31190 69 63 20 73 74 72 69 6e 67 20 4c 69 6e 71 46 69  ic string LinqFi
311a0 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  leName..        
311b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
311c0 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
311d0 75 72 6e 20 6c 69 6e 71 46 69 6c 65 4e 61 6d 65  urn linqFileName
311e0 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
311f0 20 20 20 20 20 73 65 74 20 7b 20 6c 69 6e 71 46       set { linqF
31200 69 6c 65 4e 61 6d 65 20 3d 20 76 61 6c 75 65 3b  ileName = value;
31210 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
31220 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
31230 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
31240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31270 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
31280 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69      private stri
31290 6e 67 20 65 66 36 46 69 6c 65 4e 61 6d 65 3b 0d  ng ef6FileName;.
312a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
312b0 6c 69 63 20 73 74 72 69 6e 67 20 45 66 36 46 69  lic string Ef6Fi
312c0 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  leName..        
312d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
312e0 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
312f0 75 72 6e 20 65 66 36 46 69 6c 65 4e 61 6d 65 3b  urn ef6FileName;
31300 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
31310 20 20 20 20 73 65 74 20 7b 20 65 66 36 46 69 6c      set { ef6Fil
31320 65 4e 61 6d 65 20 3d 20 76 61 6c 75 65 3b 20 7d  eName = value; }
31330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
31340 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
31350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31390 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
313a0 20 20 70 72 69 76 61 74 65 20 73 74 72 69 6e 67    private string
313b0 20 64 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d   designerFileNam
313c0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
313d0 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 44 65  public string De
313e0 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 0d 0a  signerFileName..
313f0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
31400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
31410 65 74 20 7b 20 72 65 74 75 72 6e 20 64 65 73 69  et { return desi
31420 67 6e 65 72 46 69 6c 65 4e 61 6d 65 3b 20 7d 0d  gnerFileName; }.
31430 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31440 20 73 65 74 20 7b 20 64 65 73 69 67 6e 65 72 46   set { designerF
31450 69 6c 65 4e 61 6d 65 20 3d 20 76 61 6c 75 65 3b  ileName = value;
31460 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
31470 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
31480 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
31490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
314a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
314b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
314c0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
314d0 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69      private stri
314e0 6e 67 20 72 65 67 69 73 74 72 79 56 65 72 73 69  ng registryVersi
314f0 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on;..           
31500 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 52   public string R
31510 65 67 69 73 74 72 79 56 65 72 73 69 6f 6e 0d 0a  egistryVersion..
31520 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
31530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
31540 65 74 20 7b 20 72 65 74 75 72 6e 20 72 65 67 69  et { return regi
31550 73 74 72 79 56 65 72 73 69 6f 6e 3b 20 7d 0d 0a  stryVersion; }..
31560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31570 73 65 74 20 7b 20 72 65 67 69 73 74 72 79 56 65  set { registryVe
31580 72 73 69 6f 6e 20 3d 20 76 61 6c 75 65 3b 20 7d  rsion = value; }
31590 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
315a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
315b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
315c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
315d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
315e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
315f0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
31600 20 20 70 72 69 76 61 74 65 20 73 74 72 69 6e 67    private string
31610 20 63 6f 6e 66 69 67 56 65 72 73 69 6f 6e 3b 0d   configVersion;.
31620 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
31630 6c 69 63 20 73 74 72 69 6e 67 20 43 6f 6e 66 69  lic string Confi
31640 67 56 65 72 73 69 6f 6e 0d 0a 20 20 20 20 20 20  gVersion..      
31650 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
31660 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
31670 65 74 75 72 6e 20 63 6f 6e 66 69 67 56 65 72 73  eturn configVers
31680 69 6f 6e 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  ion; }..        
31690 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 63 6f          set { co
316a0 6e 66 69 67 56 65 72 73 69 6f 6e 20 3d 20 76 61  nfigVersion = va
316b0 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
316c0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
316d0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
316e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
316f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31710 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
31720 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
31730 73 74 72 69 6e 67 20 76 73 56 65 72 73 69 6f 6e  string vsVersion
31740 53 75 66 66 69 78 3b 0d 0a 20 20 20 20 20 20 20  Suffix;..       
31750 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69       public stri
31760 6e 67 20 56 73 56 65 72 73 69 6f 6e 53 75 66 66  ng VsVersionSuff
31770 69 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ix..            
31780 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
31790 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
317a0 76 73 56 65 72 73 69 6f 6e 53 75 66 66 69 78 3b  vsVersionSuffix;
317b0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
317c0 20 20 20 20 73 65 74 20 7b 20 76 73 56 65 72 73      set { vsVers
317d0 69 6f 6e 53 75 66 66 69 78 20 3d 20 76 61 6c 75  ionSuffix = valu
317e0 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
317f0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
31800 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
31810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31840 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
31850 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
31860 72 69 6e 67 20 64 65 62 75 67 46 6f 72 6d 61 74  ring debugFormat
31870 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
31880 75 62 6c 69 63 20 73 74 72 69 6e 67 20 44 65 62  ublic string Deb
31890 75 67 46 6f 72 6d 61 74 0d 0a 20 20 20 20 20 20  ugFormat..      
318a0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
318b0 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
318c0 65 74 75 72 6e 20 64 65 62 75 67 46 6f 72 6d 61  eturn debugForma
318d0 74 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  t; }..          
318e0 20 20 20 20 20 20 73 65 74 20 7b 20 64 65 62 75        set { debu
318f0 67 46 6f 72 6d 61 74 20 3d 20 76 61 6c 75 65 3b  gFormat = value;
31900 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
31910 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
31920 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
31930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31960 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
31970 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69      private stri
31980 6e 67 20 74 72 61 63 65 46 6f 72 6d 61 74 3b 0d  ng traceFormat;.
31990 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
319a0 6c 69 63 20 73 74 72 69 6e 67 20 54 72 61 63 65  lic string Trace
319b0 46 6f 72 6d 61 74 0d 0a 20 20 20 20 20 20 20 20  Format..        
319c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
319d0 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
319e0 75 72 6e 20 74 72 61 63 65 46 6f 72 6d 61 74 3b  urn traceFormat;
319f0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
31a00 20 20 20 20 73 65 74 20 7b 20 74 72 61 63 65 46      set { traceF
31a10 6f 72 6d 61 74 20 3d 20 76 61 6c 75 65 3b 20 7d  ormat = value; }
31a20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
31a30 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
31a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31a80 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
31a90 20 20 70 72 69 76 61 74 65 20 49 6e 73 74 61 6c    private Instal
31aa0 6c 46 6c 61 67 73 20 69 6e 73 74 61 6c 6c 46 6c  lFlags installFl
31ab0 61 67 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ags;..          
31ac0 20 20 70 75 62 6c 69 63 20 49 6e 73 74 61 6c 6c    public Install
31ad0 46 6c 61 67 73 20 49 6e 73 74 61 6c 6c 46 6c 61  Flags InstallFla
31ae0 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  gs..            
31af0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
31b00 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
31b10 69 6e 73 74 61 6c 6c 46 6c 61 67 73 3b 20 7d 0d  installFlags; }.
31b20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31b30 20 73 65 74 20 7b 20 69 6e 73 74 61 6c 6c 46 6c   set { installFl
31b40 61 67 73 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  ags = value; }..
31b50 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
31b60 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
31b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31bb0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
31bc0 70 72 69 76 61 74 65 20 50 72 6f 76 69 64 65 72  private Provider
31bd0 46 6c 61 67 73 20 70 72 6f 76 69 64 65 72 46 6c  Flags providerFl
31be0 61 67 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ags;..          
31bf0 20 20 70 75 62 6c 69 63 20 50 72 6f 76 69 64 65    public Provide
31c00 72 46 6c 61 67 73 20 50 72 6f 76 69 64 65 72 46  rFlags ProviderF
31c10 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20  lags..          
31c20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
31c30 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
31c40 6e 20 70 72 6f 76 69 64 65 72 46 6c 61 67 73 3b  n providerFlags;
31c50 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
31c60 20 20 20 20 73 65 74 20 7b 20 70 72 6f 76 69 64      set { provid
31c70 65 72 46 6c 61 67 73 20 3d 20 76 61 6c 75 65 3b  erFlags = value;
31c80 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
31c90 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
31ca0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
31cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31ce0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
31cf0 20 20 20 20 70 72 69 76 61 74 65 20 54 72 61 63      private Trac
31d00 65 50 72 69 6f 72 69 74 79 20 64 65 62 75 67 50  ePriority debugP
31d10 72 69 6f 72 69 74 79 3b 0d 0a 20 20 20 20 20 20  riority;..      
31d20 20 20 20 20 20 20 70 75 62 6c 69 63 20 54 72 61        public Tra
31d30 63 65 50 72 69 6f 72 69 74 79 20 44 65 62 75 67  cePriority Debug
31d40 50 72 69 6f 72 69 74 79 0d 0a 20 20 20 20 20 20  Priority..      
31d50 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
31d60 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
31d70 65 74 75 72 6e 20 64 65 62 75 67 50 72 69 6f 72  eturn debugPrior
31d80 69 74 79 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  ity; }..        
31d90 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 64 65          set { de
31da0 62 75 67 50 72 69 6f 72 69 74 79 20 3d 20 76 61  bugPriority = va
31db0 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
31dc0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
31dd0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
31de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31e10 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
31e20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
31e30 54 72 61 63 65 50 72 69 6f 72 69 74 79 20 74 72  TracePriority tr
31e40 61 63 65 50 72 69 6f 72 69 74 79 3b 0d 0a 20 20  acePriority;..  
31e50 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
31e60 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 20 54   TracePriority T
31e70 72 61 63 65 50 72 69 6f 72 69 74 79 0d 0a 20 20  racePriority..  
31e80 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
31e90 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
31ea0 20 7b 20 72 65 74 75 72 6e 20 74 72 61 63 65 50   { return traceP
31eb0 72 69 6f 72 69 74 79 3b 20 7d 0d 0a 20 20 20 20  riority; }..    
31ec0 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
31ed0 7b 20 74 72 61 63 65 50 72 69 6f 72 69 74 79 20  { tracePriority 
31ee0 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
31ef0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
31f00 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
31f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
31f50 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
31f60 61 74 65 20 62 6f 6f 6c 20 70 65 72 55 73 65 72  ate bool perUser
31f70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
31f80 75 62 6c 69 63 20 62 6f 6f 6c 20 50 65 72 55 73  ublic bool PerUs
31f90 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  er..            
31fa0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
31fb0 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
31fc0 70 65 72 55 73 65 72 3b 20 7d 0d 0a 20 20 20 20  perUser; }..    
31fd0 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
31fe0 7b 20 70 65 72 55 73 65 72 20 3d 20 76 61 6c 75  { perUser = valu
31ff0 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
32000 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
32010 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
32020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32050 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
32060 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
32070 6f 6c 20 69 6e 73 74 61 6c 6c 3b 0d 0a 20 20 20  ol install;..   
32080 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
32090 62 6f 6f 6c 20 49 6e 73 74 61 6c 6c 0d 0a 20 20  bool Install..  
320a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
320b0 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
320c0 20 7b 20 72 65 74 75 72 6e 20 69 6e 73 74 61 6c   { return instal
320d0 6c 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  l; }..          
320e0 20 20 20 20 20 20 73 65 74 20 7b 20 69 6e 73 74        set { inst
320f0 61 6c 6c 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  all = value; }..
32100 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
32110 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
32120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32160 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
32170 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 77 6f 77  private bool wow
32180 36 34 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  64;..           
32190 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 57 6f 77   public bool Wow
321a0 36 34 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  64..            
321b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
321c0 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
321d0 77 6f 77 36 34 3b 20 7d 0d 0a 20 20 20 20 20 20  wow64; }..      
321e0 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
321f0 77 6f 77 36 34 20 3d 20 76 61 6c 75 65 3b 20 7d  wow64 = value; }
32200 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
32210 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
32220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32260 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
32270 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e    private bool n
32280 6f 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 3b  oRuntimeVersion;
32290 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
322a0 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 52 75 6e 74  blic bool NoRunt
322b0 69 6d 65 56 65 72 73 69 6f 6e 0d 0a 20 20 20 20  imeVersion..    
322c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
322d0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
322e0 20 72 65 74 75 72 6e 20 6e 6f 52 75 6e 74 69 6d   return noRuntim
322f0 65 56 65 72 73 69 6f 6e 3b 20 7d 0d 0a 20 20 20  eVersion; }..   
32300 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
32310 20 7b 20 6e 6f 52 75 6e 74 69 6d 65 56 65 72 73   { noRuntimeVers
32320 69 6f 6e 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  ion = value; }..
32330 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
32340 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
32350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32390 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
323a0 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 44  private bool noD
323b0 65 73 6b 74 6f 70 3b 0d 0a 20 20 20 20 20 20 20  esktop;..       
323c0 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c       public bool
323d0 20 4e 6f 44 65 73 6b 74 6f 70 0d 0a 20 20 20 20   NoDesktop..    
323e0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
323f0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
32400 20 72 65 74 75 72 6e 20 6e 6f 44 65 73 6b 74 6f   return noDeskto
32410 70 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  p; }..          
32420 20 20 20 20 20 20 73 65 74 20 7b 20 6e 6f 44 65        set { noDe
32430 73 6b 74 6f 70 20 3d 20 76 61 6c 75 65 3b 20 7d  sktop = value; }
32440 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
32450 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
32460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
324a0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
324b0 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e    private bool n
324c0 6f 43 6f 6d 70 61 63 74 3b 0d 0a 20 20 20 20 20  oCompact;..     
324d0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f         public bo
324e0 6f 6c 20 4e 6f 43 6f 6d 70 61 63 74 0d 0a 20 20  ol NoCompact..  
324f0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
32500 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
32510 20 7b 20 72 65 74 75 72 6e 20 6e 6f 43 6f 6d 70   { return noComp
32520 61 63 74 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  act; }..        
32530 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e 6f          set { no
32540 43 6f 6d 70 61 63 74 20 3d 20 76 61 6c 75 65 3b  Compact = value;
32550 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
32560 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
32570 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
32580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
325a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
325b0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
325c0 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
325d0 20 6e 6f 4e 65 74 46 78 32 30 3b 0d 0a 20 20 20   noNetFx20;..   
325e0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
325f0 62 6f 6f 6c 20 4e 6f 4e 65 74 46 78 32 30 0d 0a  bool NoNetFx20..
32600 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
32610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
32620 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f 4e 65  et { return noNe
32630 74 46 78 32 30 3b 20 7d 0d 0a 20 20 20 20 20 20  tFx20; }..      
32640 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
32650 6e 6f 4e 65 74 46 78 32 30 20 3d 20 76 61 6c 75  noNetFx20 = valu
32660 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
32670 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
32680 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
32690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
326a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
326b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
326c0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
326d0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
326e0 6f 6c 20 6e 6f 4e 65 74 46 78 33 35 3b 0d 0a 20  ol noNetFx35;.. 
326f0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
32700 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74 46 78 33 35  c bool NoNetFx35
32710 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
32720 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32730 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f   get { return no
32740 4e 65 74 46 78 33 35 3b 20 7d 0d 0a 20 20 20 20  NetFx35; }..    
32750 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
32760 7b 20 6e 6f 4e 65 74 46 78 33 35 20 3d 20 76 61  { noNetFx35 = va
32770 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
32780 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
32790 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
327a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
327b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
327c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
327d0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
327e0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
327f0 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 30 3b 0d  bool noNetFx40;.
32800 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
32810 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74 46 78  lic bool NoNetFx
32820 34 30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  40..            
32830 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
32840 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
32850 6e 6f 4e 65 74 46 78 34 30 3b 20 7d 0d 0a 20 20  noNetFx40; }..  
32860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
32870 74 20 7b 20 6e 6f 4e 65 74 46 78 34 30 20 3d 20  t { noNetFx40 = 
32880 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
32890 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
328a0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
328b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
328c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
328d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
328e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
328f0 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
32900 65 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 35  e bool noNetFx45
32910 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
32920 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74  ublic bool NoNet
32930 46 78 34 35 0d 0a 20 20 20 20 20 20 20 20 20 20  Fx45..          
32940 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
32950 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
32960 6e 20 6e 6f 4e 65 74 46 78 34 35 3b 20 7d 0d 0a  n noNetFx45; }..
32970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32980 73 65 74 20 7b 20 6e 6f 4e 65 74 46 78 34 35 20  set { noNetFx45 
32990 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
329a0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
329b0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
329c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
329d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
329e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
329f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
32a00 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
32a10 61 74 65 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78  ate bool noNetFx
32a20 34 35 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  451;..          
32a30 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f    public bool No
32a40 4e 65 74 46 78 34 35 31 0d 0a 20 20 20 20 20 20  NetFx451..      
32a50 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
32a60 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
32a70 65 74 75 72 6e 20 6e 6f 4e 65 74 46 78 34 35 31  eturn noNetFx451
32a80 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
32a90 20 20 20 20 20 73 65 74 20 7b 20 6e 6f 4e 65 74       set { noNet
32aa0 46 78 34 35 31 20 3d 20 76 61 6c 75 65 3b 20 7d  Fx451 = value; }
32ab0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
32ac0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
32ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32b10 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
32b20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e    private bool n
32b30 6f 4e 65 74 46 78 34 35 32 3b 0d 0a 20 20 20 20  oNetFx452;..    
32b40 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
32b50 6f 6f 6c 20 4e 6f 4e 65 74 46 78 34 35 32 0d 0a  ool NoNetFx452..
32b60 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
32b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
32b80 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f 4e 65  et { return noNe
32b90 74 46 78 34 35 32 3b 20 7d 0d 0a 20 20 20 20 20  tFx452; }..     
32ba0 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
32bb0 20 6e 6f 4e 65 74 46 78 34 35 32 20 3d 20 76 61   noNetFx452 = va
32bc0 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
32bd0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
32be0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
32bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32c20 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
32c30 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
32c40 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 36 3b 0d  bool noNetFx46;.
32c50 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
32c60 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74 46 78  lic bool NoNetFx
32c70 34 36 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  46..            
32c80 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
32c90 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
32ca0 6e 6f 4e 65 74 46 78 34 36 3b 20 7d 0d 0a 20 20  noNetFx46; }..  
32cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
32cc0 74 20 7b 20 6e 6f 4e 65 74 46 78 34 36 20 3d 20  t { noNetFx46 = 
32cd0 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
32ce0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
32cf0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
32d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
32d40 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
32d50 65 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 36  e bool noNetFx46
32d60 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  1;..            
32d70 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4e 65  public bool NoNe
32d80 74 46 78 34 36 31 0d 0a 20 20 20 20 20 20 20 20  tFx461..        
32d90 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
32da0 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
32db0 75 72 6e 20 6e 6f 4e 65 74 46 78 34 36 31 3b 20  urn noNetFx461; 
32dc0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
32dd0 20 20 20 73 65 74 20 7b 20 6e 6f 4e 65 74 46 78     set { noNetFx
32de0 34 36 31 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  461 = value; }..
32df0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
32e00 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
32e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32e50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
32e60 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 4e  private bool noN
32e70 65 74 46 78 34 36 32 3b 0d 0a 20 20 20 20 20 20  etFx462;..      
32e80 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
32e90 6c 20 4e 6f 4e 65 74 46 78 34 36 32 0d 0a 20 20  l NoNetFx462..  
32ea0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
32eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
32ec0 20 7b 20 72 65 74 75 72 6e 20 6e 6f 4e 65 74 46   { return noNetF
32ed0 78 34 36 32 3b 20 7d 0d 0a 20 20 20 20 20 20 20  x462; }..       
32ee0 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e           set { n
32ef0 6f 4e 65 74 46 78 34 36 32 20 3d 20 76 61 6c 75  oNetFx462 = valu
32f00 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
32f10 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
32f20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
32f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32f60 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
32f70 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
32f80 6f 6c 20 6e 6f 4e 65 74 46 78 34 37 3b 0d 0a 20  ol noNetFx47;.. 
32f90 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
32fa0 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74 46 78 34 37  c bool NoNetFx47
32fb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
32fc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32fd0 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f   get { return no
32fe0 4e 65 74 46 78 34 37 3b 20 7d 0d 0a 20 20 20 20  NetFx47; }..    
32ff0 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
33000 7b 20 6e 6f 4e 65 74 46 78 34 37 20 3d 20 76 61  { noNetFx47 = va
33010 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
33020 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
33030 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
33040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33070 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
33080 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
33090 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 37 31 3b  bool noNetFx471;
330a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
330b0 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74 46  blic bool NoNetF
330c0 78 34 37 31 0d 0a 20 20 20 20 20 20 20 20 20 20  x471..          
330d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
330e0 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
330f0 6e 20 6e 6f 4e 65 74 46 78 34 37 31 3b 20 7d 0d  n noNetFx471; }.
33100 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33110 20 73 65 74 20 7b 20 6e 6f 4e 65 74 46 78 34 37   set { noNetFx47
33120 31 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  1 = value; }..  
33130 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
33140 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
33150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
33190 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
331a0 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 56 73 32  ivate bool noVs2
331b0 30 30 35 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  005;..          
331c0 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f    public bool No
331d0 56 73 32 30 30 35 0d 0a 20 20 20 20 20 20 20 20  Vs2005..        
331e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
331f0 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
33200 75 72 6e 20 6e 6f 56 73 32 30 30 35 3b 20 7d 0d  urn noVs2005; }.
33210 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33220 20 73 65 74 20 7b 20 6e 6f 56 73 32 30 30 35 20   set { noVs2005 
33230 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
33240 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
33250 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
33260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
332a0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
332b0 61 74 65 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 30  ate bool noVs200
332c0 38 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  8;..            
332d0 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 56 73  public bool NoVs
332e0 32 30 30 38 0d 0a 20 20 20 20 20 20 20 20 20 20  2008..          
332f0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
33300 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
33310 6e 20 6e 6f 56 73 32 30 30 38 3b 20 7d 0d 0a 20  n noVs2008; }.. 
33320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
33330 65 74 20 7b 20 6e 6f 56 73 32 30 30 38 20 3d 20  et { noVs2008 = 
33340 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
33350 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
33360 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
33370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
333a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
333b0 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
333c0 65 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 31 30 3b  e bool noVs2010;
333d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
333e0 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 56 73 32 30  blic bool NoVs20
333f0 31 30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  10..            
33400 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
33410 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
33420 6e 6f 56 73 32 30 31 30 3b 20 7d 0d 0a 20 20 20  noVs2010; }..   
33430 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
33440 20 7b 20 6e 6f 56 73 32 30 31 30 20 3d 20 76 61   { noVs2010 = va
33450 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
33460 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
33470 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
33480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
334a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
334b0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
334c0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
334d0 62 6f 6f 6c 20 6e 6f 56 73 32 30 31 32 3b 0d 0a  bool noVs2012;..
334e0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
334f0 69 63 20 62 6f 6f 6c 20 4e 6f 56 73 32 30 31 32  ic bool NoVs2012
33500 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
33510 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33520 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f   get { return no
33530 56 73 32 30 31 32 3b 20 7d 0d 0a 20 20 20 20 20  Vs2012; }..     
33540 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
33550 20 6e 6f 56 73 32 30 31 32 20 3d 20 76 61 6c 75   noVs2012 = valu
33560 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
33570 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
33580 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
33590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
335a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
335b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
335c0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
335d0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
335e0 6f 6c 20 6e 6f 56 73 32 30 31 33 3b 0d 0a 20 20  ol noVs2013;..  
335f0 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
33600 20 62 6f 6f 6c 20 4e 6f 56 73 32 30 31 33 0d 0a   bool NoVs2013..
33610 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
33620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
33630 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f 56 73  et { return noVs
33640 32 30 31 33 3b 20 7d 0d 0a 20 20 20 20 20 20 20  2013; }..       
33650 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e           set { n
33660 6f 56 73 32 30 31 33 20 3d 20 76 61 6c 75 65 3b  oVs2013 = value;
33670 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
33680 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
33690 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
336a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
336b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
336c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
336d0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
336e0 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
336f0 20 6e 6f 56 73 32 30 31 35 3b 0d 0a 20 20 20 20   noVs2015;..    
33700 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
33710 6f 6f 6c 20 4e 6f 56 73 32 30 31 35 0d 0a 20 20  ool NoVs2015..  
33720 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
33730 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
33740 20 7b 20 72 65 74 75 72 6e 20 6e 6f 56 73 32 30   { return noVs20
33750 31 35 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  15; }..         
33760 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e 6f 56         set { noV
33770 73 32 30 31 35 20 3d 20 76 61 6c 75 65 3b 20 7d  s2015 = value; }
33780 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
33790 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
337a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
337b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
337c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
337d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
337e0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
337f0 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e    private bool n
33800 6f 56 73 32 30 31 37 3b 0d 0a 20 20 20 20 20 20  oVs2017;..      
33810 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
33820 6c 20 4e 6f 56 73 32 30 31 37 0d 0a 20 20 20 20  l NoVs2017..    
33830 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
33840 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
33850 20 72 65 74 75 72 6e 20 6e 6f 56 73 32 30 31 37   return noVs2017
33860 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
33870 20 20 20 20 20 73 65 74 20 7b 20 6e 6f 56 73 32       set { noVs2
33880 30 31 37 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  017 = value; }..
33890 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
338a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
338b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
338c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
338d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
338e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
338f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
33900 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 54  private bool noT
33910 72 61 63 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  race;..         
33920 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e     public bool N
33930 6f 54 72 61 63 65 0d 0a 20 20 20 20 20 20 20 20  oTrace..        
33940 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
33950 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
33960 75 72 6e 20 6e 6f 54 72 61 63 65 3b 20 7d 0d 0a  urn noTrace; }..
33970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33980 73 65 74 20 7b 20 6e 6f 54 72 61 63 65 20 3d 20  set { noTrace = 
33990 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
339a0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
339b0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
339c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
339d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
339e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
339f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
33a00 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
33a10 65 20 62 6f 6f 6c 20 6e 6f 43 6f 6e 73 6f 6c 65  e bool noConsole
33a20 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
33a30 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 43 6f 6e  ublic bool NoCon
33a40 73 6f 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20  sole..          
33a50 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
33a60 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
33a70 6e 20 6e 6f 43 6f 6e 73 6f 6c 65 3b 20 7d 0d 0a  n noConsole; }..
33a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33a90 73 65 74 20 7b 20 6e 6f 43 6f 6e 73 6f 6c 65 20  set { noConsole 
33aa0 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
33ab0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
33ac0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
33ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
33b10 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
33b20 61 74 65 20 62 6f 6f 6c 20 6e 6f 4c 6f 67 3b 0d  ate bool noLog;.
33b30 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
33b40 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4c 6f 67 0d 0a  lic bool NoLog..
33b50 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
33b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
33b70 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f 4c 6f  et { return noLo
33b80 67 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  g; }..          
33b90 20 20 20 20 20 20 73 65 74 20 7b 20 6e 6f 4c 6f        set { noLo
33ba0 67 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  g = value; }..  
33bb0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
33bc0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
33bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
33c10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
33c20 69 76 61 74 65 20 62 6f 6f 6c 20 74 68 72 6f 77  ivate bool throw
33c30 4f 6e 4d 69 73 73 69 6e 67 3b 0d 0a 20 20 20 20  OnMissing;..    
33c40 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
33c50 6f 6f 6c 20 54 68 72 6f 77 4f 6e 4d 69 73 73 69  ool ThrowOnMissi
33c60 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ng..            
33c70 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
33c80 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
33c90 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67 3b 20  throwOnMissing; 
33ca0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
33cb0 20 20 20 73 65 74 20 7b 20 74 68 72 6f 77 4f 6e     set { throwOn
33cc0 4d 69 73 73 69 6e 67 20 3d 20 76 61 6c 75 65 3b  Missing = value;
33cd0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
33ce0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
33cf0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
33d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33d30 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
33d40 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
33d50 20 77 68 61 74 49 66 3b 0d 0a 20 20 20 20 20 20   whatIf;..      
33d60 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
33d70 6c 20 57 68 61 74 49 66 0d 0a 20 20 20 20 20 20  l WhatIf..      
33d80 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
33d90 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
33da0 65 74 75 72 6e 20 77 68 61 74 49 66 3b 20 7d 0d  eturn whatIf; }.
33db0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33dc0 20 73 65 74 20 7b 20 77 68 61 74 49 66 20 3d 20   set { whatIf = 
33dd0 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
33de0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
33df0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
33e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
33e40 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
33e50 65 20 62 6f 6f 6c 20 64 65 62 75 67 3b 0d 0a 20  e bool debug;.. 
33e60 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
33e70 63 20 62 6f 6f 6c 20 44 65 62 75 67 0d 0a 20 20  c bool Debug..  
33e80 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
33e90 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
33ea0 20 7b 20 72 65 74 75 72 6e 20 64 65 62 75 67 3b   { return debug;
33eb0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
33ec0 20 20 20 20 73 65 74 20 7b 20 64 65 62 75 67 20      set { debug 
33ed0 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
33ee0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
33ef0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
33f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
33f40 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
33f50 61 74 65 20 62 6f 6f 6c 20 76 65 72 62 6f 73 65  ate bool verbose
33f60 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
33f70 75 62 6c 69 63 20 62 6f 6f 6c 20 56 65 72 62 6f  ublic bool Verbo
33f80 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
33f90 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
33fa0 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
33fb0 76 65 72 62 6f 73 65 3b 20 7d 0d 0a 20 20 20 20  verbose; }..    
33fc0 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
33fd0 7b 20 76 65 72 62 6f 73 65 20 3d 20 76 61 6c 75  { verbose = valu
33fe0 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
33ff0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
34000 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
34010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34040 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
34050 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
34060 6f 6c 20 63 6f 6e 66 69 72 6d 3b 0d 0a 20 20 20  ol confirm;..   
34070 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
34080 62 6f 6f 6c 20 43 6f 6e 66 69 72 6d 0d 0a 20 20  bool Confirm..  
34090 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
340a0 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
340b0 20 7b 20 72 65 74 75 72 6e 20 63 6f 6e 66 69 72   { return confir
340c0 6d 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  m; }..          
340d0 20 20 20 20 20 20 73 65 74 20 7b 20 63 6f 6e 66        set { conf
340e0 69 72 6d 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  irm = value; }..
340f0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
34100 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
34110 65 67 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7d  egion..        }
34120 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
34130 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
34140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34180 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
34190 20 20 20 23 72 65 67 69 6f 6e 20 46 72 61 6d 65     #region Frame
341a0 77 6f 72 6b 4c 69 73 74 20 43 6c 61 73 73 0d 0a  workList Class..
341b0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
341c0 73 65 61 6c 65 64 20 63 6c 61 73 73 20 46 72 61  sealed class Fra
341d0 6d 65 77 6f 72 6b 4c 69 73 74 0d 0a 20 20 20 20  meworkList..    
341e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
341f0 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69     #region Publi
34200 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a  c Constructors..
34210 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
34220 69 63 20 46 72 61 6d 65 77 6f 72 6b 4c 69 73 74  ic FrameworkList
34230 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ()..            
34240 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
34250 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
34260 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ...            }
34270 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
34280 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
34290 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
342a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
342b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
342c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
342d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
342e0 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
342f0 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64  on Public Method
34300 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  s..            p
34310 72 69 76 61 74 65 20 4d 6f 63 6b 52 65 67 69 73  rivate MockRegis
34320 74 72 79 4b 65 79 20 72 6f 6f 74 4b 65 79 3b 0d  tryKey rootKey;.
34330 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
34340 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79  lic MockRegistry
34350 4b 65 79 20 52 6f 6f 74 4b 65 79 0d 0a 20 20 20  Key RootKey..   
34360 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
34370 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
34380 7b 20 72 65 74 75 72 6e 20 72 6f 6f 74 4b 65 79  { return rootKey
34390 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
343a0 20 20 20 20 20 73 65 74 20 7b 20 72 6f 6f 74 4b       set { rootK
343b0 65 79 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20  ey = value; }.. 
343c0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
343d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
343e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
343f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
34420 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
34430 72 69 76 61 74 65 20 53 74 72 69 6e 67 4c 69 73  rivate StringLis
34440 74 20 6e 61 6d 65 73 3b 0d 0a 20 20 20 20 20 20  t names;..      
34450 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 74 72        public Str
34460 69 6e 67 4c 69 73 74 20 4e 61 6d 65 73 0d 0a 20  ingList Names.. 
34470 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
34480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
34490 74 20 7b 20 72 65 74 75 72 6e 20 6e 61 6d 65 73  t { return names
344a0 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
344b0 20 20 20 20 20 73 65 74 20 7b 20 6e 61 6d 65 73       set { names
344c0 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20   = value; }..   
344d0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
344e0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
344f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
34530 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
34540 76 61 74 65 20 56 65 72 73 69 6f 6e 4d 61 70 20  vate VersionMap 
34550 76 65 72 73 69 6f 6e 73 3b 0d 0a 20 20 20 20 20  versions;..     
34560 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 56 65         public Ve
34570 72 73 69 6f 6e 4d 61 70 20 56 65 72 73 69 6f 6e  rsionMap Version
34580 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  s..            {
34590 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
345a0 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 76    get { return v
345b0 65 72 73 69 6f 6e 73 3b 20 7d 0d 0a 20 20 20 20  ersions; }..    
345c0 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
345d0 7b 20 76 65 72 73 69 6f 6e 73 20 3d 20 76 61 6c  { versions = val
345e0 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  ue; }..         
345f0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
34600 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
34610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34640 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
34650 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
34660 74 72 69 6e 67 4c 69 73 74 20 70 6c 61 74 66 6f  tringList platfo
34670 72 6d 4e 61 6d 65 73 3b 0d 0a 20 20 20 20 20 20  rmNames;..      
34680 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 74 72        public Str
34690 69 6e 67 4c 69 73 74 20 50 6c 61 74 66 6f 72 6d  ingList Platform
346a0 4e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20  Names..         
346b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
346c0 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
346d0 72 6e 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 73  rn platformNames
346e0 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
346f0 20 20 20 20 20 73 65 74 20 7b 20 70 6c 61 74 66       set { platf
34700 6f 72 6d 4e 61 6d 65 73 20 3d 20 76 61 6c 75 65  ormNames = value
34710 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
34720 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
34730 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20  #endregion..    
34740 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
34750 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
34760 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
34770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
347a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
347b0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
347c0 56 73 4c 69 73 74 20 43 6c 61 73 73 0d 0a 20 20  VsList Class..  
347d0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 65        private se
347e0 61 6c 65 64 20 63 6c 61 73 73 20 56 73 4c 69 73  aled class VsLis
347f0 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  t..        {..  
34800 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
34810 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75  n Public Constru
34820 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20  ctors..         
34830 20 20 20 70 75 62 6c 69 63 20 56 73 4c 69 73 74     public VsList
34840 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ()..            
34850 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
34860 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
34870 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ...            }
34880 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
34890 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
348a0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
348b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
348c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
348d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
348e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
348f0 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
34900 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72  on Public Proper
34910 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20  ties..          
34920 20 20 70 72 69 76 61 74 65 20 4d 6f 63 6b 52 65    private MockRe
34930 67 69 73 74 72 79 4b 65 79 20 72 6f 6f 74 4b 65  gistryKey rootKe
34940 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y;..            
34950 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73  public MockRegis
34960 74 72 79 4b 65 79 20 52 6f 6f 74 4b 65 79 0d 0a  tryKey RootKey..
34970 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
34980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
34990 65 74 20 7b 20 72 65 74 75 72 6e 20 72 6f 6f 74  et { return root
349a0 4b 65 79 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  Key; }..        
349b0 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 72 6f          set { ro
349c0 6f 74 4b 65 79 20 3d 20 76 61 6c 75 65 3b 20 7d  otKey = value; }
349d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
349e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
349f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a30 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
34a40 20 20 70 72 69 76 61 74 65 20 56 65 72 73 69 6f    private Versio
34a50 6e 4c 69 73 74 20 76 65 72 73 69 6f 6e 73 3b 0d  nList versions;.
34a60 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
34a70 6c 69 63 20 56 65 72 73 69 6f 6e 4c 69 73 74 20  lic VersionList 
34a80 56 65 72 73 69 6f 6e 73 0d 0a 20 20 20 20 20 20  Versions..      
34a90 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
34aa0 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
34ab0 65 74 75 72 6e 20 76 65 72 73 69 6f 6e 73 3b 20  eturn versions; 
34ac0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
34ad0 20 20 20 73 65 74 20 7b 20 76 65 72 73 69 6f 6e     set { version
34ae0 73 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  s = value; }..  
34af0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
34b00 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
34b10 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ion..        }..
34b20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
34b30 6f 6e 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64  on..        #end
34b40 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
34b50 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
34b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
34ba0 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
34bb0 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 20 44 61  vate Constant Da
34bc0 74 61 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ta..        #reg
34bd0 69 6f 6e 20 50 61 63 6b 61 67 65 20 26 20 50 72  ion Package & Pr
34be0 6f 76 69 64 65 72 20 4e 61 6d 65 73 0d 0a 20 20  ovider Names..  
34bf0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f        private co
34c00 6e 73 74 20 73 74 72 69 6e 67 20 43 6f 72 65 46  nst string CoreF
34c10 69 6c 65 4e 61 6d 65 20 3d 20 22 53 79 73 74 65  ileName = "Syste
34c20 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c  m.Data.SQLite.dl
34c30 6c 22 3b 0d 0a 20 20 20 20 20 20 20 20 70 72 69  l";..        pri
34c40 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e  vate const strin
34c50 67 20 4c 69 6e 71 46 69 6c 65 4e 61 6d 65 20 3d  g LinqFileName =
34c60 20 22 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51   "System.Data.SQ
34c70 4c 69 74 65 2e 4c 69 6e 71 2e 64 6c 6c 22 3b 0d  Lite.Linq.dll";.
34c80 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
34c90 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 45 66   const string Ef
34ca0 36 46 69 6c 65 4e 61 6d 65 20 3d 20 22 53 79 73  6FileName = "Sys
34cb0 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e  tem.Data.SQLite.
34cc0 45 46 36 2e 64 6c 6c 22 3b 0d 0a 20 20 20 20 20  EF6.dll";..     
34cd0 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
34ce0 20 73 74 72 69 6e 67 20 44 65 73 69 67 6e 65 72   string Designer
34cf0 46 69 6c 65 4e 61 6d 65 20 3d 20 22 53 51 4c 69  FileName = "SQLi
34d00 74 65 2e 44 65 73 69 67 6e 65 72 2e 64 6c 6c 22  te.Designer.dll"
34d10 3b 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ;..        priva
34d20 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  te const string 
34d30 50 72 6f 76 69 64 65 72 4e 61 6d 65 20 3d 20 22  ProviderName = "
34d40 53 51 4c 69 74 65 20 44 61 74 61 20 50 72 6f 76  SQLite Data Prov
34d50 69 64 65 72 22 3b 0d 0a 20 20 20 20 20 20 20 20  ider";..        
34d60 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74  private const st
34d70 72 69 6e 67 20 50 72 6f 6a 65 63 74 4e 61 6d 65  ring ProjectName
34d80 20 3d 20 22 53 79 73 74 65 6d 2e 44 61 74 61 2e   = "System.Data.
34d90 53 51 4c 69 74 65 22 3b 0d 0a 20 20 20 20 20 20  SQLite";..      
34da0 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20    private const 
34db0 73 74 72 69 6e 67 20 4c 65 67 61 63 79 50 72 6f  string LegacyPro
34dc0 6a 65 63 74 4e 61 6d 65 20 3d 20 22 53 51 4c 69  jectName = "SQLi
34dd0 74 65 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  te";....        
34de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34e20 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
34e30 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
34e40 20 73 74 72 69 6e 67 20 44 65 73 63 72 69 70 74   string Descript
34e50 69 6f 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ion =..         
34e60 20 20 20 22 2e 4e 45 54 20 46 72 61 6d 65 77 6f     ".NET Framewo
34e70 72 6b 20 44 61 74 61 20 50 72 6f 76 69 64 65 72  rk Data Provider
34e80 20 66 6f 72 20 53 51 4c 69 74 65 22 3b 0d 0a 20   for SQLite";.. 
34e90 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
34ea0 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
34eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34ef0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
34f00 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74  private const st
34f10 72 69 6e 67 20 44 69 73 70 6c 61 79 4e 75 6c 6c  ring DisplayNull
34f20 20 3d 20 22 3c 6e 75 6c 6c 3e 22 3b 0d 0a 20 20   = "<null>";..  
34f30 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f        private co
34f40 6e 73 74 20 73 74 72 69 6e 67 20 44 69 73 70 6c  nst string Displ
34f50 61 79 45 6d 70 74 79 20 3d 20 22 3c 65 6d 70 74  ayEmpty = "<empt
34f60 79 3e 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  y>";....        
34f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34fb0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
34fc0 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
34fd0 20 73 74 72 69 6e 67 20 43 4c 52 76 32 49 6d 61   string CLRv2Ima
34fe0 67 65 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e  geRuntimeVersion
34ff0 20 3d 20 22 76 32 2e 30 2e 35 30 37 32 37 22 3b   = "v2.0.50727";
35000 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
35010 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 43  e const string C
35020 4c 52 76 34 49 6d 61 67 65 52 75 6e 74 69 6d 65  LRv4ImageRuntime
35030 56 65 72 73 69 6f 6e 20 3d 20 22 76 34 2e 30 2e  Version = "v4.0.
35040 33 30 33 31 39 22 3b 0d 0a 0d 0a 20 20 20 20 20  30319";....     
35050 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
35060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
350a0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f        private co
350b0 6e 73 74 20 73 74 72 69 6e 67 20 53 79 73 74 65  nst string Syste
350c0 6d 45 66 36 41 73 73 65 6d 62 6c 79 4e 61 6d 65  mEf6AssemblyName
350d0 20 3d 20 22 45 6e 74 69 74 79 46 72 61 6d 65 77   = "EntityFramew
350e0 6f 72 6b 2c 20 22 20 2b 0d 0a 20 20 20 20 20 20  ork, " +..      
350f0 20 20 20 20 20 20 22 56 65 72 73 69 6f 6e 3d 36        "Version=6
35100 2e 30 2e 30 2e 30 2c 20 43 75 6c 74 75 72 65 3d  .0.0.0, Culture=
35110 6e 65 75 74 72 61 6c 2c 20 50 75 62 6c 69 63 4b  neutral, PublicK
35120 65 79 54 6f 6b 65 6e 3d 62 37 37 61 35 63 35 36  eyToken=b77a5c56
35130 31 39 33 34 65 30 38 39 22 3b 0d 0a 0d 0a 20 20  1934e089";....  
35140 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
35150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
35190 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
351a0 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 4e 61   const string Na
351b0 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74  meAndValueFormat
351c0 20 3d 20 22 7b 30 7d 3a 20 7b 31 7d 22 3b 0d 0a   = "{0}: {1}";..
351d0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
351e0 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 4c 6f 67  const string Log
351f0 46 69 6c 65 53 75 66 66 69 78 20 3d 20 22 2e 6c  FileSuffix = ".l
35200 6f 67 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  og";....        
35210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35250 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
35260 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
35270 20 73 74 72 69 6e 67 20 56 73 44 65 76 45 6e 76   string VsDevEnv
35280 53 65 74 75 70 46 6f 72 6d 61 74 20 3d 20 22 7b  SetupFormat = "{
35290 30 7d 3a 20 7b 31 7d 22 3b 0d 0a 0d 0a 20 20 20  0}: {1}";....   
352a0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
352b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
352c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
352d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
352e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
352f0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
35300 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 52 6f 6f  const string Roo
35310 74 4b 65 79 4e 61 6d 65 20 3d 20 22 53 6f 66 74  tKeyName = "Soft
35320 77 61 72 65 22 3b 0d 0a 20 20 20 20 20 20 20 20  ware";..        
35330 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74  private const st
35340 72 69 6e 67 20 57 6f 77 36 34 53 75 62 4b 65 79  ring Wow64SubKey
35350 4e 61 6d 65 20 3d 20 22 57 6f 77 36 34 33 32 4e  Name = "Wow6432N
35360 6f 64 65 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ode";....       
35370 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
35380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
353a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
353b0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
353c0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
353d0 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 2e 4e 45  // NOTE: The .NE
353e0 54 20 46 72 61 6d 65 77 6f 72 6b 20 68 61 73 20  T Framework has 
353f0 62 6f 74 68 20 33 32 2d 62 69 74 20 61 6e 64 20  both 32-bit and 
35400 36 34 2d 62 69 74 20 65 64 69 74 69 6f 6e 73 2e  64-bit editions.
35410 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20  ..        //..  
35420 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
35430 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 62 6f  atic readonly bo
35440 6f 6c 20 4e 65 74 46 78 49 73 33 32 42 69 74 4f  ol NetFxIs32BitO
35450 6e 6c 79 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d 0a  nly = false;....
35460 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
35470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
354a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
354b0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  ...        //.. 
354c0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
354d0 46 6f 72 20 6e 6f 77 2c 20 56 69 73 75 61 6c 20  For now, Visual 
354e0 53 74 75 64 69 6f 20 69 73 20 61 6c 77 61 79 73  Studio is always
354f0 20 61 20 33 32 2d 62 69 74 20 61 70 70 6c 69 63   a 32-bit applic
35500 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
35510 2f 2f 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  //..        priv
35520 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
35530 6e 6c 79 20 62 6f 6f 6c 20 56 73 49 73 33 32 42  nly bool VsIs32B
35540 69 74 4f 6e 6c 79 20 3d 20 74 72 75 65 3b 0d 0a  itOnly = true;..
35550 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
35560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
355a0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
355b0 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64  vate static read
355c0 6f 6e 6c 79 20 73 74 72 69 6e 67 20 56 73 49 64  only string VsId
355d0 46 6f 72 6d 61 74 20 3d 20 22 42 22 3b 0d 0a 0d  Format = "B";...
355e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
355f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35630 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
35640 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
35650 6e 6c 79 20 73 74 72 69 6e 67 20 58 50 61 74 68  nly string XPath
35660 46 6f 72 41 64 64 45 6c 65 6d 65 6e 74 20 3d 0d  ForAddElement =.
35670 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 63 6f  .            "co
35680 6e 66 69 67 75 72 61 74 69 6f 6e 2f 73 79 73 74  nfiguration/syst
35690 65 6d 2e 64 61 74 61 2f 44 62 50 72 6f 76 69 64  em.data/DbProvid
356a0 65 72 46 61 63 74 6f 72 69 65 73 2f 61 64 64 5b  erFactories/add[
356b0 40 69 6e 76 61 72 69 61 6e 74 3d 5c 22 7b 30 7d  @invariant=\"{0}
356c0 5c 22 5d 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  \"]";....       
356d0 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
356e0 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20  readonly string 
356f0 58 50 61 74 68 46 6f 72 52 65 6d 6f 76 65 45 6c  XPathForRemoveEl
35700 65 6d 65 6e 74 20 3d 0d 0a 20 20 20 20 20 20 20  ement =..       
35710 20 20 20 20 20 22 63 6f 6e 66 69 67 75 72 61 74       "configurat
35720 69 6f 6e 2f 73 79 73 74 65 6d 2e 64 61 74 61 2f  ion/system.data/
35730 44 62 50 72 6f 76 69 64 65 72 46 61 63 74 6f 72  DbProviderFactor
35740 69 65 73 2f 72 65 6d 6f 76 65 5b 40 69 6e 76 61  ies/remove[@inva
35750 72 69 61 6e 74 3d 5c 22 7b 30 7d 5c 22 5d 22 3b  riant=\"{0}\"]";
35760 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
35770 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
35780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
357a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
357b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
357c0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
357d0 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
357e0 74 65 20 53 74 61 74 69 63 20 44 61 74 61 0d 0a  te Static Data..
357f0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
35800 44 69 61 67 6e 6f 73 74 69 63 73 20 26 20 4c 6f  Diagnostics & Lo
35810 67 67 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f  gging..        /
35820 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  /..        // NO
35830 54 45 3a 20 43 61 63 68 65 20 74 68 65 20 63 75  TE: Cache the cu
35840 72 72 65 6e 74 20 70 72 6f 63 65 73 73 20 61 6e  rrent process an
35850 64 20 61 73 73 65 6d 62 6c 79 20 61 73 20 74 68  d assembly as th
35860 65 79 20 64 6f 20 6e 6f 74 20 63 68 61 6e 67 65  ey do not change
35870 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20  ..        //    
35880 20 20 20 61 6e 64 20 6d 61 79 20 62 65 20 6e 65     and may be ne
35890 65 64 65 64 20 69 6e 20 71 75 69 74 65 20 61 20  eded in quite a 
358a0 66 65 77 20 64 69 66 66 65 72 65 6e 74 20 70 6c  few different pl
358b0 61 63 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  aces...        /
358c0 2f 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  /..        priva
358d0 74 65 20 73 74 61 74 69 63 20 50 72 6f 63 65 73  te static Proces
358e0 73 20 74 68 69 73 50 72 6f 63 65 73 73 20 3d 20  s thisProcess = 
358f0 50 72 6f 63 65 73 73 2e 47 65 74 43 75 72 72 65  Process.GetCurre
35900 6e 74 50 72 6f 63 65 73 73 28 29 3b 0d 0a 20 20  ntProcess();..  
35910 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
35920 61 74 69 63 20 41 73 73 65 6d 62 6c 79 20 74 68  atic Assembly th
35930 69 73 41 73 73 65 6d 62 6c 79 20 3d 20 41 73 73  isAssembly = Ass
35940 65 6d 62 6c 79 2e 47 65 74 45 78 65 63 75 74 69  embly.GetExecuti
35950 6e 67 41 73 73 65 6d 62 6c 79 28 29 3b 0d 0a 0d  ngAssembly();...
35960 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
35970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
359a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
359b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ....        //..
359c0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
359d0 20 54 68 65 20 74 72 61 63 65 20 63 61 74 65 67   The trace categ
359e0 6f 72 79 20 69 73 20 74 68 65 20 73 61 6d 65 20  ory is the same 
359f0 66 6f 72 20 62 6f 74 68 20 74 68 65 20 64 65 62  for both the deb
35a00 75 67 20 61 6e 64 20 74 72 61 63 65 0d 0a 20 20  ug and trace..  
35a10 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63        //       c
35a20 61 6c 6c 62 61 63 6b 73 2e 0d 0a 20 20 20 20 20  allbacks...     
35a30 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 70     //..        p
35a40 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
35a50 72 69 6e 67 20 74 72 61 63 65 43 61 74 65 67 6f  ring traceCatego
35a60 72 79 20 3d 20 28 74 68 69 73 41 73 73 65 6d 62  ry = (thisAssemb
35a70 6c 79 20 21 3d 20 6e 75 6c 6c 29 20 3f 0d 0a 20  ly != null) ?.. 
35a80 20 20 20 20 20 20 20 20 20 20 20 50 61 74 68 2e             Path.
35a90 47 65 74 46 69 6c 65 4e 61 6d 65 28 74 68 69 73  GetFileName(this
35aa0 41 73 73 65 6d 62 6c 79 2e 4c 6f 63 61 74 69 6f  Assembly.Locatio
35ab0 6e 29 20 3a 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  n) : null;....  
35ac0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
35ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
35b10 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20  .        //..   
35b20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 65       // NOTE: Se
35b30 74 20 74 68 65 20 64 65 62 75 67 20 61 6e 64 20  t the debug and 
35b40 74 72 61 63 65 20 6c 6f 67 67 69 6e 67 20 63 61  trace logging ca
35b50 6c 6c 62 61 63 6b 73 20 75 73 65 64 20 62 79 20  llbacks used by 
35b60 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20  the..        // 
35b70 20 20 20 20 20 20 61 70 70 6c 69 63 61 74 69 6f        applicatio
35b80 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a  n...        //..
35b90 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
35ba0 73 74 61 74 69 63 20 54 72 61 63 65 43 61 6c 6c  static TraceCall
35bb0 62 61 63 6b 20 64 65 62 75 67 43 61 6c 6c 62 61  back debugCallba
35bc0 63 6b 20 3d 20 41 70 70 44 65 62 75 67 3b 0d 0a  ck = AppDebug;..
35bd0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
35be0 73 74 61 74 69 63 20 54 72 61 63 65 43 61 6c 6c  static TraceCall
35bf0 62 61 63 6b 20 74 72 61 63 65 43 61 6c 6c 62 61  back traceCallba
35c00 63 6b 20 3d 20 41 70 70 54 72 61 63 65 3b 0d 0a  ck = AppTrace;..
35c10 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
35c20 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
35c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c70 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
35c80 20 23 72 65 67 69 6f 6e 20 53 79 73 74 65 6d 20   #region System 
35c90 44 69 72 65 63 74 6f 72 79 0d 0a 20 20 20 20 20  Directory..     
35ca0 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
35cb0 63 20 73 74 72 69 6e 67 20 73 79 73 74 65 6d 44  c string systemD
35cc0 69 72 65 63 74 6f 72 79 20 3d 20 6e 75 6c 6c 3b  irectory = null;
35cd0 0d 0a 0d 0a 23 69 66 20 57 49 4e 44 4f 57 53 0d  ....#if WINDOWS.
35ce0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
35cf0 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 73   static string s
35d00 79 73 74 65 6d 44 69 72 65 63 74 6f 72 79 57 6f  ystemDirectoryWo
35d10 77 36 34 20 3d 20 6e 75 6c 6c 3b 0d 0a 23 65 6e  w64 = null;..#en
35d20 64 69 66 0d 0a 20 20 20 20 20 20 20 20 23 65 6e  dif..        #en
35d30 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
35d40 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
35d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
35d90 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 52 65        #region Re
35da0 67 69 73 74 72 79 20 53 74 61 74 69 73 74 69 63  gistry Statistic
35db0 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  s..        priva
35dc0 74 65 20 73 74 61 74 69 63 20 69 6e 74 20 66 69  te static int fi
35dd0 6c 65 73 43 72 65 61 74 65 64 20 3d 20 30 3b 0d  lesCreated = 0;.
35de0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
35df0 20 73 74 61 74 69 63 20 69 6e 74 20 66 69 6c 65   static int file
35e00 73 4d 6f 64 69 66 69 65 64 20 3d 20 30 3b 0d 0a  sModified = 0;..
35e10 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
35e20 73 74 61 74 69 63 20 69 6e 74 20 66 69 6c 65 73  static int files
35e30 44 65 6c 65 74 65 64 20 3d 20 30 3b 0d 0a 20 20  Deleted = 0;..  
35e40 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
35e50 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
35e60 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
35e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35eb0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
35ec0 20 20 20 23 72 65 67 69 6f 6e 20 54 72 61 63 65     #region Trace
35ed0 20 48 61 6e 64 6c 69 6e 67 0d 0a 20 20 20 20 20   Handling..     
35ee0 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
35ef0 63 20 73 74 72 69 6e 67 20 47 65 74 4c 6f 67 46  c string GetLogF
35f00 69 6c 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20  ileName(..      
35f10 20 20 20 20 20 20 73 74 72 69 6e 67 20 74 79 70        string typ
35f20 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20  eName..         
35f30 20 20 20 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f     ) /* throw */
35f40 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
35f50 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
35f60 66 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68 2e  fileName = Path.
35f70 47 65 74 54 65 6d 70 46 69 6c 65 4e 61 6d 65 28  GetTempFileName(
35f80 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
35f90 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79  string directory
35fa0 20 3d 20 50 61 74 68 2e 47 65 74 44 69 72 65 63   = Path.GetDirec
35fb0 74 6f 72 79 4e 61 6d 65 28 66 69 6c 65 4e 61 6d  toryName(fileNam
35fc0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
35fd0 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65   string fileName
35fe0 4f 6e 6c 79 20 3d 20 50 61 74 68 2e 47 65 74 46  Only = Path.GetF
35ff0 69 6c 65 4e 61 6d 65 57 69 74 68 6f 75 74 45 78  ileNameWithoutEx
36000 74 65 6e 73 69 6f 6e 28 66 69 6c 65 4e 61 6d 65  tension(fileName
36010 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
36020 20 20 73 74 72 69 6e 67 20 6e 65 77 46 69 6c 65    string newFile
36030 4e 61 6d 65 20 3d 20 50 61 74 68 2e 43 6f 6d 62  Name = Path.Comb
36040 69 6e 65 28 64 69 72 65 63 74 6f 72 79 2c 20 53  ine(directory, S
36050 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
36060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
36070 7b 30 7d 7b 31 7d 7b 32 7d 22 2c 20 74 72 61 63  {0}{1}{2}", trac
36080 65 43 61 74 65 67 6f 72 79 2c 20 21 53 74 72 69  eCategory, !Stri
36090 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
360a0 28 74 79 70 65 4e 61 6d 65 29 20 3f 0d 0a 20 20  (typeName) ?..  
360b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
360c0 20 20 22 2e 22 20 2b 20 74 79 70 65 4e 61 6d 65    "." + typeName
360d0 20 3a 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 2c   : String.Empty,
360e0 20 22 2e 22 20 2b 20 66 69 6c 65 4e 61 6d 65 4f   "." + fileNameO
360f0 6e 6c 79 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  nly +..         
36100 20 20 20 20 20 20 20 20 20 20 20 4c 6f 67 46 69             LogFi
36110 6c 65 53 75 66 66 69 78 29 29 3b 0d 0a 0d 0a 20  leSuffix));.... 
36120 20 20 20 20 20 20 20 20 20 20 20 46 69 6c 65 2e             File.
36130 4d 6f 76 65 28 66 69 6c 65 4e 61 6d 65 2c 20 6e  Move(fileName, n
36140 65 77 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a  ewFileName);....
36150 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
36160 72 6e 20 6e 65 77 46 69 6c 65 4e 61 6d 65 3b 0d  rn newFileName;.
36170 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
36180 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
36190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
361a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
361b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
361c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
361d0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
361e0 20 73 74 61 74 69 63 20 76 6f 69 64 20 41 70 70   static void App
361f0 44 65 62 75 67 28 0d 0a 20 20 20 20 20 20 20 20  Debug(..        
36200 20 20 20 20 73 74 72 69 6e 67 20 6d 65 73 73 61      string messa
36210 67 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ge,..           
36220 20 73 74 72 69 6e 67 20 63 61 74 65 67 6f 72 79   string category
36230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
36240 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
36250 20 20 20 20 20 20 20 20 54 72 61 63 65 4f 70 73          TraceOps
36260 2e 44 65 62 75 67 43 6f 72 65 28 53 74 72 69 6e  .DebugCore(Strin
36270 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
36280 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
36290 4f 70 73 2e 44 65 62 75 67 46 6f 72 6d 61 74 2c  Ops.DebugFormat,
362a0 20 54 72 61 63 65 4f 70 73 2e 4e 65 78 74 44 65   TraceOps.NextDe
362b0 62 75 67 49 64 28 29 2c 0d 0a 20 20 20 20 20 20  bugId(),..      
362c0 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f            TraceO
362d0 70 73 2e 54 69 6d 65 53 74 61 6d 70 28 44 61 74  ps.TimeStamp(Dat
362e0 65 54 69 6d 65 2e 55 74 63 4e 6f 77 29 2c 20 6d  eTime.UtcNow), m
362f0 65 73 73 61 67 65 29 2c 20 63 61 74 65 67 6f 72  essage), categor
36300 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  y);..        }..
36310 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
36320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36360 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
36370 76 61 74 65 20 73 74 61 74 69 63 20 76 6f 69 64  vate static void
36380 20 41 70 70 54 72 61 63 65 28 0d 0a 20 20 20 20   AppTrace(..    
36390 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6d          string m
363a0 65 73 73 61 67 65 2c 0d 0a 20 20 20 20 20 20 20  essage,..       
363b0 20 20 20 20 20 73 74 72 69 6e 67 20 63 61 74 65       string cate
363c0 67 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20  gory..          
363d0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
363e0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
363f0 65 4f 70 73 2e 54 72 61 63 65 43 6f 72 65 28 53  eOps.TraceCore(S
36400 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
36410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
36420 72 61 63 65 4f 70 73 2e 54 72 61 63 65 46 6f 72  raceOps.TraceFor
36430 6d 61 74 2c 20 54 72 61 63 65 4f 70 73 2e 4e 65  mat, TraceOps.Ne
36440 78 74 54 72 61 63 65 49 64 28 29 2c 0d 0a 20 20  xtTraceId(),..  
36450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
36460 61 63 65 4f 70 73 2e 54 69 6d 65 53 74 61 6d 70  aceOps.TimeStamp
36470 28 44 61 74 65 54 69 6d 65 2e 55 74 63 4e 6f 77  (DateTime.UtcNow
36480 29 2c 20 6d 65 73 73 61 67 65 29 2c 20 63 61 74  ), message), cat
36490 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20  egory);..       
364a0 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
364b0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
364c0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
364d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
364e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
364f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36500 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
36510 20 20 20 20 20 23 72 65 67 69 6f 6e 20 47 65 6e       #region Gen
36520 65 72 69 63 20 50 6c 61 74 66 6f 72 6d 20 48 61  eric Platform Ha
36530 6e 64 6c 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  ndling..        
36540 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62  private static b
36550 6f 6f 6c 20 49 73 36 34 42 69 74 50 72 6f 63 65  ool Is64BitProce
36560 73 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ss()..        {.
36570 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  .            //.
36580 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
36590 4e 4f 54 45 3a 20 52 65 74 75 72 6e 73 20 74 72  NOTE: Returns tr
365a0 75 65 20 69 66 20 74 68 65 20 63 75 72 72 65 6e  ue if the curren
365b0 74 20 70 72 6f 63 65 73 73 20 69 73 20 36 34 2d  t process is 64-
365c0 62 69 74 2e 20 20 49 66 20 74 68 69 73 0d 0a 20  bit.  If this.. 
365d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
365e0 20 20 20 20 69 73 20 74 72 75 65 2c 20 77 65 20      is true, we 
365f0 2a 6b 6e 6f 77 2a 20 74 68 61 74 20 77 65 20 6d  *know* that we m
36600 75 73 74 20 62 65 20 72 75 6e 6e 69 6e 67 20 6f  ust be running o
36610 6e 20 61 20 36 34 2d 62 69 74 0d 0a 20 20 20 20  n a 64-bit..    
36620 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
36630 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65   operating syste
36640 6d 20 61 73 20 77 65 6c 6c 2e 20 20 48 6f 77 65  m as well.  Howe
36650 76 65 72 2c 20 69 66 20 74 68 69 73 20 69 73 20  ver, if this is 
36660 66 61 6c 73 65 2c 20 77 65 0d 0a 20 20 20 20 20  false, we..     
36670 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
36680 64 6f 20 6e 6f 74 20 6e 65 63 65 73 73 61 72 69  do not necessari
36690 6c 79 20 6b 6e 6f 77 20 74 68 61 74 20 77 65 20  ly know that we 
366a0 61 72 65 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 61  are running on a
366b0 20 33 32 2d 62 69 74 0d 0a 20 20 20 20 20 20 20   32-bit..       
366c0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 70       //       op
366d0 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2c 20  erating system, 
366e0 64 75 65 20 74 6f 20 57 6f 57 36 34 20 28 57 69  due to WoW64 (Wi
366f0 6e 33 32 2d 6f 6e 2d 57 69 6e 36 34 29 2c 20 65  n32-on-Win64), e
36700 74 63 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tc...           
36710 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
36720 20 72 65 74 75 72 6e 20 28 49 6e 74 50 74 72 2e   return (IntPtr.
36730 53 69 7a 65 20 3d 3d 20 73 69 7a 65 6f 66 28 6c  Size == sizeof(l
36740 6f 6e 67 29 29 3b 20 2f 2f 20 4e 4f 54 45 3a 20  ong)); // NOTE: 
36750 50 6f 69 6e 74 65 72 20 69 73 20 36 34 2d 62 69  Pointer is 64-bi
36760 74 73 3f 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ts?..        }..
36770 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
36780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
367a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
367b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
367c0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
367d0 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c  vate static bool
367e0 20 49 73 53 75 70 70 6f 72 74 65 64 52 6f 6f 74   IsSupportedRoot
367f0 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Key(..          
36800 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 20 72    MockRegistry r
36810 65 67 69 73 74 72 79 2c 0d 0a 20 20 20 20 20 20  egistry,..      
36820 20 20 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74        MockRegist
36830 72 79 4b 65 79 20 72 6f 6f 74 4b 65 79 0d 0a 20  ryKey rootKey.. 
36840 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
36850 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
36860 20 20 20 20 20 72 65 74 75 72 6e 20 4f 62 6a 65       return Obje
36870 63 74 2e 52 65 66 65 72 65 6e 63 65 45 71 75 61  ct.ReferenceEqua
36880 6c 73 28 72 6f 6f 74 4b 65 79 2c 20 72 65 67 69  ls(rootKey, regi
36890 73 74 72 79 2e 43 75 72 72 65 6e 74 55 73 65 72  stry.CurrentUser
368a0 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20  ) ||..          
368b0 20 20 20 20 20 20 4f 62 6a 65 63 74 2e 52 65 66        Object.Ref
368c0 65 72 65 6e 63 65 45 71 75 61 6c 73 28 72 6f 6f  erenceEquals(roo
368d0 74 4b 65 79 2c 20 72 65 67 69 73 74 72 79 2e 4c  tKey, registry.L
368e0 6f 63 61 6c 4d 61 63 68 69 6e 65 29 3b 0d 0a 20  ocalMachine);.. 
368f0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
36900 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
36910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
36950 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
36960 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74  tatic string Get
36970 52 6f 6f 74 4b 65 79 4e 61 6d 65 28 0d 0a 20 20  RootKeyName(..  
36980 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 70            bool p
36990 65 72 55 73 65 72 2c 0d 0a 20 20 20 20 20 20 20  erUser,..       
369a0 20 20 20 20 20 62 6f 6f 6c 20 77 6f 77 36 34 0d       bool wow64.
369b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
369c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
369d0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
369e0 20 20 20 20 20 20 20 2f 2f 20 42 55 47 46 49 58         // BUGFIX
369f0 3a 20 41 70 70 61 72 65 6e 74 6c 79 2c 20 74 68  : Apparently, th
36a00 65 20 70 65 72 2d 75 73 65 72 20 72 65 67 69 73  e per-user regis
36a10 74 72 79 20 68 69 76 65 20 64 6f 65 73 20 6e 6f  try hive does no
36a20 74 20 75 73 65 0d 0a 20 20 20 20 20 20 20 20 20  t use..         
36a30 20 20 20 2f 2f 20 20 20 20 20 20 20 20 20 74 68     //         th
36a40 65 20 22 57 6f 77 36 34 33 32 4e 6f 64 65 22 20  e "Wow6432Node" 
36a50 6e 6f 64 65 20 74 6f 20 73 74 6f 72 65 20 73 65  node to store se
36a60 74 74 69 6e 67 73 20 66 6f 72 20 33 32 2d 62 69  ttings for 32-bi
36a70 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  t..            /
36a80 2f 20 20 20 20 20 20 20 20 20 61 70 70 6c 69 63  /         applic
36a90 61 74 69 6f 6e 73 20 72 75 6e 6e 69 6e 67 20 6f  ations running o
36aa0 6e 20 61 20 36 34 2d 62 69 74 20 6f 70 65 72 61  n a 64-bit opera
36ab0 74 69 6e 67 20 73 79 73 74 65 6d 2e 0d 0a 20 20  ting system...  
36ac0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
36ad0 20 20 20 20 20 54 69 63 6b 65 74 20 5b 61 30 36       Ticket [a06
36ae0 37 37 33 30 39 66 30 5d 20 68 61 73 20 66 75 72  77309f0] has fur
36af0 74 68 65 72 20 64 65 74 61 69 6c 73 2e 0d 0a 20  ther details... 
36b00 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
36b10 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
36b20 6e 20 52 65 67 69 73 74 72 79 48 65 6c 70 65 72  n RegistryHelper
36b30 2e 4a 6f 69 6e 4b 65 79 4e 61 6d 65 73 28 52 6f  .JoinKeyNames(Ro
36b40 6f 74 4b 65 79 4e 61 6d 65 2c 0d 0a 20 20 20 20  otKeyName,..    
36b50 20 20 20 20 20 20 20 20 20 20 20 20 21 70 65 72              !per
36b60 55 73 65 72 20 26 26 20 77 6f 77 36 34 20 26 26  User && wow64 &&
36b70 20 49 73 36 34 42 69 74 50 72 6f 63 65 73 73 28   Is64BitProcess(
36b80 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) ?..           
36b90 20 20 20 20 20 20 20 20 20 57 6f 77 36 34 53 75           Wow64Su
36ba0 62 4b 65 79 4e 61 6d 65 20 3a 20 53 74 72 69 6e  bKeyName : Strin
36bb0 67 2e 45 6d 70 74 79 29 3b 0d 0a 20 20 20 20 20  g.Empty);..     
36bc0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
36bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36c10 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
36c20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
36c30 63 20 73 74 72 69 6e 67 20 47 65 74 53 79 73 74  c string GetSyst
36c40 65 6d 44 69 72 65 63 74 6f 72 79 28 0d 0a 20 20  emDirectory(..  
36c50 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77            bool w
36c60 6f 77 36 34 0d 0a 20 20 20 20 20 20 20 20 20 20  ow64..          
36c70 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
36c80 23 69 66 20 57 49 4e 44 4f 57 53 0d 0a 20 20 20  #if WINDOWS..   
36c90 20 20 20 20 20 20 20 20 20 69 66 20 28 77 6f 77           if (wow
36ca0 36 34 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  64)..           
36cb0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
36cc0 20 20 20 20 69 66 20 28 73 79 73 74 65 6d 44 69      if (systemDi
36cd0 72 65 63 74 6f 72 79 57 6f 77 36 34 20 3d 3d 20  rectoryWow64 == 
36ce0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
36cf0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
36d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 79                sy
36d10 73 74 65 6d 44 69 72 65 63 74 6f 72 79 57 6f 77  stemDirectoryWow
36d20 36 34 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  64 =..          
36d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e                Un
36d40 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
36d50 73 2e 47 65 74 53 79 73 74 65 6d 44 69 72 65 63  s.GetSystemDirec
36d60 74 6f 72 79 28 29 3b 0d 0a 20 20 20 20 20 20 20  tory();..       
36d70 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
36d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
36d90 74 75 72 6e 20 73 79 73 74 65 6d 44 69 72 65 63  turn systemDirec
36da0 74 6f 72 79 57 6f 77 36 34 3b 0d 0a 20 20 20 20  toryWow64;..    
36db0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
36dc0 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 23 65 6e         else..#en
36dd0 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
36de0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
36df0 20 20 20 20 69 66 20 28 73 79 73 74 65 6d 44 69      if (systemDi
36e00 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29  rectory == null)
36e10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36e20 20 20 20 20 20 20 73 79 73 74 65 6d 44 69 72 65        systemDire
36e30 63 74 6f 72 79 20 3d 20 45 6e 76 69 72 6f 6e 6d  ctory = Environm
36e40 65 6e 74 2e 53 79 73 74 65 6d 44 69 72 65 63 74  ent.SystemDirect
36e50 6f 72 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ory;....        
36e60 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73          return s
36e70 79 73 74 65 6d 44 69 72 65 63 74 6f 72 79 3b 0d  ystemDirectory;.
36e80 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
36e90 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
36ea0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
36eb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
36ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36f00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
36f10 69 6f 6e 20 47 65 6e 65 72 69 63 20 53 74 72 69  ion Generic Stri
36f20 6e 67 20 48 61 6e 64 6c 69 6e 67 0d 0a 20 20 20  ng Handling..   
36f30 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
36f40 74 69 63 20 73 74 72 69 6e 67 20 46 6f 72 44 69  tic string ForDi
36f50 73 70 6c 61 79 28 0d 0a 20 20 20 20 20 20 20 20  splay(..        
36f60 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65      object value
36f70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
36f80 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
36f90 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
36fa0 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
36fb0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
36fc0 72 6e 20 44 69 73 70 6c 61 79 4e 75 6c 6c 3b 0d  rn DisplayNull;.
36fd0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  ...            s
36fe0 74 72 69 6e 67 20 72 65 73 75 6c 74 3b 0d 0a 20  tring result;.. 
36ff0 20 20 20 20 20 20 20 20 20 20 20 54 79 70 65 20             Type 
37000 74 79 70 65 20 3d 20 76 61 6c 75 65 2e 47 65 74  type = value.Get
37010 54 79 70 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Type();....     
37020 20 20 20 20 20 20 20 69 66 20 28 74 79 70 65 20         if (type 
37030 3d 3d 20 74 79 70 65 6f 66 28 58 6d 6c 45 6c 65  == typeof(XmlEle
37040 6d 65 6e 74 29 29 0d 0a 20 20 20 20 20 20 20 20  ment))..        
37050 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
37060 20 20 20 20 20 20 20 58 6d 6c 45 6c 65 6d 65 6e         XmlElemen
37070 74 20 65 6c 65 6d 65 6e 74 20 3d 20 28 58 6d 6c  t element = (Xml
37080 45 6c 65 6d 65 6e 74 29 76 61 6c 75 65 3b 0d 0a  Element)value;..
37090 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
370a0 20 20 72 65 73 75 6c 74 20 3d 20 65 6c 65 6d 65    result = eleme
370b0 6e 74 2e 4f 75 74 65 72 58 6d 6c 3b 0d 0a 20 20  nt.OuterXml;..  
370c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
370d0 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
370e0 20 28 74 79 70 65 20 3d 3d 20 74 79 70 65 6f 66   (type == typeof
370f0 28 56 65 72 73 69 6f 6e 29 29 0d 0a 20 20 20 20  (Version))..    
37100 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
37110 20 20 20 20 20 20 20 20 20 20 20 56 65 72 73 69             Versi
37120 6f 6e 20 76 65 72 73 69 6f 6e 20 3d 20 28 56 65  on version = (Ve
37130 72 73 69 6f 6e 29 76 61 6c 75 65 3b 0d 0a 0d 0a  rsion)value;....
37140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37150 72 65 73 75 6c 74 20 3d 20 53 74 72 69 6e 67 2e  result = String.
37160 46 6f 72 6d 61 74 28 22 76 7b 30 7d 22 2c 20 76  Format("v{0}", v
37170 65 72 73 69 6f 6e 29 3b 0d 0a 20 20 20 20 20 20  ersion);..      
37180 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
37190 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 74 79       else if (ty
371a0 70 65 20 3d 3d 20 74 79 70 65 6f 66 28 50 72 6f  pe == typeof(Pro
371b0 63 65 73 73 53 74 61 72 74 49 6e 66 6f 29 29 0d  cessStartInfo)).
371c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
371d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
371e0 50 72 6f 63 65 73 73 53 74 61 72 74 49 6e 66 6f  ProcessStartInfo
371f0 20 73 74 61 72 74 49 6e 66 6f 20 3d 20 28 50 72   startInfo = (Pr
37200 6f 63 65 73 73 53 74 61 72 74 49 6e 66 6f 29 76  ocessStartInfo)v
37210 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alue;....       
37220 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20           result 
37230 3d 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  = String.Format(
37240 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
37250 20 20 20 20 20 20 22 66 69 6c 65 4e 61 6d 65 20        "fileName 
37260 3d 20 7b 30 7d 2c 20 61 72 67 75 6d 65 6e 74 73  = {0}, arguments
37270 20 3d 20 7b 31 7d 2c 20 77 6f 72 6b 69 6e 67 44   = {1}, workingD
37280 69 72 65 63 74 6f 72 79 20 3d 20 7b 32 7d 2c 20  irectory = {2}, 
37290 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
372a0 20 20 20 20 20 20 20 20 20 22 75 73 65 53 68 65           "useShe
372b0 6c 6c 45 78 65 63 75 74 65 20 3d 20 7b 33 7d 2c  llExecute = {3},
372c0 20 72 65 64 69 72 65 63 74 53 74 61 6e 64 61 72   redirectStandar
372d0 64 4f 75 74 70 75 74 20 3d 20 7b 34 7d 2c 20 22  dOutput = {4}, "
372e0 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
372f0 20 20 20 20 20 20 20 20 22 72 65 64 69 72 65 63          "redirec
37300 74 53 74 61 6e 64 61 72 64 45 72 72 6f 72 20 3d  tStandardError =
37310 20 7b 35 7d 22 2c 20 46 6f 72 44 69 73 70 6c 61   {5}", ForDispla
37320 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y(..            
37330 20 20 20 20 20 20 20 20 73 74 61 72 74 49 6e 66          startInf
37340 6f 2e 46 69 6c 65 4e 61 6d 65 29 2c 20 46 6f 72  o.FileName), For
37350 44 69 73 70 6c 61 79 28 73 74 61 72 74 49 6e 66  Display(startInf
37360 6f 2e 41 72 67 75 6d 65 6e 74 73 29 2c 0d 0a 20  o.Arguments),.. 
37370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37380 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 73 74     ForDisplay(st
37390 61 72 74 49 6e 66 6f 2e 57 6f 72 6b 69 6e 67 44  artInfo.WorkingD
373a0 69 72 65 63 74 6f 72 79 29 2c 20 46 6f 72 44 69  irectory), ForDi
373b0 73 70 6c 61 79 28 0d 0a 20 20 20 20 20 20 20 20  splay(..        
373c0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 72              star
373d0 74 49 6e 66 6f 2e 55 73 65 53 68 65 6c 6c 45 78  tInfo.UseShellEx
373e0 65 63 75 74 65 29 2c 20 46 6f 72 44 69 73 70 6c  ecute), ForDispl
373f0 61 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ay(..           
37400 20 20 20 20 20 20 20 20 20 73 74 61 72 74 49 6e           startIn
37410 66 6f 2e 52 65 64 69 72 65 63 74 53 74 61 6e 64  fo.RedirectStand
37420 61 72 64 4f 75 74 70 75 74 29 2c 20 46 6f 72 44  ardOutput), ForD
37430 69 73 70 6c 61 79 28 0d 0a 20 20 20 20 20 20 20  isplay(..       
37440 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61               sta
37450 72 74 49 6e 66 6f 2e 52 65 64 69 72 65 63 74 53  rtInfo.RedirectS
37460 74 61 6e 64 61 72 64 45 72 72 6f 72 29 29 3b 20  tandardError)); 
37470 2f 2a 20 52 45 43 55 52 53 49 56 45 20 2a 2f 0d  /* RECURSIVE */.
37480 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
37490 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
374a0 20 69 66 20 28 74 79 70 65 20 3d 3d 20 74 79 70   if (type == typ
374b0 65 6f 66 28 50 72 6f 63 65 73 73 29 29 0d 0a 20  eof(Process)).. 
374c0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
374d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 72                Pr
374e0 6f 63 65 73 73 20 70 72 6f 63 65 73 73 20 3d 20  ocess process = 
374f0 28 50 72 6f 63 65 73 73 29 76 61 6c 75 65 3b 0d  (Process)value;.
37500 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
37510 20 20 20 72 65 73 75 6c 74 20 3d 20 70 72 6f 63     result = proc
37520 65 73 73 2e 49 64 2e 54 6f 53 74 72 69 6e 67 28  ess.Id.ToString(
37530 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
37540 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  }..            e
37550 6c 73 65 20 69 66 20 28 74 79 70 65 20 3d 3d 20  lse if (type == 
37560 74 79 70 65 6f 66 28 44 61 74 61 52 65 63 65 69  typeof(DataRecei
37570 76 65 64 45 76 65 6e 74 41 72 67 73 29 29 0d 0a  vedEventArgs))..
37580 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
37590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44                 D
375a0 61 74 61 52 65 63 65 69 76 65 64 45 76 65 6e 74  ataReceivedEvent
375b0 41 72 67 73 20 65 76 65 6e 74 41 72 67 73 20 3d  Args eventArgs =
375c0 20 28 44 61 74 61 52 65 63 65 69 76 65 64 45 76   (DataReceivedEv
375d0 65 6e 74 41 72 67 73 29 76 61 6c 75 65 3b 0d 0a  entArgs)value;..
375e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
375f0 20 20 72 65 73 75 6c 74 20 3d 20 46 6f 72 44 69    result = ForDi
37600 73 70 6c 61 79 28 65 76 65 6e 74 41 72 67 73 2e  splay(eventArgs.
37610 44 61 74 61 29 3b 20 2f 2a 20 52 45 43 55 52 53  Data); /* RECURS
37620 49 56 45 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  IVE */..        
37630 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
37640 20 20 20 65 6c 73 65 20 69 66 20 28 74 79 70 65     else if (type
37650 20 3d 3d 20 74 79 70 65 6f 66 28 4d 6f 63 6b 52   == typeof(MockR
37660 65 67 69 73 74 72 79 4b 65 79 29 29 0d 0a 20 20  egistryKey))..  
37670 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
37680 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63               Moc
37690 6b 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79  kRegistryKey key
376a0 20 3d 20 28 4d 6f 63 6b 52 65 67 69 73 74 72 79   = (MockRegistry
376b0 4b 65 79 29 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20  Key)value;....  
376c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
376d0 73 75 6c 74 20 3d 20 46 6f 72 44 69 73 70 6c 61  sult = ForDispla
376e0 79 28 6b 65 79 2e 54 6f 53 74 72 69 6e 67 28 29  y(key.ToString()
376f0 29 3b 20 2f 2a 20 52 45 43 55 52 53 49 56 45 20  ); /* RECURSIVE 
37700 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
37710 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  }..            e
37720 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
37730 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
37740 20 20 20 20 72 65 73 75 6c 74 20 3d 20 76 61 6c      result = val
37750 75 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a  ue.ToString();..
37760 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
37770 20 20 69 66 20 28 72 65 73 75 6c 74 2e 4c 65 6e    if (result.Len
37780 67 74 68 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20  gth == 0)..     
37790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
377a0 65 74 75 72 6e 20 44 69 73 70 6c 61 79 45 6d 70  eturn DisplayEmp
377b0 74 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ty;....         
377c0 20 20 20 20 20 20 20 69 66 20 28 74 79 70 65 2e         if (type.
377d0 49 73 53 75 62 63 6c 61 73 73 4f 66 28 74 79 70  IsSubclassOf(typ
377e0 65 6f 66 28 45 78 63 65 70 74 69 6f 6e 29 29 29  eof(Exception)))
377f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
37800 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
37810 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20           result 
37820 3d 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  = String.Format(
37830 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
37840 20 20 20 20 20 20 20 20 20 20 22 7b 30 7d 7b 31            "{0}{1
37850 7d 7b 30 7d 22 2c 20 45 6e 76 69 72 6f 6e 6d 65  }{0}", Environme
37860 6e 74 2e 4e 65 77 4c 69 6e 65 2c 20 72 65 73 75  nt.NewLine, resu
37870 6c 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lt);..          
37880 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
37890 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
378a0 20 28 21 74 79 70 65 2e 49 73 53 75 62 63 6c 61   (!type.IsSubcla
378b0 73 73 4f 66 28 74 79 70 65 6f 66 28 56 61 6c 75  ssOf(typeof(Valu
378c0 65 54 79 70 65 29 29 29 0d 0a 20 20 20 20 20 20  eType)))..      
378d0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
378e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
378f0 20 72 65 73 75 6c 74 20 3d 20 53 74 72 69 6e 67   result = String
37900 2e 46 6f 72 6d 61 74 28 22 5c 22 7b 30 7d 5c 22  .Format("\"{0}\"
37910 22 2c 20 72 65 73 75 6c 74 29 3b 0d 0a 20 20 20  ", result);..   
37920 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
37930 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
37940 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
37950 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20  urn result;..   
37960 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
37970 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
37980 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
37990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
379a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
379b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
379c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
379d0 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
379e0 20 41 73 73 65 6d 62 6c 79 20 41 74 74 72 69 62   Assembly Attrib
379f0 75 74 65 20 48 61 6e 64 6c 69 6e 67 0d 0a 20 20  ute Handling..  
37a00 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
37a10 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 41 73  tic string GetAs
37a20 73 65 6d 62 6c 79 43 6f 6e 66 69 67 75 72 61 74  semblyConfigurat
37a30 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
37a40 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65 6d    Assembly assem
37a50 62 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  bly..           
37a60 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
37a70 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61             if (a
37a80 73 73 65 6d 62 6c 79 20 21 3d 20 6e 75 6c 6c 29  ssembly != null)
37a90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
37aa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
37ab0 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
37ac0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
37ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
37ae0 28 61 73 73 65 6d 62 6c 79 2e 49 73 44 65 66 69  (assembly.IsDefi
37af0 6e 65 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ned(..          
37b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37b10 20 20 74 79 70 65 6f 66 28 41 73 73 65 6d 62 6c    typeof(Assembl
37b20 79 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 41 74  yConfigurationAt
37b30 74 72 69 62 75 74 65 29 2c 20 66 61 6c 73 65 29  tribute), false)
37b40 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
37b50 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
37b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37b70 20 20 41 73 73 65 6d 62 6c 79 43 6f 6e 66 69 67    AssemblyConfig
37b80 75 72 61 74 69 6f 6e 41 74 74 72 69 62 75 74 65  urationAttribute
37b90 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 3d   configuration =
37ba0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
37bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 41                (A
37bc0 73 73 65 6d 62 6c 79 43 6f 6e 66 69 67 75 72 61  ssemblyConfigura
37bd0 74 69 6f 6e 41 74 74 72 69 62 75 74 65 29 0d 0a  tionAttribute)..
37be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37bf0 20 20 20 20 20 20 20 20 20 20 20 20 61 73 73 65              asse
37c00 6d 62 6c 79 2e 47 65 74 43 75 73 74 6f 6d 41 74  mbly.GetCustomAt
37c10 74 72 69 62 75 74 65 73 28 0d 0a 20 20 20 20 20  tributes(..     
37c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37c30 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f             typeo
37c40 66 28 41 73 73 65 6d 62 6c 79 43 6f 6e 66 69 67  f(AssemblyConfig
37c50 75 72 61 74 69 6f 6e 41 74 74 72 69 62 75 74 65  urationAttribute
37c60 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
37c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37c80 20 20 20 20 66 61 6c 73 65 29 5b 30 5d 3b 0d 0a      false)[0];..
37c90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
37ca0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
37cb0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 43   configuration.C
37cc0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 3b 0d 0a 20  onfiguration;.. 
37cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37ce0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
37cf0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
37d00 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
37d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37d20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
37d30 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
37d40 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
37d50 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
37d60 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
37d70 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
37d80 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ll;..        }..
37d90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
37da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37de0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
37df0 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69 6e  lic static strin
37e00 67 20 47 65 74 41 73 73 65 6d 62 6c 79 54 69 74  g GetAssemblyTit
37e10 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
37e20 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62   Assembly assemb
37e30 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
37e40 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
37e50 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 73            if (as
37e60 73 65 6d 62 6c 79 20 21 3d 20 6e 75 6c 6c 29 0d  sembly != null).
37e70 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
37e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37e90 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
37ea0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
37eb0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
37ec0 61 73 73 65 6d 62 6c 79 2e 49 73 44 65 66 69 6e  assembly.IsDefin
37ed0 65 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed(..           
37ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37ef0 20 74 79 70 65 6f 66 28 41 73 73 65 6d 62 6c 79   typeof(Assembly
37f00 54 69 74 6c 65 41 74 74 72 69 62 75 74 65 29 2c  TitleAttribute),
37f10 20 66 61 6c 73 65 29 29 0d 0a 20 20 20 20 20 20   false))..      
37f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
37f30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
37f40 20 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c           Assembl
37f50 79 54 69 74 6c 65 41 74 74 72 69 62 75 74 65 20  yTitleAttribute 
37f60 74 69 74 6c 65 20 3d 0d 0a 20 20 20 20 20 20 20  title =..       
37f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37f80 20 20 20 20 20 28 41 73 73 65 6d 62 6c 79 54 69       (AssemblyTi
37f90 74 6c 65 41 74 74 72 69 62 75 74 65 29 0d 0a 20  tleAttribute).. 
37fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37fb0 20 20 20 20 20 20 20 20 20 20 20 61 73 73 65 6d             assem
37fc0 62 6c 79 2e 47 65 74 43 75 73 74 6f 6d 41 74 74  bly.GetCustomAtt
37fd0 72 69 62 75 74 65 73 28 0d 0a 20 20 20 20 20 20  ributes(..      
37fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37ff0 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
38000 28 41 73 73 65 6d 62 6c 79 54 69 74 6c 65 41 74  (AssemblyTitleAt
38010 74 72 69 62 75 74 65 29 2c 20 66 61 6c 73 65 29  tribute), false)
38020 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  [0];....        
38030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38040 72 65 74 75 72 6e 20 74 69 74 6c 65 2e 54 69 74  return title.Tit
38050 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le;..           
38060 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
38070 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
38080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
38090 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
380a0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
380b0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
380c0 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
380d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
380e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
380f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
38100 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
38110 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
38120 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
38130 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
38140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
38180 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 2e         #region .
38190 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 48 61  NET Framework Ha
381a0 6e 64 6c 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  ndling..        
381b0 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
381c0 74 72 69 6e 67 20 47 65 74 46 72 61 6d 65 77 6f  tring GetFramewo
381d0 72 6b 52 6f 6f 74 4b 65 79 4e 61 6d 65 28 0d 0a  rkRootKeyName(..
381e0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
381f0 20 70 65 72 55 73 65 72 2c 0d 0a 20 20 20 20 20   perUser,..     
38200 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 6f 77 36         bool wow6
38210 34 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  4..            )
38220 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
38230 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
38240 52 65 67 69 73 74 72 79 48 65 6c 70 65 72 2e 4a  RegistryHelper.J
38250 6f 69 6e 4b 65 79 4e 61 6d 65 73 28 0d 0a 20 20  oinKeyNames(..  
38260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65                Ge
38270 74 52 6f 6f 74 4b 65 79 4e 61 6d 65 28 70 65 72  tRootKeyName(per
38280 55 73 65 72 2c 20 77 6f 77 36 34 29 2c 0d 0a 20  User, wow64),.. 
38290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
382a0 4d 69 63 72 6f 73 6f 66 74 22 2c 20 22 2e 4e 45  Microsoft", ".NE
382b0 54 46 72 61 6d 65 77 6f 72 6b 22 29 3b 0d 0a 20  TFramework");.. 
382c0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
382d0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
382e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
382f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
38320 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
38330 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74  tatic string Get
38340 46 72 61 6d 65 77 6f 72 6b 4b 65 79 4e 61 6d 65  FrameworkKeyName
38350 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  (..            s
38360 74 72 69 6e 67 20 66 72 61 6d 65 77 6f 72 6b 4e  tring frameworkN
38370 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
38380 20 20 56 65 72 73 69 6f 6e 20 66 72 61 6d 65 77    Version framew
38390 6f 72 6b 56 65 72 73 69 6f 6e 2c 0d 0a 20 20 20  orkVersion,..   
383a0 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
383b0 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 2c 0d 0a 20  platformName,.. 
383c0 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
383d0 70 65 72 55 73 65 72 2c 0d 0a 20 20 20 20 20 20  perUser,..      
383e0 20 20 20 20 20 20 62 6f 6f 6c 20 77 6f 77 36 34        bool wow64
383f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
38400 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
38410 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
38420 72 61 6d 65 77 6f 72 6b 56 65 72 73 69 6f 6e 53  rameworkVersionS
38430 74 72 69 6e 67 20 3d 20 28 66 72 61 6d 65 77 6f  tring = (framewo
38440 72 6b 56 65 72 73 69 6f 6e 20 21 3d 20 6e 75 6c  rkVersion != nul
38450 6c 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20  l) ?..          
38460 20 20 20 20 20 20 22 76 22 20 2b 20 66 72 61 6d        "v" + fram
38470 65 77 6f 72 6b 56 65 72 73 69 6f 6e 2e 54 6f 53  eworkVersion.ToS
38480 74 72 69 6e 67 28 29 20 3a 20 6e 75 6c 6c 3b 0d  tring() : null;.
38490 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
384a0 65 74 75 72 6e 20 52 65 67 69 73 74 72 79 48 65  eturn RegistryHe
384b0 6c 70 65 72 2e 4a 6f 69 6e 4b 65 79 4e 61 6d 65  lper.JoinKeyName
384c0 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s(..            
384d0 20 20 20 20 47 65 74 52 6f 6f 74 4b 65 79 4e 61      GetRootKeyNa
384e0 6d 65 28 70 65 72 55 73 65 72 2c 20 77 6f 77 36  me(perUser, wow6
384f0 34 29 2c 20 22 4d 69 63 72 6f 73 6f 66 74 22 2c  4), "Microsoft",
38500 20 66 72 61 6d 65 77 6f 72 6b 4e 61 6d 65 2c 0d   frameworkName,.
38510 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
38520 20 66 72 61 6d 65 77 6f 72 6b 56 65 72 73 69 6f   frameworkVersio
38530 6e 53 74 72 69 6e 67 2c 20 70 6c 61 74 66 6f 72  nString, platfor
38540 6d 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20  mName);..       
38550 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
38560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
385a0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
385b0 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
385c0 73 74 72 69 6e 67 20 47 65 74 49 6d 61 67 65 52  string GetImageR
385d0 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 28 0d 0a  untimeVersion(..
385e0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
385f0 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20  ng fileName..   
38600 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
38610 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
38620 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
38630 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
38640 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20         Assembly 
38650 61 73 73 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d  assembly = Assem
38660 62 6c 79 2e 52 65 66 6c 65 63 74 69 6f 6e 4f 6e  bly.ReflectionOn
38670 6c 79 4c 6f 61 64 46 72 6f 6d 28 0d 0a 20 20 20  lyLoadFrom(..   
38680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38690 20 66 69 6c 65 4e 61 6d 65 29 3b 20 2f 2a 20 74   fileName); /* t
386a0 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  hrow */....     
386b0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61             if (a
386c0 73 73 65 6d 62 6c 79 20 21 3d 20 6e 75 6c 6c 29  ssembly != null)
386d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
386e0 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 73 73        return ass
386f0 65 6d 62 6c 79 2e 49 6d 61 67 65 52 75 6e 74 69  embly.ImageRunti
38700 6d 65 56 65 72 73 69 6f 6e 3b 0d 0a 20 20 20 20  meVersion;..    
38710 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
38720 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
38730 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
38740 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
38750 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
38760 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
38770 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
38780 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
38790 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
387a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
387b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
387c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
387d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
387e0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
387f0 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
38800 74 72 69 6e 67 20 47 65 74 46 72 61 6d 65 77 6f  tring GetFramewo
38810 72 6b 44 69 72 65 63 74 6f 72 79 28 0d 0a 20 20  rkDirectory(..  
38820 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65            MockRe
38830 67 69 73 74 72 79 4b 65 79 20 72 6f 6f 74 4b 65  gistryKey rootKe
38840 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
38850 56 65 72 73 69 6f 6e 20 66 72 61 6d 65 77 6f 72  Version framewor
38860 6b 56 65 72 73 69 6f 6e 2c 0d 0a 20 20 20 20 20  kVersion,..     
38870 20 20 20 20 20 20 20 62 6f 6f 6c 20 70 65 72 55         bool perU
38880 73 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ser,..          
38890 20 20 62 6f 6f 6c 20 77 6f 77 36 34 2c 0d 0a 20    bool wow64,.. 
388a0 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
388b0 77 68 61 74 49 66 2c 0d 0a 20 20 20 20 20 20 20  whatIf,..       
388c0 20 20 20 20 20 62 6f 6f 6c 20 76 65 72 62 6f 73       bool verbos
388d0