Change to wifi AP mode. SSID "GR-PEACH_1", PSK "12345"
Dependencies: DhcpServer EthernetInterface FATFileSystem GR-PEACH_WlanBP3595AP GR-PEACH_video GraphicsFramework HttpServer_snapshot R_BSP mbed-rpc mbed-rtos mbed
Fork of GR-Boards_WebCamera by
Revision 0:c5448e500c90, committed 2015-08-21
- Comitter:
- dkato
- Date:
- Fri Aug 21 02:15:59 2015 +0000
- Child:
- 1:ebff3aeb40a0
- Commit message:
- first commit
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/EthernetInterface.lib Fri Aug 21 02:15:59 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/EthernetInterface/#2fc406e2553f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FATFileSystem.lib Fri Aug 21 02:15:59 2015 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/teams/mbed-official/code/FATFileSystem/#b3b3370574cf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/GR-PEACH_video.lib Fri Aug 21 02:15:59 2015 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/teams/Renesas/code/GR-PEACH_video/#853f5b7408a7
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/GraphicsFramework.lib Fri Aug 21 02:15:59 2015 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/teams/Renesas/code/GraphicsFramework/#37e1e6a45ced
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/HttpServer_snapshot.lib Fri Aug 21 02:15:59 2015 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/teams/Renesas/code/HttpServer_snapshot/#d9e6379eefac
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/R_BSP.lib Fri Aug 21 02:15:59 2015 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/teams/Renesas/code/R_BSP/#1390bfcb667c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/RomRamFileSystem.h Fri Aug 21 02:15:59 2015 +0000
@@ -0,0 +1,147 @@
+/*******************************************************************************
+* DISCLAIMER
+* This software is supplied by Renesas Electronics Corporation and is only
+* intended for use with Renesas products. No other uses are authorized. This
+* software is owned by Renesas Electronics Corporation and is protected under
+* all applicable laws, including copyright laws.
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+* Renesas reserves the right, without notice, to make changes to this software
+* and to discontinue the availability of this software. By using this software,
+* you agree to the additional terms and conditions found by accessing the
+* following link:
+* http://www.renesas.com/disclaimer*
+* Copyright (C) 2015 Renesas Electronics Corporation. All rights reserved.
+*******************************************************************************/
+#ifndef MBED_ROMRAMFILESYSTEM_H
+#define MBED_ROMRAMFILESYSTEM_H
+
+#include "FATFileSystem.h"
+
+#define NUM_OF_SECTORS (1000)
+#define SECTOR_SIZE (512)
+
+#if defined(TARGET_RZ_A1H)
+#define ROM_START_ADDRESS (0x18000000uL) // for GR-PEACH
+#define ROM_END_ADDRESS (0x1FFFFFFFuL) // for GR-PEACH
+#else
+#define ROM_START_ADDRESS (0xFFFFFFFFuL)
+#define ROM_END_ADDRESS (0xFFFFFFFFuL)
+#endif
+
+using namespace mbed;
+
+class RomRamFileSystem : public FATFileSystem {
+public:
+ // NUM_OF_SECTORS sectors, each 512 bytes
+ char *sectors[NUM_OF_SECTORS];
+
+ RomRamFileSystem(const char* name) : FATFileSystem(name) {
+ memset(sectors, 0, sizeof(sectors));
+ }
+
+ virtual ~RomRamFileSystem() {
+ for (int i = 0; i < NUM_OF_SECTORS; i++) {
+ if ((sectors[i] != NULL) && (isRomAddress(sectors[i]) == false)) {
+ free(sectors[i]);
+ }
+ }
+ }
+
+ // read a sector in to the buffer, return 0 if ok
+ virtual int disk_read(uint8_t *buffer, uint64_t sector, uint8_t count) {
+ for (uint64_t sec_no = sector; sec_no < (sector + count); sec_no++) {
+ if (sectors[sec_no] == NULL) {
+ // nothing allocated means sector is empty
+ memset(buffer, 0, SECTOR_SIZE);
+ } else {
+ memcpy(buffer, sectors[sec_no], SECTOR_SIZE);
+ }
+ buffer += SECTOR_SIZE;
+ }
+ return 0;
+ }
+
+ // write a sector from the buffer, return 0 if ok
+ virtual int disk_write(const uint8_t *buffer, uint64_t sector, uint8_t count) {
+ for (uint64_t sec_no = sector; sec_no < (sector + count); sec_no++) {
+ bool all_zero = true;
+ for (int i = 0; i < SECTOR_SIZE; i++) {
+ if (buffer[i] != NULL) {
+ all_zero = false;
+ break;
+ }
+ }
+ if (all_zero != false) {
+ if (sectors[sec_no] != NULL) {
+ if (isRomAddress(sectors[sec_no]) == false) {
+ free(sectors[sec_no]);
+ }
+ sectors[sec_no] = NULL;
+ }
+ return 0;
+ }
+ // allocate a sector if needed, and write
+ if (isRomAddress((char *)buffer) == false) {
+ if ((sectors[sec_no] == NULL) || (isRomAddress(sectors[sec_no]) != false)) {
+ char *sec = (char*)malloc(SECTOR_SIZE);
+ if (sec == NULL) {
+ return 1; // out of memory
+ }
+ sectors[sec_no] = sec;
+ }
+ memcpy(sectors[sec_no], buffer, SECTOR_SIZE);
+ } else {
+ if (isRomAddress(sectors[sec_no]) == false) {
+ free(sectors[sec_no]);
+ }
+ sectors[sec_no] = (char *)buffer;
+ }
+ buffer += SECTOR_SIZE;
+ }
+ return 0;
+ }
+
+ // return the number of sectors
+ virtual uint64_t disk_sectors() {
+ return NUM_OF_SECTORS;
+ }
+
+ void dump(FILE *fp) {
+ for (int i = 0; i < NUM_OF_SECTORS; i++) {
+ fwrite(§ors[i], sizeof(int), 1, fp);
+ if (sectors[i] != NULL) {
+ fwrite(sectors[i], sizeof(char), SECTOR_SIZE, fp);
+ }
+ }
+ }
+
+ void load(FILE *fp) {
+ int sec_info = 0;
+ for (int i = 0; i < NUM_OF_SECTORS; i++) {
+ fread(&sec_info, sizeof(int), 1, fp);
+ if (sec_info != 0) {
+ char *sec = (char *)malloc(SECTOR_SIZE);
+ fread(sec, sizeof(char), SECTOR_SIZE, fp);
+ sectors[i] = sec;
+ }
+ }
+ }
+
+private:
+ bool isRomAddress(char * address) {
+ if (((uint32_t)address >= ROM_START_ADDRESS)
+ && ((uint32_t)address <= (ROM_END_ADDRESS - SECTOR_SIZE + 1))) {
+ return true;
+ }
+ return false;
+ }
+};
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/file_table.h Fri Aug 21 02:15:59 2015 +0000
@@ -0,0 +1,661 @@
+
+static const char camaera_js_tbl[] = {
+ 0x76,0x61,0x72,0x20,0x69,0x6D,0x61,0x67,0x65,0x4E,0x72,0x20,0x3D,0x20,0x30,0x3B
+,0x20,0x2F,0x2F,0x20,0x53,0x65,0x72,0x69,0x61,0x6C,0x20,0x6E,0x75,0x6D,0x62,0x65
+,0x72,0x20,0x6F,0x66,0x20,0x63,0x75,0x72,0x72,0x65,0x6E,0x74,0x20,0x69,0x6D,0x61
+,0x67,0x65,0x0D,0x0A,0x76,0x61,0x72,0x20,0x66,0x69,0x6E,0x69,0x73,0x68,0x65,0x64
+,0x20,0x3D,0x20,0x6E,0x65,0x77,0x20,0x41,0x72,0x72,0x61,0x79,0x28,0x29,0x3B,0x20
+,0x2F,0x2F,0x20,0x52,0x65,0x66,0x65,0x72,0x65,0x6E,0x63,0x65,0x73,0x20,0x74,0x6F
+,0x20,0x69,0x6D,0x67,0x20,0x6F,0x62,0x6A,0x65,0x63,0x74,0x73,0x20,0x77,0x68,0x69
+,0x63,0x68,0x20,0x68,0x61,0x76,0x65,0x20,0x66,0x69,0x6E,0x69,0x73,0x68,0x65,0x64
+,0x20,0x64,0x6F,0x77,0x6E,0x6C,0x6F,0x61,0x64,0x69,0x6E,0x67,0x0D,0x0A,0x0D,0x0A
+,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x20,0x63,0x72,0x65,0x61,0x74,0x65,0x49
+,0x6D,0x61,0x67,0x65,0x4C,0x61,0x79,0x65,0x72,0x28,0x29,0x20,0x7B,0x0D,0x0A,0x20
+,0x20,0x76,0x61,0x72,0x20,0x69,0x6D,0x61,0x67,0x65,0x20,0x3D,0x20,0x6E,0x65,0x77
+,0x20,0x49,0x6D,0x61,0x67,0x65,0x28,0x29,0x3B,0x0D,0x0A,0x0D,0x0A,0x20,0x20,0x69
+,0x6D,0x61,0x67,0x65,0x2E,0x73,0x72,0x63,0x20,0x3D,0x20,0x22,0x63,0x61,0x6D,0x65
+,0x72,0x61,0x2F,0x22,0x20,0x2B,0x20,0x28,0x2B,0x2B,0x69,0x6D,0x61,0x67,0x65,0x4E
+,0x72,0x29,0x3B,0x0D,0x0A,0x20,0x20,0x69,0x6D,0x61,0x67,0x65,0x2E,0x73,0x74,0x79
+,0x6C,0x65,0x2E,0x70,0x6F,0x73,0x69,0x74,0x69,0x6F,0x6E,0x20,0x3D,0x20,0x22,0x61
+,0x62,0x73,0x6F,0x6C,0x75,0x74,0x65,0x22,0x3B,0x0D,0x0A,0x20,0x20,0x69,0x6D,0x61
+,0x67,0x65,0x2E,0x73,0x74,0x79,0x6C,0x65,0x2E,0x7A,0x49,0x6E,0x64,0x65,0x78,0x20
+,0x3D,0x20,0x2D,0x31,0x3B,0x0D,0x0A,0x20,0x20,0x69,0x6D,0x61,0x67,0x65,0x2E,0x6F
+,0x6E,0x6C,0x6F,0x61,0x64,0x20,0x3D,0x20,0x69,0x6D,0x61,0x67,0x65,0x4F,0x6E,0x6C
+,0x6F,0x61,0x64,0x3B,0x0D,0x0A,0x20,0x20,0x69,0x6D,0x61,0x67,0x65,0x2E,0x6F,0x6E
+,0x65,0x72,0x72,0x6F,0x72,0x20,0x3D,0x20,0x63,0x72,0x65,0x61,0x74,0x65,0x49,0x6D
+,0x61,0x67,0x65,0x4C,0x61,0x79,0x65,0x72,0x3B,0x0D,0x0A,0x0D,0x0A,0x20,0x20,0x76
+,0x61,0x72,0x20,0x77,0x65,0x62,0x63,0x61,0x6D,0x20,0x3D,0x20,0x64,0x6F,0x63,0x75
+,0x6D,0x65,0x6E,0x74,0x2E,0x67,0x65,0x74,0x45,0x6C,0x65,0x6D,0x65,0x6E,0x74,0x42
+,0x79,0x49,0x64,0x28,0x22,0x77,0x65,0x62,0x63,0x61,0x6D,0x22,0x29,0x3B,0x0D,0x0A
+,0x20,0x20,0x77,0x65,0x62,0x63,0x61,0x6D,0x2E,0x69,0x6E,0x73,0x65,0x72,0x74,0x42
+,0x65,0x66,0x6F,0x72,0x65,0x28,0x69,0x6D,0x61,0x67,0x65,0x2C,0x20,0x77,0x65,0x62
+,0x63,0x61,0x6D,0x2E,0x66,0x69,0x72,0x73,0x74,0x43,0x68,0x69,0x6C,0x64,0x29,0x3B
+,0x0D,0x0A,0x7D,0x0D,0x0A,0x0D,0x0A,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x20
+,0x69,0x6D,0x61,0x67,0x65,0x4F,0x6E,0x6C,0x6F,0x61,0x64,0x28,0x29,0x20,0x7B,0x0D
+,0x0A,0x20,0x20,0x74,0x68,0x69,0x73,0x2E,0x73,0x74,0x79,0x6C,0x65,0x2E,0x7A,0x49
+,0x6E,0x64,0x65,0x78,0x20,0x3D,0x20,0x69,0x6D,0x61,0x67,0x65,0x4E,0x72,0x3B,0x0D
+,0x0A,0x20,0x20,0x77,0x68,0x69,0x6C,0x65,0x20,0x28,0x31,0x20,0x3C,0x20,0x66,0x69
+,0x6E,0x69,0x73,0x68,0x65,0x64,0x2E,0x6C,0x65,0x6E,0x67,0x74,0x68,0x29,0x20,0x7B
+,0x0D,0x0A,0x20,0x20,0x20,0x20,0x76,0x61,0x72,0x20,0x64,0x65,0x6C,0x20,0x3D,0x20
+,0x66,0x69,0x6E,0x69,0x73,0x68,0x65,0x64,0x2E,0x73,0x68,0x69,0x66,0x74,0x28,0x29
+,0x3B,0x0D,0x0A,0x20,0x20,0x20,0x20,0x64,0x65,0x6C,0x2E,0x70,0x61,0x72,0x65,0x6E
+,0x74,0x4E,0x6F,0x64,0x65,0x2E,0x72,0x65,0x6D,0x6F,0x76,0x65,0x43,0x68,0x69,0x6C
+,0x64,0x28,0x64,0x65,0x6C,0x29,0x3B,0x0D,0x0A,0x20,0x20,0x7D,0x0D,0x0A,0x20,0x20
+,0x66,0x69,0x6E,0x69,0x73,0x68,0x65,0x64,0x2E,0x70,0x75,0x73,0x68,0x28,0x74,0x68
+,0x69,0x73,0x29,0x3B,0x0D,0x0A,0x20,0x20,0x74,0x69,0x6D,0x65,0x72,0x49,0x44,0x20
+,0x3D,0x20,0x73,0x65,0x74,0x54,0x69,0x6D,0x65,0x6F,0x75,0x74,0x28,0x66,0x75,0x6E
+,0x63,0x74,0x69,0x6F,0x6E,0x28,0x29,0x7B,0x20,0x63,0x72,0x65,0x61,0x74,0x65,0x49
+,0x6D,0x61,0x67,0x65,0x4C,0x61,0x79,0x65,0x72,0x28,0x29,0x20,0x7D,0x2C,0x20,0x64
+,0x6F,0x63,0x75,0x6D,0x65,0x6E,0x74,0x2E,0x46,0x31,0x2E,0x77,0x61,0x69,0x74,0x74
+,0x69,0x6D,0x65,0x2E,0x76,0x61,0x6C,0x75,0x65,0x29,0x3B,0x0D,0x0A,0x7D,0x0D,0x0A
+};
+
+static const char camera_htm_tbl[] = {
+ 0x3C,0x68,0x74,0x6D,0x6C,0x3E,0x0D,0x0A,0x3C,0x68,0x65,0x61,0x64,0x3E,0x0D,0x0A
+,0x3C,0x74,0x69,0x74,0x6C,0x65,0x3E,0x63,0x61,0x6D,0x65,0x72,0x61,0x3C,0x2F,0x74
+,0x69,0x74,0x6C,0x65,0x3E,0x0D,0x0A,0x3C,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x74
+,0x79,0x70,0x65,0x3D,0x22,0x74,0x65,0x78,0x74,0x2F,0x6A,0x61,0x76,0x61,0x73,0x63
+,0x72,0x69,0x70,0x74,0x22,0x20,0x73,0x72,0x63,0x3D,0x22,0x63,0x61,0x6D,0x65,0x72
+,0x61,0x2E,0x6A,0x73,0x22,0x20,0x63,0x68,0x61,0x72,0x73,0x65,0x74,0x3D,0x22,0x75
+,0x74,0x66,0x2D,0x38,0x22,0x3E,0x3C,0x2F,0x73,0x63,0x72,0x69,0x70,0x74,0x3E,0x0D
+,0x0A,0x3C,0x73,0x74,0x79,0x6C,0x65,0x20,0x74,0x79,0x70,0x65,0x3D,0x22,0x74,0x65
+,0x78,0x74,0x2F,0x63,0x73,0x73,0x22,0x3E,0x0D,0x0A,0x23,0x77,0x65,0x62,0x63,0x61
+,0x6D,0x20,0x69,0x6D,0x67,0x20,0x7B,0x0D,0x0A,0x09,0x6C,0x65,0x66,0x74,0x3A,0x20
+,0x30,0x3B,0x0D,0x0A,0x09,0x72,0x69,0x67,0x68,0x74,0x3A,0x20,0x30,0x3B,0x0D,0x0A
+,0x09,0x6D,0x61,0x78,0x2D,0x77,0x69,0x64,0x74,0x68,0x3A,0x20,0x36,0x34,0x30,0x70
+,0x78,0x3B,0x20,0x0D,0x0A,0x09,0x77,0x69,0x64,0x74,0x68,0x3A,0x20,0x31,0x30,0x30
+,0x25,0x3B,0x0D,0x0A,0x09,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x20,0x61,0x75,0x74
+,0x6F,0x3B,0x20,0x0D,0x0A,0x7D,0x0D,0x0A,0x3C,0x2F,0x73,0x74,0x79,0x6C,0x65,0x3E
+,0x0D,0x0A,0x3C,0x2F,0x68,0x65,0x61,0x64,0x3E,0x0D,0x0A,0x3C,0x62,0x6F,0x64,0x79
+,0x3E,0x0D,0x0A,0x3C,0x62,0x6F,0x64,0x79,0x20,0x6F,0x6E,0x6C,0x6F,0x61,0x64,0x3D
+,0x22,0x63,0x72,0x65,0x61,0x74,0x65,0x49,0x6D,0x61,0x67,0x65,0x4C,0x61,0x79,0x65
+,0x72,0x28,0x29,0x3B,0x22,0x3E,0x0D,0x0A,0x3C,0x66,0x6F,0x72,0x6D,0x20,0x61,0x63
+,0x74,0x69,0x6F,0x6E,0x3D,0x22,0x23,0x22,0x20,0x6E,0x61,0x6D,0x65,0x3D,0x22,0x46
+,0x31,0x22,0x3E,0x0D,0x0A,0x57,0x61,0x69,0x74,0x20,0x74,0x69,0x6D,0x65,0x20,0x3C
+,0x69,0x6E,0x70,0x75,0x74,0x20,0x74,0x79,0x70,0x65,0x3D,0x22,0x72,0x61,0x6E,0x67
+,0x65,0x22,0x20,0x6E,0x61,0x6D,0x65,0x3D,0x22,0x77,0x61,0x69,0x74,0x74,0x69,0x6D
+,0x65,0x22,0x20,0x76,0x61,0x6C,0x75,0x65,0x3D,0x22,0x35,0x30,0x30,0x22,0x20,0x6D
+,0x61,0x78,0x3D,0x22,0x31,0x30,0x30,0x30,0x22,0x20,0x73,0x74,0x65,0x70,0x3D,0x22
+,0x35,0x30,0x22,0x3E,0x20,0x5B,0x6D,0x73,0x5D,0x0D,0x0A,0x3C,0x2F,0x66,0x6F,0x72
+,0x6D,0x3E,0x0D,0x0A,0x3C,0x64,0x69,0x76,0x20,0x69,0x64,0x3D,0x22,0x77,0x65,0x62
+,0x63,0x61,0x6D,0x22,0x3E,0x3C,0x6E,0x6F,0x73,0x63,0x72,0x69,0x70,0x74,0x3E,0x3C
+,0x69,0x6D,0x67,0x20,0x73,0x72,0x63,0x3D,0x22,0x63,0x61,0x6D,0x65,0x72,0x61,0x2F
+,0x30,0x22,0x20,0x2F,0x3E,0x3C,0x2F,0x6E,0x6F,0x73,0x63,0x72,0x69,0x70,0x74,0x3E
+,0x3C,0x2F,0x64,0x69,0x76,0x3E,0x0D,0x0A,0x3C,0x2F,0x62,0x6F,0x64,0x79,0x3E,0x0D
+,0x0A,0x3C,0x2F,0x68,0x74,0x6D,0x6C,0x3E,0x0D,0x0A
+};
+
+static const char mbedrpc_js_tbl[] = {
+ 0x2F,0x2F,0x20,0x6D,0x62,0x65,0x64,0x52,0x50,0x43,0x20,0x4A,0x61,0x76,0x61,0x73
+,0x63,0x72,0x69,0x70,0x74,0x20,0x49,0x6E,0x74,0x65,0x72,0x66,0x61,0x63,0x65,0x20
+,0x75,0x73,0x69,0x6E,0x67,0x20,0x48,0x54,0x54,0x50,0x0D,0x0A,0x2F,0x2F,0x20,0x73
+,0x66,0x6F,0x72,0x64,0x20,0x61,0x6E,0x64,0x20,0x4D,0x20,0x57,0x61,0x6C,0x6B,0x65
+,0x72,0x0D,0x0A,0x2F,0x2F,0x20,0x41,0x20,0x6A,0x61,0x76,0x61,0x73,0x63,0x72,0x69
+,0x70,0x74,0x20,0x69,0x6E,0x74,0x65,0x72,0x66,0x61,0x63,0x65,0x20,0x66,0x6F,0x72
+,0x20,0x74,0x61,0x6C,0x6B,0x69,0x6E,0x67,0x20,0x74,0x6F,0x20,0x6D,0x62,0x65,0x64
+,0x20,0x72,0x70,0x63,0x20,0x6F,0x76,0x65,0x72,0x20,0x68,0x74,0x74,0x70,0x0D,0x0A
+,0x2F,0x2F,0x0D,0x0A,0x2F,0x2F,0x43,0x6F,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20
+,0x28,0x63,0x29,0x20,0x32,0x30,0x31,0x30,0x20,0x41,0x52,0x4D,0x20,0x4C,0x74,0x64
+,0x0D,0x0A,0x2F,0x2F,0x20,0x0D,0x0A,0x2F,0x2F,0x50,0x65,0x72,0x6D,0x69,0x73,0x73
+,0x69,0x6F,0x6E,0x20,0x69,0x73,0x20,0x68,0x65,0x72,0x65,0x62,0x79,0x20,0x67,0x72
+,0x61,0x6E,0x74,0x65,0x64,0x2C,0x20,0x66,0x72,0x65,0x65,0x20,0x6F,0x66,0x20,0x63
+,0x68,0x61,0x72,0x67,0x65,0x2C,0x20,0x74,0x6F,0x20,0x61,0x6E,0x79,0x20,0x70,0x65
+,0x72,0x73,0x6F,0x6E,0x20,0x6F,0x62,0x74,0x61,0x69,0x6E,0x69,0x6E,0x67,0x20,0x61
+,0x20,0x63,0x6F,0x70,0x79,0x0D,0x0A,0x2F,0x2F,0x6F,0x66,0x20,0x74,0x68,0x69,0x73
+,0x20,0x73,0x6F,0x66,0x74,0x77,0x61,0x72,0x65,0x20,0x61,0x6E,0x64,0x20,0x61,0x73
+,0x73,0x6F,0x63,0x69,0x61,0x74,0x65,0x64,0x20,0x64,0x6F,0x63,0x75,0x6D,0x65,0x6E
+,0x74,0x61,0x74,0x69,0x6F,0x6E,0x20,0x66,0x69,0x6C,0x65,0x73,0x20,0x28,0x74,0x68
+,0x65,0x20,0x22,0x53,0x6F,0x66,0x74,0x77,0x61,0x72,0x65,0x22,0x29,0x2C,0x20,0x74
+,0x6F,0x20,0x64,0x65,0x61,0x6C,0x0D,0x0A,0x2F,0x2F,0x69,0x6E,0x20,0x74,0x68,0x65
+,0x20,0x53,0x6F,0x66,0x74,0x77,0x61,0x72,0x65,0x20,0x77,0x69,0x74,0x68,0x6F,0x75
+,0x74,0x20,0x72,0x65,0x73,0x74,0x72,0x69,0x63,0x74,0x69,0x6F,0x6E,0x2C,0x20,0x69
+,0x6E,0x63,0x6C,0x75,0x64,0x69,0x6E,0x67,0x20,0x77,0x69,0x74,0x68,0x6F,0x75,0x74
+,0x20,0x6C,0x69,0x6D,0x69,0x74,0x61,0x74,0x69,0x6F,0x6E,0x20,0x74,0x68,0x65,0x20
+,0x72,0x69,0x67,0x68,0x74,0x73,0x0D,0x0A,0x2F,0x2F,0x74,0x6F,0x20,0x75,0x73,0x65
+,0x2C,0x20,0x63,0x6F,0x70,0x79,0x2C,0x20,0x6D,0x6F,0x64,0x69,0x66,0x79,0x2C,0x20
+,0x6D,0x65,0x72,0x67,0x65,0x2C,0x20,0x70,0x75,0x62,0x6C,0x69,0x73,0x68,0x2C,0x20
+,0x64,0x69,0x73,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x2C,0x20,0x73,0x75,0x62,0x6C
+,0x69,0x63,0x65,0x6E,0x73,0x65,0x2C,0x20,0x61,0x6E,0x64,0x2F,0x6F,0x72,0x20,0x73
+,0x65,0x6C,0x6C,0x0D,0x0A,0x2F,0x2F,0x63,0x6F,0x70,0x69,0x65,0x73,0x20,0x6F,0x66
+,0x20,0x74,0x68,0x65,0x20,0x53,0x6F,0x66,0x74,0x77,0x61,0x72,0x65,0x2C,0x20,0x61
+,0x6E,0x64,0x20,0x74,0x6F,0x20,0x70,0x65,0x72,0x6D,0x69,0x74,0x20,0x70,0x65,0x72
+,0x73,0x6F,0x6E,0x73,0x20,0x74,0x6F,0x20,0x77,0x68,0x6F,0x6D,0x20,0x74,0x68,0x65
+,0x20,0x53,0x6F,0x66,0x74,0x77,0x61,0x72,0x65,0x20,0x69,0x73,0x0D,0x0A,0x2F,0x2F
+,0x66,0x75,0x72,0x6E,0x69,0x73,0x68,0x65,0x64,0x20,0x74,0x6F,0x20,0x64,0x6F,0x20
+,0x73,0x6F,0x2C,0x20,0x73,0x75,0x62,0x6A,0x65,0x63,0x74,0x20,0x74,0x6F,0x20,0x74
+,0x68,0x65,0x20,0x66,0x6F,0x6C,0x6C,0x6F,0x77,0x69,0x6E,0x67,0x20,0x63,0x6F,0x6E
+,0x64,0x69,0x74,0x69,0x6F,0x6E,0x73,0x3A,0x0D,0x0A,0x2F,0x2F,0x20,0x0D,0x0A,0x2F
+,0x2F,0x54,0x68,0x65,0x20,0x61,0x62,0x6F,0x76,0x65,0x20,0x63,0x6F,0x70,0x79,0x72
+,0x69,0x67,0x68,0x74,0x20,0x6E,0x6F,0x74,0x69,0x63,0x65,0x20,0x61,0x6E,0x64,0x20
+,0x74,0x68,0x69,0x73,0x20,0x70,0x65,0x72,0x6D,0x69,0x73,0x73,0x69,0x6F,0x6E,0x20
+,0x6E,0x6F,0x74,0x69,0x63,0x65,0x20,0x73,0x68,0x61,0x6C,0x6C,0x20,0x62,0x65,0x20
+,0x69,0x6E,0x63,0x6C,0x75,0x64,0x65,0x64,0x20,0x69,0x6E,0x0D,0x0A,0x2F,0x2F,0x61
+,0x6C,0x6C,0x20,0x63,0x6F,0x70,0x69,0x65,0x73,0x20,0x6F,0x72,0x20,0x73,0x75,0x62
+,0x73,0x74,0x61,0x6E,0x74,0x69,0x61,0x6C,0x20,0x70,0x6F,0x72,0x74,0x69,0x6F,0x6E
+,0x73,0x20,0x6F,0x66,0x20,0x74,0x68,0x65,0x20,0x53,0x6F,0x66,0x74,0x77,0x61,0x72
+,0x65,0x2E,0x0D,0x0A,0x2F,0x2F,0x20,0x0D,0x0A,0x2F,0x2F,0x54,0x48,0x45,0x20,0x53
+,0x4F,0x46,0x54,0x57,0x41,0x52,0x45,0x20,0x49,0x53,0x20,0x50,0x52,0x4F,0x56,0x49
+,0x44,0x45,0x44,0x20,0x22,0x41,0x53,0x20,0x49,0x53,0x22,0x2C,0x20,0x57,0x49,0x54
+,0x48,0x4F,0x55,0x54,0x20,0x57,0x41,0x52,0x52,0x41,0x4E,0x54,0x59,0x20,0x4F,0x46
+,0x20,0x41,0x4E,0x59,0x20,0x4B,0x49,0x4E,0x44,0x2C,0x20,0x45,0x58,0x50,0x52,0x45
+,0x53,0x53,0x20,0x4F,0x52,0x0D,0x0A,0x2F,0x2F,0x49,0x4D,0x50,0x4C,0x49,0x45,0x44
+,0x2C,0x20,0x49,0x4E,0x43,0x4C,0x55,0x44,0x49,0x4E,0x47,0x20,0x42,0x55,0x54,0x20
+,0x4E,0x4F,0x54,0x20,0x4C,0x49,0x4D,0x49,0x54,0x45,0x44,0x20,0x54,0x4F,0x20,0x54
+,0x48,0x45,0x20,0x57,0x41,0x52,0x52,0x41,0x4E,0x54,0x49,0x45,0x53,0x20,0x4F,0x46
+,0x20,0x4D,0x45,0x52,0x43,0x48,0x41,0x4E,0x54,0x41,0x42,0x49,0x4C,0x49,0x54,0x59
+,0x2C,0x0D,0x0A,0x2F,0x2F,0x46,0x49,0x54,0x4E,0x45,0x53,0x53,0x20,0x46,0x4F,0x52
+,0x20,0x41,0x20,0x50,0x41,0x52,0x54,0x49,0x43,0x55,0x4C,0x41,0x52,0x20,0x50,0x55
+,0x52,0x50,0x4F,0x53,0x45,0x20,0x41,0x4E,0x44,0x20,0x4E,0x4F,0x4E,0x49,0x4E,0x46
+,0x52,0x49,0x4E,0x47,0x45,0x4D,0x45,0x4E,0x54,0x2E,0x20,0x49,0x4E,0x20,0x4E,0x4F
+,0x20,0x45,0x56,0x45,0x4E,0x54,0x20,0x53,0x48,0x41,0x4C,0x4C,0x20,0x54,0x48,0x45
+,0x0D,0x0A,0x2F,0x2F,0x41,0x55,0x54,0x48,0x4F,0x52,0x53,0x20,0x4F,0x52,0x20,0x43
+,0x4F,0x50,0x59,0x52,0x49,0x47,0x48,0x54,0x20,0x48,0x4F,0x4C,0x44,0x45,0x52,0x53
+,0x20,0x42,0x45,0x20,0x4C,0x49,0x41,0x42,0x4C,0x45,0x20,0x46,0x4F,0x52,0x20,0x41
+,0x4E,0x59,0x20,0x43,0x4C,0x41,0x49,0x4D,0x2C,0x20,0x44,0x41,0x4D,0x41,0x47,0x45
+,0x53,0x20,0x4F,0x52,0x20,0x4F,0x54,0x48,0x45,0x52,0x0D,0x0A,0x2F,0x2F,0x4C,0x49
+,0x41,0x42,0x49,0x4C,0x49,0x54,0x59,0x2C,0x20,0x57,0x48,0x45,0x54,0x48,0x45,0x52
+,0x20,0x49,0x4E,0x20,0x41,0x4E,0x20,0x41,0x43,0x54,0x49,0x4F,0x4E,0x20,0x4F,0x46
+,0x20,0x43,0x4F,0x4E,0x54,0x52,0x41,0x43,0x54,0x2C,0x20,0x54,0x4F,0x52,0x54,0x20
+,0x4F,0x52,0x20,0x4F,0x54,0x48,0x45,0x52,0x57,0x49,0x53,0x45,0x2C,0x20,0x41,0x52
+,0x49,0x53,0x49,0x4E,0x47,0x20,0x46,0x52,0x4F,0x4D,0x2C,0x0D,0x0A,0x2F,0x2F,0x4F
+,0x55,0x54,0x20,0x4F,0x46,0x20,0x4F,0x52,0x20,0x49,0x4E,0x20,0x43,0x4F,0x4E,0x4E
+,0x45,0x43,0x54,0x49,0x4F,0x4E,0x20,0x57,0x49,0x54,0x48,0x20,0x54,0x48,0x45,0x20
+,0x53,0x4F,0x46,0x54,0x57,0x41,0x52,0x45,0x20,0x4F,0x52,0x20,0x54,0x48,0x45,0x20
+,0x55,0x53,0x45,0x20,0x4F,0x52,0x20,0x4F,0x54,0x48,0x45,0x52,0x20,0x44,0x45,0x41
+,0x4C,0x49,0x4E,0x47,0x53,0x20,0x49,0x4E,0x0D,0x0A,0x2F,0x2F,0x54,0x48,0x45,0x20
+,0x53,0x4F,0x46,0x54,0x57,0x41,0x52,0x45,0x2E,0x0D,0x0A,0x0D,0x0A,0x0D,0x0A,0x2F
+,0x2F,0x54,0x72,0x61,0x6E,0x73,0x70,0x6F,0x72,0x74,0x20,0x4D,0x65,0x63,0x68,0x61
+,0x6E,0x69,0x73,0x6D,0x73,0x20,0x20,0x20,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D
+,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D
+,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D
+,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D
+,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x0D,0x0A,0x0D,0x0A,0x66,0x75,0x6E,0x63,0x74
+,0x69,0x6F,0x6E,0x20,0x70,0x6F,0x73,0x74,0x28,0x75,0x72,0x6C,0x29,0x20,0x7B,0x0D
+,0x0A,0x20,0x20,0x20,0x20,0x68,0x74,0x74,0x70,0x20,0x3D,0x20,0x28,0x77,0x69,0x6E
+,0x64,0x6F,0x77,0x2E,0x58,0x4D,0x4C,0x48,0x74,0x74,0x70,0x52,0x65,0x71,0x75,0x65
+,0x73,0x74,0x29,0x20,0x3F,0x20,0x6E,0x65,0x77,0x20,0x58,0x4D,0x4C,0x48,0x74,0x74
+,0x70,0x52,0x65,0x71,0x75,0x65,0x73,0x74,0x28,0x29,0x20,0x3A,0x20,0x6E,0x65,0x77
+,0x20,0x41,0x63,0x74,0x69,0x76,0x65,0x58,0x4F,0x62,0x6A,0x65,0x63,0x74,0x28,0x22
+,0x4D,0x69,0x63,0x72,0x6F,0x73,0x6F,0x66,0x74,0x2E,0x58,0x4D,0x4C,0x48,0x54,0x54
+,0x50,0x22,0x29,0x3B,0x0D,0x0A,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x21,0x68,0x74
+,0x74,0x70,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6E,0x20,0x66,0x61,0x6C,0x73,0x65
+,0x3B,0x0D,0x0A,0x20,0x20,0x20,0x20,0x68,0x74,0x74,0x70,0x2E,0x6F,0x70,0x65,0x6E
+,0x28,0x22,0x47,0x45,0x54,0x22,0x2C,0x20,0x75,0x72,0x6C,0x2C,0x20,0x66,0x61,0x6C
+,0x73,0x65,0x29,0x3B,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
+,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
+,0x20,0x0D,0x0A,0x20,0x20,0x20,0x20,0x68,0x74,0x74,0x70,0x2E,0x73,0x65,0x6E,0x64
+,0x28,0x6E,0x75,0x6C,0x6C,0x29,0x3B,0x20,0x20,0x20,0x0D,0x0A,0x20,0x20,0x20,0x20
+,0x72,0x65,0x74,0x75,0x72,0x6E,0x20,0x68,0x74,0x74,0x70,0x2E,0x72,0x65,0x73,0x70
+,0x6F,0x6E,0x73,0x65,0x54,0x65,0x78,0x74,0x3B,0x0D,0x0A,0x09,0x20,0x20,0x20,0x20
+,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
+,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0D,0x0A
+,0x7D,0x0D,0x0A,0x0D,0x0A,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x20,0x6D,0x62
+,0x65,0x64,0x28,0x29,0x7B,0x0D,0x0A,0x09,0x2F,0x2F,0x4E,0x6F,0x20,0x61,0x63,0x74
+,0x69,0x6F,0x6E,0x20,0x6E,0x65,0x65,0x64,0x73,0x20,0x74,0x6F,0x20,0x62,0x65,0x20
+,0x74,0x61,0x6B,0x65,0x6E,0x0D,0x0A,0x7D,0x0D,0x0A,0x0D,0x0A,0x6D,0x62,0x65,0x64
+,0x2E,0x70,0x72,0x6F,0x74,0x6F,0x74,0x79,0x70,0x65,0x2E,0x72,0x70,0x63,0x20,0x3D
+,0x20,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x28,0x6F,0x62,0x6A,0x65,0x63,0x74
+,0x2C,0x20,0x6D,0x65,0x74,0x68,0x6F,0x64,0x2C,0x20,0x61,0x72,0x67,0x75,0x6D,0x65
+,0x6E,0x74,0x73,0x29,0x7B,0x0D,0x0A,0x20,0x20,0x20,0x20,0x2F,0x2F,0x54,0x68,0x69
+,0x73,0x20,0x73,0x68,0x6F,0x75,0x6C,0x64,0x20,0x62,0x65,0x20,0x6F,0x76,0x65,0x72
+,0x72,0x69,0x64,0x64,0x65,0x6E,0x20,0x62,0x79,0x20,0x74,0x68,0x65,0x20,0x61,0x20
+,0x74,0x72,0x61,0x6E,0x73,0x70,0x6F,0x72,0x74,0x20,0x6D,0x65,0x63,0x68,0x61,0x6E
+,0x69,0x73,0x6D,0x0D,0x0A,0x7D,0x0D,0x0A,0x0D,0x0A,0x48,0x54,0x54,0x50,0x52,0x50
+,0x43,0x2E,0x70,0x72,0x6F,0x74,0x6F,0x74,0x79,0x70,0x65,0x20,0x3D,0x20,0x6E,0x65
+,0x77,0x20,0x6D,0x62,0x65,0x64,0x28,0x29,0x3B,0x0D,0x0A,0x48,0x54,0x54,0x50,0x52
+,0x50,0x43,0x2E,0x70,0x72,0x6F,0x74,0x6F,0x74,0x79,0x70,0x65,0x2E,0x63,0x6F,0x6E
+,0x73,0x74,0x72,0x75,0x63,0x74,0x6F,0x72,0x20,0x3D,0x20,0x48,0x54,0x54,0x50,0x52
+,0x50,0x43,0x0D,0x0A,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x20,0x48,0x54,0x54
+,0x50,0x52,0x50,0x43,0x28,0x29,0x7B,0x0D,0x0A,0x09,0x2F,0x2F,0x75,0x6E,0x6C,0x69
+,0x6B,0x65,0x20,0x6F,0x74,0x68,0x65,0x72,0x20,0x6C,0x61,0x6E,0x67,0x75,0x61,0x67
+,0x65,0x73,0x20,0x74,0x68,0x69,0x73,0x20,0x64,0x6F,0x65,0x73,0x6E,0x27,0x74,0x20
+,0x6E,0x65,0x65,0x64,0x20,0x74,0x6F,0x20,0x62,0x65,0x20,0x70,0x61,0x73,0x73,0x65
+,0x64,0x20,0x61,0x6E,0x20,0x61,0x64,0x64,0x72,0x65,0x73,0x73,0x20,0x61,0x73,0x20
+,0x69,0x74,0x20,0x77,0x69,0x6C,0x6C,0x20,0x6F,0x6E,0x6C,0x79,0x20,0x62,0x65,0x20
+,0x61,0x6C,0x6C,0x6F,0x77,0x65,0x64,0x20,0x74,0x6F,0x20,0x63,0x6F,0x6D,0x6D,0x75
+,0x6E,0x69,0x63,0x61,0x74,0x65,0x20,0x77,0x69,0x74,0x68,0x20,0x69,0x74,0x73,0x65
+,0x6C,0x66,0x0D,0x0A,0x7D,0x0D,0x0A,0x0D,0x0A,0x0D,0x0A,0x48,0x54,0x54,0x50,0x52
+,0x50,0x43,0x2E,0x70,0x72,0x6F,0x74,0x6F,0x74,0x79,0x70,0x65,0x2E,0x72,0x70,0x63
+,0x3D,0x20,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x28,0x6F,0x62,0x6A,0x65,0x63
+,0x74,0x2C,0x20,0x6D,0x65,0x74,0x68,0x6F,0x64,0x2C,0x20,0x61,0x72,0x67,0x75,0x6D
+,0x65,0x6E,0x74,0x73,0x29,0x20,0x7B,0x0D,0x0A,0x20,0x20,0x20,0x20,0x72,0x65,0x74
+,0x75,0x72,0x6E,0x20,0x70,0x6F,0x73,0x74,0x28,0x22,0x2F,0x72,0x70,0x63,0x2F,0x22
+,0x20,0x2B,0x20,0x6F,0x62,0x6A,0x65,0x63,0x74,0x20,0x2B,0x20,0x22,0x2F,0x22,0x20
+,0x2B,0x20,0x6D,0x65,0x74,0x68,0x6F,0x64,0x20,0x2B,0x20,0x22,0x2C,0x22,0x20,0x2B
+,0x20,0x61,0x72,0x67,0x75,0x6D,0x65,0x6E,0x74,0x73,0x2E,0x6A,0x6F,0x69,0x6E,0x28
+,0x22,0x2C,0x22,0x29,0x29,0x3B,0x0D,0x0A,0x7D,0x0D,0x0A,0x0D,0x0A,0x2F,0x2F,0x20
+,0x50,0x69,0x6E,0x20,0x4E,0x61,0x6D,0x65,0x73,0x20,0x74,0x6F,0x20,0x41,0x6C,0x6C
+,0x6F,0x77,0x20,0x70,0x69,0x6E,0x73,0x20,0x74,0x6F,0x20,0x62,0x65,0x20,0x72,0x65
+,0x66,0x66,0x65,0x72,0x65,0x64,0x20,0x74,0x6F,0x20,0x61,0x73,0x20,0x61,0x20,0x74
+,0x79,0x70,0x65,0x20,0x72,0x61,0x74,0x68,0x65,0x72,0x20,0x74,0x68,0x61,0x6E,0x20
+,0x61,0x20,0x73,0x74,0x72,0x69,0x6E,0x67,0x20,0x6F,0x72,0x20,0x6E,0x75,0x6D,0x62
+,0x65,0x72,0x0D,0x0A,0x0D,0x0A,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x20,0x70
+,0x69,0x6E,0x28,0x6E,0x61,0x6D,0x65,0x29,0x7B,0x0D,0x0A,0x09,0x74,0x68,0x69,0x73
+,0x2E,0x5F,0x6E,0x61,0x6D,0x65,0x20,0x3D,0x20,0x6E,0x61,0x6D,0x65,0x3B,0x0D,0x0A
+,0x7D,0x0D,0x0A,0x0D,0x0A,0x4C,0x45,0x44,0x31,0x20,0x3D,0x20,0x6E,0x65,0x77,0x20
+,0x70,0x69,0x6E,0x28,0x22,0x4C,0x45,0x44,0x31,0x22,0x29,0x3B,0x0D,0x0A,0x4C,0x45
+,0x44,0x32,0x20,0x3D,0x20,0x6E,0x65,0x77,0x20,0x70,0x69,0x6E,0x28,0x22,0x4C,0x45
+,0x44,0x32,0x22,0x29,0x3B,0x0D,0x0A,0x4C,0x45,0x44,0x33,0x20,0x3D,0x20,0x6E,0x65
+,0x77,0x20,0x70,0x69,0x6E,0x28,0x22,0x4C,0x45,0x44,0x33,0x22,0x29,0x3B,0x0D,0x0A
+,0x4C,0x45,0x44,0x34,0x20,0x3D,0x20,0x6E,0x65,0x77,0x20,0x70,0x69,0x6E,0x28,0x22
+,0x4C,0x45,0x44,0x34,0x22,0x29,0x3B,0x0D,0x0A,0x0D,0x0A,0x2F,0x2F,0x20,0x69,0x6E
+,0x74,0x65,0x72,0x66,0x61,0x63,0x65,0x20,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E
+,0x73,0x20,0x20,0x20,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D
+,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D
+,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D
+,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D
+,0x2D,0x2D,0x2D,0x2D,0x0D,0x0A,0x0D,0x0A,0x2F,0x2F,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x20,0x44,0x69,0x67,0x69,0x74,0x61,0x6C,0x4F,0x75,0x74
+,0x20,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x0D,0x0A,0x0D,0x0A,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x20,0x44,0x69
+,0x67,0x69,0x74,0x61,0x6C,0x4F,0x75,0x74,0x28,0x74,0x68,0x69,0x73,0x5F,0x6D,0x62
+,0x65,0x64,0x2C,0x20,0x6D,0x70,0x69,0x6E,0x29,0x20,0x7B,0x0D,0x0A,0x09,0x69,0x66
+,0x28,0x74,0x79,0x70,0x65,0x6F,0x66,0x20,0x6D,0x70,0x69,0x6E,0x20,0x21,0x3D,0x20
+,0x22,0x73,0x74,0x72,0x69,0x6E,0x67,0x22,0x29,0x7B,0x09,0x0D,0x0A,0x09,0x09,0x2F
+,0x2F,0x63,0x72,0x65,0x61,0x74,0x65,0x20,0x61,0x20,0x6E,0x65,0x77,0x20,0x6F,0x62
+,0x6A,0x65,0x63,0x74,0x0D,0x0A,0x09,0x09,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62
+,0x65,0x64,0x20,0x3D,0x20,0x74,0x68,0x69,0x73,0x5F,0x6D,0x62,0x65,0x64,0x3B,0x0D
+,0x0A,0x09,0x2F,0x2F,0x76,0x61,0x72,0x20,0x61,0x72,0x79,0x20,0x3D,0x20,0x6E,0x65
+,0x77,0x20,0x41,0x72,0x72,0x61,0x79,0x28,0x6D,0x70,0x69,0x6E,0x2E,0x5F,0x6E,0x61
+,0x6D,0x65,0x2C,0x6D,0x70,0x69,0x6E,0x2E,0x5F,0x6E,0x61,0x6D,0x65,0x29,0x3B,0x0D
+,0x0A,0x20,0x20,0x20,0x20,0x09,0x09,0x74,0x68,0x69,0x73,0x2E,0x6E,0x61,0x6D,0x65
+,0x20,0x3D,0x20,0x74,0x68,0x69,0x73,0x5F,0x6D,0x62,0x65,0x64,0x2E,0x72,0x70,0x63
+,0x28,0x22,0x44,0x69,0x67,0x69,0x74,0x61,0x6C,0x4F,0x75,0x74,0x22,0x2C,0x20,0x22
+,0x6E,0x65,0x77,0x22,0x2C,0x20,0x5B,0x6D,0x70,0x69,0x6E,0x2E,0x5F,0x6E,0x61,0x6D
+,0x65,0x2C,0x6D,0x70,0x69,0x6E,0x2E,0x5F,0x6E,0x61,0x6D,0x65,0x5D,0x29,0x3B,0x20
+,0x0D,0x0A,0x09,0x2F,0x2F,0x09,0x74,0x68,0x69,0x73,0x2E,0x6E,0x61,0x6D,0x65,0x20
+,0x3D,0x20,0x74,0x68,0x69,0x73,0x5F,0x6D,0x62,0x65,0x64,0x2E,0x72,0x70,0x63,0x28
+,0x22,0x44,0x69,0x67,0x69,0x74,0x61,0x6C,0x4F,0x75,0x74,0x22,0x2C,0x20,0x22,0x6E
+,0x65,0x77,0x22,0x2C,0x20,0x61,0x72,0x79,0x29,0x3B,0x20,0x0D,0x0A,0x09,0x7D,0x65
+,0x6C,0x73,0x65,0x7B,0x0D,0x0A,0x09,0x09,0x2F,0x2F,0x54,0x69,0x65,0x20,0x74,0x6F
+,0x20,0x61,0x6E,0x20,0x65,0x78,0x69,0x73,0x74,0x69,0x6E,0x67,0x20,0x6F,0x62,0x6A
+,0x65,0x63,0x74,0x0D,0x0A,0x09,0x09,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65
+,0x64,0x20,0x3D,0x20,0x74,0x68,0x69,0x73,0x5F,0x6D,0x62,0x65,0x64,0x3B,0x0D,0x0A
+,0x09,0x09,0x74,0x68,0x69,0x73,0x2E,0x6E,0x61,0x6D,0x65,0x20,0x3D,0x20,0x6D,0x70
+,0x69,0x6E,0x3B,0x0D,0x0A,0x09,0x7D,0x0D,0x0A,0x7D,0x0D,0x0A,0x0D,0x0A,0x44,0x69
+,0x67,0x69,0x74,0x61,0x6C,0x4F,0x75,0x74,0x2E,0x70,0x72,0x6F,0x74,0x6F,0x74,0x79
+,0x70,0x65,0x2E,0x77,0x72,0x69,0x74,0x65,0x20,0x3D,0x20,0x66,0x75,0x6E,0x63,0x74
+,0x69,0x6F,0x6E,0x28,0x76,0x61,0x6C,0x75,0x65,0x29,0x20,0x7B,0x0D,0x0A,0x09,0x74
+,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x2E,0x72,0x70,0x63,0x28,0x74,0x68
+,0x69,0x73,0x2E,0x6E,0x61,0x6D,0x65,0x2C,0x20,0x22,0x77,0x72,0x69,0x74,0x65,0x22
+,0x2C,0x20,0x5B,0x76,0x61,0x6C,0x75,0x65,0x5D,0x29,0x3B,0x0D,0x0A,0x7D,0x0D,0x0A
+,0x0D,0x0A,0x44,0x69,0x67,0x69,0x74,0x61,0x6C,0x4F,0x75,0x74,0x2E,0x70,0x72,0x6F
+,0x74,0x6F,0x74,0x79,0x70,0x65,0x2E,0x72,0x65,0x61,0x64,0x20,0x3D,0x20,0x66,0x75
+,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x28,0x29,0x20,0x7B,0x0D,0x0A,0x09,0x72,0x65,0x74
+,0x75,0x72,0x6E,0x20,0x70,0x61,0x72,0x73,0x65,0x49,0x6E,0x74,0x28,0x74,0x68,0x69
+,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x2E,0x72,0x70,0x63,0x28,0x74,0x68,0x69,0x73
+,0x2E,0x6E,0x61,0x6D,0x65,0x2C,0x20,0x22,0x72,0x65,0x61,0x64,0x22,0x2C,0x20,0x5B
+,0x22,0x22,0x5D,0x29,0x29,0x3B,0x0D,0x0A,0x7D,0x0D,0x0A,0x2F,0x2F,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x20,0x44,0x69,0x67,0x69,0x74,0x61,0x6C
+,0x49,0x6E,0x20,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x0D,0x0A,0x0D,0x0A,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x20
+,0x44,0x69,0x67,0x69,0x74,0x61,0x6C,0x49,0x6E,0x28,0x74,0x68,0x69,0x73,0x5F,0x6D
+,0x62,0x65,0x64,0x2C,0x20,0x6D,0x70,0x69,0x6E,0x29,0x20,0x7B,0x0D,0x0A,0x09,0x69
+,0x66,0x28,0x74,0x79,0x70,0x65,0x6F,0x66,0x20,0x6D,0x70,0x69,0x6E,0x20,0x21,0x3D
+,0x20,0x22,0x73,0x74,0x72,0x69,0x6E,0x67,0x22,0x29,0x7B,0x09,0x0D,0x0A,0x09,0x09
+,0x2F,0x2F,0x63,0x72,0x65,0x61,0x74,0x65,0x20,0x61,0x20,0x6E,0x65,0x77,0x20,0x6F
+,0x62,0x6A,0x65,0x63,0x74,0x0D,0x0A,0x09,0x09,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D
+,0x62,0x65,0x64,0x20,0x3D,0x20,0x74,0x68,0x69,0x73,0x5F,0x6D,0x62,0x65,0x64,0x3B
+,0x0D,0x0A,0x20,0x20,0x20,0x20,0x09,0x09,0x74,0x68,0x69,0x73,0x2E,0x6E,0x61,0x6D
+,0x65,0x20,0x3D,0x20,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x2E,0x72
+,0x70,0x63,0x28,0x22,0x44,0x69,0x67,0x69,0x74,0x61,0x6C,0x49,0x6E,0x22,0x2C,0x20
+,0x22,0x6E,0x65,0x77,0x22,0x2C,0x20,0x5B,0x6D,0x70,0x69,0x6E,0x2E,0x5F,0x6E,0x61
+,0x6D,0x65,0x2C,0x6D,0x70,0x69,0x6E,0x2E,0x5F,0x6E,0x61,0x6D,0x65,0x5D,0x29,0x3B
+,0x20,0x0D,0x0A,0x09,0x7D,0x65,0x6C,0x73,0x65,0x7B,0x0D,0x0A,0x09,0x09,0x2F,0x2F
+,0x54,0x69,0x65,0x20,0x74,0x6F,0x20,0x61,0x6E,0x20,0x65,0x78,0x69,0x73,0x74,0x69
+,0x6E,0x67,0x20,0x6F,0x62,0x6A,0x65,0x63,0x74,0x0D,0x0A,0x09,0x09,0x74,0x68,0x69
+,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x20,0x3D,0x20,0x74,0x68,0x69,0x73,0x5F,0x6D
+,0x62,0x65,0x64,0x3B,0x0D,0x0A,0x09,0x09,0x74,0x68,0x69,0x73,0x2E,0x6E,0x61,0x6D
+,0x65,0x20,0x3D,0x20,0x6D,0x70,0x69,0x6E,0x3B,0x0D,0x0A,0x09,0x7D,0x0D,0x0A,0x0D
+,0x0A,0x7D,0x0D,0x0A,0x0D,0x0A,0x44,0x69,0x67,0x69,0x74,0x61,0x6C,0x49,0x6E,0x2E
+,0x70,0x72,0x6F,0x74,0x6F,0x74,0x79,0x70,0x65,0x2E,0x72,0x65,0x61,0x64,0x20,0x3D
+,0x20,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x28,0x29,0x20,0x7B,0x0D,0x0A,0x09
+,0x72,0x65,0x74,0x75,0x72,0x6E,0x20,0x70,0x61,0x72,0x73,0x65,0x49,0x6E,0x74,0x28
+,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x2E,0x72,0x70,0x63,0x28,0x74
+,0x68,0x69,0x73,0x2E,0x6E,0x61,0x6D,0x65,0x2C,0x20,0x22,0x72,0x65,0x61,0x64,0x22
+,0x2C,0x20,0x5B,0x22,0x22,0x5D,0x29,0x29,0x3B,0x0D,0x0A,0x7D,0x0D,0x0A,0x0D,0x0A
+,0x2F,0x2F,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x20,0x41,0x6E
+,0x61,0x6C,0x6F,0x67,0x4F,0x75,0x74,0x20,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x0D,0x0A,0x0D,0x0A,0x66,0x75,0x6E,0x63
+,0x74,0x69,0x6F,0x6E,0x20,0x41,0x6E,0x61,0x6C,0x6F,0x67,0x4F,0x75,0x74,0x28,0x74
+,0x68,0x69,0x73,0x5F,0x6D,0x62,0x65,0x64,0x2C,0x20,0x6D,0x70,0x69,0x6E,0x29,0x20
+,0x7B,0x0D,0x0A,0x09,0x69,0x66,0x28,0x74,0x79,0x70,0x65,0x6F,0x66,0x20,0x6D,0x70
+,0x69,0x6E,0x20,0x21,0x3D,0x20,0x22,0x73,0x74,0x72,0x69,0x6E,0x67,0x22,0x29,0x7B
+,0x09,0x0D,0x0A,0x09,0x09,0x2F,0x2F,0x63,0x72,0x65,0x61,0x74,0x65,0x20,0x61,0x20
+,0x6E,0x65,0x77,0x20,0x6F,0x62,0x6A,0x65,0x63,0x74,0x0D,0x0A,0x09,0x09,0x74,0x68
+,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x20,0x3D,0x20,0x74,0x68,0x69,0x73,0x5F
+,0x6D,0x62,0x65,0x64,0x3B,0x0D,0x0A,0x20,0x20,0x20,0x20,0x09,0x09,0x74,0x68,0x69
+,0x73,0x2E,0x6E,0x61,0x6D,0x65,0x20,0x3D,0x20,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D
+,0x62,0x65,0x64,0x2E,0x72,0x70,0x63,0x28,0x22,0x41,0x6E,0x61,0x6C,0x6F,0x67,0x4F
+,0x75,0x74,0x22,0x2C,0x20,0x22,0x6E,0x65,0x77,0x22,0x2C,0x20,0x5B,0x6D,0x70,0x69
+,0x6E,0x2E,0x5F,0x6E,0x61,0x6D,0x65,0x2C,0x6D,0x70,0x69,0x6E,0x2E,0x5F,0x6E,0x61
+,0x6D,0x65,0x5D,0x29,0x3B,0x20,0x0D,0x0A,0x09,0x7D,0x65,0x6C,0x73,0x65,0x7B,0x0D
+,0x0A,0x09,0x09,0x2F,0x2F,0x54,0x69,0x65,0x20,0x74,0x6F,0x20,0x61,0x6E,0x20,0x65
+,0x78,0x69,0x73,0x74,0x69,0x6E,0x67,0x20,0x6F,0x62,0x6A,0x65,0x63,0x74,0x0D,0x0A
+,0x09,0x09,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x20,0x3D,0x20,0x74
+,0x68,0x69,0x73,0x5F,0x6D,0x62,0x65,0x64,0x3B,0x0D,0x0A,0x09,0x09,0x74,0x68,0x69
+,0x73,0x2E,0x6E,0x61,0x6D,0x65,0x20,0x3D,0x20,0x6D,0x70,0x69,0x6E,0x3B,0x0D,0x0A
+,0x09,0x7D,0x0D,0x0A,0x7D,0x0D,0x0A,0x0D,0x0A,0x41,0x6E,0x61,0x6C,0x6F,0x67,0x4F
+,0x75,0x74,0x2E,0x70,0x72,0x6F,0x74,0x6F,0x74,0x79,0x70,0x65,0x2E,0x77,0x72,0x69
+,0x74,0x65,0x20,0x3D,0x20,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x28,0x76,0x61
+,0x6C,0x75,0x65,0x29,0x20,0x7B,0x0D,0x0A,0x09,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D
+,0x62,0x65,0x64,0x2E,0x72,0x70,0x63,0x28,0x74,0x68,0x69,0x73,0x2E,0x6E,0x61,0x6D
+,0x65,0x2C,0x20,0x22,0x77,0x72,0x69,0x74,0x65,0x22,0x2C,0x20,0x5B,0x76,0x61,0x6C
+,0x75,0x65,0x5D,0x29,0x3B,0x0D,0x0A,0x7D,0x0D,0x0A,0x0D,0x0A,0x41,0x6E,0x61,0x6C
+,0x6F,0x67,0x4F,0x75,0x74,0x2E,0x70,0x72,0x6F,0x74,0x6F,0x74,0x79,0x70,0x65,0x2E
+,0x77,0x72,0x69,0x74,0x65,0x5F,0x75,0x31,0x36,0x20,0x3D,0x20,0x66,0x75,0x6E,0x63
+,0x74,0x69,0x6F,0x6E,0x28,0x76,0x61,0x6C,0x75,0x65,0x29,0x20,0x7B,0x0D,0x0A,0x09
+,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x2E,0x72,0x70,0x63,0x28,0x74
+,0x68,0x69,0x73,0x2E,0x6E,0x61,0x6D,0x65,0x2C,0x20,0x22,0x77,0x72,0x69,0x74,0x65
+,0x5F,0x75,0x31,0x36,0x22,0x2C,0x20,0x5B,0x76,0x61,0x6C,0x75,0x65,0x5D,0x29,0x3B
+,0x0D,0x0A,0x7D,0x0D,0x0A,0x0D,0x0A,0x41,0x6E,0x61,0x6C,0x6F,0x67,0x4F,0x75,0x74
+,0x2E,0x70,0x72,0x6F,0x74,0x6F,0x74,0x79,0x70,0x65,0x2E,0x72,0x65,0x61,0x64,0x20
+,0x3D,0x20,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x28,0x29,0x20,0x7B,0x0D,0x0A
+,0x09,0x72,0x65,0x74,0x75,0x72,0x6E,0x20,0x70,0x61,0x72,0x73,0x65,0x46,0x6C,0x6F
+,0x61,0x74,0x28,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x2E,0x72,0x70
+,0x63,0x28,0x74,0x68,0x69,0x73,0x2E,0x6E,0x61,0x6D,0x65,0x2C,0x20,0x22,0x72,0x65
+,0x61,0x64,0x22,0x2C,0x20,0x5B,0x22,0x22,0x5D,0x29,0x29,0x3B,0x0D,0x0A,0x7D,0x0D
+,0x0A,0x0D,0x0A,0x2F,0x2F,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x20,0x41,0x6E,0x61,0x6C,0x6F,0x67,0x49,0x6E,0x20,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x0D,0x0A,0x0D,0x0A,0x66,0x75
+,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x20,0x41,0x6E,0x61,0x6C,0x6F,0x67,0x49,0x6E,0x28
+,0x74,0x68,0x69,0x73,0x5F,0x6D,0x62,0x65,0x64,0x2C,0x20,0x6D,0x70,0x69,0x6E,0x29
+,0x20,0x7B,0x0D,0x0A,0x09,0x69,0x66,0x28,0x74,0x79,0x70,0x65,0x6F,0x66,0x20,0x6D
+,0x70,0x69,0x6E,0x20,0x21,0x3D,0x20,0x22,0x73,0x74,0x72,0x69,0x6E,0x67,0x22,0x29
+,0x7B,0x09,0x0D,0x0A,0x09,0x09,0x2F,0x2F,0x63,0x72,0x65,0x61,0x74,0x65,0x20,0x61
+,0x20,0x6E,0x65,0x77,0x20,0x6F,0x62,0x6A,0x65,0x63,0x74,0x0D,0x0A,0x09,0x09,0x74
+,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x20,0x3D,0x20,0x74,0x68,0x69,0x73
+,0x5F,0x6D,0x62,0x65,0x64,0x3B,0x0D,0x0A,0x20,0x20,0x20,0x20,0x09,0x09,0x74,0x68
+,0x69,0x73,0x2E,0x6E,0x61,0x6D,0x65,0x20,0x3D,0x20,0x74,0x68,0x69,0x73,0x2E,0x5F
+,0x6D,0x62,0x65,0x64,0x2E,0x72,0x70,0x63,0x28,0x22,0x41,0x6E,0x61,0x6C,0x6F,0x67
+,0x49,0x6E,0x22,0x2C,0x20,0x22,0x6E,0x65,0x77,0x22,0x2C,0x20,0x5B,0x6D,0x70,0x69
+,0x6E,0x2E,0x5F,0x6E,0x61,0x6D,0x65,0x2C,0x6D,0x70,0x69,0x6E,0x2E,0x5F,0x6E,0x61
+,0x6D,0x65,0x5D,0x29,0x3B,0x20,0x0D,0x0A,0x09,0x7D,0x65,0x6C,0x73,0x65,0x7B,0x0D
+,0x0A,0x09,0x09,0x2F,0x2F,0x54,0x69,0x65,0x20,0x74,0x6F,0x20,0x61,0x6E,0x20,0x65
+,0x78,0x69,0x73,0x74,0x69,0x6E,0x67,0x20,0x6F,0x62,0x6A,0x65,0x63,0x74,0x0D,0x0A
+,0x09,0x09,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x20,0x3D,0x20,0x74
+,0x68,0x69,0x73,0x5F,0x6D,0x62,0x65,0x64,0x3B,0x0D,0x0A,0x09,0x09,0x74,0x68,0x69
+,0x73,0x2E,0x6E,0x61,0x6D,0x65,0x20,0x3D,0x20,0x6D,0x70,0x69,0x6E,0x3B,0x0D,0x0A
+,0x09,0x7D,0x0D,0x0A,0x7D,0x0D,0x0A,0x0D,0x0A,0x41,0x6E,0x61,0x6C,0x6F,0x67,0x49
+,0x6E,0x2E,0x70,0x72,0x6F,0x74,0x6F,0x74,0x79,0x70,0x65,0x2E,0x72,0x65,0x61,0x64
+,0x20,0x3D,0x20,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x28,0x29,0x20,0x7B,0x0D
+,0x0A,0x09,0x72,0x65,0x74,0x75,0x72,0x6E,0x20,0x70,0x61,0x72,0x73,0x65,0x46,0x6C
+,0x6F,0x61,0x74,0x28,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x2E,0x72
+,0x70,0x63,0x28,0x74,0x68,0x69,0x73,0x2E,0x6E,0x61,0x6D,0x65,0x2C,0x20,0x22,0x72
+,0x65,0x61,0x64,0x22,0x2C,0x20,0x5B,0x22,0x22,0x5D,0x29,0x29,0x3B,0x0D,0x0A,0x7D
+,0x0D,0x0A,0x0D,0x0A,0x41,0x6E,0x61,0x6C,0x6F,0x67,0x49,0x6E,0x2E,0x70,0x72,0x6F
+,0x74,0x6F,0x74,0x79,0x70,0x65,0x2E,0x72,0x65,0x61,0x64,0x5F,0x75,0x31,0x36,0x20
+,0x3D,0x20,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x28,0x29,0x20,0x7B,0x0D,0x0A
+,0x09,0x72,0x65,0x74,0x75,0x72,0x6E,0x20,0x70,0x61,0x72,0x73,0x65,0x49,0x6E,0x74
+,0x28,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x2E,0x72,0x70,0x63,0x28
+,0x74,0x68,0x69,0x73,0x2E,0x6E,0x61,0x6D,0x65,0x2C,0x20,0x22,0x72,0x65,0x61,0x64
+,0x5F,0x75,0x31,0x36,0x22,0x2C,0x20,0x5B,0x22,0x22,0x5D,0x29,0x29,0x3B,0x0D,0x0A
+,0x7D,0x0D,0x0A,0x0D,0x0A,0x2F,0x2F,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x20,0x50,0x77,0x6D,0x4F,0x75,0x74,0x20,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x0D,0x0A,0x0D,0x0A,0x66,0x75
+,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x20,0x50,0x77,0x6D,0x4F,0x75,0x74,0x28,0x74,0x68
+,0x69,0x73,0x5F,0x6D,0x62,0x65,0x64,0x2C,0x20,0x6D,0x70,0x69,0x6E,0x29,0x20,0x7B
+,0x0D,0x0A,0x09,0x69,0x66,0x28,0x74,0x79,0x70,0x65,0x6F,0x66,0x20,0x6D,0x70,0x69
+,0x6E,0x20,0x21,0x3D,0x20,0x22,0x73,0x74,0x72,0x69,0x6E,0x67,0x22,0x29,0x7B,0x09
+,0x0D,0x0A,0x09,0x09,0x2F,0x2F,0x63,0x72,0x65,0x61,0x74,0x65,0x20,0x61,0x20,0x6E
+,0x65,0x77,0x20,0x6F,0x62,0x6A,0x65,0x63,0x74,0x0D,0x0A,0x09,0x09,0x74,0x68,0x69
+,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x20,0x3D,0x20,0x74,0x68,0x69,0x73,0x5F,0x6D
+,0x62,0x65,0x64,0x3B,0x0D,0x0A,0x20,0x20,0x20,0x20,0x09,0x09,0x74,0x68,0x69,0x73
+,0x2E,0x6E,0x61,0x6D,0x65,0x20,0x3D,0x20,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62
+,0x65,0x64,0x2E,0x72,0x70,0x63,0x28,0x22,0x50,0x77,0x6D,0x4F,0x75,0x74,0x22,0x2C
+,0x20,0x22,0x6E,0x65,0x77,0x22,0x2C,0x20,0x5B,0x6D,0x70,0x69,0x6E,0x2E,0x5F,0x6E
+,0x61,0x6D,0x65,0x2C,0x6D,0x70,0x69,0x6E,0x2E,0x5F,0x6E,0x61,0x6D,0x65,0x5D,0x29
+,0x3B,0x20,0x0D,0x0A,0x09,0x7D,0x65,0x6C,0x73,0x65,0x7B,0x0D,0x0A,0x09,0x09,0x2F
+,0x2F,0x54,0x69,0x65,0x20,0x74,0x6F,0x20,0x61,0x6E,0x20,0x65,0x78,0x69,0x73,0x74
+,0x69,0x6E,0x67,0x20,0x6F,0x62,0x6A,0x65,0x63,0x74,0x0D,0x0A,0x09,0x09,0x74,0x68
+,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x20,0x3D,0x20,0x74,0x68,0x69,0x73,0x5F
+,0x6D,0x62,0x65,0x64,0x3B,0x0D,0x0A,0x09,0x09,0x74,0x68,0x69,0x73,0x2E,0x6E,0x61
+,0x6D,0x65,0x20,0x3D,0x20,0x6D,0x70,0x69,0x6E,0x3B,0x0D,0x0A,0x09,0x7D,0x0D,0x0A
+,0x7D,0x0D,0x0A,0x0D,0x0A,0x50,0x77,0x6D,0x4F,0x75,0x74,0x2E,0x70,0x72,0x6F,0x74
+,0x6F,0x74,0x79,0x70,0x65,0x2E,0x77,0x72,0x69,0x74,0x65,0x20,0x3D,0x20,0x66,0x75
+,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x28,0x76,0x61,0x6C,0x75,0x65,0x29,0x20,0x7B,0x0D
+,0x0A,0x09,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x2E,0x72,0x70,0x63
+,0x28,0x74,0x68,0x69,0x73,0x2E,0x6E,0x61,0x6D,0x65,0x2C,0x20,0x22,0x77,0x72,0x69
+,0x74,0x65,0x22,0x2C,0x20,0x5B,0x76,0x61,0x6C,0x75,0x65,0x5D,0x29,0x3B,0x0D,0x0A
+,0x7D,0x0D,0x0A,0x0D,0x0A,0x50,0x77,0x6D,0x4F,0x75,0x74,0x2E,0x70,0x72,0x6F,0x74
+,0x6F,0x74,0x79,0x70,0x65,0x2E,0x72,0x65,0x61,0x64,0x20,0x3D,0x20,0x66,0x75,0x6E
+,0x63,0x74,0x69,0x6F,0x6E,0x28,0x29,0x20,0x7B,0x0D,0x0A,0x20,0x20,0x20,0x20,0x72
+,0x65,0x74,0x75,0x72,0x6E,0x20,0x70,0x61,0x72,0x73,0x65,0x46,0x6C,0x6F,0x61,0x74
+,0x28,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x2E,0x72,0x70,0x63,0x28
+,0x74,0x68,0x69,0x73,0x2E,0x6E,0x61,0x6D,0x65,0x2C,0x20,0x22,0x72,0x65,0x61,0x64
+,0x22,0x2C,0x20,0x5B,0x22,0x22,0x5D,0x29,0x29,0x3B,0x0D,0x0A,0x7D,0x0D,0x0A,0x0D
+,0x0A,0x50,0x77,0x6D,0x4F,0x75,0x74,0x2E,0x70,0x72,0x6F,0x74,0x6F,0x74,0x79,0x70
+,0x65,0x2E,0x70,0x65,0x72,0x69,0x6F,0x64,0x20,0x3D,0x20,0x66,0x75,0x6E,0x63,0x74
+,0x69,0x6F,0x6E,0x28,0x76,0x61,0x6C,0x75,0x65,0x29,0x20,0x7B,0x0D,0x0A,0x09,0x74
+,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x2E,0x72,0x70,0x63,0x28,0x74,0x68
+,0x69,0x73,0x2E,0x6E,0x61,0x6D,0x65,0x2C,0x20,0x22,0x70,0x65,0x72,0x69,0x6F,0x64
+,0x22,0x2C,0x20,0x5B,0x76,0x61,0x6C,0x75,0x65,0x5D,0x29,0x3B,0x0D,0x0A,0x7D,0x0D
+,0x0A,0x0D,0x0A,0x50,0x77,0x6D,0x4F,0x75,0x74,0x2E,0x70,0x72,0x6F,0x74,0x6F,0x74
+,0x79,0x70,0x65,0x2E,0x70,0x65,0x72,0x69,0x6F,0x64,0x5F,0x6D,0x73,0x20,0x3D,0x20
+,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x28,0x76,0x61,0x6C,0x75,0x65,0x29,0x20
+,0x7B,0x0D,0x0A,0x09,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x2E,0x72
+,0x70,0x63,0x28,0x74,0x68,0x69,0x73,0x2E,0x6E,0x61,0x6D,0x65,0x2C,0x20,0x22,0x70
+,0x65,0x72,0x69,0x6F,0x64,0x5F,0x6D,0x73,0x22,0x2C,0x20,0x5B,0x76,0x61,0x6C,0x75
+,0x65,0x5D,0x29,0x3B,0x0D,0x0A,0x7D,0x0D,0x0A,0x0D,0x0A,0x50,0x77,0x6D,0x4F,0x75
+,0x74,0x2E,0x70,0x72,0x6F,0x74,0x6F,0x74,0x79,0x70,0x65,0x2E,0x70,0x65,0x72,0x69
+,0x6F,0x64,0x5F,0x75,0x73,0x20,0x3D,0x20,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E
+,0x28,0x76,0x61,0x6C,0x75,0x65,0x29,0x20,0x7B,0x0D,0x0A,0x09,0x74,0x68,0x69,0x73
+,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x2E,0x72,0x70,0x63,0x28,0x74,0x68,0x69,0x73,0x2E
+,0x6E,0x61,0x6D,0x65,0x2C,0x20,0x22,0x70,0x65,0x72,0x69,0x6F,0x64,0x5F,0x75,0x73
+,0x22,0x2C,0x20,0x5B,0x76,0x61,0x6C,0x75,0x65,0x5D,0x29,0x3B,0x0D,0x0A,0x7D,0x0D
+,0x0A,0x0D,0x0A,0x50,0x77,0x6D,0x4F,0x75,0x74,0x2E,0x70,0x72,0x6F,0x74,0x6F,0x74
+,0x79,0x70,0x65,0x2E,0x70,0x75,0x6C,0x73,0x65,0x77,0x69,0x64,0x74,0x68,0x20,0x3D
+,0x20,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x28,0x76,0x61,0x6C,0x75,0x65,0x29
+,0x20,0x7B,0x0D,0x0A,0x09,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x2E
+,0x72,0x70,0x63,0x28,0x74,0x68,0x69,0x73,0x2E,0x6E,0x61,0x6D,0x65,0x2C,0x20,0x22
+,0x70,0x75,0x6C,0x73,0x65,0x77,0x69,0x64,0x74,0x68,0x22,0x2C,0x20,0x5B,0x76,0x61
+,0x6C,0x75,0x65,0x5D,0x29,0x3B,0x0D,0x0A,0x7D,0x0D,0x0A,0x0D,0x0A,0x50,0x77,0x6D
+,0x4F,0x75,0x74,0x2E,0x70,0x72,0x6F,0x74,0x6F,0x74,0x79,0x70,0x65,0x2E,0x70,0x75
+,0x6C,0x73,0x65,0x77,0x69,0x64,0x74,0x68,0x5F,0x6D,0x73,0x20,0x3D,0x20,0x66,0x75
+,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x28,0x76,0x61,0x6C,0x75,0x65,0x29,0x20,0x7B,0x0D
+,0x0A,0x09,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x2E,0x72,0x70,0x63
+,0x28,0x74,0x68,0x69,0x73,0x2E,0x6E,0x61,0x6D,0x65,0x2C,0x20,0x22,0x70,0x75,0x6C
+,0x73,0x65,0x77,0x69,0x64,0x74,0x68,0x5F,0x6D,0x73,0x22,0x2C,0x20,0x5B,0x76,0x61
+,0x6C,0x75,0x65,0x5D,0x29,0x3B,0x0D,0x0A,0x7D,0x0D,0x0A,0x0D,0x0A,0x50,0x77,0x6D
+,0x4F,0x75,0x74,0x2E,0x70,0x72,0x6F,0x74,0x6F,0x74,0x79,0x70,0x65,0x2E,0x70,0x75
+,0x6C,0x73,0x65,0x77,0x69,0x64,0x74,0x68,0x5F,0x75,0x73,0x20,0x3D,0x20,0x66,0x75
+,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x28,0x76,0x61,0x6C,0x75,0x65,0x29,0x20,0x7B,0x0D
+,0x0A,0x09,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x2E,0x72,0x70,0x63
+,0x28,0x74,0x68,0x69,0x73,0x2E,0x6E,0x61,0x6D,0x65,0x2C,0x20,0x22,0x70,0x75,0x6C
+,0x73,0x65,0x77,0x69,0x64,0x74,0x68,0x5F,0x75,0x73,0x22,0x2C,0x20,0x5B,0x76,0x61
+,0x6C,0x75,0x65,0x5D,0x29,0x3B,0x0D,0x0A,0x7D,0x0D,0x0A,0x0D,0x0A,0x2F,0x2F,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x20,0x73,0x65,0x72,0x69,0x61
+,0x6C,0x20,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x0D,0x0A,0x0D,0x0A,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x20,0x53
+,0x65,0x72,0x69,0x61,0x6C,0x28,0x74,0x68,0x69,0x73,0x5F,0x6D,0x62,0x65,0x64,0x2C
+,0x20,0x74,0x78,0x2C,0x20,0x72,0x78,0x29,0x20,0x7B,0x0D,0x0A,0x09,0x69,0x66,0x28
+,0x74,0x79,0x70,0x65,0x6F,0x66,0x20,0x74,0x78,0x20,0x21,0x3D,0x20,0x22,0x73,0x74
+,0x72,0x69,0x6E,0x67,0x22,0x29,0x7B,0x09,0x0D,0x0A,0x09,0x09,0x2F,0x2F,0x63,0x72
+,0x65,0x61,0x74,0x65,0x20,0x61,0x20,0x6E,0x65,0x77,0x20,0x6F,0x62,0x6A,0x65,0x63
+,0x74,0x0D,0x0A,0x09,0x09,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x20
+,0x3D,0x20,0x74,0x68,0x69,0x73,0x5F,0x6D,0x62,0x65,0x64,0x3B,0x0D,0x0A,0x20,0x20
+,0x20,0x20,0x09,0x09,0x74,0x68,0x69,0x73,0x2E,0x6E,0x61,0x6D,0x65,0x20,0x3D,0x20
+,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x2E,0x72,0x70,0x63,0x28,0x22
+,0x53,0x65,0x72,0x69,0x61,0x6C,0x22,0x2C,0x20,0x22,0x6E,0x65,0x77,0x22,0x2C,0x20
+,0x5B,0x74,0x78,0x2E,0x5F,0x6E,0x61,0x6D,0x65,0x2C,0x20,0x72,0x78,0x2E,0x5F,0x6E
+,0x61,0x6D,0x65,0x5D,0x29,0x3B,0x20,0x0D,0x0A,0x09,0x7D,0x65,0x6C,0x73,0x65,0x7B
+,0x0D,0x0A,0x09,0x09,0x2F,0x2F,0x54,0x69,0x65,0x20,0x74,0x6F,0x20,0x61,0x6E,0x20
+,0x65,0x78,0x69,0x73,0x74,0x69,0x6E,0x67,0x20,0x6F,0x62,0x6A,0x65,0x63,0x74,0x0D
+,0x0A,0x09,0x09,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x20,0x3D,0x20
+,0x74,0x68,0x69,0x73,0x5F,0x6D,0x62,0x65,0x64,0x3B,0x0D,0x0A,0x09,0x09,0x74,0x68
+,0x69,0x73,0x2E,0x6E,0x61,0x6D,0x65,0x20,0x3D,0x20,0x74,0x78,0x3B,0x0D,0x0A,0x09
+,0x7D,0x0D,0x0A,0x0D,0x0A,0x7D,0x0D,0x0A,0x0D,0x0A,0x53,0x65,0x72,0x69,0x61,0x6C
+,0x2E,0x70,0x72,0x6F,0x74,0x6F,0x74,0x79,0x70,0x65,0x2E,0x70,0x75,0x74,0x63,0x20
+,0x3D,0x20,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x28,0x76,0x61,0x6C,0x75,0x65
+,0x29,0x20,0x7B,0x0D,0x0A,0x09,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64
+,0x2E,0x72,0x70,0x63,0x28,0x74,0x68,0x69,0x73,0x2E,0x6E,0x61,0x6D,0x65,0x2C,0x20
+,0x22,0x70,0x75,0x74,0x63,0x22,0x2C,0x20,0x5B,0x76,0x61,0x6C,0x75,0x65,0x5D,0x29
+,0x3B,0x0D,0x0A,0x7D,0x0D,0x0A,0x0D,0x0A,0x53,0x65,0x72,0x69,0x61,0x6C,0x2E,0x70
+,0x72,0x6F,0x74,0x6F,0x74,0x79,0x70,0x65,0x2E,0x67,0x65,0x74,0x63,0x20,0x3D,0x20
+,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x28,0x76,0x61,0x6C,0x75,0x65,0x29,0x20
+,0x7B,0x0D,0x0A,0x09,0x72,0x65,0x74,0x75,0x72,0x6E,0x20,0x70,0x61,0x72,0x73,0x65
+,0x49,0x6E,0x74,0x28,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x2E,0x72
+,0x70,0x63,0x28,0x74,0x68,0x69,0x73,0x2E,0x6E,0x61,0x6D,0x65,0x2C,0x20,0x22,0x67
+,0x65,0x74,0x63,0x22,0x2C,0x20,0x5B,0x22,0x22,0x5D,0x29,0x29,0x3B,0x0D,0x0A,0x7D
+,0x0D,0x0A,0x0D,0x0A,0x53,0x65,0x72,0x69,0x61,0x6C,0x2E,0x70,0x72,0x6F,0x74,0x6F
+,0x74,0x79,0x70,0x65,0x2E,0x72,0x65,0x61,0x64,0x61,0x62,0x6C,0x65,0x20,0x3D,0x20
+,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x28,0x76,0x61,0x6C,0x75,0x65,0x29,0x20
+,0x7B,0x0D,0x0A,0x09,0x72,0x65,0x74,0x75,0x72,0x6E,0x20,0x70,0x61,0x72,0x73,0x65
+,0x49,0x6E,0x74,0x28,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x2E,0x72
+,0x70,0x63,0x28,0x74,0x68,0x69,0x73,0x2E,0x6E,0x61,0x6D,0x65,0x2C,0x20,0x22,0x72
+,0x65,0x61,0x64,0x61,0x62,0x6C,0x65,0x22,0x2C,0x20,0x5B,0x22,0x22,0x5D,0x29,0x29
+,0x3B,0x0D,0x0A,0x7D,0x0D,0x0A,0x0D,0x0A,0x53,0x65,0x72,0x69,0x61,0x6C,0x2E,0x70
+,0x72,0x6F,0x74,0x6F,0x74,0x79,0x70,0x65,0x2E,0x77,0x72,0x69,0x74,0x65,0x61,0x62
+,0x6C,0x65,0x20,0x3D,0x20,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x28,0x76,0x61
+,0x6C,0x75,0x65,0x29,0x20,0x7B,0x0D,0x0A,0x09,0x72,0x65,0x74,0x75,0x72,0x6E,0x20
+,0x70,0x61,0x72,0x73,0x65,0x49,0x6E,0x74,0x28,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D
+,0x62,0x65,0x64,0x2E,0x72,0x70,0x63,0x28,0x74,0x68,0x69,0x73,0x2E,0x6E,0x61,0x6D
+,0x65,0x2C,0x20,0x22,0x77,0x72,0x69,0x74,0x65,0x61,0x62,0x6C,0x65,0x22,0x2C,0x20
+,0x5B,0x22,0x22,0x5D,0x29,0x29,0x3B,0x0D,0x0A,0x7D,0x0D,0x0A,0x0D,0x0A,0x0D,0x0A
+,0x2F,0x2F,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x20,0x52,0x50
+,0x43,0x56,0x61,0x72,0x69,0x61,0x62,0x6C,0x65,0x20,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x0D,0x0A,0x0D,0x0A,0x66,0x75
+,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x20,0x52,0x50,0x43,0x56,0x61,0x72,0x69,0x61,0x62
+,0x6C,0x65,0x28,0x74,0x68,0x69,0x73,0x5F,0x6D,0x62,0x65,0x64,0x2C,0x20,0x6E,0x61
+,0x6D,0x65,0x29,0x20,0x7B,0x0D,0x0A,0x09,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62
+,0x65,0x64,0x20,0x3D,0x20,0x74,0x68,0x69,0x73,0x5F,0x6D,0x62,0x65,0x64,0x3B,0x0D
+,0x0A,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x68,0x69,0x73,0x2E,0x6E,0x61
+,0x6D,0x65,0x20,0x3D,0x20,0x6E,0x61,0x6D,0x65,0x3B,0x20,0x0D,0x0A,0x7D,0x0D,0x0A
+,0x0D,0x0A,0x52,0x50,0x43,0x56,0x61,0x72,0x69,0x61,0x62,0x6C,0x65,0x2E,0x70,0x72
+,0x6F,0x74,0x6F,0x74,0x79,0x70,0x65,0x2E,0x77,0x72,0x69,0x74,0x65,0x20,0x3D,0x20
+,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x28,0x76,0x61,0x6C,0x75,0x65,0x29,0x20
+,0x7B,0x0D,0x0A,0x09,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x2E,0x72
+,0x70,0x63,0x28,0x74,0x68,0x69,0x73,0x2E,0x6E,0x61,0x6D,0x65,0x2C,0x20,0x22,0x77
+,0x72,0x69,0x74,0x65,0x22,0x2C,0x20,0x5B,0x76,0x61,0x6C,0x75,0x65,0x5D,0x29,0x3B
+,0x0D,0x0A,0x7D,0x0D,0x0A,0x0D,0x0A,0x52,0x50,0x43,0x56,0x61,0x72,0x69,0x61,0x62
+,0x6C,0x65,0x2E,0x70,0x72,0x6F,0x74,0x6F,0x74,0x79,0x70,0x65,0x2E,0x72,0x65,0x61
+,0x64,0x5F,0x69,0x6E,0x74,0x20,0x3D,0x20,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E
+,0x28,0x29,0x20,0x7B,0x0D,0x0A,0x09,0x72,0x65,0x74,0x75,0x72,0x6E,0x20,0x70,0x61
+,0x72,0x73,0x65,0x49,0x6E,0x74,0x28,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65
+,0x64,0x2E,0x72,0x70,0x63,0x28,0x74,0x68,0x69,0x73,0x2E,0x6E,0x61,0x6D,0x65,0x2C
+,0x20,0x22,0x72,0x65,0x61,0x64,0x22,0x2C,0x20,0x5B,0x22,0x22,0x5D,0x29,0x29,0x3B
+,0x0D,0x0A,0x7D,0x0D,0x0A,0x0D,0x0A,0x52,0x50,0x43,0x56,0x61,0x72,0x69,0x61,0x62
+,0x6C,0x65,0x2E,0x70,0x72,0x6F,0x74,0x6F,0x74,0x79,0x70,0x65,0x2E,0x72,0x65,0x61
+,0x64,0x5F,0x66,0x6C,0x6F,0x61,0x74,0x20,0x3D,0x20,0x66,0x75,0x6E,0x63,0x74,0x69
+,0x6F,0x6E,0x28,0x29,0x20,0x7B,0x0D,0x0A,0x09,0x72,0x65,0x74,0x75,0x72,0x6E,0x20
+,0x70,0x61,0x72,0x73,0x65,0x46,0x6C,0x6F,0x61,0x74,0x28,0x74,0x68,0x69,0x73,0x2E
+,0x5F,0x6D,0x62,0x65,0x64,0x2E,0x72,0x70,0x63,0x28,0x74,0x68,0x69,0x73,0x2E,0x6E
+,0x61,0x6D,0x65,0x2C,0x20,0x22,0x72,0x65,0x61,0x64,0x22,0x2C,0x20,0x5B,0x22,0x22
+,0x5D,0x29,0x29,0x3B,0x0D,0x0A,0x7D,0x0D,0x0A,0x0D,0x0A,0x52,0x50,0x43,0x56,0x61
+,0x72,0x69,0x61,0x62,0x6C,0x65,0x2E,0x70,0x72,0x6F,0x74,0x6F,0x74,0x79,0x70,0x65
+,0x2E,0x72,0x65,0x61,0x64,0x20,0x3D,0x20,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E
+,0x28,0x29,0x20,0x7B,0x0D,0x0A,0x09,0x72,0x65,0x74,0x75,0x72,0x6E,0x20,0x28,0x74
+,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65,0x64,0x2E,0x72,0x70,0x63,0x28,0x74,0x68
+,0x69,0x73,0x2E,0x6E,0x61,0x6D,0x65,0x2C,0x20,0x22,0x72,0x65,0x61,0x64,0x22,0x2C
+,0x20,0x5B,0x22,0x22,0x5D,0x29,0x29,0x3B,0x0D,0x0A,0x7D,0x0D,0x0A,0x0D,0x0A,0x2F
+,0x2F,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x20,0x52,0x50,0x43
+,0x46,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x20,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
+,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x0D,0x0A,0x0D,0x0A,0x66,0x75,0x6E
+,0x63,0x74,0x69,0x6F,0x6E,0x20,0x52,0x50,0x43,0x46,0x75,0x6E,0x63,0x74,0x69,0x6F
+,0x6E,0x28,0x74,0x68,0x69,0x73,0x5F,0x6D,0x62,0x65,0x64,0x2C,0x20,0x6E,0x61,0x6D
+,0x65,0x29,0x20,0x7B,0x0D,0x0A,0x09,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D,0x62,0x65
+,0x64,0x20,0x3D,0x20,0x74,0x68,0x69,0x73,0x5F,0x6D,0x62,0x65,0x64,0x3B,0x0D,0x0A
+,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x68,0x69,0x73,0x2E,0x6E,0x61,0x6D
+,0x65,0x20,0x3D,0x20,0x6E,0x61,0x6D,0x65,0x3B,0x20,0x0D,0x0A,0x7D,0x0D,0x0A,0x0D
+,0x0A,0x52,0x50,0x43,0x46,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x2E,0x70,0x72,0x6F
+,0x74,0x6F,0x74,0x79,0x70,0x65,0x2E,0x72,0x75,0x6E,0x20,0x3D,0x20,0x66,0x75,0x6E
+,0x63,0x74,0x69,0x6F,0x6E,0x28,0x76,0x61,0x6C,0x75,0x65,0x29,0x20,0x7B,0x0D,0x0A
+,0x09,0x72,0x65,0x74,0x75,0x72,0x6E,0x20,0x28,0x74,0x68,0x69,0x73,0x2E,0x5F,0x6D
+,0x62,0x65,0x64,0x2E,0x72,0x70,0x63,0x28,0x74,0x68,0x69,0x73,0x2E,0x6E,0x61,0x6D
+,0x65,0x2C,0x20,0x22,0x72,0x75,0x6E,0x22,0x2C,0x20,0x5B,0x76,0x61,0x6C,0x75,0x65
+,0x5D,0x29,0x29,0x3B,0x0D,0x0A,0x7D
+};
+
+static const char led_htm_tbl[] = {
+ 0x3C,0x68,0x74,0x6D,0x6C,0x3E,0x0D,0x0A,0x3C,0x68,0x65,0x61,0x64,0x3E,0x0D,0x0A
+,0x3C,0x6D,0x65,0x74,0x61,0x20,0x68,0x74,0x74,0x70,0x2D,0x65,0x71,0x75,0x69,0x76
+,0x3D,0x22,0x43,0x6F,0x6E,0x74,0x65,0x6E,0x74,0x2D,0x54,0x79,0x70,0x65,0x22,0x20
+,0x63,0x6F,0x6E,0x74,0x65,0x6E,0x74,0x3D,0x22,0x74,0x65,0x78,0x74,0x2F,0x68,0x74
+,0x6D,0x6C,0x3B,0x20,0x63,0x68,0x61,0x72,0x73,0x65,0x74,0x3D,0x22,0x75,0x74,0x66
+,0x2D,0x38,0x22,0x3E,0x20,0x0D,0x0A,0x3C,0x74,0x69,0x74,0x6C,0x65,0x3E,0x6D,0x62
+,0x65,0x64,0x20,0x74,0x65,0x73,0x74,0x20,0x77,0x65,0x62,0x3C,0x2F,0x74,0x69,0x74
+,0x6C,0x65,0x3E,0x0D,0x0A,0x3C,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x74,0x79,0x70
+,0x65,0x3D,0x22,0x74,0x65,0x78,0x74,0x2F,0x6A,0x61,0x76,0x61,0x73,0x63,0x72,0x69
+,0x70,0x74,0x22,0x20,0x73,0x72,0x63,0x3D,0x22,0x6D,0x62,0x65,0x64,0x52,0x50,0x43
+,0x2E,0x6A,0x73,0x22,0x20,0x6C,0x61,0x6E,0x67,0x75,0x61,0x67,0x65,0x3D,0x22,0x6A
+,0x61,0x76,0x61,0x73,0x63,0x72,0x69,0x70,0x74,0x22,0x20,0x63,0x68,0x61,0x72,0x73
+,0x65,0x74,0x3D,0x22,0x75,0x74,0x66,0x2D,0x38,0x22,0x3E,0x3C,0x2F,0x73,0x63,0x72
+,0x69,0x70,0x74,0x3E,0x0D,0x0A,0x3C,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x74,0x79
+,0x70,0x65,0x3D,0x22,0x74,0x65,0x78,0x74,0x2F,0x6A,0x61,0x76,0x61,0x73,0x63,0x72
+,0x69,0x70,0x74,0x22,0x3E,0x6D,0x62,0x65,0x64,0x3D,0x6E,0x65,0x77,0x20,0x48,0x54
+,0x54,0x50,0x52,0x50,0x43,0x28,0x29,0x3B,0x6C,0x65,0x64,0x31,0x3D,0x6E,0x65,0x77
+,0x20,0x44,0x69,0x67,0x69,0x74,0x61,0x6C,0x4F,0x75,0x74,0x28,0x6D,0x62,0x65,0x64
+,0x2C,0x4C,0x45,0x44,0x31,0x29,0x3B,0x6C,0x65,0x64,0x32,0x3D,0x6E,0x65,0x77,0x20
+,0x44,0x69,0x67,0x69,0x74,0x61,0x6C,0x4F,0x75,0x74,0x28,0x6D,0x62,0x65,0x64,0x2C
+,0x4C,0x45,0x44,0x32,0x29,0x3B,0x6C,0x65,0x64,0x33,0x3D,0x6E,0x65,0x77,0x20,0x44
+,0x69,0x67,0x69,0x74,0x61,0x6C,0x4F,0x75,0x74,0x28,0x6D,0x62,0x65,0x64,0x2C,0x4C
+,0x45,0x44,0x33,0x29,0x3B,0x74,0x65,0x72,0x6D,0x3D,0x6E,0x65,0x77,0x20,0x52,0x50
+,0x43,0x46,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x28,0x6D,0x62,0x65,0x64,0x2C,0x22
+,0x54,0x65,0x72,0x6D,0x69,0x6E,0x61,0x6C,0x57,0x72,0x69,0x74,0x65,0x22,0x29,0x3B
+,0x3C,0x2F,0x73,0x63,0x72,0x69,0x70,0x74,0x3E,0x0D,0x0A,0x3C,0x2F,0x68,0x65,0x61
+,0x64,0x3E,0x0D,0x0A,0x3C,0x62,0x6F,0x64,0x79,0x3E,0x0D,0x0A,0x3C,0x62,0x75,0x74
+,0x74,0x6F,0x6E,0x20,0x74,0x79,0x70,0x65,0x3D,0x22,0x73,0x75,0x62,0x6D,0x69,0x74
+,0x22,0x20,0x49,0x44,0x3D,0x22,0x62,0x74,0x6E,0x5F,0x4C,0x45,0x44,0x31,0x61,0x22
+,0x20,0x6F,0x6E,0x63,0x6C,0x69,0x63,0x6B,0x3D,0x22,0x6C,0x65,0x64,0x31,0x2E,0x77
+,0x72,0x69,0x74,0x65,0x28,0x31,0x29,0x22,0x3E,0x4C,0x45,0x44,0x31,0x20,0x6F,0x6E
+,0x3C,0x2F,0x62,0x75,0x74,0x74,0x6F,0x6E,0x3E,0x20,0x3C,0x62,0x72,0x3E,0x0D,0x0A
+,0x3C,0x62,0x75,0x74,0x74,0x6F,0x6E,0x20,0x74,0x79,0x70,0x65,0x3D,0x22,0x73,0x75
+,0x62,0x6D,0x69,0x74,0x22,0x20,0x49,0x44,0x3D,0x22,0x62,0x74,0x6E,0x5F,0x4C,0x45
+,0x44,0x32,0x61,0x22,0x20,0x6F,0x6E,0x63,0x6C,0x69,0x63,0x6B,0x3D,0x22,0x6C,0x65
+,0x64,0x32,0x2E,0x77,0x72,0x69,0x74,0x65,0x28,0x31,0x29,0x22,0x3E,0x4C,0x45,0x44
+,0x32,0x20,0x6F,0x6E,0x3C,0x2F,0x62,0x75,0x74,0x74,0x6F,0x6E,0x3E,0x20,0x3C,0x62
+,0x72,0x3E,0x0D,0x0A,0x3C,0x62,0x75,0x74,0x74,0x6F,0x6E,0x20,0x74,0x79,0x70,0x65
+,0x3D,0x22,0x73,0x75,0x62,0x6D,0x69,0x74,0x22,0x20,0x49,0x44,0x3D,0x22,0x62,0x74
+,0x6E,0x5F,0x4C,0x45,0x44,0x33,0x61,0x22,0x20,0x6F,0x6E,0x63,0x6C,0x69,0x63,0x6B
+,0x3D,0x22,0x6C,0x65,0x64,0x33,0x2E,0x77,0x72,0x69,0x74,0x65,0x28,0x31,0x29,0x22
+,0x3E,0x4C,0x45,0x44,0x33,0x20,0x6F,0x6E,0x3C,0x2F,0x62,0x75,0x74,0x74,0x6F,0x6E
+,0x3E,0x20,0x3C,0x62,0x72,0x3E,0x0D,0x0A,0x3C,0x62,0x72,0x3E,0x0D,0x0A,0x3C,0x62
+,0x75,0x74,0x74,0x6F,0x6E,0x20,0x74,0x79,0x70,0x65,0x3D,0x22,0x73,0x75,0x62,0x6D
+,0x69,0x74,0x22,0x20,0x49,0x44,0x3D,0x22,0x62,0x74,0x6E,0x5F,0x4C,0x45,0x44,0x31
+,0x62,0x22,0x20,0x6F,0x6E,0x63,0x6C,0x69,0x63,0x6B,0x3D,0x22,0x6C,0x65,0x64,0x31
+,0x2E,0x77,0x72,0x69,0x74,0x65,0x28,0x30,0x29,0x22,0x3E,0x4C,0x45,0x44,0x31,0x20
+,0x6F,0x66,0x66,0x3C,0x2F,0x62,0x75,0x74,0x74,0x6F,0x6E,0x3E,0x20,0x3C,0x62,0x72
+,0x3E,0x0D,0x0A,0x3C,0x62,0x75,0x74,0x74,0x6F,0x6E,0x20,0x74,0x79,0x70,0x65,0x3D
+,0x22,0x73,0x75,0x62,0x6D,0x69,0x74,0x22,0x20,0x49,0x44,0x3D,0x22,0x62,0x74,0x6E
+,0x5F,0x4C,0x45,0x44,0x32,0x62,0x22,0x20,0x6F,0x6E,0x63,0x6C,0x69,0x63,0x6B,0x3D
+,0x22,0x6C,0x65,0x64,0x32,0x2E,0x77,0x72,0x69,0x74,0x65,0x28,0x30,0x29,0x22,0x3E
+,0x4C,0x45,0x44,0x32,0x20,0x6F,0x66,0x66,0x3C,0x2F,0x62,0x75,0x74,0x74,0x6F,0x6E
+,0x3E,0x20,0x3C,0x62,0x72,0x3E,0x0D,0x0A,0x3C,0x62,0x75,0x74,0x74,0x6F,0x6E,0x20
+,0x74,0x79,0x70,0x65,0x3D,0x22,0x73,0x75,0x62,0x6D,0x69,0x74,0x22,0x20,0x49,0x44
+,0x3D,0x22,0x62,0x74,0x6E,0x5F,0x4C,0x45,0x44,0x33,0x62,0x22,0x20,0x6F,0x6E,0x63
+,0x6C,0x69,0x63,0x6B,0x3D,0x22,0x6C,0x65,0x64,0x33,0x2E,0x77,0x72,0x69,0x74,0x65
+,0x28,0x30,0x29,0x22,0x3E,0x4C,0x45,0x44,0x33,0x20,0x6F,0x66,0x66,0x3C,0x2F,0x62
+,0x75,0x74,0x74,0x6F,0x6E,0x3E,0x20,0x3C,0x62,0x72,0x3E,0x0D,0x0A,0x3C,0x62,0x72
+,0x3E,0x0D,0x0A,0x0D,0x0A,0x3C,0x69,0x6E,0x70,0x75,0x74,0x20,0x74,0x79,0x70,0x65
+,0x3D,0x22,0x74,0x65,0x78,0x74,0x22,0x20,0x69,0x64,0x3D,0x22,0x74,0x65,0x78,0x74
+,0x62,0x6F,0x78,0x22,0x3E,0x3C,0x2F,0x69,0x6E,0x70,0x75,0x74,0x3E,0x3C,0x62,0x75
+,0x74,0x74,0x6F,0x6E,0x20,0x6F,0x6E,0x63,0x6C,0x69,0x63,0x6B,0x3D,0x22,0x74,0x65
+,0x72,0x6D,0x2E,0x72,0x75,0x6E,0x28,0x74,0x65,0x78,0x74,0x62,0x6F,0x78,0x2E,0x76
+,0x61,0x6C,0x75,0x65,0x29,0x3B,0x22,0x3E,0x73,0x65,0x6E,0x64,0x3C,0x2F,0x62,0x75
+,0x74,0x74,0x6F,0x6E,0x3E,0x20,0x3C,0x62,0x72,0x3E,0x0D,0x0A,0x0D,0x0A,0x3C,0x2F
+,0x62,0x6F,0x64,0x79,0x3E,0x0D,0x0A,0x3C,0x2F,0x68,0x74,0x6D,0x6C,0x3E,0x0D,0x0A
+};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Fri Aug 21 02:15:59 2015 +0000
@@ -0,0 +1,302 @@
+#include "mbed.h"
+#include "DisplayBace.h"
+#include "rtos.h"
+#include "JPEG_Converter.h"
+#include "EthernetInterface.h"
+#include "HTTPServer.h"
+#include "mbed_rpc.h"
+#include "RomRamFileSystem.h"
+#include "file_table.h" //Binary data of web pages
+
+RomRamFileSystem romramfs("romram");
+EthernetInterface eth;
+
+#define VIDEO_CVBS (0) /* Analog Video Signal */
+#define VIDEO_CMOS_CAMERA (1) /* Digital Video Signal */
+#define VIDEO_YCBCR422 (0)
+#define VIDEO_RGB888 (1)
+#define VIDEO_RGB565 (2)
+
+/**** User Selection *********/
+#define VIDEO_INPUT_METHOD (VIDEO_CMOS_CAMERA) /* Select VIDEO_CVBS or VIDEO_CMOS_CAMERA */
+#define VIDEO_INPUT_FORMAT (VIDEO_YCBCR422) /* Select VIDEO_YCBCR422 or VIDEO_RGB888 or VIDEO_RGB565 */
+#define USE_VIDEO_CH (0) /* Select 0 or 1 If selecting VIDEO_CMOS_CAMERA, should be 0.) */
+#define VIDEO_PAL (0) /* Select 0(NTSC) or 1(PAL) If selecting VIDEO_CVBS, this parameter is not referenced.) */
+/*****************************/
+
+#if USE_VIDEO_CH == (0)
+#define VIDEO_INPUT_CH (DisplayBase::VIDEO_INPUT_CHANNEL_0)
+#define VIDEO_INT_TYPE (DisplayBase::INT_TYPE_S0_VFIELD)
+#else
+#define VIDEO_INPUT_CH (DisplayBase::VIDEO_INPUT_CHANNEL_1)
+#define VIDEO_INT_TYPE (DisplayBase::INT_TYPE_S1_VFIELD)
+#endif
+
+#if ( VIDEO_INPUT_FORMAT == VIDEO_YCBCR422 || VIDEO_INPUT_FORMAT == VIDEO_RGB565 )
+#define DATA_SIZE_PER_PIC (2u)
+#else
+#define DATA_SIZE_PER_PIC (4u)
+#endif
+
+/*! Frame buffer stride: Frame buffer stride should be set to a multiple of 32 or 128
+ in accordance with the frame buffer burst transfer mode. */
+#define PIXEL_HW (320u) /* QVGA */
+#define PIXEL_VW (240u) /* QVGA */
+
+#define VIDEO_BUFFER_STRIDE (((PIXEL_HW * DATA_SIZE_PER_PIC) + 31u) & ~31u)
+#define VIDEO_BUFFER_HEIGHT (PIXEL_VW)
+
+DigitalIn button(USER_BUTTON0);
+
+static uint8_t FrameBuffer_Video[VIDEO_BUFFER_STRIDE * VIDEO_BUFFER_HEIGHT]__attribute((section("NC_BSS"),aligned(16))); //16 bytes aligned!;
+static volatile int32_t vsync_count = 0;
+static volatile int32_t vfield_count = 1;
+static uint8_t JpegBuffer[1024 * 20]__attribute((section("NC_BSS"),aligned(8))); //8 bytes aligned!;
+static int image_change = 0;
+
+static void IntCallbackFunc_Vfield(DisplayBase::int_type_t int_type) {
+ //Interrupt callback function
+ if (vfield_count != 0) {
+ vfield_count = 0;
+ } else {
+ vfield_count = 1;
+ image_change = 1;
+ }
+}
+
+static void IntCallbackFunc_Vsync(DisplayBase::int_type_t int_type) {
+ //Interrupt callback function for Vsync interruption
+ if (vsync_count > 0) {
+ vsync_count--;
+ }
+}
+
+static void WaitVsync(const int32_t wait_count) {
+ //Wait for the specified number of times Vsync occurs
+ vsync_count = wait_count;
+ while (vsync_count > 0) {
+ /* Do nothing */
+ }
+}
+
+static void camera_start(void) {
+ DisplayBase::graphics_error_t error;
+
+#if VIDEO_INPUT_METHOD == VIDEO_CMOS_CAMERA
+ DisplayBase::video_ext_in_config_t ext_in_config;
+ PinName cmos_camera_pin[11] = {
+ /* data pin */
+ P2_7, P2_6, P2_5, P2_4, P2_3, P2_2, P2_1, P2_0,
+ /* control pin */
+ P10_0, /* DV0_CLK */
+ P1_0, /* DV0_Vsync */
+ P1_1 /* DV0_Hsync */
+ };
+#endif
+
+ /* Create DisplayBase object */
+ DisplayBase Display;
+
+ /* Graphics initialization process */
+ error = Display.Graphics_init(NULL);
+ if (error != DisplayBase::GRAPHICS_OK) {
+ printf("Line %d, error %d\n", __LINE__, error);
+ while (1);
+ }
+
+#if VIDEO_INPUT_METHOD == VIDEO_CVBS
+ error = Display.Graphics_Video_init( DisplayBase::INPUT_SEL_VDEC, NULL);
+ if( error != DisplayBase::GRAPHICS_OK ) {
+ printf("Line %d, error %d\n", __LINE__, error);
+ while(1);
+ }
+
+#elif VIDEO_INPUT_METHOD == VIDEO_CMOS_CAMERA
+ /* MT9V111 camera input config */
+ ext_in_config.inp_format = DisplayBase::VIDEO_EXTIN_FORMAT_BT601; /* BT601 8bit YCbCr format */
+ ext_in_config.inp_pxd_edge = DisplayBase::EDGE_RISING; /* Clock edge select for capturing data */
+ ext_in_config.inp_vs_edge = DisplayBase::EDGE_RISING; /* Clock edge select for capturing Vsync signals */
+ ext_in_config.inp_hs_edge = DisplayBase::EDGE_RISING; /* Clock edge select for capturing Hsync signals */
+ ext_in_config.inp_endian_on = DisplayBase::OFF; /* External input bit endian change on/off */
+ ext_in_config.inp_swap_on = DisplayBase::OFF; /* External input B/R signal swap on/off */
+ ext_in_config.inp_vs_inv = DisplayBase::SIG_POL_NOT_INVERTED; /* External input DV_VSYNC inversion control */
+ ext_in_config.inp_hs_inv = DisplayBase::SIG_POL_INVERTED; /* External input DV_HSYNC inversion control */
+ ext_in_config.inp_f525_625 = DisplayBase::EXTIN_LINE_525; /* Number of lines for BT.656 external input */
+ ext_in_config.inp_h_pos = DisplayBase::EXTIN_H_POS_CRYCBY; /* Y/Cb/Y/Cr data string start timing to Hsync reference */
+ ext_in_config.cap_vs_pos = 6; /* Capture start position from Vsync */
+ ext_in_config.cap_hs_pos = 150; /* Capture start position form Hsync */
+ ext_in_config.cap_width = 640; /* Capture width */
+ ext_in_config.cap_height = 468u; /* Capture height Max 468[line]
+ Due to CMOS(MT9V111) output signal timing and VDC5 specification */
+ error = Display.Graphics_Video_init( DisplayBase::INPUT_SEL_EXT, &ext_in_config);
+ if( error != DisplayBase::GRAPHICS_OK ) {
+ printf("Line %d, error %d\n", __LINE__, error);
+ while(1);
+ }
+
+ /* MT9V111 camera input port setting */
+ error = Display.Graphics_Dvinput_Port_Init(cmos_camera_pin, 11);
+ if( error != DisplayBase::GRAPHICS_OK ) {
+ printf("Line %d, error %d\n", __LINE__, error);
+ while (1);
+ }
+#endif
+
+ /* Interrupt callback function setting (Vsync signal input to scaler 0) */
+ error = Display.Graphics_Irq_Handler_Set(DisplayBase::INT_TYPE_S0_VI_VSYNC, 0, IntCallbackFunc_Vsync);
+ if (error != DisplayBase::GRAPHICS_OK) {
+ printf("Line %d, error %d\n", __LINE__, error);
+ while (1);
+ }
+ /* Video capture setting (progressive form fixed) */
+ error = Display.Video_Write_Setting(
+ VIDEO_INPUT_CH,
+#if VIDEO_PAL == 0
+ DisplayBase::COL_SYS_NTSC_358,
+#else
+ DisplayBase::COL_SYS_PAL_443,
+#endif
+ FrameBuffer_Video,
+ VIDEO_BUFFER_STRIDE,
+#if VIDEO_INPUT_FORMAT == VIDEO_YCBCR422
+ DisplayBase::VIDEO_FORMAT_YCBCR422,
+ DisplayBase::WR_RD_WRSWA_NON,
+#elif VIDEO_INPUT_FORMAT == VIDEO_RGB565
+ DisplayBase::VIDEO_FORMAT_RGB565,
+ DisplayBase::WR_RD_WRSWA_32_16BIT,
+#else
+ DisplayBase::VIDEO_FORMAT_RGB888,
+ DisplayBase::WR_RD_WRSWA_32BIT,
+#endif
+ PIXEL_VW,
+ PIXEL_HW
+ );
+ if (error != DisplayBase::GRAPHICS_OK) {
+ printf("Line %d, error %d\n", __LINE__, error);
+ while (1);
+ }
+
+ /* Interrupt callback function setting (Field end signal for recording function in scaler 0) */
+ error = Display.Graphics_Irq_Handler_Set(VIDEO_INT_TYPE, 0, IntCallbackFunc_Vfield);
+ if (error != DisplayBase::GRAPHICS_OK) {
+ printf("Line %d, error %d\n", __LINE__, error);
+ while (1);
+ }
+
+ /* Video write process start */
+ error = Display.Video_Start (VIDEO_INPUT_CH);
+ if (error != DisplayBase::GRAPHICS_OK) {
+ printf("Line %d, error %d\n", __LINE__, error);
+ while (1);
+ }
+
+ /* Video write process stop */
+ error = Display.Video_Stop (VIDEO_INPUT_CH);
+ if (error != DisplayBase::GRAPHICS_OK) {
+ printf("Line %d, error %d\n", __LINE__, error);
+ while (1);
+ }
+
+ /* Video write process start */
+ error = Display.Video_Start (VIDEO_INPUT_CH);
+ if (error != DisplayBase::GRAPHICS_OK) {
+ printf("Line %d, error %d\n", __LINE__, error);
+ while (1);
+ }
+
+ /* Wait vsync to update resister */
+ WaitVsync(1);
+}
+
+static int snapshot_req(const char ** pp_data) {
+ JPEG_Converter Jcu;
+ size_t encode_size;
+ JPEG_Converter::bitmap_buff_info_t bitmap_buff_info;
+ JPEG_Converter::encode_options_t encode_options;
+
+ while ((vfield_count == 0) || (image_change == 0)) {
+ Thread::wait(1);
+ }
+ image_change = 0;
+
+ bitmap_buff_info.width = PIXEL_HW;
+ bitmap_buff_info.height = PIXEL_VW;
+ bitmap_buff_info.format = JPEG_Converter::WR_RD_YCbCr422;
+ bitmap_buff_info.buffer_address = (void *)FrameBuffer_Video;
+
+ encode_options.encode_buff_size = sizeof(JpegBuffer);
+
+ if (Jcu.encode(&bitmap_buff_info, JpegBuffer, &encode_size, &encode_options) == JPEG_Converter::JPEG_CONV_OK) {
+ *pp_data = (const char *)JpegBuffer;
+ } else {
+ *pp_data = NULL;
+ encode_size = 0;
+ }
+
+ return (int)encode_size;
+}
+
+static void TerminalWrite(Arguments* arg, Reply* r) {
+ printf("%s\n",arg->argv[0]);
+}
+
+static void mount_romramfs(void) {
+ FILE * fp;
+
+ romramfs.format();
+
+ //camera.js
+ fp = fopen("/romram/camera.js", "w");
+ fwrite(camaera_js_tbl, sizeof(char), sizeof(camaera_js_tbl), fp);
+ fclose(fp);
+
+ //camera.htm
+ fp = fopen("/romram/camera.htm", "w");
+ fwrite(camera_htm_tbl, sizeof(char), sizeof(camera_htm_tbl), fp);
+ fclose(fp);
+
+ //mbedrpc.js
+ fp = fopen("/romram/mbedrpc.js", "w");
+ fwrite(mbedrpc_js_tbl, sizeof(char), sizeof(mbedrpc_js_tbl), fp);
+ fclose(fp);
+
+ //led.htm
+ fp = fopen("/romram/led.htm", "w");
+ fwrite(led_htm_tbl, sizeof(char), sizeof(led_htm_tbl), fp);
+ fclose(fp);
+}
+
+int main(void) {
+ printf("********* PROGRAM START ***********\r\n");
+
+ mount_romramfs(); //RomRamFileSystem Mount
+ camera_start(); //Camera Start
+
+ RPC::add_rpc_class<RpcDigitalOut>();
+ RPC::construct<RpcDigitalOut, PinName, const char*>(LED1, "led1");
+ RPC::construct<RpcDigitalOut, PinName, const char*>(LED2, "led2");
+ RPC::construct<RpcDigitalOut, PinName, const char*>(LED3, "led3");
+ RPCFunction rpcFunc(TerminalWrite, "TerminalWrite");
+
+ printf("EthernetInterface Setting up...\r\n");
+ if (eth.init() != 0) { //for DHCP Server
+// if (eth.init("192.168.0.2","255.255.255.0","192.168.0.3") != 0) { //for Static IP Address (IPAddress, NetMasks, Gateway)
+ printf("EthernetInterface Initialize Error \r\n");
+ return -1;
+ }
+ if (eth.connect() != 0) {
+ printf("EthernetInterface Connect Error \r\n");
+ return -1;
+ }
+ printf("IP Address is %s\r\n", eth.getIPAddress());
+ printf("NetMask is %s\r\n", eth.getNetworkMask());
+ printf("Gateway Address is %s\r\n", eth.getGateway());
+ printf("Ethernet Setup OK\r\n");
+
+ SnapshotHandler::attach_req(&snapshot_req);
+ HTTPServerAddHandler<SnapshotHandler>("/camera"); //Camera
+ FSHandler::mount("/romram", "/");
+ HTTPServerAddHandler<FSHandler>("/");
+ HTTPServerAddHandler<RPCHandler>("/rpc");
+ HTTPServerStart(80);
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-rpc.lib Fri Aug 21 02:15:59 2015 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/teams/mbed/code/mbed-rpc/#325e3da833e1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-rtos.lib Fri Aug 21 02:15:59 2015 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/mbed_official/code/mbed-rtos/#21b438192b0f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Fri Aug 21 02:15:59 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/8ed44a420e5c \ No newline at end of file
