[Armadeus-commitlog] SF.net SVN: armadeus:[1194] trunk/buildroot/target/device/armadeus/linux/ kern
Brought to you by:
sszy
|
From: <ar...@us...> - 2009-03-31 10:25:21
|
Revision: 1194
http://armadeus.svn.sourceforge.net/armadeus/?rev=1194&view=rev
Author: artemys
Date: 2009-03-31 10:25:07 +0000 (Tue, 31 Mar 2009)
Log Message:
-----------
[LINUX] Add 2.6.29 Linux patches (copies from 2.6.27)
Added Paths:
-----------
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/013-armadeus-imxfb-improvements.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/014-armadeus-imxregs-add-lcd-bpix-mask.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/015-armadeus-logo-add_armadeus-project_tux.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/018-armadeus-i2c-imx-add_driver_to_linux_build_system.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/018-armadeus-i2c-imx.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/021-armadeus-apf9328.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/021-armadeus-apf9328_defconfig.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/023-armadeus-fblcd-kconfig.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/024-armadeus-apf9328-add_board_to_linux_build_system.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/030-armadeus-add_USB_registers.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/030-armadeus-imx-add_USB_ressources.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/030-armadeus-imx_udc-add_clock.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/030-armadeus-imx_udc-add_driver_to_linux_build_system.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/030-armadeus-imx_udc-change_source_sink_in_gadget_zero.to_fix
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/030-armadeus-imx_udc-deactivate_cdc_in_ether_c.to_fix
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/030-mike_lee-original_imx_udc.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/031-armadeus-updates_imx-udc_driver_for_new_kernels.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/040-armadeus-imx_mmc.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/040-armadeus-imxmmc-add_controller_driven_card_detection.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/040-armadeus-imxmmc-correct_some_freezes.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/041-armadeus-imx_irq.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/050-armadeus-add_custom_drivers_to_kconfig.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/063-armadeus-max1027-add_max1027_include.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/072-armadeus-add_backlight_machinfo_to_imxfb_h.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/073-armadeus-tsc2102.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/073-armadeus-tsc2102_integrate_driver_to_linux_build_system.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/074-armadeus-tsc2102-touchscreen-add_driver_to_linux_build_system.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/074-armadeus-tsc2102-touchscreen.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/075-armadeus-spi2-reg-irq-defines.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/076-arm-vmlinux-ld_script_patch_for_new_binutils.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/077-arm-checksyscalls.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/078-armadeus-set_imx_fb_info-sectio-mismatch.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/088-can-mcp2515.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/090-armadeus-alsa-create_imx-alsa_h.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/091-armadeus-alsa-add_imx_ssi_tsc2102_driver.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/092-armadeus-alsa-imx-ssi-tsc2102-integrate_driver_to_linux_build_system.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/093-armadeus-add_ssi_registers_definition.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/094-armadeus-rtc1374-legacy.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/095-armadeus-imx-ssi-add_driver.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/096-armadeus-clock-add_ssi_clk.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/097-armadeus-imx-dma-improvements.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/098-armadeus-imx-dma-announce_imx_is_supporting_scatter_gather.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/199-armadeus-hack_kernel_to_export_some_irq_handling_functions.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/220-apf27-pengu-fec-old.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/226-apf27-pengu-mx27-Camera_support.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/227-apf27-pengu-mx27-Add_simple_CPU_frequency_scaling_support.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/230-apf27-pengu-mx2_devices_full.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/231-apf27-pengu-mxc_i2c_driver.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/233-apf27-pengu-mx2_framebuffer_beta.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/234-apf27-armadeus-mx2_framebuffer_beta_update_for_2_6_27.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/235-apf27-pengu-make_pcm038_full_featured.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/235-apf27-pengu-pcm038-add_BSP_part_of_the_CPU_frequency_scaler.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/237-apf27-pengu-pcm970-Extend_to_current_development_status.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/238-apf27-pengu-mx27-Add_an_ALSA_driver_for_iMX27.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/238-apf27-pengu-pcm038-Add_ALSA_audio_support.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/239-apf27-armadeus-alsa-remove_mc13783_from_mx27_snd_driver_compilation.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/240-apf27-armadeus-fixe-bugs-drivers_mxc_nand.c.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/252-apf27-pengu-m27-we_can_do_DMA_chaining.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/256-apf27-pengu-mx27-Add_USB_resources_and_platform_devices.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/257-apf27-pengu-mx27-Add_EHCI_support.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/260-apf27-pengu-imxmmc-checkpatch_cleanup.as_reference
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/261-apf27-pengu-imxmmc-remove_unused_variables.as_reference
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/262-apf27-pengu-imxmmc-use_readl_writel.as_reference
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/263-apf27-pengu-imxmmc-use_ioresource_to_specify_DMA_request.as_reference
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/264-apf27-pengu-imxmmc-cleanup_DMA_handling.as_reference
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/265-apf27-pengu-imxmmc-make_platform_data_mandatory.as_reference
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/266-apf27-pengu-imxmmc-add_platform_specific_init_exit_functions.as_reference
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/267-apf27-pengu-imxmmc-remove_remaining_platform_specific_setup.as_reference
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/268-apf27-pengu-imxmmc-add_mx2_mx3_support.as_reference
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/269-apf27-pengu-imxmmc-use_clock_provided_from_platform_data.as_reference
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/270-apf27-armadeus-imxmmc-add_sdhc1_resources_to_arch_arm_mach-mx2_device.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/271-apf27-armadeus-imxmmc-add_missing_definitions_in_dma-mx1-mx2_h.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/273-apf27-armadeus-imxmmc-create_arch_arm_plat-mxc_include_mach_mmc_h.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/274-apf27-armadeus-imxmmc-correct_imxmmc_driver.as_reference
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/275-apf27-armadeus-imxmmc-add_missing_registers_to_imxmmc_h.as_reference
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/276-apf27-armadeus-imxmmc-allow_kconfig_selection_of_imxmmc_driver_for_mxc_platform_too.as_reference
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/280-apf27-armadeus-correct_bugs_in_clock_infrastructure.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/281-apf27-armadeus-add_apf27.c.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/282-apf27-armadeus-add_apf27_to_build_system.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/283-apf27-armadeus-add_dump_uart_registers_function_to_imx_serial_driver.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/285-apf27-armadeus-add_LQO43_to_mxcfb_modedb.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/286-apf27-armadeus-add_LQO57_to_mxcfb_modedb.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/287-apf27-armadeus-fix_usb_otg_int.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/288-apf27-set-ttySMX-ref-imx-uart.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/290-apf27-pengu-spi_addons.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/291-apf27-add_debug_support_with_UART1.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/292-apf27-armadeus-i2c-fix.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/293-apf27-armadeus-spi_imx-add_gpio_init_and_iMX27_support.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/294-apf27-armadeus-imxfb-create_imx_fb_h.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/294b-apf27-armadeus-imxfb-create_imxfb_h.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/295-apf27-armadeus-imxfb-modify_imxfb_device_name_for_freescale_driver.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/296-apf27-armadeus-imx27-usb-host1.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/297-apf27-armadeus-add_backlight_machinfo_to_plat_mxc_imxfb_h.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/297-apf27-armadeus-add_ethernet_PHY.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/299-apf27-armadeus-reboot.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/300-apf27-armadeus-jffs2_debug.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/301-apf27-armadeus-ssi-SSI1_TXD_is_an_ouput_not_an_input.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/302-apf27-armadeus-add_imx-alsa_h_to_plat-mxc_include_mach.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/303-apf27-armadeus-improve_mx2-dam_driver.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/304-apf27-armadeus-improve_mx2-ssi_driver.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/305-apf27-armadeus-separates_imx_and_mx2_alsa_build.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/310-apf27-armadeus-nfc-makes_it_compile_with_CONFIG_PM.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/311-apf27-armadeus-mx27-add_pm_infra.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/312-apf27-armadeus-ulpi-add_function_control_register_address.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/314-apf27-armadeus-ad9889.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/315-apf27-darius-mxc-watchdog.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/316-apf27-armadeus-watchdog-makes_darius_driver_work_on_mx27.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/317-apf27-armadeus-add_kconfig_option_to_use_imx_led_and_switch_for_powermanagement_test.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/318-apf27-pengu-mxc_add_vpu_driver.patch
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/convert_patches_to_p1.sh
Added: trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/013-armadeus-imxfb-improvements.patch
===================================================================
--- trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/013-armadeus-imxfb-improvements.patch (rev 0)
+++ trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/013-armadeus-imxfb-improvements.patch 2009-03-31 10:25:07 UTC (rev 1194)
@@ -0,0 +1,309 @@
+PATCH AUTOMATICALLY GENERATED
+DON'T EDIT IT OR YOUR MODIFICATIONS WILL BE LOST
+(Take a look at armadeus/target/linux/ directory to know how to generate it)
+--- linux-2.6.27.2.original/drivers/video/imxfb.c
++++ linux-2.6.27.2.mod/drivers/video/imxfb.c
+@@ -42,22 +42,48 @@
+ */
+ #define DEBUG_VAR 1
+
+-#include "imxfb.h"
++struct imxfb_info {
++ struct device *dev;
+
+-static struct imxfb_rgb def_rgb_16 = {
+- .red = { .offset = 8, .length = 4, },
+- .green = { .offset = 4, .length = 4, },
+- .blue = { .offset = 0, .length = 4, },
+- .transp = { .offset = 0, .length = 0, },
+-};
++ u_int max_bpp;
++ u_int max_xres;
++ u_int max_yres;
++
++ /*
++ * These are the addresses we mapped
++ * the framebuffer memory region to.
++ */
++ dma_addr_t map_dma;
++ u_char * map_cpu;
++ u_int map_size;
++
++ u_char * screen_cpu;
++ dma_addr_t screen_dma;
++ u_int palette_size;
++
++ dma_addr_t dbar1;
++ dma_addr_t dbar2;
++
++ u_int pcr;
++ u_int pwmr;
++ u_int lscr1;
++ u_int dmacr;
++ u_int cmap_inverse:1,
++ cmap_static:1,
++ unused:30;
+
+-static struct imxfb_rgb def_rgb_8 = {
+- .red = { .offset = 0, .length = 8, },
+- .green = { .offset = 0, .length = 8, },
+- .blue = { .offset = 0, .length = 8, },
+- .transp = { .offset = 0, .length = 0, },
++ void (*lcd_power)(int);
++ void (*backlight_power)(int);
+ };
+
++#define IMX_NAME "IMX"
++
++/*
++ * Minimum X and Y resolutions
++ */
++#define MIN_XRES 64
++#define MIN_YRES 64
++
+ static int imxfb_activate_var(struct fb_var_screeninfo *var, struct fb_info *info);
+
+ static inline u_int chan_to_field(u_int chan, struct fb_bitfield *bf)
+@@ -152,7 +178,6 @@
+ imxfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
+ {
+ struct imxfb_info *fbi = info->par;
+- int rgbidx;
+
+ if (var->xres < MIN_XRES)
+ var->xres = MIN_XRES;
+@@ -165,27 +190,39 @@
+ var->xres_virtual = max(var->xres_virtual, var->xres);
+ var->yres_virtual = max(var->yres_virtual, var->yres);
+
++ memset(&var->transp, 0, sizeof(var->transp));
++
+ pr_debug("var->bits_per_pixel=%d\n", var->bits_per_pixel);
+ switch (var->bits_per_pixel) {
+- case 16:
+- rgbidx = RGB_16;
+- break;
+ case 8:
+- rgbidx = RGB_8;
++ var->red.length = var->bits_per_pixel;
++ var->red.offset = 0;
++ var->green.length = var->bits_per_pixel;
++ var->green.offset = 0;
++ var->blue.length = var->bits_per_pixel;
++ var->blue.offset = 0;
++ break;
++ case 16:
++ if (fbi->pcr & PCR_TFT) {
++ var->red.length = 5;
++ var->red.offset = 11;
++ var->green.length = 6;
++ var->green.offset = 5;
++ var->blue.length = 5;
++ var->blue.offset = 0;
++ } else {
++ var->red.length = 4;
++ var->red.offset = 8;
++ var->green.length = 4;
++ var->green.offset = 4;
++ var->blue.length = 4;
++ var->blue.offset = 0;
++ }
+ break;
+ default:
+- rgbidx = RGB_16;
++ return -EINVAL;
+ }
+
+- /*
+- * Copy the RGB parameters for this display
+- * from the machine specific parameters.
+- */
+- var->red = fbi->rgb[rgbidx]->red;
+- var->green = fbi->rgb[rgbidx]->green;
+- var->blue = fbi->rgb[rgbidx]->blue;
+- var->transp = fbi->rgb[rgbidx]->transp;
+-
+ pr_debug("RGBT length = %d:%d:%d:%d\n",
+ var->red.length, var->green.length, var->blue.length,
+ var->transp.length);
+@@ -248,10 +285,11 @@
+
+ LCDC_RMCR = RMCR_LCDC_EN;
+
+- if(fbi->backlight_power)
+- fbi->backlight_power(1);
+ if(fbi->lcd_power)
+ fbi->lcd_power(1);
++ /* enable backlight after LCD */
++ if(fbi->backlight_power)
++ fbi->backlight_power(1);
+ }
+
+ static void imxfb_disable_controller(struct imxfb_info *fbi)
+@@ -312,6 +350,7 @@
+ pr_debug("var: yres=%d vslen=%d um=%d bm=%d\n",
+ var->yres, var->vsync_len,
+ var->upper_margin, var->lower_margin);
++ pr_debug("var: bpp=%d\n", var->bits_per_pixel);
+
+ #if DEBUG_VAR
+ if (var->xres < 16 || var->xres > 1024)
+@@ -349,10 +388,17 @@
+ VCR_V_WAIT_2(var->lower_margin);
+
+ LCDC_SIZE = SIZE_XMAX(var->xres) | SIZE_YMAX(var->yres);
+- LCDC_PCR = fbi->pcr;
+- LCDC_PWMR = fbi->pwmr;
+- LCDC_LSCR1 = fbi->lscr1;
+- LCDC_DMACR = fbi->dmacr;
++ // On TFT LCD i.MXL can support 16, 12, 8, 4bpp with the same hardware interface (12 to 16 bits)
++ // So if userspace app wants a 8bpp screen switch to 8bpp (can save ressources, with SDL for ex)
++ if( (var->bits_per_pixel == 8) && (fbi->pcr & PCR_TFT) )
++ {
++ pr_debug("Switching imxfb to 8bpp\n");
++ LCDC_PCR = (fbi->pcr & (~PCR_BPIX_MASK)) | PCR_BPIX_8 | PCR_END_BYTE_SWAP;
++ }
++ else
++ LCDC_PCR = fbi->pcr;
++
++ LCDC_VPW = VPW_VPW(var->xres * var->bits_per_pixel / 8 / 4);
+
+ return 0;
+ }
+@@ -391,7 +437,26 @@
+ case 1:
+ imx_gpio_mode(PD15_PF_LD0);
+ }
++#ifdef CONFIG_MACH_APF9328
++ /* initialize standard GPIOs */
++ imx_gpio_mode(PD6_PF_LSCLK);
++ imx_gpio_mode(PD14_PF_FLM_VSYNC);
++ imx_gpio_mode(PD13_PF_LP_HSYNC);
++// imx_gpio_mode(PD12_PF_ACD_OE);
+
++ /* if != 0 */
++ if( fbi->pwmr ) {
++ imx_gpio_mode(PD11_PF_CONTRAST);
++ }
++
++ /* sharp display specific */
++ if( fbi->pcr & PCR_SHARP ) {
++ imx_gpio_mode(PD10_PF_SPL_SPR);
++ imx_gpio_mode(PD7_PF_REV);
++ imx_gpio_mode(PD8_PF_CLS);
++ imx_gpio_mode(PD9_PF_PS);
++ }
++#else
+ /* initialize GPIOs */
+ imx_gpio_mode(PD6_PF_LSCLK);
+ imx_gpio_mode(PD11_PF_CONTRAST);
+@@ -406,6 +471,7 @@
+ imx_gpio_mode(PD9_PF_PS);
+ imx_gpio_mode(PD10_PF_SPL_SPR);
+ }
++#endif //CONFIG_MACH_APF9328
+ }
+
+ #ifdef CONFIG_PM
+@@ -469,9 +535,6 @@
+ info->fbops = &imxfb_ops;
+ info->flags = FBINFO_FLAG_DEFAULT;
+
+- fbi->rgb[RGB_16] = &def_rgb_16;
+- fbi->rgb[RGB_8] = &def_rgb_8;
+-
+ fbi->max_xres = inf->xres;
+ info->var.xres = inf->xres;
+ info->var.xres_virtual = inf->xres;
+@@ -596,6 +659,12 @@
+ imxfb_setup_gpio(fbi);
+
+ imxfb_set_par(info);
++ /* JB: The following parameters are only needed once at startup and so
++ removed from from imxfb_set_par()/imxfb_activate_var() */
++ LCDC_PWMR = fbi->pwmr;
++ LCDC_LSCR1 = fbi->lscr1;
++ LCDC_DMACR = fbi->dmacr;
++
+ ret = register_framebuffer(info);
+ if (ret < 0) {
+ dev_err(&pdev->dev, "failed to register framebuffer\n");
+PATCH AUTOMATICALLY GENERATED
+DON'T EDIT IT OR YOUR MODIFICATIONS WILL BE LOST
+(Take a look at armadeus/target/linux/ directory to know how to generate it)
+--- linux-2.6.27.2.original/drivers/video/imxfb.h
++++ linux-2.6.27.2.mod/drivers/video/imxfb.h
+@@ -1,73 +0,0 @@
+-/*
+- * linux/drivers/video/imxfb.h
+- *
+- * Freescale i.MX Frame Buffer device driver
+- *
+- * Copyright (C) 2004 S.Hauer, Pengutronix
+- *
+- * Copyright (C) 1999 Eric A. Thomas
+- * Based on acornfb.c Copyright (C) Russell King.
+- *
+- * This file is subject to the terms and conditions of the GNU General Public
+- * License. See the file COPYING in the main directory of this archive
+- * for more details.
+- */
+-
+-/*
+- * These are the bitfields for each
+- * display depth that we support.
+- */
+-struct imxfb_rgb {
+- struct fb_bitfield red;
+- struct fb_bitfield green;
+- struct fb_bitfield blue;
+- struct fb_bitfield transp;
+-};
+-
+-#define RGB_16 (0)
+-#define RGB_8 (1)
+-#define NR_RGB 2
+-
+-struct imxfb_info {
+- struct device *dev;
+- struct imxfb_rgb *rgb[NR_RGB];
+-
+- u_int max_bpp;
+- u_int max_xres;
+- u_int max_yres;
+-
+- /*
+- * These are the addresses we mapped
+- * the framebuffer memory region to.
+- */
+- dma_addr_t map_dma;
+- u_char * map_cpu;
+- u_int map_size;
+-
+- u_char * screen_cpu;
+- dma_addr_t screen_dma;
+- u_int palette_size;
+-
+- dma_addr_t dbar1;
+- dma_addr_t dbar2;
+-
+- u_int pcr;
+- u_int pwmr;
+- u_int lscr1;
+- u_int dmacr;
+- u_int cmap_inverse:1,
+- cmap_static:1,
+- unused:30;
+-
+- void (*lcd_power)(int);
+- void (*backlight_power)(int);
+-};
+-
+-#define IMX_NAME "IMX"
+-
+-/*
+- * Minimum X and Y resolutions
+- */
+-#define MIN_XRES 64
+-#define MIN_YRES 64
+-
Added: trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/014-armadeus-imxregs-add-lcd-bpix-mask.patch
===================================================================
--- trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/014-armadeus-imxregs-add-lcd-bpix-mask.patch (rev 0)
+++ trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/014-armadeus-imxregs-add-lcd-bpix-mask.patch 2009-03-31 10:25:07 UTC (rev 1194)
@@ -0,0 +1,10 @@
+--- linux-2.6.27.2/arch/arm/mach-imx/include/mach/imx-regs.h
++++ linux-2.6.27.2.mod/arch/arm/mach-imx/include/mach/imx-regs.h
+@@ -411,6 +411,7 @@
+ #define PCR_BPIX_8 (3<<25)
+ #define PCR_BPIX_12 (4<<25)
+ #define PCR_BPIX_16 (4<<25)
++#define PCR_BPIX_MASK (7<<25)
+ #define PCR_PIXPOL (1<<24)
+ #define PCR_FLMPOL (1<<23)
+ #define PCR_LPPOL (1<<22)
Added: trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/015-armadeus-logo-add_armadeus-project_tux.patch
===================================================================
--- trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/015-armadeus-logo-add_armadeus-project_tux.patch (rev 0)
+++ trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.29/015-armadeus-logo-add_armadeus-project_tux.patch 2009-03-31 10:25:07 UTC (rev 1194)
@@ -0,0 +1,19254 @@
+--- linux-2.6.23/drivers/video/logo/Kconfig 2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.23-imx/drivers/video/logo/Kconfig 2006-10-01 14:22:39.000000000 +0200
+@@ -70,5 +70,12 @@ config LOGO_M32R_CLUT224
+ depends on M32R
+ default y
+
++config LOGO_ARMADEUS_CLUT224
++ bool "224-color Armadeus Linux logo"
++ depends on ARM
++ default y
++ help
++ Choose this if you want to have the Armadeus Tux as boot logo
++
+ endif # LOGO
+
+--- linux-2.6.23/drivers/video/logo/logo_armadeus_clut224.ppm 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.23-imx/drivers/video/logo/logo_armadeus_clut224.ppm 2006-10-01 14:22:39.000000000 +0200
+@@ -0,0 +1,19205 @@
++P3
++# CREATOR: The GIMP's PNM Filter Version 1.0
++# Armadeus project 224 colors Tux logo
++80 80
++255
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++6
++6
++6
++6
++6
++6
++10
++10
++10
++10
++10
++10
++10
++10
++10
++6
++6
++6
++6
++6
++6
++6
++6
++6
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++6
++6
++6
++10
++10
++10
++14
++14
++14
++22
++22
++22
++26
++26
++26
++30
++30
++30
++34
++34
++34
++30
++30
++30
++30
++30
++30
++26
++26
++26
++18
++18
++18
++14
++14
++14
++10
++10
++10
++6
++6
++6
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++1
++0
++0
++1
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++6
++6
++6
++14
++14
++14
++26
++26
++26
++42
++42
++42
++54
++54
++54
++66
++66
++66
++78
++78
++78
++78
++78
++78
++78
++78
++78
++74
++74
++74
++66
++66
++66
++54
++54
++54
++42
++42
++42
++26
++26
++26
++18
++18
++18
++10
++10
++10
++6
++6
++6
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++1
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++10
++10
++10
++22
++22
++22
++42
++42
++42
++66
++66
++66
++86
++86
++86
++66
++66
++66
++38
++38
++38
++38
++38
++38
++22
++22
++22
++26
++26
++26
++34
++34
++34
++54
++54
++54
++66
++66
++66
++86
++86
++86
++70
++70
++70
++46
++46
++46
++26
++26
++26
++14
++14
++14
++6
++6
++6
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++1
++0
++0
++1
++0
++0
++1
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++10
++10
++10
++26
++26
++26
++50
++50
++50
++82
++82
++82
++58
++58
++58
++6
++6
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++6
++6
++6
++54
++54
++54
++86
++86
++86
++66
++66
++66
++38
++38
++38
++18
++18
++18
++6
++6
++6
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++6
++6
++6
++22
++22
++22
++50
++50
++50
++78
++78
++78
++34
++34
++34
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++6
++6
++6
++70
++70
++70
++78
++78
++78
++46
++46
++46
++22
++22
++22
++6
++6
++6
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++1
++0
++0
++1
++0
++0
++1
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++6
++6
++6
++18
++18
++18
++42
++42
++42
++82
++82
++82
++26
++26
++26
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++14
++14
++14
++46
++46
++46
++34
++34
++34
++6
++6
++6
++2
++2
++6
++42
++42
++42
++78
++78
++78
++42
++42
++42
++18
++18
++18
++6
++6
++6
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++1
++0
++0
++0
++0
++0
++1
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++10
++10
++10
++30
++30
++30
++66
++66
++66
++58
++58
++58
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++26
++26
++26
++86
++86
++86
++101
++101
++101
++46
++46
++46
++10
++10
++10
++2
++2
++6
++58
++58
++58
++70
++70
++70
++34
++34
++34
++10
++10
++10
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++1
++0
++0
++1
++0
++0
++1
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++14
++14
++14
++42
++42
++42
++86
++86
++86
++10
++10
++10
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++30
++30
++30
++94
++94
++94
++94
++94
++94
++58
++58
++58
++26
++26
++26
++2
++2
++6
++6
++6
++6
++78
++78
++78
++54
++54
++54
++22
++22
++22
++6
++6
++6
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++6
++6
++6
++22
++22
++22
++62
++62
++62
++62
++62
++62
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++26
++26
++26
++54
++54
++54
++38
++38
++38
++18
++18
++18
++10
++10
++10
++2
++2
++6
++2
++2
++6
++34
++34
++34
++82
++82
++82
++38
++38
++38
++14
++14
++14
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++1
++0
++0
++1
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++6
++6
++6
++30
++30
++30
++78
++78
++78
++30
++30
++30
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++10
++10
++10
++10
++10
++10
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++78
++78
++78
++50
++50
++50
++18
++18
++18
++6
++6
++6
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++1
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++10
++10
++10
++38
++38
++38
++86
++86
++86
++14
++14
++14
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++54
++54
++54
++66
++66
++66
++26
++26
++26
++6
++6
++6
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++1
++0
++0
++1
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++14
++14
++14
++42
++42
++42
++82
++82
++82
++2
++2
++6
++2
++2
++6
++2
++2
++6
++6
++6
++6
++10
++10
++10
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++6
++6
++6
++14
++14
++14
++10
++10
++10
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++18
++18
++18
++82
++82
++82
++34
++34
++34
++10
++10
++10
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++1
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++14
++14
++14
++46
++46
++46
++86
++86
++86
++2
++2
++6
++2
++2
++6
++6
++6
++6
++6
++6
++6
++22
++22
++22
++34
++34
++34
++6
++6
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++18
++18
++18
++34
++34
++34
++10
++10
++10
++50
++50
++50
++22
++22
++22
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++10
++10
++10
++86
++86
++86
++42
++42
++42
++14
++14
++14
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++1
++0
++0
++1
++0
++0
++1
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++14
++14
++14
++46
++46
++46
++86
++86
++86
++2
++2
++6
++2
++2
++6
++38
++38
++38
++116
++116
++116
++94
++94
++94
++22
++22
++22
++22
++22
++22
++2
++2
++6
++2
++2
++6
++2
++2
++6
++14
++14
++14
++86
++86
++86
++137
++137
++137
++161
++161
++161
++154
++153
++152
++38
++38
++38
++26
++26
++26
++6
++6
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++86
++86
++86
++46
++46
++46
++14
++14
++14
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++14
++14
++14
++46
++46
++46
++86
++86
++86
++2
++2
++6
++14
++14
++14
++134
++134
++134
++198
++198
++198
++195
++195
++195
++116
++116
++116
++10
++10
++10
++2
++2
++6
++2
++2
++6
++6
++6
++6
++101
++98
++89
++187
++187
++187
++210
++210
++210
++218
++218
++218
++214
++214
++214
++134
++134
++134
++14
++14
++14
++6
++6
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++86
++86
++86
++50
++50
++50
++18
++18
++18
++6
++6
++6
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++1
++0
++0
++0
++0
++0
++1
++0
++0
++1
++0
++0
++1
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++14
++14
++14
++46
++46
++46
++86
++86
++86
++2
++2
++6
++54
++54
++54
++218
++218
++218
++195
++195
++195
++226
++226
++226
++246
++246
++246
++58
++58
++58
++2
++2
++6
++2
++2
++6
++30
++30
++30
++210
++210
++210
++253
++253
++253
++173
++173
++172
++123
++123
++123
++221
++221
++221
++234
++234
++234
++74
++74
++74
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++70
++70
++70
++58
++58
++58
++22
++22
++22
++6
++6
++6
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++14
++14
++14
++46
++46
++46
++82
++82
++82
++2
++2
++6
++106
++106
++106
++171
++171
++170
++26
++26
++26
++86
++86
++86
++226
++226
++226
++123
++123
++123
++10
++10
++10
++14
++14
++14
++46
++46
++46
++231
++231
++231
++190
++190
++190
++6
++6
++6
++70
++70
++70
++90
++90
++90
++238
++238
++238
++159
++158
++157
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++70
++70
++70
++58
++58
++58
++22
++22
++22
++6
++6
++6
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++1
++0
++0
++0
++0
++0
++1
++0
++0
++1
++0
++0
++1
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++14
++14
++14
++42
++42
++42
++86
++86
++86
++6
++6
++6
++116
++116
++116
++106
++106
++106
++6
++6
++6
++70
++70
++70
++147
++147
++147
++127
++127
++127
++18
++18
++18
++38
++38
++38
++54
++54
++54
++221
++221
++221
++106
++106
++106
++2
++2
++6
++14
++14
++14
++46
++46
++46
++190
++190
++190
++198
++198
++198
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++74
++74
++74
++62
++62
++62
++22
++22
++22
++6
++6
++6
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++1
++0
++0
++0
++0
++0
++1
++0
++0
++0
++0
++0
++1
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++14
++14
++14
++42
++42
++42
++94
++94
++94
++14
++14
++14
++101
++101
++101
++127
++127
++127
++2
++2
++6
++18
++18
++18
++116
++116
++116
++130
++98
++46
++121
++92
++8
++121
++92
++8
++100
++78
++10
++161
++161
++161
++106
++106
++106
++2
++2
++6
++2
++2
++6
++2
++2
++6
++195
++195
++195
++195
++195
++195
++6
++6
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++74
++74
++74
++62
++62
++62
++22
++22
++22
++6
++6
++6
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++1
++0
++0
++1
++0
++0
++1
++0
++0
++0
++0
++0
++1
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++10
++10
++10
++38
++38
++38
++90
++90
++90
++14
++14
++14
++58
++58
++58
++210
++210
++210
++26
++26
++26
++52
++36
++6
++155
++116
++10
++226
++170
++11
++236
++186
++11
++225
++175
++15
++184
++144
++12
++215
++174
++15
++182
++146
++52
++37
++28
++9
++2
++2
++6
++70
++70
++70
++246
++246
++246
++137
++137
++137
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++70
++70
++70
++66
++66
++66
++26
++26
++26
++6
++6
++6
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++10
++10
++10
++38
++38
++38
++86
++86
++86
++14
++14
++14
++10
++10
++10
++195
++195
++195
++203
++179
++129
++192
++133
++9
++225
++175
++15
++239
++182
++13
++236
++190
++10
++232
++195
++16
++232
++200
++30
++245
++216
++46
++241
++208
++19
++232
++195
++16
++184
++144
++12
++203
++179
++129
++211
++206
++186
++42
++42
++42
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++50
++50
++50
++74
++74
++74
++30
++30
++30
++6
++6
++6
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++10
++10
++10
++34
++34
++34
++86
++86
++86
++14
++14
++14
++2
++2
++6
++121
++87
++25
++192
++133
++9
++219
++162
++10
++239
++182
++13
++236
++186
++11
++232
++195
++16
++241
++208
++19
++245
++216
++46
++245
++216
++46
++245
++216
++46
++246
++215
++20
++241
++208
++19
++241
++208
++19
++226
++184
++13
++121
++87
++25
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++50
++50
++50
++82
++82
++82
++34
++34
++34
++10
++10
++10
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++10
++10
++10
++34
++34
++34
++82
++82
++82
++30
++30
++30
++61
++42
++6
++180
++123
++7
++206
++145
++10
++230
++174
++11
++239
++182
++13
++236
++190
++10
++238
++202
++15
++241
++208
++19
++237
++201
++75
++245
++216
++46
++246
++215
++20
++246
++215
++20
++246
++215
++20
++226
++184
++13
++215
++174
++15
++184
++144
++12
++6
++6
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++26
++26
++26
++94
++94
++94
++42
++42
++42
++14
++14
++14
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++10
++10
++10
++30
++30
++30
++78
++78
++78
++50
++50
++50
++104
++69
++6
++192
++133
++9
++216
++158
++10
++236
++178
++12
++236
++186
++11
++232
++195
++16
++241
++208
++19
++245
++216
++46
++245
++216
++46
++246
++215
++20
++246
++215
++20
++241
++208
++19
++198
++155
++10
++200
++144
++11
++216
++158
++10
++155
++116
++10
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++6
++6
++6
++90
++90
++90
++54
++54
++54
++18
++18
++18
++6
++6
++6
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++10
++10
++10
++30
++30
++30
++78
++78
++78
++46
++46
++46
++22
++22
++22
++137
++92
++6
++210
++164
++10
++239
++182
++13
++236
++190
++10
++238
++202
++15
++241
++208
++19
++246
++215
++20
++246
++215
++20
++241
++208
++19
++210
++164
++10
++185
++133
++11
++210
++150
++10
++216
++158
++10
++210
++150
++10
++100
++78
++10
++2
++2
++6
++6
++6
++6
++54
++54
++54
++14
++14
++14
++2
++2
++6
++2
++2
++6
++62
++62
++62
++74
++74
++74
++30
++30
++30
++10
++10
++10
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++10
++10
++10
++34
++34
++34
++78
++78
++78
++50
++50
++50
++6
++6
++6
++80
++60
++22
++139
++102
++15
++190
++146
++13
++226
++184
++13
++232
++200
++30
++232
++195
++16
++215
++174
++15
++190
++146
++13
++168
++122
++10
++192
++133
++9
++210
++150
++10
++213
++154
++11
++202
++158
++25
++168
++150
++104
++101
++98
++89
++2
++2
++6
++2
++2
++6
++78
++78
++78
++116
++116
++116
++58
++58
++58
++2
++2
++6
++22
++22
++22
++90
++90
++90
++46
++46
++46
++18
++18
++18
++6
++6
++6
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++10
++10
++10
++38
++38
++38
++86
++86
++86
++50
++50
++50
++6
++6
++6
++127
++127
++127
++168
++150
++104
++156
++107
++11
++168
++122
++10
++198
++155
++10
++184
++144
++12
++197
++138
++11
++200
++144
++11
++206
++145
++10
++206
++145
++10
++197
++138
++11
++203
++179
++129
++195
++195
++195
++198
++198
++198
++173
++173
++172
++14
++14
++14
++2
++2
++6
++22
++22
++22
++116
++116
++116
++116
++116
++116
++22
++22
++22
++2
++2
++6
++74
++74
++74
++70
++70
++70
++30
++30
++30
++10
++10
++10
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++6
++6
++6
++18
++18
++18
++50
++50
++50
++101
++101
++101
++26
++26
++26
++10
++10
++10
++137
++137
++137
++190
++190
++190
++168
++150
++104
++156
++107
++11
++197
++138
++11
++200
++144
++11
++197
++138
++11
++192
++133
++9
++180
++123
++7
++190
++142
++34
++203
++179
++129
++187
++187
++187
++202
++202
++202
++221
++221
++221
++214
++214
++214
++66
++66
++66
++2
++2
++6
++2
++2
++6
++50
++50
++50
++62
++62
++62
++6
++6
++6
++2
++2
++6
++10
++10
++10
++90
++90
++90
++50
++50
++50
++18
++18
++18
++6
++6
++6
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++10
++10
++10
++34
++34
++34
++74
++74
++74
++74
++74
++74
++2
++2
++6
++6
++6
++6
++144
++144
++144
++198
++198
++198
++190
++190
++190
++170
++164
++156
++154
++121
++60
++156
++107
++11
++156
++107
++11
++168
++124
++44
++168
++150
++104
++187
++187
++187
++190
++190
++190
++210
++210
++210
++246
++246
++246
++253
++253
++253
++253
++253
++253
++182
++182
++182
++6
++6
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++62
++62
++62
++74
++74
++74
++34
++34
++34
++14
++14
++14
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++10
++10
++10
++22
++22
++22
++54
++54
++54
++94
++94
++94
++18
++18
++18
++2
++2
++6
++46
++46
++46
++234
++234
++234
++221
++221
++221
++190
++190
++190
++190
++190
++190
++190
++190
++190
++187
++187
++187
++187
++187
++187
++190
++190
++190
++190
++190
++190
++195
++195
++195
++214
++214
++214
++242
++242
++242
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++82
++82
++82
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++14
++14
++14
++86
++86
++86
++54
++54
++54
++22
++22
++22
++6
++6
++6
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++6
++6
++6
++18
++18
++18
++46
++46
++46
++90
++90
++90
++46
++46
++46
++18
++18
++18
++6
++6
++6
++182
++182
++182
++253
++253
++253
++246
++246
++246
++206
++206
++206
++190
++190
++190
++190
++190
++190
++190
++190
++190
++190
++190
++190
++190
++190
++190
++206
++206
++206
++231
++231
++231
++250
++250
++250
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++202
++202
++202
++14
++14
++14
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++42
++42
++42
++86
++86
++86
++42
++42
++42
++18
++18
++18
++6
++6
++6
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++6
++6
++6
++14
++14
++14
++38
++38
++38
++74
++74
++74
++66
++66
++66
++2
++2
++6
++6
++6
++6
++90
++90
++90
++250
++250
++250
++253
++253
++253
++253
++253
++253
++238
++238
++238
++198
++198
++198
++190
++190
++190
++190
++190
++190
++195
++195
++195
++221
++221
++221
++246
++246
++246
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++82
++82
++82
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++78
++78
++78
++70
++70
++70
++34
++34
++34
++14
++14
++14
++6
++6
++6
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++14
++14
++14
++34
++34
++34
++66
++66
++66
++78
++78
++78
++6
++6
++6
++2
++2
++6
++18
++18
++18
++218
++218
++218
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++246
++246
++246
++226
++226
++226
++231
++231
++231
++246
++246
++246
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++179
++179
++178
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++18
++18
++18
++90
++90
++90
++62
++62
++62
++30
++30
++30
++10
++10
++10
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
++10
++10
++10
++26
++26
++26
++58
++58
++58
++90
++90
++90
++18
++18
++18
++2
++2
++6
++2
++2
++6
++111
++111
++110
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++250
++250
++250
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++253
++231
++231
++231
++18
++18
++18
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++2
++2
++6
++18
++18
++18
++94
++94
++94
++54
++54
++54
++26
++26
++26
++10
++10
++10
++0
++0
++0
++0
++0
++0
++0
++0
++0
++0
+...
[truncated message content] |