From 8b19c376591d8f973f9a50014294339a4b92019f Mon Sep 17 00:00:00 2001 From: Threebow Date: Sat, 8 Dec 2018 10:01:10 -0800 Subject: [PATCH 001/130] eeeeeeeeEEEEEEEEEEEEEEEEEEEEEEEEE --- e.html | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/e.html b/e.html index 1666041..5ff09b9 100644 --- a/e.html +++ b/e.html @@ -2,11 +2,23 @@ - + e + -

e

+

e

+ + - \ No newline at end of file + From 49c77626eb65824857aac28c77c32f40ba10cd6b Mon Sep 17 00:00:00 2001 From: "Franc[e]sco" Date: Sat, 8 Dec 2018 23:23:15 +0100 Subject: [PATCH 002/130] eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee --- eaas.sh | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100755 eaas.sh diff --git a/eaas.sh b/eaas.sh new file mode 100755 index 0000000..082c539 --- /dev/null +++ b/eaas.sh @@ -0,0 +1,9 @@ +#!/bin/sh +# e as a service +# usage: +# ./eaas.sh +# xdg-open http://127.0.0.1:3333 +while true; do + ( printf "HTTP/1.0 200 OK\r\n\r\n" && yes e ) | + nc -w 1 -l -p 3333 +done From 44fce728165daae038927121515b5bc4f59864bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=98=A1=CB=9A?= <0x0001F36D@gmail.com> Date: Sun, 9 Dec 2018 07:12:50 +0800 Subject: [PATCH 003/130] Update e.cc --- e.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e.cc b/e.cc index a276b4a..01551a4 100644 --- a/e.cc +++ b/e.cc @@ -4,6 +4,6 @@ using namespace std; int main() { - for(;;) cout << "e"; + while('e') cout << "e"; return 'e'; } From 43a35cafde2150d997f2039f0551318b1d8fb7c0 Mon Sep 17 00:00:00 2001 From: "Igor H. Vieira" Date: Sat, 8 Dec 2018 21:32:31 -0200 Subject: [PATCH 004/130] zig can e too --- e.zig | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 e.zig diff --git a/e.zig b/e.zig new file mode 100644 index 0000000..50e21fb --- /dev/null +++ b/e.zig @@ -0,0 +1,8 @@ +const std = @import("std"); + +pub fn main() !void { + var stdout_file = try std.io.getStdOut(); + while (true) { + try stdout_file.write("e"); + } +} From 54fbf7a3923bfccb58d347e293c7cddee3873c63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=98=A1=CB=9A?= <0x0001F36D@gmail.com> Date: Sun, 9 Dec 2018 07:49:14 +0800 Subject: [PATCH 005/130] eeeeeeeeeeee(arduino) --- e.ino | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 e.ino diff --git a/e.ino b/e.ino new file mode 100644 index 0000000..1e593ae --- /dev/null +++ b/e.ino @@ -0,0 +1,10 @@ +#define e 'e' +#define eee uint32_t(e-e/e) +void setup(){ + Serial.begin(eee*eee*eee); + while(!Serial); +} +void loop(){ + Serial.print(e); + delay(e); +} From 45a4fe77555da2c91316b34ef62388bdba5ec868 Mon Sep 17 00:00:00 2001 From: Wei-Chien Hsu Date: Sat, 8 Dec 2018 18:31:54 -0600 Subject: [PATCH 006/130] Epdate Eondition "e".equals("e") eeeee e e e e e e e e `"e".equals("e")` ee, eeeee? eeeee!! eeeee :) --- e.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/e.java b/e.java index 550035d..27dcb60 100644 --- a/e.java +++ b/e.java @@ -1,8 +1,8 @@ public class e { public static void main(String[] args) { - while(true) { - System.out.print("e"); + while("e".equals("e") { + System.out.println("e"); } } } From b0a801bb4b64b05bbcdba460a5b83a0d3076bd6d Mon Sep 17 00:00:00 2001 From: iliyan <18247476+okay@users.noreply.github.com> Date: Sat, 8 Dec 2018 20:33:26 -0500 Subject: [PATCH 007/130] add fortran 77 e eeeeeeeeeeeeeeeeeee --- e.f77 | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 e.f77 diff --git a/e.f77 b/e.f77 new file mode 100644 index 0000000..978d145 --- /dev/null +++ b/e.f77 @@ -0,0 +1,3 @@ +PROGRAM E +PRINT*, 'e' +END From 59bb5d10ddb112556ce77f35192c00837887dd52 Mon Sep 17 00:00:00 2001 From: iliyan <18247476+okay@users.noreply.github.com> Date: Sat, 8 Dec 2018 20:38:05 -0500 Subject: [PATCH 008/130] add e in j programming language eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee --- e.j | 1 + 1 file changed, 1 insertion(+) create mode 100644 e.j diff --git a/e.j b/e.j new file mode 100644 index 0000000..fc1ce2a --- /dev/null +++ b/e.j @@ -0,0 +1 @@ +'e' 1!:2(2) From 8c4466bbe037ec299741b6d927060bcbda4f3e74 Mon Sep 17 00:00:00 2001 From: iliyan <18247476+okay@users.noreply.github.com> Date: Sat, 8 Dec 2018 20:41:58 -0500 Subject: [PATCH 009/130] whoops i forgot to actually make it an ijs file --- e.j => e.ijs | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename e.j => e.ijs (100%) diff --git a/e.j b/e.ijs similarity index 100% rename from e.j rename to e.ijs From cfd19a21495b8918b1eba3817bbb6208d7624f39 Mon Sep 17 00:00:00 2001 From: TwiN Date: Sat, 8 Dec 2018 20:50:27 -0500 Subject: [PATCH 010/130] e - eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee - eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee - eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee - eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee --- e.properies | 1 + 1 file changed, 1 insertion(+) create mode 100644 e.properies diff --git a/e.properies b/e.properies new file mode 100644 index 0000000..9ef7208 --- /dev/null +++ b/e.properies @@ -0,0 +1 @@ +e=e From 0d69e3778d04e6d228aa61598fb5da123f0548eb Mon Sep 17 00:00:00 2001 From: Raatty <39517058+Raatty@users.noreply.github.com> Date: Sun, 9 Dec 2018 15:07:35 +1300 Subject: [PATCH 011/130] E? --- e.flutter.dart | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 e.flutter.dart diff --git a/e.flutter.dart b/e.flutter.dart new file mode 100644 index 0000000..519833c --- /dev/null +++ b/e.flutter.dart @@ -0,0 +1,17 @@ +import 'package:flutter/material.dart'; + +void main() => runApp(E()); + +class E extends StatelessWidget { + @override + Widget build(BuildContext context) { + return MaterialApp( + home: Center( + child: Text( + 'E', + textScaleFactor: 5.0, + ), + ), + ); + } +} From e929eb600960984f680d8e15300000e0880e0aba Mon Sep 17 00:00:00 2001 From: Nicholas Pisacane Date: Sat, 8 Dec 2018 18:38:45 -0800 Subject: [PATCH 012/130] add mips assembly example --- e_mips.asm | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 e_mips.asm diff --git a/e_mips.asm b/e_mips.asm new file mode 100644 index 0000000..043f51f --- /dev/null +++ b/e_mips.asm @@ -0,0 +1,8 @@ + .data +echar: .ascii "e" + .text +e: + li $v0, 4 + la $a0, echar + syscall + j e From 3c3d9291b2143f9e695cd0b91c99a65b94031ff3 Mon Sep 17 00:00:00 2001 From: Wei-Chien Hsu Date: Sat, 8 Dec 2018 21:20:57 -0600 Subject: [PATCH 013/130] eeeee eeee () MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🚧 eeeee ("e".equals("e") 🔨 eeeee ("e".equals("e")) --- e.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e.java b/e.java index 27dcb60..e8bafbe 100644 --- a/e.java +++ b/e.java @@ -1,7 +1,7 @@ public class e { public static void main(String[] args) { - while("e".equals("e") { + while("e".equals("e")) { System.out.println("e"); } } From f50893844f48e47e36609bbdf024a4e27ce71ed4 Mon Sep 17 00:00:00 2001 From: Viktor Oreshkin Date: Sun, 9 Dec 2018 06:38:03 +0300 Subject: [PATCH 014/130] julieeeeeea --- eeee.jl | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 eeee.jl diff --git a/eeee.jl b/eeee.jl new file mode 100644 index 0000000..ead6457 --- /dev/null +++ b/eeee.jl @@ -0,0 +1,3 @@ +while true + print("e") +end From 8741616dd59262caad97dcafff3e2a088a7a8357 Mon Sep 17 00:00:00 2001 From: Viktor Oreshkin Date: Sun, 9 Dec 2018 07:18:52 +0300 Subject: [PATCH 015/130] apleeeeeeeeeeeeeeees --- e_iOS_arm32.S | 14 ++++++++++++++ e_iOS_arm64.S | 14 ++++++++++++++ e_macOS_32.S | 14 ++++++++++++++ e_macOS_64.S | 12 ++++++++++++ 4 files changed, 54 insertions(+) create mode 100644 e_iOS_arm32.S create mode 100644 e_iOS_arm64.S create mode 100644 e_macOS_32.S create mode 100644 e_macOS_64.S diff --git a/e_iOS_arm32.S b/e_iOS_arm32.S new file mode 100644 index 0000000..85105e0 --- /dev/null +++ b/e_iOS_arm32.S @@ -0,0 +1,14 @@ +# xcrun -sdk iphoneos clang -arch armv7 e_iOS_arm32.S -o e +.align 2 +eeee: + .asciz "eee" +.globl _main +.align 2 +_main: +eeeeeeeeeeeeeeeeeeeeeee: + mov r0, 1 + adr r1, eeee + mov r2, 3 + mov r12, 0x4 + svc 0x80 + b eeeeeeeeeeeeeeeeeeeeeee diff --git a/e_iOS_arm64.S b/e_iOS_arm64.S new file mode 100644 index 0000000..49e6484 --- /dev/null +++ b/e_iOS_arm64.S @@ -0,0 +1,14 @@ +# xcrun -sdk iphoneos clang -arch arm64 e_iOS_arm64.S -o eeee +.align 2 +eeee: + .asciz "eee" +.globl _main +.align 2 +_main: +eeeeeeeeeeeeeeeeeeeeeee: + movz x0, 1 + adr x1, eeee + mov x2, 3 + movz x16, 0x4 + svc 0x80 + b eeeeeeeeeeeeeeeeeeeeeee diff --git a/e_macOS_32.S b/e_macOS_32.S new file mode 100644 index 0000000..532feaf --- /dev/null +++ b/e_macOS_32.S @@ -0,0 +1,14 @@ +# clang -m32 e_macOS_32.S -o eeeeee && ./eeeeee +.globl _main +.text +_main: + pushl $0x65656565 + pushl $4 + lea 4(%esp), %eax + pushl %eax + pushl $1 + pushl $0x7374656b +eee: + movl $4, %eax + int $0x80 + jmp eee diff --git a/e_macOS_64.S b/e_macOS_64.S new file mode 100644 index 0000000..7d7b2a1 --- /dev/null +++ b/e_macOS_64.S @@ -0,0 +1,12 @@ +# clang e_macOS_64.S -o eeeee && ./eeeee +.globl _main +.text +_main: + pushq $0x65656565 +eee: + movq $0x2000004, %rax + movq $1, %rdi + movq %rsp, %rsi + movq $4, %rdx + syscall + jmp eee From 894ccab96b7228f009ae44b6ece793fca4439e2a Mon Sep 17 00:00:00 2001 From: Azure <961523404@qq.com> Date: Sun, 9 Dec 2018 12:31:23 +0800 Subject: [PATCH 016/130] Add e.cpp --- e.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 e.cpp diff --git a/e.cpp b/e.cpp new file mode 100644 index 0000000..369fcef --- /dev/null +++ b/e.cpp @@ -0,0 +1,13 @@ +#include +using namespace std; + +int main() +{ + while(true) + { + cout << 'e'; + cerr << 'e'; + } + + return 'e'; +} From d88f09cc139acb89be3a68b33e6ab666989a7547 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=98=A1=CB=9A?= <0x0001F36D@gmail.com> Date: Sun, 9 Dec 2018 12:49:49 +0800 Subject: [PATCH 017/130] Create e.fsharp.fs --- e.fsharp.fs | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 e.fsharp.fs diff --git a/e.fsharp.fs b/e.fsharp.fs new file mode 100644 index 0000000..6e93bfc --- /dev/null +++ b/e.fsharp.fs @@ -0,0 +1,5 @@ +[] +let e ee = + while 'e' = 'e' do + printf "e" + int 'e' From ae73254d3780330f1967194aaea44ddff7d4e4e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=98=A1=CB=9A?= <0x0001F36D@gmail.com> Date: Sun, 9 Dec 2018 13:05:58 +0800 Subject: [PATCH 018/130] (MSIL) eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee --- e.il | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 e.il diff --git a/e.il b/e.il new file mode 100644 index 0000000..b08982b --- /dev/null +++ b/e.il @@ -0,0 +1,36 @@ +.class private auto ansi beforefieldinit eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee + extends [mscorlib]System.Object +{ + .method private hidebysig static + void Main ( + string[] args + ) cil managed + { + .maxstack 1 + .entrypoint + .locals init ( + [0] bool + ) + + IL_0000: nop + IL_0001: br.s IL_000B + // (char)101 == 'e' + IL_0003: ldc.i4.s 101 + IL_0005: call void [mscorlib]System.Console::Write(char) + IL_000A: nop + IL_000B: ldc.i4.1 + IL_000C: stloc.0 + IL_000D: br.s IL_0003 + } + + .method public hidebysig specialname rtspecialname + instance void .ctor () cil managed + { + .maxstack 8 + + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: nop + IL_0007: ret + } +} From fc176ad1fce16a11ef272afcd523bd73c5a0ebc1 Mon Sep 17 00:00:00 2001 From: Azure <961523404@qq.com> Date: Sun, 9 Dec 2018 13:06:50 +0800 Subject: [PATCH 019/130] eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee --- e.cpp | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/e.cpp b/e.cpp index 369fcef..33510ad 100644 --- a/e.cpp +++ b/e.cpp @@ -1,13 +1,29 @@ #include -using namespace std; +#define e using +#define ee namespace +#define eee std +#define eeee ; +#define eeeee int +#define eeeeee main +#define eeeeeee ( +#define eeeeeeee ) +#define eeeeeeeee while +#define eeeeeeeeee true +#define eeeeeeeeeee { +#define eeeeeeeeeeee } +#define eeeeeeeeeeeee cout +#define eeeeeeeeeeeeee cerr +#define eeeeeeeeeeeeeee << +#define eeeeeeeeeeeeeeee 'e' +#define eeeeeeeeeeeeeeeee return -int main() -{ - while(true) - { - cout << 'e'; - cerr << 'e'; - } - - return 'e'; -} +e ee eee eeee +eeeee eeeeee eeeeeee eeeeeeee +eeeeeeeeeee +eeeeeeeee eeeeeee eeeeeeeeee eeeeeeee +eeeeeeeeeee +eeeeeeeeeeeee eeeeeeeeeeeeeee eeeeeeeeeeeeeeee eeee +eeeeeeeeeeeeee eeeeeeeeeeeeeee eeeeeeeeeeeeeeee eeee +eeeeeeeeeeee +eeeeeeeeeeeeeeeee eeeeeeeeeeeeeeee eeee +eeeeeeeeeeee From adfef76149d8d75eba32071f16d0bc0ca5c277e3 Mon Sep 17 00:00:00 2001 From: quaternary Date: Sun, 9 Dec 2018 00:16:03 -0500 Subject: [PATCH 020/130] add Scratch 2.0 file e.sb2 e --- e.sb2 | Bin 0 -> 44038 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 e.sb2 diff --git a/e.sb2 b/e.sb2 new file mode 100644 index 0000000000000000000000000000000000000000..259633e04fc40b3db9e370ddaa2d7b5085f583fc GIT binary patch literal 44038 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 literal 0 HcmV?d00001 From d3ba7f2d029778656793b9e76e4bb022a08899db Mon Sep 17 00:00:00 2001 From: Ben Barth Date: Sun, 9 Dec 2018 00:36:50 -0500 Subject: [PATCH 021/130] print() instead of println() --- e.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e.kt b/e.kt index f6f6c29..e76cb64 100644 --- a/e.kt +++ b/e.kt @@ -1,5 +1,5 @@ fun main(args: Array) { while (true) { - println("e") + print("e") } } From 021dcceb9b07ccfef079442f2fd3a29d8af9c800 Mon Sep 17 00:00:00 2001 From: Michael Rojas Date: Sat, 8 Dec 2018 23:03:30 -0700 Subject: [PATCH 022/130] e.scm scheme --- .scm | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .scm diff --git a/.scm b/.scm new file mode 100644 index 0000000..4e2ec38 --- /dev/null +++ b/.scm @@ -0,0 +1,4 @@ +(define (e) + (display "e") + (e)) +(e) From 603fd80bb0a48ccc4714a1bc7deda1c2d954e82e Mon Sep 17 00:00:00 2001 From: Michael Rojas Date: Sat, 8 Dec 2018 23:06:06 -0700 Subject: [PATCH 023/130] Rename .scm to e.scm --- .scm => e.scm | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .scm => e.scm (100%) diff --git a/.scm b/e.scm similarity index 100% rename from .scm rename to e.scm From 4868564b1ba8cecff02d52e446685c19a926e436 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=98=A1=CB=9A?= <0x0001F36D@gmail.com> Date: Sun, 9 Dec 2018 14:36:18 +0800 Subject: [PATCH 024/130] (Markdown) eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee --- e.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 e.md diff --git a/e.md b/e.md new file mode 100644 index 0000000..621cf60 --- /dev/null +++ b/e.md @@ -0,0 +1,13 @@ +# eeeeeeeeeeeeee eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee eee eeeeeeeeeeeeeeeeeeeee +- ## eeeeeee + > eeeeeeeeeeee ee eeeeeeeee eeeeeeeeeeeeee *_*eeeeeeeeeeeeeeeeeeee eeeeeee eeee eeeeeeeeeeeeeeeeeeee eee eeeeeeeeee*_* eeeee eeeeeeeeee + eeeee eeeee eeeeeeeeeeeeeeee eeeeeeeeeeeee e eeeeeeeeeeee +- ## eeeeeeeeee e + + | eeee |eeeeeeeee e eee| + | :----: | :----------: | + | e | e eeee e eeeeeeeeee eee| + |ee eeeeeeeeee e | ee e eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee | + +- ## ee eeeeeeee eee +[eeeeeeeeeeeeeeee eee eeeeeeeeeeeeeeeeeeeeee e eeeeee](http://e.ee) From eb176a5cd0118a901e59bbb9f2190108175a3914 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=98=A1=CB=9A?= <0x0001F36D@gmail.com> Date: Sun, 9 Dec 2018 15:04:07 +0800 Subject: [PATCH 025/130] (WebAssembly) eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee --- e.wat | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 e.wat diff --git a/e.wat b/e.wat new file mode 100644 index 0000000..f26f5c8 --- /dev/null +++ b/e.wat @@ -0,0 +1,18 @@ +(module + (type $FUNCSIG$ii (func (param i32) (result i32))) + (import "env" "putchar" (func $putchar (param i32) (result i32))) + (table 0 anyfunc) + (memory $0 1) + (export "memory" (memory $0)) + (export "main" (func $main)) + (func $main (; 1 ;) (param $0 i32) (param $1 i32) (result i32) + (loop $label$0 (result i32) + (drop + (call $putchar + (i32.const 101) + ) + ) + (br $label$0) + ) + ) +) From 53e1b1ec5489c807c05426dee968ca34353dd39f Mon Sep 17 00:00:00 2001 From: Alex Parker Date: Sun, 9 Dec 2018 00:05:45 -0700 Subject: [PATCH 026/130] eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee --- e.ex | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/e.ex b/e.ex index c099190..f6b0586 100644 --- a/e.ex +++ b/e.ex @@ -1 +1,5 @@ -IO.puts('e') +defmodule E do + def e, do: (IO.write("e"); e()) +end + +E.e() From 5c278379ae130d4094a5bd8a3d0de620b4351b1b Mon Sep 17 00:00:00 2001 From: Alex Parker Date: Sun, 9 Dec 2018 00:31:55 -0700 Subject: [PATCH 027/130] vim eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee --- e.vim | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 e.vim diff --git a/e.vim b/e.vim new file mode 100644 index 0000000..7a4522b --- /dev/null +++ b/e.vim @@ -0,0 +1,8 @@ +command! E %s/[a-zA-Z]/e/g +command! EE call E() + +function! E() + while 1 + echo "e" + endwhile +endfunction From 68cf19ace94fac384f5d8c563d59d86fb545b04f Mon Sep 17 00:00:00 2001 From: Collin Day Date: Sun, 9 Dec 2018 04:03:27 -0500 Subject: [PATCH 028/130] Teeeeeeeeeeeeeeeeeeeeeeeeeeeraform --- e.tf | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 e.tf diff --git a/e.tf b/e.tf new file mode 100644 index 0000000..2d021f3 --- /dev/null +++ b/e.tf @@ -0,0 +1,3 @@ +variable "e" { + default = "e" +} From 918d2509d8e8e95aa02f769656c6574d497814a3 Mon Sep 17 00:00:00 2001 From: Eugene Date: Sun, 9 Dec 2018 16:10:33 +0300 Subject: [PATCH 029/130] fix comment in e.py --- eeeeee.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eeeeee.py b/eeeeee.py index df51338..a99878d 100644 --- a/eeeeee.py +++ b/eeeeee.py @@ -1,4 +1,4 @@ -"""EEe ee eeeee eee"" +"""EEe ee eeeee eee""" eee = 1 eeee = 1000000000 From c2762b66ac52bba13244930043bebe2ba63b290a Mon Sep 17 00:00:00 2001 From: Joe Harrison Date: Sun, 9 Dec 2018 14:21:43 +0000 Subject: [PATCH 030/130] rackeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeet --- e.rkt | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 e.rkt diff --git a/e.rkt b/e.rkt new file mode 100644 index 0000000..dcfc1a3 --- /dev/null +++ b/e.rkt @@ -0,0 +1,10 @@ +#lang racket + +(define eee display) + +(define (e ee) + (eee ee) + (e ee)) + +(module* main #f + (e #\e)) From 6489c1df88564ed9c8f51536b3d83c559d6f3768 Mon Sep 17 00:00:00 2001 From: ReimuNotMoe <34613827+ReimuNotMoe@users.noreply.github.com> Date: Sun, 9 Dec 2018 22:39:14 +0800 Subject: [PATCH 031/130] Add BASIC version of eeeeeeeeeeeeeeeeeeeeeee --- e.bas | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 e.bas diff --git a/e.bas b/e.bas new file mode 100644 index 0000000..3489bf5 --- /dev/null +++ b/e.bas @@ -0,0 +1,3 @@ +10 PRINT "e" +20 GOTO 10 + From c5c0915a2a23a4a0ee6ba6d8753139f339a88d84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Neto?= Date: Sun, 9 Dec 2018 11:59:47 -0300 Subject: [PATCH 032/130] Created e inverted file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Very important e inverted; Ə --- e.inverted | 1 + 1 file changed, 1 insertion(+) create mode 100644 e.inverted diff --git a/e.inverted b/e.inverted new file mode 100644 index 0000000..6deaea3 --- /dev/null +++ b/e.inverted @@ -0,0 +1 @@ +Ə From bf2abea04d6393862b104f54d5005b087c85177c Mon Sep 17 00:00:00 2001 From: Takumi Sueda Date: Mon, 10 Dec 2018 00:24:34 +0900 Subject: [PATCH 033/130] Comply PEP 8 Use 4 spaces per indentation level. https://www.python.org/dev/peps/pep-0008/#id17 --- e.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/e.py b/e.py index 6f6273c..5cc59a1 100644 --- a/e.py +++ b/e.py @@ -1,7 +1,7 @@ import sys try: - while True: - sys.stdout.write('e') + while True: + sys.stdout.write('e') except KeyboardInterrupt: - sys.exit(0) + sys.exit(0) From 767cc67b6177d2cb76559b18b5a7c4f08cc5d381 Mon Sep 17 00:00:00 2001 From: simple-human Date: Mon, 10 Dec 2018 01:53:55 +1000 Subject: [PATCH 034/130] Create eee.awk --- eee.awk | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 eee.awk diff --git a/eee.awk b/eee.awk new file mode 100644 index 0000000..1d024f9 --- /dev/null +++ b/eee.awk @@ -0,0 +1,2 @@ +#!/usr/bin/env -S awk -f +BEGIN { while(1) printf("e")} From 4f092f967be5dfb511b2e63f86fde2c1dcfe039a Mon Sep 17 00:00:00 2001 From: Takumi Sueda Date: Mon, 10 Dec 2018 01:21:54 +0900 Subject: [PATCH 035/130] Create ebig.py --- ebig.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 ebig.py diff --git a/ebig.py b/ebig.py new file mode 100644 index 0000000..0bc5c86 --- /dev/null +++ b/ebig.py @@ -0,0 +1,14 @@ +from __future__ import print_function + +exec(''' + 'eeeeee'\ + 'eeee'\nimport\ + sys\n' '\nwhile\ + True: \n print\ + ('eee' 'eeeee'\ + 'eeeeeeeeeeeeeeeeeeeee'\ + 'eeee'\ + 'eeeee' 'eeeee'\ + 'eeeeeeeeeeeeeeeee'\ + 'ee',end='') +'''[10:]) From 2f2f5a4db8af80834d24abdd971c0791570c1f3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=98=A1=CB=9A?= <0x0001F36D@gmail.com> Date: Mon, 10 Dec 2018 02:02:01 +0800 Subject: [PATCH 036/130] (Cobol) eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee --- e.cbl | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 e.cbl diff --git a/e.cbl b/e.cbl new file mode 100644 index 0000000..4c4fe46 --- /dev/null +++ b/e.cbl @@ -0,0 +1,14 @@ +IDENTIFICATION DIVISION. + PROGRAM-ID. eeeeeeeee. + +DATA DIVISION. + WORKING-STORAGE SECTION. + 01 e PIC X VALUE 0. + +PROCEDURE DIVISION. + MAIN-PROCEDURE. + PERFORM UNTIL e > e + DISPLAY 'e' + END-PERFORM. + STOP RUN. + From 092a078e0793df84ec47e28c1fe5c4af15696ad4 Mon Sep 17 00:00:00 2001 From: Oleksandr Suvorov Date: Sun, 9 Dec 2018 19:12:37 +0100 Subject: [PATCH 037/130] Add e.cmd file in order to support REXX Signed-off-by: Oleksandr Suvorov --- e.cmd | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 e.cmd diff --git a/e.cmd b/e.cmd new file mode 100644 index 0000000..d6f627b --- /dev/null +++ b/e.cmd @@ -0,0 +1,4 @@ +do forever + say e +end + From c34391cf8acd9c093450302a66c35b3734ad6666 Mon Sep 17 00:00:00 2001 From: TwinProduction Date: Sun, 9 Dec 2018 14:06:15 -0500 Subject: [PATCH 038/130] eeeeee e.properies -> e.properties --- e.properies => e.properties | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename e.properies => e.properties (100%) diff --git a/e.properies b/e.properties similarity index 100% rename from e.properies rename to e.properties From c517fda51bc1cb8dc31df39660581c2b37e97145 Mon Sep 17 00:00:00 2001 From: Jeremie Piotte Date: Sun, 9 Dec 2018 14:55:24 -0500 Subject: [PATCH 039/130] LOLCODE, An esoteric programming language Implementation of e in LOLCODE. http://www.lolcode.org/ --- e.lol | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 e.lol diff --git a/e.lol b/e.lol new file mode 100644 index 0000000..53657a1 --- /dev/null +++ b/e.lol @@ -0,0 +1,15 @@ +HAI 1.2 + CAN HAS STDIO? + + IM IN YR nonStopE BTW this loop is infinite + + BOTH SAEM "e" AN "e", O RLY? + YA RLY + VISIBLE "e" + NO WAI + VISIBLE "impossible bruh" + OIC + + IM OUTTA YR nonStopE + +KTHXBYE From 4965823a86ced708b24bb84c6c9fe960c1fea5a2 Mon Sep 17 00:00:00 2001 From: azjezz <29315886+azjezz@users.noreply.github.com> Date: Sun, 9 Dec 2018 21:08:44 +0100 Subject: [PATCH 040/130] eeeeeeeeeeeeeeee eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeveeeeeeeeeeeeeeee --- e.hh | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 e.hh diff --git a/e.hh b/e.hh new file mode 100644 index 0000000..f736a4a --- /dev/null +++ b/e.hh @@ -0,0 +1,8 @@ +> +function main() { + while(true) { + echo 'e'; + } +} From 10b648e27ab669be7d189e6e164654de33a69444 Mon Sep 17 00:00:00 2001 From: azjezz <29315886+azjezz@users.noreply.github.com> Date: Sun, 9 Dec 2018 21:16:06 +0100 Subject: [PATCH 041/130] EEEEEEEEEEEEEEEEE --- e.hh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e.hh b/e.hh index f736a4a..bf7af12 100644 --- a/e.hh +++ b/e.hh @@ -1,7 +1,7 @@ > -function main() { +function main(): void { while(true) { echo 'e'; } From c41de6fc0854f793037acbc398d322112ad3b27d Mon Sep 17 00:00:00 2001 From: Hadi Tarhini Date: Sun, 9 Dec 2018 15:26:44 -0800 Subject: [PATCH 042/130] make eeeeee.py output the proper quantity of e's --- eeeeee.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/eeeeee.py b/eeeeee.py index a99878d..a30cc75 100644 --- a/eeeeee.py +++ b/eeeeee.py @@ -1,10 +1,9 @@ """EEe ee eeeee eee""" +from itertools import repeat as eeeeee +eeee = list +eee = map +eeeee = print -eee = 1 -eeee = 1000000000 -ee = ['e' for e in range(eee, eeee)] +eeee(eee(eeeee, eeeeee('e'))) -for e in ee: - print(e) - # eeee From 7fb12cf78a572efaacf96575ca9aa295088597f8 Mon Sep 17 00:00:00 2001 From: Bert Verstraete Date: Mon, 10 Dec 2018 01:03:08 +0100 Subject: [PATCH 043/130] e.bro e --- e.bro | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 e.bro diff --git a/e.bro b/e.bro new file mode 100644 index 0000000..b2c019e --- /dev/null +++ b/e.bro @@ -0,0 +1,9 @@ +event bro_init() + { + local e = "e"; + + while ( e == "e" ) + { + print e; + } + } From 5d3dccbd6b1b8e714169558283fcca71c3a882c7 Mon Sep 17 00:00:00 2001 From: Hadi Tarhini Date: Sun, 9 Dec 2018 16:48:28 -0800 Subject: [PATCH 044/130] Add Conway's Game of Life impleeeeementation e --- e.rle | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 e.rle diff --git a/e.rle b/e.rle new file mode 100644 index 0000000..acc0670 --- /dev/null +++ b/e.rle @@ -0,0 +1,95 @@ +#C 'e' ticker in Conway's Game of Life. +#C To run: copy this file's contents and Edit>Paste into Golly, then hit Enter/Return to start +#C Golly can be downloaded from https://golly.sourceforge.net +#C +#C Created with PM_2Ring's script at http://www.conwaylife.com/forums/viewtopic.php?f=9&t=45&start=25#p1342 +#C (then fixed by hand because i accidentally fed the script an uppercase E) +#C +#C eeee + +x = 228, y = 235, rule = B3/S23 +42b2o$42bo$31bo8bobo$29bobo8b2o$20bo7bobo$19b2o6bo2bo$8b2o8b2o4b2o2bob +o$8b2o7b3o4b2o3bobo10b2o12b2o$18b2o4b2o5bo10bo13b2o$19b2o19bobo$20bo +19b2o$32bo$33bo$31b3o2$56bo$27b3o25b3o59b2o$29bo24b5o58bo$28bo24bobobo +bo46bo8bobo$32b2o19b2o3b2o44bobo8b2o$32b2o61bo7bobo$o6bo86b2o6bo2bo$3o +4b3o46bo26b2o8b2o4b2o2bobo$3bo6bo9b2o33bobo25b2o7b3o4b2o3bobo10b2o12b +2o$2b2o5b2o8bobo33bob2o34b2o4b2o5bo10bo13b2o$21bo34b3o35b2o19bobo$47bo +8bo2bo35bo19b2o$48bo8b3o47bo$46b3o7bo3bo47bo$55bo5bo44b3o$50bo5bo3bo$ +12b3o4b2o22b2o4bo7b3o71bo$4b3o7bo4b2o22b2o4b3o50b3o25b3o59b2o$3bo3bo5b +o90bo24b5o58bo$2bo5bo94bo24bobobobo46bo8bobo$3bo3bo99b2o19b2o3b2o44bob +o8b2o$4b3o100b2o61bo7bobo$4bo2bo67bo6bo86b2o6bo2bo$5b3o67b3o4b3o46bo +26b2o8b2o4b2o2bobo$5b2obo44b2o5b2o16bo6bo9b2o33bobo25b2o7b3o4b2o3bobo +10b2o12b2o$6bobo44bo6bo16b2o5b2o8bobo33bob2o34b2o4b2o5bo10bo13b2o$7bo +46b3o4b3o32bo34b3o35b2o19bobo$23b2o31bo6bo67bo2bo35bo19b2o$23bobo4b2o +100b3o47bo$4b2o3b2o12bo6b2o99bo3bo47bo$4bobobobo119bo5bo44b3o$5b5o115b +o5bo3bo$6b3o78b3o4b2o22b2o4bo7b3o71bo$7bo71b3o7bo4b2o22b2o4b3o78b3o$ +78bo3bo5bo115b5o$30b3o44bo5bo119bobobobo$30bo47bo3bo7b3o89b2o19b2o3b2o +$31bo47b3o8bo91b2o$43bo35bo2bo8bo58bo6bo$43b2o35b3o67b3o4b3o46bo$6b2o +24bo5b2o4b2o34b2obo44b2o5b2o16bo6bo44bobo$6b2o24bobo3b2o4b3o7b2o25bobo +44bo6bo16b2o5b2o44bob2o$33bobo2b2o4b2o8b2o26bo46b3o4b3o67b3o$33bo2bo6b +2o86bo6bo67bo2bo$17bo15bobo7bo61b2o100b3o$15b2o5b2o8bobo44b2o3b2o19b2o +99bo3bo$16b2o3bobo8bo46bobobobo24bo94bo5bo$21bo58b5o24bo90bo5bo3bo$20b +2o59b3o25b3o50b3o4b2o22b2o4bo7b3o$37bobo42bo71b3o7bo4b2o22b2o4b3o$37bo +2bo112bo3bo5bo$22bo6bo10b2o63b3o44bo5bo$8bobo10bobo5bo8bo3b2o7bo53bo +47bo3bo7b3o$8b2o10bob2o6bo9b2o7bobo46bobo5bo47b3o8bo$9bo4b2o3b2ob2o9b +2o2bo2bo7bobo17bo29b2o18bo35bo2bo8bo$14b2o4bob2o5b3o2bo2bobo7bo2bo16b +2o30bo18b2o35b3o$21bobo7b4o13bobo15b2o4b2o7b2o24bo5b2o4b2o34b2obo44b2o +5b2o$22bo9b2o15bobo13b3o4b2o2b2o3b2o24bobo3b2o4b3o7b2o25bobo44bo6bo$ +51bo4bobo7b2o4b2o2b2o30bobo2b2o4b2o8b2o26bo46b3o4b3o$2bo53b2o9b2o39bo +2bo6b2o53b2o31bo6bo$2o55bo10bo39bobo7bo54bobo4b2o$b2o37bo56b2o8bobo44b +2o3b2o12bo6b2o$41b2o53bobo8bo46bobobobo$40b2o54bo58b5o$95b2o59b3o$50bo +61bobo42bo$48b2o62bo2bo$49b2o46bo6bo10b2o63b3o$6bo2bo26bo2bo43bobo10bo +bo5bo8bo3b2o7bo53bo$5bo14b4o11bo47b2o10bob2o6bo9b2o7bobo54bo$5bo3bo10b +o3bo10bo3bo44bo4b2o3b2ob2o9b2o2bo2bo7bobo17bo49bo$5b4o11bo14b4o50b2o4b +ob2o5b3o2bo2bobo7bo2bo16b2o49b2o$21bo2bo71bobo7b4o13bobo15b2o4b2o7b2o +24bo5b2o4b2o$56b2o39bo9b2o15bobo13b3o4b2o2b2o3b2o24bobo3b2o4b3o7b2o$ +44b3o2bo5bo3bo66bo4bobo7b2o4b2o2b2o30bobo2b2o4b2o8b2o$40bo3bo9bo5bo3b +2o11bo53b2o9b2o39bo2bo6b2o$38bobo4bo8bo3bob2o2b2o9b2o55bo10bo39bobo7bo +$30b2o4b2o16bo5bo15b2o37bo56b2o8bobo$30b2o4b2o17bo3bo56b2o53bobo8bo$ +36b2o18b2o57b2o54bo$38bobo129b2o$40bo84bo61bobo$123b2o62bo2bo$124b2o +46bo6bo10b2o$81bo2bo26bo2bo56bobo5bo8bo3b2o7bo$35b4o41bo14b4o11bo59bob +2o6bo9b2o7bobo$35bo3bo40bo3bo10bo3bo10bo3bo49b2o3b2ob2o9b2o2bo2bo7bobo +17bo$35bo44b4o11bo14b4o50b2o4bob2o5b3o2bo2bobo7bo2bo16b2o$36bo2bo56bo +2bo71bobo7b4o13bobo15b2o4b2o$131b2o39bo9b2o15bobo13b3o4b2o2b2o$119b3o +2bo5bo3bo66bo4bobo7b2o4b2o2b2o$115bo3bo9bo5bo3b2o65b2o9b2o$113bobo4bo +8bo3bob2o2b2o66bo10bo$105b2o4b2o16bo5bo54bo$105b2o4b2o17bo3bo56b2o$ +111b2o18b2o57b2o$113bobo$115bo84bo$198b2o$199b2o$36bo2bo26bo2bo26bo2bo +56bo2bo26bo2bo$35bo14b4o11bo14b4o11bo14b4o41bo14b4o11bo$35bo3bo10bo3bo +10bo3bo10bo3bo10bo3bo10bo3bo40bo3bo10bo3bo10bo3bo$35b4o11bo14b4o11bo +14b4o11bo44b4o11bo14b4o$51bo2bo26bo2bo26bo2bo56bo2bo$206b2o$194b3o2bo +5bo3bo$130bo59bo3bo9bo5bo3b2o$128bobo57bobo4bo8bo3bob2o2b2o$126b2o18b +2o32b2o4b2o16bo5bo$120b2o4b2o17bo3bo30b2o4b2o17bo3bo$120b2o4b2o16bo5bo +35b2o18b2o$128bobo4bo8bo3bob2o2b2o32bobo$130bo3bo9bo5bo3b2o34bo$134b3o +2bo5bo3bo$146b2o$111bo2bo$35b4o56b4o11bo14b4o$35bo3bo55bo3bo10bo3bo10b +o3bo$35bo59bo14b4o11bo$36bo2bo56bo2bo26bo2bo$139b2o$138b2o$55bo84bo$ +53bobo$51b2o18b2o57b2o$45b2o4b2o17bo3bo56b2o$45b2o4b2o16bo5bo15b2o37bo +$53bobo4bo8bo3bob2o2b2o9b2o55bo10bo$55bo3bo9bo5bo3b2o11bo53b2o9b2o$59b +3o2bo5bo3bo66bo4bobo7b2o4b2o2b2o$71b2o39bo9b2o15bobo13b3o4b2o2b2o$36bo +2bo71bobo7b4o13bobo15b2o4b2o$20b4o11bo14b4o50b2o4bob2o5b3o2bo2bobo7bo +2bo16b2o$20bo3bo10bo3bo10bo3bo44bo4b2o3b2ob2o9b2o2bo2bo7bobo17bo$20bo +14b4o11bo47b2o10bob2o6bo9b2o7bobo$21bo2bo26bo2bo43bobo10bobo5bo8bo3b2o +7bo$64b2o46bo6bo10b2o$63b2o62bo2bo$65bo61bobo$110b2o$55b2o54bo$56b2o +48b2o3bobo8bo$16b2o37bo49b2o5b2o8bobo$15b2o55bo10bo23bo15bobo7bo$17bo +53b2o9b2o39bo2bo6b2o$66bo4bobo7b2o4b2o2b2o30bobo2b2o4b2o8b2o$37bo9b2o +15bobo13b3o4b2o2b2o3b2o24bobo3b2o4b3o7b2o$36bobo7b4o13bobo15b2o4b2o7b +2o24bo5b2o4b2o$29b2o4bob2o5b3o2bo2bobo7bo2bo16b2o30bo18b2o$24bo4b2o3b +2ob2o9b2o2bo2bo7bobo17bo29b2o18bo$23b2o10bob2o6bo9b2o7bobo46bobo5bo$ +23bobo10bobo5bo8bo3b2o7bo53bo$37bo6bo10b2o63b3o$52bo2bo$52bobo42bo$35b +2o59b3o$36bo58b5o$36bobo8bo46bobobobo$37b2o8bobo44b2o3b2o19b2o$48bobo +7bo61b2o$48bo2bo6b2o86bo6bo$48bobo2b2o4b2o8b2o26bo46b3o4b3o$21b2o24bob +o3b2o4b3o7b2o25bobo33b2o9bo6bo$21b2o24bo5b2o4b2o34b2obo33bobo8b2o5b2o$ +58b2o35b3o34bo$58bo35bo2bo$46bo47b3o$45bo47bo3bo$45b3o44bo5bo$93bo3bo +5bo$22bo71b3o7bo4b2o22b2o4b3o$21b3o78b3o4b2o22b2o4bo7b3o$20b5o115bo5bo +3bo$19bobobobo119bo5bo$19b2o3b2o12bo6b2o99bo3bo$38bobo4b2o100b3o$38b2o +31bo6bo67bo2bo$22bo46b3o4b3o32bo34b3o$21bobo44bo6bo16b2o5b2o8bobo33bob +2o$20b2obo44b2o5b2o16bo6bo9b2o33bobo$20b3o67b3o4b3o46bo$19bo2bo8bo58bo +6bo$19b3o8bo91b2o$18bo3bo7b3o89b2o19b2o3b2o$17bo5bo94bo24bobobobo$18bo +3bo5bo90bo24b5o$19b3o7bo4b2o22b2o4b3o50b3o25b3o$27b3o4b2o22b2o4bo7b3o +71bo$65bo5bo3bo$70bo5bo44b3o$61b3o7bo3bo47bo$63bo8b3o47bo$62bo8bo2bo +35bo19b2o$36bo34b3o35b2o19bobo$17b2o5b2o8bobo33bob2o34b2o4b2o5bo10bo +13b2o$18bo6bo9b2o33bobo25b2o7b3o4b2o3bobo10b2o12b2o$15b3o4b3o46bo26b2o +8b2o4b2o2bobo$15bo6bo86b2o6bo2bo$47b2o61bo7bobo$47b2o19b2o3b2o44bobo8b +2o$43bo24bobobobo46bo8bobo$44bo24b5o58bo$42b3o25b3o59b2o$71bo2$46b3o$ +48bo$47bo$35bo19b2o$34b2o19bobo$33b2o4b2o5bo10bo13b2o$23b2o7b3o4b2o3bo +bo10b2o12b2o$23b2o8b2o4b2o2bobo$34b2o6bo2bo$35bo7bobo$44bobo8b2o$46bo +8bobo$57bo$57b2o! From 08649f77990ed4907612abe2081d73555158cae9 Mon Sep 17 00:00:00 2001 From: Hadi Tarhini Date: Sun, 9 Dec 2018 16:51:44 -0800 Subject: [PATCH 045/130] e --- eeeeee.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/eeeeee.py b/eeeeee.py index a30cc75..32dddf9 100644 --- a/eeeeee.py +++ b/eeeeee.py @@ -3,7 +3,8 @@ from itertools import repeat as eeeeee eeee = list eee = map eeeee = print +e = 'e' -eeee(eee(eeeee, eeeeee('e'))) +eeee(eee(eeeee, eeeeee(e))) # eeee From d13364e68f9a5ee972a429bc880a2081f7fd362e Mon Sep 17 00:00:00 2001 From: Mauro Date: Sun, 9 Dec 2018 21:57:42 -0300 Subject: [PATCH 046/130] Adding sclang --- e.scd | 1 + 1 file changed, 1 insertion(+) create mode 100644 e.scd diff --git a/e.scd b/e.scd new file mode 100644 index 0000000..891a39b --- /dev/null +++ b/e.scd @@ -0,0 +1 @@ +while({ \e.notNil }, { \e.postln }); From 6932e61bc28510456dbee39d924e82adfe5d79fb Mon Sep 17 00:00:00 2001 From: iosmanthus Date: Mon, 10 Dec 2018 10:12:53 +0800 Subject: [PATCH 047/130] add functional feature --- e.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/e.rs b/e.rs index 7ca3efe..3a363be 100644 --- a/e.rs +++ b/e.rs @@ -1,7 +1,15 @@ -#![feature(main)] -#[main] +#[cfg(feature = "functional")] +fn e() { + std::iter::repeat('e').for_each(|e| print!("{}", e)) +} + +#[cfg(not(feature = "functional"))] fn e() { loop { print!("e"); } } + +fn main() { + e(); +} From fbe6d6608366974f5942c08d03cd5fe9d0eadb7c Mon Sep 17 00:00:00 2001 From: iosmanthus Date: Mon, 10 Dec 2018 10:17:19 +0800 Subject: [PATCH 048/130] add never type annotation --- e.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/e.rs b/e.rs index 3a363be..e4a776f 100644 --- a/e.rs +++ b/e.rs @@ -1,10 +1,10 @@ #[cfg(feature = "functional")] -fn e() { +fn e() -> ! { std::iter::repeat('e').for_each(|e| print!("{}", e)) } #[cfg(not(feature = "functional"))] -fn e() { +fn e() -> ! { loop { print!("e"); } From 847b56c589a99e21e1ab2315db60a04d7af2e51e Mon Sep 17 00:00:00 2001 From: Hadi Tarhini Date: Sun, 9 Dec 2018 18:20:04 -0800 Subject: [PATCH 049/130] e! e(fficiency + r)e(naming) --- eeeeee.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/eeeeee.py b/eeeeee.py index 32dddf9..6e646a0 100644 --- a/eeeeee.py +++ b/eeeeee.py @@ -1,10 +1,9 @@ """EEe ee eeeee eee""" -from itertools import repeat as eeeeee -eeee = list -eee = map -eeeee = print +from itertools import repeat as eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +eeeeeeeeeeeeeeeeeeeeeeee = any +eeeeeeeee = map +eeeeeeeeeeeeeeee = print e = 'e' - -eeee(eee(eeeee, eeeeee(e))) +eeeeeeeeeeeeeeeeeeeeeeee(eeeeeeeee(eeeeeeeeeeeeeeee, eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee(e))) # eeee From b0fa2b74e21cd7067124def25d78dd028ffbe5af Mon Sep 17 00:00:00 2001 From: iczero Date: Sun, 9 Dec 2018 18:24:41 -0800 Subject: [PATCH 050/130] cmakeeeeeeeeeeeeee --- CMakeLists.txt | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..e1451b0 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,6 @@ +cmake_minimum_required (VERSION 2.6) +project (eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee) +message("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee") +add_executable(eeeee e.c) +add_custom_command(TARGET eeeee POST_BUILD COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/eeeee) + From 3a997f6258b0ff0dcec6546c573698a64fd4e576 Mon Sep 17 00:00:00 2001 From: iosmanthus Date: Mon, 10 Dec 2018 10:25:56 +0800 Subject: [PATCH 051/130] delete extra never type... --- e.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e.rs b/e.rs index e4a776f..fb90cbd 100644 --- a/e.rs +++ b/e.rs @@ -1,5 +1,5 @@ #[cfg(feature = "functional")] -fn e() -> ! { +fn e() { std::iter::repeat('e').for_each(|e| print!("{}", e)) } From 8db2585846947561b3aba0fa2966246adfabb3d6 Mon Sep 17 00:00:00 2001 From: iovoid Date: Sun, 9 Dec 2018 23:51:28 -0300 Subject: [PATCH 052/130] IoLang eeeeeee-ing Added IoLang iolanguage.org program. --- e.io | 1 + 1 file changed, 1 insertion(+) create mode 100644 e.io diff --git a/e.io b/e.io new file mode 100644 index 0000000..dcd549d --- /dev/null +++ b/e.io @@ -0,0 +1 @@ +loop("e" print) From b8b5014e180e1b75faf2d4337e26e051fc81e4b5 Mon Sep 17 00:00:00 2001 From: simple-human Date: Mon, 10 Dec 2018 12:57:38 +1000 Subject: [PATCH 053/130] just in case.. --- e.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/e.rs b/e.rs index 7ca3efe..0f902b7 100644 --- a/e.rs +++ b/e.rs @@ -5,3 +5,15 @@ fn e() { print!("e"); } } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn teeeeest() { + e(); + unreachable!("eeeeeeeeee?????"); + } +} + From 34be89501bce055fd8e1571845b27bcd3dd8aecc Mon Sep 17 00:00:00 2001 From: readyready15728 Date: Sun, 9 Dec 2018 22:13:21 -0500 Subject: [PATCH 054/130] EEE Eeeeeeeee eeeeeeeeeeeeee ee e (#366) * Eeeeee EEE Eeeeeeeee eeeeeeeeeeeeee ee e --- .gitignore | 2 ++ e.st | 3 +++ 2 files changed, 5 insertions(+) create mode 100644 .gitignore create mode 100755 e.st diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d04cd99 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +**/.backup +**/gst.im diff --git a/e.st b/e.st new file mode 100755 index 0000000..903b989 --- /dev/null +++ b/e.st @@ -0,0 +1,3 @@ +#!/usr/bin/env gst + +[ true ] whileTrue: [ Transcript show: 'e' ]. From ffbc726e0c024507e5cefbdac1deecc6ef3e317b Mon Sep 17 00:00:00 2001 From: rurimo Date: Mon, 10 Dec 2018 13:44:33 +0900 Subject: [PATCH 055/130] e.bmp --- e.bmp | Bin 0 -> 45622 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 e.bmp diff --git a/e.bmp b/e.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6255c91236417d3674276d2e0466b329a7752b22 GIT binary patch literal 45622 zcmeI(u}uR}5Jl0Y3re5@2M)<;!zBjgGcLw_VFH3L&1mLdYh_(aYr!(J500M* zVEz7a_}+dWhw=P2j?Zy?jpJo|9na(O_x1ZH_vf1rSYX@W055;jm@k3G8uJ2tf<4xl z7vK}@vBtarpJ0zQ<^}i!d#o`pz$e&ajd=k+!5(YO3-Af{SYuv*Pq4=t^8$Q=J=T~P z;1lez#=HQZV2?HC1^9%A^msd6{@?xen2(R+N4uVR!8k$V*r+?9aaSrTZE$<(ytj<0;G1lNvAOoL)@h zDa+E68ZYIXUQFXD%hHn?FXfzGOyeob(vuo5<(ytj<0;G1lY27up2EgUn|u$X#u`@z z{9RF%%kOENx2jHRT$Ri3X`HvJPHJ40%kOENx2jHRT$Ri3X`HvJPHJ40%kOENx2jHR zT$Ri3X`HvJPHJ40%kOENx2jHRT$Ri3?a6q_J%#s+?CQ_`8t401oz%E0m*3MkZ&jVt zxGI<5(>QNcoz%E0m*3MkZ&jVtxGI<5(>QNcoz%E0m*0DcasJzR%1Mp+msMkpc>zAb z9&5}C@Co)1v^?6JnY0H0uwHRc8Qgl+o)ET|Zk literal 0 HcmV?d00001 From ec49a746d9b82ec0d66468d1da163d364cfc7cef Mon Sep 17 00:00:00 2001 From: Noriyuki Kazusawa Date: Mon, 10 Dec 2018 13:46:05 +0900 Subject: [PATCH 056/130] eeeeeeeeeeeeeeeeeeeeeeeeee parseeeeeeeeeeeeeeeeeer --- e.g4 | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 e.g4 diff --git a/e.g4 b/e.g4 new file mode 100644 index 0000000..cb8c276 --- /dev/null +++ b/e.g4 @@ -0,0 +1,3 @@ +grammar e; + +e: 'e'+; From 000906479ffc91f2bbeed0094aa116f51538c165 Mon Sep 17 00:00:00 2001 From: Xiang He Date: Mon, 10 Dec 2018 12:52:36 +0800 Subject: [PATCH 057/130] update --- e.jpg | Bin 0 -> 800 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 e.jpg diff --git a/e.jpg b/e.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7e0488bc6207603a2dc2003d40f32db295630c0f GIT binary patch literal 800 zcmV+*1K<3KP)`XQQqXjAQerx`qGnx~Uk38-m_xoE~iPDjyUK>9(rJ#|Q6~??4!fQ%F zBgOK93iIY2FuvXmSWJ@XDFx=uG~o$3tyDHib45YSYj_IP%8H|4=7o0()yiWk<=&kt z*6C9!2?PH zBBHTWNM_YwC*NeqW3zTCl|f(+x-v|O08)A(%}8OEuk eu3+onXzV}89;tU4bk_a=0000 Date: Sun, 9 Dec 2018 23:16:02 -0600 Subject: [PATCH 058/130] eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee --- e.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/e.cs b/e.cs index a8bc427..7d83984 100644 --- a/e.cs +++ b/e.cs @@ -4,9 +4,14 @@ namespace e { class E { + const bool e = true; + static void Main(string[] args) { - Console.WriteLine('e'); + while (e) + { + Console.Write('e'); + } } } } From ff00e0cefc17cb8c9d9ccf37346810786d04b53d Mon Sep 17 00:00:00 2001 From: empirephoenix Date: Mon, 10 Dec 2018 08:39:52 +0100 Subject: [PATCH 059/130] Update e.java change args to e --- e.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e.java b/e.java index e8bafbe..c2b02d1 100644 --- a/e.java +++ b/e.java @@ -1,6 +1,6 @@ public class e { - public static void main(String[] args) { + public static void main(String[] e) { while("e".equals("e")) { System.out.println("e"); } From d6a6d1abaf5932c86c0fd6606896cc1a1bd5e5ee Mon Sep 17 00:00:00 2001 From: QuadmasterXLII Date: Mon, 10 Dec 2018 03:06:15 -0500 Subject: [PATCH 060/130] Capture details of exception --- e.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e.py b/e.py index 5cc59a1..8d9a69c 100644 --- a/e.py +++ b/e.py @@ -3,5 +3,5 @@ import sys try: while True: sys.stdout.write('e') -except KeyboardInterrupt: +except KeyboardInterrupt as e: sys.exit(0) From 848944cb8ec4ebb3fb8720888a4778e5bc90a485 Mon Sep 17 00:00:00 2001 From: snaag <04_miffy@naver.com> Date: Mon, 10 Dec 2018 17:13:09 +0900 Subject: [PATCH 061/130] Add e.png --- e.png | Bin 0 -> 3810 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 e.png diff --git a/e.png b/e.png new file mode 100644 index 0000000000000000000000000000000000000000..fa45a2929ee9faf6abf31b57d7a01444047b0355 GIT binary patch literal 3810 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 literal 0 HcmV?d00001 From 5479221183f8a8d153073c8af6958664e492732e Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 10 Dec 2018 17:27:21 +0900 Subject: [PATCH 062/130] eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee --- e.tiff | Bin 0 -> 81706 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 e.tiff diff --git a/e.tiff b/e.tiff new file mode 100644 index 0000000000000000000000000000000000000000..5ec00c84c48cc5458dff05191af52e8ee731474f GIT binary patch literal 81706 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 literal 0 HcmV?d00001 From 3dc770b638e7571ba0694d1ca61ca42d7be6713a Mon Sep 17 00:00:00 2001 From: Oleg Kovalov Date: Mon, 10 Dec 2018 10:00:49 +0100 Subject: [PATCH 063/130] Optimize Go implementation --- e.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/e.go b/e.go index fec745c..410eb9d 100644 --- a/e.go +++ b/e.go @@ -1,11 +1,7 @@ package main -import ( - "fmt" -) - func main() { for { - fmt.Print("e") + print("e") } } From 948fe61b02b2f2e686376aecce5b4a30754e7968 Mon Sep 17 00:00:00 2001 From: "Iskander (Alex) Sharipov" Date: Mon, 10 Dec 2018 12:11:04 +0300 Subject: [PATCH 064/130] add Emacs Lisp implementation Can be executed using Emacs batch mode. Or inside Emacs itself, interactively. --- e.el | 1 + 1 file changed, 1 insertion(+) create mode 100644 e.el diff --git a/e.el b/e.el new file mode 100644 index 0000000..b460c03 --- /dev/null +++ b/e.el @@ -0,0 +1 @@ +(while t (princ "e")) From 218f56ad956423936b6bf0b303148f55618b0c93 Mon Sep 17 00:00:00 2001 From: Woko <9136995+WokoLiu@users.noreply.github.com> Date: Mon, 10 Dec 2018 17:36:06 +0800 Subject: [PATCH 065/130] change `sys.exit(0)` to `sys.exit('e')` --- e.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e.py b/e.py index 5cc59a1..f444fb1 100644 --- a/e.py +++ b/e.py @@ -4,4 +4,4 @@ try: while True: sys.stdout.write('e') except KeyboardInterrupt: - sys.exit(0) + sys.exit('e') From 0acad686679bd9e29277e9034100890400ed0425 Mon Sep 17 00:00:00 2001 From: TSUJI Taktuto Date: Mon, 10 Dec 2018 19:01:58 +0900 Subject: [PATCH 066/130] remove new line --- e.pde | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e.pde b/e.pde index c5152ee..5143d36 100644 --- a/e.pde +++ b/e.pde @@ -1,3 +1,3 @@ while(true) { - println("e"); + print("e"); } From fb1378ba878f08439e7374e393e99e1141adc517 Mon Sep 17 00:00:00 2001 From: iosmanthus Date: Mon, 10 Dec 2018 18:20:51 +0800 Subject: [PATCH 067/130] marking fn e as #[main] --- e.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/e.rs b/e.rs index fb90cbd..fd0adfd 100644 --- a/e.rs +++ b/e.rs @@ -1,15 +1,14 @@ +#![feature(main)] #[cfg(feature = "functional")] +#[main] fn e() { - std::iter::repeat('e').for_each(|e| print!("{}", e)) + std::iter::repeat('e').for_each(|e| print!("{}", e)); } #[cfg(not(feature = "functional"))] +#[main] fn e() -> ! { loop { print!("e"); } } - -fn main() { - e(); -} From 714ea337685a11a45cbd881353fd9721bd5223af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=98=8E=E5=B2=B3?= <3249977074@qq.com> Date: Mon, 10 Dec 2018 19:49:08 +0800 Subject: [PATCH 068/130] Create e.e --- e.e | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 e.e diff --git a/e.e b/e.e new file mode 100644 index 0000000..6da7ed7 --- /dev/null +++ b/e.e @@ -0,0 +1,6 @@ +循环判断首() + 文本输入框e.内容=“e” + 文本输入框ee.内容=“ee” + 文本e = 删首尾空 (文本输入框e.内容) + 文本ee = 删首尾空 (文本输入框ee.内容) +循环判断尾(文本e=文本ee) From cf8eded53b4c57792bd6f12632c4ac1eb4179eed Mon Sep 17 00:00:00 2001 From: newbalancem5 Date: Mon, 10 Dec 2018 15:22:24 +0300 Subject: [PATCH 069/130] Update and rename e.pas to e.epf --- e.epf | 1 + 1 file changed, 1 insertion(+) create mode 100644 e.epf diff --git a/e.epf b/e.epf new file mode 100644 index 0000000..fd2a5e5 --- /dev/null +++ b/e.epf @@ -0,0 +1 @@ +Cообщить ("еееееееееееееееееееееееее"); From 3b52f1d3860b87eacd2b79e2d7f9109999e3f9a9 Mon Sep 17 00:00:00 2001 From: PoroCYon <3253268+PoroCYon@users.noreply.github.com> Date: Mon, 10 Dec 2018 12:47:43 +0000 Subject: [PATCH 070/130] Optimize e.asm --- e.asm | 63 +++++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 51 insertions(+), 12 deletions(-) diff --git a/e.asm b/e.asm index 0dc586d..552fc09 100644 --- a/e.asm +++ b/e.asm @@ -1,17 +1,56 @@ +; compile with: +; $ [ny]asm -felf(32|64) -oe.o e.asm +; $ (gcc|clang) -m(32|64) -oe e.o -nostdlib -nostartfiles + section .text -global _start +global _start -_start: +%if __BITS__ == 32 +%define r(n) e%+n +%define SYS_write 4 +%define rarg0 ebx +%define rarg1 ecx +%define rarg2 edx +%define syscall int 0x80 +%else +%define r(n) r%+n +%define SYS_write 1 +%define rarg0 rdi +%define rarg1 rsi +%define rarg2 rdx +default rel +%endif - mov rax, 1 - mov rdi, 1 - mov rsi, msg - mov rdx, len - loop: - syscall - jmp loop +; size of a Linux pipe buffer +%define PIPE_SIZE 0x10000 +%define STDOUT_FILENO 1 -section .data +; Instead of simply storing a char in .rodata and write(2)-ing it +; over and over again, we first fill a buffer full of e's, and *then* +; write the entire buffer. This is much faster than the first option, +; because we only need to issue a syscall once every 65536 bytes. (Remember +; that doing a syscall requires the kernel to handle an interrupt etc etc etc.) -msg: db "e" -len: equ $ - msg +_start: + ; allocate space for the message + mov r(cx), PIPE_SIZE + mov r(bx), r(cx) ; we'll need it later + sub r(sp), r(cx) + + ; quick memset(3) + mov al, 'e' + mov r(di), r(sp) + rep stosb + + ; push+pop is actually a smaller encoding than mov for ints that fit within 8 bit + push STDOUT_FILENO + pop rarg0 + mov rarg1, r(sp) + mov rarg2, r(bx) + +.loop: + ; set this within the loop because the syscall's exit code is placed in r(ax) + push SYS_write + pop r(ax) + syscall + jmp short .loop From af00c67f30b2d7d1fa05d2a9bdcc75fb3f25e1d1 Mon Sep 17 00:00:00 2001 From: PoroCYon <3253268+PoroCYon@users.noreply.github.com> Date: Mon, 10 Dec 2018 12:58:40 +0000 Subject: [PATCH 071/130] Add MBR version No need for a 1.41 MiB `.img` `:P` --- e.mbr.asm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 e.mbr.asm diff --git a/e.mbr.asm b/e.mbr.asm new file mode 100644 index 0000000..402bc4e --- /dev/null +++ b/e.mbr.asm @@ -0,0 +1,31 @@ +bits 16 +org 0x7C00 + +_start: + ; enable cursor + xor cx, cx + mov ch, 00100000b + mov ah, 1 + int 0x10 + + ; move cursor to top + xor dx, dx + xor bx, bx + inc ah + int 0x10 + + ; print 1 char + mov ax, 'e'|(0x0E<<8) + .loop: + int 0x10 + jmp short .loop + +END: + times 0x200-2-(END-_start) db 'e' + db 0x55,0xAA + +stack: + +%if END-_org > 0x200-2 +%error "Not enough space!" +%endif From 6b6d7467cbdc657d039f830a20cc9a3c50fdb30c Mon Sep 17 00:00:00 2001 From: empirephoenix Date: Mon, 10 Dec 2018 14:07:54 +0100 Subject: [PATCH 072/130] e==e instead of true As nil == nil, and e is nil lets use more e, especially since length is same, works with https://www.lua.org/cgi-bin/demo --- e.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e.lua b/e.lua index c2247fc..2758472 100644 --- a/e.lua +++ b/e.lua @@ -1,3 +1,3 @@ -while true do +while e==e do print('e') end From 80b0d5d29d330fc7ef3b56cbdae8fe29e21f3c99 Mon Sep 17 00:00:00 2001 From: PoroCYon <3253268+PoroCYon@users.noreply.github.com> Date: Mon, 10 Dec 2018 13:37:17 +0000 Subject: [PATCH 073/130] Add Linux (ARM 32-bit) version --- e.linux.arm.S | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 e.linux.arm.S diff --git a/e.linux.arm.S b/e.linux.arm.S new file mode 100644 index 0000000..4874592 --- /dev/null +++ b/e.linux.arm.S @@ -0,0 +1,36 @@ +#define SYS_write 4 +#define STDOUT 1 +#define PIPE_SIZE 0x10000 + +.arm +.align 4 + +.section .text, "ax", %progbits + +type _start, %function +globl _start +_start: + mov r1, #PIPE_SIZE + + ldr r3, =('e'|('e'<<8)|('e'<<16)|('e'<<24)) + mov r4, r3 + mov r5, r3 + mov r6, r3 + +.Lloop: + push {r3-r6} + sub r1, #(4*4) + cmp r1, #0 + bgt .Lloop + + mov r7, #SYS_write + mov r1, sp + mov r2, #PIPE_SIZE + +.Lcall: + mov r0, #STDIN + swi #0 + b .Lcall + +.align 4 +.pool From 85139c1805e93cafd383967ef2243bcf0aea0d98 Mon Sep 17 00:00:00 2001 From: yashwanthT Date: Mon, 10 Dec 2018 19:08:40 +0530 Subject: [PATCH 074/130] Create e.sql eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee --- e.sql | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 e.sql diff --git a/e.sql b/e.sql new file mode 100644 index 0000000..d7dc6c3 --- /dev/null +++ b/e.sql @@ -0,0 +1,13 @@ +CREATE DATABASE e; +USE e; + +DELIMITER | +CREATE PROCEDURE e() +BEGIN + WHILE 'e' = 'e' DO + SELECT REPEAT("e",RAND()*100) AS e; + END WHILE; +END| +DELIMITER ; + +CALL e(); From 84595a20af9487dd1cc5ed0a6c801481d7fb9f32 Mon Sep 17 00:00:00 2001 From: Shun Terabayashi Date: Mon, 10 Dec 2018 22:47:02 +0900 Subject: [PATCH 075/130] Fix for Ou t o f soru r c e Building --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e1451b0..8b84747 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,5 +2,5 @@ cmake_minimum_required (VERSION 2.6) project (eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee) message("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee") add_executable(eeeee e.c) -add_custom_command(TARGET eeeee POST_BUILD COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/eeeee) +add_custom_command(TARGET eeeee POST_BUILD COMMAND ${CMAKE_CURRENT_BINARY_DIR}/eeeee) From 2214df542c03df77d90fd16ec8d9f1f536730a3c Mon Sep 17 00:00:00 2001 From: xuqd Date: Mon, 10 Dec 2018 22:00:25 +0800 Subject: [PATCH 076/130] add python scripts to convert any files to eE files and convert back. --- 2E.py | 26 ++++++++++++++++++++++++++ E2.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100755 2E.py create mode 100755 E2.py diff --git a/2E.py b/2E.py new file mode 100755 index 0000000..316575f --- /dev/null +++ b/2E.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python3.7 + +import sys + + +if len(sys.argv) is not 3: + print('usage : 2E.py [input file] [output file]') + exit(-1) + +inFile = open(sys.argv[1], mode='rb') +outFile = open(sys.argv[2], mode='w') + +for buffer in iter(lambda: inFile.read(1), b''): + binStr = bin(int(buffer.hex(), base=16))[2:].zfill(8) + for c in binStr: + if c == '1': + outFile.write('E') + elif c == '0': + outFile.write('e') + else: + print('error!') + exit(-1) + + +inFile.close() +outFile.close() \ No newline at end of file diff --git a/E2.py b/E2.py new file mode 100755 index 0000000..c245a79 --- /dev/null +++ b/E2.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python3.7 + +import sys +import struct +from array import * + +if len(sys.argv) is not 3: + print('usage : E2.py [input file] [output file]') + exit(-1) + +inFile = open(sys.argv[1], mode='rb') +outFile = open(sys.argv[2], mode='wb') + +for buffer in iter(lambda: inFile.read(8), b''): + bin_array = array('B') + bin_str = '' + for c in buffer: + if c == ord('E'): + bin_str += '1' + elif c == ord('e'): + bin_str += '0' + else: + print('error!') + exit(-1) + bin_array.append(int(bin_str, base=2)) + bin_array.tofile(outFile) + +inFile.close() +outFile.close() \ No newline at end of file From 53c3a02e0a345cd26b601c5c431264567c7ffecb Mon Sep 17 00:00:00 2001 From: Neil Bryson Cargamento Date: Mon, 10 Dec 2018 22:00:30 +0800 Subject: [PATCH 077/130] eeeeeeeeeeEeEEEeee odt --- e.odt | Bin 0 -> 9906 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 e.odt diff --git a/e.odt b/e.odt new file mode 100644 index 0000000000000000000000000000000000000000..bffb023ae16b3d16d64aac950efa72b569a6223c GIT binary patch literal 9906 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 rOeuezF#enKSG#j(-+z)P Date: Mon, 10 Dec 2018 22:10:57 +0800 Subject: [PATCH 078/130] Postscript eeeeeee --- e.ps | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 e.ps diff --git a/e.ps b/e.ps new file mode 100644 index 0000000..1db3009 --- /dev/null +++ b/e.ps @@ -0,0 +1,2 @@ +%! +{(e) print} loop From e96f22b7e93d77a6e9e2107ca8d950f117b80d44 Mon Sep 17 00:00:00 2001 From: Chrome Artiste <33493569+Kuromu@users.noreply.github.com> Date: Mon, 10 Dec 2018 08:12:33 -0600 Subject: [PATCH 079/130] eeeee "println" ee "print" --- e.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e.java b/e.java index c2b02d1..e95efc0 100644 --- a/e.java +++ b/e.java @@ -2,7 +2,7 @@ public class e { public static void main(String[] e) { while("e".equals("e")) { - System.out.println("e"); + System.out.print("e"); } } } From 643e8827ed17bcb8254702b35405790012f3f834 Mon Sep 17 00:00:00 2001 From: Otman404 <43283622+Otman404@users.noreply.github.com> Date: Mon, 10 Dec 2018 06:37:28 -0800 Subject: [PATCH 080/130] MOreeeeeeeee Eeeeeeeeeeeeeeeees --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9fd2138..7269a0c 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ # eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee -eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee From b113ef91bdbfe26c9e5a3f957f9924fed035c6fd Mon Sep 17 00:00:00 2001 From: Xiaopong Tran Date: Mon, 10 Dec 2018 09:57:46 -0500 Subject: [PATCH 081/130] Added support for TCL Fixed newline issue --- e.tcl | 4 ++++ 1 file changed, 4 insertions(+) create mode 100755 e.tcl diff --git a/e.tcl b/e.tcl new file mode 100755 index 0000000..6293a07 --- /dev/null +++ b/e.tcl @@ -0,0 +1,4 @@ +#!/usr/bin/tclsh +while { true } { + puts -nonewline "e" +} From d56dd8763c2aca05ef6521c8219f99677d60efd9 Mon Sep 17 00:00:00 2001 From: gmarraffa Date: Mon, 10 Dec 2018 16:15:22 +0100 Subject: [PATCH 082/130] eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee come se fosse antani --- e.mc | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 e.mc diff --git a/e.mc b/e.mc new file mode 100644 index 0000000..80c448b --- /dev/null +++ b/e.mc @@ -0,0 +1,10 @@ +Lei ha clacsonato + voglio Linux, Necchi come se fosse 2 + voglio Bernarda, Necchi come se fosse 1 + voglio testate, Mascetti come se fosse 101 + stuzzica bituma, che se continui ti arrivano + testate a posterdati + e brematura anche, se Linux maggiore di Bernarda + + voglio pazzofurioso, Necchi come se fosse 0 + vaffanzum pazzofurioso! From eeeeeeefa659835f047cba3080deb74a0376f230 Mon Sep 17 00:00:00 2001 From: Jonathan Gawrych Date: Mon, 10 Dec 2018 07:30:33 -0700 Subject: [PATCH 083/130] commit eeeeeee From 5399eabc2d7f3e73e90a3dd2ca2fe6dd68603aa8 Mon Sep 17 00:00:00 2001 From: CaiMingshi Date: Mon, 10 Dec 2018 23:42:31 +0800 Subject: [PATCH 084/130] add NuSMV e --- e.smv | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 e.smv diff --git a/e.smv b/e.smv new file mode 100644 index 0000000..d207d9e --- /dev/null +++ b/e.smv @@ -0,0 +1,8 @@ +MODULE e + VAR + e: { e }; + ASSIGN + init(e) := e; + next(e) := e; + esac; + SPEC AG ( TRUE -> AF e = e) From 8a62d1f9b61157ac116506c567f16e67baa9077d Mon Sep 17 00:00:00 2001 From: CaiMingshi Date: Mon, 10 Dec 2018 23:51:00 +0800 Subject: [PATCH 085/130] lint --- e.smv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e.smv b/e.smv index d207d9e..37ebf7e 100644 --- a/e.smv +++ b/e.smv @@ -1,6 +1,6 @@ MODULE e VAR - e: { e }; + e : { e }; ASSIGN init(e) := e; next(e) := e; From 8b6b28886179231025a289761d4313f453ee6eb2 Mon Sep 17 00:00:00 2001 From: Toomas Vooglaid Date: Mon, 10 Dec 2018 17:52:56 +0200 Subject: [PATCH 086/130] Update e.red --- e.red | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/e.red b/e.red index 343e4ec..06a72bf 100644 --- a/e.red +++ b/e.red @@ -1,4 +1 @@ -Red [] -while [1][ - print "E" -] +Red [] forever [prin "e"] From ba2f9317c38aeee609c1701b55a9c0a3b698a1ae Mon Sep 17 00:00:00 2001 From: Qingyu Deng Date: Tue, 11 Dec 2018 00:05:25 +0800 Subject: [PATCH 087/130] eeeee with vue --- e.vue | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 e.vue diff --git a/e.vue b/e.vue new file mode 100644 index 0000000..5e8c498 --- /dev/null +++ b/e.vue @@ -0,0 +1,28 @@ + + + + + + From ba741886a9460444443b8ec0aa3f5a567bdb35fb Mon Sep 17 00:00:00 2001 From: Mirko Date: Mon, 10 Dec 2018 17:30:04 +0100 Subject: [PATCH 088/130] eeeeeeeeethereum meeeeeeeessageeeeeees --- eeeeee.sol | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 eeeeee.sol diff --git a/eeeeee.sol b/eeeeee.sol new file mode 100644 index 0000000..7363150 --- /dev/null +++ b/eeeeee.sol @@ -0,0 +1,15 @@ +pragma solidity ^0.5.0; + +contract EEEEEEEEEE { + + mapping (address => string) meeeeeeeeeessage; + + function sendMeeeeeeeeeessage(address _recipieeeeeeeeeent, string memory _meeeeeeeeeessage) public{ + meeeeeeeeeessage[_recipieeeeeeeeeent] = _meeeeeeeeeessage; + } + + function readMeeeeeeeeeessage() public view returns (string memory){ + return meeeeeeeeeessage[msg.sender]; + } + +} From d4188c156a91507165bb41a9bb9dae41f07b397b Mon Sep 17 00:00:00 2001 From: Mirko Date: Mon, 10 Dec 2018 17:33:17 +0100 Subject: [PATCH 089/130] Rename eeeeee.sol to e.sol --- eeeeee.sol => e.sol | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename eeeeee.sol => e.sol (100%) diff --git a/eeeeee.sol b/e.sol similarity index 100% rename from eeeeee.sol rename to e.sol From 4fd4a66a92c75e7ee2ad3d5cbd53142c066335c2 Mon Sep 17 00:00:00 2001 From: Tim Niedermeier Date: Mon, 10 Dec 2018 17:41:14 +0100 Subject: [PATCH 090/130] 3deeeeeeeeeeeeeeeeeeeeeeeeeeeeee --- e.stl | Bin 0 -> 21184 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 e.stl diff --git a/e.stl b/e.stl new file mode 100644 index 0000000000000000000000000000000000000000..8f4df88e3355cb9e5794cebeeacbbd245a822235 GIT binary patch literal 21184 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 literal 0 HcmV?d00001 From 3d4ac2a7cbab6142c54512f622b9cad82ee4583c Mon Sep 17 00:00:00 2001 From: Sanggu Han Date: Tue, 11 Dec 2018 02:11:01 +0900 Subject: [PATCH 091/130] =?UTF-8?q?let=20=EC=95=84=ED=9D=AC(aheui)=20spits?= =?UTF-8?q?=20e=20foreeeeeeeeeeeeeeever?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit let [aheui](https://aheui.github.io/specification.en) - `pure Korean programming lang.` - spits e foreeeeeeeeeeeeever you can check result in [here](http://aheui.github.io/jsaheui/jsaheui_en.html) --- e.aheui | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 e.aheui diff --git a/e.aheui b/e.aheui new file mode 100644 index 0000000..a6c9f72 --- /dev/null +++ b/e.aheui @@ -0,0 +1,3 @@ +밝붇몋 +뚜벌이 +따밤툐 From b99437ff28733665dc694dbc1d019c18e76a95f1 Mon Sep 17 00:00:00 2001 From: Bruno Pasquini Baptista Affonso Date: Mon, 10 Dec 2018 15:19:13 -0200 Subject: [PATCH 092/130] Bambam's "It's show time" Recursive Language e.birl --- e.birl | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 e.birl diff --git a/e.birl b/e.birl new file mode 100644 index 0000000..ee57ec8 --- /dev/null +++ b/e.birl @@ -0,0 +1,4 @@ +HORA DO SHOW + CE QUER VER ESSA PORRA? ("e"); + BORA CUMPADE 0; +BIRL From 6f6fc6331e4ac3a3f37edb0cbb14370ee7c20491 Mon Sep 17 00:00:00 2001 From: Richard Patel Date: Mon, 10 Dec 2018 19:05:35 +0100 Subject: [PATCH 093/130] Holy E --- e.hc | 1 + 1 file changed, 1 insertion(+) create mode 100644 e.hc diff --git a/e.hc b/e.hc new file mode 100644 index 0000000..2d5982f --- /dev/null +++ b/e.hc @@ -0,0 +1 @@ +while(1) Print("e"); From 0cd0c8d3ed0c3875b100422c8d9264f3ab97c136 Mon Sep 17 00:00:00 2001 From: Becky <32199965+rebeccc@users.noreply.github.com> Date: Mon, 10 Dec 2018 13:09:49 -0500 Subject: [PATCH 094/130] Create e_lc3.asm --- e_lc3.asm | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 e_lc3.asm diff --git a/e_lc3.asm b/e_lc3.asm new file mode 100644 index 0000000..625775f --- /dev/null +++ b/e_lc3.asm @@ -0,0 +1,11 @@ +.ORIG x3000 + + AND R0, R0, #0 + LEA R0, e + PUTS + +HALT + +e .STRINGZ "e" + +.END From 360388b529916874f552b4cb4357e35c65f9f650 Mon Sep 17 00:00:00 2001 From: lemon-sherbet Date: Mon, 10 Dec 2018 19:12:20 +0100 Subject: [PATCH 095/130] gameboy --- e.gb | Bin 0 -> 32768 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 e.gb diff --git a/e.gb b/e.gb new file mode 100644 index 0000000000000000000000000000000000000000..ca1129520787be3a499ca3a18fa68509b7bb7973 GIT binary patch literal 32768 zcmeIzv1{B`90%~9sRlt5_e?X0V2F~TcocNe;2O~es__O72VDfEsRt7bg`z>jmELd# z4H|AxrewGwTPS!b_8>?`(Y+9ZhSDxA9CT6JM_qmO%d^rF{{boAA6U9~zo+-!@AIC{ zoBMy4(Vx%S_^y;Y)2%IWZ{K_GM)qCM-IZ$RL)p4~_x3%s|2X)m{p4BuQTuWG{=wI6 z{FV6Tb9w9I_va!%{Py5Mb5m}-^QC+vp4=37=g#t5*?!qP{Q2VI$46&pUwrm(``6~; z<)g=E-+yp$ZPCB{_35=aCjP$yZhvarHny~cWiKm>odo}6?;pcRHmvgpGYTt&JLcY77t z-^aX&INskE*=&|e^jIvG%gqM!B4@AvZo@mzkv~7j6Y#*@&W8DPXR*83W$AZojIKlf z<+3cFJZamqEDF>&2I^icn&$L$7_`5j{o=)Xy;>CozC-;sr}Nv&bd)i_Uh8?a`LaZv zcKuoAIQsnS>&1y2M}NIOe48ZLZ<{|oZ5mylW>j6|{t$b6DgeLnyrRA+x_VuLD8i0m zCxT!yab3p|+1(wzc6agi?Cqh~o8$7buE)2=_Ca-duIpD9Rlt5BbPwnAaevTT`y&tI zuG74p7-Qlgkkx#iI}Y{}u;QWnt22TXYWw`WuCY#=NBuCu`bFZn>$Ez&4+vC(u;b%1eloHDV}8A! z&9q$<(`gV)r#R0xZ+*}<#&yFmjrP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O z0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo Y6rcbFC_n)UP=Epypa2CZ@HPqj15pM1!2kdN literal 0 HcmV?d00001 From e1112be7ebf1986e324855a0f0f467c1659268fb Mon Sep 17 00:00:00 2001 From: Richard Patel Date: Mon, 10 Dec 2018 19:21:09 +0100 Subject: [PATCH 096/130] AutoHotkeeeeeeeeeey --- e.ahk | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 e.ahk diff --git a/e.ahk b/e.ahk new file mode 100644 index 0000000..1ee1c79 --- /dev/null +++ b/e.ahk @@ -0,0 +1,2 @@ +Loop + MsgBox eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee `n From 55dd77bb049882e400863a15a830d60112f83f71 Mon Sep 17 00:00:00 2001 From: Becky <32199965+rebeccc@users.noreply.github.com> Date: Mon, 10 Dec 2018 13:32:04 -0500 Subject: [PATCH 097/130] making the l00p infinite --- e_lc3.asm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/e_lc3.asm b/e_lc3.asm index 625775f..347a340 100644 --- a/e_lc3.asm +++ b/e_lc3.asm @@ -1,8 +1,10 @@ .ORIG x3000 - AND R0, R0, #0 - LEA R0, e - PUTS + +loop AND R0, R0, #0 + LEA R0, e + PUTS +BRnzp loop HALT From b1c607e366b363c9426136f8900a21136d3ceac3 Mon Sep 17 00:00:00 2001 From: David Underwood Date: Mon, 10 Dec 2018 13:47:31 -0500 Subject: [PATCH 098/130] Update e.rb Put all the `e`s on the same line Use single quotes instead of double --- e.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e.rb b/e.rb index dff915d..0a51daf 100644 --- a/e.rb +++ b/e.rb @@ -1,3 +1,3 @@ loop do - puts "e" + print 'e' end From 0eb61cad849e248e9e7a3e53b0869c7f74339d61 Mon Sep 17 00:00:00 2001 From: DanielGoldfarb Date: Mon, 10 Dec 2018 13:48:10 -0500 Subject: [PATCH 099/130] Create e.e.py 45114 --- e.e.py | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 e.e.py diff --git a/e.e.py b/e.e.py new file mode 100644 index 0000000..9297792 --- /dev/null +++ b/e.e.py @@ -0,0 +1,8 @@ +#!/opt/bb/bin/python3 +e = list("2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921817413596629043572900334295260595630738132328627943490763233829880753195251019011573834187930702154089149934884167509244761460668082264800168477411853742345442437107539077744992069551702761838606261331384583000752044933826560297606737113200709328709127443747047230696977209310141692836819025515108657463772111252389784425056953696770785449969967946864454905987931636889230098793127736178215424999229576351482208269895193668033182528869398496465105820939239829488793320362509443117301238197068416140397019837679320683282376464804295311802328782509819455815301756717361332069811250996181881593041690351598888519345807273866738589422879228499892086805825749279610484198444363463244968487560233624827041978623209002160990235304369941849146314093431738143640546253152096183690888707016768396424378140592714563549061303107208510383750510115747704171898610687396965521267154688957035035402123407849819334321068170121005627880235193033224745015853904730419957777093503660416997329725088687696640355570716226844716256079882651787134195124665201030592123667719432527867539855894489697096409754591856956380236370162112047742722836489613422516445078182442352948636372141740238893441247963574370263755294448337998016125492278509257782562092622648326277933386566481627725164019105900491644998289315056604725802778631864155195653244258698294695930801915298721172556347546396447910145904090586298496791287406870504895858671747985466775757320568128845920541334053922000113786300945560688166740016984205580403363795376452030402432256613527836951177883863874439662532249850654995886234281899707733276171783928034946501434558897071942586398772754710962953741521115136835062752602326484728703920764310059584116612054529703023647254929666938115137322753645098889031360205724817658511806303644281231496550704751025446501172721155519486685080036853228183152196003735625279449515828418829478761085263981395599006737648292244375287184624578036192981971399147564488262603903381441823262515097482798777996437308997038886778227138360577297882412561190717663946507063304527954661855096666185664709711344474016070462621568071748187784437143698821855967095910259686200235371858874856965220005031173439207321139080329363447972735595527734907178379342163701205005451326383544000186323991490705479778056697853358048966906295119432473099587655236812859041383241160722602998330535370876138939639177957454016137223618789365260538155841587186925538606164779834025435128439612946035291332594279490433729908573158029095863138268329147711639633709240031689458636060645845925126994655724839186564209752685082307544254599376917041977780085362730941710163434907696423722294352366125572508814779223151974778060569672538017180776360346245927877846585065605078084421152969752189087401966090665180351650179250461950136658543663271254963990854914420001457476081930221206602433009641270489439039717719518069908699860663658323227870937650226014929101151717763594460202324930028040186772391028809786660565118326004368850881715723866984224220102495055188169480322100251542649463981287367765892768816359831247788652014117411091360116499507662907794364600585194199856016264790761532103872755712699251827568798930276176114616254935649590379804583818232336861201624373656984670378585330527583333793990752166069238053369887956513728559388349989470741618155012539706464817194670834819721448889879067650379590366967249499254527903372963616265897603949857674139735944102374432970935547798262961459144293645142861715858733974679189757121195618738578364475844842355558105002561149239151889309946342841393608038309166281881150371528496705974162562823609216807515017772538740256425347087908913729172282861151591568372524163077225440633787593105982676094420326192428531701878177296023541306067213604600038966109364709514141718577701418060644363681546444005331608778314317444081194942297559931401188868331483280270655383300469329011574414756313999722170380461709289457909627166226074071874997535921275608441473782330327033016823719364800217328573493594756433412994302485023573221459784328264142168487872167336701061509424345698440187331281010794512722373788612605816566805371439612788873252737389039289050686532413806279602593038772769778379286840932536588073398845721874602100531148335132385004782716937621800490479559795929059165547050577751430817511269898518840871856402603530558373783242292418562564425502267215598027401261797192804713960068916382866527700975276706977703643926022437284184088325184877047263844037953016690546593746161932384036389313136432713768884102681121989127522305625675625470172508634976536728860596675274086862740791285657699631378975303466061666980421826772456053066077389962421834085988207186468262321508028828635974683965435885668550377313129658797581050121491620765676995065971534476347032085321560367482860837865680307306265763346977429563464371670939719306087696349532884683361303882943104080029687386911706666614680001512114344225602387447432525076938707777519329994213727721125884360871583483562696166198057252661220679754062106208064988291845439530152998209250300549825704339055357016865312052649561485724925738620691740369521353373253166634546658859728665945113644137033139367211856955395210845840724432383558606310680696492485123263269951460359603729725319836842336390463213671011619282171115028280160448805880238203198149309636959673583274202498824568494127386056649135252670604623445054922758115170931492187959271800194096886698683703730220047531433818109270803001720593553052070070607223399946399057131158709963577735902719628506114651483752620956534671329002599439766311454590268589897911583709341937044115512192011716488056694593813118384376562062784631049034629395002945834116482411496975832601180073169943739350696629571241027323913874175492307186245454322203955273529524024590380574450289224688628533654221381572213116328811205214648980518009202471939171055539011394331668151582884368760696110250517100739276238555338627255353883096067164466237092264680967125406186950214317621166814009759528149390722260111268115310838731761732323526360583817315103459573653822353499293582283685100781088463434998351840445170427018938199424341009057537625776757111809008816418331920196262341628816652137471732547772778348877436651882875215668571950637193656539038944936642176400312152787022236646363575550356557694888654950027085392361710550213114741374410613444554419210133617299628569489919336918472947858072915608851039678195942983318648075608367955149663644896559294818785178403877332624705194505041984774201418394773120281588684570729054405751060128525805659470304683634459265255213700806875200959345360731622611872817392807462309468536782310609792159936001994623799343421068781349734695924646975250624695861690917857397659519939299399556754271465491045686070209901260681870498417807917392407194599632306025470790177452751318680998228473086076653686685551646770291133682756310722334672611370549079536583453863719623585631261838715677411873852772292259474337378569553845624680101390572787101651296663676445187246565373040244368414081448873295784734849000301947788802046032466084287535184836495919508288832320652212810419044804724794929134228495197002260131043006241071797150279343326340799596053144605323048852897291765987601666781193793237245385720960758227717848336161358261289622611812945592746276713779448758675365754486140761193112595851265575973457301533364263076798544338576171533346232527057200530398828949903425956623297578248873502925916682589445689465599265845476269452878051650172067478541788798227680653665064191097343452887833862172615626958265447820567298775642632532159429441803994321700009054265076309558846589517170914760743713689331946909098190450129030709956622662030318264936573369841955577696378762491885286568660760056602560544571133728684020557441603083705231224258722343885412317948138855007568938112493538631863528708379984569261998179452336408742959118074745341955142035172618420084550917084568236820089773945584267921427347756087964427920270831215015640634134161716644806981548376449157390012121704154787259199894382536495051477137939914720521952907939613762110723849429061635760459623125350606853765142311534966568371511660422079639446662116325515772907097847315627827759878813649195125748332879377157145909106484164267830994972367442017586226940215940792448054125536043131799269673915754241929660731239376354213923061787675395871143610408940996608947141834069836299367536262154524729846421375289107988438130609555262272083751862983706678722443019579379378607210725427728907173285487437435578196651171661833088112912024520404868220007234403502544820283425418788465360259150644527165770004452109773558589762265548494162171498953238342160011406295071849042778925855274303522139683567901807640604213830730877446017084268827226117718084266433365178000217190344923426426629226145600433738386833555534345300426481847398921562708609565062934040526494324426144566592129122564889356965500915430642613425266847259491431423939884543248632746184284665598533231221046625989014171210344608427161661900125719587079321756969854401339762209674945418540711844643394699016269835160784892451405894094639526780735457970030705116368251948770118976400282764841416058720618418529718915401968825328930914966534575357142731848201638464483249903788606900807270932767312758196656394114896171683298045513972950668760474091542042842999354102582911350224169076943166857424252250902693903481485645130306992519959043638402842926741257342244776558417788617173726546208549829449894678735092958165263207225899236876845701782303809656788311228930580914057261086588484587310165815116753332767488701482916741970151255978257270740643180860142814902414678047232759768426963393577354293018673943971638861176420900406866339885684168100387238921448317607011668450388721236436704331409115573328018297798873659091665961240202177855885487617616198937079438005666336488436508914480557103976521469602766258359905198704230017946553679") +for _e_ in e: + if ( _e_ == '.'): + pass + else: + for __e__ in range(int(_e_)): + print('e',end='') From 1e6b99561d1977146e0221fd95be08ab23bda82c Mon Sep 17 00:00:00 2001 From: DanielGoldfarb Date: Mon, 10 Dec 2018 13:52:17 -0500 Subject: [PATCH 100/130] Update e.e.py --- e.e.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e.e.py b/e.e.py index 9297792..65afae7 100644 --- a/e.e.py +++ b/e.e.py @@ -1,4 +1,4 @@ -#!/opt/bb/bin/python3 +/usr/bin/env python3 e = list("2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921817413596629043572900334295260595630738132328627943490763233829880753195251019011573834187930702154089149934884167509244761460668082264800168477411853742345442437107539077744992069551702761838606261331384583000752044933826560297606737113200709328709127443747047230696977209310141692836819025515108657463772111252389784425056953696770785449969967946864454905987931636889230098793127736178215424999229576351482208269895193668033182528869398496465105820939239829488793320362509443117301238197068416140397019837679320683282376464804295311802328782509819455815301756717361332069811250996181881593041690351598888519345807273866738589422879228499892086805825749279610484198444363463244968487560233624827041978623209002160990235304369941849146314093431738143640546253152096183690888707016768396424378140592714563549061303107208510383750510115747704171898610687396965521267154688957035035402123407849819334321068170121005627880235193033224745015853904730419957777093503660416997329725088687696640355570716226844716256079882651787134195124665201030592123667719432527867539855894489697096409754591856956380236370162112047742722836489613422516445078182442352948636372141740238893441247963574370263755294448337998016125492278509257782562092622648326277933386566481627725164019105900491644998289315056604725802778631864155195653244258698294695930801915298721172556347546396447910145904090586298496791287406870504895858671747985466775757320568128845920541334053922000113786300945560688166740016984205580403363795376452030402432256613527836951177883863874439662532249850654995886234281899707733276171783928034946501434558897071942586398772754710962953741521115136835062752602326484728703920764310059584116612054529703023647254929666938115137322753645098889031360205724817658511806303644281231496550704751025446501172721155519486685080036853228183152196003735625279449515828418829478761085263981395599006737648292244375287184624578036192981971399147564488262603903381441823262515097482798777996437308997038886778227138360577297882412561190717663946507063304527954661855096666185664709711344474016070462621568071748187784437143698821855967095910259686200235371858874856965220005031173439207321139080329363447972735595527734907178379342163701205005451326383544000186323991490705479778056697853358048966906295119432473099587655236812859041383241160722602998330535370876138939639177957454016137223618789365260538155841587186925538606164779834025435128439612946035291332594279490433729908573158029095863138268329147711639633709240031689458636060645845925126994655724839186564209752685082307544254599376917041977780085362730941710163434907696423722294352366125572508814779223151974778060569672538017180776360346245927877846585065605078084421152969752189087401966090665180351650179250461950136658543663271254963990854914420001457476081930221206602433009641270489439039717719518069908699860663658323227870937650226014929101151717763594460202324930028040186772391028809786660565118326004368850881715723866984224220102495055188169480322100251542649463981287367765892768816359831247788652014117411091360116499507662907794364600585194199856016264790761532103872755712699251827568798930276176114616254935649590379804583818232336861201624373656984670378585330527583333793990752166069238053369887956513728559388349989470741618155012539706464817194670834819721448889879067650379590366967249499254527903372963616265897603949857674139735944102374432970935547798262961459144293645142861715858733974679189757121195618738578364475844842355558105002561149239151889309946342841393608038309166281881150371528496705974162562823609216807515017772538740256425347087908913729172282861151591568372524163077225440633787593105982676094420326192428531701878177296023541306067213604600038966109364709514141718577701418060644363681546444005331608778314317444081194942297559931401188868331483280270655383300469329011574414756313999722170380461709289457909627166226074071874997535921275608441473782330327033016823719364800217328573493594756433412994302485023573221459784328264142168487872167336701061509424345698440187331281010794512722373788612605816566805371439612788873252737389039289050686532413806279602593038772769778379286840932536588073398845721874602100531148335132385004782716937621800490479559795929059165547050577751430817511269898518840871856402603530558373783242292418562564425502267215598027401261797192804713960068916382866527700975276706977703643926022437284184088325184877047263844037953016690546593746161932384036389313136432713768884102681121989127522305625675625470172508634976536728860596675274086862740791285657699631378975303466061666980421826772456053066077389962421834085988207186468262321508028828635974683965435885668550377313129658797581050121491620765676995065971534476347032085321560367482860837865680307306265763346977429563464371670939719306087696349532884683361303882943104080029687386911706666614680001512114344225602387447432525076938707777519329994213727721125884360871583483562696166198057252661220679754062106208064988291845439530152998209250300549825704339055357016865312052649561485724925738620691740369521353373253166634546658859728665945113644137033139367211856955395210845840724432383558606310680696492485123263269951460359603729725319836842336390463213671011619282171115028280160448805880238203198149309636959673583274202498824568494127386056649135252670604623445054922758115170931492187959271800194096886698683703730220047531433818109270803001720593553052070070607223399946399057131158709963577735902719628506114651483752620956534671329002599439766311454590268589897911583709341937044115512192011716488056694593813118384376562062784631049034629395002945834116482411496975832601180073169943739350696629571241027323913874175492307186245454322203955273529524024590380574450289224688628533654221381572213116328811205214648980518009202471939171055539011394331668151582884368760696110250517100739276238555338627255353883096067164466237092264680967125406186950214317621166814009759528149390722260111268115310838731761732323526360583817315103459573653822353499293582283685100781088463434998351840445170427018938199424341009057537625776757111809008816418331920196262341628816652137471732547772778348877436651882875215668571950637193656539038944936642176400312152787022236646363575550356557694888654950027085392361710550213114741374410613444554419210133617299628569489919336918472947858072915608851039678195942983318648075608367955149663644896559294818785178403877332624705194505041984774201418394773120281588684570729054405751060128525805659470304683634459265255213700806875200959345360731622611872817392807462309468536782310609792159936001994623799343421068781349734695924646975250624695861690917857397659519939299399556754271465491045686070209901260681870498417807917392407194599632306025470790177452751318680998228473086076653686685551646770291133682756310722334672611370549079536583453863719623585631261838715677411873852772292259474337378569553845624680101390572787101651296663676445187246565373040244368414081448873295784734849000301947788802046032466084287535184836495919508288832320652212810419044804724794929134228495197002260131043006241071797150279343326340799596053144605323048852897291765987601666781193793237245385720960758227717848336161358261289622611812945592746276713779448758675365754486140761193112595851265575973457301533364263076798544338576171533346232527057200530398828949903425956623297578248873502925916682589445689465599265845476269452878051650172067478541788798227680653665064191097343452887833862172615626958265447820567298775642632532159429441803994321700009054265076309558846589517170914760743713689331946909098190450129030709956622662030318264936573369841955577696378762491885286568660760056602560544571133728684020557441603083705231224258722343885412317948138855007568938112493538631863528708379984569261998179452336408742959118074745341955142035172618420084550917084568236820089773945584267921427347756087964427920270831215015640634134161716644806981548376449157390012121704154787259199894382536495051477137939914720521952907939613762110723849429061635760459623125350606853765142311534966568371511660422079639446662116325515772907097847315627827759878813649195125748332879377157145909106484164267830994972367442017586226940215940792448054125536043131799269673915754241929660731239376354213923061787675395871143610408940996608947141834069836299367536262154524729846421375289107988438130609555262272083751862983706678722443019579379378607210725427728907173285487437435578196651171661833088112912024520404868220007234403502544820283425418788465360259150644527165770004452109773558589762265548494162171498953238342160011406295071849042778925855274303522139683567901807640604213830730877446017084268827226117718084266433365178000217190344923426426629226145600433738386833555534345300426481847398921562708609565062934040526494324426144566592129122564889356965500915430642613425266847259491431423939884543248632746184284665598533231221046625989014171210344608427161661900125719587079321756969854401339762209674945418540711844643394699016269835160784892451405894094639526780735457970030705116368251948770118976400282764841416058720618418529718915401968825328930914966534575357142731848201638464483249903788606900807270932767312758196656394114896171683298045513972950668760474091542042842999354102582911350224169076943166857424252250902693903481485645130306992519959043638402842926741257342244776558417788617173726546208549829449894678735092958165263207225899236876845701782303809656788311228930580914057261086588484587310165815116753332767488701482916741970151255978257270740643180860142814902414678047232759768426963393577354293018673943971638861176420900406866339885684168100387238921448317607011668450388721236436704331409115573328018297798873659091665961240202177855885487617616198937079438005666336488436508914480557103976521469602766258359905198704230017946553679") for _e_ in e: if ( _e_ == '.'): From 9f7c5508c6122adc8ff7643b4a602cb75f699ccd Mon Sep 17 00:00:00 2001 From: DanielGoldfarb Date: Mon, 10 Dec 2018 13:53:34 -0500 Subject: [PATCH 101/130] Update e.e.py --- e.e.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e.e.py b/e.e.py index 65afae7..b809a9b 100644 --- a/e.e.py +++ b/e.e.py @@ -1,4 +1,4 @@ -/usr/bin/env python3 +#!/usr/bin/env python3 e = list("2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921817413596629043572900334295260595630738132328627943490763233829880753195251019011573834187930702154089149934884167509244761460668082264800168477411853742345442437107539077744992069551702761838606261331384583000752044933826560297606737113200709328709127443747047230696977209310141692836819025515108657463772111252389784425056953696770785449969967946864454905987931636889230098793127736178215424999229576351482208269895193668033182528869398496465105820939239829488793320362509443117301238197068416140397019837679320683282376464804295311802328782509819455815301756717361332069811250996181881593041690351598888519345807273866738589422879228499892086805825749279610484198444363463244968487560233624827041978623209002160990235304369941849146314093431738143640546253152096183690888707016768396424378140592714563549061303107208510383750510115747704171898610687396965521267154688957035035402123407849819334321068170121005627880235193033224745015853904730419957777093503660416997329725088687696640355570716226844716256079882651787134195124665201030592123667719432527867539855894489697096409754591856956380236370162112047742722836489613422516445078182442352948636372141740238893441247963574370263755294448337998016125492278509257782562092622648326277933386566481627725164019105900491644998289315056604725802778631864155195653244258698294695930801915298721172556347546396447910145904090586298496791287406870504895858671747985466775757320568128845920541334053922000113786300945560688166740016984205580403363795376452030402432256613527836951177883863874439662532249850654995886234281899707733276171783928034946501434558897071942586398772754710962953741521115136835062752602326484728703920764310059584116612054529703023647254929666938115137322753645098889031360205724817658511806303644281231496550704751025446501172721155519486685080036853228183152196003735625279449515828418829478761085263981395599006737648292244375287184624578036192981971399147564488262603903381441823262515097482798777996437308997038886778227138360577297882412561190717663946507063304527954661855096666185664709711344474016070462621568071748187784437143698821855967095910259686200235371858874856965220005031173439207321139080329363447972735595527734907178379342163701205005451326383544000186323991490705479778056697853358048966906295119432473099587655236812859041383241160722602998330535370876138939639177957454016137223618789365260538155841587186925538606164779834025435128439612946035291332594279490433729908573158029095863138268329147711639633709240031689458636060645845925126994655724839186564209752685082307544254599376917041977780085362730941710163434907696423722294352366125572508814779223151974778060569672538017180776360346245927877846585065605078084421152969752189087401966090665180351650179250461950136658543663271254963990854914420001457476081930221206602433009641270489439039717719518069908699860663658323227870937650226014929101151717763594460202324930028040186772391028809786660565118326004368850881715723866984224220102495055188169480322100251542649463981287367765892768816359831247788652014117411091360116499507662907794364600585194199856016264790761532103872755712699251827568798930276176114616254935649590379804583818232336861201624373656984670378585330527583333793990752166069238053369887956513728559388349989470741618155012539706464817194670834819721448889879067650379590366967249499254527903372963616265897603949857674139735944102374432970935547798262961459144293645142861715858733974679189757121195618738578364475844842355558105002561149239151889309946342841393608038309166281881150371528496705974162562823609216807515017772538740256425347087908913729172282861151591568372524163077225440633787593105982676094420326192428531701878177296023541306067213604600038966109364709514141718577701418060644363681546444005331608778314317444081194942297559931401188868331483280270655383300469329011574414756313999722170380461709289457909627166226074071874997535921275608441473782330327033016823719364800217328573493594756433412994302485023573221459784328264142168487872167336701061509424345698440187331281010794512722373788612605816566805371439612788873252737389039289050686532413806279602593038772769778379286840932536588073398845721874602100531148335132385004782716937621800490479559795929059165547050577751430817511269898518840871856402603530558373783242292418562564425502267215598027401261797192804713960068916382866527700975276706977703643926022437284184088325184877047263844037953016690546593746161932384036389313136432713768884102681121989127522305625675625470172508634976536728860596675274086862740791285657699631378975303466061666980421826772456053066077389962421834085988207186468262321508028828635974683965435885668550377313129658797581050121491620765676995065971534476347032085321560367482860837865680307306265763346977429563464371670939719306087696349532884683361303882943104080029687386911706666614680001512114344225602387447432525076938707777519329994213727721125884360871583483562696166198057252661220679754062106208064988291845439530152998209250300549825704339055357016865312052649561485724925738620691740369521353373253166634546658859728665945113644137033139367211856955395210845840724432383558606310680696492485123263269951460359603729725319836842336390463213671011619282171115028280160448805880238203198149309636959673583274202498824568494127386056649135252670604623445054922758115170931492187959271800194096886698683703730220047531433818109270803001720593553052070070607223399946399057131158709963577735902719628506114651483752620956534671329002599439766311454590268589897911583709341937044115512192011716488056694593813118384376562062784631049034629395002945834116482411496975832601180073169943739350696629571241027323913874175492307186245454322203955273529524024590380574450289224688628533654221381572213116328811205214648980518009202471939171055539011394331668151582884368760696110250517100739276238555338627255353883096067164466237092264680967125406186950214317621166814009759528149390722260111268115310838731761732323526360583817315103459573653822353499293582283685100781088463434998351840445170427018938199424341009057537625776757111809008816418331920196262341628816652137471732547772778348877436651882875215668571950637193656539038944936642176400312152787022236646363575550356557694888654950027085392361710550213114741374410613444554419210133617299628569489919336918472947858072915608851039678195942983318648075608367955149663644896559294818785178403877332624705194505041984774201418394773120281588684570729054405751060128525805659470304683634459265255213700806875200959345360731622611872817392807462309468536782310609792159936001994623799343421068781349734695924646975250624695861690917857397659519939299399556754271465491045686070209901260681870498417807917392407194599632306025470790177452751318680998228473086076653686685551646770291133682756310722334672611370549079536583453863719623585631261838715677411873852772292259474337378569553845624680101390572787101651296663676445187246565373040244368414081448873295784734849000301947788802046032466084287535184836495919508288832320652212810419044804724794929134228495197002260131043006241071797150279343326340799596053144605323048852897291765987601666781193793237245385720960758227717848336161358261289622611812945592746276713779448758675365754486140761193112595851265575973457301533364263076798544338576171533346232527057200530398828949903425956623297578248873502925916682589445689465599265845476269452878051650172067478541788798227680653665064191097343452887833862172615626958265447820567298775642632532159429441803994321700009054265076309558846589517170914760743713689331946909098190450129030709956622662030318264936573369841955577696378762491885286568660760056602560544571133728684020557441603083705231224258722343885412317948138855007568938112493538631863528708379984569261998179452336408742959118074745341955142035172618420084550917084568236820089773945584267921427347756087964427920270831215015640634134161716644806981548376449157390012121704154787259199894382536495051477137939914720521952907939613762110723849429061635760459623125350606853765142311534966568371511660422079639446662116325515772907097847315627827759878813649195125748332879377157145909106484164267830994972367442017586226940215940792448054125536043131799269673915754241929660731239376354213923061787675395871143610408940996608947141834069836299367536262154524729846421375289107988438130609555262272083751862983706678722443019579379378607210725427728907173285487437435578196651171661833088112912024520404868220007234403502544820283425418788465360259150644527165770004452109773558589762265548494162171498953238342160011406295071849042778925855274303522139683567901807640604213830730877446017084268827226117718084266433365178000217190344923426426629226145600433738386833555534345300426481847398921562708609565062934040526494324426144566592129122564889356965500915430642613425266847259491431423939884543248632746184284665598533231221046625989014171210344608427161661900125719587079321756969854401339762209674945418540711844643394699016269835160784892451405894094639526780735457970030705116368251948770118976400282764841416058720618418529718915401968825328930914966534575357142731848201638464483249903788606900807270932767312758196656394114896171683298045513972950668760474091542042842999354102582911350224169076943166857424252250902693903481485645130306992519959043638402842926741257342244776558417788617173726546208549829449894678735092958165263207225899236876845701782303809656788311228930580914057261086588484587310165815116753332767488701482916741970151255978257270740643180860142814902414678047232759768426963393577354293018673943971638861176420900406866339885684168100387238921448317607011668450388721236436704331409115573328018297798873659091665961240202177855885487617616198937079438005666336488436508914480557103976521469602766258359905198704230017946553679") for _e_ in e: if ( _e_ == '.'): From 59dbec12dcfb7a0178bdafa08fcaa3fc02a6e032 Mon Sep 17 00:00:00 2001 From: "William D. Jones" Date: Mon, 10 Dec 2018 14:41:47 -0500 Subject: [PATCH 102/130] Add sorely-needed badge to README.md. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 9fd2138..05062ff 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,3 @@ # eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee +![eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee](https://img.shields.io/badge/eeeeee-eeeeee-eeeeee.svg) eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee From 09efd4761a1bb58f73d659c7bc4d2f7aff3e8c3a Mon Sep 17 00:00:00 2001 From: Aidan Harris Date: Mon, 10 Dec 2018 19:45:54 +0000 Subject: [PATCH 103/130] Added a Dockerfileeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee --- Dockerfile | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..1a5e67a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,5 @@ +FROM busybox + +RUN seq 1 10000 | while read -r e; do echo -ne 'e'; done; echo e; + +CMD strings /dev/urandom | grep -oE 'e' | tr -d '\n' From a1c202b8c27044498802abed0c7c5e6fb1c99c34 Mon Sep 17 00:00:00 2001 From: Aidan Harris Date: Mon, 10 Dec 2018 19:55:51 +0000 Subject: [PATCH 104/130] Dockerfile -> e.Dockerfile --- e.Dockerfile | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 e.Dockerfile diff --git a/e.Dockerfile b/e.Dockerfile new file mode 100644 index 0000000..1a5e67a --- /dev/null +++ b/e.Dockerfile @@ -0,0 +1,5 @@ +FROM busybox + +RUN seq 1 10000 | while read -r e; do echo -ne 'e'; done; echo e; + +CMD strings /dev/urandom | grep -oE 'e' | tr -d '\n' From 4e2824add86ec6733716c25399f2f9005c6b610e Mon Sep 17 00:00:00 2001 From: Ian Bertolacci Date: Mon, 10 Dec 2018 12:58:52 -0700 Subject: [PATCH 105/130] chpl e distributed and parallelized for maximum throughput. Concurrently safe because ordering of task A printing before B (or B before A) does not change output ("ee" vs "ee"). --- e.chpl | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 e.chpl diff --git a/e.chpl b/e.chpl new file mode 100644 index 0000000..7c60117 --- /dev/null +++ b/e.chpl @@ -0,0 +1,9 @@ +coforall locale in Locales { + on locale { + coforall task_id in 0..#locale.maxTaskPar { + while( true ) { + write( "e" ); + } + } + } +} From 2eeac770b3ee651759f431db222aad6f4eee65f0 Mon Sep 17 00:00:00 2001 From: Aidan Harris Date: Mon, 10 Dec 2018 20:01:01 +0000 Subject: [PATCH 106/130] Delete Dockerfile --- Dockerfile | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 1a5e67a..0000000 --- a/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM busybox - -RUN seq 1 10000 | while read -r e; do echo -ne 'e'; done; echo e; - -CMD strings /dev/urandom | grep -oE 'e' | tr -d '\n' From 3f60e1ec056e7cf184d171273aa5d04047635557 Mon Sep 17 00:00:00 2001 From: Andrzej Ressel Date: Mon, 10 Dec 2018 21:16:04 +0100 Subject: [PATCH 107/130] args are optional now https://kotlinlang.org/docs/reference/whatsnew13.html#parameterless-main --- e.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e.kt b/e.kt index e76cb64..1e0b929 100644 --- a/e.kt +++ b/e.kt @@ -1,4 +1,4 @@ -fun main(args: Array) { +fun main() { while (true) { print("e") } From 7b9c2ceecec3ed02219b0020074db4ea048109e3 Mon Sep 17 00:00:00 2001 From: RobertCraigie Date: Mon, 10 Dec 2018 20:33:24 +0000 Subject: [PATCH 108/130] eeeeeeeeee e.arnoldc --- e.arnoldc | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 e.arnoldc diff --git a/e.arnoldc b/e.arnoldc new file mode 100644 index 0000000..3794687 --- /dev/null +++ b/e.arnoldc @@ -0,0 +1,5 @@ +IT'S SHOWTIME + STICK AROUND @NO PROBLEMO + TALK TO THE HAND "e" + CHILL +YOU HAVE BEEN TERMINATED \ No newline at end of file From 6fa8c2975bdb13ce3f52994051cedb82f1700599 Mon Sep 17 00:00:00 2001 From: Cthuflu Date: Tue, 11 Dec 2018 11:01:35 -0500 Subject: [PATCH 109/130] Added e.fbx (ASCII) --- e.fbx | 614 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 614 insertions(+) create mode 100644 e.fbx diff --git a/e.fbx b/e.fbx new file mode 100644 index 0000000..10aeb3a --- /dev/null +++ b/e.fbx @@ -0,0 +1,614 @@ +; FBX 6.1.0 project file +; Created by Blender FBX Exporter +; for support mail: ideasman42@gmail.com +; ---------------------------------------------------- + +FBXHeaderExtension: { + FBXHeaderVersion: 1003 + FBXVersion: 6100 + CreationTimeStamp: { + Version: 1000 + Year: 2018 + Month: 12 + Day: 11 + Hour: 10 + Minute: 55 + Second: 17 + Millisecond: 0 + } + Creator: "FBX SDK/FBX Plugins build 20070228" + OtherFlags: { + FlagPLE: 0 + } +} +CreationTime: "2018-12-11 10:55:17:000" +Creator: "Blender version 2.79 (sub 0)" + +; Object definitions +;------------------------------------------------------------------ + +Definitions: { + Version: 100 + Count: 3 + ObjectType: "Model" { + Count: 1 + } + ObjectType: "Geometry" { + Count: 1 + } + ObjectType: "Material" { + Count: 1 + } + ObjectType: "Pose" { + Count: 1 + } + ObjectType: "GlobalSettings" { + Count: 1 + } +} + +; Object properties +;------------------------------------------------------------------ + +Objects: { + Model: "Model::e", "Mesh" { + Version: 232 + Properties60: { + Property: "QuaternionInterpolate", "bool", "",0 + Property: "Visibility", "Visibility", "A+",1 + Property: "Lcl Translation", "Lcl Translation", "A+",0.000000000000000,0.000000000000000,0.000000000000000 + Property: "Lcl Rotation", "Lcl Rotation", "A+",-90.000002504348856,0.000000000000000,0.000000000000000 + Property: "Lcl Scaling", "Lcl Scaling", "A+",1.000000000000000,1.000000000000000,1.000000000000000 + Property: "RotationOffset", "Vector3D", "",0,0,0 + Property: "RotationPivot", "Vector3D", "",0,0,0 + Property: "ScalingOffset", "Vector3D", "",0,0,0 + Property: "ScalingPivot", "Vector3D", "",0,0,0 + Property: "TranslationActive", "bool", "",0 + Property: "TranslationMin", "Vector3D", "",0,0,0 + Property: "TranslationMax", "Vector3D", "",0,0,0 + Property: "TranslationMinX", "bool", "",0 + Property: "TranslationMinY", "bool", "",0 + Property: "TranslationMinZ", "bool", "",0 + Property: "TranslationMaxX", "bool", "",0 + Property: "TranslationMaxY", "bool", "",0 + Property: "TranslationMaxZ", "bool", "",0 + Property: "RotationOrder", "enum", "",0 + Property: "RotationSpaceForLimitOnly", "bool", "",0 + Property: "AxisLen", "double", "",10 + Property: "PreRotation", "Vector3D", "",0,0,0 + Property: "PostRotation", "Vector3D", "",0,0,0 + Property: "RotationActive", "bool", "",0 + Property: "RotationMin", "Vector3D", "",0,0,0 + Property: "RotationMax", "Vector3D", "",0,0,0 + Property: "RotationMinX", "bool", "",0 + Property: "RotationMinY", "bool", "",0 + Property: "RotationMinZ", "bool", "",0 + Property: "RotationMaxX", "bool", "",0 + Property: "RotationMaxY", "bool", "",0 + Property: "RotationMaxZ", "bool", "",0 + Property: "RotationStiffnessX", "double", "",0 + Property: "RotationStiffnessY", "double", "",0 + Property: "RotationStiffnessZ", "double", "",0 + Property: "MinDampRangeX", "double", "",0 + Property: "MinDampRangeY", "double", "",0 + Property: "MinDampRangeZ", "double", "",0 + Property: "MaxDampRangeX", "double", "",0 + Property: "MaxDampRangeY", "double", "",0 + Property: "MaxDampRangeZ", "double", "",0 + Property: "MinDampStrengthX", "double", "",0 + Property: "MinDampStrengthY", "double", "",0 + Property: "MinDampStrengthZ", "double", "",0 + Property: "MaxDampStrengthX", "double", "",0 + Property: "MaxDampStrengthY", "double", "",0 + Property: "MaxDampStrengthZ", "double", "",0 + Property: "PreferedAngleX", "double", "",0 + Property: "PreferedAngleY", "double", "",0 + Property: "PreferedAngleZ", "double", "",0 + Property: "InheritType", "enum", "",0 + Property: "ScalingActive", "bool", "",0 + Property: "ScalingMin", "Vector3D", "",1,1,1 + Property: "ScalingMax", "Vector3D", "",1,1,1 + Property: "ScalingMinX", "bool", "",0 + Property: "ScalingMinY", "bool", "",0 + Property: "ScalingMinZ", "bool", "",0 + Property: "ScalingMaxX", "bool", "",0 + Property: "ScalingMaxY", "bool", "",0 + Property: "ScalingMaxZ", "bool", "",0 + Property: "GeometricTranslation", "Vector3D", "",0,0,0 + Property: "GeometricRotation", "Vector3D", "",0,0,0 + Property: "GeometricScaling", "Vector3D", "",1,1,1 + Property: "LookAtProperty", "object", "" + Property: "UpVectorProperty", "object", "" + Property: "Show", "bool", "",1 + Property: "NegativePercentShapeSupport", "bool", "",1 + Property: "DefaultAttributeIndex", "int", "",0 + Property: "Color", "Color", "A",0.8,0.8,0.8 + Property: "Size", "double", "",100 + Property: "Look", "enum", "",1 + } + MultiLayer: 0 + MultiTake: 1 + Shading: Y + Culling: "CullingOff" + Vertices: 0.198500,-0.370000,0.000000,0.185519,-0.378205,0.000000,0.172565,-0.385806,0.000000,0.159625,-0.392781,0.000000, + 0.146685,-0.399111,0.000000,0.133731,-0.404774,0.000000,0.120750,-0.409750,0.000000,0.107727,-0.414017,0.000000, + 0.094648,-0.417556,0.000000,0.081500,-0.420344,0.000000,0.068269,-0.422361,0.000000,0.054940,-0.423587,0.000000, + 0.041500,-0.424000,0.000000,0.020730,-0.423043,0.000000,0.001426,-0.420181,0.000000,-0.016406,-0.415422,0.000000, + -0.032759,-0.408778,0.000000,-0.047626,-0.400259,0.000000,-0.061000,-0.389875,0.000000,-0.072874,-0.377637,0.000000, + -0.083241,-0.363556,0.000000,-0.092094,-0.347641,0.000000,-0.099426,-0.329903,0.000000,-0.105230,-0.310352,0.000000, + -0.109500,-0.289000,0.000000,0.206500,-0.289000,0.000000,0.204936,-0.249269,0.000000,0.200319,-0.213065,0.000000, + 0.192766,-0.180375,0.000000,0.182389,-0.151185,0.000000,0.169304,-0.125481,0.000000,0.153625,-0.103250,0.000000, + 0.135467,-0.084477,0.000000,0.114944,-0.069148,0.000000,0.092172,-0.057250,0.000000,0.067264,-0.048769,0.000000, + 0.040335,-0.043690,0.000000,0.011500,-0.042000,0.000000,-0.018681,-0.043889,0.000000,-0.047111,-0.049444,0.000000, + -0.073625,-0.058500,0.000000,-0.098056,-0.070889,0.000000,-0.120236,-0.086444,0.000000,-0.140000,-0.105000,0.000000, + -0.157181,-0.126389,0.000000,-0.171611,-0.150444,0.000000,-0.183125,-0.177000,0.000000,-0.191556,-0.205889,0.000000, + -0.196736,-0.236944,0.000000,-0.198500,-0.270000,0.000000,-0.196884,-0.300751,0.000000,-0.192074,-0.330759,0.000000, + -0.184125,-0.359656,0.000000,-0.173093,-0.387074,0.000000,-0.159032,-0.412645,0.000000,-0.142000,-0.436000,0.000000, + -0.122051,-0.456772,0.000000,-0.099241,-0.474593,0.000000,-0.073625,-0.489094,0.000000,-0.045259,-0.499907,0.000000, + -0.014199,-0.506666,0.000000,0.019500,-0.509000,0.000000,0.037956,-0.508645,0.000000,0.055398,-0.507574,0.000000, + 0.071937,-0.505781,0.000000,0.087685,-0.503259,0.000000,0.102752,-0.500001,0.000000,0.117250,-0.496000,0.000000, + 0.131289,-0.491249,0.000000,0.144981,-0.485741,0.000000,0.158437,-0.479469,0.000000,0.171769,-0.472426,0.000000, + 0.185086,-0.464605,0.000000,0.198500,-0.456000,0.000000,-0.107500,-0.230000,0.000000,-0.103897,-0.212901,0.000000, + -0.099093,-0.197125,0.000000,-0.093094,-0.182703,0.000000,-0.085907,-0.169667,0.000000,-0.077541,-0.158047,0.000000, + -0.068000,-0.147875,0.000000,-0.057293,-0.139182,0.000000,-0.045426,-0.132000,0.000000,-0.032406,-0.126359,0.000000, + -0.018241,-0.122292,0.000000,-0.002936,-0.119828,0.000000,0.013500,-0.119000,0.000000,0.028743,-0.119885,0.000000, + 0.042944,-0.122500,0.000000,0.056063,-0.126781,0.000000,0.068056,-0.132667,0.000000,0.078882,-0.140094,0.000000, + 0.088500,-0.149000,0.000000,0.096868,-0.159323,0.000000,0.103944,-0.171000,0.000000,0.109687,-0.183969,0.000000, + 0.114056,-0.198167,0.000000,0.117007,-0.213531,0.000000,0.118500,-0.230000,0.000000,0.198500,-0.370000,-0.010000, + 0.185519,-0.378205,-0.010000,0.172565,-0.385806,-0.010000,0.159625,-0.392781,-0.010000,0.146685,-0.399111,-0.010000, + 0.133731,-0.404774,-0.010000,0.120750,-0.409750,-0.010000,0.107727,-0.414017,-0.010000,0.094648,-0.417556,-0.010000, + 0.081500,-0.420344,-0.010000,0.068269,-0.422361,-0.010000,0.054940,-0.423587,-0.010000,0.041500,-0.424000,-0.010000, + 0.020730,-0.423043,-0.010000,0.001426,-0.420181,-0.010000,-0.016406,-0.415422,-0.010000,-0.032759,-0.408778,-0.010000, + -0.047626,-0.400259,-0.010000,-0.061000,-0.389875,-0.010000,-0.072874,-0.377637,-0.010000,-0.083241,-0.363556,-0.010000, + -0.092094,-0.347641,-0.010000,-0.099426,-0.329903,-0.010000,-0.105230,-0.310352,-0.010000,-0.109500,-0.289000,-0.010000, + 0.206500,-0.289000,-0.010000,0.204936,-0.249269,-0.010000,0.200319,-0.213065,-0.010000,0.192766,-0.180375,-0.010000, + 0.182389,-0.151185,-0.010000,0.169304,-0.125481,-0.010000,0.153625,-0.103250,-0.010000,0.135467,-0.084477,-0.010000, + 0.114944,-0.069148,-0.010000,0.092172,-0.057250,-0.010000,0.067264,-0.048769,-0.010000,0.040335,-0.043690,-0.010000, + 0.011500,-0.042000,-0.010000,-0.018681,-0.043889,-0.010000,-0.047111,-0.049444,-0.010000,-0.073625,-0.058500,-0.010000, + -0.098056,-0.070889,-0.010000,-0.120236,-0.086444,-0.010000,-0.140000,-0.105000,-0.010000,-0.157181,-0.126389,-0.010000, + -0.171611,-0.150444,-0.010000,-0.183125,-0.177000,-0.010000,-0.191556,-0.205889,-0.010000,-0.196736,-0.236944,-0.010000, + -0.198500,-0.270000,-0.010000,-0.196884,-0.300751,-0.010000,-0.192074,-0.330759,-0.010000,-0.184125,-0.359656,-0.010000, + -0.173093,-0.387074,-0.010000,-0.159032,-0.412645,-0.010000,-0.142000,-0.436000,-0.010000,-0.122051,-0.456772,-0.010000, + -0.099241,-0.474593,-0.010000,-0.073625,-0.489094,-0.010000,-0.045259,-0.499907,-0.010000,-0.014199,-0.506666,-0.010000, + 0.019500,-0.509000,-0.010000,0.037956,-0.508645,-0.010000,0.055398,-0.507574,-0.010000,0.071937,-0.505781,-0.010000, + 0.087685,-0.503259,-0.010000,0.102752,-0.500001,-0.010000,0.117250,-0.496000,-0.010000,0.131289,-0.491249,-0.010000, + 0.144981,-0.485741,-0.010000,0.158437,-0.479469,-0.010000,0.171769,-0.472426,-0.010000,0.185086,-0.464605,-0.010000, + 0.198500,-0.456000,-0.010000,-0.107500,-0.230000,-0.010000,-0.103897,-0.212901,-0.010000,-0.099093,-0.197125,-0.010000, + -0.093094,-0.182703,-0.010000,-0.085907,-0.169667,-0.010000,-0.077541,-0.158047,-0.010000,-0.068000,-0.147875,-0.010000, + -0.057293,-0.139182,-0.010000,-0.045426,-0.132000,-0.010000,-0.032406,-0.126359,-0.010000,-0.018241,-0.122292,-0.010000, + -0.002936,-0.119828,-0.010000,0.013500,-0.119000,-0.010000,0.028743,-0.119885,-0.010000,0.042944,-0.122500,-0.010000, + 0.056063,-0.126781,-0.010000,0.068056,-0.132667,-0.010000,0.078882,-0.140094,-0.010000,0.088500,-0.149000,-0.010000, + 0.096868,-0.159323,-0.010000,0.103944,-0.171000,-0.010000,0.109687,-0.183969,-0.010000,0.114056,-0.198167,-0.010000, + 0.117007,-0.213531,-0.010000,0.118500,-0.230000,-0.010000 + PolygonVertexIndex: 38,36,-38,38,35,-37,39,35,-39,39,34,-36,40,34,-40,40,33,-35,41,33,-41,41,32,-34,42,32,-42,42,31,-33,43,31, + -43,43,30,-32,44,86,-44,86,30,-44,44,85,-87,87,30,-87,44,84,-86,88,30,-88,44,83,-85,89,30,-89,89,29,-31,44, + 82,-84,45,82,-45,90,29,-90,45,81,-83,91,29,-91,45,80,-82,92,29,-92,45,79,-81,93,29,-93,46,79,-46,93,28,-30, + 46,78,-80,94,28,-94,46,77,-79,95,28,-95,47,77,-47,95,27,-29,47,76,-78,96,27,-96,47,75,-77,97,27,-97,48,75, + -48,48,74,-76,97,26,-28,98,26,-98,48,98,-75,48,26,-99,49,26,-49,49,25,-27,50,24,-50,24,25,-50,50,23,-25,51, + 23,-51,51,22,-24,51,21,-23,52,21,-52,52,20,-22,53,20,-53,53,19,-21,1,73,-1,53,18,-20,2,73,-2,3,73,-3, + 54,18,-54,54,17,-19,4,73,-4,5,73,-5,54,16,-18,6,73,-6,54,15,-17,7,73,-7,55,15,-55,8,73,-8,55,14, + -16,9,73,-9,55,13,-15,10,73,-10,11,73,-11,55,12,-14,12,73,-12,55,73,-13,56,73,-56,56,72,-74,57,72,-57,57, + 71,-73,57,70,-72,58,70,-58,58,69,-71,58,68,-70,59,68,-59,59,67,-69,59,66,-68,60,66,-60,60,65,-67,60,64,-66, + 60,63,-65,61,63,-61,61,62,-64,137,136,-136,137,135,-135,138,137,-135,138,134,-134,139,138,-134,139,133,-133,140,139,-133,140,132, + -132,141,140,-132,141,131,-131,142,141,-131,142,130,-130,143,142,-186,185,142,-130,143,185,-185,186,185,-130,143,184,-184,187,186,-130,143, + 183,-183,188,187,-130,188,129,-129,143,182,-182,144,143,-182,189,188,-129,144,181,-181,190,189,-129,144,180,-180,191,190,-129,144,179,-179, + 192,191,-129,145,144,-179,192,128,-128,145,178,-178,193,192,-128,145,177,-177,194,193,-128,146,145,-177,194,127,-127,146,176,-176,195,194, + -127,146,175,-175,196,195,-127,147,146,-175,147,174,-174,196,126,-126,197,196,-126,147,173,-198,147,197,-126,148,147,-126,148,125,-125,149, + 148,-124,123,148,-125,149,123,-123,150,149,-123,150,122,-122,150,121,-121,151,150,-121,151,120,-120,152,151,-120,152,119,-119,100,99,-173, + 152,118,-118,101,100,-173,102,101,-173,153,152,-118,153,117,-117,103,102,-173,104,103,-173,153,116,-116,105,104,-173,153,115,-115,106,105, + -173,154,153,-115,107,106,-173,154,114,-114,108,107,-173,154,113,-113,109,108,-173,110,109,-173,154,112,-112,111,110,-173,154,111,-173,155, + 154,-173,155,172,-172,156,155,-172,156,171,-171,156,170,-170,157,156,-170,157,169,-169,157,168,-168,158,157,-168,158,167,-167,158,166,-166, + 159,158,-166,159,165,-165,159,164,-164,159,163,-163,160,159,-163,160,162,-162,26,25,124,-126,13,12,111,-113,63,62,161,-163,67,66, + 165,-167,15,14,113,-115,52,51,150,-152,30,29,128,-130,37,36,135,-137,50,49,148,-150,21,20,119,-121,91,90,189,-191,39,38, + 137,-139,78,77,176,-178,23,22,121,-123,44,43,142,-144,81,80,179,-181,72,71,170,-172,5,4,103,-105,42,41,140,-142,32,31, + 130,-132,35,34,133,-135,60,59,158,-160,7,6,105,-107,65,64,163,-165,19,18,117,-119,86,85,184,-186,58,57,156,-158,76,75, + 174,-176,46,45,144,-146,12,11,110,-112,70,69,168,-170,3,2,101,-103,10,9,108,-110,89,88,187,-189,33,32,131,-133,62,61, + 160,-162,17,16,115,-117,84,83,182,-184,95,94,193,-195,27,26,125,-127,48,47,146,-148,14,13,112,-114,53,52,151,-153,96,95, + 194,-196,93,92,191,-193,68,67,166,-168,1,0,99,-101,38,37,136,-138,55,54,153,-155,98,97,196,-198,75,74,173,-175,64,63, + 162,-164,22,21,120,-122,25,24,123,-125,16,15,114,-116,51,50,149,-151,40,39,138,-140,6,5,104,-106,29,28,127,-129,80,79, + 178,-180,24,23,122,-124,43,42,141,-143,82,81,180,-182,31,30,129,-131,36,35,134,-136,73,72,171,-173,49,48,147,-149,34,33, + 132,-134,59,58,157,-159,8,7,106,-108,79,78,177,-179,66,65,164,-166,0,73,172,-100,20,19,118,-120,11,10,109,-111,94,93, + 192,-194,77,76,175,-177,18,17,116,-118,74,98,197,-174,41,40,139,-141,54,53,152,-154,88,87,186,-188,4,3,102,-104,87,86, + 185,-187,90,89,188,-190,57,56,155,-157,2,1,100,-102,45,44,143,-145,85,84,183,-185,9,8,107,-109,97,96,195,-197,92,91, + 190,-192,71,70,169,-171,28,27,126,-128,47,46,145,-147,83,82,181,-183,56,55,154,-156,61,60,159,-161,69,68,167,-169 + GeometryVersion: 124 + LayerElementNormal: 0 { + Version: 101 + Name: "" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Normals: 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000005,-0.000087,-1.000000,0.000005,-0.000087,-1.000000,0.000005,-0.000087,-1.000000, + 0.000005,0.000086,-1.000000,0.000005,0.000086,-1.000000,0.000005,0.000086,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,-0.000016,-1.000000,0.000000,-0.000016,-1.000000,0.000000,-0.000016,-1.000000,0.000001,-0.000001,-1.000000, + 0.000001,-0.000001,-1.000000,0.000001,-0.000001,-1.000000,0.000001,0.000014,-1.000000,0.000001,0.000014,-1.000000, + 0.000001,0.000014,-1.000000,0.000002,-0.000001,-1.000000,0.000002,-0.000001,-1.000000,0.000002,-0.000001,-1.000000, + -0.000005,-0.000079,-1.000000,-0.000005,-0.000079,-1.000000,-0.000005,-0.000079,-1.000000,-0.000101,0.002361,-0.999997, + -0.000101,0.002361,-0.999997,-0.000101,0.002361,-0.999997,0.000044,0.001093,-0.999999,0.000044,0.001093,-0.999999, + 0.000044,0.001093,-0.999999,0.000007,-0.000168,-1.000000,0.000007,-0.000168,-1.000000,0.000007,-0.000168,-1.000000, + -0.000006,-0.000149,-1.000000,-0.000006,-0.000149,-1.000000,-0.000006,-0.000149,-1.000000,0.000002,-0.000009,-1.000000, + 0.000002,-0.000009,-1.000000,0.000002,-0.000009,-1.000000,-0.000003,-0.000008,-1.000000,-0.000003,-0.000008,-1.000000, + -0.000003,-0.000008,-1.000000,-0.000003,-0.000001,-1.000000,-0.000003,-0.000001,-1.000000,-0.000003,-0.000001,-1.000000, + 0.000002,0.000048,-1.000000,0.000002,0.000048,-1.000000,0.000002,0.000048,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000012,0.000077,-1.000000,0.000012,0.000077,-1.000000, + 0.000012,0.000077,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000, + -0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000001,-0.000031,-1.000000,0.000001,-0.000031,-1.000000,0.000001,-0.000031,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000003,-0.000001,-1.000000, + 0.000003,-0.000001,-1.000000,0.000003,-0.000001,-1.000000,0.000001,-0.000010,-1.000000,0.000001,-0.000010,-1.000000, + 0.000001,-0.000010,-1.000000,-0.000002,0.000028,-1.000000,-0.000002,0.000028,-1.000000,-0.000002,0.000028,-1.000000, + 0.000004,0.000002,-1.000000,0.000004,0.000002,-1.000000,0.000004,0.000002,-1.000000,-0.000000,0.000000,-1.000000, + -0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,0.000004,0.000002,-1.000000,0.000004,0.000002,-1.000000, + 0.000004,0.000002,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000003,0.000010,-1.000000,0.000003,0.000010,-1.000000,0.000003,0.000010,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000, + -0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + -0.000008,-0.000019,-1.000000,-0.000008,-0.000019,-1.000000,-0.000008,-0.000019,-1.000000,0.000001,-0.000017,-1.000000, + 0.000001,-0.000017,-1.000000,0.000001,-0.000017,-1.000000,0.000001,0.000018,-1.000000,0.000001,0.000018,-1.000000, + 0.000001,0.000018,-1.000000,-0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,-0.000002,-0.000010,-1.000000, + -0.000002,-0.000010,-1.000000,-0.000002,-0.000010,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,-0.000002,-0.000015,-1.000000,-0.000002,-0.000015,-1.000000,-0.000002,-0.000015,-1.000000, + 0.000001,0.000010,-1.000000,0.000001,0.000010,-1.000000,0.000001,0.000010,-1.000000,-0.000000,0.000016,-1.000000, + -0.000000,0.000016,-1.000000,-0.000000,0.000016,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000, + -0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + -0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,-0.000000,-0.000029,-1.000000, + -0.000000,-0.000029,-1.000000,-0.000000,-0.000029,-1.000000,-0.000002,0.000006,-1.000000,-0.000002,0.000006,-1.000000, + -0.000002,0.000006,-1.000000,-0.000002,0.000007,-1.000000,-0.000002,0.000007,-1.000000,-0.000002,0.000007,-1.000000, + -0.000002,0.000036,-1.000000,-0.000002,0.000036,-1.000000,-0.000002,0.000036,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000005,-0.000153,-1.000000,0.000005,-0.000153,-1.000000, + 0.000005,-0.000153,-1.000000,0.000002,0.000152,-1.000000,0.000002,0.000152,-1.000000,0.000002,0.000152,-1.000000, + -0.000002,-0.000161,-1.000000,-0.000002,-0.000161,-1.000000,-0.000002,-0.000161,-1.000000,-0.000024,0.000392,-1.000000, + -0.000024,0.000392,-1.000000,-0.000024,0.000392,-1.000000,0.999226,0.039339,0.000000,0.999226,0.039339,0.000000, + 0.999226,0.039339,0.000000,0.999226,0.039339,0.000000,0.046009,0.998941,0.000000,0.046009,0.998941,0.000000, + 0.046009,0.998941,0.000000,0.046009,0.998941,0.000000,0.061266,-0.998122,0.000000,0.061266,-0.998122,0.000000, + 0.061266,-0.998122,0.000000,0.061266,-0.998122,0.000000,0.266041,-0.963962,0.000000,0.266041,-0.963962,0.000000, + 0.266041,-0.963962,0.000000,0.266041,-0.963962,0.000000,0.257837,0.966188,0.000000,0.257837,0.966188,0.000000, + 0.257837,0.966188,0.000000,0.257837,0.966188,0.000000,-0.964185,-0.265231,0.000000,-0.964185,-0.265231,0.000000, + -0.964185,-0.265231,0.000000,-0.964185,-0.265231,0.000000,0.891169,0.453671,0.000000,0.891169,0.453671,0.000000, + 0.891169,0.453671,0.000000,0.891169,0.453671,0.000000,0.058504,0.998287,0.000000,0.058504,0.998287,0.000000, + 0.058504,0.998287,0.000000,0.058504,0.998287,0.000000,-0.998622,-0.052470,0.000000,-0.998622,-0.052470,0.000000, + -0.998622,-0.052470,0.000000,-0.998622,-0.052470,0.000000,0.873892,0.486120,0.000000,0.873892,0.486120,0.000000, + 0.873892,0.486120,0.000000,0.873892,0.486120,0.000000,-0.565698,-0.824613,0.000000,-0.565698,-0.824613,0.000000, + -0.565698,-0.824613,0.000000,-0.565698,-0.824613,0.000000,-0.191781,0.981438,0.000000,-0.191781,0.981438,0.000000, + -0.191781,0.981438,0.000000,-0.191781,0.981438,0.000000,0.875753,-0.482759,0.000000,0.875753,-0.482759,0.000000, + 0.875753,-0.482759,0.000000,0.875753,-0.482759,0.000000,0.958642,0.284615,0.000000,0.958642,0.284615,0.000000, + 0.958642,0.284615,0.000000,0.958642,0.284615,0.000000,-0.779633,0.626237,0.000000,-0.779633,0.626237,0.000000, + -0.779633,0.626237,0.000000,-0.779633,0.626237,0.000000,0.630293,-0.776358,0.000000,0.630293,-0.776358,0.000000, + 0.630293,-0.776358,0.000000,0.630293,-0.776358,0.000000,0.506395,-0.862302,0.000000,0.506395,-0.862302,0.000000, + 0.506395,-0.862302,0.000000,0.506395,-0.862302,0.000000,-0.400578,0.916263,0.000000,-0.400578,0.916263,0.000000, + -0.400578,0.916263,0.000000,-0.400578,0.916263,0.000000,-0.574185,0.818726,0.000000,-0.574185,0.818726,0.000000, + -0.574185,0.818726,0.000000,-0.574185,0.818726,0.000000,0.718785,0.695232,0.000000,0.718785,0.695232,0.000000, + 0.718785,0.695232,0.000000,0.718785,0.695232,0.000000,0.322338,0.946625,0.000000,0.322338,0.946625,0.000000, + 0.322338,0.946625,0.000000,0.322338,0.946625,0.000000,-0.212607,-0.977138,0.000000,-0.212607,-0.977138,0.000000, + -0.212607,-0.977138,0.000000,-0.212607,-0.977138,0.000000,-0.311385,0.950284,0.000000,-0.311385,0.950284,0.000000, + -0.311385,0.950284,0.000000,-0.311385,0.950284,0.000000,0.158135,-0.987418,0.000000,0.158135,-0.987418,0.000000, + 0.158135,-0.987418,0.000000,0.158135,-0.987418,0.000000,0.717700,0.696352,0.000000,0.717700,0.696352,0.000000, + 0.717700,0.696352,0.000000,0.717700,0.696352,0.000000,0.050320,-0.998733,0.000000,0.050320,-0.998733,0.000000, + 0.050320,-0.998733,0.000000,0.050320,-0.998733,0.000000,-0.492641,-0.870232,0.000000,-0.492641,-0.870232,0.000000, + -0.492641,-0.870232,0.000000,-0.492641,-0.870232,0.000000,0.956623,-0.291328,0.000000,0.956623,-0.291328,0.000000, + 0.956623,-0.291328,0.000000,0.956623,-0.291328,0.000000,-0.917474,0.397796,0.000000,-0.917474,0.397796,0.000000, + -0.917474,0.397796,0.000000,-0.917474,0.397796,0.000000,-0.030731,0.999528,0.000000,-0.030731,0.999528,0.000000, + -0.030731,0.999528,0.000000,-0.030731,0.999528,0.000000,0.422471,-0.906376,0.000000,0.422471,-0.906376,0.000000, + 0.422471,-0.906376,0.000000,0.422471,-0.906376,0.000000,-0.474526,0.880241,0.000000,-0.474526,0.880241,0.000000, + -0.474526,0.880241,0.000000,-0.474526,0.880241,0.000000,-0.150724,0.988576,0.000000,-0.150724,0.988576,0.000000, + -0.150724,0.988576,0.000000,-0.150724,0.988576,0.000000,-0.310258,-0.950652,0.000000,-0.310258,-0.950652,0.000000, + -0.310258,-0.950652,0.000000,-0.310258,-0.950652,0.000000,0.598419,0.801183,0.000000,0.598419,0.801183,0.000000, + 0.598419,0.801183,0.000000,0.598419,0.801183,0.000000,0.019248,-0.999815,0.000000,0.019248,-0.999815,0.000000, + 0.019248,-0.999815,0.000000,0.019248,-0.999815,0.000000,0.497183,0.867646,0.000000,0.497183,0.867646,0.000000, + 0.497183,0.867646,0.000000,0.497183,0.867646,0.000000,0.276002,-0.961157,0.000000,0.276002,-0.961157,0.000000, + 0.276002,-0.961157,0.000000,0.276002,-0.961157,0.000000,-0.914356,-0.404911,0.000000,-0.914356,-0.404911,0.000000, + -0.914356,-0.404911,0.000000,-0.914356,-0.404911,0.000000,0.991968,0.126486,0.000000,0.991968,0.126486,0.000000, + 0.991968,0.126486,0.000000,0.991968,0.126486,0.000000,-0.986370,0.164542,0.000000,-0.986370,0.164542,0.000000, + -0.986370,0.164542,0.000000,-0.986370,0.164542,0.000000,0.146696,0.989182,0.000000,0.146696,0.989182,0.000000, + 0.146696,0.989182,0.000000,0.146696,0.989182,0.000000,-0.927713,-0.373294,0.000000,-0.927713,-0.373294,0.000000, + -0.927713,-0.373294,0.000000,-0.927713,-0.373294,0.000000,-0.955789,-0.294053,0.000000,-0.955789,-0.294053,0.000000, + -0.955789,-0.294053,0.000000,-0.955789,-0.294053,0.000000,-0.776825,-0.629717,0.000000,-0.776825,-0.629717,0.000000, + -0.776825,-0.629717,0.000000,-0.776825,-0.629717,0.000000,0.320558,-0.947229,0.000000,0.320558,-0.947229,0.000000, + 0.320558,-0.947229,0.000000,0.320558,-0.947229,0.000000,-0.534273,0.845312,0.000000,-0.534273,0.845312,0.000000, + -0.534273,0.845312,0.000000,-0.534273,0.845312,0.000000,-0.062464,0.998047,0.000000,-0.062464,0.998047,0.000000, + -0.062464,0.998047,0.000000,-0.062464,0.998047,0.000000,-0.807967,-0.589228,0.000000,-0.807967,-0.589228,0.000000, + -0.807967,-0.589228,0.000000,-0.807967,-0.589228,0.000000,-0.995915,-0.090291,0.000000,-0.995915,-0.090291,0.000000, + -0.995915,-0.090291,0.000000,-0.995915,-0.090291,0.000000,0.978513,-0.206187,0.000000,0.978513,-0.206187,0.000000, + 0.978513,-0.206187,0.000000,0.978513,-0.206187,0.000000,0.107768,-0.994176,0.000000,0.107768,-0.994176,0.000000, + 0.107768,-0.994176,0.000000,0.107768,-0.994176,0.000000,0.924157,0.382013,0.000000,0.924157,0.382013,0.000000, + 0.924157,0.382013,0.000000,0.924157,0.382013,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000, + 0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.376411,0.926453,0.000000,0.376411,0.926453,0.000000, + 0.376411,0.926453,0.000000,0.376411,0.926453,0.000000,-0.987395,-0.158276,0.000000,-0.987395,-0.158276,0.000000, + -0.987395,-0.158276,0.000000,-0.987395,-0.158276,0.000000,-0.323209,0.946328,0.000000,-0.323209,0.946328,0.000000, + -0.323209,0.946328,0.000000,-0.323209,0.946328,0.000000,-0.357903,0.933759,0.000000,-0.357903,0.933759,0.000000, + -0.357903,0.933759,0.000000,-0.357903,0.933759,0.000000,0.942234,0.334956,0.000000,0.942234,0.334956,0.000000, + 0.942234,0.334956,0.000000,0.942234,0.334956,0.000000,0.729380,-0.684108,0.000000,0.729380,-0.684108,0.000000, + 0.729380,-0.684108,0.000000,0.729380,-0.684108,0.000000,0.980587,0.196082,0.000000,0.980587,0.196082,0.000000, + 0.980587,0.196082,0.000000,0.980587,0.196082,0.000000,-0.684469,0.729042,0.000000,-0.684469,0.729042,0.000000, + -0.684469,0.729042,0.000000,-0.684469,0.729042,0.000000,0.517786,-0.855510,0.000000,0.517786,-0.855510,0.000000, + 0.517786,-0.855510,0.000000,0.517786,-0.855510,0.000000,0.817210,0.576340,0.000000,0.817210,0.576340,0.000000, + 0.817210,0.576340,0.000000,0.817210,0.576340,0.000000,0.185330,0.982676,0.000000,0.185330,0.982676,0.000000, + 0.185330,0.982676,0.000000,0.185330,0.982676,0.000000,0.539949,-0.841698,0.000000,0.539949,-0.841698,0.000000, + 0.539949,-0.841698,0.000000,0.539949,-0.841698,0.000000,-0.998579,0.053285,0.000000,-0.998579,0.053285,0.000000, + -0.998579,0.053285,0.000000,-0.998579,0.053285,0.000000,0.463080,0.886316,0.000000,0.463080,0.886316,0.000000, + 0.463080,0.886316,0.000000,0.463080,0.886316,0.000000,-0.356216,-0.934404,0.000000,-0.356216,-0.934404,0.000000, + -0.356216,-0.934404,0.000000,-0.356216,-0.934404,0.000000,-0.261143,0.965300,0.000000,-0.261143,0.965300,0.000000, + -0.261143,0.965300,0.000000,-0.261143,0.965300,0.000000,0.811513,-0.584335,0.000000,0.811513,-0.584335,0.000000, + 0.811513,-0.584335,0.000000,0.811513,-0.584335,0.000000,0.211355,-0.977409,0.000000,0.211355,-0.977409,0.000000, + 0.211355,-0.977409,0.000000,0.211355,-0.977409,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000, + 1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.805302,0.592864,0.000000,0.805302,0.592864,0.000000, + 0.805302,0.592864,0.000000,0.805302,0.592864,0.000000,-0.091574,0.995798,0.000000,-0.091574,0.995798,0.000000, + -0.091574,0.995798,0.000000,-0.091574,0.995798,0.000000,-0.855218,-0.518268,0.000000,-0.855218,-0.518268,0.000000, + -0.855218,-0.518268,0.000000,-0.855218,-0.518268,0.000000,0.923310,-0.384055,0.000000,0.923310,-0.384055,0.000000, + 0.923310,-0.384055,0.000000,0.923310,-0.384055,0.000000,0.613271,0.789872,0.000000,0.613271,0.789872,0.000000, + 0.613271,0.789872,0.000000,0.613271,0.789872,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000, + 0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,-0.452277,0.891878,0.000000,-0.452277,0.891878,0.000000, + -0.452277,0.891878,0.000000,-0.452277,0.891878,0.000000,-0.876269,-0.481823,0.000000,-0.876269,-0.481823,0.000000, + -0.876269,-0.481823,0.000000,-0.876269,-0.481823,0.000000,-0.181064,-0.983471,0.000000,-0.181064,-0.983471,0.000000, + -0.181064,-0.983471,0.000000,-0.181064,-0.983471,0.000000,-0.439419,0.898282,0.000000,-0.439419,0.898282,0.000000, + -0.439419,0.898282,0.000000,-0.439419,0.898282,0.000000,-0.057989,-0.998317,0.000000,-0.057989,-0.998317,0.000000, + -0.057989,-0.998317,0.000000,-0.057989,-0.998317,0.000000,-0.440548,-0.897729,0.000000,-0.440548,-0.897729,0.000000, + -0.440548,-0.897729,0.000000,-0.440548,-0.897729,0.000000,-0.615647,-0.788022,0.000000,-0.615647,-0.788022,0.000000, + -0.615647,-0.788022,0.000000,-0.615647,-0.788022,0.000000,-0.506073,0.862490,0.000000,-0.506073,0.862490,0.000000, + -0.506073,0.862490,0.000000,-0.506073,0.862490,0.000000,-0.857536,0.514423,0.000000,-0.857536,0.514423,0.000000, + -0.857536,0.514423,0.000000,-0.857536,0.514423,0.000000,0.158924,-0.987291,0.000000,0.158924,-0.987291,0.000000, + 0.158924,-0.987291,0.000000,0.158924,-0.987291,0.000000,-0.207446,0.978246,0.000000,-0.207446,0.978246,0.000000, + -0.207446,0.978246,0.000000,-0.207446,0.978246,0.000000,-0.982046,-0.188641,0.000000,-0.982046,-0.188641,0.000000, + -0.982046,-0.188641,0.000000,-0.982046,-0.188641,0.000000,-0.679434,-0.733736,0.000000,-0.679434,-0.733736,0.000000, + -0.679434,-0.733736,0.000000,-0.679434,-0.733736,0.000000,0.467122,-0.884193,0.000000,0.467122,-0.884193,0.000000, + 0.467122,-0.884193,0.000000,0.467122,-0.884193,0.000000,0.974326,0.225143,0.000000,0.974326,0.225143,0.000000, + 0.974326,0.225143,0.000000,0.974326,0.225143,0.000000,-0.959959,0.280142,0.000000,-0.959959,0.280142,0.000000, + -0.959959,0.280142,0.000000,-0.959959,0.280142,0.000000,0.397534,-0.917587,0.000000,0.397534,-0.917587,0.000000, + 0.397534,-0.917587,0.000000,0.397534,-0.917587,0.000000,-0.721249,-0.692676,0.000000,-0.721249,-0.692676,0.000000, + -0.721249,-0.692676,0.000000,-0.721249,-0.692676,0.000000,-0.069109,-0.997609,0.000000,-0.069109,-0.997609,0.000000, + -0.069109,-0.997609,0.000000,-0.069109,-0.997609,0.000000,0.373215,-0.927745,0.000000,0.373215,-0.927745,0.000000, + 0.373215,-0.927745,0.000000,0.373215,-0.927745,0.000000 + } + LayerElementMaterial: 0 { + Version: 101 + Name: "" + MappingInformationType: "AllSame" + ReferenceInformationType: "IndexToDirect" + Materials: 0 + } + Layer: 0 { + Version: 100 + LayerElement: { + Type: "LayerElementNormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementTexture" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementMaterial" + TypedIndex: 0 + } + } + } + Material: "Material::unnamed", "" { + Version: 102 + ShadingModel: "phong" + MultiLayer: 0 + Properties60: { + Property: "ShadingModel", "KString", "", "Phong" + Property: "MultiLayer", "bool", "",0 + Property: "EmissiveColor", "ColorRGB", "",0.8000,0.8000,0.8000 + Property: "EmissiveFactor", "double", "",0.0000 + Property: "AmbientColor", "ColorRGB", "",1.0000,1.0000,1.0000 + Property: "AmbientFactor", "double", "",1.0000 + Property: "DiffuseColor", "ColorRGB", "",0.8000,0.8000,0.8000 + Property: "DiffuseFactor", "double", "",0.8000 + Property: "Bump", "Vector3D", "",0,0,0 + Property: "TransparentColor", "ColorRGB", "",1,1,1 + Property: "TransparencyFactor", "double", "",0.0000 + Property: "SpecularColor", "ColorRGB", "",1.0000,1.0000,1.0000 + Property: "SpecularFactor", "double", "",0.5000 + Property: "ShininessExponent", "double", "",12.3 + Property: "ReflectionColor", "ColorRGB", "",0,0,0 + Property: "ReflectionFactor", "double", "",1 + Property: "Emissive", "ColorRGB", "",0,0,0 + Property: "Ambient", "ColorRGB", "",1.0,1.0,1.0 + Property: "Diffuse", "ColorRGB", "",0.8,0.8,0.8 + Property: "Specular", "ColorRGB", "",1.0,1.0,1.0 + Property: "Shininess", "double", "",12.3 + Property: "Opacity", "double", "",1.0 + Property: "Reflectivity", "double", "",0 + } + } + Pose: "Pose::BIND_POSES", "BindPose" { + Type: "BindPose" + Version: 100 + Properties60: { + } + NbPoseNodes: 1 + PoseNode: { + Node: "Model::e" + Matrix: 0.000000075497901,0.000000000000000,-1.000000000000000,0.000000000000000,-1.000000000000000,0.000000000000000,-0.000000075497901,0.000000000000000,0.000000000000000,1.000000000000000,0.000000000000000,0.000000000000000,0.000000000000000,0.000000000000000,0.000000000000000,1.000000000000000 + } + } + GlobalSettings: { + Version: 1000 + Properties60: { + Property: "UpAxis", "int", "",1 + Property: "UpAxisSign", "int", "",1 + Property: "FrontAxis", "int", "",2 + Property: "FrontAxisSign", "int", "",1 + Property: "CoordAxis", "int", "",0 + Property: "CoordAxisSign", "int", "",1 + Property: "UnitScaleFactor", "double", "",1 + } + } +} + +; Object relations +;------------------------------------------------------------------ + +Relations: { + Model: "Model::e", "Mesh" { + } + Model: "Model::Producer Perspective", "Camera" { + } + Model: "Model::Producer Top", "Camera" { + } + Model: "Model::Producer Bottom", "Camera" { + } + Model: "Model::Producer Front", "Camera" { + } + Model: "Model::Producer Back", "Camera" { + } + Model: "Model::Producer Right", "Camera" { + } + Model: "Model::Producer Left", "Camera" { + } + Model: "Model::Camera Switcher", "CameraSwitcher" { + } + Material: "Material::unnamed", "" { + } +} + +; Object connections +;------------------------------------------------------------------ + +Connections: { + Connect: "OO", "Model::e", "Model::Scene" + Connect: "OO", "Material::unnamed", "Model::e" +} +;Takes and animation section +;---------------------------------------------------- + +Takes: { + Current: "" +} +;Version 5 settings +;------------------------------------------------------------------ + +Version5: { + AmbientRenderSettings: { + Version: 101 + AmbientLightColor: 0.0,0.0,0.0,0 + } + FogOptions: { + FogEnable: 0 + FogMode: 0 + FogDensity: 0.000 + FogStart: 5.000 + FogEnd: 25.000 + FogColor: 0.1,0.1,0.1,1 + } + Settings: { + FrameRate: "24" + TimeFormat: 1 + SnapOnFrames: 0 + ReferenceTimeIndex: -1 + TimeLineStartTime: 0 + TimeLineStopTime: 479181389250 + } + RendererSetting: { + DefaultCamera: "Producer Perspective" + DefaultViewingMode: 0 + } +} From 6a48954f908e29ca40164f3acc0acdd39b683c03 Mon Sep 17 00:00:00 2001 From: Cthuflu Date: Tue, 11 Dec 2018 11:07:05 -0500 Subject: [PATCH 110/130] eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee fbx --- e.fbx | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/e.fbx b/e.fbx index 10aeb3a..2118317 100644 --- a/e.fbx +++ b/e.fbx @@ -1,5 +1,5 @@ -; FBX 6.1.0 project file -; Created by Blender FBX Exporter +; FBX 6.1.0 projeeeeeeeeeeect fileeeeeeeeeeeee +; Creeeeeeeeeeeeeeeeeeeeeeeeated by Bleeeeeeeeeeeeeeeeeeeeeeeeendeeeeeeeeeeeer FBX Exporteeeeeeeeeer ; for support mail: ideasman42@gmail.com ; ---------------------------------------------------- @@ -24,7 +24,7 @@ FBXHeaderExtension: { CreationTime: "2018-12-11 10:55:17:000" Creator: "Blender version 2.79 (sub 0)" -; Object definitions +; Objeeeeeeeeeeeeect deeeeeeeeeeeeeeeeeeeeeeeeeeeefinitions ;------------------------------------------------------------------ Definitions: { @@ -47,7 +47,7 @@ Definitions: { } } -; Object properties +; Objeeeeeeeeeeeeeeeeeeeeeeeeeect propeeeeeeeeeeeeeeeeeeeerties ;------------------------------------------------------------------ Objects: { @@ -544,7 +544,7 @@ Objects: { } } -; Object relations +; Objeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeect reeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeelations ;------------------------------------------------------------------ Relations: { @@ -570,20 +570,20 @@ Relations: { } } -; Object connections +; Objeeeeeeeeeeeeeeeeeeeeect conneeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeections ;------------------------------------------------------------------ Connections: { Connect: "OO", "Model::e", "Model::Scene" Connect: "OO", "Material::unnamed", "Model::e" } -;Takes and animation section +;Takeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeees and animation seeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeection ;---------------------------------------------------- Takes: { Current: "" } -;Version 5 settings +;Veeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeersion 5 seeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeettings ;------------------------------------------------------------------ Version5: { From 56b317eaf24f31c7e756e08f53f790f9fe953e69 Mon Sep 17 00:00:00 2001 From: Mariell Date: Tue, 11 Dec 2018 18:00:13 +0100 Subject: [PATCH 111/130] make e.c follow e.cpp's example --- e.c | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/e.c b/e.c index b1ce7ca..faeb706 100644 --- a/e.c +++ b/e.c @@ -1,13 +1,22 @@ #include +#define e "e" +#define ee int +#define eee main +#define eeee ( +#define eeeee ) +#define eeeeee { +#define eeeeeee } +#define eeeeeeee for +#define eeeeeeeee ; +#define eeeeeeeeee printf +#define eeeeeeeeeee return +#define eeeeeeeeeeee on_exit +#define eeeeeeeeeeeee [ +#define eeeeeeeeeeeeee ] +#define eeeeeeeeeeeeeee 0 -int main() -{ - for (;;) { - printf("e"); - } -} - -int on_exit() -{ - return 'e'; -} +ee eee eeee eeeee eeeeee eeeeeeee eeee eeeeeeeee +eeeeeeeee eeeee eeeeee eeeeeeeeee eeee e eeeee +eeeeeeeee eeeeeee eeeeeee ee eeeeeeeeeeee eeee +eeeee eeeeee eeeeeeeeeee e eeeeeeeeeeeee +eeeeeeeeeeeeeee eeeeeeeeeeeeee eeeeeeeee eeeeeee From 015237056d5b10148a5262b4031409dfaf9c0e07 Mon Sep 17 00:00:00 2001 From: yvbbrjdr Date: Tue, 11 Dec 2018 09:05:24 -0800 Subject: [PATCH 112/130] Make e.bf print "e" infinitely --- e.bf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e.bf b/e.bf index 86022c8..a83e6a7 100644 --- a/e.bf +++ b/e.bf @@ -1 +1 @@ -++++++++++[>++++++++++<-]>+. \ No newline at end of file +++++++++++[>++++++++++<-]>+[.] From ba66bdcd32e0c946f0e531e21aa4b9c56e85566d Mon Sep 17 00:00:00 2001 From: ultrasilicon Date: Tue, 11 Dec 2018 12:08:26 -0500 Subject: [PATCH 113/130] Added e.qml for QML languageeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee --- e.qml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 e.qml diff --git a/e.qml b/e.qml new file mode 100644 index 0000000..9890a98 --- /dev/null +++ b/e.qml @@ -0,0 +1,8 @@ +import QtQuick 2.0 +Image { + width: 1000; height: 1000 + fillMode: Image.Tile + source: "https://raw.githubusercontent.com/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee/eeeeeeeeeeeeeeeeeeeeeeee/e.png" + sourceSize.width: 10 + sourceSize.height: 10 +} \ No newline at end of file From fe905b683b3a851359f40f82973a0e7aa3d40415 Mon Sep 17 00:00:00 2001 From: Mariell Date: Tue, 11 Dec 2018 18:31:25 +0100 Subject: [PATCH 114/130] e but it's bare metal --- e_standalone.asm | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 e_standalone.asm diff --git a/e_standalone.asm b/e_standalone.asm new file mode 100644 index 0000000..4ad4e1a --- /dev/null +++ b/e_standalone.asm @@ -0,0 +1,27 @@ +; Linker file: +; ENTRY(start); SECTIONS { . = 1M; .boot : { KEEP(*(.multiboot_header)) } .text : { *(.text) } } +; compile: nasm -i. -felf64 e_standalone.asm -o e + + section .multiboot_header + bits 32 +header_start: + dd 0xe85250d6 + dd 0 + dd header_end - header_start + dd 0x100000000 - (0xe85250d6 + 0 + (header_end - header_start)) + dw 0 + dw 0 + dd 8 +header_end: + +global start +section .text +bits 32 +start: + mov ecx, 0 +loop: + mov dword [0xb8000 + (ecx * 2)], (15 << 8) | (0x00000065) + inc ecx + cmp ecx, 2000 + jne loop + hlt From b10a70cfea9c07b2641d747c6f4fc829e2be1519 Mon Sep 17 00:00:00 2001 From: Julien CHRISTOPHE Date: Tue, 11 Dec 2018 18:37:02 +0100 Subject: [PATCH 115/130] show the True value of eeeee --- e.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e.py b/e.py index f444fb1..d81d354 100644 --- a/e.py +++ b/e.py @@ -1,7 +1,7 @@ import sys try: - while True: + while 'e': sys.stdout.write('e') except KeyboardInterrupt: sys.exit('e') From 0c31497404fe7877e0abfe568687a5fe809b8aac Mon Sep 17 00:00:00 2001 From: yvbbrjdr Date: Tue, 11 Dec 2018 09:54:34 -0800 Subject: [PATCH 116/130] Create e_linux_riscv64.S --- e_linux_riscv64.S | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 e_linux_riscv64.S diff --git a/e_linux_riscv64.S b/e_linux_riscv64.S new file mode 100644 index 0000000..09547f3 --- /dev/null +++ b/e_linux_riscv64.S @@ -0,0 +1,12 @@ + .data +e: .byte 'e' + + .text + .globl _start +_start: + li a7, 64 + la a1, e + li a2, 1 +l: li a0, 1 + ecall + j l From a26d4729f15a0b710afa0d29477c597b53982276 Mon Sep 17 00:00:00 2001 From: Tim Boonstra Date: Tue, 11 Dec 2018 12:00:15 -0600 Subject: [PATCH 117/130] Create e.cfm --- e.cfm | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 e.cfm diff --git a/e.cfm b/e.cfm new file mode 100644 index 0000000..4c8b21c --- /dev/null +++ b/e.cfm @@ -0,0 +1,5 @@ + + while(true){ + writeOutput('e'); + } + From cee9f10666bdf6bd22d5d16bbb16a306bd78991f Mon Sep 17 00:00:00 2001 From: PatrickKing Date: Tue, 11 Dec 2018 11:19:00 -0700 Subject: [PATCH 118/130] Add coffeeeeeescript --- e.coffee | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 e.coffee diff --git a/e.coffee b/e.coffee new file mode 100644 index 0000000..05b65e2 --- /dev/null +++ b/e.coffee @@ -0,0 +1,2 @@ +while 'e' + console.log 'e' From e013acb6c4e787b3a21251a047b81e37a136b980 Mon Sep 17 00:00:00 2001 From: David Buchanan Date: Tue, 11 Dec 2018 18:19:29 +0000 Subject: [PATCH 119/130] fasteeeeeeeeeeeeeeeeeer --- eee.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 eee.c diff --git a/eee.c b/eee.c new file mode 100644 index 0000000..b99bce0 --- /dev/null +++ b/eee.c @@ -0,0 +1,21 @@ +#include +#define e "e" +#define ee e e +#define eee ee ee +#define eeee eee eee +#define eeeee eeee eeee +#define eeeeee eeeee eeeee +#define eeeeeee eeeeee eeeeee +#define eeeeeeee eeeeeee eeeeeee +#define eeeeeeeee eeeeeeee eeeeeeee +#define eeeeeeeeee eeeeeeeee eeeeeeeee +#define eeeeeeeeeee eeeeeeeeee eeeeeeeeee +#define eeeeeeeeeeee eeeeeeeeeee eeeeeeeeeee +#define eeeeeeeeeeeee eeeeeeeeeeee eeeeeeeeeeee +#define eeeeeeeeeeeeee eeeeeeeeeeeee eeeeeeeeeeeee +#define eeeeeeeeeeeeeee eeeeeeeeeeeeee eeeeeeeeeeeeee +#define e_e_e(e, ee, eee) write(e, ee, eee) +#define e_e() int main() +#define e_(e) while(e) + +e_e() { e_(e) e_e_e(1, eeeeeeeeeeeeeee, 0x4000); } From cf1866f850b483c3abac1131f5a26eecefbcd2c8 Mon Sep 17 00:00:00 2001 From: Stepan Vanzuriak Date: Tue, 11 Dec 2018 20:32:34 +0200 Subject: [PATCH 120/130] React JSX eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee --- e.jsx | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 e.jsx diff --git a/e.jsx b/e.jsx new file mode 100644 index 0000000..0555b61 --- /dev/null +++ b/e.jsx @@ -0,0 +1,33 @@ +import React, { Component } from 'react'; + +class E extends Component { + constructor(props) { + super(props); + + this.state = { + e: 0, + }; + + this.timer = this.timer.bind(this); + } + + componentDidMount() { + const eId = setInterval(this.timer, 10); + this.setState({ eInterval: eId }); + } + + componentWillUnmount() { + clearInterval(this.state.eInterval); + } + + timer() { + this.setState({ e: this.state.e + 1 }); + } + + render() { + const e = Array(this.state.e).fill(

