ia64/xen-unstable

changeset 15724:cd51fa91956b

merge with xen-unstable.hg
author Alex Williamson <alex.williamson@hp.com>
date Sun Aug 12 14:50:02 2007 -0600 (2007-08-12)
parents 5b19839d0365 7953164cebb6
children f317c27973f5
files tools/firmware/etherboot/eb-rtl8139.zrom xen/arch/x86/genapic/es7000.c xen/arch/x86/genapic/es7000plat.c xen/include/asm-x86/mach-es7000/mach_mpparse.h
line diff
     1.1 --- a/extras/mini-os/Makefile	Sun Aug 12 12:19:13 2007 -0600
     1.2 +++ b/extras/mini-os/Makefile	Sun Aug 12 14:50:02 2007 -0600
     1.3 @@ -123,3 +123,7 @@ cscope:
     1.4  tags:
     1.5  	$(all_sources) | xargs ctags
     1.6  
     1.7 +.PHONY: TAGS
     1.8 +TAGS:
     1.9 +	$(all_sources) | xargs etags
    1.10 +
     2.1 --- a/extras/mini-os/arch/x86/Makefile	Sun Aug 12 12:19:13 2007 -0600
     2.2 +++ b/extras/mini-os/arch/x86/Makefile	Sun Aug 12 14:50:02 2007 -0600
     2.3 @@ -3,6 +3,9 @@
     2.4  # It's is used for x86_32, x86_32y and x86_64
     2.5  #
     2.6  
     2.7 +XEN_ROOT = ../../../..
     2.8 +include $(XEN_ROOT)/Config.mk
     2.9 +
    2.10  # include arch.mk has to be before mini-os.mk!
    2.11  
    2.12  include arch.mk
     3.1 --- a/extras/mini-os/arch/x86/mm.c	Sun Aug 12 12:19:13 2007 -0600
     3.2 +++ b/extras/mini-os/arch/x86/mm.c	Sun Aug 12 14:50:02 2007 -0600
     3.3 @@ -405,9 +405,9 @@ void *map_frames(unsigned long *f, unsig
     3.4  
     3.5  void arch_init_p2m(unsigned long max_pfn)
     3.6  {
     3.7 -#define L1_P2M_SHIFT    10
     3.8 -#define L2_P2M_SHIFT    20    
     3.9 -#define L3_P2M_SHIFT    30    
    3.10 +#define L1_P2M_SHIFT    9
    3.11 +#define L2_P2M_SHIFT    18    
    3.12 +#define L3_P2M_SHIFT    27    
    3.13  #define L1_P2M_ENTRIES  (1 << L1_P2M_SHIFT)    
    3.14  #define L2_P2M_ENTRIES  (1 << (L2_P2M_SHIFT - L1_P2M_SHIFT))    
    3.15  #define L3_P2M_ENTRIES  (1 << (L3_P2M_SHIFT - L2_P2M_SHIFT))    
     4.1 --- a/tools/firmware/etherboot/README	Sun Aug 12 12:19:13 2007 -0600
     4.2 +++ b/tools/firmware/etherboot/README	Sun Aug 12 14:50:02 2007 -0600
     4.3 @@ -6,3 +6,6 @@ and for stricter DHCP spec compliance.
     4.4  Rom-o-matic.net will provide this image at the following URL:
     4.5  
     4.6  http://rom-o-matic.net/5.4.3/build.php?version=5.4.3&F=ignore&nic=rtl8139%3Artl8139+--+%5B0x10ec%2C0x8139%5D&ofmt=Binary+ROM+Image%28.zrom%29&arch=i386&ASK_BOOT=-1&BOOT_FIRST=BOOT_NIC&BOOT_SECOND=BOOT_NOTHING&BOOT_THIRD=BOOT_NOTHING&BOOT_INDEX=0&STATIC_CLIENT_IP=&STATIC_SUBNET_MASK=&STATIC_SERVER_IP=&STATIC_GATEWAY_IP=&STATIC_BOOTFILE=&EXIT_ON_FILE_LOAD_ERROR=on&DHCP_CLIENT_ID=&DHCP_CLIENT_ID_LEN=&DHCP_CLIENT_ID_TYPE=&DHCP_USER_CLASS=&DHCP_USER_CLASS_LEN=&ALLOW_ONLY_ENCAPSULATED=on&DEFAULT_BOOTFILE=&CONGESTED=on&BACKOFF_LIMIT=7&TIMEOUT=180&TRY_FLOPPY_FIRST=0&EXIT_IF_NO_OFFER=on&TAGGED_IMAGE=on&ELF_IMAGE=on&PXE_IMAGE=on&DOWNLOAD_PROTO_TFTP=on&COMCONSOLE=0x3F8&CONSPEED=9600&COMPARM=0x03&PXE_EXPORT=on&CONFIG_PCI=on&CONFIG_ISA=on&BUILD_ID=&PCBIOS=on&PXE_DHCP_STRICT=on&A=Get+ROM
     4.7 +
     4.8 +and the mkhex script in tools/firmware/hvmloader will make the header 
     4.9 +file from the downloaded image.
     5.1 Binary file tools/firmware/etherboot/eb-rtl8139.zrom has changed
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/tools/firmware/etherboot/eb-rtl8139.zrom.h	Sun Aug 12 14:50:02 2007 -0600
     6.3 @@ -0,0 +1,2051 @@
     6.4 +unsigned etherboot[] = {
     6.5 +0xeb40aa55, 0xbfe96c65, 0x68744500, 0x6f627265,
     6.6 +0x0000746f, 0x00540000, 0x0034001c, 0x52494350,
     6.7 +0x813910ec, 0x00180000, 0x00000200, 0x00010040,
     6.8 +0x00008000, 0x506e5024, 0x00000201, 0x00008a00,
     6.9 +0x00090000, 0x00027fd7, 0x00001400, 0x00cc0000,
    6.10 +0x00000000, 0x49444e55, 0x0000a016, 0x01000201,
    6.11 +0x10001000, 0x43500abe, 0x81265249, 0x5024007d,
    6.12 +0x81260c75, 0x506e027d, 0x20b80475, 0x1e50cb00,
    6.13 +0xd88ec031, 0x3d0304a1, 0x1d74e44c, 0xa30064a1,
    6.14 +0x66a10300, 0x0302a300, 0xa300afb8, 0xc88c0064,
    6.15 +0xb80066a3, 0x04a3e44c, 0xb8581f03, 0x31cb0020,
    6.16 +0xa3d88ec0, 0x02a10304, 0x0066a303, 0xa30300a1,
    6.17 +0x50660064, 0x0aeb026a, 0x06eb006a, 0x016a5066,
    6.18 +0xe78900eb, 0x1e505716, 0xb60f2e0e, 0xc1000206,
    6.19 +0x6a5009e0, 0x012be812, 0x8ec88c58, 0x4a068fd8,
    6.20 +0x48068f06, 0x50581f06, 0x6a0c6a66, 0x0060e900,
    6.21 +0x16e08953, 0x55506650, 0x468be589, 0x02468910,
    6.22 +0x8912468b, 0x685d0446, 0x5066104d, 0x0f2e0e50,
    6.23 +0x000206b6, 0x5009e0c1, 0xe6e8146a, 0x8f2e5800,
    6.24 +0x2e064a06, 0x0648068f, 0xc72e6658, 0x00038006,
    6.25 +0x66000000, 0x00020168, 0x50686600, 0xe8000178,
    6.26 +0xc4830010, 0x89175b12, 0x3ce85bdc, 0x0002ca01,
    6.27 +0x6650006a, 0xc0200f50, 0x586601a8, 0x832d7458,
    6.28 +0x0000247c, 0x44871175, 0x44890424, 0x00b80024,
    6.29 +0x87000500, 0x50042444, 0x0002b4b8, 0x74c08500,
    6.30 +0x011ee805, 0xe9580000, 0x000006c0, 0xe5895550,
    6.31 +0x00067e83, 0x8b501375, 0x46890646, 0x46c76602,
    6.32 +0x05000004, 0xeb5d5800, 0x1e585d02, 0xb8665066,
    6.33 +0x000002b4, 0x74c08566, 0x0f061e2f, 0x83a80fa0,
    6.34 +0x895508ec, 0x46010fe5, 0xe80e1602, 0xd1e803a8,
    6.35 +0xe8000000, 0x0000027e, 0x010f5858, 0x835d0256,
    6.36 +0xa90f08c4, 0x1f07a10f, 0x8cc03166, 0x66d88ec8,
    6.37 +0x6604e0c1, 0x00038005, 0x0ba36600, 0x1f586604,
    6.38 +0x500175e9, 0xbb061e60, 0xc38e0040, 0x131e8b26,
    6.39 +0x06e3c100, 0x0d7feb81, 0x2606ebc1, 0x00131e89,
    6.40 +0x8c06e3c1, 0x89d88ed0, 0x4c8b36e6, 0x78c98518,
    6.41 +0x47878d15, 0xbfc08e0c, 0xc1831000, 0x8ecf291a,
    6.42 +0xfcfc89d0, 0x6066a4f3, 0x1f0ec38e, 0x57afb966,
    6.43 +0x89660000, 0xcf8966ce, 0xf3fd4166, 0x66fca467,
    6.44 +0x66506661, 0xd889c031, 0x04e0c166, 0x80a32666,
    6.45 +0xc7266603, 0xf0038406, 0x660000d7, 0x87e58958,
    6.46 +0x5e89165e, 0x611f0714, 0xb80650cb, 0xc08e0040,
    6.47 +0x0013a126, 0x0506e0c1, 0xe8c10dbe, 0x13a32606,
    6.48 +0xc3580700, 0x0000e860, 0x815d0000, 0x0002baed,
    6.49 +0x56b9fd00, 0x8d000051, 0x06530db4, 0xbc8d0000,
    6.50 +0x00457c0d, 0xfca4f300, 0x457db58d, 0xbd8d0000,
    6.51 +0x00000650, 0xffffffbd, 0xa405ebff, 0x0775db01,
    6.52 +0xee831e8b, 0x72db11fc, 0x40c031f2, 0x0775db01,
    6.53 +0xee831e8b, 0x11db11fc, 0x75db01c0, 0x831e8b07,
    6.54 +0xdb11fcee, 0xc931e673, 0x7203e883, 0x08e0c10d,
    6.55 +0x8346068a, 0x5074fff0, 0xdb01c589, 0x1e8b0775,
    6.56 +0x11fcee83, 0x01c911db, 0x8b0775db, 0xfcee831e,
    6.57 +0xc911db11, 0x01411d75, 0x8b0775db, 0xfcee831e,
    6.58 +0xc911db11, 0x0775db01, 0xee831e8b, 0x73db11fc,
    6.59 +0x814141e6, 0xfff300fd, 0x01d183ff, 0x2f348d56,
    6.60 +0xe95ea4f3, 0xffffff74, 0x9090c361, 0x90909090,
    6.61 +0x00000000, 0x00000000, 0x0feb02eb, 0x89559c50,
    6.62 +0x87c88ce5, 0x46870646, 0x9c9d5d04, 0x0fa80f50,
    6.63 +0x161e06a0, 0x01dee80e, 0x550cec83, 0x24448b50,
    6.64 +0x00000d28, 0x44890006, 0x00e81024, 0x5d000000,
    6.65 +0x003fed81, 0x858b0000, 0x0000008b, 0x0000002d,
    6.66 +0x04dc0500, 0x44890000, 0x858d0824, 0x00000067,
    6.67 +0x0c244489, 0xe8c35d58, 0x0000007a, 0x071f1f1f,
    6.68 +0xa90fa10f, 0x5502c483, 0xf766e589, 0x00000646,
    6.69 +0x755d0004, 0x9dcb9d02, 0x000004ca, 0x53000000,
    6.70 +0xe8555756, 0x00000000, 0x98ed815d, 0x8b000000,
    6.71 +0x0001bb9d, 0xa3eb8100, 0x8f000002, 0x0002b783,
    6.72 +0xb3838f00, 0x8f000002, 0x0002af83, 0xab838f00,
    6.73 +0x8f000002, 0x0002a383, 0xa7a38900, 0x8b000002,
    6.74 +0x0001b3a5, 0xb7b5ff00, 0xe8000001, 0x00000006,
    6.75 +0xe904c483, 0x535500d9, 0x0000e850, 0x815d0000,
    6.76 +0x0000eeed, 0x9b858d00, 0x89000001, 0x00019d85,
    6.77 +0x44b70f00, 0xe0c11024, 0x24442904, 0xc1c3890c,
    6.78 +0x896604eb, 0x890e245c, 0x04ebc1c3, 0x9d8d5366,
    6.79 +0x0000018e, 0x5366c329, 0x00000868, 0x849d8d00,
    6.80 +0x29000001, 0x896653c3, 0x0001a585, 0x10e8c100,
    6.81 +0x01a78588, 0xa5880000, 0x000001aa, 0x2444b70f,
    6.82 +0x04e0c11e, 0xad858966, 0x89000001, 0x10ebc1c3,
    6.83 +0x01af9d88, 0xbd880000, 0x000001b2, 0x9b95010f,
    6.84 +0x66000001, 0x8e0010bb, 0x8ec429d3, 0x8ec38edb,
    6.85 +0xcbeb8ee3, 0x80c3200f, 0x220ffee3, 0xc166cbc3,
    6.86 +0xd08e04e8, 0x5b665866, 0x17cb5d66, 0x00000000,
    6.87 +0xff000000, 0x000000ff, 0xff00009b, 0x000000ff,
    6.88 +0x00000093, 0x00000000, 0x00000000, 0x30000000,
    6.89 +0x0042e801, 0x000000e8, 0xed815d00, 0x000001c9,
    6.90 +0x02bbbd8b, 0x8d8b0000, 0x000002bf, 0xf3fce689,
    6.91 +0xa7a58ba4, 0xff000002, 0x0002a3b5, 0xab9d8b00,
    6.92 +0x8b000002, 0x0002afb5, 0xb3bd8b00, 0x8b000002,
    6.93 +0x0002b7ad, 0x6afac300, 0x66556600, 0x89506653,
    6.94 +0xdb3166e5, 0xdb8e5b0e, 0x04e3c166, 0x46b70f66,
    6.95 +0xd801660e, 0x0c468966, 0x66dd8966, 0x00e8db31,
    6.96 +0x8d665b00, 0x66005287, 0x8966e801, 0x66005487,
    6.97 +0x003e878d, 0x66e80166, 0x006a8789, 0x16c03166,
    6.98 +0xe0c16658, 0xb70f6604, 0xc50166ec, 0x97010f66,
    6.99 +0x200f0052, 0x0f010cc0, 0xff66c022, 0x66006aaf,
   6.100 +0x8e0010b8, 0x8eec89d0, 0x8ec08ed8, 0x58e88ee0,
   6.101 +0x17c35d5b, 0x00000000, 0xff000000, 0x000000ff,
   6.102 +0xff00cf9f, 0x000000ff, 0x6f00cf93, 0x08000002,
   6.103 +0x00000000, 0x00000000, 0x00000000, 0x00000000,
   6.104 +0x00000000, 0x00000000, 0x00000000, 0x00000000,
   6.105 +0x02000000, 0x0002bd01, 0x00000000, 0x90909090,
   6.106 +0x00008008, 0xfffffb7f, 0xc7835f58, 0x5b585e06,
   6.107 +0x89d68e59, 0x00f883fc, 0x53510375, 0x750207cb,
   6.108 +0xcd19cd02, 0xffeefdbb, 0x9090fb18, 0xf958fbfa,
   6.109 +0x069c15cd, 0xbb660eb4, 0xcd000001, 0x5cd20c10,
   6.110 +0xc0317f6e, 0xe43016cd, 0x9c01b407, 0xadff0258,
   6.111 +0xe083fffb, 0x12cdfa03, 0x31c931f9, 0x523158d2,
   6.112 +0xc4835048, 0x165b6606, 0xbff7ed07, 0x66e789fd,
   6.113 +0x39e820b8, 0x4150ba66, 0xb966534d, 0x66154514,
   6.114 +0xeddf7609, 0x5b9c50fe, 0x7c009a07, 0x1f0e5819,
   6.115 +0x099e8d5d, 0x55cb1500, 0xdfffb7dd, 0x1eff2e18,
   6.116 +0x729c002d, 0x81e5891c, 0x0f3c027e, 0x08009584,
   6.117 +0xedff7f01, 0x8000c637, 0x0788037e, 0x5d9d0101,
   6.118 +0x0002ca5d, 0xc1016600, 0x6ffffedb, 0x2966da02,
   6.119 +0x660377c3, 0xff85db31, 0x39661274, 0x132b76c2,
   6.120 +0xe6ed07c3, 0x13cb6ef6, 0x1eebd989, 0xd272ca1d,
   6.121 +0xde28f766, 0x39f7ee76, 0x07e376da, 0x1527ca01,
   6.122 +0xc11dd089, 0xfffe56c3, 0x5292eede, 0x2e4d9bbe,
   6.123 +0x54045c8b, 0xffa5e804, 0x8108c683, 0xc877abfe,
   6.124 +0xeaa4dede, 0x5ecb5a66, 0x660000c3, 0x97b7d33d,
   6.125 +0x850fffed, 0x2666ff72, 0x00047d83, 0x66506809,
   6.126 +0x458b0d51, 0xbbfedbe5, 0x084d0400, 0xe8ff3157,
   6.127 +0x0b5fffa4, 0xfd891089, 0x66dbb7fb, 0x42e9ee59,
   6.128 +0x91000c14, 0x06e8da87, 0xff33e905, 0x56f85757,
   6.129 +0xbf5033d8, 0xc166aa60, 0x5b3010e1, 0x36dfdd6d,
   6.130 +0xc14b6ced, 0xcb8910e9, 0x030a1359, 0xdb6fffe8,
   6.131 +0x115a90b7, 0x45582a0a, 0xe853c35f, 0xe95bffc8,
   6.132 +0x9b30fef7, 0x01f0d0bb, 0x09016866, 0x00686eeb,
   6.133 +0xfe500507, 0x789785ed, 0x80002be8, 0xa19ccb08,
   6.134 +0x9d137556, 0xad564eb8, 0x5317dbe1, 0x07004036,
   6.135 +0x003e1ed7, 0x0f9d38f8, 0xd93c2ff7, 0x42c83a2e,
   6.136 +0x66d55000, 0x4487c88c, 0x76030424, 0x7b05fbbb,
   6.137 +0x0f08ec83, 0x0f660801, 0x66a002a8, 0xfb76dd5a,
   6.138 +0x66164185, 0x128d600e, 0x0c038938, 0xfb6e4407,
   6.139 +0xe850dff6, 0xed815d39, 0x89060514, 0x058138ad,
   6.140 +0x7dbf168b, 0xbaa9bbfb, 0x8d217400, 0x09c470b5,
   6.141 +0xd470bd8d, 0x72f43905, 0x6f8e3904, 0x76fcfeec,
   6.142 +0xb9e6890d, 0xcf293248, 0xe8a4f36d, 0xb9b64fe3,
   6.143 +0x2d8bdfb7, 0x686c2936, 0x450b83e8, 0xed12203f,
   6.144 +0x0f7b6dfe, 0x04240ab7, 0x5026245c, 0x6088858d,
   6.145 +0x6dbffa50, 0x548fb6ff, 0x01d38e7c, 0x6158cbec,
   6.146 +0xa102a993, 0x1f660766, 0x6ffb9a14, 0x8b9d0ce4,
   6.147 +0x9cd42464, 0x832696f7, 0x6fb7fec5, 0x9dcb9dbc,
   6.148 +0x565507ca, 0x247c8b57, 0x983d2b10, 0xb6bfb7b8,
   6.149 +0xafa81061, 0x0480e868, 0x7cbae855, 0x336edd63,
   6.150 +0x0ee05b1f, 0x8904e2a3, 0x6dbfbe77, 0xb9237dfb,
   6.151 +0xa3f129b4, 0x2015732e, 0x7ffe00ea, 0x00a80bf7,
   6.152 +0x10b80008, 0x8ed88e1c, 0x8ed08ec0, 0x5fe88ee0,
   6.153 +0xe6c35d5e, 0x35dbbbf3, 0x3589e620, 0x283d0524,
   6.154 +0xddbf2c1d, 0xa358efdd, 0x34250b30, 0x70bb5905,
   6.155 +0x5f1d033e, 0x770f6853, 0x4328bacf, 0xb1e8e451,
   6.156 +0x0ca5890b, 0xcde9a528, 0x2f00bf75, 0x612974a5,
   6.157 +0x768de4cf, 0x4d7b7f00, 0xbcfc77b7, 0x6020a88f,
   6.158 +0x1b22ed0a, 0xa15bb7b1, 0x35b70234, 0xd0ff0b07,
   6.159 +0x91cf7e8b, 0x8b8b9191, 0x8b158b8b, 0x23bbc28d,
   6.160 +0xff041ca1, 0xda4c8be2, 0xb7ff1bd4, 0x5189680b,
   6.161 +0x89045902, 0x69890861, 0x5e71890c, 0xdcd0bd79,
   6.162 +0x006d148f, 0x431f1bc3, 0xbf4a8b08, 0x37b6dbfe,
   6.163 +0x0862095a, 0x728b0c6a, 0x147a8b10, 0x59b80519,
   6.164 +0xfd4f6b69, 0x9c284389, 0xb664bea0, 0x5401c2d8,
   6.165 +0x208dce0c, 0xb849687e, 0x1f30b8b9, 0x5d5821a2,
   6.166 +0x87bc3c9d, 0x3d282ef1, 0x50802b07, 0x2e4070f0,
   6.167 +0x89003881, 0xb1fa8285, 0x6fd23921, 0x29077095,
   6.168 +0x7ee68d4f, 0x530c281d, 0x9da95350, 0xdd4bed1d,
   6.169 +0x43892a4b, 0x1d0a0302, 0x04438810, 0xfdb84702,
   6.170 +0x63880cf2, 0x585b0f07, 0x560090c3, 0x6cbe72a1,
   6.171 +0x1b0aed6e, 0x0483000d, 0x6a24c629, 0x33736f00,
   6.172 +0xf2b801fd, 0xee2d0629, 0xdd056850, 0xe8efe37a,
   6.173 +0x189008bc, 0x0dbd3b80, 0x057003c6, 0x2f62b63c,
   6.174 +0x00b03cdc, 0x5b060e18, 0x51000c03, 0x1dbe9b63,
   6.175 +0x24046f21, 0x0602026a, 0xcd0c0650, 0x50eebdb3,
   6.176 +0x2d40f9b8, 0x70f24b52, 0xe816e589, 0x1a2d955a,
   6.177 +0x7d550119, 0x79dfd6df, 0x0374c085, 0x6dd5b60f,
   6.178 +0x49509b5a, 0x2f973488, 0x8f0203b6, 0x03060e46,
   6.179 +0xf636b0f9, 0x9229f98c, 0xf7b42f1c, 0x0e722f6b,
   6.180 +0x05212603, 0x672107e8, 0x2625b987, 0x16d861c0,
   6.181 +0x32ee0e23, 0xe30e233c, 0xf7063e4c, 0x872723d0,
   6.182 +0x1f298bcd, 0x2ece1616, 0x4db93ccc, 0xad1f2321,
   6.183 +0x1f46792f, 0x53565795, 0x5b4bee27, 0xc76614ee,
   6.184 +0x6c8dadc5, 0x570a6a04, 0x7778d7ca, 0x2ebb7497,
   6.185 +0xeb81562a, 0x6c05f23e, 0xe8ee7598, 0x24f3375d,
   6.186 +0x34750d83, 0x705eb6d8, 0xd2854c72, 0x3c835b75,
   6.187 +0x7f68eb0a, 0xf51664da, 0x06e0c106, 0xae018c07,
   6.188 +0x702ad7c8, 0xe87414c4, 0x1b060a15, 0xebd2f63b,
   6.189 +0x88006dea, 0x025a5669, 0xc9ec60d8, 0x55cceb92,
   6.190 +0x3b072094, 0xdba3ffee, 0x062b381d, 0x31617d7b,
   6.191 +0x6ae089ed, 0xe102501e, 0xb8c3bdaf, 0xd09f6450,
   6.192 +0x06c4e805, 0x607f78f7, 0x0282811b, 0x8b4175cd,
   6.193 +0xdde3a404, 0x75b14777, 0x4334b22a, 0xd5283c8d,
   6.194 +0x05b9fc0a, 0xffba5eb4, 0x5b14c5f7, 0x0b7da5f3,
   6.195 +0xa874db85, 0x89a106ba, 0xc156b7da, 0xdeada599,
   6.196 +0xf2eb3a14, 0x67eb102f, 0xd4e80c87, 0xabbbd601,
   6.197 +0xbbddfffe, 0xa3bd02f7, 0x0a71ba40, 0x4c68206a,
   6.198 +0x7bbba30b, 0x1044bedb, 0x6cff0f47, 0x0c48a35a,
   6.199 +0xcb737559, 0x6f6fbb67, 0x0af22705, 0x0854a399,
   6.200 +0xc70d44a1, 0xbc1ed7bd, 0x09f42005, 0x336e003c,
   6.201 +0x5009b20f, 0x0f581589, 0xbac1055c, 0x1901b191,
   6.202 +0x64091060, 0xd9360d23, 0x2268a3d8, 0x2c703c6c,
   6.203 +0xafb876a1, 0x082e59e1, 0xe3073916, 0xd7861b73,
   6.204 +0x83351763, 0x18744ebd, 0x9b181aff, 0xfc6bf033,
   6.205 +0x77e7721d, 0x868bebed, 0x95bf0b7f, 0xdbfa837f,
   6.206 +0x52779285, 0x7e24ff3d, 0x77e070ad, 0x8532be4b,
   6.207 +0xb52b941e, 0xfdafe0df, 0x23d3391b, 0x770c72ce,
   6.208 +0x0676c60e, 0x2d8d8b8b, 0x2c0db5bc, 0x3fc70729,
   6.209 +0xc3b1d835, 0x19d209da, 0x629d8b3d, 0xdb7f0db6,
   6.210 +0x228d08fb, 0x2e70870f, 0x0903f981, 0xe9bb1f7b,
   6.211 +0xce89640b, 0xdf894203, 0x5230bd13, 0x70deedbd,
   6.212 +0x04b7d739, 0x1d46820f, 0x0f6c0877, 0xdfec3c86,
   6.213 +0x8009cdc1, 0xc1891b77, 0xc8291577, 0x8c89da19,
   6.214 +0x6c7701db, 0x1de96289, 0x4c0e011e, 0xb03ec990,
   6.215 +0x85c781ba, 0x66580954, 0xe970ddd0, 0x13b8bff0,
   6.216 +0xab05d704, 0x1f12b86d, 0x6a83c39c, 0x2e400a0c,
   6.217 +0x08b221de, 0xe208af48, 0xe07b8376, 0xef4c35ff,
   6.218 +0x74e70d5b, 0x60380310, 0xa337f6f7, 0xfdd2e91e,
   6.219 +0x770f684d, 0x704d3e1e, 0x38ed93bc, 0x0949feeb,
   6.220 +0x2b8520a1, 0xc9b59b30, 0x1d4f4669, 0xf75837f5,
   6.221 +0x59379ae8, 0xda380062, 0xbafc5357, 0x109ffc77,
   6.222 +0x89d6ff05, 0x15c5e8c3, 0x0d8ba6ba, 0x48f16e2d,
   6.223 +0xebc1ca65, 0x91028b46, 0x16a178b6, 0x891f2af6,
   6.224 +0x62dff5c7, 0xcab6df6b, 0xc1d7bd3a, 0x071c0ae2,
   6.225 +0x7625b7cb, 0x896802d1, 0x04aa9cd7, 0xd0a15b5a,
   6.226 +0xf889c5e1, 0xf1516b63, 0x70edbbd6, 0x54689fe8,
   6.227 +0x89587524, 0x78935bd8, 0x56c08fbf, 0x03c28984,
   6.228 +0xe2815d15, 0xb102c575, 0x8c8d921f, 0xd66b801a,
   6.229 +0xcdc5a9a9, 0xf289bdac, 0x4e1d280d, 0x7b7ffbbc,
   6.230 +0x701474c9, 0x02c7044a, 0x45524621, 0x9a00c281,
   6.231 +0xec754966, 0x6e867b19, 0x5c1deb47, 0x04a36965,
   6.232 +0xe8b0df6e, 0x5a5863f8, 0x06fcb5e9, 0xedc75790,
   6.233 +0xb96f81ad, 0x115429ca, 0xe7c1faaa, 0xb77d1bb2,
   6.234 +0xfa81c06f, 0x81580280, 0x53754f3f, 0xed8bb603,
   6.235 +0x5f0457da, 0xc9044f1d, 0xc3c5ebc7, 0xd9846170,
   6.236 +0x53b0fe56, 0xa9998df8, 0x2dfdc184, 0x5900e381,
   6.237 +0xa13b29b9, 0xde1866a3, 0x0c0eafc1, 0x51b5bb1b,
   6.238 +0x6bf37268, 0x03768f00, 0xfba25795, 0x52561882,
   6.239 +0x599161e8, 0x25b929d8, 0x3529eefc, 0xeb5b0046,
   6.240 +0x5ab890e4, 0xbb65b856, 0x08fc4aed, 0x60158b46,
   6.241 +0xbac5b350, 0x74da6f6f, 0xff475b02, 0x41144c39,
   6.242 +0x587421b6, 0x097a05c7, 0xd5b87704, 0xd8eb5ae0,
   6.243 +0x403d3417, 0xd72d4cd1, 0xc774dcd5, 0x22960d39,
   6.244 +0xb1cdbdad, 0xe869df6b, 0x448a24c7, 0x6c2d82d1,
   6.245 +0xeb87b83a, 0x365621db, 0xb62d7b54, 0x1c0777be,
   6.246 +0x477a9639, 0x8b7008d8, 0xb854be9b, 0x37bbfbe3,
   6.247 +0x43900578, 0x938389cf, 0xbd828d07, 0xfa63ba2f,
   6.248 +0xb85d0183, 0xba0f2df2, 0xd1bbdffb, 0x9615be34,
   6.249 +0xa13a148d, 0xc83bc46c, 0x7c4beac1, 0x8b1a5ef8,
   6.250 +0x0d180409, 0x765689b6, 0x7ec103c7, 0x7605ab4f,
   6.251 +0xae8d0001, 0xb0f08d8b, 0xb63e7489, 0x2fc57cbb,
   6.252 +0x53b1a975, 0xb7926702, 0xc229760b, 0x9ec6fd3b,
   6.253 +0xdfa315bd, 0x8294ea81, 0x86038992, 0x509c8789,
   6.254 +0x2bdfeb00, 0xd32b696b, 0x109e4d81, 0xd5b139d0,
   6.255 +0xfc3d3a70, 0xdb001822, 0x7fe9dd1b, 0x89130480,
   6.256 +0x1c2d2bc5, 0x8bda1425, 0xc68ea96e, 0x7adc0c42,
   6.257 +0x1fa291fe, 0x0d9eef64, 0x8f01bf42, 0x84e8560c,
   6.258 +0x6ed9124c, 0xc601e3b1, 0x1cff20c4, 0x6c1730ff,
   6.259 +0x9d76ee15, 0xc31b2c3f, 0xf45e5502, 0x08b0be03,
   6.260 +0xc134b9ef, 0x4e1c4f01, 0x6a61731e, 0xe0304cfb,
   6.261 +0x80972a78, 0x85b5a903, 0x3a0d06ed, 0x07c3248e,
   6.262 +0x7ab84d45, 0x9e084377, 0x10438b14, 0xe08df891,
   6.263 +0x1cded6db, 0x9c979902, 0x1859c541, 0xc05c7a03,
   6.264 +0x033e5df4, 0x675e4d3d, 0x36ff5046, 0x756f847c,
   6.265 +0x4bebe857, 0x730320f8, 0x45e9d70c, 0x3960e857,
   6.266 +0x19744c29, 0xbf4e0873, 0x2d2befc2, 0x06e88933,
   6.267 +0x2a0ee9ec, 0x056f6df4, 0xe0eb0419, 0xd10d9690,
   6.268 +0x82eb7e03, 0xa110a32d, 0x08a5080a, 0xfce18303,
   6.269 +0x2ed1beb6, 0x4355045f, 0x5154cc29, 0xd56bae3e,
   6.270 +0x5f5b99dd, 0x3ef632e8, 0x830655d0, 0x89b89b08,
   6.271 +0xc3415dec, 0x1eb76990, 0x387e1dbc, 0x9024ac8b,
   6.272 +0xf7503658, 0xe0f873c5, 0x4c96e83a, 0x9c47c713,
   6.273 +0x4a274674, 0x18ef9a94, 0x4e601236, 0x898984bc,
   6.274 +0xc3830ffb, 0xe16fc818, 0x75118dd6, 0x108b2029,
   6.275 +0xa12ab9ab, 0x99e056a5, 0x1a8ff9f7, 0xfe10c206,
   6.276 +0x7d7709bb, 0x940e1810, 0xca114208, 0x5553f07c,
   6.277 +0xeb718ef5, 0x29920862, 0xe581ca0b, 0x3db5c06b,
   6.278 +0x087466bb, 0x140a7449, 0xb8956d38, 0x8f69f17b,
   6.279 +0x106a102c, 0xa119e1c3, 0xd02db00f, 0x2900d028,
   6.280 +0xc4ddcba1, 0x8b90d1fe, 0x020d68f3, 0xae07718a,
   6.281 +0xc10a19c5, 0xa0882f72, 0x714719bd, 0x1b0e8ba3,
   6.282 +0xc177ce3b, 0x0972edf5, 0x15154a72, 0xe685ed5e,
   6.283 +0xc308b985, 0xe30b0abe, 0xb8077768, 0xd939d5d1,
   6.284 +0x0b73288b, 0x5fa5ede1, 0x423204c1, 0x72d4c101,
   6.285 +0xc10b5bf5, 0x1931c35e, 0x1007a60a, 0xea4ed4a1,
   6.286 +0xb85bbde5, 0x6e85b75b, 0x840fd848, 0x50bd6a07,
   6.287 +0x942d7c88, 0xb3f0e783, 0xb5e370cb, 0xb9f72724,
   6.288 +0x01a13880, 0xaf94afde, 0x0e838d0f, 0xf7f63759,
   6.289 +0x77982db4, 0xa00505b8, 0xaf081304, 0x5d038607,
   6.290 +0x6e030ada, 0x6b04a77f, 0x8dc2b077, 0xf0e5566c,
   6.291 +0x1febf622, 0x9a28776d, 0x772a6804, 0x05499d29,
   6.292 +0xc6e57598, 0xc65899c6, 0x36880707, 0x38d7ec47,
   6.293 +0x862b666f, 0xb61c18bb, 0x1cec7418, 0x12bf071d,
   6.294 +0xeb2a076e, 0x02d8171e, 0xa166d622, 0x032e1661,
   6.295 +0xac43335c, 0x3e1a3b26, 0xd6da2e0d, 0x285314dd,
   6.296 +0x321b2003, 0x6da9182b, 0x2b127d9b, 0x0330155b,
   6.297 +0x91919a7b, 0x43c770ce, 0x0e080542, 0x91919106,
   6.298 +0x2c14160c, 0xdd236375, 0x1e1805ff, 0x40093670,
   6.299 +0x7609db63, 0x6342435a, 0x48054607, 0x7c83637c,
   6.300 +0x054e4a12, 0x1d521250, 0x5683475b, 0x49f558a9,
   6.301 +0x325d28dc, 0x0543e97c, 0x60738d6a, 0xba082f68,
   6.302 +0x2b584894, 0x14bbff52, 0x2c0846c6, 0x23a7e2bf,
   6.303 +0xd5ad6ec5, 0xf40a466c, 0x917546c4, 0x0320bace,
   6.304 +0x9b8bf714, 0x2bf7220f, 0x1603d739, 0x36fd2ddf,
   6.305 +0x0311fb01, 0x2671ae77, 0xf295fa01, 0x0fe38337,
   6.306 +0xdfb6cf0d, 0x23030c5c, 0x010646c7, 0x910e0402,
   6.307 +0x23221246, 0x18056323, 0xb7761c1a, 0x46e6c76f,
   6.308 +0x285e032a, 0x979e2c6a, 0x0946b1fd, 0x31e0c108,
   6.309 +0x8c80c740, 0x3ea7f40d, 0x98a42372, 0xcde81c04,
   6.310 +0x43318b47, 0x160a6377, 0xd0e85532, 0x91063503,
   6.311 +0x027a4736, 0x38652510, 0xede9b4d8, 0xf8431011,
   6.312 +0x0558c2d3, 0x6eee0981, 0x2d7a8585, 0x4e53deeb,
   6.313 +0xb46eebe8, 0x9c8ae3a0, 0xf71d1cf7, 0x20d9de5b,
   6.314 +0xc3bf3ee0, 0x813256de, 0xbb05ec52, 0x88ba830e,
   6.315 +0x760fd788, 0x98f9044b, 0x2168be6d, 0x188b068d,
   6.316 +0xf8ce54b2, 0x06815fe3, 0x89a4c24f, 0x840b5282,
   6.317 +0xe11dfe13, 0x58824d19, 0x8019840c, 0x1bee5e06,
   6.318 +0x82c7eebc, 0xf9601056, 0xb8da293a, 0x811b31b3,
   6.319 +0x65018df7, 0x83c71689, 0x8393ec69, 0x34ad64f0,
   6.320 +0x7581826f, 0xbd09b908, 0xc87a1fb3, 0x82b865c3,
   6.321 +0xf7380b0e, 0x70928bef, 0x89e81089, 0xd967349a,
   6.322 +0x090d75a8, 0xe835eb44, 0x136bd5e9, 0x1b1e754e,
   6.323 +0xc4132305, 0x04afa1b8, 0xb2c75859, 0x7c4c2d00,
   6.324 +0x833668e8, 0xf78843ba, 0xd9c13add, 0x8b8a5151,
   6.325 +0x601376b5, 0x6d4b0c35, 0xe0e201bd, 0x23720beb,
   6.326 +0xd81f68b4, 0x6a0ee2fa, 0x6fd01aae, 0x8d046780,
   6.327 +0x96600f01, 0x57130835, 0x5f233e2f, 0x5c505067,
   6.328 +0x115e70fa, 0xe8d8f08a, 0x43b01eb0, 0xfea75d38,
   6.329 +0xc283d70c, 0xdb388104, 0x06d318c0, 0x4276d0ae,
   6.330 +0x042d67a6, 0xde0fb8ef, 0x0842af8d, 0x1e045162,
   6.331 +0x4a2581a2, 0xe3e88ebe, 0x0a13b4d1, 0x0a246cd0,
   6.332 +0xac400e50, 0x21431a36, 0x6e25ca55, 0x5bc9cddb,
   6.333 +0x012b518b, 0x75065209, 0x70effba9, 0x1058f42b,
   6.334 +0xc4ebd109, 0x8b7ae068, 0x0bba5ad4, 0x25e8bbb1,
   6.335 +0x3e40043f, 0x097b2013, 0x7343efc0, 0x0a6a13ef,
   6.336 +0xb09e35e8, 0x4d42af0a, 0xb604c1c2, 0x0657a510,
   6.337 +0x77a957cc, 0x77be1cb7, 0x8b07771b, 0xdb121934,
   6.338 +0x7bc5b6ea, 0x7bc574ce, 0x05352218, 0x90b6ede9,
   6.339 +0x1825178d, 0x76012648, 0x00ede007, 0x0f3b91ed,
   6.340 +0xab6942c4, 0x01e8dc97, 0x5a14dd6a, 0xf1dae240,
   6.341 +0x823749fc, 0xc917d19f, 0x755a405f, 0xdc1f81bc,
   6.342 +0x08b302d3, 0x247b8df6, 0x3bc2d42b, 0xeb0024b2,
   6.343 +0x03068797, 0xc868377f, 0xbb535212, 0x594503c7,
   6.344 +0x1bddf2eb, 0xf0850222, 0x5c478b18, 0x0cef1c24,
   6.345 +0x683e0dbf, 0x41e9c578, 0xfce0b953, 0x8e0b4789,
   6.346 +0x8a68dbdb, 0x6c478855, 0xd33aa272, 0x0a145712,
   6.347 +0x5e68da17, 0xee52795d, 0x789fb7b3, 0xc87e4b42,
   6.348 +0xe4293d4f, 0xf0f0c094, 0xf0de02ff, 0x0636748d,
   6.349 +0x8d56ed31, 0x837b0745, 0xdea56786, 0x5750028c,
   6.350 +0x83280b45, 0x1ab4fafd, 0x7e03edfc, 0x684f48e0,
   6.351 +0xec58518d, 0xeef70cb7, 0x51fc2fc7, 0xa9ed6662,
   6.352 +0x7f7cbacf, 0x81ba0575, 0x7b1dc206, 0xb8520029,
   6.353 +0x89b80e86, 0xad770f06, 0x5c77ee5d, 0x6807895e,
   6.354 +0x427d6068, 0x736bdc09, 0x38fe81a6, 0xfebbf496,
   6.355 +0x50965ad6, 0x267504b4, 0x364e07c7, 0xe84147c7,
   6.356 +0x0c48efe7, 0x144c061b, 0x1c14501a, 0x77e0f022,
   6.357 +0x68f75aa4, 0x40fc45a0, 0x60c5fc5b, 0x95eb0fb0,
   6.358 +0x708bdd0c, 0x7fb61768, 0xbf283577, 0x50c6b506,
   6.359 +0x0bd1e7d3, 0xbcb02428, 0x80a97f89, 0x88b0ee99,
   6.360 +0xcb89edee, 0x8833788c, 0x80dddcd9, 0xf8d3895b,
   6.361 +0xfa950ff9, 0x7be0d1c0, 0x7b7eedab, 0xc9f64c8a,
   6.362 +0x0275e688, 0xbf30c888, 0xedb776f6, 0xc883158a,
   6.363 +0x794b088c, 0xbb113dcd, 0xfdddf610, 0x8cb05876,
   6.364 +0xb3e5d10a, 0x56c50901, 0x622df34b, 0xe97ffb40,
   6.365 +0x2a08f7b0, 0x04fe1bb3, 0x5390a46e, 0xb968587f,
   6.366 +0x53dc840e, 0x6db77144, 0x05efca1b, 0x06ff4f08,
   6.367 +0x0b5bef0c, 0x6b98a50f, 0xb4b004b6, 0x3e905bc2,
   6.368 +0x68ee37fa, 0xe0662e9a, 0x45e409a6, 0xe820f570,
   6.369 +0x2df558d9, 0xaefc03d6, 0x74107626, 0x5908e809,
   6.370 +0x460cea2f, 0x8bf685ad, 0x5c1a5c5f, 0x2fc48d8a,
   6.371 +0x31ffa171, 0xf98341ee, 0xd0f37e05, 0xda41b037,
   6.372 +0xdab78dee, 0x444ef76d, 0x897f00b8, 0x405675ca,
   6.373 +0xef03550a, 0x167bbb5b, 0x9588d422, 0x24ef3056,
   6.374 +0x42c2ee28, 0x251e6b17, 0xef534c23, 0x3eda059c,
   6.375 +0x6ecd3fc7, 0x2d3c6f58, 0x8f08c3e9, 0x5067d6ef,
   6.376 +0x76c48665, 0x874789e0, 0x86842425, 0xbe9da106,
   6.377 +0x6820a96e, 0x5a136be8, 0x21abf30f, 0xee6877ce,
   6.378 +0x1cf2040e, 0x86475d1a, 0xf310f46f, 0x315339fc,
   6.379 +0xfec46f2c, 0xd0f668c0, 0xdee80ec3, 0x3bfb6414,
   6.380 +0xddb46a77, 0x83c60def, 0x0c430047, 0xc883f376,
   6.381 +0xd0fc09ef, 0x2c8d069d, 0xc1818690, 0x86e29b1f,
   6.382 +0x55758dd6, 0xcb81efa3, 0x4e558d3d, 0x6d437b78,
   6.383 +0xecf7e8ef, 0x12708db5, 0x7da03e27, 0x829a3573,
   6.384 +0x0c256616, 0xded7c080, 0x33e0b82d, 0xf03920d6,
   6.385 +0x5249de72, 0xbfc2837e, 0x8a548d27, 0x7428b510,
   6.386 +0x01418d11, 0x896f8c42, 0x5818a3d9, 0x09c60566,
   6.387 +0x985bc037, 0xa855f1eb, 0xc17bfb14, 0xe37f6150,
   6.388 +0x836175f8, 0x8fdac4fc, 0x7496f886, 0x0e6e1655,
   6.389 +0x9d0b6dad, 0x6dae1ae8, 0x70fdc3b2, 0x1f27036a,
   6.390 +0xc68969ed, 0xef03f625, 0xee1d4ba0, 0xe93ea910,
   6.391 +0xdefe830d, 0xa25a1b0b, 0x76aaee70, 0xec8d1b1d,
   6.392 +0xbf4f7360, 0xe5751a29, 0x85d231c2, 0x4960da0d,
   6.393 +0x166587d0, 0x7eeeadc5, 0x003dfcf7, 0x644f4520,
   6.394 +0xfcbb6476, 0x53d32955, 0x374d42d3, 0x5658d8b9,
   6.395 +0x0b9ee860, 0x9fd27189, 0x3ad8c2a9, 0x5f036ec3,
   6.396 +0xdfd7f960, 0x1588dc06, 0x8c350322, 0x1707468d,
   6.397 +0x5e2562e6, 0x05f60aa3, 0xefb12fcd, 0xb910db6b,
   6.398 +0x51b6af38, 0xa3cfefc3, 0xebec06c7, 0x415c5185,
   6.399 +0xb7eb0c46, 0xd0fb406f, 0x93015cc6, 0x17081176,
   6.400 +0x00a8b71a, 0xbb528b75, 0xb636c237, 0xeeb11c17,
   6.401 +0x25062d0a, 0x49307fac, 0xad6fbb58, 0x0dc34c07,
   6.402 +0xf64d8053, 0xc60ccb90, 0x0b90b6e6, 0xed5326d9,
   6.403 +0xfe3190c7, 0xe8ef3868, 0x53db55fd, 0x1c9a50f2,
   6.404 +0x7a24562c, 0xbd77134c, 0xfa810183, 0xbeab6948,
   6.405 +0xeb0ed03d, 0x3d8d806d, 0x05c61310, 0x9e261c0d,
   6.406 +0x481a5bb5, 0x7722126f, 0x85dd523a, 0xb024a3ad,
   6.407 +0x0ec50350, 0xcf637823, 0xbb08fde0, 0xffc8c33c,
   6.408 +0x5ffa8954, 0x6d361588, 0x555b3ebd, 0xe8013f56,
   6.409 +0xe24b5c19, 0xb76dc4cb, 0x752e5041, 0x4ce819c2,
   6.410 +0x1f445c68, 0x91c3601e, 0x3d5630b8, 0xd52db62a,
   6.411 +0xc61753e6, 0xf00b4005, 0x175c1637, 0x1833dce8,
   6.412 +0x57a7e803, 0xf81b6fdd, 0xd6c81556, 0x5884665d,
   6.413 +0x1ee85975, 0x3a27e8dc, 0x17a9dd76, 0xe84f6e04,
   6.414 +0xdae880d1, 0xeedba471, 0x13ba2468, 0x3d0ee953,
   6.415 +0xa8fceaff, 0x6716836e, 0xdc0d5f18, 0xbbae0860,
   6.416 +0x5e1763c4, 0x00c3f275, 0x5b572aa9, 0x8ebc0c84,
   6.417 +0x0da1115b, 0x26b63703, 0x1017151c, 0x78e0e7c2,
   6.418 +0x1407c18f, 0xebc73be7, 0x064fa187, 0x25ba23bb,
   6.419 +0xff681cfc, 0x6ea37100, 0x4bc705a0, 0x3369e8fc,
   6.420 +0xafa9043d, 0x7e091a96, 0x0f71be0c, 0xdb20e21b,
   6.421 +0x440802fb, 0xdbc1d58f, 0x6c36ed74, 0x7e035cb7,
   6.422 +0x27e48417, 0xff54eca1, 0x43a15b50, 0x17cba72c,
   6.423 +0xc0fd2728, 0x74f0f7ee, 0x613b6826, 0xf43d796d,
   6.424 +0xb5bb0220, 0x0b376cff, 0x0e097f58, 0x31d47ef8,
   6.425 +0xe1d0ebdb, 0xf6360895, 0xf4eb030c, 0xc3c5a209,
   6.426 +0xe022a21f, 0x0fe85d74, 0x5bd87e23, 0x893cf4c2,
   6.427 +0x2818ab75, 0x5d0db91c, 0x51d900b8, 0x38f0a3a2,
   6.428 +0x9b30fd82, 0xc77c4e5d, 0x8025e405, 0x2fe8125d,
   6.429 +0x300939a8, 0xb6348d33, 0x265436d9, 0xcfe74303,
   6.430 +0xe7f876b2, 0xe604b5b6, 0x7c04008b, 0x77fb8111,
   6.431 +0xb9d72110, 0xe92857dd, 0xe4280430, 0xc1890e7d,
   6.432 +0x53575f62, 0xba04f873, 0xb7f12c5b, 0x5916158b,
   6.433 +0x5bf17a83, 0xc6ffa107, 0x66e884ec, 0x1939eb22,
   6.434 +0x7420423b, 0x3bb76814, 0x124487d8, 0xe9ad3a5a,
   6.435 +0x02bb78ce, 0x66c1df09, 0xa204c5cf, 0xf0b1e9b6,
   6.436 +0xd4c15e83, 0x208edb00, 0x6a37716a, 0x82abd76f,
   6.437 +0x5e23a158, 0xc200a6d6, 0x907bfdf7, 0x0c8d4362,
   6.438 +0xe1a1359d, 0x6a162cd3, 0xe62e8174, 0x079efd0f,
   6.439 +0xb61ac70f, 0x89b6035a, 0x62158924, 0xb0b84f7e,
   6.440 +0xc46a0a84, 0x039e0975, 0x7a6c0a74, 0x08fe52ad,
   6.441 +0xf8397fc1, 0x0b52c533, 0xa2d4eca9, 0xdf8b1ce4,
   6.442 +0x770a8bec, 0x89d440c7, 0xb6fbf448, 0x1c705b0b,
   6.443 +0xbb75200c, 0x8400e94b, 0xd40de2bb, 0x1378e802,
   6.444 +0xfdf1e9f6, 0xf70b1833, 0x5cfd8a70, 0xd5ed35a4,
   6.445 +0xc2664777, 0x0f970832, 0x3d25c588, 0x5d001f76,
   6.446 +0xc709bbe9, 0xb1c28105, 0xe80ef88d, 0x328b4293,
   6.447 +0x8d8cf685, 0x72dcdee1, 0x8e0fb21c, 0x618c076a,
   6.448 +0xeadd830e, 0x0001b12d, 0xb48d5652, 0x0fd09e86,
   6.449 +0x99788321, 0x05872724, 0x85ce4bbe, 0x03018c39,
   6.450 +0x3bdbf004, 0x2c68eed2, 0x2abb59bf, 0x4b1ee913,
   6.451 +0x01baeb86, 0x53d7ae47, 0x4aa1bdf3, 0x7b719fc4,
   6.452 +0x3c89b10c, 0xbcd88a24, 0x31078a50, 0xc2fe25ba,
   6.453 +0x10d284f6, 0x0c743a3c, 0x0b3e5446, 0x81b76d04,
   6.454 +0xbbf4755f, 0xfbd37548, 0x1e730550, 0x7a463a7f,
   6.455 +0x4ac0338a, 0x30020c70, 0x0db3c6df, 0x721d08c8,
   6.456 +0x5a354be2, 0xdcd03e68, 0x5306568f, 0xda8a0938,
   6.457 +0x89d81bfa, 0x699d01d6, 0xa9764a4f, 0x6ad33f75,
   6.458 +0x27656803, 0xfbf8698d, 0x02d04e3a, 0x881e0a34,
   6.459 +0x5ffdda01, 0x894e94aa, 0x78802414, 0x1a742f03,
   6.460 +0x5250a88d, 0x5827a9fd, 0x081e1223, 0x3a388025,
   6.461 +0x737a705e, 0x2a2fec4b, 0x89752f09, 0xd78b6ceb,
   6.462 +0x4c69d26d, 0x37357ea3, 0x5d02eb79, 0xcc40bd11,
   6.463 +0xb61b0453, 0x81f13e06, 0x8d0ab240, 0x9f7152c6,
   6.464 +0xebc0fe9f, 0xe2faa34e, 0x21e890b6, 0xddfb0887,
   6.465 +0x9b086ac6, 0x6a00902e, 0xe0b3ebfe, 0xe4c1b167,
   6.466 +0x8005ffff, 0x833e653d, 0x5f14301b, 0x1f74288e,
   6.467 +0xe0563ccd, 0x1652d454, 0x551d860f, 0xac36fde1,
   6.468 +0x8112ee81, 0x8ed705c7, 0xdfb6b97d, 0x298e88c7,
   6.469 +0xb6852460, 0xedc860ad, 0x0b64a005, 0x230f68ff,
   6.470 +0x25801eee, 0x89105c29, 0xbe822bea, 0x1ed59c2a,
   6.471 +0x4a11a35a, 0xd0708db4, 0x8af284f6, 0xaa16ddbd,
   6.472 +0x88d5192b, 0x893803e8, 0x8dba370d, 0x48a24ff7,
   6.473 +0x3c53d63c, 0x09c8840b, 0x077cb1f7, 0x5434ac02,
   6.474 +0xefbb201a, 0x68a3775f, 0x8a04a106, 0x13a3240c,
   6.475 +0x58a34403, 0x7ab90b7a, 0x15f7696f, 0x73685b42,
   6.476 +0x57ee1455, 0x02904e3c, 0x7a57ec3d, 0x4ec9842a,
   6.477 +0xb55b7490, 0x4b764a84, 0xcec41734, 0x74ce7c51,
   6.478 +0xfdbb1a37, 0x39179995, 0xf3aa76f3, 0x6c575d53,
   6.479 +0xaab044b7, 0xde76398f, 0x3a232029, 0x1d0177e2,
   6.480 +0xefdf011a, 0x144b97ef, 0x5ec7c072, 0x50825dec,
   6.481 +0x5fc3843f, 0xffffe361, 0x72377603, 0x701caed1,
   6.482 +0x036d47e9, 0x8ebc1b1d, 0xe941a3c5, 0x14b4a53b,
   6.483 +0x87bf8847, 0x92444806, 0x7b507958, 0xb76f4090,
   6.484 +0x52d115b1, 0x0515507e, 0x7da082ec, 0xf34844a0,
   6.485 +0xc733e23e, 0x24dd13e2, 0xc02e7c20, 0x05f61935,
   6.486 +0xbd4bbec1, 0xbba89045, 0x08dbd0fe, 0x06dd7b6e,
   6.487 +0x68057095, 0x21483c49, 0x60a9f740, 0x53e95442,
   6.488 +0x0644901a, 0x37ca3058, 0xd230ce14, 0xa2128876,
   6.489 +0xd04b1810, 0x182a3407, 0x1b29ca2e, 0x084466d0,
   6.490 +0x662907cd, 0x34efe1e2, 0x32e80557, 0x602807ec,
   6.491 +0x8a5df886, 0x35628068, 0x4851b64e, 0x60a6bd1b,
   6.492 +0x508d0310, 0xd358a515, 0x0375ba2d, 0x4dc753c2,
   6.493 +0xaa608efe, 0x2a367134, 0xdc3d95e2, 0xad7285ad,
   6.494 +0x141a4c0f, 0x3502bb07, 0x7710eef5, 0x7614050f,
   6.495 +0xad546609, 0x581b6868, 0x5231c31d, 0x2974ed03,
   6.496 +0xdf89c8ee, 0xfb398303, 0x35882b54, 0x01dc9103,
   6.497 +0x6a170683, 0x7308acff, 0x8d138b29, 0x8d468042,
   6.498 +0x6db1d64b, 0x348d0ce3, 0xc0e74386, 0x77302c0e,
   6.499 +0xff6f8e6f, 0xfa830b77, 0x083e7408, 0xd772eb89,
   6.500 +0x29743218, 0x4cea7783, 0x74403cb7, 0x28579e23,
   6.501 +0xa3fb079d, 0x4e245dd8, 0xd1787520, 0x3433e967,
   6.502 +0x6f77ac0b, 0x68080624, 0xe8511a8e, 0x2d0836f2,
   6.503 +0xae3b40b4, 0x6cf83d66, 0xda16d540, 0x147704da,
   6.504 +0x03e89e83, 0x5d5ddb78, 0x75d312a2, 0xeb04aa93,
   6.505 +0xfd03188d, 0x75ab7d86, 0x2b068bb6, 0x66e5bc74,
   6.506 +0x7c0ec3a3, 0x3589f2f8, 0xc866e90b, 0x7fd21d37,
   6.507 +0x0e57654b, 0x4fe92434, 0x6e1ccdff, 0x95c03e81,
   6.508 +0xc48631a6, 0x88466b32, 0x93e5ff8d, 0x4bd0ad00,
   6.509 +0xfeab946f, 0x74c809d8, 0xf8c82534, 0x2d03d339,
   6.510 +0x0e72fa6d, 0xd8c4870f, 0xbc2cc139, 0xc21ec183,
   6.511 +0xc7253d5f, 0x053ed405, 0x8bba09d0, 0xd8a1dc06,
   6.512 +0x6b442308, 0x77fb2934, 0x772d4a14, 0x343ef229,
   6.513 +0x576cfa01, 0xc0a1e0b0, 0xd48ee4ad, 0x720b2d35,
   6.514 +0x2efc11a9, 0x683aadc0, 0xa36f1268, 0xac610713,
   6.515 +0xed0cd62a, 0x62ed312b, 0x7e70ab62, 0x69adf1df,
   6.516 +0xa12e740a, 0xcc15aec8, 0xcb80bc7b, 0x83cce376,
   6.517 +0xd0e6c0be, 0x61a007ff, 0x624517b0, 0x3920c683,
   6.518 +0xa1e67cc5, 0x78574437, 0x9beb3e3d, 0xe6c1c677,
   6.519 +0xf75ff7da, 0xcc868b05, 0x897aa32c, 0xc48e8bf8,
   6.520 +0x09efdb69, 0x9435f23f, 0xc1291358, 0x1189d319,
   6.521 +0x84f742d9, 0x25d0861d, 0xa534f23b, 0xe9820f78,
   6.522 +0x3245ba82, 0x0c0025c8, 0x584c2fb7, 0x5e493499,
   6.523 +0xdf11c601, 0x3b350116, 0x4f7e7c2d, 0xac0f3d11,
   6.524 +0x2c3d8958, 0x6e5336d6, 0x4afba1ff, 0xfe3f8238,
   6.525 +0x1537a2da, 0xd9985e34, 0xee9215b7, 0x290719ba,
   6.526 +0xdf1031e6, 0xc22f750c, 0x0aba1a90, 0x2f5b7e09,
   6.527 +0x13cc0d14, 0x40269cdd, 0xaf6da555, 0x9a4e0957,
   6.528 +0xe06a6c66, 0x34a4f5e8, 0x0b0a696b, 0x6943ee43,
   6.529 +0x056e4deb, 0x52e82691, 0xa21da216, 0x2a65de00,
   6.530 +0xd6211680, 0x2c710e60, 0x36e77f09, 0x4b29d05a,
   6.531 +0x788dd539, 0x5c1a7d34, 0x2db04270, 0x5a494576,
   6.532 +0xc15a15e8, 0x817fa5c3, 0x68f08f5c, 0xaf5a99a8,
   6.533 +0xb6ff5c4d, 0x30bb2cd4, 0xf1f2a984, 0x4d6f09e2,
   6.534 +0x214b63bc, 0xbe03941a, 0x1beb2921, 0xa9b4381a,
   6.535 +0x43735c5f, 0xc1968d47, 0x84be15d0, 0xf991f887,
   6.536 +0xbbe29514, 0x1366c271, 0x77a8d339, 0x261c8290,
   6.537 +0x876e087b, 0x07148290, 0xb41674de, 0xb7ddc6c5,
   6.538 +0x8b22808b, 0x40423937, 0x048ff4b0, 0x890ddbf7,
   6.539 +0xe9e9202d, 0x3ce9d30a, 0x73d48d7c, 0x405b923f,
   6.540 +0x43d48b6e, 0xa6f210a0, 0x7037ddba, 0x86418abf,
   6.541 +0x261020a1, 0x7ab75206, 0x988dee89, 0xc7502600,
   6.542 +0xeb50501e, 0x8a7000a1, 0xf4c0623b, 0x592b566c,
   6.543 +0xedd2215e, 0x32f3179a, 0x8336ffd8, 0xe8190a0d,
   6.544 +0x035b462d, 0xe29a8cf4, 0xec41bf5e, 0xe2c3e894,
   6.545 +0xa3603c53, 0x61344abc, 0xe0715a23, 0x2d50e81f,
   6.546 +0x6ce67460, 0x0cec91b7, 0x90046a0d, 0xb5b80729,
   6.547 +0xa0c0456a, 0x236deeeb, 0x68c5fa1e, 0x2fd77b96,
   6.548 +0x014258fa, 0xd984a814, 0xd4281027, 0xe95bf683,
   6.549 +0xd2077f07, 0xc740bad6, 0x03c0246c, 0x46e0ce2c,
   6.550 +0x013ee893, 0xc28152c4, 0x2781f82b, 0x7612d51f,
   6.551 +0x7ddc050f, 0xc5d7056a, 0x3461bb59, 0x54ece0be,
   6.552 +0x34181ced, 0x3bb1d818, 0x105c24b9, 0x000c0b10,
   6.553 +0x9f020809, 0x257304ae, 0x65035d51, 0x6db8a024,
   6.554 +0x750a8855, 0x134a815b, 0x3d0c3014, 0x19aadbb1,
   6.555 +0x3b573e15, 0xc5137691, 0x5e76eb6d, 0x2b092b2c,
   6.556 +0x89e00807, 0xace046e9, 0x140c1b2a, 0xe0345531,
   6.557 +0x80480be1, 0x034deaa0, 0xe3468bb8, 0x888be2c7,
   6.558 +0x00964edb, 0x32988bb3, 0x025bb8b0, 0x70da4eee,
   6.559 +0x2e857228, 0x6dd6b6c8, 0x9d7b639d, 0x71fdfa13,
   6.560 +0xc6137209, 0xf5db8468, 0x2bff6709, 0xdf6ca910,
   6.561 +0x0ce42bd2, 0xc0396878, 0x03a38168, 0xe91420f6,
   6.562 +0x7d001a76, 0x7b1e27f6, 0x9c68e3b8, 0x5a215f77,
   6.563 +0xc42d56e9, 0x650f0dc2, 0x8d1c6353, 0x01cabd45,
   6.564 +0x67bc22b7, 0x262575e8, 0x4bc7390b, 0x7b75384f,
   6.565 +0x140d4514, 0x66143e47, 0x3b837741, 0x28ee7235,
   6.566 +0xf7ef0059, 0xcc3595fb, 0x8bc48603, 0x9613d296,
   6.567 +0x6ed7e2c8, 0xcf778901, 0xd3891c10, 0x11df847f,
   6.568 +0x249e031c, 0xc37d818d, 0xc2390676, 0x307b4273,
   6.569 +0xc20f6903, 0xc7090c76, 0x2ff606ee, 0x34a1c215,
   6.570 +0x0a1e24be, 0x8df4153b, 0x1ccd1dfe, 0xd8f7e889,
   6.571 +0x21ff1521, 0x41fd57c2, 0x3e225ca1, 0x843bd329,
   6.572 +0x69ef409a, 0x61cc5a82, 0xb43b2ad7, 0x2e2b8d04,
   6.573 +0x27f1e1bf, 0x5970073b, 0x330f4974, 0x05ad7501,
   6.574 +0x68f0e1e0, 0x714d11ac, 0xe1a3995e, 0x582080b3,
   6.575 +0x2d2924b8, 0x430781d4, 0x018a3534, 0x0aad2360,
   6.576 +0xb3e84b1f, 0x0d91e82d, 0xaf5b8169, 0x39db982c,
   6.577 +0xde283bd6, 0xe00ded12, 0x77c3615d, 0xd20c0f57,
   6.578 +0xa1de9605, 0x9709d510, 0x3b5aa930, 0x203f8370,
   6.579 +0x0155c529, 0x2015d8c7, 0xb1101dbe, 0x3f3bc0af,
   6.580 +0x208520c7, 0x0c5a6300, 0xa04653b8, 0x61476a95,
   6.581 +0x06396f64, 0x21c7dfed, 0x3d8bad72, 0x73ef3907,
   6.582 +0xc0de182d, 0x05de17ed, 0xeac1071a, 0xfac93109,
   6.583 +0x8d8dce19, 0xdbc78a5d, 0x898a8938, 0xad6ca39b,
   6.584 +0x2930fbd5, 0xc9f8052d, 0x2587286a, 0x2c0982d9,
   6.585 +0xf836e87e, 0x40cdb82e, 0xa0a35e11, 0xa519ca5a,
   6.586 +0x638787c7, 0x2c321ab2, 0xfe36922c, 0x1163bab3,
   6.587 +0x3e815457, 0x1b031336, 0xf3d2f174, 0xaf0b6add,
   6.588 +0xcc682bd0, 0xc46f0928, 0x8159619f, 0x10ba9b28,
   6.589 +0xbfe03a22, 0xf418fb40, 0xb9c0a107, 0x106a372c,
   6.590 +0x41116856, 0xadd68e03, 0x454a9181, 0x379c2289,
   6.591 +0x25422d48, 0x360e86be, 0x5207908e, 0x7e87b570,
   6.592 +0xc750a3df, 0xfbef315c, 0xf7a2208a, 0x598fbc06,
   6.593 +0x44a18674, 0x250f5ae8, 0xf52f5cf0, 0xe51d2996,
   6.594 +0xf73c8d96, 0xdfbb003f, 0x3d7d5b78, 0x07864274,
   6.595 +0x8a5a72c4, 0x16216f47, 0x3ac003a9, 0xc7db47c2,
   6.596 +0x1b7df021, 0xea5659a1, 0x3a2d03f7, 0x81553076,
   6.597 +0x02ea53e2, 0xdeacfc67, 0x0182550b, 0x013a2805,
   6.598 +0x7c221cba, 0xad23138b, 0x0374d8e9, 0x60500847,
   6.599 +0x142b5aad, 0x06fe0704, 0xfd881ecf, 0xe80477ff,
   6.600 +0x3c60ae40, 0x5c5f037d, 0x08abd3ec, 0x078ac441,
   6.601 +0xdb73b2b7, 0x97c5a46c, 0x1b5597b5, 0xb98f48b4,
   6.602 +0x46e9a527, 0x96e9b10e, 0xbc0ba7fe, 0x57573a60,
   6.603 +0x332061d8, 0x245e9577, 0x9242715e, 0xfe32dc34,
   6.604 +0x366e0035, 0x0d3dbac0, 0x464c457f, 0x026e0fbb,
   6.605 +0xa1d6ebd6, 0x004c2595, 0x0be0f63d, 0xd00001b4,
   6.606 +0x90a166eb, 0x2d487ebf, 0x77a981f1, 0x6794b1dc,
   6.607 +0xdb7016d9, 0x08a838d3, 0xc72320d0, 0x44eeeef8,
   6.608 +0x740320cc, 0x75060506, 0x30d268b5, 0xe47d18df,
   6.609 +0xd7782a24, 0xf4a2180b, 0xaac4693b, 0xd0af06ac,
   6.610 +0x12e8e5e9, 0x5e78de70, 0xb51d493b, 0x97abb00c,
   6.611 +0x76a20a61, 0xefa6bc6d, 0x36dd6815, 0xd7b85be1,
   6.612 +0x241d3753, 0x5295d47e, 0xdfc801e7, 0x85df2c72,
   6.613 +0x72c38b6f, 0x1403a33d, 0x3d860151, 0x7d180ec1,
   6.614 +0x05fb005d, 0x986b09c4, 0x3074c488, 0xf7354247,
   6.615 +0xfdb03df1, 0x04407a83, 0x15c6f235, 0x358e4218,
   6.616 +0xf5f82080, 0xedd07c0f, 0x4dcb64d9, 0xc12b2d43,
   6.617 +0xd84344e2, 0x788291d6, 0x405eed40, 0x5f64d1d3,
   6.618 +0x05c7d642, 0xb0cc90c8, 0x5794a303, 0x3709d86b,
   6.619 +0xb8786a1e, 0x3fd025ea, 0xb22f4075, 0xf0687ecc,
   6.620 +0x300c2b0f, 0xd0240c89, 0x405a8ba6, 0x350bc5bd,
   6.621 +0x03f56a0d, 0x55536d6a, 0x30ee0151, 0xf8f8a86e,
   6.622 +0xdb101847, 0x22337208, 0x4ef3b213, 0xdbd28459,
   6.623 +0xe94b823d, 0x8852fdec, 0xbb3743c4, 0x7e8609dd,
   6.624 +0x5268f87d, 0xe8243651, 0xb11b1076, 0xe5b635a6,
   6.625 +0xf83d8bfe, 0xa48c307d, 0xbecb0448, 0xecfd0b01,
   6.626 +0xfe261342, 0xe1c1d189, 0x1184b952, 0x98a3460e,
   6.627 +0x0cc71000, 0x9c6fa54b, 0x89a68dda, 0x6ec721f7,
   6.628 +0x6d037dd8, 0x1e8675d5, 0x2b63565d, 0x681b8451,
   6.629 +0x72f9a1ee, 0x894c76c0, 0x1acb46c1, 0xc72b1a2d,
   6.630 +0x842967de, 0x267dc21f, 0xcc8801bf, 0x0e01b5a9,
   6.631 +0x01dae8f1, 0x8dce640d, 0x5dc56b15, 0x2799e86a,
   6.632 +0xdfb8fc8f, 0xeea56d1d, 0x8c998d49, 0xfa40433f,
   6.633 +0x4aa9fbe0, 0x8103b0cc, 0xc6e844d4, 0xfa36dfd3,
   6.634 +0x395018c5, 0x3e860ff0, 0x0579c6b5, 0x71235f98,
   6.635 +0x01fd6cb1, 0x5d8c0a26, 0xd87c4cd2, 0x5d770e02,
   6.636 +0x0ec1f729, 0xda263163, 0x9b3235ba, 0xfa120108,
   6.637 +0x742dbf21, 0x400b76c0, 0xa0105f10, 0xd93941d0,
   6.638 +0xa3805a72, 0xf70fd7b7, 0x7f215bd0, 0x28605d73,
   6.639 +0x79f7cb45, 0xe8bae73d, 0x1ad2f7f6, 0xd28e0274,
   6.640 +0x68213320, 0x423d58ef, 0x1a062d05, 0x28d8afe6,
   6.641 +0xf08eecc4, 0x5eb78265, 0x08474c83, 0xd1a4b952,
   6.642 +0x1c2eff6f, 0xc96933ad, 0x29da890a, 0xd269b2ca,
   6.643 +0xa1b5684e, 0x690b9cb7, 0x2934b3f6, 0xa8d15cf2,
   6.644 +0x2d1857f7, 0x06a10978, 0xddfa967a, 0xab82472e,
   6.645 +0x0ea37f58, 0xd419eaeb, 0x097ba057, 0xc4440596,
   6.646 +0x0660bfc4, 0x0159d2a0, 0x26991a5d, 0xf4b42c48,
   6.647 +0x7501e4a4, 0xa05b1727, 0xf674fa01, 0xf886eee8,
   6.648 +0xd0041ad3, 0x047806e9, 0xe2b31574, 0x859dfdba,
   6.649 +0xc09e1b7f, 0xcac9d368, 0xebed17ff, 0x77da90e6,
   6.650 +0x2abae829, 0x12ef6b5e, 0x0c1de84f, 0x7eef4274,
   6.651 +0x0773d839, 0xeb31a2e8, 0xe3c35bf0, 0xdb92dcf5,
   6.652 +0xeff3edf1, 0xed0e8958, 0x744d1dc6, 0x6a7bcbf7,
   6.653 +0x7453e82e, 0x43f5eb58, 0x0dc42808, 0x84118af4,
   6.654 +0x1074ebd2, 0x2f16318a, 0xe26e2370, 0x38df1ddf,
   6.655 +0x52b774c2, 0x138afb9d, 0x100a018a, 0xd202cd0f,
   6.656 +0xb6dd8c29, 0x41c36f0b, 0x742f432e, 0x4cde2be4,
   6.657 +0xe893c08c, 0x5127d2eb, 0x168b71ab, 0x242c4597,
   6.658 +0x1c8bc5ba, 0x1c239b5e, 0x50b59d4e, 0x4c142a16,
   6.659 +0xe80795ae, 0x07ffe25e, 0x77c6b9b5, 0x02ff8337,
   6.660 +0x428d0b7f, 0xfedf8501, 0x3a80efef, 0xc127752e,
   6.661 +0x094708e6, 0x7e0315ce, 0xc0f089c1, 0xed0a1ba3,
   6.662 +0x0410c8c1, 0x891cdb81, 0x81a11d30, 0xe829b548,
   6.663 +0xc1f65dea, 0x94aa7ba2, 0xc50a29ef, 0x4c15ad0c,
   6.664 +0x05741d7c, 0x50a18e2e, 0xff77d83e, 0x77093cd0,
   6.665 +0x0ac36b14, 0x5c8d41b5, 0x7613d002, 0x0df685ec,
   6.666 +0x18370a05, 0x9dea0e89, 0x4b06de4b, 0xbcd28ef5,
   6.667 +0x64e41258, 0x841988ec, 0xe0edcb77, 0x0775d301,
   6.668 +0xe80de002, 0x6b5bd2c1, 0x047ea978, 0xdeeb60e4,
   6.669 +0x24016895, 0xbf14fe54, 0xbe85c1e1, 0xb054bdc1,
   6.670 +0xe864e6d1, 0xdda1b8b4, 0xe6df087e, 0x4753ae26,
   6.671 +0x0afb836f, 0xb71384e1, 0x09bcd00d, 0x6cc3137e,
   6.672 +0x6aad889b, 0xeb42de50, 0x31bb77ec, 0x881377e8,
   6.673 +0x4ad34fe8, 0x9a681875, 0x74db0680, 0x360d36ef,
   6.674 +0xdc85bb12, 0x2debae1b, 0x200ae8f5, 0xac55627f,
   6.675 +0x8edfebc5, 0xa93a9329, 0x0c9f0ac3, 0xa90dc68f,
   6.676 +0x815f5d0f, 0xc581bcc6, 0xf0530a4e, 0x8de8f142,
   6.677 +0x28a36b78, 0x00795e94, 0x8d83fff0, 0xc2d19cdc,
   6.678 +0x60bb3f02, 0x83260051, 0xf7c3dc51, 0xec6d8f53,
   6.679 +0xdd2dc381, 0x56882b74, 0xc1670555, 0xcc85d7ee,
   6.680 +0x9404e068, 0xebe50423, 0x0daee807, 0x1acf9484,
   6.681 +0xa93ec7e8, 0x1521c833, 0xcf839315, 0x9eefdb21,
   6.682 +0x97778b3d, 0x86545817, 0x220553e8, 0x8b8b6e30,
   6.683 +0xc7bf6e17, 0x9303cab4, 0xc3c1831a, 0xf08ef0e1,
   6.684 +0xa9b75539, 0x0573caf7, 0x828c25ba, 0x16f72753,
   6.685 +0x83cadd6a, 0x0211750a, 0xf16ba990, 0x740af896,
   6.686 +0x3e07ea7b, 0x6bdc2826, 0x6d2cca19, 0xff47ab1e,
   6.687 +0x2083f8dd, 0xd689c50b, 0xdd9e17e9, 0x0c5237fa,
   6.688 +0x8de2a818, 0xc8d470b0, 0x9eb2c22a, 0xab10a32b,
   6.689 +0x73087f09, 0xbcdca13e, 0x13abda5f, 0x123fc216,
   6.690 +0xac503dbf, 0x042d59c3, 0xe6abc7fa, 0x1ef5674a,
   6.691 +0x3826a35e, 0x12bc38a3, 0x63d597a7, 0xbe34a33b,
   6.692 +0xacfe68a8, 0x81812e28, 0x5daf4c46, 0xa2a7dbe6,
   6.693 +0xd9ebf26d, 0xa7757d58, 0x3cfc5808, 0x8b9e23c2,
   6.694 +0x03cb1a8f, 0x73cb399f, 0x47785ff6, 0x76ce39f0,
   6.695 +0x0e739e12, 0x3877cd39, 0xa9e8de39, 0x75cf1b81,
   6.696 +0xc82943f1, 0x06001089, 0x055e0dba, 0x3b155faa,
   6.697 +0xde0b9dfc, 0x1f558202, 0xc0890d1f, 0x9d4a2276,
   6.698 +0xa673375d, 0x101bad1a, 0x35d9c889, 0x758df5f1,
   6.699 +0xeb42c083, 0xa5a145be, 0x1b7c4529, 0xfc48ed2e,
   6.700 +0xc40d3b85, 0x2c5df673, 0x3102ade2, 0x8d1889d0,
   6.701 +0x06754841, 0x280dd8f0, 0xb9e5ebd0, 0x28478114,
   6.702 +0xf843854e, 0xb06ff129, 0x217fb1a7, 0xf8598dc1,
   6.703 +0x06411d3b, 0x2d435fa2, 0xd8e696e5, 0x4106fc30,
   6.704 +0xd19858c8, 0x1533352b, 0x40b69003, 0x223b7034,
   6.705 +0x83405c24, 0x8d4bb106, 0x03f09ffc, 0x0e071336,
   6.706 +0xc25d80c6, 0xb52fa65d, 0x03343c18, 0x8b27b72d,
   6.707 +0x44b6bb42, 0x8939fc89, 0xc27824f8, 0x939acd03,
   6.708 +0xd1300db1, 0x46afc1c1, 0x47335a26, 0x32a00489,
   6.709 +0xd3598941, 0x0b5a991f, 0xb6ec084b, 0x882c5b2a,
   6.710 +0x4d5a5905, 0xdd7dec1c, 0x0314160c, 0x8c1f0453,
   6.711 +0x9a604a82, 0x08bac022, 0x0e62b545, 0xa69ce496,
   6.712 +0x8039a21d, 0x594edb01, 0x3b904dc3, 0xbc14d753,
   6.713 +0x7e20684d, 0x21042003, 0x02bbbae2, 0x8314da34,
   6.714 +0x11791968, 0x09e3ba45, 0xff6a16ec, 0xa6cd74f3,
   6.715 +0xe64035ff, 0x2a2ebe66, 0x0f281c2a, 0xc8348210,
   6.716 +0x18329e6d, 0x2a1e5ea1, 0x350b7cda, 0x3dc20d21,
   6.717 +0x58590116, 0x2cefd475, 0xef114563, 0xf3582d1f,
   6.718 +0xefc0a675, 0x155027fd, 0x733befd9, 0x54a12737,
   6.719 +0x155c3d26, 0x07d12bc3, 0xfe5a8237, 0xac2dfb36,
   6.720 +0x5def754b, 0x42745807, 0x172608b8, 0x655fdba7,
   6.721 +0x689d1dbe, 0x3d972b69, 0x991ca3eb, 0x7f6818ef,
   6.722 +0xcb9d8610, 0xb1730f05, 0xca7c78e8, 0xe144cca9,
   6.723 +0xbf7ffd5d, 0x109f6653, 0xff740806, 0xa0e12ddc,
   6.724 +0xa47a463f, 0xf17629cd, 0x4b007752, 0x8174a07a,
   6.725 +0xa97e147b, 0x75f886ed, 0x0d046ae3, 0x6c1c438d,
   6.726 +0xa20dec08, 0x232e3681, 0x22decacd, 0x1643f1d1,
   6.727 +0x0aba6b50, 0x21c31e59, 0x44135200, 0xadd76402,
   6.728 +0x1deb46d3, 0x3c7d240c, 0x5d10558b, 0x582edae6,
   6.729 +0x342414e8, 0xb020b646, 0x0e356b04, 0x05230837,
   6.730 +0xf729324e, 0x0e9f6d88, 0x8bf6c203, 0xb019b827,
   6.731 +0x5f036341, 0xfefd6446, 0x6da8e8ae, 0xc904f37a,
   6.732 +0xb016f5f5, 0x6bdbfef4, 0xbc800ac6, 0x06847303,
   6.733 +0xf47dd17c, 0xed7e05f6, 0x28740604, 0x681c3c11,
   6.734 +0xec1d13d9, 0xfdcd9301, 0x7b96b8bc, 0x24d2341f,
   6.735 +0x012566de, 0xaedefd06, 0x23c955ab, 0x04090406,
   6.736 +0xdbc4d610, 0xd8010436, 0x14253b68, 0xf672cc3f,
   6.737 +0x0403efc7, 0x26104068, 0x6160b6de, 0x3a8d8f89,
   6.738 +0xd6d9e316, 0xc701a245, 0x24045004, 0x082c7b1e,
   6.739 +0x03bbbfcd, 0x681c6a16, 0xe1a84664, 0x75649982,
   6.740 +0xb4b03f7a, 0x1fdff80e, 0x00139e91, 0x50383300,
   6.741 +0x3a386856, 0x8faeab05, 0x28340cbe, 0x430333c8,
   6.742 +0x0362d8dc, 0x0f14fbbc, 0xb5eb9f8f, 0x60a58c79,
   6.743 +0xb3d27a01, 0x1f495aec, 0xe9d073f6, 0x68ee0d31,
   6.744 +0x10e95c00, 0xc28c10ff, 0xe0b58b35, 0x577f68ae,
   6.745 +0x45408d70, 0x43c60388, 0xb90f5891, 0x98b712a2,
   6.746 +0x42bd8895, 0x9c43a1ed, 0xda310610, 0xa045b785,
   6.747 +0x10062a15, 0x22fb723f, 0x433d452e, 0x0506be04,
   6.748 +0x14c2ed03, 0xf5e3301a, 0x0526a6bb, 0x585b0c37,
   6.749 +0x516c4911, 0x09171573, 0x18a31136, 0x5bdc4329,
   6.750 +0x88bbf578, 0x704917b7, 0xbe147e8d, 0x6c35eb83,
   6.751 +0x8014b1bf, 0x024782df, 0x476d5f03, 0xca5c45cd,
   6.752 +0x0b23c05c, 0x68230b77, 0xc36689ef, 0xc33e1506,
   6.753 +0xd18deef8, 0x68a61c87, 0x6a565318, 0xbfc7bd3c,
   6.754 +0x0450dd06, 0xb028a366, 0x236bf1d5, 0x9341b08a,
   6.755 +0x3fc3e6e3, 0x14563839, 0xc40c6823, 0x28a9ea0e,
   6.756 +0x4610c037, 0x88bb63c6, 0x25744214, 0x3910404f,
   6.757 +0x1106a37b, 0x97c8ec29, 0x1a9c40ed, 0x13602ac0,
   6.758 +0x1ef54f8e, 0x892ec1b9, 0x715796e3, 0x453418e4,
   6.759 +0x1e059800, 0x85a21e00, 0x59393f11, 0xd586c989,
   6.760 +0xd603915d, 0xb457adc8, 0x39ff0997, 0xe0ba193f,
   6.761 +0xc1a868c3, 0x5e021bf1, 0x711e081f, 0x7132aec8,
   6.762 +0xf108c7d1, 0x1c93529f, 0xd42e2239, 0x0c18f708,
   6.763 +0x7eedae1c, 0x9d86e6f6, 0xd8500642, 0xc56832ff,
   6.764 +0x401e6849, 0x18ddda26, 0xdf1b8ce8, 0xf7ab1fc0,
   6.765 +0xca688975, 0x91b40d93, 0x03611b00, 0xb82305b9,
   6.766 +0x5241ae0a, 0xb759b75f, 0xc90c1758, 0x15108a51,
   6.767 +0xd82bddb6, 0xba5fe34e, 0xa8bc08b7, 0x0722d9ee,
   6.768 +0x7c5b02c0, 0xfa7d6b1d, 0x74ed30f7, 0x75171c0b,
   6.769 +0x19e28c0a, 0xeb5f0eb1, 0x361145c7, 0x3a1780d6,
   6.770 +0xc2504a48, 0xddbea267, 0x36b83dc0, 0xb72be80b,
   6.771 +0x39eb61f4, 0x24d57f23, 0x7a09a194, 0x428aea0d,
   6.772 +0x3c7a7444, 0x39b1b7ec, 0x29fa3f6d, 0x50770ca3,
   6.773 +0x2f64ba4b, 0xff66f834, 0xb844d005, 0x774833b3,
   6.774 +0xd1b4b607, 0x4837b63d, 0x82ae14e9, 0xaf638358,
   6.775 +0x09120cd8, 0x950b325d, 0xe1d63db4, 0x5840e9c2,
   6.776 +0x0e4b8dde, 0x9a11417c, 0x8d12ddc3, 0xaa08f670,
   6.777 +0xa584127d, 0x1c0b6c62, 0x1505de0d, 0x96d58d2d,
   6.778 +0x0512ca46, 0x84efb88f, 0x08db382d, 0xa8a1644a,
   6.779 +0x6c759b00, 0x1e926a2f, 0xe6369ba3, 0xf3c64218,
   6.780 +0xc5ad20c2, 0x1fc9d436, 0x8b66dee9, 0xaeb6ecee,
   6.781 +0x1e7cf211, 0x397d424c, 0xb18960d0, 0xc00d5f5d,
   6.782 +0x028dd616, 0x5c0b85c2, 0x6f8e7725, 0x8d73892e,
   6.783 +0xb76d2b47, 0x2fa3d9da, 0x427b0ec0, 0xf70805fe,
   6.784 +0x0bad40b1, 0xbc9c2003, 0xe1141685, 0xb10c5b04,
   6.785 +0x88b5925c, 0x190d0fad, 0x06f8114d, 0xb850445c,
   6.786 +0x43586dc3, 0x01d5562c, 0xf112c6d0, 0xbb92a5b6,
   6.787 +0x241ff677, 0xbd1a3428, 0x19428fed, 0xe1eeb09c,
   6.788 +0x5850ad52, 0x7672782b, 0x014352ae, 0x0efe505e,
   6.789 +0xbb78477e, 0x47148a35, 0x0f9c0641, 0xcb0eed8e,
   6.790 +0x682dec7e, 0xae2098dc, 0x1f1942f1, 0xa4171d6f,
   6.791 +0xaa18e1e8, 0x14479b21, 0xa5cc0842, 0x081b861b,
   6.792 +0x8ee91c58, 0x0eea3728, 0x3b4fa91e, 0x59e8f2e1,
   6.793 +0xba210975, 0x80e82e6f, 0x967e077a, 0x8901508d,
   6.794 +0xe115380e, 0xf22d36ae, 0xd272d0c6, 0x85412c53,
   6.795 +0xc51de560, 0xde8f0767, 0xb7a3ec12, 0xb7ef9b12,
   6.796 +0x67c9c3f0, 0x6a2e538d, 0xf2688352, 0x40fba05d,
   6.797 +0xcb9f57b8, 0xb8721be9, 0x7dc20474, 0x093be9a4,
   6.798 +0x5f3b8011, 0xd5b6f0a0, 0x743c0415, 0x8d4d6116,
   6.799 +0x93801804, 0x78d5c258, 0xeb1fa702, 0xb0c0563c,
   6.800 +0xe6096ac0, 0x6f5e417a, 0xe8b3123a, 0x0c061ae1,
   6.801 +0x01a3ce75, 0x2dabb40a, 0xe29b1cd6, 0xc9a0d0a3,
   6.802 +0x817feda6, 0x46efa65e, 0x8d21156d, 0x11762a5f,
   6.803 +0xb8add208, 0x874ad1d0, 0x0774ee3b, 0xddbdd04e,
   6.804 +0x7f804d15, 0xa1f3632a, 0xb8391b24, 0x922f0b85,
   6.805 +0x7b66e975, 0x2a990fab, 0xbb6c9a37, 0x756c961d,
   6.806 +0x723e473e, 0x0d46e06e, 0xc0c7ab46, 0x005746f3,
   6.807 +0x71cec30b, 0xd7d88b55, 0xdbb0fb85, 0x211443ef,
   6.808 +0xbf64a314, 0xa958044e, 0x068e6c88, 0x781a1a21,
   6.809 +0x5854cf21, 0x6b3a1053, 0xb40e28de, 0xa3b53333,
   6.810 +0xc5a38218, 0x0baacc07, 0x1858fbc1, 0x7f717fa8,
   6.811 +0x117e7aba, 0x00debf3d, 0xd3136e6f, 0x0706057e,
   6.812 +0x2705c068, 0xfa30039a, 0xaaf73fa1, 0xe8f8210b,
   6.813 +0x0000199c, 0xe2a4c3f7, 0x2f513108, 0x469e04e9,
   6.814 +0xa377dc88, 0x0462885e, 0x150fd0cc, 0x6888ec7e,
   6.815 +0x6c43a580, 0x47e801b2, 0x52c59ba2, 0x57f16b19,
   6.816 +0x9b66e8b3, 0x19849680, 0xe921f007, 0xd7dd590a,
   6.817 +0x1a87ee1f, 0x10328d01, 0xf733205a, 0xae9fc7b2,
   6.818 +0x3807e89a, 0xb3c5935d, 0xb99687d7, 0xd118f160,
   6.819 +0x07ebb018, 0x326ce9dc, 0x50ec81ad, 0x8d48a0e0,
   6.820 +0x03dbb7d7, 0xa00420a2, 0x3b210944, 0x7df60d1b,
   6.821 +0x0c4505df, 0x09461622, 0xd9471623, 0x0cf5e860,
   6.822 +0x59737724, 0xe9fe0240, 0x2c771176, 0x2e2d0401,
   6.823 +0xc3e0e806, 0xa3e27c3e, 0xc6934627, 0x6de8f568,
   6.824 +0xe048682f, 0x1beb7783, 0x167aba2c, 0xa3a83032,
   6.825 +0x4cdb9d0f, 0x41e012d1, 0xdb143e2b, 0x677dcfbe,
   6.826 +0x2df45984, 0x75db5413, 0x19bc0013, 0x8d193c19,
   6.827 +0xed942494, 0x6e7fddd3, 0x680d6a24, 0xe852311c,
   6.828 +0xc6ed0202, 0x14fe8425, 0x8b1889b9, 0xfffff8b0,
   6.829 +0x1f86c20f, 0x17dfc531, 0x65c44094, 0x6da0cf09,
   6.830 +0x06ca28c6, 0x1aff7f53, 0x17c0ec45, 0x6ae0418a,
   6.831 +0x8b446a43, 0x7546e29f, 0x20b633e8, 0xd41b6a55,
   6.832 +0xa86abfb7, 0xc2f9e833, 0x3c8d4511, 0x5fe24703,
   6.833 +0x05c6ef6f, 0x7e5a7a0c, 0xa4b6531f, 0xee6c4f41,
   6.834 +0x037f4676, 0xd2e8fb26, 0xdb46c329, 0xf7ae883b,
   6.835 +0x3d83e17f, 0xf5e19576, 0xc0ef303d, 0x02f4742e,
   6.836 +0xf1011ce3, 0xeef6dd20, 0x05c7de89, 0x8e31c71b,
   6.837 +0xe068616a, 0x37b64efb, 0x131d3072, 0x93411031,
   6.838 +0x13c660ed, 0x18160809, 0x91c221c2, 0x2616f22f,
   6.839 +0x50d2230d, 0x13de4dc2, 0x9da223da, 0x18745330,
   6.840 +0xf744eefc, 0x086c0712, 0x09af89e4, 0x3bada608,
   6.841 +0x2e9ee02c, 0x712c3c43, 0xb3e85fd0, 0x7405cb09,
   6.842 +0x7e13ef34, 0xc1dde8b1, 0x6c7f1ba1, 0xd1f112e9,
   6.843 +0xf7acf029, 0xc0b132f1, 0x83c8c04b, 0x6b6513fd,
   6.844 +0xc171e8c5, 0xc4817683, 0x0b72cb81, 0x5e3cbb09,
   6.845 +0x2e1269c4, 0x22255098, 0x40552bb4, 0x636a09a8,
   6.846 +0x5feeceae, 0xc1dbe874, 0x315f73ee, 0x33741cff,
   6.847 +0x20b3ffc7, 0xc08ef5bd, 0xbce2e7a6, 0x07e08383,
   6.848 +0x6be6e110, 0x47472ce0, 0x759eb60f, 0x82dfebdd,
   6.849 +0x3944c383, 0xa1cf7cc7, 0x03408e72, 0xa382433c,
   6.850 +0x81c33b19, 0x318f4be8, 0x3815b9c2, 0x6a0c5f28,
   6.851 +0x73766949, 0x3b0dbc4f, 0x685ea166, 0x1b7c0ec7,
   6.852 +0xe877068c, 0x71492692, 0x6b85686d, 0x49c28068,
   6.853 +0xa100ca91, 0x1ac8429a, 0x5eaa59eb, 0xc10673ab,
   6.854 +0x0d685c0a, 0x27083904, 0xe82fbfa9, 0x3b62f5c6,
   6.855 +0x0a817308, 0x012a4e43, 0xc846f723, 0x8c6e83fe,
   6.856 +0xfffedbe9, 0x0192beff, 0xe80f0de3, 0x45d314f3,
   6.857 +0x3d766068, 0xde19a1da, 0xf6b914df, 0x231c786e,
   6.858 +0xadf99d20, 0x0918921c, 0x59a35978, 0xab8f8120,
   6.859 +0x80e46707, 0x979265c5, 0x9f0f1000, 0xa6499068,
   6.860 +0x83346810, 0x6f8a31c3, 0xe9581844, 0x1403fe02,
   6.861 +0xecd48a94, 0xafab1010, 0xc2c0505c, 0x76bcf785,
   6.862 +0x00d4a009, 0x09b2c58a, 0xcf561366, 0x83c7a3b8,
   6.863 +0x0a3014e8, 0xdb31806a, 0x2ce87d51, 0x58c626ea,
   6.864 +0x62352d1f, 0x5022d97b, 0xb712cc54, 0x19c24ed4,
   6.865 +0xec94c684, 0x0e230e49, 0xc0230064, 0x066368d1,
   6.866 +0xbf0d0530, 0x157000fb, 0x3a34ac41, 0x2e27a50c,
   6.867 +0xf05f1984, 0xf8915f8f, 0xfb803a0f, 0x83cf0d66,
   6.868 +0xe0760df9, 0x341e3741, 0x423ae0ca, 0x92e1410c,
   6.869 +0x3bfc2cab, 0xf833c509, 0xb9b16edf, 0x737506fd,
   6.870 +0x6e762121, 0x8a0e5a8d, 0x8ddb0e52, 0xbb9c97e8,
   6.871 +0xb1770a3c, 0x290fe065, 0x9a2a5502, 0x7e52d572,
   6.872 +0xeadb7467, 0x5e590a77, 0xf7669875, 0x85a03f7e,
   6.873 +0xc78b6279, 0x66bcf55c, 0x808bdc3d, 0x6e25bf16,
   6.874 +0x14ea83fd, 0x8b66a148, 0xff70010c, 0x0174edd9,
   6.875 +0x8122784b, 0xf739d129, 0x3235830f, 0x0a5df8a9,
   6.876 +0x121529cd, 0xef1bf631, 0x4c7f80c1, 0x11097b80,
   6.877 +0x3de44675, 0x063d358b, 0x83ec1eed, 0x8b5922c6,
   6.878 +0x86f70456, 0xdc5f9fd6, 0xeb2bc5c2, 0xfd1587d1,
   6.879 +0xdb91b683, 0x74727e8d, 0xfe7d9610, 0xabca8d5a,
   6.880 +0xf70270ad, 0x8bc5281c, 0xec654628, 0xd1540338,
   6.881 +0xda9dbb61, 0xea4da31f, 0xd4290806, 0xf45c24d1,
   6.882 +0x860f6fd9, 0xfef9e5c7, 0x2f406f18, 0xc2562677,
   6.883 +0xe80e6f8d, 0xb683128d, 0x81e4a11d, 0x3401697d,
   6.884 +0x2299b798, 0x0ef357d2, 0x16da7790, 0x1a69a95b,
   6.885 +0x391c2602, 0xae8fc0b1, 0x776c5ded, 0xb6567216,
   6.886 +0xe52fc061, 0x4ee85720, 0x41a5a012, 0xc60416dd,
   6.887 +0x2bb1244b, 0xf0550f31, 0x81019b70, 0xdfeec12a,
   6.888 +0x8ac1c71c, 0x68122f43, 0x00366743, 0x67f2851f,
   6.889 +0x31743624, 0xdab617b1, 0xfd7f7c03, 0xbde9fc3c,
   6.890 +0x6c7c7dc0, 0x890cc4a7, 0xeea09506, 0xd6352d2d,
   6.891 +0x05c72ddb, 0xe5c65c16, 0xc2f40ae8, 0x292c3218,
   6.892 +0x831ee80f, 0x01f82f80, 0xfdd58648, 0x9c2a9567,
   6.893 +0x9228f136, 0x68560d8a, 0x37e37faf, 0xca38dfe1,
   6.894 +0xc2171473, 0x6644c06b, 0xb8149839, 0x74edf02d,
   6.895 +0x72134205, 0x06fa80ec, 0x1d74081e, 0x6ece9c6e,
   6.896 +0x50034623, 0xc6d70522, 0xaebd1165, 0xc37b204e,
   6.897 +0x134aa22d, 0x41832380, 0x8fcceb89, 0x6053359e,
   6.898 +0x1c363668, 0x5c00908d, 0xb97abeae, 0xa6bc649c,
   6.899 +0x8a6a3ffe, 0x3c3c0246, 0x3cb00276, 0x588b5050,
   6.900 +0xf90b8810, 0x81fc10e4, 0x4349c52e, 0x6f4833b3,
   6.901 +0x53448368, 0xf3490af4, 0x29715f64, 0xa2279318,
   6.902 +0x20607403, 0x0a74832e, 0x03220152, 0x75fb4360,
   6.903 +0x13048006, 0x1f76b882, 0xd0f81aea, 0x0dc468b2,
   6.904 +0xc618c805, 0xd045ad80, 0x487cc1dd, 0x4c6b66bf,
   6.905 +0x558e067a, 0xd80135a1, 0xbdc35fe8, 0xd39a06a3,
   6.906 +0x85c5892c, 0x636bb5ff, 0x01ceeb2c, 0xee397e3f,
   6.907 +0xdff16b76, 0x7358071e, 0x841e8a0b, 0x0f5c75db,
   6.908 +0xc286f572, 0x893bdaf4, 0x3505382d, 0xaa1d2e1a,
   6.909 +0xc73f0827, 0x1b5001bb, 0x979b6a8d, 0x0bfb02c0,
   6.910 +0xd6c0e858, 0x18f20ce9, 0x6e047310, 0x04a225ba,
   6.911 +0x22a17fd7, 0x454b8a68, 0x7b3fd093, 0xfffff0c9,
   6.912 +0x6eef51c3, 0xfbdddb60, 0x1038dcff, 0x60d0158a,
   6.913 +0x2875d284, 0x06c18dae, 0x0996d179, 0x0cb0f81b,
   6.914 +0x020fd8c8, 0xe2031215, 0x7ed99d20, 0x0812fbbe,
   6.915 +0x483e1ed0, 0x353146d9, 0x9d4a0121, 0xc45eca61,
   6.916 +0x4a017e84, 0xa015640c, 0x7ddb1efb, 0xdb6d3c10,
   6.917 +0x840d2200, 0x102b1dc0, 0x668db7ef, 0x6102fe9d,
   6.918 +0x4974810c, 0x54a33d80, 0x386d876d, 0x1605410e,
   6.919 +0x97e0fe96, 0x46b6afba, 0x023074ec, 0xff26c8e9,
   6.920 +0xc35405c6, 0x0125fbc0, 0x7b16c515, 0xecdd8282,
   6.921 +0x16fffe08, 0x0d14cecd, 0x8e82c7b7, 0xa3231abc,
   6.922 +0xa6ebcc68, 0xbbb50bb7, 0x809a7c49, 0x947605a2,
   6.923 +0xf524c3a9, 0x007560ec, 0x9a0eba39, 0xeeec2e79,
   6.924 +0x0969ae6e, 0x0500ff6f, 0x8337b02c, 0x0317c980,
   6.925 +0x0003902e, 0xeed17acb, 0x8d1e79dd, 0xfb2cd1fd,
   6.926 +0xe73b7408, 0xc236d1fb, 0x097a1885, 0x5ef90f08,
   6.927 +0xc436c202, 0x183c1f02, 0x2e15fb39, 0xb7d4e82f,
   6.928 +0x6200b95a, 0x185c50c4, 0xb7eca646, 0x72581503,
   6.929 +0x2916e9ed, 0x733b4204, 0xec834990, 0x8200e1fe,
   6.930 +0x20dd8917, 0xd6e90804, 0xc0589343, 0xd956a116,
   6.931 +0xbf70140d, 0xfebeef70, 0xe99c2e3f, 0xe1760db0,
   6.932 +0xe905a1bb, 0x01edfea7, 0x389d86eb, 0x5c3d837f,
   6.933 +0x0cc52a54, 0x89b8ff20, 0xc49237f5, 0x083589ef,
   6.934 +0xa3fd4b5f, 0x170d83d1, 0xe2520370, 0x04c3a1e9,
   6.935 +0x65ada883, 0xb955ebb7, 0x089d24fc, 0x10f0061d,
   6.936 +0x94b02c98, 0x1c18d8bc, 0xd6970986, 0xdc014c36,
   6.937 +0x8d9c1c9f, 0xbae9332c, 0xb410b20a, 0xae0ca0da,
   6.938 +0xfc54c807, 0x00807453, 0xe3d3c320, 0x8a5456e8,
   6.939 +0xbaf7bf42, 0x071c71c7, 0x295164a0, 0x8f9f6ab6,
   6.940 +0x41880f12, 0x51c363f0, 0x80c8b951, 0xf785aa51,
   6.941 +0x8128ce85, 0xc70de0f9, 0x6d775430, 0x02138c13,
   6.942 +0x13732c12, 0xdfd98501, 0x7401393e, 0x18c18365,
   6.943 +0x166c5c24, 0x7fcb725b, 0x26134020, 0x9901aa44,
   6.944 +0xed6e5812, 0xd21df442, 0x75cb3908, 0x39e2b0e6,
   6.945 +0xb82dc1a8, 0xdc742ce9, 0xeac1209f, 0xbe14410a,
   6.946 +0xbebe2d45, 0x4f89cd75, 0x0847092a, 0x81bdcdeb,
   6.947 +0x932bc19b, 0x21718b8f, 0x867df339, 0xa0d737fe,
   6.948 +0x94a3731c, 0x74d02c3b, 0xf239420a, 0x0bdcdf7c,
   6.949 +0x8d6ede16, 0xd06c14a4, 0x81317502, 0x7eeab776,
   6.950 +0xeb4704d0, 0x8a14cbb9, 0x236e757f, 0x428b3c07,
   6.951 +0x83f66a1c, 0xc0574b51, 0x800675bf, 0x0bbd1b7a,
   6.952 +0x39d51e8e, 0x70f61a10, 0xb6826ade, 0x09580319,
   6.953 +0x6af04923, 0x89b58e0e, 0xddf8e325, 0x4c471ece,
   6.954 +0xf753aac7, 0xc6353fd7, 0x19031a42, 0xf5177e39,
   6.955 +0xdd897247, 0xfe815773, 0x77f7896f, 0xd8c7f742,
   6.956 +0x781d2d7d, 0x7c127301, 0xb01e797a, 0xf020dd50,
   6.957 +0x5515561c, 0x6bc5c8f1, 0x9b914a72, 0x16a2dfea,
   6.958 +0x24759637, 0xfeff8147, 0x7b77e800, 0xbe765492,
   6.959 +0xfd81a345, 0x00a97258, 0xfd10500c, 0x4745cd09,
   6.960 +0x0684b5d1, 0x78ac4c72, 0x9208955d, 0x9bc24eb0,
   6.961 +0x4c770589, 0xdb4664ff, 0x232248e2, 0x50897771,
   6.962 +0x11560836, 0x371be85c, 0xdffb7728, 0x7883de7e,
   6.963 +0x899174bf, 0x195088fa, 0x1a04ea89, 0xce6d5566,
   6.964 +0x50de06c5, 0x58069b04, 0xee93bd30, 0x306a0f18,
   6.965 +0xf72856a8, 0xbbba0fdd, 0x0a890a78, 0x2e144289,
   6.966 +0x361f146a, 0x2735b517, 0x0c185c34, 0x516374b7,
   6.967 +0x53202e80, 0x2d00161f, 0x89209f7e, 0xfce2eac2,
   6.968 +0xf75aa68e, 0x0b74152e, 0x6d10c386, 0xe06f749b,
   6.969 +0x24fb014b, 0x0fabcd7e, 0x483d6a53, 0xbab75844,
   6.970 +0x5019a80d, 0x5a261a04, 0xf6c39a1d, 0xc4408602,
   6.971 +0x368a1075, 0x9219c10f, 0x4288fdcd, 0xd0e9e918,
   6.972 +0xd62a3c2f, 0xeb3c2215, 0x82b9bbd5, 0x70fb1217,
   6.973 +0x7ee97a3f, 0x18505389, 0x751c0cc6, 0x2941d7cd,
   6.974 +0x30433743, 0x128d6624, 0x1295d76e, 0x2e05caa8,
   6.975 +0x17665872, 0xc21f11b6, 0xb04bc126, 0x43e5d603,
   6.976 +0xb2180dc8, 0xa216a71c, 0x1f01f015, 0x9a2053e4,
   6.977 +0x1fc26c1a, 0x0be5974c, 0x86a83856, 0xaf043f87,
   6.978 +0xcd675a14, 0x65262ae7, 0x46e74626, 0x48d54d8b,
   6.979 +0x05a91f74, 0x68fc0018, 0x1c670c21, 0x5bbc4bca,
   6.980 +0x866e026a, 0x06e015d6, 0x6f6009e0, 0xe344a9ff,
   6.981 +0x89dcebf0, 0x0453dae0, 0xd00b4c52, 0x279a3208,
   6.982 +0x60fdd7a9, 0x9c3f51cb, 0x0629f860, 0x41822573,
   6.983 +0x008ff6a5, 0x58d53b6c, 0x8f685c8f, 0x0ac0b656,
   6.984 +0x425706cc, 0x136614c1, 0x89f8e4f6, 0x152c2ae0,
   6.985 +0xf6072608, 0x80cb1666, 0x49415c36, 0x6afc3a0d,
   6.986 +0xa9efb36b, 0x21daf7c2, 0xbf11cad0, 0x0f0ebaec,
   6.987 +0x069cf486, 0x211c7514, 0x6016c072, 0x1b8f4706,
   6.988 +0x828c69a3, 0x10e0f8db, 0x1913084a, 0xb74418ba,
   6.989 +0x0bed0537, 0x2f80c98e, 0xe0cd3121, 0xa1840ba0,
   6.990 +0x7e21087f, 0x0628b109, 0xdea5db35, 0xb01c87f0,
   6.991 +0x1af03034, 0xbe3f3c04, 0x4146d12f, 0x75044d17,
   6.992 +0x826b839d, 0x887bbf1a, 0x49db5c17, 0x50c06c06,
   6.993 +0x3c03bd32, 0xc88fd2f7, 0x391d77b5, 0x062e74f8,
   6.994 +0x59c6f52a, 0x2c40b01b, 0x832dc14e, 0xf6b5d886,
   6.995 +0x65a774ec, 0x1c5ea377, 0x8134e929, 0xc43d8f8f,
   6.996 +0x68e91492, 0x30bba7ff, 0xd681155b, 0xff0f3657,
   6.997 +0x836826e3, 0xcc611d73, 0x91e810c3, 0x51ccf815,
   6.998 +0x725a1af0, 0xed4f41e6, 0xe8a319a8, 0x4a105768,
   6.999 +0x7a9626f7, 0x1614fb1f, 0x78745a24, 0x50d12f09,
  6.1000 +0x7b760153, 0x100a0a1f, 0xefc246c7, 0xa42a688e,
  6.1001 +0x41fa8113, 0x7f9743c7, 0x733f816c, 0x10468b4c,
  6.1002 +0x2dd23539, 0x2046ff03, 0x300872ff, 0x6a716df4,
  6.1003 +0x06e2fb4e, 0xe754adea, 0x0c701534, 0xa5c06356,
  6.1004 +0x75f300da, 0xdf5cd90a, 0x5d50b6a2, 0x7eed9e81,
  6.1005 +0x410e3b54, 0x4c897ddb, 0xf8eb5c31, 0x50eed8b3,
  6.1006 +0x24466085, 0xe6c87667, 0x6fa50220, 0x29bec8df,
  6.1007 +0xe81843e4, 0x906f038a, 0x0616bd6a, 0xdf591feb,
  6.1008 +0x728ace58, 0xe3620db6, 0xf07b17b5, 0x741c056a,
  6.1009 +0xd5e8c6c9, 0xce586d20, 0x76e901c1, 0x042d02c0,
  6.1010 +0x0904465f, 0x6ce8fe06, 0x0878061b, 0x43c914e6,
  6.1011 +0xc80c531c, 0x7ae1c2f3, 0x9020a0de, 0x5397c2ec,
  6.1012 +0x388d76ff, 0x30aedc1b, 0x826912d8, 0x03f2c679,
  6.1013 +0xbbb2e2a4, 0x001c8819, 0xa754fd00, 0x106c75d5,
  6.1014 +0x54c9408f, 0x355b58d8, 0x3e6003d4, 0x8a3f5c41,
  6.1015 +0xf47c1682, 0x74253c06, 0xcee254cd, 0x86bbdd76,
  6.1016 +0x89420288, 0x75214606, 0x150717e2, 0xcd27831c,
  6.1017 +0x29548bc6, 0x8ba0c414, 0x2040b1a9, 0xa377edad,
  6.1018 +0xddc59758, 0x4c46ccb4, 0x87b4d883, 0x0ab8046d,
  6.1019 +0x46f67609, 0x6e8f656e, 0xd70d849f, 0x53297b1b,
  6.1020 +0x1c73b6ec, 0x233cbeb5, 0xcceafbe9, 0xc2b90ef6,
  6.1021 +0x6c228e18, 0x33db7d40, 0x07683cb0, 0xed161162,
  6.1022 +0x1abea607, 0x783c20c8, 0x64fae912, 0xdbcb1208,
  6.1023 +0x4000bccf, 0x21047e74, 0x5a634974, 0xf53a1e89,
  6.1024 +0x8c471788, 0x83a3319e, 0xc8175e15, 0xe2ede017,
  6.1025 +0xb9aadd43, 0xe7721c6f, 0xc41d13e9, 0x6f00e8b2,
  6.1026 +0xc4de3440, 0x89eaeb58, 0x88041e0e, 0xadbb4407,
  6.1027 +0x0abeebdb, 0x06e2188b, 0x88d3390d, 0x35bf7e1b,
  6.1028 +0xeb4f0372, 0x82682aab, 0x3de857bf, 0x47ed1b70,
  6.1029 +0xc7010c22, 0x371c1c3b, 0x02eb2fe1, 0x78ff2077,
  6.1030 +0xc438104d, 0xc3fa5748, 0x3271ca73, 0x9b770a88,
  6.1031 +0x31e322db, 0xc03b268d, 0xebe0721f, 0xb9ffadc1,
  6.1032 +0x852c38a8, 0x893778d2, 0xb9995efb, 0x4c85ee45,
  6.1033 +0xc2832d40, 0xada3c630, 0xa0a1a2de, 0x994f8dea,
  6.1034 +0xf6fd03d9, 0xad286c6e, 0x8801c311, 0xd9c14913,
  6.1035 +0x14e9f177, 0xdd6f556e, 0x2d07c613, 0xc1eb47de,
  6.1036 +0x5620e2f0, 0x4ae562d0, 0xb53dbd9e, 0x74e15b0b,
  6.1037 +0x301d2f0c, 0xd3475832, 0xbe8fc002, 0x880fc94c,
  6.1038 +0xd3d85ae4, 0xb77d481a, 0x808a0ffb, 0xd009978c,
  6.1039 +0x04e98319, 0xe0b9e979, 0xfa86e03e, 0xc60cb968,
  6.1040 +0x40820e8f, 0x462003f7, 0xc70a84e9, 0xc33b0d54,
  6.1041 +0x43640ddb, 0x3b806a1e, 0x0b72cdab, 0x63fd8439,
  6.1042 +0x1d061d18, 0xe9761784, 0x9b64fdae, 0x053d54db,
  6.1043 +0xe9ebedb8, 0x6311ed40, 0x12a878ff, 0xf90c6a27,
  6.1044 +0x02a90ce4, 0x085a1ef5, 0x72535e15, 0x135828cc,
  6.1045 +0x1c0dbc2f, 0x7e481d1b, 0xab3bbbf6, 0x7650be37,
  6.1046 +0x5d8a3a74, 0x47451711, 0x7b7103b0, 0x842f747b,
  6.1047 +0xd3382beb, 0x08d88823, 0xe0a17d9f, 0x4bb2d988,
  6.1048 +0x0dd08820, 0x63d188cb, 0x0f776fe1, 0x0838204a,
  6.1049 +0x4e0375ca, 0xc396c675, 0xc06a2dc1, 0x5fd2045b,
  6.1050 +0x7ab72329, 0xd81e8ee1, 0x8ad389c3, 0x4241025a,
  6.1051 +0xba201062, 0x5423f6f9, 0x231000dd, 0xd689b0a8,
  6.1052 +0xdbefd049, 0x0a9de51a, 0xf02443e1, 0x0f66b65b,
  6.1053 +0x3f5eb0b6, 0x42003a80, 0x801e421a, 0x750bed85,
  6.1054 +0x14a34afa, 0xf46baddc, 0x1027634d, 0x2622744b,
  6.1055 +0xc8fec9b1, 0x4b0d742c, 0xf3390f74, 0xc41ef75f,
  6.1056 +0xeb41c6a5, 0x1c3eedf6, 0x76a836f0, 0x1d1a2ac3,
  6.1057 +0xb78241d8, 0x5aad89df, 0x84c3c3ca, 0x809d1038,
  6.1058 +0xad002e38, 0x09405575, 0x57c33677, 0xf5d86fd3,
  6.1059 +0xffc95133, 0xaef20833, 0xc249d1f7, 0xeec16f6e,
  6.1060 +0x092ac801, 0x73087f48, 0xc35f1ef5, 0xf88ae017,
  6.1061 +0x7e634a3d, 0x7c15bbb5, 0x801174c8, 0x404a9739,
  6.1062 +0xae05740d, 0x321ddee0, 0xc3c829f4, 0xdf1b85e1,
  6.1063 +0xb1107d76, 0xf289271f, 0x38028a26, 0xdfdd8001,
  6.1064 +0xd3f4c860, 0x22434107, 0x7889e175, 0x904e07b1,
  6.1065 +0x9da632b9, 0x19a3b60c, 0x32da8913, 0x37004110,
  6.1066 +0xe72cf053, 0xfaeb789c, 0x621df015, 0x3e6225cd,
  6.1067 +0xb1db96ed, 0x01e3855f, 0x75f238c3, 0xb05c260f,
  6.1068 +0x9e1f152a, 0x8846d75d, 0x7c9c1ee8, 0x22f9ce59,
  6.1069 +0x04c0075e, 0x8521a3c8, 0x265ef006, 0x091d8bde,
  6.1070 +0x7e882dcf, 0xebb6e04f, 0x1e8bdbd0, 0xb018740f,
  6.1071 +0xbac6c767, 0x5a593d5e, 0xb3068938, 0xd1d76337,
  6.1072 +0x8bfc4a2f, 0x05b1195c, 0x03697734, 0x4143774a,
  6.1073 +0xcb6bb113, 0x5b18d605, 0xfe030125, 0x331ceb25,
  6.1074 +0x3b43080e, 0x377dc973, 0x4b11c157, 0x1602165d,
  6.1075 +0x0bf41729, 0xc5efc2a5, 0x75494346, 0x746b5fef,
  6.1076 +0x854d3f78, 0xb731fcd2, 0x7c2c5621, 0xd839017b,
  6.1077 +0x754a4197, 0x675b18f5, 0x37bb4e11, 0x894c6bca,
  6.1078 +0x5ace02d1, 0x576d5b6b, 0x53dfc289, 0xb0550512,
  6.1079 +0x3910c7f5, 0x7dce89e9, 0x9a5bf909, 0x9a880bad,
  6.1080 +0x75e81cfd, 0x46b7ed4e, 0x3b07738a, 0xebe87dee,
  6.1081 +0x811f2fdd, 0xdbebdf18, 0x20d6109c, 0x01428a4a,
  6.1082 +0xe31bfc78, 0xc7443a42, 0xee751608, 0x9ebfdb31,
  6.1083 +0xa722c608, 0x0977eab8, 0x30b704fe, 0x34fb403d,
  6.1084 +0x6c7f3d80, 0xb1d88fd2, 0x3d623d74, 0xc095ff80,
  6.1085 +0x03815fc5, 0xa3ff00f8, 0x55528d54, 0xa8cf0449,
  6.1086 +0x14754cdb, 0x8cc152de, 0x3100027a, 0x80cc1bad,
  6.1087 +0x8554d285, 0x162b9048, 0x06696135, 0xc05e0edc,
  6.1088 +0x4569aedc, 0x430458e8, 0x8026bc1b, 0xf5dc7b0d,
  6.1089 +0xe28440d4, 0x53603823, 0x42e24c75, 0x24ce551b,
  6.1090 +0x72760102, 0xe65bae11, 0x0f21fd3d, 0xbf4282a4,
  6.1091 +0x54e81797, 0xf3eb0eb7, 0xc45c8d27, 0xe8e6343b,
  6.1092 +0xdaadb6c0, 0x8d55b0e8, 0x50812401, 0x3ec7b5a4,
  6.1093 +0xffa4b617, 0x66840e75, 0x758603c7, 0x6c4a97b0,
  6.1094 +0x02438a2a, 0xd8538aeb, 0x09a860bd, 0x1538298f,
  6.1095 +0x4c740f7e, 0x2850487b, 0x82584e8e, 0x156208a0,
  6.1096 +0x3064bf3c, 0x9343b641, 0x841cc004, 0xc2363d8b,
  6.1097 +0x883f05c6, 0x827da23f, 0x00752e66, 0x95ebfdfe,
  6.1098 +0x750e0538, 0x57edebac, 0x530cf603, 0x0c75e91b,
  6.1099 +0x85c6c38f, 0xf52f61d9, 0xfeee2825, 0x896e4ad1,
  6.1100 +0xc84b252c, 0xc80600fe, 0xc8a225b6, 0x2596cf61,
  6.1101 +0xe874638a, 0x2db0e931, 0x7d707600, 0xb2574a3f,
  6.1102 +0x3d25bec1, 0xffffd984, 0x58f75b2c, 0x1cec8901,
  6.1103 +0x5adec953, 0xf3562edf, 0x255b28fd, 0x006a071c,
  6.1104 +0x8a49e283, 0x47b70f18, 0xf828c780, 0x5706046d,
  6.1105 +0x020c8d08, 0x63d92913, 0x66f0b05b, 0x5f067983,
  6.1106 +0x1c040643, 0xf6f74951, 0x348d02ff, 0x80de2902,
  6.1107 +0x8901037f, 0x74090ef5, 0x25063771, 0x63a96d82,
  6.1108 +0xf2da1a14, 0x0aa5d4f5, 0x5174dafa, 0x5d7435df,
  6.1109 +0x29c04740, 0x6c6e07e1, 0x6f151d40, 0x35b88fba,
  6.1110 +0x047a519b, 0x8001bbea, 0x5107c7d8, 0xb577e910,
  6.1111 +0x6f099070, 0x8515275a, 0xd105351a, 0xd897a110,
  6.1112 +0xf2196d00, 0x7c0e6ede, 0xfd0aeb0e, 0x1da9041a,
  6.1113 +0xaa23bac3, 0x06e88bdb, 0x003f3d98, 0x421e4103,
  6.1114 +0x1237db90, 0xb30b01fd, 0x37e00408, 0x4f447a06,
  6.1115 +0x35ff4c37, 0x418e6c9c, 0xa996c229, 0x23c00163,
  6.1116 +0xdd8538e7, 0xeb07065c, 0xfcbc55d1, 0x403c407e,
  6.1117 +0x0ca8a15f, 0x37230243, 0xac95006b, 0x0acb3e0b,
  6.1118 +0xdc602dda, 0x2a0843ab, 0xe0bb3689, 0x066a40ee,
  6.1119 +0x6dcf8379, 0xe87ecb96, 0xfffffaea, 0xa1d91c10,
  6.1120 +0xbeeb1c98, 0x2c3f6407, 0x30392e33, 0x8826b201,
  6.1121 +0x90f7e961, 0x51b0e49b, 0x00bb0f96, 0x46578c0d,
  6.1122 +0x49d73aa1, 0x847b0069, 0xf9fbc23d, 0xe152b9a1,
  6.1123 +0x31e6c3c3, 0x01c60de1, 0xc960a394, 0xbd0ce24d,
  6.1124 +0x366bb543, 0x0392c413, 0x84d00908, 0x0be1ae0b,
  6.1125 +0x2e1ed869, 0xea2c68a1, 0x03ed93d7, 0xa1056a09,
  6.1126 +0x54e8c103, 0x6056df68, 0x880aa033, 0xfd0a5437,
  6.1127 +0x5cf38874, 0x08e2c1e7, 0xdb7c418a, 0x4e0b2aeb,
  6.1128 +0x0d520a03, 0x38add40c, 0x7ce99d54, 0x5d22db45,
  6.1129 +0x0db41724, 0x10b40df2, 0x4d01502c, 0xa1beae9d,
  6.1130 +0xf6a15583, 0x801243ad, 0xc6119896, 0x16bfeba4,
  6.1131 +0x8d585faa, 0x10821a7b, 0x08f06216, 0x5690cb7c,
  6.1132 +0xc085534a, 0xf021c673, 0x0974e6a1, 0x28620d79,
  6.1133 +0x5e034cb8, 0xba0df441, 0xed830b87, 0x030e0508,
  6.1134 +0xbddb140f, 0x1e6b38db, 0x74483b7f, 0x96024337,
  6.1135 +0xd5db3bc2, 0x628fc012, 0x180faed5, 0xe999f4f5,
  6.1136 +0x1aaaeb4e, 0xeb5e2e95, 0x2fb9d6e7, 0x80032517,
  6.1137 +0x362b1b14, 0x36d9eeb8, 0x2108375e, 0x64fac6eb,
  6.1138 +0x758add14, 0x25eef00b, 0xce811e0c, 0xf045d68b,
  6.1139 +0xfa81b947, 0x7c1074ea, 0x4b415e16, 0xa482c2a0,
  6.1140 +0x30ed7d8b, 0x1db489b9, 0x03b4b803, 0xfb58ec71,
  6.1141 +0x05f5ff52, 0x62008390, 0xf82ce0c1, 0x0f0a0f5d,
  6.1142 +0xc2b29388, 0x20b49034, 0xb2b4934c, 0x72711036,
  6.1143 +0x2ace6415, 0x2aa25b1e, 0x7f0a40f3, 0x1a9e3d2c,
  6.1144 +0x1f4e7875, 0x56c85610, 0x369044a1, 0x158df89d,
  6.1145 +0x3b41ba23, 0xac01e975, 0x3ddf641e, 0xfddddc60,
  6.1146 +0x0cd47529, 0x05d2eb03, 0x93cceb02, 0xb7190d60,
  6.1147 +0x93f92ef8, 0x8025ed04, 0x6f577113, 0x60c258dd,
  6.1148 +0x29040d0d, 0xcd55aa10, 0xcc2e8990, 0x00e128e6,
  6.1149 +0x053b5a36, 0xde36d812, 0x02bf2323, 0x0a2c18a3,
  6.1150 +0x226c0700, 0xd4838bae, 0x11b83da8, 0xfe0d040a,
  6.1151 +0x55353e66, 0x75871eb8, 0xc40283da, 0x98488011,
  6.1152 +0x87d87425, 0x158df858, 0x3b031b5a, 0x8e268797,
  6.1153 +0x6e1048b5, 0x82c73e34, 0x1f82a646, 0x78546640,
  6.1154 +0xb622ea59, 0x9482e831, 0x98091415, 0x9110de28,
  6.1155 +0x810cb9b1, 0x289a9cc2, 0xb5509f49, 0x390baaf6,
  6.1156 +0x28749e0c, 0xf8229f9d, 0x002376a5, 0x2818e889,
  6.1157 +0x3ecff7f9, 0x0f0a1390, 0x96c35b10, 0x3436ba81,
  6.1158 +0x748f61e2, 0xaf644954, 0xd87588d7, 0xcdc4f684,
  6.1159 +0x18f1c821, 0x2e08f3a1, 0x0757e2f0, 0xfe532036,
  6.1160 +0x61d0018f, 0x6b394483, 0x0eb103f3, 0xaa225de0,
  6.1161 +0x6cc9828d, 0x6281d880, 0x31eadaea, 0x11e00821,
  6.1162 +0x91151438, 0x92e463b3, 0x70839753, 0x750fb3ec,
  6.1163 +0x013b2f74, 0x72393bd8, 0x20991e05, 0x3323f54a,
  6.1164 +0xc6c5b8c4, 0x7c3f0319, 0xf153f586, 0xa863bd44,
  6.1165 +0xdd199801, 0xcd466114, 0xe3c7f201, 0x69a92c11,
  6.1166 +0x8ff6e7b2, 0x0523c706, 0x5eb9148f, 0x3ab65302,
  6.1167 +0x7711092c, 0x86868b4b, 0x36f69691, 0x69896c55,
  6.1168 +0xc4828626, 0x2821f590, 0x8284c736, 0x183e668a,
  6.1169 +0x02c61d89, 0xfe5a6cd6, 0x51786806, 0x9ceb5edc,
  6.1170 +0x28989750, 0xbd43c180, 0x92adf664, 0xbe41086d,
  6.1171 +0xd698090b, 0x605848e6, 0x3b9eeb9d, 0x69718c66,
  6.1172 +0xa5c711e6, 0x1b110500, 0xb16deb1b, 0x89338b47,
  6.1173 +0x024e401b, 0xdd9c1687, 0xb3fbf5e4, 0x0d1b149c,
  6.1174 +0x40a30540, 0x91183ac4, 0x39e12ec3, 0x914077aa,
  6.1175 +0x77bf460a, 0xa31aa440, 0x741c8cd2, 0x630b520e,
  6.1176 +0x57061e5b, 0x3208ca47, 0x2ab404ab, 0xd8332bfd,
  6.1177 +0xd6602140, 0x418b15d2, 0x09404a22, 0xdb11dc3c,
  6.1178 +0xe2afdea5, 0x465f478b, 0xb5011202, 0xc05ceac7,
  6.1179 +0x8d580419, 0x7518f858, 0x2d2b5eeb, 0x0c192b47,
  6.1180 +0x050e4613, 0x2003060a, 0xdf305958, 0x0e75b8e8,
  6.1181 +0x10560312, 0x8d8f5392, 0xc3520851, 0x7321e2ae,
  6.1182 +0x0e5e6ff3, 0x1c24e4b2, 0x80ebfe23, 0xadf4e003,
  6.1183 +0x0ef64ec5, 0xd089c9ba, 0xa00a0fcb, 0x49056f1d,
  6.1184 +0x08684868, 0x9ecfdf37, 0x89fd1c44, 0xd2ebdc74,
  6.1185 +0xe02c62eb, 0x555dd3a1, 0xc8f1743f, 0x53170916,
  6.1186 +0x10755f8c, 0x80a031fb, 0x5e8b2f5a, 0xefdf860a,
  6.1187 +0x41035017, 0xb8d91574, 0x4eedfab5, 0x0c7e130e,
  6.1188 +0x8a1c698d, 0x05fd81e3, 0xa41fb064, 0xd17ec789,
  6.1189 +0x088f8bc5, 0xcd51d0b6, 0x8b3bc061, 0x9db055fa,
  6.1190 +0x550c86f2, 0x43a2b739, 0xe80c4940, 0x938c1910,
  6.1191 +0x75d0d3aa, 0xc1118076, 0x79e90770, 0x16e0fd2d,
  6.1192 +0x11351a19, 0xd3b802ab, 0x0283a249, 0x05062a58,
  6.1193 +0x3882c104, 0xadf4a88c, 0x6c4563bf, 0xb2548bd3,
  6.1194 +0x9e8dd9f3, 0x1f524c30, 0x07f75a9d, 0xf406c4fd,
  6.1195 +0x86c6cd6d, 0x01230216, 0xd685159a, 0x220306e7,
  6.1196 +0x0583c876, 0x10071a03, 0x44864aa1, 0xa114f231,
  6.1197 +0x71441854, 0xd6258830, 0xac862480, 0x52307c44,
  6.1198 +0x2c13f1f7, 0x8a45b233, 0xfc199452, 0xbb3e799e,
  6.1199 +0x15049a05, 0x017cbf2c, 0x168a5888, 0x24834084,
  6.1200 +0x1e8df46c, 0xecd8c7a4, 0xca317504, 0x1860f07f,
  6.1201 +0xd8892adc, 0xe951a4b4, 0x57b77d76, 0x260647cc,
  6.1202 +0x0abc1e04, 0xc70f9082, 0x8c42d1e1, 0xded042d8,
  6.1203 +0x2dd7807b, 0x6fec4531, 0x997c04b9, 0xd12f25ed,
  6.1204 +0x186f5351, 0x094ac2e3, 0x8e5164e4, 0x776da0f2,
  6.1205 +0x2d46bc04, 0x21a0a0e8, 0x578da92d, 0x3f9809e9,
  6.1206 +0x50992364, 0x54419815, 0x1f1d4270, 0xd07500bf,
  6.1207 +0xb0aa5ce8, 0xe9c46003, 0x11be8033, 0x03a3c3aa,
  6.1208 +0xc6b68dd1, 0x035d4035, 0x40687435, 0xa8f4e037,
  6.1209 +0xfbb13908, 0xb43775dd, 0x20e8c73f, 0x50e50fc9,
  6.1210 +0xee9e48e8, 0x04d9afbe, 0x1396b60f, 0x28100905,
  6.1211 +0x77cac7e8, 0xe6b914fa, 0x54d6297d, 0xc70b5cfa,
  6.1212 +0xdbd0296d, 0x4931a602, 0xcf1973cf, 0xe8b7313a,
  6.1213 +0x6a2cc085, 0x8a0c0c55, 0xc2382247, 0x8dc1a76f,
  6.1214 +0x5b601354, 0x63b71046, 0xc116fc11, 0x164619e9,
  6.1215 +0x76124e03, 0x47145b18, 0xcbc15f14, 0x20985ad8,
  6.1216 +0xc718db56, 0xbb8899be, 0x90840ffc, 0x8f0f0d93,
  6.1217 +0xf57d0131, 0x0808fb6c, 0x7f081d11, 0x896e4a7b,
  6.1218 +0x04da3eaf, 0x287c357f, 0x751d0b63, 0x256e0c15,
  6.1219 +0x5d0b359e, 0x076ddb0c, 0xeb2744c1, 0xb2521aec,
  6.1220 +0x7507e3eb, 0xdc67a017, 0x277474db, 0xad857c04,
  6.1221 +0x068c50b5, 0x68070470, 0x6e6b6796, 0xbff2b81b,
  6.1222 +0x22b78207, 0x796796fb, 0xeca74caf, 0xcd2c9f3b,
  6.1223 +0x0d6dcfdb, 0x0d008988, 0x0a04407f, 0x9b7c3074,
  6.1224 +0x209797b6, 0x0c10740b, 0xce298675, 0x1972e91b,
  6.1225 +0xdc5436f9, 0x670ab3e8, 0x67a01f52, 0x51575ce4,
  6.1226 +0xb6740f3d, 0x34b92b40, 0x0d045904, 0xd6330414,
  6.1227 +0x0f11fb1c, 0x74224285, 0x3b0a2ef4, 0xc8cf233c,
  6.1228 +0x15181023, 0xf639b70d, 0x024eea8d, 0xf7f2190a,
  6.1229 +0xbcfd59fe, 0xa730db9d, 0x8f080142, 0x7420008d,
  6.1230 +0x66cd2e7d, 0x707f04d7, 0x7c147414, 0xd8fed115,
  6.1231 +0x39fcd637, 0x0abdf6a7, 0x0ab25abc, 0xe6b1be79,
  6.1232 +0x4fa7f503, 0x2322a922, 0xedb1cd63, 0x22983825,
  6.1233 +0x0a84f938, 0x462ed8a9, 0x6479f89a, 0x0a6ee966,
  6.1234 +0xcf237d8d, 0x6468637f, 0xdf714e58, 0xec558bb6,
  6.1235 +0x04447f08, 0xe6325c32, 0x333cf2d8, 0x55303b70,
  6.1236 +0xcd66fbfb, 0x9c0a27b1, 0x72511cfa, 0x7bae0a11,
  6.1237 +0x153e1bec, 0x74755106, 0x3e7f043f, 0x977e6cff,
  6.1238 +0x1dfdfc73, 0xfde8fc72, 0x3d167476, 0x36467b4d,
  6.1239 +0xe11ad653, 0x910acdcb, 0xb419e467, 0x1cb799c2,
  6.1240 +0x0abec6fb, 0xd50aac7a, 0xec0aa1d7, 0x030105f2,
  6.1241 +0x11c396d4, 0x052f5137, 0xb62c35f9, 0x97cce803,
  6.1242 +0x6ff725a0, 0xd6ff0e16, 0xf1e8fcfa, 0x8dc85e09,
  6.1243 +0x9a17d56a, 0x80c1832e, 0xd82ba1b1, 0xb857ad54,
  6.1244 +0xc2ea43e5, 0x8149b679, 0x2fc013f4, 0x914da5e2,
  6.1245 +0x37ebeb83, 0xa8e6eb1a, 0x858b3e23, 0xba08e3c1,
  6.1246 +0x7003bb0b, 0x30350d1b, 0x08b86662, 0xbf4030b1,
  6.1247 +0x6962ac9b, 0x02720987, 0x0a88e430, 0xdec899e4,
  6.1248 +0xc35fc4a6, 0x24093d90, 0x99052b0d, 0xf93e8b49,
  6.1249 +0x3d85b362, 0x0a3d4339, 0xf21c8361, 0x890b96e6,
  6.1250 +0xd65ef97b, 0x334c8a0e, 0x3d0bb87f, 0x26c0b9a8,
  6.1251 +0x3b96cd27, 0x9e49908b, 0x916c0c0b, 0x839e4992,
  6.1252 +0xad55300d, 0x5b1444be, 0x49435024, 0xdef513d3,
  6.1253 +0x85c6ac44, 0x1134a3f6, 0x5f90e411, 0x95f83701,
  6.1254 +0x20054a1d, 0x8b128017, 0x837b92c1, 0xfa810853,
  6.1255 +0x7c15573a, 0x7eb76886, 0xe8672c80, 0x54003f1f,
  6.1256 +0xe949e04f, 0x534c90c3, 0xd56e05b8, 0xbb00fb6e,
  6.1257 +0xd329f108, 0x5b07ff50, 0x2cc7398a, 0x811a7725,
  6.1258 +0x32335f3b, 0x9823745f, 0x2362ab41, 0xc6a26149,
  6.1259 +0xe69a205e, 0x75253d83, 0xf51cab60, 0x09b3a479,
  6.1260 +0x6c013ff6, 0x4ad47492, 0x02087dc2, 0x07421a0c,
  6.1261 +0xffdb61d5, 0xc984f87c, 0x7b80c075, 0x33272a08,
  6.1262 +0xc2a36fb1, 0x313d552d, 0x5511a3c1, 0xebf7ea19,
  6.1263 +0xa34068a0, 0xccc0e7c3, 0xc3c258d7, 0x12925069,
  6.1264 +0x044f0fb0, 0xc00a4faf, 0x87608311, 0xc43db140,
  6.1265 +0xa9102786, 0x35ab554d, 0x217aa72c, 0xd2bae99d,
  6.1266 +0x218936e8, 0x032c0e89, 0x9354b5e0, 0xfc2390e8,
  6.1267 +0xe4702d4b, 0x96fdf761, 0xb061e601, 0x1243e6b0,
  6.1268 +0x5600d81c, 0xd8e142e6, 0xb6d83514, 0xc01dc308,
  6.1269 +0xa06d5372, 0xe95fa338, 0x5fa17dcf, 0xba1d3fe2,
  6.1270 +0x3b9aca00, 0xdcc0694c, 0x48521234, 0xf7b00dd5,
  6.1271 +0x8ae967f1, 0xe4b85f02, 0x8cbad6ef, 0xa91d0000,
  6.1272 +0x706c0004, 0xf00e8247, 0x40bff1ae, 0xb901d0a3,
  6.1273 +0x28c4bd05, 0x7fb60a41, 0x68e94fbb, 0x05c71558,
  6.1274 +0x1fb0071b, 0x1144090e, 0x2267a236, 0x16844847,
  6.1275 +0x0874c151, 0xd76c3d4a, 0x07b9470a, 0x3c099e56,
  6.1276 +0x0448cd05, 0xe9d90554, 0x22c11508, 0xc6475727,
  6.1277 +0xe9a09b76, 0xa3217468, 0xbf686664, 0x40c9926e,
  6.1278 +0x0609706c, 0x20e8f540, 0x68207d40, 0xd92cb690,
  6.1279 +0x89f6324d, 0x843d801d, 0x028c0988, 0xec5d35e1,
  6.1280 +0xb73d9a8c, 0x1cc81368, 0xba6ebb05, 0xe8179c04,
  6.1281 +0x82b02aa3, 0x344ec1df, 0xb9282eb9, 0x3bafb1a5,
  6.1282 +0x304cb9ec, 0x74420209, 0x35f23280, 0x31c5cc14,
  6.1283 +0x33af404c, 0xb9444ecc, 0x030918a8, 0xbe464931,
  6.1284 +0x076042bf, 0x602ecb68, 0x466bef54, 0x070958ba,
  6.1285 +0x132e015c, 0x485632a3, 0x3118a042, 0xd09c8368,
  6.1286 +0x80096c4d, 0x25e1b913, 0xe7b3d003, 0x6e680192,
  6.1287 +0x0f64d847, 0x31f4b645, 0x613d59f8, 0xb9222289,
  6.1288 +0x5aafe84f, 0x31d0f0e8, 0xd368c068, 0xf0f8bd43,
  6.1289 +0xe3f62bd0, 0x0975cfa3, 0x41175e99, 0x21b8f7d8,
  6.1290 +0x1e201be3, 0x91363e52, 0xc0e9c311, 0xd1c7096f,
  6.1291 +0x99547398, 0xe0977705, 0xfb1e28cf, 0xf339db53,
  6.1292 +0x5a060372, 0x6eff187c, 0x5aea0d43, 0xe8e22de0,
  6.1293 +0xf3f1be2b, 0xe69f7258, 0xabeee2bf, 0x5a144949,
  6.1294 +0x746285e8, 0xbb510807, 0xeb1e1742, 0x52ed33f0,
  6.1295 +0x51da1bc5, 0x9f037851, 0x548a37b0, 0x00755002,
  6.1296 +0x7445e400, 0x9026a568, 0x3500ff91, 0xec0e2338,
  6.1297 +0x050239ff, 0x001161dc, 0xefbeadde, 0xff025d03,
  6.1298 +0x9195a85f, 0x50203c21, 0x6c434558, 0x746e6569,
  6.1299 +0xff75bf3a, 0x637241fd, 0x00303a68, 0x444e553a,
  6.1300 +0x02320a49, 0x010d3731, 0xec2fbe03, 0x3c2b0cff,
  6.1301 +0x83828180, 0x87868584, 0x0436035f, 0x033d3208,
  6.1302 +0x6b05c580, 0x09b2110e, 0xdf6c812c, 0x5f627303,
  6.1303 +0x2b5fab64, 0xffdb4706, 0x63ca2c27, 0x544146a4,
  6.1304 +0x203a4c41, 0x4b756f4e, 0x7220ffff, 0x2d6c6165,
  6.1305 +0x65646f6d, 0x61747320, 0x215e6b63, 0xdcd90041,
  6.1306 +0x4e03dc6f, 0x612d2b56, 0x746f6e6e, 0xbf762023,
  6.1307 +0x145ccedd, 0x50252124, 0x636f1772, 0xfe736c6f,
  6.1308 +0x446ffb5b, 0x50434844, 0x54465420, 0x696e1604,
  6.1309 +0x69640063, 0x1bdb6b73, 0x6c81b7d4, 0x3170706f,
  6.1310 +0x0b202d20, 0xb6b6e675, 0xda6c6cc6, 0x30ca6666,
  6.1311 +0x6b7f0302, 0x7872fdbd, 0x40726520, 0xca252072,
  6.1312 +0x6c747233, 0xb7323138, 0x39b3edfa, 0x62393307,
  6.1313 +0x35656640, 0x6d863833, 0xb0dbb563, 0x3131166f,
  6.1314 +0x1809312d, 0x5d7e6c65, 0x23e17b6c, 0x74646403,
  6.1315 +0x2e0b6e40, 0x6ec6b436, 0x743039fb, 0x65686478,
  6.1316 +0xa27630e1, 0x8ff6b16b, 0x1d640235, 0x33776e66,
  6.1317 +0x1e333036, 0xb7b07d09, 0x303038e6, 0x656e9c63,
  6.1318 +0x52006f2d, 0xb6f14c54, 0x55078fb5, 0xb375736e,
  6.1319 +0x20397495, 0xbdd65041, 0x22032f6d, 0x22016325,
  6.1320 +0x62613c9f, 0xfb083e14, 0x57ddedb7, 0x69206771,
  6.1321 +0x0c78866e, 0x70746674, 0x886f4c00, 0x6efb7b2d,
  6.1322 +0x40251369, 0xe873253a, 0x122f2f3a, 0xd60217b6,
  6.1323 +0x3f0c0a0f, 0x3f697372, 0x8285c23a, 0x693c0be6,
  6.1324 +0xc2406f42, 0xbab5d6ff, 0x69980a87, 0x7a73656c,
  6.1325 +0x6d203e20, 0xb0d84567, 0x280f07b5, 0x21002968,
  6.1326 +0xa1ed6dbe, 0x3d617f2e, 0x699569d1, 0x5b67616d,
  6.1327 +0x2fef6dc2, 0x49424e28, 0x7b44281f, 0x0ad0002e,
  6.1328 +0x8c2061ff, 0x6d617267, 0x9bcb6820, 0xa142f75b,
  6.1329 +0x62d69855, 0x73b96769, 0xd08b6558, 0xb970b9bd,
  6.1330 +0x5f746983, 0x08f2701d, 0xfdb6bad7, 0x756f6620,
  6.1331 +0x0f1a2ec8, 0x089d3353, 0x11336f77, 0x654d0a10,
  6.1332 +0x2c0040a4, 0xeeb83bd8, 0x28200ab1, 0x12290626,
  6.1333 +0x60e11de6, 0x8c520617, 0x470b7961, 0x50ad3461,
  6.1334 +0x0d776d78, 0x752e450c, 0x76ebd9bd, 0xfc6c2083,
  6.1335 +0x0965db20, 0xb735b62d, 0x25bf6d1b, 0x97d873c9,
  6.1336 +0x6b76de38, 0x726135f3, 0x5735748e, 0x62176237,
  6.1337 +0x6e771647, 0x706d603d, 0x6b5b52ba, 0x62615b16,
  6.1338 +0x6c73380b, 0x90146b6d, 0x06740e74, 0x2f4b6b2d,
  6.1339 +0x7a4e2e18, 0x52f6a265, 0x38ae4346, 0x8cec1663,
  6.1340 +0x19005332, 0xf4926649, 0x284905b6, 0x000a293b,
  6.1341 +0xbdb18c1c, 0x63d3e5d1, 0x64f66965, 0xe87662d5,
  6.1342 +0x7d8c306e, 0x643a756e, 0x61a3ae64, 0xb4b1b473,
  6.1343 +0x2b6a4249, 0x6b76b473, 0x4455b6a5, 0x5e36510c,
  6.1344 +0xdc586d75, 0x06691876, 0x61cfe062, 0xb6d93c35,
  6.1345 +0x5b128c19, 0x70175d07, 0x6dda6963, 0xeceb8634,
  6.1346 +0x002e5d3a, 0x5fb7f0a0, 0x34333284, 0x39b23635,
  6.1347 +0x44434241, 0xe870c545, 0x4f3b66be, 0x5f2f0083,
  6.1348 +0xbdb0ceac, 0xe520f7f0, 0xd633534f, 0xb2f40064,
  6.1349 +0x9a0df6de, 0x2e342e35, 0x18435b33, 0x4d8b7c1f,
  6.1350 +0x24204216, 0x4c5047ef, 0x68eb0e29, 0xa474e92c,
  6.1351 +0x2e1c6594, 0xd1bba998, 0x724416b3, 0x3fb872f7,
  6.1352 +0x1da3dc3a, 0x155cea20, 0xdd3e205c, 0x175a3822,
  6.1353 +0x11784500, 0x53873a73, 0x9f0ec158, 0x6d276f69,
  6.1354 +0xeb6da178, 0x69ace423, 0x2c737172, 0x370de120,
  6.1355 +0x0121129c, 0x5370624d, 0x75642d73, 0x57188fcf,
  6.1356 +0x3f0a78b6, 0x35133543, 0xe10ab58c, 0xb920ef73,
  6.1357 +0x42c6c66f, 0x1249b9e3, 0x40613f6b, 0xc2d817d6,
  6.1358 +0x7f0a8975, 0x9b4d4f52, 0xe1afb5b6, 0x74c36765,
  6.1359 +0x09337884, 0xdbb63c67, 0x350bb368, 0x780a634d,
  6.1360 +0x7468bf0a, 0x770314a5, 0x6db78964, 0x708dda41,
  6.1361 +0x6e74344c, 0x8849866e, 0x36c935d0, 0x7bff1e0a,
  6.1362 +0xf71cec63, 0xa13d2157, 0x1819ac75, 0x67096576,
  6.1363 +0x051b9c0a, 0x6c1ed857, 0xe59c0321, 0xa5488165,
  6.1364 +0x09190549, 0xbae6d76b, 0x6f017c5a, 0x2b677b83,
  6.1365 +0x30361362, 0x3f203e45, 0x06a5d26c, 0x70827292,
  6.1366 +0x0c18cf73, 0xe4b604b2, 0xb2047e3f, 0x11441e64,
  6.1367 +0xd0bb6162, 0x0e45d486, 0x6e679407, 0x82946c52,
  6.1368 +0x2900cb14, 0xb2b65277, 0x666fac37, 0x3f823220,
  6.1369 +0xc618230c, 0xf8d37632, 0x04bdeb66, 0x7bb59dd6,
  6.1370 +0xb83fbf64, 0xde60ad1b, 0x64698fa6, 0xad83e133,
  6.1371 +0x4373666d, 0x52b56f3d, 0xa78586e2, 0x5f7385d6,
  6.1372 +0xd654788e, 0xc60a19d0, 0x6d78d08b, 0x0085ed78,
  6.1373 +0x6f74ecb6, 0x40ff610c, 0xfb0a15ec, 0x088a3ec2,
  6.1374 +0x119c0e07, 0xbf620128, 0xb6c42214, 0x295f63a6,
  6.1375 +0x92c08bb2, 0xea50a92b, 0xb11f8120, 0x405b0229,
  6.1376 +0x78f9ea6e, 0xdee72d79, 0x71e61222, 0x79a16575,
  6.1377 +0xc8112c4d, 0x8d004462, 0xd845b045, 0x67af871a,
  6.1378 +0x2861bb48, 0xad88e898, 0x9f6e7056, 0x9a3db4d8,
  6.1379 +0xf2a07245, 0x79200267, 0x561b0ee1, 0x4fcaa302,
  6.1380 +0x7dce1b0b, 0x48777334, 0xcdc48a76, 0x176a5874,
  6.1381 +0x66374a68, 0x41821966, 0x3dcb1600, 0x008a9fc3,
  6.1382 +0x830f8161, 0x4f4f42a9, 0x20402d36, 0x439a0f02,
  6.1383 +0x6051b5ae, 0x00b3cd91, 0x6ee3bbf6, 0x6c75e02b,
  6.1384 +0x623436b1, 0x524142cf, 0xee6e0335, 0x7838307d,
  6.1385 +0x133c043a, 0x6113736f, 0xb45e2d81, 0x648d6522,
  6.1386 +0x01ee6491, 0x23623a69, 0x64003f58, 0x0b0247c7,
  6.1387 +0x4d70433f, 0x06651855, 0xb15d9f2a, 0x21b810c0,
  6.1388 +0xad523a52, 0x39e0c479, 0x0fe781a0, 0xc360185c,
  6.1389 +0x8a106f0e, 0x19e04172, 0x709c8298, 0x60c37482,
  6.1390 +0x67316aa5, 0xeb58b468, 0xb346d4b0, 0x8ce24276,
  6.1391 +0x02c0dd16, 0x6b75b93f, 0x02d68441, 0x826b36c0,
  6.1392 +0x79d5e9a9, 0x6d82bd61, 0x342ec018, 0x7719b743,
  6.1393 +0x9b266340, 0xa6aa2e6f, 0x7529db06, 0x9c831b57,
  6.1394 +0x9704ccfd, 0x7e81608c, 0xe0003700, 0x47672080,
  6.1395 +0x9f7f07ea, 0xc89307cf, 0x9bd83656, 0x001f9317,
  6.1396 +0x26ceaeba, 0xde670610, 0xf770036b, 0xec6fb1f3,
  6.1397 +0x9b812910, 0x13813907, 0xa3813878, 0xbbbe690f,
  6.1398 +0x13ac8651, 0x111307ac, 0x12b31211, 0xa6f9b2d8,
  6.1399 +0x601500bd, 0x4033c513, 0xdf3627cf, 0x1340f77c,
  6.1400 +0x13d107db, 0x59e5ab06, 0xeea11712, 0x7b7014ea,
  6.1401 +0xf90fdb1f, 0x03ab0707, 0x0d5fbf78, 0x82ba8078,
  6.1402 +0xd0614108, 0xb6803766, 0x6a933c8c, 0xecaf9339,
  6.1403 +0x0517fd95, 0x7777b204, 0x51826313, 0x53dfeff6,
  6.1404 +0x0b960763, 0x003705af, 0xfa0302b1, 0xd80ab0ad,
  6.1405 +0xe8ed0b01, 0x00857b2d, 0x000338cc, 0x819176ca,
  6.1406 +0xb042135b, 0x2a40002b, 0x4507d0fb, 0x0000014f,
  6.1407 +0x00000000, 0xffffff20, 0xffffffff, 0xffffffff,
  6.1408 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1409 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1410 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1411 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1412 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1413 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1414 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1415 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1416 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1417 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1418 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1419 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1420 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1421 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1422 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1423 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1424 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1425 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1426 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1427 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1428 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1429 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1430 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1431 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1432 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1433 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1434 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1435 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1436 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1437 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1438 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1439 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1440 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1441 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1442 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1443 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1444 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1445 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1446 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1447 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1448 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1449 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1450 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1451 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1452 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1453 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1454 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1455 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1456 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1457 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1458 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1459 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1460 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1461 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1462 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1463 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1464 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1465 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1466 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1467 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1468 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1469 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1470 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1471 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1472 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1473 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1474 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1475 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1476 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1477 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1478 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1479 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1480 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1481 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1482 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1483 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1484 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1485 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1486 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1487 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1488 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1489 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1490 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1491 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1492 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1493 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1494 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1495 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1496 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1497 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1498 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1499 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1500 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1501 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1502 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1503 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1504 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1505 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1506 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1507 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1508 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1509 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1510 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1511 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1512 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1513 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1514 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1515 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1516 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1517 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1518 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1519 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1520 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1521 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1522 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1523 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1524 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1525 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1526 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1527 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1528 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1529 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1530 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1531 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1532 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1533 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1534 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1535 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1536 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1537 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1538 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1539 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1540 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1541 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1542 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1543 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1544 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1545 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1546 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1547 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1548 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1549 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1550 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1551 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1552 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1553 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1554 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1555 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1556 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1557 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1558 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1559 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1560 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1561 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1562 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1563 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1564 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1565 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1566 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1567 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1568 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1569 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1570 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1571 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1572 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1573 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1574 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1575 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1576 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1577 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1578 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1579 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1580 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1581 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1582 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1583 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1584 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1585 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1586 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1587 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1588 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1589 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1590 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1591 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1592 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1593 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1594 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1595 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1596 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1597 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1598 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1599 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1600 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1601 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1602 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1603 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1604 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1605 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1606 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1607 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1608 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1609 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1610 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1611 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1612 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1613 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1614 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1615 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1616 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1617 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1618 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1619 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1620 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1621 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1622 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1623 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1624 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1625 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1626 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1627 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1628 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1629 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1630 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1631 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1632 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1633 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1634 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1635 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1636 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1637 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1638 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1639 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1640 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1641 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1642 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1643 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1644 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1645 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1646 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1647 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1648 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1649 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1650 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1651 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1652 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1653 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1654 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1655 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1656 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1657 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1658 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1659 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1660 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1661 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1662 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1663 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1664 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1665 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1666 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1667 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1668 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1669 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1670 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1671 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1672 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1673 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1674 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1675 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1676 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1677 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1678 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1679 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1680 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1681 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1682 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1683 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1684 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1685 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1686 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1687 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1688 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1689 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1690 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1691 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1692 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1693 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1694 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1695 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1696 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1697 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1698 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1699 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1700 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1701 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1702 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1703 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1704 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1705 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1706 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1707 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1708 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1709 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1710 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1711 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1712 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1713 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1714 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1715 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1716 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1717 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1718 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1719 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1720 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1721 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1722 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1723 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1724 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1725 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1726 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1727 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1728 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1729 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1730 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1731 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1732 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1733 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1734 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1735 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1736 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1737 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1738 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1739 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1740 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1741 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1742 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1743 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1744 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1745 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1746 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1747 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1748 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1749 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1750 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1751 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1752 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1753 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1754 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1755 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1756 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1757 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1758 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1759 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1760 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1761 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1762 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1763 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1764 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1765 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1766 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1767 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1768 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1769 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1770 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1771 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1772 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1773 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1774 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1775 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1776 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1777 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1778 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1779 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1780 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1781 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1782 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1783 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1784 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1785 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1786 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1787 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1788 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1789 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1790 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1791 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1792 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1793 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1794 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1795 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1796 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1797 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1798 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1799 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1800 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1801 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1802 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1803 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1804 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1805 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1806 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1807 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1808 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1809 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1810 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1811 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1812 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1813 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1814 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1815 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1816 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1817 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1818 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1819 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1820 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1821 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1822 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1823 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1824 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1825 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1826 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1827 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1828 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1829 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1830 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1831 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1832 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1833 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1834 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1835 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1836 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1837 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1838 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1839 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1840 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1841 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1842 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1843 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1844 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1845 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1846 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1847 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1848 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1849 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1850 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1851 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1852 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1853 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1854 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1855 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1856 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1857 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1858 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1859 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1860 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1861 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1862 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1863 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1864 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1865 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1866 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1867 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1868 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1869 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1870 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1871 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1872 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1873 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1874 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1875 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1876 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1877 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1878 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1879 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1880 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1881 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1882 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1883 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1884 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1885 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1886 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1887 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1888 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1889 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1890 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1891 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1892 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1893 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1894 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1895 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1896 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1897 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1898 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1899 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1900 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1901 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1902 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1903 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1904 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1905 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1906 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1907 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1908 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1909 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1910 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1911 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1912 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1913 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1914 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1915 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1916 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1917 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1918 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1919 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1920 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1921 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1922 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1923 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1924 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1925 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1926 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1927 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1928 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1929 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1930 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1931 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1932 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1933 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1934 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1935 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1936 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1937 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1938 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1939 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1940 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1941 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1942 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1943 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1944 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1945 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1946 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1947 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1948 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1949 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1950 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1951 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1952 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1953 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1954 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1955 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1956 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1957 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1958 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1959 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1960 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1961 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1962 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1963 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1964 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1965 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1966 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1967 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1968 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1969 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1970 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1971 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1972 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1973 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1974 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1975 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1976 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1977 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1978 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1979 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1980 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1981 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1982 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1983 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1984 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1985 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1986 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1987 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1988 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1989 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1990 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1991 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1992 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1993 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1994 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1995 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1996 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1997 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1998 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.1999 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2000 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2001 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2002 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2003 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2004 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2005 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2006 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2007 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2008 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2009 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2010 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2011 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2012 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2013 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2014 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2015 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2016 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2017 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2018 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2019 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2020 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2021 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2022 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2023 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2024 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2025 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2026 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2027 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2028 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2029 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2030 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2031 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2032 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2033 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2034 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2035 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2036 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2037 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2038 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2039 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2040 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2041 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2042 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2043 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2044 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2045 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2046 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2047 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2048 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2049 +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
  6.2050 +0xffffffff, 0x72ffffff, 0x31386c74, 0x7a2e3933,
  6.2051 +0x206d6f72, 0x2e342e35, 0x47282033, 0x20294c50,
  6.2052 +0x65687465, 0x6f6f6272, 0x726f2e74, 0xffff0067,
  6.2053 +0100000,
  6.2054 +};
     7.1 --- a/tools/firmware/hvmloader/Makefile	Sun Aug 12 12:19:13 2007 -0600
     7.2 +++ b/tools/firmware/hvmloader/Makefile	Sun Aug 12 14:50:02 2007 -0600
     7.3 @@ -51,12 +51,12 @@ hvmloader: roms.h acpi/acpi.a $(SRCS)
     7.4  acpi/acpi.a:
     7.5  	$(MAKE) -C acpi
     7.6  
     7.7 -roms.h:	../rombios/BIOS-bochs-latest ../vgabios/VGABIOS-lgpl-latest.bin ../vgabios/VGABIOS-lgpl-latest.cirrus.bin ../vmxassist/vmxassist.bin ../etherboot/eb-rtl8139.zrom
     7.8 +roms.h:	../rombios/BIOS-bochs-latest ../vgabios/VGABIOS-lgpl-latest.bin ../vgabios/VGABIOS-lgpl-latest.cirrus.bin ../vmxassist/vmxassist.bin ../etherboot/eb-rtl8139.zrom.h
     7.9  	sh ./mkhex rombios ../rombios/BIOS-bochs-latest > roms.h
    7.10  	sh ./mkhex vgabios_stdvga ../vgabios/VGABIOS-lgpl-latest.bin >> roms.h
    7.11  	sh ./mkhex vgabios_cirrusvga ../vgabios/VGABIOS-lgpl-latest.cirrus.bin >> roms.h
    7.12  	sh ./mkhex vmxassist ../vmxassist/vmxassist.bin >> roms.h
    7.13 -	sh ./mkhex etherboot ../etherboot/eb-rtl8139.zrom >> roms.h
    7.14 +	cat ../etherboot/eb-rtl8139.zrom.h >> roms.h
    7.15  
    7.16  .PHONY: clean
    7.17  clean:
     8.1 --- a/tools/libxc/xc_dom_x86.c	Sun Aug 12 12:19:13 2007 -0600
     8.2 +++ b/tools/libxc/xc_dom_x86.c	Sun Aug 12 14:50:02 2007 -0600
     8.3 @@ -417,6 +417,7 @@ static int start_info_x86_32(struct xc_d
     8.4  
     8.5      xc_dom_printf("%s: called\n", __FUNCTION__);
     8.6  
     8.7 +    memset(start_info, 0, sizeof(*start_info));
     8.8      sprintf(start_info->magic, dom->guest_type);
     8.9      start_info->nr_pages = dom->total_pages;
    8.10      start_info->shared_info = shinfo << PAGE_SHIFT_X86;
    8.11 @@ -455,6 +456,7 @@ static int start_info_x86_64(struct xc_d
    8.12  
    8.13      xc_dom_printf("%s: called\n", __FUNCTION__);
    8.14  
    8.15 +    memset(start_info, 0, sizeof(*start_info));
    8.16      sprintf(start_info->magic, dom->guest_type);
    8.17      start_info->nr_pages = dom->total_pages;
    8.18      start_info->shared_info = shinfo << PAGE_SHIFT_X86;
     9.1 --- a/tools/pygrub/src/LiloConf.py	Sun Aug 12 12:19:13 2007 -0600
     9.2 +++ b/tools/pygrub/src/LiloConf.py	Sun Aug 12 14:50:02 2007 -0600
     9.3 @@ -18,12 +18,13 @@ class LiloImage(object):
     9.4                  "  initrd: %s\n" %(self.title, self.root, self.kernel,
     9.5                                     self.args, self.initrd))
     9.6      def reset(self, lines, path):
     9.7 -        self._root = self._initrd = self._kernel = self._args = None
     9.8 +        self._initrd = self._kernel = self._readonly = None
     9.9 +        self._args = ""
    9.10          self.title = ""
    9.11          self.lines = []
    9.12          self.path = path
    9.13 +        self.root = ""
    9.14          map(self.set_from_line, lines)
    9.15 -        self.root = "" # dummy
    9.16  
    9.17      def set_from_line(self, line, replace = None):
    9.18          (com, arg) = GrubConf.grub_exact_split(line, 2)
    9.19 @@ -55,6 +56,23 @@ class LiloImage(object):
    9.20          return self._initrd
    9.21      initrd = property(get_initrd, set_initrd)
    9.22  
    9.23 +    def set_args(self, val):
    9.24 +        self._args = val
    9.25 +    def get_args(self):
    9.26 +        args = self._args
    9.27 +        if self.root:
    9.28 +            args += " root=" + self.root
    9.29 +        if self.readonly:
    9.30 +            args += " ro"
    9.31 +        return args
    9.32 +    args = property(get_args, set_args)
    9.33 +
    9.34 +    def set_readonly(self, val):
    9.35 +        self._readonly = 1
    9.36 +    def get_readonly(self):
    9.37 +        return self._readonly
    9.38 +    readonly = property(get_readonly, set_readonly)
    9.39 +
    9.40      # set up command handlers
    9.41      commands = { "label": "self.title",
    9.42                   "root": "self.root",
    9.43 @@ -62,7 +80,7 @@ class LiloImage(object):
    9.44                   "image": "self.kernel",
    9.45                   "initrd": "self.initrd",
    9.46                   "append": "self.args",
    9.47 -                 "read-only": None,
    9.48 +                 "read-only": "self.readonly",
    9.49                   "chainloader": None,
    9.50                   "module": None}
    9.51  
    10.1 --- a/tools/python/xen/util/acmpolicy.py	Sun Aug 12 12:19:13 2007 -0600
    10.2 +++ b/tools/python/xen/util/acmpolicy.py	Sun Aug 12 14:50:02 2007 -0600
    10.3 @@ -47,6 +47,9 @@ ACM_POLICY_UNDEFINED = 15
    10.4  
    10.5  ACM_SCHEMA_FILE = "/etc/xen/acm-security/policies/security_policy.xsd"
    10.6  
    10.7 +ACM_LABEL_UNLABELED = "__UNLABELED__"
    10.8 +ACM_LABEL_UNLABELED_DISPLAY = "unlabeled"
    10.9 +
   10.10  class ACMPolicy(XSPolicy):
   10.11      """
   10.12       ACMPolicy class. Implements methods for getting information from
   10.13 @@ -139,6 +142,21 @@ class ACMPolicy(XSPolicy):
   10.14          return xsconstants.XSERR_SUCCESS
   10.15  
   10.16  
   10.17 +    def is_default_policy(self):
   10.18 +        """
   10.19 +           Determine whether this is the default policy
   10.20 +        """
   10.21 +        default = ['SystemManagement']
   10.22 +        if self.policy_get_virtualmachinelabel_names() == default and \
   10.23 +           self.policy_get_bootstrap_vmlabel() == default[0] and \
   10.24 +           self.policy_get_stetypes_types() == default and \
   10.25 +           self.policy_get_stes_of_vmlabel(default[0]) == default and \
   10.26 +           self.policy_get_resourcelabel_names() == [] and \
   10.27 +           self.policy_get_chwall_types() == default and \
   10.28 +           self.get_name() == "DEFAULT":
   10.29 +            return True
   10.30 +        return False
   10.31 +
   10.32      def update(self, xml_new):
   10.33          """
   10.34              Update the policy with the new XML. The hypervisor decides
   10.35 @@ -153,27 +171,18 @@ class ACMPolicy(XSPolicy):
   10.36              return -xsconstants.XSERR_XML_PROCESSING, errors
   10.37  
   10.38          vmlabel_map = acmpol_new.policy_get_vmlabel_translation_map()
   10.39 +
   10.40          # An update requires version information in the current
   10.41          # and new policy. The version number of the current policy
   10.42          # must be the same as what is in the FromPolicy/Version node
   10.43          # in the new one and the current policy's name must be the
   10.44          # same as in FromPolicy/PolicyName
   10.45 -
   10.46 -        now_vers    = acmpol_old.policy_dom_get_hdr_item("Version")
   10.47 -        now_name    = acmpol_old.policy_dom_get_hdr_item("PolicyName")
   10.48 -        req_oldvers = acmpol_new.policy_dom_get_frompol_item("Version")
   10.49 -        req_oldname = acmpol_new.policy_dom_get_frompol_item("PolicyName")
   10.50 -
   10.51 -        if now_vers == "" or \
   10.52 -           now_vers != req_oldvers or \
   10.53 -           now_name != req_oldname:
   10.54 -            log.info("Policy rejected: %s != %s or %s != %s" % \
   10.55 -                     (now_vers,req_oldvers,now_name,req_oldname))
   10.56 -            return -xsconstants.XSERR_VERSION_PREVENTS_UPDATE, errors
   10.57 -
   10.58 -        if not self.isVersionUpdate(acmpol_new):
   10.59 -            log.info("Policy rejected since new version is not an update.")
   10.60 -            return -xsconstants.XSERR_VERSION_PREVENTS_UPDATE, errors
   10.61 +        # The default policy when it is set skips this step.
   10.62 +        if not acmpol_new.is_default_policy() and \
   10.63 +           not acmpol_old.is_default_policy():
   10.64 +            irc = self.__do_update_version_check(acmpol_new)
   10.65 +            if irc != xsconstants.XSERR_SUCCESS:
   10.66 +                return irc, errors
   10.67  
   10.68          if self.isloaded():
   10.69              newvmnames = \
   10.70 @@ -255,6 +264,29 @@ class ACMPolicy(XSPolicy):
   10.71              self.compile()
   10.72          return rc, errors
   10.73  
   10.74 +
   10.75 +    def __do_update_version_check(self, acmpol_new):
   10.76 +        acmpol_old = self
   10.77 +
   10.78 +        now_vers    = acmpol_old.policy_dom_get_hdr_item("Version")
   10.79 +        now_name    = acmpol_old.policy_dom_get_hdr_item("PolicyName")
   10.80 +        req_oldvers = acmpol_new.policy_dom_get_frompol_item("Version")
   10.81 +        req_oldname = acmpol_new.policy_dom_get_frompol_item("PolicyName")
   10.82 +
   10.83 +        if now_vers == "" or \
   10.84 +           now_vers != req_oldvers or \
   10.85 +           now_name != req_oldname:
   10.86 +            log.info("Policy rejected: %s != %s or %s != %s" % \
   10.87 +                     (now_vers,req_oldvers,now_name,req_oldname))
   10.88 +            return -xsconstants.XSERR_VERSION_PREVENTS_UPDATE
   10.89 +
   10.90 +        if not self.isVersionUpdate(acmpol_new):
   10.91 +            log.info("Policy rejected since new version is not an update.")
   10.92 +            return -xsconstants.XSERR_VERSION_PREVENTS_UPDATE
   10.93 +
   10.94 +        return xsconstants.XSERR_SUCCESS
   10.95 +
   10.96 +
   10.97      def compareVersions(self, v1, v2):
   10.98          """
   10.99              Compare two policy versions given their tuples of major and
  10.100 @@ -845,8 +877,7 @@ class ACMPolicy(XSPolicy):
  10.101          if self.isloaded():
  10.102              return -xsconstants.XSERR_POLICY_LOADED
  10.103          files = [ self.get_filename(".map",""),
  10.104 -                  self.get_filename(".bin",""),
  10.105 -                  self.path_from_policy_name(self.get_name())]
  10.106 +                  self.get_filename(".bin","") ]
  10.107          for f in files:
  10.108              try:
  10.109                  os.unlink(f)
  10.110 @@ -925,11 +956,13 @@ class ACMPolicy(XSPolicy):
  10.111              return -xsconstants.XSERR_POLICY_INCONSISTENT, "", ""
  10.112  
  10.113          vms_with_chws = []
  10.114 -        chws_by_vm = {}
  10.115 +        chws_by_vm = { ACM_LABEL_UNLABELED : [] }
  10.116          for v in vms:
  10.117              if v.has_key("chws"):
  10.118                  vms_with_chws.append(v["name"])
  10.119                  chws_by_vm[v["name"]] = v["chws"]
  10.120 +
  10.121 +
  10.122          if bootstrap in vms_with_chws:
  10.123              vms_with_chws.remove(bootstrap)
  10.124              vms_with_chws.sort()
  10.125 @@ -937,12 +970,16 @@ class ACMPolicy(XSPolicy):
  10.126          else:
  10.127              vms_with_chws.sort()
  10.128  
  10.129 +        if ACM_LABEL_UNLABELED in vms_with_chws:
  10.130 +            vms_with_chws.remove(ACM_LABEL_UNLABELED) ; # @1
  10.131 +
  10.132          vms_with_stes = []
  10.133 -        stes_by_vm = {}
  10.134 +        stes_by_vm = { ACM_LABEL_UNLABELED : [] }
  10.135          for v in vms:
  10.136              if v.has_key("stes"):
  10.137                  vms_with_stes.append(v["name"])
  10.138                  stes_by_vm[v["name"]] = v["stes"]
  10.139 +
  10.140          if bootstrap in vms_with_stes:
  10.141              vms_with_stes.remove(bootstrap)
  10.142              vms_with_stes.sort()
  10.143 @@ -950,6 +987,9 @@ class ACMPolicy(XSPolicy):
  10.144          else:
  10.145              vms_with_stes.sort()
  10.146  
  10.147 +        if ACM_LABEL_UNLABELED in vms_with_stes:
  10.148 +            vms_with_stes.remove(ACM_LABEL_UNLABELED) ; # @2
  10.149 +
  10.150          resnames = self.policy_get_resourcelabel_names()
  10.151          resnames.sort()
  10.152          stes_by_res = {}
  10.153 @@ -958,6 +998,9 @@ class ACMPolicy(XSPolicy):
  10.154              if r.has_key("stes"):
  10.155                  stes_by_res[r["name"]] = r["stes"]
  10.156  
  10.157 +        if ACM_LABEL_UNLABELED in resnames:
  10.158 +            resnames.remove(ACM_LABEL_UNLABELED)
  10.159 +
  10.160          max_chw_ssids = 1 + len(vms_with_chws)
  10.161          max_chw_types = 1 + len(vms_with_chws)
  10.162          max_ste_ssids = 1 + len(vms_with_stes) + len(resnames)
  10.163 @@ -1083,6 +1126,8 @@ class ACMPolicy(XSPolicy):
  10.164               pr_bin += "\x00"
  10.165  
  10.166          # Build chinese wall part
  10.167 +        vms_with_chws.insert(0, ACM_LABEL_UNLABELED)
  10.168 +
  10.169          cfses_names = self.policy_get_chwall_cfses_names_sorted()
  10.170          cfses = self.policy_get_chwall_cfses()
  10.171  
  10.172 @@ -1105,9 +1150,7 @@ class ACMPolicy(XSPolicy):
  10.173                                chw_running_types_offset,
  10.174                                chw_conf_agg_offset)
  10.175          chw_bin_body = ""
  10.176 -        # simulate __NULL_LABEL__
  10.177 -        for c in chws:
  10.178 -            chw_bin_body += struct.pack("!h",0)
  10.179 +
  10.180          # VMs that are listed and their chinese walls
  10.181          for v in vms_with_chws:
  10.182              for c in chws:
  10.183 @@ -1143,6 +1186,8 @@ class ACMPolicy(XSPolicy):
  10.184              chw_bin += "\x00"
  10.185  
  10.186          # Build STE part
  10.187 +        vms_with_stes.insert(0, ACM_LABEL_UNLABELED) # Took out in @2
  10.188 +
  10.189          steformat="!iiiii"
  10.190          ste_bin = struct.pack(steformat,
  10.191                                ACM_STE_VERSION,
  10.192 @@ -1152,10 +1197,7 @@ class ACMPolicy(XSPolicy):
  10.193                                struct.calcsize(steformat))
  10.194          ste_bin_body = ""
  10.195          if stes:
  10.196 -            # Simulate __NULL_LABEL__
  10.197 -            for s in stes:
  10.198 -                ste_bin_body += struct.pack("!h",0)
  10.199 -            # VMs that are listed and their chinese walls
  10.200 +            # VMs that are listed and their STE types
  10.201              for v in vms_with_stes:
  10.202                  unknown_ste |= (set(stes_by_vm[v]) - set(stes))
  10.203                  for s in stes:
    11.1 --- a/tools/python/xen/util/security.py	Sun Aug 12 12:19:13 2007 -0600
    11.2 +++ b/tools/python/xen/util/security.py	Sun Aug 12 14:50:02 2007 -0600
    11.3 @@ -146,7 +146,7 @@ def calc_dom_ssidref_from_info(info):
    11.4                  raise VmError("VM label '%s' in wrong format." % seclab)
    11.5              typ, policyname, vmlabel = seclab.split(":")
    11.6              if typ != xsconstants.ACM_POLICY_ID:
    11.7 -                raise VmError("Policy type '%s' not supported." % typ)
    11.8 +                raise VmError("Policy type '%s' must be changed." % typ)
    11.9              refresh_security_policy()
   11.10              if active_policy != policyname:
   11.11                  raise VmError("Active policy '%s' different than "
   11.12 @@ -155,7 +155,7 @@ def calc_dom_ssidref_from_info(info):
   11.13              ssidref = label2ssidref(vmlabel, policyname, "dom")
   11.14              return ssidref
   11.15          else:
   11.16 -            return 0
   11.17 +            return 0x0
   11.18      raise VmError("security.calc_dom_ssidref_from_info: info of type '%s'"
   11.19                    "not supported." % type(info))
   11.20  
   11.21 @@ -232,6 +232,10 @@ def ssidref2label(ssidref_var):
   11.22      else:
   11.23          err("Instance type of ssidref not supported (must be of type 'str' or 'int')")
   11.24  
   11.25 +    if ssidref == 0:
   11.26 +        from xen.util.acmpolicy import ACM_LABEL_UNLABELED
   11.27 +        return ACM_LABEL_UNLABELED
   11.28 +
   11.29      try:
   11.30          mapfile_lock()
   11.31  
   11.32 @@ -498,7 +502,7 @@ def hv_chg_policy(bin_pol, del_array, ch
   11.33          rc, errors = acm.chgpolicy(bin_pol, del_array, chg_array)
   11.34      except Exception, e:
   11.35          pass
   11.36 -    if (len(errors) > 0):
   11.37 +    if len(errors) > 0:
   11.38          rc = -xsconstants.XSERR_HV_OP_FAILED
   11.39      return rc, errors
   11.40  
   11.41 @@ -781,6 +785,24 @@ def res_security_check_xapi(rlabel, rssi
   11.42      return rtnval
   11.43  
   11.44  
   11.45 +def validate_label(label, policyref):
   11.46 +    """
   11.47 +       Make sure that this label is part of the currently enforced policy
   11.48 +       and that it reference the current policy.
   11.49 +    """
   11.50 +    rc = xsconstants.XSERR_SUCCESS
   11.51 +    from xen.xend.XendXSPolicyAdmin import XSPolicyAdminInstance
   11.52 +    curpol = XSPolicyAdminInstance().get_loaded_policy()
   11.53 +    if not curpol or curpol.get_name() != policyref:
   11.54 +        rc = -xsconstants.XSERR_BAD_LABEL
   11.55 +    else:
   11.56 +        try:
   11.57 +            label2ssidref(label, curpol.get_name() , 'res')
   11.58 +        except:
   11.59 +            rc = -xsconstants.XSERR_BAD_LABEL
   11.60 +    return rc
   11.61 +
   11.62 +
   11.63  def set_resource_label_xapi(resource, reslabel_xapi, oldlabel_xapi):
   11.64      """Assign a resource label to a resource
   11.65      @param resource: The name of a resource, i.e., "phy:/dev/hda", or
   11.66 @@ -805,10 +827,16 @@ def set_resource_label_xapi(resource, re
   11.67              return -xsconstants.XSERR_BAD_LABEL_FORMAT
   11.68          otyp, opolicyref, olabel = tmp
   11.69          # Only ACM is supported
   11.70 -        if otyp != xsconstants.ACM_POLICY_ID:
   11.71 +        if otyp != xsconstants.ACM_POLICY_ID  and \
   11.72 +           otyp != xsconstants.INVALID_POLICY_PREFIX + \
   11.73 +                   xsconstants.ACM_POLICY_ID:
   11.74              return -xsconstants.XSERR_WRONG_POLICY_TYPE
   11.75 +    rc = validate_label(label, policyref)
   11.76 +    if rc != xsconstants.XSERR_SUCCESS:
   11.77 +        return rc
   11.78      return set_resource_label(resource, typ, policyref, label, olabel)
   11.79  
   11.80 +
   11.81  def is_resource_in_use(resource):
   11.82      """ Investigate all running domains whether they use this device """
   11.83      from xen.xend import XendDomain
   11.84 @@ -867,7 +895,7 @@ def get_domain_resources(dominfo):
   11.85                  resources[typ].append("%s:%s:%s" %
   11.86                                        (xsconstants.ACM_POLICY_ID,
   11.87                                         active_policy,
   11.88 -                                       "unlabeled"))
   11.89 +                                       ACM_LABEL_UNLABELED))
   11.90  
   11.91      return resources
   11.92  
   11.93 @@ -1224,7 +1252,7 @@ def change_acm_policy(bin_pol, del_array
   11.94                  sec_lab, new_seclab = labels
   11.95                  if sec_lab != new_seclab:
   11.96                      log.info("Updating domain %s to new label '%s'." % \
   11.97 -                             (new_seclab, sec_lab))
   11.98 +                             (sec_lab, new_seclab))
   11.99                      # This better be working!
  11.100                      dominfo.set_security_label(new_seclab,
  11.101                                                 sec_lab,
    12.1 --- a/tools/python/xen/xend/XendDomainInfo.py	Sun Aug 12 12:19:13 2007 -0600
    12.2 +++ b/tools/python/xen/xend/XendDomainInfo.py	Sun Aug 12 14:50:02 2007 -0600
    12.3 @@ -559,18 +559,8 @@ class XendDomainInfo:
    12.4              self.getDeviceController(devclass).waitForDevices()
    12.5  
    12.6      def destroyDevice(self, deviceClass, devid, force = False):
    12.7 -        try:
    12.8 -            dev = int(devid)
    12.9 -        except ValueError:
   12.10 -            # devid is not a number but a string containing either device
   12.11 -            # name (e.g. xvda) or device_type/device_id (e.g. vbd/51728)
   12.12 -            dev = type(devid) is str and devid.split('/')[-1] or None
   12.13 -            if dev == None:
   12.14 -                log.debug("Could not find the device %s", devid)
   12.15 -                return None
   12.16 -
   12.17 -        log.debug("dev = %s", dev)
   12.18 -        return self.getDeviceController(deviceClass).destroyDevice(dev, force)
   12.19 +        log.debug("dev = %s", devid)
   12.20 +        return self.getDeviceController(deviceClass).destroyDevice(devid, force)
   12.21  
   12.22      def getDeviceSxprs(self, deviceClass):
   12.23          if self._stateGet() in (DOM_STATE_RUNNING, DOM_STATE_PAUSED):
   12.24 @@ -1463,8 +1453,6 @@ class XendDomainInfo:
   12.25          ssidref = 0
   12.26          if security.on():
   12.27              ssidref = security.calc_dom_ssidref_from_info(self.info)
   12.28 -            if ssidref == 0:
   12.29 -                raise VmError('VM is not properly labeled.')
   12.30              if security.has_authorization(ssidref) == False:
   12.31                  raise VmError("VM is not authorized to run.")
   12.32  
    13.1 --- a/tools/python/xen/xend/server/DevController.py	Sun Aug 12 12:19:13 2007 -0600
    13.2 +++ b/tools/python/xen/xend/server/DevController.py	Sun Aug 12 14:50:02 2007 -0600
    13.3 @@ -203,27 +203,32 @@ class DevController:
    13.4  
    13.5          The implementation here simply deletes the appropriate paths from the
    13.6          store.  This may be overridden by subclasses who need to perform other
    13.7 -        tasks on destruction.  Further, the implementation here can only
    13.8 -        accept integer device IDs, or values that can be converted to
    13.9 -        integers.  Subclasses may accept other values and convert them to
   13.10 -        integers before passing them here.
   13.11 +        tasks on destruction. The implementation here accepts integer device
   13.12 +        IDs or paths containg integer deviceIDs, e.g. vfb/0.  Subclasses may
   13.13 +        accept other values and convert them to integers before passing them
   13.14 +        here.
   13.15          """
   13.16  
   13.17 -        devid = int(devid)
   13.18 +        try:
   13.19 +            dev = int(devid)
   13.20 +        except ValueError:
   13.21 +            # Does devid contain devicetype/deviceid?
   13.22 +            # Propogate exception if unable to find an integer devid
   13.23 +            dev = int(type(devid) is str and devid.split('/')[-1] or None)
   13.24  
   13.25          # Modify online status /before/ updating state (latter is watched by
   13.26          # drivers, so this ordering avoids a race).
   13.27 -        self.writeBackend(devid, 'online', "0")
   13.28 -        self.writeBackend(devid, 'state', str(xenbusState['Closing']))
   13.29 +        self.writeBackend(dev, 'online', "0")
   13.30 +        self.writeBackend(dev, 'state', str(xenbusState['Closing']))
   13.31  
   13.32          if force:
   13.33 -            frontpath = self.frontendPath(devid)
   13.34 +            frontpath = self.frontendPath(dev)
   13.35              backpath = xstransact.Read(frontpath, "backend")
   13.36              if backpath:
   13.37                  xstransact.Remove(backpath)
   13.38              xstransact.Remove(frontpath)
   13.39  
   13.40 -        self.vm._removeVm("device/%s/%d" % (self.deviceClass, devid))
   13.41 +        self.vm._removeVm("device/%s/%d" % (self.deviceClass, dev))
   13.42  
   13.43      def configurations(self):
   13.44          return map(self.configuration, self.deviceIDs())
    14.1 --- a/tools/python/xen/xend/server/blkif.py	Sun Aug 12 12:19:13 2007 -0600
    14.2 +++ b/tools/python/xen/xend/server/blkif.py	Sun Aug 12 14:50:02 2007 -0600
    14.3 @@ -73,17 +73,7 @@ class BlkifController(DevController):
    14.4              back['uuid'] = uuid
    14.5  
    14.6          if security.on():
    14.7 -            (label, ssidref, policy) = \
    14.8 -                                 security.get_res_security_details(uname)
    14.9 -            domain_label = self.vm.get_security_label()
   14.10 -            if domain_label:
   14.11 -                rc = security.res_security_check_xapi(label, ssidref, policy,
   14.12 -                                                      domain_label)
   14.13 -                if rc == 0:
   14.14 -                    raise VmError("VM's access to block device '%s' denied." %
   14.15 -                                  uname)
   14.16 -            else:
   14.17 -                raise VmError("VM must have a security label.")
   14.18 +            self.do_access_control(config, uname)
   14.19  
   14.20          devid = blkif.blkdev_name_to_number(dev)
   14.21          if devid is None:
   14.22 @@ -95,6 +85,21 @@ class BlkifController(DevController):
   14.23  
   14.24          return (devid, back, front)
   14.25  
   14.26 +    def do_access_control(self, config, uname):
   14.27 +        (label, ssidref, policy) = \
   14.28 +                             security.get_res_security_details(uname)
   14.29 +        domain_label = self.vm.get_security_label()
   14.30 +        if domain_label:
   14.31 +            rc = security.res_security_check_xapi(label, ssidref, policy,
   14.32 +                                                  domain_label)
   14.33 +            if rc == 0:
   14.34 +                raise VmError("VM's access to block device '%s' denied" %
   14.35 +                              uname)
   14.36 +        else:
   14.37 +            from xen.util.acmpolicy import ACM_LABEL_UNLABELED
   14.38 +            if label != ACM_LABEL_UNLABELED:
   14.39 +                raise VmError("VM must have a security label to access "
   14.40 +                              "block device '%s'" % uname)
   14.41  
   14.42      def reconfigureDevice(self, _, config):
   14.43          """@see DevController.reconfigureDevice"""
   14.44 @@ -149,13 +154,16 @@ class BlkifController(DevController):
   14.45      def destroyDevice(self, devid, force):
   14.46          """@see DevController.destroyDevice"""
   14.47  
   14.48 -        # If we are given a device name, then look up the device ID from it,
   14.49 -        # and destroy that ID instead.  If what we are given is an integer,
   14.50 -        # then assume it's a device ID and pass it straight through to our
   14.51 -        # superclass's method.
   14.52 -
   14.53 +        # vbd device IDs can be either string or integer.  Further, the
   14.54 +        # following string values are possible:
   14.55 +        #    - devicetype/deviceid (vbd/51728)
   14.56 +        #    - devicetype/devicename (/dev/xvdb)
   14.57 +        #    - devicename (xvdb)
   14.58 +        # Let our superclass handle integer or devicetype/deviceid forms.
   14.59 +        # If we are given a device name form, then look up the device ID
   14.60 +        # from it, and destroy that ID instead.
   14.61          try:
   14.62 -            DevController.destroyDevice(self, int(devid), force)
   14.63 +            DevController.destroyDevice(self, devid, force)
   14.64          except ValueError:
   14.65              devid_end = type(devid) is str and devid.split('/')[-1] or None
   14.66  
    15.1 --- a/tools/python/xen/xm/activatepolicy.py	Sun Aug 12 12:19:13 2007 -0600
    15.2 +++ b/tools/python/xen/xm/activatepolicy.py	Sun Aug 12 14:50:02 2007 -0600
    15.3 @@ -23,7 +23,7 @@ import sys
    15.4  from xen.util import xsconstants
    15.5  from xml.dom import minidom
    15.6  from xen.xm.opts import OptionError
    15.7 -from xen.xm import getpolicy
    15.8 +from xen.xm import getpolicy, setpolicy
    15.9  from xen.xm import main as xm_main
   15.10  from xen.xm.main import server
   15.11  
   15.12 @@ -38,6 +38,9 @@ def help():
   15.13        --boot     Have the system boot with the policy. Changes the default
   15.14                   title in grub.conf.
   15.15        --noboot   Remove the policy from the default entry in grub.conf.
   15.16 +      --remove   Attempt to remove the current policy by installing the
   15.17 +                 default policy; this works only if no domains are
   15.18 +                 running.
   15.19      """
   15.20  
   15.21  def activate_policy(flags):
   15.22 @@ -56,6 +59,25 @@ def activate_policy(flags):
   15.23  def remove_bootpolicy():
   15.24      server.xenapi.XSPolicy.rm_xsbootpolicy()
   15.25  
   15.26 +def install_default_policy():
   15.27 +    if xm_main.serverType != xm_main.SERVER_XEN_API:
   15.28 +        raise OptionError('xm needs to be configured to use the xen-api.')
   15.29 +    xs_type = int(server.xenapi.XSPolicy.get_xstype())
   15.30 +    if xs_type & xsconstants.XS_POLICY_ACM == 0:
   15.31 +        raise OptionError('ACM policy type not supported on system.')
   15.32 +    policystate = server.xenapi.XSPolicy.get_xspolicy()
   15.33 +    if int(policystate['type']) == 0:
   15.34 +        print 'No policy is installed.'
   15.35 +        return
   15.36 +    if int(policystate['type']) != xsconstants.XS_POLICY_ACM:
   15.37 +        print "Unknown policy type '%s'." % policystate['type']
   15.38 +    flags = int(policystate['flags'])
   15.39 +    if flags & xsconstants.XS_INST_LOAD == 0:
   15.40 +        print "Default policy is already loaded."
   15.41 +        return
   15.42 +    setpolicy.setpolicy(xsconstants.ACM_POLICY_ID, 'default', flags, True,
   15.43 +                        False)
   15.44 +
   15.45  def main(argv):
   15.46      if xm_main.serverType != xm_main.SERVER_XEN_API:
   15.47          raise OptionError('xm needs to be configured to use the xen-api.')
   15.48 @@ -69,6 +91,9 @@ def main(argv):
   15.49              flags |= xsconstants.XS_INST_LOAD
   15.50          elif '--noboot' == argv[c]:
   15.51              remove_bootpolicy()
   15.52 +        elif '--remove' == argv[c]:
   15.53 +            install_default_policy()
   15.54 +            return
   15.55          else:
   15.56              raise OptionError("Unknown command line option '%s'" % argv[c])
   15.57          c += 1
    16.1 --- a/tools/python/xen/xm/main.py	Sun Aug 12 12:19:13 2007 -0600
    16.2 +++ b/tools/python/xen/xm/main.py	Sun Aug 12 14:50:02 2007 -0600
    16.3 @@ -25,7 +25,6 @@ import atexit
    16.4  import cmd
    16.5  import os
    16.6  import pprint
    16.7 -import readline
    16.8  import shlex
    16.9  import sys
   16.10  import re
   16.11 @@ -51,6 +50,7 @@ from xen.xm.opts import OptionError, Opt
   16.12  from xen.xm import console
   16.13  from xen.util.xmlrpcclient import ServerProxy
   16.14  from xen.util.security import ACMError
   16.15 +from xen.util.acmpolicy import ACM_LABEL_UNLABELED_DISPLAY
   16.16  
   16.17  import XenAPI
   16.18  
   16.19 @@ -615,6 +615,7 @@ class Shell(cmd.Cmd):
   16.20  
   16.21      def preloop(self):
   16.22          cmd.Cmd.preloop(self)
   16.23 +        import readline
   16.24          readline.set_completer_delims(' ')
   16.25  
   16.26      def default(self, line):
   16.27 @@ -947,7 +948,7 @@ def xm_label_list(doms):
   16.28          d = parse_doms_info(dom)
   16.29          if security.active_policy not in ['INACTIVE', 'NULL', 'DEFAULT']:
   16.30              if not d['seclabel']:
   16.31 -                d['seclabel'] = 'ERROR'
   16.32 +                d['seclabel'] = ACM_LABEL_UNLABELED_DISPLAY
   16.33          elif security.active_policy in ['DEFAULT']:
   16.34              d['seclabel'] = 'DEFAULT'
   16.35          else:
    17.1 --- a/tools/python/xen/xm/new.py	Sun Aug 12 12:19:13 2007 -0600
    17.2 +++ b/tools/python/xen/xm/new.py	Sun Aug 12 14:50:02 2007 -0600
    17.3 @@ -75,7 +75,8 @@ def main(argv):
    17.4          doc = sxp2xml_inst.convert_sxp_to_xml(config) 
    17.5          
    17.6          xenapi_create_inst = xenapi_create()
    17.7 -        vm_refs = xenapi_create_inst.create(document = doc)
    17.8 +        vm_refs = xenapi_create_inst.create(document = doc,
    17.9 +                                            skipdtd=opts.vals.skipdtd)
   17.10      else:       
   17.11          make_unstarted_domain(opts, config)
   17.12          
    18.1 --- a/tools/python/xen/xm/resources.py	Sun Aug 12 12:19:13 2007 -0600
    18.2 +++ b/tools/python/xen/xm/resources.py	Sun Aug 12 14:50:02 2007 -0600
    18.3 @@ -58,7 +58,6 @@ def main (argv):
    18.4          try:
    18.5              filename = security.res_label_filename
    18.6              access_control = dictio.dict_read("resources", filename)
    18.7 -            print access_control
    18.8          except:
    18.9              raise OptionError("Resource file not found")
   18.10  
    19.1 --- a/tools/python/xen/xm/setpolicy.py	Sun Aug 12 12:19:13 2007 -0600
    19.2 +++ b/tools/python/xen/xm/setpolicy.py	Sun Aug 12 14:50:02 2007 -0600
    19.3 @@ -24,6 +24,7 @@ import struct
    19.4  import sys
    19.5  import string
    19.6  from xen.util import xsconstants
    19.7 +from xen.util.acmpolicy import ACMPolicy
    19.8  from xen.xm.opts import OptionError
    19.9  from xen.util.security import policy_dir_prefix
   19.10  from xen.xm import main as xm_main
   19.11 @@ -40,9 +41,38 @@ def help():
   19.12      The following options are defined
   19.13        --load     Load the policy immediately
   19.14        --boot     Have the system load the policy during boot
   19.15 +      --update   Automatically adapt the policy so that it will be
   19.16 +                 treated as an update to the current policy
   19.17      """
   19.18  
   19.19 -def setpolicy(policytype, policy_name, flags, overwrite):
   19.20 +def create_update_xml(xml):
   19.21 +    """
   19.22 +        Adapt the new policy's xml header to be a simple type of an
   19.23 +        update to the currently enforce policy on the remote system.
   19.24 +        Increases the minor number by '1'.
   19.25 +    """
   19.26 +    policystate = server.xenapi.XSPolicy.get_xspolicy()
   19.27 +    if int(policystate['type']) == 0:
   19.28 +        return xml
   19.29 +    curpol = ACMPolicy(xml = policystate['repr'])
   19.30 +    curpol_version = curpol.get_version()
   19.31 +    tmp = curpol_version.split('.')
   19.32 +    if len(tmp) == 2:
   19.33 +        maj = int(tmp[0])
   19.34 +        min = int(tmp[1])
   19.35 +    else:
   19.36 +        maj = int(tmp)
   19.37 +        min = 0
   19.38 +    min += 1
   19.39 +    newpol_version = ""+str(maj)+"."+str(min)
   19.40 +
   19.41 +    newpol = ACMPolicy(xml = xml)
   19.42 +    newpol.set_frompolicy_name(curpol.get_name())
   19.43 +    newpol.set_frompolicy_version(curpol.get_version())
   19.44 +    newpol.set_policy_version(newpol_version)
   19.45 +    return newpol.toxml()
   19.46 +
   19.47 +def setpolicy(policytype, policy_name, flags, overwrite, is_update=False):
   19.48      if xm_main.serverType != xm_main.SERVER_XEN_API:
   19.49          raise OptionError('xm needs to be configured to use the xen-api.')
   19.50      if policytype != xsconstants.ACM_POLICY_ID:
   19.51 @@ -61,6 +91,9 @@ def setpolicy(policytype, policy_name, f
   19.52          except:
   19.53              raise OptionError("Not a valid policy file")
   19.54  
   19.55 +        if is_update:
   19.56 +            xml = create_update_xml(xml)
   19.57 +
   19.58          try:
   19.59              policystate = server.xenapi.XSPolicy.set_xspolicy(xs_type,
   19.60                                                                xml,
   19.61 @@ -96,18 +129,21 @@ def main(argv):
   19.62  
   19.63      policytype  = argv[1]
   19.64      policy_name = argv[2]
   19.65 +    is_update = False
   19.66  
   19.67      flags = 0
   19.68      if '--load' in argv:
   19.69          flags |= xsconstants.XS_INST_LOAD
   19.70      if '--boot' in argv:
   19.71          flags |= xsconstants.XS_INST_BOOT
   19.72 +    if '--update' in argv:
   19.73 +        is_update = True
   19.74  
   19.75      overwrite = True
   19.76      if '--nooverwrite' in argv:
   19.77          overwrite = False
   19.78  
   19.79 -    setpolicy(policytype, policy_name, flags, overwrite)
   19.80 +    setpolicy(policytype, policy_name, flags, overwrite, is_update)
   19.81  
   19.82  if __name__ == '__main__':
   19.83      try:
    20.1 --- a/tools/security/Makefile	Sun Aug 12 12:19:13 2007 -0600
    20.2 +++ b/tools/security/Makefile	Sun Aug 12 14:50:02 2007 -0600
    20.3 @@ -13,13 +13,6 @@ CFLAGS     += $(shell xml2-config --cfla
    20.4  CFLAGS     += $(shell if [[ $(XML2VERSION) < 2.6.20 ]]; then echo ""; else echo "-DVALIDATE_SCHEMA"; fi )
    20.5  LDFLAGS    += $(shell xml2-config --libs ) # if this does not work, try -L/usr/lib -lxml2 -lz -lpthread -lm
    20.6  
    20.7 -ifeq ($(ACM_DEFAULT_SECURITY_POLICY),ACM_NULL_POLICY)
    20.8 -POLICY=null
    20.9 -endif
   20.10 -ifeq ($(ACM_DEFAULT_SECURITY_POLICY),ACM_CHINESE_WALL_AND_SIMPLE_TYPE_ENFORCEMENT_POLICY)
   20.11 -POLICY=chwall_ste
   20.12 -endif
   20.13 -
   20.14  SRCS_TOOL     = secpol_tool.c
   20.15  OBJS_TOOL    := $(patsubst %.c,%.o,$(filter %.c,$(SRCS_TOOL)))
   20.16  SRCS_XML2BIN  = secpol_xml2bin.c secpol_xml2bin.h
   20.17 @@ -41,6 +34,7 @@ ACM_SECGEN_CGIDIR = $(ACM_SECGEN_HTMLDIR
   20.18  
   20.19  ACM_SCHEMA        = security_policy.xsd
   20.20  ACM_EXAMPLES      = client_v1 test
   20.21 +ACM_DEF_POLICIES  = default default-ul
   20.22  ACM_POLICY_SUFFIX = security_policy.xml
   20.23  
   20.24  ifeq ($(ACM_SECURITY),y)
   20.25 @@ -62,6 +56,9 @@ install: all $(ACM_CONFIG_FILE)
   20.26  	for i in $(ACM_EXAMPLES); do \
   20.27  		$(INSTALL_DATA) policies/example/$$i-$(ACM_POLICY_SUFFIX) $(DESTDIR)$(ACM_POLICY_DIR)/example/; \
   20.28  	done
   20.29 +	for i in $(ACM_DEF_POLICIES); do \
   20.30 +		$(INSTALL_DATA) policies/$$i-$(ACM_POLICY_SUFFIX) $(DESTDIR)$(ACM_POLICY_DIR); \
   20.31 +	done
   20.32  	$(INSTALL_DIR) $(DESTDIR)$(ACM_SCRIPT_DIR)
   20.33  	$(INSTALL_PROG) $(ACM_SCRIPTS) $(DESTDIR)$(ACM_SCRIPT_DIR)
   20.34  	$(INSTALL_DIR) $(DESTDIR)$(ACM_SECGEN_HTMLDIR)
    21.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.2 +++ b/tools/security/policies/default-security_policy.xml	Sun Aug 12 14:50:02 2007 -0600
    21.3 @@ -0,0 +1,30 @@
    21.4 +<?xml version="1.0" ?>
    21.5 +<SecurityPolicyDefinition xmlns="http://www.ibm.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ibm.com ../../security_policy.xsd">
    21.6 +  <PolicyHeader>
    21.7 +    <PolicyName>DEFAULT</PolicyName>
    21.8 +    <Version>1.0</Version>
    21.9 +  </PolicyHeader>
   21.10 +  <SimpleTypeEnforcement>
   21.11 +    <SimpleTypeEnforcementTypes>
   21.12 +      <Type>SystemManagement</Type>
   21.13 +    </SimpleTypeEnforcementTypes>
   21.14 +  </SimpleTypeEnforcement>
   21.15 +  <ChineseWall>
   21.16 +    <ChineseWallTypes>
   21.17 +      <Type>SystemManagement</Type>
   21.18 +    </ChineseWallTypes>
   21.19 +  </ChineseWall>
   21.20 +  <SecurityLabelTemplate>
   21.21 +    <SubjectLabels bootstrap="SystemManagement">
   21.22 +      <VirtualMachineLabel>
   21.23 +        <Name>SystemManagement</Name>
   21.24 +        <SimpleTypeEnforcementTypes>
   21.25 +          <Type>SystemManagement</Type>
   21.26 +        </SimpleTypeEnforcementTypes>
   21.27 +        <ChineseWallTypes>
   21.28 +          <Type/>
   21.29 +        </ChineseWallTypes>
   21.30 +      </VirtualMachineLabel>
   21.31 +    </SubjectLabels>
   21.32 +  </SecurityLabelTemplate>
   21.33 +</SecurityPolicyDefinition>
    22.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.2 +++ b/tools/security/policies/default-ul-security_policy.xml	Sun Aug 12 14:50:02 2007 -0600
    22.3 @@ -0,0 +1,41 @@
    22.4 +<?xml version="1.0" ?>
    22.5 +<SecurityPolicyDefinition xmlns="http://www.ibm.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ibm.com ../../security_policy.xsd">
    22.6 +  <PolicyHeader>
    22.7 +    <PolicyName>DEFAULT-UL</PolicyName>
    22.8 +    <Version>1.0</Version>
    22.9 +  </PolicyHeader>
   22.10 +  <SimpleTypeEnforcement>
   22.11 +    <SimpleTypeEnforcementTypes>
   22.12 +      <Type>SystemManagement</Type>
   22.13 +      <Type>__UNLABELED__</Type>
   22.14 +    </SimpleTypeEnforcementTypes>
   22.15 +  </SimpleTypeEnforcement>
   22.16 +  <ChineseWall>
   22.17 +    <ChineseWallTypes>
   22.18 +      <Type>SystemManagement</Type>
   22.19 +    </ChineseWallTypes>
   22.20 +  </ChineseWall>
   22.21 +  <SecurityLabelTemplate>
   22.22 +    <SubjectLabels bootstrap="SystemManagement">
   22.23 +      <VirtualMachineLabel>
   22.24 +        <Name>SystemManagement</Name>
   22.25 +        <SimpleTypeEnforcementTypes>
   22.26 +          <Type>SystemManagement</Type>
   22.27 +          <Type>__UNLABELED__</Type>
   22.28 +        </SimpleTypeEnforcementTypes>
   22.29 +        <ChineseWallTypes>
   22.30 +          <Type/>
   22.31 +        </ChineseWallTypes>
   22.32 +      </VirtualMachineLabel>
   22.33 +      <VirtualMachineLabel>
   22.34 +        <Name>__UNLABELED__</Name>
   22.35 +        <SimpleTypeEnforcementTypes>
   22.36 +          <Type>__UNLABELED__</Type>
   22.37 +        </SimpleTypeEnforcementTypes>
   22.38 +        <ChineseWallTypes>
   22.39 +          <Type/>
   22.40 +        </ChineseWallTypes>
   22.41 +      </VirtualMachineLabel>
   22.42 +    </SubjectLabels>
   22.43 +  </SecurityLabelTemplate>
   22.44 +</SecurityPolicyDefinition>
    23.1 --- a/tools/security/xensec_ezpolicy	Sun Aug 12 12:19:13 2007 -0600
    23.2 +++ b/tools/security/xensec_ezpolicy	Sun Aug 12 14:50:02 2007 -0600
    23.3 @@ -36,6 +36,8 @@ conflict_bmp = None
    23.4  realm_icon = None
    23.5  workload_icon = None
    23.6  
    23.7 +ACM_LABEL_UNLABELED = '__UNLABELED__'
    23.8 +
    23.9  class orgTreeCtrl(wx.TreeCtrl):
   23.10  
   23.11      event = None
   23.12 @@ -870,7 +872,8 @@ class ezFrame(wx.Frame):
   23.13              self.realm_menu.Enable(self.ID_ORGDEL, True)
   23.14              self.realm_menu.Enable(self.ID_ORGEDT, True)
   23.15              self.realm_menu.Enable(self.ID_ORGADD, True)
   23.16 -            if len(self.orgs.GetSelections()) > 1:
   23.17 +            if len(self.orgs.GetSelections()) > 1 or \
   23.18 +               ACM_LABEL_UNLABELED == self.orgs.GetItemText(item):
   23.19                  self.realm_menu.Enable(self.ID_ORGEDT, False)
   23.20                  self.realm_menu.Enable(self.ID_ORGADD, False)
   23.21              self.PopupMenu(self.realm_menu)
   23.22 @@ -1622,6 +1625,8 @@ def main():
   23.23      app = ezApp(0)
   23.24      if len(sys.argv) in [2]:
   23.25          app.Load(sys.argv[1])
   23.26 +    else:
   23.27 +        dict2org({'orgs' : [[ACM_LABEL_UNLABELED,[]]], 'cons': []})
   23.28      app.MainLoop()
   23.29      print "Goodbye"
   23.30  
    24.1 --- a/tools/xenstat/libxenstat/src/xenstat.c	Sun Aug 12 12:19:13 2007 -0600
    24.2 +++ b/tools/xenstat/libxenstat/src/xenstat.c	Sun Aug 12 14:50:02 2007 -0600
    24.3 @@ -677,7 +677,7 @@ static void xenstat_prune_domain(xenstat
    24.4  	/* shift entries following specified entry up by one */
    24.5  	if (entry < node->num_domains) {
    24.6  		xenstat_domain *domain = &node->domains[entry];
    24.7 -		memmove(domain,domain+1,node->num_domains-entry);
    24.8 +		memmove(domain,domain+1,(node->num_domains - entry) * sizeof(xenstat_domain) );
    24.9  	}
   24.10  
   24.11  	/* zero out original last entry from node -- not
    25.1 --- a/tools/xenstore/utils.c	Sun Aug 12 12:19:13 2007 -0600
    25.2 +++ b/tools/xenstore/utils.c	Sun Aug 12 14:50:02 2007 -0600
    25.3 @@ -10,19 +10,18 @@
    25.4  #include <signal.h>
    25.5  #include "utils.h"
    25.6  
    25.7 -void xprintf(const char *fmt, ...)
    25.8 +static void default_xprintf(const char *fmt, ...)
    25.9  {
   25.10  	va_list args;
   25.11  
   25.12 -	if (!stderr)
   25.13 -		return; /* could trace()? */
   25.14 -
   25.15  	va_start(args, fmt);
   25.16  	vfprintf(stderr, fmt, args);
   25.17  	va_end(args);
   25.18  	fflush(stderr);
   25.19  }
   25.20  
   25.21 +void (*xprintf)(const char *fmt, ...) = default_xprintf;
   25.22 +
   25.23  void barf(const char *fmt, ...)
   25.24  {
   25.25  	char *str;
    26.1 --- a/tools/xenstore/utils.h	Sun Aug 12 12:19:13 2007 -0600
    26.2 +++ b/tools/xenstore/utils.h	Sun Aug 12 14:50:02 2007 -0600
    26.3 @@ -24,7 +24,7 @@ static inline bool strends(const char *a
    26.4  void barf(const char *fmt, ...) __attribute__((noreturn));
    26.5  void barf_perror(const char *fmt, ...) __attribute__((noreturn));
    26.6  
    26.7 -void xprintf(const char *fmt, ...);
    26.8 +void (*xprintf)(const char *fmt, ...);
    26.9  
   26.10  #define eprintf(_fmt, _args...) xprintf("[ERR] %s" _fmt, __FUNCTION__, ##_args)
   26.11  
    27.1 --- a/tools/xenstore/xenstored_core.c	Sun Aug 12 12:19:13 2007 -0600
    27.2 +++ b/tools/xenstore/xenstored_core.c	Sun Aug 12 14:50:02 2007 -0600
    27.3 @@ -1880,14 +1880,14 @@ int main(int argc, char *argv[])
    27.4  
    27.5  	/* close stdin/stdout now we're ready to accept connections */
    27.6  	if (dofork) {
    27.7 -		close(STDIN_FILENO);
    27.8 -		close(STDOUT_FILENO);
    27.9 -		close(STDERR_FILENO);
   27.10 -
   27.11 -		/* Get ourselves a nice xenstored crash if these are used. */
   27.12 -		stdin = NULL;
   27.13 -		stdout = NULL;
   27.14 -		stderr = NULL;
   27.15 +		int devnull = open("/dev/null", O_RDWR);
   27.16 +		if (devnull == -1)
   27.17 +			barf_perror("Could not open /dev/null\n");
   27.18 +		close(STDIN_FILENO);  dup2(STDIN_FILENO, devnull);
   27.19 +		close(STDOUT_FILENO); dup2(STDOUT_FILENO, devnull);
   27.20 +		close(STDERR_FILENO); dup2(STDERR_FILENO, devnull);
   27.21 +		close(devnull);
   27.22 +		xprintf = trace;
   27.23  	}
   27.24  
   27.25  	signal(SIGHUP, trigger_reopen_log);
    28.1 --- a/unmodified_drivers/linux-2.6/platform-pci/machine_reboot.c	Sun Aug 12 12:19:13 2007 -0600
    28.2 +++ b/unmodified_drivers/linux-2.6/platform-pci/machine_reboot.c	Sun Aug 12 14:50:02 2007 -0600
    28.3 @@ -12,6 +12,12 @@ struct ap_suspend_info {
    28.4  };
    28.5  
    28.6  /*
    28.7 + * Use a rwlock to protect the hypercall page from being executed in AP context
    28.8 + * while the BSP is re-initializing it after restore.
    28.9 + */
   28.10 +static DEFINE_RWLOCK(suspend_lock);
   28.11 +
   28.12 +/*
   28.13   * Spinning prevents, for example, APs touching grant table entries while
   28.14   * the shared grant table is not mapped into the address space imemdiately
   28.15   * after resume.
   28.16 @@ -27,7 +33,9 @@ static void ap_suspend(void *_info)
   28.17  
   28.18  	while (info->do_spin) {
   28.19  		cpu_relax();
   28.20 +		read_lock(&suspend_lock);
   28.21  		HYPERVISOR_yield();
   28.22 +		read_unlock(&suspend_lock);
   28.23  	}
   28.24  
   28.25  	mb();
   28.26 @@ -43,7 +51,9 @@ static int bp_suspend(void)
   28.27  	suspend_cancelled = HYPERVISOR_shutdown(SHUTDOWN_suspend);
   28.28  
   28.29  	if (!suspend_cancelled) {
   28.30 +		write_lock(&suspend_lock);
   28.31  		platform_pci_resume();
   28.32 +		write_unlock(&suspend_lock);
   28.33  		gnttab_resume();
   28.34  		irq_resume();
   28.35  	}
    29.1 --- a/xen/acm/acm_chinesewall_hooks.c	Sun Aug 12 12:19:13 2007 -0600
    29.2 +++ b/xen/acm/acm_chinesewall_hooks.c	Sun Aug 12 14:50:02 2007 -0600
    29.3 @@ -93,6 +93,7 @@ int acm_init_chwall_policy(void)
    29.4      return ACM_OK;
    29.5  }
    29.6  
    29.7 +
    29.8  static int chwall_init_domain_ssid(void **chwall_ssid, ssidref_t ssidref)
    29.9  {
   29.10      struct chwall_ssid *chwall_ssidp = xmalloc(struct chwall_ssid);
   29.11 @@ -104,10 +105,10 @@ static int chwall_init_domain_ssid(void 
   29.12      chwall_ssidp->chwall_ssidref =
   29.13          GET_SSIDREF(ACM_CHINESE_WALL_POLICY, ssidref);
   29.14  
   29.15 -    if ( (chwall_ssidp->chwall_ssidref >= chwall_bin_pol.max_ssidrefs)
   29.16 -        || (chwall_ssidp->chwall_ssidref == ACM_DEFAULT_LOCAL_SSID) )
   29.17 +    if ( chwall_ssidp->chwall_ssidref >= chwall_bin_pol.max_ssidrefs )
   29.18      {
   29.19 -        printkd("%s: ERROR chwall_ssidref(%x) undefined (>max) or unset (0).\n",
   29.20 +        printkd("%s: ERROR chwall_ssidref(%x) undefined (>max) or unset "
   29.21 +                "(0).\n",
   29.22                  __func__, chwall_ssidp->chwall_ssidref);
   29.23          xfree(chwall_ssidp);
   29.24          return ACM_INIT_SSID_ERROR;
   29.25 @@ -118,6 +119,7 @@ static int chwall_init_domain_ssid(void 
   29.26      return ACM_OK;
   29.27  }
   29.28  
   29.29 +
   29.30  static void chwall_free_domain_ssid(void *chwall_ssid)
   29.31  {
   29.32      xfree(chwall_ssid);
   29.33 @@ -205,7 +207,9 @@ chwall_init_state(struct acm_chwall_poli
   29.34  
   29.35      read_lock(&ssid_list_rwlock);
   29.36  
   29.37 -    /* go through all domains and adjust policy as if this domain was started now */
   29.38 +    /* go through all domains and adjust policy as if this domain was
   29.39 +     * started now
   29.40 +     */
   29.41      for_each_acmssid( rawssid )
   29.42      {
   29.43          chwall_ssid =
   29.44 @@ -220,8 +224,8 @@ chwall_init_state(struct acm_chwall_poli
   29.45  
   29.46          /* b) check for conflict */
   29.47          for ( i = 0; i < chwall_buf->chwall_max_types; i++ )
   29.48 -            if (conflict_aggregate_set[i] &&
   29.49 -                ssidrefs[chwall_ssidref * chwall_buf->chwall_max_types + i])
   29.50 +            if ( conflict_aggregate_set[i] &&
   29.51 +                 ssidrefs[chwall_ssidref * chwall_buf->chwall_max_types + i] )
   29.52              {
   29.53                  printk("%s: CHINESE WALL CONFLICT in type %02x.\n",
   29.54                         __func__, i);
   29.55 @@ -231,37 +235,46 @@ chwall_init_state(struct acm_chwall_poli
   29.56  
   29.57                  goto out;
   29.58              }
   29.59 +
   29.60          /* set violation and break out of the loop */
   29.61 -        /* c) adapt conflict aggregate set for this domain (notice conflicts) */
   29.62 +        /* c) adapt conflict aggregate set for this domain
   29.63 +         *    (notice conflicts)
   29.64 +         */
   29.65          for ( i = 0; i < chwall_buf->chwall_max_conflictsets; i++ )
   29.66          {
   29.67              int common = 0;
   29.68              /* check if conflict_set_i and ssidref have common types */
   29.69              for ( j = 0; j < chwall_buf->chwall_max_types; j++ )
   29.70 -                if (conflict_sets[i * chwall_buf->chwall_max_types + j] &&
   29.71 -                    ssidrefs[chwall_ssidref *
   29.72 -                            chwall_buf->chwall_max_types + j])
   29.73 +                if ( conflict_sets[i * chwall_buf->chwall_max_types + j] &&
   29.74 +                     ssidrefs[chwall_ssidref *
   29.75 +                              chwall_buf->chwall_max_types + j] )
   29.76                  {
   29.77                      common = 1;
   29.78                      break;
   29.79                  }
   29.80 -            if (common == 0)
   29.81 +
   29.82 +            if ( common == 0 )
   29.83                  continue;       /* try next conflict set */
   29.84 -            /* now add types of the conflict set to conflict_aggregate_set (except types in chwall_ssidref) */
   29.85 +
   29.86 +            /* now add types of the conflict set to conflict_aggregate_set
   29.87 +             * (except types in chwall_ssidref)
   29.88 +             */
   29.89              for ( j = 0; j < chwall_buf->chwall_max_types; j++ )
   29.90 -                if (conflict_sets[i * chwall_buf->chwall_max_types + j] &&
   29.91 -                    !ssidrefs[chwall_ssidref *
   29.92 -                             chwall_buf->chwall_max_types + j])
   29.93 +                if ( conflict_sets[i * chwall_buf->chwall_max_types + j] &&
   29.94 +                     !ssidrefs[chwall_ssidref *
   29.95 +                               chwall_buf->chwall_max_types + j] )
   29.96                      conflict_aggregate_set[j]++;
   29.97          }
   29.98      }
   29.99   out:
  29.100      read_unlock(&ssid_list_rwlock);
  29.101      return violation;
  29.102 -    /* returning "violation != 0" means that the currently running set of domains would
  29.103 -     * not be possible if the new policy had been enforced before starting them; for chinese
  29.104 -     * wall, this means that the new policy includes at least one conflict set of which
  29.105 -     * more than one type is currently running */
  29.106 +    /* returning "violation != 0" means that the currently running set of
  29.107 +     * domains would not be possible if the new policy had been enforced
  29.108 +     * before starting them; for chinese wall, this means that the new
  29.109 +     * policy includes at least one conflict set of which more than one
  29.110 +     * type is currently running
  29.111 +     */
  29.112  }
  29.113  
  29.114  
  29.115 @@ -348,8 +361,10 @@ static int _chwall_update_policy(u8 *buf
  29.116      memset(conflict_aggregate_set, 0,
  29.117             sizeof(domaintype_t) * chwall_buf->chwall_max_types);
  29.118  
  29.119 -    /* 3. now re-calculate the state for the new policy based on running domains;
  29.120 -     *    this can fail if new policy is conflicting with running domains */
  29.121 +    /* 3. now re-calculate the state for the new policy based on
  29.122 +     *    running domains; this can fail if new policy is conflicting
  29.123 +     *    with running domains
  29.124 +     */
  29.125      if ( chwall_init_state(chwall_buf, ssids,
  29.126                             conflict_sets, running_types,
  29.127                             conflict_aggregate_set,
  29.128 @@ -483,31 +498,27 @@ static int _chwall_pre_domain_create(voi
  29.129  
  29.130      chwall_ssidref = GET_SSIDREF(ACM_CHINESE_WALL_POLICY, ssidref);
  29.131  
  29.132 -    if (chwall_ssidref == ACM_DEFAULT_LOCAL_SSID)
  29.133 -    {
  29.134 -        printk("%s: ERROR CHWALL SSID is NOT SET but policy enforced.\n",
  29.135 -               __func__);
  29.136 -        return ACM_ACCESS_DENIED;       /* catching and indicating config error */
  29.137 -    }
  29.138 -
  29.139 -    if (chwall_ssidref >= chwall_bin_pol.max_ssidrefs)
  29.140 +    if ( chwall_ssidref >= chwall_bin_pol.max_ssidrefs )
  29.141      {
  29.142          printk("%s: ERROR chwall_ssidref > max(%x).\n",
  29.143                 __func__, chwall_bin_pol.max_ssidrefs - 1);
  29.144          return ACM_ACCESS_DENIED;
  29.145      }
  29.146 +
  29.147      /* A: chinese wall check for conflicts */
  29.148 -    for (i = 0; i < chwall_bin_pol.max_types; i++)
  29.149 -        if (chwall_bin_pol.conflict_aggregate_set[i] &&
  29.150 -            chwall_bin_pol.ssidrefs[chwall_ssidref *
  29.151 -                                   chwall_bin_pol.max_types + i])
  29.152 +    for ( i = 0; i < chwall_bin_pol.max_types; i++ )
  29.153 +        if ( chwall_bin_pol.conflict_aggregate_set[i] &&
  29.154 +             chwall_bin_pol.ssidrefs[chwall_ssidref *
  29.155 +                                     chwall_bin_pol.max_types + i] )
  29.156          {
  29.157              printk("%s: CHINESE WALL CONFLICT in type %02x.\n", __func__, i);
  29.158              return ACM_ACCESS_DENIED;
  29.159          }
  29.160  
  29.161      /* B: chinese wall conflict set adjustment (so that other
  29.162 -     *      other domains simultaneously created are evaluated against this new set)*/
  29.163 +     *    other domains simultaneously created are evaluated against
  29.164 +     *    this new set)
  29.165 +     */
  29.166      for ( i = 0; i < chwall_bin_pol.max_conflictsets; i++ )
  29.167      {
  29.168          int common = 0;
  29.169 @@ -521,7 +532,7 @@ static int _chwall_pre_domain_create(voi
  29.170                  common = 1;
  29.171                  break;
  29.172              }
  29.173 -        if (common == 0)
  29.174 +        if ( common == 0 )
  29.175              continue;           /* try next conflict set */
  29.176          /* now add types of the conflict set to conflict_aggregate_set (except types in chwall_ssidref) */
  29.177          for ( j = 0; j < chwall_bin_pol.max_types; j++ )
  29.178 @@ -571,9 +582,15 @@ static void _chwall_post_domain_create(d
  29.179                  common = 1;
  29.180                  break;
  29.181              }
  29.182 +
  29.183          if ( common == 0 )
  29.184 -            continue;           /* try next conflict set */
  29.185 -        /* now add types of the conflict set to conflict_aggregate_set (except types in chwall_ssidref) */
  29.186 +        {
  29.187 +            /* try next conflict set */
  29.188 +            continue;
  29.189 +        }
  29.190 +
  29.191 +        /* now add types of the conflict set to conflict_aggregate_set
  29.192 +           (except types in chwall_ssidref) */
  29.193          for ( j = 0; j < chwall_bin_pol.max_types; j++ )
  29.194              if ( chwall_bin_pol.
  29.195                   conflict_sets[i * chwall_bin_pol.max_types + j]
  29.196 @@ -638,9 +655,15 @@ static void chwall_domain_destroy(void *
  29.197                  common = 1;
  29.198                  break;
  29.199              }
  29.200 -        if (common == 0)
  29.201 -            continue;           /* try next conflict set, this one does not include any type of chwall_ssidref */
  29.202 -        /* now add types of the conflict set to conflict_aggregate_set (except types in chwall_ssidref) */
  29.203 +        if ( common == 0 )
  29.204 +        {
  29.205 +            /* try next conflict set, this one does not include
  29.206 +               any type of chwall_ssidref */
  29.207 +            continue;
  29.208 +        }
  29.209 +
  29.210 +        /* now add types of the conflict set to conflict_aggregate_set
  29.211 +           (except types in chwall_ssidref) */
  29.212          for ( j = 0; j < chwall_bin_pol.max_types; j++ )
  29.213              if ( chwall_bin_pol.
  29.214                   conflict_sets[i * chwall_bin_pol.max_types + j]
    30.1 --- a/xen/acm/acm_policy.c	Sun Aug 12 12:19:13 2007 -0600
    30.2 +++ b/xen/acm/acm_policy.c	Sun Aug 12 14:50:02 2007 -0600
    30.3 @@ -710,10 +710,10 @@ acm_change_policy(struct acm_change_poli
    30.4          goto acm_chg_policy_exit;
    30.5      }
    30.6  
    30.7 -    if ( copy_from_guest(dels.array,
    30.8 +    if ( copy_from_guest((u8 *)dels.array,
    30.9                           chgpolicy->del_array,
   30.10                           chgpolicy->delarray_size) ||
   30.11 -         copy_from_guest(ssidmap.array,
   30.12 +         copy_from_guest((u8 *)ssidmap.array,
   30.13                           chgpolicy->chg_array,
   30.14                           chgpolicy->chgarray_size) ||
   30.15           copy_from_guest(binpolicy,
   30.16 @@ -844,7 +844,7 @@ acm_relabel_domains(struct acm_relabel_d
   30.17          memset(errors.array, 0x0, sizeof(uint32_t) * errors.num_items);
   30.18      }
   30.19  
   30.20 -    if ( copy_from_guest(relabels.array,
   30.21 +    if ( copy_from_guest((u8 *)relabels.array,
   30.22                           relabel->relabel_map,
   30.23                           relabel->relabel_map_size) )
   30.24      {
    31.1 --- a/xen/acm/acm_simple_type_enforcement_hooks.c	Sun Aug 12 12:19:13 2007 -0600
    31.2 +++ b/xen/acm/acm_simple_type_enforcement_hooks.c	Sun Aug 12 14:50:02 2007 -0600
    31.3 @@ -408,7 +408,7 @@ static int
    31.4          ste_bin_pol.max_ssidrefs = ste_buf->ste_max_ssidrefs;
    31.5          ste_bin_pol.ssidrefs = (domaintype_t *)ssidrefsbuf;
    31.6  
    31.7 -        if ( ste_init_state(NULL) )
    31.8 +        if ( ste_init_state(errors) )
    31.9          {
   31.10              /* new policy conflicts with sharing of running domains */
   31.11              printk("%s: New policy conflicts with running domains. "
    32.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    32.2 +++ b/xen/arch/powerpc/multiboot2.c	Sun Aug 12 14:50:02 2007 -0600
    32.3 @@ -0,0 +1,67 @@
    32.4 +/*
    32.5 + * This program is free software; you can redistribute it and/or
    32.6 + * modify it under the terms of the GNU General Public License as
    32.7 + * published by the Free Software Foundation; either version 2 of the
    32.8 + * License, or (at your option) any later version.
    32.9 + *
   32.10 + * This program is distributed in the hope that it will be useful,
   32.11 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
   32.12 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   32.13 + * GNU General Public License for more details.
   32.14 + *
   32.15 + * You should have received a copy of the GNU General Public License
   32.16 + * along with this program; if not, write to the Free Software
   32.17 + * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
   32.18 + *
   32.19 + * Copyright IBM Corp. 2006, 2007
   32.20 + *
   32.21 + * Authors: Hollis Blanchard <hollisb@us.ibm.com>
   32.22 + */
   32.23 +
   32.24 +#include <xen/config.h>
   32.25 +#include <xen/lib.h>
   32.26 +#include <xen/multiboot2.h>
   32.27 +#include <asm/boot.h>
   32.28 +#include <asm/init.h>
   32.29 +
   32.30 +static struct mb2_tag_module *mb2_tag_mod_find(struct mb2_tag_header *tags,
   32.31 +                                                const char *type)
   32.32 +{
   32.33 +    struct mb2_tag_header *tag;
   32.34 +
   32.35 +    for_each_tag(tag, tags) {
   32.36 +        if (tag->key == MB2_TAG_MODULE) {
   32.37 +            struct mb2_tag_module *mod = (struct mb2_tag_module *)tag;
   32.38 +            if (!strcmp((char *)mod->type, type))
   32.39 +                return mod;
   32.40 +        }
   32.41 +    }
   32.42 +    return NULL;
   32.43 +}
   32.44 +
   32.45 +void parse_multiboot(ulong tags_addr)
   32.46 +{
   32.47 +    struct mb2_tag_header *tags = (struct mb2_tag_header *)tags_addr;
   32.48 +    struct mb2_tag_module *mod;
   32.49 +
   32.50 +    if (tags->key != MB2_TAG_START)
   32.51 +        return;
   32.52 +
   32.53 +    mod = mb2_tag_mod_find(tags, "kernel");
   32.54 +    if (mod) {
   32.55 +        xen_cmdline = (char *)mod->cmdline;
   32.56 +    }
   32.57 +
   32.58 +    mod = mb2_tag_mod_find(tags, "dom0");
   32.59 +    if (mod) {
   32.60 +        dom0_addr = mod->addr;
   32.61 +        dom0_len = mod->size;
   32.62 +        dom0_cmdline = (char *)mod->cmdline;
   32.63 +    }
   32.64 +
   32.65 +    mod = mb2_tag_mod_find(tags, "initrd");
   32.66 +    if (mod) {
   32.67 +        initrd_start = mod->addr;
   32.68 +        initrd_len = mod->size;
   32.69 +    }
   32.70 +}
    33.1 --- a/xen/arch/x86/domain_build.c	Sun Aug 12 12:19:13 2007 -0600
    33.2 +++ b/xen/arch/x86/domain_build.c	Sun Aug 12 14:50:02 2007 -0600
    33.3 @@ -316,9 +316,9 @@ int __init construct_dom0(
    33.4             parms.pae       ? ", PAE"  : "",
    33.5             elf_msb(&elf)   ? "msb"    : "lsb",
    33.6             elf.pstart, elf.pend);
    33.7 -    if ( parms.bsd_symtab )
    33.8 +    if ( elf.bsd_symtab_pstart )
    33.9          printk(" Dom0 symbol map 0x%" PRIx64 " -> 0x%" PRIx64 "\n",
   33.10 -               elf.sstart, elf.send);
   33.11 +               elf.bsd_symtab_pstart, elf.bsd_symtab_pend);
   33.12  
   33.13      if ( !compatible )
   33.14      {
   33.15 @@ -388,7 +388,7 @@ int __init construct_dom0(
   33.16      v_start          = parms.virt_base;
   33.17      vkern_start      = parms.virt_kstart;
   33.18      vkern_end        = parms.virt_kend;
   33.19 -    vinitrd_start    = round_pgup(parms.virt_end);
   33.20 +    vinitrd_start    = round_pgup(vkern_end);
   33.21      vinitrd_end      = vinitrd_start + initrd_len;
   33.22      vphysmap_start   = round_pgup(vinitrd_end);
   33.23      vphysmap_end     = vphysmap_start + (nr_pages * (!is_pv_32on64_domain(d) ?
   33.24 @@ -798,7 +798,7 @@ int __init construct_dom0(
   33.25  
   33.26      /* Copy the OS image and free temporary buffer. */
   33.27      elf.dest = (void*)vkern_start;
   33.28 -    elf_xen_dom_load_binary(&elf, &parms);
   33.29 +    elf_load_binary(&elf);
   33.30  
   33.31      if ( UNSET_ADDR != parms.virt_hypercall )
   33.32      {
    34.1 --- a/xen/arch/x86/genapic/Makefile	Sun Aug 12 12:19:13 2007 -0600
    34.2 +++ b/xen/arch/x86/genapic/Makefile	Sun Aug 12 14:50:02 2007 -0600
    34.3 @@ -1,7 +1,5 @@
    34.4  obj-y += bigsmp.o
    34.5  obj-y += default.o
    34.6  obj-y += delivery.o
    34.7 -obj-y += es7000.o
    34.8 -obj-y += es7000plat.o
    34.9  obj-y += probe.o
   34.10  obj-y += summit.o
    35.1 --- a/xen/arch/x86/genapic/bigsmp.c	Sun Aug 12 12:19:13 2007 -0600
    35.2 +++ b/xen/arch/x86/genapic/bigsmp.c	Sun Aug 12 14:50:02 2007 -0600
    35.3 @@ -13,7 +13,7 @@
    35.4  
    35.5  static int dmi_bigsmp; /* can be set by dmi scanners */
    35.6  
    35.7 -static __init int hp_ht_bigsmp(struct dmi_system_id *d)
    35.8 +static __init int force_bigsmp(struct dmi_system_id *d)
    35.9  {
   35.10  	printk(KERN_NOTICE "%s detected: force use of apic=bigsmp\n", d->ident);
   35.11  	dmi_bigsmp = 1;
   35.12 @@ -22,15 +22,19 @@ static __init int hp_ht_bigsmp(struct dm
   35.13  
   35.14  
   35.15  static struct dmi_system_id __initdata bigsmp_dmi_table[] = {
   35.16 -	{ hp_ht_bigsmp, "HP ProLiant DL760 G2", {
   35.17 +	{ force_bigsmp, "HP ProLiant DL760 G2", {
   35.18  		DMI_MATCH(DMI_BIOS_VENDOR, "HP"),
   35.19  		DMI_MATCH(DMI_BIOS_VERSION, "P44-"),
   35.20  	}},
   35.21  
   35.22 -	{ hp_ht_bigsmp, "HP ProLiant DL740", {
   35.23 +	{ force_bigsmp, "HP ProLiant DL740", {
   35.24  		DMI_MATCH(DMI_BIOS_VENDOR, "HP"),
   35.25  		DMI_MATCH(DMI_BIOS_VERSION, "P47-"),
   35.26  	 }},
   35.27 +	{ force_bigsmp, "UNISYS ES7000-ONE", {
   35.28 +		DMI_MATCH(DMI_PRODUCT_NAME, "ES7000-ONE")
   35.29 +	 }},
   35.30 +	
   35.31  	 { }
   35.32  };
   35.33  
    36.1 --- a/xen/arch/x86/genapic/es7000.c	Sun Aug 12 12:19:13 2007 -0600
    36.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    36.3 @@ -1,27 +0,0 @@
    36.4 -/*
    36.5 - * APIC driver for the Unisys ES7000 chipset.
    36.6 - */
    36.7 -#include <xen/config.h>
    36.8 -#include <xen/cpumask.h>
    36.9 -#include <asm/current.h>
   36.10 -#include <asm/mpspec.h>
   36.11 -#include <asm/genapic.h>
   36.12 -#include <asm/fixmap.h>
   36.13 -#include <asm/apicdef.h>
   36.14 -#include <asm/atomic.h>
   36.15 -#include <xen/kernel.h>
   36.16 -#include <xen/string.h>
   36.17 -#include <xen/smp.h>
   36.18 -#include <xen/init.h>
   36.19 -#include <asm/mach-es7000/mach_mpparse.h>
   36.20 -
   36.21 -static __init int probe_es7000(void)
   36.22 -{
   36.23 -	/* probed later in mptable/ACPI hooks */
   36.24 -	return 0;
   36.25 -}
   36.26 -
   36.27 -struct genapic apic_es7000 = {
   36.28 -	APIC_INIT("es7000", probe_es7000),
   36.29 -	GENAPIC_PHYS
   36.30 -};
    37.1 --- a/xen/arch/x86/genapic/es7000plat.c	Sun Aug 12 12:19:13 2007 -0600
    37.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    37.3 @@ -1,141 +0,0 @@
    37.4 -/*
    37.5 - * Written by: Garry Forsgren, Unisys Corporation
    37.6 - *             Natalie Protasevich, Unisys Corporation
    37.7 - * Modified by: Raj Subrahmanian <raj.subrahmanian@unisys.com> Unisys Corp.
    37.8 - * This file contains the code to configure and interface
    37.9 - * with Unisys ES7000 series hardware system manager.
   37.10 - *
   37.11 - * Copyright (c) 2003 Unisys Corporation.  All Rights Reserved.
   37.12 - *
   37.13 - * This program is free software; you can redistribute it and/or modify it
   37.14 - * under the terms of version 2 of the GNU General Public License as
   37.15 - * published by the Free Software Foundation.
   37.16 - *
   37.17 - * This program is distributed in the hope that it would be useful, but
   37.18 - * WITHOUT ANY WARRANTY; without even the implied warranty of
   37.19 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   37.20 - *
   37.21 - * You should have received a copy of the GNU General Public License along
   37.22 - * with this program; if not, write the Free Software Foundation, Inc., 59
   37.23 - * Temple Place - Suite 330, Boston MA 02111-1307, USA.
   37.24 - *
   37.25 - * Contact information: Unisys Corporation, Township Line & Union Meeting
   37.26 - * Roads-A, Unisys Way, Blue Bell, Pennsylvania, 19424, or:
   37.27 - *
   37.28 - * http://www.unisys.com
   37.29 - */
   37.30 -
   37.31 -#include <xen/config.h>
   37.32 -#include <xen/types.h>
   37.33 -#include <xen/kernel.h>
   37.34 -#include <xen/smp.h>
   37.35 -#include <xen/string.h>
   37.36 -#include <xen/spinlock.h>
   37.37 -#include <xen/errno.h>
   37.38 -#include <xen/init.h>
   37.39 -#include <xen/acpi.h>
   37.40 -#include <asm/io.h>
   37.41 -#include <asm/smp.h>
   37.42 -#include <asm/apicdef.h>
   37.43 -
   37.44 -#define	MIP_REG			1
   37.45 -#define	MIP_PSAI_REG		4
   37.46 -
   37.47 -struct acpi_table_sdt {
   37.48 -	unsigned long pa;
   37.49 -	unsigned long count;
   37.50 -	struct {
   37.51 -		unsigned long pa;
   37.52 -		enum acpi_table_id id;
   37.53 -		unsigned long size;
   37.54 -	}	entry[50];
   37.55 -};
   37.56 -
   37.57 -struct oem_table {
   37.58 -	struct acpi_table_header Header;
   37.59 -	u32 OEMTableAddr;
   37.60 -	u32 OEMTableSize;
   37.61 -};
   37.62 -
   37.63 -int __init
   37.64 -parse_unisys_oem(char *oemptr)
   37.65 -{
   37.66 -	int                     i;
   37.67 -	int 			success = 0;
   37.68 -	unsigned char           type, size;
   37.69 -	char                    *tp = NULL;
   37.70 -
   37.71 -	tp = oemptr;
   37.72 -
   37.73 -	tp += 8;
   37.74 -
   37.75 -	for (i=0; i <= 6; i++) {
   37.76 -		type = *tp++;
   37.77 -		size = *tp++;
   37.78 -		tp -= 2;
   37.79 -		switch (type) {
   37.80 -		case MIP_REG:
   37.81 -		case MIP_PSAI_REG:
   37.82 -			success++;
   37.83 -			break;
   37.84 -		default:
   37.85 -			break;
   37.86 -		}
   37.87 -		tp += size;
   37.88 -	}
   37.89 -
   37.90 -	return (success >= 2);
   37.91 -}
   37.92 -
   37.93 -int __init
   37.94 -find_unisys_acpi_oem_table(unsigned long *oem_addr)
   37.95 -{
   37.96 -	struct acpi_table_rsdp		*rsdp = NULL;
   37.97 -	unsigned long			rsdp_phys = 0;
   37.98 -	struct acpi_table_header 	*header = NULL;
   37.99 -	int				i;
  37.100 -	struct acpi_table_sdt		sdt = { 0 }; /* initialise sdt.count */
  37.101 -
  37.102 -	rsdp_phys = acpi_find_rsdp();
  37.103 -	rsdp = __va(rsdp_phys);
  37.104 -	if (rsdp->rsdt_address) {
  37.105 -		struct acpi_table_rsdt	*mapped_rsdt = NULL;
  37.106 -		sdt.pa = rsdp->rsdt_address;
  37.107 -
  37.108 -		header = (struct acpi_table_header *)
  37.109 -			__acpi_map_table(sdt.pa, sizeof(struct acpi_table_header));
  37.110 -		if (!header)
  37.111 -			return -ENODEV;
  37.112 -
  37.113 -		sdt.count = (header->length - sizeof(struct acpi_table_header)) >> 3;
  37.114 -		mapped_rsdt = (struct acpi_table_rsdt *)
  37.115 -			__acpi_map_table(sdt.pa, header->length);
  37.116 -		if (!mapped_rsdt)
  37.117 -			return -ENODEV;
  37.118 -
  37.119 -		header = &mapped_rsdt->header;
  37.120 -
  37.121 -		for (i = 0; i < sdt.count; i++)
  37.122 -			sdt.entry[i].pa = (unsigned long) mapped_rsdt->entry[i];
  37.123 -	};
  37.124 -	for (i = 0; i < sdt.count; i++) {
  37.125 -
  37.126 -		header = (struct acpi_table_header *)
  37.127 -			__acpi_map_table(sdt.entry[i].pa,
  37.128 -				sizeof(struct acpi_table_header));
  37.129 -		if (!header)
  37.130 -			continue;
  37.131 -		if (!strncmp((char *) &header->signature, "OEM1", 4)) {
  37.132 -			if (!strncmp((char *) &header->oem_id, "UNISYS", 6)) {
  37.133 -				void *addr;
  37.134 -				struct oem_table *t;
  37.135 -				acpi_table_print(header, sdt.entry[i].pa);
  37.136 -				t = (struct oem_table *) __acpi_map_table(sdt.entry[i].pa, header->length);
  37.137 -				addr = (void *) __acpi_map_table(t->OEMTableAddr, t->OEMTableSize);
  37.138 -				*oem_addr = (unsigned long) addr;
  37.139 -				return 0;
  37.140 -			}
  37.141 -		}
  37.142 -	}
  37.143 -	return -1;
  37.144 -}
    38.1 --- a/xen/arch/x86/genapic/probe.c	Sun Aug 12 12:19:13 2007 -0600
    38.2 +++ b/xen/arch/x86/genapic/probe.c	Sun Aug 12 14:50:02 2007 -0600
    38.3 @@ -16,7 +16,6 @@
    38.4  
    38.5  extern struct genapic apic_summit;
    38.6  extern struct genapic apic_bigsmp;
    38.7 -extern struct genapic apic_es7000;
    38.8  extern struct genapic apic_default;
    38.9  
   38.10  struct genapic *genapic;
   38.11 @@ -24,7 +23,6 @@ struct genapic *genapic;
   38.12  struct genapic *apic_probe[] __initdata = { 
   38.13  	&apic_summit,
   38.14  	&apic_bigsmp, 
   38.15 -	&apic_es7000,
   38.16  	&apic_default,	/* must be last */
   38.17  	NULL,
   38.18  };
    39.1 --- a/xen/arch/x86/hvm/irq.c	Sun Aug 12 12:19:13 2007 -0600
    39.2 +++ b/xen/arch/x86/hvm/irq.c	Sun Aug 12 14:50:02 2007 -0600
    39.3 @@ -395,9 +395,33 @@ static void irq_dump(struct domain *d)
    39.4  static int irq_save_pci(struct domain *d, hvm_domain_context_t *h)
    39.5  {
    39.6      struct hvm_irq *hvm_irq = &d->arch.hvm_domain.irq;
    39.7 +    unsigned int asserted, pdev, pintx;
    39.8 +    int rc;
    39.9 +
   39.10 +    spin_lock(&d->arch.hvm_domain.irq_lock);
   39.11 +
   39.12 +    pdev  = hvm_irq->callback_via.pci.dev;
   39.13 +    pintx = hvm_irq->callback_via.pci.intx;
   39.14 +    asserted = (hvm_irq->callback_via_asserted &&
   39.15 +                (hvm_irq->callback_via_type == HVMIRQ_callback_pci_intx));
   39.16 +
   39.17 +    /*
   39.18 +     * Deassert virtual interrupt via PCI INTx line. The virtual interrupt
   39.19 +     * status is not save/restored, so the INTx line must be deasserted in
   39.20 +     * the restore context.
   39.21 +     */
   39.22 +    if ( asserted )
   39.23 +        __hvm_pci_intx_deassert(d, pdev, pintx);
   39.24  
   39.25      /* Save PCI IRQ lines */
   39.26 -    return ( hvm_save_entry(PCI_IRQ, 0, h, &hvm_irq->pci_intx) );
   39.27 +    rc = hvm_save_entry(PCI_IRQ, 0, h, &hvm_irq->pci_intx);
   39.28 +
   39.29 +    if ( asserted )
   39.30 +        __hvm_pci_intx_assert(d, pdev, pintx);    
   39.31 +
   39.32 +    spin_unlock(&d->arch.hvm_domain.irq_lock);
   39.33 +
   39.34 +    return rc;
   39.35  }
   39.36  
   39.37  static int irq_save_isa(struct domain *d, hvm_domain_context_t *h)
    40.1 --- a/xen/arch/x86/hvm/svm/svm.c	Sun Aug 12 12:19:13 2007 -0600
    40.2 +++ b/xen/arch/x86/hvm/svm/svm.c	Sun Aug 12 14:50:02 2007 -0600
    40.3 @@ -2159,6 +2159,7 @@ static void svm_do_msr_access(
    40.4          case MSR_K8_MC2_STATUS:
    40.5          case MSR_K8_MC3_STATUS:
    40.6          case MSR_K8_MC4_STATUS:
    40.7 +        case MSR_K8_MC5_STATUS:
    40.8              /* No point in letting the guest see real MCEs */
    40.9              msr_content = 0;
   40.10              break;
    41.1 --- a/xen/arch/x86/hvm/vmx/vmx.c	Sun Aug 12 12:19:13 2007 -0600
    41.2 +++ b/xen/arch/x86/hvm/vmx/vmx.c	Sun Aug 12 14:50:02 2007 -0600
    41.3 @@ -2596,6 +2596,7 @@ static int vmx_do_msr_read(struct cpu_us
    41.4      case MSR_K8_MC2_STATUS:
    41.5      case MSR_K8_MC3_STATUS:
    41.6      case MSR_K8_MC4_STATUS:
    41.7 +    case MSR_K8_MC5_STATUS:
    41.8          /* No point in letting the guest see real MCEs */
    41.9          msr_content = 0;
   41.10          break;
    42.1 --- a/xen/arch/x86/mm/hap/guest_walk.c	Sun Aug 12 12:19:13 2007 -0600
    42.2 +++ b/xen/arch/x86/mm/hap/guest_walk.c	Sun Aug 12 14:50:02 2007 -0600
    42.3 @@ -84,7 +84,7 @@ unsigned long hap_gva_to_gfn(GUEST_PAGIN
    42.4          mfn = get_mfn_from_gpfn(gpfn);
    42.5          if ( mfn == INVALID_MFN )
    42.6          {
    42.7 -            HAP_PRINTK("bad pfn=0x%lx from gva=0x%lx at lev%d\n", gpfn, gva, 
    42.8 +            HAP_PRINTK("bad pfn=0x%lx from gva=0x%lx at lev%d\n", gpfn, gva,
    42.9                         lev);
   42.10              success = 0;
   42.11              break;
    43.1 --- a/xen/arch/x86/mm/hap/hap.c	Sun Aug 12 12:19:13 2007 -0600
    43.2 +++ b/xen/arch/x86/mm/hap/hap.c	Sun Aug 12 14:50:02 2007 -0600
    43.3 @@ -73,7 +73,7 @@ int hap_disable_log_dirty(struct domain 
    43.4      hap_unlock(d);
    43.5  
    43.6      /* set l1e entries of P2M table with normal mode */
    43.7 -    p2m_set_flags_global(d, __PAGE_HYPERVISOR|_PAGE_USER);    
    43.8 +    p2m_set_flags_global(d, __PAGE_HYPERVISOR|_PAGE_USER);
    43.9      return 0;
   43.10  }
   43.11  
   43.12 @@ -111,7 +111,7 @@ static struct page_info *hap_alloc(struc
   43.13  
   43.14  static void hap_free(struct domain *d, mfn_t mfn)
   43.15  {
   43.16 -    struct page_info *pg = mfn_to_page(mfn); 
   43.17 +    struct page_info *pg = mfn_to_page(mfn);
   43.18  
   43.19      ASSERT(hap_locked_by_me(d));
   43.20  
   43.21 @@ -128,7 +128,7 @@ static struct page_info *hap_alloc_p2m_p
   43.22  
   43.23  #if CONFIG_PAGING_LEVELS == 3
   43.24      /* Under PAE mode, top-level P2M table should be allocated below 4GB space
   43.25 -     * because the size of h_cr3 is only 32-bit. We use alloc_domheap_pages to 
   43.26 +     * because the size of h_cr3 is only 32-bit. We use alloc_domheap_pages to
   43.27       * force this requirement, and exchange the guaranteed 32-bit-clean
   43.28       * page for the one we just hap_alloc()ed. */
   43.29      if ( d->arch.paging.hap.p2m_pages == 0
   43.30 @@ -166,9 +166,9 @@ void hap_free_p2m_page(struct domain *d,
   43.31          HAP_ERROR("Odd p2m page count c=%#x t=%"PRtype_info"\n",
   43.32                    pg->count_info, pg->u.inuse.type_info);
   43.33      pg->count_info = 0;
   43.34 -    /* Free should not decrement domain's total allocation, since 
   43.35 +    /* Free should not decrement domain's total allocation, since
   43.36       * these pages were allocated without an owner. */
   43.37 -    page_set_owner(pg, NULL); 
   43.38 +    page_set_owner(pg, NULL);
   43.39      free_domheap_page(pg);
   43.40      d->arch.paging.hap.p2m_pages--;
   43.41      ASSERT(d->arch.paging.hap.p2m_pages >= 0);
   43.42 @@ -221,7 +221,7 @@ hap_set_allocation(struct domain *d, uns
   43.43              pg->count_info = 0;
   43.44              free_domheap_page(pg);
   43.45          }
   43.46 -        
   43.47 +
   43.48          /* Check to see if we need to yield and try again */
   43.49          if ( preempted && hypercall_preempt_check() )
   43.50          {
   43.51 @@ -275,7 +275,7 @@ static void hap_install_xen_entries_in_l
   43.52  
   43.53      l2e = hap_map_domain_page(l2hmfn);
   43.54      ASSERT(l2e != NULL);
   43.55 -    
   43.56 +
   43.57      /* Copy the common Xen mappings from the idle domain */
   43.58      memcpy(&l2e[L2_PAGETABLE_FIRST_XEN_SLOT & (L2_PAGETABLE_ENTRIES-1)],
   43.59             &idle_pg_table_l2[L2_PAGETABLE_FIRST_XEN_SLOT],
   43.60 @@ -318,7 +318,7 @@ static void hap_install_xen_entries_in_l
   43.61  
   43.62      l2e = hap_map_domain_page(l2mfn);
   43.63      ASSERT(l2e != NULL);
   43.64 -    
   43.65 +
   43.66      /* Copy the common Xen mappings from the idle domain */
   43.67      memcpy(&l2e[L2_PAGETABLE_FIRST_XEN_SLOT],
   43.68             &idle_pg_table[L2_PAGETABLE_FIRST_XEN_SLOT],
   43.69 @@ -362,7 +362,7 @@ static mfn_t hap_make_monitor_table(stru
   43.70      }
   43.71  #elif CONFIG_PAGING_LEVELS == 3
   43.72      {
   43.73 -        mfn_t m3mfn, m2mfn; 
   43.74 +        mfn_t m3mfn, m2mfn;
   43.75          l3_pgentry_t *l3e;
   43.76          l2_pgentry_t *l2e;
   43.77          int i;
   43.78 @@ -384,8 +384,8 @@ static mfn_t hap_make_monitor_table(stru
   43.79          l2e = hap_map_domain_page(m2mfn);
   43.80          for ( i = 0; i < L3_PAGETABLE_ENTRIES; i++ )
   43.81              l2e[l2_table_offset(LINEAR_PT_VIRT_START) + i] =
   43.82 -                (l3e_get_flags(l3e[i]) & _PAGE_PRESENT) 
   43.83 -                ? l2e_from_pfn(l3e_get_pfn(l3e[i]), __PAGE_HYPERVISOR) 
   43.84 +                (l3e_get_flags(l3e[i]) & _PAGE_PRESENT)
   43.85 +                ? l2e_from_pfn(l3e_get_pfn(l3e[i]), __PAGE_HYPERVISOR)
   43.86                  : l2e_empty();
   43.87          hap_unmap_domain_page(l2e);
   43.88          hap_unmap_domain_page(l3e);
   43.89 @@ -536,7 +536,7 @@ void hap_teardown(struct domain *d)
   43.90                        d->arch.paging.hap.p2m_pages);
   43.91          ASSERT(d->arch.paging.hap.total_pages == 0);
   43.92      }
   43.93 -    
   43.94 +
   43.95      d->arch.paging.mode &= ~PG_log_dirty;
   43.96  
   43.97      hap_unlock(d);
   43.98 @@ -555,7 +555,7 @@ int hap_domctl(struct domain *d, xen_dom
   43.99          hap_unlock(d);
  43.100          if ( preempted )
  43.101              /* Not finished.  Set up to re-run the call. */
  43.102 -            rc = hypercall_create_continuation(__HYPERVISOR_domctl, "h", 
  43.103 +            rc = hypercall_create_continuation(__HYPERVISOR_domctl, "h",
  43.104                                                 u_domctl);
  43.105          else
  43.106              /* Finished.  Return the new allocation */
  43.107 @@ -578,11 +578,11 @@ void hap_vcpu_init(struct vcpu *v)
  43.108  /************************************************/
  43.109  /*          HAP PAGING MODE FUNCTIONS           */
  43.110  /************************************************/
  43.111 -/* 
  43.112 +/*
  43.113   * HAP guests can handle page faults (in the guest page tables) without
  43.114   * needing any action from Xen, so we should not be intercepting them.
  43.115   */
  43.116 -static int hap_page_fault(struct vcpu *v, unsigned long va, 
  43.117 +static int hap_page_fault(struct vcpu *v, unsigned long va,
  43.118                            struct cpu_user_regs *regs)
  43.119  {
  43.120      HAP_ERROR("Intercepted a guest #PF (%u:%u) with HAP enabled.\n",
  43.121 @@ -591,9 +591,9 @@ static int hap_page_fault(struct vcpu *v
  43.122      return 0;
  43.123  }
  43.124  
  43.125 -/* 
  43.126 +/*
  43.127   * HAP guests can handle invlpg without needing any action from Xen, so
  43.128 - * should not be intercepting it. 
  43.129 + * should not be intercepting it.
  43.130   */
  43.131  static int hap_invlpg(struct vcpu *v, unsigned long va)
  43.132  {
  43.133 @@ -649,7 +649,7 @@ static void hap_update_paging_modes(stru
  43.134  }
  43.135  
  43.136  #if CONFIG_PAGING_LEVELS == 3
  43.137 -static void p2m_install_entry_in_monitors(struct domain *d, l3_pgentry_t *l3e) 
  43.138 +static void p2m_install_entry_in_monitors(struct domain *d, l3_pgentry_t *l3e)
  43.139  /* Special case, only used for PAE hosts: update the mapping of the p2m
  43.140   * table.  This is trivial in other paging modes (one top-level entry
  43.141   * points to the top-level p2m, no maintenance needed), but PAE makes
  43.142 @@ -660,13 +660,13 @@ static void p2m_install_entry_in_monitor
  43.143      l2_pgentry_t *ml2e;
  43.144      struct vcpu *v;
  43.145      unsigned int index;
  43.146 -    
  43.147 +
  43.148      index = ((unsigned long)l3e & ~PAGE_MASK) / sizeof(l3_pgentry_t);
  43.149      ASSERT(index < MACHPHYS_MBYTES>>1);
  43.150 -    
  43.151 +
  43.152      for_each_vcpu ( d, v )
  43.153      {
  43.154 -        if ( pagetable_get_pfn(v->arch.monitor_table) == 0 ) 
  43.155 +        if ( pagetable_get_pfn(v->arch.monitor_table) == 0 )
  43.156              continue;
  43.157  
  43.158          ASSERT(paging_mode_external(v->domain));
  43.159 @@ -689,7 +689,7 @@ static void p2m_install_entry_in_monitor
  43.160  }
  43.161  #endif
  43.162  
  43.163 -static void 
  43.164 +static void
  43.165  hap_write_p2m_entry(struct vcpu *v, unsigned long gfn, l1_pgentry_t *p,
  43.166                      mfn_t table_mfn, l1_pgentry_t new, unsigned int level)
  43.167  {
  43.168 @@ -698,12 +698,12 @@ hap_write_p2m_entry(struct vcpu *v, unsi
  43.169      safe_write_pte(p, new);
  43.170  #if CONFIG_PAGING_LEVELS == 3
  43.171      /* install P2M in monitor table for PAE Xen */
  43.172 -    if ( level == 3 ) 
  43.173 +    if ( level == 3 )
  43.174          /* We have written to the p2m l3: need to sync the per-vcpu
  43.175           * copies of it in the monitor tables */
  43.176          p2m_install_entry_in_monitors(v->domain, (l3_pgentry_t *)p);
  43.177  #endif
  43.178 -    
  43.179 +
  43.180      hap_unlock(v->domain);
  43.181  }
  43.182  
  43.183 @@ -715,7 +715,7 @@ static unsigned long hap_gva_to_gfn_real
  43.184  
  43.185  /* Entry points into this mode of the hap code. */
  43.186  struct paging_mode hap_paging_real_mode = {
  43.187 -    .page_fault             = hap_page_fault, 
  43.188 +    .page_fault             = hap_page_fault,
  43.189      .invlpg                 = hap_invlpg,
  43.190      .gva_to_gfn             = hap_gva_to_gfn_real_mode,
  43.191      .update_cr3             = hap_update_cr3,
  43.192 @@ -725,7 +725,7 @@ struct paging_mode hap_paging_real_mode 
  43.193  };
  43.194  
  43.195  struct paging_mode hap_paging_protected_mode = {
  43.196 -    .page_fault             = hap_page_fault, 
  43.197 +    .page_fault             = hap_page_fault,
  43.198      .invlpg                 = hap_invlpg,
  43.199      .gva_to_gfn             = hap_gva_to_gfn_2level,
  43.200      .update_cr3             = hap_update_cr3,
  43.201 @@ -735,7 +735,7 @@ struct paging_mode hap_paging_protected_
  43.202  };
  43.203  
  43.204  struct paging_mode hap_paging_pae_mode = {
  43.205 -    .page_fault             = hap_page_fault, 
  43.206 +    .page_fault             = hap_page_fault,
  43.207      .invlpg                 = hap_invlpg,
  43.208      .gva_to_gfn             = hap_gva_to_gfn_3level,
  43.209      .update_cr3             = hap_update_cr3,
  43.210 @@ -745,7 +745,7 @@ struct paging_mode hap_paging_pae_mode =
  43.211  };
  43.212  
  43.213  struct paging_mode hap_paging_long_mode = {
  43.214 -    .page_fault             = hap_page_fault, 
  43.215 +    .page_fault             = hap_page_fault,
  43.216      .invlpg                 = hap_invlpg,
  43.217      .gva_to_gfn             = hap_gva_to_gfn_4level,
  43.218      .update_cr3             = hap_update_cr3,
    44.1 --- a/xen/arch/x86/mm/p2m.c	Sun Aug 12 12:19:13 2007 -0600
    44.2 +++ b/xen/arch/x86/mm/p2m.c	Sun Aug 12 14:50:02 2007 -0600
    44.3 @@ -2,12 +2,12 @@
    44.4   * arch/x86/mm/p2m.c
    44.5   *
    44.6   * physical-to-machine mappings for automatically-translated domains.
    44.7 - * 
    44.8 + *
    44.9   * Parts of this code are Copyright (c) 2007 by Advanced Micro Devices.
   44.10   * Parts of this code are Copyright (c) 2006 by XenSource Inc.
   44.11   * Parts of this code are Copyright (c) 2006 by Michael A Fetterman
   44.12   * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
   44.13 - * 
   44.14 + *
   44.15   * This program is free software; you can redistribute it and/or modify
   44.16   * it under the terms of the GNU General Public License as published by
   44.17   * the Free Software Foundation; either version 2 of the License, or
   44.18 @@ -34,7 +34,7 @@
   44.19  
   44.20  /*
   44.21   * The P2M lock.  This protects all updates to the p2m table.
   44.22 - * Updates are expected to be safe against concurrent reads, 
   44.23 + * Updates are expected to be safe against concurrent reads,
   44.24   * which do *not* require the lock.
   44.25   *
   44.26   * Locking discipline: always acquire this lock before the shadow or HAP one
   44.27 @@ -80,7 +80,7 @@
   44.28  #define P2M_DEBUG(_f, _a...)                                 \
   44.29      debugtrace_printk("p2mdebug: %s(): " _f, __func__, ##_a)
   44.30  #else
   44.31 -#define P2M_DEBUG(_f, _a...) do { (void)(_f); } while(0) 
   44.32 +#define P2M_DEBUG(_f, _a...) do { (void)(_f); } while(0)
   44.33  #endif
   44.34  
   44.35  
   44.36 @@ -119,8 +119,8 @@ p2m_find_entry(void *table, unsigned lon
   44.37  // Returns 0 on error.
   44.38  //
   44.39  static int
   44.40 -p2m_next_level(struct domain *d, mfn_t *table_mfn, void **table, 
   44.41 -               unsigned long *gfn_remainder, unsigned long gfn, u32 shift, 
   44.42 +p2m_next_level(struct domain *d, mfn_t *table_mfn, void **table,
   44.43 +               unsigned long *gfn_remainder, unsigned long gfn, u32 shift,
   44.44                 u32 max, unsigned long type)
   44.45  {
   44.46      l1_pgentry_t *p2m_entry;
   44.47 @@ -146,7 +146,7 @@ p2m_next_level(struct domain *d, mfn_t *
   44.48  
   44.49          switch ( type ) {
   44.50          case PGT_l3_page_table:
   44.51 -            paging_write_p2m_entry(d, gfn, 
   44.52 +            paging_write_p2m_entry(d, gfn,
   44.53                                     p2m_entry, *table_mfn, new_entry, 4);
   44.54              break;
   44.55          case PGT_l2_page_table:
   44.56 @@ -154,11 +154,11 @@ p2m_next_level(struct domain *d, mfn_t *
   44.57              /* for PAE mode, PDPE only has PCD/PWT/P bits available */
   44.58              new_entry = l1e_from_pfn(mfn_x(page_to_mfn(pg)), _PAGE_PRESENT);
   44.59  #endif
   44.60 -            paging_write_p2m_entry(d, gfn, 
   44.61 +            paging_write_p2m_entry(d, gfn,
   44.62                                     p2m_entry, *table_mfn, new_entry, 3);
   44.63              break;
   44.64          case PGT_l1_page_table:
   44.65 -            paging_write_p2m_entry(d, gfn, 
   44.66 +            paging_write_p2m_entry(d, gfn,
   44.67                                     p2m_entry, *table_mfn, new_entry, 2);
   44.68              break;
   44.69          default:
   44.70 @@ -216,7 +216,7 @@ set_p2m_entry(struct domain *d, unsigned
   44.71      ASSERT(p2m_entry);
   44.72  
   44.73      /* Track the highest gfn for which we have ever had a valid mapping */
   44.74 -    if ( mfn_valid(mfn) && (gfn > d->arch.p2m.max_mapped_pfn) ) 
   44.75 +    if ( mfn_valid(mfn) && (gfn > d->arch.p2m.max_mapped_pfn) )
   44.76          d->arch.p2m.max_mapped_pfn = gfn;
   44.77  
   44.78      if ( mfn_valid(mfn) )
   44.79 @@ -229,7 +229,7 @@ set_p2m_entry(struct domain *d, unsigned
   44.80  
   44.81      /* Success */
   44.82      rv = 1;
   44.83 - 
   44.84 +
   44.85   out:
   44.86      unmap_domain_page(table);
   44.87      return rv;
   44.88 @@ -250,7 +250,7 @@ void p2m_init(struct domain *d)
   44.89  // controlled by CONFIG_PAGING_LEVELS).
   44.90  //
   44.91  // The alloc_page and free_page functions will be used to get memory to
   44.92 -// build the p2m, and to release it again at the end of day. 
   44.93 +// build the p2m, and to release it again at the end of day.
   44.94  //
   44.95  // Returns 0 for success or -errno.
   44.96  //
   44.97 @@ -264,7 +264,7 @@ int p2m_alloc_table(struct domain *d,
   44.98      struct page_info *page, *p2m_top;
   44.99      unsigned int page_count = 0;
  44.100      unsigned long gfn;
  44.101 -    
  44.102 +
  44.103      p2m_lock(d);
  44.104  
  44.105      if ( pagetable_get_pfn(d->arch.phys_table) != 0 )
  44.106 @@ -288,7 +288,7 @@ int p2m_alloc_table(struct domain *d,
  44.107      list_add_tail(&p2m_top->list, &d->arch.p2m.pages);
  44.108  
  44.109      p2m_top->count_info = 1;
  44.110 -    p2m_top->u.inuse.type_info = 
  44.111 +    p2m_top->u.inuse.type_info =
  44.112  #if CONFIG_PAGING_LEVELS == 4
  44.113          PGT_l4_page_table
  44.114  #elif CONFIG_PAGING_LEVELS == 3
  44.115 @@ -301,7 +301,7 @@ int p2m_alloc_table(struct domain *d,
  44.116      d->arch.phys_table = pagetable_from_mfn(page_to_mfn(p2m_top));
  44.117  
  44.118      P2M_PRINTK("populating p2m table\n");
  44.119 - 
  44.120 +
  44.121      /* Initialise physmap tables for slot zero. Other code assumes this. */
  44.122      gfn = 0;
  44.123      mfn = _mfn(INVALID_MFN);
  44.124 @@ -365,17 +365,17 @@ gfn_to_mfn_foreign(struct domain *d, uns
  44.125      paddr_t addr = ((paddr_t)gpfn) << PAGE_SHIFT;
  44.126      l2_pgentry_t *l2e;
  44.127      l1_pgentry_t *l1e;
  44.128 -    
  44.129 +
  44.130      ASSERT(paging_mode_translate(d));
  44.131      mfn = pagetable_get_mfn(d->arch.phys_table);
  44.132  
  44.133  
  44.134 -    if ( gpfn > d->arch.p2m.max_mapped_pfn ) 
  44.135 +    if ( gpfn > d->arch.p2m.max_mapped_pfn )
  44.136          /* This pfn is higher than the highest the p2m map currently holds */
  44.137          return _mfn(INVALID_MFN);
  44.138  
  44.139  #if CONFIG_PAGING_LEVELS >= 4
  44.140 -    { 
  44.141 +    {
  44.142          l4_pgentry_t *l4e = map_domain_page(mfn_x(mfn));
  44.143          l4e += l4_table_offset(addr);
  44.144          if ( (l4e_get_flags(*l4e) & _PAGE_PRESENT) == 0 )
  44.145 @@ -398,7 +398,7 @@ gfn_to_mfn_foreign(struct domain *d, uns
  44.146           * the bounds of the p2m. */
  44.147          l3e += (addr >> L3_PAGETABLE_SHIFT);
  44.148  #else
  44.149 -        l3e += l3_table_offset(addr);        
  44.150 +        l3e += l3_table_offset(addr);
  44.151  #endif
  44.152          if ( (l3e_get_flags(*l3e) & _PAGE_PRESENT) == 0 )
  44.153          {
  44.154 @@ -443,18 +443,18 @@ static void audit_p2m(struct domain *d)
  44.155      mfn_t p2mfn;
  44.156      unsigned long orphans_d = 0, orphans_i = 0, mpbad = 0, pmbad = 0;
  44.157      int test_linear;
  44.158 -    
  44.159 +
  44.160      if ( !paging_mode_translate(d) )
  44.161          return;
  44.162  
  44.163      //P2M_PRINTK("p2m audit starts\n");
  44.164  
  44.165 -    test_linear = ( (d == current->domain) 
  44.166 +    test_linear = ( (d == current->domain)
  44.167                      && !pagetable_is_null(current->arch.monitor_table) );
  44.168      if ( test_linear )
  44.169 -        local_flush_tlb(); 
  44.170 +        local_flush_tlb();
  44.171  
  44.172 -    /* Audit part one: walk the domain's page allocation list, checking 
  44.173 +    /* Audit part one: walk the domain's page allocation list, checking
  44.174       * the m2p entries. */
  44.175      for ( entry = d->page_list.next;
  44.176            entry != &d->page_list;
  44.177 @@ -463,11 +463,11 @@ static void audit_p2m(struct domain *d)
  44.178          page = list_entry(entry, struct page_info, list);
  44.179          mfn = mfn_x(page_to_mfn(page));
  44.180  
  44.181 -        // P2M_PRINTK("auditing guest page, mfn=%#lx\n", mfn); 
  44.182 +        // P2M_PRINTK("auditing guest page, mfn=%#lx\n", mfn);
  44.183  
  44.184          od = page_get_owner(page);
  44.185  
  44.186 -        if ( od != d ) 
  44.187 +        if ( od != d )
  44.188          {
  44.189              P2M_PRINTK("wrong owner %#lx -> %p(%u) != %p(%u)\n",
  44.190                         mfn, od, (od?od->domain_id:-1), d, d->domain_id);
  44.191 @@ -475,19 +475,19 @@ static void audit_p2m(struct domain *d)
  44.192          }
  44.193  
  44.194          gfn = get_gpfn_from_mfn(mfn);
  44.195 -        if ( gfn == INVALID_M2P_ENTRY ) 
  44.196 +        if ( gfn == INVALID_M2P_ENTRY )
  44.197          {
  44.198              orphans_i++;
  44.199              //P2M_PRINTK("orphaned guest page: mfn=%#lx has invalid gfn\n",
  44.200 -            //               mfn); 
  44.201 +            //               mfn);
  44.202              continue;
  44.203          }
  44.204  
  44.205 -        if ( gfn == 0x55555555 ) 
  44.206 +        if ( gfn == 0x55555555 )
  44.207          {
  44.208              orphans_d++;
  44.209 -            //P2M_PRINTK("orphaned guest page: mfn=%#lx has debug gfn\n", 
  44.210 -            //               mfn); 
  44.211 +            //P2M_PRINTK("orphaned guest page: mfn=%#lx has debug gfn\n",
  44.212 +            //               mfn);
  44.213              continue;
  44.214          }
  44.215  
  44.216 @@ -503,7 +503,7 @@ static void audit_p2m(struct domain *d)
  44.217                          : -1u));
  44.218              /* This m2p entry is stale: the domain has another frame in
  44.219               * this physical slot.  No great disaster, but for neatness,
  44.220 -             * blow away the m2p entry. */ 
  44.221 +             * blow away the m2p entry. */
  44.222              set_gpfn_from_mfn(mfn, INVALID_M2P_ENTRY, __PAGE_HYPERVISOR|_PAGE_USER);
  44.223          }
  44.224  
  44.225 @@ -517,9 +517,9 @@ static void audit_p2m(struct domain *d)
  44.226              }
  44.227          }
  44.228  
  44.229 -        // P2M_PRINTK("OK: mfn=%#lx, gfn=%#lx, p2mfn=%#lx, lp2mfn=%#lx\n", 
  44.230 -        //                mfn, gfn, p2mfn, lp2mfn); 
  44.231 -    }   
  44.232 +        // P2M_PRINTK("OK: mfn=%#lx, gfn=%#lx, p2mfn=%#lx, lp2mfn=%#lx\n",
  44.233 +        //                mfn, gfn, p2mfn, lp2mfn);
  44.234 +    }
  44.235  
  44.236      /* Audit part two: walk the domain's p2m table, checking the entries. */
  44.237      if ( pagetable_get_pfn(d->arch.phys_table) != 0 )
  44.238 @@ -527,7 +527,7 @@ static void audit_p2m(struct domain *d)
  44.239          l2_pgentry_t *l2e;
  44.240          l1_pgentry_t *l1e;
  44.241          int i1, i2;
  44.242 -        
  44.243 +
  44.244  #if CONFIG_PAGING_LEVELS == 4
  44.245          l4_pgentry_t *l4e;
  44.246          l3_pgentry_t *l3e;
  44.247 @@ -553,8 +553,8 @@ static void audit_p2m(struct domain *d)
  44.248              }
  44.249              l3e = map_domain_page(mfn_x(_mfn(l4e_get_pfn(l4e[i4]))));
  44.250  #endif /* now at levels 3 or 4... */
  44.251 -            for ( i3 = 0; 
  44.252 -                  i3 < ((CONFIG_PAGING_LEVELS==4) ? L3_PAGETABLE_ENTRIES : 8); 
  44.253 +            for ( i3 = 0;
  44.254 +                  i3 < ((CONFIG_PAGING_LEVELS==4) ? L3_PAGETABLE_ENTRIES : 8);
  44.255                    i3++ )
  44.256              {
  44.257                  if ( !(l3e_get_flags(l3e[i3]) & _PAGE_PRESENT) )
  44.258 @@ -572,7 +572,7 @@ static void audit_p2m(struct domain *d)
  44.259                          continue;
  44.260                      }
  44.261                      l1e = map_domain_page(mfn_x(_mfn(l2e_get_pfn(l2e[i2]))));
  44.262 -                    
  44.263 +
  44.264                      for ( i1 = 0; i1 < L1_PAGETABLE_ENTRIES; i1++, gfn++ )
  44.265                      {
  44.266                          if ( !(l1e_get_flags(l1e[i1]) & _PAGE_PRESENT) )
  44.267 @@ -610,14 +610,14 @@ static void audit_p2m(struct domain *d)
  44.268      }
  44.269  
  44.270      //P2M_PRINTK("p2m audit complete\n");
  44.271 -    //if ( orphans_i | orphans_d | mpbad | pmbad ) 
  44.272 +    //if ( orphans_i | orphans_d | mpbad | pmbad )
  44.273      //    P2M_PRINTK("p2m audit found %lu orphans (%lu inval %lu debug)\n",
  44.274      //                   orphans_i + orphans_d, orphans_i, orphans_d,
  44.275 -    if ( mpbad | pmbad ) 
  44.276 +    if ( mpbad | pmbad )
  44.277          P2M_PRINTK("p2m audit found %lu odd p2m, %lu bad m2p entries\n",
  44.278                     pmbad, mpbad);
  44.279  }
  44.280 -#else 
  44.281 +#else
  44.282  #define audit_p2m(_d) do { (void)(_d); } while(0)
  44.283  #endif /* P2M_AUDIT */
  44.284  
  44.285 @@ -645,7 +645,7 @@ guest_physmap_remove_page(struct domain 
  44.286      audit_p2m(d);
  44.287      p2m_remove_page(d, gfn, mfn);
  44.288      audit_p2m(d);
  44.289 -    p2m_unlock(d);    
  44.290 +    p2m_unlock(d);
  44.291  }
  44.292  
  44.293  void
  44.294 @@ -683,11 +683,11 @@ guest_physmap_add_page(struct domain *d,
  44.295          /* This machine frame is already mapped at another physical address */
  44.296          P2M_DEBUG("aliased! mfn=%#lx, old gfn=%#lx, new gfn=%#lx\n",
  44.297                    mfn, ogfn, gfn);
  44.298 -        if ( mfn_valid(omfn = gfn_to_mfn(d, ogfn)) ) 
  44.299 +        if ( mfn_valid(omfn = gfn_to_mfn(d, ogfn)) )
  44.300          {
  44.301 -            P2M_DEBUG("old gfn=%#lx -> mfn %#lx\n", 
  44.302 +            P2M_DEBUG("old gfn=%#lx -> mfn %#lx\n",
  44.303                        ogfn , mfn_x(omfn));
  44.304 -            if ( mfn_x(omfn) == mfn ) 
  44.305 +            if ( mfn_x(omfn) == mfn )
  44.306                  p2m_remove_page(d, ogfn, mfn);
  44.307          }
  44.308      }
  44.309 @@ -720,15 +720,15 @@ void p2m_set_flags_global(struct domain 
  44.310      int i4;
  44.311  #endif /* CONFIG_PAGING_LEVELS == 4 */
  44.312  #endif /* CONFIG_PAGING_LEVELS >= 3 */
  44.313 -    
  44.314 +
  44.315      if ( !paging_mode_translate(d) )
  44.316          return;
  44.317 - 
  44.318 +
  44.319      if ( pagetable_get_pfn(d->arch.phys_table) == 0 )
  44.320          return;
  44.321  
  44.322      p2m_lock(d);
  44.323 -        
  44.324 +
  44.325  #if CONFIG_PAGING_LEVELS == 4
  44.326      l4e = map_domain_page(mfn_x(pagetable_get_mfn(d->arch.phys_table)));
  44.327  #elif CONFIG_PAGING_LEVELS == 3
  44.328 @@ -739,52 +739,52 @@ void p2m_set_flags_global(struct domain 
  44.329  
  44.330  #if CONFIG_PAGING_LEVELS >= 3
  44.331  #if CONFIG_PAGING_LEVELS >= 4
  44.332 -    for ( i4 = 0; i4 < L4_PAGETABLE_ENTRIES; i4++ ) 
  44.333 +    for ( i4 = 0; i4 < L4_PAGETABLE_ENTRIES; i4++ )
  44.334      {
  44.335 -	if ( !(l4e_get_flags(l4e[i4]) & _PAGE_PRESENT) )
  44.336 -	{
  44.337 -	    continue;
  44.338 -	}
  44.339 -	l3e = map_domain_page(l4e_get_pfn(l4e[i4]));
  44.340 +        if ( !(l4e_get_flags(l4e[i4]) & _PAGE_PRESENT) )
  44.341 +        {
  44.342 +            continue;
  44.343 +        }
  44.344 +        l3e = map_domain_page(l4e_get_pfn(l4e[i4]));
  44.345  #endif /* now at levels 3 or 4... */
  44.346 -	for ( i3 = 0; 
  44.347 -	      i3 < ((CONFIG_PAGING_LEVELS==4) ? L3_PAGETABLE_ENTRIES : 8); 
  44.348 -	      i3++ )
  44.349 -	{
  44.350 -	    if ( !(l3e_get_flags(l3e[i3]) & _PAGE_PRESENT) )
  44.351 -	    {
  44.352 -		continue;
  44.353 -	    }
  44.354 -	    l2e = map_domain_page(l3e_get_pfn(l3e[i3]));
  44.355 +        for ( i3 = 0;
  44.356 +              i3 < ((CONFIG_PAGING_LEVELS==4) ? L3_PAGETABLE_ENTRIES : 8);
  44.357 +              i3++ )
  44.358 +        {
  44.359 +            if ( !(l3e_get_flags(l3e[i3]) & _PAGE_PRESENT) )
  44.360 +            {
  44.361 +                continue;
  44.362 +            }
  44.363 +            l2e = map_domain_page(l3e_get_pfn(l3e[i3]));
  44.364  #endif /* all levels... */
  44.365 -	    for ( i2 = 0; i2 < L2_PAGETABLE_ENTRIES; i2++ )
  44.366 -	    {
  44.367 -		if ( !(l2e_get_flags(l2e[i2]) & _PAGE_PRESENT) )
  44.368 -		{
  44.369 -		    continue;
  44.370 -		}
  44.371 +            for ( i2 = 0; i2 < L2_PAGETABLE_ENTRIES; i2++ )
  44.372 +            {
  44.373 +                if ( !(l2e_get_flags(l2e[i2]) & _PAGE_PRESENT) )
  44.374 +                {
  44.375 +                    continue;
  44.376 +                }
  44.377  
  44.378                  l1mfn = _mfn(l2e_get_pfn(l2e[i2]));
  44.379 -		l1e = map_domain_page(mfn_x(l1mfn));
  44.380 -		
  44.381 -		for ( i1 = 0; i1 < L1_PAGETABLE_ENTRIES; i1++, gfn++ )
  44.382 -		{
  44.383 -		    if ( !(l1e_get_flags(l1e[i1]) & _PAGE_PRESENT) )
  44.384 -			continue;
  44.385 -		    mfn = l1e_get_pfn(l1e[i1]);
  44.386 -		    gfn = get_gpfn_from_mfn(mfn);
  44.387 -		    /* create a new 1le entry using l1e_flags */
  44.388 -		    l1e_content = l1e_from_pfn(mfn, l1e_flags);
  44.389 -		    paging_write_p2m_entry(d, gfn, &l1e[i1], 
  44.390 +                l1e = map_domain_page(mfn_x(l1mfn));
  44.391 +
  44.392 +                for ( i1 = 0; i1 < L1_PAGETABLE_ENTRIES; i1++, gfn++ )
  44.393 +                {
  44.394 +                    if ( !(l1e_get_flags(l1e[i1]) & _PAGE_PRESENT) )
  44.395 +                        continue;
  44.396 +                    mfn = l1e_get_pfn(l1e[i1]);
  44.397 +                    gfn = get_gpfn_from_mfn(mfn);
  44.398 +                    /* create a new 1le entry using l1e_flags */
  44.399 +                    l1e_content = l1e_from_pfn(mfn, l1e_flags);
  44.400 +                    paging_write_p2m_entry(d, gfn, &l1e[i1],
  44.401                                             l1mfn, l1e_content, 1);
  44.402 -		}
  44.403 -		unmap_domain_page(l1e);
  44.404 -	    }
  44.405 +                }
  44.406 +                unmap_domain_page(l1e);
  44.407 +            }
  44.408  #if CONFIG_PAGING_LEVELS >= 3
  44.409 -	    unmap_domain_page(l2e);
  44.410 -	}
  44.411 +            unmap_domain_page(l2e);
  44.412 +        }
  44.413  #if CONFIG_PAGING_LEVELS >= 4
  44.414 -	unmap_domain_page(l3e);
  44.415 +        unmap_domain_page(l3e);
  44.416      }
  44.417  #endif
  44.418  #endif
  44.419 @@ -814,7 +814,7 @@ int p2m_set_flags(struct domain *d, padd
  44.420      mfn = gfn_to_mfn(d, gfn);
  44.421      if ( mfn_valid(mfn) )
  44.422          set_p2m_entry(d, gfn, mfn, l1e_flags);
  44.423 -    
  44.424 +
  44.425      p2m_unlock(d);
  44.426  
  44.427      return 1;
    45.1 --- a/xen/arch/x86/mm/paging.c	Sun Aug 12 12:19:13 2007 -0600
    45.2 +++ b/xen/arch/x86/mm/paging.c	Sun Aug 12 14:50:02 2007 -0600
    45.3 @@ -54,10 +54,10 @@ boolean_param("hap", opt_hap_enabled);
    45.4  #define page_to_mfn(_pg) (_mfn((_pg) - frame_table))
    45.5  
    45.6  /* The log-dirty lock.  This protects the log-dirty bitmap from
    45.7 - * concurrent accesses (and teardowns, etc). 
    45.8 - * 
    45.9 + * concurrent accesses (and teardowns, etc).
   45.10 + *
   45.11   * Locking discipline: always acquire shadow or HAP lock before this one.
   45.12 - * 
   45.13 + *
   45.14   * Because mark_dirty is called from a lot of places, the log-dirty lock
   45.15   * may be acquired with the shadow or HAP locks already held.  When the
   45.16   * log-dirty code makes callbacks into HAP or shadow code to reset
   45.17 @@ -105,7 +105,7 @@ int paging_alloc_log_dirty_bitmap(struct
   45.18  
   45.19      d->arch.paging.log_dirty.bitmap_size =
   45.20          (domain_get_maximum_gpfn(d) + BITS_PER_LONG) & ~(BITS_PER_LONG - 1);
   45.21 -    d->arch.paging.log_dirty.bitmap = 
   45.22 +    d->arch.paging.log_dirty.bitmap =
   45.23          xmalloc_array(unsigned long,
   45.24                        d->arch.paging.log_dirty.bitmap_size / BITS_PER_LONG);
   45.25      if ( d->arch.paging.log_dirty.bitmap == NULL )
   45.26 @@ -152,8 +152,8 @@ int paging_log_dirty_enable(struct domai
   45.27  
   45.28      log_dirty_unlock(d);
   45.29  
   45.30 -    /* Safe because the domain is paused. */    
   45.31 -    ret = d->arch.paging.log_dirty.enable_log_dirty(d);    
   45.32 +    /* Safe because the domain is paused. */
   45.33 +    ret = d->arch.paging.log_dirty.enable_log_dirty(d);
   45.34  
   45.35      /* Possibility of leaving the bitmap allocated here but it'll be
   45.36       * tidied on domain teardown. */
   45.37 @@ -202,7 +202,7 @@ void paging_mark_dirty(struct domain *d,
   45.38      pfn = get_gpfn_from_mfn(mfn_x(gmfn));
   45.39  
   45.40      /*
   45.41 -     * Values with the MSB set denote MFNs that aren't really part of the 
   45.42 +     * Values with the MSB set denote MFNs that aren't really part of the
   45.43       * domain's pseudo-physical memory map (e.g., the shared info frame).
   45.44       * Nothing to do here...
   45.45       */
   45.46 @@ -212,11 +212,11 @@ void paging_mark_dirty(struct domain *d,
   45.47          return;
   45.48      }
   45.49  
   45.50 -    if ( likely(pfn < d->arch.paging.log_dirty.bitmap_size) ) 
   45.51 -    { 
   45.52 +    if ( likely(pfn < d->arch.paging.log_dirty.bitmap_size) )
   45.53 +    {
   45.54          if ( !__test_and_set_bit(pfn, d->arch.paging.log_dirty.bitmap) )
   45.55          {
   45.56 -            PAGING_DEBUG(LOGDIRTY, 
   45.57 +            PAGING_DEBUG(LOGDIRTY,
   45.58                           "marked mfn %" PRI_mfn " (pfn=%lx), dom %d\n",
   45.59                           mfn_x(gmfn), pfn, d->domain_id);
   45.60              d->arch.paging.log_dirty.dirty_count++;
   45.61 @@ -227,21 +227,21 @@ void paging_mark_dirty(struct domain *d,
   45.62          PAGING_PRINTK("mark_dirty OOR! "
   45.63                        "mfn=%" PRI_mfn " pfn=%lx max=%x (dom %d)\n"
   45.64                        "owner=%d c=%08x t=%" PRtype_info "\n",
   45.65 -                      mfn_x(gmfn), 
   45.66 -                      pfn, 
   45.67 +                      mfn_x(gmfn),
   45.68 +                      pfn,
   45.69                        d->arch.paging.log_dirty.bitmap_size,
   45.70                        d->domain_id,
   45.71                        (page_get_owner(mfn_to_page(gmfn))
   45.72                         ? page_get_owner(mfn_to_page(gmfn))->domain_id
   45.73                         : -1),
   45.74 -                      mfn_to_page(gmfn)->count_info, 
   45.75 +                      mfn_to_page(gmfn)->count_info,
   45.76                        mfn_to_page(gmfn)->u.inuse.type_info);
   45.77      }
   45.78 -    
   45.79 +
   45.80      log_dirty_unlock(d);
   45.81  }
   45.82  
   45.83 -/* Read a domain's log-dirty bitmap and stats.  If the operation is a CLEAN, 
   45.84 +/* Read a domain's log-dirty bitmap and stats.  If the operation is a CLEAN,
   45.85   * clear the bitmap and stats as well. */
   45.86  int paging_log_dirty_op(struct domain *d, struct xen_domctl_shadow_op *sc)
   45.87  {
   45.88 @@ -252,15 +252,15 @@ int paging_log_dirty_op(struct domain *d
   45.89  
   45.90      clean = (sc->op == XEN_DOMCTL_SHADOW_OP_CLEAN);
   45.91  
   45.92 -    PAGING_DEBUG(LOGDIRTY, "log-dirty %s: dom %u faults=%u dirty=%u\n", 
   45.93 +    PAGING_DEBUG(LOGDIRTY, "log-dirty %s: dom %u faults=%u dirty=%u\n",
   45.94                   (clean) ? "clean" : "peek",
   45.95                   d->domain_id,
   45.96 -                 d->arch.paging.log_dirty.fault_count, 
   45.97 +                 d->arch.paging.log_dirty.fault_count,
   45.98                   d->arch.paging.log_dirty.dirty_count);
   45.99  
  45.100      sc->stats.fault_count = d->arch.paging.log_dirty.fault_count;
  45.101      sc->stats.dirty_count = d->arch.paging.log_dirty.dirty_count;
  45.102 -    
  45.103 +
  45.104      if ( clean )
  45.105      {
  45.106          d->arch.paging.log_dirty.fault_count = 0;
  45.107 @@ -276,7 +276,7 @@ int paging_log_dirty_op(struct domain *d
  45.108          rv = -EINVAL; /* perhaps should be ENOMEM? */
  45.109          goto out;
  45.110      }
  45.111 - 
  45.112 +
  45.113      if ( sc->pages > d->arch.paging.log_dirty.bitmap_size )
  45.114          sc->pages = d->arch.paging.log_dirty.bitmap_size;
  45.115  
  45.116 @@ -322,11 +322,11 @@ int paging_log_dirty_op(struct domain *d
  45.117  
  45.118  
  45.119  /* Note that this function takes three function pointers. Callers must supply
  45.120 - * these functions for log dirty code to call. This function usually is 
  45.121 - * invoked when paging is enabled. Check shadow_enable() and hap_enable() for 
  45.122 + * these functions for log dirty code to call. This function usually is
  45.123 + * invoked when paging is enabled. Check shadow_enable() and hap_enable() for
  45.124   * reference.
  45.125   *
  45.126 - * These function pointers must not be followed with the log-dirty lock held. 
  45.127 + * These function pointers must not be followed with the log-dirty lock held.
  45.128   */
  45.129  void paging_log_dirty_init(struct domain *d,
  45.130                             int    (*enable_log_dirty)(struct domain *d),
  45.131 @@ -335,7 +335,7 @@ void paging_log_dirty_init(struct domain
  45.132  {
  45.133      /* We initialize log dirty lock first */
  45.134      log_dirty_lock_init(d);
  45.135 -    
  45.136 +
  45.137      d->arch.paging.log_dirty.enable_log_dirty = enable_log_dirty;
  45.138      d->arch.paging.log_dirty.disable_log_dirty = disable_log_dirty;
  45.139      d->arch.paging.log_dirty.clean_dirty_bitmap = clean_dirty_bitmap;
  45.140 @@ -387,7 +387,7 @@ int paging_domctl(struct domain *d, xen_
  45.141                   d->domain_id);
  45.142          return -EINVAL;
  45.143      }
  45.144 -    
  45.145 +
  45.146      if ( unlikely(d->is_dying) )
  45.147      {
  45.148          gdprintk(XENLOG_INFO, "Ignoring paging op on dying domain %u\n",
  45.149 @@ -401,38 +401,38 @@ int paging_domctl(struct domain *d, xen_
  45.150                       d->domain_id);
  45.151          return -EINVAL;
  45.152      }
  45.153 -    
  45.154 +
  45.155      /* Code to handle log-dirty. Note that some log dirty operations
  45.156 -     * piggy-back on shadow operations. For example, when 
  45.157 +     * piggy-back on shadow operations. For example, when
  45.158       * XEN_DOMCTL_SHADOW_OP_OFF is called, it first checks whether log dirty
  45.159 -     * mode is enabled. If does, we disables log dirty and continues with 
  45.160 -     * shadow code. For this reason, we need to further dispatch domctl 
  45.161 +     * mode is enabled. If does, we disables log dirty and continues with
  45.162 +     * shadow code. For this reason, we need to further dispatch domctl
  45.163       * to next-level paging code (shadow or hap).
  45.164       */
  45.165      switch ( sc->op )
  45.166      {
  45.167      case XEN_DOMCTL_SHADOW_OP_ENABLE_LOGDIRTY:
  45.168 -        return paging_log_dirty_enable(d);	
  45.169 -	
  45.170 -    case XEN_DOMCTL_SHADOW_OP_ENABLE:	
  45.171 +        return paging_log_dirty_enable(d);
  45.172 +
  45.173 +    case XEN_DOMCTL_SHADOW_OP_ENABLE:
  45.174          if ( sc->mode & XEN_DOMCTL_SHADOW_ENABLE_LOG_DIRTY )
  45.175              return paging_log_dirty_enable(d);
  45.176  
  45.177      case XEN_DOMCTL_SHADOW_OP_OFF:
  45.178          if ( paging_mode_log_dirty(d) )
  45.179 -            if ( (rc = paging_log_dirty_disable(d)) != 0 ) 
  45.180 +            if ( (rc = paging_log_dirty_disable(d)) != 0 )
  45.181                  return rc;
  45.182  
  45.183      case XEN_DOMCTL_SHADOW_OP_CLEAN:
  45.184      case XEN_DOMCTL_SHADOW_OP_PEEK:
  45.185 -	return paging_log_dirty_op(d, sc);
  45.186 +        return paging_log_dirty_op(d, sc);
  45.187      }
  45.188 -	
  45.189 +
  45.190      /* Here, dispatch domctl to the appropriate paging code */
  45.191      if ( opt_hap_enabled && is_hvm_domain(d) )
  45.192 -	return hap_domctl(d, sc, u_domctl);
  45.193 +        return hap_domctl(d, sc, u_domctl);
  45.194      else
  45.195 -	return shadow_domctl(d, sc, u_domctl);
  45.196 +        return shadow_domctl(d, sc, u_domctl);
  45.197  }
  45.198  
  45.199  /* Call when destroying a domain */
  45.200 @@ -492,7 +492,7 @@ void paging_dump_vcpu_info(struct vcpu *
  45.201  {
  45.202      if ( paging_mode_enabled(v->domain) )
  45.203      {
  45.204 -        printk("    paging assistance: ");        
  45.205 +        printk("    paging assistance: ");
  45.206          if ( paging_mode_shadow(v->domain) )
  45.207          {
  45.208              if ( v->arch.paging.mode )
  45.209 @@ -504,7 +504,7 @@ void paging_dump_vcpu_info(struct vcpu *
  45.210                  printk("not shadowed\n");
  45.211          }
  45.212          else if ( paging_mode_hap(v->domain) && v->arch.paging.mode )
  45.213 -            printk("hap, %u levels\n", 
  45.214 +            printk("hap, %u levels\n",
  45.215                     v->arch.paging.mode->guest_levels);
  45.216          else
  45.217              printk("none\n");
    46.1 --- a/xen/common/compat/grant_table.c	Sun Aug 12 12:19:13 2007 -0600
    46.2 +++ b/xen/common/compat/grant_table.c	Sun Aug 12 14:50:02 2007 -0600
    46.3 @@ -161,7 +161,7 @@ int compat_grant_table_op(unsigned int c
    46.4                  while ( n-- )
    46.5                  {
    46.6                      guest_handle_add_offset(xfer, -1);
    46.7 -                    if ( __copy_field_to_guest(xfer, nat.xfer, status) )
    46.8 +                    if ( __copy_field_to_guest(xfer, nat.xfer + n, status) )
    46.9                          rc = -EFAULT;
   46.10                  }
   46.11              }
   46.12 @@ -199,7 +199,7 @@ int compat_grant_table_op(unsigned int c
   46.13                  while ( n-- )
   46.14                  {
   46.15                      guest_handle_add_offset(copy, -1);
   46.16 -                    if ( __copy_field_to_guest(copy, nat.copy, status) )
   46.17 +                    if ( __copy_field_to_guest(copy, nat.copy + n, status) )
   46.18                          rc = -EFAULT;
   46.19                  }
   46.20              }
    47.1 --- a/xen/common/libelf/libelf-dominfo.c	Sun Aug 12 12:19:13 2007 -0600
    47.2 +++ b/xen/common/libelf/libelf-dominfo.c	Sun Aug 12 14:50:02 2007 -0600
    47.3 @@ -333,99 +333,6 @@ static int elf_xen_note_check(struct elf
    47.4      return 0;
    47.5  }
    47.6  
    47.7 -
    47.8 -static void elf_xen_loadsymtab(struct elf_binary *elf,
    47.9 -                               struct elf_dom_parms *parms)
   47.10 -{
   47.11 -    unsigned long maxva, len;
   47.12 -
   47.13 -    if ( !parms->bsd_symtab )
   47.14 -        return;
   47.15 -
   47.16 -    /* Calculate the required additional kernel space for the elf image */
   47.17 -
   47.18 -    /* The absolute base address of the elf image */
   47.19 -    maxva = elf_round_up(elf, parms->virt_kend);
   47.20 -    maxva += sizeof(long); /* Space to store the size of the elf image */
   47.21 -    /* Space for the elf and elf section headers */
   47.22 -    maxva += (elf_uval(elf, elf->ehdr, e_ehsize) +
   47.23 -              elf_shdr_count(elf) * elf_uval(elf, elf->ehdr, e_shentsize));
   47.24 -    maxva = elf_round_up(elf, maxva);
   47.25 -
   47.26 -    /* Space for the symbol and string tabs */
   47.27 -    len = (unsigned long)elf->send - (unsigned long)elf->sstart;
   47.28 -    maxva = elf_round_up(elf, maxva + len);
   47.29 -
   47.30 -    /* The address the kernel must expanded to */
   47.31 -    parms->virt_end = maxva;
   47.32 -}
   47.33 -
   47.34 -int elf_xen_dom_load_binary(struct elf_binary *elf,
   47.35 -                            struct elf_dom_parms *parms)
   47.36 -{
   47.37 -    elf_ehdr *sym_ehdr;
   47.38 -    unsigned long shdr, symtab_addr;
   47.39 -    unsigned long maxva, symbase;
   47.40 -    uint8_t i;
   47.41 -    char *p;
   47.42 -
   47.43 -    elf_load_binary(elf);
   47.44 -
   47.45 -    if ( !parms->bsd_symtab )
   47.46 -        return 0;
   47.47 -
   47.48 -#define elf_hdr_elm(_elf, _hdr, _elm, _val)     \
   47.49 -do {                                            \
   47.50 -    if ( elf_64bit(_elf) )                      \
   47.51 -        (_hdr)->e64._elm = _val;                \
   47.52 -    else                                        \
   47.53 -        (_hdr)->e32._elm = _val;                \
   47.54 -} while ( 0 )
   47.55 -
   47.56 -    /* ehdr right after the kernel image (4 byte aligned) */
   47.57 -    symbase = elf_round_up(elf, parms->virt_kend);
   47.58 -    symtab_addr = maxva = symbase + sizeof(long);
   47.59 -
   47.60 -    /* Set up Elf header. */
   47.61 -    sym_ehdr = (elf_ehdr *)symtab_addr;
   47.62 -    maxva = elf_copy_ehdr(elf, sym_ehdr);
   47.63 -
   47.64 -    elf_hdr_elm(elf, sym_ehdr, e_phoff, 0);
   47.65 -    elf_hdr_elm(elf, sym_ehdr, e_shoff, elf_uval(elf, elf->ehdr, e_ehsize));
   47.66 -    elf_hdr_elm(elf, sym_ehdr, e_phentsize, 0);
   47.67 -    elf_hdr_elm(elf, sym_ehdr, e_phnum, 0);
   47.68 -
   47.69 -    /* Copy Elf section headers. */
   47.70 -    shdr = maxva;
   47.71 -    maxva = elf_copy_shdr(elf, (elf_shdr *)shdr);
   47.72 -
   47.73 -    for ( i = 0; i < elf_shdr_count(elf); i++ )
   47.74 -    {
   47.75 -        uint8_t type;
   47.76 -        unsigned long tmp;
   47.77 -        type = elf_uval(elf, (elf_shdr *)shdr, sh_type);
   47.78 -        if ( (type == SHT_STRTAB) || (type == SHT_SYMTAB) )
   47.79 -        {
   47.80 -             elf_msg(elf, "%s: shdr %i at 0x%p -> 0x%p\n", __func__, i,
   47.81 -                     elf_section_start(elf, (elf_shdr *)shdr), (void *)maxva);
   47.82 -             tmp = elf_copy_section(elf, (elf_shdr *)shdr, (void *)maxva);
   47.83 -             /* Mangled to be based on ELF header location. */
   47.84 -             elf_hdr_elm(elf, (elf_shdr *)shdr, sh_offset,
   47.85 -                         maxva - symtab_addr);
   47.86 -             maxva = tmp;
   47.87 -        }
   47.88 -        shdr += elf_uval(elf, elf->ehdr, e_shentsize);
   47.89 -    }
   47.90 -
   47.91 -    /* Write down the actual sym size. */
   47.92 -    p = (char *)symbase;
   47.93 -    *(long *)p = maxva - symtab_addr; /* sym size */
   47.94 -
   47.95 -#undef elf_ehdr_elm
   47.96 -
   47.97 -    return 0;
   47.98 -}
   47.99 -
  47.100  static int elf_xen_addr_calc_check(struct elf_binary *elf,
  47.101                                     struct elf_dom_parms *parms)
  47.102  {
  47.103 @@ -467,13 +374,16 @@ static int elf_xen_addr_calc_check(struc
  47.104      parms->virt_offset = parms->virt_base - parms->elf_paddr_offset;
  47.105      parms->virt_kstart = elf->pstart + parms->virt_offset;
  47.106      parms->virt_kend   = elf->pend   + parms->virt_offset;
  47.107 -    parms->virt_end    = parms->virt_kend;
  47.108  
  47.109      if ( parms->virt_entry == UNSET_ADDR )
  47.110          parms->virt_entry = elf_uval(elf, elf->ehdr, e_entry);
  47.111  
  47.112      if ( parms->bsd_symtab )
  47.113 -        elf_xen_loadsymtab(elf, parms);
  47.114 +    {
  47.115 +        elf_parse_bsdsyms(elf, parms->virt_kend);
  47.116 +        if ( elf->bsd_symtab_pend )
  47.117 +            parms->virt_kend = elf->bsd_symtab_pend + parms->virt_offset;
  47.118 +    }
  47.119  
  47.120      elf_msg(elf, "%s: addresses:\n", __FUNCTION__);
  47.121      elf_msg(elf, "    virt_base        = 0x%" PRIx64 "\n", parms->virt_base);
  47.122 @@ -481,14 +391,12 @@ static int elf_xen_addr_calc_check(struc
  47.123      elf_msg(elf, "    virt_offset      = 0x%" PRIx64 "\n", parms->virt_offset);
  47.124      elf_msg(elf, "    virt_kstart      = 0x%" PRIx64 "\n", parms->virt_kstart);
  47.125      elf_msg(elf, "    virt_kend        = 0x%" PRIx64 "\n", parms->virt_kend);
  47.126 -    elf_msg(elf, "    virt_end         = 0x%" PRIx64 "\n", parms->virt_end);
  47.127      elf_msg(elf, "    virt_entry       = 0x%" PRIx64 "\n", parms->virt_entry);
  47.128  
  47.129      if ( (parms->virt_kstart > parms->virt_kend) ||
  47.130           (parms->virt_entry < parms->virt_kstart) ||
  47.131           (parms->virt_entry > parms->virt_kend) ||
  47.132 -         (parms->virt_base > parms->virt_kstart) ||
  47.133 -         (parms->virt_kend > parms->virt_end) )
  47.134 +         (parms->virt_base > parms->virt_kstart) )
  47.135      {
  47.136          elf_err(elf, "%s: ERROR: ELF start or entries are out of bounds.\n",
  47.137                  __FUNCTION__);
    48.1 --- a/xen/common/libelf/libelf-loader.c	Sun Aug 12 12:19:13 2007 -0600
    48.2 +++ b/xen/common/libelf/libelf-loader.c	Sun Aug 12 14:50:02 2007 -0600
    48.3 @@ -10,8 +10,6 @@ int elf_init(struct elf_binary *elf, con
    48.4  {
    48.5      const elf_shdr *shdr;
    48.6      uint64_t i, count, section, offset;
    48.7 -    uint64_t low = -1;
    48.8 -    uint64_t high = 0;
    48.9  
   48.10      if ( !elf_is_elfbinary(image) )
   48.11      {
   48.12 @@ -22,14 +20,10 @@ int elf_init(struct elf_binary *elf, con
   48.13      memset(elf, 0, sizeof(*elf));
   48.14      elf->image = image;
   48.15      elf->size = size;
   48.16 -    elf->ehdr = (elf_ehdr *) image;
   48.17 +    elf->ehdr = (elf_ehdr *)image;
   48.18      elf->class = elf->ehdr->e32.e_ident[EI_CLASS];
   48.19      elf->data = elf->ehdr->e32.e_ident[EI_DATA];
   48.20  
   48.21 -#ifdef VERBOSE
   48.22 -    elf_set_verbose(elf);
   48.23 -#endif
   48.24 -
   48.25      /* Sanity check phdr. */
   48.26      offset = elf_uval(elf, elf->ehdr, e_phoff) +
   48.27          elf_uval(elf, elf->ehdr, e_phentsize) * elf_phdr_count(elf);
   48.28 @@ -60,43 +54,18 @@ int elf_init(struct elf_binary *elf, con
   48.29      count = elf_shdr_count(elf);
   48.30      for ( i = 0; i < count; i++ )
   48.31      {
   48.32 -        const char *sh_symend, *sh_strend;
   48.33 -
   48.34          shdr = elf_shdr_by_index(elf, i);
   48.35          if ( elf_uval(elf, shdr, sh_type) != SHT_SYMTAB )
   48.36              continue;
   48.37          elf->sym_tab = shdr;
   48.38 -        sh_symend = (const char *)elf_section_end(elf, shdr);
   48.39          shdr = elf_shdr_by_index(elf, elf_uval(elf, shdr, sh_link));
   48.40          if ( shdr == NULL )
   48.41          {
   48.42              elf->sym_tab = NULL;
   48.43 -            sh_symend = 0;
   48.44              continue;
   48.45          }
   48.46          elf->sym_strtab = elf_section_start(elf, shdr);
   48.47 -        sh_strend = (const char *)elf_section_end(elf, shdr);
   48.48 -
   48.49 -        if ( low > (unsigned long)elf->sym_tab )
   48.50 -            low = (unsigned long)elf->sym_tab;
   48.51 -        if ( low > (unsigned long)shdr )
   48.52 -            low = (unsigned long)shdr;
   48.53 -
   48.54 -        if ( high < ((unsigned long)sh_symend) )
   48.55 -            high = (unsigned long)sh_symend;
   48.56 -        if ( high < ((unsigned long)sh_strend) )
   48.57 -            high = (unsigned long)sh_strend;
   48.58 -
   48.59 -        elf_msg(elf, "%s: shdr: sym_tab=%p size=0x%" PRIx64 "\n",
   48.60 -                __FUNCTION__, elf->sym_tab,
   48.61 -                elf_uval(elf, elf->sym_tab, sh_size));
   48.62 -        elf_msg(elf, "%s: shdr: str_tab=%p size=0x%" PRIx64 "\n",
   48.63 -                __FUNCTION__, elf->sym_strtab, elf_uval(elf, shdr, sh_size));
   48.64 -
   48.65 -        elf->sstart = low;
   48.66 -        elf->send = high;
   48.67 -        elf_msg(elf, "%s: symbol map: 0x%" PRIx64 " -> 0x%" PRIx64 "\n",
   48.68 -                __FUNCTION__, elf->sstart, elf->send);
   48.69 +        break;
   48.70      }
   48.71  
   48.72      return 0;
   48.73 @@ -115,6 +84,101 @@ void elf_set_verbose(struct elf_binary *
   48.74  }
   48.75  #endif
   48.76  
   48.77 +/* Calculate the required additional kernel space for the elf image */
   48.78 +void elf_parse_bsdsyms(struct elf_binary *elf, uint64_t pstart)
   48.79 +{
   48.80 +    uint64_t sz;
   48.81 +    const elf_shdr *shdr;
   48.82 +    int i, type;
   48.83 +
   48.84 +    if ( !elf->sym_tab )
   48.85 +        return;
   48.86 +
   48.87 +    pstart = elf_round_up(elf, pstart);
   48.88 +
   48.89 +    /* Space to store the size of the elf image */
   48.90 +    sz = sizeof(uint32_t);
   48.91 +
   48.92 +    /* Space for the elf and elf section headers */
   48.93 +    sz += (elf_uval(elf, elf->ehdr, e_ehsize) +
   48.94 +           elf_shdr_count(elf) * elf_uval(elf, elf->ehdr, e_shentsize));
   48.95 +    sz = elf_round_up(elf, sz);
   48.96 +
   48.97 +    /* Space for the symbol and string tables. */
   48.98 +    for ( i = 0; i < elf_shdr_count(elf); i++ )
   48.99 +    {
  48.100 +        shdr = elf_shdr_by_index(elf, i);
  48.101 +        type = elf_uval(elf, (elf_shdr *)shdr, sh_type);
  48.102 +        if ( (type == SHT_STRTAB) || (type == SHT_SYMTAB) )
  48.103 +            sz = elf_round_up(elf, sz + elf_uval(elf, shdr, sh_size));
  48.104 +    }
  48.105 +
  48.106 +    elf->bsd_symtab_pstart = pstart;
  48.107 +    elf->bsd_symtab_pend   = pstart + sz;
  48.108 +}
  48.109 +
  48.110 +static void elf_load_bsdsyms(struct elf_binary *elf)
  48.111 +{
  48.112 +    elf_ehdr *sym_ehdr;
  48.113 +    unsigned long sz;
  48.114 +    char *maxva, *symbase, *symtab_addr;
  48.115 +    elf_shdr *shdr;
  48.116 +    int i, type;
  48.117 +
  48.118 +    if ( !elf->bsd_symtab_pstart )
  48.119 +        return;
  48.120 +
  48.121 +#define elf_hdr_elm(_elf, _hdr, _elm, _val)     \
  48.122 +do {                                            \
  48.123 +    if ( elf_64bit(_elf) )                      \
  48.124 +        (_hdr)->e64._elm = _val;                \
  48.125 +    else                                        \
  48.126 +        (_hdr)->e32._elm = _val;                \
  48.127 +} while ( 0 )
  48.128 +
  48.129 +    symbase = elf_get_ptr(elf, elf->bsd_symtab_pstart);
  48.130 +    symtab_addr = maxva = symbase + sizeof(uint32_t);
  48.131 +
  48.132 +    /* Set up Elf header. */
  48.133 +    sym_ehdr = (elf_ehdr *)symtab_addr;
  48.134 +    sz = elf_uval(elf, elf->ehdr, e_ehsize);
  48.135 +    memcpy(sym_ehdr, elf->ehdr, sz);
  48.136 +    maxva += sz; /* no round up */
  48.137 +
  48.138 +    elf_hdr_elm(elf, sym_ehdr, e_phoff, 0);
  48.139 +    elf_hdr_elm(elf, sym_ehdr, e_shoff, elf_uval(elf, elf->ehdr, e_ehsize));
  48.140 +    elf_hdr_elm(elf, sym_ehdr, e_phentsize, 0);
  48.141 +    elf_hdr_elm(elf, sym_ehdr, e_phnum, 0);
  48.142 +
  48.143 +    /* Copy Elf section headers. */
  48.144 +    shdr = (elf_shdr *)maxva;
  48.145 +    sz = elf_shdr_count(elf) * elf_uval(elf, elf->ehdr, e_shentsize);
  48.146 +    memcpy(shdr, elf->image + elf_uval(elf, elf->ehdr, e_shoff), sz);
  48.147 +    maxva = (char *)(long)elf_round_up(elf, (long)maxva + sz);
  48.148 +
  48.149 +    for ( i = 0; i < elf_shdr_count(elf); i++ )
  48.150 +    {
  48.151 +        type = elf_uval(elf, shdr, sh_type);
  48.152 +        if ( (type == SHT_STRTAB) || (type == SHT_SYMTAB) )
  48.153 +        {
  48.154 +             elf_msg(elf, "%s: shdr %i at 0x%p -> 0x%p\n", __func__, i,
  48.155 +                     elf_section_start(elf, shdr), maxva);
  48.156 +             sz = elf_uval(elf, shdr, sh_size);
  48.157 +             memcpy(maxva, elf_section_start(elf, shdr), sz);
  48.158 +             /* Mangled to be based on ELF header location. */
  48.159 +             elf_hdr_elm(elf, shdr, sh_offset, maxva - symtab_addr);
  48.160 +             maxva = (char *)(long)elf_round_up(elf, (long)maxva + sz);
  48.161 +        }
  48.162 +        shdr = (elf_shdr *)((long)shdr +
  48.163 +                            (long)elf_uval(elf, elf->ehdr, e_shentsize));
  48.164 +    }
  48.165 +
  48.166 +    /* Write down the actual sym size. */
  48.167 +    *(uint32_t *)symbase = maxva - symtab_addr;
  48.168 +
  48.169 +#undef elf_ehdr_elm
  48.170 +}
  48.171 +
  48.172  void elf_parse_binary(struct elf_binary *elf)
  48.173  {
  48.174      const elf_phdr *phdr;
  48.175 @@ -165,6 +229,8 @@ void elf_load_binary(struct elf_binary *
  48.176          memcpy(dest, elf->image + offset, filesz);
  48.177          memset(dest + filesz, 0, memsz - filesz);
  48.178      }
  48.179 +
  48.180 +    elf_load_bsdsyms(elf);
  48.181  }
  48.182  
  48.183  void *elf_get_ptr(struct elf_binary *elf, unsigned long addr)
    49.1 --- a/xen/common/libelf/libelf-tools.c	Sun Aug 12 12:19:13 2007 -0600
    49.2 +++ b/xen/common/libelf/libelf-tools.c	Sun Aug 12 14:50:02 2007 -0600
    49.3 @@ -238,36 +238,6 @@ int elf_phdr_is_loadable(struct elf_bina
    49.4      return ((p_type == PT_LOAD) && (p_flags & (PF_W | PF_X)) != 0);
    49.5  }
    49.6  
    49.7 -unsigned long
    49.8 -elf_copy_ehdr(struct elf_binary *elf, void *dest)
    49.9 -{
   49.10 -    uint64_t size;
   49.11 -
   49.12 -    size = elf_uval(elf, elf->ehdr, e_ehsize);
   49.13 -    memcpy(dest, elf->ehdr, size);
   49.14 -    return elf_round_up(elf, (unsigned long)(dest) + size);
   49.15 -}
   49.16 -
   49.17 -unsigned long
   49.18 -elf_copy_shdr(struct elf_binary *elf, void *dest)
   49.19 -{
   49.20 -    uint64_t size;
   49.21 -
   49.22 -    size = elf_shdr_count(elf) * elf_uval(elf, elf->ehdr, e_shentsize);
   49.23 -    memcpy(dest, elf->image + elf_uval(elf, elf->ehdr, e_shoff), size);
   49.24 -    return elf_round_up(elf, (unsigned long)(dest) + size);
   49.25 -}
   49.26 -
   49.27 -unsigned long
   49.28 -elf_copy_section(struct elf_binary *elf, const elf_shdr *shdr, void *dest)
   49.29 -{
   49.30 -    uint64_t size;
   49.31 -
   49.32 -    size = elf_uval(elf, shdr, sh_size);
   49.33 -    memcpy(dest, elf_section_start(elf, shdr), size);
   49.34 -    return elf_round_up(elf, (unsigned long)(dest) + size);
   49.35 -}
   49.36 -
   49.37  /*
   49.38   * Local variables:
   49.39   * mode: C
    50.1 --- a/xen/common/page_alloc.c	Sun Aug 12 12:19:13 2007 -0600
    50.2 +++ b/xen/common/page_alloc.c	Sun Aug 12 14:50:02 2007 -0600
    50.3 @@ -91,6 +91,14 @@ custom_param("dma_emergency_pool", parse
    50.4  #define round_pgdown(_p)  ((_p)&PAGE_MASK)
    50.5  #define round_pgup(_p)    (((_p)+(PAGE_SIZE-1))&PAGE_MASK)
    50.6  
    50.7 +#ifndef NDEBUG
    50.8 +/* Avoid callers relying on allocations returning zeroed pages. */
    50.9 +#define scrub_page(p) memset((p), 0xc2, PAGE_SIZE)
   50.10 +#else
   50.11 +/* For a production build, clear_page() is the fastest way to scrub. */
   50.12 +#define scrub_page(p) clear_page(p)
   50.13 +#endif
   50.14 +
   50.15  static DEFINE_SPINLOCK(page_scrub_lock);
   50.16  LIST_HEAD(page_scrub_list);
   50.17  static unsigned long scrub_pages;
   50.18 @@ -618,13 +626,13 @@ void __init scrub_heap_pages(void)
   50.19              {
   50.20                  p = page_to_virt(mfn_to_page(mfn));
   50.21                  memguard_unguard_range(p, PAGE_SIZE);
   50.22 -                clear_page(p);
   50.23 +                scrub_page(p);
   50.24                  memguard_guard_range(p, PAGE_SIZE);
   50.25              }
   50.26              else
   50.27              {
   50.28                  p = map_domain_page(mfn);
   50.29 -                clear_page(p);
   50.30 +                scrub_page(p);
   50.31                  unmap_domain_page(p);
   50.32              }
   50.33          }
   50.34 @@ -1018,7 +1026,7 @@ static void page_scrub_softirq(void)
   50.35              pg = list_entry(ent, struct page_info, list);
   50.36              ent = ent->prev;
   50.37              p = map_domain_page(page_to_mfn(pg));
   50.38 -            clear_page(p);
   50.39 +            scrub_page(p);
   50.40              unmap_domain_page(p);
   50.41              free_heap_pages(pfn_dom_zone_type(page_to_mfn(pg)), pg, 0);
   50.42          }
    51.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    51.2 +++ b/xen/include/asm-powerpc/boot.h	Sun Aug 12 14:50:02 2007 -0600
    51.3 @@ -0,0 +1,46 @@
    51.4 +/*
    51.5 + * This program is free software; you can redistribute it and/or modify
    51.6 + * it under the terms of the GNU General Public License as published by
    51.7 + * the Free Software Foundation; either version 2 of the License, or
    51.8 + * (at your option) any later version.
    51.9 + *
   51.10 + * This program is distributed in the hope that it will be useful,
   51.11 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
   51.12 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   51.13 + * GNU General Public License for more details.
   51.14 + *
   51.15 + * You should have received a copy of the GNU General Public License
   51.16 + * along with this program; if not, write to the Free Software
   51.17 + * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
   51.18 + *
   51.19 + * Copyright IBM Corp. 2007
   51.20 + *
   51.21 + * Authors: Hollis Blanchard <hollisb@us.ibm.com>
   51.22 + */
   51.23 +
   51.24 +#ifndef _ASM_BOOT_H
   51.25 +#define _ASM_BOOT_H
   51.26 +
   51.27 +/* a collection of interfaces used during boot. */
   51.28 +
   51.29 +extern void boot_of_init(ulong, ulong);
   51.30 +extern void *boot_of_devtree(void);
   51.31 +extern void boot_of_serial(void *);
   51.32 +extern void boot_of_finish(void);
   51.33 +extern int boot_of_mem_avail(int pos, ulong *startpage, ulong *endpage);
   51.34 +
   51.35 +extern void parse_multiboot(ulong tags_addr);
   51.36 +
   51.37 +extern void memory_init(void);
   51.38 +
   51.39 +extern char *xen_cmdline;
   51.40 +extern ulong dom0_addr;
   51.41 +extern ulong dom0_len;
   51.42 +extern char *dom0_cmdline;
   51.43 +extern ulong initrd_start;
   51.44 +extern ulong initrd_len;
   51.45 +
   51.46 +/* From linker script. */
   51.47 +extern char builtin_cmdline[];
   51.48 +
   51.49 +#endif
    52.1 --- a/xen/include/asm-x86/domain.h	Sun Aug 12 12:19:13 2007 -0600
    52.2 +++ b/xen/include/asm-x86/domain.h	Sun Aug 12 14:50:02 2007 -0600
    52.3 @@ -77,10 +77,10 @@ struct shadow_domain {
    52.4      int               locker; /* processor which holds the lock */
    52.5      const char       *locker_function; /* Func that took it */
    52.6      unsigned int      opt_flags;    /* runtime tunable optimizations on/off */
    52.7 -    struct list_head  pinned_shadows; 
    52.8 +    struct list_head  pinned_shadows;
    52.9  
   52.10      /* Memory allocation */
   52.11 -    struct list_head  freelists[SHADOW_MAX_ORDER + 1]; 
   52.12 +    struct list_head  freelists[SHADOW_MAX_ORDER + 1];
   52.13      struct list_head  p2m_freelist;
   52.14      unsigned int      total_pages;  /* number of pages allocated */
   52.15      unsigned int      free_pages;   /* number of pages on freelists */
   52.16 @@ -116,7 +116,7 @@ struct hap_domain {
   52.17      spinlock_t        lock;
   52.18      int               locker;
   52.19      const char       *locker_function;
   52.20 -    
   52.21 +
   52.22      struct list_head  freelist;
   52.23      unsigned int      total_pages;  /* number of pages allocated */
   52.24      unsigned int      free_pages;   /* number of pages on freelists */
   52.25 @@ -131,13 +131,13 @@ struct p2m_domain {
   52.26      spinlock_t         lock;
   52.27      int                locker;   /* processor which holds the lock */
   52.28      const char        *locker_function; /* Func that took it */
   52.29 -    
   52.30 +
   52.31      /* Pages used to construct the p2m */
   52.32      struct list_head   pages;
   52.33  
   52.34      /* Functions to call to get or free pages for the p2m */
   52.35      struct page_info * (*alloc_page  )(struct domain *d);
   52.36 -    void               (*free_page   )(struct domain *d, 
   52.37 +    void               (*free_page   )(struct domain *d,
   52.38                                         struct page_info *pg);
   52.39  
   52.40      /* Highest guest frame that's ever been mapped in the p2m */
   52.41 @@ -177,6 +177,7 @@ struct paging_domain {
   52.42      /* log dirty support */
   52.43      struct log_dirty_domain log_dirty;
   52.44  };
   52.45 +
   52.46  struct paging_vcpu {
   52.47      /* Pointers to mode-specific entry points. */
   52.48      struct paging_mode *mode;
   52.49 @@ -184,9 +185,9 @@ struct paging_vcpu {
   52.50      unsigned int translate_enabled:1;
   52.51      /* HVM guest: last emulate was to a pagetable */
   52.52      unsigned int last_write_was_pt:1;
   52.53 -    /* Translated guest: virtual TLB */    
   52.54 +    /* Translated guest: virtual TLB */
   52.55      struct shadow_vtlb *vtlb;
   52.56 -    spinlock_t          vtlb_lock; 
   52.57 +    spinlock_t          vtlb_lock;
   52.58  
   52.59      /* paging support extension */
   52.60      struct shadow_vcpu shadow;
   52.61 @@ -303,7 +304,7 @@ struct arch_vcpu
   52.62       * shadow refcounts are in use */
   52.63      pagetable_t shadow_table[4];        /* (MFN) shadow(s) of guest */
   52.64      pagetable_t monitor_table;          /* (MFN) hypervisor PT (for HVM) */
   52.65 -    unsigned long cr3;           	    /* (MA) value to install in HW CR3 */
   52.66 +    unsigned long cr3;                  /* (MA) value to install in HW CR3 */
   52.67  
   52.68      /* Current LDT details. */
   52.69      unsigned long shadow_ldt_mapcnt;
    53.1 --- a/xen/include/asm-x86/hap.h	Sun Aug 12 12:19:13 2007 -0600
    53.2 +++ b/xen/include/asm-x86/hap.h	Sun Aug 12 14:50:02 2007 -0600
    53.3 @@ -3,7 +3,7 @@
    53.4   *
    53.5   * hardware-assisted paging
    53.6   * Copyright (c) 2007 Advanced Micro Devices (Wei Huang)
    53.7 - * 
    53.8 + *
    53.9   * Parts of this code are Copyright (c) 2006 by XenSource Inc.
   53.10   * Parts of this code are Copyright (c) 2006 by Michael A Fetterman
   53.11   * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
    54.1 --- a/xen/include/asm-x86/mach-es7000/mach_mpparse.h	Sun Aug 12 12:19:13 2007 -0600
    54.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    54.3 @@ -1,45 +0,0 @@
    54.4 -#ifndef __ASM_MACH_MPPARSE_H
    54.5 -#define __ASM_MACH_MPPARSE_H
    54.6 -
    54.7 -#include <xen/acpi.h>
    54.8 -
    54.9 -extern int parse_unisys_oem(char *oemptr);
   54.10 -extern int find_unisys_acpi_oem_table(unsigned long *oem_addr);
   54.11 -
   54.12 -static inline int mps_oem_check(struct mp_config_table *mpc, char *oem,
   54.13 -		char *productid)
   54.14 -{
   54.15 -	if (mpc->mpc_oemptr) {
   54.16 -		struct mp_config_oemtable *oem_table = 
   54.17 -			(struct mp_config_oemtable *)(long)mpc->mpc_oemptr;
   54.18 -		if (!strncmp(oem, "UNISYS", 6))
   54.19 -			return parse_unisys_oem((char *)oem_table);
   54.20 -	}
   54.21 -	return 0;
   54.22 -}
   54.23 -
   54.24 -static inline int es7000_check_dsdt(void)
   54.25 -{
   54.26 -	struct acpi_table_header *header = NULL;
   54.27 -	if(!acpi_get_table_header_early(ACPI_DSDT, &header))
   54.28 -		acpi_table_print(header, 0);
   54.29 -	if (!strncmp(header->oem_id, "UNISYS", 6))
   54.30 -		return 1;
   54.31 -	return 0;
   54.32 -}
   54.33 -
   54.34 -/* Hook from generic ACPI tables.c */
   54.35 -static inline int acpi_madt_oem_check(char *oem_id, char *oem_table_id)
   54.36 -{
   54.37 -	unsigned long oem_addr;
   54.38 -	if (!find_unisys_acpi_oem_table(&oem_addr)) {
   54.39 -		if (es7000_check_dsdt())
   54.40 -			return parse_unisys_oem((char *)oem_addr);
   54.41 -		else
   54.42 -			return 1;
   54.43 -	}
   54.44 -	return 0;
   54.45 -}
   54.46 -
   54.47 -
   54.48 -#endif /* __ASM_MACH_MPPARSE_H */
    55.1 --- a/xen/include/asm-x86/msr.h	Sun Aug 12 12:19:13 2007 -0600
    55.2 +++ b/xen/include/asm-x86/msr.h	Sun Aug 12 14:50:02 2007 -0600
    55.3 @@ -240,6 +240,11 @@ static inline void write_efer(__u64 val)
    55.4  #define MSR_K8_MC4_ADDR			0x412
    55.5  #define MSR_K8_MC4_MISC			0x413
    55.6  
    55.7 +#define MSR_K8_MC5_CTL			0x414
    55.8 +#define MSR_K8_MC5_STATUS		0x415
    55.9 +#define MSR_K8_MC5_ADDR			0x416
   55.10 +#define MSR_K8_MC5_MISC			0x417
   55.11 +
   55.12  /* Pentium IV performance counter MSRs */
   55.13  #define MSR_P4_BPU_PERFCTR0 		0x300
   55.14  #define MSR_P4_BPU_PERFCTR1 		0x301
    56.1 --- a/xen/include/public/libelf.h	Sun Aug 12 12:19:13 2007 -0600
    56.2 +++ b/xen/include/public/libelf.h	Sun Aug 12 14:50:02 2007 -0600
    56.3 @@ -65,12 +65,13 @@ struct elf_binary {
    56.4  
    56.5      /* loaded to */
    56.6      char *dest;
    56.7 -    uint64_t sstart;
    56.8 -    uint64_t send;
    56.9      uint64_t pstart;
   56.10      uint64_t pend;
   56.11      uint64_t reloc_offset;
   56.12  
   56.13 +    uint64_t bsd_symtab_pstart;
   56.14 +    uint64_t bsd_symtab_pend;
   56.15 +
   56.16  #ifndef __XEN__
   56.17      /* misc */
   56.18      FILE *log;
   56.19 @@ -150,11 +151,6 @@ const elf_note *elf_note_next(struct elf
   56.20  int elf_is_elfbinary(const void *image);
   56.21  int elf_phdr_is_loadable(struct elf_binary *elf, const elf_phdr * phdr);
   56.22  
   56.23 -unsigned long elf_copy_ehdr(struct elf_binary *elf, void *dest);
   56.24 -unsigned long elf_copy_shdr(struct elf_binary *elf, void *dest);
   56.25 -unsigned long elf_copy_section(struct elf_binary *elf,
   56.26 -                               const elf_shdr *shdr, void *dest);
   56.27 -
   56.28  /* ------------------------------------------------------------------------ */
   56.29  /* xc_libelf_loader.c                                                       */
   56.30  
   56.31 @@ -171,6 +167,8 @@ void elf_load_binary(struct elf_binary *
   56.32  void *elf_get_ptr(struct elf_binary *elf, unsigned long addr);
   56.33  uint64_t elf_lookup_addr(struct elf_binary *elf, const char *symbol);
   56.34  
   56.35 +void elf_parse_bsdsyms(struct elf_binary *elf, uint64_t pstart); /* private */
   56.36 +
   56.37  /* ------------------------------------------------------------------------ */
   56.38  /* xc_libelf_relocate.c                                                     */
   56.39  
   56.40 @@ -221,8 +219,7 @@ struct elf_dom_parms {
   56.41      /* calculated */
   56.42      uint64_t virt_offset;
   56.43      uint64_t virt_kstart;
   56.44 -    uint64_t virt_kend; /* end of kernel image */
   56.45 -    uint64_t virt_end;  /* end of kernel symtab (== virt_kend if none) */
   56.46 +    uint64_t virt_kend;
   56.47  };
   56.48  
   56.49  static inline void elf_xen_feature_set(int nr, uint32_t * addr)
   56.50 @@ -245,7 +242,4 @@ int elf_xen_parse_guest_info(struct elf_
   56.51  int elf_xen_parse(struct elf_binary *elf,
   56.52                    struct elf_dom_parms *parms);
   56.53  
   56.54 -int elf_xen_dom_load_binary(struct elf_binary *elf,
   56.55 -                            struct elf_dom_parms *parms);
   56.56 -
   56.57  #endif /* __XC_LIBELF__ */
    57.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    57.2 +++ b/xen/include/xen/multiboot2.h	Sun Aug 12 14:50:02 2007 -0600
    57.3 @@ -0,0 +1,99 @@
    57.4 +/*
    57.5 + * This program is free software; you can redistribute it and/or
    57.6 + * modify it under the terms of the GNU General Public License as
    57.7 + * published by the Free Software Foundation; either version 2 of the
    57.8 + * License, or (at your option) any later version.
    57.9 + *
   57.10 + * This program is distributed in the hope that it will be useful,
   57.11 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
   57.12 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   57.13 + * GNU General Public License for more details.
   57.14 + *
   57.15 + * You should have received a copy of the GNU General Public License
   57.16 + * along with this program; if not, write to the Free Software
   57.17 + * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
   57.18 + *
   57.19 + * Copyright IBM Corp. 2006, 2007
   57.20 + *
   57.21 + * Authors: Hollis Blanchard <hollisb@us.ibm.com>
   57.22 + *          
   57.23 + */
   57.24 +
   57.25 +#ifndef _MULTIBOOT2_H_
   57.26 +#define _MULTIBOOT2_H_
   57.27 +
   57.28 +/* How many bytes from the start of the file we search for the header.  */
   57.29 +#define MB2_HEADER_SEARCH           8192
   57.30 +
   57.31 +/* The magic field should contain this.  */
   57.32 +#define MB2_HEADER_MAGIC            0xe85250d6
   57.33 +
   57.34 +/* Passed from the bootloader to the kernel.  */
   57.35 +#define MB2_BOOTLOADER_MAGIC        0x36d76289
   57.36 +
   57.37 +#include <stdint.h>
   57.38 +
   57.39 +#define for_each_tag(_tag, _tags) \
   57.40 +    for ((_tag) = (_tags); \
   57.41 +            ((_tag)->key != MB2_TAG_END && (_tag)->key != 0); \
   57.42 +            (_tag) = (void *)(_tag) + (_tag)->len)
   57.43 +
   57.44 +typedef uint32_t mb2_word;
   57.45 +
   57.46 +struct mb2_header
   57.47 +{
   57.48 +  uint32_t magic;
   57.49 +};
   57.50 +
   57.51 +struct mb2_tag_header
   57.52 +{
   57.53 +  uint32_t key;
   57.54 +  uint32_t len;
   57.55 +};
   57.56 +
   57.57 +#define MB2_TAG_START     1
   57.58 +struct mb2_tag_start
   57.59 +{
   57.60 +  struct mb2_tag_header header;
   57.61 +  mb2_word size; /* Total size of all mb2 tags. */
   57.62 +};
   57.63 +
   57.64 +#define MB2_TAG_NAME      2
   57.65 +struct mb2_tag_name
   57.66 +{
   57.67 +  struct mb2_tag_header header;
   57.68 +  char name[1];
   57.69 +};
   57.70 +
   57.71 +#define MB2_TAG_MODULE    3
   57.72 +struct mb2_tag_module
   57.73 +{
   57.74 +  struct mb2_tag_header header;
   57.75 +  mb2_word addr;
   57.76 +  mb2_word size;
   57.77 +  unsigned char type[36];
   57.78 +  unsigned char cmdline[1];
   57.79 +};
   57.80 +
   57.81 +#define MB2_TAG_MEMORY    4
   57.82 +struct mb2_tag_memory
   57.83 +{
   57.84 +  struct mb2_tag_header header;
   57.85 +  mb2_word addr;
   57.86 +  mb2_word size;
   57.87 +  mb2_word type;
   57.88 +};
   57.89 +
   57.90 +#define MB2_TAG_UNUSED    5
   57.91 +struct mb2_tag_unused
   57.92 +{
   57.93 +  struct mb2_tag_header header;
   57.94 +};
   57.95 +
   57.96 +#define MB2_TAG_END       0xffff
   57.97 +struct mb2_tag_end
   57.98 +{
   57.99 +  struct mb2_tag_header header;
  57.100 +};
  57.101 +
  57.102 +#endif