System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact c8c59d560edd0bcdba5b44bd1108014858f75df1:


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 4f 62 6a 65 63 74 48 65 6c 70  egion ObjectHelp
2710: 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 20 20  er Class..      
2720: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
2730: 20 63 6c 61 73 73 20 4f 62 6a 65 63 74 48 65 6c   class ObjectHel
2740: 70 65 72 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  per..        {..
2750: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
2760: 69 63 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 41  ic static bool A
2770: 72 65 45 71 75 61 6c 28 0d 0a 20 20 20 20 20 20  reEqual(..      
2780: 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74            object
2790: 20 76 61 6c 75 65 31 2c 0d 0a 20 20 20 20 20 20   value1,..      
27a0: 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74            object
27b0: 20 76 61 6c 75 65 32 0d 0a 20 20 20 20 20 20 20   value2..       
27c0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
27d0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
27e0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
27f0: 76 61 6c 75 65 31 20 3d 3d 20 6e 75 6c 6c 29 20  value1 == null) 
2800: 7c 7c 20 28 76 61 6c 75 65 32 20 3d 3d 20 6e 75  || (value2 == nu
2810: 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ll))..          
2820: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2830: 20 28 28 76 61 6c 75 65 31 20 3d 3d 20 6e 75 6c   ((value1 == nul
2840: 6c 29 20 26 26 20 28 76 61 6c 75 65 32 20 3d 3d  l) && (value2 ==
2850: 20 6e 75 6c 6c 29 29 3b 0d 0a 0d 0a 20 20 20 20   null));....    
2860: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2870: 4f 62 6a 65 63 74 2e 52 65 66 65 72 65 6e 63 65  Object.Reference
2880: 45 71 75 61 6c 73 28 76 61 6c 75 65 31 2c 20 76  Equals(value1, v
2890: 61 6c 75 65 32 29 29 0d 0a 20 20 20 20 20 20 20  alue2))..       
28a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
28b0: 75 72 6e 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20  urn true;....   
28c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
28d0: 75 72 6e 20 76 61 6c 75 65 31 2e 45 71 75 61 6c  urn value1.Equal
28e0: 73 28 76 61 6c 75 65 32 29 3b 0d 0a 20 20 20 20  s(value2);..    
28f0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2900: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
2910: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
2920: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2970: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 41         #region A
2980: 6e 79 50 61 69 72 20 43 6c 61 73 73 0d 0a 20 20  nyPair Class..  
2990: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 65        private se
29a0: 61 6c 65 64 20 63 6c 61 73 73 20 41 6e 79 50 61  aled class AnyPa
29b0: 69 72 3c 54 31 2c 20 54 32 3e 20 3a 0d 0a 20 20  ir<T1, T2> :..  
29c0: 20 20 20 20 20 20 20 20 20 20 49 43 6f 6d 70 61            ICompa
29d0: 72 65 72 3c 41 6e 79 50 61 69 72 3c 54 31 2c 20  rer<AnyPair<T1, 
29e0: 54 32 3e 3e 2c 0d 0a 20 20 20 20 20 20 20 20 20  T2>>,..         
29f0: 20 20 20 49 43 6f 6d 70 61 72 61 62 6c 65 3c 41     IComparable<A
2a00: 6e 79 50 61 69 72 3c 54 31 2c 20 54 32 3e 3e 2c  nyPair<T1, T2>>,
2a10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 43  ..            IC
2a20: 6f 6d 70 61 72 61 62 6c 65 2c 0d 0a 20 20 20 20  omparable,..    
2a30: 20 20 20 20 20 20 20 20 49 45 71 75 61 74 61 62          IEquatab
2a40: 6c 65 3c 41 6e 79 50 61 69 72 3c 54 31 2c 20 54  le<AnyPair<T1, T
2a50: 32 3e 3e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  2>>,..          
2a60: 20 20 49 45 71 75 61 6c 69 74 79 43 6f 6d 70 61    IEqualityCompa
2a70: 72 65 72 3c 41 6e 79 50 61 69 72 3c 54 31 2c 20  rer<AnyPair<T1, 
2a80: 54 32 3e 3e 2c 0d 0a 20 20 20 20 20 20 20 20 20  T2>>,..         
2a90: 20 20 20 49 43 6c 6f 6e 65 61 62 6c 65 0d 0a 20     ICloneable.. 
2aa0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2ab0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
2ac0: 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72  blic Constructor
2ad0: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  s..            /
2ae0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  /..            /
2af0: 2f 20 57 41 52 4e 49 4e 47 3a 20 54 68 69 73 20  / WARNING: This 
2b00: 63 6f 6e 73 74 72 75 63 74 6f 72 20 70 72 6f 64  constructor prod
2b10: 75 63 65 73 20 61 6e 20 69 6d 6d 75 74 61 62 6c  uces an immutabl
2b20: 65 20 22 65 6d 70 74 79 22 20 70 61 69 72 0d 0a  e "empty" pair..
2b30: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
2b40: 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 2e 0d          object..
2b50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  .            //.
2b60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
2b70: 6c 69 63 20 41 6e 79 50 61 69 72 28 29 0d 0a 20  lic AnyPair().. 
2b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a                 :
2b90: 20 62 61 73 65 28 29 0d 0a 20 20 20 20 20 20 20   base()..       
2ba0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2bb0: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
2bc0: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
2bd0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2be0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c20: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2c30: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 41          public A
2c40: 6e 79 50 61 69 72 28 54 31 20 78 29 0d 0a 20 20  nyPair(T1 x)..  
2c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20                : 
2c60: 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20  this()..        
2c70: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2c80: 20 20 20 20 20 20 20 74 68 69 73 2e 78 20 3d 20         this.x = 
2c90: 78 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x;..            
2ca0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2cb0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2d00: 20 20 20 20 70 75 62 6c 69 63 20 41 6e 79 50 61      public AnyPa
2d10: 69 72 28 54 31 20 78 2c 20 54 32 20 79 29 0d 0a  ir(T1 x, T2 y)..
2d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d30: 3a 20 74 68 69 73 28 78 29 0d 0a 20 20 20 20 20  : this(x)..     
2d40: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2d50: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 79            this.y
2d60: 20 3d 20 79 3b 0d 0a 20 20 20 20 20 20 20 20 20   = y;..         
2d70: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2d80: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2d90: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
2da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2de0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
2df0: 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 50 72  region Public Pr
2e00: 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20  operties..      
2e10: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 54 31        private T1
2e20: 20 78 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20   x;..           
2e30: 20 70 75 62 6c 69 63 20 54 31 20 58 0d 0a 20 20   public T1 X..  
2e40: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
2e60: 20 7b 20 72 65 74 75 72 6e 20 78 3b 20 7d 0d 0a   { return x; }..
2e70: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2e80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2ee0: 70 72 69 76 61 74 65 20 54 32 20 79 3b 0d 0a 20  private T2 y;.. 
2ef0: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
2f00: 63 20 54 32 20 59 0d 0a 20 20 20 20 20 20 20 20  c T2 Y..        
2f10: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2f20: 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
2f30: 75 72 6e 20 79 3b 20 7d 0d 0a 20 20 20 20 20 20  urn y; }..      
2f40: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2f50: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2f60: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
2fc0: 20 20 23 72 65 67 69 6f 6e 20 53 79 73 74 65 6d    #region System
2fd0: 2e 4f 62 6a 65 63 74 20 4f 76 65 72 72 69 64 65  .Object Override
2fe0: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  s..            p
2ff0: 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62  ublic override b
3000: 6f 6f 6c 20 45 71 75 61 6c 73 28 0d 0a 20 20 20  ool Equals(..   
3010: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a               obj
3020: 65 63 74 20 6f 62 6a 0d 0a 20 20 20 20 20 20 20  ect obj..       
3030: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
3040: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3050: 20 20 20 20 20 20 20 20 20 20 20 41 6e 79 50 61             AnyPa
3060: 69 72 3c 54 31 2c 20 54 32 3e 20 61 6e 79 50 61  ir<T1, T2> anyPa
3070: 69 72 20 3d 20 6f 62 6a 20 61 73 20 41 6e 79 50  ir = obj as AnyP
3080: 61 69 72 3c 54 31 2c 20 54 32 3e 3b 0d 0a 0d 0a  air<T1, T2>;....
3090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a0: 69 66 20 28 61 6e 79 50 61 69 72 20 21 3d 20 6e  if (anyPair != n
30b0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
30c0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
30d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
30e0: 28 21 4f 62 6a 65 63 74 48 65 6c 70 65 72 2e 41  (!ObjectHelper.A
30f0: 72 65 45 71 75 61 6c 28 58 2c 20 61 6e 79 50 61  reEqual(X, anyPa
3100: 69 72 2e 58 29 29 0d 0a 20 20 20 20 20 20 20 20  ir.X))..        
3110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3120: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
3130: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3140: 20 20 20 20 20 69 66 20 28 21 4f 62 6a 65 63 74       if (!Object
3150: 48 65 6c 70 65 72 2e 41 72 65 45 71 75 61 6c 28  Helper.AreEqual(
3160: 59 2c 20 61 6e 79 50 61 69 72 2e 59 29 29 0d 0a  Y, anyPair.Y))..
3170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3180: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
3190: 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
31a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
31b0: 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  urn true;..     
31c0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
31d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31e0: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
31f0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
3200: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
3210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d  ///////////////.
3250: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
3260: 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73  ublic override s
3270: 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29  tring ToString()
3280: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
3290: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32a0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
32b0: 20 20 20 20 20 2f 2f 20 54 4f 44 4f 3a 20 54 68       // TODO: Th
32c0: 65 20 64 65 6c 69 6d 69 74 65 72 20 68 65 72 65  e delimiter here
32d0: 20 69 73 20 68 61 72 64 2d 63 6f 64 65 64 20 74   is hard-coded t
32e0: 6f 20 61 20 73 70 61 63 65 2e 20 20 54 68 69 73  o a space.  This
32f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3300: 20 20 2f 2f 20 20 20 20 20 20 20 6d 61 79 20 6e    //       may n
3310: 65 65 64 20 74 6f 20 62 65 20 63 68 61 6e 67 65  eed to be change
3320: 64 2c 20 65 2e 67 2e 20 69 66 20 74 68 65 20 75  d, e.g. if the u
3330: 73 65 2d 63 61 73 65 73 20 66 6f 72 0d 0a 20 20  se-cases for..  
3340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
3350: 20 20 20 20 20 20 20 74 68 69 73 20 63 6c 61 73         this clas
3360: 73 20 63 68 61 6e 67 65 2e 0d 0a 20 20 20 20 20  s change...     
3370: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
3380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
3390: 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 46 6f 72  eturn String.For
33a0: 6d 61 74 28 22 7b 30 7d 20 7b 31 7d 22 2c 20 58  mat("{0} {1}", X
33b0: 2c 20 59 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  , Y);..         
33c0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
33d0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
33e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3410: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
3420: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
3430: 65 72 72 69 64 65 20 69 6e 74 20 47 65 74 48 61  erride int GetHa
3440: 73 68 43 6f 64 65 28 29 0d 0a 20 20 20 20 20 20  shCode()..      
3450: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3460: 20 20 20 20 20 20 20 20 20 69 6e 74 20 72 65 73           int res
3470: 75 6c 74 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20  ult = 0;..      
3480: 20 20 20 20 20 20 20 20 20 20 54 31 20 78 20 3d            T1 x =
3490: 20 58 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   X;....         
34a0: 20 20 20 20 20 20 20 69 66 20 28 78 20 21 3d 20         if (x != 
34b0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
34c0: 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
34d0: 74 20 5e 3d 20 78 2e 47 65 74 48 61 73 68 43 6f  t ^= x.GetHashCo
34e0: 64 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  de();....       
34f0: 20 20 20 20 20 20 20 20 20 54 32 20 79 20 3d 20           T2 y = 
3500: 59 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  Y;....          
3510: 20 20 20 20 20 20 69 66 20 28 79 20 21 3d 20 6e        if (y != n
3520: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
3530: 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
3540: 20 5e 3d 20 79 2e 47 65 74 48 61 73 68 43 6f 64   ^= y.GetHashCod
3550: 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
3560: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
3570: 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20  esult;..        
3580: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
3590: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
35a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
35b0: 2f 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: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3600: 23 72 65 67 69 6f 6e 20 49 43 6f 6d 70 61 72 65  #region ICompare
3610: 72 3c 41 6e 79 50 61 69 72 3c 54 31 2c 54 32 3e  r<AnyPair<T1,T2>
3620: 3e 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20  > Members..     
3630: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
3640: 74 20 43 6f 6d 70 61 72 65 28 0d 0a 20 20 20 20  t Compare(..    
3650: 20 20 20 20 20 20 20 20 20 20 20 20 41 6e 79 50              AnyP
3660: 61 69 72 3c 54 31 2c 20 54 32 3e 20 78 2c 0d 0a  air<T1, T2> x,..
3670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3680: 41 6e 79 50 61 69 72 3c 54 31 2c 20 54 32 3e 20  AnyPair<T1, T2> 
3690: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
36a0: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
36b0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
36c0: 20 20 20 20 20 69 66 20 28 28 78 20 3d 3d 20 6e       if ((x == n
36d0: 75 6c 6c 29 20 26 26 20 28 79 20 3d 3d 20 6e 75  ull) && (y == nu
36e0: 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ll))..          
36f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3700: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
3710: 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20 20 20  urn 0;..        
3720: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
3730: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
3740: 69 66 20 28 78 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  if (x == null)..
3750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3760: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
3770: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31         return -1
3780: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
3790: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
37a0: 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 79        else if (y
37b0: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
37c0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
37d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37e0: 20 20 72 65 74 75 72 6e 20 31 3b 0d 0a 20 20 20    return 1;..   
37f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
3800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3810: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
3820: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3830: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
3840: 20 72 65 73 75 6c 74 20 3d 20 43 6f 6d 70 61 72   result = Compar
3850: 65 72 3c 54 31 3e 2e 44 65 66 61 75 6c 74 2e 43  er<T1>.Default.C
3860: 6f 6d 70 61 72 65 28 78 2e 58 2c 20 79 2e 58 29  ompare(x.X, y.X)
3870: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
3880: 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65 73           if (res
3890: 75 6c 74 20 21 3d 20 30 29 0d 0a 20 20 20 20 20  ult != 0)..     
38a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38b0: 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
38c0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
38d0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
38e0: 43 6f 6d 70 61 72 65 72 3c 54 32 3e 2e 44 65 66  Comparer<T2>.Def
38f0: 61 75 6c 74 2e 43 6f 6d 70 61 72 65 28 78 2e 59  ault.Compare(x.Y
3900: 2c 20 79 2e 59 29 3b 0d 0a 20 20 20 20 20 20 20  , y.Y);..       
3910: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
3920: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
3930: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
3940: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
3950: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
3960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3990: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
39a0: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 43 6f 6d      #region ICom
39b0: 70 61 72 61 62 6c 65 3c 41 6e 79 50 61 69 72 3c  parable<AnyPair<
39c0: 54 31 2c 54 32 3e 3e 20 4d 65 6d 62 65 72 73 0d  T1,T2>> Members.
39d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
39e0: 6c 69 63 20 69 6e 74 20 43 6f 6d 70 61 72 65 54  lic int CompareT
39f0: 6f 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o(..            
3a00: 20 20 20 20 41 6e 79 50 61 69 72 3c 54 31 2c 20      AnyPair<T1, 
3a10: 54 32 3e 20 6f 74 68 65 72 0d 0a 20 20 20 20 20  T2> other..     
3a20: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
3a30: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
3a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
3a50: 75 72 6e 20 43 6f 6d 70 61 72 65 28 74 68 69 73  urn Compare(this
3a60: 2c 20 6f 74 68 65 72 29 3b 0d 0a 20 20 20 20 20  , other);..     
3a70: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
3a80: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
3a90: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ae0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
3af0: 20 20 20 23 72 65 67 69 6f 6e 20 49 43 6f 6d 70     #region IComp
3b00: 61 72 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d 0a  arable Members..
3b10: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
3b20: 69 63 20 69 6e 74 20 43 6f 6d 70 61 72 65 54 6f  ic int CompareTo
3b30: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
3b40: 20 20 20 6f 62 6a 65 63 74 20 6f 62 6a 0d 0a 20     object obj.. 
3b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
3b60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
3b70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3b80: 20 41 6e 79 50 61 69 72 3c 54 31 2c 20 54 32 3e   AnyPair<T1, T2>
3b90: 20 61 6e 79 50 61 69 72 20 3d 20 6f 62 6a 20 61   anyPair = obj a
3ba0: 73 20 41 6e 79 50 61 69 72 3c 54 31 2c 20 54 32  s AnyPair<T1, T2
3bb0: 3e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  >;....          
3bc0: 20 20 20 20 20 20 69 66 20 28 61 6e 79 50 61 69        if (anyPai
3bd0: 72 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  r == null)..    
3be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3bf0: 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65  throw new Argume
3c00: 6e 74 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a  ntException();..
3c10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3c20: 20 20 72 65 74 75 72 6e 20 43 6f 6d 70 61 72 65    return Compare
3c30: 54 6f 28 61 6e 79 50 61 69 72 29 3b 0d 0a 20 20  To(anyPair);..  
3c40: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
3c50: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
3c60: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
3c70: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
3c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3cb0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
3cc0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 45        #region IE
3cd0: 71 75 61 74 61 62 6c 65 3c 41 6e 79 50 61 69 72  quatable<AnyPair
3ce0: 3c 54 31 2c 54 32 3e 3e 20 4d 65 6d 62 65 72 73  <T1,T2>> Members
3cf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
3d00: 62 6c 69 63 20 62 6f 6f 6c 20 45 71 75 61 6c 73  blic bool Equals
3d10: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
3d20: 20 20 20 41 6e 79 50 61 69 72 3c 54 31 2c 20 54     AnyPair<T1, T
3d30: 32 3e 20 6f 74 68 65 72 0d 0a 20 20 20 20 20 20  2> other..      
3d40: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
3d50: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
3d60: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
3d70: 72 6e 20 43 6f 6d 70 61 72 65 54 6f 28 6f 74 68  rn CompareTo(oth
3d80: 65 72 29 20 3d 3d 20 30 3b 0d 0a 20 20 20 20 20  er) == 0;..     
3d90: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
3da0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
3db0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
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 2f 2f 2f  ////////////////
3e00: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
3e10: 20 20 20 23 72 65 67 69 6f 6e 20 49 45 71 75 61     #region IEqua
3e20: 6c 69 74 79 43 6f 6d 70 61 72 65 72 3c 41 6e 79  lityComparer<Any
3e30: 50 61 69 72 3c 54 31 2c 54 32 3e 3e 20 4d 65 6d  Pair<T1,T2>> Mem
3e40: 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20  bers..          
3e50: 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 45 71    public bool Eq
3e60: 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20  uals(..         
3e70: 20 20 20 20 20 20 20 41 6e 79 50 61 69 72 3c 54         AnyPair<T
3e80: 31 2c 20 54 32 3e 20 78 2c 0d 0a 20 20 20 20 20  1, T2> x,..     
3e90: 20 20 20 20 20 20 20 20 20 20 20 41 6e 79 50 61             AnyPa
3ea0: 69 72 3c 54 31 2c 20 54 32 3e 20 79 0d 0a 20 20  ir<T1, T2> y..  
3eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
3ec0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
3ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ee0: 72 65 74 75 72 6e 20 4f 62 6a 65 63 74 48 65 6c  return ObjectHel
3ef0: 70 65 72 2e 41 72 65 45 71 75 61 6c 28 78 2c 20  per.AreEqual(x, 
3f00: 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
3f10: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
3f20: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
3f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f60: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
3f70: 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
3f80: 47 65 74 48 61 73 68 43 6f 64 65 28 0d 0a 20 20  GetHashCode(..  
3f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 6e                An
3fa0: 79 50 61 69 72 3c 54 31 2c 20 54 32 3e 20 6f 62  yPair<T1, T2> ob
3fb0: 6a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  j..             
3fc0: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
3fd0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
3fe0: 20 20 20 20 20 72 65 74 75 72 6e 20 28 6f 62 6a       return (obj
3ff0: 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6f 62 6a 2e   != null) ? obj.
4000: 47 65 74 48 61 73 68 43 6f 64 65 28 29 20 3a 20  GetHashCode() : 
4010: 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0;..            
4020: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
4030: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
4040: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
4050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
4090: 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
40a0: 69 6f 6e 20 49 43 6c 6f 6e 65 61 62 6c 65 20 4d  ion ICloneable M
40b0: 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
40c0: 20 20 20 20 70 75 62 6c 69 63 20 6f 62 6a 65 63      public objec
40d0: 74 20 43 6c 6f 6e 65 28 29 0d 0a 20 20 20 20 20  t Clone()..     
40e0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
40f0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4100: 20 6e 65 77 20 41 6e 79 50 61 69 72 3c 54 31 2c   new AnyPair<T1,
4110: 20 54 32 3e 28 58 2c 20 59 29 3b 0d 0a 20 20 20   T2>(X, Y);..   
4120: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
4130: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
4140: 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  on..        }.. 
4150: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
4160: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
4170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
41a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
41b0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
41c0: 23 72 65 67 69 6f 6e 20 54 72 61 63 65 4f 70 73  #region TraceOps
41d0: 20 43 6c 61 73 73 0d 0a 20 20 20 20 20 20 20 20   Class..        
41e0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 63  private static c
41f0: 6c 61 73 73 20 54 72 61 63 65 4f 70 73 0d 0a 20  lass TraceOps.. 
4200: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
4210: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
4220: 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d  ivate Constants.
4230: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
4240: 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e  vate const strin
4250: 67 20 44 65 66 61 75 6c 74 44 65 62 75 67 46 6f  g DefaultDebugFo
4260: 72 6d 61 74 20 3d 20 22 23 7b 30 3a 30 30 30 7d  rmat = "#{0:000}
4270: 20 40 20 7b 31 7d 3a 20 7b 32 7d 22 3b 0d 0a 20   @ {1}: {2}";.. 
4280: 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
4290: 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  te const string 
42a0: 44 65 66 61 75 6c 74 54 72 61 63 65 46 6f 72 6d  DefaultTraceForm
42b0: 61 74 20 3d 20 22 23 7b 30 3a 30 30 30 7d 20 40  at = "#{0:000} @
42c0: 20 7b 31 7d 3a 20 7b 32 7d 22 3b 0d 0a 0d 0a 20   {1}: {2}";.... 
42d0: 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
42e0: 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  te const string 
42f0: 49 73 6f 38 36 30 31 44 61 74 65 54 69 6d 65 4f  Iso8601DateTimeO
4300: 75 74 70 75 74 46 6f 72 6d 61 74 20 3d 0d 0a 20  utputFormat =.. 
4310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
4320: 79 79 79 79 2e 4d 4d 2e 64 64 54 48 48 3a 6d 6d  yyyy.MM.ddTHH:mm
4330: 3a 73 73 2e 66 66 66 66 66 66 66 22 3b 0d 0a 20  :ss.fffffff";.. 
4340: 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
4350: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
4360: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
4370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
43a0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
43b0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
43c0: 50 72 69 76 61 74 65 20 53 74 61 74 69 63 20 44  Private Static D
43d0: 61 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ata..           
43e0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
43f0: 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20  object syncRoot 
4400: 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d  = new object();.
4410: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
4420: 76 61 74 65 20 73 74 61 74 69 63 20 6c 6f 6e 67  vate static long
4430: 20 6e 65 78 74 44 65 62 75 67 49 64 3b 0d 0a 20   nextDebugId;.. 
4440: 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
4450: 74 65 20 73 74 61 74 69 63 20 6c 6f 6e 67 20 6e  te static long n
4460: 65 78 74 54 72 61 63 65 49 64 3b 0d 0a 20 20 20  extTraceId;..   
4470: 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
4480: 20 73 74 61 74 69 63 20 49 4c 69 73 74 3c 54 72   static IList<Tr
4490: 61 63 65 4c 69 73 74 65 6e 65 72 3e 20 64 65 62  aceListener> deb
44a0: 75 67 4c 69 73 74 65 6e 65 72 73 3b 0d 0a 20 20  ugListeners;..  
44b0: 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
44c0: 65 20 73 74 61 74 69 63 20 54 72 61 63 65 50 72  e static TracePr
44d0: 69 6f 72 69 74 79 20 64 65 62 75 67 50 72 69 6f  iority debugPrio
44e0: 72 69 74 79 20 3d 20 54 72 61 63 65 50 72 69 6f  rity = TracePrio
44f0: 72 69 74 79 2e 44 65 66 61 75 6c 74 3b 0d 0a 20  rity.Default;.. 
4500: 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
4510: 74 65 20 73 74 61 74 69 63 20 54 72 61 63 65 50  te static TraceP
4520: 72 69 6f 72 69 74 79 20 74 72 61 63 65 50 72 69  riority tracePri
4530: 6f 72 69 74 79 20 3d 20 54 72 61 63 65 50 72 69  ority = TracePri
4540: 6f 72 69 74 79 2e 44 65 66 61 75 6c 74 3b 0d 0a  ority.Default;..
4550: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
4560: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
4570: 67 20 64 65 62 75 67 46 6f 72 6d 61 74 20 3d 20  g debugFormat = 
4580: 44 65 66 61 75 6c 74 44 65 62 75 67 46 6f 72 6d  DefaultDebugForm
4590: 61 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at;..           
45a0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
45b0: 73 74 72 69 6e 67 20 74 72 61 63 65 46 6f 72 6d  string traceForm
45c0: 61 74 20 3d 20 44 65 66 61 75 6c 74 54 72 61 63  at = DefaultTrac
45d0: 65 46 6f 72 6d 61 74 3b 0d 0a 20 20 20 20 20 20  eFormat;..      
45e0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
45f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
4600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4640: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
4650: 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69     #region Publi
4660: 63 20 53 74 61 74 69 63 20 50 72 6f 70 65 72 74  c Static Propert
4670: 69 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ies..           
4680: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 54   public static T
4690: 72 61 63 65 50 72 69 6f 72 69 74 79 20 44 65 62  racePriority Deb
46a0: 75 67 50 72 69 6f 72 69 74 79 0d 0a 20 20 20 20  ugPriority..    
46b0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
46c0: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
46d0: 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
46e0: 20 7b 20 72 65 74 75 72 6e 20 64 65 62 75 67 50   { return debugP
46f0: 72 69 6f 72 69 74 79 3b 20 7d 20 7d 0d 0a 20 20  riority; } }..  
4700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
4710: 74 20 7b 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f  t { lock (syncRo
4720: 6f 74 29 20 7b 20 64 65 62 75 67 50 72 69 6f 72  ot) { debugPrior
4730: 69 74 79 20 3d 20 76 61 6c 75 65 3b 20 7d 20 7d  ity = value; } }
4740: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
4750: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
4760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
47a0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
47b0: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
47c0: 54 72 61 63 65 50 72 69 6f 72 69 74 79 20 54 72  TracePriority Tr
47d0: 61 63 65 50 72 69 6f 72 69 74 79 0d 0a 20 20 20  acePriority..   
47e0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
47f0: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
4800: 7b 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74  { lock (syncRoot
4810: 29 20 7b 20 72 65 74 75 72 6e 20 74 72 61 63 65  ) { return trace
4820: 50 72 69 6f 72 69 74 79 3b 20 7d 20 7d 0d 0a 20  Priority; } }.. 
4830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
4840: 65 74 20 7b 20 6c 6f 63 6b 20 28 73 79 6e 63 52  et { lock (syncR
4850: 6f 6f 74 29 20 7b 20 74 72 61 63 65 50 72 69 6f  oot) { tracePrio
4860: 72 69 74 79 20 3d 20 76 61 6c 75 65 3b 20 7d 20  rity = value; } 
4870: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
4880: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
4890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48d0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
48e0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
48f0: 20 73 74 72 69 6e 67 20 44 65 62 75 67 46 6f 72   string DebugFor
4900: 6d 61 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mat..           
4910: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
4920: 20 20 20 20 67 65 74 20 7b 20 6c 6f 63 6b 20 28      get { lock (
4930: 73 79 6e 63 52 6f 6f 74 29 20 7b 20 72 65 74 75  syncRoot) { retu
4940: 72 6e 20 64 65 62 75 67 46 6f 72 6d 61 74 3b 20  rn debugFormat; 
4950: 7d 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  } }..           
4960: 20 20 20 20 20 73 65 74 20 7b 20 6c 6f 63 6b 20       set { lock 
4970: 28 73 79 6e 63 52 6f 6f 74 29 20 7b 20 64 65 62  (syncRoot) { deb
4980: 75 67 46 6f 72 6d 61 74 20 3d 20 76 61 6c 75 65  ugFormat = value
4990: 3b 20 7d 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  ; } }..         
49a0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
49b0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
49c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
49d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
49e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
49f0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
4a00: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
4a10: 61 74 69 63 20 73 74 72 69 6e 67 20 54 72 61 63  atic string Trac
4a20: 65 46 6f 72 6d 61 74 0d 0a 20 20 20 20 20 20 20  eFormat..       
4a30: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
4a40: 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 6c 6f          get { lo
4a50: 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 20 7b 20  ck (syncRoot) { 
4a60: 72 65 74 75 72 6e 20 74 72 61 63 65 46 6f 72 6d  return traceForm
4a70: 61 74 3b 20 7d 20 7d 0d 0a 20 20 20 20 20 20 20  at; } }..       
4a80: 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 6c           set { l
4a90: 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 20 7b  ock (syncRoot) {
4aa0: 20 74 72 61 63 65 46 6f 72 6d 61 74 20 3d 20 76   traceFormat = v
4ab0: 61 6c 75 65 3b 20 7d 20 7d 0d 0a 20 20 20 20 20  alue; } }..     
4ac0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
4ad0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
4ae0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
4af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b30: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
4b40: 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65 72     #region Inter
4b50: 61 63 74 69 76 65 20 53 75 70 70 6f 72 74 20 4d  active Support M
4b60: 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
4b70: 20 20 20 20 5b 4d 65 74 68 6f 64 49 6d 70 6c 28      [MethodImpl(
4b80: 4d 65 74 68 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e  MethodImplOption
4b90: 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a  s.NoInlining)]..
4ba0: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
4bb0: 69 63 20 73 74 61 74 69 63 20 44 69 61 6c 6f 67  ic static Dialog
4bc0: 52 65 73 75 6c 74 20 53 68 6f 77 4d 65 73 73 61  Result ShowMessa
4bd0: 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ge(..           
4be0: 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69       TracePriori
4bf0: 74 79 20 74 72 61 63 65 50 72 69 6f 72 69 74 79  ty tracePriority
4c00: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
4c10: 20 20 20 54 72 61 63 65 43 61 6c 6c 62 61 63 6b     TraceCallback
4c20: 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d   debugCallback,.
4c30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4c40: 20 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20 74   TraceCallback t
4c50: 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20  raceCallback,.. 
4c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41                 A
4c70: 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79  ssembly assembly
4c80: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
4c90: 20 20 20 73 74 72 69 6e 67 20 6d 65 73 73 61 67     string messag
4ca0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
4cb0: 20 20 20 20 73 74 72 69 6e 67 20 63 61 74 65 67      string categ
4cc0: 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ory,..          
4cd0: 20 20 20 20 20 20 4d 65 73 73 61 67 65 42 6f 78        MessageBox
4ce0: 42 75 74 74 6f 6e 73 20 62 75 74 74 6f 6e 73 2c  Buttons buttons,
4cf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4d00: 20 20 4d 65 73 73 61 67 65 42 6f 78 49 63 6f 6e    MessageBoxIcon
4d10: 20 69 63 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20   icon..         
4d20: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
4d30: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
4d40: 20 20 20 20 20 20 20 20 20 44 69 61 6c 6f 67 52           DialogR
4d50: 65 73 75 6c 74 20 72 65 73 75 6c 74 20 3d 20 44  esult result = D
4d60: 69 61 6c 6f 67 52 65 73 75 6c 74 2e 4f 4b 3b 0d  ialogResult.OK;.
4d70: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
4d80: 20 20 20 44 65 62 75 67 41 6e 64 54 72 61 63 65     DebugAndTrace
4d90: 28 74 72 61 63 65 50 72 69 6f 72 69 74 79 2c 0d  (tracePriority,.
4da0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4db0: 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61       debugCallba
4dc0: 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63  ck, traceCallbac
4dd0: 6b 2c 20 6d 65 73 73 61 67 65 2c 20 63 61 74 65  k, message, cate
4de0: 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
4df0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53 79            if (Sy
4e00: 73 74 65 6d 49 6e 66 6f 72 6d 61 74 69 6f 6e 2e  stemInformation.
4e10: 55 73 65 72 49 6e 74 65 72 61 63 74 69 76 65 29  UserInteractive)
4e20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4e30: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
4e40: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
4e50: 74 69 74 6c 65 20 3d 20 47 65 74 41 73 73 65 6d  title = GetAssem
4e60: 62 6c 79 54 69 74 6c 65 28 61 73 73 65 6d 62 6c  blyTitle(assembl
4e70: 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
4e80: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74             if (t
4e90: 69 74 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  itle == null).. 
4ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4eb0: 20 20 20 20 20 20 20 74 69 74 6c 65 20 3d 20 41         title = A
4ec0: 70 70 6c 69 63 61 74 69 6f 6e 2e 50 72 6f 64 75  pplication.Produ
4ed0: 63 74 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20  ctName;....     
4ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
4ef0: 65 73 75 6c 74 20 3d 20 4d 65 73 73 61 67 65 42  esult = MessageB
4f00: 6f 78 2e 53 68 6f 77 28 6d 65 73 73 61 67 65 2c  ox.Show(message,
4f10: 20 74 69 74 6c 65 2c 20 62 75 74 74 6f 6e 73 2c   title, buttons,
4f20: 20 69 63 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20   icon);....     
4f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44                 D
4f40: 65 62 75 67 41 6e 64 54 72 61 63 65 28 74 72 61  ebugAndTrace(tra
4f50: 63 65 50 72 69 6f 72 69 74 79 2c 0d 0a 20 20 20  cePriority,..   
4f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f70: 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61       debugCallba
4f80: 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63  ck, traceCallbac
4f90: 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
4fa0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
4fb0: 20 20 20 20 20 20 20 20 20 20 20 22 55 73 65 72             "User
4fc0: 20 63 68 6f 69 63 65 20 6f 66 20 7b 30 7d 2e 22   choice of {0}."
4fd0: 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 72 65 73  , ForDisplay(res
4fe0: 75 6c 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ult)),..        
4ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5000: 63 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  category);....  
5010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5020: 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b    return result;
5030: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5040: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
5050: 20 20 20 20 20 20 20 44 65 62 75 67 41 6e 64 54         DebugAndT
5060: 72 61 63 65 28 74 72 61 63 65 50 72 69 6f 72 69  race(tracePriori
5070: 74 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ty,..           
5080: 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61           debugCa
5090: 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c  llback, traceCal
50a0: 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f  lback, String.Fo
50b0: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
50c0: 20 20 20 20 20 20 20 20 20 20 20 22 44 65 66 61             "Defa
50d0: 75 6c 74 20 63 68 6f 69 63 65 20 6f 66 20 7b 30  ult choice of {0
50e0: 7d 2e 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  }.", ForDisplay(
50f0: 72 65 73 75 6c 74 29 29 2c 0d 0a 20 20 20 20 20  result)),..     
5100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
5110: 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
5120: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
5130: 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20  urn result;..   
5140: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
5150: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
5160: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
5170: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
5180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
51a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
51b0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
51c0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 54 72 61       #region Tra
51d0: 63 69 6e 67 20 53 75 70 70 6f 72 74 20 4d 65 74  cing Support Met
51e0: 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 20 20  hods..          
51f0: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
5200: 76 6f 69 64 20 53 65 74 75 70 44 65 62 75 67 4c  void SetupDebugL
5210: 69 73 74 65 6e 65 72 73 28 29 0d 0a 20 20 20 20  isteners()..    
5220: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
5230: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
5240: 65 62 75 67 4c 69 73 74 65 6e 65 72 73 20 3d 3d  ebugListeners ==
5250: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
5260: 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75              debu
5270: 67 4c 69 73 74 65 6e 65 72 73 20 3d 20 6e 65 77  gListeners = new
5280: 20 4c 69 73 74 3c 54 72 61 63 65 4c 69 73 74 65   List<TraceListe
5290: 6e 65 72 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  ner>();....     
52a0: 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67             debug
52b0: 4c 69 73 74 65 6e 65 72 73 2e 41 64 64 28 6e 65  Listeners.Add(ne
52c0: 77 20 43 6f 6e 73 6f 6c 65 54 72 61 63 65 4c 69  w ConsoleTraceLi
52d0: 73 74 65 6e 65 72 28 29 29 3b 0d 0a 20 20 20 20  stener());..    
52e0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
52f0: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
5300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
5340: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
5350: 69 63 20 73 74 61 74 69 63 20 6c 6f 6e 67 20 4e  ic static long N
5360: 65 78 74 44 65 62 75 67 49 64 28 29 0d 0a 20 20  extDebugId()..  
5370: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
5380: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
5390: 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e  urn Interlocked.
53a0: 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 6e 65  Increment(ref ne
53b0: 78 74 44 65 62 75 67 49 64 29 3b 0d 0a 20 20 20  xtDebugId);..   
53c0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
53d0: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
53e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
53f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
5420: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
5430: 6c 69 63 20 73 74 61 74 69 63 20 6c 6f 6e 67 20  lic static long 
5440: 4e 65 78 74 54 72 61 63 65 49 64 28 29 0d 0a 20  NextTraceId().. 
5450: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
5460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
5470: 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64  turn Interlocked
5480: 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 6e  .Increment(ref n
5490: 65 78 74 54 72 61 63 65 49 64 29 3b 0d 0a 20 20  extTraceId);..  
54a0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
54b0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
54c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
5500: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
5510: 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69  blic static stri
5520: 6e 67 20 54 69 6d 65 53 74 61 6d 70 28 44 61 74  ng TimeStamp(Dat
5530: 65 54 69 6d 65 20 64 61 74 65 54 69 6d 65 29 0d  eTime dateTime).
5540: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
5550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5560: 72 65 74 75 72 6e 20 64 61 74 65 54 69 6d 65 2e  return dateTime.
5570: 54 6f 53 74 72 69 6e 67 28 49 73 6f 38 36 30 31  ToString(Iso8601
5580: 44 61 74 65 54 69 6d 65 4f 75 74 70 75 74 46 6f  DateTimeOutputFo
5590: 72 6d 61 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  rmat);..        
55a0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
55b0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
55c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
55d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
55e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
55f0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
5600: 20 20 20 20 20 20 20 20 5b 4d 65 74 68 6f 64 49          [MethodI
5610: 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70  mpl(MethodImplOp
5620: 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67  tions.NoInlining
5630: 29 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  )]..            
5640: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74  public static st
5650: 72 69 6e 67 20 47 65 74 4d 65 74 68 6f 64 4e 61  ring GetMethodNa
5660: 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me(..           
5670: 20 20 20 20 20 53 74 61 63 6b 54 72 61 63 65 20       StackTrace 
5680: 73 74 61 63 6b 54 72 61 63 65 2c 0d 0a 20 20 20  stackTrace,..   
5690: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
56a0: 20 6c 65 76 65 6c 0d 0a 20 20 20 20 20 20 20 20   level..        
56b0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
56c0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
56d0: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
56e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
56f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5700: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
5710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
5720: 20 4e 4f 54 45 3a 20 49 66 20 61 20 76 61 6c 69   NOTE: If a vali
5730: 64 20 73 74 61 63 6b 20 74 72 61 63 65 20 77 61  d stack trace wa
5740: 73 20 6e 6f 74 20 73 75 70 70 6c 69 65 64 20 62  s not supplied b
5750: 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  y the..         
5760: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
5770: 20 20 20 20 63 61 6c 6c 65 72 2c 20 63 72 65 61      caller, crea
5780: 74 65 20 6f 6e 65 20 6e 6f 77 20 62 61 73 65 64  te one now based
5790: 20 6f 6e 20 74 68 65 20 63 75 72 72 65 6e 74 0d   on the current.
57a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
57b0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 65 78       //       ex
57c0: 65 63 75 74 69 6f 6e 20 73 74 61 63 6b 2e 0d 0a  ecution stack...
57d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
57e0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
57f0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
5800: 73 74 61 63 6b 54 72 61 63 65 20 3d 3d 20 6e 75  stackTrace == nu
5810: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
5820: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
5830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5840: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
5850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5860: 2f 2f 20 4e 4f 54 45 3a 20 47 72 61 62 20 74 68  // NOTE: Grab th
5870: 65 20 63 75 72 72 65 6e 74 20 65 78 65 63 75 74  e current execut
5880: 69 6f 6e 20 73 74 61 63 6b 2e 0d 0a 20 20 20 20  ion stack...    
5890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
58a0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
58b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
58c0: 73 74 61 63 6b 54 72 61 63 65 20 3d 20 6e 65 77  stackTrace = new
58d0: 20 53 74 61 63 6b 54 72 61 63 65 28 29 3b 0d 0a   StackTrace();..
58e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
58f0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
5900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5910: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41        // NOTE: A
5920: 6c 77 61 79 73 20 73 6b 69 70 20 74 68 69 73 20  lways skip this 
5930: 63 61 6c 6c 20 66 72 61 6d 65 20 77 68 65 6e 20  call frame when 
5940: 77 65 20 63 61 70 74 75 72 65 0d 0a 20 20 20 20  we capture..    
5950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5960: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
5970: 20 73 74 61 63 6b 20 74 72 61 63 65 2e 0d 0a 20   stack trace... 
5980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5990: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
59a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59b0: 20 20 20 6c 65 76 65 6c 2b 2b 3b 0d 0a 20 20 20     level++;..   
59c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59d0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
59e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
59f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a00: 20 20 2f 2f 20 4e 4f 54 45 3a 20 47 65 74 20 74    // NOTE: Get t
5a10: 68 65 20 73 70 65 63 69 66 69 65 64 20 73 74 61  he specified sta
5a20: 63 6b 20 66 72 61 6d 65 20 28 61 6c 77 61 79 73  ck frame (always
5a30: 20 61 64 64 20 6f 6e 65 20 74 6f 0d 0a 20 20 20   add one to..   
5a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a50: 20 2f 2f 20 20 20 20 20 20 20 73 6b 69 70 20 74   //       skip t
5a60: 68 69 73 20 6d 65 74 68 6f 64 29 2e 0d 0a 20 20  his method)...  
5a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a80: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
5a90: 20 20 20 20 20 20 20 20 20 20 53 74 61 63 6b 46            StackF
5aa0: 72 61 6d 65 20 73 74 61 63 6b 46 72 61 6d 65 20  rame stackFrame 
5ab0: 3d 20 73 74 61 63 6b 54 72 61 63 65 2e 47 65 74  = stackTrace.Get
5ac0: 46 72 61 6d 65 28 6c 65 76 65 6c 29 3b 0d 0a 0d  Frame(level);...
5ad0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5ae0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
5af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
5b00: 4e 4f 54 45 3a 20 47 65 74 20 74 68 65 20 6d 65  NOTE: Get the me
5b10: 74 68 6f 64 20 66 6f 72 20 74 68 65 20 73 74 61  thod for the sta
5b20: 63 6b 20 66 72 61 6d 65 2e 0d 0a 20 20 20 20 20  ck frame...     
5b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
5b40: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
5b50: 20 20 20 20 20 20 20 4d 65 74 68 6f 64 42 61 73         MethodBas
5b60: 65 20 6d 65 74 68 6f 64 42 61 73 65 20 3d 20 73  e methodBase = s
5b70: 74 61 63 6b 46 72 61 6d 65 2e 47 65 74 4d 65 74  tackFrame.GetMet
5b80: 68 6f 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  hod();....      
5b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
5ba0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5bb0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 47        // NOTE: G
5bc0: 65 74 20 74 68 65 20 74 79 70 65 20 66 6f 72 20  et the type for 
5bd0: 74 68 65 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20  the method...   
5be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5bf0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
5c00: 20 20 20 20 20 20 20 20 20 54 79 70 65 20 74 79           Type ty
5c10: 70 65 20 3d 20 6d 65 74 68 6f 64 42 61 73 65 2e  pe = methodBase.
5c20: 44 65 63 6c 61 72 69 6e 67 54 79 70 65 3b 0d 0a  DeclaringType;..
5c30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5c40: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
5c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
5c60: 20 4e 4f 54 45 3a 20 47 65 74 20 74 68 65 20 6e   NOTE: Get the n
5c70: 61 6d 65 20 6f 66 20 74 68 65 20 6d 65 74 68 6f  ame of the metho
5c80: 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
5c90: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
5ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5cb0: 73 74 72 69 6e 67 20 6e 61 6d 65 20 3d 20 6d 65  string name = me
5cc0: 74 68 6f 64 42 61 73 65 2e 4e 61 6d 65 3b 0d 0a  thodBase.Name;..
5cd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5ce0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
5cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
5d00: 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e 20 74 68   NOTE: Return th
5d10: 65 20 70 72 6f 70 65 72 6c 79 20 66 6f 72 6d 61  e properly forma
5d20: 74 74 65 64 20 72 65 73 75 6c 74 2e 0d 0a 20 20  tted result...  
5d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d40: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
5d50: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
5d60: 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d   String.Format(.
5d70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5d80: 20 20 20 20 20 20 20 20 20 22 7b 30 7d 7b 31 7d           "{0}{1}
5d90: 7b 32 7d 22 2c 20 74 79 70 65 2e 4e 61 6d 65 2c  {2}", type.Name,
5da0: 20 54 79 70 65 2e 44 65 6c 69 6d 69 74 65 72 2c   Type.Delimiter,
5db0: 20 6e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20   name);..       
5dc0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
5dd0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
5de0: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
5df0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
5e00: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
5e10: 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
5e20: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
5e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
5e40: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
5e50: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
5e60: 20 20 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
5eb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
5ec0: 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69 64 20  lic static void 
5ed0: 44 65 62 75 67 43 6f 72 65 28 0d 0a 20 20 20 20  DebugCore(..    
5ee0: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
5ef0: 6e 67 20 6d 65 73 73 61 67 65 2c 0d 0a 20 20 20  ng message,..   
5f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
5f10: 69 6e 67 20 63 61 74 65 67 6f 72 79 0d 0a 20 20  ing category..  
5f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
5f30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
5f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f50: 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 20  lock (syncRoot) 
5f60: 2f 2a 20 54 52 41 4e 53 41 43 54 49 4f 4e 41 4c  /* TRANSACTIONAL
5f70: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
5f80: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5f90: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
5fa0: 64 65 62 75 67 4c 69 73 74 65 6e 65 72 73 20 21  debugListeners !
5fb0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
5fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
5fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5fe0: 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20          foreach 
5ff0: 28 54 72 61 63 65 4c 69 73 74 65 6e 65 72 20 6c  (TraceListener l
6000: 69 73 74 65 6e 65 72 20 69 6e 20 64 65 62 75 67  istener in debug
6010: 4c 69 73 74 65 6e 65 72 73 29 0d 0a 20 20 20 20  Listeners)..    
6020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6030: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
6040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6050: 20 20 20 6c 69 73 74 65 6e 65 72 2e 57 72 69 74     listener.Writ
6060: 65 4c 69 6e 65 28 6d 65 73 73 61 67 65 2c 20 63  eLine(message, c
6070: 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20  ategory);..     
6080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6090: 20 20 20 20 20 20 20 6c 69 73 74 65 6e 65 72 2e         listener.
60a0: 46 6c 75 73 68 28 29 3b 0d 0a 20 20 20 20 20 20  Flush();..      
60b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
60c0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
60d0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
60e0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
60f0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
6100: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
6110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6150: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
6160: 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69  ublic static voi
6170: 64 20 54 72 61 63 65 43 6f 72 65 28 0d 0a 20 20  d TraceCore(..  
6180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
6190: 72 69 6e 67 20 6d 65 73 73 61 67 65 2c 0d 0a 20  ring message,.. 
61a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
61b0: 74 72 69 6e 67 20 63 61 74 65 67 6f 72 79 0d 0a  tring category..
61c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
61d0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
61e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
61f0: 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
6200: 29 20 2f 2a 20 54 52 41 4e 53 41 43 54 49 4f 4e  ) /* TRANSACTION
6210: 41 4c 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  AL */..         
6220: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
6230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
6240: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6250: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57        // NOTE: W
6260: 72 69 74 65 20 74 68 65 20 6d 65 73 73 61 67 65  rite the message
6270: 20 74 6f 20 61 6c 6c 20 74 68 65 20 61 63 74 69   to all the acti
6280: 76 65 20 74 72 61 63 65 0d 0a 20 20 20 20 20 20  ve trace..      
6290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
62a0: 20 20 20 20 20 20 20 6c 69 73 74 65 6e 65 72 73         listeners
62b0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
62c0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
62d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
62e0: 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 6d  race.WriteLine(m
62f0: 65 73 73 61 67 65 2c 20 63 61 74 65 67 6f 72 79  essage, category
6300: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
6310: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 46 6c          Trace.Fl
6320: 75 73 68 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ush();..        
6330: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
6340: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
6350: 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
63a0: 20 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74 68             [Meth
63b0: 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70  odImpl(MethodImp
63c0: 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e  lOptions.NoInlin
63d0: 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20 20  ing)]..         
63e0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
63f0: 20 73 74 72 69 6e 67 20 44 65 62 75 67 41 6e 64   string DebugAnd
6400: 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20  Trace(..        
6410: 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69          TracePri
6420: 6f 72 69 74 79 20 74 72 61 63 65 50 72 69 6f 72  ority tracePrior
6430: 69 74 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ity,..          
6440: 20 20 20 20 20 20 54 72 61 63 65 43 61 6c 6c 62        TraceCallb
6450: 61 63 6b 20 64 65 62 75 67 43 61 6c 6c 62 61 63  ack debugCallbac
6460: 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
6470: 20 20 20 20 54 72 61 63 65 43 61 6c 6c 62 61 63      TraceCallbac
6480: 6b 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c  k traceCallback,
6490: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
64a0: 20 20 45 78 63 65 70 74 69 6f 6e 20 65 78 63 65    Exception exce
64b0: 70 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20  ption,..        
64c0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 63          string c
64d0: 61 74 65 67 6f 72 79 0d 0a 20 20 20 20 20 20 20  ategory..       
64e0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
64f0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
6500: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65             if (e
6510: 78 63 65 70 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c  xception != null
6520: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
6530: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 65         return De
6540: 62 75 67 41 6e 64 54 72 61 63 65 28 74 72 61 63  bugAndTrace(trac
6550: 65 50 72 69 6f 72 69 74 79 2c 20 64 65 62 75 67  ePriority, debug
6560: 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Callback,..     
6570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6580: 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
6590: 2c 20 6e 65 77 20 53 74 61 63 6b 54 72 61 63 65  , new StackTrace
65a0: 28 65 78 63 65 70 74 69 6f 6e 2c 20 74 72 75 65  (exception, true
65b0: 29 2c 20 30 2c 0d 0a 20 20 20 20 20 20 20 20 20  ), 0,..         
65c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
65d0: 78 63 65 70 74 69 6f 6e 2e 54 6f 53 74 72 69 6e  xception.ToStrin
65e0: 67 28 29 2c 20 63 61 74 65 67 6f 72 79 29 3b 0d  g(), category);.
65f0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
6600: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
6610: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
6620: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
6630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6670: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
6680: 20 5b 4d 65 74 68 6f 64 49 6d 70 6c 28 4d 65 74   [MethodImpl(Met
6690: 68 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e 73 2e 4e  hodImplOptions.N
66a0: 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a 20 20 20  oInlining)]..   
66b0: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
66c0: 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 44 65  static string De
66d0: 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20  bugAndTrace(..  
66e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
66f0: 61 63 65 50 72 69 6f 72 69 74 79 20 74 72 61 63  acePriority trac
6700: 65 50 72 69 6f 72 69 74 79 2c 0d 0a 20 20 20 20  ePriority,..    
6710: 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
6720: 65 43 61 6c 6c 62 61 63 6b 20 64 65 62 75 67 43  eCallback debugC
6730: 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
6740: 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 43            TraceC
6750: 61 6c 6c 62 61 63 6b 20 74 72 61 63 65 43 61 6c  allback traceCal
6760: 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
6770: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6d          string m
6780: 65 73 73 61 67 65 2c 0d 0a 20 20 20 20 20 20 20  essage,..       
6790: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
67a0: 63 61 74 65 67 6f 72 79 0d 0a 20 20 20 20 20 20  category..      
67b0: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
67c0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
67d0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
67e0: 72 6e 20 44 65 62 75 67 41 6e 64 54 72 61 63 65  rn DebugAndTrace
67f0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
6800: 20 20 20 20 20 20 20 74 72 61 63 65 50 72 69 6f         tracePrio
6810: 72 69 74 79 2c 20 64 65 62 75 67 43 61 6c 6c 62  rity, debugCallb
6820: 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61  ack, traceCallba
6830: 63 6b 2c 20 6e 75 6c 6c 2c 20 31 2c 0d 0a 20 20  ck, null, 1,..  
6840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6850: 20 20 6d 65 73 73 61 67 65 2c 20 63 61 74 65 67    message, categ
6860: 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ory);..         
6870: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
6880: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
6890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
68a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
68b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
68c0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
68d0: 20 20 20 20 20 20 20 5b 4d 65 74 68 6f 64 49 6d         [MethodIm
68e0: 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70 74  pl(MethodImplOpt
68f0: 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29  ions.NoInlining)
6900: 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ]..            p
6910: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
6920: 72 69 6e 67 20 44 65 62 75 67 41 6e 64 54 72 61  ring DebugAndTra
6930: 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce(..           
6940: 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69       TracePriori
6950: 74 79 20 74 72 61 63 65 50 72 69 6f 72 69 74 79  ty tracePriority
6960: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
6970: 20 20 20 54 72 61 63 65 43 61 6c 6c 62 61 63 6b     TraceCallback
6980: 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d   debugCallback,.
6990: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
69a0: 20 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20 74   TraceCallback t
69b0: 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20  raceCallback,.. 
69c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
69d0: 74 61 63 6b 54 72 61 63 65 20 73 74 61 63 6b 54  tackTrace stackT
69e0: 72 61 63 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  race,..         
69f0: 20 20 20 20 20 20 20 69 6e 74 20 6c 65 76 65 6c         int level
6a00: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
6a10: 20 20 20 73 74 72 69 6e 67 20 6d 65 73 73 61 67     string messag
6a20: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
6a30: 20 20 20 20 73 74 72 69 6e 67 20 63 61 74 65 67      string categ
6a40: 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ory..           
6a50: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
6a60: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
6a70: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
6a80: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
6a90: 54 45 3a 20 41 6c 77 61 79 73 20 73 6b 69 70 20  TE: Always skip 
6aa0: 74 68 69 73 20 63 61 6c 6c 20 66 72 61 6d 65 20  this call frame 
6ab0: 69 66 20 74 68 65 20 73 74 61 63 6b 20 74 72 61  if the stack tra
6ac0: 63 65 20 69 73 0d 0a 20 20 20 20 20 20 20 20 20  ce is..         
6ad0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
6ae0: 67 6f 69 6e 67 20 74 6f 20 62 65 20 63 61 70 74  going to be capt
6af0: 75 72 65 64 20 62 79 20 47 65 74 4d 65 74 68 6f  ured by GetMetho
6b00: 64 4e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20  dName...        
6b10: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
6b20: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
6b30: 73 74 61 63 6b 54 72 61 63 65 20 3d 3d 20 6e 75  stackTrace == nu
6b40: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
6b50: 20 20 20 20 20 20 20 20 20 6c 65 76 65 6c 2b 2b           level++
6b60: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
6b70: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
6b80: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
6b90: 3a 20 46 6f 72 6d 61 74 20 74 68 65 20 6d 65 73  : Format the mes
6ba0: 73 61 67 65 20 66 6f 72 20 64 69 73 70 6c 61 79  sage for display
6bb0: 20 28 6f 6e 63 65 29 2e 0d 0a 20 20 20 20 20 20   (once)...      
6bc0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
6bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
6be0: 72 69 6e 67 20 66 6f 72 6d 61 74 74 65 64 20 3d  ring formatted =
6bf0: 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 22   String.Format("
6c00: 7b 30 7d 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  {0}: {1}",..    
6c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6c20: 47 65 74 4d 65 74 68 6f 64 4e 61 6d 65 28 73 74  GetMethodName(st
6c30: 61 63 6b 54 72 61 63 65 2c 20 6c 65 76 65 6c 29  ackTrace, level)
6c40: 2c 20 6d 65 73 73 61 67 65 29 3b 0d 0a 0d 0a 20  , message);.... 
6c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
6c60: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
6c70: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
6c80: 68 65 20 64 65 62 75 67 20 63 61 6c 6c 62 61 63  he debug callbac
6c90: 6b 20 69 73 20 69 6e 76 61 6c 69 64 20 6f 72 20  k is invalid or 
6ca0: 74 68 65 20 74 72 61 63 65 20 70 72 69 6f 72 69  the trace priori
6cb0: 74 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ty..            
6cc0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 66 20      //       of 
6cd0: 74 68 69 73 20 6d 65 73 73 61 67 65 20 69 73 20  this message is 
6ce0: 6c 65 73 73 20 74 68 61 6e 20 77 68 61 74 20 77  less than what w
6cf0: 65 20 63 75 72 72 65 6e 74 6c 79 20 77 61 6e 74  e currently want
6d00: 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   to..           
6d10: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64 65       //       de
6d20: 62 75 67 2c 20 73 6b 69 70 20 69 74 2e 0d 0a 20  bug, skip it... 
6d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
6d40: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
6d50: 20 20 20 69 66 20 28 28 64 65 62 75 67 43 61 6c     if ((debugCal
6d60: 6c 62 61 63 6b 20 21 3d 20 6e 75 6c 6c 29 20 26  lback != null) &
6d70: 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  &..             
6d80: 20 20 20 20 20 20 20 28 74 72 61 63 65 50 72 69         (tracePri
6d90: 6f 72 69 74 79 20 3e 3d 20 44 65 62 75 67 50 72  ority >= DebugPr
6da0: 69 6f 72 69 74 79 29 29 0d 0a 20 20 20 20 20 20  iority))..      
6db0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
6dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6dd0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
6de0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
6df0: 3a 20 49 6e 76 6f 6b 65 20 74 68 65 20 64 65 62  : Invoke the deb
6e00: 75 67 20 63 61 6c 6c 62 61 63 6b 20 77 69 74 68  ug callback with
6e10: 20 74 68 65 20 66 6f 72 6d 61 74 74 65 64 0d 0a   the formatted..
6e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6e30: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6d 65 73      //       mes
6e40: 73 61 67 65 20 61 6e 64 20 74 68 65 20 63 61 74  sage and the cat
6e50: 65 67 6f 72 79 20 73 70 65 63 69 66 69 65 64 20  egory specified 
6e60: 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  by the..        
6e70: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
6e80: 20 20 20 20 20 63 61 6c 6c 65 72 2e 0d 0a 20 20       caller...  
6e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6ea0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
6eb0: 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43            debugC
6ec0: 61 6c 6c 62 61 63 6b 28 66 6f 72 6d 61 74 74 65  allback(formatte
6ed0: 64 2c 20 63 61 74 65 67 6f 72 79 29 3b 0d 0a 20  d, category);.. 
6ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
6ef0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
6f00: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
6f10: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
6f20: 20 49 66 20 74 68 65 20 74 72 61 63 65 20 63 61   If the trace ca
6f30: 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 61 6c 69  llback is invali
6f40: 64 20 6f 72 20 74 68 65 20 74 72 61 63 65 20 70  d or the trace p
6f50: 72 69 6f 72 69 74 79 0d 0a 20 20 20 20 20 20 20  riority..       
6f60: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
6f70: 20 20 6f 66 20 74 68 69 73 20 6d 65 73 73 61 67    of this messag
6f80: 65 20 69 73 20 6c 65 73 73 20 74 68 61 6e 20 77  e is less than w
6f90: 68 61 74 20 77 65 20 63 75 72 72 65 6e 74 6c 79  hat we currently
6fa0: 20 77 61 6e 74 20 74 6f 0d 0a 20 20 20 20 20 20   want to..      
6fb0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
6fc0: 20 20 20 74 72 61 63 65 2c 20 73 6b 69 70 20 69     trace, skip i
6fd0: 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t...            
6fe0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
6ff0: 20 20 20 20 20 20 20 20 69 66 20 28 28 74 72 61          if ((tra
7000: 63 65 43 61 6c 6c 62 61 63 6b 20 21 3d 20 6e 75  ceCallback != nu
7010: 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20  ll) &&..        
7020: 20 20 20 20 20 20 20 20 20 20 20 20 28 74 72 61              (tra
7030: 63 65 50 72 69 6f 72 69 74 79 20 3e 3d 20 54 72  cePriority >= Tr
7040: 61 63 65 50 72 69 6f 72 69 74 79 29 29 0d 0a 20  acePriority)).. 
7050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
7060: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7070: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
7080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
7090: 20 4e 4f 54 45 3a 20 49 6e 76 6f 6b 65 20 74 68   NOTE: Invoke th
70a0: 65 20 74 72 61 63 65 20 63 61 6c 6c 62 61 63 6b  e trace callback
70b0: 20 77 69 74 68 20 74 68 65 20 66 6f 72 6d 61 74   with the format
70c0: 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ted..           
70d0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
70e0: 20 20 6d 65 73 73 61 67 65 20 61 6e 64 20 74 68    message and th
70f0: 65 20 63 61 74 65 67 6f 72 79 20 73 70 65 63 69  e category speci
7100: 66 69 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20  fied by the..   
7110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7120: 20 2f 2f 20 20 20 20 20 20 20 63 61 6c 6c 65 72   //       caller
7130: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
7140: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
7150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
7160: 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 66 6f 72  raceCallback(for
7170: 6d 61 74 74 65 64 2c 20 63 61 74 65 67 6f 72 79  matted, category
7180: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
7190: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
71a0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
71b0: 6d 65 73 73 61 67 65 3b 0d 0a 20 20 20 20 20 20  message;..      
71c0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
71d0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
71e0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
71f0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
7200: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
7210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7250: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
7260: 67 69 6f 6e 20 4d 6f 63 6b 52 65 67 69 73 74 72  gion MockRegistr
7270: 79 20 43 6c 61 73 73 0d 0a 20 20 20 20 20 20 20  y Class..       
7280: 20 70 72 69 76 61 74 65 20 73 65 61 6c 65 64 20   private sealed 
7290: 63 6c 61 73 73 20 4d 6f 63 6b 52 65 67 69 73 74  class MockRegist
72a0: 72 79 20 3a 20 49 44 69 73 70 6f 73 61 62 6c 65  ry : IDisposable
72b0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
72c0: 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
72d0: 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63   Public Construc
72e0: 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20  tors..          
72f0: 20 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67    public MockReg
7300: 69 73 74 72 79 28 29 0d 0a 20 20 20 20 20 20 20  istry()..       
7310: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
7320: 20 20 20 20 20 20 20 20 77 68 61 74 49 66 20 3d          whatIf =
7330: 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
7340: 20 20 20 20 20 20 20 20 72 65 61 64 4f 6e 6c 79          readOnly
7350: 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
7360: 20 20 20 20 20 20 20 20 20 20 73 61 66 65 20 3d            safe =
7370: 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
7380: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
7390: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
73a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73d0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
73e0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d          public M
73f0: 6f 63 6b 52 65 67 69 73 74 72 79 28 0d 0a 20 20  ockRegistry(..  
7400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
7410: 6f 6c 20 77 68 61 74 49 66 0d 0a 20 20 20 20 20  ol whatIf..     
7420: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
7430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20                : 
7440: 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20  this()..        
7450: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
7460: 20 20 20 20 20 20 20 74 68 69 73 2e 77 68 61 74         this.what
7470: 49 66 20 3d 20 77 68 61 74 49 66 3b 0d 0a 20 20  If = whatIf;..  
7480: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
7490: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
74a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
74b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
74c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
74d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
74e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
74f0: 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72  blic MockRegistr
7500: 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y(..            
7510: 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66 2c      bool whatIf,
7520: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7530: 20 20 62 6f 6f 6c 20 72 65 61 64 4f 6e 6c 79 0d    bool readOnly.
7540: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7550: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
7560: 20 20 20 20 3a 20 74 68 69 73 28 77 68 61 74 49      : this(whatI
7570: 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f)..            
7580: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
7590: 20 20 20 74 68 69 73 2e 72 65 61 64 4f 6e 6c 79     this.readOnly
75a0: 20 3d 20 72 65 61 64 4f 6e 6c 79 3b 0d 0a 20 20   = readOnly;..  
75b0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
75c0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
75d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
7610: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
7620: 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72  blic MockRegistr
7630: 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y(..            
7640: 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66 2c      bool whatIf,
7650: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7660: 20 20 62 6f 6f 6c 20 72 65 61 64 4f 6e 6c 79 2c    bool readOnly,
7670: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7680: 20 20 62 6f 6f 6c 20 73 61 66 65 0d 0a 20 20 20    bool safe..   
7690: 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
76a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
76b0: 3a 20 74 68 69 73 28 77 68 61 74 49 66 2c 20 72  : this(whatIf, r
76c0: 65 61 64 4f 6e 6c 79 29 0d 0a 20 20 20 20 20 20  eadOnly)..      
76d0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
76e0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 61           this.sa
76f0: 66 65 20 3d 20 73 61 66 65 3b 0d 0a 20 20 20 20  fe = safe;..    
7700: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
7710: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
7720: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
7730: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
7740: 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
7780: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
7790: 69 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20  ic Properties.. 
77a0: 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
77b0: 74 65 20 62 6f 6f 6c 20 77 68 61 74 49 66 3b 0d  te bool whatIf;.
77c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
77d0: 6c 69 63 20 62 6f 6f 6c 20 57 68 61 74 49 66 0d  lic bool WhatIf.
77e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
77f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7800: 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f  get { CheckDispo
7810: 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20 77 68  sed(); return wh
7820: 61 74 49 66 3b 20 7d 0d 0a 20 20 20 20 20 20 20  atIf; }..       
7830: 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 43           set { C
7840: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
7850: 77 68 61 74 49 66 20 3d 20 76 61 6c 75 65 3b 20  whatIf = value; 
7860: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
7870: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
7880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
78a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
78b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
78c0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
78d0: 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20     private bool 
78e0: 72 65 61 64 4f 6e 6c 79 3b 0d 0a 20 20 20 20 20  readOnly;..     
78f0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f         public bo
7900: 6f 6c 20 52 65 61 64 4f 6e 6c 79 0d 0a 20 20 20  ol ReadOnly..   
7910: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
7920: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
7930: 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
7940: 29 3b 20 72 65 74 75 72 6e 20 72 65 61 64 4f 6e  ); return readOn
7950: 6c 79 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  ly; }..         
7960: 20 20 20 20 20 20 20 73 65 74 20 7b 20 43 68 65         set { Che
7970: 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65  ckDisposed(); re
7980: 61 64 4f 6e 6c 79 20 3d 20 76 61 6c 75 65 3b 20  adOnly = value; 
7990: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
79a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
79b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79f0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
7a00: 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20     private bool 
7a10: 73 61 66 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  safe;..         
7a20: 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 53     public bool S
7a30: 61 66 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  afe..           
7a40: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
7a50: 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44      get { CheckD
7a60: 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72  isposed(); retur
7a70: 6e 20 73 61 66 65 3b 20 7d 0d 0a 20 20 20 20 20  n safe; }..     
7a80: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
7a90: 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
7aa0: 3b 20 73 61 66 65 20 3d 20 76 61 6c 75 65 3b 20  ; safe = value; 
7ab0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
7ac0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
7ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b10: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
7b20: 20 20 20 70 72 69 76 61 74 65 20 4d 6f 63 6b 52     private MockR
7b30: 65 67 69 73 74 72 79 4b 65 79 20 63 6c 61 73 73  egistryKey class
7b40: 65 73 52 6f 6f 74 3b 0d 0a 20 20 20 20 20 20 20  esRoot;..       
7b50: 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f 63 6b       public Mock
7b60: 52 65 67 69 73 74 72 79 4b 65 79 20 43 6c 61 73  RegistryKey Clas
7b70: 73 65 73 52 6f 6f 74 0d 0a 20 20 20 20 20 20 20  sesRoot..       
7b80: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
7b90: 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20          get..   
7ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
7bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7bc0: 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
7bd0: 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  d();....        
7be0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
7bf0: 63 6c 61 73 73 65 73 52 6f 6f 74 20 3d 3d 20 6e  classesRoot == n
7c00: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
7c10: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
7c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7c30: 20 20 20 20 20 63 6c 61 73 73 65 73 52 6f 6f 74       classesRoot
7c40: 20 3d 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73   = new MockRegis
7c50: 74 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20 20  tryKey(..       
7c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7c70: 20 20 20 20 20 52 65 67 69 73 74 72 79 2e 43 6c       Registry.Cl
7c80: 61 73 73 65 73 52 6f 6f 74 2c 20 77 68 61 74 49  assesRoot, whatI
7c90: 66 2c 20 72 65 61 64 4f 6e 6c 79 2c 20 73 61 66  f, readOnly, saf
7ca0: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
7cb0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
7cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7cd0: 20 20 72 65 74 75 72 6e 20 63 6c 61 73 73 65 73    return classes
7ce0: 52 6f 6f 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  Root;..         
7cf0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
7d00: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
7d10: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
7d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
7d60: 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
7d70: 65 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65  e MockRegistryKe
7d80: 79 20 63 75 72 72 65 6e 74 43 6f 6e 66 69 67 3b  y currentConfig;
7d90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
7da0: 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72  blic MockRegistr
7db0: 79 4b 65 79 20 43 75 72 72 65 6e 74 43 6f 6e 66  yKey CurrentConf
7dc0: 69 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ig..            
7dd0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
7de0: 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
7df0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
7e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
7e10: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
7e20: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
7e30: 20 20 20 20 20 20 20 69 66 20 28 63 75 72 72 65         if (curre
7e40: 6e 74 43 6f 6e 66 69 67 20 3d 3d 20 6e 75 6c 6c  ntConfig == null
7e50: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
7e60: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
7e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e80: 20 20 63 75 72 72 65 6e 74 43 6f 6e 66 69 67 20    currentConfig 
7e90: 3d 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73 74  = new MockRegist
7ea0: 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20  ryKey(..        
7eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7ec0: 20 20 20 20 52 65 67 69 73 74 72 79 2e 43 75 72      Registry.Cur
7ed0: 72 65 6e 74 43 6f 6e 66 69 67 2c 20 77 68 61 74  rentConfig, what
7ee0: 49 66 2c 20 72 65 61 64 4f 6e 6c 79 2c 20 73 61  If, readOnly, sa
7ef0: 66 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  fe);..          
7f00: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
7f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f20: 20 20 20 72 65 74 75 72 6e 20 63 75 72 72 65 6e     return curren
7f30: 74 43 6f 6e 66 69 67 3b 0d 0a 20 20 20 20 20 20  tConfig;..      
7f40: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
7f50: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
7f60: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
7f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
7fb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
7fc0: 76 61 74 65 20 4d 6f 63 6b 52 65 67 69 73 74 72  vate MockRegistr
7fd0: 79 4b 65 79 20 63 75 72 72 65 6e 74 55 73 65 72  yKey currentUser
7fe0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
7ff0: 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74  ublic MockRegist
8000: 72 79 4b 65 79 20 43 75 72 72 65 6e 74 55 73 65  ryKey CurrentUse
8010: 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  r..            {
8020: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8030: 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20    get..         
8040: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
8050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68                Ch
8060: 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
8070: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8080: 20 20 20 20 20 20 69 66 20 28 63 75 72 72 65 6e        if (curren
8090: 74 55 73 65 72 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  tUser == null)..
80a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
80b0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
80c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
80d0: 75 72 72 65 6e 74 55 73 65 72 20 3d 20 6e 65 77  urrentUser = new
80e0: 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
80f0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
8100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52                 R
8110: 65 67 69 73 74 72 79 2e 43 75 72 72 65 6e 74 55  egistry.CurrentU
8120: 73 65 72 2c 20 77 68 61 74 49 66 2c 20 72 65 61  ser, whatIf, rea
8130: 64 4f 6e 6c 79 2c 20 73 61 66 65 29 3b 0d 0a 20  dOnly, safe);.. 
8140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8150: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
8160: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
8170: 72 6e 20 63 75 72 72 65 6e 74 55 73 65 72 3b 0d  rn currentUser;.
8180: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8190: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
81a0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
81b0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
81c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
81d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
81e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
81f0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
8200: 20 20 20 20 70 72 69 76 61 74 65 20 4d 6f 63 6b      private Mock
8210: 52 65 67 69 73 74 72 79 4b 65 79 20 64 79 6e 44  RegistryKey dynD
8220: 61 74 61 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ata;..          
8230: 20 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67    public MockReg
8240: 69 73 74 72 79 4b 65 79 20 44 79 6e 44 61 74 61  istryKey DynData
8250: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
8260: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8270: 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20   get..          
8280: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8290: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65               Che
82a0: 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d  ckDisposed();...
82b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
82c0: 20 20 20 20 20 69 66 20 28 64 79 6e 44 61 74 61       if (dynData
82d0: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
82e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
82f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8300: 20 20 20 20 20 20 20 20 20 20 64 79 6e 44 61 74            dynDat
8310: 61 20 3d 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69  a = new MockRegi
8320: 73 74 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20  stryKey(..      
8330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8340: 20 20 20 20 20 20 52 65 67 69 73 74 72 79 2e 44        Registry.D
8350: 79 6e 44 61 74 61 2c 20 77 68 61 74 49 66 2c 20  ynData, whatIf, 
8360: 72 65 61 64 4f 6e 6c 79 2c 20 73 61 66 65 29 3b  readOnly, safe);
8370: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8380: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
8390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
83a0: 65 74 75 72 6e 20 64 79 6e 44 61 74 61 3b 0d 0a  eturn dynData;..
83b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
83c0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
83d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
83e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
83f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8420: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
8430: 20 20 20 70 72 69 76 61 74 65 20 4d 6f 63 6b 52     private MockR
8440: 65 67 69 73 74 72 79 4b 65 79 20 6c 6f 63 61 6c  egistryKey local
8450: 4d 61 63 68 69 6e 65 3b 0d 0a 20 20 20 20 20 20  Machine;..      
8460: 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f 63        public Moc
8470: 6b 52 65 67 69 73 74 72 79 4b 65 79 20 4c 6f 63  kRegistryKey Loc
8480: 61 6c 4d 61 63 68 69 6e 65 0d 0a 20 20 20 20 20  alMachine..     
8490: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
84a0: 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20            get.. 
84b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
84c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
84d0: 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
84e0: 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
84f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
8500: 20 28 6c 6f 63 61 6c 4d 61 63 68 69 6e 65 20 3d   (localMachine =
8510: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
8520: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
8530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8540: 20 20 20 20 20 20 20 20 6c 6f 63 61 6c 4d 61 63          localMac
8550: 68 69 6e 65 20 3d 20 6e 65 77 20 4d 6f 63 6b 52  hine = new MockR
8560: 65 67 69 73 74 72 79 4b 65 79 28 0d 0a 20 20 20  egistryKey(..   
8570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8580: 20 20 20 20 20 20 20 20 20 52 65 67 69 73 74 72           Registr
8590: 79 2e 4c 6f 63 61 6c 4d 61 63 68 69 6e 65 2c 20  y.LocalMachine, 
85a0: 77 68 61 74 49 66 2c 20 72 65 61 64 4f 6e 6c 79  whatIf, readOnly
85b0: 2c 20 73 61 66 65 29 3b 0d 0a 20 20 20 20 20 20  , safe);..      
85c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
85d0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
85e0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c 6f         return lo
85f0: 63 61 6c 4d 61 63 68 69 6e 65 3b 0d 0a 20 20 20  calMachine;..   
8600: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
8610: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
8620: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
8630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8670: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
8680: 70 72 69 76 61 74 65 20 4d 6f 63 6b 52 65 67 69  private MockRegi
8690: 73 74 72 79 4b 65 79 20 70 65 72 66 6f 72 6d 61  stryKey performa
86a0: 6e 63 65 44 61 74 61 3b 0d 0a 20 20 20 20 20 20  nceData;..      
86b0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f 63        public Moc
86c0: 6b 52 65 67 69 73 74 72 79 4b 65 79 20 50 65 72  kRegistryKey Per
86d0: 66 6f 72 6d 61 6e 63 65 44 61 74 61 0d 0a 20 20  formanceData..  
86e0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
86f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
8700: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8710: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
8720: 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69           CheckDi
8730: 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
8740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8750: 20 69 66 20 28 70 65 72 66 6f 72 6d 61 6e 63 65   if (performance
8760: 44 61 74 61 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  Data == null).. 
8770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8780: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
8790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 65                pe
87a0: 72 66 6f 72 6d 61 6e 63 65 44 61 74 61 20 3d 20  rformanceData = 
87b0: 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73 74 72 79  new MockRegistry
87c0: 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Key(..          
87d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
87e0: 20 20 52 65 67 69 73 74 72 79 2e 50 65 72 66 6f    Registry.Perfo
87f0: 72 6d 61 6e 63 65 44 61 74 61 2c 20 77 68 61 74  rmanceData, what
8800: 49 66 2c 20 72 65 61 64 4f 6e 6c 79 2c 20 73 61  If, readOnly, sa
8810: 66 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  fe);..          
8820: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
8830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8840: 20 20 20 72 65 74 75 72 6e 20 70 65 72 66 6f 72     return perfor
8850: 6d 61 6e 63 65 44 61 74 61 3b 0d 0a 20 20 20 20  manceData;..    
8860: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
8870: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
8880: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
8890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88b0: 2f 2f 2f 2f 2f 2f 2f 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 0d  ///////////////.
88d0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
88e0: 72 69 76 61 74 65 20 4d 6f 63 6b 52 65 67 69 73  rivate MockRegis
88f0: 74 72 79 4b 65 79 20 75 73 65 72 73 3b 0d 0a 20  tryKey users;.. 
8900: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
8910: 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65  c MockRegistryKe
8920: 79 20 55 73 65 72 73 0d 0a 20 20 20 20 20 20 20  y Users..       
8930: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
8940: 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20          get..   
8950: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
8960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8970: 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
8980: 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  d();....        
8990: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
89a0: 75 73 65 72 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  users == null)..
89b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
89c0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
89d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75                 u
89e0: 73 65 72 73 20 3d 20 6e 65 77 20 4d 6f 63 6b 52  sers = new MockR
89f0: 65 67 69 73 74 72 79 4b 65 79 28 0d 0a 20 20 20  egistryKey(..   
8a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8a10: 20 20 20 20 20 20 20 20 20 52 65 67 69 73 74 72           Registr
8a20: 79 2e 55 73 65 72 73 2c 20 77 68 61 74 49 66 2c  y.Users, whatIf,
8a30: 20 72 65 61 64 4f 6e 6c 79 2c 20 73 61 66 65 29   readOnly, safe)
8a40: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
8a50: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
8a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8a70: 72 65 74 75 72 6e 20 75 73 65 72 73 3b 0d 0a 20  return users;.. 
8a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
8a90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
8aa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e  .            #en
8ab0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
8ac0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
8ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
8b10: 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
8b20: 6e 20 50 75 62 6c 69 63 20 22 52 65 67 69 73 74  n Public "Regist
8b30: 72 79 22 20 4d 65 74 68 6f 64 73 0d 0a 23 69 66  ry" Methods..#if
8b40: 20 66 61 6c 73 65 0d 0a 20 20 20 20 20 20 20 20   false..        
8b50: 20 20 20 20 70 75 62 6c 69 63 20 6f 62 6a 65 63      public objec
8b60: 74 20 47 65 74 56 61 6c 75 65 28 0d 0a 20 20 20  t GetValue(..   
8b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
8b80: 69 6e 67 20 6b 65 79 4e 61 6d 65 2c 0d 0a 20 20  ing keyName,..  
8b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
8ba0: 72 69 6e 67 20 76 61 6c 75 65 4e 61 6d 65 2c 0d  ring valueName,.
8bb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8bc0: 20 6f 62 6a 65 63 74 20 64 65 66 61 75 6c 74 56   object defaultV
8bd0: 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20  alue..          
8be0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
8bf0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
8c00: 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
8c10: 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  posed();....    
8c20: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
8c30: 72 6e 20 52 65 67 69 73 74 72 79 2e 47 65 74 56  rn Registry.GetV
8c40: 61 6c 75 65 28 6b 65 79 4e 61 6d 65 2c 20 76 61  alue(keyName, va
8c50: 6c 75 65 4e 61 6d 65 2c 20 64 65 66 61 75 6c 74  lueName, default
8c60: 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  Value);..       
8c70: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
8c80: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
8c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20  /////////....   
8cd0: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
8ce0: 76 6f 69 64 20 53 65 74 56 61 6c 75 65 28 0d 0a  void SetValue(..
8cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8d00: 73 74 72 69 6e 67 20 6b 65 79 4e 61 6d 65 2c 0d  string keyName,.
8d10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8d20: 20 73 74 72 69 6e 67 20 76 61 6c 75 65 4e 61 6d   string valueNam
8d30: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
8d40: 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65      object value
8d50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8d60: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
8d70: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8d80: 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
8d90: 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d();..          
8da0: 20 20 20 20 20 20 43 68 65 63 6b 52 65 61 64 4f        CheckReadO
8db0: 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  nly();....      
8dc0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 77            if (!w
8dd0: 68 61 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20  hatIf)..        
8de0: 20 20 20 20 20 20 20 20 20 20 20 20 52 65 67 69              Regi
8df0: 73 74 72 79 2e 53 65 74 56 61 6c 75 65 28 6b 65  stry.SetValue(ke
8e00: 79 4e 61 6d 65 2c 20 76 61 6c 75 65 4e 61 6d 65  yName, valueName
8e10: 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  , value);..     
8e20: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
8e30: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
8e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
8e80: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
8e90: 63 20 76 6f 69 64 20 53 65 74 56 61 6c 75 65 28  c void SetValue(
8ea0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8eb0: 20 20 73 74 72 69 6e 67 20 6b 65 79 4e 61 6d 65    string keyName
8ec0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
8ed0: 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 4e     string valueN
8ee0: 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
8ef0: 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c        object val
8f00: 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue,..           
8f10: 20 20 20 20 20 52 65 67 69 73 74 72 79 56 61 6c       RegistryVal
8f20: 75 65 4b 69 6e 64 20 76 61 6c 75 65 4b 69 6e 64  ueKind valueKind
8f30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8f40: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
8f50: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8f60: 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
8f70: 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d();..          
8f80: 20 20 20 20 20 20 43 68 65 63 6b 52 65 61 64 4f        CheckReadO
8f90: 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  nly();....      
8fa0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 77            if (!w
8fb0: 68 61 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20  hatIf)..        
8fc0: 20 20 20 20 20 20 20 20 20 20 20 20 52 65 67 69              Regi
8fd0: 73 74 72 79 2e 53 65 74 56 61 6c 75 65 28 6b 65  stry.SetValue(ke
8fe0: 79 4e 61 6d 65 2c 20 76 61 6c 75 65 4e 61 6d 65  yName, valueName
8ff0: 2c 20 76 61 6c 75 65 2c 20 76 61 6c 75 65 4b 69  , value, valueKi
9000: 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nd);..          
9010: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
9020: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
9030: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
9040: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
9050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9080: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
9090: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
90a0: 69 76 61 74 65 20 4d 65 74 68 6f 64 73 0d 0a 20  ivate Methods.. 
90b0: 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
90c0: 74 65 20 76 6f 69 64 20 43 68 65 63 6b 52 65 61  te void CheckRea
90d0: 64 4f 6e 6c 79 28 29 0d 0a 20 20 20 20 20 20 20  dOnly()..       
90e0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
90f0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
9100: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
9110: 4f 54 45 3a 20 49 6e 20 22 72 65 61 64 2d 6f 6e  OTE: In "read-on
9120: 6c 79 22 20 6d 6f 64 65 2c 20 77 65 20 64 69 73  ly" mode, we dis
9130: 61 6c 6c 6f 77 20 61 6c 6c 20 77 72 69 74 65 20  allow all write 
9140: 61 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20  access...       
9150: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
9160: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
9170: 28 21 72 65 61 64 4f 6e 6c 79 29 0d 0a 20 20 20  (!readOnly)..   
9180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9190: 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
91a0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
91b0: 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65  w new InvalidOpe
91c0: 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28  rationException(
91d0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
91e0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
91f0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
9200: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
9210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
9250: 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
9260: 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20  ion IDisposable 
9270: 22 50 61 74 74 65 72 6e 22 20 4d 65 6d 62 65 72  "Pattern" Member
9280: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  s..            p
9290: 72 69 76 61 74 65 20 62 6f 6f 6c 20 64 69 73 70  rivate bool disp
92a0: 6f 73 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 20  osed;..         
92b0: 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64 20     private void 
92c0: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 20  CheckDisposed() 
92d0: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
92e0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
92f0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
9300: 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20  !disposed)..    
9310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9320: 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20  return;....     
9330: 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
9340: 20 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70 6f   new ObjectDispo
9350: 73 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20  sedException(.. 
9360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9370: 20 20 20 74 79 70 65 6f 66 28 4d 6f 63 6b 52 65     typeof(MockRe
9380: 67 69 73 74 72 79 29 2e 4e 61 6d 65 29 3b 0d 0a  gistry).Name);..
9390: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
93a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 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 2f 2f  ////////////////
93e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
9400: 70 72 69 76 61 74 65 20 2f 2a 20 70 72 6f 74 65  private /* prote
9410: 63 74 65 64 20 76 69 72 74 75 61 6c 20 2a 2f 20  cted virtual */ 
9420: 76 6f 69 64 20 44 69 73 70 6f 73 65 28 0d 0a 20  void Dispose(.. 
9430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
9440: 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 0d 0a 20  ool disposing.. 
9450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
9460: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
9470: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9480: 20 69 66 20 28 21 64 69 73 70 6f 73 65 64 29 0d   if (!disposed).
9490: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
94a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
94b0: 20 20 20 20 20 20 20 20 69 66 20 28 64 69 73 70          if (disp
94c0: 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20  osing)..        
94d0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
94e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
94f0: 20 20 20 20 20 20 20 2f 2f 2f 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 0d 0a 20 20 20  ///////////..   
9520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9530: 20 20 20 20 20 2f 2f 20 64 69 73 70 6f 73 65 20       // dispose 
9540: 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65  managed resource
9550: 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20  s here.....     
9560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9570: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
9580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9590: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
95a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
95b0: 20 20 20 69 66 20 28 63 6c 61 73 73 65 73 52 6f     if (classesRo
95c0: 6f 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ot != null)..   
95d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
95e0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
95f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9600: 20 20 20 20 63 6c 61 73 73 65 73 52 6f 6f 74 2e      classesRoot.
9610: 43 6c 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20 20  Close();..      
9620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9630: 20 20 20 20 20 20 63 6c 61 73 73 65 73 52 6f 6f        classesRoo
9640: 74 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  t = null;..     
9650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9660: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
9670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9680: 69 66 20 28 63 75 72 72 65 6e 74 43 6f 6e 66 69  if (currentConfi
9690: 67 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  g != null)..    
96a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
96b0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
96c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
96d0: 20 20 20 63 75 72 72 65 6e 74 43 6f 6e 66 69 67     currentConfig
96e0: 2e 43 6c 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20  .Close();..     
96f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9700: 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 43 6f         currentCo
9710: 6e 66 69 67 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20  nfig = null;..  
9720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9730: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
9740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9750: 20 20 20 69 66 20 28 63 75 72 72 65 6e 74 55 73     if (currentUs
9760: 65 72 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  er != null)..   
9770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9780: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
97a0: 20 20 20 20 63 75 72 72 65 6e 74 55 73 65 72 2e      currentUser.
97b0: 43 6c 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20 20  Close();..      
97c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
97d0: 20 20 20 20 20 20 63 75 72 72 65 6e 74 55 73 65        currentUse
97e0: 72 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  r = null;..     
97f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9800: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
9810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9820: 69 66 20 28 64 79 6e 44 61 74 61 20 21 3d 20 6e  if (dynData != n
9830: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
9840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
9850: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9860: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 79 6e               dyn
9870: 44 61 74 61 2e 43 6c 6f 73 65 28 29 3b 0d 0a 20  Data.Close();.. 
9880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9890: 20 20 20 20 20 20 20 20 20 20 20 64 79 6e 44 61             dynDa
98a0: 74 61 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  ta = null;..    
98b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
98c0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
98d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
98e0: 20 69 66 20 28 6c 6f 63 61 6c 4d 61 63 68 69 6e   if (localMachin
98f0: 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
9900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9910: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
9920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9930: 20 20 20 6c 6f 63 61 6c 4d 61 63 68 69 6e 65 2e     localMachine.
9940: 43 6c 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20 20  Close();..      
9950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9960: 20 20 20 20 20 20 6c 6f 63 61 6c 4d 61 63 68 69        localMachi
9970: 6e 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  ne = null;..    
9980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9990: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
99a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
99b0: 20 69 66 20 28 70 65 72 66 6f 72 6d 61 6e 63 65   if (performance
99c0: 44 61 74 61 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  Data != null).. 
99d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
99e0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
99f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9a00: 20 20 20 20 20 20 70 65 72 66 6f 72 6d 61 6e 63        performanc
9a10: 65 44 61 74 61 2e 43 6c 6f 73 65 28 29 3b 0d 0a  eData.Close();..
9a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9a30: 20 20 20 20 20 20 20 20 20 20 20 20 70 65 72 66              perf
9a40: 6f 72 6d 61 6e 63 65 44 61 74 61 20 3d 20 6e 75  ormanceData = nu
9a50: 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
9a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
9a70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9a80: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 75 73            if (us
9a90: 65 72 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ers != null)..  
9aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ab0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ad0: 20 20 20 20 20 75 73 65 72 73 2e 43 6c 6f 73 65       users.Close
9ae0: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
9af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9b00: 20 75 73 65 72 73 20 3d 20 6e 75 6c 6c 3b 0d 0a   users = null;..
9b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9b20: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
9b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
9b40: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
9b50: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
9b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
9b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9b90: 20 20 20 20 2f 2f 20 72 65 6c 65 61 73 65 20 75      // release u
9ba0: 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63  nmanaged resourc
9bb0: 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20  es here.....    
9bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9bf0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
9c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
9c10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9c20: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54        // NOTE: T
9c30: 68 69 73 20 6f 62 6a 65 63 74 20 69 73 20 6e 6f  his object is no
9c40: 77 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20  w disposed...   
9c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c60: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
9c70: 20 20 20 20 20 20 20 20 20 64 69 73 70 6f 73 65           dispose
9c80: 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  d = true;..     
9c90: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
9ca0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
9cb0: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
9cc0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
9cd0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
9ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d10: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
9d20: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44        #region ID
9d30: 69 73 70 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72  isposable Member
9d40: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  s..            p
9d50: 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f  ublic void Dispo
9d60: 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  se()..          
9d70: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
9d80: 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75       Dispose(tru
9d90: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
9da0: 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73       GC.Suppress
9db0: 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d  Finalize(this);.
9dc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
9dd0: 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
9de0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
9df0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
9e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
9e40: 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
9e50: 20 44 65 73 74 72 75 63 74 6f 72 0d 0a 20 20 20   Destructor..   
9e60: 20 20 20 20 20 20 20 20 20 7e 4d 6f 63 6b 52 65           ~MockRe
9e70: 67 69 73 74 72 79 28 29 0d 0a 20 20 20 20 20 20  gistry()..      
9e80: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9e90: 20 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65           Dispose
9ea0: 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20  (false);..      
9eb0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
9ec0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
9ed0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
9ee0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
9ef0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
9f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f40: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
9f50: 67 69 6f 6e 20 4d 6f 63 6b 52 65 67 69 73 74 72  gion MockRegistr
9f60: 79 4b 65 79 20 43 6c 61 73 73 0d 0a 20 20 20 20  yKey Class..    
9f70: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61      internal sea
9f80: 6c 65 64 20 63 6c 61 73 73 20 4d 6f 63 6b 52 65  led class MockRe
9f90: 67 69 73 74 72 79 4b 65 79 20 3a 20 49 44 69 73  gistryKey : IDis
9fa0: 70 6f 73 61 62 6c 65 0d 0a 20 20 20 20 20 20 20  posable..       
9fb0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
9fc0: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
9fd0: 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
9fe0: 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
9ff0: 65 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65  e MockRegistryKe
a000: 79 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y()..           
a010: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
a020: 20 20 20 20 77 68 61 74 49 66 20 3d 20 74 72 75      whatIf = tru
a030: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
a040: 20 20 20 20 72 65 61 64 4f 6e 6c 79 20 3d 20 74      readOnly = t
a050: 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
a060: 20 20 20 20 20 20 73 61 66 65 20 3d 20 74 72 75        safe = tru
a070: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
a080: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
a090: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
a0a0: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
a0b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a0c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a0d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a0e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
a0f0: 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
a100: 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74  ion Public Const
a110: 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20  ructors..       
a120: 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f 63 6b       public Mock
a130: 52 65 67 69 73 74 72 79 4b 65 79 28 0d 0a 20 20  RegistryKey(..  
a140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 65                Re
a150: 67 69 73 74 72 79 4b 65 79 20 6b 65 79 0d 0a 20  gistryKey key.. 
a160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
a170: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a180: 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20    : this()..    
a190: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
a1a0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
a1b0: 6b 65 79 20 3d 20 6b 65 79 3b 0d 0a 20 20 20 20  key = key;..    
a1c0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
a1d0: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
a1e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a1f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
a220: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
a230: 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b  ic MockRegistryK
a240: 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ey(..           
a250: 20 20 20 20 20 52 65 67 69 73 74 72 79 4b 65 79       RegistryKey
a260: 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20 20   key,..         
a270: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 75         string su
a280: 62 4b 65 79 4e 61 6d 65 0d 0a 20 20 20 20 20 20  bKeyName..      
a290: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
a2a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74               : t
a2b0: 68 69 73 28 6b 65 79 29 0d 0a 20 20 20 20 20 20  his(key)..      
a2c0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
a2d0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 75           this.su
a2e0: 62 4b 65 79 4e 61 6d 65 20 3d 20 73 75 62 4b 65  bKeyName = subKe
a2f0: 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  yName;..        
a300: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
a310: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
a320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a350: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
a360: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d          public M
a370: 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 28 0d  ockRegistryKey(.
a380: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a390: 20 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79   RegistryKey key
a3a0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
a3b0: 20 20 20 73 74 72 69 6e 67 20 73 75 62 4b 65 79     string subKey
a3c0: 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  Name,..         
a3d0: 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61 74         bool what
a3e0: 49 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  If..            
a3f0: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
a400: 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 6b 65         : this(ke
a410: 79 2c 20 73 75 62 4b 65 79 4e 61 6d 65 29 0d 0a  y, subKeyName)..
a420: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
a430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
a440: 68 69 73 2e 77 68 61 74 49 66 20 3d 20 77 68 61  his.whatIf = wha
a450: 74 49 66 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf;..          
a460: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
a470: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
a480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a4b0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
a4c0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f 63        public Moc
a4d0: 6b 52 65 67 69 73 74 72 79 4b 65 79 28 0d 0a 20  kRegistryKey(.. 
a4e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52                 R
a4f0: 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79 2c 0d  egistryKey key,.
a500: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a510: 20 73 74 72 69 6e 67 20 73 75 62 4b 65 79 4e 61   string subKeyNa
a520: 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
a530: 20 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66       bool whatIf
a540: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
a550: 20 20 20 62 6f 6f 6c 20 72 65 61 64 4f 6e 6c 79     bool readOnly
a560: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a570: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
a580: 20 20 20 20 20 3a 20 74 68 69 73 28 6b 65 79 2c       : this(key,
a590: 20 73 75 62 4b 65 79 4e 61 6d 65 2c 20 77 68 61   subKeyName, wha
a5a0: 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf)..          
a5b0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
a5c0: 20 20 20 20 20 74 68 69 73 2e 72 65 61 64 4f 6e       this.readOn
a5d0: 6c 79 20 3d 20 72 65 61 64 4f 6e 6c 79 3b 0d 0a  ly = readOnly;..
a5e0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
a5f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
a600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a640: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
a650: 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73  public MockRegis
a660: 74 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20 20  tryKey(..       
a670: 20 20 20 20 20 20 20 20 20 52 65 67 69 73 74 72           Registr
a680: 79 4b 65 79 20 6b 65 79 2c 0d 0a 20 20 20 20 20  yKey key,..     
a690: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
a6a0: 67 20 73 75 62 4b 65 79 4e 61 6d 65 2c 0d 0a 20  g subKeyName,.. 
a6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
a6c0: 6f 6f 6c 20 77 68 61 74 49 66 2c 0d 0a 20 20 20  ool whatIf,..   
a6d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
a6e0: 6c 20 72 65 61 64 4f 6e 6c 79 2c 0d 0a 20 20 20  l readOnly,..   
a6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
a700: 6c 20 73 61 66 65 0d 0a 20 20 20 20 20 20 20 20  l safe..        
a710: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
a720: 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69             : thi
a730: 73 28 6b 65 79 2c 20 73 75 62 4b 65 79 4e 61 6d  s(key, subKeyNam
a740: 65 2c 20 77 68 61 74 49 66 2c 20 72 65 61 64 4f  e, whatIf, readO
a750: 6e 6c 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20  nly)..          
a760: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
a770: 20 20 20 20 20 74 68 69 73 2e 73 61 66 65 20 3d       this.safe =
a780: 20 73 61 66 65 3b 0d 0a 20 20 20 20 20 20 20 20   safe;..        
a790: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
a7a0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
a7b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a7c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a7d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a7e0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
a7f0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d          public M
a800: 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 28 0d  ockRegistryKey(.
a810: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a820: 20 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79   RegistryKey key
a830: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
a840: 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66 0d 0a     bool whatIf..
a850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a860: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
a870: 20 20 20 3a 20 74 68 69 73 28 6b 65 79 2c 20 6e     : this(key, n
a880: 75 6c 6c 2c 20 77 68 61 74 49 66 29 0d 0a 20 20  ull, whatIf)..  
a890: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
a8a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
a8b0: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
a8c0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
a8d0: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
a8e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a8f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
a920: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
a930: 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79  lic MockRegistry
a940: 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Key(..          
a950: 20 20 20 20 20 20 52 65 67 69 73 74 72 79 4b 65        RegistryKe
a960: 79 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20  y key,..        
a970: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61          bool wha
a980: 74 49 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf,..          
a990: 20 20 20 20 20 20 62 6f 6f 6c 20 72 65 61 64 4f        bool readO
a9a0: 6e 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nly..           
a9b0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
a9c0: 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 6b          : this(k
a9d0: 65 79 2c 20 6e 75 6c 6c 2c 20 77 68 61 74 49 66  ey, null, whatIf
a9e0: 2c 20 72 65 61 64 4f 6e 6c 79 29 0d 0a 20 20 20  , readOnly)..   
a9f0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
aa00: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
aa10: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
aa20: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
aa30: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
aa40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aa50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aa60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aa70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
aa80: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
aa90: 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b  ic MockRegistryK
aaa0: 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ey(..           
aab0: 20 20 20 20 20 52 65 67 69 73 74 72 79 4b 65 79       RegistryKey
aac0: 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20 20   key,..         
aad0: 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61 74         bool what
aae0: 49 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  If,..           
aaf0: 20 20 20 20 20 62 6f 6f 6c 20 72 65 61 64 4f 6e       bool readOn
ab00: 6c 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ly,..           
ab10: 20 20 20 20 20 62 6f 6f 6c 20 73 61 66 65 0d 0a       bool safe..
ab20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ab30: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
ab40: 20 20 20 3a 20 74 68 69 73 28 6b 65 79 2c 20 6e     : this(key, n
ab50: 75 6c 6c 2c 20 77 68 61 74 49 66 2c 20 72 65 61  ull, whatIf, rea
ab60: 64 4f 6e 6c 79 2c 20 73 61 66 65 29 0d 0a 20 20  dOnly, safe)..  
ab70: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
ab80: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
ab90: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
aba0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
abb0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
abc0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
abd0: 20 20 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 2f  ////////////////
ac10: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
ac20: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
ac30: 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  lic Methods..   
ac40: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
ac50: 76 6f 69 64 20 43 6c 6f 73 65 28 29 0d 0a 20 20  void Close()..  
ac60: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
ac70: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
ac80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ac90: 20 2f 2f 20 4e 4f 54 45 3a 20 4e 6f 20 64 69 73   // NOTE: No dis
aca0: 70 6f 73 65 64 20 63 68 65 63 6b 20 68 65 72 65  posed check here
acb0: 20 62 65 63 61 75 73 65 20 63 61 6c 6c 69 6e 67   because calling
acc0: 20 74 68 69 73 20 6d 65 74 68 6f 64 0d 0a 20 20   this method..  
acd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
ace0: 20 20 20 20 20 20 20 73 68 6f 75 6c 64 20 62 65         should be
acf0: 20 6a 75 73 74 20 6c 69 6b 65 20 63 61 6c 6c 69   just like calli
ad00: 6e 67 20 44 69 73 70 6f 73 65 2e 0d 0a 20 20 20  ng Dispose...   
ad10: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
ad20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ad30: 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d   Dispose(true);.
ad40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
ad50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
ad60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ad70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ad80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ad90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ada0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
adb0: 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73   public void Dis
adc0: 61 62 6c 65 43 6c 6f 73 65 28 29 0d 0a 20 20 20  ableClose()..   
add0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
ade0: 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
adf0: 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a  kDisposed();....
ae00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ae10: 6e 6f 43 6c 6f 73 65 20 3d 20 74 72 75 65 3b 0d  noClose = true;.
ae20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
ae30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
ae40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae80: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
ae90: 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69   public MockRegi
aea0: 73 74 72 79 4b 65 79 20 43 6c 6f 6e 65 28 0d 0a  stryKey Clone(..
aeb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aec0: 62 6f 6f 6c 20 77 68 61 74 49 66 2c 0d 0a 20 20  bool whatIf,..  
aed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
aee0: 6f 6c 20 72 65 61 64 4f 6e 6c 79 2c 0d 0a 20 20  ol readOnly,..  
aef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
af00: 6f 6c 20 73 61 66 65 0d 0a 20 20 20 20 20 20 20  ol safe..       
af10: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
af20: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
af30: 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
af40: 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
af50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
af60: 65 74 75 72 6e 20 6e 65 77 20 4d 6f 63 6b 52 65  eturn new MockRe
af70: 67 69 73 74 72 79 4b 65 79 28 0d 0a 20 20 20 20  gistryKey(..    
af80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
af90: 6b 65 79 2c 20 74 68 69 73 2e 77 68 61 74 49 66  key, this.whatIf
afa0: 20 7c 7c 20 77 68 61 74 49 66 2c 20 74 68 69 73   || whatIf, this
afb0: 2e 72 65 61 64 4f 6e 6c 79 20 7c 7c 20 72 65 61  .readOnly || rea
afc0: 64 4f 6e 6c 79 2c 0d 0a 20 20 20 20 20 20 20 20  dOnly,..        
afd0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
afe0: 2e 73 61 66 65 20 7c 7c 20 73 61 66 65 29 3b 0d  .safe || safe);.
aff0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
b000: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
b010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b050: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
b060: 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69   public MockRegi
b070: 73 74 72 79 4b 65 79 20 43 72 65 61 74 65 53 75  stryKey CreateSu
b080: 62 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20  bKey(..         
b090: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 75         string su
b0a0: 62 4b 65 79 4e 61 6d 65 0d 0a 20 20 20 20 20 20  bKeyName..      
b0b0: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
b0c0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
b0d0: 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
b0e0: 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20  kDisposed();..  
b0f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68                Ch
b100: 65 63 6b 52 65 61 64 4f 6e 6c 79 28 29 3b 0d 0a  eckReadOnly();..
b110: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b120: 20 20 69 66 20 28 6b 65 79 20 3d 3d 20 6e 75 6c    if (key == nul
b130: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
b140: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
b150: 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
b160: 20 20 20 20 20 20 20 20 69 66 20 28 77 68 61 74          if (what
b170: 49 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  If)..           
b180: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
b190: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
b1a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b1b0: 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20 41 74 74      // HACK: Att
b1c0: 65 6d 70 74 20 74 6f 20 6f 70 65 6e 20 74 68 65  empt to open the
b1d0: 20 73 70 65 63 69 66 69 65 64 20 73 75 62 2d 6b   specified sub-k
b1e0: 65 79 2e 20 20 49 66 20 74 68 69 73 0d 0a 20 20  ey.  If this..  
b1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b200: 20 20 2f 2f 20 20 20 20 20 20 20 66 61 69 6c 73    //       fails
b210: 2c 20 77 65 27 6c 6c 20 73 69 6d 70 6c 79 20 72  , we'll simply r
b220: 65 74 75 72 6e 20 74 68 65 20 77 72 61 70 70 65  eturn the wrappe
b230: 64 20 72 6f 6f 74 20 6b 65 79 0d 0a 20 20 20 20  d root key..    
b240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b250: 2f 2f 20 20 20 20 20 20 20 69 74 73 65 6c 66 20  //       itself 
b260: 73 69 6e 63 65 20 6e 6f 20 77 72 69 74 65 73 20  since no writes 
b270: 61 72 65 20 61 6c 6c 6f 77 65 64 20 69 6e 20 22  are allowed in "
b280: 77 68 61 74 2d 69 66 22 0d 0a 20 20 20 20 20 20  what-if"..      
b290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
b2a0: 20 20 20 20 20 20 20 6d 6f 64 65 20 61 6e 79 68         mode anyh
b2b0: 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ow...           
b2c0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
b2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b2e0: 20 52 65 67 69 73 74 72 79 4b 65 79 20 73 75 62   RegistryKey sub
b2f0: 4b 65 79 20 3d 20 6b 65 79 2e 4f 70 65 6e 53 75  Key = key.OpenSu
b300: 62 4b 65 79 28 73 75 62 4b 65 79 4e 61 6d 65 29  bKey(subKeyName)
b310: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
b320: 20 20 20 20 20 20 20 20 20 69 66 20 28 73 75 62           if (sub
b330: 4b 65 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  Key != null)..  
b340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b350: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
b360: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
b370: 75 72 6e 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69  urn new MockRegi
b380: 73 74 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20  stryKey(..      
b390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b3a0: 20 20 20 20 20 20 73 75 62 4b 65 79 2c 20 77 68        subKey, wh
b3b0: 61 74 49 66 2c 20 72 65 61 64 4f 6e 6c 79 2c 20  atIf, readOnly, 
b3c0: 73 61 66 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  safe);..        
b3d0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
b3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b3f0: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
b400: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
b410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b420: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
b430: 65 77 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b  ew MockRegistryK
b440: 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ey(..           
b450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b460: 20 6b 65 79 2c 20 73 75 62 4b 65 79 4e 61 6d 65   key, subKeyName
b470: 2c 20 77 68 61 74 49 66 2c 20 72 65 61 64 4f 6e  , whatIf, readOn
b480: 6c 79 2c 20 73 61 66 65 29 3b 0d 0a 20 20 20 20  ly, safe);..    
b490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b4a0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
b4b0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
b4c0: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
b4d0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
b4e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b4f0: 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 4d 6f     return new Mo
b500: 63 6b 52 65 67 69 73 74 72 79 4b 65 79 28 0d 0a  ckRegistryKey(..
b510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b520: 20 20 20 20 20 20 20 20 6b 65 79 2e 43 72 65 61          key.Crea
b530: 74 65 53 75 62 4b 65 79 28 73 75 62 4b 65 79 4e  teSubKey(subKeyN
b540: 61 6d 65 29 2c 20 77 68 61 74 49 66 2c 20 72 65  ame), whatIf, re
b550: 61 64 4f 6e 6c 79 2c 20 73 61 66 65 29 3b 0d 0a  adOnly, safe);..
b560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b570: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
b580: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
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 2f 2f 2f 2f 2f  ////////////////
b5d0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
b5e0: 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44     public void D
b5f0: 65 6c 65 74 65 53 75 62 4b 65 79 28 0d 0a 20 20  eleteSubKey(..  
b600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
b610: 72 69 6e 67 20 73 75 62 4b 65 79 4e 61 6d 65 2c  ring subKeyName,
b620: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b630: 20 20 62 6f 6f 6c 20 74 68 72 6f 77 4f 6e 4d 69    bool throwOnMi
b640: 73 73 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20  ssing..         
b650: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
b660: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
b670: 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69           CheckDi
b680: 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20  sposed();..     
b690: 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
b6a0: 52 65 61 64 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20  ReadOnly();.... 
b6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
b6c0: 66 20 28 6b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d  f (key == null).
b6d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b6e0: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a       return;....
b6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b700: 69 66 20 28 21 77 68 61 74 49 66 29 0d 0a 20 20  if (!whatIf)..  
b710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b720: 20 20 6b 65 79 2e 44 65 6c 65 74 65 53 75 62 4b    key.DeleteSubK
b730: 65 79 28 73 75 62 4b 65 79 4e 61 6d 65 2c 20 74  ey(subKeyName, t
b740: 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67 29 3b 0d  hrowOnMissing);.
b750: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
b760: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
b770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b7a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b7b0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
b7c0: 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44 65 6c   public void Del
b7d0: 65 74 65 53 75 62 4b 65 79 54 72 65 65 28 0d 0a  eteSubKeyTree(..
b7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b7f0: 73 74 72 69 6e 67 20 73 75 62 4b 65 79 4e 61 6d  string subKeyNam
b800: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
b810: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
b820: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
b830: 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
b840: 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ed();..         
b850: 20 20 20 20 20 20 20 43 68 65 63 6b 52 65 61 64         CheckRead
b860: 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only();....     
b870: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6b             if (k
b880: 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ey == null)..   
b890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b8a0: 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
b8b0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
b8c0: 21 77 68 61 74 49 66 29 0d 0a 20 20 20 20 20 20  !whatIf)..      
b8d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65                ke
b8e0: 79 2e 44 65 6c 65 74 65 53 75 62 4b 65 79 54 72  y.DeleteSubKeyTr
b8f0: 65 65 28 73 75 62 4b 65 79 4e 61 6d 65 29 3b 0d  ee(subKeyName);.
b900: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
b910: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b960: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
b970: 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44 65 6c   public void Del
b980: 65 74 65 56 61 6c 75 65 28 0d 0a 20 20 20 20 20  eteValue(..     
b990: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
b9a0: 67 20 6e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20  g name,..       
b9b0: 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 74 68           bool th
b9c0: 72 6f 77 4f 6e 4d 69 73 73 69 6e 67 0d 0a 20 20  rowOnMissing..  
b9d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
b9e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
b9f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ba00: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
ba10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ba20: 20 20 43 68 65 63 6b 52 65 61 64 4f 6e 6c 79 28    CheckReadOnly(
ba30: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
ba40: 20 20 20 20 20 20 69 66 20 28 6b 65 79 20 3d 3d        if (key ==
ba50: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
ba60: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
ba70: 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  rn;....         
ba80: 20 20 20 20 20 20 20 69 66 20 28 21 77 68 61 74         if (!what
ba90: 49 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  If)..           
baa0: 20 20 20 20 20 20 20 20 20 6b 65 79 2e 44 65 6c           key.Del
bab0: 65 74 65 56 61 6c 75 65 28 6e 61 6d 65 2c 20 74  eteValue(name, t
bac0: 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67 29 3b 0d  hrowOnMissing);.
bad0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
bae0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
baf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb30: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
bb40: 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 5b 5d   public string[]
bb50: 20 47 65 74 53 75 62 4b 65 79 4e 61 6d 65 73 28   GetSubKeyNames(
bb60: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
bb70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bb80: 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28    CheckDisposed(
bb90: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
bba0: 20 20 20 20 20 20 69 66 20 28 6b 65 79 20 3d 3d        if (key ==
bbb0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
bbc0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
bbd0: 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20  rn null;....    
bbe0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
bbf0: 72 6e 20 6b 65 79 2e 47 65 74 53 75 62 4b 65 79  rn key.GetSubKey
bc00: 4e 61 6d 65 73 28 29 3b 0d 0a 20 20 20 20 20 20  Names();..      
bc10: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
bc20: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
bc30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
bc70: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
bc80: 20 6f 62 6a 65 63 74 20 47 65 74 56 61 6c 75 65   object GetValue
bc90: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
bca0: 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 0d     string name,.
bcb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bcc0: 20 6f 62 6a 65 63 74 20 64 65 66 61 75 6c 74 56   object defaultV
bcd0: 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20  alue..          
bce0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
bcf0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
bd00: 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
bd10: 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  posed();....    
bd20: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
bd30: 6b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  key == null)..  
bd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd50: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
bd60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bd70: 20 20 72 65 74 75 72 6e 20 6b 65 79 2e 47 65 74    return key.Get
bd80: 56 61 6c 75 65 28 6e 61 6d 65 2c 20 64 65 66 61  Value(name, defa
bd90: 75 6c 74 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20  ultValue);..    
bda0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
bdb0: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
bdc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bdd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bde0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bdf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
be00: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
be10: 69 63 20 73 74 72 69 6e 67 5b 5d 20 47 65 74 56  ic string[] GetV
be20: 61 6c 75 65 4e 61 6d 65 73 28 29 0d 0a 20 20 20  alueNames()..   
be30: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
be40: 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
be50: 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a  kDisposed();....
be60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
be70: 69 66 20 28 6b 65 79 20 3d 3d 20 6e 75 6c 6c 29  if (key == null)
be80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
be90: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
bea0: 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
beb0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6b 65 79        return key
bec0: 2e 47 65 74 56 61 6c 75 65 4e 61 6d 65 73 28 29  .GetValueNames()
bed0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
bee0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
bef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf30: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
bf40: 20 20 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65     public MockRe
bf50: 67 69 73 74 72 79 4b 65 79 20 4f 70 65 6e 53 75  gistryKey OpenSu
bf60: 62 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20  bKey(..         
bf70: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 75         string su
bf80: 62 4b 65 79 4e 61 6d 65 0d 0a 20 20 20 20 20 20  bKeyName..      
bf90: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
bfa0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
bfb0: 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
bfc0: 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a  kDisposed();....
bfd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bfe0: 72 65 74 75 72 6e 20 4f 70 65 6e 53 75 62 4b 65  return OpenSubKe
bff0: 79 28 73 75 62 4b 65 79 4e 61 6d 65 2c 20 66 61  y(subKeyName, fa
c000: 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  lse);..         
c010: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
c020: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
c030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c060: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
c070: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f         public Mo
c080: 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 4f 70  ckRegistryKey Op
c090: 65 6e 53 75 62 4b 65 79 28 0d 0a 20 20 20 20 20  enSubKey(..     
c0a0: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
c0b0: 67 20 73 75 62 4b 65 79 4e 61 6d 65 2c 0d 0a 20  g subKeyName,.. 
c0c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
c0d0: 6f 6f 6c 20 77 72 69 74 61 62 6c 65 0d 0a 20 20  ool writable..  
c0e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
c0f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
c100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c110: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
c120: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c130: 20 20 20 20 69 66 20 28 77 72 69 74 61 62 6c 65      if (writable
c140: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
c150: 20 20 20 20 20 20 20 43 68 65 63 6b 52 65 61 64         CheckRead
c160: 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only();....     
c170: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6b             if (k
c180: 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ey == null)..   
c190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c1a0: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
c1b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c1c0: 20 52 65 67 69 73 74 72 79 4b 65 79 20 73 75 62   RegistryKey sub
c1d0: 4b 65 79 20 3d 20 6b 65 79 2e 4f 70 65 6e 53 75  Key = key.OpenSu
c1e0: 62 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20  bKey(..         
c1f0: 20 20 20 20 20 20 20 20 20 20 20 73 75 62 4b 65             subKe
c200: 79 4e 61 6d 65 2c 20 77 68 61 74 49 66 20 3f 20  yName, whatIf ? 
c210: 66 61 6c 73 65 20 3a 20 77 72 69 74 61 62 6c 65  false : writable
c220: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
c230: 20 20 20 20 20 20 69 66 20 28 73 75 62 4b 65 79        if (subKey
c240: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
c250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
c260: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
c270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
c280: 65 74 75 72 6e 20 6e 65 77 20 4d 6f 63 6b 52 65  eturn new MockRe
c290: 67 69 73 74 72 79 4b 65 79 28 73 75 62 4b 65 79  gistryKey(subKey
c2a0: 2c 20 77 68 61 74 49 66 2c 20 72 65 61 64 4f 6e  , whatIf, readOn
c2b0: 6c 79 2c 20 73 61 66 65 29 3b 0d 0a 20 20 20 20  ly, safe);..    
c2c0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
c2d0: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
c2e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c2f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
c320: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
c330: 69 63 20 76 6f 69 64 20 53 65 74 56 61 6c 75 65  ic void SetValue
c340: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
c350: 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 0d     string name,.
c360: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c370: 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 0d 0a 20   object value.. 
c380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
c390: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
c3a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c3b0: 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
c3c0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
c3d0: 20 20 20 43 68 65 63 6b 52 65 61 64 4f 6e 6c 79     CheckReadOnly
c3e0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
c3f0: 20 20 20 20 20 20 20 69 66 20 28 6b 65 79 20 3d         if (key =
c400: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
c410: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
c420: 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  urn;....        
c430: 20 20 20 20 20 20 20 20 69 66 20 28 21 77 68 61          if (!wha
c440: 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf)..          
c450: 20 20 20 20 20 20 20 20 20 20 6b 65 79 2e 53 65            key.Se
c460: 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20 76 61 6c  tValue(name, val
c470: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
c480: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
c490: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
c4a0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
c4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c4c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c4d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c4e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
c4f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72  ..            #r
c500: 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f  egion Public Pro
c510: 70 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20 20  perties..       
c520: 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69       public stri
c530: 6e 67 20 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20  ng Name..       
c540: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
c550: 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20          get..   
c560: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
c570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c580: 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
c590: 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  d();....        
c5a0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
c5b0: 6b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  key == null)..  
c5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c5d0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
c5e0: 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
c5f0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
c600: 20 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f   !String.IsNullO
c610: 72 45 6d 70 74 79 28 73 75 62 4b 65 79 4e 61 6d  rEmpty(subKeyNam
c620: 65 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20  e) ?..          
c630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 65                Re
c640: 67 69 73 74 72 79 48 65 6c 70 65 72 2e 4a 6f 69  gistryHelper.Joi
c650: 6e 4b 65 79 4e 61 6d 65 73 28 6b 65 79 2e 4e 61  nKeyNames(key.Na
c660: 6d 65 2c 20 73 75 62 4b 65 79 4e 61 6d 65 29 20  me, subKeyName) 
c670: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
c680: 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 2e 4e             key.N
c690: 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
c6a0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
c6b0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
c6c0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
c6d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
c710: 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
c720: 20 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79   RegistryKey key
c730: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
c740: 75 62 6c 69 63 20 52 65 67 69 73 74 72 79 4b 65  ublic RegistryKe
c750: 79 20 4b 65 79 0d 0a 20 20 20 20 20 20 20 20 20  y Key..         
c760: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
c770: 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63        get { Chec
c780: 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 43 68 65  kDisposed(); Che
c790: 63 6b 53 61 66 65 28 29 3b 20 72 65 74 75 72 6e  ckSafe(); return
c7a0: 20 6b 65 79 3b 20 7d 0d 0a 20 20 20 20 20 20 20   key; }..       
c7b0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
c7c0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
c7d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c7e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c7f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
c810: 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
c820: 20 73 74 72 69 6e 67 20 73 75 62 4b 65 79 4e 61   string subKeyNa
c830: 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
c840: 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 53   public string S
c850: 75 62 4b 65 79 4e 61 6d 65 0d 0a 20 20 20 20 20  ubKeyName..     
c860: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
c870: 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
c880: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
c890: 20 72 65 74 75 72 6e 20 73 75 62 4b 65 79 4e 61   return subKeyNa
c8a0: 6d 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  me; }..         
c8b0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
c8c0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
c8d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c8e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c8f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c900: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
c910: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62         private b
c920: 6f 6f 6c 20 77 68 61 74 49 66 3b 0d 0a 20 20 20  ool whatIf;..   
c930: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
c940: 62 6f 6f 6c 20 57 68 61 74 49 66 0d 0a 20 20 20  bool WhatIf..   
c950: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
c960: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
c970: 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
c980: 29 3b 20 72 65 74 75 72 6e 20 77 68 61 74 49 66  ); return whatIf
c990: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
c9a0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
c9b0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
c9c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9f0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
ca00: 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f       private boo
ca10: 6c 20 72 65 61 64 4f 6e 6c 79 3b 0d 0a 20 20 20  l readOnly;..   
ca20: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
ca30: 62 6f 6f 6c 20 52 65 61 64 4f 6e 6c 79 0d 0a 20  bool ReadOnly.. 
ca40: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
ca50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
ca60: 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65  t { CheckDispose
ca70: 64 28 29 3b 20 72 65 74 75 72 6e 20 72 65 61 64  d(); return read
ca80: 4f 6e 6c 79 3b 20 7d 0d 0a 20 20 20 20 20 20 20  Only; }..       
ca90: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
caa0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
cab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
caf0: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
cb00: 62 6f 6f 6c 20 73 61 66 65 3b 0d 0a 20 20 20 20  bool safe;..    
cb10: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
cb20: 6f 6f 6c 20 53 61 66 65 0d 0a 20 20 20 20 20 20  ool Safe..      
cb30: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
cb40: 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 43           get { C
cb50: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
cb60: 72 65 74 75 72 6e 20 73 61 66 65 3b 20 7d 0d 0a  return safe; }..
cb70: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
cb80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
cb90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cbb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cbc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cbd0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
cbe0: 70 75 62 6c 69 63 20 62 6f 6f 6c 20 6e 6f 43 6c  public bool noCl
cbf0: 6f 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ose;..          
cc00: 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f    public bool No
cc10: 43 6c 6f 73 65 0d 0a 20 20 20 20 20 20 20 20 20  Close..         
cc20: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
cc30: 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63        get { Chec
cc40: 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74  kDisposed(); ret
cc50: 75 72 6e 20 6e 6f 43 6c 6f 73 65 3b 20 7d 0d 0a  urn noClose; }..
cc60: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
cc70: 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
cc80: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
cc90: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
cca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ccb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ccc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ccd0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
cce0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
ccf0: 50 72 69 76 61 74 65 20 4d 65 74 68 6f 64 73 0d  Private Methods.
cd00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
cd10: 76 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 52  vate void CheckR
cd20: 65 61 64 4f 6e 6c 79 28 29 0d 0a 20 20 20 20 20  eadOnly()..     
cd30: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
cd40: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
cd50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
cd60: 20 4e 4f 54 45 3a 20 49 6e 20 22 72 65 61 64 2d   NOTE: In "read-
cd70: 6f 6e 6c 79 22 20 6d 6f 64 65 2c 20 77 65 20 64  only" mode, we d
cd80: 69 73 61 6c 6c 6f 77 20 61 6c 6c 20 77 72 69 74  isallow all writ
cd90: 65 20 61 63 63 65 73 73 2e 0d 0a 20 20 20 20 20  e access...     
cda0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
cdb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
cdc0: 66 20 28 21 72 65 61 64 4f 6e 6c 79 29 0d 0a 20  f (!readOnly).. 
cdd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cde0: 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20     return;....  
cdf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
ce00: 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f  row new InvalidO
ce10: 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f  perationExceptio
ce20: 6e 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  n();..          
ce30: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
ce40: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
ce50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce80: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
ce90: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 76 6f        private vo
cea0: 69 64 20 43 68 65 63 6b 53 61 66 65 28 29 0d 0a  id CheckSafe()..
ceb0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
cec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
ced0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
cee0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 6e 20 22     // NOTE: In "
cef0: 73 61 66 65 22 20 6d 6f 64 65 2c 20 77 65 20 64  safe" mode, we d
cf00: 69 73 61 6c 6c 6f 77 20 61 6c 6c 20 64 69 72 65  isallow all dire
cf10: 63 74 20 61 63 63 65 73 73 20 74 6f 20 74 68 65  ct access to the
cf20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cf30: 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 6e 74 61    //       conta
cf40: 69 6e 65 64 20 72 65 67 69 73 74 72 79 20 6b 65  ined registry ke
cf50: 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y...            
cf60: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
cf70: 20 20 20 20 20 20 20 20 69 66 20 28 21 73 61 66          if (!saf
cf80: 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
cf90: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
cfa0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
cfb0: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76     throw new Inv
cfc0: 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63  alidOperationExc
cfd0: 65 70 74 69 6f 6e 28 29 3b 0d 0a 20 20 20 20 20  eption();..     
cfe0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
cff0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
d000: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
d010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d050: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
d060: 20 20 20 23 72 65 67 69 6f 6e 20 53 79 73 74 65     #region Syste
d070: 6d 2e 4f 62 6a 65 63 74 20 4f 76 65 72 72 69 64  m.Object Overrid
d080: 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  es..            
d090: 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
d0a0: 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28  string ToString(
d0b0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
d0c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d0d0: 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28    CheckDisposed(
d0e0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
d0f0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69        return thi
d100: 73 2e 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  s.Name;..       
d110: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
d120: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
d130: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
d140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d180: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
d190: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
d1a0: 53 74 61 74 69 63 20 4d 65 74 68 6f 64 73 0d 0a  Static Methods..
d1b0: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
d1c0: 69 63 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 4e  ic static bool N
d1d0: 61 6d 65 45 71 75 61 6c 73 28 0d 0a 20 20 20 20  ameEquals(..    
d1e0: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
d1f0: 6e 67 20 6e 61 6d 65 31 2c 0d 0a 20 20 20 20 20  ng name1,..     
d200: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
d210: 67 20 6e 61 6d 65 32 0d 0a 20 20 20 20 20 20 20  g name2..       
d220: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
d230: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
d240: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
d250: 6e 20 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28  n String.Equals(
d260: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d270: 20 20 20 20 20 20 6e 61 6d 65 31 2c 20 6e 61 6d        name1, nam
d280: 65 32 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61 72  e2, StringCompar
d290: 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f  ison.OrdinalIgno
d2a0: 72 65 43 61 73 65 29 3b 0d 0a 20 20 20 20 20 20  reCase);..      
d2b0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
d2c0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
d2d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d2e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d2f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
d310: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
d320: 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 56 61 6c   static bool Val
d330: 75 65 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20  ueEquals(..     
d340: 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63             objec
d350: 74 20 76 61 6c 75 65 31 2c 0d 0a 20 20 20 20 20  t value1,..     
d360: 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63             objec
d370: 74 20 76 61 6c 75 65 32 0d 0a 20 20 20 20 20 20  t value2..      
d380: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
d390: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
d3a0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
d3b0: 28 76 61 6c 75 65 31 20 3d 3d 20 6e 75 6c 6c 29  (value1 == null)
d3c0: 20 7c 7c 20 28 76 61 6c 75 65 32 20 3d 3d 20 6e   || (value2 == n
d3d0: 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ull))..         
d3e0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
d3f0: 6e 20 28 28 76 61 6c 75 65 31 20 3d 3d 20 6e 75  n ((value1 == nu
d400: 6c 6c 29 20 26 26 20 28 76 61 6c 75 65 32 20 3d  ll) && (value2 =
d410: 3d 20 6e 75 6c 6c 29 29 3b 0d 0a 0d 0a 20 20 20  = null));....   
d420: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
d430: 28 4f 62 6a 65 63 74 2e 52 65 66 65 72 65 6e 63  (Object.Referenc
d440: 65 45 71 75 61 6c 73 28 76 61 6c 75 65 31 2c 20  eEquals(value1, 
d450: 76 61 6c 75 65 32 29 29 0d 0a 20 20 20 20 20 20  value2))..      
d460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
d470: 74 75 72 6e 20 74 72 75 65 3b 0d 0a 0d 0a 20 20  turn true;....  
d480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 79                Ty
d490: 70 65 20 74 79 70 65 31 20 3d 20 76 61 6c 75 65  pe type1 = value
d4a0: 31 2e 47 65 74 54 79 70 65 28 29 3b 0d 0a 20 20  1.GetType();..  
d4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 79                Ty
d4c0: 70 65 20 74 79 70 65 32 20 3d 20 76 61 6c 75 65  pe type2 = value
d4d0: 32 2e 47 65 74 54 79 70 65 28 29 3b 0d 0a 0d 0a  2.GetType();....
d4e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d4f0: 69 66 20 28 21 4f 62 6a 65 63 74 2e 52 65 66 65  if (!Object.Refe
d500: 72 65 6e 63 65 45 71 75 61 6c 73 28 74 79 70 65  renceEquals(type
d510: 31 2c 20 74 79 70 65 32 29 29 0d 0a 20 20 20 20  1, type2))..    
d520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d530: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
d540: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d550: 20 69 66 20 28 74 79 70 65 31 20 3d 3d 20 74 79   if (type1 == ty
d560: 70 65 6f 66 28 69 6e 74 29 29 20 2f 2f 20 44 57  peof(int)) // DW
d570: 6f 72 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ord..           
d580: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
d590: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
d5a0: 72 6e 20 28 28 69 6e 74 29 76 61 6c 75 65 31 20  rn ((int)value1 
d5b0: 3d 3d 20 28 69 6e 74 29 76 61 6c 75 65 32 29 3b  == (int)value2);
d5c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d5d0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
d5e0: 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 74 79       else if (ty
d5f0: 70 65 31 20 3d 3d 20 74 79 70 65 6f 66 28 6c 6f  pe1 == typeof(lo
d600: 6e 67 29 29 20 2f 2f 20 51 57 6f 72 64 0d 0a 20  ng)) // QWord.. 
d610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
d620: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d630: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28 6c        return ((l
d640: 6f 6e 67 29 76 61 6c 75 65 31 20 3d 3d 20 28 6c  ong)value1 == (l
d650: 6f 6e 67 29 76 61 6c 75 65 32 29 3b 0d 0a 20 20  ong)value2);..  
d660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
d670: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d680: 20 65 6c 73 65 20 69 66 20 28 74 79 70 65 31 20   else if (type1 
d690: 3d 3d 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67  == typeof(string
d6a0: 29 29 20 2f 2f 20 53 74 72 69 6e 67 20 2f 20 45  )) // String / E
d6b0: 78 70 61 6e 64 53 74 72 69 6e 67 0d 0a 20 20 20  xpandString..   
d6c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
d6d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d6e0: 20 20 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e      return Strin
d6f0: 67 2e 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20  g.Equals(..     
d700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d710: 20 20 20 28 73 74 72 69 6e 67 29 76 61 6c 75 65     (string)value
d720: 31 2c 20 28 73 74 72 69 6e 67 29 76 61 6c 75 65  1, (string)value
d730: 32 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  2,..            
d740: 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69              Stri
d750: 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64  ngComparison.Ord
d760: 69 6e 61 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20  inal);..        
d770: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
d780: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
d790: 69 66 20 28 74 79 70 65 31 20 3d 3d 20 74 79 70  if (type1 == typ
d7a0: 65 6f 66 28 73 74 72 69 6e 67 5b 5d 29 29 20 2f  eof(string[])) /
d7b0: 2f 20 4d 75 6c 74 69 53 74 72 69 6e 67 0d 0a 20  / MultiString.. 
d7c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
d7d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d7e0: 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61        string[] a
d7f0: 72 72 61 79 31 20 3d 20 28 73 74 72 69 6e 67 5b  rray1 = (string[
d800: 5d 29 76 61 6c 75 65 31 3b 0d 0a 20 20 20 20 20  ])value1;..     
d810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
d820: 74 72 69 6e 67 5b 5d 20 61 72 72 61 79 32 20 3d  tring[] array2 =
d830: 20 28 73 74 72 69 6e 67 5b 5d 29 76 61 6c 75 65   (string[])value
d840: 32 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  2;....          
d850: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65            int le
d860: 6e 67 74 68 31 20 3d 20 61 72 72 61 79 31 2e 4c  ngth1 = array1.L
d870: 65 6e 67 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20  ength;....      
d880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
d890: 20 28 6c 65 6e 67 74 68 31 20 21 3d 20 61 72 72   (length1 != arr
d8a0: 61 79 32 2e 4c 65 6e 67 74 68 29 0d 0a 20 20 20  ay2.Length)..   
d8b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d8c0: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
d8d0: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
d8e0: 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69            for (i
d8f0: 6e 74 20 69 6e 64 65 78 31 20 3d 20 30 3b 20 69  nt index1 = 0; i
d900: 6e 64 65 78 31 20 3c 20 6c 65 6e 67 74 68 31 3b  ndex1 < length1;
d910: 20 69 6e 64 65 78 31 2b 2b 29 0d 0a 20 20 20 20   index1++)..    
d920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d930: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
d940: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
d950: 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28 0d 0a  String.Equals(..
d960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d980: 61 72 72 61 79 31 5b 69 6e 64 65 78 31 5d 2c 20  array1[index1], 
d990: 61 72 72 61 79 32 5b 69 6e 64 65 78 31 5d 2c 0d  array2[index1],.
d9a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d9b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d9c0: 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f   StringCompariso
d9d0: 6e 2e 4f 72 64 69 6e 61 6c 29 29 0d 0a 20 20 20  n.Ordinal))..   
d9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d9f0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
da00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da10: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
da20: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
da30: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
da40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da50: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
da60: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
da70: 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  n true;..       
da80: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
da90: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
daa0: 20 69 66 20 28 74 79 70 65 31 20 3d 3d 20 74 79   if (type1 == ty
dab0: 70 65 6f 66 28 62 79 74 65 5b 5d 29 29 20 2f 2f  peof(byte[])) //
dac0: 20 42 69 6e 61 72 79 0d 0a 20 20 20 20 20 20 20   Binary..       
dad0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
dae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
daf0: 62 79 74 65 5b 5d 20 61 72 72 61 79 31 20 3d 20  byte[] array1 = 
db00: 28 62 79 74 65 5b 5d 29 76 61 6c 75 65 31 3b 0d  (byte[])value1;.
db10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
db20: 20 20 20 20 20 62 79 74 65 5b 5d 20 61 72 72 61       byte[] arra
db30: 79 32 20 3d 20 28 62 79 74 65 5b 5d 29 76 61 6c  y2 = (byte[])val
db40: 75 65 32 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ue2;....        
db50: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
db60: 6c 65 6e 67 74 68 31 20 3d 20 61 72 72 61 79 31  length1 = array1
db70: 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20 20 20 20  .Length;....    
db80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db90: 69 66 20 28 6c 65 6e 67 74 68 31 20 21 3d 20 61  if (length1 != a
dba0: 72 72 61 79 32 2e 4c 65 6e 67 74 68 29 0d 0a 20  rray2.Length).. 
dbb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dbc0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
dbd0: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
dbe0: 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20              for 
dbf0: 28 69 6e 74 20 69 6e 64 65 78 31 20 3d 20 30 3b  (int index1 = 0;
dc00: 20 69 6e 64 65 78 31 20 3c 20 6c 65 6e 67 74 68   index1 < length
dc10: 31 3b 20 69 6e 64 65 78 31 2b 2b 29 0d 0a 20 20  1; index1++)..  
dc20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc30: 20 20 20 20 20 20 69 66 20 28 61 72 72 61 79 31        if (array1
dc40: 5b 69 6e 64 65 78 31 5d 20 21 3d 20 61 72 72 61  [index1] != arra
dc50: 79 32 5b 69 6e 64 65 78 31 5d 29 0d 0a 20 20 20  y2[index1])..   
dc60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc70: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
dc80: 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
dc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
dca0: 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20  turn true;..    
dcb0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
dcc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
dcd0: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
dce0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
dcf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
dd00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dd10: 2f 2f 2f 2f 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 2f 2f 2f 2f 2f 2f  ////////////////
dd40: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
dd50: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6e  public static in
dd60: 74 20 56 61 6c 75 65 48 61 73 68 43 6f 64 65 28  t ValueHashCode(
dd70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dd80: 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 0d 0a    object value..
dd90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dda0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
ddb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ddc0: 20 20 69 6e 74 20 72 65 73 75 6c 74 20 3d 20 30    int result = 0
ddd0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
dde0: 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 21       if (value !
ddf0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
de00: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
de10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de20: 54 79 70 65 20 74 79 70 65 20 3d 20 76 61 6c 75  Type type = valu
de30: 65 2e 47 65 74 54 79 70 65 28 29 3b 0d 0a 0d 0a  e.GetType();....
de40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de50: 20 20 20 20 69 66 20 28 28 74 79 70 65 20 3d 3d      if ((type ==
de60: 20 74 79 70 65 6f 66 28 69 6e 74 29 29 20 7c 7c   typeof(int)) ||
de70: 20 2f 2f 20 44 57 6f 72 64 0d 0a 20 20 20 20 20   // DWord..     
de80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de90: 20 20 20 28 74 79 70 65 20 3d 3d 20 74 79 70 65     (type == type
dea0: 6f 66 28 6c 6f 6e 67 29 29 20 7c 7c 20 2f 2f 20  of(long)) || // 
deb0: 51 57 6f 72 64 0d 0a 20 20 20 20 20 20 20 20 20  QWord..         
dec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
ded0: 74 79 70 65 20 3d 3d 20 74 79 70 65 6f 66 28 73  type == typeof(s
dee0: 74 72 69 6e 67 29 29 29 20 2f 2f 20 53 74 72 69  tring))) // Stri
def0: 6e 67 20 2f 20 45 78 70 61 6e 64 53 74 72 69 6e  ng / ExpandStrin
df00: 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  g..             
df10: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
df20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df30: 20 20 72 65 73 75 6c 74 20 3d 20 76 61 6c 75 65    result = value
df40: 2e 47 65 74 48 61 73 68 43 6f 64 65 28 29 3b 0d  .GetHashCode();.
df50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
df60: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
df70: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
df80: 20 69 66 20 28 28 74 79 70 65 20 3d 3d 20 74 79   if ((type == ty
df90: 70 65 6f 66 28 73 74 72 69 6e 67 5b 5d 29 29 20  peof(string[])) 
dfa0: 7c 7c 20 2f 2f 20 4d 75 6c 74 69 53 74 72 69 6e  || // MultiStrin
dfb0: 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  g..             
dfc0: 20 20 20 20 20 20 20 20 20 20 20 28 74 79 70 65             (type
dfd0: 20 3d 3d 20 74 79 70 65 6f 66 28 62 79 74 65 5b   == typeof(byte[
dfe0: 5d 29 29 29 20 2f 2f 20 42 69 6e 61 72 79 0d 0a  ]))) // Binary..
dff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e000: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
e010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41                 A
e020: 72 72 61 79 20 61 72 72 61 79 20 3d 20 28 41 72  rray array = (Ar
e030: 72 61 79 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20  ray)value;..    
e040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e050: 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 20 3d      int length =
e060: 20 61 72 72 61 79 2e 4c 65 6e 67 74 68 3b 0d 0a   array.Length;..
e070: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e080: 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69            for (i
e090: 6e 74 20 69 6e 64 65 78 20 3d 20 30 3b 20 69 6e  nt index = 0; in
e0a0: 64 65 78 20 3c 20 6c 65 6e 67 74 68 3b 20 69 6e  dex < length; in
e0b0: 64 65 78 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20  dex++)..        
e0c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e0d0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
e0e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
e0f0: 62 6a 65 63 74 20 65 6c 65 6d 65 6e 74 20 3d 20  bject element = 
e100: 61 72 72 61 79 2e 47 65 74 56 61 6c 75 65 28 69  array.GetValue(i
e110: 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ndex);....      
e120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e130: 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e        if (elemen
e140: 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  t == null)..    
e150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e160: 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74              cont
e170: 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  inue;....       
e180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e190: 20 20 20 20 20 72 65 73 75 6c 74 20 5e 3d 20 65       result ^= e
e1a0: 6c 65 6d 65 6e 74 2e 47 65 74 48 61 73 68 43 6f  lement.GetHashCo
e1b0: 64 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  de();..         
e1c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
e1d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e1e0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
e1f0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
e200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
e210: 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20  turn result;..  
e220: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
e230: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
e240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
e280: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
e290: 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69  blic static stri
e2a0: 6e 67 20 56 61 6c 75 65 54 6f 53 74 72 69 6e 67  ng ValueToString
e2b0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
e2c0: 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 2c     object value,
e2d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e2e0: 20 20 73 74 72 69 6e 67 20 64 65 6c 69 6d 69 74    string delimit
e2f0: 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er,..           
e300: 20 20 20 20 20 73 74 72 69 6e 67 20 6e 75 6c 6c       string null
e310: 56 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20  Value..         
e320: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
e330: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
e340: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
e350: 72 65 73 75 6c 74 20 3d 20 6e 75 6c 6c 3b 0d 0a  result = null;..
e360: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e370: 20 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e    if (value != n
e380: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
e390: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
e3a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 79 70               Typ
e3b0: 65 20 74 79 70 65 20 3d 20 76 61 6c 75 65 2e 47  e type = value.G
e3c0: 65 74 54 79 70 65 28 29 3b 0d 0a 0d 0a 20 20 20  etType();....   
e3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e3e0: 20 69 66 20 28 28 74 79 70 65 20 3d 3d 20 74 79   if ((type == ty
e3f0: 70 65 6f 66 28 69 6e 74 29 29 20 7c 7c 20 2f 2f  peof(int)) || //
e400: 20 44 57 6f 72 64 0d 0a 20 20 20 20 20 20 20 20   DWord..        
e410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e420: 28 74 79 70 65 20 3d 3d 20 74 79 70 65 6f 66 28  (type == typeof(
e430: 6c 6f 6e 67 29 29 20 7c 7c 20 2f 2f 20 51 57 6f  long)) || // QWo
e440: 72 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  rd..            
e450: 20 20 20 20 20 20 20 20 20 20 20 20 28 74 79 70              (typ
e460: 65 20 3d 3d 20 74 79 70 65 6f 66 28 73 74 72 69  e == typeof(stri
e470: 6e 67 29 29 29 20 2f 2f 20 53 74 72 69 6e 67 20  ng))) // String 
e480: 2f 20 45 78 70 61 6e 64 53 74 72 69 6e 67 0d 0a  / ExpandString..
e490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e4a0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
e4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
e4c0: 65 73 75 6c 74 20 3d 20 76 61 6c 75 65 2e 54 6f  esult = value.To
e4d0: 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20  String();..     
e4e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
e4f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e500: 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 28        else if ((
e510: 74 79 70 65 20 3d 3d 20 74 79 70 65 6f 66 28 73  type == typeof(s
e520: 74 72 69 6e 67 5b 5d 29 29 20 7c 7c 20 2f 2f 20  tring[])) || // 
e530: 4d 75 6c 74 69 53 74 72 69 6e 67 0d 0a 20 20 20  MultiString..   
e540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e550: 20 20 20 20 20 28 74 79 70 65 20 3d 3d 20 74 79       (type == ty
e560: 70 65 6f 66 28 62 79 74 65 5b 5d 29 29 29 20 2f  peof(byte[]))) /
e570: 2f 20 42 69 6e 61 72 79 0d 0a 20 20 20 20 20 20  / Binary..      
e580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
e590: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e5a0: 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 42           StringB
e5b0: 75 69 6c 64 65 72 20 62 75 69 6c 64 65 72 20 3d  uilder builder =
e5c0: 20 6e 65 77 20 53 74 72 69 6e 67 42 75 69 6c 64   new StringBuild
e5d0: 65 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  er();..         
e5e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41                 A
e5f0: 72 72 61 79 20 61 72 72 61 79 20 3d 20 28 41 72  rray array = (Ar
e600: 72 61 79 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20  ray)value;..    
e610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e620: 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 20 3d      int length =
e630: 20 61 72 72 61 79 2e 4c 65 6e 67 74 68 3b 0d 0a   array.Length;..
e640: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e650: 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69            for (i
e660: 6e 74 20 69 6e 64 65 78 20 3d 20 30 3b 20 69 6e  nt index = 0; in
e670: 64 65 78 20 3c 20 6c 65 6e 67 74 68 3b 20 69 6e  dex < length; in
e680: 64 65 78 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20  dex++)..        
e690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e6a0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
e6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
e6c0: 66 20 28 28 69 6e 64 65 78 20 3e 20 30 29 20 26  f ((index > 0) &
e6d0: 26 20 28 64 65 6c 69 6d 69 74 65 72 20 21 3d 20  & (delimiter != 
e6e0: 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20  null))..        
e6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e700: 20 20 20 20 20 20 20 20 62 75 69 6c 64 65 72 2e          builder.
e710: 41 70 70 65 6e 64 28 64 65 6c 69 6d 69 74 65 72  Append(delimiter
e720: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
e730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e740: 20 20 6f 62 6a 65 63 74 20 65 6c 65 6d 65 6e 74    object element
e750: 20 3d 20 61 72 72 61 79 2e 47 65 74 56 61 6c 75   = array.GetValu
e760: 65 28 69 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20 20  e(index);....   
e770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e780: 20 20 20 20 20 20 20 20 20 69 66 20 28 65 6c 65           if (ele
e790: 6d 65 6e 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ment == null).. 
e7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e7b0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
e7c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e7d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
e7e0: 20 28 6e 75 6c 6c 56 61 6c 75 65 20 21 3d 20 6e   (nullValue != n
e7f0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
e800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e810: 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64 65            builde
e820: 72 2e 41 70 70 65 6e 64 28 6e 75 6c 6c 56 61 6c  r.Append(nullVal
e830: 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ue);....        
e840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e850: 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65          continue
e860: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
e870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
e880: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
e890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e8a0: 62 75 69 6c 64 65 72 2e 41 70 70 65 6e 64 28 65  builder.Append(e
e8b0: 6c 65 6d 65 6e 74 2e 54 6f 53 74 72 69 6e 67 28  lement.ToString(
e8c0: 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ));..           
e8d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
e8e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e8f0: 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
e900: 20 3d 20 62 75 69 6c 64 65 72 2e 54 6f 53 74 72   = builder.ToStr
e910: 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ing();..        
e920: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
e930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
e940: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
e950: 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c      return resul
e960: 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t;..            
e970: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
e980: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
e990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e9a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e9b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e9c0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
e9d0: 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
e9e0: 63 20 62 6f 6f 6c 20 45 71 75 61 6c 73 28 0d 0a  c bool Equals(..
e9f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea00: 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20  MockRegistryKey 
ea10: 6b 65 79 31 2c 0d 0a 20 20 20 20 20 20 20 20 20  key1,..         
ea20: 20 20 20 20 20 20 20 4d 6f 63 6b 52 65 67 69 73         MockRegis
ea30: 74 72 79 4b 65 79 20 6b 65 79 32 0d 0a 20 20 20  tryKey key2..   
ea40: 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
ea50: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
ea60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
ea70: 66 20 28 28 6b 65 79 31 20 3d 3d 20 6e 75 6c 6c  f ((key1 == null
ea80: 29 20 7c 7c 20 28 6b 65 79 32 20 3d 3d 20 6e 75  ) || (key2 == nu
ea90: 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ll))..          
eaa0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
eab0: 20 28 28 6b 65 79 31 20 3d 3d 20 6e 75 6c 6c 29   ((key1 == null)
eac0: 20 26 26 20 28 6b 65 79 32 20 3d 3d 20 6e 75 6c   && (key2 == nul
ead0: 6c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  l));....        
eae0: 20 20 20 20 20 20 20 20 69 66 20 28 4f 62 6a 65          if (Obje
eaf0: 63 74 2e 52 65 66 65 72 65 6e 63 65 45 71 75 61  ct.ReferenceEqua
eb00: 6c 73 28 6b 65 79 31 2c 20 6b 65 79 32 29 29 0d  ls(key1, key2)).
eb10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
eb20: 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
eb30: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
eb40: 20 20 20 20 20 72 65 74 75 72 6e 20 4e 61 6d 65       return Name
eb50: 45 71 75 61 6c 73 28 6b 65 79 31 2e 4e 61 6d 65  Equals(key1.Name
eb60: 2c 20 6b 65 79 32 2e 4e 61 6d 65 29 3b 0d 0a 20  , key2.Name);.. 
eb70: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
eb80: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
eb90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ebb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ebc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
ebd0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
ebe0: 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6e 74  ublic static int
ebf0: 20 47 65 74 48 61 73 68 43 6f 64 65 28 0d 0a 20   GetHashCode(.. 
ec00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
ec10: 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 6b  ockRegistryKey k
ec20: 65 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ey..            
ec30: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
ec40: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
ec50: 20 20 20 20 20 20 69 66 20 28 6b 65 79 20 21 3d        if (key !=
ec60: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
ec70: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
ec80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
ec90: 74 72 69 6e 67 20 6e 61 6d 65 20 3d 20 6b 65 79  tring name = key
eca0: 2e 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Name;....      
ecb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
ecc0: 20 28 6e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d   (name != null).
ecd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ece0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
ecf0: 6e 61 6d 65 2e 47 65 74 48 61 73 68 43 6f 64 65  name.GetHashCode
ed00: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
ed10: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
ed20: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
ed30: 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0;..           
ed40: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
ed50: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
ed60: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 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 0d 0a 0d  /////////////...
edb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
edc0: 67 69 6f 6e 20 49 6d 70 6c 69 63 69 74 20 43 6f  gion Implicit Co
edd0: 6e 76 65 72 73 69 6f 6e 20 4f 70 65 72 61 74 6f  nversion Operato
ede0: 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  rs..            
edf0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
ee00: 2f 2f 20 42 55 47 42 55 47 3a 20 52 65 6d 6f 76  // BUGBUG: Remov
ee10: 65 20 6d 65 3f 20 20 54 68 69 73 20 73 68 6f 75  e me?  This shou
ee20: 6c 64 20 62 65 20 73 61 66 65 20 62 65 63 61 75  ld be safe becau
ee30: 73 65 20 69 6e 20 22 77 68 61 74 2d 69 66 22 0d  se in "what-if".
ee40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
ee50: 20 20 20 20 20 20 20 20 6d 6f 64 65 20 61 6c 6c          mode all
ee60: 20 6b 65 79 73 20 61 72 65 20 6f 70 65 6e 65 64   keys are opened
ee70: 20 72 65 61 64 2d 6f 6e 6c 79 2e 0d 0a 20 20 20   read-only...   
ee80: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
ee90: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
eea0: 73 74 61 74 69 63 20 69 6d 70 6c 69 63 69 74 20  static implicit 
eeb0: 6f 70 65 72 61 74 6f 72 20 52 65 67 69 73 74 72  operator Registr
eec0: 79 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20  yKey(..         
eed0: 20 20 20 20 20 20 20 4d 6f 63 6b 52 65 67 69 73         MockRegis
eee0: 74 72 79 4b 65 79 20 6b 65 79 0d 0a 20 20 20 20  tryKey key..    
eef0: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
ef00: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
ef10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
ef20: 74 75 72 6e 20 28 6b 65 79 20 21 3d 20 6e 75 6c  turn (key != nul
ef30: 6c 29 20 3f 20 6b 65 79 2e 4b 65 79 20 3a 20 6e  l) ? key.Key : n
ef40: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
ef50: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
ef60: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
ef70: 20 20 20 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
efc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72  ..            #r
efd0: 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c  egion IDisposabl
efe0: 65 20 22 50 61 74 74 65 72 6e 22 20 4d 65 6d 62  e "Pattern" Memb
eff0: 65 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ers..           
f000: 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 64 69   private bool di
f010: 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20 20 20 20  sposed;..       
f020: 20 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69       private voi
f030: 64 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  d CheckDisposed(
f040: 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ) /* throw */.. 
f050: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
f060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
f070: 20 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20   (!disposed)..  
f080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f090: 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20    return;....   
f0a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
f0b0: 6f 77 20 6e 65 77 20 4f 62 6a 65 63 74 44 69 73  ow new ObjectDis
f0c0: 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 28 0d  posedException(.
f0d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f0e0: 20 20 20 20 20 74 79 70 65 6f 66 28 4d 6f 63 6b       typeof(Mock
f0f0: 52 65 67 69 73 74 72 79 4b 65 79 29 2e 4e 61 6d  RegistryKey).Nam
f100: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
f110: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
f120: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
f130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f160: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
f170: 20 20 20 20 20 70 72 69 76 61 74 65 20 2f 2a 20       private /* 
f180: 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61  protected virtua
f190: 6c 20 2a 2f 20 76 6f 69 64 20 44 69 73 70 6f 73  l */ void Dispos
f1a0: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
f1b0: 20 20 20 20 62 6f 6f 6c 20 64 69 73 70 6f 73 69      bool disposi
f1c0: 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ng..            
f1d0: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
f1e0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
f1f0: 20 20 20 20 20 20 69 66 20 28 21 64 69 73 70 6f        if (!dispo
f200: 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20  sed)..          
f210: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
f220: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
f230: 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20  (disposing)..   
f240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f250: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
f260: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
f270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f290: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f2a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 69 73            // dis
f2b0: 70 6f 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73  pose managed res
f2c0: 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a  ources here.....
f2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f2e0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
f2f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
f310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f320: 20 20 20 20 20 20 20 20 69 66 20 28 6b 65 79 20          if (key 
f330: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
f340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f350: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
f360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f370: 20 69 66 20 28 21 6e 6f 43 6c 6f 73 65 29 0d 0a   if (!noClose)..
f380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f3a0: 6b 65 79 2e 43 6c 6f 73 65 28 29 3b 0d 0a 0d 0a  key.Close();....
f3b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f3c0: 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 20              key 
f3d0: 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  = null;..       
f3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f3f0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
f400: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
f410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f420: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
f430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f440: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20  ///////..       
f450: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
f460: 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67 65  release unmanage
f470: 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72 65  d resources here
f480: 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .....           
f490: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
f4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
f4c0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
f4d0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
f4e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
f4f0: 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 6f 62 6a  / NOTE: This obj
f500: 65 63 74 20 69 73 20 6e 6f 77 20 64 69 73 70 6f  ect is now dispo
f510: 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  sed...          
f520: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
f530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f540: 20 20 64 69 73 70 6f 73 65 64 20 3d 20 74 72 75    disposed = tru
f550: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
f560: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
f570: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
f580: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
f590: 20 20 20 20 20 20 20 20 20 20 20 20 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: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
f5e0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
f5f0: 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62  region IDisposab
f600: 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20  le Members..    
f610: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
f620: 6f 69 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20  oid Dispose().. 
f630: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
f640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 69                Di
f650: 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20  spose(true);..  
f660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47 43                GC
f670: 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a  .SuppressFinaliz
f680: 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20  e(this);..      
f690: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
f6a0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
f6b0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
f6c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f700: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
f710: 20 20 23 72 65 67 69 6f 6e 20 44 65 73 74 72 75    #region Destru
f720: 63 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  ctor..          
f730: 20 20 7e 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b    ~MockRegistryK
f740: 65 79 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ey()..          
f750: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
f760: 20 20 20 20 20 44 69 73 70 6f 73 65 28 66 61 6c       Dispose(fal
f770: 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  se);..          
f780: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
f790: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20   #endregion..   
f7a0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
f7b0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
f7c0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
f7d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f7e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f7f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
f810: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
f820: 20 52 65 67 69 73 74 72 79 52 6f 6f 74 4b 65 79   RegistryRootKey
f830: 4e 61 6d 65 73 20 43 6c 61 73 73 0d 0a 20 20 20  Names Class..   
f840: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
f850: 74 69 63 20 63 6c 61 73 73 20 52 65 67 69 73 74  tic class Regist
f860: 72 79 52 6f 6f 74 4b 65 79 4e 61 6d 65 73 0d 0a  ryRootKeyNames..
f870: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
f880: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 63 6f         public co
f890: 6e 73 74 20 73 74 72 69 6e 67 20 48 4b 45 59 5f  nst string HKEY_
f8a0: 43 4c 41 53 53 45 53 5f 52 4f 4f 54 20 3d 20 22  CLASSES_ROOT = "
f8b0: 48 4b 45 59 5f 43 4c 41 53 53 45 53 5f 52 4f 4f  HKEY_CLASSES_ROO
f8c0: 54 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  T";..           
f8d0: 20 70 75 62 6c 69 63 20 63 6f 6e 73 74 20 73 74   public const st
f8e0: 72 69 6e 67 20 48 4b 43 52 20 3d 20 22 48 4b 43  ring HKCR = "HKC
f8f0: 52 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  R";....         
f900: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
f910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f940: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
f950: 20 20 20 20 20 20 70 75 62 6c 69 63 20 63 6f 6e        public con
f960: 73 74 20 73 74 72 69 6e 67 20 48 4b 45 59 5f 43  st string HKEY_C
f970: 55 52 52 45 4e 54 5f 43 4f 4e 46 49 47 20 3d 20  URRENT_CONFIG = 
f980: 22 48 4b 45 59 5f 43 55 52 52 45 4e 54 5f 43 4f  "HKEY_CURRENT_CO
f990: 4e 46 49 47 22 3b 0d 0a 20 20 20 20 20 20 20 20  NFIG";..        
f9a0: 20 20 20 20 70 75 62 6c 69 63 20 63 6f 6e 73 74      public const
f9b0: 20 73 74 72 69 6e 67 20 48 4b 43 43 20 3d 20 22   string HKCC = "
f9c0: 48 4b 43 43 22 3b 0d 0a 0d 0a 20 20 20 20 20 20  HKCC";....      
f9d0: 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
fa20: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
fa30: 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 48 4b 45  const string HKE
fa40: 59 5f 43 55 52 52 45 4e 54 5f 55 53 45 52 20 3d  Y_CURRENT_USER =
fa50: 20 22 48 4b 45 59 5f 43 55 52 52 45 4e 54 5f 55   "HKEY_CURRENT_U
fa60: 53 45 52 22 3b 0d 0a 20 20 20 20 20 20 20 20 20  SER";..         
fa70: 20 20 20 70 75 62 6c 69 63 20 63 6f 6e 73 74 20     public const 
fa80: 73 74 72 69 6e 67 20 48 4b 43 55 20 3d 20 22 48  string HKCU = "H
fa90: 4b 43 55 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  KCU";....       
faa0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
fab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20  ////////....    
faf0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 63          public c
fb00: 6f 6e 73 74 20 73 74 72 69 6e 67 20 48 4b 45 59  onst string HKEY
fb10: 5f 44 59 4e 5f 44 41 54 41 20 3d 20 22 48 4b 45  _DYN_DATA = "HKE
fb20: 59 5f 44 59 4e 5f 44 41 54 41 22 3b 0d 0a 20 20  Y_DYN_DATA";..  
fb30: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
fb40: 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 48 4b   const string HK
fb50: 44 44 20 3d 20 22 48 4b 44 44 22 3b 0d 0a 0d 0a  DD = "HKDD";....
fb60: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
fb70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
fbb0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
fbc0: 75 62 6c 69 63 20 63 6f 6e 73 74 20 73 74 72 69  ublic const stri
fbd0: 6e 67 20 48 4b 45 59 5f 4c 4f 43 41 4c 5f 4d 41  ng HKEY_LOCAL_MA
fbe0: 43 48 49 4e 45 20 3d 20 22 48 4b 45 59 5f 4c 4f  CHINE = "HKEY_LO
fbf0: 43 41 4c 5f 4d 41 43 48 49 4e 45 22 3b 0d 0a 20  CAL_MACHINE";.. 
fc00: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
fc10: 63 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 48  c const string H
fc20: 4b 4c 4d 20 3d 20 22 48 4b 4c 4d 22 3b 0d 0a 0d  KLM = "HKLM";...
fc30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
fc40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc80: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
fc90: 70 75 62 6c 69 63 20 63 6f 6e 73 74 20 73 74 72  public const str
fca0: 69 6e 67 20 48 4b 45 59 5f 50 45 52 46 4f 52 4d  ing HKEY_PERFORM
fcb0: 41 4e 43 45 5f 44 41 54 41 20 3d 20 22 48 4b 45  ANCE_DATA = "HKE
fcc0: 59 5f 50 45 52 46 4f 52 4d 41 4e 43 45 5f 44 41  Y_PERFORMANCE_DA
fcd0: 54 41 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  TA";..          
fce0: 20 20 70 75 62 6c 69 63 20 63 6f 6e 73 74 20 73    public const s
fcf0: 74 72 69 6e 67 20 48 4b 50 44 20 3d 20 22 48 4b  tring HKPD = "HK
fd00: 50 44 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  PD";....        
fd10: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
fd20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd50: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
fd60: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 63 6f         public co
fd70: 6e 73 74 20 73 74 72 69 6e 67 20 48 4b 45 59 5f  nst string HKEY_
fd80: 55 53 45 52 53 20 3d 20 22 48 4b 45 59 5f 55 53  USERS = "HKEY_US
fd90: 45 52 53 22 3b 0d 0a 20 20 20 20 20 20 20 20 20  ERS";..         
fda0: 20 20 20 70 75 62 6c 69 63 20 63 6f 6e 73 74 20     public const 
fdb0: 73 74 72 69 6e 67 20 48 4b 55 20 3d 20 22 48 4b  string HKU = "HK
fdc0: 55 22 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  U";..        }..
fdd0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
fde0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
fdf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe30: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
fe40: 20 23 72 65 67 69 6f 6e 20 52 65 67 69 73 74 72   #region Registr
fe50: 79 48 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20  yHelper Class.. 
fe60: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
fe70: 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73  rivate Constants
fe80: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
fe90: 65 20 63 6f 6e 73 74 20 63 68 61 72 20 4b 65 79  e const char Key
fea0: 4e 61 6d 65 53 65 70 61 72 61 74 6f 72 20 3d 20  NameSeparator = 
feb0: 27 5c 5c 27 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  '\\';....       
fec0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
fed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff00: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
ff10: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
ff20: 69 63 20 72 65 61 64 6f 6e 6c 79 20 63 68 61 72  ic readonly char
ff30: 5b 5d 20 4b 65 79 4e 61 6d 65 53 65 70 61 72 61  [] KeyNameSepara
ff40: 74 6f 72 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20  tors = {..      
ff50: 20 20 20 20 20 20 4b 65 79 4e 61 6d 65 53 65 70        KeyNameSep
ff60: 61 72 61 74 6f 72 0d 0a 20 20 20 20 20 20 20 20  arator..        
ff70: 7d 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64  };..        #end
ff80: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
ff90: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
ffa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
ffe0: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
fff0: 74 69 63 20 63 6c 61 73 73 20 52 65 67 69 73 74  tic class Regist
10000 72 79 48 65 6c 70 65 72 0d 0a 20 20 20 20 20 20  ryHelper..      
10010 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
10020 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
10030 20 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 20   Data..         
10040 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
10050 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73     // NOTE: This
10060 20 69 73 20 75 73 65 64 20 74 6f 20 73 79 6e 63   is used to sync
10070 68 72 6f 6e 69 7a 65 20 61 63 63 65 73 73 20 74  hronize access t
10080 6f 20 74 68 65 20 6c 69 73 74 20 6f 66 20 6c 6f  o the list of lo
10090 67 67 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20  gged..          
100a0 20 20 2f 2f 20 20 20 20 20 20 20 72 65 67 69 73    //       regis
100b0 74 72 79 20 6f 70 65 72 61 74 69 6f 6e 73 20 28  try operations (
100c0 6a 75 73 74 20 62 65 6c 6f 77 29 2e 0d 0a 20 20  just below)...  
100d0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
100e0 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
100f0 65 20 73 74 61 74 69 63 20 6f 62 6a 65 63 74 20  e static object 
10100 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f  syncRoot = new o
10110 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20 20 20 20  bject();....    
10120 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
10130 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
10140 20 54 68 69 73 20 69 73 20 74 68 65 20 6c 69 73   This is the lis
10150 74 20 6f 66 20 72 65 67 69 73 74 72 79 20 77 72  t of registry wr
10160 69 74 65 20 6f 70 65 72 61 74 69 6f 6e 73 20 77  ite operations w
10170 68 65 6e 20 69 74 20 69 73 0d 0a 20 20 20 20 20  hen it is..     
10180 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
10190 73 65 74 20 74 6f 20 6e 6f 6e 2d 6e 75 6c 6c 2e  set to non-null.
101a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
101b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
101c0 69 76 61 74 65 20 73 74 61 74 69 63 20 52 65 67  ivate static Reg
101d0 69 73 74 72 79 4f 70 65 72 61 74 69 6f 6e 4c 69  istryOperationLi
101e0 73 74 20 6f 70 65 72 61 74 69 6f 6e 4c 69 73 74  st operationList
101f0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ;..            #
10200 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
10210 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
10220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
10260 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
10270 69 6f 6e 20 50 75 62 6c 69 63 20 53 74 61 74 69  ion Public Stati
10280 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20  c Properties..  
10290 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
102a0 65 20 73 74 61 74 69 63 20 4d 6f 63 6b 52 65 67  e static MockReg
102b0 69 73 74 72 79 20 72 65 61 64 4f 6e 6c 79 52 65  istry readOnlyRe
102c0 67 69 73 74 72 79 3b 0d 0a 20 20 20 20 20 20 20  gistry;..       
102d0 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
102e0 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 20  ic MockRegistry 
102f0 52 65 61 64 4f 6e 6c 79 52 65 67 69 73 74 72 79  ReadOnlyRegistry
10300 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
10310 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10320 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 72 65   get { return re
10330 61 64 4f 6e 6c 79 52 65 67 69 73 74 72 79 3b 20  adOnlyRegistry; 
10340 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
10350 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
103a0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
103b0 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
103c0 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 20 72  c MockRegistry r
103d0 65 61 64 57 72 69 74 65 52 65 67 69 73 74 72 79  eadWriteRegistry
103e0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
103f0 75 62 6c 69 63 20 73 74 61 74 69 63 20 4d 6f 63  ublic static Moc
10400 6b 52 65 67 69 73 74 72 79 20 52 65 61 64 57 72  kRegistry ReadWr
10410 69 74 65 52 65 67 69 73 74 72 79 0d 0a 20 20 20  iteRegistry..   
10420 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
10430 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
10440 7b 20 72 65 74 75 72 6e 20 72 65 61 64 57 72 69  { return readWri
10450 74 65 52 65 67 69 73 74 72 79 3b 20 7d 0d 0a 20  teRegistry; }.. 
10460 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
10470 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
10480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
104c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
104d0 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69 6e  rivate static in
104e0 74 20 73 75 62 4b 65 79 73 43 72 65 61 74 65 64  t subKeysCreated
104f0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
10500 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6e 74  ublic static int
10510 20 53 75 62 4b 65 79 73 43 72 65 61 74 65 64 0d   SubKeysCreated.
10520 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
10530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10540 67 65 74 20 7b 20 72 65 74 75 72 6e 20 73 75 62  get { return sub
10550 4b 65 79 73 43 72 65 61 74 65 64 3b 20 7d 0d 0a  KeysCreated; }..
10560 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
10570 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
10580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
105a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
105b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
105c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
105d0 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69  private static i
105e0 6e 74 20 73 75 62 4b 65 79 73 44 65 6c 65 74 65  nt subKeysDelete
105f0 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d;..            
10600 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6e  public static in
10610 74 20 53 75 62 4b 65 79 73 44 65 6c 65 74 65 64  t SubKeysDeleted
10620 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
10630 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10640 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 73 75   get { return su
10650 62 4b 65 79 73 44 65 6c 65 74 65 64 3b 20 7d 0d  bKeysDeleted; }.
10660 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
10670 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
10680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
106a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
106b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
106c0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
106d0 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
106e0 69 6e 74 20 6b 65 79 56 61 6c 75 65 73 52 65 61  int keyValuesRea
106f0 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d;..            
10700 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6e  public static in
10710 74 20 4b 65 79 56 61 6c 75 65 73 52 65 61 64 0d  t KeyValuesRead.
10720 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
10730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10740 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6b 65 79  get { return key
10750 56 61 6c 75 65 73 52 65 61 64 3b 20 7d 0d 0a 20  ValuesRead; }.. 
10760 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
10770 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
10780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
107a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
107b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
107c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
107d0 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69 6e  rivate static in
107e0 74 20 6b 65 79 56 61 6c 75 65 73 57 72 69 74 74  t keyValuesWritt
107f0 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  en;..           
10800 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69   public static i
10810 6e 74 20 4b 65 79 56 61 6c 75 65 73 57 72 69 74  nt KeyValuesWrit
10820 74 65 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ten..           
10830 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
10840 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
10850 20 6b 65 79 56 61 6c 75 65 73 57 72 69 74 74 65   keyValuesWritte
10860 6e 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  n; }..          
10870 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
10880 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
10890 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
108d0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
108e0 61 74 69 63 20 69 6e 74 20 6b 65 79 56 61 6c 75  atic int keyValu
108f0 65 73 44 65 6c 65 74 65 64 3b 0d 0a 20 20 20 20  esDeleted;..    
10900 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
10910 74 61 74 69 63 20 69 6e 74 20 4b 65 79 56 61 6c  tatic int KeyVal
10920 75 65 73 44 65 6c 65 74 65 64 0d 0a 20 20 20 20  uesDeleted..    
10930 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
10940 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
10950 20 72 65 74 75 72 6e 20 6b 65 79 56 61 6c 75 65   return keyValue
10960 73 44 65 6c 65 74 65 64 3b 20 7d 0d 0a 20 20 20  sDeleted; }..   
10970 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
10980 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
10990 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
109a0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
109b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109e0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
109f0 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
10a00 6c 69 63 20 53 74 61 74 69 63 20 4d 65 74 68 6f  lic Static Metho
10a10 64 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ds..            
10a20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
10a30 69 64 20 45 6e 61 62 6c 65 4f 72 44 69 73 61 62  id EnableOrDisab
10a40 6c 65 4f 70 65 72 61 74 69 6f 6e 4c 69 73 74 28  leOperationList(
10a50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10a60 20 20 62 6f 6f 6c 20 65 6e 61 62 6c 65 0d 0a 20    bool enable.. 
10a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
10a80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
10a90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10aa0 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
10ab0 20 2f 2a 20 54 52 41 4e 53 41 43 54 49 4f 4e 41   /* TRANSACTIONA
10ac0 4c 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  L */..          
10ad0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
10ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
10af0 28 65 6e 61 62 6c 65 29 0d 0a 20 20 20 20 20 20  (enable)..      
10b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
10b10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10b20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 70 65           if (ope
10b30 72 61 74 69 6f 6e 4c 69 73 74 20 3d 3d 20 6e 75  rationList == nu
10b40 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
10b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10b60 20 6f 70 65 72 61 74 69 6f 6e 4c 69 73 74 20 3d   operationList =
10b70 20 6e 65 77 20 52 65 67 69 73 74 72 79 4f 70 65   new RegistryOpe
10b80 72 61 74 69 6f 6e 4c 69 73 74 28 29 3b 0d 0a 20  rationList();.. 
10b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10ba0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
10bb0 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
10bc0 66 20 28 6f 70 65 72 61 74 69 6f 6e 4c 69 73 74  f (operationList
10bd0 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
10be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
10bf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10c00 20 20 20 20 20 20 20 20 20 20 6f 70 65 72 61 74            operat
10c10 69 6f 6e 4c 69 73 74 2e 44 69 73 70 6f 73 65 28  ionList.Dispose(
10c20 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
10c30 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 65 72              oper
10c40 61 74 69 6f 6e 4c 69 73 74 20 3d 20 6e 75 6c 6c  ationList = null
10c50 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
10c60 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
10c70 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
10c80 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
10c90 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
10ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
10ce0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
10cf0 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69 64 20  lic static void 
10d00 52 65 69 6e 69 74 69 61 6c 69 7a 65 44 65 66 61  ReinitializeDefa
10d10 75 6c 74 52 65 67 69 73 74 72 69 65 73 28 0d 0a  ultRegistries(..
10d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d30 62 6f 6f 6c 20 77 68 61 74 49 66 2c 0d 0a 20 20  bool whatIf,..  
10d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
10d50 6f 6c 20 73 61 66 65 0d 0a 20 20 20 20 20 20 20  ol safe..       
10d60 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
10d70 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
10d80 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72             if (r
10d90 65 61 64 4f 6e 6c 79 52 65 67 69 73 74 72 79 20  eadOnlyRegistry 
10da0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
10db0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
10dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10dd0 20 72 65 61 64 4f 6e 6c 79 52 65 67 69 73 74 72   readOnlyRegistr
10de0 79 2e 44 69 73 70 6f 73 65 28 29 3b 0d 0a 20 20  y.Dispose();..  
10df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e00 20 20 72 65 61 64 4f 6e 6c 79 52 65 67 69 73 74    readOnlyRegist
10e10 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  ry = null;..    
10e20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
10e30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10e40 20 69 66 20 28 72 65 61 64 57 72 69 74 65 52 65   if (readWriteRe
10e50 67 69 73 74 72 79 20 21 3d 20 6e 75 6c 6c 29 0d  gistry != null).
10e60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10e70 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
10e80 20 20 20 20 20 20 20 20 72 65 61 64 57 72 69 74          readWrit
10e90 65 52 65 67 69 73 74 72 79 2e 44 69 73 70 6f 73  eRegistry.Dispos
10ea0 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  e();..          
10eb0 20 20 20 20 20 20 20 20 20 20 72 65 61 64 57 72            readWr
10ec0 69 74 65 52 65 67 69 73 74 72 79 20 3d 20 6e 75  iteRegistry = nu
10ed0 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
10ee0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
10ef0 20 20 20 20 20 20 20 20 20 20 72 65 61 64 4f 6e            readOn
10f00 6c 79 52 65 67 69 73 74 72 79 20 3d 20 6e 65 77  lyRegistry = new
10f10 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 28 77 68   MockRegistry(wh
10f20 61 74 49 66 2c 20 74 72 75 65 2c 20 73 61 66 65  atIf, true, safe
10f30 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
10f40 20 20 20 20 72 65 61 64 57 72 69 74 65 52 65 67      readWriteReg
10f50 69 73 74 72 79 20 3d 20 6e 65 77 20 4d 6f 63 6b  istry = new Mock
10f60 52 65 67 69 73 74 72 79 28 77 68 61 74 49 66 2c  Registry(whatIf,
10f70 20 66 61 6c 73 65 2c 20 73 61 66 65 29 3b 0d 0a   false, safe);..
10f80 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
10f90 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
10fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10fe0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10ff0 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 4d 6f  public static Mo
11000 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 47 65  ckRegistryKey Ge
11010 74 52 65 61 64 4f 6e 6c 79 52 6f 6f 74 4b 65 79  tReadOnlyRootKey
11020 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
11030 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 0d 0a     string name..
11040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11050 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
11060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11070 20 20 72 65 74 75 72 6e 20 47 65 74 52 6f 6f 74    return GetRoot
11080 4b 65 79 28 72 65 61 64 4f 6e 6c 79 52 65 67 69  Key(readOnlyRegi
11090 73 74 72 79 2c 20 6e 61 6d 65 29 3b 0d 0a 20 20  stry, name);..  
110a0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
110b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
110c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
110d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
110e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
110f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
11100 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
11110 62 6c 69 63 20 73 74 61 74 69 63 20 4d 6f 63 6b  blic static Mock
11120 52 65 67 69 73 74 72 79 4b 65 79 20 47 65 74 52  RegistryKey GetR
11130 65 61 64 57 72 69 74 65 52 6f 6f 74 4b 65 79 28  eadWriteRootKey(
11140 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11150 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 0d 0a 20    string name.. 
11160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
11170 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
11180 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11190 20 72 65 74 75 72 6e 20 47 65 74 52 6f 6f 74 4b   return GetRootK
111a0 65 79 28 72 65 61 64 57 72 69 74 65 52 65 67 69  ey(readWriteRegi
111b0 73 74 72 79 2c 20 6e 61 6d 65 29 3b 0d 0a 20 20  stry, name);..  
111c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
111d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
111e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
111f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
11220 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
11230 62 6c 69 63 20 73 74 61 74 69 63 20 4d 6f 63 6b  blic static Mock
11240 52 65 67 69 73 74 72 79 4b 65 79 20 47 65 74 52  RegistryKey GetR
11250 6f 6f 74 4b 65 79 28 0d 0a 20 20 20 20 20 20 20  ootKey(..       
11260 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65 67           MockReg
11270 69 73 74 72 79 20 72 65 67 69 73 74 72 79 2c 0d  istry registry,.
11280 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11290 20 73 74 72 69 6e 67 20 6e 61 6d 65 0d 0a 20 20   string name..  
112a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
112b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
112c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
112d0 69 66 20 28 72 65 67 69 73 74 72 79 20 3d 3d 20  if (registry == 
112e0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
112f0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
11300 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
11310 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 4d             if (M
11320 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 2e 4e  ockRegistryKey.N
11330 61 6d 65 45 71 75 61 6c 73 28 0d 0a 20 20 20 20  ameEquals(..    
11340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11350 20 20 20 20 6e 61 6d 65 2c 20 52 65 67 69 73 74      name, Regist
11360 72 79 52 6f 6f 74 4b 65 79 4e 61 6d 65 73 2e 48  ryRootKeyNames.H
11370 4b 45 59 5f 43 4c 41 53 53 45 53 5f 52 4f 4f 54  KEY_CLASSES_ROOT
11380 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20  ) ||..          
11390 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65            MockRe
113a0 67 69 73 74 72 79 4b 65 79 2e 4e 61 6d 65 45 71  gistryKey.NameEq
113b0 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20  uals(..         
113c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
113d0 61 6d 65 2c 20 52 65 67 69 73 74 72 79 52 6f 6f  ame, RegistryRoo
113e0 74 4b 65 79 4e 61 6d 65 73 2e 48 4b 43 52 29 29  tKeyNames.HKCR))
113f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11400 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
11410 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
11420 72 65 67 69 73 74 72 79 2e 43 6c 61 73 73 65 73  registry.Classes
11430 52 6f 6f 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  Root;..         
11440 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
11450 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
11460 66 20 28 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b  f (MockRegistryK
11470 65 79 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a  ey.NameEquals(..
11480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11490 20 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 52 65          name, Re
114a0 67 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d  gistryRootKeyNam
114b0 65 73 2e 48 4b 45 59 5f 43 55 52 52 45 4e 54 5f  es.HKEY_CURRENT_
114c0 43 4f 4e 46 49 47 29 20 7c 7c 0d 0a 20 20 20 20  CONFIG) ||..    
114d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
114e0 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 2e  MockRegistryKey.
114f0 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a 20 20 20  NameEquals(..   
11500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11510 20 20 20 20 20 6e 61 6d 65 2c 20 52 65 67 69 73       name, Regis
11520 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d 65 73 2e  tryRootKeyNames.
11530 48 4b 43 43 29 29 0d 0a 20 20 20 20 20 20 20 20  HKCC))..        
11540 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
11560 65 74 75 72 6e 20 72 65 67 69 73 74 72 79 2e 43  eturn registry.C
11570 75 72 72 65 6e 74 43 6f 6e 66 69 67 3b 0d 0a 20  urrentConfig;.. 
11580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
11590 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
115a0 20 20 65 6c 73 65 20 69 66 20 28 4d 6f 63 6b 52    else if (MockR
115b0 65 67 69 73 74 72 79 4b 65 79 2e 4e 61 6d 65 45  egistryKey.NameE
115c0 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20  quals(..        
115d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
115e0 6e 61 6d 65 2c 20 52 65 67 69 73 74 72 79 52 6f  name, RegistryRo
115f0 6f 74 4b 65 79 4e 61 6d 65 73 2e 48 4b 45 59 5f  otKeyNames.HKEY_
11600 43 55 52 52 45 4e 54 5f 55 53 45 52 29 20 7c 7c  CURRENT_USER) ||
11610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11620 20 20 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74        MockRegist
11630 72 79 4b 65 79 2e 4e 61 6d 65 45 71 75 61 6c 73  ryKey.NameEquals
11640 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
11650 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65 2c             name,
11660 20 52 65 67 69 73 74 72 79 52 6f 6f 74 4b 65 79   RegistryRootKey
11670 4e 61 6d 65 73 2e 48 4b 43 55 29 29 0d 0a 20 20  Names.HKCU))..  
11680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
11690 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
116a0 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 67 69       return regi
116b0 73 74 72 79 2e 43 75 72 72 65 6e 74 55 73 65 72  stry.CurrentUser
116c0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
116d0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
116e0 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d        else if (M
116f0 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 2e 4e  ockRegistryKey.N
11700 61 6d 65 45 71 75 61 6c 73 28 0d 0a 20 20 20 20  ameEquals(..    
11710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11720 20 20 20 20 6e 61 6d 65 2c 20 52 65 67 69 73 74      name, Regist
11730 72 79 52 6f 6f 74 4b 65 79 4e 61 6d 65 73 2e 48  ryRootKeyNames.H
11740 4b 45 59 5f 44 59 4e 5f 44 41 54 41 29 20 7c 7c  KEY_DYN_DATA) ||
11750 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11760 20 20 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74        MockRegist
11770 72 79 4b 65 79 2e 4e 61 6d 65 45 71 75 61 6c 73  ryKey.NameEquals
11780 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
11790 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65 2c             name,
117a0 20 52 65 67 69 73 74 72 79 52 6f 6f 74 4b 65 79   RegistryRootKey
117b0 4e 61 6d 65 73 2e 48 4b 44 44 29 29 0d 0a 20 20  Names.HKDD))..  
117c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
117d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
117e0 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 67 69       return regi
117f0 73 74 72 79 2e 44 79 6e 44 61 74 61 3b 0d 0a 20  stry.DynData;.. 
11800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
11810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11820 20 20 65 6c 73 65 20 69 66 20 28 4d 6f 63 6b 52    else if (MockR
11830 65 67 69 73 74 72 79 4b 65 79 2e 4e 61 6d 65 45  egistryKey.NameE
11840 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20  quals(..        
11850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11860 6e 61 6d 65 2c 20 52 65 67 69 73 74 72 79 52 6f  name, RegistryRo
11870 6f 74 4b 65 79 4e 61 6d 65 73 2e 48 4b 45 59 5f  otKeyNames.HKEY_
11880 4c 4f 43 41 4c 5f 4d 41 43 48 49 4e 45 29 20 7c  LOCAL_MACHINE) |
11890 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  |..             
118a0 20 20 20 20 20 20 20 4d 6f 63 6b 52 65 67 69 73         MockRegis
118b0 74 72 79 4b 65 79 2e 4e 61 6d 65 45 71 75 61 6c  tryKey.NameEqual
118c0 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s(..            
118d0 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65              name
118e0 2c 20 52 65 67 69 73 74 72 79 52 6f 6f 74 4b 65  , RegistryRootKe
118f0 79 4e 61 6d 65 73 2e 48 4b 4c 4d 29 29 0d 0a 20  yNames.HKLM)).. 
11900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
11910 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11920 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 67        return reg
11930 69 73 74 72 79 2e 4c 6f 63 61 6c 4d 61 63 68 69  istry.LocalMachi
11940 6e 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ne;..           
11950 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
11960 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
11970 28 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79  (MockRegistryKey
11980 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a 20 20  .NameEquals(..  
11990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
119a0 20 20 20 20 20 20 6e 61 6d 65 2c 20 52 65 67 69        name, Regi
119b0 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d 65 73  stryRootKeyNames
119c0 2e 48 4b 45 59 5f 50 45 52 46 4f 52 4d 41 4e 43  .HKEY_PERFORMANC
119d0 45 5f 44 41 54 41 29 20 7c 7c 0d 0a 20 20 20 20  E_DATA) ||..    
119e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
119f0 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 2e  MockRegistryKey.
11a00 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a 20 20 20  NameEquals(..   
11a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a20 20 20 20 20 20 6e 61 6d 65 2c 20 52 65 67 69 73       name, Regis
11a30 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d 65 73 2e  tryRootKeyNames.
11a40 48 4b 50 44 29 29 0d 0a 20 20 20 20 20 20 20 20  HKPD))..        
11a50 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
11a70 65 74 75 72 6e 20 72 65 67 69 73 74 72 79 2e 50  eturn registry.P
11a80 65 72 66 6f 72 6d 61 6e 63 65 44 61 74 61 3b 0d  erformanceData;.
11a90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11aa0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
11ab0 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 6f 63      else if (Moc
11ac0 6b 52 65 67 69 73 74 72 79 4b 65 79 2e 4e 61 6d  kRegistryKey.Nam
11ad0 65 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20  eEquals(..      
11ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11af0 20 20 6e 61 6d 65 2c 20 52 65 67 69 73 74 72 79    name, Registry
11b00 52 6f 6f 74 4b 65 79 4e 61 6d 65 73 2e 48 4b 45  RootKeyNames.HKE
11b10 59 5f 55 53 45 52 53 29 20 7c 7c 0d 0a 20 20 20  Y_USERS) ||..   
11b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b30 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
11b40 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a 20 20  .NameEquals(..  
11b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b60 20 20 20 20 20 20 6e 61 6d 65 2c 20 52 65 67 69        name, Regi
11b70 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d 65 73  stryRootKeyNames
11b80 2e 48 4b 55 29 29 0d 0a 20 20 20 20 20 20 20 20  .HKU))..        
11b90 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
11bb0 65 74 75 72 6e 20 72 65 67 69 73 74 72 79 2e 55  eturn registry.U
11bc0 73 65 72 73 3b 0d 0a 20 20 20 20 20 20 20 20 20  sers;..         
11bd0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
11be0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
11bf0 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
11c00 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
11c10 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
11c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
11c60 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
11c70 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 4a   static string J
11c80 6f 69 6e 4b 65 79 4e 61 6d 65 73 28 0d 0a 20 20  oinKeyNames(..  
11c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61                pa
11ca0 72 61 6d 73 20 73 74 72 69 6e 67 5b 5d 20 6e 61  rams string[] na
11cb0 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mes..           
11cc0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
11cd0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
11ce0 20 20 20 20 20 20 20 69 66 20 28 28 6e 61 6d 65         if ((name
11cf0 73 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 6e  s == null) || (n
11d00 61 6d 65 73 2e 4c 65 6e 67 74 68 20 3d 3d 20 30  ames.Length == 0
11d10 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
11d20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
11d30 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
11d40 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 42 75          StringBu
11d50 69 6c 64 65 72 20 62 75 69 6c 64 65 72 20 3d 20  ilder builder = 
11d60 6e 65 77 20 53 74 72 69 6e 67 42 75 69 6c 64 65  new StringBuilde
11d70 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  r();....        
11d80 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20          foreach 
11d90 28 73 74 72 69 6e 67 20 6e 61 6d 65 20 69 6e 20  (string name in 
11da0 6e 61 6d 65 73 29 0d 0a 20 20 20 20 20 20 20 20  names)..        
11db0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
11dd0 66 20 28 6e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29  f (name == null)
11de0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11df0 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e            contin
11e00 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ue;....         
11e10 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
11e20 67 20 6e 65 77 4e 61 6d 65 20 3d 20 6e 61 6d 65  g newName = name
11e30 2e 54 72 69 6d 28 4b 65 79 4e 61 6d 65 53 65 70  .Trim(KeyNameSep
11e40 61 72 61 74 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20  arator);....    
11e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11e60 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c  if (String.IsNul
11e70 6c 4f 72 45 6d 70 74 79 28 6e 65 77 4e 61 6d 65  lOrEmpty(newName
11e80 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
11e90 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74              cont
11ea0 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  inue;....       
11eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
11ec0 28 62 75 69 6c 64 65 72 2e 4c 65 6e 67 74 68 20  (builder.Length 
11ed0 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20  > 0)..          
11ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75                bu
11ef0 69 6c 64 65 72 2e 41 70 70 65 6e 64 28 4b 65 79  ilder.Append(Key
11f00 4e 61 6d 65 53 65 70 61 72 61 74 6f 72 29 3b 0d  NameSeparator);.
11f10 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
11f20 20 20 20 20 20 20 20 62 75 69 6c 64 65 72 2e 41         builder.A
11f30 70 70 65 6e 64 28 6e 65 77 4e 61 6d 65 29 3b 0d  ppend(newName);.
11f40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11f50 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
11f60 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 75 69        return bui
11f70 6c 64 65 72 2e 54 6f 53 74 72 69 6e 67 28 29 3b  lder.ToString();
11f80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
11f90 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
11fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
11ff0 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
12000 73 74 72 69 6e 67 20 4a 6f 69 6e 4b 65 79 4e 61  string JoinKeyNa
12010 6d 65 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mes(..          
12020 20 20 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74        MockRegist
12030 72 79 4b 65 79 20 6b 65 79 2c 0d 0a 20 20 20 20  ryKey key,..    
12040 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 61              para
12050 6d 73 20 73 74 72 69 6e 67 5b 5d 20 6e 61 6d 65  ms string[] name
12060 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  s..             
12070 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
12080 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
12090 20 20 20 20 20 73 74 72 69 6e 67 20 72 65 73 75       string resu
120a0 6c 74 20 3d 20 4a 6f 69 6e 4b 65 79 4e 61 6d 65  lt = JoinKeyName
120b0 73 28 6e 61 6d 65 73 29 3b 0d 0a 0d 0a 20 20 20  s(names);....   
120c0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
120d0 28 6b 65 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  (key != null).. 
120e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
120f0 20 20 20 72 65 73 75 6c 74 20 3d 20 4a 6f 69 6e     result = Join
12100 4b 65 79 4e 61 6d 65 73 28 6b 65 79 2e 4e 61 6d  KeyNames(key.Nam
12110 65 2c 20 72 65 73 75 6c 74 29 3b 0d 0a 0d 0a 20  e, result);.... 
12120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
12130 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20  eturn result;.. 
12140 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
12150 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
12160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
121a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
121b0 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72  ublic static str
121c0 69 6e 67 5b 5d 20 53 70 6c 69 74 4b 65 79 4e 61  ing[] SplitKeyNa
121d0 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me(..           
121e0 20 20 20 20 20 73 74 72 69 6e 67 20 6b 65 79 4e       string keyN
121f0 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ame..           
12200 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
12210 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12220 20 20 20 20 20 20 20 69 66 20 28 6b 65 79 4e 61         if (keyNa
12230 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me == null)..   
12240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12250 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
12260 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12270 20 72 65 74 75 72 6e 20 6b 65 79 4e 61 6d 65 2e   return keyName.
12280 53 70 6c 69 74 28 0d 0a 20 20 20 20 20 20 20 20  Split(..        
12290 20 20 20 20 20 20 20 20 20 20 20 20 4b 65 79 4e              KeyN
122a0 61 6d 65 53 65 70 61 72 61 74 6f 72 73 2c 20 53  ameSeparators, S
122b0 74 72 69 6e 67 53 70 6c 69 74 4f 70 74 69 6f 6e  tringSplitOption
122c0 73 2e 52 65 6d 6f 76 65 45 6d 70 74 79 45 6e 74  s.RemoveEmptyEnt
122d0 72 69 65 73 29 3b 0d 0a 20 20 20 20 20 20 20 20  ries);..        
122e0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
122f0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
12300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12330 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
12340 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
12350 74 61 74 69 63 20 73 74 72 69 6e 67 20 4c 61 73  tatic string Las
12360 74 53 75 62 4b 65 79 4e 61 6d 65 28 0d 0a 20 20  tSubKeyName(..  
12370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
12380 72 69 6e 67 20 6b 65 79 4e 61 6d 65 0d 0a 20 20  ring keyName..  
12390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
123a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
123b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
123c0 73 74 72 69 6e 67 5b 5d 20 73 75 62 4b 65 79 4e  string[] subKeyN
123d0 61 6d 65 73 20 3d 20 53 70 6c 69 74 4b 65 79 4e  ames = SplitKeyN
123e0 61 6d 65 28 6b 65 79 4e 61 6d 65 29 3b 0d 0a 0d  ame(keyName);...
123f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12400 20 69 66 20 28 28 73 75 62 4b 65 79 4e 61 6d 65   if ((subKeyName
12410 73 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 73  s == null) || (s
12420 75 62 4b 65 79 4e 61 6d 65 73 2e 4c 65 6e 67 74  ubKeyNames.Lengt
12430 68 20 3d 3d 20 30 29 29 0d 0a 20 20 20 20 20 20  h == 0))..      
12440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
12450 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
12460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
12470 74 75 72 6e 20 73 75 62 4b 65 79 4e 61 6d 65 73  turn subKeyNames
12480 5b 73 75 62 4b 65 79 4e 61 6d 65 73 2e 4c 65 6e  [subKeyNames.Len
12490 67 74 68 20 2d 20 31 5d 3b 0d 0a 20 20 20 20 20  gth - 1];..     
124a0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
124b0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
124c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
124d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
124e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
124f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
12500 20 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74 68             [Meth
12510 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70  odImpl(MethodImp
12520 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e  lOptions.NoInlin
12530 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20 20  ing)]..         
12540 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
12550 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
12560 20 4f 70 65 6e 53 75 62 4b 65 79 28 0d 0a 20 20   OpenSubKey(..  
12570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f                Mo
12580 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 72 6f  ckRegistryKey ro
12590 6f 74 4b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20  otKey,..        
125a0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73          string s
125b0 75 62 4b 65 79 4e 61 6d 65 2c 0d 0a 20 20 20 20  ubKeyName,..    
125c0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
125d0 20 77 72 69 74 61 62 6c 65 2c 0d 0a 20 20 20 20   writable,..    
125e0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
125f0 20 77 68 61 74 49 66 2c 0d 0a 20 20 20 20 20 20   whatIf,..      
12600 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 76            bool v
12610 65 72 62 6f 73 65 0d 0a 20 20 20 20 20 20 20 20  erbose..        
12620 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
12630 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12640 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 65            if (ve
12650 72 62 6f 73 65 29 0d 0a 20 20 20 20 20 20 20 20  rbose)..        
12660 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
12680 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64  raceOps.DebugAnd
12690 54 72 61 63 65 28 77 72 69 74 61 62 6c 65 20 3f  Trace(writable ?
126a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
126b0 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50            TraceP
126c0 72 69 6f 72 69 74 79 2e 48 69 67 68 65 73 74 20  riority.Highest 
126d0 3a 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e  : TracePriority.
126e0 48 69 67 68 65 72 2c 0d 0a 20 20 20 20 20 20 20  Higher,..       
126f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12700 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20   debugCallback, 
12710 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53  traceCallback, S
12720 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
12730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12740 20 20 20 20 20 20 20 22 72 6f 6f 74 4b 65 79 20         "rootKey 
12750 3d 20 7b 30 7d 2c 20 73 75 62 4b 65 79 4e 61 6d  = {0}, subKeyNam
12760 65 20 3d 20 7b 31 7d 2c 20 77 72 69 74 61 62 6c  e = {1}, writabl
12770 65 20 3d 20 7b 32 7d 22 2c 0d 0a 20 20 20 20 20  e = {2}",..     
12780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12790 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 72 6f     ForDisplay(ro
127a0 6f 74 4b 65 79 29 2c 20 46 6f 72 44 69 73 70 6c  otKey), ForDispl
127b0 61 79 28 73 75 62 4b 65 79 4e 61 6d 65 29 2c 0d  ay(subKeyName),.
127c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
127d0 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70           ForDisp
127e0 6c 61 79 28 77 72 69 74 61 62 6c 65 29 29 2c 20  lay(writable)), 
127f0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
12800 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12810 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
12820 20 20 20 20 20 20 69 66 20 28 72 6f 6f 74 4b 65        if (rootKe
12830 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y == null)..    
12840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12850 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
12860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12870 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
12880 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20 41 6c 77      // HACK: Alw
12890 61 79 73 20 66 6f 72 62 69 64 20 77 72 69 74 61  ays forbid writa
128a0 62 6c 65 20 61 63 63 65 73 73 20 77 68 65 6e 20  ble access when 
128b0 6f 70 65 72 61 74 69 6e 67 20 69 6e 0d 0a 20 20  operating in..  
128c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
128d0 20 20 20 20 20 20 20 22 77 68 61 74 2d 69 66 22         "what-if"
128e0 20 6d 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   mode...        
128f0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
12900 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b              Mock
12910 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79 20  RegistryKey key 
12920 3d 20 72 6f 6f 74 4b 65 79 2e 4f 70 65 6e 53 75  = rootKey.OpenSu
12930 62 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20  bKey(..         
12940 20 20 20 20 20 20 20 20 20 20 20 73 75 62 4b 65             subKe
12950 79 4e 61 6d 65 2c 20 77 68 61 74 49 66 20 3f 20  yName, whatIf ? 
12960 66 61 6c 73 65 20 3a 20 77 72 69 74 61 62 6c 65  false : writable
12970 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
12980 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 6b 65        return (ke
12990 79 20 21 3d 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20  y != null) ?..  
129a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
129b0 20 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73 74    new MockRegist
129c0 72 79 4b 65 79 28 6b 65 79 2c 20 77 68 61 74 49  ryKey(key, whatI
129d0 66 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73 65 29  f, false, false)
129e0 20 3a 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20   : null;..      
129f0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
12a00 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
12a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
12a50 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74 68 6f            [Metho
12a60 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c  dImpl(MethodImpl
12a70 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69  Options.NoInlini
12a80 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20 20 20  ng)]..          
12a90 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
12aa0 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20  MockRegistryKey 
12ab0 43 72 65 61 74 65 53 75 62 4b 65 79 28 0d 0a 20  CreateSubKey(.. 
12ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
12ad0 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 72  ockRegistryKey r
12ae0 6f 6f 74 4b 65 79 2c 0d 0a 20 20 20 20 20 20 20  ootKey,..       
12af0 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
12b00 73 75 62 4b 65 79 4e 61 6d 65 2c 0d 0a 20 20 20  subKeyName,..   
12b10 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
12b20 6c 20 77 68 61 74 49 66 2c 0d 0a 20 20 20 20 20  l whatIf,..     
12b30 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
12b40 76 65 72 62 6f 73 65 0d 0a 20 20 20 20 20 20 20  verbose..       
12b50 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
12b60 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12b70 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
12b80 65 72 62 6f 73 65 29 0d 0a 20 20 20 20 20 20 20  erbose)..       
12b90 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12bb0 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e  TraceOps.DebugAn
12bc0 64 54 72 61 63 65 28 54 72 61 63 65 50 72 69 6f  dTrace(TracePrio
12bd0 72 69 74 79 2e 48 69 67 68 65 73 74 2c 0d 0a 20  rity.Highest,.. 
12be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12bf0 20 20 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c         debugCall
12c00 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62  back, traceCallb
12c10 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d  ack, String.Form
12c20 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
12c30 20 20 20 20 20 20 20 20 20 20 20 20 20 22 72 6f               "ro
12c40 6f 74 4b 65 79 20 3d 20 7b 30 7d 2c 20 73 75 62  otKey = {0}, sub
12c50 4b 65 79 4e 61 6d 65 20 3d 20 7b 31 7d 22 2c 0d  KeyName = {1}",.
12c60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12c70 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70           ForDisp
12c80 6c 61 79 28 72 6f 6f 74 4b 65 79 29 2c 20 46 6f  lay(rootKey), Fo
12c90 72 44 69 73 70 6c 61 79 28 73 75 62 4b 65 79 4e  rDisplay(subKeyN
12ca0 61 6d 65 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ame)),..        
12cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12cc0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
12cd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12ce0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
12cf0 20 20 20 20 20 20 69 66 20 28 72 6f 6f 74 4b 65        if (rootKe
12d00 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y == null)..    
12d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12d20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
12d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12d40 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
12d50 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
12d60 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
12d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12d80 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20 41 6c 77      // HACK: Alw
12d90 61 79 73 20 6f 70 65 6e 20 61 20 6b 65 79 2c 20  ays open a key, 
12da0 72 61 74 68 65 72 20 74 68 61 6e 20 63 72 65 61  rather than crea
12db0 74 69 6e 67 20 6f 6e 65 20 77 68 65 6e 0d 0a 20  ting one when.. 
12dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12dd0 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 70 65 72     //       oper
12de0 61 74 69 6e 67 20 69 6e 20 22 77 68 61 74 2d 69  ating in "what-i
12df0 66 22 20 6d 6f 64 65 2e 0d 0a 20 20 20 20 20 20  f" mode...      
12e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
12e10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12e20 20 20 20 20 20 20 69 66 20 28 77 68 61 74 49 66        if (whatIf
12e30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
12e40 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12e60 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
12e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
12e80 20 48 41 43 4b 3a 20 41 74 74 65 6d 70 74 20 74   HACK: Attempt t
12e90 6f 20 6f 70 65 6e 20 74 68 65 20 73 70 65 63 69  o open the speci
12ea0 66 69 65 64 20 73 75 62 2d 6b 65 79 2e 20 20 49  fied sub-key.  I
12eb0 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  f..             
12ec0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
12ed0 20 20 20 20 74 68 69 73 20 66 61 69 6c 73 2c 20      this fails, 
12ee0 77 65 20 77 69 6c 6c 20 73 69 6d 70 6c 79 20 72  we will simply r
12ef0 65 74 75 72 6e 20 74 68 65 20 72 6f 6f 74 0d 0a  eturn the root..
12f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12f10 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
12f20 20 6b 65 79 20 69 74 73 65 6c 66 20 73 69 6e 63   key itself sinc
12f30 65 20 6e 6f 20 77 72 69 74 65 73 20 61 72 65 20  e no writes are 
12f40 61 6c 6c 6f 77 65 64 20 69 6e 0d 0a 20 20 20 20  allowed in..    
12f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12f60 20 20 20 20 2f 2f 20 20 20 20 20 20 20 22 77 68      //       "wh
12f70 61 74 2d 69 66 22 20 6d 6f 64 65 20 61 6e 79 68  at-if" mode anyh
12f80 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ow...           
12f90 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
12fa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12fb0 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65 67           MockReg
12fc0 69 73 74 72 79 4b 65 79 20 6b 65 79 20 3d 20 72  istryKey key = r
12fd0 6f 6f 74 4b 65 79 2e 4f 70 65 6e 53 75 62 4b 65  ootKey.OpenSubKe
12fe0 79 28 73 75 62 4b 65 79 4e 61 6d 65 29 3b 0d 0a  y(subKeyName);..
12ff0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13000 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
13010 20 28 6b 65 79 20 21 3d 20 6e 75 6c 6c 29 20 3f   (key != null) ?
13020 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65                ke
13040 79 20 3a 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69  y : new MockRegi
13050 73 74 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20  stryKey(..      
13060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13070 20 20 20 20 20 20 20 20 20 20 72 6f 6f 74 4b 65            rootKe
13080 79 2c 20 73 75 62 4b 65 79 4e 61 6d 65 2c 20 77  y, subKeyName, w
13090 68 61 74 49 66 2c 20 66 61 6c 73 65 2c 20 66 61  hatIf, false, fa
130a0 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  lse);..         
130b0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
130c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
130d0 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
130e0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
130f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13100 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65         return ne
13110 77 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65  w MockRegistryKe
13120 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y(..            
13130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13140 72 6f 6f 74 4b 65 79 2e 43 72 65 61 74 65 53 75  rootKey.CreateSu
13150 62 4b 65 79 28 73 75 62 4b 65 79 4e 61 6d 65 29  bKey(subKeyName)
13160 2c 20 77 68 61 74 49 66 2c 20 66 61 6c 73 65 2c  , whatIf, false,
13170 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 61                fa
13190 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  lse);..         
131a0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
131b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
131c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
131d0 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20   finally..      
131e0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
131f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13200 20 4d 61 79 62 65 4c 6f 67 4f 70 65 72 61 74 69   MaybeLogOperati
13210 6f 6e 28 47 65 74 4d 65 74 68 6f 64 4e 61 6d 65  on(GetMethodName
13220 28 29 2c 20 72 6f 6f 74 4b 65 79 2c 20 73 75 62  (), rootKey, sub
13230 4b 65 79 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  KeyName);....   
13240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13250 20 73 75 62 4b 65 79 73 43 72 65 61 74 65 64 2b   subKeysCreated+
13260 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  +;..            
13270 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
13280 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
13290 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132d0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
132e0 20 20 20 20 20 20 20 5b 4d 65 74 68 6f 64 49 6d         [MethodIm
132f0 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70 74  pl(MethodImplOpt
13300 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29  ions.NoInlining)
13310 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ]..            p
13320 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69  ublic static voi
13330 64 20 44 65 6c 65 74 65 53 75 62 4b 65 79 28 0d  d DeleteSubKey(.
13340 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13350 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
13360 20 72 6f 6f 74 4b 65 79 2c 0d 0a 20 20 20 20 20   rootKey,..     
13370 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
13380 67 20 73 75 62 4b 65 79 4e 61 6d 65 2c 0d 0a 20  g subKeyName,.. 
13390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
133a0 6f 6f 6c 20 74 68 72 6f 77 4f 6e 4d 69 73 73 69  ool throwOnMissi
133b0 6e 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng,..           
133c0 20 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66       bool whatIf
133d0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
133e0 20 20 20 62 6f 6f 6c 20 76 65 72 62 6f 73 65 0d     bool verbose.
133f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13400 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
13410 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
13420 20 20 20 69 66 20 28 76 65 72 62 6f 73 65 29 0d     if (verbose).
13430 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13440 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
13450 20 20 20 20 20 20 20 20 54 72 61 63 65 4f 70 73          TraceOps
13460 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 54  .DebugAndTrace(T
13470 72 61 63 65 50 72 69 6f 72 69 74 79 2e 48 69 67  racePriority.Hig
13480 68 65 73 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  hest,..         
13490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
134a0 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72  ebugCallback, tr
134b0 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72  aceCallback, Str
134c0 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
134d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
134e0 20 20 20 20 20 22 72 6f 6f 74 4b 65 79 20 3d 20       "rootKey = 
134f0 7b 30 7d 2c 20 73 75 62 4b 65 79 4e 61 6d 65 20  {0}, subKeyName 
13500 3d 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  = {1}",..       
13510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13520 20 46 6f 72 44 69 73 70 6c 61 79 28 72 6f 6f 74   ForDisplay(root
13530 4b 65 79 29 2c 20 46 6f 72 44 69 73 70 6c 61 79  Key), ForDisplay
13540 28 73 75 62 4b 65 79 4e 61 6d 65 29 29 2c 0d 0a  (subKeyName)),..
13550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13560 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
13570 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20  egory);..       
13580 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
13590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
135a0 20 28 72 6f 6f 74 4b 65 79 20 3d 3d 20 6e 75 6c   (rootKey == nul
135b0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
135c0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
135d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
135e0 20 20 20 69 66 20 28 21 77 68 61 74 49 66 29 0d     if (!whatIf).
135f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13600 20 20 20 20 20 72 6f 6f 74 4b 65 79 2e 44 65 6c       rootKey.Del
13610 65 74 65 53 75 62 4b 65 79 28 73 75 62 4b 65 79  eteSubKey(subKey
13620 4e 61 6d 65 2c 20 74 68 72 6f 77 4f 6e 4d 69 73  Name, throwOnMis
13630 73 69 6e 67 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sing);....      
13640 20 20 20 20 20 20 20 20 20 20 4d 61 79 62 65 4c            MaybeL
13650 6f 67 4f 70 65 72 61 74 69 6f 6e 28 47 65 74 4d  ogOperation(GetM
13660 65 74 68 6f 64 4e 61 6d 65 28 29 2c 20 72 6f 6f  ethodName(), roo
13670 74 4b 65 79 2c 20 73 75 62 4b 65 79 4e 61 6d 65  tKey, subKeyName
13680 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
13690 20 20 20 20 20 20 73 75 62 4b 65 79 73 44 65 6c        subKeysDel
136a0 65 74 65 64 2b 2b 3b 0d 0a 20 20 20 20 20 20 20  eted++;..       
136b0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
136c0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
136d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
136e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
136f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13700 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
13710 20 20 20 20 20 20 20 20 20 5b 4d 65 74 68 6f 64           [Method
13720 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c 4f  Impl(MethodImplO
13730 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e  ptions.NoInlinin
13740 67 29 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  g)]..           
13750 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76   public static v
13760 6f 69 64 20 44 65 6c 65 74 65 53 75 62 4b 65 79  oid DeleteSubKey
13770 54 72 65 65 28 0d 0a 20 20 20 20 20 20 20 20 20  Tree(..         
13780 20 20 20 20 20 20 20 4d 6f 63 6b 52 65 67 69 73         MockRegis
13790 74 72 79 4b 65 79 20 72 6f 6f 74 4b 65 79 2c 0d  tryKey rootKey,.
137a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
137b0 20 73 74 72 69 6e 67 20 73 75 62 4b 65 79 4e 61   string subKeyNa
137c0 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
137d0 20 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66       bool whatIf
137e0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
137f0 20 20 20 62 6f 6f 6c 20 76 65 72 62 6f 73 65 0d     bool verbose.
13800 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13810 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
13820 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
13830 20 20 20 69 66 20 28 76 65 72 62 6f 73 65 29 0d     if (verbose).
13840 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13850 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
13860 20 20 20 20 20 20 20 20 54 72 61 63 65 4f 70 73          TraceOps
13870 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 54  .DebugAndTrace(T
13880 72 61 63 65 50 72 69 6f 72 69 74 79 2e 48 69 67  racePriority.Hig
13890 68 65 73 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  hest,..         
138a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
138b0 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72  ebugCallback, tr
138c0 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72  aceCallback, Str
138d0 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
138e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
138f0 20 20 20 20 20 22 72 6f 6f 74 4b 65 79 20 3d 20       "rootKey = 
13900 7b 30 7d 2c 20 73 75 62 4b 65 79 4e 61 6d 65 20  {0}, subKeyName 
13910 3d 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  = {1}",..       
13920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13930 20 46 6f 72 44 69 73 70 6c 61 79 28 72 6f 6f 74   ForDisplay(root
13940 4b 65 79 29 2c 20 46 6f 72 44 69 73 70 6c 61 79  Key), ForDisplay
13950 28 73 75 62 4b 65 79 4e 61 6d 65 29 29 2c 0d 0a  (subKeyName)),..
13960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13970 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
13980 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20  egory);..       
13990 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
139a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
139b0 20 28 72 6f 6f 74 4b 65 79 20 3d 3d 20 6e 75 6c   (rootKey == nul
139c0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
139d0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
139e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
139f0 20 20 20 69 66 20 28 21 77 68 61 74 49 66 29 0d     if (!whatIf).
13a00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13a10 20 20 20 20 20 72 6f 6f 74 4b 65 79 2e 44 65 6c       rootKey.Del
13a20 65 74 65 53 75 62 4b 65 79 54 72 65 65 28 73 75  eteSubKeyTree(su
13a30 62 4b 65 79 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  bKeyName);....  
13a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61                Ma
13a50 79 62 65 4c 6f 67 4f 70 65 72 61 74 69 6f 6e 28  ybeLogOperation(
13a60 47 65 74 4d 65 74 68 6f 64 4e 61 6d 65 28 29 2c  GetMethodName(),
13a70 20 72 6f 6f 74 4b 65 79 2c 20 73 75 62 4b 65 79   rootKey, subKey
13a80 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Name);....      
13a90 20 20 20 20 20 20 20 20 20 20 73 75 62 4b 65 79            subKey
13aa0 73 44 65 6c 65 74 65 64 2b 2b 3b 0d 0a 20 20 20  sDeleted++;..   
13ab0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
13ac0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
13ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
13b10 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 4d 65  .            [Me
13b20 74 68 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49  thodImpl(MethodI
13b30 6d 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c  mplOptions.NoInl
13b40 69 6e 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20  ining)]..       
13b50 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
13b60 69 63 20 73 74 72 69 6e 67 5b 5d 20 47 65 74 53  ic string[] GetS
13b70 75 62 4b 65 79 4e 61 6d 65 73 28 0d 0a 20 20 20  ubKeyNames(..   
13b80 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63               Moc
13b90 6b 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79  kRegistryKey key
13ba0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
13bb0 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66 2c 0d     bool whatIf,.
13bc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13bd0 20 62 6f 6f 6c 20 76 65 72 62 6f 73 65 0d 0a 20   bool verbose.. 
13be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
13bf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
13c00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13c10 20 69 66 20 28 76 65 72 62 6f 73 65 29 0d 0a 20   if (verbose).. 
13c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
13c30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13c40 20 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44        TraceOps.D
13c50 65 62 75 67 41 6e 64 54 72 61 63 65 28 54 72 61  ebugAndTrace(Tra
13c60 63 65 50 72 69 6f 72 69 74 79 2e 48 69 67 68 2c  cePriority.High,
13c70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13c80 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43            debugC
13c90 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61  allback, traceCa
13ca0 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46  llback, String.F
13cb0 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
13cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13cd0 22 6b 65 79 20 3d 20 7b 30 7d 22 2c 20 46 6f 72  "key = {0}", For
13ce0 44 69 73 70 6c 61 79 28 6b 65 79 29 29 2c 20 74  Display(key)), t
13cf0 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
13d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13d10 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
13d20 20 20 20 20 20 69 66 20 28 6b 65 79 20 3d 3d 20       if (key == 
13d30 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
13d40 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
13d50 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
13d60 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
13d70 6e 20 6b 65 79 2e 47 65 74 53 75 62 4b 65 79 4e  n key.GetSubKeyN
13d80 61 6d 65 73 28 29 3b 0d 0a 20 20 20 20 20 20 20  ames();..       
13d90 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
13da0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
13db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
13df0 20 20 20 20 20 20 20 20 20 5b 4d 65 74 68 6f 64           [Method
13e00 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c 4f  Impl(MethodImplO
13e10 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e  ptions.NoInlinin
13e20 67 29 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  g)]..           
13e30 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 6f   public static o
13e40 62 6a 65 63 74 20 47 65 74 56 61 6c 75 65 28 0d  bject GetValue(.
13e50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13e60 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
13e70 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20 20   key,..         
13e80 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61         string na
13e90 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
13ea0 20 20 20 20 20 6f 62 6a 65 63 74 20 64 65 66 61       object defa
13eb0 75 6c 74 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20  ultValue,..     
13ec0 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
13ed0 77 68 61 74 49 66 2c 0d 0a 20 20 20 20 20 20 20  whatIf,..       
13ee0 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 76 65           bool ve
13ef0 72 62 6f 73 65 0d 0a 20 20 20 20 20 20 20 20 20  rbose..         
13f00 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
13f10 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13f20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 65 72           if (ver
13f30 62 6f 73 65 29 0d 0a 20 20 20 20 20 20 20 20 20  bose)..         
13f40 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
13f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
13f60 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54  aceOps.DebugAndT
13f70 72 61 63 65 28 54 72 61 63 65 50 72 69 6f 72 69  race(TracePriori
13f80 74 79 2e 48 69 67 68 2c 0d 0a 20 20 20 20 20 20  ty.High,..      
13f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13fa0 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c    debugCallback,
13fb0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20   traceCallback, 
13fc0 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
13fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13fe0 20 20 20 20 20 20 20 20 22 6b 65 79 20 3d 20 7b          "key = {
13ff0 30 7d 2c 20 6e 61 6d 65 20 3d 20 7b 31 7d 2c 20  0}, name = {1}, 
14000 64 65 66 61 75 6c 74 56 61 6c 75 65 20 3d 20 7b  defaultValue = {
14010 32 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  2}",..          
14020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f                Fo
14030 72 44 69 73 70 6c 61 79 28 6b 65 79 29 2c 20 46  rDisplay(key), F
14040 6f 72 44 69 73 70 6c 61 79 28 6e 61 6d 65 29 2c  orDisplay(name),
14050 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14060 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73            ForDis
14070 70 6c 61 79 28 64 65 66 61 75 6c 74 56 61 6c 75  play(defaultValu
14080 65 29 29 2c 20 74 72 61 63 65 43 61 74 65 67 6f  e)), traceCatego
14090 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ry);..          
140a0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
140b0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6b             if (k
140c0 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ey == null)..   
140d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
140e0 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
140f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14100 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 20 3d 20   object value = 
14110 6b 65 79 2e 47 65 74 56 61 6c 75 65 28 6e 61 6d  key.GetValue(nam
14120 65 2c 20 64 65 66 61 75 6c 74 56 61 6c 75 65 29  e, defaultValue)
14130 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
14140 20 20 20 20 20 6b 65 79 56 61 6c 75 65 73 52 65       keyValuesRe
14150 61 64 2b 2b 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ad++;....       
14160 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
14170 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
14180 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
14190 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
141a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
141b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
141c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
141d0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
141e0 20 20 20 20 20 20 20 20 5b 4d 65 74 68 6f 64 49          [MethodI
141f0 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70  mpl(MethodImplOp
14200 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67  tions.NoInlining
14210 29 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  )]..            
14220 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
14230 69 64 20 53 65 74 56 61 6c 75 65 28 0d 0a 20 20  id SetValue(..  
14240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f                Mo
14250 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65  ckRegistryKey ke
14260 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
14270 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c      string name,
14280 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14290 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 2c 0d    object value,.
142a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
142b0 20 62 6f 6f 6c 20 77 68 61 74 49 66 2c 0d 0a 20   bool whatIf,.. 
142c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
142d0 6f 6f 6c 20 76 65 72 62 6f 73 65 0d 0a 20 20 20  ool verbose..   
142e0 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
142f0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
14300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
14310 66 20 28 76 65 72 62 6f 73 65 29 0d 0a 20 20 20  f (verbose)..   
14320 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
14330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14340 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62      TraceOps.Deb
14350 75 67 41 6e 64 54 72 61 63 65 28 54 72 61 63 65  ugAndTrace(Trace
14360 50 72 69 6f 72 69 74 79 2e 48 69 67 68 65 73 74  Priority.Highest
14370 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
14380 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67             debug
14390 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43  Callback, traceC
143a0 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e  allback, String.
143b0 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
143c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
143d0 20 22 6b 65 79 20 3d 20 7b 30 7d 2c 20 6e 61 6d   "key = {0}, nam
143e0 65 20 3d 20 7b 31 7d 2c 20 76 61 6c 75 65 20 3d  e = {1}, value =
143f0 20 7b 32 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {2}",..        
14400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14410 46 6f 72 44 69 73 70 6c 61 79 28 6b 65 79 29 2c  ForDisplay(key),
14420 20 46 6f 72 44 69 73 70 6c 61 79 28 6e 61 6d 65   ForDisplay(name
14430 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 76 61  ), ForDisplay(va
14440 6c 75 65 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  lue)),..        
14450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14460 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
14470 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14480 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
14490 20 20 20 20 20 20 69 66 20 28 6b 65 79 20 3d 3d        if (key ==
144a0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
144b0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
144c0 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  rn;....         
144d0 20 20 20 20 20 20 20 69 66 20 28 21 77 68 61 74         if (!what
144e0 49 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  If)..           
144f0 20 20 20 20 20 20 20 20 20 6b 65 79 2e 53 65 74           key.Set
14500 56 61 6c 75 65 28 6e 61 6d 65 2c 20 76 61 6c 75  Value(name, valu
14510 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
14520 20 20 20 20 20 20 20 4d 61 79 62 65 4c 6f 67 4f         MaybeLogO
14530 70 65 72 61 74 69 6f 6e 28 47 65 74 4d 65 74 68  peration(GetMeth
14540 6f 64 4e 61 6d 65 28 29 2c 20 6b 65 79 2c 20 6e  odName(), key, n
14550 61 6d 65 2c 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  ame, value);....
14560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14570 6b 65 79 56 61 6c 75 65 73 57 72 69 74 74 65 6e  keyValuesWritten
14580 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ++;..           
14590 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
145a0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
145b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145e0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
145f0 20 20 20 20 20 5b 4d 65 74 68 6f 64 49 6d 70 6c       [MethodImpl
14600 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70 74 69 6f  (MethodImplOptio
14610 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d  ns.NoInlining)].
14620 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
14630 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69 64 20  lic static void 
14640 44 65 6c 65 74 65 56 61 6c 75 65 28 0d 0a 20 20  DeleteValue(..  
14650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f                Mo
14660 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65  ckRegistryKey ke
14670 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
14680 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c      string name,
14690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
146a0 20 20 62 6f 6f 6c 20 74 68 72 6f 77 4f 6e 4d 69    bool throwOnMi
146b0 73 73 69 6e 67 2c 0d 0a 20 20 20 20 20 20 20 20  ssing,..        
146c0 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61          bool wha
146d0 74 49 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf,..          
146e0 20 20 20 20 20 20 62 6f 6f 6c 20 76 65 72 62 6f        bool verbo
146f0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
14700 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
14710 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
14720 20 20 20 20 20 20 69 66 20 28 76 65 72 62 6f 73        if (verbos
14730 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
14740 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
14750 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
14760 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
14770 65 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e  e(TracePriority.
14780 48 69 67 68 65 73 74 2c 0d 0a 20 20 20 20 20 20  Highest,..      
14790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
147a0 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c    debugCallback,
147b0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20   traceCallback, 
147c0 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
147d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
147e0 20 20 20 20 20 20 20 20 22 6b 65 79 20 3d 20 7b          "key = {
147f0 30 7d 2c 20 6e 61 6d 65 20 3d 20 7b 31 7d 22 2c  0}, name = {1}",
14800 20 46 6f 72 44 69 73 70 6c 61 79 28 6b 65 79 29   ForDisplay(key)
14810 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
14820 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69             ForDi
14830 73 70 6c 61 79 28 6e 61 6d 65 29 29 2c 20 74 72  splay(name)), tr
14840 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20  aceCategory);.. 
14850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
14860 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
14870 20 20 20 20 69 66 20 28 6b 65 79 20 3d 3d 20 6e      if (key == n
14880 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
14890 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
148a0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
148b0 20 20 20 20 20 69 66 20 28 21 77 68 61 74 49 66       if (!whatIf
148c0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
148d0 20 20 20 20 20 20 20 6b 65 79 2e 44 65 6c 65 74         key.Delet
148e0 65 56 61 6c 75 65 28 6e 61 6d 65 2c 20 74 68 72  eValue(name, thr
148f0 6f 77 4f 6e 4d 69 73 73 69 6e 67 29 3b 0d 0a 0d  owOnMissing);...
14900 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14910 20 4d 61 79 62 65 4c 6f 67 4f 70 65 72 61 74 69   MaybeLogOperati
14920 6f 6e 28 47 65 74 4d 65 74 68 6f 64 4e 61 6d 65  on(GetMethodName
14930 28 29 2c 20 6b 65 79 2c 20 6e 61 6d 65 2c 20 6e  (), key, name, n
14940 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ull);....       
14950 20 20 20 20 20 20 20 20 20 6b 65 79 56 61 6c 75           keyValu
14960 65 73 44 65 6c 65 74 65 64 2b 2b 3b 0d 0a 20 20  esDeleted++;..  
14970 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
14980 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
14990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
149a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
149b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
149c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
149d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 4d  ..            [M
149e0 65 74 68 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64  ethodImpl(Method
149f0 49 6d 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e  ImplOptions.NoIn
14a00 6c 69 6e 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20  lining)]..      
14a10 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
14a20 74 69 63 20 69 6e 74 20 57 72 69 74 65 4f 70 65  tic int WriteOpe
14a30 72 61 74 69 6f 6e 4c 69 73 74 28 0d 0a 20 20 20  rationList(..   
14a40 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
14a50 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c 0d 0a 20  ing fileName,.. 
14a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
14a70 6f 6f 6c 20 76 65 72 62 6f 73 65 0d 0a 20 20 20  ool verbose..   
14a80 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
14a90 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
14aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
14ab0 6e 74 20 63 6f 75 6e 74 20 3d 20 30 3b 0d 0a 0d  nt count = 0;...
14ac0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14ad0 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75   if (String.IsNu
14ae0 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e 61  llOrEmpty(fileNa
14af0 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
14b00 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
14b10 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
14b20 28 76 65 72 62 6f 73 65 29 0d 0a 20 20 20 20 20  (verbose)..     
14b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
14b40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14b50 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f            TraceO
14b60 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65  ps.DebugAndTrace
14b70 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 48  (TracePriority.H
14b80 69 67 68 65 73 74 2c 0d 0a 20 20 20 20 20 20 20  ighest,..       
14b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14ba0 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61       debugCallba
14bb0 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63  ck, traceCallbac
14bc0 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
14bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14be0 22 52 65 67 69 73 74 72 79 20 6f 70 65 72 61 74  "Registry operat
14bf0 69 6f 6e 20 6c 6f 67 20 66 69 6c 65 20 6e 61 6d  ion log file nam
14c00 65 20 6e 6f 74 20 73 65 74 2e 22 2c 0d 0a 20 20  e not set.",..  
14c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14c20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
14c30 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20  ategory);..     
14c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
14c50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
14c60 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63          return c
14c70 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  ount;..         
14c80 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
14c90 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
14ca0 20 28 73 79 6e 63 52 6f 6f 74 29 20 2f 2a 20 54   (syncRoot) /* T
14cb0 52 41 4e 53 41 43 54 49 4f 4e 41 4c 20 2a 2f 0d  RANSACTIONAL */.
14cc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14cd0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
14ce0 20 20 20 20 20 20 20 20 69 66 20 28 6f 70 65 72          if (oper
14cf0 61 74 69 6f 6e 4c 69 73 74 20 3d 3d 20 6e 75 6c  ationList == nul
14d00 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
14d10 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
14d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14d30 20 20 20 69 66 20 28 76 65 72 62 6f 73 65 29 0d     if (verbose).
14d40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14d50 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
14d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14d70 20 20 20 20 20 20 20 20 54 72 61 63 65 4f 70 73          TraceOps
14d80 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 54  .DebugAndTrace(T
14d90 72 61 63 65 50 72 69 6f 72 69 74 79 2e 48 69 67  racePriority.Hig
14da0 68 65 73 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  hest,..         
14db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14dc0 20 20 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c         debugCall
14dd0 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62  back, traceCallb
14de0 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ack,..          
14df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14e00 20 20 20 20 20 20 22 52 65 67 69 73 74 72 79 20        "Registry 
14e10 6f 70 65 72 61 74 69 6f 6e 20 6c 69 73 74 20 69  operation list i
14e20 73 20 69 6e 76 61 6c 69 64 2e 22 2c 0d 0a 20 20  s invalid.",..  
14e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
14e50 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20  aceCategory);.. 
14e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14e70 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
14e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14e90 20 20 20 20 72 65 74 75 72 6e 20 63 6f 75 6e 74      return count
14ea0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
14eb0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
14ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14ed0 75 73 69 6e 67 20 28 53 74 72 65 61 6d 57 72 69  using (StreamWri
14ee0 74 65 72 20 73 74 72 65 61 6d 57 72 69 74 65 72  ter streamWriter
14ef0 20 3d 20 6e 65 77 20 53 74 72 65 61 6d 57 72 69   = new StreamWri
14f00 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ter(..          
14f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14f20 20 20 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20    fileName))..  
14f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14f40 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
14f50 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72               for
14f60 65 61 63 68 20 28 52 65 67 69 73 74 72 79 4f 70  each (RegistryOp
14f70 65 72 61 74 69 6f 6e 20 6f 70 65 72 61 74 69 6f  eration operatio
14f80 6e 20 69 6e 20 6f 70 65 72 61 74 69 6f 6e 4c 69  n in operationLi
14f90 73 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  st)..           
14fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
14fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14fc0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
14fd0 6f 70 65 72 61 74 69 6f 6e 20 3d 3d 20 6e 75 6c  operation == nul
14fe0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
14ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15000 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d      continue;...
15010 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15020 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
15030 65 61 6d 57 72 69 74 65 72 2e 57 72 69 74 65 4c  eamWriter.WriteL
15040 69 6e 65 28 6f 70 65 72 61 74 69 6f 6e 2e 54 6f  ine(operation.To
15050 53 74 72 69 6e 67 28 29 29 3b 0d 0a 20 20 20 20  String());..    
15060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15070 20 20 20 20 20 20 20 20 63 6f 75 6e 74 2b 2b 3b          count++;
15080 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15090 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
150a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
150b0 20 20 20 20 20 20 20 73 74 72 65 61 6d 57 72 69         streamWri
150c0 74 65 72 2e 46 6c 75 73 68 28 29 3b 0d 0a 20 20  ter.Flush();..  
150d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
150e0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
150f0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
15100 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 65            if (ve
15110 72 62 6f 73 65 29 0d 0a 20 20 20 20 20 20 20 20  rbose)..        
15120 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
15130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
15140 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64  raceOps.DebugAnd
15150 54 72 61 63 65 28 54 72 61 63 65 50 72 69 6f 72  Trace(TracePrior
15160 69 74 79 2e 48 69 67 68 65 73 74 2c 0d 0a 20 20  ity.Highest,..  
15170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15180 20 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62        debugCallb
15190 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61  ack, traceCallba
151a0 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ck, String.Forma
151b0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
151c0 20 20 20 20 20 20 20 20 20 20 20 20 22 57 72 6f              "Wro
151d0 74 65 20 7b 30 7d 20 72 65 67 69 73 74 72 79 20  te {0} registry 
151e0 6f 70 65 72 61 74 69 6f 6e 73 20 74 6f 20 69 74  operations to it
151f0 73 20 6c 6f 67 20 66 69 6c 65 2e 22 2c 0d 0a 20  s log file.",.. 
15200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15210 20 20 20 20 20 20 20 63 6f 75 6e 74 29 2c 20 74         count), t
15220 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
15230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15240 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
15250 20 20 20 20 20 72 65 74 75 72 6e 20 63 6f 75 6e       return coun
15260 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t;..            
15270 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
15280 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
15290 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
152a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
152e0 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
152f0 69 6f 6e 20 50 72 69 76 61 74 65 20 53 74 61 74  ion Private Stat
15300 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  ic Methods..    
15310 20 20 20 20 20 20 20 20 5b 4d 65 74 68 6f 64 49          [MethodI
15320 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70  mpl(MethodImplOp
15330 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67  tions.NoInlining
15340 29 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  )]..            
15350 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
15360 74 72 69 6e 67 20 47 65 74 4d 65 74 68 6f 64 4e  tring GetMethodN
15370 61 6d 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20  ame()..         
15380 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
15390 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 72 61        return Tra
153a0 63 65 4f 70 73 2e 47 65 74 4d 65 74 68 6f 64 4e  ceOps.GetMethodN
153b0 61 6d 65 28 6e 75 6c 6c 2c 20 31 29 3b 0d 0a 20  ame(null, 1);.. 
153c0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
153d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
153e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
153f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
15420 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
15430 72 69 76 61 74 65 20 73 74 61 74 69 63 20 76 6f  rivate static vo
15440 69 64 20 4d 61 79 62 65 4c 6f 67 4f 70 65 72 61  id MaybeLogOpera
15450 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  tion(..         
15460 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6d 65         string me
15470 74 68 6f 64 4e 61 6d 65 2c 0d 0a 20 20 20 20 20  thodName,..     
15480 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52             MockR
15490 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79 2c 0d  egistryKey key,.
154a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
154b0 20 73 74 72 69 6e 67 20 73 75 62 4b 65 79 4e 61   string subKeyNa
154c0 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  me..            
154d0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
154e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
154f0 20 20 20 20 20 20 4d 61 79 62 65 4c 6f 67 4f 70        MaybeLogOp
15500 65 72 61 74 69 6f 6e 28 6d 65 74 68 6f 64 4e 61  eration(methodNa
15510 6d 65 2c 20 6b 65 79 2c 20 73 75 62 4b 65 79 4e  me, key, subKeyN
15520 61 6d 65 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 29  ame, null, null)
15530 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
15540 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
15550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15590 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
155a0 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
155b0 63 20 76 6f 69 64 20 4d 61 79 62 65 4c 6f 67 4f  c void MaybeLogO
155c0 70 65 72 61 74 69 6f 6e 28 0d 0a 20 20 20 20 20  peration(..     
155d0 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
155e0 67 20 6d 65 74 68 6f 64 4e 61 6d 65 2c 0d 0a 20  g methodName,.. 
155f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
15600 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 6b  ockRegistryKey k
15610 65 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ey,..           
15620 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75       string valu
15630 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  eName,..        
15640 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76          object v
15650 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20  alue..          
15660 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
15670 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
15680 20 20 20 20 20 20 20 20 4d 61 79 62 65 4c 6f 67          MaybeLog
15690 4f 70 65 72 61 74 69 6f 6e 28 6d 65 74 68 6f 64  Operation(method
156a0 4e 61 6d 65 2c 20 6b 65 79 2c 20 6e 75 6c 6c 2c  Name, key, null,
156b0 20 76 61 6c 75 65 4e 61 6d 65 2c 20 76 61 6c 75   valueName, valu
156c0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
156d0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
156e0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
156f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15700 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
15730 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
15740 74 69 63 20 76 6f 69 64 20 4d 61 79 62 65 4c 6f  tic void MaybeLo
15750 67 4f 70 65 72 61 74 69 6f 6e 28 0d 0a 20 20 20  gOperation(..   
15760 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
15770 69 6e 67 20 6d 65 74 68 6f 64 4e 61 6d 65 2c 0d  ing methodName,.
15780 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15790 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
157a0 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20 20   key,..         
157b0 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 75         string su
157c0 62 4b 65 79 4e 61 6d 65 2c 0d 0a 20 20 20 20 20  bKeyName,..     
157d0 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
157e0 67 20 76 61 6c 75 65 4e 61 6d 65 2c 0d 0a 20 20  g valueName,..  
157f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62                ob
15800 6a 65 63 74 20 76 61 6c 75 65 0d 0a 20 20 20 20  ject value..    
15810 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
15820 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
15830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
15840 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 20 2f 2a  ck (syncRoot) /*
15850 20 54 52 41 4e 53 41 43 54 49 4f 4e 41 4c 20 2a   TRANSACTIONAL *
15860 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
15870 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
15880 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 70            if (op
15890 65 72 61 74 69 6f 6e 4c 69 73 74 20 3d 3d 20 6e  erationList == n
158a0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
158b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
158c0 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  turn;....       
158d0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
158e0 28 6d 65 74 68 6f 64 4e 61 6d 65 20 21 3d 20 6e  (methodName != n
158f0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
15900 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
15910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15920 20 20 20 20 20 73 74 72 69 6e 67 20 74 79 70 65       string type
15930 50 72 65 66 69 78 20 3d 20 53 74 72 69 6e 67 2e  Prefix = String.
15940 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
15950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15960 20 20 20 20 20 22 7b 30 7d 7b 31 7d 22 2c 20 74       "{0}{1}", t
15970 79 70 65 6f 66 28 52 65 67 69 73 74 72 79 48 65  ypeof(RegistryHe
15980 6c 70 65 72 29 2e 4e 61 6d 65 2c 0d 0a 20 20 20  lper).Name,..   
15990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
159a0 20 20 20 20 20 20 20 20 20 54 79 70 65 2e 44 65           Type.De
159b0 6c 69 6d 69 74 65 72 29 3b 0d 0a 0d 0a 20 20 20  limiter);....   
159c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
159d0 20 20 20 20 20 69 66 20 28 6d 65 74 68 6f 64 4e       if (methodN
159e0 61 6d 65 2e 53 74 61 72 74 73 57 69 74 68 28 0d  ame.StartsWith(.
159f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15a10 20 74 79 70 65 50 72 65 66 69 78 2c 20 53 74 72   typePrefix, Str
15a20 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72  ingComparison.Or
15a30 64 69 6e 61 6c 29 29 0d 0a 20 20 20 20 20 20 20  dinal))..       
15a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15a50 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
15a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15a70 6d 65 74 68 6f 64 4e 61 6d 65 20 3d 20 6d 65 74  methodName = met
15a80 68 6f 64 4e 61 6d 65 2e 53 75 62 73 74 72 69 6e  hodName.Substrin
15a90 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g(..            
15aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15ab0 20 20 20 20 74 79 70 65 50 72 65 66 69 78 2e 4c      typePrefix.L
15ac0 65 6e 67 74 68 29 3b 0d 0a 20 20 20 20 20 20 20  ength);..       
15ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15ae0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
15af0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
15b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15b10 20 6f 70 65 72 61 74 69 6f 6e 4c 69 73 74 2e 41   operationList.A
15b20 64 64 28 6e 65 77 20 52 65 67 69 73 74 72 79 4f  dd(new RegistryO
15b30 70 65 72 61 74 69 6f 6e 28 0d 0a 20 20 20 20 20  peration(..     
15b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15b50 20 20 20 6d 65 74 68 6f 64 4e 61 6d 65 2c 20 6b     methodName, k
15b60 65 79 2c 20 73 75 62 4b 65 79 4e 61 6d 65 2c 20  ey, subKeyName, 
15b70 76 61 6c 75 65 4e 61 6d 65 2c 20 76 61 6c 75 65  valueName, value
15b80 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ));..           
15b90 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
15ba0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
15bb0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
15bc0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
15bd0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
15be0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
15bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
15c30 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
15c40 6f 6e 20 52 65 67 69 73 74 72 79 4f 70 65 72 61  on RegistryOpera
15c50 74 69 6f 6e 4c 69 73 74 20 43 6c 61 73 73 0d 0a  tionList Class..
15c60 20 20 20 20 20 20 20 20 5b 53 65 72 69 61 6c 69          [Seriali
15c70 7a 61 62 6c 65 28 29 5d 0d 0a 20 20 20 20 20 20  zable()]..      
15c80 20 20 70 72 69 76 61 74 65 20 73 65 61 6c 65 64    private sealed
15c90 20 63 6c 61 73 73 20 52 65 67 69 73 74 72 79 4f   class RegistryO
15ca0 70 65 72 61 74 69 6f 6e 4c 69 73 74 20 3a 0d 0a  perationList :..
15cb0 20 20 20 20 20 20 20 20 20 20 20 20 4c 69 73 74              List
15cc0 3c 52 65 67 69 73 74 72 79 4f 70 65 72 61 74 69  <RegistryOperati
15cd0 6f 6e 3e 2c 20 49 44 69 73 70 6f 73 61 62 6c 65  on>, IDisposable
15ce0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
15cf0 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
15d00 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63   Public Construc
15d10 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20  tors..          
15d20 20 20 70 75 62 6c 69 63 20 52 65 67 69 73 74 72    public Registr
15d30 79 4f 70 65 72 61 74 69 6f 6e 4c 69 73 74 28 29  yOperationList()
15d40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
15d50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15d60 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
15d70 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
15d80 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
15d90 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
15da0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
15db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
15df0 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
15e00 20 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61   IDisposable "Pa
15e10 74 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a  ttern" Members..
15e20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
15e30 61 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73 65  ate bool dispose
15e40 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d;..            
15e50 70 72 69 76 61 74 65 20 76 6f 69 64 20 43 68 65  private void Che
15e60 63 6b 44 69 73 70 6f 73 65 64 28 29 20 2f 2a 20  ckDisposed() /* 
15e70 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
15e80 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
15e90 20 20 20 20 20 20 20 20 20 69 66 20 28 21 64 69           if (!di
15ea0 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20  sposed)..       
15eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
15ec0 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  urn;....        
15ed0 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
15ee0 77 20 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64  w ObjectDisposed
15ef0 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20  Exception(..    
15f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15f10 74 79 70 65 6f 66 28 52 65 67 69 73 74 72 79 4f  typeof(RegistryO
15f20 70 65 72 61 74 69 6f 6e 4c 69 73 74 29 2e 4e 61  perationList).Na
15f30 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  me);..          
15f40 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
15f50 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
15f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f90 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
15fa0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 2f 2a        private /*
15fb0 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75   protected virtu
15fc0 61 6c 20 2a 2f 20 76 6f 69 64 20 44 69 73 70 6f  al */ void Dispo
15fd0 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se(..           
15fe0 20 20 20 20 20 62 6f 6f 6c 20 64 69 73 70 6f 73       bool dispos
15ff0 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ing..           
16000 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
16010 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
16020 20 20 20 20 20 20 20 69 66 20 28 21 64 69 73 70         if (!disp
16030 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20  osed)..         
16040 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
16050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
16060 20 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20   (disposing)..  
16070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16080 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
16090 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f               ///
160a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160c0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
160d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 69             // di
160e0 73 70 6f 73 65 20 6d 61 6e 61 67 65 64 20 72 65  spose managed re
160f0 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d  sources here....
16100 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16110 20 20 20 20 20 20 20 20 20 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 2f 2f 2f 0d 0a 0d  /////////////...
16140 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16150 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68           foreach
16160 20 28 52 65 67 69 73 74 72 79 4f 70 65 72 61 74   (RegistryOperat
16170 69 6f 6e 20 6f 70 65 72 61 74 69 6f 6e 20 69 6e  ion operation in
16180 20 74 68 69 73 29 0d 0a 20 20 20 20 20 20 20 20   this)..        
16190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
161a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
161b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
161c0 66 20 28 6f 70 65 72 61 74 69 6f 6e 20 3d 3d 20  f (operation == 
161d0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
161e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
161f0 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
16200 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
16210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16220 6f 70 65 72 61 74 69 6f 6e 2e 44 69 73 70 6f 73  operation.Dispos
16230 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  e();..          
16240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
16250 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
16260 20 20 20 20 20 20 20 20 20 20 20 43 6c 65 61 72             Clear
16270 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
16280 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
16290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
162a0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
162b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
162c0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
162d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
162e0 20 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67   release unmanag
162f0 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72  ed resources her
16300 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  e.....          
16310 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
16320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16340 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
16350 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
16360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16370 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 6f 62  // NOTE: This ob
16380 6a 65 63 74 20 69 73 20 6e 6f 77 20 64 69 73 70  ject is now disp
16390 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  osed...         
163a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
163b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
163c0 20 20 20 64 69 73 70 6f 73 65 64 20 3d 20 74 72     disposed = tr
163d0 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
163e0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
163f0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
16400 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
16410 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
16420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16460 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
16470 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61  #region IDisposa
16480 62 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20  ble Members..   
16490 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
164a0 76 6f 69 64 20 44 69 73 70 6f 73 65 28 29 0d 0a  void Dispose()..
164b0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
164c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44                 D
164d0 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20  ispose(true);.. 
164e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47                 G
164f0 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69  C.SuppressFinali
16500 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20  ze(this);..     
16510 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
16520 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
16530 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
16540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16580 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
16590 20 20 20 23 72 65 67 69 6f 6e 20 44 65 73 74 72     #region Destr
165a0 75 63 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  uctor..         
165b0 20 20 20 7e 52 65 67 69 73 74 72 79 4f 70 65 72     ~RegistryOper
165c0 61 74 69 6f 6e 4c 69 73 74 28 29 0d 0a 20 20 20  ationList()..   
165d0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
165e0 20 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70              Disp
165f0 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20  ose(false);..   
16600 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
16610 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
16620 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  on..        }.. 
16630 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
16640 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
16650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16690 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
166a0 23 72 65 67 69 6f 6e 20 52 65 67 69 73 74 72 79  #region Registry
166b0 4f 70 65 72 61 74 69 6f 6e 20 43 6c 61 73 73 0d  Operation Class.
166c0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
166d0 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 52 65   sealed class Re
166e0 67 69 73 74 72 79 4f 70 65 72 61 74 69 6f 6e 0d  gistryOperation.
166f0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
16700 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
16710 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74  Private Constant
16720 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  s..            p
16730 72 69 76 61 74 65 20 63 6f 6e 73 74 20 63 68 61  rivate const cha
16740 72 20 46 69 65 6c 64 44 65 6c 69 6d 69 74 65 72  r FieldDelimiter
16750 20 3d 20 27 5c 74 27 3b 0d 0a 20 20 20 20 20 20   = '\t';..      
16760 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f        private co
16770 6e 73 74 20 73 74 72 69 6e 67 20 4c 69 73 74 45  nst string ListE
16780 6c 65 6d 65 6e 74 44 65 6c 69 6d 69 74 65 72 20  lementDelimiter 
16790 3d 20 22 2c 20 22 3b 0d 0a 20 20 20 20 20 20 20  = ", ";..       
167a0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
167b0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
167c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
167d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
16810 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
16820 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20   Constructors.. 
16830 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
16840 63 20 52 65 67 69 73 74 72 79 4f 70 65 72 61 74  c RegistryOperat
16850 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
16860 20 20 20 20 20 20 73 74 72 69 6e 67 20 6d 65 74        string met
16870 68 6f 64 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  hodName,..      
16880 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65            MockRe
16890 67 69 73 74 72 79 4b 65 79 20 6b 65 79 2c 0d 0a  gistryKey key,..
168a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
168b0 73 74 72 69 6e 67 20 73 75 62 4b 65 79 4e 61 6d  string subKeyNam
168c0 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
168d0 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65      string value
168e0 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  Name,..         
168f0 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61         object va
16900 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lue..           
16910 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
16920 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
16930 20 20 20 20 20 20 20 74 68 69 73 2e 6d 65 74 68         this.meth
16940 6f 64 4e 61 6d 65 20 3d 20 6d 65 74 68 6f 64 4e  odName = methodN
16950 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
16960 20 20 20 20 20 20 74 68 69 73 2e 73 75 62 4b 65        this.subKe
16970 79 4e 61 6d 65 20 3d 20 73 75 62 4b 65 79 4e 61  yName = subKeyNa
16980 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
16990 20 20 20 20 20 74 68 69 73 2e 76 61 6c 75 65 4e       this.valueN
169a0 61 6d 65 20 3d 20 76 61 6c 75 65 4e 61 6d 65 3b  ame = valueName;
169b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
169c0 20 20 74 68 69 73 2e 76 61 6c 75 65 20 3d 20 76    this.value = v
169d0 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alue;....       
169e0 20 20 20 20 20 20 20 20 20 53 65 74 4b 65 79 28           SetKey(
169f0 6b 65 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  key);..         
16a00 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
16a10 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
16a20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
16a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
16a70 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
16a80 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d  region Private M
16a90 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
16aa0 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64      private void
16ab0 20 53 65 74 4b 65 79 28 0d 0a 20 20 20 20 20 20   SetKey(..      
16ac0 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65            MockRe
16ad0 67 69 73 74 72 79 4b 65 79 20 6b 65 79 0d 0a 20  gistryKey key.. 
16ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
16af0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
16b00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16b10 20 69 66 20 28 6b 65 79 20 21 3d 20 6e 75 6c 6c   if (key != null
16b20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
16b30 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
16b40 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
16b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16b60 20 20 2f 2f 20 4e 4f 54 45 3a 20 4d 61 6b 65 20    // NOTE: Make 
16b70 73 75 72 65 20 74 68 69 73 20 63 6f 70 79 20 6f  sure this copy o
16b80 66 20 74 68 65 20 72 6f 6f 74 20 72 65 67 69 73  f the root regis
16b90 74 72 79 20 6b 65 79 0d 0a 20 20 20 20 20 20 20  try key..       
16ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
16bb0 20 20 20 20 20 20 63 61 6e 6e 6f 74 20 62 65 20        cannot be 
16bc0 75 73 65 64 20 74 6f 20 61 63 63 69 64 65 6e 74  used to accident
16bd0 61 6c 6c 79 20 6d 61 6b 65 20 72 65 67 69 73 74  ally make regist
16be0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
16bf0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
16c00 20 63 68 61 6e 67 65 73 2e 20 20 41 6c 73 6f 2c   changes.  Also,
16c10 20 70 72 65 76 65 6e 74 20 74 68 69 73 20 4d 6f   prevent this Mo
16c20 63 6b 52 65 67 69 73 74 72 79 4b 65 79 0d 0a 20  ckRegistryKey.. 
16c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16c40 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 62 6a 65     //       obje
16c50 63 74 20 66 72 6f 6d 20 63 6c 6f 73 69 6e 67 20  ct from closing 
16c60 69 74 73 20 75 6e 64 65 72 6c 79 69 6e 67 20 72  its underlying r
16c70 65 67 69 73 74 72 79 0d 0a 20 20 20 20 20 20 20  egistry..       
16c80 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
16c90 20 20 20 20 20 20 6b 65 79 20 61 73 20 77 65 20        key as we 
16ca0 77 69 6c 6c 20 6e 65 65 64 20 69 74 20 6c 61 74  will need it lat
16cb0 65 72 2e 20 20 54 68 69 73 20 69 6e 73 74 61 6e  er.  This instan
16cc0 63 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ce..            
16cd0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
16ce0 20 77 69 6c 6c 20 63 6c 6f 73 65 20 69 74 2e 0d   will close it..
16cf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16d00 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
16d10 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
16d20 73 2e 6b 65 79 20 3d 20 6b 65 79 2e 43 6c 6f 6e  s.key = key.Clon
16d30 65 28 74 72 75 65 2c 20 74 72 75 65 2c 20 74 72  e(true, true, tr
16d40 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ue);....        
16d50 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 2e              key.
16d60 44 69 73 61 62 6c 65 43 6c 6f 73 65 28 29 3b 0d  DisableClose();.
16d70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16d80 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
16d90 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
16da0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
16db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16dc0 20 74 68 69 73 2e 6b 65 79 20 3d 20 6e 75 6c 6c   this.key = null
16dd0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
16de0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
16df0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
16e00 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
16e10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
16e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
16e60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72  ..            #r
16e70 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f  egion Public Pro
16e80 70 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20 20  perties..       
16e90 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72       private str
16ea0 69 6e 67 20 6d 65 74 68 6f 64 4e 61 6d 65 3b 0d  ing methodName;.
16eb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
16ec0 6c 69 63 20 73 74 72 69 6e 67 20 4d 65 74 68 6f  lic string Metho
16ed0 64 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20  dName..         
16ee0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
16ef0 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63        get { Chec
16f00 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74  kDisposed(); ret
16f10 75 72 6e 20 6d 65 74 68 6f 64 4e 61 6d 65 3b 20  urn methodName; 
16f20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
16f30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
16f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f80 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
16f90 20 20 20 70 72 69 76 61 74 65 20 4d 6f 63 6b 52     private MockR
16fa0 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79 3b 0d  egistryKey key;.
16fb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
16fc0 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79  lic MockRegistry
16fd0 4b 65 79 20 4b 65 79 0d 0a 20 20 20 20 20 20 20  Key Key..       
16fe0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
16ff0 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 43 68          get { Ch
17000 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72  eckDisposed(); r
17010 65 74 75 72 6e 20 6b 65 79 3b 20 7d 0d 0a 20 20  eturn key; }..  
17020 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
17030 20 20 20 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
17080 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
17090 69 76 61 74 65 20 73 74 72 69 6e 67 20 73 75 62  ivate string sub
170a0 4b 65 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  KeyName;..      
170b0 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72        public str
170c0 69 6e 67 20 53 75 62 4b 65 79 4e 61 6d 65 0d 0a  ing SubKeyName..
170d0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
170e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
170f0 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73  et { CheckDispos
17100 65 64 28 29 3b 20 72 65 74 75 72 6e 20 73 75 62  ed(); return sub
17110 4b 65 79 4e 61 6d 65 3b 20 7d 0d 0a 20 20 20 20  KeyName; }..    
17120 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
17130 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
17140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
17180 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
17190 61 74 65 20 73 74 72 69 6e 67 20 76 61 6c 75 65  ate string value
171a0 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
171b0 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67     public string
171c0 20 56 61 6c 75 65 4e 61 6d 65 0d 0a 20 20 20 20   ValueName..    
171d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
171e0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
171f0 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
17200 3b 20 72 65 74 75 72 6e 20 76 61 6c 75 65 4e 61  ; return valueNa
17210 6d 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  me; }..         
17220 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
17230 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
17240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17270 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
17280 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 6f         private o
17290 62 6a 65 63 74 20 76 61 6c 75 65 3b 0d 0a 20 20  bject value;..  
172a0 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
172b0 20 6f 62 6a 65 63 74 20 56 61 6c 75 65 0d 0a 20   object Value.. 
172c0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
172d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
172e0 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65  t { CheckDispose
172f0 64 28 29 3b 20 72 65 74 75 72 6e 20 76 61 6c 75  d(); return valu
17300 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
17310 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
17320 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
17330 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
17340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
17380 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72  ..            #r
17390 65 67 69 6f 6e 20 53 79 73 74 65 6d 2e 4f 62 6a  egion System.Obj
173a0 65 63 74 20 4f 76 65 72 72 69 64 65 73 0d 0a 20  ect Overrides.. 
173b0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
173c0 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20  c override bool 
173d0 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20  Equals(..       
173e0 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20           object 
173f0 6f 62 6a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  obj..           
17400 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
17410 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
17420 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
17430 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
17440 20 20 20 20 20 20 20 20 20 20 20 52 65 67 69 73             Regis
17450 74 72 79 4f 70 65 72 61 74 69 6f 6e 20 6f 70 65  tryOperation ope
17460 72 61 74 69 6f 6e 20 3d 20 6f 62 6a 20 61 73 20  ration = obj as 
17470 52 65 67 69 73 74 72 79 4f 70 65 72 61 74 69 6f  RegistryOperatio
17480 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  n;....          
17490 20 20 20 20 20 20 69 66 20 28 6f 70 65 72 61 74        if (operat
174a0 69 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ion == null)..  
174b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
174c0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
174d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
174e0 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 45     if (!String.E
174f0 71 75 61 6c 73 28 6f 70 65 72 61 74 69 6f 6e 2e  quals(operation.
17500 6d 65 74 68 6f 64 4e 61 6d 65 2c 20 6d 65 74 68  methodName, meth
17510 6f 64 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  odName))..      
17520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
17530 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
17540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
17550 66 20 28 21 4d 6f 63 6b 52 65 67 69 73 74 72 79  f (!MockRegistry
17560 4b 65 79 2e 45 71 75 61 6c 73 28 6f 70 65 72 61  Key.Equals(opera
17570 74 69 6f 6e 2e 6b 65 79 2c 20 6b 65 79 29 29 0d  tion.key, key)).
17580 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17590 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
175a0 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
175b0 20 20 20 20 20 20 69 66 20 28 21 4d 6f 63 6b 52        if (!MockR
175c0 65 67 69 73 74 72 79 4b 65 79 2e 4e 61 6d 65 45  egistryKey.NameE
175d0 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20  quals(..        
175e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
175f0 6f 70 65 72 61 74 69 6f 6e 2e 73 75 62 4b 65 79  operation.subKey
17600 4e 61 6d 65 2c 20 73 75 62 4b 65 79 4e 61 6d 65  Name, subKeyName
17610 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
17620 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
17630 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
17640 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  n false;..      
17650 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
17660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
17670 66 20 28 21 53 74 72 69 6e 67 2e 45 71 75 61 6c  f (!String.Equal
17680 73 28 6f 70 65 72 61 74 69 6f 6e 2e 76 61 6c 75  s(operation.valu
17690 65 4e 61 6d 65 2c 20 76 61 6c 75 65 4e 61 6d 65  eName, valueName
176a0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
176b0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
176c0 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
176d0 20 20 20 20 20 20 20 20 20 69 66 20 28 21 4d 6f           if (!Mo
176e0 63 6b 52 65 67 69 73 74 72 79 4b 65 79 2e 56 61  ckRegistryKey.Va
176f0 6c 75 65 45 71 75 61 6c 73 28 6f 70 65 72 61 74  lueEquals(operat
17700 69 6f 6e 2e 76 61 6c 75 65 2c 20 76 61 6c 75 65  ion.value, value
17710 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
17720 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
17730 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
17740 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
17750 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
17760 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
17770 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
17780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177b0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
177c0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
177d0 65 72 72 69 64 65 20 69 6e 74 20 47 65 74 48 61  erride int GetHa
177e0 73 68 43 6f 64 65 28 29 0d 0a 20 20 20 20 20 20  shCode()..      
177f0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
17800 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69           CheckDi
17810 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
17820 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
17830 20 72 65 73 75 6c 74 20 3d 20 30 3b 0d 0a 0d 0a   result = 0;....
17840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17850 69 66 20 28 6d 65 74 68 6f 64 4e 61 6d 65 20 21  if (methodName !
17860 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
17870 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73               res
17880 75 6c 74 20 5e 3d 20 6d 65 74 68 6f 64 4e 61 6d  ult ^= methodNam
17890 65 2e 47 65 74 48 61 73 68 43 6f 64 65 28 29 3b  e.GetHashCode();
178a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
178b0 20 20 20 20 72 65 73 75 6c 74 20 5e 3d 20 4d 6f      result ^= Mo
178c0 63 6b 52 65 67 69 73 74 72 79 4b 65 79 2e 47 65  ckRegistryKey.Ge
178d0 74 48 61 73 68 43 6f 64 65 28 6b 65 79 29 3b 0d  tHashCode(key);.
178e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
178f0 20 20 20 69 66 20 28 73 75 62 4b 65 79 4e 61 6d     if (subKeyNam
17900 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
17910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17920 72 65 73 75 6c 74 20 5e 3d 20 73 75 62 4b 65 79  result ^= subKey
17930 4e 61 6d 65 2e 47 65 74 48 61 73 68 43 6f 64 65  Name.GetHashCode
17940 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
17950 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
17960 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  Name != null).. 
17970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17980 20 20 20 72 65 73 75 6c 74 20 5e 3d 20 76 61 6c     result ^= val
17990 75 65 4e 61 6d 65 2e 47 65 74 48 61 73 68 43 6f  ueName.GetHashCo
179a0 64 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  de();....       
179b0 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20           result 
179c0 5e 3d 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b  ^= MockRegistryK
179d0 65 79 2e 56 61 6c 75 65 48 61 73 68 43 6f 64 65  ey.ValueHashCode
179e0 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20  (value);....    
179f0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
17a00 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20  rn result;..    
17a10 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
17a20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
17a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a40 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
17a70 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
17a80 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72 69  ic override stri
17a90 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20  ng ToString().. 
17aa0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
17ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68                Ch
17ac0 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
17ad0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17ae0 20 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 20    StringBuilder 
17af0 62 75 69 6c 64 65 72 20 3d 20 6e 65 77 20 53 74  builder = new St
17b00 72 69 6e 67 42 75 69 6c 64 65 72 28 29 3b 0d 0a  ringBuilder();..
17b10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17b20 20 20 62 75 69 6c 64 65 72 2e 41 70 70 65 6e 64    builder.Append
17b30 28 46 6f 72 44 69 73 70 6c 61 79 28 6d 65 74 68  (ForDisplay(meth
17b40 6f 64 4e 61 6d 65 29 29 3b 0d 0a 20 20 20 20 20  odName));..     
17b50 20 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64             build
17b60 65 72 2e 41 70 70 65 6e 64 28 46 69 65 6c 64 44  er.Append(FieldD
17b70 65 6c 69 6d 69 74 65 72 29 3b 0d 0a 20 20 20 20  elimiter);..    
17b80 20 20 20 20 20 20 20 20 20 20 20 20 62 75 69 6c              buil
17b90 64 65 72 2e 41 70 70 65 6e 64 28 46 6f 72 44 69  der.Append(ForDi
17ba0 73 70 6c 61 79 28 6b 65 79 29 29 3b 0d 0a 20 20  splay(key));..  
17bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75                bu
17bc0 69 6c 64 65 72 2e 41 70 70 65 6e 64 28 46 69 65  ilder.Append(Fie
17bd0 6c 64 44 65 6c 69 6d 69 74 65 72 29 3b 0d 0a 20  ldDelimiter);.. 
17be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
17bf0 75 69 6c 64 65 72 2e 41 70 70 65 6e 64 28 46 6f  uilder.Append(Fo
17c00 72 44 69 73 70 6c 61 79 28 73 75 62 4b 65 79 4e  rDisplay(subKeyN
17c10 61 6d 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  ame));..        
17c20 20 20 20 20 20 20 20 20 62 75 69 6c 64 65 72 2e          builder.
17c30 41 70 70 65 6e 64 28 46 69 65 6c 64 44 65 6c 69  Append(FieldDeli
17c40 6d 69 74 65 72 29 3b 0d 0a 20 20 20 20 20 20 20  miter);..       
17c50 20 20 20 20 20 20 20 20 20 62 75 69 6c 64 65 72           builder
17c60 2e 41 70 70 65 6e 64 28 46 6f 72 44 69 73 70 6c  .Append(ForDispl
17c70 61 79 28 76 61 6c 75 65 4e 61 6d 65 29 29 3b 0d  ay(valueName));.
17c80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17c90 20 62 75 69 6c 64 65 72 2e 41 70 70 65 6e 64 28   builder.Append(
17ca0 46 69 65 6c 64 44 65 6c 69 6d 69 74 65 72 29 3b  FieldDelimiter);
17cb0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
17cc0 20 20 20 20 62 75 69 6c 64 65 72 2e 41 70 70 65      builder.Appe
17cd0 6e 64 28 46 6f 72 44 69 73 70 6c 61 79 28 4d 6f  nd(ForDisplay(Mo
17ce0 63 6b 52 65 67 69 73 74 72 79 4b 65 79 2e 56 61  ckRegistryKey.Va
17cf0 6c 75 65 54 6f 53 74 72 69 6e 67 28 0d 0a 20 20  lueToString(..  
17d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17d10 20 20 76 61 6c 75 65 2c 20 4c 69 73 74 45 6c 65    value, ListEle
17d20 6d 65 6e 74 44 65 6c 69 6d 69 74 65 72 2c 20 44  mentDelimiter, D
17d30 69 73 70 6c 61 79 4e 75 6c 6c 29 29 29 3b 0d 0a  isplayNull)));..
17d40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17d50 20 20 72 65 74 75 72 6e 20 62 75 69 6c 64 65 72    return builder
17d60 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
17d70 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
17d80 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
17d90 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
17da0 20 20 20 2f 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 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
17df0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44        #region ID
17e00 69 73 70 6f 73 61 62 6c 65 20 22 50 61 74 74 65  isposable "Patte
17e10 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20  rn" Members..   
17e20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
17e30 20 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d   bool disposed;.
17e40 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
17e50 76 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44  vate void CheckD
17e60 69 73 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72  isposed() /* thr
17e70 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
17e80 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
17e90 20 20 20 20 20 20 69 66 20 28 21 64 69 73 70 6f        if (!dispo
17ea0 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20  sed)..          
17eb0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
17ec0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
17ed0 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4f       throw new O
17ee0 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45 78 63  bjectDisposedExc
17ef0 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  eption(..       
17f00 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70               typ
17f10 65 6f 66 28 52 65 67 69 73 74 72 79 4f 70 65 72  eof(RegistryOper
17f20 61 74 69 6f 6e 29 2e 4e 61 6d 65 29 3b 0d 0a 20  ation).Name);.. 
17f30 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
17f40 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
17f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
17f90 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
17fa0 72 69 76 61 74 65 20 2f 2a 20 70 72 6f 74 65 63  rivate /* protec
17fb0 74 65 64 20 76 69 72 74 75 61 6c 20 2a 2f 20 76  ted virtual */ v
17fc0 6f 69 64 20 44 69 73 70 6f 73 65 28 0d 0a 20 20  oid Dispose(..  
17fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
17fe0 6f 6c 20 64 69 73 70 6f 73 69 6e 67 0d 0a 20 20  ol disposing..  
17ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
18000 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
18010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18020 69 66 20 28 21 64 69 73 70 6f 73 65 64 29 0d 0a  if (!disposed)..
18030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18040 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
18050 20 20 20 20 20 20 20 69 66 20 28 64 69 73 70 6f         if (dispo
18060 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20  sing)..         
18070 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
18080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18090 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
180a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
180b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
180c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
180d0 20 20 20 20 2f 2f 20 64 69 73 70 6f 73 65 20 6d      // dispose m
180e0 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65 73  anaged resources
180f0 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20   here.....      
18100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18110 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
18120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18130 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
18140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18150 20 20 69 66 20 28 6b 65 79 20 21 3d 20 6e 75 6c    if (key != nul
18160 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
18170 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
18180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18190 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 2e 43             key.C
181a0 6c 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20 20 20  lose();..       
181b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
181c0 20 20 20 20 20 6b 65 79 20 3d 20 6e 75 6c 6c 3b       key = null;
181d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
181e0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
181f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18200 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
18210 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
18220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18240 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18250 20 20 20 20 20 20 2f 2f 20 72 65 6c 65 61 73 65        // release
18260 20 75 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f 75   unmanaged resou
18270 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20  rces here.....  
18280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18290 20 20 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 0d 0a 0d 0a 20 20 20 20  ////////....    
182c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
182d0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
182e0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
182f0 20 54 68 69 73 20 6f 62 6a 65 63 74 20 69 73 20   This object is 
18300 6e 6f 77 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20  now disposed... 
18310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18320 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
18330 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6f             dispo
18340 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  sed = true;..   
18350 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
18360 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
18370 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
18380 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
18390 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
183a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183d0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
183e0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
183f0 49 44 69 73 70 6f 73 61 62 6c 65 20 4d 65 6d 62  IDisposable Memb
18400 65 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ers..           
18410 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73   public void Dis
18420 70 6f 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20  pose()..        
18430 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
18440 20 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 74         Dispose(t
18450 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  rue);..         
18460 20 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65         GC.Suppre
18470 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29  ssFinalize(this)
18480 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
18490 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
184a0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
184b0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
184c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
18500 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
18510 6f 6e 20 44 65 73 74 72 75 63 74 6f 72 0d 0a 20  on Destructor.. 
18520 20 20 20 20 20 20 20 20 20 20 20 7e 52 65 67 69             ~Regi
18530 73 74 72 79 4f 70 65 72 61 74 69 6f 6e 28 29 0d  stryOperation().
18540 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
18550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18560 44 69 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d  Dispose(false);.
18570 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
18580 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
18590 72 65 67 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20  region..        
185a0 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
185b0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
185c0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
185d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18600 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
18610 20 20 20 20 23 72 65 67 69 6f 6e 20 53 74 72 69      #region Stri
18620 6e 67 4c 69 73 74 20 43 6c 61 73 73 0d 0a 20 20  ngList Class..  
18630 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 65        private se
18640 61 6c 65 64 20 63 6c 61 73 73 20 53 74 72 69 6e  aled class Strin
18650 67 4c 69 73 74 20 3a 20 4c 69 73 74 3c 73 74 72  gList : List<str
18660 69 6e 67 3e 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ing>..        {.
18670 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
18680 6c 69 63 20 53 74 72 69 6e 67 4c 69 73 74 28 29  lic StringList()
18690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
186a0 20 20 3a 20 62 61 73 65 28 29 0d 0a 20 20 20 20    : base()..    
186b0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
186c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
186d0 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
186e0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
186f0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
18700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
18740 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
18750 63 20 53 74 72 69 6e 67 4c 69 73 74 28 49 45 6e  c StringList(IEn
18760 75 6d 65 72 61 62 6c 65 3c 73 74 72 69 6e 67 3e  umerable<string>
18770 20 63 6f 6c 6c 65 63 74 69 6f 6e 29 0d 0a 20 20   collection)..  
18780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20                : 
18790 62 61 73 65 28 63 6f 6c 6c 65 63 74 69 6f 6e 29  base(collection)
187a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
187b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
187c0 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
187d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
187e0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
187f0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
18800 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
18810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18850 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
18860 69 6f 6e 20 53 74 72 69 6e 67 44 69 63 74 69 6f  ion StringDictio
18870 6e 61 72 79 20 43 6c 61 73 73 0d 0a 20 20 20 20  nary Class..    
18880 20 20 20 20 70 72 69 76 61 74 65 20 73 65 61 6c      private seal
18890 65 64 20 63 6c 61 73 73 20 53 74 72 69 6e 67 44  ed class StringD
188a0 69 63 74 69 6f 6e 61 72 79 20 3a 20 44 69 63 74  ictionary : Dict
188b0 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 73  ionary<string, s
188c0 74 72 69 6e 67 3e 0d 0a 20 20 20 20 20 20 20 20  tring>..        
188d0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  {..            p
188e0 75 62 6c 69 63 20 53 74 72 69 6e 67 44 69 63 74  ublic StringDict
188f0 69 6f 6e 61 72 79 28 29 0d 0a 20 20 20 20 20 20  ionary()..      
18900 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
18910 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
18920 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
18930 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
18940 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
18950 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
18960 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
18970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
189a0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
189b0 20 20 20 20 23 72 65 67 69 6f 6e 20 56 65 72 73      #region Vers
189c0 69 6f 6e 4c 69 73 74 20 43 6c 61 73 73 0d 0a 20  ionList Class.. 
189d0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
189e0 65 61 6c 65 64 20 63 6c 61 73 73 20 56 65 72 73  ealed class Vers
189f0 69 6f 6e 4c 69 73 74 20 3a 20 4c 69 73 74 3c 56  ionList : List<V
18a00 65 72 73 69 6f 6e 3e 0d 0a 20 20 20 20 20 20 20  ersion>..       
18a10 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
18a20 70 75 62 6c 69 63 20 56 65 72 73 69 6f 6e 4c 69  public VersionLi
18a30 73 74 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  st()..          
18a40 20 20 20 20 20 20 3a 20 62 61 73 65 28 29 0d 0a        : base()..
18a50 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
18a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
18a70 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
18a80 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
18a90 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
18aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
18ae0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
18af0 75 62 6c 69 63 20 56 65 72 73 69 6f 6e 4c 69 73  ublic VersionLis
18b00 74 28 49 45 6e 75 6d 65 72 61 62 6c 65 3c 56 65  t(IEnumerable<Ve
18b10 72 73 69 6f 6e 3e 20 63 6f 6c 6c 65 63 74 69 6f  rsion> collectio
18b20 6e 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n)..            
18b30 20 20 20 20 3a 20 62 61 73 65 28 63 6f 6c 6c 65      : base(colle
18b40 63 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20 20 20  ction)..        
18b50 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
18b60 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
18b70 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
18b80 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
18b90 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
18ba0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
18bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18bf0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
18c00 20 20 23 72 65 67 69 6f 6e 20 56 65 72 73 69 6f    #region Versio
18c10 6e 4d 61 70 20 43 6c 61 73 73 0d 0a 20 20 20 20  nMap Class..    
18c20 20 20 20 20 70 72 69 76 61 74 65 20 73 65 61 6c      private seal
18c30 65 64 20 63 6c 61 73 73 20 56 65 72 73 69 6f 6e  ed class Version
18c40 4d 61 70 20 3a 20 44 69 63 74 69 6f 6e 61 72 79  Map : Dictionary
18c50 3c 73 74 72 69 6e 67 2c 20 56 65 72 73 69 6f 6e  <string, Version
18c60 4c 69 73 74 3e 0d 0a 20 20 20 20 20 20 20 20 7b  List>..        {
18c70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
18c80 62 6c 69 63 20 56 65 72 73 69 6f 6e 4d 61 70 28  blic VersionMap(
18c90 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
18ca0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18cb0 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
18cc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
18cd0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
18ce0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
18cf0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
18d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d40 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
18d50 67 69 6f 6e 20 50 61 63 6b 61 67 65 20 43 6c 61  gion Package Cla
18d60 73 73 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65  ss..        inte
18d70 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73  rnal sealed clas
18d80 73 20 50 61 63 6b 61 67 65 0d 0a 20 20 20 20 20  s Package..     
18d90 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
18da0 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
18db0 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20   Constructors.. 
18dc0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
18dd0 63 20 50 61 63 6b 61 67 65 28 29 0d 0a 20 20 20  c Package()..   
18de0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
18df0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
18e00 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
18e10 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
18e20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
18e30 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
18e40 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
18e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e80 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
18e90 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
18ea0 69 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20  ic Properties.. 
18eb0 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
18ec0 74 65 20 73 74 72 69 6e 67 20 70 72 6f 76 69 64  te string provid
18ed0 65 72 49 6e 76 61 72 69 61 6e 74 4e 61 6d 65 3b  erInvariantName;
18ee0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
18ef0 62 6c 69 63 20 73 74 72 69 6e 67 20 50 72 6f 76  blic string Prov
18f00 69 64 65 72 49 6e 76 61 72 69 61 6e 74 4e 61 6d  iderInvariantNam
18f10 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  e..            {
18f20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18f30 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 70    get { return p
18f40 72 6f 76 69 64 65 72 49 6e 76 61 72 69 61 6e 74  roviderInvariant
18f50 4e 61 6d 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  Name; }..       
18f60 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 70           set { p
18f70 72 6f 76 69 64 65 72 49 6e 76 61 72 69 61 6e 74  roviderInvariant
18f80 4e 61 6d 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d  Name = value; }.
18f90 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
18fa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
18fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ff0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
19000 20 70 72 69 76 61 74 65 20 73 74 72 69 6e 67 20   private string 
19010 66 61 63 74 6f 72 79 54 79 70 65 4e 61 6d 65 3b  factoryTypeName;
19020 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
19030 62 6c 69 63 20 73 74 72 69 6e 67 20 46 61 63 74  blic string Fact
19040 6f 72 79 54 79 70 65 4e 61 6d 65 0d 0a 20 20 20  oryTypeName..   
19050 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
19060 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
19070 7b 20 72 65 74 75 72 6e 20 66 61 63 74 6f 72 79  { return factory
19080 54 79 70 65 4e 61 6d 65 3b 20 7d 0d 0a 20 20 20  TypeName; }..   
19090 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
190a0 20 7b 20 66 61 63 74 6f 72 79 54 79 70 65 4e 61   { factoryTypeNa
190b0 6d 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20  me = value; }.. 
190c0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
190d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
190e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
190f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
19120 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
19130 72 69 76 61 74 65 20 41 73 73 65 6d 62 6c 79 4e  rivate AssemblyN
19140 61 6d 65 20 70 72 6f 76 69 64 65 72 41 73 73 65  ame providerAsse
19150 6d 62 6c 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  mblyName;..     
19160 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 41 73         public As
19170 73 65 6d 62 6c 79 4e 61 6d 65 20 50 72 6f 76 69  semblyName Provi
19180 64 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 0d  derAssemblyName.
19190 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
191a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
191b0 67 65 74 20 7b 20 72 65 74 75 72 6e 20 70 72 6f  get { return pro
191c0 76 69 64 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d  viderAssemblyNam
191d0 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
191e0 20 20 20 20 20 20 73 65 74 20 7b 20 70 72 6f 76        set { prov
191f0 69 64 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65  iderAssemblyName
19200 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20   = value; }..   
19210 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
19220 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
19230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
19270 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
19280 76 61 74 65 20 41 73 73 65 6d 62 6c 79 4e 61 6d  vate AssemblyNam
19290 65 20 64 65 73 69 67 6e 65 72 41 73 73 65 6d 62  e designerAssemb
192a0 6c 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  lyName;..       
192b0 20 20 20 20 20 70 75 62 6c 69 63 20 41 73 73 65       public Asse
192c0 6d 62 6c 79 4e 61 6d 65 20 44 65 73 69 67 6e 65  mblyName Designe
192d0 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 0d 0a 20  rAssemblyName.. 
192e0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
192f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
19300 74 20 7b 20 72 65 74 75 72 6e 20 64 65 73 69 67  t { return desig
19310 6e 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 3b  nerAssemblyName;
19320 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
19330 20 20 20 20 73 65 74 20 7b 20 64 65 73 69 67 6e      set { design
19340 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d  erAssemblyName =
19350 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20   value; }..     
19360 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
19370 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
19380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
193c0 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
193d0 74 65 20 62 6f 6f 6c 20 67 6c 6f 62 61 6c 41 73  te bool globalAs
193e0 73 65 6d 62 6c 79 43 61 63 68 65 3b 0d 0a 20 20  semblyCache;..  
193f0 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
19400 20 62 6f 6f 6c 20 47 6c 6f 62 61 6c 41 73 73 65   bool GlobalAsse
19410 6d 62 6c 79 43 61 63 68 65 0d 0a 20 20 20 20 20  mblyCache..     
19420 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
19430 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
19440 72 65 74 75 72 6e 20 67 6c 6f 62 61 6c 41 73 73  return globalAss
19450 65 6d 62 6c 79 43 61 63 68 65 3b 20 7d 0d 0a 20  emblyCache; }.. 
19460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
19470 65 74 20 7b 20 67 6c 6f 62 61 6c 41 73 73 65 6d  et { globalAssem
19480 62 6c 79 43 61 63 68 65 20 3d 20 76 61 6c 75 65  blyCache = value
19490 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
194a0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
194b0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
194c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194f0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
19500 20 20 20 20 20 70 72 69 76 61 74 65 20 47 75 69       private Gui
19510 64 20 70 61 63 6b 61 67 65 49 64 3b 0d 0a 20 20  d packageId;..  
19520 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
19530 20 47 75 69 64 20 50 61 63 6b 61 67 65 49 64 0d   Guid PackageId.
19540 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
19550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19560 67 65 74 20 7b 20 72 65 74 75 72 6e 20 70 61 63  get { return pac
19570 6b 61 67 65 49 64 3b 20 7d 0d 0a 20 20 20 20 20  kageId; }..     
19580 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
19590 20 70 61 63 6b 61 67 65 49 64 20 3d 20 76 61 6c   packageId = val
195a0 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  ue; }..         
195b0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
195c0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
195d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
195e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
195f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19600 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
19610 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 47         private G
19620 75 69 64 20 73 65 72 76 69 63 65 49 64 3b 0d 0a  uid serviceId;..
19630 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
19640 69 63 20 47 75 69 64 20 53 65 72 76 69 63 65 49  ic Guid ServiceI
19650 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  d..            {
19660 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19670 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 73    get { return s
19680 65 72 76 69 63 65 49 64 3b 20 7d 0d 0a 20 20 20  erviceId; }..   
19690 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
196a0 20 7b 20 73 65 72 76 69 63 65 49 64 20 3d 20 76   { serviceId = v
196b0 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  alue; }..       
196c0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
196d0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
196e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
196f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19710 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
19720 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
19730 20 47 75 69 64 20 64 61 74 61 53 6f 75 72 63 65   Guid dataSource
19740 49 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Id;..           
19750 20 70 75 62 6c 69 63 20 47 75 69 64 20 44 61 74   public Guid Dat
19760 61 53 6f 75 72 63 65 49 64 0d 0a 20 20 20 20 20  aSourceId..     
19770 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
19780 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
19790 72 65 74 75 72 6e 20 64 61 74 61 53 6f 75 72 63  return dataSourc
197a0 65 49 64 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  eId; }..        
197b0 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 64 61          set { da
197c0 74 61 53 6f 75 72 63 65 49 64 20 3d 20 76 61 6c  taSourceId = val
197d0 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  ue; }..         
197e0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
197f0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
19800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19830 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
19840 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 47         private G
19850 75 69 64 20 64 61 74 61 50 72 6f 76 69 64 65 72  uid dataProvider
19860 49 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Id;..           
19870 20 70 75 62 6c 69 63 20 47 75 69 64 20 44 61 74   public Guid Dat
19880 61 50 72 6f 76 69 64 65 72 49 64 0d 0a 20 20 20  aProviderId..   
19890 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
198a0 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
198b0 7b 20 72 65 74 75 72 6e 20 64 61 74 61 50 72 6f  { return dataPro
198c0 76 69 64 65 72 49 64 3b 20 7d 0d 0a 20 20 20 20  viderId; }..    
198d0 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
198e0 7b 20 64 61 74 61 50 72 6f 76 69 64 65 72 49 64  { dataProviderId
198f0 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20   = value; }..   
19900 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
19910 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
19920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
19960 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
19970 76 61 74 65 20 47 75 69 64 20 61 64 6f 4e 65 74  vate Guid adoNet
19980 54 65 63 68 6e 6f 6c 6f 67 79 49 64 3b 0d 0a 20  TechnologyId;.. 
19990 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
199a0 63 20 47 75 69 64 20 41 64 6f 4e 65 74 54 65 63  c Guid AdoNetTec
199b0 68 6e 6f 6c 6f 67 79 49 64 0d 0a 20 20 20 20 20  hnologyId..     
199c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
199d0 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
199e0 72 65 74 75 72 6e 20 61 64 6f 4e 65 74 54 65 63  return adoNetTec
199f0 68 6e 6f 6c 6f 67 79 49 64 3b 20 7d 0d 0a 20 20  hnologyId; }..  
19a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
19a10 74 20 7b 20 61 64 6f 4e 65 74 54 65 63 68 6e 6f  t { adoNetTechno
19a20 6c 6f 67 79 49 64 20 3d 20 76 61 6c 75 65 3b 20  logyId = value; 
19a30 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
19a40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
19a50 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 20 20  ndregion..      
19a60 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
19a70 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
19a80 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
19a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
19ad0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 43 6f        #region Co
19ae0 6e 66 69 67 75 72 61 74 69 6f 6e 20 43 6c 61 73  nfiguration Clas
19af0 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  s..        priva
19b00 74 65 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  te sealed class 
19b10 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d 0a 20  Configuration.. 
19b20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
19b30 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
19b40 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d  ivate Constants.
19b50 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
19b60 76 61 74 65 20 63 6f 6e 73 74 20 63 68 61 72 20  vate const char 
19b70 53 77 69 74 63 68 20 3d 20 27 2d 27 3b 0d 0a 20  Switch = '-';.. 
19b80 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
19b90 74 65 20 63 6f 6e 73 74 20 63 68 61 72 20 41 6c  te const char Al
19ba0 74 53 77 69 74 63 68 20 3d 20 27 2f 27 3b 0d 0a  tSwitch = '/';..
19bb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
19bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c00 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
19c10 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
19c20 72 65 61 64 6f 6e 6c 79 20 63 68 61 72 5b 5d 20  readonly char[] 
19c30 53 77 69 74 63 68 43 68 61 72 73 20 3d 20 7b 0d  SwitchChars = {.
19c40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19c50 20 53 77 69 74 63 68 2c 20 41 6c 74 53 77 69 74   Switch, AltSwit
19c60 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
19c70 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  };....          
19c80 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
19c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ca0 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
19cd0 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e       private con
19ce0 73 74 20 73 74 72 69 6e 67 20 49 6e 76 61 72 69  st string Invari
19cf0 61 6e 74 4e 61 6d 65 20 3d 20 22 53 79 73 74 65  antName = "Syste
19d00 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 22 3b 0d  m.Data.SQLite";.
19d10 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
19d20 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e  vate const strin
19d30 67 20 45 66 36 49 6e 76 61 72 69 61 6e 74 4e 61  g Ef6InvariantNa
19d40 6d 65 20 3d 20 22 53 79 73 74 65 6d 2e 44 61 74  me = "System.Dat
19d50 61 2e 53 51 4c 69 74 65 2e 45 46 36 22 3b 0d 0a  a.SQLite.EF6";..
19d60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
19d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19db0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
19dc0 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73   private const s
19dd0 74 72 69 6e 67 20 46 61 63 74 6f 72 79 54 79 70  tring FactoryTyp
19de0 65 4e 61 6d 65 20 3d 0d 0a 20 20 20 20 20 20 20  eName =..       
19df0 20 20 20 20 20 20 20 20 20 22 53 79 73 74 65 6d           "System
19e00 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 53 51 4c  .Data.SQLite.SQL
19e10 69 74 65 46 61 63 74 6f 72 79 22 3b 0d 0a 0d 0a  iteFactory";....
19e20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
19e30 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  ate const string
19e40 20 45 66 36 46 61 63 74 6f 72 79 54 79 70 65 4e   Ef6FactoryTypeN
19e50 61 6d 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ame =..         
19e60 20 20 20 20 20 20 20 22 53 79 73 74 65 6d 2e 44         "System.D
19e70 61 74 61 2e 53 51 4c 69 74 65 2e 45 46 36 2e 53  ata.SQLite.EF6.S
19e80 51 4c 69 74 65 50 72 6f 76 69 64 65 72 46 61 63  QLiteProviderFac
19e90 74 6f 72 79 22 3b 0d 0a 20 20 20 20 20 20 20 20  tory";..        
19ea0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
19eb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
19ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f00 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
19f10 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
19f20 20 53 74 61 74 69 63 20 44 61 74 61 0d 0a 20 20   Static Data..  
19f30 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
19f40 65 20 73 74 61 74 69 63 20 41 73 73 65 6d 62 6c  e static Assembl
19f50 79 20 73 79 73 74 65 6d 45 66 36 41 73 73 65 6d  y systemEf6Assem
19f60 62 6c 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  bly;..          
19f70 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
19f80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
19f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
19fd0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
19fe0 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44  region Private D
19ff0 61 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ata..           
1a000 20 70 72 69 76 61 74 65 20 41 73 73 65 6d 62 6c   private Assembl
1a010 79 4e 61 6d 65 20 63 6f 72 65 41 73 73 65 6d 62  yName coreAssemb
1a020 6c 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  lyName;..       
1a030 20 20 20 20 20 70 72 69 76 61 74 65 20 41 73 73       private Ass
1a040 65 6d 62 6c 79 4e 61 6d 65 20 6c 69 6e 71 41 73  emblyName linqAs
1a050 73 65 6d 62 6c 79 4e 61 6d 65 3b 0d 0a 20 20 20  semblyName;..   
1a060 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
1a070 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 65 66   AssemblyName ef
1a080 36 41 73 73 65 6d 62 6c 79 4e 61 6d 65 3b 0d 0a  6AssemblyName;..
1a090 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
1a0a0 61 74 65 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65  ate AssemblyName
1a0b0 20 64 65 73 69 67 6e 65 72 41 73 73 65 6d 62 6c   designerAssembl
1a0c0 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  yName;..        
1a0d0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
1a0e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
1a0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a130 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
1a140 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
1a150 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20   Constructors.. 
1a160 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
1a170 74 65 20 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e  te Configuration
1a180 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1a190 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65     Assembly asse
1a1a0 6d 62 6c 79 2c 0d 0a 20 20 20 20 20 20 20 20 20  mbly,..         
1a1b0 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6c 6f         string lo
1a1c0 67 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20  gFileName,..    
1a1d0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
1a1e0 6e 67 20 72 65 67 69 73 74 72 79 4c 6f 67 46 69  ng registryLogFi
1a1f0 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20  leName,..       
1a200 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
1a210 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20  directory,..    
1a220 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
1a230 6e 67 20 63 6f 72 65 46 69 6c 65 4e 61 6d 65 2c  ng coreFileName,
1a240 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a250 20 20 73 74 72 69 6e 67 20 6c 69 6e 71 46 69 6c    string linqFil
1a260 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  eName,..        
1a270 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 65          string e
1a280 66 36 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20  f6FileName,..   
1a290 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
1a2a0 69 6e 67 20 64 65 73 69 67 6e 65 72 46 69 6c 65  ing designerFile
1a2b0 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  Name,..         
1a2c0 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 72 65         string re
1a2d0 67 69 73 74 72 79 56 65 72 73 69 6f 6e 2c 0d 0a  gistryVersion,..
1a2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a2f0 73 74 72 69 6e 67 20 63 6f 6e 66 69 67 56 65 72  string configVer
1a300 73 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20  sion,..         
1a310 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 73         string vs
1a320 56 65 72 73 69 6f 6e 53 75 66 66 69 78 2c 0d 0a  VersionSuffix,..
1a330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a340 73 74 72 69 6e 67 20 64 65 62 75 67 46 6f 72 6d  string debugForm
1a350 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at,..           
1a360 20 20 20 20 20 73 74 72 69 6e 67 20 74 72 61 63       string trac
1a370 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
1a380 20 20 20 20 20 20 20 20 20 20 49 6e 73 74 61 6c            Instal
1a390 6c 46 6c 61 67 73 20 69 6e 73 74 61 6c 6c 46 6c  lFlags installFl
1a3a0 61 67 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ags,..          
1a3b0 20 20 20 20 20 20 50 72 6f 76 69 64 65 72 46 6c        ProviderFl
1a3c0 61 67 73 20 70 72 6f 76 69 64 65 72 46 6c 61 67  ags providerFlag
1a3d0 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s,..            
1a3e0 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74      TracePriorit
1a3f0 79 20 64 65 62 75 67 50 72 69 6f 72 69 74 79 2c  y debugPriority,
1a400 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a410 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 20    TracePriority 
1a420 74 72 61 63 65 50 72 69 6f 72 69 74 79 2c 0d 0a  tracePriority,..
1a430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a440 62 6f 6f 6c 20 70 65 72 55 73 65 72 2c 0d 0a 20  bool perUser,.. 
1a450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
1a460 6f 6f 6c 20 69 6e 73 74 61 6c 6c 2c 0d 0a 20 20  ool install,..  
1a470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
1a480 6f 6c 20 77 6f 77 36 34 2c 0d 0a 20 20 20 20 20  ol wow64,..     
1a490 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
1a4a0 6e 6f 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e  noRuntimeVersion
1a4b0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1a4c0 20 20 20 62 6f 6f 6c 20 6e 6f 44 65 73 6b 74 6f     bool noDeskto
1a4d0 70 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  p,..            
1a4e0 20 20 20 20 62 6f 6f 6c 20 6e 6f 43 6f 6d 70 61      bool noCompa
1a4f0 63 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct,..           
1a500 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46       bool noNetF
1a510 78 32 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  x20,..          
1a520 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 4e 65 74        bool noNet
1a530 46 78 33 35 2c 0d 0a 20 20 20 20 20 20 20 20 20  Fx35,..         
1a540 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 4e 65         bool noNe
1a550 74 46 78 34 30 2c 0d 0a 20 20 20 20 20 20 20 20  tFx40,..        
1a560 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 4e          bool noN
1a570 65 74 46 78 34 35 2c 0d 0a 20 20 20 20 20 20 20  etFx45,..       
1a580 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f           bool no
1a590 4e 65 74 46 78 34 35 31 2c 0d 0a 20 20 20 20 20  NetFx451,..     
1a5a0 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
1a5b0 6e 6f 4e 65 74 46 78 34 35 32 2c 0d 0a 20 20 20  noNetFx452,..   
1a5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
1a5d0 6c 20 6e 6f 4e 65 74 46 78 34 36 2c 0d 0a 20 20  l noNetFx46,..  
1a5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
1a5f0 6f 6c 20 6e 6f 4e 65 74 46 78 34 36 31 2c 0d 0a  ol noNetFx461,..
1a600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a610 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 36 32 2c  bool noNetFx462,
1a620 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a630 20 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 37    bool noNetFx47
1a640 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1a650 20 20 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34     bool noNetFx4
1a660 37 31 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  71,..           
1a670 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 56 73 32 30       bool noVs20
1a680 30 35 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  05,..           
1a690 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 56 73 32 30       bool noVs20
1a6a0 30 38 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  08,..           
1a6b0 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 56 73 32 30       bool noVs20
1a6c0 31 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  10,..           
1a6d0 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 56 73 32 30       bool noVs20
1a6e0 31 32 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  12,..           
1a6f0 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 56 73 32 30       bool noVs20
1a700 31 33 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  13,..           
1a710 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 56 73 32 30       bool noVs20
1a720 31 35 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  15,..           
1a730 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 56 73 32 30       bool noVs20
1a740 31 37 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  17,..           
1a750 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 54 72 61 63       bool noTrac
1a760 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
1a770 20 20 20 20 62 6f 6f 6c 20 6e 6f 43 6f 6e 73 6f      bool noConso
1a780 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le,..           
1a790 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 4c 6f 67 2c       bool noLog,
1a7a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a7b0 20 20 62 6f 6f 6c 20 74 68 72 6f 77 4f 6e 4d 69    bool throwOnMi
1a7c0 73 73 69 6e 67 2c 0d 0a 20 20 20 20 20 20 20 20  ssing,..        
1a7d0 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61          bool wha
1a7e0 74 49 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf,..          
1a7f0 20 20 20 20 20 20 62 6f 6f 6c 20 64 65 62 75 67        bool debug
1a800 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1a810 20 20 20 62 6f 6f 6c 20 76 65 72 62 6f 73 65 2c     bool verbose,
1a820 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a830 20 20 62 6f 6f 6c 20 63 6f 6e 66 69 72 6d 0d 0a    bool confirm..
1a840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a850 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
1a860 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a870 20 20 74 68 69 73 2e 61 73 73 65 6d 62 6c 79 20    this.assembly 
1a880 3d 20 61 73 73 65 6d 62 6c 79 3b 0d 0a 20 20 20  = assembly;..   
1a890 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
1a8a0 73 2e 6c 6f 67 46 69 6c 65 4e 61 6d 65 20 3d 20  s.logFileName = 
1a8b0 6c 6f 67 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20  logFileName;..  
1a8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
1a8d0 69 73 2e 72 65 67 69 73 74 72 79 4c 6f 67 46 69  is.registryLogFi
1a8e0 6c 65 4e 61 6d 65 20 3d 20 72 65 67 69 73 74 72  leName = registr
1a8f0 79 4c 6f 67 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20  yLogFileName;.. 
1a900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1a910 68 69 73 2e 64 69 72 65 63 74 6f 72 79 20 3d 20  his.directory = 
1a920 64 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20  directory;..    
1a930 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
1a940 2e 63 6f 72 65 46 69 6c 65 4e 61 6d 65 20 3d 20  .coreFileName = 
1a950 63 6f 72 65 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20  coreFileName;.. 
1a960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1a970 68 69 73 2e 6c 69 6e 71 46 69 6c 65 4e 61 6d 65  his.linqFileName
1a980 20 3d 20 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 3b   = linqFileName;
1a990 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a9a0 20 20 74 68 69 73 2e 65 66 36 46 69 6c 65 4e 61    this.ef6FileNa
1a9b0 6d 65 20 3d 20 65 66 36 46 69 6c 65 4e 61 6d 65  me = ef6FileName
1a9c0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1a9d0 20 20 20 74 68 69 73 2e 64 65 73 69 67 6e 65 72     this.designer
1a9e0 46 69 6c 65 4e 61 6d 65 20 3d 20 64 65 73 69 67  FileName = desig
1a9f0 6e 65 72 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20  nerFileName;..  
1aa00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
1aa10 69 73 2e 72 65 67 69 73 74 72 79 56 65 72 73 69  is.registryVersi
1aa20 6f 6e 20 3d 20 72 65 67 69 73 74 72 79 56 65 72  on = registryVer
1aa30 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20  sion;..         
1aa40 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 66         this.conf
1aa50 69 67 56 65 72 73 69 6f 6e 20 3d 20 63 6f 6e 66  igVersion = conf
1aa60 69 67 56 65 72 73 69 6f 6e 3b 0d 0a 20 20 20 20  igVersion;..    
1aa70 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
1aa80 2e 76 73 56 65 72 73 69 6f 6e 53 75 66 66 69 78  .vsVersionSuffix
1aa90 20 3d 20 76 73 56 65 72 73 69 6f 6e 53 75 66 66   = vsVersionSuff
1aaa0 69 78 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ix;..           
1aab0 20 20 20 20 20 74 68 69 73 2e 64 65 62 75 67 46       this.debugF
1aac0 6f 72 6d 61 74 20 3d 20 64 65 62 75 67 46 6f 72  ormat = debugFor
1aad0 6d 61 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  mat;..          
1aae0 20 20 20 20 20 20 74 68 69 73 2e 74 72 61 63 65        this.trace
1aaf0 46 6f 72 6d 61 74 20 3d 20 74 72 61 63 65 46 6f  Format = traceFo
1ab00 72 6d 61 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  rmat;..         
1ab10 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e 73 74         this.inst
1ab20 61 6c 6c 46 6c 61 67 73 20 3d 20 69 6e 73 74 61  allFlags = insta
1ab30 6c 6c 46 6c 61 67 73 3b 0d 0a 20 20 20 20 20 20  llFlags;..      
1ab40 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 70            this.p
1ab50 72 6f 76 69 64 65 72 46 6c 61 67 73 20 3d 20 70  roviderFlags = p
1ab60 72 6f 76 69 64 65 72 46 6c 61 67 73 3b 0d 0a 20  roviderFlags;.. 
1ab70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1ab80 68 69 73 2e 64 65 62 75 67 50 72 69 6f 72 69 74  his.debugPriorit
1ab90 79 20 3d 20 64 65 62 75 67 50 72 69 6f 72 69 74  y = debugPriorit
1aba0 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y;..            
1abb0 20 20 20 20 74 68 69 73 2e 74 72 61 63 65 50 72      this.tracePr
1abc0 69 6f 72 69 74 79 20 3d 20 74 72 61 63 65 50 72  iority = tracePr
1abd0 69 6f 72 69 74 79 3b 0d 0a 20 20 20 20 20 20 20  iority;..       
1abe0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 70 65           this.pe
1abf0 72 55 73 65 72 20 3d 20 70 65 72 55 73 65 72 3b  rUser = perUser;
1ac00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ac10 20 20 74 68 69 73 2e 69 6e 73 74 61 6c 6c 20 3d    this.install =
1ac20 20 69 6e 73 74 61 6c 6c 3b 0d 0a 20 20 20 20 20   install;..     
1ac30 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
1ac40 77 6f 77 36 34 20 3d 20 77 6f 77 36 34 3b 0d 0a  wow64 = wow64;..
1ac50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ac60 74 68 69 73 2e 6e 6f 52 75 6e 74 69 6d 65 56 65  this.noRuntimeVe
1ac70 72 73 69 6f 6e 20 3d 20 6e 6f 52 75 6e 74 69 6d  rsion = noRuntim
1ac80 65 56 65 72 73 69 6f 6e 3b 0d 0a 20 20 20 20 20  eVersion;..     
1ac90 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
1aca0 6e 6f 44 65 73 6b 74 6f 70 20 3d 20 6e 6f 44 65  noDesktop = noDe
1acb0 73 6b 74 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20  sktop;..        
1acc0 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 6f 43          this.noC
1acd0 6f 6d 70 61 63 74 20 3d 20 6e 6f 43 6f 6d 70 61  ompact = noCompa
1ace0 63 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct;..           
1acf0 20 20 20 20 20 74 68 69 73 2e 6e 6f 4e 65 74 46       this.noNetF
1ad00 78 32 30 20 3d 20 6e 6f 4e 65 74 46 78 32 30 3b  x20 = noNetFx20;
1ad10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ad20 20 20 74 68 69 73 2e 6e 6f 4e 65 74 46 78 33 35    this.noNetFx35
1ad30 20 3d 20 6e 6f 4e 65 74 46 78 33 35 3b 0d 0a 20   = noNetFx35;.. 
1ad40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1ad50 68 69 73 2e 6e 6f 4e 65 74 46 78 34 30 20 3d 20  his.noNetFx40 = 
1ad60 6e 6f 4e 65 74 46 78 34 30 3b 0d 0a 20 20 20 20  noNetFx40;..    
1ad70 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
1ad80 2e 6e 6f 4e 65 74 46 78 34 35 20 3d 20 6e 6f 4e  .noNetFx45 = noN
1ad90 65 74 46 78 34 35 3b 0d 0a 20 20 20 20 20 20 20  etFx45;..       
1ada0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 6f           this.no
1adb0 4e 65 74 46 78 34 35 31 20 3d 20 6e 6f 4e 65 74  NetFx451 = noNet
1adc0 46 78 34 35 31 3b 0d 0a 20 20 20 20 20 20 20 20  Fx451;..        
1add0 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 6f 4e          this.noN
1ade0 65 74 46 78 34 35 32 20 3d 20 6e 6f 4e 65 74 46  etFx452 = noNetF
1adf0 78 34 35 32 3b 0d 0a 20 20 20 20 20 20 20 20 20  x452;..         
1ae00 20 20 20 20 20 20 20 74 68 69 73 2e 6e 6f 4e 65         this.noNe
1ae10 74 46 78 34 36 20 3d 20 6e 6f 4e 65 74 46 78 34  tFx46 = noNetFx4
1ae20 36 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  6;..            
1ae30 20 20 20 20 74 68 69 73 2e 6e 6f 4e 65 74 46 78      this.noNetFx
1ae40 34 36 31 20 3d 20 6e 6f 4e 65 74 46 78 34 36 31  461 = noNetFx461
1ae50 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1ae60 20 20 20 74 68 69 73 2e 6e 6f 4e 65 74 46 78 34     this.noNetFx4
1ae70 36 32 20 3d 20 6e 6f 4e 65 74 46 78 34 36 32 3b  62 = noNetFx462;
1ae80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ae90 20 20 74 68 69 73 2e 6e 6f 4e 65 74 46 78 34 37    this.noNetFx47
1aea0 20 3d 20 6e 6f 4e 65 74 46 78 34 37 3b 0d 0a 20   = noNetFx47;.. 
1aeb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1aec0 68 69 73 2e 6e 6f 4e 65 74 46 78 34 37 31 20 3d  his.noNetFx471 =
1aed0 20 6e 6f 4e 65 74 46 78 34 37 31 3b 0d 0a 20 20   noNetFx471;..  
1aee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
1aef0 69 73 2e 6e 6f 56 73 32 30 30 35 20 3d 20 6e 6f  is.noVs2005 = no
1af00 56 73 32 30 30 35 3b 0d 0a 20 20 20 20 20 20 20  Vs2005;..       
1af10 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 6f           this.no
1af20 56 73 32 30 30 38 20 3d 20 6e 6f 56 73 32 30 30  Vs2008 = noVs200
1af30 38 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  8;..            
1af40 20 20 20 20 74 68 69 73 2e 6e 6f 56 73 32 30 31      this.noVs201
1af50 30 20 3d 20 6e 6f 56 73 32 30 31 30 3b 0d 0a 20  0 = noVs2010;.. 
1af60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1af70 68 69 73 2e 6e 6f 56 73 32 30 31 32 20 3d 20 6e  his.noVs2012 = n
1af80 6f 56 73 32 30 31 32 3b 0d 0a 20 20 20 20 20 20  oVs2012;..      
1af90 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e            this.n
1afa0 6f 56 73 32 30 31 33 20 3d 20 6e 6f 56 73 32 30  oVs2013 = noVs20
1afb0 31 33 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  13;..           
1afc0 20 20 20 20 20 74 68 69 73 2e 6e 6f 56 73 32 30       this.noVs20
1afd0 31 35 20 3d 20 6e 6f 56 73 32 30 31 35 3b 0d 0a  15 = noVs2015;..
1afe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1aff0 74 68 69 73 2e 6e 6f 56 73 32 30 31 37 20 3d 20  this.noVs2017 = 
1b000 6e 6f 56 73 32 30 31 37 3b 0d 0a 20 20 20 20 20  noVs2017;..     
1b010 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
1b020 6e 6f 54 72 61 63 65 20 3d 20 6e 6f 54 72 61 63  noTrace = noTrac
1b030 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
1b040 20 20 20 20 74 68 69 73 2e 6e 6f 43 6f 6e 73 6f      this.noConso
1b050 6c 65 20 3d 20 6e 6f 43 6f 6e 73 6f 6c 65 3b 0d  le = noConsole;.
1b060 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b070 20 74 68 69 73 2e 6e 6f 4c 6f 67 20 3d 20 6e 6f   this.noLog = no
1b080 4c 6f 67 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  Log;..          
1b090 20 20 20 20 20 20 74 68 69 73 2e 74 68 72 6f 77        this.throw
1b0a0 4f 6e 4d 69 73 73 69 6e 67 20 3d 20 74 68 72 6f  OnMissing = thro
1b0b0 77 4f 6e 4d 69 73 73 69 6e 67 3b 0d 0a 20 20 20  wOnMissing;..   
1b0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
1b0d0 73 2e 77 68 61 74 49 66 20 3d 20 77 68 61 74 49  s.whatIf = whatI
1b0e0 66 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f;..            
1b0f0 20 20 20 20 74 68 69 73 2e 64 65 62 75 67 20 3d      this.debug =
1b100 20 64 65 62 75 67 3b 0d 0a 20 20 20 20 20 20 20   debug;..       
1b110 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 76 65           this.ve
1b120 72 62 6f 73 65 20 3d 20 76 65 72 62 6f 73 65 3b  rbose = verbose;
1b130 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b140 20 20 74 68 69 73 2e 63 6f 6e 66 69 72 6d 20 3d    this.confirm =
1b150 20 63 6f 6e 66 69 72 6d 3b 0d 0a 20 20 20 20 20   confirm;..     
1b160 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1b170 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
1b180 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1b190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1d0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
1b1e0 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
1b1f0 74 65 20 53 74 61 74 69 63 20 4d 65 74 68 6f 64  te Static Method
1b200 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  s..            p
1b210 72 69 76 61 74 65 20 73 74 61 74 69 63 20 76 6f  rivate static vo
1b220 69 64 20 47 65 74 44 65 66 61 75 6c 74 46 69 6c  id GetDefaultFil
1b230 65 4e 61 6d 65 73 28 0d 0a 20 20 20 20 20 20 20  eNames(..       
1b240 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72           ref str
1b250 69 6e 67 20 64 69 72 65 63 74 6f 72 79 2c 0d 0a  ing directory,..
1b260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b270 72 65 66 20 73 74 72 69 6e 67 20 63 6f 72 65 46  ref string coreF
1b280 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  ileName,..      
1b290 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74            ref st
1b2a0 72 69 6e 67 20 6c 69 6e 71 46 69 6c 65 4e 61 6d  ring linqFileNam
1b2b0 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
1b2c0 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 65      ref string e
1b2d0 66 36 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20  f6FileName,..   
1b2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
1b2f0 20 73 74 72 69 6e 67 20 64 65 73 69 67 6e 65 72   string designer
1b300 46 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20  FileName..      
1b310 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
1b320 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1b330 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1b340 74 68 69 73 41 73 73 65 6d 62 6c 79 20 3d 3d 20  thisAssembly == 
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 72 65 74 75 72             retur
1b370 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  n;....          
1b380 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 20        directory 
1b390 3d 20 50 61 74 68 2e 47 65 74 44 69 72 65 63 74  = Path.GetDirect
1b3a0 6f 72 79 4e 61 6d 65 28 74 68 69 73 41 73 73 65  oryName(thisAsse
1b3b0 6d 62 6c 79 2e 4c 6f 63 61 74 69 6f 6e 29 3b 0d  mbly.Location);.
1b3c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1b3d0 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73     if (String.Is
1b3e0 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65  NullOrEmpty(dire
1b3f0 63 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20 20  ctory))..       
1b400 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1b410 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  urn;....        
1b420 20 20 20 20 20 20 20 20 63 6f 72 65 46 69 6c 65          coreFile
1b430 4e 61 6d 65 20 3d 20 50 61 74 68 2e 43 6f 6d 62  Name = Path.Comb
1b440 69 6e 65 28 64 69 72 65 63 74 6f 72 79 2c 0d 0a  ine(directory,..
1b450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b460 20 20 20 20 49 6e 73 74 61 6c 6c 65 72 2e 43 6f      Installer.Co
1b470 72 65 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a  reFileName);....
1b480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b490 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 20 3d 20 50  linqFileName = P
1b4a0 61 74 68 2e 43 6f 6d 62 69 6e 65 28 64 69 72 65  ath.Combine(dire
1b4b0 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20  ctory,..        
1b4c0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 73 74              Inst
1b4d0 61 6c 6c 65 72 2e 4c 69 6e 71 46 69 6c 65 4e 61  aller.LinqFileNa
1b4e0 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
1b4f0 20 20 20 20 20 20 20 20 65 66 36 46 69 6c 65 4e          ef6FileN
1b500 61 6d 65 20 3d 20 50 61 74 68 2e 43 6f 6d 62 69  ame = Path.Combi
1b510 6e 65 28 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20  ne(directory,.. 
1b520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b530 20 20 20 49 6e 73 74 61 6c 6c 65 72 2e 45 66 36     Installer.Ef6
1b540 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  FileName);....  
1b550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
1b560 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 20 3d  signerFileName =
1b570 20 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 64 69   Path.Combine(di
1b580 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20  rectory,..      
1b590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
1b5a0 73 74 61 6c 6c 65 72 2e 44 65 73 69 67 6e 65 72  staller.Designer
1b5b0 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 20 20 20 20  FileName);..    
1b5c0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1b5d0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
1b5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1b620 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
1b630 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  ate static bool 
1b640 43 68 65 63 6b 4f 70 74 69 6f 6e 28 0d 0a 20 20  CheckOption(..  
1b650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1b660 66 20 73 74 72 69 6e 67 20 61 72 67 0d 0a 20 20  f string arg..  
1b670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
1b680 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1b690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b6a0 73 74 72 69 6e 67 20 72 65 73 75 6c 74 20 3d 20  string result = 
1b6b0 61 72 67 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  arg;....        
1b6c0 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72          if (!Str
1b6d0 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
1b6e0 79 28 72 65 73 75 6c 74 29 29 0d 0a 20 20 20 20  y(result))..    
1b6f0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1b700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b710 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
1b720 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
1b730 54 45 3a 20 52 65 6d 6f 76 65 20 61 6c 6c 20 6c  TE: Remove all l
1b740 65 61 64 69 6e 67 20 73 77 69 74 63 68 20 63 68  eading switch ch
1b750 61 72 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ars...          
1b760 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1b770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b780 20 20 72 65 73 75 6c 74 20 3d 20 72 65 73 75 6c    result = resul
1b790 74 2e 54 72 69 6d 53 74 61 72 74 28 53 77 69 74  t.TrimStart(Swit
1b7a0 63 68 43 68 61 72 73 29 3b 0d 0a 0d 0a 20 20 20  chChars);....   
1b7b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b7c0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
1b7d0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
1b7e0 3a 20 48 6f 77 20 6d 61 6e 79 20 63 68 61 72 73  : How many chars
1b7f0 20 77 65 72 65 20 72 65 6d 6f 76 65 64 3f 0d 0a   were removed?..
1b800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b810 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1b820 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
1b830 63 6f 75 6e 74 20 3d 20 61 72 67 2e 4c 65 6e 67  count = arg.Leng
1b840 74 68 20 2d 20 72 65 73 75 6c 74 2e 4c 65 6e 67  th - result.Leng
1b850 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  th;....         
1b860 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1b870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b880 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 61 73 20     // NOTE: Was 
1b890 74 68 65 72 65 20 61 74 20 6c 65 61 73 74 20 6f  there at least o
1b8a0 6e 65 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ne?..           
1b8b0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1b8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b8d0 20 69 66 20 28 63 6f 75 6e 74 20 3e 20 30 29 0d   if (count > 0).
1b8e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b8f0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1b900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b910 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1b920 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
1b930 4f 54 45 3a 20 4f 6b 2c 20 72 65 70 6c 61 63 65  OTE: Ok, replace
1b940 20 74 68 65 69 72 20 6f 72 69 67 69 6e 61 6c 0d   their original.
1b950 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b960 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
1b970 20 20 61 72 67 75 6d 65 6e 74 2e 0d 0a 20 20 20    argument...   
1b980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b990 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1b9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b9b0 20 61 72 67 20 3d 20 72 65 73 75 6c 74 3b 0d 0a   arg = result;..
1b9c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b9d0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1b9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b9f0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 59        // NOTE: Y
1ba00 65 73 2c 20 74 68 69 73 20 69 73 20 61 20 73 77  es, this is a sw
1ba10 69 74 63 68 2e 0d 0a 20 20 20 20 20 20 20 20 20  itch...         
1ba20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1ba30 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1ba40 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1ba50 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  n true;..       
1ba60 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1ba70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ba80 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
1ba90 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
1baa0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
1bab0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
1bac0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1bad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1baf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb00 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1bb10 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
1bb20 69 63 20 62 6f 6f 6c 20 4d 61 74 63 68 4f 70 74  ic bool MatchOpt
1bb30 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
1bb40 20 20 20 20 20 20 73 74 72 69 6e 67 20 61 72 67        string arg
1bb50 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1bb60 20 20 20 73 74 72 69 6e 67 20 6f 70 74 69 6f 6e     string option
1bb70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1bb80 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
1bb90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1bba0 20 20 20 20 69 66 20 28 28 61 72 67 20 3d 3d 20      if ((arg == 
1bbb0 6e 75 6c 6c 29 20 7c 7c 20 28 6f 70 74 69 6f 6e  null) || (option
1bbc0 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20   == null))..    
1bbd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bbe0 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
1bbf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1bc00 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 43   return String.C
1bc10 6f 6d 70 61 72 65 28 61 72 67 2c 20 30 2c 20 6f  ompare(arg, 0, o
1bc20 70 74 69 6f 6e 2c 20 30 2c 0d 0a 20 20 20 20 20  ption, 0,..     
1bc30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61                 a
1bc40 72 67 2e 4c 65 6e 67 74 68 2c 20 53 74 72 69 6e  rg.Length, Strin
1bc50 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69  gComparison.Ordi
1bc60 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 20 3d  nalIgnoreCase) =
1bc70 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  = 0;..          
1bc80 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
1bc90 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1bca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bcb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bcc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bcd0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1bce0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
1bcf0 61 74 69 63 20 62 6f 6f 6c 3f 20 50 61 72 73 65  atic bool? Parse
1bd00 42 6f 6f 6c 65 61 6e 28 0d 0a 20 20 20 20 20 20  Boolean(..      
1bd10 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
1bd20 20 74 65 78 74 0d 0a 20 20 20 20 20 20 20 20 20   text..         
1bd30 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
1bd40 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1bd50 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74           if (!St
1bd60 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
1bd70 74 79 28 74 65 78 74 29 29 0d 0a 20 20 20 20 20  ty(text))..     
1bd80 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1bd90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bda0 20 20 62 6f 6f 6c 20 76 61 6c 75 65 3b 0d 0a 0d    bool value;...
1bdb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1bdc0 20 20 20 20 20 69 66 20 28 62 6f 6f 6c 2e 54 72       if (bool.Tr
1bdd0 79 50 61 72 73 65 28 74 65 78 74 2c 20 6f 75 74  yParse(text, out
1bde0 20 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20   value))..      
1bdf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1be00 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d    return value;.
1be10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1be20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
1be30 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
1be40 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l;..            
1be50 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
1be60 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1be70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bea0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1beb0 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
1bec0 69 63 20 6f 62 6a 65 63 74 20 50 61 72 73 65 45  ic object ParseE
1bed0 6e 75 6d 28 0d 0a 20 20 20 20 20 20 20 20 20 20  num(..          
1bee0 20 20 20 20 20 20 54 79 70 65 20 65 6e 75 6d 54        Type enumT
1bef0 79 70 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ype,..          
1bf00 20 20 20 20 20 20 73 74 72 69 6e 67 20 74 65 78        string tex
1bf10 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
1bf20 20 20 20 20 62 6f 6f 6c 20 6e 6f 43 61 73 65 0d      bool noCase.
1bf30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1bf40 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
1bf50 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1bf60 20 20 20 69 66 20 28 28 65 6e 75 6d 54 79 70 65     if ((enumType
1bf70 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 21 65 6e   == null) || !en
1bf80 75 6d 54 79 70 65 2e 49 73 45 6e 75 6d 29 0d 0a  umType.IsEnum)..
1bf90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bfa0 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
1bfb0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1bfc0 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e      if (!String.
1bfd0 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 74 65  IsNullOrEmpty(te
1bfe0 78 74 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  xt))..          
1bff0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1c000 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
1c010 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c020 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1c030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c040 20 72 65 74 75 72 6e 20 45 6e 75 6d 2e 50 61 72   return Enum.Par
1c050 73 65 28 65 6e 75 6d 54 79 70 65 2c 20 74 65 78  se(enumType, tex
1c060 74 2c 20 6e 6f 43 61 73 65 29 3b 0d 0a 20 20 20  t, noCase);..   
1c070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c080 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1c090 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
1c0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c0b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1c0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1c0d0 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
1c0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c0f0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1c100 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1c110 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1c120 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
1c130 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1c140 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1c150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c180 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1c190 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
1c1a0 73 74 61 74 69 63 20 62 6f 6f 6c 20 49 73 53 79  static bool IsSy
1c1b0 73 74 65 6d 45 66 36 41 73 73 65 6d 62 6c 79 47  stemEf6AssemblyG
1c1c0 6c 6f 62 61 6c 28 29 0d 0a 20 20 20 20 20 20 20  lobal()..       
1c1d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1c1e0 20 20 20 20 20 20 20 20 69 66 20 28 73 79 73 74          if (syst
1c1f0 65 6d 45 66 36 41 73 73 65 6d 62 6c 79 20 3d 3d  emEf6Assembly ==
1c200 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
1c210 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1c220 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
1c230 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1c240 75 72 6e 20 73 79 73 74 65 6d 45 66 36 41 73 73  urn systemEf6Ass
1c250 65 6d 62 6c 79 2e 47 6c 6f 62 61 6c 41 73 73 65  embly.GlobalAsse
1c260 6d 62 6c 79 43 61 63 68 65 3b 0d 0a 20 20 20 20  mblyCache;..    
1c270 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1c280 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
1c290 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
1c2a0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1c2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c2e0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1c2f0 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
1c300 69 63 20 53 74 61 74 69 63 20 4d 65 74 68 6f 64  ic Static Method
1c310 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  s..            p
1c320 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69  ublic static voi
1c330 64 20 42 72 65 61 6b 49 6e 74 6f 44 65 62 75 67  d BreakIntoDebug
1c340 67 65 72 28 29 0d 0a 20 20 20 20 20 20 20 20 20  ger()..         
1c350 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1c360 20 20 20 20 20 20 43 6f 6e 73 6f 6c 65 2e 57 72        Console.Wr
1c370 69 74 65 4c 69 6e 65 28 0d 0a 20 20 20 20 20 20  iteLine(..      
1c380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 41                "A
1c390 74 74 61 63 68 20 61 20 64 65 62 75 67 67 65 72  ttach a debugger
1c3a0 20 74 6f 20 70 72 6f 63 65 73 73 20 7b 30 7d 20   to process {0} 
1c3b0 61 6e 64 20 70 72 65 73 73 20 22 20 2b 0d 0a 20  and press " +.. 
1c3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c3d0 20 20 20 22 61 6e 79 20 6b 65 79 20 74 6f 20 63     "any key to c
1c3e0 6f 6e 74 69 6e 75 65 2e 22 2c 20 28 74 68 69 73  ontinue.", (this
1c3f0 50 72 6f 63 65 73 73 20 21 3d 20 6e 75 6c 6c 29  Process != null)
1c400 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   ?..            
1c410 20 20 20 20 20 20 20 20 74 68 69 73 50 72 6f 63          thisProc
1c420 65 73 73 2e 49 64 2e 54 6f 53 74 72 69 6e 67 28  ess.Id.ToString(
1c430 29 20 3a 20 22 3c 75 6e 6b 6e 6f 77 6e 3e 22 29  ) : "<unknown>")
1c440 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1c450 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
1c460 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1c470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c480 20 43 6f 6e 73 6f 6c 65 2e 52 65 61 64 4b 65 79   Console.ReadKey
1c490 28 74 72 75 65 29 3b 20 2f 2a 20 74 68 72 6f 77  (true); /* throw
1c4a0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
1c4b0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1c4c0 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 49          catch (I
1c4d0 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45  nvalidOperationE
1c4e0 78 63 65 70 74 69 6f 6e 29 20 2f 2f 20 43 6f 6e  xception) // Con
1c4f0 73 6f 6c 65 2e 52 65 61 64 4b 65 79 0d 0a 20 20  sole.ReadKey..  
1c500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1c510 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c520 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
1c530 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
1c540 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1c550 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67 67            Debugg
1c560 65 72 2e 42 72 65 61 6b 28 29 3b 0d 0a 20 20 20  er.Break();..   
1c570 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
1c580 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
1c590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1c5d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
1c5e0 6c 69 63 20 73 74 61 74 69 63 20 43 6f 6e 66 69  lic static Confi
1c5f0 67 75 72 61 74 69 6f 6e 20 43 72 65 61 74 65 44  guration CreateD
1c600 65 66 61 75 6c 74 28 29 0d 0a 20 20 20 20 20 20  efault()..      
1c610 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1c620 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
1c630 64 69 72 65 63 74 6f 72 79 20 3d 20 6e 75 6c 6c  directory = null
1c640 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1c650 20 20 20 73 74 72 69 6e 67 20 63 6f 72 65 46 69     string coreFi
1c660 6c 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a  leName = null;..
1c670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c680 73 74 72 69 6e 67 20 6c 69 6e 71 46 69 6c 65 4e  string linqFileN
1c690 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20  ame = null;..   
1c6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
1c6b0 69 6e 67 20 65 66 36 46 69 6c 65 4e 61 6d 65 20  ing ef6FileName 
1c6c0 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  = null;..       
1c6d0 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
1c6e0 64 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65  designerFileName
1c6f0 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20   = null;....    
1c700 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74 44              GetD
1c710 65 66 61 75 6c 74 46 69 6c 65 4e 61 6d 65 73 28  efaultFileNames(
1c720 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c730 20 20 20 20 20 20 72 65 66 20 64 69 72 65 63 74        ref direct
1c740 6f 72 79 2c 20 72 65 66 20 63 6f 72 65 46 69 6c  ory, ref coreFil
1c750 65 4e 61 6d 65 2c 20 72 65 66 20 6c 69 6e 71 46  eName, ref linqF
1c760 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  ileName,..      
1c770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1c780 66 20 65 66 36 46 69 6c 65 4e 61 6d 65 2c 20 72  f ef6FileName, r
1c790 65 66 20 64 65 73 69 67 6e 65 72 46 69 6c 65 4e  ef designerFileN
1c7a0 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ame);....       
1c7b0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1c7c0 6e 65 77 20 43 6f 6e 66 69 67 75 72 61 74 69 6f  new Configuratio
1c7d0 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
1c7e0 20 20 20 20 20 20 20 20 74 68 69 73 41 73 73 65          thisAsse
1c7f0 6d 62 6c 79 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c  mbly, null, null
1c800 2c 20 64 69 72 65 63 74 6f 72 79 2c 20 63 6f 72  , directory, cor
1c810 65 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20  eFileName,..    
1c820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c830 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 2c 20 65 66  linqFileName, ef
1c840 36 46 69 6c 65 4e 61 6d 65 2c 20 64 65 73 69 67  6FileName, desig
1c850 6e 65 72 46 69 6c 65 4e 61 6d 65 2c 20 6e 75 6c  nerFileName, nul
1c860 6c 2c 20 6e 75 6c 6c 2c 0d 0a 20 20 20 20 20 20  l, null,..      
1c870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 75                nu
1c880 6c 6c 2c 20 54 72 61 63 65 4f 70 73 2e 44 65 62  ll, TraceOps.Deb
1c890 75 67 46 6f 72 6d 61 74 2c 20 54 72 61 63 65 4f  ugFormat, TraceO
1c8a0 70 73 2e 54 72 61 63 65 46 6f 72 6d 61 74 2c 0d  ps.TraceFormat,.
1c8b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c8c0 20 20 20 20 20 49 6e 73 74 61 6c 6c 46 6c 61 67       InstallFlag
1c8d0 73 2e 44 65 66 61 75 6c 74 2c 20 50 72 6f 76 69  s.Default, Provi
1c8e0 64 65 72 46 6c 61 67 73 2e 44 65 66 61 75 6c 74  derFlags.Default
1c8f0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1c900 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f         TracePrio
1c910 72 69 74 79 2e 44 65 66 61 75 6c 74 2c 20 54 72  rity.Default, Tr
1c920 61 63 65 50 72 69 6f 72 69 74 79 2e 44 65 66 61  acePriority.Defa
1c930 75 6c 74 2c 20 66 61 6c 73 65 2c 20 74 72 75 65  ult, false, true
1c940 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1c950 20 20 20 20 20 20 20 66 61 6c 73 65 2c 20 66 61         false, fa
1c960 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73  lse, false, fals
1c970 65 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c  e, false, false,
1c980 20 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c 0d 0a   false, false,..
1c990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c9a0 20 20 20 20 66 61 6c 73 65 2c 20 66 61 6c 73 65      false, false
1c9b0 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20  , false, false, 
1c9c0 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66 61  false, false, fa
1c9d0 6c 73 65 2c 20 66 61 6c 73 65 2c 0d 0a 20 20 20  lse, false,..   
1c9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c9f0 20 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66   false, false, f
1ca00 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66 61 6c  alse, false, fal
1ca10 73 65 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73 65  se, false, false
1ca20 2c 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20  , false,..      
1ca30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 61                fa
1ca40 6c 73 65 2c 20 74 72 75 65 2c 20 74 72 75 65 2c  lse, true, true,
1ca50 20 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66   false, false, f
1ca60 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alse);..        
1ca70 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1ca80 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1ca90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1caa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cac0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1cad0 20 20 20 20 20 20 20 20 5b 4d 65 74 68 6f 64 49          [MethodI
1cae0 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70  mpl(MethodImplOp
1caf0 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67  tions.NoInlining
1cb00 29 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  )]..            
1cb10 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 62 6f  public static bo
1cb20 6f 6c 20 46 72 6f 6d 41 72 67 73 28 0d 0a 20 20  ol FromArgs(..  
1cb30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
1cb40 72 69 6e 67 5b 5d 20 61 72 67 73 2c 0d 0a 20 20  ring[] args,..  
1cb50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
1cb60 6f 6c 20 73 74 72 69 63 74 2c 0d 0a 20 20 20 20  ol strict,..    
1cb70 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
1cb80 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 63 6f  Configuration co
1cb90 6e 66 69 67 75 72 61 74 69 6f 6e 2c 0d 0a 20 20  nfiguration,..  
1cba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1cbb0 66 20 73 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a  f string error..
1cbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cbd0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
1cbe0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1cbf0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
1cc00 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1cc10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1cc20 20 28 61 72 67 73 20 3d 3d 20 6e 75 6c 6c 29 0d   (args == null).
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 72 65 74 75 72 6e 20           return 
1cc50 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  true;....       
1cc60 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1cc70 28 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 3d  (configuration =
1cc80 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
1cc90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cca0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 3d   configuration =
1ccb0 20 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 43   Configuration.C
1ccc0 72 65 61 74 65 44 65 66 61 75 6c 74 28 29 3b 0d  reateDefault();.
1ccd0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1cce0 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74         int lengt
1ccf0 68 20 3d 20 61 72 67 73 2e 4c 65 6e 67 74 68 3b  h = args.Length;
1cd00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1cd10 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74          for (int
1cd20 20 69 6e 64 65 78 20 3d 20 30 3b 20 69 6e 64 65   index = 0; inde
1cd30 78 20 3c 20 6c 65 6e 67 74 68 3b 20 69 6e 64 65  x < length; inde
1cd40 78 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20  x++)..          
1cd50 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1cd60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cd70 20 20 20 20 20 73 74 72 69 6e 67 20 61 72 67 20       string arg 
1cd80 3d 20 61 72 67 73 5b 69 6e 64 65 78 5d 3b 0d 0a  = args[index];..
1cd90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1cda0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1cdb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cdc0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53        // NOTE: S
1cdd0 6b 69 70 20 61 6e 79 20 61 72 67 75 6d 65 6e 74  kip any argument
1cde0 20 74 68 61 74 20 69 73 20 6e 75 6c 6c 20 28 3f   that is null (?
1cdf0 29 20 6f 72 20 61 6e 20 65 6d 70 74 79 0d 0a 20  ) or an empty.. 
1ce00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ce10 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
1ce20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  string...       
1ce30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ce40 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
1ce50 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1ce60 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  (String.IsNullOr
1ce70 45 6d 70 74 79 28 61 72 67 29 29 0d 0a 20 20 20  Empty(arg))..   
1ce80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ce90 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75           continu
1cea0 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
1ceb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1cec0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ced0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
1cee0 45 3a 20 57 65 20 61 72 65 20 67 6f 69 6e 67 20  E: We are going 
1cef0 74 6f 20 6d 6f 64 69 66 79 20 74 68 65 20 6f 72  to modify the or
1cf00 69 67 69 6e 61 6c 20 61 72 67 75 6d 65 6e 74 0d  iginal argument.
1cf10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1cf20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
1cf30 20 20 62 79 20 72 65 6d 6f 76 69 6e 67 20 61 6e    by removing an
1cf40 79 20 6c 65 61 64 69 6e 67 20 6f 70 74 69 6f 6e  y leading option
1cf50 20 63 68 61 72 61 63 74 65 72 73 3b 0d 0a 20 20   characters;..  
1cf60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cf70 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
1cf80 68 65 72 65 66 6f 72 65 2c 20 77 65 20 75 73 65  herefore, we use
1cf90 20 61 20 6e 65 77 20 73 74 72 69 6e 67 20 74 6f   a new string to
1cfa0 20 68 6f 6c 64 20 74 68 65 0d 0a 20 20 20 20 20   hold the..     
1cfb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cfc0 20 20 20 2f 2f 20 20 20 20 20 20 20 6d 6f 64 69     //       modi
1cfd0 66 69 65 64 20 61 72 67 75 6d 65 6e 74 2e 0d 0a  fied argument...
1cfe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cff0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1d000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d010 20 20 20 20 73 74 72 69 6e 67 20 6e 65 77 41 72      string newAr
1d020 67 20 3d 20 61 72 67 3b 0d 0a 0d 0a 20 20 20 20  g = arg;....    
1d030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d040 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1d050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d060 2f 2f 20 4e 4f 54 45 3a 20 41 6c 6c 20 74 68 65  // NOTE: All the
1d070 20 73 75 70 70 6f 72 74 65 64 20 63 6f 6d 6d 61   supported comma
1d080 6e 64 20 6c 69 6e 65 20 6f 70 74 69 6f 6e 73 20  nd line options 
1d090 6d 75 73 74 0d 0a 20 20 20 20 20 20 20 20 20 20  must..          
1d0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1d0b0 20 20 20 20 20 20 20 62 65 67 69 6e 20 77 69 74         begin wit
1d0c0 68 20 61 6e 20 6f 70 74 69 6f 6e 20 63 68 61 72  h an option char
1d0d0 61 63 74 65 72 20 28 65 2e 67 2e 20 61 20 6d 69  acter (e.g. a mi
1d0e0 6e 75 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nus..           
1d0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1d100 20 20 20 20 20 20 6f 72 20 66 6f 72 77 61 72 64        or forward
1d110 20 73 6c 61 73 68 29 3b 20 61 74 74 65 6d 70 74   slash); attempt
1d120 20 74 6f 20 76 61 6c 69 64 61 74 65 20 74 68 61   to validate tha
1d130 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t..             
1d140 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
1d150 20 20 20 20 6e 6f 77 2e 20 20 49 66 20 77 65 20      now.  If we 
1d160 66 61 69 6c 20 69 6e 20 73 74 72 69 63 74 20 6d  fail in strict m
1d170 6f 64 65 2c 20 77 65 20 61 72 65 20 64 6f 6e 65  ode, we are done
1d180 3b 0d 0a 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 2f 2f 20 20 20             //   
1d1a0 20 20 20 20 6f 74 68 65 72 77 69 73 65 2c 20 6a      otherwise, j
1d1b0 75 73 74 20 73 6b 69 70 20 74 68 69 73 20 61 72  ust skip this ar
1d1c0 67 75 6d 65 6e 74 20 61 6e 64 20 61 64 76 61 6e  gument and advan
1d1d0 63 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ce..            
1d1e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
1d1f0 20 20 20 20 20 74 6f 20 74 68 65 20 6e 65 78 74       to the next
1d200 20 6f 6e 65 2e 0d 0a 20 20 20 20 20 20 20 20 20   one...         
1d210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1d220 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1d230 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
1d240 43 68 65 63 6b 4f 70 74 69 6f 6e 28 72 65 66 20  CheckOption(ref 
1d250 6e 65 77 41 72 67 29 29 0d 0a 20 20 20 20 20 20  newArg))..      
1d260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d270 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1d280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d290 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70   error = TraceOp
1d2a0 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28  s.DebugAndTrace(
1d2b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d2d0 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e    TracePriority.
1d2e0 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c  Lowest, debugCal
1d2f0 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
1d300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d310 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c          traceCal
1d320 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f  lback, String.Fo
1d330 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
1d340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d350 20 20 20 20 20 20 20 22 55 6e 73 75 70 70 6f 72         "Unsuppor
1d360 74 65 64 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65  ted command line
1d370 20 61 72 67 75 6d 65 6e 74 3a 20 7b 30 7d 22 2c   argument: {0}",
1d380 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d3a0 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67    ForDisplay(arg
1d3b0 29 29 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72  )), traceCategor
1d3c0 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
1d3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d3e0 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a     if (strict)..
1d3f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d410 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
1d420 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d430 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
1d440 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  tinue;..        
1d450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d460 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
1d470 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1d480 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d490 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
1d4a0 3a 20 41 6c 6c 20 74 68 65 20 73 75 70 70 6f 72  : All the suppor
1d4b0 74 65 64 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65  ted command line
1d4c0 20 6f 70 74 69 6f 6e 73 20 6d 75 73 74 0d 0a 20   options must.. 
1d4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d4e0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
1d4f0 68 61 76 65 20 61 20 76 61 6c 75 65 3b 20 74 68  have a value; th
1d500 65 72 65 66 6f 72 65 2c 20 61 74 74 65 6d 70 74  erefore, attempt
1d510 20 74 6f 20 61 64 76 61 6e 63 65 0d 0a 20 20 20   to advance..   
1d520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d530 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 6f       //       to
1d540 20 69 74 20 6e 6f 77 2e 20 20 49 66 20 77 65 20   it now.  If we 
1d550 66 61 69 6c 2c 20 77 65 20 61 72 65 20 64 6f 6e  fail, we are don
1d560 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
1d570 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
1d580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d590 20 20 20 20 20 20 20 20 69 6e 64 65 78 2b 2b 3b          index++;
1d5a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1d5b0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1d5c0 69 6e 64 65 78 20 3e 3d 20 6c 65 6e 67 74 68 29  index >= length)
1d5d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d5e0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1d5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d600 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d           error =
1d610 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
1d620 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20  ndTrace(..      
1d630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d640 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50            TraceP
1d650 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20  riority.Lowest, 
1d660 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a  debugCallback,..
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 20                  
1d690 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53  traceCallback, S
1d6a0 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
1d6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
1d6d0 4d 69 73 73 69 6e 67 20 76 61 6c 75 65 20 66 6f  Missing value fo
1d6e0 72 20 6f 70 74 69 6f 6e 3a 20 7b 30 7d 22 2c 0d  r option: {0}",.
1d6f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d710 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29   ForDisplay(arg)
1d720 29 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79  ), traceCategory
1d730 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1d740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d750 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20    if (strict).. 
1d760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1d780 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
1d790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d7a0 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61              brea
1d7b0 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k;..            
1d7c0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
1d7d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d7e0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1d7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d800 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 47 72       // NOTE: Gr
1d810 61 62 20 74 68 65 20 74 65 78 74 75 61 6c 20 76  ab the textual v
1d820 61 6c 75 65 20 6f 66 20 74 68 69 73 20 63 6f 6d  alue of this com
1d830 6d 61 6e 64 20 6c 69 6e 65 0d 0a 20 20 20 20 20  mand line..     
1d840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d850 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 70 74 69     //       opti
1d860 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on...           
1d870 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1d880 0a 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 73 74 72 69 6e 67 20           string 
1d8a0 74 65 78 74 20 3d 20 61 72 67 73 5b 69 6e 64 65  text = args[inde
1d8b0 78 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  x];....         
1d8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1d8d0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1d8e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
1d8f0 54 45 3a 20 46 69 67 75 72 65 20 6f 75 74 20 77  TE: Figure out w
1d900 68 69 63 68 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e  hich command lin
1d910 65 20 6f 70 74 69 6f 6e 20 74 68 69 73 20 69 73  e option this is
1d920 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d930 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1d940 20 20 20 28 62 61 73 65 64 20 6f 6e 20 61 20 70     (based on a p
1d950 61 72 74 69 61 6c 20 6e 61 6d 65 20 6d 61 74 63  artial name matc
1d960 68 29 20 61 6e 64 20 74 68 65 6e 20 74 72 79 0d  h) and then try.
1d970 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d980 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
1d990 20 20 74 6f 20 69 6e 74 65 72 70 72 65 74 20 74    to interpret t
1d9a0 68 65 20 74 65 78 74 75 61 6c 20 76 61 6c 75 65  he textual value
1d9b0 20 61 73 20 74 68 65 20 63 6f 72 72 65 63 74 0d   as the correct.
1d9c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d9d0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
1d9e0 20 20 74 79 70 65 2e 0d 0a 20 20 20 20 20 20 20    type...       
1d9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1da00 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
1da10 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1da20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77  (MatchOption(new
1da30 41 72 67 2c 20 22 62 72 65 61 6b 22 29 29 0d 0a  Arg, "break"))..
1da40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1da50 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1da60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1da70 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c         bool? val
1da80 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61  ue = ParseBoolea
1da90 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20  n(text);....    
1daa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dab0 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
1dac0 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
1dad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dae0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1daf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1db00 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72             error
1db10 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75   = TraceOps.Debu
1db20 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20  gAndTrace(..    
1db30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1db40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1db50 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f  TracePriority.Lo
1db60 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62  west, debugCallb
1db70 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ack,..          
1db80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1db90 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
1dba0 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e  allback, String.
1dbb0 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
1dbc0 20 20 20 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 22 49 6e               "In
1dbe0 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61  valid {0} boolea
1dbf0 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a  n value: {1}",..
1dc00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dc10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dc20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61      ForDisplay(a
1dc30 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  rg), ForDisplay(
1dc40 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20  text)),..       
1dc50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dc60 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
1dc70 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a  ceCategory);....
1dc80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dc90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dca0 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20  if (strict)..   
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 20 20 20 20 20 20                  
1dcd0 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
1dce0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1dcf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dd00 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20    continue;..   
1dd10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dd20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
1dd30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dd40 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 62            if ((b
1dd50 6f 6f 6c 29 76 61 6c 75 65 29 0d 0a 20 20 20 20  ool)value)..    
1dd60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dd70 20 20 20 20 20 20 20 20 20 20 20 20 42 72 65 61              Brea
1dd80 6b 49 6e 74 6f 44 65 62 75 67 67 65 72 28 29 3b  kIntoDebugger();
1dd90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1dda0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1ddb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ddc0 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61       else if (Ma
1ddd0 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67  tchOption(newArg
1dde0 2c 20 22 63 6f 6e 66 69 67 56 65 72 73 69 6f 6e  , "configVersion
1ddf0 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "))..           
1de00 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
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 20 20 20 20 20 63 6f 6e 66              conf
1de30 69 67 75 72 61 74 69 6f 6e 2e 63 6f 6e 66 69 67  iguration.config
1de40 56 65 72 73 69 6f 6e 20 3d 20 74 65 78 74 3b 0d  Version = text;.
1de50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1de60 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1de70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1de80 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74      else if (Mat
1de90 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c  chOption(newArg,
1dea0 20 22 63 6f 6e 66 69 72 6d 22 29 29 0d 0a 20 20   "confirm"))..  
1deb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dec0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1ded0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dee0 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65       bool? value
1def0 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28   = ParseBoolean(
1df00 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  text);....      
1df10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1df20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
1df30 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
1df40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1df50 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1df60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1df70 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d           error =
1df80 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
1df90 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20  ndTrace(..      
1dfa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dfb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
1dfc0 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65  acePriority.Lowe
1dfd0 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63  st, debugCallbac
1dfe0 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
1dff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e000 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c          traceCal
1e010 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f  lback, String.Fo
1e020 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
1e030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e040 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 76 61             "Inva
1e050 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20  lid {0} boolean 
1e060 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20  value: {1}",..  
1e070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e090 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67    ForDisplay(arg
1e0a0 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65  ), ForDisplay(te
1e0b0 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  xt)),..         
1e0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e0d0 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
1e0e0 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
1e0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1e110 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20   (strict)..     
1e120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1e140 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
1e150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e170 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20  continue;..     
1e180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e190 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1e1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e1b0 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72          configur
1e1c0 61 74 69 6f 6e 2e 63 6f 6e 66 69 72 6d 20 3d 20  ation.confirm = 
1e1d0 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20  (bool)value;..  
1e1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e1f0 20 20 20 20 20 20 7d 0d 0a 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 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f   else if (MatchO
1e220 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 63  ption(newArg, "c
1e230 6f 72 65 46 69 6c 65 4e 61 6d 65 22 29 29 0d 0a  oreFileName"))..
1e240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e250 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1e260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e270 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
1e280 74 69 6f 6e 2e 63 6f 72 65 46 69 6c 65 4e 61 6d  tion.coreFileNam
1e290 65 20 3d 20 74 65 78 74 3b 0d 0a 20 20 20 20 20  e = text;..     
1e2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e2b0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1e2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
1e2d0 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69  se if (MatchOpti
1e2e0 6f 6e 28 6e 65 77 41 72 67 2c 20 22 64 65 62 75  on(newArg, "debu
1e2f0 67 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  g"))..          
1e300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1e310 0a 20 20 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 62 6f 6f               boo
1e330 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65  l? value = Parse
1e340 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a  Boolean(text);..
1e350 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1e370 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29   (value == null)
1e380 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1e3a0 0a 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 20 20 20 20 20 20 20                  
1e3c0 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70   error = TraceOp
1e3d0 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28  s.DebugAndTrace(
1e3e0 0d 0a 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 20 20 20 20 54 72 61 63 65 50 72 69 6f 72        TracePrior
1e410 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75  ity.Lowest, debu
1e420 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  gCallback,..    
1e430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e450 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53  traceCallback, S
1e460 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
1e470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e490 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20     "Invalid {0} 
1e4a0 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b  boolean value: {
1e4b0 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
1e4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e4d0 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73            ForDis
1e4e0 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69  play(arg), ForDi
1e4f0 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20  splay(text)),.. 
1e500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e520 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
1e530 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1e540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e550 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74        if (strict
1e560 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1e570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e580 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
1e590 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
1e5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e5b0 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65          continue
1e5c0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1e5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1e5e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1e5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e600 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64 65  configuration.de
1e610 62 75 67 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75  bug = (bool)valu
1e620 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
1e630 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1e640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e650 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
1e660 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41  MatchOption(newA
1e670 72 67 2c 20 22 64 65 62 75 67 46 6f 72 6d 61 74  rg, "debugFormat
1e680 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "))..           
1e690 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1e6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e6b0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
1e6c0 69 67 75 72 61 74 69 6f 6e 2e 64 65 62 75 67 46  iguration.debugF
1e6d0 6f 72 6d 61 74 20 3d 20 74 65 78 74 3b 0d 0a 20  ormat = text;.. 
1e6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e6f0 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
1e700 4f 70 73 2e 44 65 62 75 67 46 6f 72 6d 61 74 20  Ops.DebugFormat 
1e710 3d 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e  = configuration.
1e720 64 65 62 75 67 46 6f 72 6d 61 74 3b 0d 0a 20 20  debugFormat;..  
1e730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e740 20 20 20 20 20 20 7d 0d 0a 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 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f   else if (MatchO
1e770 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 64  ption(newArg, "d
1e780 65 62 75 67 50 72 69 6f 72 69 74 79 22 29 29 0d  ebugPriority")).
1e790 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e7a0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1e7b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e7c0 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76          object v
1e7d0 61 6c 75 65 20 3d 20 50 61 72 73 65 45 6e 75 6d  alue = ParseEnum
1e7e0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1e7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e800 20 20 20 74 79 70 65 6f 66 28 54 72 61 63 65 50     typeof(TraceP
1e810 72 69 6f 72 69 74 79 29 2c 20 74 65 78 74 2c 20  riority), text, 
1e820 74 72 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  true);....      
1e830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e840 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
1e850 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
1e860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e870 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1e880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e890 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d           error =
1e8a0 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
1e8b0 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20  ndTrace(..      
1e8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
1e8e0 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65  acePriority.Lowe
1e8f0 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63  st, debugCallbac
1e900 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
1e910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e920 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c          traceCal
1e930 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f  lback, String.Fo
1e940 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
1e950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e960 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 76 61             "Inva
1e970 6c 69 64 20 7b 30 7d 20 76 61 6c 75 65 3a 20 7b  lid {0} value: {
1e980 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
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 46 6f 72 44 69 73            ForDis
1e9b0 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69  play(arg), ForDi
1e9c0 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20  splay(text)),.. 
1e9d0 20 20 20 20 20 20 20 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 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
1ea00 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1ea10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ea20 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74        if (strict
1ea30 29 0d 0a 20 20 20 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 20 20                  
1ea50 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
1ea60 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
1ea70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ea80 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65          continue
1ea90 3b 0d 0a 20 20 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 7d                 }
1eab0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1eac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ead0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64 65  configuration.de
1eae0 62 75 67 50 72 69 6f 72 69 74 79 20 3d 20 28 54  bugPriority = (T
1eaf0 72 61 63 65 50 72 69 6f 72 69 74 79 29 76 61 6c  racePriority)val
1eb00 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
1eb10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eb20 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 50   TraceOps.DebugP
1eb30 72 69 6f 72 69 74 79 20 3d 20 63 6f 6e 66 69 67  riority = config
1eb40 75 72 61 74 69 6f 6e 2e 64 65 62 75 67 50 72 69  uration.debugPri
1eb50 6f 72 69 74 79 3b 0d 0a 20 20 20 20 20 20 20 20  ority;..        
1eb60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eb70 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1eb80 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
1eb90 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28  if (MatchOption(
1eba0 6e 65 77 41 72 67 2c 20 22 64 65 73 69 67 6e 65  newArg, "designe
1ebb0 72 46 69 6c 65 4e 61 6d 65 22 29 29 0d 0a 20 20  rFileName"))..  
1ebc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ebd0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1ebe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ebf0 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
1ec00 6f 6e 2e 64 65 73 69 67 6e 65 72 46 69 6c 65 4e  on.designerFileN
1ec10 61 6d 65 20 3d 20 74 65 78 74 3b 0d 0a 20 20 20  ame = text;..   
1ec20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ec30 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1ec40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ec50 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70  else if (MatchOp
1ec60 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 64 69  tion(newArg, "di
1ec70 72 65 63 74 6f 72 79 22 29 29 0d 0a 20 20 20 20  rectory"))..    
1ec80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ec90 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1eca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ecb0 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
1ecc0 2e 64 69 72 65 63 74 6f 72 79 20 3d 20 74 65 78  .directory = tex
1ecd0 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  t;....          
1ece0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ecf0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
1ed00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ed10 20 20 2f 2f 20 4e 4f 54 45 3a 20 2a 53 50 45 43    // NOTE: *SPEC
1ed20 49 41 4c 2a 20 4d 75 73 74 20 72 65 66 72 65 73  IAL* Must refres
1ed30 68 20 74 68 65 20 66 69 6c 65 20 6e 61 6d 65 73  h the file names
1ed40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ed50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1ed60 20 20 20 20 20 20 20 68 65 72 65 20 62 65 63 61         here beca
1ed70 75 73 65 20 74 68 65 20 75 6e 64 65 72 6c 79 69  use the underlyi
1ed80 6e 67 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20  ng directory..  
1ed90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eda0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1edb0 20 20 20 68 61 73 20 63 68 61 6e 67 65 64 2e 0d     has changed..
1edc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1edd0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1ede0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1edf0 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
1ee00 69 6e 67 20 63 6f 72 65 46 69 6c 65 4e 61 6d 65  ing coreFileName
1ee10 20 3d 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e   = configuration
1ee20 2e 63 6f 72 65 46 69 6c 65 4e 61 6d 65 3b 0d 0a  .coreFileName;..
1ee30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ee40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1ee50 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c   (!String.IsNull
1ee60 4f 72 45 6d 70 74 79 28 63 6f 72 65 46 69 6c 65  OrEmpty(coreFile
1ee70 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
1ee80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ee90 20 20 20 20 20 20 20 20 63 6f 72 65 46 69 6c 65          coreFile
1eea0 4e 61 6d 65 20 3d 20 50 61 74 68 2e 47 65 74 46  Name = Path.GetF
1eeb0 69 6c 65 4e 61 6d 65 28 63 6f 72 65 46 69 6c 65  ileName(coreFile
1eec0 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Name);....      
1eed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eee0 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67        if (String
1eef0 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 63  .IsNullOrEmpty(c
1ef00 6f 72 65 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  oreFileName)).. 
1ef10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ef20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1ef30 6f 72 65 46 69 6c 65 4e 61 6d 65 20 3d 20 49 6e  oreFileName = In
1ef40 73 74 61 6c 6c 65 72 2e 43 6f 72 65 46 69 6c 65  staller.CoreFile
1ef50 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Name;....       
1ef60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ef70 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
1ef80 6f 6e 2e 63 6f 72 65 46 69 6c 65 4e 61 6d 65 20  on.coreFileName 
1ef90 3d 20 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 0d  = Path.Combine(.
1efa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1efb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1efc0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64   configuration.d
1efd0 69 72 65 63 74 6f 72 79 2c 20 63 6f 72 65 46 69  irectory, coreFi
1efe0 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
1eff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f000 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6c          string l
1f010 69 6e 71 46 69 6c 65 4e 61 6d 65 20 3d 20 63 6f  inqFileName = co
1f020 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6c 69 6e 71  nfiguration.linq
1f030 46 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20  FileName;....   
1f040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f050 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74           if (!St
1f060 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
1f070 74 79 28 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 29  ty(linqFileName)
1f080 29 0d 0a 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 20 20 20 20                  
1f0a0 20 20 20 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 20     linqFileName 
1f0b0 3d 20 50 61 74 68 2e 47 65 74 46 69 6c 65 4e 61  = Path.GetFileNa
1f0c0 6d 65 28 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 29  me(linqFileName)
1f0d0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1f0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f0f0 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75   if (String.IsNu
1f100 6c 6c 4f 72 45 6d 70 74 79 28 6c 69 6e 71 46 69  llOrEmpty(linqFi
1f110 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
1f120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f130 20 20 20 20 20 20 20 20 20 20 6c 69 6e 71 46 69            linqFi
1f140 6c 65 4e 61 6d 65 20 3d 20 49 6e 73 74 61 6c 6c  leName = Install
1f150 65 72 2e 4c 69 6e 71 46 69 6c 65 4e 61 6d 65 3b  er.LinqFileName;
1f160 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1f170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f180 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6c 69  configuration.li
1f190 6e 71 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74  nqFileName = Pat
1f1a0 68 2e 43 6f 6d 62 69 6e 65 28 0d 0a 20 20 20 20  h.Combine(..    
1f1b0 20 20 20 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 63 6f 6e 66              conf
1f1d0 69 67 75 72 61 74 69 6f 6e 2e 64 69 72 65 63 74  iguration.direct
1f1e0 6f 72 79 2c 20 6c 69 6e 71 46 69 6c 65 4e 61 6d  ory, linqFileNam
1f1f0 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
1f200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f210 20 20 20 73 74 72 69 6e 67 20 65 66 36 46 69 6c     string ef6Fil
1f220 65 4e 61 6d 65 20 3d 20 63 6f 6e 66 69 67 75 72  eName = configur
1f230 61 74 69 6f 6e 2e 65 66 36 46 69 6c 65 4e 61 6d  ation.ef6FileNam
1f240 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
1f250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f260 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73    if (!String.Is
1f270 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 65 66 36 46  NullOrEmpty(ef6F
1f280 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
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 20 20 20 65 66 36 46 69             ef6Fi
1f2b0 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68 2e 47 65  leName = Path.Ge
1f2c0 74 46 69 6c 65 4e 61 6d 65 28 65 66 36 46 69 6c  tFileName(ef6Fil
1f2d0 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  eName);....     
1f2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f2f0 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e         if (Strin
1f300 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
1f310 65 66 36 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  ef6FileName)).. 
1f320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
1f340 66 36 46 69 6c 65 4e 61 6d 65 20 3d 20 49 6e 73  f6FileName = Ins
1f350 74 61 6c 6c 65 72 2e 45 66 36 46 69 6c 65 4e 61  taller.Ef6FileNa
1f360 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  me;....         
1f370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f380 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
1f390 2e 65 66 36 46 69 6c 65 4e 61 6d 65 20 3d 20 50  .ef6FileName = P
1f3a0 61 74 68 2e 43 6f 6d 62 69 6e 65 28 0d 0a 20 20  ath.Combine(..  
1f3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
1f3d0 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64 69 72 65  nfiguration.dire
1f3e0 63 74 6f 72 79 2c 20 65 66 36 46 69 6c 65 4e 61  ctory, ef6FileNa
1f3f0 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
1f400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f410 20 20 20 20 73 74 72 69 6e 67 20 64 65 73 69 67      string desig
1f420 6e 65 72 46 69 6c 65 4e 61 6d 65 20 3d 20 63 6f  nerFileName = co
1f430 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64 65 73 69  nfiguration.desi
1f440 67 6e 65 72 46 69 6c 65 4e 61 6d 65 3b 0d 0a 0d  gnerFileName;...
1f450 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f460 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1f470 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f  (!String.IsNullO
1f480 72 45 6d 70 74 79 28 64 65 73 69 67 6e 65 72 46  rEmpty(designerF
1f490 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
1f4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f4b0 20 20 20 20 20 20 20 20 20 20 20 64 65 73 69 67             desig
1f4c0 6e 65 72 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61  nerFileName = Pa
1f4d0 74 68 2e 47 65 74 46 69 6c 65 4e 61 6d 65 28 64  th.GetFileName(d
1f4e0 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 29  esignerFileName)
1f4f0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1f500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f510 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75   if (String.IsNu
1f520 6c 6c 4f 72 45 6d 70 74 79 28 64 65 73 69 67 6e  llOrEmpty(design
1f530 65 72 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20  erFileName))..  
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 20 20 64 65                de
1f560 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 20 3d  signerFileName =
1f570 20 49 6e 73 74 61 6c 6c 65 72 2e 44 65 73 69 67   Installer.Desig
1f580 6e 65 72 46 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a  nerFileName;....
1f590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f5a0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
1f5b0 69 67 75 72 61 74 69 6f 6e 2e 64 65 73 69 67 6e  iguration.design
1f5c0 65 72 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74  erFileName = Pat
1f5d0 68 2e 43 6f 6d 62 69 6e 65 28 0d 0a 20 20 20 20  h.Combine(..    
1f5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f5f0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
1f600 69 67 75 72 61 74 69 6f 6e 2e 64 69 72 65 63 74  iguration.direct
1f610 6f 72 79 2c 20 64 65 73 69 67 6e 65 72 46 69 6c  ory, designerFil
1f620 65 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20  eName);..       
1f630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f640 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1f650 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
1f660 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e   if (MatchOption
1f670 28 6e 65 77 41 72 67 2c 20 22 65 66 36 46 69 6c  (newArg, "ef6Fil
1f680 65 4e 61 6d 65 22 29 29 0d 0a 20 20 20 20 20 20  eName"))..      
1f690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f6a0 20 20 7b 0d 0a 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 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 65   configuration.e
1f6d0 66 36 46 69 6c 65 4e 61 6d 65 20 3d 20 74 65 78  f6FileName = tex
1f6e0 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t;..            
1f6f0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1f700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f710 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
1f720 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41  MatchOption(newA
1f730 72 67 2c 20 22 69 6e 73 74 61 6c 6c 22 29 29 0d  rg, "install")).
1f740 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f750 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1f760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f770 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61          bool? va
1f780 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65  lue = ParseBoole
1f790 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20  an(text);....   
1f7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f7b0 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
1f7c0 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue == null)..   
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 20 20 7b 0d 0a 20 20 20 20           {..    
1f7f0 20 20 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 65 72 72 6f              erro
1f810 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62  r = TraceOps.Deb
1f820 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20  ugAndTrace(..   
1f830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f850 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c   TracePriority.L
1f860 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c  owest, debugCall
1f870 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
1f880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f890 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
1f8a0 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67  Callback, String
1f8b0 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
1f8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49                "I
1f8e0 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65  nvalid {0} boole
1f8f0 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d  an value: {1}",.
1f900 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f920 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28       ForDisplay(
1f930 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79  arg), ForDisplay
1f940 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20  (text)),..      
1f950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
1f970 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
1f980 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f9a0 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20   if (strict)..  
1f9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f9d0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
1f9e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1f9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa00 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20     continue;..  
1fa10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
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 63 6f 6e 66 69             confi
1fa50 67 75 72 61 74 69 6f 6e 2e 69 6e 73 74 61 6c 6c  guration.install
1fa60 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d   = (bool)value;.
1fa70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1fa80 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1fa90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1faa0 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74      else if (Mat
1fab0 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c  chOption(newArg,
1fac0 20 22 69 6e 73 74 61 6c 6c 46 6c 61 67 73 22 29   "installFlags")
1fad0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1fae0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1faf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fb00 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74            object
1fb10 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 45 6e   value = ParseEn
1fb20 75 6d 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  um(..           
1fb30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fb40 20 20 20 20 20 74 79 70 65 6f 66 28 49 6e 73 74       typeof(Inst
1fb50 61 6c 6c 46 6c 61 67 73 29 2c 20 74 65 78 74 2c  allFlags), text,
1fb60 20 74 72 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20   true);....     
1fb70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fb80 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
1fb90 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
1fba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fbb0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1fbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fbd0 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20            error 
1fbe0 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67  = TraceOps.Debug
1fbf0 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20  AndTrace(..     
1fc00 20 20 20 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 20 20 20 20 54                 T
1fc20 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77  racePriority.Low
1fc30 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61  est, debugCallba
1fc40 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck,..           
1fc50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fc60 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
1fc70 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46  llback, String.F
1fc80 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
1fc90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fca0 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 76              "Inv
1fcb0 61 6c 69 64 20 7b 30 7d 20 76 61 6c 75 65 3a 20  alid {0} value: 
1fcc0 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {1}",..         
1fcd0 20 20 20 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 46 6f 72 44 69             ForDi
1fcf0 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44  splay(arg), ForD
1fd00 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a  isplay(text)),..
1fd10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fd20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fd30 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
1fd40 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
1fd50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fd60 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63         if (stric
1fd70 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
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 72 65 74 75 72 6e 20 66          return f
1fda0 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
1fdb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fdc0 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75           continu
1fdd0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
1fde0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fdf0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
1fe00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fe10 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 69   configuration.i
1fe20 6e 73 74 61 6c 6c 46 6c 61 67 73 20 3d 20 28 49  nstallFlags = (I
1fe30 6e 73 74 61 6c 6c 46 6c 61 67 73 29 76 61 6c 75  nstallFlags)valu
1fe40 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
1fe50 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1fe60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fe70 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
1fe80 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41  MatchOption(newA
1fe90 72 67 2c 20 22 6c 69 6e 71 46 69 6c 65 4e 61 6d  rg, "linqFileNam
1fea0 65 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  e"))..          
1feb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1fec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1fed0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
1fee0 66 69 67 75 72 61 74 69 6f 6e 2e 6c 69 6e 71 46  figuration.linqF
1fef0 69 6c 65 4e 61 6d 65 20 3d 20 74 65 78 74 3b 0d  ileName = text;.
1ff00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ff10 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1ff20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ff30 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74      else if (Mat
1ff40 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c  chOption(newArg,
1ff50 20 22 6c 6f 67 46 69 6c 65 4e 61 6d 65 22 29 29   "logFileName"))
1ff60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ff70 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1ff80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ff90 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
1ffa0 72 61 74 69 6f 6e 2e 6c 6f 67 46 69 6c 65 4e 61  ration.logFileNa
1ffb0 6d 65 20 3d 20 74 65 78 74 3b 0d 0a 20 20 20 20  me = text;..    
1ffc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ffd0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1ffe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
1fff0 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74  lse if (MatchOpt
20000 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 43  ion(newArg, "noC
20010 6f 6d 70 61 63 74 22 29 29 0d 0a 20 20 20 20 20  ompact"))..     
20020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20030 20 20 20 7b 0d 0a 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 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20    bool? value = 
20060 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78  ParseBoolean(tex
20070 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
20080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20090 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
200a0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
200b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
200c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
200d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
200e0 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72        error = Tr
200f0 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54  aceOps.DebugAndT
20100 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20  race(..         
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 54 72 61 63 65             Trace
20130 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c  Priority.Lowest,
20140 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d   debugCallback,.
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 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
20180 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ck, String.Forma
20190 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
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 22 49 6e 76 61 6c 69 64          "Invalid
201c0 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c   {0} boolean val
201d0 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  ue: {1}",..     
201e0 20 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 46                 F
20200 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20  orDisplay(arg), 
20210 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29  ForDisplay(text)
20220 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
20230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20240 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
20250 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
20260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20270 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
20280 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20  trict)..        
20290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
202a0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
202b0 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
202c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
202d0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
202e0 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  tinue;..        
202f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20300 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
20310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20320 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
20330 6f 6e 2e 6e 6f 43 6f 6d 70 61 63 74 20 3d 20 28  on.noCompact = (
20340 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20  bool)value;..   
20350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20360 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
20370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20380 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70  else if (MatchOp
20390 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f  tion(newArg, "no
203a0 43 6f 6e 73 6f 6c 65 22 29 29 0d 0a 20 20 20 20  Console"))..    
203b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
203c0 20 20 20 20 7b 0d 0a 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 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d     bool? value =
203f0 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65   ParseBoolean(te
20400 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  xt);....        
20410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20420 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d      if (value ==
20430 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
20440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20450 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
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 65 72 72 6f 72 20 3d 20 54         error = T
20480 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64  raceOps.DebugAnd
20490 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20  Trace(..        
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 54 72 61 63              Trac
204c0 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74  ePriority.Lowest
204d0 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c  , debugCallback,
204e0 0d 0a 20 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 74 72 61 63 65 43 61 6c 6c 62        traceCallb
20510 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d  ack, String.Form
20520 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
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 22 49 6e 76 61 6c 69           "Invali
20550 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61  d {0} boolean va
20560 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  lue: {1}",..    
20570 20 20 20 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 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c  ForDisplay(arg),
205a0 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74   ForDisplay(text
205b0 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
205c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
205d0 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
205e0 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
205f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20600 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
20610 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20  strict)..       
20620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20630 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
20640 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
20650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
20670 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20  ntinue;..       
20680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20690 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
206a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
206b0 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74        configurat
206c0 69 6f 6e 2e 6e 6f 43 6f 6e 73 6f 6c 65 20 3d 20  ion.noConsole = 
206d0 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20  (bool)value;..  
206e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
206f0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
20700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20710 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f   else if (MatchO
20720 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e  ption(newArg, "n
20730 6f 44 65 73 6b 74 6f 70 22 29 29 0d 0a 20 20 20  oDesktop"))..   
20740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20750 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
20760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20770 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20      bool? value 
20780 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74  = ParseBoolean(t
20790 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ext);....       
207a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
207b0 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
207c0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
207d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
207e0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
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 65 72 72 6f 72 20 3d 20          error = 
20810 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e  TraceOps.DebugAn
20820 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20  dTrace(..       
20830 20 20 20 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 54 72 61               Tra
20850 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73  cePriority.Lowes
20860 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b  t, debugCallback
20870 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
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 74 72 61 63 65 43 61 6c 6c         traceCall
208a0 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72  back, String.For
208b0 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
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 22 49 6e 76 61 6c            "Inval
208e0 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76  id {0} boolean v
208f0 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  alue: {1}",..   
20900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20920 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29   ForDisplay(arg)
20930 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78  , ForDisplay(tex
20940 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  t)),..          
20950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20960 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
20970 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
20980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20990 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
209a0 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20  (strict)..      
209b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
209c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
209d0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
209e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
209f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
20a00 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20  ontinue;..      
20a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
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 63 6f 6e 66 69 67 75 72 61         configura
20a50 74 69 6f 6e 2e 6e 6f 44 65 73 6b 74 6f 70 20 3d  tion.noDesktop =
20a60 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20   (bool)value;.. 
20a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a80 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
20a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20aa0 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68    else if (Match
20ab0 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22  Option(newArg, "
20ac0 6e 6f 4c 6f 67 22 29 29 0d 0a 20 20 20 20 20 20  noLog"))..      
20ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20ae0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
20af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20b00 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50   bool? value = P
20b10 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74  arseBoolean(text
20b20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
20b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20b40 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
20b50 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
20b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20b70 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
20b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20b90 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61       error = Tra
20ba0 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
20bb0 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ace(..          
20bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20bd0 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50            TraceP
20be0 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20  riority.Lowest, 
20bf0 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a  debugCallback,..
20c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20c20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
20c30 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
20c40 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
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 22 49 6e 76 61 6c 69 64 20         "Invalid 
20c70 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75  {0} boolean valu
20c80 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20  e: {1}",..      
20c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f                Fo
20cb0 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46  rDisplay(arg), F
20cc0 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29 29  orDisplay(text))
20cd0 2c 0d 0a 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 20                  
20cf0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
20d00 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
20d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20d20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74            if (st
20d30 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20  rict)..         
20d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20d50 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
20d60 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
20d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20d80 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74              cont
20d90 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  inue;..         
20da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20db0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
20dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20dd0 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
20de0 6e 2e 6e 6f 4c 6f 67 20 3d 20 28 62 6f 6f 6c 29  n.noLog = (bool)
20df0 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
20e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20e10 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
20e20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
20e30 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28  if (MatchOption(
20e40 6e 65 77 41 72 67 2c 20 22 6e 6f 4e 65 74 46 78  newArg, "noNetFx
20e50 32 30 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20  20"))..         
20e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
20e70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
20e90 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73  ol? value = Pars
20ea0 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d  eBoolean(text);.
20eb0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
20ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
20ed0 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c  f (value == null
20ee0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
20ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
20f00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20f20 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f    error = TraceO
20f30 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65  ps.DebugAndTrace
20f40 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
20f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20f60 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f         TracePrio
20f70 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62  rity.Lowest, deb
20f80 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20  ugCallback,..   
20f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20fb0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20   traceCallback, 
20fc0 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
20fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20ff0 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d      "Invalid {0}
21000 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20   boolean value: 
21010 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {1}",..         
21020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21030 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69             ForDi
21040 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44  splay(arg), ForD
21050 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a  isplay(text)),..
21060 20 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 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
21090 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
210a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
210b0 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63         if (stric
210c0 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
210d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
210e0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
210f0 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
21100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21110 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75           continu
21120 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
21130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21140 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
21150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21160 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e   configuration.n
21170 6f 4e 65 74 46 78 32 30 20 3d 20 28 62 6f 6f 6c  oNetFx20 = (bool
21180 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  )value;..       
21190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
211a0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
211b0 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
211c0 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e   if (MatchOption
211d0 28 6e 65 77 41 72 67 2c 20 22 6e 6f 4e 65 74 46  (newArg, "noNetF
211e0 78 33 35 22 29 29 0d 0a 20 20 20 20 20 20 20 20  x35"))..        
211f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21200 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
21210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
21220 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72  ool? value = Par
21230 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b  seBoolean(text);
21240 0d 0a 0d 0a 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 20 20 20 20                  
21260 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
21270 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
21280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21290 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
212a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
212b0 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65     error = Trace
212c0 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
212d0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
212e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
212f0 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69          TracePri
21300 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65  ority.Lowest, de
21310 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20  bugCallback,..  
21320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21340 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c    traceCallback,
21350 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d   String.Format(.
21360 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21380 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30       "Invalid {0
21390 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a  } boolean value:
213a0 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
213b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
213c0 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44              ForD
213d0 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72  isplay(arg), For
213e0 44 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d  Display(text)),.
213f0 0a 20 20 20 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 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
21420 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
21430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21440 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69          if (stri
21450 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct)..           
21460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21470 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
21480 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
21490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
214a0 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e            contin
214b0 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
214c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
214d0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
214e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
214f0 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e    configuration.
21500 6e 6f 4e 65 74 46 78 33 35 20 3d 20 28 62 6f 6f  noNetFx35 = (boo
21510 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  l)value;..      
21520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21530 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
21540 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
21550 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f  e if (MatchOptio
21560 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 4e 65 74  n(newArg, "noNet
21570 46 78 34 30 22 29 29 0d 0a 20 20 20 20 20 20 20  Fx40"))..       
21580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21590 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
215a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
215b0 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61  bool? value = Pa
215c0 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29  rseBoolean(text)
215d0 3b 0d 0a 0d 0a 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 20 20                  
215f0 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
21600 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
21610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21620 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
21630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21640 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63      error = Trac
21650 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61  eOps.DebugAndTra
21660 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce(..           
21670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21680 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72           TracePr
21690 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64  iority.Lowest, d
216a0 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20  ebugCallback,.. 
216b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
216c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
216d0 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
216e0 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  , String.Format(
216f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21710 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b        "Invalid {
21720 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65  0} boolean value
21730 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
21740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21750 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72               For
21760 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f  Display(arg), Fo
21770 72 44 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c  rDisplay(text)),
21780 0d 0a 20 20 20 20 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 74 72 61 63 65 43 61 74 65 67        traceCateg
217b0 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
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 20 20 69 66 20 28 73 74 72           if (str
217e0 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ict)..          
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 20 20 72 65 74 75 72 6e            return
21810 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
21820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21830 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69             conti
21840 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nue;..          
21850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21860 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
21870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21880 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
21890 2e 6e 6f 4e 65 74 46 78 34 30 20 3d 20 28 62 6f  .noNetFx40 = (bo
218a0 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  ol)value;..     
218b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
218c0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
218d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
218e0 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69  se if (MatchOpti
218f0 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 4e 65  on(newArg, "noNe
21900 74 46 78 34 35 22 29 29 0d 0a 20 20 20 20 20 20  tFx45"))..      
21910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21920 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
21930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21940 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50   bool? value = P
21950 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74  arseBoolean(text
21960 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
21970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21980 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
21990 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
219a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
219b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
219c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
219d0 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61       error = Tra
219e0 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
219f0 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ace(..          
21a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21a10 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50            TraceP
21a20 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20  riority.Lowest, 
21a30 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a  debugCallback,..
21a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21a60 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
21a70 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
21a80 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
21a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21aa0 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20         "Invalid 
21ab0 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75  {0} boolean valu
21ac0 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20  e: {1}",..      
21ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f                Fo
21af0 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46  rDisplay(arg), F
21b00 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29 29  orDisplay(text))
21b10 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
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 74 72 61 63 65 43 61 74 65         traceCate
21b40 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
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 20 69 66 20 28 73 74            if (st
21b70 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20  rict)..         
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 20 72 65 74 75 72             retur
21ba0 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
21bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21bc0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74              cont
21bd0 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  inue;..         
21be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21bf0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
21c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21c10 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
21c20 6e 2e 6e 6f 4e 65 74 46 78 34 35 20 3d 20 28 62  n.noNetFx45 = (b
21c30 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20  ool)value;..    
21c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21c50 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
21c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
21c70 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74  lse if (MatchOpt
21c80 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 4e  ion(newArg, "noN
21c90 65 74 46 78 34 35 31 22 29 29 0d 0a 20 20 20 20  etFx451"))..    
21ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21cb0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
21cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21cd0 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d     bool? value =
21ce0 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65   ParseBoolean(te
21cf0 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  xt);....        
21d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21d10 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d      if (value ==
21d20 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
21d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21d40 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
21d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21d60 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54         error = T
21d70 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64  raceOps.DebugAnd
21d80 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20  Trace(..        
21d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21da0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
21db0 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74  ePriority.Lowest
21dc0 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c  , debugCallback,
21dd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21df0 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
21e00 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d  ack, String.Form
21e10 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
21e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e30 20 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69           "Invali
21e40 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61  d {0} boolean va
21e50 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  lue: {1}",..    
21e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e80 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c  ForDisplay(arg),
21e90 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74   ForDisplay(text
21ea0 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
21eb0 20 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 74 72 61 63 65 43 61           traceCa
21ed0 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
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 69 66 20 28              if (
21f00 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20  strict)..       
21f10 20 20 20 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 72 65 74               ret
21f30 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
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 20 20 20 20 63 6f                co
21f60 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20  ntinue;..       
21f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21f80 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
21f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21fa0 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74        configurat
21fb0 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34 35 31 20 3d  ion.noNetFx451 =
21fc0 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20   (bool)value;.. 
21fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21fe0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
21ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22000 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68    else if (Match
22010 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22  Option(newArg, "
22020 6e 6f 4e 65 74 46 78 34 35 32 22 29 29 0d 0a 20  noNetFx452")).. 
22030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22040 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
22050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22060 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75        bool? valu
22070 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e  e = ParseBoolean
22080 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  (text);....     
22090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
220a0 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
220b0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
220c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
220d0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
220e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
220f0 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20            error 
22100 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67  = TraceOps.Debug
22110 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20  AndTrace(..     
22120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
22140 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77  racePriority.Low
22150 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61  est, debugCallba
22160 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck,..           
22170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22180 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
22190 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46  llback, String.F
221a0 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
221b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
221c0 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 76              "Inv
221d0 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e  alid {0} boolean
221e0 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20   value: {1}",.. 
221f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22210 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72     ForDisplay(ar
22220 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74  g), ForDisplay(t
22230 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ext)),..        
22240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22250 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
22260 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
22270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
22290 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20  f (strict)..    
222a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
222b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
222c0 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
222d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
222e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
222f0 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20   continue;..    
22300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22310 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
22320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22330 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
22340 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34 35  ration.noNetFx45
22350 32 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b  2 = (bool)value;
22360 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22370 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
22380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22390 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61       else if (Ma
223a0 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67  tchOption(newArg
223b0 2c 20 22 6e 6f 4e 65 74 46 78 34 36 22 29 29 0d  , "noNetFx46")).
223c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
223d0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
223e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
223f0 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61          bool? va
22400 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65  lue = ParseBoole
22410 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20  an(text);....   
22420 20 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 69 66 20 28 76 61 6c           if (val
22440 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue == null)..   
22450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22460 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
22470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22480 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
22490 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62  r = TraceOps.Deb
224a0 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20  ugAndTrace(..   
224b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
224c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
224d0 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c   TracePriority.L
224e0 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c  owest, debugCall
224f0 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
22500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22510 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
22520 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67  Callback, String
22530 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
22540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49                "I
22560 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65  nvalid {0} boole
22570 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d  an value: {1}",.
22580 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
225a0 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28       ForDisplay(
225b0 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79  arg), ForDisplay
225c0 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20  (text)),..      
225d0 20 20 20 20 20 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 74 72                tr
225f0 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
22600 0a 20 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 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20   if (strict)..  
22630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22650 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
22660 0a 0d 0a 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 20 20                  
22680 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20     continue;..  
22690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
226a0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
226b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
226c0 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
226d0 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78  guration.noNetFx
226e0 34 36 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65  46 = (bool)value
226f0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
22700 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
22710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22720 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d        else if (M
22730 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72  atchOption(newAr
22740 67 2c 20 22 6e 6f 4e 65 74 46 78 34 36 31 22 29  g, "noNetFx461")
22750 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
22760 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
22770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22780 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20            bool? 
22790 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f  value = ParseBoo
227a0 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20  lean(text);.... 
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 69 66 20 28 76             if (v
227d0 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
227e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
227f0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
22800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72                er
22820 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44  ror = TraceOps.D
22830 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20  ebugAndTrace(.. 
22840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22860 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79     TracePriority
22870 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61  .Lowest, debugCa
22880 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
22890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
228a0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
228b0 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69  ceCallback, Stri
228c0 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
228d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
228e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
228f0 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f  "Invalid {0} boo
22900 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22  lean value: {1}"
22910 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
22920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22930 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61         ForDispla
22940 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c  y(arg), ForDispl
22950 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20  ay(text)),..    
22960 20 20 20 20 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 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
22990 0a 0d 0a 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 69 66 20 28 73 74 72 69 63 74 29 0d 0a     if (strict)..
229c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
229d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
229e0 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
229f0 3b 0d 0a 0d 0a 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 20 20 20                  
22a10 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
22a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22a30 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
22a40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22a50 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
22a60 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74  figuration.noNet
22a70 46 78 34 36 31 20 3d 20 28 62 6f 6f 6c 29 76 61  Fx461 = (bool)va
22a80 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lue;..          
22a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
22aa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22ab0 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
22ac0 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65   (MatchOption(ne
22ad0 77 41 72 67 2c 20 22 6e 6f 4e 65 74 46 78 34 36  wArg, "noNetFx46
22ae0 32 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  2"))..          
22af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
22b00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22b10 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
22b20 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65  l? value = Parse
22b30 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a  Boolean(text);..
22b40 0d 0a 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 20 20 20 69 66                if
22b60 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29   (value == null)
22b70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
22b90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22bb0 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70   error = TraceOp
22bc0 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28  s.DebugAndTrace(
22bd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22bf0 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72        TracePrior
22c00 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75  ity.Lowest, debu
22c10 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  gCallback,..    
22c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22c40 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53  traceCallback, S
22c50 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
22c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22c80 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20     "Invalid {0} 
22c90 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b  boolean value: {
22ca0 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
22cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22cc0 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73            ForDis
22cd0 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69  play(arg), ForDi
22ce0 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20  splay(text)),.. 
22cf0 20 20 20 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 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
22d20 29 3b 0d 0a 0d 0a 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 20 20 69 66 20 28 73 74 72 69 63 74        if (strict
22d50 29 0d 0a 20 20 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 20 20 72 65 74 75 72 6e 20 66 61         return fa
22d80 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
22d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22da0 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65          continue
22db0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
22dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
22dd0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
22de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22df0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f  configuration.no
22e00 4e 65 74 46 78 34 36 32 20 3d 20 28 62 6f 6f 6c  NetFx462 = (bool
22e10 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  )value;..       
22e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22e30 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
22e40 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
22e50 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e   if (MatchOption
22e60 28 6e 65 77 41 72 67 2c 20 22 6e 6f 4e 65 74 46  (newArg, "noNetF
22e70 78 34 37 22 29 29 0d 0a 20 20 20 20 20 20 20 20  x47"))..        
22e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22e90 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
22ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
22eb0 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72  ool? value = Par
22ec0 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b  seBoolean(text);
22ed0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
22ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22ef0 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
22f00 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
22f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22f20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
22f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22f40 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65     error = Trace
22f50 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
22f60 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
22f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22f80 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69          TracePri
22f90 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65  ority.Lowest, de
22fa0 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20  bugCallback,..  
22fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22fd0 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c    traceCallback,
22fe0 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d   String.Format(.
22ff0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23010 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30       "Invalid {0
23020 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a  } boolean value:
23030 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
23040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23050 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44              ForD
23060 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72  isplay(arg), For
23070 44 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d  Display(text)),.
23080 0a 20 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 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
230b0 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
230c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
230d0 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69          if (stri
230e0 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct)..           
230f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23100 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
23110 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
23120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23130 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e            contin
23140 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
23150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23160 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
23170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23180 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e    configuration.
23190 6e 6f 4e 65 74 46 78 34 37 20 3d 20 28 62 6f 6f  noNetFx47 = (boo
231a0 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  l)value;..      
231b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
231c0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
231d0 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
231e0 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f  e if (MatchOptio
231f0 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 4e 65 74  n(newArg, "noNet
23200 46 78 34 37 31 22 29 29 0d 0a 20 20 20 20 20 20  Fx471"))..      
23210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23220 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
23230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23240 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50   bool? value = P
23250 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74  arseBoolean(text
23260 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
23270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23280 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
23290 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
232a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
232b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
232c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
232d0 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61       error = Tra
232e0 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
232f0 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ace(..          
23300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23310 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50            TraceP
23320 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20  riority.Lowest, 
23330 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a  debugCallback,..
23340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23360 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
23370 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
23380 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
23390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
233a0 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20         "Invalid 
233b0 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75  {0} boolean valu
233c0 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20  e: {1}",..      
233d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
233e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f                Fo
233f0 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46  rDisplay(arg), F
23400 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29 29  orDisplay(text))
23410 2c 0d 0a 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 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
23440 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
23450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23460 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74            if (st
23470 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20  rict)..         
23480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23490 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
234a0 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
234b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
234c0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74              cont
234d0 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  inue;..         
234e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
234f0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
23500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23510 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
23520 6e 2e 6e 6f 4e 65 74 46 78 34 37 31 20 3d 20 28  n.noNetFx471 = (
23530 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20  bool)value;..   
23540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23550 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
23560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23570 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70  else if (MatchOp
23580 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f  tion(newArg, "no
23590 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 22 29  RuntimeVersion")
235a0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
235b0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
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 20 20 62 6f 6f 6c 3f 20            bool? 
235e0 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f  value = ParseBoo
235f0 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20  lean(text);.... 
23600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23610 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
23620 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
23630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23640 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
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 65 72                er
23670 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44  ror = TraceOps.D
23680 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20  ebugAndTrace(.. 
23690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
236a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
236b0 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79     TracePriority
236c0 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61  .Lowest, debugCa
236d0 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
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 74 72 61               tra
23700 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69  ceCallback, Stri
23710 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
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 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f  "Invalid {0} boo
23750 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22  lean value: {1}"
23760 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
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 46 6f 72 44 69 73 70 6c 61         ForDispla
23790 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c  y(arg), ForDispl
237a0 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20  ay(text)),..    
237b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
237c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
237d0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
237e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
237f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23800 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a     if (strict)..
23810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23830 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
23840 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 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 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
23870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23880 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
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 20 20 20 20 63 6f 6e               con
238b0 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 52 75 6e  figuration.noRun
238c0 74 69 6d 65 56 65 72 73 69 6f 6e 20 3d 20 28 62  timeVersion = (b
238d0 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20  ool)value;..    
238e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
238f0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
23900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
23910 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74  lse if (MatchOpt
23920 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 54  ion(newArg, "noT
23930 72 61 63 65 22 29 29 0d 0a 20 20 20 20 20 20 20  race"))..       
23940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23950 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
23960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23970 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61  bool? value = Pa
23980 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29  rseBoolean(text)
23990 3b 0d 0a 0d 0a 20 20 20 20 20 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 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
239c0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
239d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
239e0 20 7b 0d 0a 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 20                  
23a00 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63      error = Trac
23a10 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61  eOps.DebugAndTra
23a20 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce(..           
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 54 72 61 63 65 50 72           TracePr
23a50 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64  iority.Lowest, d
23a60 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20  ebugCallback,.. 
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 20 20 20 20                  
23a90 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
23aa0 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  , String.Format(
23ab0 0d 0a 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 20 20 20 22 49 6e 76 61 6c 69 64 20 7b        "Invalid {
23ae0 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65  0} boolean value
23af0 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
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 20 46 6f 72               For
23b20 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f  Display(arg), Fo
23b30 72 44 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c  rDisplay(text)),
23b40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23b60 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
23b70 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
23b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23b90 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72           if (str
23ba0 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ict)..          
23bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23bc0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
23bd0 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
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 20 20 63 6f 6e 74 69             conti
23c00 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nue;..          
23c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23c20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
23c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23c40 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
23c50 2e 6e 6f 54 72 61 63 65 20 3d 20 28 62 6f 6f 6c  .noTrace = (bool
23c60 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  )value;..       
23c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23c80 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
23c90 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
23ca0 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e   if (MatchOption
23cb0 28 6e 65 77 41 72 67 2c 20 22 6e 6f 56 73 32 30  (newArg, "noVs20
23cc0 30 35 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20  05"))..         
23cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
23ce0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
23d00 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73  ol? value = Pars
23d10 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d  eBoolean(text);.
23d20 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
23d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
23d40 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c  f (value == null
23d50 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
23d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
23d70 0d 0a 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 20 20 20                  
23d90 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f    error = TraceO
23da0 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65  ps.DebugAndTrace
23db0 28 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 54 72 61 63 65 50 72 69 6f         TracePrio
23de0 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62  rity.Lowest, deb
23df0 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20  ugCallback,..   
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 20 20 20 20 20 20                  
23e20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20   traceCallback, 
23e30 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
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 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d      "Invalid {0}
23e70 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20   boolean value: 
23e80 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {1}",..         
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 20 46 6f 72 44 69             ForDi
23eb0 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44  splay(arg), ForD
23ec0 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a  isplay(text)),..
23ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ef0 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
23f00 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
23f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63         if (stric
23f30 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
23f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f50 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
23f60 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
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 20 20 63 6f 6e 74 69 6e 75           continu
23f90 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
23fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23fb0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
23fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23fd0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e   configuration.n
23fe0 6f 56 73 32 30 30 35 20 3d 20 28 62 6f 6f 6c 29  oVs2005 = (bool)
23ff0 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
24000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24010 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
24020 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
24030 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28  if (MatchOption(
24040 6e 65 77 41 72 67 2c 20 22 6e 6f 56 73 32 30 30  newArg, "noVs200
24050 38 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  8"))..          
24060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
24070 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24080 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
24090 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65  l? value = Parse
240a0 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a  Boolean(text);..
240b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
240c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
240d0 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29   (value == null)
240e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
240f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
24100 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24120 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70   error = TraceOp
24130 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28  s.DebugAndTrace(
24140 0d 0a 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 20 20 20                  
24160 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72        TracePrior
24170 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75  ity.Lowest, debu
24180 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  gCallback,..    
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 20 20 20 20 20 20 20 20 20                  
241b0 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53  traceCallback, S
241c0 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
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 20 20 20 20 20 20                  
241f0 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20     "Invalid {0} 
24200 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b  boolean value: {
24210 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
24220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24230 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73            ForDis
24240 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69  play(arg), ForDi
24250 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20  splay(text)),.. 
24260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24280 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
24290 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
242a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
242b0 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74        if (strict
242c0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
242d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
242e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
242f0 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
24300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24310 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65          continue
24320 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
24330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
24340 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
24350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24360 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f  configuration.no
24370 56 73 32 30 30 38 20 3d 20 28 62 6f 6f 6c 29 76  Vs2008 = (bool)v
24380 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alue;..         
24390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
243a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
243b0 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
243c0 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e  f (MatchOption(n
243d0 65 77 41 72 67 2c 20 22 6e 6f 56 73 32 30 31 30  ewArg, "noVs2010
243e0 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "))..           
243f0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
24400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24410 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
24420 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42  ? value = ParseB
24430 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d  oolean(text);...
24440 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24450 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
24460 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
24470 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24480 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
24490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
244a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
244b0 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73  error = TraceOps
244c0 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d  .DebugAndTrace(.
244d0 0a 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 20 20 20 20 20                  
244f0 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69       TracePriori
24500 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67  ty.Lowest, debug
24510 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Callback,..     
24520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
24540 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74  raceCallback, St
24550 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
24560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24580 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62    "Invalid {0} b
24590 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31  oolean value: {1
245a0 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
245b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
245c0 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70           ForDisp
245d0 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73  lay(arg), ForDis
245e0 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20  play(text)),..  
245f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24610 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
24620 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
24630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24640 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29       if (strict)
24650 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24670 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
24680 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
24690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
246a0 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
246b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
246c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
246d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
246e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
246f0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 56  onfiguration.noV
24700 73 32 30 31 30 20 3d 20 28 62 6f 6f 6c 29 76 61  s2010 = (bool)va
24710 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lue;..          
24720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
24730 0a 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 65 6c 73 65 20 69 66           else if
24750 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65   (MatchOption(ne
24760 77 41 72 67 2c 20 22 6e 6f 56 73 32 30 31 32 22  wArg, "noVs2012"
24770 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
24780 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
24790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
247a0 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f             bool?
247b0 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f   value = ParseBo
247c0 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a  olean(text);....
247d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
247e0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
247f0 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  value == null)..
24800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24810 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
24820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
24840 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e  rror = TraceOps.
24850 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a  DebugAndTrace(..
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 20 20 20 20 20 20 20 20                  
24880 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74      TracePriorit
24890 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43  y.Lowest, debugC
248a0 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
248b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
248c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
248d0 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72  aceCallback, Str
248e0 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
248f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24910 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f   "Invalid {0} bo
24920 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d  olean value: {1}
24930 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
24940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24950 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c          ForDispl
24960 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70  ay(arg), ForDisp
24970 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20  lay(text)),..   
24980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
249a0 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
249b0 0d 0a 0d 0a 20 20 20 20 20 20 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 20 20 69 66 20 28 73 74 72 69 63 74 29 0d      if (strict).
249e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
249f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24a00 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
24a10 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
24a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24a30 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
24a40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24a50 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
24a60 0d 0a 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 20 20 20 63 6f                co
24a80 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73  nfiguration.noVs
24a90 32 30 31 32 20 3d 20 28 62 6f 6f 6c 29 76 61 6c  2012 = (bool)val
24aa0 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
24ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
24ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24ad0 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
24ae0 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77  (MatchOption(new
24af0 41 72 67 2c 20 22 6e 6f 56 73 32 30 31 33 22 29  Arg, "noVs2013")
24b00 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
24b10 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
24b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24b30 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20            bool? 
24b40 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f  value = ParseBoo
24b50 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20  lean(text);.... 
24b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24b70 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
24b80 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
24b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24ba0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
24bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72                er
24bd0 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44  ror = TraceOps.D
24be0 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20  ebugAndTrace(.. 
24bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c10 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79     TracePriority
24c20 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61  .Lowest, debugCa
24c30 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
24c40 20 20 20 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 74 72 61               tra
24c60 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69  ceCallback, Stri
24c70 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
24c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24ca0 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f  "Invalid {0} boo
24cb0 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22  lean value: {1}"
24cc0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
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 46 6f 72 44 69 73 70 6c 61         ForDispla
24cf0 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c  y(arg), ForDispl
24d00 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20  ay(text)),..    
24d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24d30 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
24d40 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
24d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24d60 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a     if (strict)..
24d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24d90 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
24da0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
24db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24dc0 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
24dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24de0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
24df0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24e00 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
24e10 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32  figuration.noVs2
24e20 30 31 33 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75  013 = (bool)valu
24e30 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
24e40 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
24e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24e60 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
24e70 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41  MatchOption(newA
24e80 72 67 2c 20 22 6e 6f 56 73 32 30 31 35 22 29 29  rg, "noVs2015"))
24e90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24ea0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
24eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24ec0 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76           bool? v
24ed0 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c  alue = ParseBool
24ee0 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20  ean(text);....  
24ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24f00 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
24f10 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
24f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24f30 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
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 20 65 72 72               err
24f60 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65  or = TraceOps.De
24f70 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20  bugAndTrace(..  
24f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24fa0 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e    TracePriority.
24fb0 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c  Lowest, debugCal
24fc0 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
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 74 72 61 63              trac
24ff0 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e  eCallback, Strin
25000 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
25010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
25030 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c  Invalid {0} bool
25040 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c  ean value: {1}",
25050 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25070 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79        ForDisplay
25080 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61  (arg), ForDispla
25090 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20  y(text)),..     
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 74                 t
250c0 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
250d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
250e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
250f0 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20    if (strict).. 
25100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25120 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
25130 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
25140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25150 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20      continue;.. 
25160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25170 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
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 63 6f 6e 66              conf
251a0 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30  iguration.noVs20
251b0 31 35 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65  15 = (bool)value
251c0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
251d0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
251e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
251f0 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d        else if (M
25200 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72  atchOption(newAr
25210 67 2c 20 22 6e 6f 56 73 32 30 31 37 22 29 29 0d  g, "noVs2017")).
25220 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25230 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
25240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25250 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61          bool? va
25260 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65  lue = ParseBoole
25270 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20  an(text);....   
25280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25290 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
252a0 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue == null)..   
252b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
252c0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
252d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
252e0 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
252f0 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62  r = TraceOps.Deb
25300 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20  ugAndTrace(..   
25310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25330 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c   TracePriority.L
25340 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c  owest, debugCall
25350 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
25360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25370 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
25380 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67  Callback, String
25390 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
253a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
253b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49                "I
253c0 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65  nvalid {0} boole
253d0 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d  an value: {1}",.
253e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
253f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25400 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28       ForDisplay(
25410 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79  arg), ForDisplay
25420 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20  (text)),..      
25430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
25450 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
25460 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25480 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20   if (strict)..  
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 20                  
254b0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
254c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
254d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
254e0 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20     continue;..  
254f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25500 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
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 63 6f 6e 66 69             confi
25530 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 31  guration.noVs201
25540 37 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b  7 = (bool)value;
25550 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25560 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
25570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25580 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61       else if (Ma
25590 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67  tchOption(newArg
255a0 2c 20 22 70 65 72 55 73 65 72 22 29 29 0d 0a 20  , "perUser")).. 
255b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
255c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
255d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
255e0 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75        bool? valu
255f0 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e  e = ParseBoolean
25600 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  (text);....     
25610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25620 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
25630 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
25640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25650 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
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 20 20 65 72 72 6f 72 20            error 
25680 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67  = TraceOps.Debug
25690 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20  AndTrace(..     
256a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
256b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
256c0 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77  racePriority.Low
256d0 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61  est, debugCallba
256e0 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck,..           
256f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25700 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
25710 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46  llback, String.F
25720 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
25730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25740 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 76              "Inv
25750 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e  alid {0} boolean
25760 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20   value: {1}",.. 
25770 20 20 20 20 20 20 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 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72     ForDisplay(ar
257a0 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74  g), ForDisplay(t
257b0 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ext)),..        
257c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
257d0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
257e0 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
257f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
25810 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20  f (strict)..    
25820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25840 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
25850 0a 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 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20   continue;..    
25880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25890 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 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 20 20 63 6f 6e 66 69 67 75           configu
258c0 72 61 74 69 6f 6e 2e 70 65 72 55 73 65 72 20 3d  ration.perUser =
258d0 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20   (bool)value;.. 
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 7d 0d 0a 20 20 20 20 20 20         }..      
25900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25910 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68    else if (Match
25920 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22  Option(newArg, "
25930 70 72 6f 76 69 64 65 72 46 6c 61 67 73 22 29 29  providerFlags"))
25940 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25950 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
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 6f 62 6a 65 63 74 20           object 
25980 76 61 6c 75 65 20 3d 20 50 61 72 73 65 45 6e 75  value = ParseEnu
25990 6d 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m(..            
259a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
259b0 20 20 20 20 74 79 70 65 6f 66 28 50 72 6f 76 69      typeof(Provi
259c0 64 65 72 46 6c 61 67 73 29 2c 20 74 65 78 74 2c  derFlags), text,
259d0 20 74 72 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20   true);....     
259e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
259f0 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
25a00 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
25a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25a20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
25a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25a40 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20            error 
25a50 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67  = TraceOps.Debug
25a60 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20  AndTrace(..     
25a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
25a90 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77  racePriority.Low
25aa0 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61  est, debugCallba
25ab0 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck,..           
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 74 72 61 63 65 43 61           traceCa
25ae0 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46  llback, String.F
25af0 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
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 22 49 6e 76              "Inv
25b20 61 6c 69 64 20 7b 30 7d 20 76 61 6c 75 65 3a 20  alid {0} value: 
25b30 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {1}",..         
25b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25b50 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69             ForDi
25b60 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44  splay(arg), ForD
25b70 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a  isplay(text)),..
25b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25ba0 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
25bb0 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
25bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25bd0 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63         if (stric
25be0 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
25bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25c00 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
25c10 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
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 63 6f 6e 74 69 6e 75           continu
25c40 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
25c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25c60 7d 0d 0a 0d 0a 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 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 70   configuration.p
25c90 72 6f 76 69 64 65 72 46 6c 61 67 73 20 3d 20 28  roviderFlags = (
25ca0 50 72 6f 76 69 64 65 72 46 6c 61 67 73 29 76 61  ProviderFlags)va
25cb0 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lue;..          
25cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
25cd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25ce0 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
25cf0 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65   (MatchOption(ne
25d00 77 41 72 67 2c 20 22 72 65 67 69 73 74 72 79 4c  wArg, "registryL
25d10 6f 67 46 69 6c 65 4e 61 6d 65 22 29 29 0d 0a 20  ogFileName")).. 
25d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25d30 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
25d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25d50 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74        configurat
25d60 69 6f 6e 2e 72 65 67 69 73 74 72 79 4c 6f 67 46  ion.registryLogF
25d70 69 6c 65 4e 61 6d 65 20 3d 20 74 65 78 74 3b 0d  ileName = text;.
25d80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25d90 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
25da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25db0 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74      else if (Mat
25dc0 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c  chOption(newArg,
25dd0 20 22 72 65 67 69 73 74 72 79 56 65 72 73 69 6f   "registryVersio
25de0 6e 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  n"))..          
25df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
25e00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25e10 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
25e20 66 69 67 75 72 61 74 69 6f 6e 2e 72 65 67 69 73  figuration.regis
25e30 74 72 79 56 65 72 73 69 6f 6e 20 3d 20 74 65 78  tryVersion = tex
25e40 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t;..            
25e50 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
25e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25e70 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
25e80 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41  MatchOption(newA
25e90 72 67 2c 20 22 73 74 72 69 63 74 22 29 29 0d 0a  rg, "strict"))..
25ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25eb0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
25ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25ed0 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c         bool? val
25ee0 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61  ue = ParseBoolea
25ef0 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20  n(text);....    
25f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25f10 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
25f20 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
25f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25f40 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
25f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25f60 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72             error
25f70 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75   = TraceOps.Debu
25f80 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20  gAndTrace(..    
25f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25fb0 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f  TracePriority.Lo
25fc0 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62  west, debugCallb
25fd0 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ack,..          
25fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25ff0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
26000 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e  allback, String.
26010 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
26020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26030 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e               "In
26040 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61  valid {0} boolea
26050 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a  n value: {1}",..
26060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26080 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61      ForDisplay(a
26090 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  rg), ForDisplay(
260a0 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20  text)),..       
260b0 20 20 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 20 20 20 74 72 61               tra
260d0 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a  ceCategory);....
260e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
260f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26100 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20  if (strict)..   
26110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26130 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
26140 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26160 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20    continue;..   
26170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26180 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
26190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
261a0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
261b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
261c0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
261d0 45 3a 20 41 6c 6c 6f 77 20 74 68 65 20 63 6f 6d  E: Allow the com
261e0 6d 61 6e 64 20 6c 69 6e 65 20 61 72 67 75 6d 65  mand line argume
261f0 6e 74 73 20 74 6f 0d 0a 20 20 20 20 20 20 20 20  nts to..        
26200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26210 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 76 65      //       ove
26220 72 72 69 64 65 20 74 68 65 20 22 73 74 72 69 63  rride the "stric
26230 74 6e 65 73 73 22 20 73 65 74 74 69 6e 67 0d 0a  tness" setting..
26240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26250 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
26260 20 20 20 20 20 70 72 6f 76 69 64 65 64 20 62 79       provided by
26270 20 6f 75 72 20 63 61 6c 6c 65 72 2e 0d 0a 20 20   our caller...  
26280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26290 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
262a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
262b0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 63 74            strict
262c0 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d   = (bool)value;.
262d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
262e0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
262f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26300 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74      else if (Mat
26310 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c  chOption(newArg,
26320 20 22 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67   "throwOnMissing
26330 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "))..           
26340 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
26350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26360 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
26370 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42  ? value = ParseB
26380 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d  oolean(text);...
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 20 20 20 20 69 66 20               if 
263b0 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
263c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
263d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
263e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
263f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26400 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73  error = TraceOps
26410 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d  .DebugAndTrace(.
26420 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26440 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69       TracePriori
26450 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67  ty.Lowest, debug
26460 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Callback,..     
26470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
26490 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74  raceCallback, St
264a0 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
264b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
264c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
264d0 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62    "Invalid {0} b
264e0 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31  oolean value: {1
264f0 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
26500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26510 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70           ForDisp
26520 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73  lay(arg), ForDis
26530 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20  play(text)),..  
26540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26560 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
26570 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
26580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26590 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29       if (strict)
265a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
265b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
265c0 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
265d0 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
265e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
265f0 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
26600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
26620 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
26630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
26640 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 74 68 72  onfiguration.thr
26650 6f 77 4f 6e 4d 69 73 73 69 6e 67 20 3d 20 28 62  owOnMissing = (b
26660 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20  ool)value;..    
26670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26680 20 20 20 20 7d 0d 0a 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 65                 e
266a0 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74  lse if (MatchOpt
266b0 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 74 72 61  ion(newArg, "tra
266c0 63 65 46 6f 72 6d 61 74 22 29 29 0d 0a 20 20 20  ceFormat"))..   
266d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
266e0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
266f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26700 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
26710 6e 2e 74 72 61 63 65 46 6f 72 6d 61 74 20 3d 20  n.traceFormat = 
26720 74 65 78 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  text;..         
26730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26740 20 20 20 54 72 61 63 65 4f 70 73 2e 54 72 61 63     TraceOps.Trac
26750 65 46 6f 72 6d 61 74 20 3d 20 63 6f 6e 66 69 67  eFormat = config
26760 75 72 61 74 69 6f 6e 2e 74 72 61 63 65 46 6f 72  uration.traceFor
26770 6d 61 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  mat;..          
26780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
26790 0a 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 65 6c 73 65 20 69 66           else if
267b0 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65   (MatchOption(ne
267c0 77 41 72 67 2c 20 22 74 72 61 63 65 50 72 69 6f  wArg, "tracePrio
267d0 72 69 74 79 22 29 29 0d 0a 20 20 20 20 20 20 20  rity"))..       
267e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
267f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
26800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26810 6f 62 6a 65 63 74 20 76 61 6c 75 65 20 3d 20 50  object value = P
26820 61 72 73 65 45 6e 75 6d 28 0d 0a 20 20 20 20 20  arseEnum(..     
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 20 20 74 79 70 65 6f             typeo
26850 66 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 29  f(TracePriority)
26860 2c 20 74 65 78 74 2c 20 74 72 75 65 29 3b 0d 0a  , text, true);..
26870 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
26890 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29   (value == null)
268a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
268b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
268c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
268d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
268e0 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70   error = TraceOp
268f0 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28  s.DebugAndTrace(
26900 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26920 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72        TracePrior
26930 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75  ity.Lowest, debu
26940 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  gCallback,..    
26950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26970 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53  traceCallback, S
26980 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
26990 20 20 20 20 20 20 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 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20     "Invalid {0} 
269c0 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20  value: {1}",..  
269d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
269e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
269f0 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67    ForDisplay(arg
26a00 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65  ), ForDisplay(te
26a10 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  xt)),..         
26a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26a30 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
26a40 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
26a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
26a70 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20   (strict)..     
26a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
26aa0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
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 20 20 20 20 20                  
26ad0 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20  continue;..     
26ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26af0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
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 63 6f 6e 66 69 67 75 72          configur
26b20 61 74 69 6f 6e 2e 74 72 61 63 65 50 72 69 6f 72  ation.tracePrior
26b30 69 74 79 20 3d 20 28 54 72 61 63 65 50 72 69 6f  ity = (TracePrio
26b40 72 69 74 79 29 76 61 6c 75 65 3b 0d 0a 20 20 20  rity)value;..   
26b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26b60 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f 70           TraceOp
26b70 73 2e 54 72 61 63 65 50 72 69 6f 72 69 74 79 20  s.TracePriority 
26b80 3d 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e  = configuration.
26b90 74 72 61 63 65 50 72 69 6f 72 69 74 79 3b 0d 0a  tracePriority;..
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 7d 0d 0a 20 20 20 20 20          }..     
26bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26bd0 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63     else if (Matc
26be0 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20  hOption(newArg, 
26bf0 22 76 65 72 62 6f 73 65 22 29 29 0d 0a 20 20 20  "verbose"))..   
26c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26c10 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
26c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26c30 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20      bool? value 
26c40 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74  = ParseBoolean(t
26c50 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ext);....       
26c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26c70 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
26c80 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
26c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26ca0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
26cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26cc0 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20          error = 
26cd0 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e  TraceOps.DebugAn
26ce0 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20  dTrace(..       
26cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26d00 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
26d10 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73  cePriority.Lowes
26d20 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b  t, debugCallback
26d30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
26d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26d50 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
26d60 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72  back, String.For
26d70 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
26d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26d90 20 20 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c            "Inval
26da0 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76  id {0} boolean v
26db0 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  alue: {1}",..   
26dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26de0 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29   ForDisplay(arg)
26df0 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78  , ForDisplay(tex
26e00 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  t)),..          
26e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26e20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
26e30 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
26e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26e50 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
26e60 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20  (strict)..      
26e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
26e90 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
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 20 20 20 20 20 20 20 20 63                 c
26ec0 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20  ontinue;..      
26ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26ee0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
26ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26f00 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
26f10 74 69 6f 6e 2e 76 65 72 62 6f 73 65 20 3d 20 28  tion.verbose = (
26f20 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20  bool)value;..   
26f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26f40 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
26f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26f60 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70  else if (MatchOp
26f70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 76 73  tion(newArg, "vs
26f80 56 65 72 73 69 6f 6e 53 75 66 66 69 78 22 29 29  VersionSuffix"))
26f90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26fa0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
26fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26fc0 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
26fd0 72 61 74 69 6f 6e 2e 76 73 56 65 72 73 69 6f 6e  ration.vsVersion
26fe0 53 75 66 66 69 78 20 3d 20 74 65 78 74 3b 0d 0a  Suffix = text;..
26ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27000 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
27010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27020 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63     else if (Matc
27030 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20  hOption(newArg, 
27040 22 77 68 61 74 49 66 22 29 29 0d 0a 20 20 20 20  "whatIf"))..    
27050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27060 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
27070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27080 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d     bool? value =
27090 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65   ParseBoolean(te
270a0 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  xt);....        
270b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
270c0 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d      if (value ==
270d0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
270e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
270f0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
27100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27110 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54         error = T
27120 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64  raceOps.DebugAnd
27130 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20  Trace(..        
27140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27150 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
27160 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74  ePriority.Lowest
27170 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c  , debugCallback,
27180 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
271a0 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
271b0 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d  ack, String.Form
271c0 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
271d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
271e0 20 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69           "Invali
271f0 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61  d {0} boolean va
27200 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  lue: {1}",..    
27210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27230 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c  ForDisplay(arg),
27240 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74   ForDisplay(text
27250 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
27260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27270 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
27280 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
27290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
272a0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
272b0 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20  strict)..       
272c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
272d0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
272e0 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
272f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
27310 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20  ntinue;..       
27320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27330 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
27340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27350 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74        configurat
27360 69 6f 6e 2e 77 68 61 74 49 66 20 3d 20 28 62 6f  ion.whatIf = (bo
27370 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  ol)value;..     
27380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27390 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
273a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
273b0 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69  se if (MatchOpti
273c0 6f 6e 28 6e 65 77 41 72 67 2c 20 22 77 6f 77 36  on(newArg, "wow6
273d0 34 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  4"))..          
273e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
273f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27400 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
27410 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65  l? value = Parse
27420 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a  Boolean(text);..
27430 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
27450 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29   (value == null)
27460 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
27480 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
274a0 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70   error = TraceOp
274b0 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28  s.DebugAndTrace(
274c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
274d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
274e0 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72        TracePrior
274f0 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75  ity.Lowest, debu
27500 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  gCallback,..    
27510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27530 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53  traceCallback, S
27540 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
27550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27570 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20     "Invalid {0} 
27580 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b  boolean value: {
27590 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
275a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
275b0 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73            ForDis
275c0 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69  play(arg), ForDi
275d0 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20  splay(text)),.. 
275e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
275f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27600 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
27610 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
27620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27630 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74        if (strict
27640 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
27650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27660 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
27670 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
27680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27690 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65          continue
276a0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
276b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
276c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
276d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
276e0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 77 6f  configuration.wo
276f0 77 36 34 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75  w64 = (bool)valu
27700 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
27710 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
27720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27730 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
27740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27750 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
27760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27770 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63      error = Trac
27780 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61  eOps.DebugAndTra
27790 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce(..           
277a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
277b0 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69       TracePriori
277c0 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67  ty.Lowest, debug
277d0 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Callback,..     
277e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
277f0 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
27800 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67  Callback, String
27810 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
27820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27830 20 20 20 20 20 20 20 20 20 20 22 55 6e 73 75 70            "Unsup
27840 70 6f 72 74 65 64 20 63 6f 6d 6d 61 6e 64 20 6c  ported command l
27850 69 6e 65 20 6f 70 74 69 6f 6e 3a 20 7b 30 7d 22  ine option: {0}"
27860 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
27870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27880 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72     ForDisplay(ar
27890 67 29 29 2c 20 74 72 61 63 65 43 61 74 65 67 6f  g)), traceCatego
278a0 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
278b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
278c0 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d      if (strict).
278d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
278e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
278f0 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
27900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27910 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
27920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
27930 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
27940 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
27950 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
27960 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
27970 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
27980 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 20 20  Exception e)..  
27990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
279a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
279b0 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65       TraceOps.De
279c0 62 75 67 41 6e 64 54 72 61 63 65 28 54 72 61 63  bugAndTrace(Trac
279d0 65 50 72 69 6f 72 69 74 79 2e 48 69 67 68 65 73  ePriority.Highes
279e0 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
279f0 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75              debu
27a00 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65  gCallback, trace
27a10 43 61 6c 6c 62 61 63 6b 2c 20 65 2c 20 74 72 61  Callback, e, tra
27a20 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a  ceCategory);....
27a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27a40 20 20 20 20 65 72 72 6f 72 20 3d 20 22 46 61 69      error = "Fai
27a50 6c 65 64 20 74 6f 20 6d 6f 64 69 66 79 20 63 6f  led to modify co
27a60 6e 66 69 67 75 72 61 74 69 6f 6e 2e 22 3b 0d 0a  nfiguration.";..
27a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27a80 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
27a90 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
27aa0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
27ab0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
27ac0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
27ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b00 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
27b10 20 20 20 20 5b 4d 65 74 68 6f 64 49 6d 70 6c 28      [MethodImpl(
27b20 4d 65 74 68 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e  MethodImplOption
27b30 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a  s.NoInlining)]..
27b40 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
27b50 69 63 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 50  ic static bool P
27b60 72 6f 63 65 73 73 28 0d 0a 20 20 20 20 20 20 20  rocess(..       
27b70 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b           string[
27b80 5d 20 61 72 67 73 2c 0d 0a 20 20 20 20 20 20 20  ] args,..       
27b90 20 20 20 20 20 20 20 20 20 43 6f 6e 66 69 67 75           Configu
27ba0 72 61 74 69 6f 6e 20 63 6f 6e 66 69 67 75 72 61  ration configura
27bb0 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20  tion,..         
27bc0 20 20 20 20 20 20 20 62 6f 6f 6c 20 73 74 72 69         bool stri
27bd0 63 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct,..           
27be0 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20       ref string 
27bf0 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  error..         
27c00 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
27c10 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
27c20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
27c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
27c40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27c50 20 20 20 20 20 69 66 20 28 63 6f 6e 66 69 67 75       if (configu
27c60 72 61 74 69 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 0d  ration == null).
27c70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27c80 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
27c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27ca0 65 72 72 6f 72 20 3d 20 22 49 6e 76 61 6c 69 64  error = "Invalid
27cb0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 22   configuration."
27cc0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
27cd0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
27ce0 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  n false;..      
27cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
27d00 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
27d10 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20         Assembly 
27d20 61 73 73 65 6d 62 6c 79 20 3d 20 63 6f 6e 66 69  assembly = confi
27d30 67 75 72 61 74 69 6f 6e 2e 61 73 73 65 6d 62 6c  guration.assembl
27d40 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  y;....          
27d50 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 73            if (as
27d60 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d  sembly == null).
27d70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27d80 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
27d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27da0 65 72 72 6f 72 20 3d 20 22 49 6e 76 61 6c 69 64  error = "Invalid
27db0 20 61 73 73 65 6d 62 6c 79 2e 22 3b 0d 0a 20 20   assembly.";..  
27dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27dd0 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
27de0 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se;..           
27df0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
27e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27e10 20 20 69 66 20 28 21 63 6f 6e 66 69 67 75 72 61    if (!configura
27e20 74 69 6f 6e 2e 6e 6f 54 72 61 63 65 29 0d 0a 20  tion.noTrace).. 
27e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27e40 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
27e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
27e60 20 28 21 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e   (!configuration
27e70 2e 6e 6f 4c 6f 67 20 26 26 0d 0a 20 20 20 20 20  .noLog &&..     
27e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27e90 20 20 20 20 20 20 20 53 74 72 69 6e 67 2e 49 73         String.Is
27ea0 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 63 6f 6e 66  NullOrEmpty(conf
27eb0 69 67 75 72 61 74 69 6f 6e 2e 6c 6f 67 46 69 6c  iguration.logFil
27ec0 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
27ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27ee0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
27ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27f00 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
27f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27f20 2f 2f 20 4e 4f 54 45 3a 20 55 73 65 20 74 68 65  // NOTE: Use the
27f30 20 64 65 66 61 75 6c 74 20 6c 6f 67 20 66 69 6c   default log fil
27f40 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20  e name...       
27f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27f60 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
27f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27f80 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
27f90 6f 6e 2e 6c 6f 67 46 69 6c 65 4e 61 6d 65 20 3d  on.logFileName =
27fa0 20 47 65 74 4c 6f 67 46 69 6c 65 4e 61 6d 65 28   GetLogFileName(
27fb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27fd0 20 20 22 74 72 61 63 65 22 29 3b 0d 0a 20 20 20    "trace");..   
27fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27ff0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
28000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28010 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
28020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28040 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
28050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28060 20 20 20 20 20 69 66 20 28 21 63 6f 6e 66 69 67       if (!config
28070 75 72 61 74 69 6f 6e 2e 6e 6f 43 6f 6e 73 6f 6c  uration.noConsol
28080 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
28090 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
280a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
280b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
280c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
280d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
280e0 54 45 3a 20 49 6e 20 76 65 72 62 6f 73 65 20 6d  TE: In verbose m
280f0 6f 64 65 2c 20 64 65 62 75 67 20 6f 75 74 70 75  ode, debug outpu
28100 74 20 28 74 68 61 74 20 6d 65 65 74 73 0d 0a 20  t (that meets.. 
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 20 2f 2f 20 20 20             //   
28130 20 20 20 20 74 68 65 20 63 6f 6e 66 69 67 75 72      the configur
28140 65 64 20 70 72 69 6f 72 69 74 79 20 63 72 69 74  ed priority crit
28150 65 72 69 61 29 20 77 69 6c 6c 20 62 65 0d 0a 20  eria) will be.. 
28160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28170 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
28180 20 20 20 20 64 69 73 70 6c 61 79 65 64 20 74 6f      displayed to
28190 20 74 68 65 20 63 6f 6e 73 6f 6c 65 3b 20 6f 74   the console; ot
281a0 68 65 72 77 69 73 65 2c 20 74 72 61 63 65 0d 0a  herwise, trace..
281b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
281c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
281d0 20 20 20 20 20 6f 75 74 70 75 74 20 28 74 68 61       output (tha
281e0 74 20 6d 65 65 74 73 20 74 68 65 20 63 6f 6e 66  t meets the conf
281f0 69 67 75 72 65 64 20 70 72 69 6f 72 69 74 79 0d  igured priority.
28200 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28210 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
28220 20 20 20 20 20 20 63 72 69 74 65 72 69 61 29 20        criteria) 
28230 77 69 6c 6c 20 62 65 20 64 69 73 70 6c 61 79 65  will be displaye
28240 64 20 74 6f 20 74 68 65 20 63 6f 6e 73 6f 6c 65  d to the console
28250 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
28260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
28270 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
28280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
28290 66 20 28 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  f (configuration
282a0 2e 64 65 62 75 67 29 0d 0a 20 20 20 20 20 20 20  .debug)..       
282b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
282c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
282d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
282e0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
282f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28300 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
28310 4f 54 45 3a 20 41 64 64 20 74 68 65 20 63 6f 6e  OTE: Add the con
28320 73 6f 6c 65 20 74 72 61 63 65 20 6c 69 73 74 65  sole trace liste
28330 6e 65 72 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  ner to the..    
28340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28350 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
28360 20 20 20 20 20 6c 69 73 74 20 6f 66 20 74 72 61       list of tra
28370 63 65 20 6c 69 73 74 65 6e 65 72 73 20 6d 61 69  ce listeners mai
28380 6e 74 61 69 6e 65 64 20 62 79 0d 0a 20 20 20 20  ntained by..    
28390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
283a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
283b0 20 20 20 20 20 74 68 65 20 54 72 61 63 65 4f 70       the TraceOp
283c0 73 20 63 6c 61 73 73 20 28 69 2e 65 2e 20 6f 6e  s class (i.e. on
283d0 6c 79 20 6d 65 73 73 61 67 65 73 0d 0a 20 20 20  ly messages..   
283e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
283f0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
28400 20 20 20 20 20 20 74 68 61 74 20 6d 65 65 74 20        that meet 
28410 74 68 65 20 64 65 62 75 67 20 70 72 69 6f 72 69  the debug priori
28420 74 79 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20  ty will be..    
28430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28440 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
28450 20 20 20 20 20 73 65 65 6e 20 6f 6e 20 74 68 65       seen on the
28460 20 63 6f 6e 73 6f 6c 65 29 2e 0d 0a 20 20 20 20   console)...    
28470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28480 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
28490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
284a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
284b0 54 72 61 63 65 4f 70 73 2e 53 65 74 75 70 44 65  TraceOps.SetupDe
284c0 62 75 67 4c 69 73 74 65 6e 65 72 73 28 29 3b 0d  bugListeners();.
284d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
284e0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
284f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28500 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
28510 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
28530 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28550 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
28560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28570 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 64       // NOTE: Ad
28580 64 20 74 68 65 20 63 6f 6e 73 6f 6c 65 20 74 72  d the console tr
28590 61 63 65 20 6c 69 73 74 65 6e 65 72 20 74 6f 20  ace listener to 
285a0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  the..           
285b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
285c0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69       //       li
285d0 73 74 20 6f 66 20 62 75 69 6c 74 2d 69 6e 20 74  st of built-in t
285e0 72 61 63 65 20 6c 69 73 74 65 6e 65 72 73 20 28  race listeners (
285f0 69 2e 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  i.e...          
28600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28610 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f        //       o
28620 6e 6c 79 20 6d 65 73 73 61 67 65 73 20 74 68 61  nly messages tha
28630 74 20 6d 65 65 74 20 74 68 65 20 74 72 61 63 65  t meet the trace
28640 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28660 20 20 2f 2f 20 20 20 20 20 20 20 70 72 69 6f 72    //       prior
28670 69 74 79 20 77 69 6c 6c 20 62 65 20 73 65 65 6e  ity will be seen
28680 20 6f 6e 20 74 68 65 20 63 6f 6e 73 6f 6c 65 29   on the console)
28690 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
286a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
286b0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
286c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
286d0 20 20 20 20 20 20 20 54 72 61 63 65 2e 4c 69 73         Trace.Lis
286e0 74 65 6e 65 72 73 2e 41 64 64 28 6e 65 77 20 43  teners.Add(new C
286f0 6f 6e 73 6f 6c 65 54 72 61 63 65 4c 69 73 74 65  onsoleTraceListe
28700 6e 65 72 28 29 29 3b 0d 0a 20 20 20 20 20 20 20  ner());..       
28710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28720 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
28730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28740 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
28750 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f               ///
28760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28790 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
287a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
287b0 69 66 20 28 21 63 6f 6e 66 69 67 75 72 61 74 69  if (!configurati
287c0 6f 6e 2e 6e 6f 4c 6f 67 20 26 26 0d 0a 20 20 20  on.noLog &&..   
287d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
287e0 20 20 20 20 20 20 20 20 20 21 53 74 72 69 6e 67           !String
287f0 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 63  .IsNullOrEmpty(c
28800 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6c 6f 67  onfiguration.log
28810 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20  FileName))..    
28820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28830 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
28840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28850 20 20 20 54 72 61 63 65 2e 4c 69 73 74 65 6e 65     Trace.Listene
28860 72 73 2e 41 64 64 28 6e 65 77 20 54 65 78 74 57  rs.Add(new TextW
28870 72 69 74 65 72 54 72 61 63 65 4c 69 73 74 65 6e  riterTraceListen
28880 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er(..           
28890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
288a0 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
288b0 6f 6e 2e 6c 6f 67 46 69 6c 65 4e 61 6d 65 29 29  on.logFileName))
288c0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
288d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
288e0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
288f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28900 20 2f 2f 20 4e 4f 54 45 3a 20 54 65 63 68 6e 69   // NOTE: Techni
28910 63 61 6c 6c 79 2c 20 77 65 20 63 72 65 61 74 65  cally, we create
28920 64 20 74 68 65 20 6c 6f 67 20 66 69 6c 65 2e 0d  d the log file..
28930 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28940 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
28950 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28960 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c               fil
28970 65 73 43 72 65 61 74 65 64 2b 2b 3b 0d 0a 20 20  esCreated++;..  
28980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28990 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
289a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
289b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
289c0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
289d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
289e0 20 4e 4f 54 45 3a 20 44 75 6d 70 20 74 68 65 20   NOTE: Dump the 
289f0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6e 6f  configuration no
28a00 77 20 69 6e 20 63 61 73 65 20 77 65 20 6e 65 65  w in case we nee
28a10 64 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 20 20  d to..          
28a20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
28a30 20 20 20 74 72 6f 75 62 6c 65 73 68 6f 6f 74 20     troubleshoot 
28a40 61 6e 79 20 69 73 73 75 65 73 2e 0d 0a 20 20 20  any issues...   
28a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28a60 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
28a70 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e           if (con
28a80 66 69 67 75 72 61 74 69 6f 6e 2e 64 65 62 75 67  figuration.debug
28a90 50 72 69 6f 72 69 74 79 20 3c 3d 20 54 72 61 63  Priority <= Trac
28aa0 65 50 72 69 6f 72 69 74 79 2e 4d 65 64 69 75 6d  ePriority.Medium
28ab0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
28ac0 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
28ad0 67 75 72 61 74 69 6f 6e 2e 44 75 6d 70 28 64 65  guration.Dump(de
28ae0 62 75 67 43 61 6c 6c 62 61 63 6b 29 3b 0d 0a 0d  bugCallback);...
28af0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28b00 20 20 20 20 20 69 66 20 28 63 6f 6e 66 69 67 75       if (configu
28b10 72 61 74 69 6f 6e 2e 74 72 61 63 65 50 72 69 6f  ration.tracePrio
28b20 72 69 74 79 20 3c 3d 20 54 72 61 63 65 50 72 69  rity <= TracePri
28b30 6f 72 69 74 79 2e 4d 65 64 69 75 6d 29 0d 0a 20  ority.Medium).. 
28b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28b50 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
28b60 74 69 6f 6e 2e 44 75 6d 70 28 74 72 61 63 65 43  tion.Dump(traceC
28b70 61 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20  allback);....   
28b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28b90 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
28ba0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
28bb0 3a 20 53 68 6f 77 20 77 68 65 72 65 20 77 65 20  : Show where we 
28bc0 61 72 65 20 72 75 6e 6e 69 6e 67 20 66 72 6f 6d  are running from
28bd0 20 61 6e 64 20 68 6f 77 20 77 65 20 77 65 72 65   and how we were
28be0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28bf0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69        //       i
28c00 6e 76 6f 6b 65 64 2e 0d 0a 20 20 20 20 20 20 20  nvoked...       
28c10 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
28c20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28c30 20 20 20 20 20 73 74 72 69 6e 67 20 6c 6f 63 61       string loca
28c40 74 69 6f 6e 20 3d 20 61 73 73 65 6d 62 6c 79 2e  tion = assembly.
28c50 4c 6f 63 61 74 69 6f 6e 3b 0d 0a 0d 0a 20 20 20  Location;....   
28c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28c70 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
28c80 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72 69  ndTrace(TracePri
28c90 6f 72 69 74 79 2e 4d 65 64 69 75 6d 4c 6f 77 2c  ority.MediumLow,
28ca0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28cb0 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43            debugC
28cc0 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61  allback, traceCa
28cd0 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46  llback, String.F
28ce0 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
28cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28d00 22 52 75 6e 6e 69 6e 67 20 65 78 65 63 75 74 61  "Running executa
28d10 62 6c 65 20 69 73 3a 20 7b 30 7d 22 2c 20 46 6f  ble is: {0}", Fo
28d20 72 44 69 73 70 6c 61 79 28 6c 6f 63 61 74 69 6f  rDisplay(locatio
28d30 6e 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  n)),..          
28d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
28d50 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
28d60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28d70 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65       TraceOps.De
28d80 62 75 67 41 6e 64 54 72 61 63 65 28 54 72 61 63  bugAndTrace(Trac
28d90 65 50 72 69 6f 72 69 74 79 2e 4d 65 64 69 75 6d  ePriority.Medium
28da0 4c 6f 77 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  Low,..          
28db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
28dc0 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61  bugCallback, tra
28dd0 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69  ceCallback, Stri
28de0 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
28df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28e00 20 20 20 20 22 4f 72 69 67 69 6e 61 6c 20 63 6f      "Original co
28e10 6d 6d 61 6e 64 20 6c 69 6e 65 20 69 73 3a 20 7b  mmand line is: {
28e20 30 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  0}",..          
28e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45 6e                En
28e40 76 69 72 6f 6e 6d 65 6e 74 2e 43 6f 6d 6d 61 6e  vironment.Comman
28e50 64 4c 69 6e 65 29 2c 20 74 72 61 63 65 43 61 74  dLine), traceCat
28e60 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
28e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
28e80 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64  raceOps.DebugAnd
28e90 54 72 61 63 65 28 54 72 61 63 65 50 72 69 6f 72  Trace(TracePrior
28ea0 69 74 79 2e 4d 65 64 69 75 6d 4c 6f 77 2c 0d 0a  ity.MediumLow,..
28eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28ec0 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61 6c          debugCal
28ed0 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c  lback, traceCall
28ee0 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72  back, String.For
28ef0 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
28f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 52                "R
28f10 75 6e 6e 69 6e 67 20 70 72 6f 63 65 73 73 20 69  unning process i
28f20 73 20 7b 30 7d 2e 22 2c 20 49 73 36 34 42 69 74  s {0}.", Is64Bit
28f30 50 72 6f 63 65 73 73 28 29 20 3f 0d 0a 20 20 20  Process() ?..   
28f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28f50 20 20 20 20 20 20 20 20 20 22 36 34 2d 62 69 74           "64-bit
28f60 22 20 3a 20 22 33 32 2d 62 69 74 22 29 2c 20 74  " : "32-bit"), t
28f70 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
28f80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28f90 20 20 20 20 20 20 69 66 20 28 21 63 6f 6e 66 69        if (!confi
28fa0 67 75 72 61 74 69 6f 6e 2e 77 68 61 74 49 66 29  guration.whatIf)
28fb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28fc0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
28fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28fe0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
28ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
29000 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 64 65 62  NOTE: If the deb
29010 75 67 67 65 72 20 69 73 20 61 74 74 61 63 68 65  ugger is attache
29020 64 20 61 6e 64 20 22 77 68 61 74 2d 69 66 22 0d  d and "what-if".
29030 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29040 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
29050 20 20 6d 6f 64 65 20 69 73 20 5b 6e 6f 77 5d 20    mode is [now] 
29060 64 69 73 61 62 6c 65 64 2c 20 69 73 73 75 65 20  disabled, issue 
29070 61 20 77 61 72 6e 69 6e 67 2e 0d 0a 20 20 20 20  a warning...    
29080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29090 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
290a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
290b0 69 66 20 28 44 65 62 75 67 67 65 72 2e 49 73 41  if (Debugger.IsA
290c0 74 74 61 63 68 65 64 29 0d 0a 20 20 20 20 20 20  ttached)..      
290d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
290e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
290f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29100 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
29110 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72 69  ndTrace(TracePri
29120 6f 72 69 74 79 2e 4d 65 64 69 75 6d 48 69 67 68  ority.MediumHigh
29130 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
29140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29150 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b     debugCallback
29160 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c  , traceCallback,
29170 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29190 20 20 22 46 6f 72 63 65 64 20 74 6f 20 64 69 73    "Forced to dis
291a0 61 62 6c 65 20 5c 22 77 68 61 74 2d 69 66 5c 22  able \"what-if\"
291b0 20 6d 6f 64 65 20 77 69 74 68 20 22 20 2b 0d 0a   mode with " +..
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 20 20 20 20 20 20 20 20                  
291e0 22 64 65 62 75 67 67 65 72 20 61 74 74 61 63 68  "debugger attach
291f0 65 64 2e 22 2c 20 74 72 61 63 65 43 61 74 65 67  ed.", traceCateg
29200 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ory);..         
29210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
29220 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29230 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
29240 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
29250 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
29260 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
29270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29280 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67    TraceOps.Debug
29290 41 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72  AndTrace(TracePr
292a0 69 6f 72 69 74 79 2e 4d 65 64 69 75 6d 48 69 67  iority.MediumHig
292b0 68 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h,..            
292c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
292d0 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74  debugCallback, t
292e0 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20  raceCallback,.. 
292f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29300 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 20 61             "No a
29310 63 74 75 61 6c 20 63 68 61 6e 67 65 73 20 77 69  ctual changes wi
29320 6c 6c 20 62 65 20 6d 61 64 65 20 74 6f 20 74 68  ll be made to th
29330 69 73 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  is " +..        
29340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29350 20 20 20 20 22 73 79 73 74 65 6d 20 62 65 63 61      "system beca
29360 75 73 65 20 5c 22 77 68 61 74 2d 69 66 5c 22 20  use \"what-if\" 
29370 6d 6f 64 65 20 69 73 20 65 6e 61 62 6c 65 64 2e  mode is enabled.
29380 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
29390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
293a0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
293b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
293c0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
293d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
293e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
293f0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
29400 66 20 74 68 65 20 72 65 67 69 73 74 72 79 20 6c  f the registry l
29410 6f 67 20 66 69 6c 65 20 6e 61 6d 65 20 68 61 73  og file name has
29420 20 62 65 65 6e 20 73 65 74 2c 20 69 74 73 0d 0a   been set, its..
29430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29440 20 20 20 20 2f 2f 20 20 20 20 20 20 20 76 61 6c      //       val
29450 75 65 20 77 69 6c 6c 20 62 65 20 75 73 65 64 20  ue will be used 
29460 76 65 72 62 61 74 69 6d 20 61 73 20 74 68 65 20  verbatim as the 
29470 70 6c 61 63 65 20 77 68 65 72 65 0d 0a 20 20 20  place where..   
29480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29490 20 2f 2f 20 20 20 20 20 20 20 61 6c 6c 20 72 65   //       all re
294a0 67 69 73 74 72 79 20 77 72 69 74 65 20 6f 70 65  gistry write ope
294b0 72 61 74 69 6f 6e 73 20 77 69 6c 6c 20 28 65 76  rations will (ev
294c0 65 6e 74 75 61 6c 6c 79 29 0d 0a 20 20 20 20 20  entually)..     
294d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
294e0 2f 20 20 20 20 20 20 20 62 65 20 6c 6f 67 67 65  /       be logge
294f0 64 2e 20 20 4d 61 6b 65 20 73 75 72 65 20 74 68  d.  Make sure th
29500 65 20 72 65 67 69 73 74 72 79 20 68 65 6c 70 65  e registry helpe
29510 72 20 63 6c 61 73 73 0d 0a 20 20 20 20 20 20 20  r class..       
29520 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
29530 20 20 20 20 20 20 68 61 73 20 61 20 76 61 6c 69        has a vali
29540 64 20 6f 70 65 72 61 74 69 6f 6e 20 6c 69 73 74  d operation list
29550 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 69 74 20  ; otherwise, it 
29560 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 20 20  will..          
29570 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
29580 20 20 20 6e 6f 74 20 70 65 72 66 6f 72 6d 20 61     not perform a
29590 6e 79 20 6c 6f 67 67 69 6e 67 2e 0d 0a 20 20 20  ny logging...   
295a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
295b0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
295c0 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e           if (con
295d0 66 69 67 75 72 61 74 69 6f 6e 2e 72 65 67 69 73  figuration.regis
295e0 74 72 79 4c 6f 67 46 69 6c 65 4e 61 6d 65 20 21  tryLogFileName !
295f0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
29600 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
29610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29620 20 20 20 20 20 20 20 20 52 65 67 69 73 74 72 79          Registry
29630 48 65 6c 70 65 72 2e 45 6e 61 62 6c 65 4f 72 44  Helper.EnableOrD
29640 69 73 61 62 6c 65 4f 70 65 72 61 74 69 6f 6e 4c  isableOperationL
29650 69 73 74 28 74 72 75 65 29 3b 0d 0a 0d 0a 20 20  ist(true);....  
29660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29670 20 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44        TraceOps.D
29680 65 62 75 67 41 6e 64 54 72 61 63 65 28 54 72 61  ebugAndTrace(Tra
29690 63 65 50 72 69 6f 72 69 74 79 2e 4d 65 64 69 75  cePriority.Mediu
296a0 6d 48 69 67 68 2c 0d 0a 20 20 20 20 20 20 20 20  mHigh,..        
296b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
296c0 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63      debugCallbac
296d0 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b  k, traceCallback
296e0 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  , String.Format(
296f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 52                "R
29710 65 67 69 73 74 72 79 20 6c 6f 67 67 69 6e 67 20  egistry logging 
29720 74 6f 20 66 69 6c 65 20 7b 30 7d 20 65 6e 61 62  to file {0} enab
29730 6c 65 64 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20  led.",..        
29740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29750 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 63      ForDisplay(c
29760 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 72 65 67  onfiguration.reg
29770 69 73 74 72 79 4c 6f 67 46 69 6c 65 4e 61 6d 65  istryLogFileName
29780 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
29790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
297a0 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
297b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
297c0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
297d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
297e0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
297f0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
29800 49 66 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6c  If the command l
29810 69 6e 65 20 68 61 73 20 6e 6f 74 20 62 65 65 6e  ine has not been
29820 20 6d 61 6e 75 61 6c 6c 79 0d 0a 20 20 20 20 20   manually..     
29830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
29840 2f 20 20 20 20 20 20 20 63 6f 6e 66 69 72 6d 65  /       confirme
29850 64 20 28 69 2e 65 2e 20 76 69 61 20 74 68 65 20  d (i.e. via the 
29860 65 78 70 6c 69 63 69 74 20 63 6f 6d 6d 61 6e 64  explicit command
29870 20 6c 69 6e 65 0d 0a 20 20 20 20 20 20 20 20 20   line..         
29880 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
29890 20 20 20 20 6f 70 74 69 6f 6e 29 2c 20 74 68 65      option), the
298a0 6e 20 73 74 6f 70 20 70 72 6f 63 65 73 73 69 6e  n stop processin
298b0 67 20 6e 6f 77 2e 20 20 57 65 20 65 6e 66 6f 72  g now.  We enfor
298c0 63 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ce..            
298d0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
298e0 20 74 68 69 73 20 72 75 6c 65 20 73 6f 20 74 68   this rule so th
298f0 61 74 20 73 69 6d 70 6c 79 20 64 6f 75 62 6c 65  at simply double
29900 2d 63 6c 69 63 6b 69 6e 67 20 74 68 65 0d 0a 20  -clicking the.. 
29910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29920 20 20 20 2f 2f 20 20 20 20 20 20 20 65 78 65 63     //       exec
29930 75 74 61 62 6c 65 20 77 69 6c 6c 20 6e 6f 74 20  utable will not 
29940 72 65 73 75 6c 74 20 69 6e 20 61 6e 79 20 63 68  result in any ch
29950 61 6e 67 65 73 20 62 65 69 6e 67 0d 0a 20 20 20  anges being..   
29960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29970 20 2f 2f 20 20 20 20 20 20 20 6d 61 64 65 20 74   //       made t
29980 6f 20 74 68 65 20 73 79 73 74 65 6d 2e 0d 0a 20  o the system... 
29990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
299a0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
299b0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
299c0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 63 6f  configuration.co
299d0 6e 66 69 72 6d 29 0d 0a 20 20 20 20 20 20 20 20  nfirm)..        
299e0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
299f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29a00 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 22         error = "
29a10 43 61 6e 6e 6f 74 20 63 6f 6e 74 69 6e 75 65 2c  Cannot continue,
29a20 20 74 68 65 20 5c 22 63 6f 6e 66 69 72 6d 5c 22   the \"confirm\"
29a30 20 6f 70 74 69 6f 6e 20 69 73 20 22 20 2b 0d 0a   option is " +..
29a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29a50 20 20 20 20 20 20 20 20 20 20 20 20 22 6e 6f 74              "not
29a60 20 65 6e 61 62 6c 65 64 2e 22 3b 0d 0a 0d 0a 20   enabled.";.... 
29a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29a80 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
29a90 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
29aa0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
29ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29ac0 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
29ad0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29ae0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
29af0 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
29b00 74 69 6f 6e 20 65 29 0d 0a 20 20 20 20 20 20 20  tion e)..       
29b10 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
29b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29b30 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e  TraceOps.DebugAn
29b40 64 54 72 61 63 65 28 54 72 61 63 65 50 72 69 6f  dTrace(TracePrio
29b50 72 69 74 79 2e 48 69 67 68 65 73 74 2c 0d 0a 20  rity.Highest,.. 
29b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29b70 20 20 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c         debugCall
29b80 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62  back, traceCallb
29b90 61 63 6b 2c 20 65 2c 20 74 72 61 63 65 43 61 74  ack, e, traceCat
29ba0 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
29bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
29bc0 72 72 6f 72 20 3d 20 22 46 61 69 6c 65 64 20 74  rror = "Failed t
29bd0 6f 20 70 72 6f 63 65 73 73 20 63 6f 6e 66 69 67  o process config
29be0 75 72 61 74 69 6f 6e 2e 22 3b 0d 0a 20 20 20 20  uration.";..    
29bf0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
29c00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29c10 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
29c20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
29c30 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29c80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
29c90 5b 4d 65 74 68 6f 64 49 6d 70 6c 28 4d 65 74 68  [MethodImpl(Meth
29ca0 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f  odImplOptions.No
29cb0 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a 20 20 20 20  Inlining)]..    
29cc0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
29cd0 74 61 74 69 63 20 62 6f 6f 6c 20 43 68 65 63 6b  tatic bool Check
29ce0 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 28 0d  RuntimeVersion(.
29cf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29d00 20 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 63   Configuration c
29d10 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2c 0d 0a 20  onfiguration,.. 
29d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
29d30 6f 6f 6c 20 73 74 72 69 63 74 2c 0d 0a 20 20 20  ool strict,..   
29d40 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
29d50 20 73 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a 20   string error.. 
29d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
29d70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
29d80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29d90 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
29da0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
29db0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
29dc0 28 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 3d  (configuration =
29dd0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
29de0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
29df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29e00 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20          error = 
29e10 22 49 6e 76 61 6c 69 64 20 63 6f 6e 66 69 67 75  "Invalid configu
29e20 72 61 74 69 6f 6e 2e 22 3b 0d 0a 20 20 20 20 20  ration.";..     
29e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29e40 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
29e50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29e60 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
29e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
29e80 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
29e90 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
29ea0 57 68 61 74 20 76 65 72 73 69 6f 6e 20 6f 66 20  What version of 
29eb0 74 68 65 20 72 75 6e 74 69 6d 65 20 77 61 73 20  the runtime was 
29ec0 74 68 65 20 63 6f 72 65 20 28 70 72 69 6d 61 72  the core (primar
29ed0 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y)..            
29ee0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
29ef0 20 61 73 73 65 6d 62 6c 79 20 63 6f 6d 70 69 6c   assembly compil
29f00 65 64 20 61 67 61 69 6e 73 74 20 28 65 2e 67 2e  ed against (e.g.
29f10 20 22 76 32 2e 30 2e 35 30 37 32 37 22 20 6f 72   "v2.0.50727" or
29f20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29f30 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 22        //       "
29f40 76 34 2e 30 2e 33 30 33 31 39 22 29 2e 0d 0a 20  v4.0.30319")... 
29f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29f60 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
29f70 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
29f80 67 20 63 6f 72 65 49 6d 61 67 65 52 75 6e 74 69  g coreImageRunti
29f90 6d 65 56 65 72 73 69 6f 6e 20 3d 20 47 65 74 49  meVersion = GetI
29fa0 6d 61 67 65 52 75 6e 74 69 6d 65 56 65 72 73 69  mageRuntimeVersi
29fb0 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
29fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
29fd0 66 69 67 75 72 61 74 69 6f 6e 2e 63 6f 72 65 46  figuration.coreF
29fe0 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  ileName);....   
29ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a000 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
2a010 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
2a020 3a 20 57 65 20 61 6c 6c 6f 77 20 74 68 65 20 61  : We allow the a
2a030 63 74 75 61 6c 20 69 6d 61 67 65 20 72 75 6e 74  ctual image runt
2a040 69 6d 65 20 63 68 65 63 6b 69 6e 67 20 74 6f 20  ime checking to 
2a050 62 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  be..            
2a060 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
2a070 20 62 79 70 61 73 73 65 64 20 76 69 61 20 74 68   bypassed via th
2a080 65 20 22 2d 6e 6f 52 75 6e 74 69 6d 65 56 65 72  e "-noRuntimeVer
2a090 73 69 6f 6e 22 20 63 6f 6d 6d 61 6e 64 20 6c 69  sion" command li
2a0a0 6e 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ne..            
2a0b0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
2a0c0 20 6f 70 74 69 6f 6e 2e 20 20 54 68 65 20 63 6f   option.  The co
2a0d0 6d 6d 61 6e 64 20 6c 69 6e 65 20 6f 70 74 69 6f  mmand line optio
2a0e0 6e 20 69 73 20 69 6e 74 65 6e 64 65 64 20 66 6f  n is intended fo
2a0f0 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r..             
2a100 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
2a110 65 78 70 65 72 74 20 75 73 65 20 6f 6e 6c 79 2e  expert use only.
2a120 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a130 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2a140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2a150 20 28 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e   (configuration.
2a160 6e 6f 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e  noRuntimeVersion
2a170 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2a180 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2a190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a1a0 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67    TraceOps.Debug
2a1b0 41 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72  AndTrace(TracePr
2a1c0 69 6f 72 69 74 79 2e 4d 65 64 69 75 6d 2c 0d 0a  iority.Medium,..
2a1d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a1e0 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75              debu
2a1f0 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65  gCallback, trace
2a200 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67  Callback, String
2a210 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
2a220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a230 20 20 20 20 20 20 22 41 73 73 65 6d 62 6c 79 20        "Assembly 
2a240 69 73 20 63 6f 6d 70 69 6c 65 64 20 66 6f 72 20  is compiled for 
2a250 74 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f  the .NET Framewo
2a260 72 6b 20 7b 30 7d 3b 20 22 20 2b 0d 0a 20 20 20  rk {0}; " +..   
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 22 68 6f 77 65 76 65           "howeve
2a290 72 2c 20 69 6e 73 74 61 6c 6c 61 74 69 6f 6e 20  r, installation 
2a2a0 72 65 73 74 72 69 63 74 69 6f 6e 73 20 62 61 73  restrictions bas
2a2b0 65 64 20 6f 6e 20 74 68 69 73 20 22 20 2b 0d 0a  ed on this " +..
2a2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a2d0 20 20 20 20 20 20 20 20 20 20 20 20 22 66 61 63              "fac
2a2e0 74 20 68 61 76 65 20 62 65 65 6e 20 64 69 73 61  t have been disa
2a2f0 62 6c 65 64 20 76 69 61 20 74 68 65 20 63 6f 6d  bled via the com
2a300 6d 61 6e 64 20 6c 69 6e 65 2e 22 2c 0d 0a 20 20  mand line.",..  
2a310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a320 20 20 20 20 20 20 20 20 20 20 63 6f 72 65 49 6d            coreIm
2a330 61 67 65 52 75 6e 74 69 6d 65 56 65 72 73 69 6f  ageRuntimeVersio
2a340 6e 29 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72  n), traceCategor
2a350 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
2a360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2a370 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20  eturn true;..   
2a380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a390 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2a3a0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2a3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a3c0 20 20 2f 2f 20 54 4f 44 4f 3a 20 52 65 73 74 72    // TODO: Restr
2a3d0 69 63 74 20 74 68 65 20 63 6f 6e 66 69 67 75 72  ict the configur
2a3e0 61 74 69 6f 6e 20 62 61 73 65 64 20 6f 6e 20 77  ation based on w
2a3f0 68 69 63 68 20 69 6d 61 67 65 0d 0a 20 20 20 20  hich image..    
2a400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a410 2f 2f 20 20 20 20 20 20 20 72 75 6e 74 69 6d 65  //       runtime
2a420 20 76 65 72 73 69 6f 6e 73 20 28 77 68 69 63 68   versions (which
2a430 20 6d 6f 72 65 2d 6f 72 2d 6c 65 73 73 20 63 6f   more-or-less co
2a440 72 72 65 73 70 6f 6e 64 0d 0a 20 20 20 20 20 20  rrespond..      
2a450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2a460 20 20 20 20 20 20 20 74 6f 20 2e 4e 45 54 20 46         to .NET F
2a470 72 61 6d 65 77 6f 72 6b 20 76 65 72 73 69 6f 6e  ramework version
2a480 73 29 20 61 72 65 20 73 75 70 70 6f 72 74 65 64  s) are supported
2a490 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20   by the..       
2a4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2a4b0 20 20 20 20 20 20 76 65 72 73 69 6f 6e 73 20 6f        versions o
2a4c0 66 20 56 69 73 75 61 6c 20 53 74 75 64 69 6f 20  f Visual Studio 
2a4d0 74 68 61 74 20 61 72 65 20 69 6e 73 74 61 6c 6c  that are install
2a4e0 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed...           
2a4f0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2a500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a510 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75   if (String.IsNu
2a520 6c 6c 4f 72 45 6d 70 74 79 28 63 6f 72 65 49 6d  llOrEmpty(coreIm
2a530 61 67 65 52 75 6e 74 69 6d 65 56 65 72 73 69 6f  ageRuntimeVersio
2a540 6e 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n))..           
2a550 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2a560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a570 20 20 20 20 65 72 72 6f 72 20 3d 20 22 69 6e 76      error = "inv
2a580 61 6c 69 64 20 63 6f 72 65 20 66 69 6c 65 20 69  alid core file i
2a590 6d 61 67 65 20 72 75 6e 74 69 6d 65 20 76 65 72  mage runtime ver
2a5a0 73 69 6f 6e 22 3b 0d 0a 20 20 20 20 20 20 20 20  sion";..        
2a5b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a5c0 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
2a5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a5e0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2a5f0 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
2a600 66 20 28 53 74 72 69 6e 67 2e 45 71 75 61 6c 73  f (String.Equals
2a610 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2a620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
2a630 6f 72 65 49 6d 61 67 65 52 75 6e 74 69 6d 65 56  oreImageRuntimeV
2a640 65 72 73 69 6f 6e 2c 20 43 4c 52 76 32 49 6d 61  ersion, CLRv2Ima
2a650 67 65 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e  geRuntimeVersion
2a660 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2a670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
2a680 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e  tringComparison.
2a690 4f 72 64 69 6e 61 6c 29 29 0d 0a 20 20 20 20 20  Ordinal))..     
2a6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2a6b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a6c0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2a6d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a6e0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46        // NOTE: F
2a6f0 6f 72 20 74 68 65 20 43 4c 52 20 76 32 2e 30 20  or the CLR v2.0 
2a700 72 75 6e 74 69 6d 65 2c 20 6d 61 6b 65 20 73 75  runtime, make su
2a710 72 65 20 77 65 20 64 69 73 61 62 6c 65 0d 0a 20  re we disable.. 
2a720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a730 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
2a740 61 6e 79 20 61 74 74 65 6d 70 74 20 74 6f 20 75  any attempt to u
2a750 73 65 20 69 74 20 66 6f 72 20 74 68 69 6e 67 73  se it for things
2a760 20 74 68 61 74 20 72 65 71 75 69 72 65 0d 0a 20   that require.. 
2a770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a780 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
2a790 61 6e 20 61 73 73 65 6d 62 6c 79 20 63 6f 6d 70  an assembly comp
2a7a0 69 6c 65 64 20 66 6f 72 20 74 68 65 20 43 4c 52  iled for the CLR
2a7b0 20 76 34 2e 30 2e 20 20 49 74 20 69 73 0d 0a 20   v4.0.  It is.. 
2a7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a7d0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
2a7e0 75 6e 63 65 72 74 61 69 6e 20 69 66 20 74 68 69  uncertain if thi
2a7f0 73 20 69 73 20 61 63 74 75 61 6c 6c 79 20 61 20  s is actually a 
2a800 70 72 6f 62 6c 65 6d 20 69 6e 0d 0a 20 20 20 20  problem in..    
2a810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a820 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70 72 61      //       pra
2a830 63 74 69 63 65 20 61 73 20 74 68 65 20 43 4c 52  ctice as the CLR
2a840 20 76 34 2e 30 20 63 61 6e 20 6c 6f 61 64 20 61   v4.0 can load a
2a850 6e 64 20 75 73 65 20 61 6e 0d 0a 20 20 20 20 20  nd use an..     
2a860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a870 20 20 20 2f 2f 20 20 20 20 20 20 20 61 73 73 65     //       asse
2a880 6d 62 6c 79 20 63 6f 6d 70 69 6c 65 64 20 77 69  mbly compiled wi
2a890 74 68 20 74 68 65 20 43 4c 52 20 76 32 2e 30 3b  th the CLR v2.0;
2a8a0 20 68 6f 77 65 76 65 72 2c 0d 0a 20 20 20 20 20   however,..     
2a8b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a8c0 20 20 20 2f 2f 20 20 20 20 20 20 20 73 69 6e 63     //       sinc
2a8d0 65 20 74 68 69 73 20 70 72 6f 6a 65 63 74 20 6f  e this project o
2a8e0 66 66 65 72 73 20 62 6f 74 68 20 63 6f 6e 66 69  ffers both confi
2a8f0 67 75 72 61 74 69 6f 6e 73 2c 0d 0a 20 20 20 20  gurations,..    
2a900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a910 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77 65 20      //       we 
2a920 63 75 72 72 65 6e 74 6c 79 20 64 69 73 61 6c 6c  currently disall
2a930 6f 77 20 74 68 69 73 20 6d 69 73 6d 61 74 63 68  ow this mismatch
2a940 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2a950 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2a960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a970 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
2a980 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34 30 20 3d  tion.noNetFx40 =
2a990 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
2a9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a9b0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f  configuration.no
2a9c0 4e 65 74 46 78 34 35 20 3d 20 74 72 75 65 3b 0d  NetFx45 = true;.
2a9d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a9e0 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
2a9f0 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34 35  ration.noNetFx45
2aa00 31 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  1 = true;..     
2aa10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aa20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
2aa30 2e 6e 6f 4e 65 74 46 78 34 35 32 20 3d 20 74 72  .noNetFx452 = tr
2aa40 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
2aa50 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
2aa60 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74  figuration.noNet
2aa70 46 78 34 36 20 3d 20 74 72 75 65 3b 0d 0a 20 20  Fx46 = true;..  
2aa80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aa90 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74        configurat
2aaa0 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34 36 31 20 3d  ion.noNetFx461 =
2aab0 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
2aac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aad0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f  configuration.no
2aae0 4e 65 74 46 78 34 36 32 20 3d 20 74 72 75 65 3b  NetFx462 = true;
2aaf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ab00 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67            config
2ab10 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34  uration.noNetFx4
2ab20 37 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  7 = true;..     
2ab30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ab40 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
2ab50 2e 6e 6f 4e 65 74 46 78 34 37 31 20 3d 20 74 72  .noNetFx471 = tr
2ab60 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
2ab70 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
2ab80 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32  figuration.noVs2
2ab90 30 31 30 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  010 = true;..   
2aba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2abb0 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
2abc0 6f 6e 2e 6e 6f 56 73 32 30 31 32 20 3d 20 74 72  on.noVs2012 = tr
2abd0 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
2abe0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
2abf0 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32  figuration.noVs2
2ac00 30 31 33 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  013 = true;..   
2ac10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ac20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
2ac30 6f 6e 2e 6e 6f 56 73 32 30 31 35 20 3d 20 74 72  on.noVs2015 = tr
2ac40 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
2ac50 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
2ac60 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32  figuration.noVs2
2ac70 30 31 37 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20  017 = true;.... 
2ac80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ac90 20 20 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e         TraceOps.
2aca0 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 54 72  DebugAndTrace(Tr
2acb0 61 63 65 50 72 69 6f 72 69 74 79 2e 4d 65 64 69  acePriority.Medi
2acc0 75 6d 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  um,..           
2acd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ace0 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20   debugCallback, 
2acf0 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53  traceCallback, S
2ad00 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
2ad10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ad20 20 20 20 20 20 20 20 20 20 20 20 22 41 73 73 65             "Asse
2ad30 6d 62 6c 79 20 69 73 20 63 6f 6d 70 69 6c 65 64  mbly is compiled
2ad40 20 66 6f 72 20 74 68 65 20 2e 4e 45 54 20 46 72   for the .NET Fr
2ad50 61 6d 65 77 6f 72 6b 20 7b 30 7d 2c 20 22 20 2b  amework {0}, " +
2ad60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ad70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 73                "s
2ad80 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20 2e  upport for the .
2ad90 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 7b 31  NET Framework {1
2ada0 7d 20 69 73 20 6e 6f 77 20 64 69 73 61 62 6c 65  } is now disable
2adb0 64 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  d.",..          
2adc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2add0 20 20 43 4c 52 76 32 49 6d 61 67 65 52 75 6e 74    CLRv2ImageRunt
2ade0 69 6d 65 56 65 72 73 69 6f 6e 2c 20 43 4c 52 76  imeVersion, CLRv
2adf0 34 49 6d 61 67 65 52 75 6e 74 69 6d 65 56 65 72  4ImageRuntimeVer
2ae00 73 69 6f 6e 29 2c 0d 0a 20 20 20 20 20 20 20 20  sion),..        
2ae10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ae20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
2ae30 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
2ae40 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2ae50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ae60 65 6c 73 65 20 69 66 20 28 53 74 72 69 6e 67 2e  else if (String.
2ae70 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20  Equals(..       
2ae80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ae90 20 20 20 20 20 63 6f 72 65 49 6d 61 67 65 52 75       coreImageRu
2aea0 6e 74 69 6d 65 56 65 72 73 69 6f 6e 2c 20 43 4c  ntimeVersion, CL
2aeb0 52 76 34 49 6d 61 67 65 52 75 6e 74 69 6d 65 56  Rv4ImageRuntimeV
2aec0 65 72 73 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20  ersion,..       
2aed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aee0 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61       StringCompa
2aef0 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 29 29 0d  rison.Ordinal)).
2af00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2af10 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2af20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2af30 2f 2f 0d 0a 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 2f 2f 20 4e              // N
2af50 4f 54 45 3a 20 46 6f 72 20 74 68 65 20 43 4c 52  OTE: For the CLR
2af60 20 76 34 2e 30 20 72 75 6e 74 69 6d 65 2c 20 6d   v4.0 runtime, m
2af70 61 6b 65 20 73 75 72 65 20 77 65 20 64 69 73 61  ake sure we disa
2af80 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ble..           
2af90 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2afa0 20 20 20 20 20 20 61 6e 79 20 61 74 74 65 6d 70        any attemp
2afb0 74 20 74 6f 20 75 73 65 20 69 74 20 66 6f 72 20  t to use it for 
2afc0 74 68 69 6e 67 73 20 74 68 61 74 20 72 65 71 75  things that requ
2afd0 69 72 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ire..           
2afe0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2aff0 20 20 20 20 20 20 61 6e 20 61 73 73 65 6d 62 6c        an assembl
2b000 79 20 63 6f 6d 70 69 6c 65 64 20 66 6f 72 20 74  y compiled for t
2b010 68 65 20 43 4c 52 20 76 32 2e 30 2e 0d 0a 20 20  he CLR v2.0...  
2b020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b030 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2b040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b050 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e    configuration.
2b060 6e 6f 4e 65 74 46 78 32 30 20 3d 20 74 72 75 65  noNetFx20 = true
2b070 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2b080 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
2b090 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78  guration.noNetFx
2b0a0 33 35 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  35 = true;..    
2b0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b0c0 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
2b0d0 6e 2e 6e 6f 56 73 32 30 30 35 20 3d 20 74 72 75  n.noVs2005 = tru
2b0e0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
2b0f0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
2b100 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30  iguration.noVs20
2b110 30 38 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20  08 = true;....  
2b120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b130 20 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44        TraceOps.D
2b140 65 62 75 67 41 6e 64 54 72 61 63 65 28 54 72 61  ebugAndTrace(Tra
2b150 63 65 50 72 69 6f 72 69 74 79 2e 4d 65 64 69 75  cePriority.Mediu
2b160 6d 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m,..            
2b170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b180 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74  debugCallback, t
2b190 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74  raceCallback, St
2b1a0 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
2b1b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b1c0 20 20 20 20 20 20 20 20 20 20 22 41 73 73 65 6d            "Assem
2b1d0 62 6c 79 20 69 73 20 63 6f 6d 70 69 6c 65 64 20  bly is compiled 
2b1e0 66 6f 72 20 74 68 65 20 2e 4e 45 54 20 46 72 61  for the .NET Fra
2b1f0 6d 65 77 6f 72 6b 20 7b 30 7d 2c 20 22 20 2b 0d  mework {0}, " +.
2b200 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b210 20 20 20 20 20 20 20 20 20 20 20 20 20 22 73 75               "su
2b220 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20 2e 4e  pport for the .N
2b230 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 7b 31 7d  ET Framework {1}
2b240 20 69 73 20 6e 6f 77 20 64 69 73 61 62 6c 65 64   is now disabled
2b250 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .",..           
2b260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b270 20 46 6f 72 44 69 73 70 6c 61 79 28 43 4c 52 76   ForDisplay(CLRv
2b280 34 49 6d 61 67 65 52 75 6e 74 69 6d 65 56 65 72  4ImageRuntimeVer
2b290 73 69 6f 6e 29 2c 0d 0a 20 20 20 20 20 20 20 20  sion),..        
2b2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b2b0 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 43      ForDisplay(C
2b2c0 4c 52 76 32 49 6d 61 67 65 52 75 6e 74 69 6d 65  LRv2ImageRuntime
2b2d0 56 65 72 73 69 6f 6e 29 29 2c 0d 0a 20 20 20 20  Version)),..    
2b2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b2f0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2b300 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20  egory);..       
2b310 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2b320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b330 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
2b340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2b350 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b360 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d           error =
2b370 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d   String.Format(.
2b380 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b390 20 20 20 20 20 20 20 20 20 20 20 20 20 22 75 6e               "un
2b3a0 73 75 70 70 6f 72 74 65 64 20 63 6f 72 65 20 66  supported core f
2b3b0 69 6c 65 20 69 6d 61 67 65 20 72 75 6e 74 69 6d  ile image runtim
2b3c0 65 20 76 65 72 73 69 6f 6e 20 22 20 2b 0d 0a 20  e version " +.. 
2b3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b3e0 20 20 20 20 20 20 20 20 20 20 20 22 7b 30 7d 2c             "{0},
2b3f0 20 6d 75 73 74 20 62 65 20 7b 31 7d 20 6f 72 20   must be {1} or 
2b400 7b 32 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {2}",..         
2b410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b420 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 63 6f     ForDisplay(co
2b430 72 65 49 6d 61 67 65 52 75 6e 74 69 6d 65 56 65  reImageRuntimeVe
2b440 72 73 69 6f 6e 29 2c 0d 0a 20 20 20 20 20 20 20  rsion),..       
2b450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b460 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28       ForDisplay(
2b470 43 4c 52 76 32 49 6d 61 67 65 52 75 6e 74 69 6d  CLRv2ImageRuntim
2b480 65 56 65 72 73 69 6f 6e 29 2c 0d 0a 20 20 20 20  eVersion),..    
2b490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b4a0 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c          ForDispl
2b4b0 61 79 28 43 4c 52 76 34 49 6d 61 67 65 52 75 6e  ay(CLRv4ImageRun
2b4c0 74 69 6d 65 56 65 72 73 69 6f 6e 29 29 3b 0d 0a  timeVersion));..
2b4d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b4e0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2b4f0 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
2b500 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2b510 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b520 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
2b530 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
2b540 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2b550 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
2b560 63 65 70 74 69 6f 6e 20 65 29 0d 0a 20 20 20 20  ception e)..    
2b570 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2b580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b590 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75     TraceOps.Debu
2b5a0 67 41 6e 64 54 72 61 63 65 28 54 72 61 63 65 50  gAndTrace(TraceP
2b5b0 72 69 6f 72 69 74 79 2e 48 69 67 68 65 73 74 2c  riority.Highest,
2b5c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b5d0 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43            debugC
2b5e0 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61  allback, traceCa
2b5f0 6c 6c 62 61 63 6b 2c 20 65 2c 20 74 72 61 63 65  llback, e, trace
2b600 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
2b610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b620 20 20 65 72 72 6f 72 20 3d 20 22 46 61 69 6c 65    error = "Faile
2b630 64 20 74 6f 20 63 68 65 63 6b 20 69 6d 61 67 65  d to check image
2b640 20 72 75 6e 74 69 6d 65 20 76 65 72 73 69 6f 6e   runtime version
2b650 2e 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .";..           
2b660 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2b670 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2b680 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
2b690 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2b6a0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
2b6b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2b6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b700 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
2b710 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
2b720 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
2b730 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
2b740 72 69 6e 67 20 47 65 74 49 6e 76 61 72 69 61 6e  ring GetInvarian
2b750 74 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  tName(..        
2b760 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 74 72 61          bool tra
2b770 63 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ce..            
2b780 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
2b790 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2b7a0 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 73 65        return Use
2b7b0 45 66 36 50 72 6f 76 69 64 65 72 28 74 72 61 63  Ef6Provider(trac
2b7c0 65 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20  e) ?..          
2b7d0 20 20 20 20 20 20 20 20 20 20 45 66 36 49 6e 76            Ef6Inv
2b7e0 61 72 69 61 6e 74 4e 61 6d 65 20 3a 20 49 6e 76  ariantName : Inv
2b7f0 61 72 69 61 6e 74 4e 61 6d 65 3b 0d 0a 20 20 20  ariantName;..   
2b800 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2b810 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
2b820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2b860 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
2b870 76 61 74 65 20 62 6f 6f 6c 20 49 73 53 79 73 74  vate bool IsSyst
2b880 65 6d 45 66 36 41 73 73 65 6d 62 6c 79 41 76 61  emEf6AssemblyAva
2b890 69 6c 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20  ilable(..       
2b8a0 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 74 72           bool tr
2b8b0 61 63 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ace..           
2b8c0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
2b8d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2b8e0 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
2b8f0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2b900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b910 20 20 20 69 66 20 28 73 79 73 74 65 6d 45 66 36     if (systemEf6
2b920 41 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c  Assembly == null
2b930 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2b940 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2b950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b960 20 20 73 79 73 74 65 6d 45 66 36 41 73 73 65 6d    systemEf6Assem
2b970 62 6c 79 20 3d 20 41 73 73 65 6d 62 6c 79 2e 52  bly = Assembly.R
2b980 65 66 6c 65 63 74 69 6f 6e 4f 6e 6c 79 4c 6f 61  eflectionOnlyLoa
2b990 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d(..            
2b9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b9b0 53 79 73 74 65 6d 45 66 36 41 73 73 65 6d 62 6c  SystemEf6Assembl
2b9c0 79 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20  yName);..       
2b9d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2b9e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b9f0 20 20 20 20 20 20 69 66 20 28 73 79 73 74 65 6d        if (system
2ba00 45 66 36 41 73 73 65 6d 62 6c 79 20 21 3d 20 6e  Ef6Assembly != n
2ba10 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2ba20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2ba30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ba40 20 20 20 20 20 69 66 20 28 74 72 61 63 65 20 26       if (trace &
2ba50 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  &..             
2ba60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21                 !
2ba70 48 61 73 46 6c 61 67 73 28 50 72 6f 76 69 64 65  HasFlags(Provide
2ba80 72 46 6c 61 67 73 2e 44 69 64 45 66 36 52 65 73  rFlags.DidEf6Res
2ba90 6f 6c 76 65 54 72 61 63 65 2c 20 74 72 75 65 29  olveTrace, true)
2baa0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2bab0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2bac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bad0 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f            TraceO
2bae0 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65  ps.DebugAndTrace
2baf0 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 48  (TracePriority.H
2bb00 69 67 68 65 73 74 2c 0d 0a 20 20 20 20 20 20 20  ighest,..       
2bb10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bb20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61           debugCa
2bb30 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c  llback, traceCal
2bb40 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f  lback, String.Fo
2bb50 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
2bb60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bb70 20 20 20 20 20 20 20 22 45 6e 74 69 74 79 20 46         "Entity F
2bb80 72 61 6d 65 77 6f 72 6b 20 36 20 61 73 73 65 6d  ramework 6 assem
2bb90 62 6c 79 20 77 61 73 20 22 20 2b 0d 0a 20 20 20  bly was " +..   
2bba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bbb0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 72 65               "re
2bbc0 73 6f 6c 76 65 64 20 74 6f 20 7b 30 7d 2e 22 2c  solved to {0}.",
2bbd0 20 46 6f 72 44 69 73 70 6c 61 79 28 0d 0a 20 20   ForDisplay(..  
2bbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bbf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 79                sy
2bc00 73 74 65 6d 45 66 36 41 73 73 65 6d 62 6c 79 2e  stemEf6Assembly.
2bc10 4c 6f 63 61 74 69 6f 6e 29 29 2c 0d 0a 20 20 20  Location)),..   
2bc20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bc30 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2bc40 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a  ceCategory);....
2bc50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bc60 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 76              prov
2bc70 69 64 65 72 46 6c 61 67 73 20 7c 3d 20 50 72 6f  iderFlags |= Pro
2bc80 76 69 64 65 72 46 6c 61 67 73 2e 44 69 64 45 66  viderFlags.DidEf
2bc90 36 52 65 73 6f 6c 76 65 54 72 61 63 65 3b 0d 0a  6ResolveTrace;..
2bca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bcb0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2bcc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bcd0 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
2bce0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2bcf0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2bd00 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2bd10 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
2bd20 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
2bd30 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2bd40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
2bd50 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
2bd60 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2bd70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bd80 69 66 20 28 74 72 61 63 65 20 26 26 0d 0a 20 20  if (trace &&..  
2bd90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bda0 20 20 21 48 61 73 46 6c 61 67 73 28 50 72 6f 76    !HasFlags(Prov
2bdb0 69 64 65 72 46 6c 61 67 73 2e 44 69 64 45 66 36  iderFlags.DidEf6
2bdc0 52 65 73 6f 6c 76 65 54 72 61 63 65 2c 20 74 72  ResolveTrace, tr
2bdd0 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ue))..          
2bde0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2bdf0 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
2be00 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
2be10 61 63 65 28 54 72 61 63 65 50 72 69 6f 72 69 74  ace(TracePriorit
2be20 79 2e 48 69 67 68 65 73 74 2c 0d 0a 20 20 20 20  y.Highest,..    
2be30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2be40 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63      debugCallbac
2be50 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b  k, traceCallback
2be60 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2be70 20 20 20 20 20 20 20 20 20 20 20 22 45 6e 74 69             "Enti
2be80 74 79 20 46 72 61 6d 65 77 6f 72 6b 20 36 20 61  ty Framework 6 a
2be90 73 73 65 6d 62 6c 79 20 77 61 73 20 6e 6f 74 20  ssembly was not 
2bea0 72 65 73 6f 6c 76 65 64 2e 22 2c 0d 0a 20 20 20  resolved.",..   
2beb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bec0 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
2bed0 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
2bee0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 76              prov
2bef0 69 64 65 72 46 6c 61 67 73 20 7c 3d 20 50 72 6f  iderFlags |= Pro
2bf00 76 69 64 65 72 46 6c 61 67 73 2e 44 69 64 45 66  viderFlags.DidEf
2bf10 36 52 65 73 6f 6c 76 65 54 72 61 63 65 3b 0d 0a  6ResolveTrace;..
2bf20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bf30 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2bf40 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
2bf50 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
2bf60 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
2bf70 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
2bf80 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
2bf90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bfa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bfb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bfc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2bfd0 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
2bfe0 69 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f  ion Public Metho
2bff0 64 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ds..            
2c000 70 75 62 6c 69 63 20 62 6f 6f 6c 20 48 61 73 46  public bool HasF
2c010 6c 61 67 73 28 0d 0a 20 20 20 20 20 20 20 20 20  lags(..         
2c020 20 20 20 20 20 20 20 49 6e 73 74 61 6c 6c 46 6c         InstallFl
2c030 61 67 73 20 68 61 73 46 6c 61 67 73 2c 0d 0a 20  ags hasFlags,.. 
2c040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
2c050 6f 6f 6c 20 61 6c 6c 0d 0a 20 20 20 20 20 20 20  ool all..       
2c060 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
2c070 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2c080 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61             if (a
2c090 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2c0a0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2c0b0 28 28 69 6e 73 74 61 6c 6c 46 6c 61 67 73 20 26  ((installFlags &
2c0c0 20 68 61 73 46 6c 61 67 73 29 20 3d 3d 20 68 61   hasFlags) == ha
2c0d0 73 46 6c 61 67 73 29 3b 0d 0a 20 20 20 20 20 20  sFlags);..      
2c0e0 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a            else..
2c0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c100 20 20 20 20 72 65 74 75 72 6e 20 28 28 69 6e 73      return ((ins
2c110 74 61 6c 6c 46 6c 61 67 73 20 26 20 68 61 73 46  tallFlags & hasF
2c120 6c 61 67 73 29 20 21 3d 20 49 6e 73 74 61 6c 6c  lags) != Install
2c130 46 6c 61 67 73 2e 4e 6f 6e 65 29 3b 0d 0a 20 20  Flags.None);..  
2c140 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2c150 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
2c160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2c1a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
2c1b0 62 6c 69 63 20 62 6f 6f 6c 20 48 61 73 46 6c 61  blic bool HasFla
2c1c0 67 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gs(..           
2c1d0 20 20 20 20 20 50 72 6f 76 69 64 65 72 46 6c 61       ProviderFla
2c1e0 67 73 20 68 61 73 46 6c 61 67 73 2c 0d 0a 20 20  gs hasFlags,..  
2c1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
2c200 6f 6c 20 61 6c 6c 0d 0a 20 20 20 20 20 20 20 20  ol all..        
2c210 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2c220 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2c230 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 6c            if (al
2c240 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2c250 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
2c260 28 70 72 6f 76 69 64 65 72 46 6c 61 67 73 20 26  (providerFlags &
2c270 20 68 61 73 46 6c 61 67 73 29 20 3d 3d 20 68 61   hasFlags) == ha
2c280 73 46 6c 61 67 73 29 3b 0d 0a 20 20 20 20 20 20  sFlags);..      
2c290 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a            else..
2c2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c2b0 20 20 20 20 72 65 74 75 72 6e 20 28 28 70 72 6f      return ((pro
2c2c0 76 69 64 65 72 46 6c 61 67 73 20 26 20 68 61 73  viderFlags & has
2c2d0 46 6c 61 67 73 29 20 21 3d 20 50 72 6f 76 69 64  Flags) != Provid
2c2e0 65 72 46 6c 61 67 73 2e 4e 6f 6e 65 29 3b 0d 0a  erFlags.None);..
2c2f0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2c300 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2c310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c350 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2c360 70 75 62 6c 69 63 20 62 6f 6f 6c 20 49 73 4c 69  public bool IsLi
2c370 6e 71 53 75 70 70 6f 72 74 65 64 28 0d 0a 20 20  nqSupported(..  
2c380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
2c390 6f 6c 20 74 72 61 63 65 0d 0a 20 20 20 20 20 20  ol trace..      
2c3a0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
2c3b0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2c3c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2c3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c3e0 2f 2f 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 74  // NOTE: Check t
2c3f0 6f 20 73 65 65 20 69 66 20 74 68 65 20 63 61 6c  o see if the cal
2c400 6c 65 72 20 68 61 73 20 66 6f 72 63 65 64 20 4c  ler has forced L
2c410 49 4e 51 20 73 75 70 70 6f 72 74 20 74 6f 0d 0a  INQ support to..
2c420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c430 2f 2f 20 20 20 20 20 20 20 62 65 20 65 6e 61 62  //       be enab
2c440 6c 65 64 20 2d 4f 52 2d 20 64 69 73 61 62 6c 65  led -OR- disable
2c450 64 2c 20 74 68 65 72 65 62 79 20 62 79 70 61 73  d, thereby bypas
2c460 73 69 6e 67 20 74 68 65 20 6e 65 65 64 0d 0a 20  sing the need.. 
2c470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2c480 2f 20 20 20 20 20 20 20 66 6f 72 20 22 61 75 74  /       for "aut
2c490 6f 6d 61 74 69 63 20 64 65 74 65 63 74 69 6f 6e  omatic detection
2c4a0 22 20 62 79 20 74 68 69 73 20 6d 65 74 68 6f 64  " by this method
2c4b0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2c4c0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2c4d0 20 20 20 20 20 20 20 69 66 20 28 48 61 73 46 6c         if (HasFl
2c4e0 61 67 73 28 50 72 6f 76 69 64 65 72 46 6c 61 67  ags(ProviderFlag
2c4f0 73 2e 46 6f 72 63 65 4c 69 6e 71 45 6e 61 62 6c  s.ForceLinqEnabl
2c500 65 64 2c 20 74 72 75 65 29 29 0d 0a 20 20 20 20  ed, true))..    
2c510 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2c520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c530 20 20 20 69 66 20 28 74 72 61 63 65 20 26 26 0d     if (trace &&.
2c540 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c550 20 20 20 20 20 20 20 20 20 21 48 61 73 46 6c 61           !HasFla
2c560 67 73 28 50 72 6f 76 69 64 65 72 46 6c 61 67 73  gs(ProviderFlags
2c570 2e 44 69 64 4c 69 6e 71 46 6f 72 63 65 54 72 61  .DidLinqForceTra
2c580 63 65 2c 20 74 72 75 65 29 29 0d 0a 20 20 20 20  ce, true))..    
2c590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c5a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2c5b0 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
2c5c0 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
2c5d0 65 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e  e(TracePriority.
2c5e0 4d 65 64 69 75 6d 48 69 67 68 2c 0d 0a 20 20 20  MediumHigh,..   
2c5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c600 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61           debugCa
2c610 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c  llback, traceCal
2c620 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
2c630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c640 20 20 20 20 22 46 6f 72 63 65 64 20 74 6f 20 65      "Forced to e
2c650 6e 61 62 6c 65 20 73 75 70 70 6f 72 74 20 66 6f  nable support fo
2c660 72 20 5c 22 4c 69 6e 71 5c 22 2e 22 2c 0d 0a 20  r \"Linq\".",.. 
2c670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c680 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2c690 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
2c6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c6b0 20 20 20 20 20 20 70 72 6f 76 69 64 65 72 46 6c        providerFl
2c6c0 61 67 73 20 7c 3d 20 50 72 6f 76 69 64 65 72 46  ags |= ProviderF
2c6d0 6c 61 67 73 2e 44 69 64 4c 69 6e 71 46 6f 72 63  lags.DidLinqForc
2c6e0 65 54 72 61 63 65 3b 0d 0a 20 20 20 20 20 20 20  eTrace;..       
2c6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2c700 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c710 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
2c720 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
2c730 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2c740 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
2c750 48 61 73 46 6c 61 67 73 28 50 72 6f 76 69 64 65  HasFlags(Provide
2c760 72 46 6c 61 67 73 2e 46 6f 72 63 65 4c 69 6e 71  rFlags.ForceLinq
2c770 44 69 73 61 62 6c 65 64 2c 20 74 72 75 65 29 29  Disabled, true))
2c780 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c790 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2c7a0 20 20 20 20 20 20 20 20 20 69 66 20 28 74 72 61           if (tra
2c7b0 63 65 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20  ce &&..         
2c7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21                 !
2c7d0 48 61 73 46 6c 61 67 73 28 50 72 6f 76 69 64 65  HasFlags(Provide
2c7e0 72 46 6c 61 67 73 2e 44 69 64 4c 69 6e 71 46 6f  rFlags.DidLinqFo
2c7f0 72 63 65 54 72 61 63 65 2c 20 74 72 75 65 29 29  rceTrace, true))
2c800 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c810 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2c820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c830 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
2c840 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72 69  ndTrace(TracePri
2c850 6f 72 69 74 79 2e 4d 65 64 69 75 6d 48 69 67 68  ority.MediumHigh
2c860 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2c870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
2c880 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72  ebugCallback, tr
2c890 61 63 65 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20  aceCallback,..  
2c8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c8b0 20 20 20 20 20 20 20 20 20 20 22 46 6f 72 63 65            "Force
2c8c0 64 20 74 6f 20 64 69 73 61 62 6c 65 20 73 75 70  d to disable sup
2c8d0 70 6f 72 74 20 66 6f 72 20 5c 22 4c 69 6e 71 5c  port for \"Linq\
2c8e0 22 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ".",..          
2c8f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c900 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
2c910 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2c920 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f               pro
2c930 76 69 64 65 72 46 6c 61 67 73 20 7c 3d 20 50 72  viderFlags |= Pr
2c940 6f 76 69 64 65 72 46 6c 61 67 73 2e 44 69 64 4c  oviderFlags.DidL
2c950 69 6e 71 46 6f 72 63 65 54 72 61 63 65 3b 0d 0a  inqForceTrace;..
2c960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c970 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2c980 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2c990 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
2c9a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2c9b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c9c0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
2c9d0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 52 65       // NOTE: Re
2c9e0 74 75 72 6e 20 6e 6f 6e 2d 7a 65 72 6f 20 69 66  turn non-zero if
2c9f0 20 74 68 65 20 53 79 73 74 65 6d 2e 44 61 74 61   the System.Data
2ca00 2e 53 51 4c 69 74 65 2e 4c 69 6e 71 0d 0a 20 20  .SQLite.Linq..  
2ca10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2ca20 20 20 20 20 20 20 20 61 73 73 65 6d 62 6c 79 20         assembly 
2ca30 73 68 6f 75 6c 64 20 62 65 20 70 72 6f 63 65 73  should be proces
2ca40 73 65 64 20 64 75 72 69 6e 67 20 74 68 65 20 69  sed during the i
2ca50 6e 73 74 61 6c 6c 2e 0d 0a 20 20 20 20 20 20 20  nstall...       
2ca60 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
2ca70 20 20 49 66 20 74 68 65 20 74 61 72 67 65 74 20    If the target 
2ca80 69 73 20 56 69 73 75 61 6c 20 53 74 75 64 69 6f  is Visual Studio
2ca90 20 32 30 30 35 2c 20 74 68 69 73 20 6d 75 73 74   2005, this must
2caa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cab0 20 20 2f 2f 20 20 20 20 20 20 20 72 65 74 75 72    //       retur
2cac0 6e 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 20  n zero...       
2cad0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2cae0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2caf0 75 72 6e 20 21 6e 6f 4e 65 74 46 78 33 35 20 7c  urn !noNetFx35 |
2cb00 7c 20 21 6e 6f 4e 65 74 46 78 34 30 20 7c 7c 20  | !noNetFx40 || 
2cb10 21 6e 6f 4e 65 74 46 78 34 35 20 7c 7c 0d 0a 20  !noNetFx45 ||.. 
2cb20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cb30 20 20 20 21 6e 6f 4e 65 74 46 78 34 35 31 20 7c     !noNetFx451 |
2cb40 7c 20 21 6e 6f 4e 65 74 46 78 34 35 32 20 7c 7c  | !noNetFx452 ||
2cb50 20 21 6e 6f 4e 65 74 46 78 34 36 20 7c 7c 0d 0a   !noNetFx46 ||..
2cb60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cb70 20 20 20 20 21 6e 6f 4e 65 74 46 78 34 36 31 20      !noNetFx461 
2cb80 7c 7c 20 21 6e 6f 4e 65 74 46 78 34 36 32 20 7c  || !noNetFx462 |
2cb90 7c 20 21 6e 6f 4e 65 74 46 78 34 37 20 7c 7c 0d  | !noNetFx47 ||.
2cba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cbb0 20 20 20 20 20 21 6e 6f 4e 65 74 46 78 34 37 31       !noNetFx471
2cbc0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2cbd0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2cbe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc20 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
2cc30 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 49     public bool I
2cc40 73 45 66 36 53 75 70 70 6f 72 74 65 64 28 0d 0a  sEf6Supported(..
2cc50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cc60 62 6f 6f 6c 20 74 72 61 63 65 0d 0a 20 20 20 20  bool trace..    
2cc70 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
2cc80 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2cc90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2cca0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ccb0 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 68 65 63 6b    // NOTE: Check
2ccc0 20 74 6f 20 73 65 65 20 69 66 20 74 68 65 20 63   to see if the c
2ccd0 61 6c 6c 65 72 20 68 61 73 20 66 6f 72 63 65 64  aller has forced
2cce0 20 45 46 36 20 73 75 70 70 6f 72 74 20 74 6f 0d   EF6 support to.
2ccf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cd00 20 2f 2f 20 20 20 20 20 20 20 62 65 20 65 6e 61   //       be ena
2cd10 62 6c 65 64 20 2d 4f 52 2d 20 64 69 73 61 62 6c  bled -OR- disabl
2cd20 65 64 2c 20 74 68 65 72 65 62 79 20 62 79 70 61  ed, thereby bypa
2cd30 73 73 69 6e 67 20 74 68 65 20 6e 65 65 64 0d 0a  ssing the need..
2cd40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cd50 2f 2f 20 20 20 20 20 20 20 66 6f 72 20 22 61 75  //       for "au
2cd60 74 6f 6d 61 74 69 63 20 64 65 74 65 63 74 69 6f  tomatic detectio
2cd70 6e 22 20 62 79 20 74 68 69 73 20 6d 65 74 68 6f  n" by this metho
2cd80 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
2cd90 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2cda0 20 20 20 20 20 20 20 20 69 66 20 28 48 61 73 46          if (HasF
2cdb0 6c 61 67 73 28 50 72 6f 76 69 64 65 72 46 6c 61  lags(ProviderFla
2cdc0 67 73 2e 46 6f 72 63 65 45 66 36 45 6e 61 62 6c  gs.ForceEf6Enabl
2cdd0 65 64 2c 20 74 72 75 65 29 29 0d 0a 20 20 20 20  ed, true))..    
2cde0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2cdf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ce00 20 20 20 69 66 20 28 74 72 61 63 65 20 26 26 0d     if (trace &&.
2ce10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ce20 20 20 20 20 20 20 20 20 20 21 48 61 73 46 6c 61           !HasFla
2ce30 67 73 28 50 72 6f 76 69 64 65 72 46 6c 61 67 73  gs(ProviderFlags
2ce40 2e 44 69 64 45 66 36 46 6f 72 63 65 54 72 61 63  .DidEf6ForceTrac
2ce50 65 2c 20 74 72 75 65 29 29 0d 0a 20 20 20 20 20  e, true))..     
2ce60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2ce70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ce80 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f            TraceO
2ce90 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65  ps.DebugAndTrace
2cea0 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4d  (TracePriority.M
2ceb0 65 64 69 75 6d 48 69 67 68 2c 0d 0a 20 20 20 20  ediumHigh,..    
2cec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ced0 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61 6c          debugCal
2cee0 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c  lback, traceCall
2cef0 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
2cf00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cf10 20 20 20 22 46 6f 72 63 65 64 20 74 6f 20 65 6e     "Forced to en
2cf20 61 62 6c 65 20 73 75 70 70 6f 72 74 20 66 6f 72  able support for
2cf30 20 5c 22 45 66 36 5c 22 2e 22 2c 0d 0a 20 20 20   \"Ef6\".",..   
2cf40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cf50 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2cf60 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
2cf70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cf80 20 20 20 20 70 72 6f 76 69 64 65 72 46 6c 61 67      providerFlag
2cf90 73 20 7c 3d 20 50 72 6f 76 69 64 65 72 46 6c 61  s |= ProviderFla
2cfa0 67 73 2e 44 69 64 45 66 36 46 6f 72 63 65 54 72  gs.DidEf6ForceTr
2cfb0 61 63 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ace;..          
2cfc0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2cfd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cfe0 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
2cff0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d000 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2d010 20 20 20 20 65 6c 73 65 20 69 66 20 28 48 61 73      else if (Has
2d020 46 6c 61 67 73 28 50 72 6f 76 69 64 65 72 46 6c  Flags(ProviderFl
2d030 61 67 73 2e 46 6f 72 63 65 45 66 36 44 69 73 61  ags.ForceEf6Disa
2d040 62 6c 65 64 2c 20 74 72 75 65 29 29 0d 0a 20 20  bled, true))..  
2d050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2d060 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d070 20 20 20 20 20 69 66 20 28 74 72 61 63 65 20 26       if (trace &
2d080 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  &..             
2d090 20 20 20 20 20 20 20 20 20 20 20 21 48 61 73 46             !HasF
2d0a0 6c 61 67 73 28 50 72 6f 76 69 64 65 72 46 6c 61  lags(ProviderFla
2d0b0 67 73 2e 44 69 64 45 66 36 46 6f 72 63 65 54 72  gs.DidEf6ForceTr
2d0c0 61 63 65 2c 20 74 72 75 65 29 29 0d 0a 20 20 20  ace, true))..   
2d0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d0e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2d0f0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
2d100 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61  eOps.DebugAndTra
2d110 63 65 28 54 72 61 63 65 50 72 69 6f 72 69 74 79  ce(TracePriority
2d120 2e 4d 65 64 69 75 6d 48 69 67 68 2c 0d 0a 20 20  .MediumHigh,..  
2d130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d140 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43            debugC
2d150 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61  allback, traceCa
2d160 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
2d170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d180 20 20 20 20 20 22 46 6f 72 63 65 64 20 74 6f 20       "Forced to 
2d190 64 69 73 61 62 6c 65 20 73 75 70 70 6f 72 74 20  disable support 
2d1a0 66 6f 72 20 5c 22 45 66 36 5c 22 2e 22 2c 0d 0a  for \"Ef6\".",..
2d1b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d1c0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2d1d0 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2d1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d1f0 20 20 20 20 20 20 20 70 72 6f 76 69 64 65 72 46         providerF
2d200 6c 61 67 73 20 7c 3d 20 50 72 6f 76 69 64 65 72  lags |= Provider
2d210 46 6c 61 67 73 2e 44 69 64 45 66 36 46 6f 72 63  Flags.DidEf6Forc
2d220 65 54 72 61 63 65 3b 0d 0a 20 20 20 20 20 20 20  eTrace;..       
2d230 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2d240 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d250 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
2d260 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se;..           
2d270 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2d280 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2d290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2d2a0 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e 20 6e 6f   NOTE: Return no
2d2b0 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 53 79  n-zero if the Sy
2d2c0 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
2d2d0 2e 45 46 36 0d 0a 20 20 20 20 20 20 20 20 20 20  .EF6..          
2d2e0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61        //       a
2d2f0 73 73 65 6d 62 6c 79 20 73 68 6f 75 6c 64 20 62  ssembly should b
2d300 65 20 70 72 6f 63 65 73 73 65 64 20 64 75 72 69  e processed duri
2d310 6e 67 20 74 68 65 20 69 6e 73 74 61 6c 6c 2e 0d  ng the install..
2d320 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d330 20 2f 2f 20 20 20 20 20 20 20 49 66 20 74 68 65   //       If the
2d340 20 74 61 72 67 65 74 20 69 73 20 56 69 73 75 61   target is Visua
2d350 6c 20 53 74 75 64 69 6f 20 32 30 30 35 20 6f 72  l Studio 2005 or
2d360 20 56 69 73 75 61 6c 0d 0a 20 20 20 20 20 20 20   Visual..       
2d370 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
2d380 20 20 53 74 75 64 69 6f 20 32 30 30 38 2c 20 74    Studio 2008, t
2d390 68 69 73 20 6d 75 73 74 20 72 65 74 75 72 6e 20  his must return 
2d3a0 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 20 20 20  zero...         
2d3b0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
2d3c0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e             if (n
2d3d0 6f 4e 65 74 46 78 34 30 20 26 26 0d 0a 20 20 20  oNetFx40 &&..   
2d3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d3f0 20 6e 6f 4e 65 74 46 78 34 35 20 26 26 20 6e 6f   noNetFx45 && no
2d400 4e 65 74 46 78 34 35 31 20 26 26 20 6e 6f 4e 65  NetFx451 && noNe
2d410 74 46 78 34 35 32 20 26 26 20 6e 6f 4e 65 74 46  tFx452 && noNetF
2d420 78 34 36 20 26 26 0d 0a 20 20 20 20 20 20 20 20  x46 &&..        
2d430 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 4e 65              noNe
2d440 74 46 78 34 36 31 20 26 26 20 6e 6f 4e 65 74 46  tFx461 && noNetF
2d450 78 34 36 32 20 26 26 20 6e 6f 4e 65 74 46 78 34  x462 && noNetFx4
2d460 37 20 26 26 20 6e 6f 4e 65 74 46 78 34 37 31 29  7 && noNetFx471)
2d470 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d480 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2d490 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2d4a0 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
2d4b0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2d4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2d4d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d4e0 20 2f 2f 20 4e 4f 54 45 3a 20 41 6c 73 6f 2c 20   // NOTE: Also, 
2d4f0 69 66 20 74 68 65 20 45 46 36 20 63 6f 72 65 20  if the EF6 core 
2d500 61 73 73 65 6d 62 6c 79 20 69 73 20 75 6e 61 76  assembly is unav
2d510 61 69 6c 61 62 6c 65 2c 20 74 68 69 73 0d 0a 20  ailable, this.. 
2d520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2d530 2f 20 20 20 20 20 20 20 6d 75 73 74 20 72 65 74  /       must ret
2d540 75 72 6e 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20  urn zero...     
2d550 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2d560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2d570 66 20 28 21 49 73 53 79 73 74 65 6d 45 66 36 41  f (!IsSystemEf6A
2d580 73 73 65 6d 62 6c 79 41 76 61 69 6c 61 62 6c 65  ssemblyAvailable
2d590 28 74 72 61 63 65 29 29 0d 0a 20 20 20 20 20 20  (trace))..      
2d5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2d5b0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
2d5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2d5d0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2d5e0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69 6e 61     // NOTE: Fina
2d5f0 6c 6c 79 2c 20 69 66 20 74 68 65 20 45 46 36 20  lly, if the EF6 
2d600 63 6f 72 65 20 61 73 73 65 6d 62 6c 79 20 69 73  core assembly is
2d610 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 0d 0a   not available..
2d620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d630 2f 2f 20 20 20 20 20 20 20 67 6c 6f 62 61 6c 6c  //       globall
2d640 79 20 5b 61 6e 64 20 74 68 69 73 20 69 73 20 61  y [and this is a
2d650 20 72 65 71 75 69 72 65 6d 65 6e 74 20 66 6f 72   requirement for
2d660 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20   the current..  
2d670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2d680 20 20 20 20 20 20 20 69 6e 73 74 61 6c 6c 5d 2c         install],
2d690 20 72 65 74 75 72 6e 20 7a 65 72 6f 2e 0d 0a 20   return zero... 
2d6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2d6b0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2d6c0 20 20 20 72 65 74 75 72 6e 20 48 61 73 46 6c 61     return HasFla
2d6d0 67 73 28 50 72 6f 76 69 64 65 72 46 6c 61 67 73  gs(ProviderFlags
2d6e0 2e 53 79 73 74 65 6d 45 66 36 4d 75 73 74 42 65  .SystemEf6MustBe
2d6f0 47 6c 6f 62 61 6c 2c 20 74 72 75 65 29 20 3f 0d  Global, true) ?.
2d700 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d710 20 20 20 20 20 49 73 53 79 73 74 65 6d 45 66 36       IsSystemEf6
2d720 41 73 73 65 6d 62 6c 79 47 6c 6f 62 61 6c 28 29  AssemblyGlobal()
2d730 20 3a 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   : true;..      
2d740 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2d750 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2d760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2d7a0 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
2d7b0 65 20 62 6f 6f 6c 20 49 73 45 66 36 41 73 73 65  e bool IsEf6Asse
2d7c0 6d 62 6c 79 47 6c 6f 62 61 6c 28 29 0d 0a 20 20  mblyGlobal()..  
2d7d0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2d7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2d7f0 28 65 66 36 41 73 73 65 6d 62 6c 79 4e 61 6d 65  (ef6AssemblyName
2d800 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
2d810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2d820 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
2d830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d840 41 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c  Assembly assembl
2d850 79 20 3d 20 41 73 73 65 6d 62 6c 79 2e 52 65 66  y = Assembly.Ref
2d860 6c 65 63 74 69 6f 6e 4f 6e 6c 79 4c 6f 61 64 28  lectionOnlyLoad(
2d870 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d880 20 20 20 20 20 20 65 66 36 41 73 73 65 6d 62 6c        ef6Assembl
2d890 79 4e 61 6d 65 2e 54 6f 53 74 72 69 6e 67 28 29  yName.ToString()
2d8a0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2d8b0 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 61 73        return (as
2d8c0 73 65 6d 62 6c 79 20 21 3d 20 6e 75 6c 6c 29 20  sembly != null) 
2d8d0 26 26 20 61 73 73 65 6d 62 6c 79 2e 47 6c 6f 62  && assembly.Glob
2d8e0 61 6c 41 73 73 65 6d 62 6c 79 43 61 63 68 65 3b  alAssemblyCache;
2d8f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2d900 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2d910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d950 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
2d960 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 55 73    public bool Us
2d970 65 45 66 36 50 72 6f 76 69 64 65 72 28 0d 0a 20  eEf6Provider(.. 
2d980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
2d990 6f 6f 6c 20 74 72 61 63 65 0d 0a 20 20 20 20 20  ool trace..     
2d9a0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
2d9b0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2d9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2d9d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d9e0 20 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 63 61 6e   // NOTE: We can
2d9f0 6e 6f 74 20 75 73 65 20 74 68 65 20 45 46 36 20  not use the EF6 
2da00 61 73 73 65 6d 62 6c 79 20 61 73 20 74 68 65 20  assembly as the 
2da10 70 72 6f 76 69 64 65 72 20 69 66 20 69 74 0d 0a  provider if it..
2da20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2da30 2f 2f 20 20 20 20 20 20 20 69 73 20 6e 6f 74 20  //       is not 
2da40 73 75 70 70 6f 72 74 65 64 20 62 79 20 74 68 69  supported by thi
2da50 73 20 69 6e 73 74 61 6c 6c 61 74 69 6f 6e 2e 0d  s installation..
2da60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2da70 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
2da80 20 20 20 20 20 69 66 20 28 21 49 73 45 66 36 53       if (!IsEf6S
2da90 75 70 70 6f 72 74 65 64 28 74 72 61 63 65 29 29  upported(trace))
2daa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2dab0 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
2dac0 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
2dad0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
2dae0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
2daf0 54 45 3a 20 46 6f 72 20 74 68 65 20 45 46 36 20  TE: For the EF6 
2db00 61 73 73 65 6d 62 6c 79 20 74 6f 20 62 65 20 75  assembly to be u
2db10 73 61 62 6c 65 20 61 73 20 61 20 70 72 6f 76 69  sable as a provi
2db20 64 65 72 20 69 6e 0d 0a 20 20 20 20 20 20 20 20  der in..        
2db30 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
2db40 20 74 68 65 20 6d 61 63 68 69 6e 65 20 63 6f 6e   the machine con
2db50 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2c  figuration file,
2db60 20 69 74 20 6d 75 73 74 20 62 65 20 69 6e 20 74   it must be in t
2db70 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  he..            
2db80 20 20 20 20 2f 2f 20 20 20 20 20 20 20 67 6c 6f      //       glo
2db90 62 61 6c 20 61 73 73 65 6d 62 6c 79 20 63 61 63  bal assembly cac
2dba0 68 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  he...           
2dbb0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2dbc0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2dbd0 49 73 45 66 36 41 73 73 65 6d 62 6c 79 47 6c 6f  IsEf6AssemblyGlo
2dbe0 62 61 6c 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  bal();..        
2dbf0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2dc00 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2dc10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc40 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2dc50 20 20 20 20 20 20 20 20 2f 2a 20 52 45 51 55 49          /* REQUI
2dc60 52 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  RED */..        
2dc70 20 20 20 20 70 75 62 6c 69 63 20 41 73 73 65 6d      public Assem
2dc80 62 6c 79 4e 61 6d 65 20 47 65 74 43 6f 72 65 41  blyName GetCoreA
2dc90 73 73 65 6d 62 6c 79 4e 61 6d 65 28 0d 0a 20 20  ssemblyName(..  
2dca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
2dcb0 6f 6c 20 74 72 61 63 65 20 2f 2a 20 4e 4f 54 20  ol trace /* NOT 
2dcc0 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  USED */..       
2dcd0 20 20 20 20 20 20 20 20 20 29 20 2f 2a 20 74 68           ) /* th
2dce0 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
2dcf0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2dd00 20 20 20 20 20 20 20 69 66 20 28 63 6f 72 65 41         if (coreA
2dd10 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 3d 20 6e  ssemblyName == n
2dd20 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2dd30 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2dd40 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 72               cor
2dd50 65 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20  eAssemblyName = 
2dd60 41 73 73 65 6d 62 6c 79 4e 61 6d 65 2e 47 65 74  AssemblyName.Get
2dd70 41 73 73 65 6d 62 6c 79 4e 61 6d 65 28 0d 0a 20  AssemblyName(.. 
2dd80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dd90 20 20 20 20 20 20 20 43 6f 72 65 46 69 6c 65 4e         CoreFileN
2dda0 61 6d 65 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  ame); /* throw *
2ddb0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2ddc0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2ddd0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63          return c
2dde0 6f 72 65 41 73 73 65 6d 62 6c 79 4e 61 6d 65 3b  oreAssemblyName;
2ddf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2de00 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2de10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2de20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2de30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2de40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2de50 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
2de60 20 20 2f 2a 20 4f 50 54 49 4f 4e 41 4c 20 2a 2f    /* OPTIONAL */
2de70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
2de80 62 6c 69 63 20 41 73 73 65 6d 62 6c 79 4e 61 6d  blic AssemblyNam
2de90 65 20 47 65 74 4c 69 6e 71 41 73 73 65 6d 62 6c  e GetLinqAssembl
2dea0 79 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  yName(..        
2deb0 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 74 72 61          bool tra
2dec0 63 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ce..            
2ded0 20 20 20 20 29 20 2f 2a 20 74 68 72 6f 77 20 2a      ) /* throw *
2dee0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  /..            {
2def0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2df00 20 20 69 66 20 28 49 73 4c 69 6e 71 53 75 70 70    if (IsLinqSupp
2df10 6f 72 74 65 64 28 74 72 61 63 65 29 20 26 26 20  orted(trace) && 
2df20 28 6c 69 6e 71 41 73 73 65 6d 62 6c 79 4e 61 6d  (linqAssemblyNam
2df30 65 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20  e == null))..   
2df40 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2df50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2df60 20 20 20 20 6c 69 6e 71 41 73 73 65 6d 62 6c 79      linqAssembly
2df70 4e 61 6d 65 20 3d 20 41 73 73 65 6d 62 6c 79 4e  Name = AssemblyN
2df80 61 6d 65 2e 47 65 74 41 73 73 65 6d 62 6c 79 4e  ame.GetAssemblyN
2df90 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
2dfa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4c 69                Li
2dfb0 6e 71 46 69 6c 65 4e 61 6d 65 29 3b 20 2f 2a 20  nqFileName); /* 
2dfc0 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
2dfd0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2dfe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2dff0 65 74 75 72 6e 20 6c 69 6e 71 41 73 73 65 6d 62  eturn linqAssemb
2e000 6c 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  lyName;..       
2e010 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2e020 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2e030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e060 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2e070 20 20 20 20 20 20 20 20 20 2f 2a 20 4f 50 54 49           /* OPTI
2e080 4f 4e 41 4c 20 2a 2f 0d 0a 20 20 20 20 20 20 20  ONAL */..       
2e090 20 20 20 20 20 70 75 62 6c 69 63 20 41 73 73 65       public Asse
2e0a0 6d 62 6c 79 4e 61 6d 65 20 47 65 74 45 66 36 41  mblyName GetEf6A
2e0b0 73 73 65 6d 62 6c 79 4e 61 6d 65 28 0d 0a 20 20  ssemblyName(..  
2e0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
2e0d0 6f 6c 20 74 72 61 63 65 0d 0a 20 20 20 20 20 20  ol trace..      
2e0e0 20 20 20 20 20 20 20 20 20 20 29 20 2f 2a 20 74            ) /* t
2e0f0 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
2e100 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2e110 20 20 20 20 20 20 20 20 69 66 20 28 49 73 45 66          if (IsEf
2e120 36 53 75 70 70 6f 72 74 65 64 28 74 72 61 63 65  6Supported(trace
2e130 29 20 26 26 20 28 65 66 36 41 73 73 65 6d 62 6c  ) && (ef6Assembl
2e140 79 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 29 0d  yName == null)).
2e150 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e160 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2e170 20 20 20 20 20 20 20 20 65 66 36 41 73 73 65 6d          ef6Assem
2e180 62 6c 79 4e 61 6d 65 20 3d 20 41 73 73 65 6d 62  blyName = Assemb
2e190 6c 79 4e 61 6d 65 2e 47 65 74 41 73 73 65 6d 62  lyName.GetAssemb
2e1a0 6c 79 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  lyName(..       
2e1b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e1c0 20 45 66 36 46 69 6c 65 4e 61 6d 65 29 3b 20 2f   Ef6FileName); /
2e1d0 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
2e1e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2e1f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e200 20 72 65 74 75 72 6e 20 65 66 36 41 73 73 65 6d   return ef6Assem
2e210 62 6c 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  blyName;..      
2e220 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2e230 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2e240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2e280 20 20 20 20 20 20 20 20 20 20 2f 2a 20 52 45 51            /* REQ
2e290 55 49 52 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20  UIRED */..      
2e2a0 20 20 20 20 20 20 70 75 62 6c 69 63 20 41 73 73        public Ass
2e2b0 65 6d 62 6c 79 4e 61 6d 65 20 47 65 74 44 65 73  emblyName GetDes
2e2c0 69 67 6e 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d  ignerAssemblyNam
2e2d0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2e2e0 20 20 20 20 62 6f 6f 6c 20 74 72 61 63 65 20 2f      bool trace /
2e2f0 2a 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20  * NOT USED */.. 
2e300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
2e310 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
2e320 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2e330 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2e340 28 64 65 73 69 67 6e 65 72 41 73 73 65 6d 62 6c  (designerAssembl
2e350 79 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  yName == null)..
2e360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e370 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2e380 20 20 20 20 20 20 20 64 65 73 69 67 6e 65 72 41         designerA
2e390 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20 41 73  ssemblyName = As
2e3a0 73 65 6d 62 6c 79 4e 61 6d 65 2e 47 65 74 41 73  semblyName.GetAs
2e3b0 73 65 6d 62 6c 79 4e 61 6d 65 28 0d 0a 20 20 20  semblyName(..   
2e3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e3d0 20 20 20 20 20 44 65 73 69 67 6e 65 72 46 69 6c       DesignerFil
2e3e0 65 4e 61 6d 65 29 3b 20 2f 2a 20 74 68 72 6f 77  eName); /* throw
2e3f0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
2e400 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2e410 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2e420 20 64 65 73 69 67 6e 65 72 41 73 73 65 6d 62 6c   designerAssembl
2e430 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  yName;..        
2e440 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2e450 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2e460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e490 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2e4a0 20 20 20 20 20 20 20 20 2f 2a 20 52 45 51 55 49          /* REQUI
2e4b0 52 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  RED */..        
2e4c0 20 20 20 20 70 75 62 6c 69 63 20 41 73 73 65 6d      public Assem
2e4d0 62 6c 79 4e 61 6d 65 20 47 65 74 50 72 6f 76 69  blyName GetProvi
2e4e0 64 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 28  derAssemblyName(
2e4f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e500 20 20 62 6f 6f 6c 20 74 72 61 63 65 0d 0a 20 20    bool trace..  
2e510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 20                ) 
2e520 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
2e530 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2e540 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2e550 72 6e 20 55 73 65 45 66 36 50 72 6f 76 69 64 65  rn UseEf6Provide
2e560 72 28 74 72 61 63 65 29 20 3f 0d 0a 20 20 20 20  r(trace) ?..    
2e570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e580 47 65 74 45 66 36 41 73 73 65 6d 62 6c 79 4e 61  GetEf6AssemblyNa
2e590 6d 65 28 74 72 61 63 65 29 20 3a 20 47 65 74 43  me(trace) : GetC
2e5a0 6f 72 65 41 73 73 65 6d 62 6c 79 4e 61 6d 65 28  oreAssemblyName(
2e5b0 74 72 61 63 65 29 3b 0d 0a 20 20 20 20 20 20 20  trace);..       
2e5c0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2e5d0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2e5e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e610 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2e620 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
2e630 73 74 72 69 6e 67 20 47 65 74 43 6f 6e 66 69 67  string GetConfig
2e640 49 6e 76 61 72 69 61 6e 74 4e 61 6d 65 28 0d 0a  InvariantName(..
2e650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e660 62 6f 6f 6c 20 74 72 61 63 65 0d 0a 20 20 20 20  bool trace..    
2e670 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
2e680 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2e690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2e6a0 74 75 72 6e 20 47 65 74 49 6e 76 61 72 69 61 6e  turn GetInvarian
2e6b0 74 4e 61 6d 65 28 74 72 61 63 65 29 3b 0d 0a 20  tName(trace);.. 
2e6c0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2e6d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
2e6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2e720 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
2e730 75 62 6c 69 63 20 73 74 72 69 6e 67 20 47 65 74  ublic string Get
2e740 50 72 6f 76 69 64 65 72 49 6e 76 61 72 69 61 6e  ProviderInvarian
2e750 74 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  tName(..        
2e760 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 74 72 61          bool tra
2e770 63 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ce..            
2e780 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
2e790 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2e7a0 20 20 20 20 20 20 72 65 74 75 72 6e 20 47 65 74        return Get
2e7b0 49 6e 76 61 72 69 61 6e 74 4e 61 6d 65 28 74 72  InvariantName(tr
2e7c0 61 63 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ace);..         
2e7d0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2e7e0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2e7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e820 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2e830 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
2e840 72 69 6e 67 20 47 65 74 46 61 63 74 6f 72 79 54  ring GetFactoryT
2e850 79 70 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20  ypeName(..      
2e860 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 74            bool t
2e870 72 61 63 65 0d 0a 20 20 20 20 20 20 20 20 20 20  race..          
2e880 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
2e890 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2e8a0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55          return U
2e8b0 73 65 45 66 36 50 72 6f 76 69 64 65 72 28 74 72  seEf6Provider(tr
2e8c0 61 63 65 29 20 3f 0d 0a 20 20 20 20 20 20 20 20  ace) ?..        
2e8d0 20 20 20 20 20 20 20 20 20 20 20 20 45 66 36 46              Ef6F
2e8e0 61 63 74 6f 72 79 54 79 70 65 4e 61 6d 65 20 3a  actoryTypeName :
2e8f0 20 46 61 63 74 6f 72 79 54 79 70 65 4e 61 6d 65   FactoryTypeName
2e900 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2e910 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2e920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e960 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
2e970 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44     public void D
2e980 75 6d 70 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ump(..          
2e990 20 20 20 20 20 20 54 72 61 63 65 43 61 6c 6c 62        TraceCallb
2e9a0 61 63 6b 20 74 72 61 63 65 43 61 6c 6c 62 61 63  ack traceCallbac
2e9b0 6b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  k..             
2e9c0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
2e9d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2e9e0 20 20 20 20 20 69 66 20 28 74 72 61 63 65 43 61       if (traceCa
2e9f0 6c 6c 62 61 63 6b 20 21 3d 20 6e 75 6c 6c 29 0d  llback != null).
2ea00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ea10 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2ea20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c          traceCal
2ea30 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72  lback(String.For
2ea40 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65  mat(NameAndValue
2ea50 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20  Format,..       
2ea60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ea70 20 22 41 73 73 65 6d 62 6c 79 22 2c 20 46 6f 72   "Assembly", For
2ea80 44 69 73 70 6c 61 79 28 61 73 73 65 6d 62 6c 79  Display(assembly
2ea90 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
2eaa0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2eab0 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a  ceCategory);....
2eac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ead0 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
2eae0 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  k(String.Format(
2eaf0 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d  NameAndValueForm
2eb00 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at,..           
2eb10 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4c 6f               "Lo
2eb20 67 46 69 6c 65 4e 61 6d 65 22 2c 20 46 6f 72 44  gFileName", ForD
2eb30 69 73 70 6c 61 79 28 6c 6f 67 46 69 6c 65 4e 61  isplay(logFileNa
2eb40 6d 65 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  me)),..         
2eb50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2eb60 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
2eb70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2eb80 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
2eb90 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ack(String.Forma
2eba0 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f  t(NameAndValueFo
2ebb0 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  rmat,..         
2ebc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2ebd0 52 65 67 69 73 74 72 79 4c 6f 67 46 69 6c 65 4e  RegistryLogFileN
2ebe0 61 6d 65 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  ame",..         
2ebf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46                 F
2ec00 6f 72 44 69 73 70 6c 61 79 28 72 65 67 69 73 74  orDisplay(regist
2ec10 72 79 4c 6f 67 46 69 6c 65 4e 61 6d 65 29 29 2c  ryLogFileName)),
2ec20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ec30 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2ec40 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
2ec50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ec60 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
2ec70 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
2ec80 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
2ec90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2eca0 20 20 20 20 20 20 20 20 20 20 22 44 69 72 65 63            "Direc
2ecb0 74 6f 72 79 22 2c 20 46 6f 72 44 69 73 70 6c 61  tory", ForDispla
2ecc0 79 28 64 69 72 65 63 74 6f 72 79 29 29 2c 0d 0a  y(directory)),..
2ecd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ece0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2ecf0 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2ed00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2ed10 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2ed20 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2ed30 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2ed40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ed50 20 20 20 20 20 20 20 20 22 43 6f 72 65 46 69 6c          "CoreFil
2ed60 65 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c  eName", ForDispl
2ed70 61 79 28 63 6f 72 65 46 69 6c 65 4e 61 6d 65 29  ay(coreFileName)
2ed80 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2ed90 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2eda0 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2edb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2edc0 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
2edd0 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
2ede0 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
2edf0 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2ee00 20 20 20 20 20 20 20 20 20 20 20 20 22 4c 69 6e              "Lin
2ee10 71 46 69 6c 65 4e 61 6d 65 22 2c 20 46 6f 72 44  qFileName", ForD
2ee20 69 73 70 6c 61 79 28 6c 69 6e 71 46 69 6c 65 4e  isplay(linqFileN
2ee30 61 6d 65 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ame)),..        
2ee40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ee50 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
2ee60 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2ee70 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
2ee80 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
2ee90 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
2eea0 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
2eeb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eec0 22 45 66 36 46 69 6c 65 4e 61 6d 65 22 2c 20 46  "Ef6FileName", F
2eed0 6f 72 44 69 73 70 6c 61 79 28 65 66 36 46 69 6c  orDisplay(ef6Fil
2eee0 65 4e 61 6d 65 29 29 2c 0d 0a 20 20 20 20 20 20  eName)),..      
2eef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ef00 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
2ef10 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2ef20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2ef30 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f  llback(String.Fo
2ef40 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75  rmat(NameAndValu
2ef50 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
2ef60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ef70 20 20 22 44 65 73 69 67 6e 65 72 46 69 6c 65 4e    "DesignerFileN
2ef80 61 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c 61 79  ame", ForDisplay
2ef90 28 64 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d  (designerFileNam
2efa0 65 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  e)),..          
2efb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2efc0 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
2efd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2efe0 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
2eff0 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
2f000 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
2f010 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
2f020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 52                "R
2f030 65 67 69 73 74 72 79 56 65 72 73 69 6f 6e 22 2c  egistryVersion",
2f040 20 46 6f 72 44 69 73 70 6c 61 79 28 72 65 67 69   ForDisplay(regi
2f050 73 74 72 79 56 65 72 73 69 6f 6e 29 29 2c 0d 0a  stryVersion)),..
2f060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f070 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2f080 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2f090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2f0a0 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2f0b0 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2f0c0 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2f0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f0e0 20 20 20 20 20 20 20 20 22 43 6f 6e 66 69 67 56          "ConfigV
2f0f0 65 72 73 69 6f 6e 22 2c 20 46 6f 72 44 69 73 70  ersion", ForDisp
2f100 6c 61 79 28 63 6f 6e 66 69 67 56 65 72 73 69 6f  lay(configVersio
2f110 6e 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  n)),..          
2f120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2f130 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
2f140 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f150 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
2f160 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
2f170 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
2f180 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
2f190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 56                "V
2f1a0 73 56 65 72 73 69 6f 6e 53 75 66 66 69 78 22 2c  sVersionSuffix",
2f1b0 20 46 6f 72 44 69 73 70 6c 61 79 28 76 73 56 65   ForDisplay(vsVe
2f1c0 72 73 69 6f 6e 53 75 66 66 69 78 29 29 2c 0d 0a  rsionSuffix)),..
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 44 65 62 75 67 46 6f          "DebugFo
2f260 72 6d 61 74 22 2c 20 46 6f 72 44 69 73 70 6c 61  rmat", ForDispla
2f270 79 28 64 65 62 75 67 46 6f 72 6d 61 74 29 29 2c  y(debugFormat)),
2f280 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f290 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2f2a0 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
2f2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f2c0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
2f2d0 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
2f2e0 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
2f2f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f300 20 20 20 20 20 20 20 20 20 20 22 54 72 61 63 65            "Trace
2f310 46 6f 72 6d 61 74 22 2c 20 46 6f 72 44 69 73 70  Format", ForDisp
2f320 6c 61 79 28 74 72 61 63 65 46 6f 72 6d 61 74 29  lay(traceFormat)
2f330 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2f340 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2f350 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2f360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f370 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
2f380 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
2f390 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
2f3a0 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2f3b0 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 73              "Ins
2f3c0 74 61 6c 6c 46 6c 61 67 73 22 2c 20 46 6f 72 44  tallFlags", ForD
2f3d0 69 73 70 6c 61 79 28 69 6e 73 74 61 6c 6c 46 6c  isplay(installFl
2f3e0 61 67 73 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ags)),..        
2f3f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f400 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
2f410 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2f420 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
2f430 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
2f440 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
2f450 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
2f460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f470 22 50 72 6f 76 69 64 65 72 46 6c 61 67 73 22 2c  "ProviderFlags",
2f480 20 46 6f 72 44 69 73 70 6c 61 79 28 70 72 6f 76   ForDisplay(prov
2f490 69 64 65 72 46 6c 61 67 73 29 29 2c 0d 0a 20 20  iderFlags)),..  
2f4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f4b0 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
2f4c0 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
2f4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2f4e0 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
2f4f0 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
2f500 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
2f510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f520 20 20 20 20 20 20 22 44 65 62 75 67 50 72 69 6f        "DebugPrio
2f530 72 69 74 79 22 2c 20 46 6f 72 44 69 73 70 6c 61  rity", ForDispla
2f540 79 28 64 65 62 75 67 50 72 69 6f 72 69 74 79 29  y(debugPriority)
2f550 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2f560 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2f570 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2f580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f590 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
2f5a0 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
2f5b0 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
2f5c0 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2f5d0 20 20 20 20 20 20 20 20 20 20 20 20 22 54 72 61              "Tra
2f5e0 63 65 50 72 69 6f 72 69 74 79 22 2c 20 46 6f 72  cePriority", For
2f5f0 44 69 73 70 6c 61 79 28 74 72 61 63 65 50 72 69  Display(tracePri
2f600 6f 72 69 74 79 29 29 2c 0d 0a 20 20 20 20 20 20  ority)),..      
2f610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f620 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
2f630 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2f640 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2f650 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f  llback(String.Fo
2f660 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75  rmat(NameAndValu
2f670 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
2f680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f690 20 20 22 50 65 72 55 73 65 72 22 2c 20 46 6f 72    "PerUser", For
2f6a0 44 69 73 70 6c 61 79 28 70 65 72 55 73 65 72 29  Display(perUser)
2f6b0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2f6c0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2f6d0 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2f6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f6f0 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
2f700 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
2f710 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
2f720 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2f730 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 73              "Ins
2f740 74 61 6c 6c 22 2c 20 46 6f 72 44 69 73 70 6c 61  tall", ForDispla
2f750 79 28 69 6e 73 74 61 6c 6c 29 29 2c 0d 0a 20 20  y(install)),..  
2f760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f770 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
2f780 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
2f790 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2f7a0 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
2f7b0 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
2f7c0 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
2f7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f7e0 20 20 20 20 20 20 22 57 6f 77 36 34 22 2c 20 46        "Wow64", F
2f7f0 6f 72 44 69 73 70 6c 61 79 28 77 6f 77 36 34 29  orDisplay(wow64)
2f800 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2f810 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2f820 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2f830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f840 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
2f850 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
2f860 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
2f870 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2f880 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 52              "NoR
2f890 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 22 2c 20  untimeVersion", 
2f8a0 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f 52 75 6e  ForDisplay(noRun
2f8b0 74 69 6d 65 56 65 72 73 69 6f 6e 29 29 2c 0d 0a  timeVersion)),..
2f8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f8d0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2f8e0 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2f8f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2f900 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2f910 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2f920 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2f930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f940 20 20 20 20 20 20 20 20 22 4e 6f 44 65 73 6b 74          "NoDeskt
2f950 6f 70 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  op", ForDisplay(
2f960 6e 6f 44 65 73 6b 74 6f 70 29 29 2c 0d 0a 20 20  noDesktop)),..  
2f970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f980 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
2f990 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
2f9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2f9b0 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
2f9c0 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
2f9d0 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
2f9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f9f0 20 20 20 20 20 20 22 4e 6f 43 6f 6d 70 61 63 74        "NoCompact
2fa00 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f  ", ForDisplay(no
2fa10 43 6f 6d 70 61 63 74 29 29 2c 0d 0a 20 20 20 20  Compact)),..    
2fa20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fa30 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
2fa40 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
2fa50 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2fa60 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
2fa70 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
2fa80 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
2fa90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2faa0 20 20 20 20 22 4e 6f 4e 65 74 46 78 32 30 22 2c      "NoNetFx20",
2fab0 20 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f 4e 65   ForDisplay(noNe
2fac0 74 46 78 32 30 29 29 2c 0d 0a 20 20 20 20 20 20  tFx20)),..      
2fad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fae0 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
2faf0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2fb00 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2fb10 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f  llback(String.Fo
2fb20 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75  rmat(NameAndValu
2fb30 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
2fb40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fb50 20 20 22 4e 6f 4e 65 74 46 78 33 35 22 2c 20 46    "NoNetFx35", F
2fb60 6f 72 44 69 73 70 6c 61 79 28 6e 6f 4e 65 74 46  orDisplay(noNetF
2fb70 78 33 35 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  x35)),..        
2fb80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fb90 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
2fba0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2fbb0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
2fbc0 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
2fbd0 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
2fbe0 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
2fbf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fc00 22 4e 6f 4e 65 74 46 78 34 30 22 2c 20 46 6f 72  "NoNetFx40", For
2fc10 44 69 73 70 6c 61 79 28 6e 6f 4e 65 74 46 78 34  Display(noNetFx4
2fc20 30 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  0)),..          
2fc30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2fc40 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
2fc50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2fc60 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
2fc70 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
2fc80 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
2fc90 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
2fca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
2fcb0 6f 4e 65 74 46 78 34 35 22 2c 20 46 6f 72 44 69  oNetFx45", ForDi
2fcc0 73 70 6c 61 79 28 6e 6f 4e 65 74 46 78 34 35 29  splay(noNetFx45)
2fcd0 29 2c 0d 0a 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 74 72 61 63              trac
2fcf0 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2fd00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fd10 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
2fd20 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
2fd30 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
2fd40 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2fd50 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 4e              "NoN
2fd60 65 74 46 78 34 35 31 22 2c 20 46 6f 72 44 69 73  etFx451", ForDis
2fd70 70 6c 61 79 28 6e 6f 4e 65 74 46 78 34 35 31 29  play(noNetFx451)
2fd80 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2fd90 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2fda0 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2fdb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fdc0 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
2fdd0 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
2fde0 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
2fdf0 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2fe00 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 4e              "NoN
2fe10 65 74 46 78 34 35 32 22 2c 20 46 6f 72 44 69 73  etFx452", ForDis
2fe20 70 6c 61 79 28 6e 6f 4e 65 74 46 78 34 35 32 29  play(noNetFx452)
2fe30 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2fe40 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2fe50 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2fe60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fe70 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
2fe80 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
2fe90 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
2fea0 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2feb0 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 4e              "NoN
2fec0 65 74 46 78 34 36 22 2c 20 46 6f 72 44 69 73 70  etFx46", ForDisp
2fed0 6c 61 79 28 6e 6f 4e 65 74 46 78 34 36 29 29 2c  lay(noNetFx46)),
2fee0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2fef0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2ff00 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
2ff10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ff20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
2ff30 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
2ff40 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
2ff50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ff60 20 20 20 20 20 20 20 20 20 20 22 4e 6f 4e 65 74            "NoNet
2ff70 46 78 34 36 31 22 2c 20 46 6f 72 44 69 73 70 6c  Fx461", ForDispl
2ff80 61 79 28 6e 6f 4e 65 74 46 78 34 36 31 29 29 2c  ay(noNetFx461)),
2ff90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ffa0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2ffb0 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
2ffc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ffd0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
2ffe0 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
2fff0 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
30000 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30010 20 20 20 20 20 20 20 20 20 20 22 4e 6f 4e 65 74            "NoNet
30020 46 78 34 36 32 22 2c 20 46 6f 72 44 69 73 70 6c  Fx462", ForDispl
30030 61 79 28 6e 6f 4e 65 74 46 78 34 36 32 29 29 2c  ay(noNetFx462)),
30040 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30050 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
30060 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
30070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30080 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
30090 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
300a0 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
300b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
300c0 20 20 20 20 20 20 20 20 20 20 22 4e 6f 4e 65 74            "NoNet
300d0 46 78 34 37 22 2c 20 46 6f 72 44 69 73 70 6c 61  Fx47", ForDispla
300e0 79 28 6e 6f 4e 65 74 46 78 34 37 29 29 2c 0d 0a  y(noNetFx47)),..
300f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30100 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
30110 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
30120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
30130 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
30140 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
30150 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
30160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30170 20 20 20 20 20 20 20 20 22 4e 6f 4e 65 74 46 78          "NoNetFx
30180 34 37 31 22 2c 20 46 6f 72 44 69 73 70 6c 61 79  471", ForDisplay
30190 28 6e 6f 4e 65 74 46 78 34 37 31 29 29 2c 0d 0a  (noNetFx471)),..
301a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
301b0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
301c0 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
301d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
301e0 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
301f0 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
30200 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
30210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30220 20 20 20 20 20 20 20 20 22 4e 6f 56 73 32 30 30          "NoVs200
30230 35 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e  5", ForDisplay(n
30240 6f 56 73 32 30 30 35 29 29 2c 0d 0a 20 20 20 20  oVs2005)),..    
30250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30260 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
30270 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
30280 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
30290 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
302a0 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
302b0 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
302c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
302d0 20 20 20 20 22 4e 6f 56 73 32 30 30 38 22 2c 20      "NoVs2008", 
302e0 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f 56 73 32  ForDisplay(noVs2
302f0 30 30 38 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  008)),..        
30300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30310 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
30320 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
30330 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
30340 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
30350 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
30360 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
30370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30380 22 4e 6f 56 73 32 30 31 30 22 2c 20 46 6f 72 44  "NoVs2010", ForD
30390 69 73 70 6c 61 79 28 6e 6f 56 73 32 30 31 30 29  isplay(noVs2010)
303a0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
303b0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
303c0 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
303d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
303e0 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
303f0 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
30400 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
30410 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
30420 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 56              "NoV
30430 73 32 30 31 32 22 2c 20 46 6f 72 44 69 73 70 6c  s2012", ForDispl
30440 61 79 28 6e 6f 56 73 32 30 31 32 29 29 2c 0d 0a  ay(noVs2012)),..
30450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30460 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
30470 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
30480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
30490 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
304a0 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
304b0 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
304c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
304d0 20 20 20 20 20 20 20 20 22 4e 6f 56 73 32 30 31          "NoVs201
304e0 33 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e  3", ForDisplay(n
304f0 6f 56 73 32 30 31 33 29 29 2c 0d 0a 20 20 20 20  oVs2013)),..    
30500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30510 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
30520 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
30530 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
30540 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
30550 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
30560 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
30570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30580 20 20 20 20 22 4e 6f 56 73 32 30 31 35 22 2c 20      "NoVs2015", 
30590 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f 56 73 32  ForDisplay(noVs2
305a0 30 31 35 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  015)),..        
305b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
305c0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
305d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
305e0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
305f0 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
30600 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
30610 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
30620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30630 22 4e 6f 56 73 32 30 31 37 22 2c 20 46 6f 72 44  "NoVs2017", ForD
30640 69 73 70 6c 61 79 28 6e 6f 56 73 32 30 31 37 29  isplay(noVs2017)
30650 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
30660 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
30670 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
30680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30690 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
306a0 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
306b0 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
306c0 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
306d0 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 54              "NoT
306e0 72 61 63 65 22 2c 20 46 6f 72 44 69 73 70 6c 61  race", ForDispla
306f0 79 28 6e 6f 54 72 61 63 65 29 29 2c 0d 0a 20 20  y(noTrace)),..  
30700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30710 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
30720 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
30730 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
30740 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
30750 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
30760 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
30770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30780 20 20 20 20 20 20 22 4e 6f 43 6f 6e 73 6f 6c 65        "NoConsole
30790 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f  ", ForDisplay(no
307a0 43 6f 6e 73 6f 6c 65 29 29 2c 0d 0a 20 20 20 20  Console)),..    
307b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
307c0 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
307d0 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
307e0 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
307f0 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
30800 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
30810 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
30820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30830 20 20 20 20 22 4e 6f 4c 6f 67 22 2c 20 46 6f 72      "NoLog", For
30840 44 69 73 70 6c 61 79 28 6e 6f 4c 6f 67 29 29 2c  Display(noLog)),
30850 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30860 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
30870 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
30880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30890 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
308a0 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
308b0 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
308c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
308d0 20 20 20 20 20 20 20 20 20 20 22 54 68 72 6f 77            "Throw
308e0 4f 6e 4d 69 73 73 69 6e 67 22 2c 20 46 6f 72 44  OnMissing", ForD
308f0 69 73 70 6c 61 79 28 74 68 72 6f 77 4f 6e 4d 69  isplay(throwOnMi
30900 73 73 69 6e 67 29 29 2c 0d 0a 20 20 20 20 20 20  ssing)),..      
30910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30920 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
30930 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
30940 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
30950 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f  llback(String.Fo
30960 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75  rmat(NameAndValu
30970 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
30980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30990 20 20 22 57 68 61 74 49 66 22 2c 20 46 6f 72 44    "WhatIf", ForD
309a0 69 73 70 6c 61 79 28 77 68 61 74 49 66 29 29 2c  isplay(whatIf)),
309b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
309c0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
309d0 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
309e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
309f0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
30a00 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
30a10 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
30a20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30a30 20 20 20 20 20 20 20 20 20 20 22 44 65 62 75 67            "Debug
30a40 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 64 65  ", ForDisplay(de
30a50 62 75 67 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  bug)),..        
30a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a70 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
30a80 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
30a90 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
30aa0 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
30ab0 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
30ac0 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
30ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30ae0 22 56 65 72 62 6f 73 65 22 2c 20 46 6f 72 44 69  "Verbose", ForDi
30af0 73 70 6c 61 79 28 76 65 72 62 6f 73 65 29 29 2c  splay(verbose)),
30b00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30b10 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
30b20 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
30b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30b40 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
30b50 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
30b60 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
30b70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30b80 20 20 20 20 20 20 20 20 20 20 22 43 6f 6e 66 69            "Confi
30b90 72 6d 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  rm", ForDisplay(
30ba0 63 6f 6e 66 69 72 6d 29 29 2c 0d 0a 20 20 20 20  confirm)),..    
30bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30bc0 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
30bd0 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
30be0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
30bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c20 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
30c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
30c40 20 28 61 73 73 65 6d 62 6c 79 20 21 3d 20 6e 75   (assembly != nu
30c50 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
30c60 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
30c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30c80 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
30c90 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  k(String.Format(
30ca0 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d  NameAndValueForm
30cb0 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at,..           
30cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30cd0 20 22 41 73 73 65 6d 62 6c 79 54 69 74 6c 65 22   "AssemblyTitle"
30ce0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
30cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46                 F
30d00 6f 72 44 69 73 70 6c 61 79 28 47 65 74 41 73 73  orDisplay(GetAss
30d10 65 6d 62 6c 79 54 69 74 6c 65 28 61 73 73 65 6d  emblyTitle(assem
30d20 62 6c 79 29 29 29 2c 0d 0a 20 20 20 20 20 20 20  bly))),..       
30d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30d40 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
30d50 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
30d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30d70 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74  traceCallback(St
30d80 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65  ring.Format(Name
30d90 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d  AndValueFormat,.
30da0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30db0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 41 73               "As
30dc0 73 65 6d 62 6c 79 43 6f 6e 66 69 67 75 72 61 74  semblyConfigurat
30dd0 69 6f 6e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  ion",..         
30de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30df0 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 47 65     ForDisplay(Ge
30e00 74 41 73 73 65 6d 62 6c 79 43 6f 6e 66 69 67 75  tAssemblyConfigu
30e10 72 61 74 69 6f 6e 28 61 73 73 65 6d 62 6c 79 29  ration(assembly)
30e20 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
30e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30e40 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
30e50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30e60 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
30e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
30e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
30ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30ed0 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28    traceCallback(
30ee0 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61  String.Format(Na
30ef0 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74  meAndValueFormat
30f00 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
30f10 20 20 20 20 20 20 20 20 20 20 20 22 49 73 53 79             "IsSy
30f20 73 74 65 6d 45 66 36 41 73 73 65 6d 62 6c 79 41  stemEf6AssemblyA
30f30 76 61 69 6c 61 62 6c 65 22 2c 20 46 6f 72 44 69  vailable", ForDi
30f40 73 70 6c 61 79 28 0d 0a 20 20 20 20 20 20 20 20  splay(..        
30f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30f60 49 73 53 79 73 74 65 6d 45 66 36 41 73 73 65 6d  IsSystemEf6Assem
30f70 62 6c 79 41 76 61 69 6c 61 62 6c 65 28 66 61 6c  blyAvailable(fal
30f80 73 65 29 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  se))),..        
30f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30fa0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
30fb0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
30fc0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
30fd0 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
30fe0 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
30ff0 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
31000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31010 22 49 73 53 79 73 74 65 6d 45 66 36 41 73 73 65  "IsSystemEf6Asse
31020 6d 62 6c 79 47 6c 6f 62 61 6c 22 2c 20 46 6f 72  mblyGlobal", For
31030 44 69 73 70 6c 61 79 28 0d 0a 20 20 20 20 20 20  Display(..      
31040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31050 20 20 49 73 53 79 73 74 65 6d 45 66 36 41 73 73    IsSystemEf6Ass
31060 65 6d 62 6c 79 47 6c 6f 62 61 6c 28 29 29 29 2c  emblyGlobal())),
31070 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31080 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
31090 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
310a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
310b0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
310c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
310d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
310e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
310f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31100 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
31110 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  k(String.Format(
31120 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d  NameAndValueForm
31130 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at,..           
31140 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49 73               "Is
31150 4c 69 6e 71 53 75 70 70 6f 72 74 65 64 22 2c 20  LinqSupported", 
31160 46 6f 72 44 69 73 70 6c 61 79 28 49 73 4c 69 6e  ForDisplay(IsLin
31170 71 53 75 70 70 6f 72 74 65 64 28 66 61 6c 73 65  qSupported(false
31180 29 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ))),..          
31190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
311a0 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
311b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
311c0 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
311d0 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
311e0 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
311f0 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
31200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49                "I
31210 73 45 66 36 53 75 70 70 6f 72 74 65 64 22 2c 20  sEf6Supported", 
31220 46 6f 72 44 69 73 70 6c 61 79 28 49 73 45 66 36  ForDisplay(IsEf6
31230 53 75 70 70 6f 72 74 65 64 28 66 61 6c 73 65 29  Supported(false)
31240 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
31250 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
31260 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a  ceCategory);....
31270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31280 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
31290 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  k(String.Format(
312a0 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d  NameAndValueForm
312b0 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at,..           
312c0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49 73               "Is
312d0 45 66 36 41 73 73 65 6d 62 6c 79 47 6c 6f 62 61  Ef6AssemblyGloba
312e0 6c 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 0d  l", ForDisplay(.
312f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31300 20 20 20 20 20 20 20 20 20 49 73 45 66 36 41 73           IsEf6As
31310 73 65 6d 62 6c 79 47 6c 6f 62 61 6c 28 29 29 29  semblyGlobal()))
31320 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
31330 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
31340 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
31350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31360 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28    traceCallback(
31370 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61  String.Format(Na
31380 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74  meAndValueFormat
31390 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
313a0 20 20 20 20 20 20 20 20 20 20 20 22 55 73 65 45             "UseE
313b0 66 36 50 72 6f 76 69 64 65 72 22 2c 20 46 6f 72  f6Provider", For
313c0 44 69 73 70 6c 61 79 28 55 73 65 45 66 36 50 72  Display(UseEf6Pr
313d0 6f 76 69 64 65 72 28 66 61 6c 73 65 29 29 29 2c  ovider(false))),
313e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
313f0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
31400 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
31410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31420 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
31430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
31460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31470 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
31480 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
31490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
314a0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c          traceCal
314b0 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72  lback(String.For
314c0 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65  mat(NameAndValue
314d0 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20  Format,..       
314e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
314f0 20 20 20 20 20 22 47 65 74 43 6f 72 65 41 73 73       "GetCoreAss
31500 65 6d 62 6c 79 4e 61 6d 65 22 2c 20 46 6f 72 44  emblyName", ForD
31510 69 73 70 6c 61 79 28 0d 0a 20 20 20 20 20 20 20  isplay(..       
31520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31530 20 20 20 20 20 47 65 74 43 6f 72 65 41 73 73 65       GetCoreAsse
31540 6d 62 6c 79 4e 61 6d 65 28 66 61 6c 73 65 29 29  mblyName(false))
31550 29 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79  ), traceCategory
31560 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
31570 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
31580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
31590 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20  atch (Exception 
315a0 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
315b0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
315c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
315d0 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
315e0 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
315f0 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
31600 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
31610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31620 22 47 65 74 43 6f 72 65 41 73 73 65 6d 62 6c 79  "GetCoreAssembly
31630 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c 61  Name", ForDispla
31640 79 28 65 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  y(e)),..        
31650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31660 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
31670 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
31680 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
31690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
316a0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
316b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
316c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
316d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
316e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
316f0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
31700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
31710 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31720 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
31730 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f  llback(String.Fo
31740 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75  rmat(NameAndValu
31750 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
31760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31770 20 20 20 20 20 20 22 47 65 74 4c 69 6e 71 41 73        "GetLinqAs
31780 73 65 6d 62 6c 79 4e 61 6d 65 22 2c 20 46 6f 72  semblyName", For
31790 44 69 73 70 6c 61 79 28 0d 0a 20 20 20 20 20 20  Display(..      
317a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
317b0 20 20 20 20 20 20 47 65 74 4c 69 6e 71 41 73 73        GetLinqAss
317c0 65 6d 62 6c 79 4e 61 6d 65 28 66 61 6c 73 65 29  emblyName(false)
317d0 29 29 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72  )), traceCategor
317e0 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
317f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
31800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31810 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
31820 20 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20   e)..           
31830 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
31840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31850 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
31860 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  k(String.Format(
31870 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d  NameAndValueForm
31880 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at,..           
31890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
318a0 20 22 47 65 74 4c 69 6e 71 41 73 73 65 6d 62 6c   "GetLinqAssembl
318b0 79 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c  yName", ForDispl
318c0 61 79 28 65 29 29 2c 0d 0a 20 20 20 20 20 20 20  ay(e)),..       
318d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
318e0 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
318f0 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ry);..          
31900 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
31910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31920 20 20 20 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 0d 0a  //////////////..
31960 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31970 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
31980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
31990 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
319a0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
319b0 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46  allback(String.F
319c0 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c  ormat(NameAndVal
319d0 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20  ueFormat,..     
319e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
319f0 20 20 20 20 20 20 20 22 47 65 74 45 66 36 41 73         "GetEf6As
31a00 73 65 6d 62 6c 79 4e 61 6d 65 22 2c 20 46 6f 72  semblyName", For
31a10 44 69 73 70 6c 61 79 28 0d 0a 20 20 20 20 20 20  Display(..      
31a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31a30 20 20 20 20 20 20 47 65 74 45 66 36 41 73 73 65        GetEf6Asse
31a40 6d 62 6c 79 4e 61 6d 65 28 66 61 6c 73 65 29 29  mblyName(false))
31a50 29 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79  ), traceCategory
31a60 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
31a70 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
31a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
31a90 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20  atch (Exception 
31aa0 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
31ab0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
31ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31ad0 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
31ae0 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
31af0 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
31b00 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
31b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31b20 22 47 65 74 45 66 36 41 73 73 65 6d 62 6c 79 4e  "GetEf6AssemblyN
31b30 61 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c 61 79  ame", ForDisplay
31b40 28 65 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  (e)),..         
31b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31b60 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
31b70 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
31b80 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
31b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31ba0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
31bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
31be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31bf0 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
31c00 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
31c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31c20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c          traceCal
31c30 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72  lback(String.For
31c40 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65  mat(NameAndValue
31c50 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20  Format,..       
31c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31c70 20 20 20 20 20 22 47 65 74 44 65 73 69 67 6e 65       "GetDesigne
31c80 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 22 2c 20  rAssemblyName", 
31c90 46 6f 72 44 69 73 70 6c 61 79 28 0d 0a 20 20 20  ForDisplay(..   
31ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31cb0 20 20 20 20 20 20 20 20 20 47 65 74 44 65 73 69           GetDesi
31cc0 67 6e 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65  gnerAssemblyName
31cd0 28 66 61 6c 73 65 29 29 29 2c 20 74 72 61 63 65  (false))), trace
31ce0 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20  Category);..    
31cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31d00 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
31d10 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
31d20 63 65 70 74 69 6f 6e 20 65 29 0d 0a 20 20 20 20  ception e)..    
31d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31d40 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
31d50 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
31d60 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
31d70 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
31d80 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
31d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31da0 20 20 20 20 20 20 20 20 22 47 65 74 44 65 73 69          "GetDesi
31db0 67 6e 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65  gnerAssemblyName
31dc0 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 65 29  ", ForDisplay(e)
31dd0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
31de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31df0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
31e00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31e10 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
31e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
31e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
31e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31e80 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
31e90 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
31ea0 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
31eb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31ec0 20 20 20 20 20 20 20 20 20 20 22 47 65 74 49 6e            "GetIn
31ed0 76 61 72 69 61 6e 74 4e 61 6d 65 22 2c 20 46 6f  variantName", Fo
31ee0 72 44 69 73 70 6c 61 79 28 47 65 74 49 6e 76 61  rDisplay(GetInva
31ef0 72 69 61 6e 74 4e 61 6d 65 28 0d 0a 20 20 20 20  riantName(..    
31f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31f10 20 20 20 20 66 61 6c 73 65 29 29 29 2c 20 74 72      false))), tr
31f20 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
31f30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31f40 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
31f50 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
31f60 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
31f70 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
31f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 47                "G
31f90 65 74 43 6f 6e 66 69 67 49 6e 76 61 72 69 61 6e  etConfigInvarian
31fa0 74 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c  tName", ForDispl
31fb0 61 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ay(..           
31fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74               Get
31fd0 43 6f 6e 66 69 67 49 6e 76 61 72 69 61 6e 74 4e  ConfigInvariantN
31fe0 61 6d 65 28 66 61 6c 73 65 29 29 29 2c 20 74 72  ame(false))), tr
31ff0 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
32000 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32010 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
32020 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
32030 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
32040 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
32050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 47                "G
32060 65 74 50 72 6f 76 69 64 65 72 49 6e 76 61 72 69  etProviderInvari
32070 61 6e 74 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73  antName", ForDis
32080 70 6c 61 79 28 0d 0a 20 20 20 20 20 20 20 20 20  play(..         
32090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47                 G
320a0 65 74 50 72 6f 76 69 64 65 72 49 6e 76 61 72 69  etProviderInvari
320b0 61 6e 74 4e 61 6d 65 28 66 61 6c 73 65 29 29 29  antName(false)))
320c0 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29  , traceCategory)
320d0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
320e0 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
320f0 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f  llback(String.Fo
32100 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75  rmat(NameAndValu
32110 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
32120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32130 20 20 22 47 65 74 46 61 63 74 6f 72 79 54 79 70    "GetFactoryTyp
32140 65 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c  eName", ForDispl
32150 61 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ay(..           
32160 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74               Get
32170 46 61 63 74 6f 72 79 54 79 70 65 4e 61 6d 65 28  FactoryTypeName(
32180 66 61 6c 73 65 29 29 29 2c 20 74 72 61 63 65 43  false))), traceC
32190 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
321a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
321b0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
321c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
321d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
321e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
321f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32200 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
32210 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
32220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32230 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c          traceCal
32240 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72  lback(String.For
32250 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65  mat(NameAndValue
32260 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20  Format,..       
32270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32280 20 20 20 20 20 22 47 65 74 50 72 6f 76 69 64 65       "GetProvide
32290 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 22 2c 20  rAssemblyName", 
322a0 46 6f 72 44 69 73 70 6c 61 79 28 0d 0a 20 20 20  ForDisplay(..   
322b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
322c0 20 20 20 20 20 20 20 20 20 47 65 74 50 72 6f 76           GetProv
322d0 69 64 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65  iderAssemblyName
322e0 28 66 61 6c 73 65 29 29 29 2c 20 74 72 61 63 65  (false))), trace
322f0 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20  Category);..    
32300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32310 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
32320 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
32330 63 65 70 74 69 6f 6e 20 65 29 0d 0a 20 20 20 20  ception e)..    
32340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32350 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
32360 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
32370 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
32380 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
32390 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
323a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
323b0 20 20 20 20 20 20 20 20 22 47 65 74 50 72 6f 76          "GetProv
323c0 69 64 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65  iderAssemblyName
323d0 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 65 29  ", ForDisplay(e)
323e0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
323f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32400 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
32410 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32420 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
32430 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
32440 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
32450 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
32460 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
324b0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
324c0 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69     #region Publi
324d0 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20  c Properties..  
324e0 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
324f0 65 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65 6d  e Assembly assem
32500 62 6c 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  bly;..          
32510 20 20 70 75 62 6c 69 63 20 41 73 73 65 6d 62 6c    public Assembl
32520 79 20 41 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20  y Assembly..    
32530 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
32540 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
32550 20 72 65 74 75 72 6e 20 61 73 73 65 6d 62 6c 79   return assembly
32560 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
32570 20 20 20 20 20 73 65 74 20 7b 20 61 73 73 65 6d       set { assem
32580 62 6c 79 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  bly = value; }..
32590 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
325a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
325b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
325c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
325d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
325e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
325f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
32600 70 72 69 76 61 74 65 20 73 74 72 69 6e 67 20 6c  private string l
32610 6f 67 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20  ogFileName;..   
32620 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
32630 73 74 72 69 6e 67 20 4c 6f 67 46 69 6c 65 4e 61  string LogFileNa
32640 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  me..            
32650 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
32660 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
32670 6c 6f 67 46 69 6c 65 4e 61 6d 65 3b 20 7d 0d 0a  logFileName; }..
32680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32690 73 65 74 20 7b 20 6c 6f 67 46 69 6c 65 4e 61 6d  set { logFileNam
326a0 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  e = value; }..  
326b0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
326c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
326d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
326e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
326f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
32710 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
32720 69 76 61 74 65 20 73 74 72 69 6e 67 20 72 65 67  ivate string reg
32730 69 73 74 72 79 4c 6f 67 46 69 6c 65 4e 61 6d 65  istryLogFileName
32740 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
32750 75 62 6c 69 63 20 73 74 72 69 6e 67 20 52 65 67  ublic string Reg
32760 69 73 74 72 79 4c 6f 67 46 69 6c 65 4e 61 6d 65  istryLogFileName
32770 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
32780 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32790 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 72 65   get { return re
327a0 67 69 73 74 72 79 4c 6f 67 46 69 6c 65 4e 61 6d  gistryLogFileNam
327b0 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
327c0 20 20 20 20 20 20 73 65 74 20 7b 20 72 65 67 69        set { regi
327d0 73 74 72 79 4c 6f 67 46 69 6c 65 4e 61 6d 65 20  stryLogFileName 
327e0 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
327f0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
32800 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
32810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
32850 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
32860 61 74 65 20 73 74 72 69 6e 67 20 64 69 72 65 63  ate string direc
32870 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20  tory;..         
32880 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67     public string
32890 20 44 69 72 65 63 74 6f 72 79 0d 0a 20 20 20 20   Directory..    
328a0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
328b0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
328c0 20 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72   return director
328d0 79 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  y; }..          
328e0 20 20 20 20 20 20 73 65 74 20 7b 20 64 69 72 65        set { dire
328f0 63 74 6f 72 79 20 3d 20 76 61 6c 75 65 3b 20 7d  ctory = value; }
32900 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
32910 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
32920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32960 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
32970 20 20 70 72 69 76 61 74 65 20 73 74 72 69 6e 67    private string
32980 20 63 6f 72 65 46 69 6c 65 4e 61 6d 65 3b 0d 0a   coreFileName;..
32990 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
329a0 69 63 20 73 74 72 69 6e 67 20 43 6f 72 65 46 69  ic string CoreFi
329b0 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  leName..        
329c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
329d0 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
329e0 75 72 6e 20 63 6f 72 65 46 69 6c 65 4e 61 6d 65  urn coreFileName
329f0 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
32a00 20 20 20 20 20 73 65 74 20 7b 20 63 6f 72 65 46       set { coreF
32a10 69 6c 65 4e 61 6d 65 20 3d 20 76 61 6c 75 65 3b  ileName = value;
32a20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
32a30 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
32a40 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
32a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32a80 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
32a90 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69      private stri
32aa0 6e 67 20 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 3b  ng linqFileName;
32ab0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
32ac0 62 6c 69 63 20 73 74 72 69 6e 67 20 4c 69 6e 71  blic string Linq
32ad0 46 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20  FileName..      
32ae0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
32af0 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
32b00 65 74 75 72 6e 20 6c 69 6e 71 46 69 6c 65 4e 61  eturn linqFileNa
32b10 6d 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  me; }..         
32b20 20 20 20 20 20 20 20 73 65 74 20 7b 20 6c 69 6e         set { lin
32b30 71 46 69 6c 65 4e 61 6d 65 20 3d 20 76 61 6c 75  qFileName = valu
32b40 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
32b50 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
32b60 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
32b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32ba0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
32bb0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
32bc0 72 69 6e 67 20 65 66 36 46 69 6c 65 4e 61 6d 65  ring ef6FileName
32bd0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
32be0 75 62 6c 69 63 20 73 74 72 69 6e 67 20 45 66 36  ublic string Ef6
32bf0 46 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20  FileName..      
32c00 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
32c10 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
32c20 65 74 75 72 6e 20 65 66 36 46 69 6c 65 4e 61 6d  eturn ef6FileNam
32c30 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
32c40 20 20 20 20 20 20 73 65 74 20 7b 20 65 66 36 46        set { ef6F
32c50 69 6c 65 4e 61 6d 65 20 3d 20 76 61 6c 75 65 3b  ileName = value;
32c60 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
32c70 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
32c80 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
32c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32cc0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
32cd0 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69      private stri
32ce0 6e 67 20 64 65 73 69 67 6e 65 72 46 69 6c 65 4e  ng designerFileN
32cf0 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
32d00 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20    public string 
32d10 44 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65  DesignerFileName
32d20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
32d30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32d40 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 64 65   get { return de
32d50 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 3b 20  signerFileName; 
32d60 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
32d70 20 20 20 73 65 74 20 7b 20 64 65 73 69 67 6e 65     set { designe
32d80 72 46 69 6c 65 4e 61 6d 65 20 3d 20 76 61 6c 75  rFileName = valu
32d90 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
32da0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
32db0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
32dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32df0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
32e00 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
32e10 72 69 6e 67 20 72 65 67 69 73 74 72 79 56 65 72  ring registryVer
32e20 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20  sion;..         
32e30 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67     public string
32e40 20 52 65 67 69 73 74 72 79 56 65 72 73 69 6f 6e   RegistryVersion
32e50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
32e60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32e70 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 72 65   get { return re
32e80 67 69 73 74 72 79 56 65 72 73 69 6f 6e 3b 20 7d  gistryVersion; }
32e90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32ea0 20 20 73 65 74 20 7b 20 72 65 67 69 73 74 72 79    set { registry
32eb0 56 65 72 73 69 6f 6e 20 3d 20 76 61 6c 75 65 3b  Version = value;
32ec0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
32ed0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
32ee0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
32ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32f20 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
32f30 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69      private stri
32f40 6e 67 20 63 6f 6e 66 69 67 56 65 72 73 69 6f 6e  ng configVersion
32f50 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
32f60 75 62 6c 69 63 20 73 74 72 69 6e 67 20 43 6f 6e  ublic string Con
32f70 66 69 67 56 65 72 73 69 6f 6e 0d 0a 20 20 20 20  figVersion..    
32f80 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
32f90 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
32fa0 20 72 65 74 75 72 6e 20 63 6f 6e 66 69 67 56 65   return configVe
32fb0 72 73 69 6f 6e 3b 20 7d 0d 0a 20 20 20 20 20 20  rsion; }..      
32fc0 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
32fd0 63 6f 6e 66 69 67 56 65 72 73 69 6f 6e 20 3d 20  configVersion = 
32fe0 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
32ff0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
33000 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
33010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
33050 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
33060 65 20 73 74 72 69 6e 67 20 76 73 56 65 72 73 69  e string vsVersi
33070 6f 6e 53 75 66 66 69 78 3b 0d 0a 20 20 20 20 20  onSuffix;..     
33080 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
33090 72 69 6e 67 20 56 73 56 65 72 73 69 6f 6e 53 75  ring VsVersionSu
330a0 66 66 69 78 0d 0a 20 20 20 20 20 20 20 20 20 20  ffix..          
330b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
330c0 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
330d0 6e 20 76 73 56 65 72 73 69 6f 6e 53 75 66 66 69  n vsVersionSuffi
330e0 78 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  x; }..          
330f0 20 20 20 20 20 20 73 65 74 20 7b 20 76 73 56 65        set { vsVe
33100 72 73 69 6f 6e 53 75 66 66 69 78 20 3d 20 76 61  rsionSuffix = va
33110 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
33120 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
33130 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
33140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20  ////////....    
33180 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
33190 73 74 72 69 6e 67 20 64 65 62 75 67 46 6f 72 6d  string debugForm
331a0 61 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at;..           
331b0 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 44   public string D
331c0 65 62 75 67 46 6f 72 6d 61 74 0d 0a 20 20 20 20  ebugFormat..    
331d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
331e0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
331f0 20 72 65 74 75 72 6e 20 64 65 62 75 67 46 6f 72   return debugFor
33200 6d 61 74 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  mat; }..        
33210 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 64 65          set { de
33220 62 75 67 46 6f 72 6d 61 74 20 3d 20 76 61 6c 75  bugFormat = valu
33230 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
33240 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
33250 20 20 20 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
332a0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
332b0 72 69 6e 67 20 74 72 61 63 65 46 6f 72 6d 61 74  ring traceFormat
332c0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
332d0 75 62 6c 69 63 20 73 74 72 69 6e 67 20 54 72 61  ublic string Tra
332e0 63 65 46 6f 72 6d 61 74 0d 0a 20 20 20 20 20 20  ceFormat..      
332f0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
33300 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
33310 65 74 75 72 6e 20 74 72 61 63 65 46 6f 72 6d 61  eturn traceForma
33320 74 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  t; }..          
33330 20 20 20 20 20 20 73 65 74 20 7b 20 74 72 61 63        set { trac
33340 65 46 6f 72 6d 61 74 20 3d 20 76 61 6c 75 65 3b  eFormat = value;
33350 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
33360 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
33370 20 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 2f 2f 2f 2f 2f 2f  ////////////////
333b0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
333c0 20 20 20 20 70 72 69 76 61 74 65 20 49 6e 73 74      private Inst
333d0 61 6c 6c 46 6c 61 67 73 20 69 6e 73 74 61 6c 6c  allFlags install
333e0 46 6c 61 67 73 3b 0d 0a 20 20 20 20 20 20 20 20  Flags;..        
333f0 20 20 20 20 70 75 62 6c 69 63 20 49 6e 73 74 61      public Insta
33400 6c 6c 46 6c 61 67 73 20 49 6e 73 74 61 6c 6c 46  llFlags InstallF
33410 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20  lags..          
33420 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
33430 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
33440 6e 20 69 6e 73 74 61 6c 6c 46 6c 61 67 73 3b 20  n installFlags; 
33450 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
33460 20 20 20 73 65 74 20 7b 20 69 6e 73 74 61 6c 6c     set { install
33470 46 6c 61 67 73 20 3d 20 76 61 6c 75 65 3b 20 7d  Flags = value; }
33480 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
33490 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
334c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
334d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
334e0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
334f0 20 20 70 72 69 76 61 74 65 20 50 72 6f 76 69 64    private Provid
33500 65 72 46 6c 61 67 73 20 70 72 6f 76 69 64 65 72  erFlags provider
33510 46 6c 61 67 73 3b 0d 0a 20 20 20 20 20 20 20 20  Flags;..        
33520 20 20 20 20 70 75 62 6c 69 63 20 50 72 6f 76 69      public Provi
33530 64 65 72 46 6c 61 67 73 20 50 72 6f 76 69 64 65  derFlags Provide
33540 72 46 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20  rFlags..        
33550 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
33560 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
33570 75 72 6e 20 70 72 6f 76 69 64 65 72 46 6c 61 67  urn providerFlag
33580 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  s; }..          
33590 20 20 20 20 20 20 73 65 74 20 7b 20 70 72 6f 76        set { prov
335a0 69 64 65 72 46 6c 61 67 73 20 3d 20 76 61 6c 75  iderFlags = valu
335b0 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
335c0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
335d0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
335e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
335f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33610 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
33620 20 20 20 20 20 20 70 72 69 76 61 74 65 20 54 72        private Tr
33630 61 63 65 50 72 69 6f 72 69 74 79 20 64 65 62 75  acePriority debu
33640 67 50 72 69 6f 72 69 74 79 3b 0d 0a 20 20 20 20  gPriority;..    
33650 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 54          public T
33660 72 61 63 65 50 72 69 6f 72 69 74 79 20 44 65 62  racePriority Deb
33670 75 67 50 72 69 6f 72 69 74 79 0d 0a 20 20 20 20  ugPriority..    
33680 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
33690 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
336a0 20 72 65 74 75 72 6e 20 64 65 62 75 67 50 72 69   return debugPri
336b0 6f 72 69 74 79 3b 20 7d 0d 0a 20 20 20 20 20 20  ority; }..      
336c0 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
336d0 64 65 62 75 67 50 72 69 6f 72 69 74 79 20 3d 20  debugPriority = 
336e0 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
336f0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
33700 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
33710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
33750 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
33760 65 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 20  e TracePriority 
33770 74 72 61 63 65 50 72 69 6f 72 69 74 79 3b 0d 0a  tracePriority;..
33780 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
33790 69 63 20 54 72 61 63 65 50 72 69 6f 72 69 74 79  ic TracePriority
337a0 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 0d 0a   TracePriority..
337b0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
337c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
337d0 65 74 20 7b 20 72 65 74 75 72 6e 20 74 72 61 63  et { return trac
337e0 65 50 72 69 6f 72 69 74 79 3b 20 7d 0d 0a 20 20  ePriority; }..  
337f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
33800 74 20 7b 20 74 72 61 63 65 50 72 69 6f 72 69 74  t { tracePriorit
33810 79 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  y = value; }..  
33820 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
33830 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
33840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
33880 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
33890 69 76 61 74 65 20 62 6f 6f 6c 20 70 65 72 55 73  ivate bool perUs
338a0 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er;..           
338b0 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 50 65 72   public bool Per
338c0 55 73 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20  User..          
338d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
338e0 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
338f0 6e 20 70 65 72 55 73 65 72 3b 20 7d 0d 0a 20 20  n perUser; }..  
33900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
33910 74 20 7b 20 70 65 72 55 73 65 72 20 3d 20 76 61  t { perUser = va
33920 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
33930 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
33940 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
33950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33980 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
33990 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
339a0 62 6f 6f 6c 20 69 6e 73 74 61 6c 6c 3b 0d 0a 20  bool install;.. 
339b0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
339c0 63 20 62 6f 6f 6c 20 49 6e 73 74 61 6c 6c 0d 0a  c bool Install..
339d0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
339e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
339f0 65 74 20 7b 20 72 65 74 75 72 6e 20 69 6e 73 74  et { return inst
33a00 61 6c 6c 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  all; }..        
33a10 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 69 6e          set { in
33a20 73 74 61 6c 6c 20 3d 20 76 61 6c 75 65 3b 20 7d  stall = value; }
33a30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
33a40 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
33a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33a90 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
33aa0 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 77    private bool w
33ab0 6f 77 36 34 3b 0d 0a 20 20 20 20 20 20 20 20 20  ow64;..         
33ac0 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 57     public bool W
33ad0 6f 77 36 34 0d 0a 20 20 20 20 20 20 20 20 20 20  ow64..          
33ae0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
33af0 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
33b00 6e 20 77 6f 77 36 34 3b 20 7d 0d 0a 20 20 20 20  n wow64; }..    
33b10 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
33b20 7b 20 77 6f 77 36 34 20 3d 20 76 61 6c 75 65 3b  { wow64 = value;
33b30 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
33b40 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
33b50 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
33b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33b90 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
33ba0 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
33bb0 20 6e 6f 52 75 6e 74 69 6d 65 56 65 72 73 69 6f   noRuntimeVersio
33bc0 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n;..            
33bd0 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 52 75  public bool NoRu
33be0 6e 74 69 6d 65 56 65 72 73 69 6f 6e 0d 0a 20 20  ntimeVersion..  
33bf0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
33c00 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
33c10 20 7b 20 72 65 74 75 72 6e 20 6e 6f 52 75 6e 74   { return noRunt
33c20 69 6d 65 56 65 72 73 69 6f 6e 3b 20 7d 0d 0a 20  imeVersion; }.. 
33c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
33c40 65 74 20 7b 20 6e 6f 52 75 6e 74 69 6d 65 56 65  et { noRuntimeVe
33c50 72 73 69 6f 6e 20 3d 20 76 61 6c 75 65 3b 20 7d  rsion = value; }
33c60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
33c70 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
33c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33cc0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
33cd0 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e    private bool n
33ce0 6f 44 65 73 6b 74 6f 70 3b 0d 0a 20 20 20 20 20  oDesktop;..     
33cf0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f         public bo
33d00 6f 6c 20 4e 6f 44 65 73 6b 74 6f 70 0d 0a 20 20  ol NoDesktop..  
33d10 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
33d20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
33d30 20 7b 20 72 65 74 75 72 6e 20 6e 6f 44 65 73 6b   { return noDesk
33d40 74 6f 70 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  top; }..        
33d50 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e 6f          set { no
33d60 44 65 73 6b 74 6f 70 20 3d 20 76 61 6c 75 65 3b  Desktop = value;
33d70 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
33d80 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
33d90 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
33da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33dd0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
33de0 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
33df0 20 6e 6f 43 6f 6d 70 61 63 74 3b 0d 0a 20 20 20   noCompact;..   
33e00 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
33e10 62 6f 6f 6c 20 4e 6f 43 6f 6d 70 61 63 74 0d 0a  bool NoCompact..
33e20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
33e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
33e40 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f 43 6f  et { return noCo
33e50 6d 70 61 63 74 3b 20 7d 0d 0a 20 20 20 20 20 20  mpact; }..      
33e60 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
33e70 6e 6f 43 6f 6d 70 61 63 74 20 3d 20 76 61 6c 75  noCompact = valu
33e80 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
33e90 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
33ea0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
33eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ee0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
33ef0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
33f00 6f 6c 20 6e 6f 4e 65 74 46 78 32 30 3b 0d 0a 20  ol noNetFx20;.. 
33f10 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
33f20 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74 46 78 32 30  c bool NoNetFx20
33f30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
33f40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33f50 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f   get { return no
33f60 4e 65 74 46 78 32 30 3b 20 7d 0d 0a 20 20 20 20  NetFx20; }..    
33f70 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
33f80 7b 20 6e 6f 4e 65 74 46 78 32 30 20 3d 20 76 61  { noNetFx20 = va
33f90 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
33fa0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
33fb0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
33fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ff0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
34000 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
34010 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 33 35 3b 0d  bool noNetFx35;.
34020 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
34030 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74 46 78  lic bool NoNetFx
34040 33 35 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  35..            
34050 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
34060 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
34070 6e 6f 4e 65 74 46 78 33 35 3b 20 7d 0d 0a 20 20  noNetFx35; }..  
34080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
34090 74 20 7b 20 6e 6f 4e 65 74 46 78 33 35 20 3d 20  t { noNetFx35 = 
340a0 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
340b0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
340c0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
340d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
340e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
340f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
34110 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
34120 65 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 30  e bool noNetFx40
34130 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
34140 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74  ublic bool NoNet
34150 46 78 34 30 0d 0a 20 20 20 20 20 20 20 20 20 20  Fx40..          
34160 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
34170 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
34180 6e 20 6e 6f 4e 65 74 46 78 34 30 3b 20 7d 0d 0a  n noNetFx40; }..
34190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
341a0 73 65 74 20 7b 20 6e 6f 4e 65 74 46 78 34 30 20  set { noNetFx40 
341b0 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
341c0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
341d0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
341e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
341f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
34220 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
34230 61 74 65 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78  ate bool noNetFx
34240 34 35 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  45;..           
34250 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4e   public bool NoN
34260 65 74 46 78 34 35 0d 0a 20 20 20 20 20 20 20 20  etFx45..        
34270 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
34280 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
34290 75 72 6e 20 6e 6f 4e 65 74 46 78 34 35 3b 20 7d  urn noNetFx45; }
342a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
342b0 20 20 73 65 74 20 7b 20 6e 6f 4e 65 74 46 78 34    set { noNetFx4
342c0 35 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  5 = value; }..  
342d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
342e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
342f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
34330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
34340 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 4e 65 74  ivate bool noNet
34350 46 78 34 35 31 3b 0d 0a 20 20 20 20 20 20 20 20  Fx451;..        
34360 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
34370 4e 6f 4e 65 74 46 78 34 35 31 0d 0a 20 20 20 20  NoNetFx451..    
34380 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
34390 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
343a0 20 72 65 74 75 72 6e 20 6e 6f 4e 65 74 46 78 34   return noNetFx4
343b0 35 31 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  51; }..         
343c0 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e 6f 4e         set { noN
343d0 65 74 46 78 34 35 31 20 3d 20 76 61 6c 75 65 3b  etFx451 = value;
343e0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
343f0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
34400 20 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 2f  ////////////////
34420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34440 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
34450 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
34460 20 6e 6f 4e 65 74 46 78 34 35 32 3b 0d 0a 20 20   noNetFx452;..  
34470 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
34480 20 62 6f 6f 6c 20 4e 6f 4e 65 74 46 78 34 35 32   bool NoNetFx452
34490 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
344a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
344b0 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f   get { return no
344c0 4e 65 74 46 78 34 35 32 3b 20 7d 0d 0a 20 20 20  NetFx452; }..   
344d0 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
344e0 20 7b 20 6e 6f 4e 65 74 46 78 34 35 32 20 3d 20   { noNetFx452 = 
344f0 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
34500 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
34510 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
34520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
34560 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
34570 65 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 36  e bool noNetFx46
34580 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
34590 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74  ublic bool NoNet
345a0 46 78 34 36 0d 0a 20 20 20 20 20 20 20 20 20 20  Fx46..          
345b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
345c0 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
345d0 6e 20 6e 6f 4e 65 74 46 78 34 36 3b 20 7d 0d 0a  n noNetFx46; }..
345e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
345f0 73 65 74 20 7b 20 6e 6f 4e 65 74 46 78 34 36 20  set { noNetFx46 
34600 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
34610 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
34620 20 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
34670 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
34680 61 74 65 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78  ate bool noNetFx
34690 34 36 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  461;..          
346a0 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f    public bool No
346b0 4e 65 74 46 78 34 36 31 0d 0a 20 20 20 20 20 20  NetFx461..      
346c0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
346d0 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
346e0 65 74 75 72 6e 20 6e 6f 4e 65 74 46 78 34 36 31  eturn noNetFx461
346f0 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
34700 20 20 20 20 20 73 65 74 20 7b 20 6e 6f 4e 65 74       set { noNet
34710 46 78 34 36 31 20 3d 20 76 61 6c 75 65 3b 20 7d  Fx461 = value; }
34720 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
34730 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
34740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34760 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
34790 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e    private bool n
347a0 6f 4e 65 74 46 78 34 36 32 3b 0d 0a 20 20 20 20  oNetFx462;..    
347b0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
347c0 6f 6f 6c 20 4e 6f 4e 65 74 46 78 34 36 32 0d 0a  ool NoNetFx462..
347d0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
347e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
347f0 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f 4e 65  et { return noNe
34800 74 46 78 34 36 32 3b 20 7d 0d 0a 20 20 20 20 20  tFx462; }..     
34810 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
34820 20 6e 6f 4e 65 74 46 78 34 36 32 20 3d 20 76 61   noNetFx462 = va
34830 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
34840 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
34850 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
34860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34890 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
348a0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
348b0 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 37 3b 0d  bool noNetFx47;.
348c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
348d0 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74 46 78  lic bool NoNetFx
348e0 34 37 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  47..            
348f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
34900 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
34910 6e 6f 4e 65 74 46 78 34 37 3b 20 7d 0d 0a 20 20  noNetFx47; }..  
34920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
34930 74 20 7b 20 6e 6f 4e 65 74 46 78 34 37 20 3d 20  t { noNetFx47 = 
34940 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
34950 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
34960 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
34970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
349a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
349b0 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
349c0 65 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 37  e bool noNetFx47
349d0 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  1;..            
349e0 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4e 65  public bool NoNe
349f0 74 46 78 34 37 31 0d 0a 20 20 20 20 20 20 20 20  tFx471..        
34a00 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
34a10 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
34a20 75 72 6e 20 6e 6f 4e 65 74 46 78 34 37 31 3b 20  urn noNetFx471; 
34a30 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
34a40 20 20 20 73 65 74 20 7b 20 6e 6f 4e 65 74 46 78     set { noNetFx
34a50 34 37 31 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  471 = value; }..
34a60 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
34a70 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
34a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34ac0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
34ad0 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 56  private bool noV
34ae0 73 32 30 30 35 3b 0d 0a 20 20 20 20 20 20 20 20  s2005;..        
34af0 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
34b00 4e 6f 56 73 32 30 30 35 0d 0a 20 20 20 20 20 20  NoVs2005..      
34b10 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
34b20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
34b30 65 74 75 72 6e 20 6e 6f 56 73 32 30 30 35 3b 20  eturn noVs2005; 
34b40 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
34b50 20 20 20 73 65 74 20 7b 20 6e 6f 56 73 32 30 30     set { noVs200
34b60 35 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  5 = value; }..  
34b70 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
34b80 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
34b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
34bd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
34be0 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 56 73 32  ivate bool noVs2
34bf0 30 30 38 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  008;..          
34c00 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f    public bool No
34c10 56 73 32 30 30 38 0d 0a 20 20 20 20 20 20 20 20  Vs2008..        
34c20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
34c30 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
34c40 75 72 6e 20 6e 6f 56 73 32 30 30 38 3b 20 7d 0d  urn noVs2008; }.
34c50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34c60 20 73 65 74 20 7b 20 6e 6f 56 73 32 30 30 38 20   set { noVs2008 
34c70 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
34c80 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
34c90 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
34ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
34ce0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
34cf0 61 74 65 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 31  ate bool noVs201
34d00 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0;..            
34d10 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 56 73  public bool NoVs
34d20 32 30 31 30 0d 0a 20 20 20 20 20 20 20 20 20 20  2010..          
34d30 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
34d40 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
34d50 6e 20 6e 6f 56 73 32 30 31 30 3b 20 7d 0d 0a 20  n noVs2010; }.. 
34d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
34d70 65 74 20 7b 20 6e 6f 56 73 32 30 31 30 20 3d 20  et { noVs2010 = 
34d80 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
34d90 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
34da0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
34db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
34df0 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
34e00 65 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 31 32 3b  e bool noVs2012;
34e10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
34e20 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 56 73 32 30  blic bool NoVs20
34e30 31 32 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  12..            
34e40 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
34e50 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
34e60 6e 6f 56 73 32 30 31 32 3b 20 7d 0d 0a 20 20 20  noVs2012; }..   
34e70 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
34e80 20 7b 20 6e 6f 56 73 32 30 31 32 20 3d 20 76 61   { noVs2012 = va
34e90 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
34ea0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
34eb0 20 20 20 20 20 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 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
34f00 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
34f10 62 6f 6f 6c 20 6e 6f 56 73 32 30 31 33 3b 0d 0a  bool noVs2013;..
34f20 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
34f30 69 63 20 62 6f 6f 6c 20 4e 6f 56 73 32 30 31 33  ic bool NoVs2013
34f40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
34f50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34f60 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f   get { return no
34f70 56 73 32 30 31 33 3b 20 7d 0d 0a 20 20 20 20 20  Vs2013; }..     
34f80 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
34f90 20 6e 6f 56 73 32 30 31 33 20 3d 20 76 61 6c 75   noVs2013 = valu
34fa0 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
34fb0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
34fc0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
34fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35000 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
35010 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
35020 6f 6c 20 6e 6f 56 73 32 30 31 35 3b 0d 0a 20 20  ol noVs2015;..  
35030 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
35040 20 62 6f 6f 6c 20 4e 6f 56 73 32 30 31 35 0d 0a   bool NoVs2015..
35050 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
35060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
35070 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f 56 73  et { return noVs
35080 32 30 31 35 3b 20 7d 0d 0a 20 20 20 20 20 20 20  2015; }..       
35090 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e           set { n
350a0 6f 56 73 32 30 31 35 20 3d 20 76 61 6c 75 65 3b  oVs2015 = value;
350b0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
350c0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
350d0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
350e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
350f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35110 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
35120 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
35130 20 6e 6f 56 73 32 30 31 37 3b 0d 0a 20 20 20 20   noVs2017;..    
35140 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
35150 6f 6f 6c 20 4e 6f 56 73 32 30 31 37 0d 0a 20 20  ool NoVs2017..  
35160 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
35170 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
35180 20 7b 20 72 65 74 75 72 6e 20 6e 6f 56 73 32 30   { return noVs20
35190 31 37 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  17; }..         
351a0 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e 6f 56         set { noV
351b0 73 32 30 31 37 20 3d 20 76 61 6c 75 65 3b 20 7d  s2017 = value; }
351c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
351d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
351e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
351f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35220 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
35230 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e    private bool n
35240 6f 54 72 61 63 65 3b 0d 0a 20 20 20 20 20 20 20  oTrace;..       
35250 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c       public bool
35260 20 4e 6f 54 72 61 63 65 0d 0a 20 20 20 20 20 20   NoTrace..      
35270 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
35280 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
35290 65 74 75 72 6e 20 6e 6f 54 72 61 63 65 3b 20 7d  eturn noTrace; }
352a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
352b0 20 20 73 65 74 20 7b 20 6e 6f 54 72 61 63 65 20    set { noTrace 
352c0 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
352d0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
352e0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
352f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
35330 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
35340 61 74 65 20 62 6f 6f 6c 20 6e 6f 43 6f 6e 73 6f  ate bool noConso
35350 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le;..           
35360 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 43   public bool NoC
35370 6f 6e 73 6f 6c 65 0d 0a 20 20 20 20 20 20 20 20  onsole..        
35380 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
35390 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
353a0 75 72 6e 20 6e 6f 43 6f 6e 73 6f 6c 65 3b 20 7d  urn noConsole; }
353b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
353c0 20 20 73 65 74 20 7b 20 6e 6f 43 6f 6e 73 6f 6c    set { noConsol
353d0 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  e = value; }..  
353e0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
353f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
35400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
35440 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
35450 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 4c 6f 67  ivate bool noLog
35460 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
35470 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4c 6f 67  ublic bool NoLog
35480 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
35490 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
354a0 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f   get { return no
354b0 4c 6f 67 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  Log; }..        
354c0 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e 6f          set { no
354d0 4c 6f 67 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  Log = value; }..
354e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
354f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
35500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35540 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
35550 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 74 68 72  private bool thr
35560 6f 77 4f 6e 4d 69 73 73 69 6e 67 3b 0d 0a 20 20  owOnMissing;..  
35570 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
35580 20 62 6f 6f 6c 20 54 68 72 6f 77 4f 6e 4d 69 73   bool ThrowOnMis
35590 73 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20  sing..          
355a0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
355b0 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
355c0 6e 20 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67  n throwOnMissing
355d0 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
355e0 20 20 20 20 20 73 65 74 20 7b 20 74 68 72 6f 77       set { throw
355f0 4f 6e 4d 69 73 73 69 6e 67 20 3d 20 76 61 6c 75  OnMissing = valu
35600 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
35610 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
35620 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
35630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35660 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
35670 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
35680 6f 6c 20 77 68 61 74 49 66 3b 0d 0a 20 20 20 20  ol whatIf;..    
35690 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
356a0 6f 6f 6c 20 57 68 61 74 49 66 0d 0a 20 20 20 20  ool WhatIf..    
356b0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
356c0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
356d0 20 72 65 74 75 72 6e 20 77 68 61 74 49 66 3b 20   return whatIf; 
356e0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
356f0 20 20 20 73 65 74 20 7b 20 77 68 61 74 49 66 20     set { whatIf 
35700 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
35710 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
35720 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
35730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
35770 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
35780 61 74 65 20 62 6f 6f 6c 20 64 65 62 75 67 3b 0d  ate bool debug;.
35790 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
357a0 6c 69 63 20 62 6f 6f 6c 20 44 65 62 75 67 0d 0a  lic bool Debug..
357b0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
357c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
357d0 65 74 20 7b 20 72 65 74 75 72 6e 20 64 65 62 75  et { return debu
357e0 67 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  g; }..          
357f0 20 20 20 20 20 20 73 65 74 20 7b 20 64 65 62 75        set { debu
35800 67 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  g = value; }..  
35810 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
35820 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
35830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
35870 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
35880 69 76 61 74 65 20 62 6f 6f 6c 20 76 65 72 62 6f  ivate bool verbo
35890 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se;..           
358a0 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 56 65 72   public bool Ver
358b0 62 6f 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  bose..          
358c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
358d0 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
358e0 6e 20 76 65 72 62 6f 73 65 3b 20 7d 0d 0a 20 20  n verbose; }..  
358f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
35900 74 20 7b 20 76 65 72 62 6f 73 65 20 3d 20 76 61  t { verbose = va
35910 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
35920 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
35930 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
35940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35970 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
35980 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
35990 62 6f 6f 6c 20 63 6f 6e 66 69 72 6d 3b 0d 0a 20  bool confirm;.. 
359a0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
359b0 63 20 62 6f 6f 6c 20 43 6f 6e 66 69 72 6d 0d 0a  c bool Confirm..
359c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
359d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
359e0 65 74 20 7b 20 72 65 74 75 72 6e 20 63 6f 6e 66  et { return conf
359f0 69 72 6d 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  irm; }..        
35a00 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 63 6f          set { co
35a10 6e 66 69 72 6d 20 3d 20 76 61 6c 75 65 3b 20 7d  nfirm = value; }
35a20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
35a30 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e  .            #en
35a40 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 20 20 20  dregion..       
35a50 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
35a60 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
35a70 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
35a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
35ac0 20 20 20 20 20 23 72 65 67 69 6f 6e 20 46 72 61       #region Fra
35ad0 6d 65 77 6f 72 6b 4c 69 73 74 20 43 6c 61 73 73  meworkList Class
35ae0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
35af0 65 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 46  e sealed class F
35b00 72 61 6d 65 77 6f 72 6b 4c 69 73 74 0d 0a 20 20  rameworkList..  
35b10 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
35b20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
35b30 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73  lic Constructors
35b40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
35b50 62 6c 69 63 20 46 72 61 6d 65 77 6f 72 6b 4c 69  blic FrameworkLi
35b60 73 74 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  st()..          
35b70 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
35b80 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
35b90 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
35ba0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
35bb0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
35bc0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
35bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
35c10 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
35c20 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74 68  gion Public Meth
35c30 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ods..           
35c40 20 70 72 69 76 61 74 65 20 4d 6f 63 6b 52 65 67   private MockReg
35c50 69 73 74 72 79 4b 65 79 20 72 6f 6f 74 4b 65 79  istryKey rootKey
35c60 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
35c70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74  ublic MockRegist
35c80 72 79 4b 65 79 20 52 6f 6f 74 4b 65 79 0d 0a 20  ryKey RootKey.. 
35c90 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
35ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
35cb0 74 20 7b 20 72 65 74 75 72 6e 20 72 6f 6f 74 4b  t { return rootK
35cc0 65 79 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  ey; }..         
35cd0 20 20 20 20 20 20 20 73 65 74 20 7b 20 72 6f 6f         set { roo
35ce0 74 4b 65 79 20 3d 20 76 61 6c 75 65 3b 20 7d 0d  tKey = value; }.
35cf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
35d00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
35d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d50 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
35d60 20 70 72 69 76 61 74 65 20 53 74 72 69 6e 67 4c   private StringL
35d70 69 73 74 20 6e 61 6d 65 73 3b 0d 0a 20 20 20 20  ist names;..    
35d80 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
35d90 74 72 69 6e 67 4c 69 73 74 20 4e 61 6d 65 73 0d  tringList Names.
35da0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
35db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35dc0 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 61 6d  get { return nam
35dd0 65 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  es; }..         
35de0 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e 61 6d         set { nam
35df0 65 73 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20  es = value; }.. 
35e00 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
35e10 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
35e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
35e60 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
35e70 72 69 76 61 74 65 20 56 65 72 73 69 6f 6e 4d 61  rivate VersionMa
35e80 70 20 76 65 72 73 69 6f 6e 73 3b 0d 0a 20 20 20  p versions;..   
35e90 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
35ea0 56 65 72 73 69 6f 6e 4d 61 70 20 56 65 72 73 69  VersionMap Versi
35eb0 6f 6e 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ons..           
35ec0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
35ed0 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
35ee0 20 76 65 72 73 69 6f 6e 73 3b 20 7d 0d 0a 20 20   versions; }..  
35ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
35f00 74 20 7b 20 76 65 72 73 69 6f 6e 73 20 3d 20 76  t { versions = v
35f10 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  alue; }..       
35f20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
35f30 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
35f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
35f80 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
35f90 20 53 74 72 69 6e 67 4c 69 73 74 20 70 6c 61 74   StringList plat
35fa0 66 6f 72 6d 4e 61 6d 65 73 3b 0d 0a 20 20 20 20  formNames;..    
35fb0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
35fc0 74 72 69 6e 67 4c 69 73 74 20 50 6c 61 74 66 6f  tringList Platfo
35fd0 72 6d 4e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20  rmNames..       
35fe0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
35ff0 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
36000 74 75 72 6e 20 70 6c 61 74 66 6f 72 6d 4e 61 6d  turn platformNam
36010 65 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  es; }..         
36020 20 20 20 20 20 20 20 73 65 74 20 7b 20 70 6c 61         set { pla
36030 74 66 6f 72 6d 4e 61 6d 65 73 20 3d 20 76 61 6c  tformNames = val
36040 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  ue; }..         
36050 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
36060 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
36070 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
36080 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
36090 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
360a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
360b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
360c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
360d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
360e0 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
360f0 6e 20 56 73 4c 69 73 74 20 43 6c 61 73 73 0d 0a  n VsList Class..
36100 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
36110 73 65 61 6c 65 64 20 63 6c 61 73 73 20 56 73 4c  sealed class VsL
36120 69 73 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ist..        {..
36130 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
36140 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74  ion Public Const
36150 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20  ructors..       
36160 20 20 20 20 20 70 75 62 6c 69 63 20 56 73 4c 69       public VsLi
36170 73 74 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  st()..          
36180 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
36190 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
361a0 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
361b0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
361c0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
361d0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
361e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
361f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
36220 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
36230 67 69 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f 70  gion Public Prop
36240 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20  erties..        
36250 20 20 20 20 70 72 69 76 61 74 65 20 4d 6f 63 6b      private Mock
36260 52 65 67 69 73 74 72 79 4b 65 79 20 72 6f 6f 74  RegistryKey root
36270 4b 65 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  Key;..          
36280 20 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67    public MockReg
36290 69 73 74 72 79 4b 65 79 20 52 6f 6f 74 4b 65 79  istryKey RootKey
362a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
362b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
362c0 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 72 6f   get { return ro
362d0 6f 74 4b 65 79 3b 20 7d 0d 0a 20 20 20 20 20 20  otKey; }..      
362e0 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
362f0 72 6f 6f 74 4b 65 79 20 3d 20 76 61 6c 75 65 3b  rootKey = value;
36300 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
36310 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
36320 20 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 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
36370 20 20 20 20 70 72 69 76 61 74 65 20 56 65 72 73      private Vers
36380 69 6f 6e 4c 69 73 74 20 76 65 72 73 69 6f 6e 73  ionList versions
36390 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
363a0 75 62 6c 69 63 20 56 65 72 73 69 6f 6e 4c 69 73  ublic VersionLis
363b0 74 20 56 65 72 73 69 6f 6e 73 0d 0a 20 20 20 20  t Versions..    
363c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
363d0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
363e0 20 72 65 74 75 72 6e 20 76 65 72 73 69 6f 6e 73   return versions
363f0 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
36400 20 20 20 20 20 73 65 74 20 7b 20 76 65 72 73 69       set { versi
36410 6f 6e 73 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  ons = value; }..
36420 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
36430 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
36440 65 67 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7d  egion..        }
36450 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
36460 67 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 23 65  gion..        #e
36470 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
36480 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
36490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
364a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
364b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
364c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
364d0 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
364e0 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 20  rivate Constant 
364f0 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 23 72  Data..        #r
36500 65 67 69 6f 6e 20 50 61 63 6b 61 67 65 20 26 20  egion Package & 
36510 50 72 6f 76 69 64 65 72 20 4e 61 6d 65 73 0d 0a  Provider Names..
36520 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
36530 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 43 6f 72  const string Cor
36540 65 46 69 6c 65 4e 61 6d 65 20 3d 20 22 53 79 73  eFileName = "Sys
36550 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e  tem.Data.SQLite.
36560 64 6c 6c 22 3b 0d 0a 20 20 20 20 20 20 20 20 70  dll";..        p
36570 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72  rivate const str
36580 69 6e 67 20 4c 69 6e 71 46 69 6c 65 4e 61 6d 65  ing LinqFileName
36590 20 3d 20 22 53 79 73 74 65 6d 2e 44 61 74 61 2e   = "System.Data.
365a0 53 51 4c 69 74 65 2e 4c 69 6e 71 2e 64 6c 6c 22  SQLite.Linq.dll"
365b0 3b 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ;..        priva
365c0 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  te const string 
365d0 45 66 36 46 69 6c 65 4e 61 6d 65 20 3d 20 22 53  Ef6FileName = "S
365e0 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
365f0 65 2e 45 46 36 2e 64 6c 6c 22 3b 0d 0a 20 20 20  e.EF6.dll";..   
36600 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e       private con
36610 73 74 20 73 74 72 69 6e 67 20 44 65 73 69 67 6e  st string Design
36620 65 72 46 69 6c 65 4e 61 6d 65 20 3d 20 22 53 51  erFileName = "SQ
36630 4c 69 74 65 2e 44 65 73 69 67 6e 65 72 2e 64 6c  Lite.Designer.dl
36640 6c 22 3b 0d 0a 20 20 20 20 20 20 20 20 70 72 69  l";..        pri
36650 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e  vate const strin
36660 67 20 50 72 6f 76 69 64 65 72 4e 61 6d 65 20 3d  g ProviderName =
36670 20 22 53 51 4c 69 74 65 20 44 61 74 61 20 50 72   "SQLite Data Pr
36680 6f 76 69 64 65 72 22 3b 0d 0a 20 20 20 20 20 20  ovider";..      
36690 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20    private const 
366a0 73 74 72 69 6e 67 20 50 72 6f 6a 65 63 74 4e 61  string ProjectNa
366b0 6d 65 20 3d 20 22 53 79 73 74 65 6d 2e 44 61 74  me = "System.Dat
366c0 61 2e 53 51 4c 69 74 65 22 3b 0d 0a 20 20 20 20  a.SQLite";..    
366d0 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73      private cons
366e0 74 20 73 74 72 69 6e 67 20 4c 65 67 61 63 79 50  t string LegacyP
366f0 72 6f 6a 65 63 74 4e 61 6d 65 20 3d 20 22 53 51  rojectName = "SQ
36700 4c 69 74 65 22 3b 0d 0a 0d 0a 20 20 20 20 20 20  Lite";....      
36710 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
36720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36750 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
36760 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e       private con
36770 73 74 20 73 74 72 69 6e 67 20 44 65 73 63 72 69  st string Descri
36780 70 74 69 6f 6e 20 3d 0d 0a 20 20 20 20 20 20 20  ption =..       
36790 20 20 20 20 20 22 2e 4e 45 54 20 46 72 61 6d 65       ".NET Frame
367a0 77 6f 72 6b 20 44 61 74 61 20 50 72 6f 76 69 64  work Data Provid
367b0 65 72 20 66 6f 72 20 53 51 4c 69 74 65 22 3b 0d  er for SQLite";.
367c0 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
367d0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
367e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
367f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36820 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
36830 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20    private const 
36840 73 74 72 69 6e 67 20 44 69 73 70 6c 61 79 4e 75  string DisplayNu
36850 6c 6c 20 3d 20 22 3c 6e 75 6c 6c 3e 22 3b 0d 0a  ll = "<null>";..
36860 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
36870 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 44 69 73  const string Dis
36880 70 6c 61 79 45 6d 70 74 79 20 3d 20 22 3c 65 6d  playEmpty = "<em
36890 70 74 79 3e 22 3b 0d 0a 0d 0a 20 20 20 20 20 20  pty>";....      
368a0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
368b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
368c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
368d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
368e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
368f0 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e       private con
36900 73 74 20 73 74 72 69 6e 67 20 43 4c 52 76 32 49  st string CLRv2I
36910 6d 61 67 65 52 75 6e 74 69 6d 65 56 65 72 73 69  mageRuntimeVersi
36920 6f 6e 20 3d 20 22 76 32 2e 30 2e 35 30 37 32 37  on = "v2.0.50727
36930 22 3b 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ";..        priv
36940 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  ate const string
36950 20 43 4c 52 76 34 49 6d 61 67 65 52 75 6e 74 69   CLRv4ImageRunti
36960 6d 65 56 65 72 73 69 6f 6e 20 3d 20 22 76 34 2e  meVersion = "v4.
36970 30 2e 33 30 33 31 39 22 3b 0d 0a 0d 0a 20 20 20  0.30319";....   
36980 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
36990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
369a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
369b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
369c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
369d0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
369e0 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 79 73  const string Sys
369f0 74 65 6d 45 66 36 41 73 73 65 6d 62 6c 79 4e 61  temEf6AssemblyNa
36a00 6d 65 20 3d 20 22 45 6e 74 69 74 79 46 72 61 6d  me = "EntityFram
36a10 65 77 6f 72 6b 2c 20 22 20 2b 0d 0a 20 20 20 20  ework, " +..    
36a20 20 20 20 20 20 20 20 20 22 56 65 72 73 69 6f 6e          "Version
36a30 3d 36 2e 30 2e 30 2e 30 2c 20 43 75 6c 74 75 72  =6.0.0.0, Cultur
36a40 65 3d 6e 65 75 74 72 61 6c 2c 20 50 75 62 6c 69  e=neutral, Publi
36a50 63 4b 65 79 54 6f 6b 65 6e 3d 62 37 37 61 35 63  cKeyToken=b77a5c
36a60 35 36 31 39 33 34 65 30 38 39 22 3b 0d 0a 0d 0a  561934e089";....
36a70 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
36a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
36ac0 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
36ad0 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  te const string 
36ae0 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d  NameAndValueForm
36af0 61 74 20 3d 20 22 7b 30 7d 3a 20 7b 31 7d 22 3b  at = "{0}: {1}";
36b00 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
36b10 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 4c  e const string L
36b20 6f 67 46 69 6c 65 53 75 66 66 69 78 20 3d 20 22  ogFileSuffix = "
36b30 2e 6c 6f 67 22 3b 0d 0a 0d 0a 20 20 20 20 20 20  .log";....      
36b40 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
36b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
36b90 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e       private con
36ba0 73 74 20 73 74 72 69 6e 67 20 56 73 44 65 76 45  st string VsDevE
36bb0 6e 76 53 65 74 75 70 46 6f 72 6d 61 74 20 3d 20  nvSetupFormat = 
36bc0 22 7b 30 7d 3a 20 7b 31 7d 22 3b 0d 0a 0d 0a 20  "{0}: {1}";.... 
36bd0 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
36c20 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
36c30 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 52  e const string R
36c40 6f 6f 74 4b 65 79 4e 61 6d 65 20 3d 20 22 53 6f  ootKeyName = "So
36c50 66 74 77 61 72 65 22 3b 0d 0a 20 20 20 20 20 20  ftware";..      
36c60 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20    private const 
36c70 73 74 72 69 6e 67 20 57 6f 77 36 34 53 75 62 4b  string Wow64SubK
36c80 65 79 4e 61 6d 65 20 3d 20 22 57 6f 77 36 34 33  eyName = "Wow643
36c90 32 4e 6f 64 65 22 3b 0d 0a 0d 0a 20 20 20 20 20  2Node";....     
36ca0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
36cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
36cf0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
36d00 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 2e    // NOTE: The .
36d10 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 68 61  NET Framework ha
36d20 73 20 62 6f 74 68 20 33 32 2d 62 69 74 20 61 6e  s both 32-bit an
36d30 64 20 36 34 2d 62 69 74 20 65 64 69 74 69 6f 6e  d 64-bit edition
36d40 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a  s...        //..
36d50 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
36d60 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
36d70 62 6f 6f 6c 20 4e 65 74 46 78 49 73 33 32 42 69  bool NetFxIs32Bi
36d80 74 4f 6e 6c 79 20 3d 20 66 61 6c 73 65 3b 0d 0a  tOnly = false;..
36d90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
36da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36de0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d  /....        //.
36df0 0a 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45  .        // NOTE
36e00 3a 20 46 6f 72 20 6e 6f 77 2c 20 56 69 73 75 61  : For now, Visua
36e10 6c 20 53 74 75 64 69 6f 20 69 73 20 61 6c 77 61  l Studio is alwa
36e20 79 73 20 61 20 33 32 2d 62 69 74 20 61 70 70 6c  ys a 32-bit appl
36e30 69 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ication...      
36e40 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 70 72    //..        pr
36e50 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
36e60 64 6f 6e 6c 79 20 62 6f 6f 6c 20 56 73 49 73 33  donly bool VsIs3
36e70 32 42 69 74 4f 6e 6c 79 20 3d 20 74 72 75 65 3b  2BitOnly = true;
36e80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
36e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
36ee0 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65  rivate static re
36ef0 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 56 73  adonly string Vs
36f00 49 64 46 6f 72 6d 61 74 20 3d 20 22 42 22 3b 0d  IdFormat = "B";.
36f10 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
36f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36f60 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
36f70 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
36f80 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 58 50 61  donly string XPa
36f90 74 68 46 6f 72 41 64 64 45 6c 65 6d 65 6e 74 20  thForAddElement 
36fa0 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22  =..            "
36fb0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2f 73 79  configuration/sy
36fc0 73 74 65 6d 2e 64 61 74 61 2f 44 62 50 72 6f 76  stem.data/DbProv
36fd0 69 64 65 72 46 61 63 74 6f 72 69 65 73 2f 61 64  iderFactories/ad
36fe0 64 5b 40 69 6e 76 61 72 69 61 6e 74 3d 5c 22 7b  d[@invariant=\"{
36ff0 30 7d 5c 22 5d 22 3b 0d 0a 0d 0a 20 20 20 20 20  0}\"]";....     
37000 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
37010 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e  c readonly strin
37020 67 20 58 50 61 74 68 46 6f 72 52 65 6d 6f 76 65  g XPathForRemove
37030 45 6c 65 6d 65 6e 74 20 3d 0d 0a 20 20 20 20 20  Element =..     
37040 20 20 20 20 20 20 20 22 63 6f 6e 66 69 67 75 72         "configur
37050 61 74 69 6f 6e 2f 73 79 73 74 65 6d 2e 64 61 74  ation/system.dat
37060 61 2f 44 62 50 72 6f 76 69 64 65 72 46 61 63 74  a/DbProviderFact
37070 6f 72 69 65 73 2f 72 65 6d 6f 76 65 5b 40 69 6e  ories/remove[@in
37080 76 61 72 69 61 6e 74 3d 5c 22 7b 30 7d 5c 22 5d  variant=\"{0}\"]
37090 22 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64  ";..        #end
370a0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
370b0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
370c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
370d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
370e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
370f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
37100 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
37110 76 61 74 65 20 53 74 61 74 69 63 20 44 61 74 61  vate Static Data
37120 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
37130 6e 20 44 69 61 67 6e 6f 73 74 69 63 73 20 26 20  n Diagnostics & 
37140 4c 6f 67 67 69 6e 67 0d 0a 20 20 20 20 20 20 20  Logging..       
37150 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20   //..        // 
37160 4e 4f 54 45 3a 20 43 61 63 68 65 20 74 68 65 20  NOTE: Cache the 
37170 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 20  current process 
37180 61 6e 64 20 61 73 73 65 6d 62 6c 79 20 61 73 20  and assembly as 
37190 74 68 65 79 20 64 6f 20 6e 6f 74 20 63 68 61 6e  they do not chan
371a0 67 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 20  ge..        //  
371b0 20 20 20 20 20 61 6e 64 20 6d 61 79 20 62 65 20       and may be 
371c0 6e 65 65 64 65 64 20 69 6e 20 71 75 69 74 65 20  needed in quite 
371d0 61 20 66 65 77 20 64 69 66 66 65 72 65 6e 74 20  a few different 
371e0 70 6c 61 63 65 73 2e 0d 0a 20 20 20 20 20 20 20  places...       
371f0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 70 72 69   //..        pri
37200 76 61 74 65 20 73 74 61 74 69 63 20 50 72 6f 63  vate static Proc
37210 65 73 73 20 74 68 69 73 50 72 6f 63 65 73 73 20  ess thisProcess 
37220 3d 20 50 72 6f 63 65 73 73 2e 47 65 74 43 75 72  = Process.GetCur
37230 72 65 6e 74 50 72 6f 63 65 73 73 28 29 3b 0d 0a  rentProcess();..
37240 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
37250 73 74 61 74 69 63 20 41 73 73 65 6d 62 6c 79 20  static Assembly 
37260 74 68 69 73 41 73 73 65 6d 62 6c 79 20 3d 20 41  thisAssembly = A
37270 73 73 65 6d 62 6c 79 2e 47 65 74 45 78 65 63 75  ssembly.GetExecu
37280 74 69 6e 67 41 73 73 65 6d 62 6c 79 28 29 3b 0d  tingAssembly();.
37290 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
372a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
372b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
372c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
372d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
372e0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
372f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54  ..        // NOT
37300 45 3a 20 54 68 65 20 74 72 61 63 65 20 63 61 74  E: The trace cat
37310 65 67 6f 72 79 20 69 73 20 74 68 65 20 73 61 6d  egory is the sam
37320 65 20 66 6f 72 20 62 6f 74 68 20 74 68 65 20 64  e for both the d
37330 65 62 75 67 20 61 6e 64 20 74 72 61 63 65 0d 0a  ebug and trace..
37340 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
37350 20 63 61 6c 6c 62 61 63 6b 73 2e 0d 0a 20 20 20   callbacks...   
37360 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
37370 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
37380 73 74 72 69 6e 67 20 74 72 61 63 65 43 61 74 65  string traceCate
37390 67 6f 72 79 20 3d 20 28 74 68 69 73 41 73 73 65  gory = (thisAsse
373a0 6d 62 6c 79 20 21 3d 20 6e 75 6c 6c 29 20 3f 0d  mbly != null) ?.
373b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 50 61 74  .            Pat
373c0 68 2e 47 65 74 46 69 6c 65 4e 61 6d 65 28 74 68  h.GetFileName(th
373d0 69 73 41 73 73 65 6d 62 6c 79 2e 4c 6f 63 61 74  isAssembly.Locat
373e0 69 6f 6e 29 20 3a 20 6e 75 6c 6c 3b 0d 0a 0d 0a  ion) : null;....
373f0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
37400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
37440 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  ...        //.. 
37450 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
37460 53 65 74 20 74 68 65 20 64 65 62 75 67 20 61 6e  Set the debug an
37470 64 20 74 72 61 63 65 20 6c 6f 67 67 69 6e 67 20  d trace logging 
37480 63 61 6c 6c 62 61 63 6b 73 20 75 73 65 64 20 62  callbacks used b
37490 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  y the..        /
374a0 2f 20 20 20 20 20 20 20 61 70 70 6c 69 63 61 74  /       applicat
374b0 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
374c0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
374d0 65 20 73 74 61 74 69 63 20 54 72 61 63 65 43 61  e static TraceCa
374e0 6c 6c 62 61 63 6b 20 64 65 62 75 67 43 61 6c 6c  llback debugCall
374f0 62 61 63 6b 20 3d 20 41 70 70 44 65 62 75 67 3b  back = AppDebug;
37500 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
37510 65 20 73 74 61 74 69 63 20 54 72 61 63 65 43 61  e static TraceCa
37520 6c 6c 62 61 63 6b 20 74 72 61 63 65 43 61 6c 6c  llback traceCall
37530 62 61 63 6b 20 3d 20 41 70 70 54 72 61 63 65 3b  back = AppTrace;
37540 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
37550 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
37560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
375a0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
375b0 20 20 20 23 72 65 67 69 6f 6e 20 53 79 73 74 65     #region Syste
375c0 6d 20 44 69 72 65 63 74 6f 72 79 0d 0a 20 20 20  m Directory..   
375d0 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
375e0 74 69 63 20 73 74 72 69 6e 67 20 73 79 73 74 65  tic string syste
375f0 6d 44 69 72 65 63 74 6f 72 79 20 3d 20 6e 75 6c  mDirectory = nul
37600 6c 3b 0d 0a 0d 0a 23 69 66 20 57 49 4e 44 4f 57  l;....#if WINDOW
37610 53 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  S..        priva
37620 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
37630 20 73 79 73 74 65 6d 44 69 72 65 63 74 6f 72 79   systemDirectory
37640 57 6f 77 36 34 20 3d 20 6e 75 6c 6c 3b 0d 0a 23  Wow64 = null;..#
37650 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 23  endif..        #
37660 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
37670 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
37680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
376a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
376b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
376c0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
376d0 52 65 67 69 73 74 72 79 20 53 74 61 74 69 73 74  Registry Statist
376e0 69 63 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ics..        pri
376f0 76 61 74 65 20 73 74 61 74 69 63 20 69 6e 74 20  vate static int 
37700 66 69 6c 65 73 43 72 65 61 74 65 64 20 3d 20 30  filesCreated = 0
37710 3b 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ;..        priva
37720 74 65 20 73 74 61 74 69 63 20 69 6e 74 20 66 69  te static int fi
37730 6c 65 73 4d 6f 64 69 66 69 65 64 20 3d 20 30 3b  lesModified = 0;
37740 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
37750 65 20 73 74 61 74 69 63 20 69 6e 74 20 66 69 6c  e static int fil
37760 65 73 44 65 6c 65 74 65 64 20 3d 20 30 3b 0d 0a  esDeleted = 0;..
37770 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
37780 6f 6e 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64  on..        #end
37790 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
377a0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
377b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
377c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
377d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
377e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
377f0 20 20 20 20 20 23 72 65 67 69 6f 6e 20 54 72 61       #region Tra
37800 63 65 20 48 61 6e 64 6c 69 6e 67 0d 0a 20 20 20  ce Handling..   
37810 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
37820 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 4c 6f  tic string GetLo
37830 67 46 69 6c 65 4e 61 6d 65 28 0d 0a 20 20 20 20  gFileName(..    
37840 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 74          string t
37850 79 70 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20  ypeName..       
37860 20 20 20 20 20 29 20 2f 2a 20 74 68 72 6f 77 20       ) /* throw 
37870 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  */..        {.. 
37880 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
37890 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74  g fileName = Pat
378a0 68 2e 47 65 74 54 65 6d 70 46 69 6c 65 4e 61 6d  h.GetTempFileNam
378b0 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  e();..          
378c0 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f    string directo
378d0 72 79 20 3d 20 50 61 74 68 2e 47 65 74 44 69 72  ry = Path.GetDir
378e0 65 63 74 6f 72 79 4e 61 6d 65 28 66 69 6c 65 4e  ectoryName(fileN
378f0 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ame);..         
37900 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61     string fileNa
37910 6d 65 4f 6e 6c 79 20 3d 20 50 61 74 68 2e 47 65  meOnly = Path.Ge
37920 74 46 69 6c 65 4e 61 6d 65 57 69 74 68 6f 75 74  tFileNameWithout
37930 45 78 74 65 6e 73 69 6f 6e 28 66 69 6c 65 4e 61  Extension(fileNa
37940 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
37950 20 20 20 20 73 74 72 69 6e 67 20 6e 65 77 46 69      string newFi
37960 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68 2e 43 6f  leName = Path.Co
37970 6d 62 69 6e 65 28 64 69 72 65 63 74 6f 72 79 2c  mbine(directory,
37980 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d   String.Format(.
37990 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
379a0 20 22 7b 30 7d 7b 31 7d 7b 32 7d 22 2c 20 74 72   "{0}{1}{2}", tr
379b0 61 63 65 43 61 74 65 67 6f 72 79 2c 20 21 53 74  aceCategory, !St
379c0 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
379d0 74 79 28 74 79 70 65 4e 61 6d 65 29 20 3f 0d 0a  ty(typeName) ?..
379e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
379f0 20 20 20 20 22 2e 22 20 2b 20 74 79 70 65 4e 61      "." + typeNa
37a00 6d 65 20 3a 20 53 74 72 69 6e 67 2e 45 6d 70 74  me : String.Empt
37a10 79 2c 20 22 2e 22 20 2b 20 66 69 6c 65 4e 61 6d  y, "." + fileNam
37a20 65 4f 6e 6c 79 20 2b 0d 0a 20 20 20 20 20 20 20  eOnly +..       
37a30 20 20 20 20 20 20 20 20 20 20 20 20 20 4c 6f 67               Log
37a40 46 69 6c 65 53 75 66 66 69 78 29 29 3b 0d 0a 0d  FileSuffix));...
37a50 0a 20 20 20 20 20 20 20 20 20 20 20 20 46 69 6c  .            Fil
37a60 65 2e 4d 6f 76 65 28 66 69 6c 65 4e 61 6d 65 2c  e.Move(fileName,
37a70 20 6e 65 77 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a   newFileName);..
37a80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
37a90 74 75 72 6e 20 6e 65 77 46 69 6c 65 4e 61 6d 65  turn newFileName
37aa0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
37ab0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
37ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
37b00 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
37b10 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20 41  te static void A
37b20 70 70 44 65 62 75 67 28 0d 0a 20 20 20 20 20 20  ppDebug(..      
37b30 20 20 20 20 20 20 73 74 72 69 6e 67 20 6d 65 73        string mes
37b40 73 61 67 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  sage,..         
37b50 20 20 20 73 74 72 69 6e 67 20 63 61 74 65 67 6f     string catego
37b60 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
37b70 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
37b80 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f            TraceO
37b90 70 73 2e 44 65 62 75 67 43 6f 72 65 28 53 74 72  ps.DebugCore(Str
37ba0 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
37bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
37bc0 63 65 4f 70 73 2e 44 65 62 75 67 46 6f 72 6d 61  ceOps.DebugForma
37bd0 74 2c 20 54 72 61 63 65 4f 70 73 2e 4e 65 78 74  t, TraceOps.Next
37be0 44 65 62 75 67 49 64 28 29 2c 0d 0a 20 20 20 20  DebugId(),..    
37bf0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
37c00 65 4f 70 73 2e 54 69 6d 65 53 74 61 6d 70 28 44  eOps.TimeStamp(D
37c10 61 74 65 54 69 6d 65 2e 55 74 63 4e 6f 77 29 2c  ateTime.UtcNow),
37c20 20 6d 65 73 73 61 67 65 29 2c 20 63 61 74 65 67   message), categ
37c30 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ory);..        }
37c40 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
37c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37c90 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
37ca0 72 69 76 61 74 65 20 73 74 61 74 69 63 20 76 6f  rivate static vo
37cb0 69 64 20 41 70 70 54 72 61 63 65 28 0d 0a 20 20  id AppTrace(..  
37cc0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
37cd0 20 6d 65 73 73 61 67 65 2c 0d 0a 20 20 20 20 20   message,..     
37ce0 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 63 61         string ca
37cf0 74 65 67 6f 72 79 0d 0a 20 20 20 20 20 20 20 20  tegory..        
37d00 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
37d10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 72  ..            Tr
37d20 61 63 65 4f 70 73 2e 54 72 61 63 65 43 6f 72 65  aceOps.TraceCore
37d30 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d  (String.Format(.
37d40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
37d50 20 54 72 61 63 65 4f 70 73 2e 54 72 61 63 65 46   TraceOps.TraceF
37d60 6f 72 6d 61 74 2c 20 54 72 61 63 65 4f 70 73 2e  ormat, TraceOps.
37d70 4e 65 78 74 54 72 61 63 65 49 64 28 29 2c 0d 0a  NextTraceId(),..
37d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37d90 54 72 61 63 65 4f 70 73 2e 54 69 6d 65 53 74 61  TraceOps.TimeSta
37da0 6d 70 28 44 61 74 65 54 69 6d 65 2e 55 74 63 4e  mp(DateTime.UtcN
37db0 6f 77 29 2c 20 6d 65 73 73 61 67 65 29 2c 20 63  ow), message), c
37dc0 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20  ategory);..     
37dd0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
37de0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
37df0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
37e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
37e40 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 47         #region G
37e50 65 6e 65 72 69 63 20 50 6c 61 74 66 6f 72 6d 20  eneric Platform 
37e60 48 61 6e 64 6c 69 6e 67 0d 0a 20 20 20 20 20 20  Handling..      
37e70 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
37e80 20 62 6f 6f 6c 20 49 73 36 34 42 69 74 50 72 6f   bool Is64BitPro
37e90 63 65 73 73 28 29 0d 0a 20 20 20 20 20 20 20 20  cess()..        
37ea0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  {..            /
37eb0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  /..            /
37ec0 2f 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e 73 20  / NOTE: Returns 
37ed0 74 72 75 65 20 69 66 20 74 68 65 20 63 75 72 72  true if the curr
37ee0 65 6e 74 20 70 72 6f 63 65 73 73 20 69 73 20 36  ent process is 6
37ef0 34 2d 62 69 74 2e 20 20 49 66 20 74 68 69 73 0d  4-bit.  If this.
37f00 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
37f10 20 20 20 20 20 20 69 73 20 74 72 75 65 2c 20 77        is true, w
37f20 65 20 2a 6b 6e 6f 77 2a 20 74 68 61 74 20 77 65  e *know* that we
37f30 20 6d 75 73 74 20 62 65 20 72 75 6e 6e 69 6e 67   must be running
37f40 20 6f 6e 20 61 20 36 34 2d 62 69 74 0d 0a 20 20   on a 64-bit..  
37f50 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
37f60 20 20 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73     operating sys
37f70 74 65 6d 20 61 73 20 77 65 6c 6c 2e 20 20 48 6f  tem as well.  Ho
37f80 77 65 76 65 72 2c 20 69 66 20 74 68 69 73 20 69  wever, if this i
37f90 73 20 66 61 6c 73 65 2c 20 77 65 0d 0a 20 20 20  s false, we..   
37fa0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
37fb0 20 20 64 6f 20 6e 6f 74 20 6e 65 63 65 73 73 61    do not necessa
37fc0 72 69 6c 79 20 6b 6e 6f 77 20 74 68 61 74 20 77  rily know that w
37fd0 65 20 61 72 65 20 72 75 6e 6e 69 6e 67 20 6f 6e  e are running on
37fe0 20 61 20 33 32 2d 62 69 74 0d 0a 20 20 20 20 20   a 32-bit..     
37ff0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
38000 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d  operating system
38010 2c 20 64 75 65 20 74 6f 20 57 6f 57 36 34 20 28  , due to WoW64 (
38020 57 69 6e 33 32 2d 6f 6e 2d 57 69 6e 36 34 29 2c  Win32-on-Win64),
38030 20 65 74 63 2e 0d 0a 20 20 20 20 20 20 20 20 20   etc...         
38040 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
38050 20 20 20 72 65 74 75 72 6e 20 28 49 6e 74 50 74     return (IntPt
38060 72 2e 53 69 7a 65 20 3d 3d 20 73 69 7a 65 6f 66  r.Size == sizeof
38070 28 6c 6f 6e 67 29 29 3b 20 2f 2f 20 4e 4f 54 45  (long)); // NOTE
38080 3a 20 50 6f 69 6e 74 65 72 20 69 73 20 36 34 2d  : Pointer is 64-
38090 62 69 74 73 3f 0d 0a 20 20 20 20 20 20 20 20 7d  bits?..        }
380a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
380b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
380c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
380d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
380e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
380f0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
38100 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
38110 6f 6c 20 49 73 53 75 70 70 6f 72 74 65 64 52 6f  ol IsSupportedRo
38120 6f 74 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20  otKey(..        
38130 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79      MockRegistry
38140 20 72 65 67 69 73 74 72 79 2c 0d 0a 20 20 20 20   registry,..    
38150 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65 67 69          MockRegi
38160 73 74 72 79 4b 65 79 20 72 6f 6f 74 4b 65 79 0d  stryKey rootKey.
38170 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
38180 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
38190 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4f 62         return Ob
381a0 6a 65 63 74 2e 52 65 66 65 72 65 6e 63 65 45 71  ject.ReferenceEq
381b0 75 61 6c 73 28 72 6f 6f 74 4b 65 79 2c 20 72 65  uals(rootKey, re
381c0 67 69 73 74 72 79 2e 43 75 72 72 65 6e 74 55 73  gistry.CurrentUs
381d0 65 72 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20  er) ||..        
381e0 20 20 20 20 20 20 20 20 4f 62 6a 65 63 74 2e 52          Object.R
381f0 65 66 65 72 65 6e 63 65 45 71 75 61 6c 73 28 72  eferenceEquals(r
38200 6f 6f 74 4b 65 79 2c 20 72 65 67 69 73 74 72 79  ootKey, registry
38210 2e 4c 6f 63 61 6c 4d 61 63 68 69 6e 65 29 3b 0d  .LocalMachine);.
38220 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
38230 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
38240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
38280 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
38290 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
382a0 65 74 52 6f 6f 74 4b 65 79 4e 61 6d 65 28 0d 0a  etRootKeyName(..
382b0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
382c0 20 70 65 72 55 73 65 72 2c 0d 0a 20 20 20 20 20   perUser,..     
382d0 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 6f 77 36         bool wow6
382e0 34 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  4..            )
382f0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
38300 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
38310 20 20 20 20 20 20 20 20 20 2f 2f 20 42 55 47 46           // BUGF
38320 49 58 3a 20 41 70 70 61 72 65 6e 74 6c 79 2c 20  IX: Apparently, 
38330 74 68 65 20 70 65 72 2d 75 73 65 72 20 72 65 67  the per-user reg
38340 69 73 74 72 79 20 68 69 76 65 20 64 6f 65 73 20  istry hive does 
38350 6e 6f 74 20 75 73 65 0d 0a 20 20 20 20 20 20 20  not use..       
38360 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 20 20       //         
38370 74 68 65 20 22 57 6f 77 36 34 33 32 4e 6f 64 65  the "Wow6432Node
38380 22 20 6e 6f 64 65 20 74 6f 20 73 74 6f 72 65 20  " node to store 
38390 73 65 74 74 69 6e 67 73 20 66 6f 72 20 33 32 2d  settings for 32-
383a0 62 69 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  bit..           
383b0 20 2f 2f 20 20 20 20 20 20 20 20 20 61 70 70 6c   //         appl
383c0 69 63 61 74 69 6f 6e 73 20 72 75 6e 6e 69 6e 67  ications running
383d0 20 6f 6e 20 61 20 36 34 2d 62 69 74 20 6f 70 65   on a 64-bit ope
383e0 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 0d 0a  rating system...
383f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
38400 20 20 20 20 20 20 20 54 69 63 6b 65 74 20 5b 61         Ticket [a
38410 30 36 37 37 33 30 39 66 30 5d 20 68 61 73 20 66  0677309f0] has f
38420 75 72 74 68 65 72 20 64 65 74 61 69 6c 73 2e 0d  urther details..
38430 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  .            //.
38440 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
38450 75 72 6e 20 52 65 67 69 73 74 72 79 48 65 6c 70  urn RegistryHelp
38460 65 72 2e 4a 6f 69 6e 4b 65 79 4e 61 6d 65 73 28  er.JoinKeyNames(
38470 52 6f 6f 74 4b 65 79 4e 61 6d 65 2c 0d 0a 20 20  RootKeyName,..  
38480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 70                !p
38490 65 72 55 73 65 72 20 26 26 20 77 6f 77 36 34 20  erUser && wow64 
384a0 26 26 20 49 73 36 34 42 69 74 50 72 6f 63 65 73  && Is64BitProces
384b0 73 28 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20  s() ?..         
384c0 20 20 20 20 20 20 20 20 20 20 20 57 6f 77 36 34             Wow64
384d0 53 75 62 4b 65 79 4e 61 6d 65 20 3a 20 53 74 72  SubKeyName : Str
384e0 69 6e 67 2e 45 6d 70 74 79 29 3b 0d 0a 20 20 20  ing.Empty);..   
384f0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
38500 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
38510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38540 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
38550 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
38560 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 53 79  tic string GetSy
38570 73 74 65 6d 44 69 72 65 63 74 6f 72 79 28 0d 0a  stemDirectory(..
38580 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
38590 20 77 6f 77 36 34 0d 0a 20 20 20 20 20 20 20 20   wow64..        
385a0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
385b0 0d 0a 23 69 66 20 57 49 4e 44 4f 57 53 0d 0a 20  ..#if WINDOWS.. 
385c0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 77             if (w
385d0 6f 77 36 34 29 0d 0a 20 20 20 20 20 20 20 20 20  ow64)..         
385e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
385f0 20 20 20 20 20 20 69 66 20 28 73 79 73 74 65 6d        if (system
38600 44 69 72 65 63 74 6f 72 79 57 6f 77 36 34 20 3d  DirectoryWow64 =
38610 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
38620 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
38630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38640 73 79 73 74 65 6d 44 69 72 65 63 74 6f 72 79 57  systemDirectoryW
38650 6f 77 36 34 20 3d 0d 0a 20 20 20 20 20 20 20 20  ow64 =..        
38660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38670 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
38680 6f 64 73 2e 47 65 74 53 79 73 74 65 6d 44 69 72  ods.GetSystemDir
38690 65 63 74 6f 72 79 28 29 3b 0d 0a 20 20 20 20 20  ectory();..     
386a0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
386b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
386c0 72 65 74 75 72 6e 20 73 79 73 74 65 6d 44 69 72  return systemDir
386d0 65 63 74 6f 72 79 57 6f 77 36 34 3b 0d 0a 20 20  ectoryWow64;..  
386e0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
386f0 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 23           else..#
38700 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
38710 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
38720 20 20 20 20 20 20 69 66 20 28 73 79 73 74 65 6d        if (system
38730 44 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c  Directory == nul
38740 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
38750 20 20 20 20 20 20 20 20 73 79 73 74 65 6d 44 69          systemDi
38760 72 65 63 74 6f 72 79 20 3d 20 45 6e 76 69 72 6f  rectory = Enviro
38770 6e 6d 65 6e 74 2e 53 79 73 74 65 6d 44 69 72 65  nment.SystemDire
38780 63 74 6f 72 79 3b 0d 0a 0d 0a 20 20 20 20 20 20  ctory;....      
38790 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
387a0 20 73 79 73 74 65 6d 44 69 72 65 63 74 6f 72 79   systemDirectory
387b0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
387c0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
387d0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
387e0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
387f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38830 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
38840 65 67 69 6f 6e 20 47 65 6e 65 72 69 63 20 53 74  egion Generic St
38850 72 69 6e 67 20 48 61 6e 64 6c 69 6e 67 0d 0a 20  ring Handling.. 
38860 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
38870 74 61 74 69 63 20 73 74 72 69 6e 67 20 46 6f 72  tatic string For
38880 44 69 73 70 6c 61 79 28 0d 0a 20 20 20 20 20 20  Display(..      
38890 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c        object val
388a0 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ue..            
388b0