e

); + return e; + } +} + +export default E; From 0e597e6969710fb5f66e39646f3d8dd6322e180f Mon Sep 17 00:00:00 2001 From: Marc-Alexandre Espiaut Date: Tue, 11 Dec 2018 19:43:51 +0100 Subject: [PATCH 121/130] Add informativeeeee documeeeeeeeeent --- posteeeer.pdf | Bin 0 -> 8754 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 posteeeer.pdf diff --git a/posteeeer.pdf b/posteeeer.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c1c7c8c2011bfd90b3ba62511dbf4f9afad5a20d GIT binary patch literal 8754 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 Date: Tue, 11 Dec 2018 13:04:56 -0600 Subject: [PATCH 122/130] include using statements (for increased readability, obviously.) --- e.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/e.cs b/e.cs index 7d83984..6e0b5a1 100644 --- a/e.cs +++ b/e.cs @@ -1,16 +1,17 @@ -using System; +using Eeeeeee = System.Console; +using eeee = System.Boolean; namespace e { class E { - const bool e = true; + const eeee e = true; - static void Main(string[] args) + static void Main(string[] eeee) { while (e) { - Console.Write('e'); + Eeeeeee.Write('e'); } } } From 311b0b87d0811cd96d857f109ca724179ad57348 Mon Sep 17 00:00:00 2001 From: Yechiel Kalmenson Date: Tue, 11 Dec 2018 14:27:27 -0500 Subject: [PATCH 123/130] eeeeeeeeeeeeeeeeeerb --- e.html.erb | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 e.html.erb diff --git a/e.html.erb b/e.html.erb new file mode 100644 index 0000000..e67f1df --- /dev/null +++ b/e.html.erb @@ -0,0 +1,3 @@ +<% while "e" do %> + e +<% end %> From 5d067f3bf61cfc0a310af90e3e9ca5ceb5bfbb72 Mon Sep 17 00:00:00 2001 From: "@sashkab" Date: Tue, 11 Dec 2018 14:36:40 -0500 Subject: [PATCH 124/130] e.q --- e.q | 1 + 1 file changed, 1 insertion(+) create mode 100644 e.q diff --git a/e.q b/e.q new file mode 100644 index 0000000..0a56f21 --- /dev/null +++ b/e.q @@ -0,0 +1 @@ +{while[1;-1 "e"]} From 9c6df0158e96f82c33c4869264c4fcc829265dd4 Mon Sep 17 00:00:00 2001 From: wengwengweng Date: Tue, 11 Dec 2018 14:48:39 -0500 Subject: [PATCH 125/130] ignore what's not e --- .gitignore | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/.gitignore b/.gitignore index d04cd99..ecec75a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,27 @@ **/.backup **/gst.im +a +b +c +d +f +g +h +i +j +k +l +m +n +o +p +q +r +s +t +u +v +w +x +y +z From 918ea161edbaac956523ac52312e5a230c91cb10 Mon Sep 17 00:00:00 2001 From: Mariell Date: Tue, 11 Dec 2018 20:58:29 +0100 Subject: [PATCH 126/130] add e.sm (smalltalk) (#565) --- e.sm | 1 + 1 file changed, 1 insertion(+) create mode 100644 e.sm diff --git a/e.sm b/e.sm new file mode 100644 index 0000000..416776e --- /dev/null +++ b/e.sm @@ -0,0 +1 @@ +[true] whileTrue:[ Transcript show: 'e'. ]. From 4c8b8ad4c25bc53937eb59a87ea7b75f1cc520a6 Mon Sep 17 00:00:00 2001 From: Adorable-Catgirl Date: Tue, 11 Dec 2018 15:09:06 -0500 Subject: [PATCH 127/130] phone home --- e.t | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 e.t diff --git a/e.t b/e.t new file mode 100644 index 0000000..ac8f043 --- /dev/null +++ b/e.t @@ -0,0 +1,15 @@ +terralib.nativetarget = terralib.newtarget { + Triple = "x86_64-pc-linux-gnu", + CPU = "x86-64", +} + +stdio = terralib.includec("stdio.h") + +terra main(argc : int, argv : &rawstring) + while true do + stdio.printf("e") + end + return 0 +end + +main(0, nil) From af735f710d69f7a159a11d4fa302c163eee9b845 Mon Sep 17 00:00:00 2001 From: Adorable-Catgirl Date: Tue, 11 Dec 2018 15:27:36 -0500 Subject: [PATCH 128/130] e bomb --- e.xz | Bin 0 -> 156316 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 e.xz diff --git a/e.xz b/e.xz new file mode 100644 index 0000000000000000000000000000000000000000..1ab119ed12b218d06d1cc62d00875488b7568a42 GIT binary patch literal 156316 zcmeI*Ur3#090%~%(y=kuQTnH=*~&R>!kS&U3t5tc6?TF=wRBo`u}KR{Wt&Av+lYlo zqS6-9#k?3Lb5l2K6Qaz>=)$aav9MsPZ8;ERjn?oCJ+ndA3k2m%`grTbfrs~fp6};- ze(!l>8{aP55(J4CfBvlaw&1~p`-31z`LXQ#+1b>DnwNq{|D68n`k~`5k4FppyVt%D zeYNiKy1PRyv5aT#Yc3i{|9g8{eQ$MUb94BSLo0sS{mF&*GgBkKm#2NZtNHw!(Ubdk zC%-mycIVSu&reiF`V+^do=84Ywc_>SiSch5ng%|6@#x9$x$UcJr%RerYKlgh3M+%w zpPuboo3p?EflaMz&ea|4%B-5q8QFL0Ku7aC>)QXy-Zhmzw4@{45gY3}-4+_oibSur z=jSDTeC$%~*LC41lTWp$cK5up>hm9tXQx$`zc*1`S~fV*aJ2l7@rtCS*S`C;XJ)!I zcjstE#p(x0E1Y&1e6G(saZLL-mP-0aCEr=(NTDe07SN;)N-l1|BadLUY? z5G%wAu|lj6E5r)1Lad0-57WqDa+n+@hsj}bm>edD$zgI>oPO5OjH?+}Gp=S_&A6Iz zHREc=H7-BYtPj(N>BID4`Y?T%K1?5`57UR~!xqPTQ51*@LedD$zgJs943b?iWe&ju7a!JD!2-+f~(*vxC*XpR^R z8qSJDueRsMXCfqyA8jbuP_Ut3L&1iE4FwwtHWX|qI6e_j4wJ*=FgZ*Plf&dNIZO_d z!#tej;jAGQH5#E28le#yp%EIP5gMTp8le#yWuXxop%EIP5gMTp8le#yp%EIP5gJ`a zBQ!!IG(saZLL)RnBQ!!IG(saZszf6+LL)RnBQ!!IG(saZLL)RnBQ!dUMredaXoN;+ zghptDMredaXoN;+v>J`j2#wGPjnD{<&@Q^2#wGPjnD{<&?MredaXoN;+ghptDMredaXoN<`&N!|gZzA0(D< F`3KVC#v1?t literal 0 HcmV?d00001 From a53699f0cd3f0af061bf535775282919b53b125a Mon Sep 17 00:00:00 2001 From: Jon Q Date: Tue, 11 Dec 2018 15:28:38 -0500 Subject: [PATCH 129/130] Add e.eps --- e.eps | Bin 0 -> 225794 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 e.eps diff --git a/e.eps b/e.eps new file mode 100644 index 0000000000000000000000000000000000000000..10c4dfc60687154639244c59dbb520dcfd2f242d GIT binary patch literal 225794 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 i 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 V`di1#fBy&H((r=+>DO26e+PEZh6exu literal 0 HcmV?d00001 From ef9529d467741846415449b9d8f895bf33b38953 Mon Sep 17 00:00:00 2001 From: Christoph Welcz Date: Tue, 11 Dec 2018 21:53:39 +0100 Subject: [PATCH 130/130] Haskell without any additional imports --- e.hs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/e.hs b/e.hs index a4a4f08..f6a2ec5 100644 --- a/e.hs +++ b/e.hs @@ -1,3 +1,2 @@ -import Control.Monad.Fix -main = putStr $ fix ('e':) +main = putStr $ cycle "e"