diff --git a/Base Map calculator.ods b/Base Map calculator.ods index 5e99f29..e0992d2 100644 Binary files a/Base Map calculator.ods and b/Base Map calculator.ods differ diff --git a/LICENSE.md b/LICENSE.md index cf846af..1599aac 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -8,3 +8,5 @@ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +IT IS THE RESPONSIBILITY OF THE INSTALLER AND/OR USER OF THIS PRODUCT TO ENSURE THAT IT IS USED IN COMPLIANCE WITH ALL APPLICABLE LAWS AND REGULATIONS. \ No newline at end of file diff --git a/MerpMod/BoostHackTables.c b/MerpMod/BoostHackTables.c index 7bae585..05d3372 100644 --- a/MerpMod/BoostHackTables.c +++ b/MerpMod/BoostHackTables.c @@ -18,6 +18,9 @@ //Constants ///////////////// #if BOOST_HACKS + +unsigned char DefaultBoostHackEnabled BOOSTDATA = 0x01; + float RPMLockWGDC BOOSTDATA = 3000.0f; float ThrottleLockWGDC BOOSTDATA = 85.0f; @@ -77,22 +80,22 @@ float PGWGCols1i[6] __attribute__ ((section ("RomHole_SpeedDensityTables"),align float PGWGRows1i[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short PGWGData1i[96] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0}; ThreeDTable PGWGTable1i __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 6, @@ -114,22 +117,22 @@ float PGWGCols2i[6] __attribute__ ((section ("RomHole_SpeedDensityTables"),align float PGWGRows2i[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short PGWGData2i[96] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0}; ThreeDTable PGWGTable2i __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 6, @@ -151,22 +154,22 @@ float PGWGCols1s[6] __attribute__ ((section ("RomHole_SpeedDensityTables"),align float PGWGRows1s[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short PGWGData1s[96] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0}; ThreeDTable PGWGTable1s __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 6, @@ -188,22 +191,22 @@ float PGWGCols2s[6] __attribute__ ((section ("RomHole_SpeedDensityTables"),align float PGWGRows2s[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short PGWGData2s[96] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0}; ThreeDTable PGWGTable2s __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 6, @@ -224,22 +227,22 @@ float PGWGCols1ss[6] __attribute__ ((section ("RomHole_SpeedDensityTables"),alig float PGWGRows1ss[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short PGWGData1ss[96] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0}; ThreeDTable PGWGTable1ss __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 6, @@ -261,22 +264,22 @@ float PGWGCols2ss[6] __attribute__ ((section ("RomHole_SpeedDensityTables"),alig float PGWGRows2ss[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short PGWGData2ss[96] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0}; ThreeDTable PGWGTable2ss __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 6, @@ -313,22 +316,22 @@ float PGTBCols1i[6] __attribute__ ((section ("RomHole_SpeedDensityTables"),align float PGTBRows1i[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short PGTBData1i[96] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000}; +{760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760}; ThreeDTable PGTBTable1i __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 6, @@ -337,7 +340,7 @@ ThreeDTable PGTBTable1i __attribute__ ((section ("RomHole_SpeedDensityTables"),a .rowHeaderArray = PGTBRows1i, .tableCells = PGTBData1i, .tableType = UInt16Table3D, - .multiplier = 1.0f,//0x3F800000 + .multiplier = 1.0f,//0x3F800000 .01933677 .offset = 0 }; @@ -350,22 +353,22 @@ float PGTBCols2i[6] __attribute__ ((section ("RomHole_SpeedDensityTables"),align float PGTBRows2i[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short PGTBData2i[96] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000}; +{760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760}; ThreeDTable PGTBTable2i __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 6, @@ -387,22 +390,22 @@ float PGTBCols1s[6] __attribute__ ((section ("RomHole_SpeedDensityTables"),align float PGTBRows1s[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short PGTBData1s[96] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000}; +{760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760}; ThreeDTable PGTBTable1s __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 6, @@ -424,22 +427,22 @@ float PGTBCols2s[6] __attribute__ ((section ("RomHole_SpeedDensityTables"),align float PGTBRows2s[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short PGTBData2s[96] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000}; +{760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760}; ThreeDTable PGTBTable2s __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 6, @@ -461,22 +464,22 @@ float PGTBCols1ss[6] __attribute__ ((section ("RomHole_SpeedDensityTables"),alig float PGTBRows1ss[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short PGTBData1ss[96] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000}; +{760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760}; ThreeDTable PGTBTable1ss __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 6, @@ -498,22 +501,22 @@ float PGTBCols2ss[6] __attribute__ ((section ("RomHole_SpeedDensityTables"),alig float PGTBRows2ss[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short PGTBData2ss[96] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000}; +{760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760}; ThreeDTable PGTBTable2ss __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 6, @@ -550,22 +553,22 @@ float WGDCInitialCols1i[16] __attribute__ ((section ("RomHole_SpeedDensityTables float WGDCInitialRows1i[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short WGDCInitialData1i[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable WGDCInitialTable1i __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -586,22 +589,22 @@ float WGDCInitialCols2i[16] __attribute__ ((section ("RomHole_SpeedDensityTables float WGDCInitialRows2i[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short WGDCInitialData2i[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable WGDCInitialTable2i __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -623,22 +626,22 @@ float WGDCInitialCols1s[16] __attribute__ ((section ("RomHole_SpeedDensityTables float WGDCInitialRows1s[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short WGDCInitialData1s[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable WGDCInitialTable1s __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -659,22 +662,22 @@ float WGDCInitialCols2s[16] __attribute__ ((section ("RomHole_SpeedDensityTables float WGDCInitialRows2s[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short WGDCInitialData2s[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable WGDCInitialTable2s __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -695,22 +698,22 @@ float WGDCInitialCols1ss[16] __attribute__ ((section ("RomHole_SpeedDensityTable float WGDCInitialRows1ss[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short WGDCInitialData1ss[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable WGDCInitialTable1ss __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -731,22 +734,22 @@ float WGDCInitialCols2ss[16] __attribute__ ((section ("RomHole_SpeedDensityTable float WGDCInitialRows2ss[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short WGDCInitialData2ss[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable WGDCInitialTable2ss __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -783,22 +786,22 @@ float WGDCMaxCols1i[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),a float WGDCMaxRows1i[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short WGDCMaxData1i[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable WGDCMaxTable1i __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -819,22 +822,22 @@ float WGDCMaxCols2i[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),a float WGDCMaxRows2i[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short WGDCMaxData2i[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable WGDCMaxTable2i __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -856,22 +859,22 @@ float WGDCMaxCols1s[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),a float WGDCMaxRows1s[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short WGDCMaxData1s[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable WGDCMaxTable1s __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -892,22 +895,22 @@ float WGDCMaxCols2s[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),a float WGDCMaxRows2s[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short WGDCMaxData2s[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable WGDCMaxTable2s __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -928,22 +931,22 @@ float WGDCMaxCols1ss[16] __attribute__ ((section ("RomHole_SpeedDensityTables"), float WGDCMaxRows1ss[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short WGDCMaxData1ss[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable WGDCMaxTable1ss __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -964,22 +967,22 @@ float WGDCMaxCols2ss[16] __attribute__ ((section ("RomHole_SpeedDensityTables"), float WGDCMaxRows2ss[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short WGDCMaxData2ss[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable WGDCMaxTable2ss __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -1016,22 +1019,22 @@ float TBCols1i[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligne float TBRows1i[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short TBData1i[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable TargetBoostTable1i __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -1052,22 +1055,22 @@ float TBCols2i[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligne float TBRows2i[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short TBData2i[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable TargetBoostTable2i __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -1089,22 +1092,22 @@ float TBCols1s[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligne float TBRows1s[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short TBData1s[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable TargetBoostTable1s __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -1125,22 +1128,22 @@ float TBCols2s[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligne float TBRows2s[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short TBData2s[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable TargetBoostTable2s __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -1161,22 +1164,22 @@ float TBCols1ss[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),align float TBRows1ss[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short TBData1ss[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable TargetBoostTable1ss __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -1197,22 +1200,22 @@ float TBCols2ss[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),align float TBRows2ss[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short TBData2ss[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable TargetBoostTable2ss __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, diff --git a/MerpMod/BoostHacks.c b/MerpMod/BoostHacks.c index ad9908f..f4893cd 100644 --- a/MerpMod/BoostHacks.c +++ b/MerpMod/BoostHacks.c @@ -78,23 +78,31 @@ EcuHacksMain(); pRamVariables->PGWGComp = PGWGComp; - #if WGDC_LOCK - //Apply locks - if(*pEngineSpeed < RPMLockWGDC && *pThrottlePlate > ThrottleLockWGDC) + if(pRamVariables->BoostHackEnabled == 0x01) { - pRamVariables->WGDCInitial = 100.0; - pRamVariables->WGDCMax = 100.0; - } - else{ - #endif - - pRamVariables->WGDCInitial = WGDCInitial * PGWGComp; - pRamVariables->WGDCMax = WGDCMax * PGWGComp; + #if WGDC_LOCK + //Apply locks + if(*pEngineSpeed < RPMLockWGDC && *pThrottlePlate > ThrottleLockWGDC) + { + pRamVariables->WGDCInitial = 100.0; + pRamVariables->WGDCMax = 100.0; + } + else{ + #endif - #if WGDC_LOCK + pRamVariables->WGDCInitial = WGDCInitial * PGWGComp; + pRamVariables->WGDCMax = WGDCMax * PGWGComp; + + #if WGDC_LOCK + } + #endif } - #endif - + else + { + pRamVariables->WGDCInitial = Pull3DHooked((void*)OEMWGDCInitialTable, *pReqTorque, *pEngineSpeed); + pRamVariables->WGDCMax = Pull3DHooked((void*)OEMWGDCMaxTable, *pReqTorque, *pEngineSpeed); + } + #endif //Finish Pulling WGDC @@ -153,7 +161,12 @@ void TargetBoostHack() #endif pRamVariables->PGTBComp = PGTBComp; - pRamVariables->TargetBoost = TargetBoost * PGTBComp; + + if(pRamVariables->BoostHackEnabled == 0x01) + pRamVariables->TargetBoost = TargetBoost * PGTBComp; + else + pRamVariables->TargetBoost = Pull3DHooked((void*)OEMTargetBoostTable, *pReqTorque, *pEngineSpeed); + } #endif diff --git a/MerpMod/Definition.c b/MerpMod/Definition.c index 36bed42..95aa1f1 100644 --- a/MerpMod/Definition.c +++ b/MerpMod/Definition.c @@ -41,9 +41,10 @@ typedef struct { long op; long address; - char id[4]; + char id[8]; long buf; - long length; + char storagetype[8]; + long buf2; char name[]; } ParamDef; @@ -51,7 +52,7 @@ typedef struct { long op; long address; - char id[4]; + char id[8]; long buf; long bit; char name[]; @@ -116,36 +117,43 @@ typedef struct { #define DEFIDA2D(NAME,ADDR) const TableDef ADDR##_2DDef DEFDATA = {op: OpTable2d , address: (int)ADDR , name: NAME } #define DEFIDA3D(NAME,ADDR) const TableDef ADDR##_3DDef DEFDATA = {op: OpTable3d , address: (int)ADDR , name: NAME } -#define DEFINERAM(NAME,ADDR,LENGTH,EID) const ParamDef ADDR##_ParamDef DEFDATA = {op: OpRAM , address: (int)ADDR , id: EID , buf: OpEnd , length: 0x##LENGTH , name: NAME } +#define DEFINERAM(NAME,ADDR,TYPE,EID) const ParamDef ADDR##_ParamDef DEFDATA = {op: OpRAM , address: (int)ADDR , id: EID , buf: OpEnd , storagetype: TYPE , buf2: OpEnd, name: NAME } #define DEFINERAMBIT(NAME,ADDR,BIT,EID) const ParamBitDef ADDR##_ParamBitDef DEFDATA = {op: OpRAMBit , address: (int)ADDR , id: EID , buf: OpEnd , bit: BIT , name: NAME } -#define DEFINERAMVAR(NAME,ADDR,LENGTH,EID) const ParamDef ADDR##_ParamDef DEFDATA = {op: OpRAM , address: (int)&pRamVariables->ADDR , id: EID , buf: OpEnd , length: 0x##LENGTH , name: NAME }//TRY TO FIX THIS?? -#define DEFINERAMVARARRAY(NAME,ADDR,INDEX,LENGTH,EID) const ParamDef ADDR##INDEX##_ParamDef DEFDATA = {op: OpRAM , address: (int)&pRamVariables->ADDR[INDEX] , id: EID , buf: OpEnd , length: 0x##LENGTH , name: NAME }//TRY TO FIX THIS?? -#define DEFINERAMVARARRAYALLBITS(NAME,ADDR,INDEX,LENGTH,EID) const ParamDef ADDR##INDEX##_ParamDef DEFDATA = {op: OpRAMAllBits , address: (int)&pRamVariables->ADDR[INDEX] , id: EID , buf: OpEnd , length: 0x##LENGTH , name: NAME }//TRY TO FIX THIS?? +#define DEFINERAMVAR(NAME,ADDR,TYPE,EID) const ParamDef ADDR##_ParamDef DEFDATA = {op: OpRAM , address: (int)&pRamVariables->ADDR , id: EID , buf: OpEnd , storagetype: TYPE , buf2: OpEnd, name: NAME }//TRY TO FIX THIS?? +#define DEFINERAMVARARRAY(NAME,ADDR,INDEX,TYPE,EID) const ParamDef ADDR##INDEX##_ParamDef DEFDATA = {op: OpRAM , address: (int)&pRamVariables->ADDR[INDEX] , id: EID , buf: OpEnd , storagetype: TYPE , buf2: OpEnd name: NAME }//TRY TO FIX THIS?? +#define DEFINERAMVARARRAYALLBITS(NAME,ADDR,INDEX,TYPE,EID) const ParamDef ADDR##INDEX##_ParamDef DEFDATA = {op: OpRAMAllBits , address: (int)&pRamVariables->ADDR[INDEX] , id: EID , buf: OpEnd , storagetype: TYPE , buf2: OpEnd, name: NAME }//TRY TO FIX THIS?? //TODO: in sharptune, if no match is found, create a new one to read out RAWDATA! #if PORT_LOGGER -DEFINERAMVARARRAYALLBITS("MerpMod Port Logger A",PortParameters,0,2,"E"); -DEFINERAMVARARRAYALLBITS("MerpMod Port Logger B",PortParameters,1,2,"E"); -DEFINERAMVARARRAYALLBITS("MerpMod Port Logger C",PortParameters,2,2,"E"); -DEFINERAMVARARRAYALLBITS("MerpMod Port Logger D",PortParameters,3,2,"E"); -DEFINERAMVARARRAYALLBITS("MerpMod Port Logger E",PortParameters,4,2,"E"); -DEFINERAMVARARRAYALLBITS("MerpMod Port Logger F",PortParameters,5,2,"E"); -DEFINERAMVARARRAYALLBITS("MerpMod Port Logger G",PortParameters,6,2,"E"); -DEFINERAMVARARRAYALLBITS("MerpMod Port Logger H",PortParameters,7,2,"E"); -DEFINERAMVARARRAYALLBITS("MerpMod Port Logger J",PortParameters,8,2,"E"); -DEFINERAMVARARRAYALLBITS("MerpMod Port Logger K",PortParameters,9,2,"E"); -DEFINERAMVARARRAYALLBITS("MerpMod Port Logger L",PortParameters,10,2,"E"); +DEFINERAMVARARRAYALLBITS("MerpMod Port Logger A",PortParameters,0,"uint16","E"); +DEFINERAMVARARRAYALLBITS("MerpMod Port Logger B",PortParameters,1,"uint16","E"); +DEFINERAMVARARRAYALLBITS("MerpMod Port Logger C",PortParameters,2,"uint16","E"); +DEFINERAMVARARRAYALLBITS("MerpMod Port Logger D",PortParameters,3,"uint16","E"); +DEFINERAMVARARRAYALLBITS("MerpMod Port Logger E",PortParameters,4,"uint16","E"); +DEFINERAMVARARRAYALLBITS("MerpMod Port Logger F",PortParameters,5,"uint16","E"); +DEFINERAMVARARRAYALLBITS("MerpMod Port Logger G",PortParameters,6,"uint16","E"); +DEFINERAMVARARRAYALLBITS("MerpMod Port Logger H",PortParameters,7,"uint16","E"); +DEFINERAMVARARRAYALLBITS("MerpMod Port Logger J",PortParameters,8,"uint16","E"); +DEFINERAMVARARRAYALLBITS("MerpMod Port Logger K",PortParameters,9,"uint16","E"); +DEFINERAMVARARRAYALLBITS("MerpMod Port Logger L",PortParameters,10,"uint16","E"); #endif +#if RAM_HOLE_SCANNER +DEFINERAMVAR("MerpMod Ram Hole Scanner Address",ScannedAddress,"uint16","E"); +DEFINERAMVAR("MerpMod Ram Hole Scanner Value",ScannedValue,"uint16","E"); +//DEFINERAMVAR("MerpMod Ram Hole Scanner Composite",ScannedAddress,"uint32","E"); +DEFINERAMVAR("MerpMod Ram Hole Scanner Stack Pointer",ScannedStackPointer,"uint32","E"); +#endif + #if PROG_MODE -DEFINERAMVAR("MerpMod Prog Mode Entry",ProgModeEntry,1,"E"); -DEFINERAMVAR("MerpMod Prog Mode Wait",ProgModeWait,1,"E"); -DEFINERAMVAR("MerpMod Prog Mode Timer",ProgModeTimer,1,"E"); -DEFINERAMVAR("MerpMod Prog Mode Enable",ProgModeEnable,1,"E"); -DEFINERAMVAR("MerpMod Prog Mode Current Mode",ProgModeCurrentMode,1,"E"); -DEFINERAMVAR("MerpMod Prog Mode Selected Value Flash",ProgModeValueFlashes,1,"E"); -DEFINERAMVAR("MerpMod Prog Mode Value",ProgModeValue,4,"E"); +DEFINERAMVAR("MerpMod Prog Mode Entry",ProgModeEntry,"uint8","E"); +DEFINERAMVAR("MerpMod Prog Mode Wait",ProgModeWait,"uint8","E"); +DEFINERAMVAR("MerpMod Prog Mode Timer",ProgModeTimer,"uint8","E"); +DEFINERAMVAR("MerpMod Prog Mode Enable",ProgModeEnable,"uint8","E"); +DEFINERAMVAR("MerpMod Prog Mode Current Mode",ProgModeCurrentMode,"uint8","E"); +DEFINERAMVAR("MerpMod Prog Mode Selected Value Flash",ProgModeValueFlashes,"uint8","E"); +DEFINERAMVAR("MerpMod Prog Mode Value",ProgModeValue,"float","E"); #endif DEFIDA1D("ECU Identifier",dEcuId); @@ -166,7 +174,11 @@ DEFIDA1D("Engine Load Smoothing Factor Final",dLoadSmoothingFinal); #ifdef pClutchFlags DEFINERAMBIT("MerpMod Clutch Switch",pClutchFlags, ClutchBitMask,"E"); #endif + +#ifdef pBrakeFlags DEFINERAMBIT("MerpMod Brake Switch",pBrakeFlags, BrakeBitMask,"E"); +#endif + #ifdef pResumeFlags DEFINERAMBIT("MerpMod Cruise Resume Switch",pResumeFlags, ResumeBitMask,"E"); #endif @@ -179,23 +191,23 @@ DEFINERAMBIT("MerpMod Brake Switch",pBrakeFlags, BrakeBitMask,"E"); //VIN stuff #if VIN_HACKS && VIN_TEST_LOG -DEFINERAMVAR("MerpMod Vehicle Identifier",VehicleIdent,14,"E"); -DEFINERAMVAR("MerpMod Auth Pass/Fail",VinAuth,1,"E"); +DEFINERAMVAR("MerpMod Vehicle Identifier",VehicleIdent,"uint28","E"); +DEFINERAMVAR("MerpMod Auth Pass/Fail",VinAuth,"uint8","E"); #endif #if SPARK_CUT -DEFINERAM("Default LC Spark Events Cut From",DefaultLCSparkEventsCutFrom,1,"E"); -DEFINERAMVAR("LC Spark Events Cut From",SparkEventsX,1,"E"); +DEFINERAM("Default LC Spark Events Cut From",DefaultLCSparkEventsCutFrom,"uint8","E"); +DEFINERAMVAR("LC Spark Events Cut From",SparkEventsX,"uint8","E"); #endif #if SD_HACKS -DEFINERAMVAR("MerpMod SD Mode Switch",MafMode,1,"E"); -DEFINERAMVAR("MerpMod SD Volumetric Efficiency",VolumetricEfficiency,4,"E"); -DEFINERAMVAR("MerpMod SD Airflow Final Output",MafFromSpeedDensity,4,"E"); -DEFINERAMVAR("MerpMod SD Airflow Maf Sensor",MafFromSensor,4,"E"); -DEFINERAMVAR("MerpMod SD Atmospheric Compensation",AtmosphericCompensation,4,"E"); -DEFINERAMVAR("MerpMod SD Blending Ratio",SDMafBlendRatio,4,"E"); -DEFINERAMVAR("MerpMod SD Airflow Blending",SDMafFromBlend,4,"E"); +DEFINERAMVAR("MerpMod SD Mode Switch",MafMode,"uint8","E"); +DEFINERAMVAR("MerpMod SD Volumetric Efficiency",VolumetricEfficiency,"float","E"); +DEFINERAMVAR("MerpMod SD Airflow Final Output",MafFromSpeedDensity,"float","E"); +DEFINERAMVAR("MerpMod SD Airflow Maf Sensor",MafFromSensor,"float","E"); +DEFINERAMVAR("MerpMod SD Atmospheric Compensation",AtmosphericCompensation,"float","E"); +DEFINERAMVAR("MerpMod SD Blending Ratio",SDMafBlendRatio,"float","E"); +DEFINERAMVAR("MerpMod SD Airflow Blending",SDMafFromBlend,"float","E"); DEFNEW3D("Volumetric Efficiency Table 1",VolumetricEfficiencyTable1); #if SWITCH_HACKS @@ -204,8 +216,8 @@ DEFNEW3D("Volumetric Efficiency Table 2",VolumetricEfficiencyTable2); #if SD_DMAP DEFINE3D("Delta MAP Compensation",SDDeltaMapTable); -DEFINERAM("MerpMod Delta MAP",pDeltaMap,4,"E"); -DEFINERAMVAR("MerpMod Delta MAP Compensation Direct",DeltaMapCompensation,4,"E"); +DEFINERAM("MerpMod Delta MAP",pDeltaMap,"float","E"); +DEFINERAMVAR("MerpMod Delta MAP Compensation Direct",DeltaMapCompensation,"float","E"); #endif DEFNEW3D("Atmospheric Pressure Compensation",AtmosphericCompensationTable); @@ -216,7 +228,7 @@ DEFNEW1D("Speed Density Constant",SpeedDensityConstant); #if VE_RAMTUNING DEFINERAMVAR3D("Volumetric Efficiencty Ram Table",VERamCols); //TODO this won't work yet! -DEFINERAMVAR("VERamFlag",VERamFlag,1,"E"); +DEFINERAMVAR("VERamFlag",VERamFlag,"uint8","E"); #endif #endif @@ -239,21 +251,21 @@ DEFNEW1D("FFS Gear Ratios",GearRatios); DEFNEW1D("Rev Limit (Launch Control)",DefaultLaunchControlCut); //PARAMS -DEFINERAMVAR("MerpMod FFS Mode",FlatFootShiftMode,1,"E");//TODO add to def base -DEFINERAMVAR("MerpMod LC Engaged Signal",LCEngaged,1,"E"); -DEFINERAMVAR("MerpMod FFS Engaged Signal",FFSEngaged,1,"E"); -DEFINERAMVAR("MerpMod FFS Gear Monitor",FFSGear,1,"E"); -DEFINERAMVAR("MerpMod RevLimit Active Cut RPM",RevLimCut,4,"E"); -DEFINERAMVAR("MerpMod RevLimit Active Resume RPM",RevLimResume,4,"E"); -DEFINERAMVAR("MerpMod RedLine Cut RPM",RedLineCut,4,"E"); -DEFINERAMVAR("MerpMod RedLine Hysteresis",RedLineHyst,4,"E"); -DEFINERAMVAR("MerpMod Launch Control RPM",LaunchControlCut,4,"E"); -DEFINERAMVAR("MerpMod Launch Control Hysteresis",LaunchControlHyst,4,"E"); -DEFINERAMVAR("MerpMod FFS Delta (Auto)",FlatFootShiftAutoDelta,4,"E"); -DEFINERAMVAR("MerpMod FFS Delta (Static)",FlatFootShiftStaticDelta,4,"E"); -DEFINERAMVAR("MerpMod FFS Engagement RPM",FFSRPM,4,"E"); -DEFINERAMVAR("MerpMod FFS Speed Threshold",FlatFootShiftSpeedThreshold,4,"E"); -DEFINERAMVAR("MerpMod LC Speed Threshold",LaunchControlSpeedMax,4,"E"); +DEFINERAMVAR("MerpMod FFS Mode",FlatFootShiftMode,"uint8","E");//TODO add to def base +DEFINERAMVAR("MerpMod LC Engaged Signal",LCEngaged,"uint8","E"); +DEFINERAMVAR("MerpMod FFS Engaged Signal",FFSEngaged,"uint8","E"); +DEFINERAMVAR("MerpMod FFS Gear Monitor",FFSGear,"uint8","E"); +DEFINERAMVAR("MerpMod RevLimit Active Cut RPM",RevLimCut,"float","E"); +DEFINERAMVAR("MerpMod RevLimit Active Resume RPM",RevLimResume,"float","E"); +DEFINERAMVAR("MerpMod RedLine Cut RPM",RedLineCut,"float","E"); +DEFINERAMVAR("MerpMod RedLine Hysteresis",RedLineHyst,"float","E"); +DEFINERAMVAR("MerpMod Launch Control RPM",LaunchControlCut,"float","E"); +DEFINERAMVAR("MerpMod Launch Control Hysteresis",LaunchControlHyst,"float","E"); +DEFINERAMVAR("MerpMod FFS Delta (Auto)",FlatFootShiftAutoDelta,"float","E"); +DEFINERAMVAR("MerpMod FFS Delta (Static)",FlatFootShiftStaticDelta,"float","E"); +DEFINERAMVAR("MerpMod FFS Engagement RPM",FFSRPM,"float","E"); +DEFINERAMVAR("MerpMod FFS Speed Threshold",FlatFootShiftSpeedThreshold,"float","E"); +DEFINERAMVAR("MerpMod LC Speed Threshold",LaunchControlSpeedMax,"float","E"); #endif #if LC_ADJUST @@ -261,32 +273,43 @@ DEFNEW1D("Launch Control Adjustment Step",LCAdjustStep); #endif #if SWITCH_HACKS -DEFINERAMVAR("MerpMod Master Init Flag",MasterInitFlag,1,"E"); +DEFINERAMVAR("MerpMod Master Init Flag",MasterInitFlag,"uint8","E"); -DEFINERAMVAR("MerpMod TGV Volts Left",TGVLeftVolts,4,"E"); -DEFINERAMVAR("MerpMod TGV Volts Right",TGVRightVolts,4,"E"); +DEFINERAMVAR("MerpMod TGV Volts Left",TGVLeftVolts,"float","E"); +DEFINERAMVAR("MerpMod TGV Volts Right",TGVRightVolts,"float","E"); + +DEFNEW2D("TGV Left Input Scaling",TGVLeftScaling); +DEFNEW2D("TGV Right Input Scaling",TGVRightScaling); DEFNEW1D("Map Switch Input Threshold Low",MapSwitchThresholdLo); DEFNEW1D("Map Switch Input Threshold High",MapSwitchThresholdHi); DEFNEW1D("Map Switch Input Mode",MapSwitchInput); DEFNEW1D("Map Blending Input Mode",BlendRatioInput); -DEFINERAMVAR("MerpMod Map Blending Ratio Direct",MapBlendRatio,4,"E"); -DEFINERAMVAR("MerpMod TGV Left Scaled",TGVLeftScaled,4,"E"); -DEFINERAMVAR("MerpMod TGV Right Scaled",TGVRightScaled,4,"E"); +DEFINERAMVAR("MerpMod Map Switch",MapSwitch,"uint8","E"); +DEFINERAMVAR("MerpMod Map Blending Ratio",MapBlendRatio,"float","E"); +DEFINERAMVAR("MerpMod TGV Left Scaled",TGVLeftScaled,"float","E"); +DEFINERAMVAR("MerpMod TGV Right Scaled",TGVRightScaled,"float","E"); DEFNEW1D("Default Map Blending Ratio",DefaultMapBlendRatio); DEFNEW1D("Default Map Switch",DefaultMapSwitch); + +#if INJECTOR_HACKS +DEFNEW2D("Map Blending Injector Scaling",InjectorScalingTable); +DEFINERAMVAR("MerpMod Injector Scaling",InjectorScaling,"float","E"); +#endif + #endif #if POLF_HACKS -DEFINERAMVAR("MerpMod LC Fueling Lock Enrichment",LCFuelLock,4,"E"); -DEFINERAMVAR("MerpMod LC Fueling Mode",LCFuelMode,4,"E"); -DEFINERAMVAR("MerpMod LC Fueling Enrichment",LCFuelEnrich,4,"E"); -DEFINERAMVAR("MerpMod LC Fueling Enrichment Multiplier",LCFuelEnrichMultiplier,4,"E"); -DEFINERAMVAR("MerpMod Primary Open Loop Fueling Output",PolfOutput,4,"E"); +DEFINERAMVAR("MerpMod LC Fueling Lock Enrichment",LCFuelLock,"float","E"); +DEFINERAMVAR("MerpMod LC Fueling Mode",LCFuelMode,"float","E"); +DEFINERAMVAR("MerpMod LC Fueling Enrichment",LCFuelEnrich,"float","E"); +DEFINERAMVAR("MerpMod LC Fueling Enrichment Multiplier",LCFuelEnrichMultiplier,"float","E"); +DEFINERAMVAR("MerpMod Primary Open Loop Fueling Output",PolfOutput,"float","E"); //TODO add ENABLE SWITCHES #if SWITCH_HACKS +DEFNEW1D("Primary Open Loop Fuel Hack Enable",DefaultPolfHackEnabled); DEFNEW3D("Primary Open Loop Fueling Table 1 Intelligent",FuelTable1i); DEFNEW3D("Primary Open Loop Fueling Table 2 Intelligent",FuelTable2i); DEFNEW3D("Primary Open Loop Fueling Table 1 Sport",FuelTable1s); @@ -338,16 +361,17 @@ DEFNEW1D("ECT Flash Temperature Threshold",ECTFlashThreshold); DEFNEW1D("IAM Recall Flash Speed",IAMFlashSpeed); #endif -DEFINERAMVAR("MerpMod CEL Signal",CelSignal,1,"E"); -DEFINERAM("MerpMod CEL Signal OEM",pCelSignalOem,1,"E"); -DEFINERAMVAR("MerpMod CEL Flash Counter",CelFlashCounter,1,"E"); -DEFINERAMVAR("MerpMod CEL Speed Counter",CelFlashSpeedCounter,1,"E"); +DEFINERAMVAR("MerpMod CEL Signal",CelSignal,"uint8","E"); +DEFINERAM("MerpMod CEL Signal OEM",pCelSignalOem,"uint8","E"); +DEFINERAMVAR("MerpMod CEL Flash Counter",CelFlashCounter,"uint8","E"); +DEFINERAMVAR("MerpMod CEL Speed Counter",CelFlashSpeedCounter,"uint8","E"); #endif #if BOOST_HACKS -DEFINERAMVAR("MerpMod PGWG Compensation",PGWGComp,4,"E"); +DEFNEW1D("Boost Hack Enable",DefaultBoostHackEnabled); +DEFINERAMVAR("MerpMod PGWG Compensation",PGWGComp,"float","E"); #if SWITCH_HACKS DEFNEW3D("Per Gear Wastegate Table 1 Intelligent",PGWGTable1i); DEFNEW3D("Per Gear Wastegate Table 2 Intelligent",PGWGTable2i); @@ -359,7 +383,7 @@ DEFNEW3D("Per Gear Wastegate Table 2 Sport Sharp",PGWGTable2ss); DEFNEW3D("Per Gear Wastegate Table 1",PGWGTable1i); DEFNEW3D("Per Gear Wastegate Table 2",PGWGTable2i); #endif -DEFINERAMVAR("MerpMod PGTB Compensation",PGTBComp,4,"E"); +DEFINERAMVAR("MerpMod PGTB Compensation",PGTBComp,"float","E"); #if SWITCH_HACKS DEFNEW3D("Per Gear Target Boost Table 1 Intelligent",PGTBTable1i); DEFNEW3D("Per Gear Target Boost Table 2 Intelligent",PGTBTable2i); @@ -374,41 +398,41 @@ DEFNEW3D("Per Gear Target Boost Table 2",PGTBTable2i); DEFINERAMVAR("MerpMod Max WGDC Per Gear",WGDCMax,4,"E"); #if SWITCH_HACKS -DEFNEW3D("Max Wastegate Duty Multiplier Table 1 Intelligent",WGDCMaxTable1i); -DEFNEW3D("Max Wastegate Duty Multiplier Table 2 Intelligent",WGDCMaxTable2i); -DEFNEW3D("Max Wastegate Duty Multiplier Table 1 Sport",WGDCMaxTable1s); -DEFNEW3D("Max Wastegate Duty Multiplier Table 2 Sport",WGDCMaxTable2s); -DEFNEW3D("Max Wastegate Duty Multiplier Table 1 Sport Sharp",WGDCMaxTable1ss); -DEFNEW3D("Max Wastegate Duty Multiplier Table 2 Sport Sharp",WGDCMaxTable2ss); +DEFNEW3D("Max Wastegate Duty Compensation Table 1 Intelligent",WGDCMaxTable1i); +DEFNEW3D("Max Wastegate Duty Compensation Table 2 Intelligent",WGDCMaxTable2i); +DEFNEW3D("Max Wastegate Duty Compensation Table 1 Sport",WGDCMaxTable1s); +DEFNEW3D("Max Wastegate Duty Compensation Table 2 Sport",WGDCMaxTable2s); +DEFNEW3D("Max Wastegate Duty Compensation Table 1 Sport Sharp",WGDCMaxTable1ss); +DEFNEW3D("Max Wastegate Duty Compensation Table 2 Sport Sharp",WGDCMaxTable2ss); #else -DEFNEW3D("Max Wastegate Duty Multiplier Table 1",WGDCMaxTable1i); -DEFNEW3D("Max Wastegate Duty Multiplier Table 2",WGDCMaxTable2i); +DEFNEW3D("Max Wastegate Duty Compensation Table 1",WGDCMaxTable1i); +DEFNEW3D("Max Wastegate Duty Compensation Table 2",WGDCMaxTable2i); #endif -DEFINERAMVAR("MerpMod Initial WGDC Per Gear",WGDCInitial,4,"E"); +DEFINERAMVAR("MerpMod Initial WGDC Per Gear",WGDCInitial,"float","E"); #if SWITCH_HACKS -DEFNEW3D("Initial Wastegate Duty Multiplier Table 1 Intelligent",WGDCInitialTable1i); -DEFNEW3D("Initial Wastegate Duty Multiplier Table 2 Intelligent",WGDCInitialTable2i); -DEFNEW3D("Initial Wastegate Duty Multiplier Table 1 Sport",WGDCInitialTable1s); -DEFNEW3D("Initial Wastegate Duty Multiplier Table 2 Sport",WGDCInitialTable2s); -DEFNEW3D("Initial Wastegate Duty Multiplier Table 1 Sport Sharp",WGDCInitialTable1ss); -DEFNEW3D("Initial Wastegate Duty Multiplier Table 2 Sport Sharp",WGDCInitialTable2ss); +DEFNEW3D("Initial Wastegate Duty Compensation Table 1 Intelligent",WGDCInitialTable1i); +DEFNEW3D("Initial Wastegate Duty Compensation Table 2 Intelligent",WGDCInitialTable2i); +DEFNEW3D("Initial Wastegate Duty Compensation Table 1 Sport",WGDCInitialTable1s); +DEFNEW3D("Initial Wastegate Duty Compensation Table 2 Sport",WGDCInitialTable2s); +DEFNEW3D("Initial Wastegate Duty Compensation Table 1 Sport Sharp",WGDCInitialTable1ss); +DEFNEW3D("Initial Wastegate Duty Compensation Table 2 Sport Sharp",WGDCInitialTable2ss); #else -DEFNEW3D("Initial Wastegate Duty Multiplier Table 1",WGDCInitialTable1i); -DEFNEW3D("Initial Wastegate Duty Multiplier Table 2",WGDCInitialTable2i); +DEFNEW3D("Initial Wastegate Duty Compensation Table 1",WGDCInitialTable1i); +DEFNEW3D("Initial Wastegate Duty Compensation Table 2",WGDCInitialTable2i); #endif -DEFINERAMVAR("MerpMod Target Boost Output",TargetBoost,4,"E"); +DEFINERAMVAR("MerpMod Target Boost Output",TargetBoost,"float","E"); #if SWITCH_HACKS -DEFNEW3D("Target Boost Multiplier Table 1 Intelligent",TargetBoostTable1i); -DEFNEW3D("Target Boost Multiplier Table 2 Intelligent",TargetBoostTable2i); -DEFNEW3D("Target Boost Multiplier Table 1 Sport",TargetBoostTable1s); -DEFNEW3D("Target Boost Multiplier Table 2 Sport",TargetBoostTable2s); -DEFNEW3D("Target Boost Multiplier Table 1 Sport Sharp",TargetBoostTable1ss); -DEFNEW3D("Target Boost Multiplier Table 2 Sport Sharp",TargetBoostTable2ss); +DEFNEW3D("Target Boost Compensation Table 1 Intelligent",TargetBoostTable1i); +DEFNEW3D("Target Boost Compensation Table 2 Intelligent",TargetBoostTable2i); +DEFNEW3D("Target Boost Compensation Table 1 Sport",TargetBoostTable1s); +DEFNEW3D("Target Boost Compensation Table 2 Sport",TargetBoostTable2s); +DEFNEW3D("Target Boost Compensation Table 1 Sport Sharp",TargetBoostTable1ss); +DEFNEW3D("Target Boost Compensation Table 2 Sport Sharp",TargetBoostTable2ss); #else -DEFNEW3D("Target Boost Multiplier Table 1",TargetBoostTable1); -DEFNEW3D("Target Boost Multiplier Table 2",TargetBoostTable2); +DEFNEW3D("Target Boost Compensation Table 1",TargetBoostTable1); +DEFNEW3D("Target Boost Compensation Table 2",TargetBoostTable2); #endif #if WGDC_LOCK @@ -418,11 +442,11 @@ DEFNEW1D("WGDC Lock Minimum Throttle",ThrottleLockWGDC); #endif #if TIMING_HACKS -DEFINERAMVAR("MerpMod LC Timing Mode",LCTimingMode,1,"E"); -DEFINERAMVAR("MerpMod LC Timing Lock Value",LCTimingLock,4,"E"); -DEFINERAMVAR("MerpMod LC Timing Retard",LCTimingRetard,4,"E"); -DEFINERAMVAR("MerpMod LC Timing Retard Multiplier",LCTimingRetardMultiplier,4,"E"); -DEFINERAMVAR("MerpMod Base Timing Final Output",TimingHackOutput,4,"E"); +DEFINERAMVAR("MerpMod LC Timing Mode",LCTimingMode,"uint8","E"); +DEFINERAMVAR("MerpMod LC Timing Lock Value",LCTimingLock,"float","E"); +DEFINERAMVAR("MerpMod LC Timing Retard",LCTimingRetard,"float","E"); +DEFINERAMVAR("MerpMod LC Timing Retard Multiplier",LCTimingRetardMultiplier,"float","E"); +DEFINERAMVAR("MerpMod Base Timing Final Output",TimingHackOutput,"float","E"); DEFNEW1D("Launch Control Timing Mode",DefaultLCTimingMode); DEFNEW1D("Launch Control Timing Lock",DefaultLCTimingLock); @@ -430,6 +454,7 @@ DEFNEW1D("Default Launch Control Timing Retard Multiplier",DefaultLCTimingRetard DEFNEW3D("Launch Control Timing Retard Table",LCTimingRetardTable); #if SWITCH_HACKS +DEFNEW1D("Timing Hack Enable",DefaultTimingHackEnabled); DEFNEW3D("Base Timing Table 1 Intelligent",TimingTable1i); DEFNEW3D("Base Timing Table 2 Intelligent",TimingTable2i); DEFNEW3D("Base Timing Table 1 Sport",TimingTable1s); diff --git a/MerpMod/EcuHacks.c b/MerpMod/EcuHacks.c index 936e506..84b4656 100644 --- a/MerpMod/EcuHacks.c +++ b/MerpMod/EcuHacks.c @@ -70,6 +70,28 @@ void EcuHacksMain() //Constant Hz main routine, hooked into wgdc lookup PortLogger(); #endif +#if RAM_HOLE_SCANNER + RamHoleScanner(); +#endif + +#if SWITCH_HACKS + InputUpdate(); +#endif + +#if TIMING_HACKS + TimingHack(); +#endif + +#if SWITCH_HACKS && INJECTOR_HACKS + InjectorHack(); +#endif + +#if POLF_HACKS && !POLF_MAIN_HOOK + POLFHack(); +#elif BOOST_HACKS && !WGDC_MAIN_HOOK + WGDCHack(); +#endif + } void (*RevLimDeleteHooked)() __attribute__ ((section ("RomHole_Functions"))) = (void(*)()) sRevLimEnd; diff --git a/MerpMod/Externs.h b/MerpMod/Externs.h index 0b8798f..b0a7a87 100644 --- a/MerpMod/Externs.h +++ b/MerpMod/Externs.h @@ -22,6 +22,10 @@ void PortLogger() ROMCODE; #endif +#if RAM_HOLE_SCANNER +void RamHoleScanner() ROMCODE; +#endif + unsigned char TestBrakeSwitch() ROMCODE; unsigned char TestClutchSwitch() ROMCODE; unsigned char TestCruiseResumeSwitch() ROMCODE; @@ -44,6 +48,7 @@ void CelFlashStart(unsigned char CelFlashes, unsigned char Speed, unsigned char void CelFlash() ROMCODE; void WGDCHack(void) ROMCODE; void TargetBoostHack(void) ROMCODE; +void InjectorHack() ROMCODE; void POLFHack() ROMCODE; float TimingHack() ROMCODE; float Pull2DRamHook(float* table, float xLookup) ROMCODE; @@ -70,6 +75,8 @@ void SetClutch(int value) __attribute__ ((section ("Misc"))); void SetBrake(int value) __attribute__ ((section ("Misc"))); float Abs(float input) ROMCODE; +float LowPass(float input, float limit) ROMCODE; +float HighPass(float input, float limit) ROMCODE; void RevLimCode(void) ROMCODE; void RevLimReset(void) ROMCODE; @@ -107,6 +114,7 @@ extern ThreeDTable TemperatureCompensationTable; extern ThreeDTable AtmosphericCompensationTable; extern ThreeDTable SDBlendingTable; +extern TwoDTable InjectorScalingTable; extern unsigned char DefaultPolfHackEnabled; extern TableGroup FuelTableGroup; @@ -121,6 +129,7 @@ extern unsigned char DefaultLCFuelMode; extern float DefaultLCFuelLock; extern float DefaultLCFuelEnrichMultiplier; +extern unsigned char DefaultBoostHackEnabled; extern TableGroup PGWGTableGroup; extern ThreeDTable PGWGTable1i; extern ThreeDTable PGWGTable2i; diff --git a/MerpMod/FuelHackTables.c b/MerpMod/FuelHackTables.c index ce57dea..2b60357 100644 --- a/MerpMod/FuelHackTables.c +++ b/MerpMod/FuelHackTables.c @@ -14,6 +14,25 @@ #include "EcuHacks.h" +#if SWITCH_HACKS && INJECTOR_HACKS + +float INJECTOR_SCALING_ROWS[11] FUELDATA = +{0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0}; + +short INJECTOR_SCALING_DATA[11] FUELDATA = +{20000,20100,20200,20300,20400,20500,20600,20700,20800,20900,21000};//TODO: document the native units here + +TwoDTable InjectorScalingTable FUELDATA = { + .columnCount = 11, + .tableType = UInt16Table2D, + .columnHeaderArray = INJECTOR_SCALING_ROWS, + .tableCells = INJECTOR_SCALING_DATA, + .multiplier = 0.824f, //todo unit test these + .offset = 0.0 }; +//! 27000/32767 (0-27000.00 range, 16bit precision) + +#endif + #if POLF_HACKS unsigned char DefaultPolfHackEnabled FUELDATA = 0x01; diff --git a/MerpMod/FuelHacks.c b/MerpMod/FuelHacks.c index d328075..7e57fae 100644 --- a/MerpMod/FuelHacks.c +++ b/MerpMod/FuelHacks.c @@ -14,6 +14,20 @@ #include "EcuHacks.h" +#if SWITCH_HACKS && INJECTOR_HACKS + +void InjectorHack(){ + +float OutputValue; + +OutputValue = Pull2DHooked(&InjectorScalingTable,pRamVariables->MapBlendRatio); + +pRamVariables->InjectorScaling = OutputValue; + +} + +#endif + #if POLF_HOOK_DEFINED void (*PolfHooked)() __attribute__ ((section ("RomHole_Functions"))) = (void(*)()) sPolf; @@ -51,7 +65,7 @@ EcuHacksMain(); pRamVariables->PolfTarget = OutputValue; - if(pRamVariables->PolfHackEnabled == 0) + if(pRamVariables->PolfHackEnabled == 0x01)//TODO: ENUM pRamVariables->PolfOutput = pRamVariables->PolfTarget; else pRamVariables->PolfOutput = Pull3DHooked((void*)PrimaryOEMPolfTable, *pEngineLoad, *pEngineSpeed); diff --git a/MerpMod/Functions.c b/MerpMod/Functions.c index d006c34..be65a83 100644 --- a/MerpMod/Functions.c +++ b/MerpMod/Functions.c @@ -20,4 +20,20 @@ float Abs(float input) return input; else return input * -1.0f; +} + +float LowPass(float input, float limit) +{ + if(input < limit) + return input; + else + return limit; +} + +float HighPass(float input, float limit) +{ + if(input > limit) + return input; + else + return limit; } \ No newline at end of file diff --git a/MerpMod/GenericTests.c b/MerpMod/GenericTests.c index a422c8d..feba623 100644 --- a/MerpMod/GenericTests.c +++ b/MerpMod/GenericTests.c @@ -79,7 +79,11 @@ Assert(0,"error in ram hole!"); #endif #if SD_HACKS - CallSpeedDensityHook();//This covers SD and Revlim + CallSpeedDensityHook();//This covers SD +#endif + +#if REVLIM_HACKS + RevLimHook(); #endif #if WGDC_HOOK_DEFINED @@ -87,6 +91,10 @@ Assert(0,"error in ram hole!"); //Celflash and/or wgdc/boost hacks, progmode, pgwg #endif +#if SWITCH_HACKS && INJECTOR_HACKS + InjectorHack(); +#endif + #if POLF_HACKS POLFHack(); #endif @@ -95,9 +103,21 @@ Assert(0,"error in ram hole!"); TimingHack(); #endif +#if MEMORY_HACKS CallMemoryReset(); +#endif } + +#if ARCH_SH7055 +#define ARCH_STACK_POINTER 0xFFFF7000 +#elif ARCH_SH7058 +#define ARCH_STACK_POINTER 0xFFFF1000 +#else +#define ARCH_STACK_POINTER 0xFFFF1000 +#endif +unsigned long ArchStackPointer __attribute__ ((section ("RomHole_Misc"),aligned(8))) = ARCH_STACK_POINTER; + void SetValues() __attribute__ ((section ("Misc"))); void SetValues() { diff --git a/MerpMod/IDATranslation.h b/MerpMod/IDATranslation.h index 7414559..730f801 100644 --- a/MerpMod/IDATranslation.h +++ b/MerpMod/IDATranslation.h @@ -51,6 +51,10 @@ #define SI_DRIVE #endif +#ifdef dInjectorScaling +#define InjectorScalingOem ((float*)dInjectorScaling) +#endif + #ifdef tPolf #define PrimaryOEMPolfTable tPolf #elif defined(tPolfKcaAlt) //TODO FIX THIS FOR NEWER CARS!!!!! @@ -63,6 +67,18 @@ #define PrimaryOEMTimingTable tBaseTimingPNonCruise #endif +#ifdef tTargetBoost +#define OEMTargetBoostTable tTargetBoost +#endif + +#ifdef tWgdcInitial +#define OEMWGDCInitialTable tWgdcInitial +#endif + +#ifdef tWgdcMax +#define OEMWGDCMaxTable tWgdcMax +#endif + /* OLD STUFF #define pEngineSpeed ((float*)E_ENGINE_SPEED) #define pVehicleSpeed ((float*)E_VEHICLE_SPEED) @@ -127,6 +143,5 @@ #define pCelSignalOem ((char*)CEL_TRIGGER_BYTE) //#define pCruiseSignalOem ((char*)0x1234)// -#define InjectorScalingOem ((float*)dInjectorScaling) #define pFlagsRevLimit ((char*)pFlagsRevLimit) */ \ No newline at end of file diff --git a/MerpMod/Initializer.c b/MerpMod/Initializer.c index f0a8101..61e5b07 100644 --- a/MerpMod/Initializer.c +++ b/MerpMod/Initializer.c @@ -130,6 +130,10 @@ pRamVariables->CruiseCoastLast = TestCruiseCoastSwitch(); pRamVariables->LCTimingRetardMultiplier = DefaultLCTimingRetardMultiplier; #endif +#if BOOST_HACKS + pRamVariables->BoostHackEnabled = DefaultBoostHackEnabled; +#endif + #if SD_HACKS pRamVariables->MafMode = DefaultMafMode; #endif diff --git a/MerpMod/MerpMod.hwp b/MerpMod/MerpMod.hwp index ada0406..44ccd43 100644 --- a/MerpMod/MerpMod.hwp +++ b/MerpMod/MerpMod.hwp @@ -457,6 +457,7 @@ "C source file" "0c9afd23307eec10" 2 "C++ source file" "0c9afd23307eec10" 2 "C:\Users\Merrill\Dev\MerpMod\MerpMod\PortLogger.c" "05766bd742b5fc10" 2 +"C:\Users\Merrill\Dev\MerpMod\MerpMod\RamHoleScanner.c" "040c15e93266fc10" 2 "C:\Users\merrill\Dev\MerpMod\MerpMod\BlendAndSwitch.c" "0c9afd23307eec10" 2 "C:\Users\merrill\Dev\MerpMod\MerpMod\BoostHackTables.c" "0c9afd23307eec10" 2 "C:\Users\merrill\Dev\MerpMod\MerpMod\BoostHacks.c" "0c9afd23307eec10" 2 diff --git a/MerpMod/ProgMode.c b/MerpMod/ProgMode.c index 90a10fb..b766aab 100644 --- a/MerpMod/ProgMode.c +++ b/MerpMod/ProgMode.c @@ -55,13 +55,13 @@ */ -#define PROG_MODE_COUNT 4 +#define PROG_MODE_COUNT 5 #define PROG_THROTTLE_HI 80.0f #define PROG_THROTTLE_LO 10.0f #define VALUE_FLASH_SPEED 2 #define VALUE_FLASH_DELAY 32 -#define MODE_FLASH_SPEED 4 +#define MODE_FLASH_SPEED 6 #define MODE_FLASH_DELAY 16 #define BLEND_MAX 1.0f @@ -256,19 +256,19 @@ void ProgModeBlendAdjust() { if((*pThrottlePlate > PROG_THROTTLE_HI) && pRamVariables->ProgModeWait == 0) { - if(pRamVariables->MapBlendRatio > (BLEND_MAX - BLEND_STEP - 0.01f)) + if(pRamVariables->MapBlendRatio > (BLEND_MAX - BLEND_STEP - BLEND_STEP)) pRamVariables->MapBlendRatio = BLEND_MAX; else - pRamVariables->MapBlendRatio+= BLEND_STEP; + pRamVariables->MapBlendRatio += BLEND_STEP; pRamVariables->ProgModeWait = BLEND_WAIT; } else if(TestBrakeSwitch() && pRamVariables->ProgModeWait ==0) { - if(pRamVariables->MapBlendRatio < (BLEND_MIN + BLEND_STEP + 0.01f)) + if(pRamVariables->MapBlendRatio < (BLEND_MIN + BLEND_STEP + BLEND_STEP)) pRamVariables->MapBlendRatio = BLEND_MIN;//Hard limit, does not cycle to top again. else - pRamVariables->MapBlendRatio-= BLEND_STEP; + pRamVariables->MapBlendRatio -= BLEND_STEP; pRamVariables->ProgModeWait = BLEND_WAIT; } else @@ -284,7 +284,7 @@ void ProgModeBlendAdjust() void ProgModeLCAdjust() { #if !AUTO_TRANS - if((*pThrottlePlate > 50) && pRamVariables->ProgModeWait == 0) + if((*pThrottlePlate > PROG_THROTTLE_HI) && pRamVariables->ProgModeWait == 0) { pRamVariables->LaunchControlCut++; if(pRamVariables->LaunchControlCut < pRamVariables->RedLineCut) @@ -337,7 +337,7 @@ void ProgModeIAMAdjust() pRamVariables->ProgModeWait--; } pRamVariables->ProgModeValue = *pIAM; - pRamVariables->ProgModeValueFlashes = (10*(1-IAM))+1; + pRamVariables->ProgModeValueFlashes = (10*(IAM))+1; } void ProgModeValetMode() diff --git a/MerpMod/RamHoleScanner.c b/MerpMod/RamHoleScanner.c new file mode 100644 index 0000000..f11bcfa --- /dev/null +++ b/MerpMod/RamHoleScanner.c @@ -0,0 +1,21 @@ + +#include "EcuHacks.h" + +#if RAM_HOLE_SCANNER + +void RamHoleScanner(){ + +unsigned int addr = 0xFFFF0000; +addr |= (unsigned int)pRamVariables->ScannedAddress; +pRamVariables->ScannedValue = *(unsigned short*)addr; +pRamVariables->ScannedAddress +=2; +if(pRamVariables->ScannedAddress > 0xBFFF) + pRamVariables->ScannedAddress = 0x0000; //TODO: set on a per CPU basis! + // store full address and perform CRC32 on ram? + +//pRamVariables->ScannedAddress USHORT +//pRamVariables->ScannedValue USHORT +//pRamVariables->ScannedtackPointer ULONG +} + +#endif \ No newline at end of file diff --git a/MerpMod/RamVariables.h b/MerpMod/RamVariables.h index f35c6b1..73e7b69 100644 --- a/MerpMod/RamVariables.h +++ b/MerpMod/RamVariables.h @@ -26,14 +26,9 @@ typedef struct unsigned char VehicleIdent[20]; #endif +#if INJECTOR_HACKS float InjectorScaling; - float Mfempty; - float Mfempty1; - float Mfempty2; -// float Mfempty3; -// float Mfempty4; -// float Mfempty5; -// float Mfempty6; +#endif #if SPARK_CUT unsigned char SparkEventsX; @@ -161,6 +156,10 @@ typedef struct #endif #if BOOST_HACKS + unsigned char BoostHackEnabled; + unsigned char bhempty; + unsigned char bhempty1; + unsigned char bhempty2; //Target Boost Params float TargetBoost; @@ -253,6 +252,13 @@ typedef struct unsigned short PortParameters[20]; #endif + +#if RAM_HOLE_SCANNER + unsigned short ScannedAddress; + unsigned short ScannedValue; + unsigned long ScannedStackPointer; +#endif + long RamHoleSpace; char RamHoleEndMarker; diff --git a/MerpMod/ResetHandler.s b/MerpMod/ResetHandler.s index a7e19fa..5ac539e 100644 --- a/MerpMod/ResetHandler.s +++ b/MerpMod/ResetHandler.s @@ -35,13 +35,14 @@ .section RSTHandler,"ax" _ResetHandler: mov.l Stack,r15 + mov.l @r15,r15 mov.l SetValues,r0 jsr @r0 nop - mov.l DemonstrateAssertionFailure, r0 - jsr @r0 - nop + !!mov.l DemonstrateAssertionFailure, r0 + !!jsr @r0 + !!nop mov.l GenericTests,r0 jsr @r0 @@ -50,9 +51,11 @@ _ResetHandler: bra .stop nop .align 4 + +#include "TargetConfig.h" Stack: - .long 0xFFFF1000 + .long _ArchStackPointer !! So you can't just "mov.l _SetValues,r0" (or any other function) since the !! functions all live in other segments. You get "pcrel too far" errors. diff --git a/MerpMod/RevLimiter.c b/MerpMod/RevLimiter.c index 8f9ec30..41f24f5 100644 --- a/MerpMod/RevLimiter.c +++ b/MerpMod/RevLimiter.c @@ -45,7 +45,7 @@ void RevLimCode() void RevLimReset() { pRamVariables->RevLimCut = pRamVariables->RedLineCut; - pRamVariables->RevLimResume = pRamVariables->RedLineCut - Abs(pRamVariables->RedLineHyst); + pRamVariables->RevLimResume = pRamVariables->RedLineCut - HighPass(pRamVariables->RedLineHyst,0.0f); //Disable FFS if clutch is out or brake is pressed pRamVariables->FFSEngaged = 0; pRamVariables->LCEngaged = 0; @@ -102,7 +102,7 @@ void RevLimCode() pRamVariables->FFSEngaged = 0; pRamVariables->LCEngaged = 1; pRamVariables->RevLimCut = pRamVariables->LaunchControlCut; - pRamVariables->RevLimResume = pRamVariables->LaunchControlCut - Abs(pRamVariables->LaunchControlHyst); + pRamVariables->RevLimResume = pRamVariables->LaunchControlCut - HighPass(pRamVariables->LaunchControlHyst,0.0f); } else RevLimReset(); @@ -119,15 +119,15 @@ void RevLimCode() cut *= 1 / GearRatios[(int)pRamVariables->FFSGear]; cut += pRamVariables->FlatFootShiftAutoDelta; pRamVariables->RevLimCut = cut; - pRamVariables->RevLimResume = pRamVariables->RevLimCut - Abs(pRamVariables->FlatFootShiftHyst); + pRamVariables->RevLimResume = pRamVariables->RevLimCut - HighPass(pRamVariables->FlatFootShiftHyst,0.0f); } else { #endif - float cut = pRamVariables->RedLineCut - Abs(pRamVariables->FlatFootShiftStaticDelta); + float cut = pRamVariables->RedLineCut - HighPass(pRamVariables->FlatFootShiftStaticDelta,0.0f); pRamVariables->RevLimCut = cut; - pRamVariables->RevLimResume = cut - Abs(pRamVariables->FlatFootShiftHyst); + pRamVariables->RevLimResume = cut - HighPass(pRamVariables->FlatFootShiftHyst,0.0f); #ifdef pCurrentGear } diff --git a/MerpMod/RevLimiterTests.c b/MerpMod/RevLimiterTests.c index 5e1be4b..29d9e2d 100644 --- a/MerpMod/RevLimiterTests.c +++ b/MerpMod/RevLimiterTests.c @@ -35,19 +35,19 @@ void SetClutch(int value) } #endif +#ifdef pBrakeFlags void SetBrake(int value) { - #ifdef pBrakeFlags - if (value == 0) - { - *pBrakeFlags &= ~(BrakeBitMask); - } - else - { - *pBrakeFlags |= BrakeBitMask; - } - #endif + if (value == 0) + { + *pBrakeFlags &= ~(BrakeBitMask); + } + else + { + *pBrakeFlags |= BrakeBitMask; + } } +#endif #if REVLIM_HACKS @@ -76,9 +76,12 @@ void RevLimUnitTest(unsigned char flag, int brake, int clutch, float throttle, f pRamVariables->VinAuth = 0x01; #endif +#ifdef pBrakeFlags SetBrake(brake); +#endif + SetClutch(clutch); - + *pThrottlePlate = throttle; *pEngineSpeed = rpm; *pVehicleSpeed = mph; @@ -158,7 +161,7 @@ void RevLimUnitTests() //SHOULD RESUME HERE, but LC still engaged (on LC limit) *pEngineSpeed = DefaultLaunchControlCut - DefaultLaunchControlHyst - 1; RevLimCode(); - Assert(GetFuelCutFlag() && pRamVariables->LCEngaged , "Launch Control: Resume fuel at LaunchControlResume - 1 RPM, standstill, clutch pressed"); + Assert(!GetFuelCutFlag() && pRamVariables->LCEngaged , "Launch Control: Resume fuel at LaunchControlResume - 1 RPM, standstill, clutch pressed"); //TEST7: low throttle //Set throttle @@ -250,7 +253,9 @@ void RevLimUnitTests() *pEngineSpeed = 6000.0f; *pVehicleSpeed = 0.0f; SetClutch(1); + #ifdef pBrakeFlags SetBrake(0); + #endif *pFlagsRevLim = 0x00; RevLimCode(); unsigned char flags = *pFlagsRevLim; diff --git a/MerpMod/Switch.h b/MerpMod/Switch.h index 34b3e45..32a4c87 100644 --- a/MerpMod/Switch.h +++ b/MerpMod/Switch.h @@ -32,7 +32,7 @@ #define TIMING_HACKS 1 // #define POLF_HACKS 1 // #define PGWG_HACKS 1 // -#define INJECTOR_HACKS 0 // +#define INJECTOR_HACKS 1 // // ////////////////////////////// @@ -40,7 +40,7 @@ // RAMTUNING FLAGS // ////////////////////////////// // -#define RAM_PERSIST 1 // +#define RAM_PERSIST 0 // #define VE_RAMTUNING 0 // #define POLF_RAMTUNING 0 // #define TIMING_RAMTUNING 0 // diff --git a/MerpMod/SwitchChecks.c b/MerpMod/SwitchChecks.c index da53f06..97592bb 100644 --- a/MerpMod/SwitchChecks.c +++ b/MerpMod/SwitchChecks.c @@ -14,6 +14,7 @@ #include "EcuHacks.h" +#ifdef pBrakeFlags unsigned char TestBrakeSwitch() { unsigned char result = *pBrakeFlags & BrakeBitMask; @@ -22,6 +23,7 @@ unsigned char TestBrakeSwitch() else return 0x00; } +#endif #ifdef pClutchFlags unsigned char TestClutchSwitch() @@ -56,6 +58,7 @@ unsigned char TestCruiseCoastSwitch() } #endif +#if defined(pCoastFlags) && defined(pResumeFlags) void TestCruiseControlToggles() { unsigned char resume = TestCruiseResumeSwitch(); @@ -96,4 +99,6 @@ void TestCruiseControlToggles() } pRamVariables->CruiseCoastLast = coast; pRamVariables->CruiseResumeLast = resume; -} \ No newline at end of file +} + +#endif \ No newline at end of file diff --git a/MerpMod/Targets/A8DH200V.h b/MerpMod/Targets/A8DH200V.h index 6ee500c..4cb0f94 100644 --- a/MerpMod/Targets/A8DH200V.h +++ b/MerpMod/Targets/A8DH200V.h @@ -1,8 +1,8 @@ -#define MOD_DATE 13.8.14.2226 +#define MOD_DATE 14.6.12.1258 #include "Flash.h" #define MOD_CONFIG Flash -#define MOD_BUILD Debug +#define MOD_BUILD Testing #define MOD_RELEASE 0 #define ECU_CALIBRATION_ID A8DH200V #define ECU_IDENTIFIER 4352594006 diff --git a/MerpMod/Targets/A8DH200V.txt b/MerpMod/Targets/A8DH200V.txt index c899304..d6c41c0 100644 --- a/MerpMod/Targets/A8DH200V.txt +++ b/MerpMod/Targets/A8DH200V.txt @@ -15,6 +15,8 @@ SECTIONS *(RomHole_BoostHackTables) *(RomHole_TimingHackTables) *(RomHole_MapSwitchTables) + *(RomHole_ProgModeTables) + *(RomHole_PortLoggerTables) *(RomHole_Vin) *(RomHole_Code) *(RomHole_Functions) diff --git a/MerpMod/Targets/D2WD701C.h b/MerpMod/Targets/D2WD701C.h new file mode 100644 index 0000000..620c389 --- /dev/null +++ b/MerpMod/Targets/D2WD701C.h @@ -0,0 +1,141 @@ +#define MOD_DATE 14.4.9.1853 + +#include "Flash.h" +#define MOD_CONFIG Flash +#define MOD_BUILD Testing +#define MOD_RELEASE 0 +#define ECU_CALIBRATION_ID D2WD701C +#define ECU_IDENTIFIER 3c4a384106 +///////////////////// +// NonSpecific Rom Info and Routines +///////////////////// + +#define dCalId (0x00002000) +#define dEcuId (0x000C9AF4) +#define dRomHoleStart (0x000CC000) +#define pRamHoleStart (0xFFFF8120) +#define pRamHoleEnd (0xFFFFB400) +#define sPull2DFloat (0x0000209C) +#define sPull3DFloat (0x00002150) + +///////////////////// +// Switch Hacks +///////////////////// + + +///////////////////// +// Rev Limit Hack +///////////////////// + +#define hRevLimDelete (0x000128FC) +#define sRevLimStart (0x00026000) +#define sRevLimEnd (0x0001D734) +#define pFlagsRevLim ((unsigned char*)0xFFFF5F78) +#define RevLimBitMask (0x80) + +///////////////////// +// Speed Density Hack +///////////////////// + +#define hMafCalc (0x00007CA4) +#define sMafCalc (0x00007C48) + +///////////////////// +// Injector Hack +///////////////////// + + +///////////////////// +// Cel Hacks +///////////////////// + +#define sCelTrigger (0x000542B8) +#define hCelSignal (0x000543D0) +#define pCelSignalOem ((unsigned char*)0xFFFF7D8E) + +///////////////////// +// Boost Hacks +///////////////////// + + +///////////////////// +// WGDC Hacks +///////////////////// + + +///////////////////// +// Primary Open Loop Fueling Hacks +///////////////////// + +#define pPolf4Byte (0xFFFF5DFC) +#define hPolf (0x00012938) +#define sPolf (0x000237DC) +#define pPolfEnrich (0xFFFF5DFC) + +///////////////////// +// Timing Hacks +///////////////////// + +#define pBaseTiming (0xFFFF6178) +#define pKcaIam (0xFFFF6DB4) + +///////////////////// +// Spark Cut +///////////////////// + + +///////////////////// +// Flags-Signals +///////////////////// + +#define pResumeFlags ((unsigned char*)0xFFFF6B28) +#define ResumeBitMask ((unsigned char)0x04) +#define pCoastFlags ((unsigned char*)0xFFFF6B28) +#define CoastBitMask ((unsigned char)0x02) +#define pBrakeFlags ((unsigned char*)0xFFFF6B28) +#define BrakeBitMask ((unsigned char)0x08) +#define pClutchFlags ((unsigned char*)0xFFFF551F) +#define ClutchBitMask ((unsigned char)0x40) + +///////////////////// +// NonSpecific Engine params +///////////////////// + +#define pFbkc4 ((float*)0xFFFF6D94) +#define pIam4 ((float*)0xFFFF2528) +#define pEngineSpeed ((float*)0xFFFF5548) +#define pVehicleSpeed ((float*)0xFFFF5540) +#define pCoolantTemp ((float*)0xFFFF4BBC) +#define pAtmoPress ((float*)0xFFFF4BE8) +#define pManifoldAbsolutePressure ((float*)0xFFFF52A4) +#define pIntakeAirTemp ((float*)0xFFFF4BAC) +#define pMassAirFlow ((float*)0xFFFF4BE4) +#define pMafSensorVoltage ((short*)0xFFFF4B06) +#define pEngineLoad ((float*)0xFFFF543C) +#define pThrottlePlate ((float*)0xFFFF52C8) +#define pAf1Res ((float*)0xFFFF4E70) + +///////////////////// +// OBD Experimental stuff +///////////////////// + + +///////////////////// +// New Definitions +///////////////////// + +#define dLoadSmoothingA (0x000C1208) +#define dLoadSmoothingB (0x000C120C) +#define dLoadSmoothingAlt (0x000C1204) +#define dLoadSmoothingAlt2 (0x000C1200) +#define dLoadSmoothingFinal (0x000C1210) + +///////////////////// +// Memory Reset +///////////////////// + +#define sMemoryReset (0x0000FC90) +#define hMemoryReset (0x0000D1FC) +#define pMemoryResetLimit (0xFFFFBFFB) +#define hMemoryResetLimit (0x00010360) + diff --git a/MerpMod/Targets/D2WD701CConfig.h b/MerpMod/Targets/D2WD701CConfig.h new file mode 100644 index 0000000..b051490 --- /dev/null +++ b/MerpMod/Targets/D2WD701CConfig.h @@ -0,0 +1,15 @@ + +////////////////////////////// +// OPTIONS +////////////////////////////// + +#define AUTO_TRANS 0 +#define SD_DMAP 0 + +#define ECU_IDENTIFIER_CHARS (10) +#define ECU_CALIBRATION_CHARS (8) +#define MOD_CALIBRATION_ID FFFFFFFF +#define MOD_ECU_IDENTIFIER FFFFFFFFFF + +#define EXPECTED_MAF_SENSOR 3.47f +#define EXPECTED_MAF_SD 3.73053f \ No newline at end of file diff --git a/MerpMod/Targets/D2ZZ001EConfig.h b/MerpMod/Targets/D2ZZ001EConfig.h new file mode 100644 index 0000000..df1b4f4 --- /dev/null +++ b/MerpMod/Targets/D2ZZ001EConfig.h @@ -0,0 +1,15 @@ + +////////////////////////////// +// OPTIONS +////////////////////////////// + +#define AUTO_TRANS 1 +#define SD_DMAP 0 + +#define ECU_IDENTIFIER_CHARS (10) +#define ECU_CALIBRATION_CHARS (8) +#define MOD_CALIBRATION_ID FFFFFFFF +#define MOD_ECU_IDENTIFIER FFFFFFFFFF + +#define EXPECTED_MAF_SENSOR 3.47f +#define EXPECTED_MAF_SD 3.73053f \ No newline at end of file diff --git a/MerpMod/TimingHackTables.c b/MerpMod/TimingHackTables.c index c8fc050..429c367 100644 --- a/MerpMod/TimingHackTables.c +++ b/MerpMod/TimingHackTables.c @@ -84,26 +84,27 @@ float T1i_ROWS[] TIMINGDATA = {2800,3200,3600,4000,4400,4800,5200,5600,6000,6400,6800,7000,7200,7400,7600,7800,8000,8200,8400,8600}; unsigned char T1i_DATA[] TIMINGDATA = -{20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20}; +{105, 121, 121, 117, 91, 71, 53, 37, 26, 26, 26, 25, 25, 24, 23, 23, 22, 21, 21, 20, +134, 168, 148, 137, 115, 90, 73, 61, 48, 40, 40, 38, 36, 33, 31, 29, 27, 24, 22, 20, +162, 193, 171, 159, 122, 104, 88, 77, 63, 55, 50, 47, 43, 40, 37, 33, 30, 27, 23, 20, +185, 213, 199, 169, 141, 132, 118, 101, 80, 70, 63, 58, 53, 49, 44, 39, 34, 30, 25, 20, +185, 208, 213, 182, 165, 151, 129, 114, 90, 80, 68, 63, 57, 52, 47, 41, 36, 31, 25, 20, +185, 202, 208, 182, 165, 152, 135, 118, 97, 87, 80, 73, 67, 60, 53, 47, 40, 33, 27, 20, +185, 196, 196, 182, 165, 159, 139, 122, 102, 94, 85, 78, 71, 63, 56, 49, 42, 34, 27, 20, +185, 196, 196, 182, 171, 159, 145, 132, 111, 102, 95, 87, 78, 70, 62, 53, 45, 37, 28, 20, +185, 196, 196, 182, 171, 151, 137, 125, 115, 107, 101, 92, 83, 74, 65, 56, 47, 38, 29, 20, +182, 193, 193, 182, 171, 151, 137, 125, 115, 110, 104, 95, 85, 76, 67, 57, 48, 39, 29, 20, +171, 182, 182, 182, 171, 151, 137, 125, 119, 114, 110, 100, 90, 80, 70, 60, 50, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 125, 122, 119, 112, 102, 92, 81, 71, 61, 51, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 127, 124, 121, 112, 102, 92, 81, 71, 61, 51, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 129, 125, 122, 115, 104, 94, 83, 73, 62, 52, 41, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +}; ThreeDTable TimingTable1i TIMINGDATA = { .columnCount = 20, @@ -127,26 +128,27 @@ float T2i_ROWS[] TIMINGDATA = {2800,3200,3600,4000,4400,4800,5200,5600,6000,6400,6800,7000,7200,7400,7600,7800,8000,8200,8400,8600}; unsigned char T2i_DATA[] TIMINGDATA = -{20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20}; +{105, 121, 121, 117, 91, 71, 53, 37, 26, 26, 26, 25, 25, 24, 23, 23, 22, 21, 21, 20, +134, 168, 148, 137, 115, 90, 73, 61, 48, 40, 40, 38, 36, 33, 31, 29, 27, 24, 22, 20, +162, 193, 171, 159, 122, 104, 88, 77, 63, 55, 50, 47, 43, 40, 37, 33, 30, 27, 23, 20, +185, 213, 199, 169, 141, 132, 118, 101, 80, 70, 63, 58, 53, 49, 44, 39, 34, 30, 25, 20, +185, 208, 213, 182, 165, 151, 129, 114, 90, 80, 68, 63, 57, 52, 47, 41, 36, 31, 25, 20, +185, 202, 208, 182, 165, 152, 135, 118, 97, 87, 80, 73, 67, 60, 53, 47, 40, 33, 27, 20, +185, 196, 196, 182, 165, 159, 139, 122, 102, 94, 85, 78, 71, 63, 56, 49, 42, 34, 27, 20, +185, 196, 196, 182, 171, 159, 145, 132, 111, 102, 95, 87, 78, 70, 62, 53, 45, 37, 28, 20, +185, 196, 196, 182, 171, 151, 137, 125, 115, 107, 101, 92, 83, 74, 65, 56, 47, 38, 29, 20, +182, 193, 193, 182, 171, 151, 137, 125, 115, 110, 104, 95, 85, 76, 67, 57, 48, 39, 29, 20, +171, 182, 182, 182, 171, 151, 137, 125, 119, 114, 110, 100, 90, 80, 70, 60, 50, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 125, 122, 119, 112, 102, 92, 81, 71, 61, 51, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 127, 124, 121, 112, 102, 92, 81, 71, 61, 51, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 129, 125, 122, 115, 104, 94, 83, 73, 62, 52, 41, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +}; ThreeDTable TimingTable2i TIMINGDATA = { .columnCount = 20, @@ -169,26 +171,26 @@ float KCR1i_ROWS[] TIMINGDATA = {2800,3200,3600,4000,4400,4800,5200,5600,6000,6400,6800,7000,7200,7400,7600,7800,8000,8200,8400,8600}; unsigned char KCR1i_DATA[] TIMINGDATA = -{20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20}; +{85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85}; ThreeDTable KnockCorrectionRetardTable1i TIMINGDATA = { .columnCount = 20, @@ -211,26 +213,26 @@ float KCR2i_ROWS[] TIMINGDATA = {2800,3200,3600,4000,4400,4800,5200,5600,6000,6400,6800,7000,7200,7400,7600,7800,8000,8200,8400,8600}; unsigned char KCR2i_DATA[] TIMINGDATA = -{20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20}; +{85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85}; ThreeDTable KnockCorrectionRetardTable2i TIMINGDATA = { .columnCount = 20, @@ -254,26 +256,27 @@ float T1s_ROWS[] TIMINGDATA = {2800,3200,3600,4000,4400,4800,5200,5600,6000,6400,6800,7000,7200,7400,7600,7800,8000,8200,8400,8600}; unsigned char T1s_DATA[] TIMINGDATA = -{20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20}; +{105, 121, 121, 117, 91, 71, 53, 37, 26, 26, 26, 25, 25, 24, 23, 23, 22, 21, 21, 20, +134, 168, 148, 137, 115, 90, 73, 61, 48, 40, 40, 38, 36, 33, 31, 29, 27, 24, 22, 20, +162, 193, 171, 159, 122, 104, 88, 77, 63, 55, 50, 47, 43, 40, 37, 33, 30, 27, 23, 20, +185, 213, 199, 169, 141, 132, 118, 101, 80, 70, 63, 58, 53, 49, 44, 39, 34, 30, 25, 20, +185, 208, 213, 182, 165, 151, 129, 114, 90, 80, 68, 63, 57, 52, 47, 41, 36, 31, 25, 20, +185, 202, 208, 182, 165, 152, 135, 118, 97, 87, 80, 73, 67, 60, 53, 47, 40, 33, 27, 20, +185, 196, 196, 182, 165, 159, 139, 122, 102, 94, 85, 78, 71, 63, 56, 49, 42, 34, 27, 20, +185, 196, 196, 182, 171, 159, 145, 132, 111, 102, 95, 87, 78, 70, 62, 53, 45, 37, 28, 20, +185, 196, 196, 182, 171, 151, 137, 125, 115, 107, 101, 92, 83, 74, 65, 56, 47, 38, 29, 20, +182, 193, 193, 182, 171, 151, 137, 125, 115, 110, 104, 95, 85, 76, 67, 57, 48, 39, 29, 20, +171, 182, 182, 182, 171, 151, 137, 125, 119, 114, 110, 100, 90, 80, 70, 60, 50, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 125, 122, 119, 112, 102, 92, 81, 71, 61, 51, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 127, 124, 121, 112, 102, 92, 81, 71, 61, 51, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 129, 125, 122, 115, 104, 94, 83, 73, 62, 52, 41, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +}; ThreeDTable TimingTable1s TIMINGDATA = { .columnCount = 20, @@ -297,26 +300,27 @@ float T2s_ROWS[] TIMINGDATA = {2800,3200,3600,4000,4400,4800,5200,5600,6000,6400,6800,7000,7200,7400,7600,7800,8000,8200,8400,8600}; unsigned char T2s_DATA[] TIMINGDATA = -{20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20}; +{105, 121, 121, 117, 91, 71, 53, 37, 26, 26, 26, 25, 25, 24, 23, 23, 22, 21, 21, 20, +134, 168, 148, 137, 115, 90, 73, 61, 48, 40, 40, 38, 36, 33, 31, 29, 27, 24, 22, 20, +162, 193, 171, 159, 122, 104, 88, 77, 63, 55, 50, 47, 43, 40, 37, 33, 30, 27, 23, 20, +185, 213, 199, 169, 141, 132, 118, 101, 80, 70, 63, 58, 53, 49, 44, 39, 34, 30, 25, 20, +185, 208, 213, 182, 165, 151, 129, 114, 90, 80, 68, 63, 57, 52, 47, 41, 36, 31, 25, 20, +185, 202, 208, 182, 165, 152, 135, 118, 97, 87, 80, 73, 67, 60, 53, 47, 40, 33, 27, 20, +185, 196, 196, 182, 165, 159, 139, 122, 102, 94, 85, 78, 71, 63, 56, 49, 42, 34, 27, 20, +185, 196, 196, 182, 171, 159, 145, 132, 111, 102, 95, 87, 78, 70, 62, 53, 45, 37, 28, 20, +185, 196, 196, 182, 171, 151, 137, 125, 115, 107, 101, 92, 83, 74, 65, 56, 47, 38, 29, 20, +182, 193, 193, 182, 171, 151, 137, 125, 115, 110, 104, 95, 85, 76, 67, 57, 48, 39, 29, 20, +171, 182, 182, 182, 171, 151, 137, 125, 119, 114, 110, 100, 90, 80, 70, 60, 50, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 125, 122, 119, 112, 102, 92, 81, 71, 61, 51, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 127, 124, 121, 112, 102, 92, 81, 71, 61, 51, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 129, 125, 122, 115, 104, 94, 83, 73, 62, 52, 41, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +}; ThreeDTable TimingTable2s TIMINGDATA = { .columnCount = 20, @@ -339,26 +343,26 @@ float KCR1s_ROWS[] TIMINGDATA = {2800,3200,3600,4000,4400,4800,5200,5600,6000,6400,6800,7000,7200,7400,7600,7800,8000,8200,8400,8600}; unsigned char KCR1s_DATA[] TIMINGDATA = -{20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20}; +{85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85}; ThreeDTable KnockCorrectionRetardTable1s TIMINGDATA = { .columnCount = 20, @@ -381,26 +385,26 @@ float KCR2s_ROWS[] TIMINGDATA = {2800,3200,3600,4000,4400,4800,5200,5600,6000,6400,6800,7000,7200,7400,7600,7800,8000,8200,8400,8600}; unsigned char KCR2s_DATA[] TIMINGDATA = -{20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20}; +{85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85}; ThreeDTable KnockCorrectionRetardTable2s TIMINGDATA = { .columnCount = 20, @@ -423,26 +427,27 @@ float T1ss_ROWS[] TIMINGDATA = {2800,3200,3600,4000,4400,4800,5200,5600,6000,6400,6800,7000,7200,7400,7600,7800,8000,8200,8400,8600}; unsigned char T1ss_DATA[] TIMINGDATA = -{20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20}; +{105, 121, 121, 117, 91, 71, 53, 37, 26, 26, 26, 25, 25, 24, 23, 23, 22, 21, 21, 20, +134, 168, 148, 137, 115, 90, 73, 61, 48, 40, 40, 38, 36, 33, 31, 29, 27, 24, 22, 20, +162, 193, 171, 159, 122, 104, 88, 77, 63, 55, 50, 47, 43, 40, 37, 33, 30, 27, 23, 20, +185, 213, 199, 169, 141, 132, 118, 101, 80, 70, 63, 58, 53, 49, 44, 39, 34, 30, 25, 20, +185, 208, 213, 182, 165, 151, 129, 114, 90, 80, 68, 63, 57, 52, 47, 41, 36, 31, 25, 20, +185, 202, 208, 182, 165, 152, 135, 118, 97, 87, 80, 73, 67, 60, 53, 47, 40, 33, 27, 20, +185, 196, 196, 182, 165, 159, 139, 122, 102, 94, 85, 78, 71, 63, 56, 49, 42, 34, 27, 20, +185, 196, 196, 182, 171, 159, 145, 132, 111, 102, 95, 87, 78, 70, 62, 53, 45, 37, 28, 20, +185, 196, 196, 182, 171, 151, 137, 125, 115, 107, 101, 92, 83, 74, 65, 56, 47, 38, 29, 20, +182, 193, 193, 182, 171, 151, 137, 125, 115, 110, 104, 95, 85, 76, 67, 57, 48, 39, 29, 20, +171, 182, 182, 182, 171, 151, 137, 125, 119, 114, 110, 100, 90, 80, 70, 60, 50, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 125, 122, 119, 112, 102, 92, 81, 71, 61, 51, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 127, 124, 121, 112, 102, 92, 81, 71, 61, 51, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 129, 125, 122, 115, 104, 94, 83, 73, 62, 52, 41, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +}; ThreeDTable TimingTable1ss TIMINGDATA = { .columnCount = 20, @@ -466,26 +471,27 @@ float T2ss_ROWS[] TIMINGDATA = {2800,3200,3600,4000,4400,4800,5200,5600,6000,6400,6800,7000,7200,7400,7600,7800,8000,8200,8400,8600}; unsigned char T2ss_DATA[] TIMINGDATA = -{20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20}; +{105, 121, 121, 117, 91, 71, 53, 37, 26, 26, 26, 25, 25, 24, 23, 23, 22, 21, 21, 20, +134, 168, 148, 137, 115, 90, 73, 61, 48, 40, 40, 38, 36, 33, 31, 29, 27, 24, 22, 20, +162, 193, 171, 159, 122, 104, 88, 77, 63, 55, 50, 47, 43, 40, 37, 33, 30, 27, 23, 20, +185, 213, 199, 169, 141, 132, 118, 101, 80, 70, 63, 58, 53, 49, 44, 39, 34, 30, 25, 20, +185, 208, 213, 182, 165, 151, 129, 114, 90, 80, 68, 63, 57, 52, 47, 41, 36, 31, 25, 20, +185, 202, 208, 182, 165, 152, 135, 118, 97, 87, 80, 73, 67, 60, 53, 47, 40, 33, 27, 20, +185, 196, 196, 182, 165, 159, 139, 122, 102, 94, 85, 78, 71, 63, 56, 49, 42, 34, 27, 20, +185, 196, 196, 182, 171, 159, 145, 132, 111, 102, 95, 87, 78, 70, 62, 53, 45, 37, 28, 20, +185, 196, 196, 182, 171, 151, 137, 125, 115, 107, 101, 92, 83, 74, 65, 56, 47, 38, 29, 20, +182, 193, 193, 182, 171, 151, 137, 125, 115, 110, 104, 95, 85, 76, 67, 57, 48, 39, 29, 20, +171, 182, 182, 182, 171, 151, 137, 125, 119, 114, 110, 100, 90, 80, 70, 60, 50, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 125, 122, 119, 112, 102, 92, 81, 71, 61, 51, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 127, 124, 121, 112, 102, 92, 81, 71, 61, 51, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 129, 125, 122, 115, 104, 94, 83, 73, 62, 52, 41, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +}; ThreeDTable TimingTable2ss TIMINGDATA = { .columnCount = 20, @@ -509,26 +515,26 @@ float KCR1ss_ROWS[] TIMINGDATA = {2800,3200,3600,4000,4400,4800,5200,5600,6000,6400,6800,7000,7200,7400,7600,7800,8000,8200,8400,8600}; unsigned char KCR1ss_DATA[] TIMINGDATA = -{20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20}; +{85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85}; ThreeDTable KnockCorrectionRetardTable1ss TIMINGDATA = { .columnCount = 20, @@ -551,26 +557,26 @@ float KCR2ss_ROWS[] TIMINGDATA = {2800,3200,3600,4000,4400,4800,5200,5600,6000,6400,6800,7000,7200,7400,7600,7800,8000,8200,8400,8600}; unsigned char KCR2ss_DATA[] TIMINGDATA = -{20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20}; +{85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85}; ThreeDTable KnockCorrectionRetardTable2ss TIMINGDATA = { .columnCount = 20, @@ -609,18 +615,19 @@ float LCTR_ROWS[] TIMINGDATA = {2800,3000,3600,4000,4400,4800,5200,5600,6000,6400,6800,7200}; unsigned char LCTR_DATA[] TIMINGDATA = -{114, 114, 114, 114, 114, -114, 114, 114, 114, 114, -114, 114, 114, 114, 114, -114, 114, 114, 114, 114, -114, 114, 114, 114, 114, -114, 114, 114, 114, 114, -110, 112, 114, 114, 114, -105, 110, 114, 114, 114, -100, 107, 114, 114, 114, -100, 107, 114, 114, 114, -100, 107, 114, 114, 114, -100, 107, 114, 114, 114}; +{57, 57, 57, 57, 57, +57, 57, 57, 57, 57, +57, 57, 57, 57, 57, +59, 59, 58, 58, 57, +60, 59, 59, 58, 57, +62, 61, 60, 58, 57, +63, 62, 60, 59, 57, +65, 63, 61, 59, 57, +66, 64, 62, 59, 57, +68, 65, 63, 60, 57, +69, 66, 63, 60, 57, +71, 68, 64, 61, 57, +}; ThreeDTable LCTimingRetardTable TIMINGDATA = { .columnCount = 5, diff --git a/MerpMod/TimingHacks.c b/MerpMod/TimingHacks.c index baf1c0d..47111f3 100644 --- a/MerpMod/TimingHacks.c +++ b/MerpMod/TimingHacks.c @@ -29,9 +29,9 @@ float TimingHack() float subIam; float iam; - subIam = 1 - IAM; + subIam = HighPass(1 - IAM, 0.0f); - pRamVariables->MaxSubtractiveKCA = BlendAndSwitch(KnockCorrectionRetardTableGroup, *pEngineLoad, *pEngineSpeed); + pRamVariables->MaxSubtractiveKCA = HighPass(BlendAndSwitch(KnockCorrectionRetardTableGroup, *pEngineLoad, *pEngineSpeed),0.0f); pRamVariables->SubtractiveKCA = subIam * pRamVariables->MaxSubtractiveKCA; @@ -56,16 +56,16 @@ float TimingHack() } else if(pRamVariables->LCTimingMode == LCTimingModeCompensated) { - pRamVariables->LCTimingRetard = Pull3DHooked(&LCTimingRetardTable, *pVehicleSpeed, *pEngineSpeed); + pRamVariables->LCTimingRetard = HighPass(Pull3DHooked(&LCTimingRetardTable, *pVehicleSpeed, *pEngineSpeed),0.0f); pRamVariables->LCTimingRetard *= pRamVariables->LCTimingRetardMultiplier; - OutputValue -= pRamVariables->LCTimingRetard; + OutputValue -= HighPass(pRamVariables->LCTimingRetard,0.0f); } pRamVariables->BaseTiming = OutputValue; - if(pRamVariables->TimingHackEnabled == 0) + if(pRamVariables->TimingHackEnabled == 0x01) pRamVariables->TimingHackOutput = pRamVariables->BaseTiming - Abs(pRamVariables->SubtractiveKCA); else pRamVariables->TimingHackOutput = Pull3DHooked((void*)PrimaryOEMTimingTable, *pEngineLoad, *pEngineSpeed); diff --git a/README_PROG_MODE.md b/README_PROG_MODE.md new file mode 100644 index 0000000..9d3abda --- /dev/null +++ b/README_PROG_MODE.md @@ -0,0 +1,90 @@ +MerpMod Programming Mode +======================== + +Entering and Exiting +-------------------- + +Initial Requirements: ++Engine off ++Clutch out ++Brake out ++Gas out ++Defog Switch off + +1. Press the brake pedal. +2. Fully press and depress the gas pedal three times. + +The CEL should now be flashing. + +To exit programming mode, press the clutch in. + +Readout, Selection, and Adjustment +---------------------------------- + +Programming mode uses the CEL light to read out the current menu item and the current value of the selected menu item. + +The current menu item is indicated by the count of SLOW flashes. + +The current value is indicated by the count of FAST flashes. + +To select the next menu item, press the cruise control resume button. + +To select the previous menu item, press the cruise control resume button. + +To increase the value associated with the current menu item, press and depress the gas pedal. + +To decrease the value associated with the current menu item, press and depress the brake pedal. + +Menu Items +---------- + +1. Map Switch (Intelligent / Sport / Sport Sharp) +2. Map Blending (Map 1 / Map 2) +3. Launch Control Adjust +4. IAM Adjust +5. Valet Mode + +1. Map Switch +---------- + +The currently selected map is displayed using the following values: +Intelligent: 1 flash +Sport: 2 flashes +Sport Sharp: 3 flashes + +2. Map Blending +------------ + +The current map blending ratio is displayed using a value of 1-11 where: +1 flash = 1.0 (Map 1) +2 flashes = 1.1 (Blending) +3 flashes = 1.2 (Blending) +... (Blending) +11 flashes = 2.0 (Map 2) + +3. Launch Control Adjust +--------------------- + +The current launch control RPM is displayed in ranges of 1000 RPM where: +1 flash = 1000-2000 RPM +2 flashes = 2000-3000 RPM +3 flashes = 3000-4000 RPM +... + +4. iAM Adjust +---------- + +The current IAM value is displayed in increments of 0.1 where: +1 flash = 0.0 IAM +2 flashes = 0.1 IAM +... +11 flashes = 1.0 IAM + +5. Valet Mode +---------- + +The current valet mode is displayed as: + +0 flashes = OFF +1 flash = ON + diff --git a/Release/Flash/A8DH200V.MeRpMoD.Flash.Testing.v14.6.12.1258.patch b/Release/Flash/A8DH200V.MeRpMoD.Flash.Testing.v14.6.12.1258.patch new file mode 100644 index 0000000..92a3803 --- /dev/null +++ b/Release/Flash/A8DH200V.MeRpMoD.Flash.Testing.v14.6.12.1258.patch @@ -0,0 +1,1457 @@ +S02B0000433A5C55736572735C6D657272696C6C5C4465765C4D6572704D6F645C4D6572704D6F645C466C618C +S3150000000000E00000FFFF200000E00000FFFF2000EE +S3150000001000E0003000E0003400E0003800E0003C82 +S3150000002000E0004000E0004400E0004800E0004C32 +S3110000003000E0005000E0005400E0005822 +S315000E100041384448323030562E4D6552704D6F443D +S315000E10102E466C6173682E54657374696E672E76F0 +S315000E102031342E362E31322E313235380000000054 +S315000E1030434F5059524947485420323031322C32A0 +S315000E1040303133204D657272696C6C20412E204D05 +S315000E105079657273204949492C206D657272696CE7 +S315000E10606C616D7965727369696940676D61696CEA +S315000E10702E636F6D206D657272696C6C616D79652C +S315000E1080727369696940676D61696C2E636F6D2E47 +S315000E109020554E415554484F52495A4544204449CD +S315000E10A053545249425554494F4E20535452494374 +S315000E10B0544C592050524F484942495445442E20CB +S315000E10C04F4646524F414420555345204F4E4C599C +S315000E10D02E204E4F2057415252414E54592E2054D7 +S315000E10E048495320534F46545741524520495320A1 +S315000E10F04C4943454E53454420544F20594F552095 +S315000E11009341532049532C9420414E442057495421 +S315000E1110484F555420414E592057415252414E5434 +S315000E112059204F4620414E59204B494E442C2057AC +S315000E1130484554484552204F52414C2C205752494F +S315000E11405454454E2C20455850524553532C204945 +S315000E11504D504C494544204F5220535441545554FA +S315000E11604F52592C20494E434C5544494E47204226 +S315000E11705554204E4F54204C494D49544544205405 +S315000E11804F2057415252414E54494553204F462007 +S315000E11904D45524348414E544142494C4954592CAF +S315000E11A0204649544E45535320464F522041205017 +S315000E11B04152544943554C415220505552504F536B +S315000E11C0452C20414E44204E4F4E494E4652494ED6 +S315000E11D047454D454E542E00FFFF100000000000FF +S315000E11E00000000000000000010000004388933359 +S315000E11F03B7DB23F401D70A442C80000434800002C +S315000E12004396000043C8000043FA0000441600004F +S315000E1210442F00004448000044610000447A000058 +S315000E1220448980004496000044A2800044AF00002A +S315000E123044BB800044C8000044D4800044E1000052 +S315000E124044ED800044FA0000450340004509800045 +S315000E1250450FC0004516000043FA00004448000042 +S315000E12604496000044C8000044FA000045160000EB +S315000E1270452F00004548000045610000457A0000F4 +S315000E12804583400045898000458FC0004596000085 +S315000E1290459C400045A2800045A8C00045AF000011 +S315000E12A045B5400045BB800045C8000045D48000CA +S315000E12B045E1000045ED80001BEE1D1926E6286F60 +S315000E12C029A92A2A2ABF2B512BA92BEA2C2B2C779C +S315000E12D02CC32D0F2D5B2DA72DF32E3F2E8B2ED728 +S315000E12E02F232F6F2FBB30071CE61DDE25DE27941E +S315000E12F0290329DC2ACC2B442BB62BF72C382C842D +S315000E13002CD02D1C2D682DB42E002E4C2E982EE48E +S315000E13102F302F7C2FC830141F9120FF25BA27128D +S315000E132028F629DC2A3D2ACF2BC72C082C522C9EB8 +S315000E13302CEA2D362D822DCE2E1A2E662EB22EFE8E +S315000E13402F4A2F962FE2302E2108225C25BB27111D +S315000E1350290129F62A652AF62BDD2C252C792CD285 +S315000E13602D2B2D842DDD2E362E8F2EE82F412F9AE6 +S315000E13702FF3304C30A530FE21B322E025BB273AA1 +S315000E138029032A102AA52B1D2C112C6B2CD22D3A93 +S315000E13902DA22E0A2E722EDA2F422FAA3012307A54 +S315000E13A030E2314A31B2321A222D234025CC27891A +S315000E13B029102A2B2AF32BB22CCC2D942E582F1A09 +S315000E13C02FDC309E3160322232E433A63468352A61 +S315000E13D035EC36AE37703832229623A8264127F0E2 +S315000E13E029292A602B902CD32E1D3023312431A689 +S315000E13F0322832AA332C33AE343034B2353435B6C5 +S315000E1400363836BA373C37BE2371247626DA287D2F +S315000E1410299D2AEA2C862E58306432B7337833B893 +S315000E142033F83438347834B834F83538357835B846 +S315000E143035F83638367836B824A7259427F929F2A2 +S315000E14402BB72DC4302231B132F333EB346234BDB7 +S315000E14503518357335CE3629368436DF373A379515 +S315000E146037F0384B38A639012568265D28B62AE2AC +S315000E14702CD92EDF30973200332733F9346234BD40 +S315000E14803518357335CE3629368436DF373A3795E5 +S315000E149037F0384B38A6390125422631289C2AC901 +S315000E14A02CB12EC0305131CD32D0338F33F9343A80 +S315000E14B0347B34BC34FD353E357F35C0360136427D +S315000E14C0368336C43705374625102608284C2A8417 +S315000E14D02C5F2E542FE5313F324B32F7332B3353DD +S315000E14E0337B33A333CB33F3341B3443346B349314 +S315000E14F034BB34E3350B353324D425C427FE2A25D5 +S315000E15002C012DDC2F5330933185320F3236322A91 +S315000E1510321E3212320631FA31EE31E231D631CA8C +S315000E152031BE31B231A6319A249E257927A829BA21 +S315000E15302B952D562EB42FBC307E30E530F330A6CB +S315000E15403059300C2FBF2F722F252ED82E8B2E3EB4 +S315000E15502DF12DA42D572D0A245C2538274D294C07 +S315000E15602B0E2C9C2DD52EA02F3A2F622F302EAF60 +S315000E15702E2E2DAD2D2C2CAB2C2A2BA92B282AA7A3 +S315000E15802A2629A5292428A3241A24F826F428D4A1 +S315000E15902A652BCF2CD52D6E2DBA2D9F2D2C2CAB2F +S315000E15A02C2A2BA92B282AA72A2629A5292428A3A3 +S315000E15B0282227A12720269F23CE249F268028482F +S315000E15C0299D2AD62B8D2BE82BDB2B8F2B1B2A9AAC +S315000E15D02A1929982917289628152794271326920B +S315000E15E026112590250F248E23762452260D27B0FC +S315000E15F028DD29BC2A3E2A412A0029A3292228A20F +S315000E1600282227A2272226A2262225A2252224A286 +S315000E1610242223A2232222A2231E2405259A27183A +S315000E1620281D28A228EF289A282527B7272926AA73 +S315000E1630262B25AC252D24AE242F23B0233122B202 +S315000E1640223321B4213520B622C623B8252726807B +S315000E1650275D278827A026F3264A25CB253024B2D8 +S315000E1660243423B6233822BA223C21BE214020C27E +S315000E167020441FC61F481ECA226E236B24B425E8BB +S315000E1680269D266E2651254C246F23DF233722BA3C +S315000E1690223D21C0214320C620491FCC1F4F1ED2FA +S315000E16A01E551DD81D5B1CDE2216231E24412550F9 +S315000E16B025DD2554250223A5229421F3213E20C2A1 +S315000E16C020461FCA1F4E1ED21E561DDA1D5E1CE276 +S315000E16D01C661BEA1B6E1AF221BE22D123CE24B83B +S315000E16E0251D243A23B321FE20B920071F451ECA05 +S315000E16F01E4F1DD41D591CDE1C631BE81B6D1AF2F2 +S315000E17001A7719FC1981190621662284235B242077 +S315000E1710245D2320226420571EDE1E1B1D4C1CD268 +S315000E17201C581BDE1B641AEA1A7019F6197C19026C +S315000E17301888180E1794171A00180018000E11F8AC +S315000E1740000E1258000E12B80800000038400000B5 +S315000E1750000000000000000043A680004426800022 +S315000E1760447A000044A6A00044D0400044FA00008B +S315000E177043E88000440340004412400044214000E8 +S315000E178044304000443F4000444E4000400040007C +S315000E17904000400040004000400040004000400035 +S315000E17A04000400040004000400040004000400025 +S315000E17B04000400040004000400040004000400015 +S315000E17C04000400040004000400040004000400005 +S315000E17D040004000400040004000400040004000F5 +S315000E17E04000400040004000400040004000000025 +S315000E17F000070007000E1754000E1770000E178C08 +S315000E180008000000388000FD0000000043E880005C +S315000E1810440340004412400044214000443040003E +S315000E1820443F4000444E4000445D4000446C40003E +S315000E1830447B40000000000043FA0000447A00009A +S315000E1840449C400044BB800044FA0000451C400006 +S315000E1850453B8000455AC000457A00000000003224 +S315000E186096FAFAFAFAFA0000003296FAFAFAFAFA42 +S315000E18700000003296FAFAFAFAFA0000003296FAE8 +S315000E1880FAFAFAFA0000003296FAFAFAFAFA0000B2 +S315000E1890003296FAFAFAFAFA0000003296FAFAFAD4 +S315000E18A0FAFA0000003296FAFAFAFAFA0000003254 +S315000E18B096FAFAFAFAFA0000003296FAFAFAFAFAF2 +S315000E18C0000A000A000E180C000E1834000E185CE2 +S315000E18D0040000003B808081000000000100000033 +S315000E18E00200000045E100004248000042480000A8 +S315000E18F000000000457A000042200000458CA00042 +S315000E190040A00000457A0000424800004068B43905 +S315000E1910401800003FE168733FAC49BA3F789375B3 +S315000E19203F4189374270000042A6000002000000C7 +S315000E19300400000001000000080000000400000082 +S315000E194002000000100000001000000042F000002F +S315000E19503F0000002000000002000000BDCCCCCDF0 +S315000E1960C00666663FC000003FC0000041C80000CA +S315000E19702FE67FFC6EF3D10D6110621C61E37103DD +S315000E1980E3082239212061E371036110621CE1082C +S315000E199032108F030009E101A0010009E100601376 +S315000E19A07E046FE36EF6000B00090009FFFF643C30 +S315000E19B02FE67FFC6EF3D10D6110631C61E371039C +S315000E19C0E2802239212061E371036110621C910CC1 +S315000E19D032108F030009E101A0010009E100601336 +S315000E19E07E046FE36EF6000B00090080FFFF69753B +S315000E19F02FE67FFC6EF3D10D6110621C61E371035D +S315000E1A00E3042239212061E371036110621CE104B3 +S315000E1A1032108F030009E101A0010009E1006013F5 +S315000E1A207E046FE36EF6000B00090009FFFF643CAF +S315000E1A302FE67FFC6EF3D10D6110621C61E371031C +S315000E1A40E3022239212061E371036110621CE10277 +S315000E1A5032108F030009E101A0010009E1006013B5 +S315000E1A607E046FE36EF6000B00090009FFFF643C6F +S315000E1A702F862FE64F227FF86EF368E37807D1297B +S315000E1A80410B00096103281068E37806D126410B45 +S315000E1A90000961032810914471036110611C62E311 +S315000E1AA072076220622C32108D280009913971025C +S315000E1AB06110611C62E372066220622C32108D1474 +S315000E1AC0000961E371076110611C21188D1600096A +S315000E1AD061E371066110611C21188D0F000961E327 +S315000E1AE071C8E200112EA0090009911A7103611046 +S315000E1AF0611C62E372076220622C32109111710230 +S315000E1B0062E3720662202120910B710362E3720773 +S315000E1B10622021207E086FE34F266EF668F6000BD4 +S315000E1B2000098FE0000E19F0000E1A302FE64F2234 +S315000E1B307FFC6EF361E371C4D20A112FD10A6111D3 +S315000E1B40415AF10D61E371C4511FF11D045A410B47 +S315000E1B500009D106F118F01C7E046FE34F266EF6CF +S315000E1B60000B000900008160FFFF5BFEFFFF5CD0EB +S315000E1B702F862FE64F227FF46EF361E371CC114E62 +S315000E1B8061E3F14A989FD150611262E372CC532EF3 +S315000E1B9062E36433F428410B0009F10C6183711082 +S315000E1BA0F11A9890D1496112D249F228D249F128F8 +S315000E1BB0D2496423F42CF51C410B0009F10C618308 +S315000E1BC07108F11AD145F218D145F11861E3710881 +S315000E1BD0F120F11A9877D13D6112D23DF228D24109 +S315000E1BE0F128D2416423F42CF51C410B0009F10CAB +S315000E1BF061837114F11A9166D236F228D23BF1281E +S315000E1C00F212D233F128F212925D7208F128F21214 +S315000E1C1092597214F128F212D235F128F21262E3B9 +S315000E1C207208F128F32CF313F13C710CF11A914A58 +S315000E1C3071056110621CE10232108F050009914296 +S315000E1C40710CF118A0370009913D71056110621CE7 +S315000E1C50E10332108F2C00099835D11C6112D21C6B +S315000E1C60F228D21CF128D2236423F42CF51C410B46 +S315000E1C700009F10C6183711CF11A91249223720CE6 +S315000E1C80F2289220721CF128F212921C7210F3287E +S315000E1C909219721CF128F49DF54CF511F15CF13296 +S315000E1CA0F1207120F11A910E7120F118A00300098E +S315000E1CB091097110F118F01C7E0C6FE34F266EF62B +S315000E1CC068F6000B00098FE0000E280C000E28089F +S315000E1CD0FFFF6624FFFF699C000E1738FFFF5C9C12 +S315000E1CE0000E11ECFFFF5CD4000E17F0000E11F47F +S315000E1CF0000E11F0000E18C02F862FE6FFCB4F22D6 +S315000E1D006EF3913592347238F1287130F11A982F9C +S315000E1D10912E7138FC18912B713CF218F18DF42C22 +S315000E1D20F51CD114410B0009F10CF2CCF211F12C79 +S315000E1D3061837134F11A911B7128E20021209117EB +S315000E1D407127E2002120D10C6110611C21188D082B +S315000E1D500009910DD2086220622C425AF12D712C87 +S315000E1D60F11A6FE34F26FCF96EF668F6000B0009C2 +S315000E1D708FE00009000E2394FFFF6AA52F862FE63B +S315000E1D80FFCB4F227FF86EF3D13D410B0009610365 +S315000E1D90611C21188D080009D13A410B0009610317 +S315000E1DA0611C21188D050009D137410B0009A07C55 +S315000E1DB00009D136F21891617160F118F2158F2A69 +S315000E1DC00009D133F21891597150F118F2158F227C +S315000E1DD0000991537126611021188D1C0009D12D11 +S315000E1DE0F218D12DF118F2158F15000991467127AB +S315000E1DF0E200212091427128611021188F550009A9 +S315000E1E00913C7128E20121209138D221F128714CA2 +S315000E1E10F11AA04A0009D11DF118912F7140F2183E +S315000E1E20F2158F3F0009D11BF218D11CF118F215CD +S315000E1E308F38000991227128E2002120911E712708 +S315000E1E40E2012120911A92197244F1287130F11A89 +S315000E1E50981491137144FC1891107148F218F18D73 +S315000E1E60F42CF51CD10E410B0009F10CF2CCF2113B +S315000E1E70F12C61837134F11AA01700098FE0000965 +S315000E1E80000E19B0000E1970000E1CF8FFFF6994B3 +S315000E1E90FFFF699CFFFF66C8000E1928000E192465 +S315000E1EA0000E2394D155410B000991A5712862109D +S315000E1EB0E10132108D020009A0840009919C712661 +S315000E1EC06210E10232108F4F0009929561E37104A0 +S315000E1ED0724CF128F11A918F712CF118F13D015ABD +S315000E1EE07101D2474108312CF21861E3710462E3A5 +S315000E1EF07204F128F122F11A917E712CF118F13D3E +S315000E1F00015AD23F4108312CF118F29DF21361E3CA +S315000E1F10710462E37204F128F122F11A916C715484 +S315000E1F20F21861E3710462E37204F128F120F11AEA +S315000E1F309162713062E37204F128F11A985C915B3A +S315000E1F407130FC189158715CF218F18DF42CF51C59 +S315000E1F50D12C410B0009F10CF2CCF211F12C61835C +S315000E1F607134F11AA02A000991467138FC18914372 +S315000E1F707158F218F18DF42CF51CD122410B000983 +S315000E1F80F10C61E3F3CCF311F13CF11A913471309B +S315000E1F9062E3F128F11A982F912E715CF218F18DE9 +S315000E1FA0F42CF51CD117410B0009F10C61E3F21864 +S315000E1FB0F32CF311F13C61837134F11A911C7128E3 +S315000E1FC0E2022120D110F21891167130F118F21595 +S315000E1FD08D080009D10CF218910E7138F118F21510 +S315000E1FE08F160009D109D2096220632CE280223BAA +S315000E1FF0622C2120A01C00098FE00009000E1CF89F +S315000E2000000E190C000E2394FFFF699CFFFF71BC96 +S315000E2010D10CF11891147134F218F2158F080009CB +S315000E2020D109D2096220622CE37F2239622C21204B +S315000E20307E086FE34F26FCF96EF668F6000B000974 +S315000E20408FE00009FFFF699CFFFF71BC2FE64F2250 +S315000E20507FF46EF361E371CC114F61E37104F14AC3 +S315000E206061E3F15A61E371CC521F912432168F0D42 +S315000E2070000961E371CC521F911E32168D060009BE +S315000E208061E371CC511FF118A00E0009D10B61123C +S315000E209062E372CC572F63E3730462E36473F4381E +S315000E20A0F528410B0009F10CF01C7E0C6FE34F2650 +S315000E20B06EF6000B00098FE090530009000E2808FB +S315000E20C02FE64F227FF86EF361E371C8114F61E37D +S315000E20D0F14A61E371C8521F911A32168F06000932 +S315000E20E061E371C8511FF118A00B0009D1096112E5 +S315000E20F062E372C8532F62E36433F428410B00097E +S315000E2100F10CF01C7E086FE34F266EF6000B0009ED +S315000E21108FE00009000E280C2FE64F226EF3D10633 +S315000E21206112410B0009D105410B00096FE34F26E1 +S315000E21306EF6000B00090009000E2810000E214055 +S315000E21402FE64F226EF3920D910D64236513D10681 +S315000E2150410B0009D105410B00096FE34F266EF6C0 +S315000E2160000B00098FE09054000E21B0000E2214D1 +S315000E21702FE64F226EF391146110621C91123210EB +S315000E21808D0A0009920D910E64236513D106410B3B +S315000E21900009D106410B00096FE34F266EF6000BC0 +S315000E21A000098FE000B49054000E21B0000E2214E8 +S315000E21B02FE67FF06EF361E371D0114D61E371D0BE +S315000E21C0115C61E371D062E372D0522C112E61E381 +S315000E21D071D062E372D0522D112FA00C000961E36B +S315000E21E071D0511FE200212261E371D062E372D0F9 +S315000E21F0522F7204112F62E372D061E371D0522F07 +S315000E2200511E32128FEB00097E106FE36EF6000B35 +S315000E2210000900092F862FE64F226EF39865D133FB +S315000E2220410B00096103621C618371032120985CD6 +S315000E2230D12F410B00096103621C618371022120BB +S315000E2240915371256110611C21188F060009914C5E +S315000E2250D2286220622C712521209146D226622038 +S315000E2260622C622E71262120913FD224F1287138DC +S315000E2270F11A913AD222F128713CF11A9135D221F6 +S315000E2280F128715CF11A9130D21FF1287154F11AAE +S315000E2290912BD21EF1287158F11A9126D21CF128D3 +S315000E22A07140F11A9121D21BF1287144F11A911C39 +S315000E22B0D219F1287148F11A9117D218F1287160C6 +S315000E22C0F11A9112D216F1287150F11A910DD215FA +S315000E22D06220622C710521209107E2B421206FE362 +S315000E22E04F266EF668F6000B00098FE0000E19F009 +S315000E22F0000E1A30000E18DC000E18E0000E18E460 +S315000E2300000E18E8000E18EC000E18F0000E18F469 +S315000E2310000E1900000E1904000E1908000E18F80A +S315000E2320000E18FC000E11E82FE67FFC6EF361E33B +S315000E2330F14A61E3F218F18DF2158F04000961E39B +S315000E2340F118A003000961E3F118F14DF01C7E04AB +S315000E23506FE36EF6000B00092FE67FF86EF361E36E +S315000E23607104F14A61E3F15A62E3720461E3F12802 +S315000E2370F218F2158F05000961E37104F118A00237 +S315000E2380000961E3F118F01C7E086FE36EF6000B90 +S315000E2390000900092FE67FF86EF361E37104F14A36 +S315000E23A061E3F15A62E3720461E3F228F118F21561 +S315000E23B08F05000961E37104F118A002000961E3BB +S315000E23C0F118F01C7E086FE36EF6000B000900098B +S315000E23D02FE64F226EF3D105410B0009D104410BB6 +S315000E23E000096FE34F266EF6000B0009000E1A70F9 +S315000E23F0000E25802FE64F226EF3D106410B000903 +S315000E2400D1056112410B00096FE34F266EF6000BE4 +S315000E241000090009000E1D7C000E28142FE64F221F +S315000E24207FF46EF361E371CC114F61E371072150B6 +S315000E243061E371CC116D61E371062170913E716D90 +S315000E24406110611C21188F3300099137716C611070 +S315000E2450611C21188D12000961E371CC511F6110A8 +S315000E2460631C62E3720761E37117643365206610BD +S315000E2470E700D113410B0009A010000961E371CCEE +S315000E2480511D6110631C62E3720661E3711B6433B6 +S315000E249065206610E700D10A410B0009910E920DD8 +S315000E24A0726C6220622CE301223A622C716C21203E +S315000E24B07E0C6FE34F266EF6000B00098FE00009C7 +S315000E24C0000E24C42FE67FFC6EF361E371032140F8 +S315000E24D061E37102215061E37101216061E32170B4 +S315000E24E0914B716D6110611C21188D07000961E316 +S315000E24F06110621CE10132108F3A0009913D716E36 +S315000E250062E37201622021209137716862E37202E2 +S315000E2510622021209131716962E3720262202120CC +S315000E252061E371036110611C21188D21000991244C +S315000E253062E372036220322C622C72FF622C716A85 +S315000E25402120911A62E372036220322C622C72FFF2 +S315000E2550622C716B2120911092106220622CE30185 +S315000E2560223A622C716421209107716DE2012120BD +S315000E25707E046FE36EF6000B00098FE08BA2000956 +S315000E25802FE64F226EF3916E716B6110611C21184E +S315000E25908D2E0009916771696110611C21188F1CBF +S315000E25A000099160925F72686220622C7169212027 +S315000E25B09159925872646220622CE301223A622C7F +S315000E25C071642120914F6213726B6220622C72FF2E +S315000E25D0622C716B2120A027000991446213726947 +S315000E25E06220622C72FF622C71692120A01C0009E8 +S315000E25F09139716E6110611C21188D0B0009913293 +S315000E26006213726E6220622C72FF622C716E212032 +S315000E2610A00A0009912792276220622C716421205C +S315000E26209121716DE2002120D110F118D110F2180E +S315000E2630F2158902F2148F270009D10EF218D10E67 +S315000E2640F118F2158F200009D10C6110621CD10C05 +S315000E26506110611C64236513E600E700D109410B86 +S315000E26600009A07700098FE08BA20009FFFF749086 +S315000E2670000E1960FFFF67CC000E1964000E1938A4 +S315000E2680000E1934000E24C4D140F118D140F218B0 +S315000E2690F2158902F2148F160009D13EF218D13EB8 +S315000E26A0F118F2158F0F0009D13C6110621CD13C56 +S315000E26B06110611C64236513E600E700D139410BF6 +S315000E26C00009A0470009D138F118D138F218F215D1 +S315000E26D08F160009D12FF218D135F118F2158F0F7A +S315000E26E00009D1346110621CD1336110611C642360 +S315000E26F06513E600E700D12B410B0009A02A00095D +S315000E2700D12EF218D12EF118F2158F0F0009D12DF8 +S315000E27106110621CD12C6110611C64236513E640A6 +S315000E2720E700D120410B0009A0140009D127F118AA +S315000E2730D127F218F2158F0D0009D1266110621CF1 +S315000E2740D1256110611C64236513E640E700D1159F +S315000E2750410B0009911971646110621C9115716526 +S315000E27606110611C32108D040009D11C6112410BDF +S315000E27700009910A920972646220622C7165212009 +S315000E27806FE34F266EF6000B00098FE0FFFF749085 +S315000E2790000E195CFFFF67CC000E1964000E19308F +S315000E27A0000E192C000E24C4FFFF5F08000E196CD4 +S315000E27B0000E1968000E1940000E193CFFFF5CACA6 +S315000E27C0000E194C000E1948000E1944FFFF291071 +S315000E27D0000E1950000E1954000E1958000E281826 +S315000E27E02FE64F226EF3D106410B0009D105611279 +S315000E27F0410B00096FE34F266EF6000B0009000928 +S315000E2800000E23D0000E281C000021100000209C74 +S315000E28100000FB5400030D460007806C00016BD8C8 +S309000E2820070016681B +S31500E00000DF076FF2D007400B0009D008400B00096C +S31500E00010AFFE00090009000900090009000900090E +S31500E00020000E11D80E005E880E00506C0E005E0CBD +S31500E00030002B0009002B0009002B0009002B00090A +S31500E00040002B0009002B0009002B0009002B0009FA +S31500E00050002B0009002B0009002B0009000900090C +S31500F0000043210002000CDD54454355204964656EDA +S31500F00010746966696572000043210002000C1AF4E7 +S31500F00020456E67696E65204C6F616420536D6F6F26 +S31500F000307468696E6720466163746F7220410000D0 +S31500F0004043210002000C1AF8456E67696E65204C74 +S31500F000506F616420536D6F6F7468696E67204661D7 +S31500F0006063746F722042000043210002000C1B04EF +S31500F00070456E67696E65204C6F616420536D6F6FD6 +S31500F000807468696E6720466163746F722046696EA4 +S31500F00090616C000043210010FFFF69754500000008 +S31500F000A00000000000090009000000804D65727034 +S31500F000B04D6F6420436C757463682053776974637D +S31500F000C06800000043210010FFFF643C450000007B +S31500F000D00000000000090009000000084D6572707C +S31500F000E04D6F64204272616B652053776974636863 +S31500F000F00000000043210010FFFF643C45000000B3 +S31500F001000000000000090009000000044D6572704F +S31500F001104D6F642043727569736520526573756D12 +S31500F00120652053776974636800000000432100106E +S31500F00130FFFF643C450000000000000000090009D4 +S31500F00140000000024D6572704D6F64204372756950 +S31500F00150736520436F617374205377697463680025 +S31500F0016043210010FFFF71BC4500000000000000B5 +S31500F0017000090009000000804D6572704D6F642023 +S31500F00180526576204C696D6974204675656C20431E +S31500F001907574205377697463680000004321000882 +S31500F001A0FFFF8FE545000000000000000009000990 +S31500F001B075696E7438000000000900094D657270AB +S31500F001C04D6F64205344204D6F64652053776974F6 +S31500F001D06368000043210008FFFF8FE84500000038 +S31500F001E00000000000090009666C6F6174000000F1 +S31500F001F0000900094D6572704D6F64205344205616 +S31500F002006F6C756D657472696320456666696369BE +S31500F00210656E63790000000043210008FFFF8FEC54 +S31500F00220450000000000000000090009666C6F61DF +S31500F0023074000000000900094D6572704D6F64206E +S31500F00240534420416972666C6F772046696E616C23 +S31500F00250204F75747075740043210008FFFF8FF00E +S31500F00260450000000000000000090009666C6F619F +S31500F0027074000000000900094D6572704D6F64202E +S31500F00280534420416972666C6F77204D6166205346 +S31500F00290656E736F7200000043210008FFFF8FF454 +S31500F002A0450000000000000000090009666C6F615F +S31500F002B074000000000900094D6572704D6F6420EE +S31500F002C053442041746D6F7370686572696320439F +S31500F002D06F6D70656E736174696F6E00432100080F +S31500F002E0FFFF8FFC45000000000000000009000938 +S31500F002F0666C6F6174000000000900094D6572704C +S31500F003004D6F6420534420426C656E64696E6720BD +S31500F00310526174696F00000043210008FFFF9000EE +S31500F00320450000000000000000090009666C6F61DE +S31500F0033074000000000900094D6572704D6F64206D +S31500F00340534420416972666C6F7720426C656E6427 +S31500F00350696E670043210004000E1738566F6C75FE +S31500F003606D657472696320456666696369656E6377 +S31500F0037079205461626C652031000000432100044D +S31500F00380000E17F041746D6F7370686572696320C3 +S31500F00390507265737375726520436F6D70656E7319 +S31500F003A06174696F6E00000043210004000E18C0EE +S31500F003B0534420426C656E64696E67205461626CCA +S31500F003C06500000043210002000E11F4456E6769D6 +S31500F003D06E6520446973706C6163656D656E74005B +S31500F003E043210002000E11E85370656564204465F0 +S31500F003F06E73697479204D6F6465000043210002C5 +S31500F00400000E11F053706565642044656E7369746F +S31500F004107920436F6E7374616E740000432100029D +S31500F00420000E18E4526576204C696D6974202852E6 +S31500F0043065646C696E65290043210002000E18E0C0 +S31500F00440466C617420466F6F742053686966742039 +S31500F004504D6F64650000000043210002000E18F0A5 +S31500F00460466C617420466F6F742053686966742019 +S31500F0047044656C746120284175746F6D61746963AD +S31500F00480204C696D6974290043210002000E18F4AE +S31500F00490466C617420466F6F7420536869667420E9 +S31500F004A044656C74612028537461746963204C69E7 +S31500F004B06D6974290000000043210002000E18F84F +S31500F004C0466C617420466F6F7420536869667420B9 +S31500F004D04D696E696D756D2053706565642054685D +S31500F004E0726573686F6C640043210002000E18FC9D +S31500F004F0466C617420466F6F742053686966742089 +S31500F005004D696E696D756D2052504D205468726557 +S31500F0051073686F6C6400000043210002000E19003E +S31500F005204C43204D6178696D756D20537065656437 +S31500F00530205468726573686F6C6400004321000292 +S31500F00540000E19244C43204D696E696D756D20546B +S31500F0055068726F74746C65205468726573686F6C3A +S31500F005606400000043210002000E1928464653207D +S31500F005704D696E696D756D205468726F74746C6533 +S31500F00580205468726573686F6C6400004321000242 +S31500F00590000E190C4646532047656172205261746D +S31500F005A0696F730043210002000E1904526576202C +S31500F005B04C696D697420284C61756E636820436FD1 +S31500F005C06E74726F6C29000043210008FFFF9006DD +S31500F005D045000000000000000009000975696E740E +S31500F005E038000000000900094D6572704D6F6420F7 +S31500F005F0464653204D6F6465000000004321000815 +S31500F00600FFFF900745000000000000000009000908 +S31500F0061075696E7438000000000900094D65727046 +S31500F006204D6F64204C4320456E67616765642053C7 +S31500F0063069676E616C00000043210008FFFF9008B7 +S31500F0064045000000000000000009000975696E749D +S31500F0065038000000000900094D6572704D6F642086 +S31500F0066046465320456E6761676564205369676E39 +S31500F00670616C000043210008FFFF900C450000006C +S31500F00680000000000009000975696E74380000006A +S31500F00690000900094D6572704D6F6420464653207F +S31500F006A047656172204D6F6E69746F7200000000CD +S31500F006B043210008FFFF90104500000000000000F5 +S31500F006C000090009666C6F617400000000090009FA +S31500F006D04D6572704D6F64205265764C696D697424 +S31500F006E020416374697665204375742052504D003D +S31500F006F043210008FFFF90144500000000000000B1 +S31500F0070000090009666C6F617400000000090009B9 +S31500F007104D6572704D6F64205265764C696D6974E3 +S31500F007202041637469766520526573756D65205254 +S31500F00730504D000043210008FFFF901845000000CF +S31500F007400000000000090009666C6F61740000008B +S31500F00750000900094D6572704D6F64205265644C56 +S31500F00760696E65204375742052504D004321000890 +S31500F00770FFFF901C45000000000000000009000982 +S31500F00780666C6F6174000000000900094D657270B7 +S31500F007904D6F64205265644C696E652048797374B8 +S31500F007A0657265736973000043210008FFFF9024AA +S31500F007B0450000000000000000090009666C6F614A +S31500F007C074000000000900094D6572704D6F6420D9 +S31500F007D04C61756E636820436F6E74726F6C205255 +S31500F007E0504D000043210008FFFF9028450000000F +S31500F007F00000000000090009666C6F6174000000DB +S31500F00800000900094D6572704D6F64204C61756E7C +S31500F00810636820436F6E74726F6C204879737465E9 +S31500F00820726573697300000043210008FFFF90347E +S31500F00830450000000000000000090009666C6F61C9 +S31500F0084074000000000900094D6572704D6F642058 +S31500F008504646532044656C746120284175746F29AF +S31500F008600000000043210008FFFF9038450000001B +S31500F008700000000000090009666C6F61740000005A +S31500F00880000900094D6572704D6F6420464653208D +S31500F0089044656C746120285374617469632900009F +S31500F008A043210008FFFF902C4500000000000000E7 +S31500F008B000090009666C6F61740000000009000908 +S31500F008C04D6572704D6F642046465320456E6761E4 +S31500F008D067656D656E742052504D00004321000827 +S31500F008E0FFFF9040450000000000000000090009ED +S31500F008F0666C6F6174000000000900094D65727046 +S31500F009004D6F6420464653205370656564205468E5 +S31500F00910726573686F6C640043210008FFFF9020D6 +S31500F00920450000000000000000090009666C6F61D8 +S31500F0093074000000000900094D6572704D6F642067 +S31500F009404C43205370656564205468726573686F14 +S31500F009506C64000043210002000E195C46424B43D2 +S31500F00960205468726573686F6C640000432100025E +S31500F00970000E192C46424B4320466C617368205397 +S31500F00980706565640000000043210002000E193016 +S31500F0099046424B4320466C61736820436F756E7414 +S31500F009A00000000043210002000E196046424B434E +S31500F009B020536576657265204B6E6F636B205468C5 +S31500F009C0726573686F6C640043210002000E19347F +S31500F009D046424B4320536576657265204B6E6F63D6 +S31500F009E06B20466C61736820537065656400000087 +S31500F009F043210002000E193846424B4320536576D8 +S31500F00A00657265204B6E6F636B20466C6173682070 +S31500F00A10436F756E7400000043210002000E1964E6 +S31500F00A2046424B43204C6F6164205468726573688C +S31500F00A306F6C640043210002000E195049414D20AD +S31500F00A40466C617368205468726573686F6C6400F5 +S31500F00A5043210002000E195449414D20466C617342 +S31500F00A606820436F756E740043210002000E19581A +S31500F00A7049414D20466C617368205370656564008A +S31500F00A8043210002000E196C45475420414631209F +S31500F00A90526573697374616E636520546872657329 +S31500F00AA0686F6C640000000043210002000E193CE0 +S31500F00AB045475420466C6173682053706565640041 +S31500F00AC043210002000E194045475420466C6173DD +S31500F00AD06820436F756E740043210002000E19689A +S31500F00AE0454754204C6F6164205468726573686F93 +S31500F00AF06C64000043210002000E19444543542063 +S31500F00B00466C61736820537065656400432100028A +S31500F00B10000E194845435420466C61736820436FB4 +S31500F00B20756E740043210002000E194C45435420A3 +S31500F00B30466C6173682054656D7065726174757288 +S31500F00B4065205468726573686F6C64004321000811 +S31500F00B50FFFF904445000000000000000009000976 +S31500F00B6075696E7438000000000900094D657270F1 +S31500F00B704D6F642043454C205369676E616C0000ED +S31500F00B8043210008FFFF8BA2450000000000000093 +S31500F00B900009000975696E74380000000009000943 +S31500F00BA04D6572704D6F642043454C205369676EF6 +S31500F00BB0616C204F454D000043210008FFFF904B2C +S31500F00BC045000000000000000009000975696E7418 +S31500F00BD038000000000900094D6572704D6F642001 +S31500F00BE043454C20466C61736820436F756E74659F +S31500F00BF07200000043210008FFFF90494500000005 +S31500F00C00000000000009000975696E7438000000E4 +S31500F00C10000900094D6572704D6F642043454C2004 +S31500F00C20537065656420436F756E746572000000DD +S31500F00C300009000900090009000900090009000976 +S311070010002FE66EF36FE36EF6000B000997 +S3150700100C4A75737420746F2070726F7665207468D6 +S3150700101C617420617373657274696F6E7320636193 +S3150700102C6E206661696C2E0046697273742065784A +S3150700103C65637574696F6E2073686F756C6420735E +S3150700104C6574204D61664D6F646520746F204D6124 +S3150700105C664D6F646553656E736F722E00000000E4 +S3150700106C466972737420657865637574696F6E204B +S3150700107C73686F756C642072657475726E204D415A +S3150700108C462066726F6D2073656E736F722E000045 +S3150700109C5365636F6E6420657865637574696F6EE7 +S315070010AC2073686F756C642072657475726E204D4B +S315070010BC41462066726F6D2073656E736F722E00D4 +S315070010CC4D61664D6F64652073686F756C6420722D +S315070010DC656D61696E2073657420746F204D61664A +S315070010EC4D6F646553656E736F722E005365636F30 +S315070010FC6E6420657865637574696F6E2073686FA7 +S3150700110C756C642072657475726E204D4146206647 +S3150700111C726F6D2073706565642D64656E73697483 +S3150700112C792E00004D61664D6F64652073686F7587 +S3150700113C6C642072656D61696E2073657420746FBB +S3150700114C204D61664D6F6465537065656444656EC5 +S3150700115C736974792E000000436865636B696E6763 +S3150700116C20626C656E64206D6F646520636F6465C1 +S3150700117C2C2063656C6C2073686F756C64206265D4 +S3150700118C207A65726F20616E642072657475726E53 +S3150700119C206D61662073656E736F722076616C7550 +S315070011AC652E00004D61664D6F64652073686F751B +S315070011BC6C642072656D61696E207365742E000010 +S315070011CC436865636B696E6720426C656E64207253 +S315070011DC6174696F00000000436865636B696E672D +S315070011EC2053442076616C75650000005265644C8B +S315070011FC696E653A20416C6C6F77206675656C2055 +S3150700120C6174205265644C696E65437574202D2094 +S3150700121C312052504D2C206D6F76696E672C2063EA +S3150700122C6C75746368206E6F742070726573736562 +S3150700123C6420214675656C43757400005265644CD1 +S3150700124C696E653A20416C6C6F77206675656C2004 +S3150700125C6174205265644C696E65437574202D2044 +S3150700126C312052504D2C206D6F76696E672C20639A +S3150700127C6C75746368206E6F742070726573736512 +S3150700128C642C20214C43456E67616765640000003A +S3150700129C5265644C696E653A2043757420667565AC +S315070012AC6C206174205265644C696E6543757420B5 +S315070012BC2B20312052504D2C206D6F76696E672C82 +S315070012CC20636C75746368206E6F74207072657317 +S315070012DC736564005265644C696E653A2052657392 +S315070012EC756D65206675656C206174205265644C56 +S315070012FC696E65526573756D65202D2031205250C8 +S3150700130C4D2C206D6F76696E672C20636C75746334 +S3150700131C68206E6F742070726573736564000000C5 +S3150700132C4E6F726D616C2073746F707065643A20C2 +S3150700133C416C6C6F77206675656C206174204C6107 +S3150700134C756E6368436F6E74726F6C437574202B7E +S3150700135C20313030302052504D2C2073746F707002 +S3150700136C65642C206E6F20636C75746368000000CF +S3150700137C4E6F726D616C206D6F76696E673A2041A0 +S3150700138C6C6C6F77206675656C206174204C617583 +S3150700139C6E6368436F6E74726F6C437574202B2083 +S315070013AC313030302052504D2C206D6F76696E6778 +S315070013BC2C206E6F20636C75746368004C61756EB8 +S315070013CC636820436F6E74726F6C20546573742058 +S315070013DC33204661696C65643A207374616E647375 +S315070013EC74696C6C2C20636C7574636820707265F9 +S315070013FC73736564000000004C61756E6368204367 +S3150700140C6F6E74726F6C205465737420342046614A +S3150700141C696C65643A2030206D70682C2031303049 +S3150700142C207468722C2072706D2062656C6F772041 +S3150700143C6C696D69740000004C61756E63682043B6 +S3150700144C6F6E74726F6C3A20437574206675656C93 +S3150700145C206174204C61756E6368436F6E74726F8E +S3150700146C6C437574202B20312052504D2C207374ED +S3150700147C616E647374696C6C2C20636C7574636829 +S3150700148C2070726573736564000000004C61756E9D +S3150700149C636820436F6E74726F6C3A20526573756E +S315070014AC6D65206675656C206174204C61756E637D +S315070014BC68436F6E74726F6C526573756D65202D0C +S315070014CC20312052504D2C207374616E64737469ED +S315070014DC6C6C2C20636C75746368207072657373FF +S315070014EC65640000466C617420466F6F7420536800 +S315070014FC696674696E673A20526573756D65206601 +S3150700150C75656C20617420466C6174466F6F7453F5 +S3150700151C68696674526573756D65202D2031205286 +S3150700152C504D2C206D6F76696E672C20636C757425 +S3150700153C636820707265737365640000466C61742A +S3150700154C20466F6F74205368696674696E673A2014 +S3150700155C437574206675656C20617420466C6174DE +S3150700156C466F6F745368696674437574202B203104 +S3150700157C2052504D2C206D6F76696E672C20636C4C +S3150700158C7574636820707265737365640000000078 +S3150700159C46465320726573756D65207768656E20B0 +S315070015AC72706D2064726F70730000005768656EF9 +S315070015BC20726576206C696D697420666C6167208C +S315070015CC6973207365742C206E6F206F746865724F +S315070015DC206269747320617265207365742E00002E +S315070015EC5768656E20726576206C696D697420661E +S315070015FC6C616720697320636C65617265642C2066 +S3150700160C6E6F206F746865722062697473206172DD +S3150700161C6520636C65617265642E00005265644CC7 +S3150700162C696E65206375742F726573756D652073A6 +S3150700163C616E6974792E00004C61756E6368436F31 +S3150700164C6E74726F6C206375742F726573756D6526 +S3150700165C2073616E6974792E00000000307841356D +S3150700166C41354135413500004F454D2063656C20AA +S3150700167C706F707065642C2043656C205369676EB8 +S3150700168C616C2073686F756C642068617665207071 +S3150700169C6F7070656420746F6F0000004F454D20A6 +S315070016AC63656C20706F707065642C203230206314 +S315070016BC79636C6573206C617465722C2043656C59 +S315070016CC205369676E616C2073686F756C64207341 +S315070016DC746179206F6E00004F454D2063656C2051 +S315070016EC706F707065642C203231206379636C657A +S315070016FC73206C617465722C2043656C2053696783 +S3150700170C6E616C2073686F756C64207374617920D5 +S3150700171C6F6E00004F454D2063656C206973206E14 +S3150700172C6F7720676F6E652C2043656C207369672E +S3150700173C6E616C2073686F756C64206861766520C2 +S3150700174C64726F707065640062656C6F7720666291 +S3150700175C6B63206C6F6164207468726573686F6C59 +S3150700176C6420666F722063656C2C206E6F206C6923 +S3150700177C67687421000000006B6E6F636B696E6798 +S3150700178C2120466C61736820636F756E74657220D1 +S3150700179C73686F756C6420696E6974006B6E6F6322 +S315070017AC6B696E672120466C61736820737065657B +S315070017BC6420636F756E7465722073686F756C64DD +S315070017CC20696E69740000006B6E6F636B696E67D8 +S315070017DC2120466C6173682073686F756C6420737F +S315070017EC74617274000000006B6E6F636B696E67D1 +S315070017FC20676F6E652120466C6173682073686F6E +S3150700180C756C64207A65726F000000006B6E6F63EF +S3150700181C6B696E6720676F6E652120466C6173680E +S3150700182C20636F756E7465722073686F756C6420B0 +S30D0700183C7A65726F00000000D7 +S30907001844123456787F +S30907001848FFFF9044BD +S3150E0050002FE67FFC6EF361E371C4114F00097E0437 +S3150E0050106FE36EF6000B00092FE64F227FF46EF358 +S3150E00502061E371CC114E61E371CC115D61E371CC1C +S3150E005030511E21188F11000961E371CCE200112F68 +S3150E0050409111714062E372CC522F112C61E371CC37 +S3150E005050511D6413D104410B00097E0C6FE34F26DC +S3150E0050606EF6000B00098FE00E0050002FE64F2261 +S3150E0050706EF3D105E4006513D104410B00096FE30D +S3150E0050804F266EF6000B00090700100C0E00501886 +S3150E0050902FE67FF86EF361E371C89220112F61E35C +S3150E0050A071C8921D112EA00C000961E371C8511F23 +S3150E0050B0E200212261E371C862E372C8522F7204C4 +S3150E0050C0112F62E372C861E371C8522F511E32125C +S3150E0050D08FEB00097E086FE36EF6000B00098FE07A +S3150E0050E0BFFF2FE67FF86EF361E37104F14A61E3C9 +S3150E0050F0F15A61E37104F118C711F208F12261E366 +S3150E005100F218F2158F030009E100A00F000961E302 +S3150E0051107104F118C70BF208F21261E3F118F215D9 +S3150E0051208F030009E100A0010009E101415AF10DCA +S3150E005130F11D005A7E086FE36EF6000B000900099A +S3150E0051403F8020C53F7FBE772F862FE64F227FF406 +S3150E0051506EF391FE7105E2002120D17F410B00090D +S3150E005160D17E410B000961E37108C77DF109F11A81 +S3150E00517061E37104F108F11A91EB71056110611C7E +S3150E005180601388010129611C415AF10DD176F11D7A +S3150E005190045A6513D175410B0009D175C775F1080F +S3150E0051A0F11AD175C775F108F11AD175C775F108DF +S3150E0051B0F11AD175C775F108F11AD17592CA212166 +S3150E0051C068E3D174410B0009F10CF81A62E361E34E +S3150E0051D07108F428F518D170410B0009405AF10DEB +S3150E0051E0D16EF11D045A6513D160410B000968E3B7 +S3150E0051F0D168410B0009F10CF81A62E361E37108FC +S3150E005200F428F518D164410B0009405AF10DD1640A +S3150E005210F11D045A6513D155410B0009919971057B +S3150E0052206110611C601388010129611C415AF10D40 +S3150E005230D15CF11D045A6513D14C410B00099188BE +S3150E0052407105E202212068E3D152410B0009F10CEF +S3150E005250F81A62E361E37104F428F518D14E410B96 +S3150E0052600009405AF10DD150F11D045A6513D13F74 +S3150E005270410B0009916D71056110611C6013880266 +S3150E0052800129611C415AF10DD148F11D045A6513CD +S3150E005290D136410B0009915C7105E203212068E3CA +S3150E0052A0D13C410B0009F10CF81A62E361E3710877 +S3150E0052B0F428F518D138410B0009405AF10DD13CAE +S3150E0052C0F11D045A6513D129410B0009914171054F +S3150E0052D06110611C601388030129611C415AF10D8E +S3150E0052E0D134F11D045A6513D120410B0009D12288 +S3150E0052F0C724F108F11A68E3D126410B0009F10C17 +S3150E005300F81A9126711CF218C72BF108F42CF51C0D +S3150E005310D121410B0009405AF10DD128F11D045A35 +S3150E0053206513D112410B00099113710CF218C724A3 +S3150E005330F108F42CF51CD118410B0009405AF10D59 +S3150E005340D120F11D045A6513D108410B0009A03B6B +S3150E00535000098FE0400000090E005090000E221446 +S3150E00536040451EB8406EC101070010340E0050189D +S3150E005370FFFF699C447A0000FFFF6624438675761C +S3150E005380FFFF5CD4442F0000FFFF5C9C41700000C1 +S3150E005390FFFF5BFE000E1B2C0E0050E20700106C8A +S3150E0053A00700109C070010CC070010F807001130FC +S3150E0053B007001164070011B03F0E38E3070011CC49 +S3150E0053C041386E0F070011E461E37108F118C71A30 +S3150E0053D0F209F122F208F12061E3F418F51CD11856 +S3150E0053E0410B0009405AF10DD116F11D045A6513F1 +S3150E0053F0D115410B0009911E71056110611C6013D8 +S3150E00540088030129611C415AF10DD110F11D045A70 +S3150E0054106513D10D410B0009D10DC70EF108F11A16 +S3150E00542091097105E20121207E0C6FE34F266EF67F +S3150E00543068F6000B00098FE03EE38E3A40CCEC1086 +S3150E0054400E0050E2070011640E005018070011B04E +S3150E005450FFFF6624438675762FE67FFC6EF361E3C7 +S3150E00546071C4114F61E371C4511F21188F0A0009CF +S3150E005470D10BD20B6220622CE37F2239622C2120C3 +S3150E005480A0080009D106D2066220632CE280223BD8 +S3150E005490622C21207E046FE36EF6000B00090009D4 +S3150E0054A0FFFF69752FE67FFC6EF361E371C4114F42 +S3150E0054B061E371C4511F21188F0A0009D10BD20B5B +S3150E0054C06220632CE2F72239622C2120A008000903 +S3150E0054D0D106D2066220622CE308223B622C2120E2 +S3150E0054E07E046FE36EF6000B00090009FFFF643CB5 +S3150E0054F02FE67FFC6EF3D10E6110631C61E3710320 +S3150E005500E2802239212061E371036110611C2118AA +S3150E0055108F06000961E371036110611CA001000989 +S3150E005520E10160137E046FE36EF6000B00090009BD +S3150E005530FFFF71BC2FE64F227FE86EF361E3711712 +S3150E005540214061E371D8115E61E371D8116D61E39B +S3150E0055507108F14A61E37104F15A61E3F16AD118F7 +S3150E005560410B0009D117410B000961E371D8511E99 +S3150E0055706413D115410B000961E371D8511D6413F3 +S3150E005580D112410B0009D11262E37208F128F11A09 +S3150E005590D11062E3F128F11AD10F62E37204F128F9 +S3150E0055A0F11AD10E62E3721762202120D10C410B43 +S3150E0055B000097E186FE34F266EF6000B00090009F0 +S3150E0055C00E005090000E22140E0054A40E005458D5 +S3150E0055D0FFFF66C8FFFF699CFFFF6994FFFF71BC62 +S3150E0055E0000E1D7C2FE64F227FFC6EF3D151F21872 +S3150E0055F0F19DF32CF311F13CC74FF309F208E400C9 +S3150E005600E500E600F43CF52CF61CD14D410B0009E5 +S3150E005610D14C410B00096103611C21180129611C43 +S3150E005620415AF10DD148F11D045A6513D147410B6C +S3150E0056300009917D7127611021180129611C415ABB +S3150E005640F10DD143F11D045A6513D140410B0009EA +S3150E005650D138F218F19DF120C737F308C73DF2088D +S3150E005660E400E500E600F43CF52CF61CD134410BC3 +S3150E0056700009D134410B00096103611C21188D0903 +S3150E005680000991557127611021188F030009E10158 +S3150E005690A0010009E100D23064136523D12B410B22 +S3150E0056A00009D12ED223F228D22DF128F211F19D26 +S3150E0056B0F32CF311F13CF11AD12A410B0009D12139 +S3150E0056C0410B00096103611C21188F090009912FF6 +S3150E0056D07127611021188F030009E101A00100094D +S3150E0056E0E100D22164136523D118410B0009D11FA5 +S3150E0056F0F118C71FF209F120F308F28DE400E50058 +S3150E005700E600F43CF52CF61CD10D410B0009D10D2B +S3150E005710410B00096103611C21188F2D00099107A9 +S3150E0057207127611021188F270009E101A0250009B4 +S3150E0057308FE00009000E18E4424800004198000070 +S3150E0057400E0055340E0054F0070011F80E005018D6 +S3150E00575007001248419000000700129CFFFF699C4B +S3150E005760000E18E8000E1D7C070012E0000E19044C +S3150E005770447A000042C80000E100D23E641365235D +S3150E005780D13D410B0009D13DF118C73DF209F1207B +S3150E005790F309F208E400E500E600F43CF52CF61CED +S3150E0057A0D13A410B0009D13A410B00096103611C44 +S3150E0057B021188F090009915B7127611021188F033B +S3150E0057C00009E101A0010009E100D232641365234C +S3150E0057D0D129410B0009D129F218F19DF32CF311B1 +S3150E0057E0F13CC72DF308F28DE400E500E601F43C2A +S3150E0057F0F52CF61CD125410B0009D125410B0009CC +S3150E0058006103611C21188F090009913171276110FE +S3150E00581021188F030009E101A0010009E100D21F42 +S3150E00582064136523D114410B0009D114F218F19DAE +S3150E005830F32CF311F13CC713F308F28DE400E500E7 +S3150E005840E601F43CF52CF61CD110410B0009D110E3 +S3150E005850410B00096103611C21188F210009910774 +S3150E0058607127611021188D1B0009E101A01900098D +S3150E0058708FE000090700132C0E005018000E1904B5 +S3150E005880447A000042C80000424800000E0055341B +S3150E0058900E0054F00700137C41200000070013C8C9 +S3150E0058A0E100D24E64136523D14D410B0009D14D53 +S3150E0058B0F218F19DF120C74CF308F28DE400E500D5 +S3150E0058C0E601F43CF52CF61CD148410B0009D148F3 +S3150E0058D0410B00096103611C21188D090009917C99 +S3150E0058E07127611021188D030009E101A00100093D +S3150E0058F0E100D24064136523D139410B0009D13E34 +S3150E005900D238F228F19DF32CF311F13CF11AD13B6A +S3150E005910410B0009D136410B00096103611C2118A8 +S3150E0059208D09000991597127611021188D030009FF +S3150E005930E101A0010009E100D23164136523D128EB +S3150E005940410B0009D12CD227F228D22EF128F211C2 +S3150E005950F19DF42CF411F14CF11AD128410B0009EA +S3150E005960D123410B00096103611C21188F0900091F +S3150E00597091337127611021188D030009E101A001F1 +S3150E0059800009E100D21E64136523D115410B0009EF +S3150E005990D11DF218F19DF32CF310D11CF118C71C72 +S3150E0059A0F208F121F28DE400E500E601F43CF52C57 +S3150E0059B0F61CD10E410B0009D10D410B00096103F6 +S3150E0059C0611C21188D260009910771276110211877 +S3150E0059D08D200009E101A01E00098FE007001404C6 +S3150E0059E00E005018000E190442C800000E00553461 +S3150E0059F00E0054F007001444FFFF699C000E1D7C38 +S3150E005A0007001498000E1908000E1924000E18E44B +S3150E005A1043480000E100D24264136523D141410B95 +S3150E005A200009D141D240F128C740F208F121F11AFE +S3150E005A30D13F410B0009D13F410B00096103611CA7 +S3150E005A4021188F090009916A7127611021188F0399 +S3150E005A500009E101A0010009E100D23164136523BA +S3150E005A60D130410B0009D134E2042120D12EC733A7 +S3150E005A70F108F11AD132C733F108F11AD132924E2A +S3150E005A807244F128C731F208F121F11AE400D1303F +S3150E005A90410B0009D126410B0009E401D12C410B23 +S3150E005AA00009D123410B0009D122410B00096103E4 +S3150E005AB0611C21188F090009913171276110211877 +S3150E005AC08F030009E101A0010009E100D221641350 +S3150E005AD06523D114410B0009D11B92207250F12877 +S3150E005AE0C71DF208F120F11AD10FD21CF228F19D32 +S3150E005AF0F120F11AD10E410B0009D10E410B00090E +S3150E005B006103611C21188D2B000991087128621002 +S3150E005B10E10232108F240009E101A02200098FE074 +S3150E005B20070014980E005018FFFF66C841200000AB +S3150E005B30000E1D7C0E0054F0FFFF6AA541A000006A +S3150E005B40FFFF699442480000FFFF699C42C80000AF +S3150E005B500E005458070014F043FA0000000E1928E0 +S3150E005B60E100D22564136523D124410B0009D1240B +S3150E005B7092407234F228F19DF32CF311F13CF11A96 +S3150E005B80D120410B0009D120410B00096103611C94 +S3150E005B9021188F090009912D7128611021188F0384 +S3150E005BA00009E101A0010009E100D2186413652382 +S3150E005BB0D112410B0009D112921C7250F128C71452 +S3150E005BC0F208F120F11AD10F410B0009D10D410B4C +S3150E005BD00009D10D410B00096103611C21188D19B5 +S3150E005BE0000991077128611021188D130009E10132 +S3150E005BF0A01100098FE00009070015480E00501885 +S3150E005C00FFFF699C000E1D7C0E0054F00700159CCC +S3150E005C1043FA0000E100D25E64136523D15D410BA9 +S3150E005C200009D15DD25DF228F19DF32CF311F13C02 +S3150E005C30F11AD15BC75BF108F11AE401D15A410B97 +S3150E005C400009D15A410B0009D158410B0009D15810 +S3150E005C50410B00096103611C21180129611C415A7F +S3150E005C60F10DD154F11D045A6513D14A410B0009A9 +S3150E005C70D149C751F108F11AD150C751F108F11A9D +S3150E005C80D147F18DF11AE401D147410B0009E40029 +S3150E005C90D14C410B0009D14CE2002120D143410BDE +S3150E005CA00009D24961E371036220212061E3710389 +S3150E005CB06110621C916A32100129611C415AF10D64 +S3150E005CC0D142F11D045A6513D132410B0009D13B65 +S3150E005CD0C73FF108F11AD132F18DF11AE400D13233 +S3150E005CE0410B0009D138E2FF2120D130410B0009CA +S3150E005CF0D1356110621C61E371036227212061E3D5 +S3150E005D0071036110621C914132100129611C415AC6 +S3150E005D10F10DD130F11D045A6513D11E410B000948 +S3150E005D2091357138F21891327138F318912F713C02 +S3150E005D30F118F43CF411F14CF2150129611C415A8B +S3150E005D40F10DD125F11D045A6513D112410B00092F +S3150E005D50911D7144F218911A7144F31891177148F6 +S3150E005D60F118F43CF411F14CF2150129611C415A5B +S3150E005D70F10DD11AF11D045A6513D106410B000916 +S3150E005D807E046FE34F266EF6000B000900808FE04F +S3150E005D90070015480E005018FFFF66C8000E19289A +S3150E005DA0FFFF6994419800000E005458000E1D7CAA +S3150E005DB00E0054F0070014F042C80000FFFF699C65 +S3150E005DC045BB80000E0054A4FFFF71BC070015B83A +S3150E005DD0447A0000070015EC070016280700164443 +S3150E005DE02FE64F227FFC6EF361E371C4D206112FAC +S3150E005DF061E371C4511F410B00097E046FE34F2608 +S3150E005E006EF6000B000900090000FB542FE64F2228 +S3150E005E106EF3D10A410B0009D109410B0009D109D4 +S3150E005E20410B0009D108410B0009D108410B0009AD +S3150E005E306FE34F266EF6000B00090009000E214097 +S3150E005E400E005F5C0E0055E40E0051480E005E50CB +S3150E005E502FE64F226EF3D108410B0009D107410BF5 +S3150E005E600009D107410B0009D106410B00096FE36A +S3150E005E704F266EF6000B0009000E1B2C000E23F4A7 +S3150E005E80000E27E00E005DE02FE66EF30009000916 +S3150E005E90D113C714F108F11AD113C714F108F11A68 +S3150E005EA0D113D2136220632CE280223B622C212076 +S3150E005EB0D110D2106220622CE37F2239622C21206F +S3150E005EC0D10DC70EF108F11AD10DC70EF108F11A50 +S3150E005ED0D10D920421216FE36EF6000B00094CCC16 +S3150E005EE0FFFF699C447A0000FFFF69944140000061 +S3150E005EF0FFFF6975FFFF71BCFFFF6624438675764B +S3150E005F00FFFF5CD4442F0000FFFF5BFE2FE64F22FF +S3150E005F107FF86EF361E371C8114E61E371C8E2005A +S3150E005F20112FA00A0009D10C410B000961E371C8BB +S3150E005F3062E372C8522F7201112F62E372C861E3D7 +S3150E005F4071C8522F511E32138FED00097E086FE372 +S3150E005F504F266EF6000B0009000E25802FE64F2207 +S3150E005F606EF3D183410B000991FEE201212091FCD3 +S3150E005F707164E2002120D17FF18DF11AD17EE2000B +S3150E005F802120D17ED27EF128C77EF208F120F11AA9 +S3150E005F90D17DD27EF128C77BF208F121F11AD17C90 +S3150E005FA0E2002120D17BF19DF11A91DE7165E200AE +S3150E005FB0212091DA716BE200212091D67169E200FF +S3150E005FC02120D175410B000991CF71646110611CBE +S3150E005FD0601388010129611C415AF10DD16FF11D23 +S3150E005FE0045A6513D16E410B0009E414D16D410BB1 +S3150E005FF0000991BA71646110611C60138801012950 +S3150E006000611C415AF10DD168F11D045A6513D16414 +S3150E006010410B0009D160410B000991A67164611014 +S3150E006020611C601388010129611C415AF10DD15F73 +S3150E006030F11D045A6513D15A410B00099194E200E1 +S3150E0060402120D155410B0009918F71646110611C9D +S3150E00605021180129611C415AF10DD155F11D045A21 +S3150E0060606513D14F410B0009D152F19DF11AD14161 +S3150E006070C751F108F11AD148410B000991757164A7 +S3150E0060806110611C21180129611C415AF10DD14B79 +S3150E006090F11D045A6513D142410B0009D145C7487B +S3150E0060A0F108F11AD13C410B0009915E716B61103A +S3150E0060B0611C2118E1FF611A611C415AF10DD14193 +S3150E0060C0F11D045A6513D136410B0009914D7169C4 +S3150E0060D06110611C2118E1FF611A611C415AF10D14 +S3150E0060E0D139F11D045A6513D12D410B0009913C8E +S3150E0060F071686110611C2118E1FF611A611C415A19 +S3150E006100F10DD131F11D045A6513D125410B00094C +S3150E006110912B71646110611C601388010129611C49 +S3150E006120415AF10DD129F11D045A6513D11C410BAB +S3150E0061300009D120F19DF11AD10EF18DF11A9115AA +S3150E0061406413D118410B0009910F71646110611C23 +S3150E00615021180129611C415AF10DD11DF11D045A58 +S3150E0061606513D10FA03600098BA28FE000C8000977 +S3150E006170000E2214FFFF7490FFFF6975FFFF5F0884 +S3150E006180000E196C40A00000FFFF5CAC000E194C0F +S3150E006190FFFF643CFFFF2910000E258007001674D2 +S3150E0061A00E0050180E005F0C070016A8070016E426 +S3150E0061B007001720FFFF67CCBF80000007001754AB +S3150E0061C04040000007001784070017A8070017D4E1 +S3150E0061D0070017F4410B00099113716B6110611CD6 +S3150E0061E021180129611C415AF10DD106F11D045ADF +S3150E0061F06513D105410B00096FE34F266EF6000BB2 +S3110E00620000098FE0070018180E00501859 +S3158000100012340000000000091234000100002000A4 +S315800010100000000841384448323030560000000055 +S31580001020000000004646464646464646000000000A +S31580001030000000001234000F000E100041384448B2 +S31580001040323030562E4D6552704D6F442E466C614F +S3158000105073682E54657374696E672E7631342E36B6 +S315800010602E31322E3132353800000000000000006B +S3158000107000000000000000000000000000000000EA +S315800010801234000B000CDD540000000A3433353274 +S315800010903539343030360000000000000000000092 +S315800010A01234000C464646464646464646460000AC +S315800010B00000000000000000123400084D657270C8 +S315800010C0000000000000000000000000123400094B +S315800010D054657374696E67000000000000000000AC +S315800010E000000000000000001234000D537065659A +S315800010F0642044656E73697479206C6F61642063C3 +S31580001100616C63756C6174696F6E20776974682031 +S315800011104D414620626C656E64696E675F5F4C61A7 +S31580001120756E636820636F6E74726F6C20616E6417 +S3158000113020666C617420666F6F742073686966744C +S31580001140696E672028737461746963206F72206783 +S315800011506561722062617365642063616C63756C1E +S315800011606174696F6E295F5F43454C20466C61737D +S3158000117068202846424B432C204547542066726F90 +S315800011806D2046726F6E74204F322072657369735C +S3158000119074616E63652C20436F6F6C616E7420542E +S315800011A0656D70295F5F0000000000000000000090 +S315800011B0123400030001483C00030D10000E23F496 +S315800011C0526576204C696D697420537562726F75AD +S315800011D074696E6520486F6F6B00000012340003DF +S315800011E00000DA700000FB54000E21184D656D6F0B +S315800011F0727920526573657420537562726F757447 +S31580001200696E6520486F6F6B000000001234000322 +S31580001210000081BC0000209C000E1B705370656529 +S31580001220642044656E73697479204D6166205375B8 +S3158000123062726F7574696E6520486F6F6B0000000F +S315800012401234000300078184FFFF8BA2FFFF9044C6 +S3158000125043454C205369676E616C20486F6F6B0005 +S3158000126012340003000143F400016BD8000E27E01E +S315800012704D61696E20537562726F7574696E6520F3 +S31580001280486F6F6B205747444300000012340004B8 +S31580001290000E1000000E2820526F6D20486F6C657E +S315800012A020436F64652050617463680000090009FB +S309800012B000090009A2 +S70500E000001A +S30DFF0020004138444832303056E6 +S30AFF0CDD54435259400685 +S309FF01483C00030D1052 +S309FF00DA700000FB545E +S309FF0081BC0000209CFE +S309FF078184FFFF8BA2C0 +S309FF0143F400016BD87B +S315FF0E1000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD +S315FF0E1010FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD +S315FF0E1020FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD +S315FF0E1030FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD +S315FF0E1040FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D +S315FF0E1050FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D +S315FF0E1060FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D +S315FF0E1070FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D +S315FF0E1080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D +S315FF0E1090FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D +S315FF0E10A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D +S315FF0E10B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D +S315FF0E10C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D +S315FF0E10D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D +S315FF0E10E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +S315FF0E10F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED +S315FF0E1100FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC +S315FF0E1110FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC +S315FF0E1120FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC +S315FF0E1130FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC +S315FF0E1140FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C +S315FF0E1150FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C +S315FF0E1160FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C +S315FF0E1170FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C +S315FF0E1180FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C +S315FF0E1190FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C +S315FF0E11A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C +S315FF0E11B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C +S315FF0E11C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C +S315FF0E11D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C +S315FF0E11E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC +S315FF0E11F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC +S315FF0E1200FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB +S315FF0E1210FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB +S315FF0E1220FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB +S315FF0E1230FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB +S315FF0E1240FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B +S315FF0E1250FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B +S315FF0E1260FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B +S315FF0E1270FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B +S315FF0E1280FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B +S315FF0E1290FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B +S315FF0E12A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B +S315FF0E12B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B +S315FF0E12C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B +S315FF0E12D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +S315FF0E12E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB +S315FF0E12F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB +S315FF0E1300FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA +S315FF0E1310FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA +S315FF0E1320FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA +S315FF0E1330FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA +S315FF0E1340FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A +S315FF0E1350FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A +S315FF0E1360FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A +S315FF0E1370FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A +S315FF0E1380FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A +S315FF0E1390FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A +S315FF0E13A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A +S315FF0E13B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A +S315FF0E13C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A +S315FF0E13D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A +S315FF0E13E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA +S315FF0E13F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA +S315FF0E1400FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9 +S315FF0E1410FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9 +S315FF0E1420FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9 +S315FF0E1430FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9 +S315FF0E1440FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99 +S315FF0E1450FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89 +S315FF0E1460FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79 +S315FF0E1470FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69 +S315FF0E1480FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59 +S315FF0E1490FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49 +S315FF0E14A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39 +S315FF0E14B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29 +S315FF0E14C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19 +S315FF0E14D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09 +S315FF0E14E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 +S315FF0E14F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 +S315FF0E1500FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8 +S315FF0E1510FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8 +S315FF0E1520FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8 +S315FF0E1530FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8 +S315FF0E1540FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98 +S315FF0E1550FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88 +S315FF0E1560FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78 +S315FF0E1570FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68 +S315FF0E1580FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58 +S315FF0E1590FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48 +S315FF0E15A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38 +S315FF0E15B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28 +S315FF0E15C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18 +S315FF0E15D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08 +S315FF0E15E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8 +S315FF0E15F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8 +S315FF0E1600FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7 +S315FF0E1610FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7 +S315FF0E1620FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7 +S315FF0E1630FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7 +S315FF0E1640FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97 +S315FF0E1650FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87 +S315FF0E1660FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77 +S315FF0E1670FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67 +S315FF0E1680FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57 +S315FF0E1690FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47 +S315FF0E16A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37 +S315FF0E16B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27 +S315FF0E16C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17 +S315FF0E16D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07 +S315FF0E16E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7 +S315FF0E16F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7 +S315FF0E1700FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6 +S315FF0E1710FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6 +S315FF0E1720FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6 +S315FF0E1730FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6 +S315FF0E1740FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96 +S315FF0E1750FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86 +S315FF0E1760FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76 +S315FF0E1770FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66 +S315FF0E1780FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56 +S315FF0E1790FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46 +S315FF0E17A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36 +S315FF0E17B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26 +S315FF0E17C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16 +S315FF0E17D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06 +S315FF0E17E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 +S315FF0E17F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6 +S315FF0E1800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5 +S315FF0E1810FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5 +S315FF0E1820FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5 +S315FF0E1830FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5 +S315FF0E1840FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95 +S315FF0E1850FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85 +S315FF0E1860FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75 +S315FF0E1870FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65 +S315FF0E1880FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55 +S315FF0E1890FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45 +S315FF0E18A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35 +S315FF0E18B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25 +S315FF0E18C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15 +S315FF0E18D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05 +S315FF0E18E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5 +S315FF0E18F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5 +S315FF0E1900FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4 +S315FF0E1910FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4 +S315FF0E1920FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4 +S315FF0E1930FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4 +S315FF0E1940FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94 +S315FF0E1950FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84 +S315FF0E1960FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74 +S315FF0E1970FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64 +S315FF0E1980FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54 +S315FF0E1990FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44 +S315FF0E19A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34 +S315FF0E19B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24 +S315FF0E19C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14 +S315FF0E19D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04 +S315FF0E19E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4 +S315FF0E19F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4 +S315FF0E1A00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3 +S315FF0E1A10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3 +S315FF0E1A20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3 +S315FF0E1A30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3 +S315FF0E1A40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93 +S315FF0E1A50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83 +S315FF0E1A60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73 +S315FF0E1A70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63 +S315FF0E1A80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53 +S315FF0E1A90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43 +S315FF0E1AA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33 +S315FF0E1AB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23 +S315FF0E1AC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13 +S315FF0E1AD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03 +S315FF0E1AE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3 +S315FF0E1AF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3 +S315FF0E1B00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2 +S315FF0E1B10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2 +S315FF0E1B20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2 +S315FF0E1B30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2 +S315FF0E1B40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92 +S315FF0E1B50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82 +S315FF0E1B60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72 +S315FF0E1B70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62 +S315FF0E1B80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52 +S315FF0E1B90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42 +S315FF0E1BA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32 +S315FF0E1BB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22 +S315FF0E1BC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12 +S315FF0E1BD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02 +S315FF0E1BE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2 +S315FF0E1BF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2 +S315FF0E1C00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1 +S315FF0E1C10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1 +S315FF0E1C20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1 +S315FF0E1C30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1 +S315FF0E1C40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91 +S315FF0E1C50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81 +S315FF0E1C60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71 +S315FF0E1C70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61 +S315FF0E1C80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51 +S315FF0E1C90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 +S315FF0E1CA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31 +S315FF0E1CB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21 +S315FF0E1CC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11 +S315FF0E1CD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01 +S315FF0E1CE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1 +S315FF0E1CF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 +S315FF0E1D00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 +S315FF0E1D10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 +S315FF0E1D20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 +S315FF0E1D30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 +S315FF0E1D40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 +S315FF0E1D50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 +S315FF0E1D60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 +S315FF0E1D70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 +S315FF0E1D80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 +S315FF0E1D90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 +S315FF0E1DA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 +S315FF0E1DB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 +S315FF0E1DC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10 +S315FF0E1DD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 +S315FF0E1DE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 +S315FF0E1DF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 +S315FF0E1E00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF +S315FF0E1E10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF +S315FF0E1E20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF +S315FF0E1E30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F +S315FF0E1E40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F +S315FF0E1E50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F +S315FF0E1E60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F +S315FF0E1E70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F +S315FF0E1E80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F +S315FF0E1E90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F +S315FF0E1EA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F +S315FF0E1EB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F +S315FF0E1EC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F +S315FF0E1ED0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +S315FF0E1EE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF +S315FF0E1EF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF +S315FF0E1F00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE +S315FF0E1F10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE +S315FF0E1F20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE +S315FF0E1F30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E +S315FF0E1F40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E +S315FF0E1F50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E +S315FF0E1F60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E +S315FF0E1F70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E +S315FF0E1F80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E +S315FF0E1F90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E +S315FF0E1FA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E +S315FF0E1FB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E +S315FF0E1FC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E +S315FF0E1FD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE +S315FF0E1FE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE +S315FF0E1FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE +S315FF0E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD +S315FF0E2010FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD +S315FF0E2020FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD +S315FF0E2030FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D +S315FF0E2040FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D +S315FF0E2050FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D +S315FF0E2060FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D +S315FF0E2070FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D +S315FF0E2080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D +S315FF0E2090FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D +S315FF0E20A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D +S315FF0E20B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D +S315FF0E20C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D +S315FF0E20D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +S315FF0E20E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED +S315FF0E20F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD +S315FF0E2100FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC +S315FF0E2110FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC +S315FF0E2120FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC +S315FF0E2130FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C +S315FF0E2140FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C +S315FF0E2150FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C +S315FF0E2160FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C +S315FF0E2170FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C +S315FF0E2180FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C +S315FF0E2190FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C +S315FF0E21A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C +S315FF0E21B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C +S315FF0E21C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C +S315FF0E21D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC +S315FF0E21E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC +S315FF0E21F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC +S315FF0E2200FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB +S315FF0E2210FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB +S315FF0E2220FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB +S315FF0E2230FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B +S315FF0E2240FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B +S315FF0E2250FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B +S315FF0E2260FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B +S315FF0E2270FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B +S315FF0E2280FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B +S315FF0E2290FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B +S315FF0E22A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B +S315FF0E22B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B +S315FF0E22C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +S315FF0E22D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB +S315FF0E22E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB +S315FF0E22F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB +S315FF0E2300FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA +S315FF0E2310FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA +S315FF0E2320FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA +S315FF0E2330FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A +S315FF0E2340FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A +S315FF0E2350FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A +S315FF0E2360FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A +S315FF0E2370FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A +S315FF0E2380FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A +S315FF0E2390FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A +S315FF0E23A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A +S315FF0E23B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A +S315FF0E23C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A +S315FF0E23D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA +S315FF0E23E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA +S315FF0E23F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA +S315FF0E2400FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9 +S315FF0E2410FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9 +S315FF0E2420FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9 +S315FF0E2430FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99 +S315FF0E2440FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89 +S315FF0E2450FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79 +S315FF0E2460FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69 +S315FF0E2470FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59 +S315FF0E2480FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49 +S315FF0E2490FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39 +S315FF0E24A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29 +S315FF0E24B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19 +S315FF0E24C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09 +S315FF0E24D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 +S315FF0E24E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 +S315FF0E24F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9 +S315FF0E2500FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8 +S315FF0E2510FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8 +S315FF0E2520FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8 +S315FF0E2530FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98 +S315FF0E2540FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88 +S315FF0E2550FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78 +S315FF0E2560FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68 +S315FF0E2570FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58 +S315FF0E2580FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48 +S315FF0E2590FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38 +S315FF0E25A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28 +S315FF0E25B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18 +S315FF0E25C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08 +S315FF0E25D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8 +S315FF0E25E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8 +S315FF0E25F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8 +S315FF0E2600FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7 +S315FF0E2610FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7 +S315FF0E2620FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7 +S315FF0E2630FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97 +S315FF0E2640FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87 +S315FF0E2650FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77 +S315FF0E2660FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67 +S315FF0E2670FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57 +S315FF0E2680FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47 +S315FF0E2690FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37 +S315FF0E26A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27 +S315FF0E26B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17 +S315FF0E26C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07 +S315FF0E26D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7 +S315FF0E26E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7 +S315FF0E26F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7 +S315FF0E2700FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6 +S315FF0E2710FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6 +S315FF0E2720FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6 +S315FF0E2730FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96 +S315FF0E2740FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86 +S315FF0E2750FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76 +S315FF0E2760FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66 +S315FF0E2770FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56 +S315FF0E2780FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46 +S315FF0E2790FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36 +S315FF0E27A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26 +S315FF0E27B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16 +S315FF0E27C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06 +S315FF0E27D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 +S315FF0E27E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6 +S315FF0E27F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6 +S315FF0E2800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5 +S315FF0E2810FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5 +S306FF0E2820FFA5 diff --git a/Release/Flash/D2WD701C.MeRpMoD.Flash.Testing.v14.4.9.1853.patch b/Release/Flash/D2WD701C.MeRpMoD.Flash.Testing.v14.4.9.1853.patch new file mode 100644 index 0000000..0ae8287 --- /dev/null +++ b/Release/Flash/D2WD701C.MeRpMoD.Flash.Testing.v14.4.9.1853.patch @@ -0,0 +1,1388 @@ +S02B0000433A5C55736572735C6D657272696C6C5C4465765C4D6572704D6F645C4D6572704D6F645C466C618C +S3150000000000E00000FFFF200000E00000FFFF2000EE +S3150000001000E0003000E0003400E0003800E0003C82 +S3150000002000E0004000E0004400E0004800E0004C32 +S3110000003000E0005000E0005400E0005822 +S315000E140044325744373031432E4D6552704D6F443A +S315000E14102E466C6173682E54657374696E672E76EC +S315000E142031342E342E392E3138353300434F505940 +S315000E1430524947485420323031322C323031332023 +S315000E14404D657272696C6C20412E204D79657273F2 +S315000E1450204949492C206D657272696C6C616D79F3 +S315000E146065727369696940676D61696C2E636F6D2C +S315000E1470206D657272696C6C616D796572736969DE +S315000E14806940676D61696C2E636F6D2E20554E41F6 +S315000E14905554484F52495A4544204449535452498B +S315000E14A0425554494F4E205354524943544C592099 +S315000E14B050524F484942495445442E204F464652B3 +S315000E14C04F414420555345204F4E4C592E204E4FDA +S315000E14D02057415252414E54592E205448495320BA +S315000E14E0534F465457415245204953204C49434584 +S315000E14F04E53454420544F20594F55209341532067 +S315000E150049532C9420414E4420574954484F555424 +S315000E151020414E592057415252414E5459204F4662 +S315000E152020414E59204B494E442C2057484554488D +S315000E15304552204F52414C2C205752495454454E39 +S315000E15402C20455850524553532C20494D504C494A +S315000E15504544204F52205354415455544F52592C02 +S315000E156020494E434C5544494E4720425554204E31 +S315000E15704F54204C494D4954454420544F20574111 +S315000E15805252414E54494553204F46204D455243E3 +S315000E159048414E544142494C4954592C20464954CF +S315000E15A04E45535320464F522041205041525449E6 +S315000E15B043554C415220505552504F53452C2041C5 +S315000E15C04E44204E4F4E494E4652494E47454D4586 +S315000E15D04E542E0000000000000000000100000026 +S315000E15E0438893333B7DB23F401D70A442C8000032 +S315000E15F0434800004396000043C8000043FA00002B +S315000E160044160000442F00004448000044610000C8 +S315000E1610447A0000448980004496000044A280006B +S315000E162044AF000044BB800044C8000044D4800090 +S315000E163044E1000044ED800044FA000045034000FA +S315000E164045098000450FC0004516000043FA00000C +S315000E1650444800004496000044C8000044FA0000C6 +S315000E166045160000452F0000454800004561000064 +S315000E1670457A00004583400045898000458FC000AD +S315000E168045960000459C400045A2800045A8C00036 +S315000E169045AF000045B5400045BB800045C800007B +S315000E16A045D4800045E1000045ED80001BEE1D1976 +S315000E16B026E6286F29A92A2A2ABF2B512BA92BEAFF +S315000E16C02C2B2C772CC32D0F2D5B2DA72DF32E3FF8 +S315000E16D02E8B2ED72F232F6F2FBB30071CE61DDE2A +S315000E16E025DE2794290329DC2ACC2B442BB62BF78F +S315000E16F02C382C842CD02D1C2D682DB42E002E4C5F +S315000E17002E982EE42F302F7C2FC830141F9120FFD9 +S315000E171025BA271228F629DC2A3D2ACF2BC72C08F4 +S315000E17202C522C9E2CEA2D362D822DCE2E1A2E665E +S315000E17302EB22EFE2F4A2F962FE2302E2108225C35 +S315000E174025BB2711290129F62A652AF62BDD2C251C +S315000E17502C792CD22D2B2D842DDD2E362E8F2EE888 +S315000E17602F412F9A2FF3304C30A530FE21B322E0B5 +S315000E177025BB273A29032A102AA52B1D2C112C6BC3 +S315000E17802CD22D3A2DA22E0A2E722EDA2F422FAAE7 +S315000E17903012307A30E2314A31B2321A222D2340DB +S315000E17A025CC278929102A2B2AF32BB22CCC2D9443 +S315000E17B02E582F1A2FDC309E3160322232E433A699 +S315000E17C03468352A35EC36AE37703832229623A871 +S315000E17D0264127F029292A602B902CD32E1D302343 +S315000E17E0312431A6322832AA332C33AE343034B2F9 +S315000E17F0353435B6363836BA373C37BE237124768D +S315000E180026DA287D299D2AEA2C862E58306432B790 +S315000E1810337833B833F83438347834B834F8353856 +S315000E1820357835B835F83638367836B824A725944F +S315000E183027F929F22BB72DC4302231B132F333EB0F +S315000E1840346234BD3518357335CE3629368436DFD7 +S315000E1850373A379537F0384B38A639012568265D65 +S315000E186028B62AE22CD92EDF30973200332733F9E9 +S315000E1870346234BD3518357335CE3629368436DFA7 +S315000E1880373A379537F0384B38A639012542263187 +S315000E1890289C2AC92CB12EC0305131CD32D0338F6F +S315000E18A033F9343A347B34BC34FD353E357F35C09E +S315000E18B036013642368336C4370537462510260896 +S315000E18C0284C2A842C5F2E542FE5313F324B32F7AB +S315000E18D0332B3353337B33A333CB33F3341B3443A2 +S315000E18E0346B349334BB34E3350B353324D425C4EF +S315000E18F027FE2A252C012DDC2F5330933185320FEE +S315000E19003236322A321E3212320631FA31EE31E2D6 +S315000E191031D631CA31BE31B231A6319A249E2579DD +S315000E192027A829BA2B952D562EB42FBC307E30E51E +S315000E193030F330A63059300C2FBF2F722F252ED8EC +S315000E19402E8B2E3E2DF12DA42D572D0A245C2538D7 +S315000E1950274D294C2B0E2C9C2DD52EA02F3A2F62BF +S315000E19602F302EAF2E2E2DAD2D2C2CAB2C2A2BA997 +S315000E19702B282AA72A2629A5292428A3241A24F89F +S315000E198026F428D42A652BCF2CD52D6E2DBA2D9F55 +S315000E19902D2C2CAB2C2A2BA92B282AA72A2629A597 +S315000E19A0292428A3282227A12720269F23CE249F39 +S315000E19B026802848299D2AD62B8D2BE82BDB2B8FAC +S315000E19C02B1B2A9A2A1929982917289628152794FF +S315000E19D02713269226112590250F248E2376245220 +S315000E19E0260D27B028DD29BC2A3E2A412A0029A326 +S315000E19F0292228A2282227A2272226A2262225A28B +S315000E1A00252224A2242223A2232222A2231E240537 +S315000E1A10259A2718281D28A228EF289A282527B7A1 +S315000E1A20272926AA262B25AC252D24AE242F23B016 +S315000E1A30233122B2223321B4213520B622C623B851 +S315000E1A4025272680275D278827A026F3264A25CB1D +S315000E1A50253024B2243423B6233822BA223C21BEA2 +S315000E1A60214020C220441FC61F481ECA226E236B69 +S315000E1A7024B425E8269D266E2651254C246F23DF99 +S315000E1A80233722BA223D21C0214320C620491FCC2E +S315000E1A901F4F1ED21E551DD81D5B1CDE2216231E81 +S315000E1AA02441255025DD2554250223A5229421F314 +S315000E1AB0213E20C220461FCA1F4E1ED21E561DDABA +S315000E1AC01D5E1CE21C661BEA1B6E1AF221BE22D19B +S315000E1AD023CE24B8251D243A23B321FE20B9200790 +S315000E1AE01F451ECA1E4F1DD41D591CDE1C631BE846 +S315000E1AF01B6D1AF21A7719FC1981190621662284B2 +S315000E1B00235B2420245D2320226420571EDE1E1B09 +S315000E1B101D4C1CD21C581BDE1B641AEA1A7019F6D1 +S315000E1B20197C19021888180E1794171A001800181F +S315000E1B30000E15EC000E164C000E16AC080000003A +S315000E1B4038400000000000000000000043A68000A0 +S315000E1B5044268000447A000044A6A00044D04000EB +S315000E1B6044FA000043E8800044034000441240005B +S315000E1B704421400044304000443F4000444E400063 +S315000E1B804000400040004000400040004000400041 +S315000E1B904000400040004000400040004000400031 +S315000E1BA04000400040004000400040004000400021 +S315000E1BB04000400040004000400040004000400011 +S315000E1BC04000400040004000400040004000400001 +S315000E1BD040004000400040004000400040004000F1 +S315000E1BE04000000000070007000E1B48000E1B6495 +S315000E1BF0000E1B8008000000388000FD000000006B +S315000E1C0043E8800044034000441240004421400053 +S315000E1C1044304000443F4000444E4000445D400086 +S315000E1C20446C4000447B40000000000043FA000074 +S315000E1C30447A0000449C400044BB800044FA0000F5 +S315000E1C40451C4000453B8000455AC000457A0000C1 +S315000E1C500000003296FAFAFAFAFA0000003296FA04 +S315000E1C60FAFAFAFA0000003296FAFAFAFAFA0000CE +S315000E1C70003296FAFAFAFAFA0000003296FAFAFAF0 +S315000E1C80FAFA0000003296FAFAFAFAFA0000003270 +S315000E1C9096FAFAFAFAFA0000003296FAFAFAFAFA0E +S315000E1CA00000003296FAFAFAFAFA0000003296FAB4 +S315000E1CB0FAFAFAFA000A000A000E1C00000E1C2898 +S315000E1CC0000E1C50040000003B80808100000000C6 +S315000E1CD0010000000200000045E10000424800003D +S315000E1CE04248000000000000457A00004220000035 +S315000E1CF0458CA00040A00000457A00004248000036 +S315000E1D004270000042A6000002000000040000001F +S315000E1D1001000000080000000400000002000000A0 +S315000E1D20100000001000000042F000003F0000000E +S315000E1D302000000002000000BDCCCCCDC0066666B9 +S315000E1D403FC000003FC0000041C800002FE67FFCE8 +S315000E1D506EF3D10D6110621C61E37103E308223943 +S315000E1D60212061E371036110621CE10832108F03BA +S315000E1D700009E101A0010009E10060137E046FE392 +S315000E1D806EF6000B00090009FFFF6B282FE67FFC9D +S315000E1D906EF3D10D6110621C61E37103E3402239CB +S315000E1DA0212061E371036110621CE14032108F0342 +S315000E1DB00009E101A0010009E10060137E046FE352 +S315000E1DC06EF6000B00090009FFFF551F2FE67FFC7C +S315000E1DD06EF3D10D6110621C61E37103E3042239C7 +S315000E1DE0212061E371036110621CE10432108F033E +S315000E1DF00009E101A0010009E10060137E046FE312 +S315000E1E006EF6000B00090009FFFF6B282FE67FFC1C +S315000E1E106EF3D10D6110621C61E37103E302223988 +S315000E1E20212061E371036110621CE10232108F03FF +S315000E1E300009E101A0010009E10060137E046FE3D1 +S315000E1E406EF6000B00090009FFFF6B282F862FE6A2 +S315000E1E504F227FF86EF368E37807D129410B00090C +S315000E1E606103281068E37806D126410B0009610349 +S315000E1E702810914471036110611C62E3720762209F +S315000E1E80622C32108D280009913971026110611C85 +S315000E1E9062E372066220622C32108D14000961E331 +S315000E1EA071076110611C21188D16000961E3710618 +S315000E1EB06110611C21188D0F000961E371C8E200E3 +S315000E1EC0112EA0090009911A71036110611C62E3BB +S315000E1ED072076220622C32109111710262E3720651 +S315000E1EE062202120910B710362E37207622021208A +S315000E1EF07E086FE34F266EF668F6000B000981200A +S315000E1F00000E1DCC000E1E0C2FE64F227FFC6EF32C +S315000E1F1061E371C49214112FD10A6111415AF10D68 +S315000E1F2061E371C4511FF11D045A410B0009D1061C +S315000E1F30F118F01C7E046FE34F266EF6000B0009B7 +S315000E1F407C480009FFFF4B06FFFF4BE42F862FE66A +S315000E1F504F227FF46EF361E371CC114E61E3F14AC9 +S315000E1F60989FD150611262E372CC532E62E36433B2 +S315000E1F70F428410B0009F10C61837120F11A989037 +S315000E1F80D1496112D249F228D249F128D2496423A5 +S315000E1F90F42CF51C410B0009F10C61837118F11A32 +S315000E1FA0D145F218D145F11861E37108F120F11A05 +S315000E1FB09877D13D6112D23DF228D241F128D24115 +S315000E1FC06423F42CF51C410B0009F10C618371247A +S315000E1FD0F11A9166D236F228D23BF128F212D2339A +S315000E1FE0F128F212925D7218F128F21292597224A9 +S315000E1FF0F128F212D235F128F21262E37208F128B4 +S315000E2000F32CF313F13C711CF11A914A7115611000 +S315000E2010621CE10232108F0500099142711CF11803 +S315000E2020A0370009913D71156110621CE103321053 +S315000E20308F2C00099835D11C6112D21CF228D21CA5 +S315000E2040F128D2236423F42CF51C410B0009F10C64 +S315000E20506183712CF11A91249223721CF22892201C +S315000E2060722CF128F212921C7220F3289219722CFD +S315000E2070F128F49DF54CF511F15CF132F120713039 +S315000E2080F11A910E7130F118A00300099109712011 +S315000E2090F118F01C7E0C6FE34F266EF668F6000BF9 +S315000E20A000098120000E2A80000E2A7CFFFF52A412 +S315000E20B0FFFF5548000E1B2CFFFF4BAC000E15E024 +S315000E20C0FFFF4BE8000E1BE4000E15E8000E15E4AC +S315000E20D0000E1CB42F862FE6FFCB4F226EF39125F2 +S315000E20E092247248F1287140F11A981F911E714878 +S315000E20F0FC18911B714CF118F41CD10D410B000903 +S315000E2100F10CF2CCF211F12C61837144F11A910D9E +S315000E21107138E200212091097137E20021206FE328 +S315000E21204F26FCF96EF668F6000B000981200009B1 +S315000E2130000E26142F862FE6FFCB4F227FFC6EF362 +S315000E2140D13C410B00096103611C21188D08000961 +S315000E2150D139410B00096103611C21188D05000957 +S315000E2160D136410B0009A07A0009D135F218915FDC +S315000E21707170F118F2158F2A0009D132F2189157A3 +S315000E21807160F118F2158F220009915171366110A6 +S315000E219021188D1C0009D12CF218D12CF118F2152C +S315000E21A08F15000991447137E20021209140713854 +S315000E21B0611021188F530009913A7138E2012120DE +S315000E21C09136D220F128715CF11AA0480009D11C73 +S315000E21D0F118912D7150F218F2158F3D0009D11A92 +S315000E21E0F218D11BF118F2158F36000991207138AD +S315000E21F0E2002120911C7137E201212091189217DD +S315000E22007254F1287140F11A981291117154FC18FA +S315000E2210910E7158F118F41CD10E410B0009F10CF8 +S315000E2220F2CCF211F12C61837144F11AA017000958 +S315000E223081200009000E1D8C000E1D4C000E20D4B0 +S315000E2240FFFF5540FFFF5548FFFF52C8000E1D0405 +S315000E2250000E1D00000E2614D133410B00099161AC +S315000E226071386210E10132108F2A0009915A7148B5 +S315000E2270FC1891577168F118F41CD12C410B00090A +S315000E2280F10C61E3F3CCF311F13CF11A914A714072 +S315000E229062E3F128F11A98459144716CF118F41C19 +S315000E22A0D122410B0009F10C61E3F218F32CF31164 +S315000E22B0F13C61837144F11A91347138E2022120A6 +S315000E22C0D11BF218912E7140F118F2158D080009E6 +S315000E22D0D117F21891267148F118F2158F0A0009D6 +S315000E22E0D114D2146220632CE280223B622C212070 +S315000E22F0A0100009D10EF11891147144F218F215BE +S315000E23008F080009D10BD20B6220622CE37F223993 +S315000E2310622C21207E046FE34F26FCF96EF668F6DA +S315000E2320000B000981200009000E20D4000E261491 +S315000E2330FFFF5548FFFF5F782FE64F227FF46EF3BF +S315000E234061E371CC114F61E37104F14A61E3F15A15 +S315000E235061E371CC521F912432168F0D000961E391 +S315000E236071CC521F911E32168D06000961E371CC97 +S315000E2370511FF118A00E0009D10B611262E372CC47 +S315000E2380572F63E3730462E36473F438F528410B45 +S315000E23900009F10CF01C7E0C6FE34F266EF6000B57 +S315000E23A00009812081A30009000E2A7C2FE64F2208 +S315000E23B07FF86EF361E371C8114F61E3F14A61E391 +S315000E23C071C8521F911A32168F06000961E371C841 +S315000E23D0511FF118A00B0009D109611262E372C8F0 +S315000E23E0532F62E36433F428410B0009F10CF01C01 +S315000E23F07E086FE34F266EF6000B0009812000095A +S315000E2400000E2A802FE64F226EF3D1066112410B83 +S315000E24100009D105410B00096FE34F266EF6000B3E +S315000E242000090009000E2A84000E242C2FE64F22E6 +S315000E24306EF3920D910D64236513D106410B0009BF +S315000E2440D105410B00096FE34F266EF6000B00090E +S315000E2450812081A4000E249C000E25002FE64F221B +S315000E24606EF391146110621C911232108D0A0009DE +S315000E2470920D910E64236513D106410B0009D10608 +S315000E2480410B00096FE34F266EF6000B0009812003 +S315000E249000B481A4000E249C000E25002FE67FF0CA +S315000E24A06EF361E371D0114D61E371D0115C61E39E +S315000E24B071D062E372D0522C112E61E371D062E3B9 +S315000E24C072D0522D112FA00C000961E371D0511F4D +S315000E24D0E200212261E371D062E372D0522F7204C0 +S315000E24E0112F62E372D061E371D0522F511E321258 +S315000E24F08FEB00097E106FE36EF6000B00090009E4 +S315000E25002F862FE64F226EF39865D133410B0009C5 +S315000E25106103621C618371032120985CD12F410BEC +S315000E252000096103621C618371022120915371358A +S315000E25306110611C21188F060009914CD228622069 +S315000E2540622C713521209146D2266220622C622E93 +S315000E255071362120913FD224F1287148F11A913A11 +S315000E2560D222F128714CF11A9135D221F128716CD3 +S315000E2570F11A9130D21FF1287164F11A912BD21EE5 +S315000E2580F1287168F11A9126D21CF1287150F11AB0 +S315000E25909121D21BF1287154F11A911CD219F128EE +S315000E25A07158F11A9117D218F1287170F11A911209 +S315000E25B0D216F1287160F11A910DD2156220622C95 +S315000E25C0711521209107E2B421206FE34F266EF696 +S315000E25D068F6000B00098120000E1DCC000E1E0CA5 +S315000E25E0000E1CD0000E1CD4000E1CD8000E1CDCD7 +S315000E25F0000E1CE0000E1CE4000E1CE8000E1CF47F +S315000E2600000E1CF8000E1CFC000E1CEC000E1CF03E +S315000E2610000E15DC2FE67FFC6EF361E3F14A61E3F3 +S315000E2620F218F18DF2158F04000961E3F118A0037B +S315000E2630000961E3F118F14DF01C7E046FE36EF6AE +S315000E2640000B00092FE64F226EF3D106410B00094F +S315000E2650D1056112410B00096FE34F266EF6000B92 +S315000E266000090009000E266C000E2A882FE64F225E +S315000E26706EF3D105410B0009D104410B00096FE33E +S315000E26804F266EF6000B0009000E1E4C000E281C7F +S315000E26902FE64F226EF3D106410B0009D1056112CA +S315000E26A0410B00096FE34F266EF6000B0009000979 +S315000E26B0000E2134000E2A8C2FE64F227FF46EF385 +S315000E26C061E371CC114F61E37107215061E371CC67 +S315000E26D0116D61E371062170913E717D6110611C71 +S315000E26E021188F3300099137717C6110611C2118F6 +S315000E26F08D12000961E371CC511F6110631C62E3F8 +S315000E2700720761E37117643365206610E700D11313 +S315000E2710410B0009A010000961E371CC511D611037 +S315000E2720631C62E3720661E3711B643365206610F7 +S315000E2730E700D10A410B0009910E920D727C6220C0 +S315000E2740622CE301223A622C717C21207E0C6FE30F +S315000E27504F266EF6000B000981200009000E276039 +S315000E27602FE67FFC6EF361E37103214061E3710294 +S315000E2770215061E37101216061E32170914B717DFE +S315000E27806110611C21188D07000961E36110621C3E +S315000E2790E10132108F3A0009913D717E62E37201BA +S315000E27A0622021209137717862E372026220212025 +S315000E27B09131717962E372026220212061E3710325 +S315000E27C06110611C21188D210009912462E37203A8 +S315000E27D06220322C622C72FF622C717A2120911AA1 +S315000E27E062E372036220322C622C72FF622C717BC2 +S315000E27F021209110D2086220622CE301223A622C2B +S315000E2800717421209107717DE20121207E046FE310 +S315000E28106EF6000B00098120FFFF7D8E2FE64F22FC +S315000E28206EF3916E717B6110611C21188D2E00095D +S315000E2830916771796110611C21188F1C00099160D6 +S315000E2840925F72786220622C71792120915992588A +S315000E285072746220622CE301223A622C717421207A +S315000E2860914F6213727B6220622C72FF622C717B17 +S315000E28702120A02700099144621372796220622CEE +S315000E288072FF622C71792120A01C00099139717E8C +S315000E28906110611C21188D0B000991326213727E34 +S315000E28A06220622C72FF622C717E2120A00A000922 +S315000E28B09127D2146220622C717421209121717D90 +S315000E28C0E2002120D110F118D110F218F21589026A +S315000E28D0F2148F270009D10EF218D10EF118F21547 +S315000E28E08F200009D10C6110621CD10C6110611C85 +S315000E28F064236513E600E700D109410B0009A077B2 +S315000E290000098120FFFF7D8EFFFF6D94000E1D3C9A +S315000E2910FFFF543C000E1D40000E1D14000E1D1030 +S315000E2920000E2760D140F118D140F218F215890237 +S315000E2930F2148F160009D13EF218D13EF118F21597 +S315000E29408F0F0009D13C6110621CD13C6110611CD5 +S315000E295064236513E600E700D139410B0009A04751 +S315000E29600009D138F118D138F218F2158F16000970 +S315000E2970D12FF218D135F118F2158F0F0009D13477 +S315000E29806110621CD1336110611C64236513E6006D +S315000E2990E700D12B410B0009A02A0009D12EF2180F +S315000E29A0D12EF118F2158F0F0009D12D6110621C70 +S315000E29B0D12C6110611C64236513E640E700D1201B +S315000E29C0410B0009A0140009D127F118D127F218DE +S315000E29D0F2158F0D0009D1266110621CD1256110EA +S315000E29E0611C64236513E640E700D115410B00090F +S315000E29F0911971746110621C911571756110611CCB +S315000E2A0032108D040009D11C6112410B0009910A86 +S315000E2A10920972746220622C717521206FE34F2623 +S315000E2A206EF6000B00098120FFFF6D94000E1D3817 +S315000E2A30FFFF543C000E1D40000E1D0C000E1D081F +S315000E2A40000E2760FFFF4E70000E1D48000E1D443F +S315000E2A50000E1D1C000E1D18FFFF4BBC000E1D2880 +S315000E2A60000E1D24000E1D20FFFF2528000E1D2C16 +S315000E2A70000E1D30000E1D34000E2A90000021504F +S315000E2A800000209C0000FC90000237DC0001D734C9 +S30D000E2A90000542B807001668A6 +S31500E00000DF07D008400B0009D007400B0009D007F6 +S31500E00010400B0009AFFE00090009000900090009CC +S31500E00020FFFF10000E005E9C0E00506C0E005DF4AB +S31500E00030002B0009002B0009002B0009002B00090A +S31500E00040002B0009002B0009002B0009002B0009FA +S31500E00050002B0009002B0009002B0009000900090C +S31500F0000043210002000C9AF4454355204964656E7D +S31500F00010746966696572000043210002000C1208DB +S31500F00020456E67696E65204C6F616420536D6F6F26 +S31500F000307468696E6720466163746F7220410000D0 +S31500F0004043210002000C120C456E67696E65204C68 +S31500F000506F616420536D6F6F7468696E67204661D7 +S31500F0006063746F722042000043210002000C1204F8 +S31500F00070456E67696E65204C6F616420536D6F6FD6 +S31500F000807468696E6720466163746F7220416C74A0 +S31500F0009065726E617465000043210002000C120067 +S31500F000A0456E67696E65204C6F616420536D6F6FA6 +S31500F000B07468696E6720466163746F7220416C7470 +S31500F000C065726E61746520420000000043210002F3 +S31500F000D0000C1210456E67696E65204C6F616420E6 +S31500F000E0536D6F6F7468696E6720466163746F72E3 +S31500F000F02046696E616C000043210008FFFF551F22 +S31500F001004500000000090009000000014D6572700D +S31500F001104D6F6420436C757463682053776974631C +S31500F001206800000043210008FFFF6B28450000002F +S31500F0013000090009000000014D6572704D6F6420E2 +S31500F001404272616B65205377697463680000000042 +S31500F0015043210008FFFF6B28450000000009000955 +S31500F00160000000014D6572704D6F64204372756931 +S31500F00170736520526573756D65205377697463688E +S31500F001800000000043210008FFFF6B284500000037 +S31500F0019000090009000000014D6572704D6F642082 +S31500F001A043727569736520436F6173742053776981 +S31500F001B07463680043210008FFFF5F784500000084 +S31500F001C000090009000000014D6572704D6F642052 +S31500F001D0526576204C696D6974204675656C2043CE +S31500F001E07574205377697463680000004321000832 +S31500F001F0FFFF8135450000000009000900000001FD +S31500F002004D6572704D6F64205344204D6F646520C8 +S31500F00210537769746368000043210008FFFF813853 +S31500F002204500000000090009000000044D657270E9 +S31500F002304D6F6420534420566F6C756D657472690A +S31500F002406320456666696369656E63790000000040 +S31500F0025043210008FFFF813C45000000000900092A +S31500F00260000000044D6572704D6F642053442041C8 +S31500F002706972666C6F772046696E616C204F757493 +S31500F002807075740043210008FFFF814045000000AF +S31500F0029000090009000000044D6572704D6F64207E +S31500F002A0534420416972666C6F77204D6166205326 +S31500F002B0656E736F7200000043210008FFFF8144F2 +S31500F002C04500000000090009000000044D65727049 +S31500F002D04D6F642053442041746D6F73706865727E +S31500F002E0696320436F6D70656E736174696F6E003C +S31500F002F043210008FFFF814C45000000000900097A +S31500F00300000000044D6572704D6F64205344204226 +S31500F003106C656E64696E6720526174696F000000E7 +S31500F0032043210008FFFF8150450000000009000945 +S31500F00330000000044D6572704D6F642053442041F7 +S31500F003406972666C6F7720426C656E64696E6700E1 +S31500F0035043210004000E1B2C566F6C756D6574728C +S31500F00360696320456666696369656E6379205461E1 +S31500F00370626C65203100000043210004000E1BE48E +S31500F0038041746D6F7370686572696320507265733E +S31500F003907375726520436F6D70656E736174696F06 +S31500F003A06E00000043210004000E1CB453442042AA +S31500F003B06C656E64696E67205461626C650000005E +S31500F003C043210002000E15E8456E67696E6520440C +S31500F003D06973706C6163656D656E7400432100022C +S31500F003E0000E15DC53706565642044656E736974A0 +S31500F003F079204D6F6465000043210002000E15E47C +S31500F0040053706565642044656E7369747920436F33 +S31500F004106E7374616E74000043210002000E1CD8E6 +S31500F00420526576204C696D697420285265646C6952 +S31500F004306E65290043210002000E1CE8466C6174CB +S31500F0044020466F6F742053686966742044656C7437 +S31500F00450612028537461746963204C696D6974294D +S31500F004600000000043210002000E1CEC466C617493 +S31500F0047020466F6F74205368696674204D696E6903 +S31500F004806D756D2053706565642054687265736888 +S31500F004906F6C640043210002000E1CF0466C617420 +S31500F004A020466F6F74205368696674204D696E69D3 +S31500F004B06D756D2052504D205468726573686F6C7F +S31500F004C06400000043210002000E1CF44C43204D52 +S31500F004D06178696D756D2053706565642054687236 +S31500F004E06573686F6C64000043210002000E1D0006 +S31500F004F04C43204D696E696D756D205468726F744A +S31500F00500746C65205468726573686F6C64000000E3 +S31500F0051043210002000E1D04464653204D696E69C4 +S31500F005206D756D205468726F74746C6520546872C2 +S31500F005306573686F6C64000043210002000E1CF8BE +S31500F00540526576204C696D697420284C61756E632E +S31500F005506820436F6E74726F6C29000043210008A7 +S31500F00560FFFF815645000000000900090000000168 +S31500F005704D6572704D6F6420464653204D6F64652D +S31500F005800000000043210008FFFF815745000000EE +S31500F0059000090009000000014D6572704D6F64207E +S31500F005A04C4320456E6761676564205369676E61E9 +S31500F005B06C00000043210008FFFF81584500000051 +S31500F005C000090009000000014D6572704D6F64204E +S31500F005D046465320456E6761676564205369676ECA +S31500F005E0616C000043210008FFFF815C45000000BC +S31500F005F000090009000000014D6572704D6F64201E +S31500F006004646532047656172204D6F6E69746F726E +S31500F006100000000043210008FFFF81604500000054 +S31500F0062000090009000000044D6572704D6F6420EA +S31500F006305265764C696D69742041637469766520FC +S31500F006404375742052504D0043210008FFFF81642A +S31500F006504500000000090009000000044D657270B5 +S31500F006604D6F64205265764C696D697420416374F0 +S31500F0067069766520526573756D652052504D0000A0 +S31500F0068043210008FFFF81684500000000090009CA +S31500F00690000000044D6572704D6F64205265644C25 +S31500F006A0696E65204375742052504D004321000851 +S31500F006B0FFFF816C450000000009000900000004FE +S31500F006C04D6572704D6F64205265644C696E65209D +S31500F006D04879737465726573697300004321000885 +S31500F006E0FFFF8174450000000009000900000004C6 +S31500F006F04D6572704D6F64204C61756E6368204372 +S31500F007006F6E74726F6C2052504D000043210008DA +S31500F00710FFFF817845000000000900090000000491 +S31500F007204D6572704D6F64204C61756E6368204341 +S31500F007306F6E74726F6C2048797374657265736945 +S31500F007407300000043210008FFFF8184450000008C +S31500F0075000090009000000044D6572704D6F6420B9 +S31500F007604646532044656C746120284175746F29A0 +S31500F007700000000043210008FFFF818845000000CB +S31500F0078000090009000000044D6572704D6F642089 +S31500F007904646532044656C7461202853746174692D +S31500F007A06329000043210008FFFF817C450000001B +S31500F007B000090009000000044D6572704D6F642059 +S31500F007C046465320456E676167656D656E742052C7 +S31500F007D0504D000043210008FFFF819045000000C6 +S31500F007E000090009000000044D6572704D6F642029 +S31500F007F04646532053706565642054687265736885 +S31500F008006F6C640043210008FFFF81704500000013 +S31500F0081000090009000000044D6572704D6F6420F8 +S31500F008204C43205370656564205468726573686F35 +S31500F008306C64000043210002000E1D3846424B4313 +S31500F00840205468726573686F6C640000432100027F +S31500F00850000E1D0846424B4320466C6173682053D8 +S31500F00860706565640000000043210002000E1D0C57 +S31500F0087046424B4320466C61736820436F756E7435 +S31500F008800000000043210002000E1D3C46424B438F +S31500F0089020536576657265204B6E6F636B205468E6 +S31500F008A0726573686F6C640043210002000E1D10C0 +S31500F008B046424B4320536576657265204B6E6F63F7 +S31500F008C06B20466C617368205370656564000000A8 +S31500F008D043210002000E1D1446424B432053657619 +S31500F008E0657265204B6E6F636B20466C6173682092 +S31500F008F0436F756E7400000043210002000E1D4028 +S31500F0090046424B43204C6F616420546872657368AD +S31500F009106F6C640043210002000E1D2C49414D20EE +S31500F00920466C617368205468726573686F6C640016 +S31500F0093043210002000E1D3049414D20466C617383 +S31500F009406820436F756E740043210002000E1D345B +S31500F0095049414D20466C61736820537065656400AB +S31500F0096043210002000E1D484547542041463120E0 +S31500F00970526573697374616E63652054687265734A +S31500F00980686F6C640000000043210002000E1D1821 +S31500F0099045475420466C6173682053706565640062 +S31500F009A043210002000E1D1C45475420466C61731E +S31500F009B06820436F756E740043210002000E1D44DB +S31500F009C0454754204C6F6164205468726573686FB4 +S31500F009D06C64000043210002000E1D2045435420A4 +S31500F009E0466C6173682053706565640043210002AC +S31500F009F0000E1D2445435420466C61736820436FF6 +S31500F00A00756E740043210002000E1D2845435420E4 +S31500F00A10466C6173682054656D70657261747572A9 +S31500F00A2065205468726573686F6C64004321000832 +S31500F00A30FFFF819445000000000900090000000155 +S31500F00A404D6572704D6F642043454C205369676E57 +S31500F00A50616C000043210008FFFF7D8E4500000019 +S31500F00A6000090009000000014D6572704D6F6420A9 +S31500F00A7043454C205369676E616C204F454D00002D +S31500F00A8043210008FFFF819B450000000009000993 +S31500F00A90000000014D6572704D6F642043454C2097 +S31500F00AA0466C61736820436F756E74657200000062 +S31500F00AB043210008FFFF8199450000000009000965 +S31500F00AC0000000014D6572704D6F642043454C2067 +S31500F00AD0537065656420436F756E7465720000002F +S31500F00AE000090009000900090009000900090009C8 +S311070010002FE66EF36FE36EF6000B000997 +S3150700100C4A75737420746F2070726F7665207468D6 +S3150700101C617420617373657274696F6E7320636193 +S3150700102C6E206661696C2E0046697273742065784A +S3150700103C65637574696F6E2073686F756C6420735E +S3150700104C6574204D61664D6F646520746F204D6124 +S3150700105C664D6F646553656E736F722E00000000E4 +S3150700106C466972737420657865637574696F6E204B +S3150700107C73686F756C642072657475726E204D415A +S3150700108C462066726F6D2073656E736F722E000045 +S3150700109C5365636F6E6420657865637574696F6EE7 +S315070010AC2073686F756C642072657475726E204D4B +S315070010BC41462066726F6D2073656E736F722E00D4 +S315070010CC4D61664D6F64652073686F756C6420722D +S315070010DC656D61696E2073657420746F204D61664A +S315070010EC4D6F646553656E736F722E005365636F30 +S315070010FC6E6420657865637574696F6E2073686FA7 +S3150700110C756C642072657475726E204D4146206647 +S3150700111C726F6D2073706565642D64656E73697483 +S3150700112C792E00004D61664D6F64652073686F7587 +S3150700113C6C642072656D61696E2073657420746FBB +S3150700114C204D61664D6F6465537065656444656EC5 +S3150700115C736974792E000000436865636B696E6763 +S3150700116C20626C656E64206D6F646520636F6465C1 +S3150700117C2C2063656C6C2073686F756C64206265D4 +S3150700118C207A65726F20616E642072657475726E53 +S3150700119C206D61662073656E736F722076616C7550 +S315070011AC652E00004D61664D6F64652073686F751B +S315070011BC6C642072656D61696E207365742E000010 +S315070011CC436865636B696E6720426C656E64207253 +S315070011DC6174696F00000000436865636B696E672D +S315070011EC2053442076616C75650000005265644C8B +S315070011FC696E653A20416C6C6F77206675656C2055 +S3150700120C6174205265644C696E65437574202D2094 +S3150700121C312052504D2C206D6F76696E672C2063EA +S3150700122C6C75746368206E6F742070726573736562 +S3150700123C6420214675656C43757400005265644CD1 +S3150700124C696E653A20416C6C6F77206675656C2004 +S3150700125C6174205265644C696E65437574202D2044 +S3150700126C312052504D2C206D6F76696E672C20639A +S3150700127C6C75746368206E6F742070726573736512 +S3150700128C642C20214C43456E67616765640000003A +S3150700129C5265644C696E653A2043757420667565AC +S315070012AC6C206174205265644C696E6543757420B5 +S315070012BC2B20312052504D2C206D6F76696E672C82 +S315070012CC20636C75746368206E6F74207072657317 +S315070012DC736564005265644C696E653A2052657392 +S315070012EC756D65206675656C206174205265644C56 +S315070012FC696E65526573756D65202D2031205250C8 +S3150700130C4D2C206D6F76696E672C20636C75746334 +S3150700131C68206E6F742070726573736564000000C5 +S3150700132C4E6F726D616C2073746F707065643A20C2 +S3150700133C416C6C6F77206675656C206174204C6107 +S3150700134C756E6368436F6E74726F6C437574202B7E +S3150700135C20313030302052504D2C2073746F707002 +S3150700136C65642C206E6F20636C75746368000000CF +S3150700137C4E6F726D616C206D6F76696E673A2041A0 +S3150700138C6C6C6F77206675656C206174204C617583 +S3150700139C6E6368436F6E74726F6C437574202B2083 +S315070013AC313030302052504D2C206D6F76696E6778 +S315070013BC2C206E6F20636C75746368004C61756EB8 +S315070013CC636820436F6E74726F6C20546573742058 +S315070013DC33204661696C65643A207374616E647375 +S315070013EC74696C6C2C20636C7574636820707265F9 +S315070013FC73736564000000004C61756E6368204367 +S3150700140C6F6E74726F6C205465737420342046614A +S3150700141C696C65643A2030206D70682C2031303049 +S3150700142C207468722C2072706D2062656C6F772041 +S3150700143C6C696D69740000004C61756E63682043B6 +S3150700144C6F6E74726F6C3A20437574206675656C93 +S3150700145C206174204C61756E6368436F6E74726F8E +S3150700146C6C437574202B20312052504D2C207374ED +S3150700147C616E647374696C6C2C20636C7574636829 +S3150700148C2070726573736564000000004C61756E9D +S3150700149C636820436F6E74726F6C3A20526573756E +S315070014AC6D65206675656C206174204C61756E637D +S315070014BC68436F6E74726F6C526573756D65202D0C +S315070014CC20312052504D2C207374616E64737469ED +S315070014DC6C6C2C20636C75746368207072657373FF +S315070014EC65640000466C617420466F6F7420536800 +S315070014FC696674696E673A20526573756D65206601 +S3150700150C75656C20617420466C6174466F6F7453F5 +S3150700151C68696674526573756D65202D2031205286 +S3150700152C504D2C206D6F76696E672C20636C757425 +S3150700153C636820707265737365640000466C61742A +S3150700154C20466F6F74205368696674696E673A2014 +S3150700155C437574206675656C20617420466C6174DE +S3150700156C466F6F745368696674437574202B203104 +S3150700157C2052504D2C206D6F76696E672C20636C4C +S3150700158C7574636820707265737365640000000078 +S3150700159C46465320726573756D65207768656E20B0 +S315070015AC72706D2064726F70730000005768656EF9 +S315070015BC20726576206C696D697420666C6167208C +S315070015CC6973207365742C206E6F206F746865724F +S315070015DC206269747320617265207365742E00002E +S315070015EC5768656E20726576206C696D697420661E +S315070015FC6C616720697320636C65617265642C2066 +S3150700160C6E6F206F746865722062697473206172DD +S3150700161C6520636C65617265642E00005265644CC7 +S3150700162C696E65206375742F726573756D652073A6 +S3150700163C616E6974792E00004C61756E6368436F31 +S3150700164C6E74726F6C206375742F726573756D6526 +S3150700165C2073616E6974792E00000000307841356D +S3150700166C41354135413500006572726F7220696EDE +S3150700167C2072616D20686F6C652100004F454D2007 +S3150700168C63656C20706F707065642C2043656C20E5 +S3150700169C5369676E616C2073686F756C642068613B +S315070016AC766520706F7070656420746F6F0000002C +S315070016BC4F454D2063656C20706F707065642C20E8 +S315070016CC3230206379636C6573206C617465722C98 +S315070016DC2043656C205369676E616C2073686F7560 +S315070016EC6C642073746179206F6E00004F454D2032 +S315070016FC63656C20706F707065642C2032312063C3 +S3150700170C79636C6573206C617465722C2043656C08 +S3150700171C205369676E616C2073686F756C642073F0 +S3150700172C746179206F6E00004F454D2063656C2000 +S3150700173C6973206E6F7720676F6E652C2043656C17 +S3150700174C207369676E616C2073686F756C642068AB +S3150700175C6176652064726F707065640062656C6F84 +S3150700176C772066626B63206C6F61642074687265A0 +S3150700177C73686F6C6420666F722063656C2C206EC1 +S3150700178C6F206C6967687421000000006B6E6F63CD +S3150700179C6B696E672120466C61736820636F756E83 +S315070017AC7465722073686F756C6420696E69740052 +S315070017BC6B6E6F636B696E672120466C617368206D +S315070017CC737065656420636F756E746572207368D4 +S315070017DC6F756C6420696E69740000006B6E6F63BD +S315070017EC6B696E672120466C6173682073686F7529 +S315070017FC6C64207374617274000000006B6E6F6307 +S3150700180C6B696E6720676F6E652120466C6173681E +S3150700181C2073686F756C64207A65726F0000000020 +S3150700182C6B6E6F636B696E6720676F6E65212046FB +S3150700183C6C61736820636F756E7465722073686F5D +S3110700184C756C64207A65726F000000005E +S30907001858123456786B +S3090700185CFFFF819468 +S3150E0050002FE67FFC6EF361E371C4114F00097E0437 +S3150E0050106FE36EF6000B00092FE64F227FF46EF358 +S3150E00502061E371CC114E61E371CC115D61E371CC1C +S3150E005030511E21188F11000961E371CCE200112F68 +S3150E0050409111717C62E372CC522F112161E371CC06 +S3150E005050511D6413D104410B00097E0C6FE34F26DC +S3150E0050606EF6000B000981200E0050002FE64F222F +S3150E0050706EF3D105E4006513D104410B00096FE30D +S3150E0050804F266EF6000B00090700100C0E00501886 +S3150E0050902FE67FF86EF361E371C89220112F61E35C +S3150E0050A071C8921D112EA00C000961E371C8511F23 +S3150E0050B0E200212261E371C862E372C8522F7204C4 +S3150E0050C0112F62E372C861E371C8522F511E32125C +S3150E0050D08FEB00097E086FE36EF6000B0009812048 +S3150E0050E0BFFF2FE67FF86EF361E37104F14A61E3C9 +S3150E0050F0F15A61E37104F118C711F208F12261E366 +S3150E005100F218F2158F030009E100A00F000961E302 +S3150E0051107104F118C70BF208F21261E3F118F215D9 +S3150E0051208F030009E100A0010009E101415AF10DCA +S3150E005130F11D005A7E086FE36EF6000B000900099A +S3150E0051403F8020C53F7FBE772F862FE64F227FF406 +S3150E0051506EF391FE7115E2002120D17F410B0009FD +S3150E005160D17E410B000961E37108C77DF109F11A81 +S3150E00517061E37104F108F11A91EB71156110611C6E +S3150E005180601388010129611C415AF10DD176F11D7A +S3150E005190045A6513D175410B0009D175C775F1080F +S3150E0051A0F11AD175C775F108F11AD175C775F108DF +S3150E0051B0F11AD175C775F108F11AD17592CA212166 +S3150E0051C068E3D174410B0009F10CF81A62E361E34E +S3150E0051D07108F428F518D170410B0009405AF10DEB +S3150E0051E0D16EF11D045A6513D160410B000968E3B7 +S3150E0051F0D168410B0009F10CF81A62E361E37108FC +S3150E005200F428F518D164410B0009405AF10DD1640A +S3150E005210F11D045A6513D155410B0009919971156B +S3150E0052206110611C601388010129611C415AF10D40 +S3150E005230D15CF11D045A6513D14C410B00099188BE +S3150E0052407115E202212068E3D152410B0009F10CDF +S3150E005250F81A62E361E37104F428F518D14E410B96 +S3150E0052600009405AF10DD150F11D045A6513D13F74 +S3150E005270410B0009916D71156110611C6013880256 +S3150E0052800129611C415AF10DD148F11D045A6513CD +S3150E005290D136410B0009915C7115E203212068E3BA +S3150E0052A0D13C410B0009F10CF81A62E361E3710877 +S3150E0052B0F428F518D138410B0009405AF10DD13CAE +S3150E0052C0F11D045A6513D129410B0009914171153F +S3150E0052D06110611C601388030129611C415AF10D8E +S3150E0052E0D134F11D045A6513D120410B0009D12288 +S3150E0052F0C724F108F11A68E3D126410B0009F10C17 +S3150E005300F81A9126712CF218C72BF108F42CF51CFD +S3150E005310D121410B0009405AF10DD128F11D045A35 +S3150E0053206513D112410B00099113711CF218C72493 +S3150E005330F108F42CF51CD118410B0009405AF10D59 +S3150E005340D120F11D045A6513D108410B0009A03B6B +S3150E00535000098120400000090E005090000E250025 +S3150E005360405E147B406EC101070010340E005018CB +S3150E005370FFFF5548447A0000FFFF52A44386757618 +S3150E005380FFFF4BE8442F0000FFFF4BAC41700000BF +S3150E005390FFFF4B06000E1F080E0050E20700106CB2 +S3150E0053A00700109C070010CC070010F807001130FC +S3150E0053B007001164070011B03F0E38E3070011CC49 +S3150E0053C041386E0F070011E461E37108F118C71A30 +S3150E0053D0F209F122F208F12061E3F418F51CD11856 +S3150E0053E0410B0009405AF10DD116F11D045A6513F1 +S3150E0053F0D115410B0009911E71156110611C6013C8 +S3150E00540088030129611C415AF10DD110F11D045A70 +S3150E0054106513D10D410B0009D10DC70EF108F11A16 +S3150E00542091097115E20121207E0C6FE34F266EF66F +S3150E00543068F6000B000981203EE38E3A40CCEC1054 +S3150E0054400E0050E2070011640E005018070011B04E +S3150E005450FFFF52A4438675762FE67FFC6EF361E35B +S3150E00546071C4114F61E371C4511F21188F0A0009CF +S3150E005470D10BD20B6220632CE2BF2239622C212083 +S3150E005480A0080009D106D2066220622CE340223B18 +S3150E005490622C21207E046FE36EF6000B00090009D4 +S3150E0054A0FFFF551F2FE67FFC6EF361E371C4114FAC +S3150E0054B061E371C4511F21188F0A0009D10BD20B5B +S3150E0054C06220632CE2F72239622C2120A008000903 +S3150E0054D0D106D2066220622CE308223B622C2120E2 +S3150E0054E07E046FE36EF6000B00090009FFFF6B28C2 +S3150E0054F02FE67FFC6EF3D10E6110631C61E3710320 +S3150E005500E2802239212061E371036110611C2118AA +S3150E0055108F06000961E371036110611CA001000989 +S3150E005520E10160137E046FE36EF6000B00090009BD +S3150E005530FFFF5F782FE64F227FE86EF361E3711768 +S3150E005540214061E371D8115E61E371D8116D61E39B +S3150E0055507108F14A61E37104F15A61E3F16AD115FA +S3150E005560410B0009D114410B000961E371D8511E9C +S3150E0055706413D112410B000961E371D8511D6413F6 +S3150E005580D10F410B0009D10F62E3F128F11AD10EAA +S3150E00559062E37204F128F11AD10C62E372176220EB +S3150E0055A02120D10B410B00097E186FE34F266EF6B4 +S3150E0055B0000B00090E005090000E25000E0054A49C +S3150E0055C00E005458FFFF5548FFFF5540FFFF5F780A +S3150E0055D0000E21342FE64F227FFC6EF3D151F218C6 +S3150E0055E0F19DF32CF311F13CC74FF309F208E400D9 +S3150E0055F0E500E600F43CF52CF61CD14D410B0009F6 +S3150E005600D14C410B00096103611C21180129611C53 +S3150E005610415AF10DD148F11D045A6513D147410B7C +S3150E0056200009917D7137611021180129611C415ABB +S3150E005630F10DD143F11D045A6513D140410B0009FA +S3150E005640D138F218F19DF120C737F308C73DF2089D +S3150E005650E400E500E600F43CF52CF61CD134410BD3 +S3150E0056600009D134410B00096103611C21188D0913 +S3150E005670000991557137611021188F030009E10158 +S3150E005680A0010009E100D23064136523D12B410B32 +S3150E0056900009D12ED223F228D22DF128F211F19D36 +S3150E0056A0F32CF311F13CF11AD12A410B0009D12149 +S3150E0056B0410B00096103611C21188F090009912F06 +S3150E0056C07137611021188F030009E101A00100094D +S3150E0056D0E100D22164136523D118410B0009D11FB5 +S3150E0056E0F118C71FF209F120F308F28DE400E50068 +S3150E0056F0E600F43CF52CF61CD10D410B0009D10D3C +S3150E005700410B00096103611C21188F2D00099107B9 +S3150E0057107137611021188F270009E101A0250009B4 +S3150E00572081200009000E1CD8424800004198000056 +S3150E0057300E0055340E0054F0070011F80E005018E6 +S3150E00574007001248419000000700129CFFFF5548C3 +S3150E005750000E1CDC000E2134070012E0000E1CF8B1 +S3150E005760447A000042C80000E100D23E641365236D +S3150E005770D13D410B0009D13DF118C73DF209F1208B +S3150E005780F309F208E400E500E600F43CF52CF61CFD +S3150E005790D13A410B0009D13A410B00096103611C54 +S3150E0057A021188F090009915B7137611021188F033B +S3150E0057B00009E101A0010009E100D232641365235C +S3150E0057C0D129410B0009D129F218F19DF32CF311C1 +S3150E0057D0F13CC72DF308F28DE400E500E601F43C3A +S3150E0057E0F52CF61CD125410B0009D125410B0009DC +S3150E0057F06103611C21188F090009913171376110FF +S3150E00580021188F030009E101A0010009E100D21F52 +S3150E00581064136523D114410B0009D114F218F19DBE +S3150E005820F32CF311F13CC713F308F28DE400E500F7 +S3150E005830E601F43CF52CF61CD110410B0009D110F3 +S3150E005840410B00096103611C21188F210009910784 +S3150E0058507137611021188D1B0009E101A01900098D +S3150E005860812000090700132C0E005018000E1CF89C +S3150E005870447A000042C80000424800000E0055342B +S3150E0058800E0054F00700137C41200000070013C8D9 +S3150E005890E100D24E64136523D14D410B0009D14D63 +S3150E0058A0F218F19DF120C74CF308F28DE400E500E5 +S3150E0058B0E601F43CF52CF61CD148410B0009D14803 +S3150E0058C0410B00096103611C21188D090009917CA9 +S3150E0058D07137611021188D030009E101A00100093D +S3150E0058E0E100D24064136523D139410B0009D13E44 +S3150E0058F0D238F228F19DF32CF311F13CF11AD13B7B +S3150E005900410B0009D136410B00096103611C2118B8 +S3150E0059108D09000991597137611021188D030009FF +S3150E005920E101A0010009E100D23164136523D128FB +S3150E005930410B0009D12CD227F228D22EF128F211D2 +S3150E005940F19DF42CF411F14CF11AD128410B0009FA +S3150E005950D123410B00096103611C21188D09000931 +S3150E00596091337137611021188D030009E101A001F1 +S3150E0059700009E100D21E64136523D115410B0009FF +S3150E005980D11DF218F19DF32CF310D11CF118C71C82 +S3150E005990F208F121F28DE400E500E601F43CF52C67 +S3150E0059A0F61CD10E410B0009D10D410B0009610306 +S3150E0059B0611C21188D260009910771376110211877 +S3150E0059C08D200009E101A01E0009812007001404A4 +S3150E0059D00E005018000E1CF842C800000E0055347A +S3150E0059E00E0054F007001444FFFF5548000E2134F4 +S3150E0059F007001498000E1CFC000E1D00000E1CD88D +S3150E005A0043480000E100D24164136523D140410BA7 +S3150E005A100009D140D23FF128C73FF208F121F11A11 +S3150E005A20D13E410B0009D13E410B00096103611CB9 +S3150E005A3021188F09000991677137611021188F039C +S3150E005A400009E101A0010009E100D23064136523CB +S3150E005A50D12F410B0009D12FC732F108F11AD132DD +S3150E005A60C732F108F11AD132924E7254F128C7316B +S3150E005A70F208F121F11AE400D12F410B0009D127CA +S3150E005A80410B0009E401D12C410B0009D123410B36 +S3150E005A900009D123410B00096103611C21188F09EE +S3150E005AA0000991317137611021188F030009E10148 +S3150E005AB0A0010009E100D22164136523D114410B24 +S3150E005AC00009D11B92207260F128C71DF208F12041 +S3150E005AD0F11AD110D21BF228F19DF120F11AD10F35 +S3150E005AE0410B0009D10E410B00096103611C2118FF +S3150E005AF08D2A0009910871386210E10232108F2347 +S3150E005B000009E101A021000981200009070014986F +S3150E005B100E005018FFFF52C841200000000E21341F +S3150E005B200E0054F041A00000FFFF55404248000011 +S3150E005B30FFFF554842C800000E005458070014F0E7 +S3150E005B4043FA0000000E1D04E100D22564136523FE +S3150E005B50D124410B0009D12492407244F228F19DC2 +S3150E005B60F32CF311F13CF11AD120410B0009D1208F +S3150E005B70410B00096103611C21188F090009912D43 +S3150E005B807138611021188F030009E101A001000987 +S3150E005B90E100D21864136523D112410B0009D1120C +S3150E005BA0921C7260F128C714F208F120F11AD10F77 +S3150E005BB0410B0009D10D410B0009D10D410B000916 +S3150E005BC06103611C21188D19000991077138611046 +S3150E005BD021188D130009E101A01100098120000989 +S3150E005BE0070015480E005018FFFF5548000E2134C9 +S3150E005BF00E0054F00700159C43FA0000E100D25E39 +S3150E005C0064136523D15D410B0009D15DD25DF22887 +S3150E005C10F19DF32CF311F13CF11AD15BC75BF10840 +S3150E005C20F11AE401D15A410B0009D15A410B000970 +S3150E005C30D158410B0009D158410B00096103611C73 +S3150E005C4021180129611C415AF10DD154F11D045A36 +S3150E005C506513D14A410B0009D149C751F108F11A12 +S3150E005C60D150C751F108F11AD147F18DF11AE4015D +S3150E005C70D147410B0009E400D14C410B0009D14C30 +S3150E005C80E2002120D143410B0009D24961E37103A1 +S3150E005C906220212061E371036110621C916A321049 +S3150E005CA00129611C415AF10DD142F11D045A6513A9 +S3150E005CB0D132410B0009D13BC73FF108F11AD1325F +S3150E005CC0F18DF11AE400D132410B0009D138E2FF11 +S3150E005CD02120D130410B0009D1356110621C61E3E0 +S3150E005CE071036227212061E371036110621C9141E9 +S3150E005CF032100129611C415AF10DD130F11D045AA1 +S3150E005D006513D11E410B000991357148F218913277 +S3150E005D107148F318912F714CF118F43CF411F14CB3 +S3150E005D20F2150129611C415AF10DD125F11D045AB6 +S3150E005D306513D112410B0009911D7154F218911A77 +S3150E005D407154F31891177158F118F43CF411F14C83 +S3150E005D50F2150129611C415AF10DD11AF11D045A91 +S3150E005D606513D106410B00097E046FE34F266EF6CE +S3150E005D70000B000900808120070015480E00501800 +S3150E005D80FFFF52C8000E1D04FFFF5540419800004C +S3150E005D900E005458000E21340E0054F0070014F075 +S3150E005DA042C80000FFFF554845BB80000E0054A4B4 +S3150E005DB0FFFF5F78070015B8447A0000070015EC60 +S3150E005DC007001628070016442FE64F227FFC6EF3B7 +S3150E005DD061E371C4D206112F61E371C4511F410BE9 +S3150E005DE000097E046FE34F266EF6000B00090009CC +S3150E005DF00000FC902FE64F226EF3D10A410B0009EC +S3150E005E00D109410B0009D109410B0009D108410BFB +S3150E005E100009D108410B00096FE34F266EF6000B01 +S3150E005E2000090009000E242C0E005F700E0055D4DA +S3150E005E300E0051480E005E382FE64F227FF86EF3A5 +S3150E005E4061E371C8921F112F61E371C8921C112E66 +S3150E005E5062E372C861E371C8522F511E32128D066B +S3150E005E600009D10AE4006513D109410B0009D109D5 +S3150E005E70410B0009D108410B00097E086FE34F263E +S3150E005E806EF6000B0009B40081A400090700167413 +S3150E005E900E005018000E1F080E005DC82FE66EF39A +S3150E005EA000090009D113C714F108F11AD113C7144A +S3150E005EB0F108F11AD113D2136220622CE340223B71 +S3150E005EC0622C2120D110D2106220622CE07F220992 +S3150E005ED0622C2120D10DC70EF108F11AD10DC70E75 +S3150E005EE0F108F11AD10D920421216FE36EF6000B23 +S3150E005EF000094CCCFFFF5548447A0000FFFF554081 +S3150E005F0041400000FFFF551FFFFF5F78FFFF52A4C1 +S3150E005F1043867576FFFF4BE8442F0000FFFF4B06C6 +S3150E005F202FE64F227FF86EF361E371C8114E61E3DF +S3150E005F3071C8E200112FA00A0009D10C410B00090D +S3150E005F4061E371C862E372C8522F7201112F62E3C8 +S3150E005F5072C861E371C8522F511E32138FED0009BC +S3150E005F607E086FE34F266EF6000B0009000E281C06 +S3150E005F702FE64F226EF3D184410B0009D183E20145 +S3150E005F80212091FF7174E2002120D181F18DF11A49 +S3150E005F90D180E2002120D180D280F128C780F2087C +S3150E005FA0F120F11AD17FD280F128C77DF208F121B6 +S3150E005FB0F11AD17EE2002120D17DF19DF11A91E1F7 +S3150E005FC07175E200212091DD717BE200212091D9CD +S3150E005FD07179E2002120D177410B000991D27174BB +S3150E005FE06110611C601388010129611C415AF10D73 +S3150E005FF0D171F11D045A6513D170410B0009E414D9 +S3150E006000D16F410B000991BD71746110611C601353 +S3150E00601088010129611C415AF10DD16AF11D045AFC +S3150E0060206513D166410B0009D162410B000991A996 +S3150E00603071746110611C601388010129611C415A3B +S3150E006040F10DD161F11D045A6513D15C410B0009A6 +S3150E006050D14EE2002120D157410B00099192717465 +S3150E0060606110611C21180129611C415AF10DD1578D +S3150E006070F11D045A6513D151410B0009D154F19DFE +S3150E006080F11AD143C753F108F11AD14A410B00094F +S3150E006090917871746110611C21180129611C415A95 +S3150E0060A0F10DD14DF11D045A6513D144410B000972 +S3150E0060B0D147C74AF108F11AD13E410B0009916149 +S3150E0060C0717B6110611C2118E1FF611A611C415A36 +S3150E0060D0F10DD143F11D045A6513D138410B000958 +S3150E0060E0915071796110611C2118E1FF611A611CD2 +S3150E0060F0415AF10DD13BF11D045A6513D12F410BB7 +S3150E0061000009913F71786110611C2118E1FF611A37 +S3150E006110611C415AF10DD133F11D045A6513D12775 +S3150E006120410B0009912E71746110611C6013880178 +S3150E0061300129611C415AF10DD12BF11D045A65132B +S3150E006140D11E410B0009D122F19DF11AD110F18D0C +S3150E006150F11A91186413D11A410B00099112717438 +S3150E0061606110611C21180129611C415AF10DD11FC4 +S3150E006170F11D045A6513D111410B00099102717B71 +S3150E006180A0360009812000C8000E2500FFFF7D8E77 +S3150E006190FFFF6D94FFFF551FFFFF4E70000E1D484B +S3150E0061A040A00000FFFF4BBC000E1D28FFFF6B2812 +S3150E0061B0FFFF2528000E281C070016880E00501813 +S3150E0061C00E005F20070016BC070016F807001734EE +S3150E0061D0FFFF543CBF8000000700176840400000D8 +S3150E0061E007001798070017BC070017E807001808DE +S3150E0061F06110611C21180129611C415AF10DD1064D +S3150E006200F11D045A6513D105410B00096FE34F26A4 +S3150E0062106EF6000B000900090700182C0E00501828 +S3158000100012340000000000091234000100002000A4 +S315800010100000000844325744373031430000000056 +S31580001020000000004646464646464646000000000A +S31580001030000000001234000F000E140044325744A2 +S31580001040373031432E4D6552704D6F442E466C615C +S3158000105073682E54657374696E672E7631342E34B8 +S315800010602E392E3138353300000000000000000094 +S3158000107000000000000000000000000000000000EA +S315800010801234000B000C9AF40000000A33433441FA +S315800010903338343130360000000000000000000094 +S315800010A01234000C464646464646464646460000AC +S315800010B00000000000000000123400084D657270C8 +S315800010C0000000000000000000000000123400094B +S315800010D054657374696E67000000000000000000AC +S315800010E000000000000000001234000D537065659A +S315800010F0642044656E73697479206C6F61642063C3 +S31580001100616C63756C6174696F6E20776974682031 +S315800011104D414620626C656E64696E675F5F4C61A7 +S31580001120756E636820636F6E74726F6C20616E6417 +S3158000113020666C617420666F6F742073686966744C +S31580001140696E672028737461746963206F72206783 +S315800011506561722062617365642063616C63756C1E +S315800011606174696F6E295F5F43454C20466C61737D +S3158000117068202846424B432C204547542066726F90 +S315800011806D2046726F6E74204F322072657369735C +S3158000119074616E63652C20436F6F6C616E7420542E +S315800011A0656D70295F5F0000000000000000000090 +S315800011B012340003000128FC00026000000E269015 +S315800011C0526576204C696D697420537562726F75AD +S315800011D074696E6520486F6F6B00000012340003DF +S315800011E00000D1FC0000FC90000E24044D656D6F5C +S315800011F0727920526573657420537562726F757447 +S31580001200696E6520486F6F6B000000001234000322 +S3158000121000007CA40000209C000E1F4C5370656566 +S31580001220642044656E73697479204D6166205375B8 +S3158000123062726F7574696E6520486F6F6B0000000F +S3158000124012340003000543D0FFFF7D8EFFFF81949B +S3158000125043454C205369676E616C20486F6F6B0005 +S315800012601234000300012938000237DC000E2644C0 +S315800012704D61696E20537562726F7574696E6520F3 +S31580001280486F6F6B20504F4C4600000012340004AC +S31580001290000E1400000E2A94526F6D20486F6C6504 +S315800012A020436F64652050617463680000090009FB +S309800012B000090009A2 +S70500E000001A +S30DFF0020004432574437303143E7 +S30AFF0C9AF43C4A38410657 +S309FF0128FC0002600070 +S309FF00D1FC0000FC909E +S309FF007CA40000209C1B +S309FF0543D0FFFF7D8ED6 +S309FF012938000237DC80 +S315FF0E1400FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9 +S315FF0E1410FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9 +S315FF0E1420FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9 +S315FF0E1430FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9 +S315FF0E1440FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99 +S315FF0E1450FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89 +S315FF0E1460FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79 +S315FF0E1470FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69 +S315FF0E1480FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59 +S315FF0E1490FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49 +S315FF0E14A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39 +S315FF0E14B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29 +S315FF0E14C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19 +S315FF0E14D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09 +S315FF0E14E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 +S315FF0E14F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 +S315FF0E1500FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8 +S315FF0E1510FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8 +S315FF0E1520FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8 +S315FF0E1530FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8 +S315FF0E1540FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98 +S315FF0E1550FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88 +S315FF0E1560FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78 +S315FF0E1570FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68 +S315FF0E1580FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58 +S315FF0E1590FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48 +S315FF0E15A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38 +S315FF0E15B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28 +S315FF0E15C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18 +S315FF0E15D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08 +S315FF0E15E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8 +S315FF0E15F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8 +S315FF0E1600FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7 +S315FF0E1610FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7 +S315FF0E1620FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7 +S315FF0E1630FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7 +S315FF0E1640FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97 +S315FF0E1650FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87 +S315FF0E1660FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77 +S315FF0E1670FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67 +S315FF0E1680FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57 +S315FF0E1690FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47 +S315FF0E16A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37 +S315FF0E16B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27 +S315FF0E16C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17 +S315FF0E16D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07 +S315FF0E16E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7 +S315FF0E16F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7 +S315FF0E1700FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6 +S315FF0E1710FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6 +S315FF0E1720FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6 +S315FF0E1730FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6 +S315FF0E1740FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96 +S315FF0E1750FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86 +S315FF0E1760FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76 +S315FF0E1770FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66 +S315FF0E1780FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56 +S315FF0E1790FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46 +S315FF0E17A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36 +S315FF0E17B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26 +S315FF0E17C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16 +S315FF0E17D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06 +S315FF0E17E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 +S315FF0E17F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6 +S315FF0E1800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5 +S315FF0E1810FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5 +S315FF0E1820FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5 +S315FF0E1830FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5 +S315FF0E1840FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95 +S315FF0E1850FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85 +S315FF0E1860FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75 +S315FF0E1870FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65 +S315FF0E1880FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55 +S315FF0E1890FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45 +S315FF0E18A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35 +S315FF0E18B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25 +S315FF0E18C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15 +S315FF0E18D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05 +S315FF0E18E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5 +S315FF0E18F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5 +S315FF0E1900FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4 +S315FF0E1910FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4 +S315FF0E1920FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4 +S315FF0E1930FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4 +S315FF0E1940FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94 +S315FF0E1950FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84 +S315FF0E1960FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74 +S315FF0E1970FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64 +S315FF0E1980FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54 +S315FF0E1990FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44 +S315FF0E19A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34 +S315FF0E19B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24 +S315FF0E19C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14 +S315FF0E19D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04 +S315FF0E19E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4 +S315FF0E19F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4 +S315FF0E1A00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3 +S315FF0E1A10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3 +S315FF0E1A20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3 +S315FF0E1A30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3 +S315FF0E1A40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93 +S315FF0E1A50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83 +S315FF0E1A60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73 +S315FF0E1A70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63 +S315FF0E1A80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53 +S315FF0E1A90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43 +S315FF0E1AA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33 +S315FF0E1AB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23 +S315FF0E1AC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13 +S315FF0E1AD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03 +S315FF0E1AE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3 +S315FF0E1AF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3 +S315FF0E1B00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2 +S315FF0E1B10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2 +S315FF0E1B20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2 +S315FF0E1B30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2 +S315FF0E1B40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92 +S315FF0E1B50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82 +S315FF0E1B60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72 +S315FF0E1B70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62 +S315FF0E1B80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52 +S315FF0E1B90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42 +S315FF0E1BA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32 +S315FF0E1BB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22 +S315FF0E1BC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12 +S315FF0E1BD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02 +S315FF0E1BE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2 +S315FF0E1BF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2 +S315FF0E1C00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1 +S315FF0E1C10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1 +S315FF0E1C20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1 +S315FF0E1C30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1 +S315FF0E1C40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91 +S315FF0E1C50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81 +S315FF0E1C60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71 +S315FF0E1C70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61 +S315FF0E1C80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51 +S315FF0E1C90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 +S315FF0E1CA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31 +S315FF0E1CB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21 +S315FF0E1CC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11 +S315FF0E1CD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01 +S315FF0E1CE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1 +S315FF0E1CF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 +S315FF0E1D00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 +S315FF0E1D10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 +S315FF0E1D20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 +S315FF0E1D30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 +S315FF0E1D40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 +S315FF0E1D50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 +S315FF0E1D60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 +S315FF0E1D70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 +S315FF0E1D80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 +S315FF0E1D90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 +S315FF0E1DA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 +S315FF0E1DB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 +S315FF0E1DC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10 +S315FF0E1DD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 +S315FF0E1DE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 +S315FF0E1DF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 +S315FF0E1E00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF +S315FF0E1E10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF +S315FF0E1E20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF +S315FF0E1E30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F +S315FF0E1E40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F +S315FF0E1E50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F +S315FF0E1E60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F +S315FF0E1E70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F +S315FF0E1E80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F +S315FF0E1E90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F +S315FF0E1EA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F +S315FF0E1EB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F +S315FF0E1EC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F +S315FF0E1ED0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +S315FF0E1EE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF +S315FF0E1EF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF +S315FF0E1F00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE +S315FF0E1F10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE +S315FF0E1F20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE +S315FF0E1F30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E +S315FF0E1F40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E +S315FF0E1F50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E +S315FF0E1F60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E +S315FF0E1F70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E +S315FF0E1F80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E +S315FF0E1F90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E +S315FF0E1FA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E +S315FF0E1FB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E +S315FF0E1FC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E +S315FF0E1FD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE +S315FF0E1FE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE +S315FF0E1FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE +S315FF0E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD +S315FF0E2010FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD +S315FF0E2020FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD +S315FF0E2030FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D +S315FF0E2040FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D +S315FF0E2050FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D +S315FF0E2060FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D +S315FF0E2070FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D +S315FF0E2080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D +S315FF0E2090FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D +S315FF0E20A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D +S315FF0E20B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D +S315FF0E20C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D +S315FF0E20D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +S315FF0E20E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED +S315FF0E20F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD +S315FF0E2100FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC +S315FF0E2110FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC +S315FF0E2120FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC +S315FF0E2130FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C +S315FF0E2140FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C +S315FF0E2150FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C +S315FF0E2160FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C +S315FF0E2170FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C +S315FF0E2180FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C +S315FF0E2190FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C +S315FF0E21A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C +S315FF0E21B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C +S315FF0E21C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C +S315FF0E21D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC +S315FF0E21E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC +S315FF0E21F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC +S315FF0E2200FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB +S315FF0E2210FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB +S315FF0E2220FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB +S315FF0E2230FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B +S315FF0E2240FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B +S315FF0E2250FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B +S315FF0E2260FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B +S315FF0E2270FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B +S315FF0E2280FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B +S315FF0E2290FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B +S315FF0E22A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B +S315FF0E22B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B +S315FF0E22C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +S315FF0E22D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB +S315FF0E22E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB +S315FF0E22F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB +S315FF0E2300FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA +S315FF0E2310FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA +S315FF0E2320FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA +S315FF0E2330FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A +S315FF0E2340FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A +S315FF0E2350FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A +S315FF0E2360FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A +S315FF0E2370FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A +S315FF0E2380FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A +S315FF0E2390FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A +S315FF0E23A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A +S315FF0E23B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A +S315FF0E23C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A +S315FF0E23D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA +S315FF0E23E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA +S315FF0E23F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA +S315FF0E2400FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9 +S315FF0E2410FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9 +S315FF0E2420FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9 +S315FF0E2430FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99 +S315FF0E2440FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89 +S315FF0E2450FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79 +S315FF0E2460FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69 +S315FF0E2470FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59 +S315FF0E2480FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49 +S315FF0E2490FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39 +S315FF0E24A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29 +S315FF0E24B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19 +S315FF0E24C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09 +S315FF0E24D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 +S315FF0E24E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 +S315FF0E24F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9 +S315FF0E2500FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8 +S315FF0E2510FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8 +S315FF0E2520FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8 +S315FF0E2530FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98 +S315FF0E2540FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88 +S315FF0E2550FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78 +S315FF0E2560FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68 +S315FF0E2570FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58 +S315FF0E2580FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48 +S315FF0E2590FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38 +S315FF0E25A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28 +S315FF0E25B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18 +S315FF0E25C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08 +S315FF0E25D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8 +S315FF0E25E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8 +S315FF0E25F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8 +S315FF0E2600FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7 +S315FF0E2610FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7 +S315FF0E2620FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7 +S315FF0E2630FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97 +S315FF0E2640FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87 +S315FF0E2650FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77 +S315FF0E2660FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67 +S315FF0E2670FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57 +S315FF0E2680FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47 +S315FF0E2690FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37 +S315FF0E26A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27 +S315FF0E26B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17 +S315FF0E26C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07 +S315FF0E26D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7 +S315FF0E26E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7 +S315FF0E26F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7 +S315FF0E2700FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6 +S315FF0E2710FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6 +S315FF0E2720FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6 +S315FF0E2730FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96 +S315FF0E2740FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86 +S315FF0E2750FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76 +S315FF0E2760FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66 +S315FF0E2770FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56 +S315FF0E2780FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46 +S315FF0E2790FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36 +S315FF0E27A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26 +S315FF0E27B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16 +S315FF0E27C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06 +S315FF0E27D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 +S315FF0E27E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6 +S315FF0E27F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6 +S315FF0E2800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5 +S315FF0E2810FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5 +S315FF0E2820FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5 +S315FF0E2830FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95 +S315FF0E2840FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85 +S315FF0E2850FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75 +S315FF0E2860FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65 +S315FF0E2870FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55 +S315FF0E2880FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45 +S315FF0E2890FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35 +S315FF0E28A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25 +S315FF0E28B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15 +S315FF0E28C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05 +S315FF0E28D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5 +S315FF0E28E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5 +S315FF0E28F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5 +S315FF0E2900FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4 +S315FF0E2910FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4 +S315FF0E2920FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4 +S315FF0E2930FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94 +S315FF0E2940FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84 +S315FF0E2950FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74 +S315FF0E2960FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64 +S315FF0E2970FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54 +S315FF0E2980FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44 +S315FF0E2990FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34 +S315FF0E29A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24 +S315FF0E29B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14 +S315FF0E29C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04 +S315FF0E29D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4 +S315FF0E29E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4 +S315FF0E29F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4 +S315FF0E2A00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3 +S315FF0E2A10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3 +S315FF0E2A20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3 +S315FF0E2A30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93 +S315FF0E2A40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83 +S315FF0E2A50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73 +S315FF0E2A60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63 +S315FF0E2A70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53 +S315FF0E2A80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43 +S30AFF0E2A90FFFFFFFFFF33