diff --git "a/deepfilternet3/erb_dec.xml" "b/deepfilternet3/erb_dec.xml" new file mode 100644--- /dev/null +++ "b/deepfilternet3/erb_dec.xml" @@ -0,0 +1,6190 @@ + + + + + + + + + + + 1 + 3002 + 512 + + + + + + + + + + + 1 + 64 + 3002 + 8 + + + + + + + + + + + 1 + 64 + 3002 + 8 + + + + + + + + + + + 1 + 64 + 3002 + 16 + + + + + + + + + + + 1 + 64 + 3002 + 32 + + + + + + + + + + + 64 + 1 + 1 + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 4 + + + + + + + + + + + + + + + + + + + + 2 + + + + + + + + + + 4 + + + + 2 + + + + + 1 + + + 3 + + + + + + + + + + + 1 + + + 1 + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + 3 + + + + + 5 + + + + + + + + + + + 64 + 1 + 1 + 1 + + + 5 + + + + + 64 + 1 + 1 + 1 + 1 + + + + + + + + + + + 1 + 64 + 3002 + 32 + + + 64 + 1 + 1 + 1 + 1 + + + + + 1 + 64 + 3002 + 32 + + + + + + + + + + + 64 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + 64 + 3002 + 32 + + + + + 4 + + + + + + + + + + + 4 + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + + + 2 + + + + + + + + + + + 1 + + + 1 + + + 2 + + + + + 4 + + + + + + + + + + + 64 + + + 4 + + + + + 1 + 64 + 1 + 1 + + + + + + + + + + + 1 + 64 + 3002 + 32 + + + 1 + 64 + 1 + 1 + + + + + 1 + 64 + 3002 + 32 + + + + + + + + + + 1 + 64 + 3002 + 32 + + + + + 1 + 64 + 3002 + 32 + + + + + + + + + + + 64 + 1 + 1 + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 4 + + + + + + + + + + + + + + + + + + + + 2 + + + + + + + + + + 4 + + + + 2 + + + + + 1 + + + 3 + + + + + + + + + + + 1 + + + 1 + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + 3 + + + + + 5 + + + + + + + + + + + 64 + 1 + 1 + 1 + + + 5 + + + + + 64 + 1 + 1 + 1 + 1 + + + + + + + + + + + 1 + 64 + 3002 + 16 + + + 64 + 1 + 1 + 1 + 1 + + + + + 1 + 64 + 3002 + 16 + + + + + + + + + + + 64 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + 64 + 3002 + 16 + + + + + 4 + + + + + + + + + + + 4 + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + + + 2 + + + + + + + + + + + 1 + + + 1 + + + 2 + + + + + 4 + + + + + + + + + + + 64 + + + 4 + + + + + 1 + 64 + 1 + 1 + + + + + + + + + + + 1 + 64 + 3002 + 16 + + + 1 + 64 + 1 + 1 + + + + + 1 + 64 + 3002 + 16 + + + + + + + + + + 1 + 64 + 3002 + 16 + + + + + 1 + 64 + 3002 + 16 + + + + + + + + + + + 64 + 1 + 1 + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 4 + + + + + + + + + + + + + + + + + + + + 2 + + + + + + + + + + 4 + + + + 2 + + + + + 1 + + + 3 + + + + + + + + + + + 1 + + + 1 + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + 3 + + + + + 5 + + + + + + + + + + + 64 + 1 + 1 + 1 + + + 5 + + + + + 64 + 1 + 1 + 1 + 1 + + + + + + + + + + + 1 + 64 + 3002 + 8 + + + 64 + 1 + 1 + 1 + 1 + + + + + 1 + 64 + 3002 + 8 + + + + + + + + + + + 64 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + 64 + 3002 + 8 + + + + + 4 + + + + + + + + + + + 4 + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + + + 2 + + + + + + + + + + + 1 + + + 1 + + + 2 + + + + + 4 + + + + + + + + + + + 64 + + + 4 + + + + + 1 + 64 + 1 + 1 + + + + + + + + + + + 1 + 64 + 3002 + 8 + + + 1 + 64 + 1 + 1 + + + + + 1 + 64 + 3002 + 8 + + + + + + + + + + 1 + 64 + 3002 + 8 + + + + + 1 + 64 + 3002 + 8 + + + + + + + + + + + 64 + 1 + 1 + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 4 + + + + + + + + + + + + + + + + + + + + 2 + + + + + + + + + + 4 + + + + 2 + + + + + 1 + + + 3 + + + + + + + + + + + 1 + + + 1 + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + 3 + + + + + 5 + + + + + + + + + + + 64 + 1 + 1 + 1 + + + 5 + + + + + 64 + 1 + 1 + 1 + 1 + + + + + + + + + + + 1 + 64 + 3002 + 8 + + + 64 + 1 + 1 + 1 + 1 + + + + + 1 + 64 + 3002 + 8 + + + + + + + + + + + 64 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + 64 + 3002 + 8 + + + + + 4 + + + + + + + + + + + 4 + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + + + 2 + + + + + + + + + + + 1 + + + 1 + + + 2 + + + + + 4 + + + + + + + + + + + 64 + + + 4 + + + + + 1 + 64 + 1 + 1 + + + + + + + + + + + 1 + 64 + 3002 + 8 + + + 1 + 64 + 1 + 1 + + + + + 1 + 64 + 3002 + 8 + + + + + + + + + + 1 + 64 + 3002 + 8 + + + + + 1 + 64 + 3002 + 8 + + + + + + + + + + + 1 + 3002 + 512 + + + + + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3 + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3 + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + 1 + + + 1 + + + + + 4 + + + + + + + + + + + 1 + 3002 + 512 + + + 4 + + + + + 1 + 3002 + 16 + 32 + + + + + + + + + + + 16 + 32 + 16 + + + + + + + + + + + 1 + 3002 + 16 + 32 + + + 16 + 32 + 16 + + + + + 1 + 3002 + 16 + 16 + + + + + + + + + + + 1 + 3002 + 16 + 16 + + + + + 4 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + 4 + + + 1 + + + 1 + + + 1 + + + 1 + + + + + 2 + + + + + + + + + + + 1 + + + + + + + + + + + 2 + + + 1 + + + + + 3 + + + + + + + + + + + 1 + 3002 + 16 + 16 + + + 3 + + + + + 1 + 3002 + 256 + + + + + + + + + + 1 + 3002 + 256 + + + + + 1 + 3002 + 256 + + + + + + + + + + + 3 + + + + + + + + + + 1 + 3002 + 256 + + + 3 + + + + + 3002 + 1 + 256 + + + + + + + + + + + 3 + + + + + + + + + + 3002 + 1 + 256 + + + 3 + + + + + 1 + 3002 + 256 + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + 1 + 3002 + 256 + + + + + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3 + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + 1 + + + + + 3 + + + + + + + + + + + + 3 + + + + + 2 + 1 + 256 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + 2 + 1 + 256 + + + 1 + + + 1 + + + 1 + + + 1 + + + + + 1 + 1 + 256 + + + + + + + + + + + 3 + + + + + + + + + + 1 + 1 + 256 + + + 3 + + + + + 1 + 1 + 256 + + + + + + + + + + + 1 + 3002 + 256 + + + + + 3 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 3 + + + 1 + + + 1 + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 3 + + + 1 + + + 1 + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + + + 1 + + + + + + + + + + + 1 + 768 + 256 + + + + + + + + + + + 1 + 768 + 256 + + + + + + + + + + + 1 + 1536 + + + + + + + + + + + + + + + + + + + + 1 + 1536 + + + + + + 1 + 256 + + + 1 + 256 + + + 1 + 256 + + + 1 + 256 + + + 1 + 256 + + + 1 + 256 + + + + + + + + + + + 1 + 256 + + + 1 + 256 + + + + + 1 + 256 + + + + + + + + + + + 1 + 256 + + + 1 + 256 + + + + + 1 + 256 + + + + + + + + + + + 1 + 256 + + + 1 + 256 + + + 1 + 256 + + + 1 + 256 + + + + + 1 + 1024 + + + + + + + + + + + 1 + 3002 + 256 + + + 1 + 1 + 256 + + + 1 + + + 1 + 768 + 256 + + + 1 + 768 + 256 + + + 1 + 1024 + + + + + 1 + 1 + 3002 + 256 + + + 1 + 1 + 256 + + + + + + + + + + + 4 + + + + + + + + + + 1 + 1 + 3002 + 256 + + + 4 + + + + + 3002 + 1 + 1 + 256 + + + + + + + + + + + 1 + + + + + + + + + + 3002 + 1 + 1 + 256 + + + 1 + + + + + 3002 + 1 + 256 + + + + + + + + + + + 3 + + + + + + + + + + 3002 + 1 + 256 + + + 3 + + + + + 1 + 3002 + 256 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + 2 + 1 + 256 + + + 1 + + + 1 + + + 1 + + + 1 + + + + + 1 + 1 + 256 + + + + + + + + + + + 3 + + + + + + + + + + 1 + 1 + 256 + + + 3 + + + + + 1 + 1 + 256 + + + + + + + + + + + 1 + 3002 + 256 + + + + + 3 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 3 + + + 1 + + + 1 + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 3 + + + 1 + + + 1 + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + + + 1 + + + + + + + + + + + 1 + 768 + 256 + + + + + + + + + + + 1 + 768 + 256 + + + + + + + + + + + 1 + 1536 + + + + + + + + + + + + + + + + + + + + 1 + 1536 + + + + + + 1 + 256 + + + 1 + 256 + + + 1 + 256 + + + 1 + 256 + + + 1 + 256 + + + 1 + 256 + + + + + + + + + + + 1 + 256 + + + 1 + 256 + + + + + 1 + 256 + + + + + + + + + + + 1 + 256 + + + 1 + 256 + + + + + 1 + 256 + + + + + + + + + + + 1 + 256 + + + 1 + 256 + + + 1 + 256 + + + 1 + 256 + + + + + 1 + 1024 + + + + + + + + + + + 1 + 3002 + 256 + + + 1 + 1 + 256 + + + 1 + + + 1 + 768 + 256 + + + 1 + 768 + 256 + + + 1 + 1024 + + + + + 1 + 1 + 3002 + 256 + + + 1 + 1 + 256 + + + + + + + + + + + 4 + + + + + + + + + + 1 + 1 + 3002 + 256 + + + 4 + + + + + 3002 + 1 + 1 + 256 + + + + + + + + + + + 1 + + + + + + + + + + 3002 + 1 + 1 + 256 + + + 1 + + + + + 3002 + 1 + 256 + + + + + + + + + + + 3 + + + + + + + + + + 3002 + 1 + 256 + + + 3 + + + + + 1 + 3002 + 256 + + + + + + + + + + + 1 + 3002 + 256 + + + + + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3 + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3 + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + 1 + + + 1 + + + + + 4 + + + + + + + + + + + 1 + 3002 + 256 + + + 4 + + + + + 1 + 3002 + 16 + 16 + + + + + + + + + + + 16 + 16 + 32 + + + + + + + + + + + 1 + 3002 + 16 + 16 + + + 16 + 16 + 32 + + + + + 1 + 3002 + 16 + 32 + + + + + + + + + + + 1 + 3002 + 16 + 32 + + + + + 4 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + 4 + + + 1 + + + 1 + + + 1 + + + 1 + + + + + 2 + + + + + + + + + + + 1 + + + + + + + + + + + 2 + + + 1 + + + + + 3 + + + + + + + + + + + 1 + 3002 + 16 + 32 + + + 3 + + + + + 1 + 3002 + 512 + + + + + + + + + + 1 + 3002 + 512 + + + + + 1 + 3002 + 512 + + + + + + + + + + + 1 + 64 + 3002 + 8 + + + + + 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 4 + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 4 + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 4 + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + 1 + + + 1 + + + + + 4 + + + + + + + + + + + 1 + 3002 + 512 + + + 4 + + + + + 1 + 3002 + 8 + 64 + + + + + + + + + + + 4 + + + + + + + + + + 1 + 3002 + 8 + 64 + + + 4 + + + + + 1 + 64 + 3002 + 8 + + + + + + + + + + + 1 + 64 + 3002 + 8 + + + 1 + 64 + 3002 + 8 + + + + + 1 + 64 + 3002 + 8 + + + + + + + + + + + 64 + 1 + 1 + 3 + + + + + + + + + + + 1 + + + + + + + + + + + 4 + + + + + + + + + + + + + + + + + + + + 2 + + + + + + + + + + 4 + + + + 2 + + + + + 1 + + + 3 + + + + + + + + + + + 1 + + + 1 + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + 3 + + + + + 5 + + + + + + + + + + + 64 + 1 + 1 + 3 + + + 5 + + + + + 64 + 1 + 1 + 1 + 3 + + + + + + + + + + + 1 + 64 + 3002 + 8 + + + 64 + 1 + 1 + 1 + 3 + + + + + 1 + 64 + 3002 + 8 + + + + + + + + + + + 64 + 64 + 1 + 1 + + + + + + + + + + + 1 + 64 + 3002 + 8 + + + 64 + 64 + 1 + 1 + + + + + 1 + 64 + 3002 + 8 + + + + + + + + + + + 64 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + 64 + 3002 + 8 + + + + + 4 + + + + + + + + + + + 4 + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + + + 2 + + + + + + + + + + + 1 + + + 1 + + + 2 + + + + + 4 + + + + + + + + + + + 64 + + + 4 + + + + + 1 + 64 + 1 + 1 + + + + + + + + + + + 1 + 64 + 3002 + 8 + + + 1 + 64 + 1 + 1 + + + + + 1 + 64 + 3002 + 8 + + + + + + + + + + 1 + 64 + 3002 + 8 + + + + + 1 + 64 + 3002 + 8 + + + + + + + + + + + 1 + 64 + 3002 + 8 + + + 1 + 64 + 3002 + 8 + + + + + 1 + 64 + 3002 + 8 + + + + + + + + + + + 64 + 1 + 1 + 3 + + + + + + + + + + + 1 + + + + + + + + + + + 4 + + + + + + + + + + + + + + + + + + + + 2 + + + + + + + + + + 4 + + + + 2 + + + + + 1 + + + 3 + + + + + + + + + + + 1 + + + 1 + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + 3 + + + + + 5 + + + + + + + + + + + 64 + 1 + 1 + 3 + + + 5 + + + + + 64 + 1 + 1 + 1 + 3 + + + + + + + + + + + 1 + 64 + 3002 + 8 + + + 64 + 1 + 1 + 1 + 3 + + + + + 1 + 64 + 3002 + 16 + + + + + + + + + + + 64 + 64 + 1 + 1 + + + + + + + + + + + 1 + 64 + 3002 + 16 + + + 64 + 64 + 1 + 1 + + + + + 1 + 64 + 3002 + 16 + + + + + + + + + + + 64 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + 64 + 3002 + 16 + + + + + 4 + + + + + + + + + + + 4 + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + + + 2 + + + + + + + + + + + 1 + + + 1 + + + 2 + + + + + 4 + + + + + + + + + + + 64 + + + 4 + + + + + 1 + 64 + 1 + 1 + + + + + + + + + + + 1 + 64 + 3002 + 16 + + + 1 + 64 + 1 + 1 + + + + + 1 + 64 + 3002 + 16 + + + + + + + + + + 1 + 64 + 3002 + 16 + + + + + 1 + 64 + 3002 + 16 + + + + + + + + + + + 1 + 64 + 3002 + 16 + + + 1 + 64 + 3002 + 16 + + + + + 1 + 64 + 3002 + 16 + + + + + + + + + + + 64 + 1 + 1 + 3 + + + + + + + + + + + 1 + + + + + + + + + + + 4 + + + + + + + + + + + + + + + + + + + + 2 + + + + + + + + + + 4 + + + + 2 + + + + + 1 + + + 3 + + + + + + + + + + + 1 + + + 1 + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + 3 + + + + + 5 + + + + + + + + + + + 64 + 1 + 1 + 3 + + + 5 + + + + + 64 + 1 + 1 + 1 + 3 + + + + + + + + + + + 1 + 64 + 3002 + 16 + + + 64 + 1 + 1 + 1 + 3 + + + + + 1 + 64 + 3002 + 32 + + + + + + + + + + + 64 + 64 + 1 + 1 + + + + + + + + + + + 1 + 64 + 3002 + 32 + + + 64 + 64 + 1 + 1 + + + + + 1 + 64 + 3002 + 32 + + + + + + + + + + + 64 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + 64 + 3002 + 32 + + + + + 4 + + + + + + + + + + + 4 + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + + + 2 + + + + + + + + + + + 1 + + + 1 + + + 2 + + + + + 4 + + + + + + + + + + + 64 + + + 4 + + + + + 1 + 64 + 1 + 1 + + + + + + + + + + + 1 + 64 + 3002 + 32 + + + 1 + 64 + 1 + 1 + + + + + 1 + 64 + 3002 + 32 + + + + + + + + + + 1 + 64 + 3002 + 32 + + + + + 1 + 64 + 3002 + 32 + + + + + + + + + + + 1 + 64 + 3002 + 32 + + + 1 + 64 + 3002 + 32 + + + + + 1 + 64 + 3002 + 32 + + + + + + + + + + + 1 + 64 + 1 + 3 + + + + + + + + + + + 1 + 64 + 3002 + 32 + + + 1 + 64 + 1 + 3 + + + + + 1 + 1 + 3002 + 32 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + 1 + 3002 + 32 + + + + + 4 + + + + + + + + + + + 4 + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + + + 1 + + + + + + + + + + + 1 + + + 1 + + + + + 2 + + + + + + + + + + + 1 + + + 1 + + + 2 + + + + + 4 + + + + + + + + + + + 1 + + + 4 + + + + + 1 + 1 + 1 + 1 + + + + + + + + + + + 1 + 1 + 3002 + 32 + + + 1 + 1 + 1 + 1 + + + + + 1 + 1 + 3002 + 32 + + + + + + + + + + 1 + 1 + 3002 + 32 + + + + + 1 + 1 + 3002 + 32 + + + + + + + + + + 1 + 1 + 3002 + 32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +