Merged changes in the trunk up to revision 44039.
authorTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>
Sun, 12 Feb 2012 00:09:48 +0000 (00:09 +0000)
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>
Sun, 12 Feb 2012 00:09:48 +0000 (00:09 +0000)
132 files changed:
CMakeLists.txt
GNUmakefile
build_files/scons/config/Modules/FindPython.py [new file with mode: 0644]
build_files/scons/config/Modules/__init__.py [new file with mode: 0644]
build_files/scons/config/linux-config.py
build_files/scons/tools/Blender.py
doc/python_api/rst/gpu.rst
doc/python_api/sphinx_doc_gen.py
doc/python_api/sphinx_doc_gen.sh
extern/CMakeLists.txt
extern/binreloc/CMakeLists.txt
extern/bullet2/CMakeLists.txt
extern/bullet2/src/BulletSoftBody/btSoftBody.cpp
extern/carve/CMakeLists.txt
extern/colamd/CMakeLists.txt
extern/glew/CMakeLists.txt
extern/libmv/CMakeLists.txt
extern/libopenjpeg/CMakeLists.txt
extern/libredcode/CMakeLists.txt
extern/lzma/CMakeLists.txt
extern/lzo/CMakeLists.txt
extern/recastnavigation/CMakeLists.txt
intern/cycles/SConscript
intern/cycles/blender/blender_session.cpp
intern/cycles/blender/blender_sync.cpp
intern/cycles/blender/blender_sync.h
intern/cycles/kernel/kernel_shader.h
intern/cycles/kernel/svm/svm_brightness.h
intern/cycles/kernel/svm/svm_noise.h
intern/cycles/util/util_thread.h
intern/elbeem/intern/ntl_vector3dim.h
intern/elbeem/intern/utilities.h
intern/ghost/intern/GHOST_SystemWin32.cpp
release/scripts/modules/bpy/utils.py
release/scripts/modules/bpy_extras/anim_utils.py
release/scripts/modules/bpy_extras/mesh_utils.py
release/scripts/modules/console/complete_import.py
release/scripts/startup/bl_operators/anim.py
release/scripts/startup/bl_operators/clip.py
release/scripts/startup/bl_operators/image.py
release/scripts/startup/bl_operators/object.py
release/scripts/startup/bl_operators/presets.py
release/scripts/startup/bl_operators/sequencer.py
release/scripts/startup/bl_operators/uvcalc_follow_active.py
release/scripts/startup/bl_operators/uvcalc_lightmap.py
release/scripts/startup/bl_operators/uvcalc_smart_project.py
release/scripts/startup/bl_operators/vertexpaint_dirt.py
release/scripts/startup/bl_operators/wm.py
release/scripts/startup/bl_ui/properties_data_curve.py
release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py
release/scripts/startup/bl_ui/properties_texture.py
release/scripts/startup/bl_ui/space_clip.py
release/scripts/startup/bl_ui/space_info.py
release/scripts/startup/bl_ui/space_logic.py
release/scripts/startup/bl_ui/space_nla.py
release/scripts/startup/bl_ui/space_userpref.py
release/scripts/startup/bl_ui/space_userpref_keymap.py
release/scripts/startup/bl_ui/space_view3d.py
release/scripts/startup/bl_ui/space_view3d_toolbar.py
release/scripts/startup/keyingsets_builtins.py
release/scripts/templates/ui_menu.py
release/text/readme.html
source/blender/blenfont/BLF_api.h
source/blender/blenfont/intern/blf_glyph.c
source/blender/blenkernel/BKE_blender.h
source/blender/blenkernel/BKE_writeffmpeg.h
source/blender/blenkernel/intern/deform.c
source/blender/blenkernel/intern/depsgraph.c
source/blender/blenkernel/intern/idcode.c
source/blender/blenkernel/intern/mesh.c
source/blender/blenkernel/intern/particle.c
source/blender/blenkernel/intern/subsurf_ccg.c
source/blender/blenkernel/intern/writeffmpeg.c
source/blender/blenloader/intern/readfile.c
source/blender/collada/AnimationExporter.cpp
source/blender/collada/AnimationExporter.h
source/blender/collada/ArmatureExporter.cpp
source/blender/collada/DocumentExporter.cpp
source/blender/collada/ExportSettings.h
source/blender/collada/TransformWriter.cpp
source/blender/collada/collada.cpp
source/blender/collada/collada.h
source/blender/editors/animation/anim_markers.c
source/blender/editors/curve/editcurve.c
source/blender/editors/gpencil/gpencil_paint.c
source/blender/editors/interface/interface_handlers.c
source/blender/editors/interface/interface_ops.c
source/blender/editors/interface/resources.c
source/blender/editors/mesh/editmesh_add.c
source/blender/editors/mesh/editmesh_mods.c
source/blender/editors/mesh/loopcut.c
source/blender/editors/metaball/mball_ops.c
source/blender/editors/space_clip/clip_draw.c
source/blender/editors/space_clip/space_clip.c
source/blender/editors/space_image/image_ops.c
source/blender/editors/space_image/space_image.c
source/blender/editors/space_node/node_edit.c
source/blender/editors/space_sequencer/sequencer_add.c
source/blender/editors/space_view3d/view3d_buttons.c
source/blender/editors/transform/transform_conversions.c
source/blender/gpu/intern/gpu_extensions.c
source/blender/gpu/intern/gpu_shader_material.glsl
source/blender/gpu/intern/gpu_shader_material.glsl.c
source/blender/makesdna/DNA_genfile.h
source/blender/makesdna/DNA_space_types.h
source/blender/makesrna/intern/rna_ID.c
source/blender/makesrna/intern/rna_mesh.c
source/blender/makesrna/intern/rna_object_api.c
source/blender/makesrna/intern/rna_scene.c
source/blender/makesrna/intern/rna_scene_api.c
source/blender/makesrna/intern/rna_space.c
source/blender/makesrna/intern/rna_userdef.c
source/blender/makesrna/intern/rna_wm.c
source/blender/makesrna/intern/rna_wm_api.c
source/blender/modifiers/CMakeLists.txt
source/blender/python/generic/py_capi_utils.c
source/blender/python/generic/py_capi_utils.h
source/blender/python/intern/bpy_operator_wrap.c
source/blender/python/intern/bpy_rna.c
source/blender/python/mathutils/mathutils_Matrix.c
source/blender/python/mathutils/mathutils_Vector.c
source/blender/python/mathutils/mathutils_noise.c
source/blender/quicktime/apple/quicktime_import.c
source/blender/render/intern/source/shadeoutput.c
source/blender/windowmanager/intern/wm_operators.c
source/gameengine/BlenderRoutines/KX_BlenderGL.cpp
source/gameengine/GamePlayer/common/GPC_RenderTools.cpp
source/gameengine/Ketsji/KX_FontObject.cpp
source/gameengine/Ketsji/KX_PythonInit.cpp
source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
source/gameengine/VideoTexture/ImageViewport.cpp
source/tests/bl_pyapi_mathutils.py

index 47d40bb48c28d19952483fa596137bfbf288583e..e0b14b7d640fe152b65c527aaab46c67157575d8 100644 (file)
@@ -1490,10 +1490,9 @@ if(MSVC10)
 endif()
 
 if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
-       if(WITH_IK_ITASC OR WITH_MOD_FLUID)
+       if(WITH_IK_ITASC)
                message(WARNING "Using Clang as CXX compiler: disabling WITH_IK_ITASC and WITH_MOD_FLUID, these features will be missing.")
                set(WITH_IK_ITASC OFF)
-               set(WITH_MOD_FLUID OFF)
        endif()
 endif()
 
index 478f0c35a1c826b93293293841a98d6666d6b391..367819ecccbfeb2e4e277e7053e9c31f2206774a 100644 (file)
@@ -169,6 +169,7 @@ help:
        @echo "  * check_cppcheck  - run blender source through cppcheck (C & C++)"
        @echo "  * check_splint    - run blenders source through splint (C only)"
        @echo "  * check_sparse    - run blenders source through sparse (C only)"
+       @echo "  * check_spelling  - check for spelling errors (Python only for now)"
        @echo ""
        @echo "Documentation Targets (not assosiated with building blender)"
        @echo "  * doc_py   - generate sphinx python api docs"
@@ -242,6 +243,9 @@ check_sparse:
        $(CMAKE_CONFIG)
        cd $(BUILD_DIR) ; python3 $(BLENDER_DIR)/build_files/cmake/cmake_static_check_sparse.py
 
+check_spelling:
+       cd $(BUILD_DIR) ; PYTHONIOENCODING=utf_8 python3 $(BLENDER_DIR)/source/tools/spell_check_source.py `find $(BLENDER_DIR)/release/scripts -name "*.py" | sort`
+
 
 # -----------------------------------------------------------------------------
 # Documentation
diff --git a/build_files/scons/config/Modules/FindPython.py b/build_files/scons/config/Modules/FindPython.py
new file mode 100644 (file)
index 0000000..969d9db
--- /dev/null
@@ -0,0 +1,32 @@
+import os
+
+def FindPython():
+    all_abi_flags = ['m', 'mu', '']
+
+    python = "/usr"
+    abi_flags = "m"  # Most common for linux distros
+    version = "3.2"
+
+    # Determine ABI flags used on this system
+    include = os.path.join(python, "include")
+    for cur_flags in all_abi_flags:
+        inc = os.path.join(include, "python" + version + cur_flags, "Python.h")
+        if os.path.exists(inc):
+            abi_flags = cur_flags
+            break
+
+    # Determine whether python is in /usr/lib or /usr/lib64
+    lib32 = os.path.join(python, "lib", "python" + version, "sysconfig.py")
+    lib64 = os.path.join(python, "lib64", "python" + version, "sysconfig.py")
+    if os.path.exists(lib32):
+        libpath = "${BF_PYTHON}/lib"
+    elif os.path.exists(lib64):
+        libpath = "${BF_PYTHON}/lib64"
+    else:
+        # roll back to default value
+        libpath = "${BF_PYTHON}/lib"
+
+    return {'PYTHON': python,
+            "VERSION": version,
+            'LIBPATH': libpath,
+            'ABI_FLAGS': abi_flags}
diff --git a/build_files/scons/config/Modules/__init__.py b/build_files/scons/config/Modules/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
index fdef85655ec8a4572c2113ee515a3d579f41378d..63022bb11173a50ab3491e2b276b9c80125d0acf 100644 (file)
@@ -1,6 +1,8 @@
 # find library directory
 import platform
 import os
+from Modules.FindPython import FindPython
+
 bitness = platform.architecture()[0]
 if bitness == '64bit':
     LCGDIR = '../lib/linux64'
@@ -8,10 +10,12 @@ else:
     LCGDIR = '../lib/linux'
 LIBDIR = "#${LCGDIR}"
 
-BF_PYTHON_ABI_FLAGS = 'm'  # Most common for linux distros
-BF_PYTHON = '/usr'
-BF_PYTHON_LIBPATH = '${BF_PYTHON}/lib'
-BF_PYTHON_VERSION = '3.2'
+py = FindPython()
+
+BF_PYTHON_ABI_FLAGS = py['ABI_FLAGS']
+BF_PYTHON = py['PYTHON']
+BF_PYTHON_LIBPATH = py['LIBPATH']
+BF_PYTHON_VERSION = py['VERSION']
 WITH_BF_STATICPYTHON = False
 BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}${BF_PYTHON_ABI_FLAGS}'
 BF_PYTHON_BINARY = '${BF_PYTHON}/bin/python${BF_PYTHON_VERSION}'
index c2e6a203d713e9a2f82f083f6866848dba5095cf..9e67ccca62e971d831c7763955f563e1f0e379dc 100644 (file)
@@ -437,8 +437,9 @@ def set_quiet_output(env):
     static_ob, shared_ob = SCons.Tool.createObjBuilders(env)
     static_ob.add_action('.c', mycaction)
     static_ob.add_action('.cpp', mycppaction)
+    static_ob.add_action('.cc', mycppaction)
     shared_ob.add_action('.c', myshcaction)
-    shared_ob.add_action('.cpp', myshcppaction)
+    shared_ob.add_action('.cc', myshcppaction)
 
     static_lib = SCons.Builder.Builder(action = mylibaction,
                                        emitter = '$LIBEMITTER',
@@ -648,8 +649,11 @@ def UnixPyBundle(target=None, source=None, env=None):
 
     dir = os.path.join(env['BF_INSTALLDIR'], VERSION)
 
+    lib = env['BF_PYTHON_LIBPATH'].split(os.sep)[-1]
+    target_lib = "lib64" if lib == "lib64" else "lib"
+
     py_src =    env.subst( env['BF_PYTHON_LIBPATH'] + '/python'+env['BF_PYTHON_VERSION'] )
-    py_target =    env.subst( dir + '/python/lib/python'+env['BF_PYTHON_VERSION'] )
+    py_target =    env.subst( dir + '/python/' + target_lib + '/python'+env['BF_PYTHON_VERSION'] )
     
     # This is a bit weak, but dont install if its been installed before, makes rebuilds quite slow.
     if os.path.exists(py_target):
index 2400e0476b3b85aad2f1b9939d864076f7da0cd3..68dc30b61438a2f4208564f69a0a51b84b884cf8 100644 (file)
@@ -1,13 +1,14 @@
+*******************
 GPU functions (gpu)
-===================
+*******************
 
 .. module:: gpu
 
 This module provides access to materials GLSL shaders.
 
-*****
+
 Intro
-*****
+=====
 
 Module to provide functions concerning the GPU implementation in Blender, in particular
 the GLSL shaders that blender generates automatically to render materials in the 3D view
@@ -15,16 +16,15 @@ and in the game engine.
 
 .. warning::
 
-    The API provided by this module should be consider unstable. The data exposed by the API 
-    are are closely related to Blender's internal GLSL code and may change if the GLSL code 
-    is modified (e.g. new uniform type). 
+   The API provided by this module should be consider unstable. The data exposed by the API
+   are are closely related to Blender's internal GLSL code and may change if the GLSL code
+   is modified (e.g. new uniform type).
 
 
-*********
 Constants
-*********
+=========
+
 
---------------
 GLSL data type
 --------------
 
@@ -59,15 +59,15 @@ See export_shader_
 .. data:: GPU_DATA_3F
 
    three floats
-   
+
    :value: 4
-   
+
 .. data:: GPU_DATA_4F
 
    four floats
-   
+
    :value: 5
-   
+
 .. data:: GPU_DATA_9F
 
    matrix 3x3 in column-major order
@@ -86,448 +86,450 @@ See export_shader_
 
    :value: 8
 
------------------
+
 GLSL uniform type
 -----------------
 
 .. _uniform-type:
 
-Constants that specify the type of uniform used in a GLSL shader. 
+Constants that specify the type of uniform used in a GLSL shader.
 The uniform type determines the data type, origin and method
-of calculation used by Blender to compute the uniform value. 
+of calculation used by Blender to compute the uniform value.
 
 The calculation of some of the uniforms is based on matrices available in the scene:
 
-    .. _mat4_cam_to_world:
-    .. _mat4_world_to_cam:
-
-    *mat4_cam_to_world*
-      Model matrix of the camera. OpenGL 4x4 matrix that converts 
-      camera local coordinates to world coordinates. In blender this is obtained from the
-      'matrix_world' attribute of the camera object.
-
-      Some uniform will need the *mat4_world_to_cam*
-      matrix computed as the inverse of this matrix.
-
-    .. _mat4_object_to_world:
-    .. _mat4_world_to_object:
-
-    *mat4_object_to_world*
-      Model matrix of the object that is being rendered. OpenGL 4x4 matric that converts
-      object local coordinates to world coordinates. In blender this is obtained from the
-      'matrix_world' attribute of the object.
-  
-      Some uniform will need the *mat4_world_to_object* matrix, computed as the inverse of this matrix.
-  
-    .. _mat4_lamp_to_world:
-    .. _mat4_world_to_lamp:
-
-    *mat4_lamp_to_world*
-      Model matrix of the lamp lighting the object. OpenGL 4x4 matrix that converts lamp
-      local coordinates to world coordinates. In blender this is obtained from the
-      'matrix_world' attribute of the lamp object.
-      
-      Some uniform will need the *mat4_world_to_lamp* matrix
-      computed as the inverse of this matrix.
+   .. _mat4_cam_to_world:
+   .. _mat4_world_to_cam:
+
+   *mat4_cam_to_world*
+     Model matrix of the camera. OpenGL 4x4 matrix that converts
+     camera local coordinates to world coordinates. In blender this is obtained from the
+     'matrix_world' attribute of the camera object.
+
+     Some uniform will need the *mat4_world_to_cam*
+     matrix computed as the inverse of this matrix.
+
+   .. _mat4_object_to_world:
+   .. _mat4_world_to_object:
+
+   *mat4_object_to_world*
+     Model matrix of the object that is being rendered. OpenGL 4x4 matric that converts
+     object local coordinates to world coordinates. In blender this is obtained from the
+     'matrix_world' attribute of the object.
+
+     Some uniform will need the *mat4_world_to_object* matrix, computed as the inverse of this matrix.
+
+   .. _mat4_lamp_to_world:
+   .. _mat4_world_to_lamp:
+
+   *mat4_lamp_to_world*
+     Model matrix of the lamp lighting the object. OpenGL 4x4 matrix that converts lamp
+     local coordinates to world coordinates. In blender this is obtained from the
+     'matrix_world' attribute of the lamp object.
+
+     Some uniform will need the *mat4_world_to_lamp* matrix
+     computed as the inverse of this matrix.
 
 .. data:: GPU_DYNAMIC_OBJECT_VIEWMAT
 
-    The uniform is a 4x4 GL matrix that converts world coordinates to 
-    camera coordinates (see mat4_world_to_cam_). Can be set once per frame.
-    There is at most one uniform of that type per shader.
+   The uniform is a 4x4 GL matrix that converts world coordinates to
+   camera coordinates (see mat4_world_to_cam_). Can be set once per frame.
+   There is at most one uniform of that type per shader.
 
-    :value: 1
+   :value: 1
 
 .. data:: GPU_DYNAMIC_OBJECT_MAT
 
-    The uniform is a 4x4 GL matrix that converts object coordinates 
-    to world coordinates (see mat4_object_to_world_). Must be set before drawing the object.
-    There is at most one uniform of that type per shader.
+   The uniform is a 4x4 GL matrix that converts object coordinates
+   to world coordinates (see mat4_object_to_world_). Must be set before drawing the object.
+   There is at most one uniform of that type per shader.
 
-    :value: 2
+   :value: 2
 
 .. data:: GPU_DYNAMIC_OBJECT_VIEWIMAT
 
-    The uniform is a 4x4 GL matrix that converts coordinates
-    in camera space to world coordinates (see mat4_cam_to_world_).
-    Can be set once per frame. 
-    There is at most one uniform of that type per shader.
+   The uniform is a 4x4 GL matrix that converts coordinates
+   in camera space to world coordinates (see mat4_cam_to_world_).
+   Can be set once per frame.
+   There is at most one uniform of that type per shader.
 
-    :value: 3
+   :value: 3
 
 .. data:: GPU_DYNAMIC_OBJECT_IMAT
 
-    The uniform is a 4x4 GL matrix that converts world coodinates
-    to object coordinates (see mat4_world_to_object_).
-    Must be set before drawing the object.
-    There is at most one uniform of that type per shader.
-   
-    :value: 4
-   
+   The uniform is a 4x4 GL matrix that converts world coodinates
+   to object coordinates (see mat4_world_to_object_).
+   Must be set before drawing the object.
+   There is at most one uniform of that type per shader.
+
+   :value: 4
+
 .. data:: GPU_DYNAMIC_OBJECT_COLOR
 
-    The uniform is a vector of 4 float representing a RGB color + alpha defined at object level.
-    Each values between 0.0 and 1.0. In blender it corresponds to the 'color' attribute of the object.
-    Must be set before drawing the object.
-    There is at most one uniform of that type per shader.
-   
-    :value: 5
-   
+   The uniform is a vector of 4 float representing a RGB color + alpha defined at object level.
+   Each values between 0.0 and 1.0. In blender it corresponds to the 'color' attribute of the object.
+   Must be set before drawing the object.
+   There is at most one uniform of that type per shader.
+
+   :value: 5
+
 .. data:: GPU_DYNAMIC_LAMP_DYNVEC
 
-    The uniform is a vector of 3 float representing the direction of light in camera space.
-    In Blender, this is computed by 
+   The uniform is a vector of 3 float representing the direction of light in camera space.
+   In Blender, this is computed by
+
+   mat4_world_to_cam_ * (-vec3_lamp_Z_axis)
 
-    mat4_world_to_cam_ * (-vec3_lamp_Z_axis) 
+   as the lamp Z axis points to the opposite direction of light.
+   The norm of the vector should be unity. Can be set once per frame.
+   There is one uniform of that type per lamp lighting the material.
 
-    as the lamp Z axis points to the opposite direction of light.
-    The norm of the vector should be unity. Can be set once per frame.
-    There is one uniform of that type per lamp lighting the material.
+   :value: 6
 
-    :value: 6
-   
 .. data:: GPU_DYNAMIC_LAMP_DYNCO
 
-    The uniform is a vector of 3 float representing the position of the light in camera space.
-    Computed as 
-    
-    mat4_world_to_cam_ * vec3_lamp_pos
+   The uniform is a vector of 3 float representing the position of the light in camera space.
+   Computed as
+
+   mat4_world_to_cam_ * vec3_lamp_pos
+
+   Can be set once per frame.
+   There is one uniform of that type per lamp lighting the material.
+
+   :value: 7
 
-    Can be set once per frame.
-    There is one uniform of that type per lamp lighting the material.
-   
-    :value: 7
-   
 .. data:: GPU_DYNAMIC_LAMP_DYNIMAT
 
-    The uniform is a 4x4 GL matrix that converts vector in camera space to lamp space.
-    Computed as 
+   The uniform is a 4x4 GL matrix that converts vector in camera space to lamp space.
+   Computed as
 
-    mat4_world_to_lamp_ * mat4_cam_to_world_
+   mat4_world_to_lamp_ * mat4_cam_to_world_
 
-    Can be set once per frame.
-    There is one uniform of that type per lamp lighting the material.
+   Can be set once per frame.
+   There is one uniform of that type per lamp lighting the material.
 
-    :value: 8
+   :value: 8
 
 .. data:: GPU_DYNAMIC_LAMP_DYNPERSMAT
 
-    The uniform is a 4x4 GL matrix that converts a vector in camera space to shadow buffer depth space.
-    Computed as 
+   The uniform is a 4x4 GL matrix that converts a vector in camera space to shadow buffer depth space.
+   Computed as
 
-    mat4_perspective_to_depth_ * mat4_lamp_to_perspective_ * mat4_world_to_lamp_ * mat4_cam_to_world_.
+   mat4_perspective_to_depth_ * mat4_lamp_to_perspective_ * mat4_world_to_lamp_ * mat4_cam_to_world_.
 
-    .. _mat4_perspective_to_depth:
+   .. _mat4_perspective_to_depth:
 
-    *mat4_perspective_to_depth* is a fixed matrix defined as follow::
+   *mat4_perspective_to_depth* is a fixed matrix defined as follow::
 
-        0.5 0.0 0.0 0.5
-        0.0 0.5 0.0 0.5
-        0.0 0.0 0.5 0.5
-        0.0 0.0 0.0 1.0
+      0.5 0.0 0.0 0.5
+      0.0 0.5 0.0 0.5
+      0.0 0.0 0.5 0.5
+      0.0 0.0 0.0 1.0
 
-    This uniform can be set once per frame. There is one uniform of that type per lamp casting shadow in the scene.
+   This uniform can be set once per frame. There is one uniform of that type per lamp casting shadow in the scene.
 
-    :value: 9
+   :value: 9
 
 .. data:: GPU_DYNAMIC_LAMP_DYNENERGY
 
-    The uniform is a single float representing the lamp energy. In blender it corresponds
-    to the 'energy' attribute of the lamp data block.
-    There is one uniform of that type per lamp lighting the material.
+   The uniform is a single float representing the lamp energy. In blender it corresponds
+   to the 'energy' attribute of the lamp data block.
+   There is one uniform of that type per lamp lighting the material.
 
-    :value: 10
+   :value: 10
 
 .. data:: GPU_DYNAMIC_LAMP_DYNCOL
 
-    The uniform is a vector of 3 float representing the lamp color. 
-    Color elements are between 0.0 and 1.0. In blender it corresponds
-    to the 'color' attribute of the lamp data block.
-    There is one uniform of that type per lamp lighting the material.
+   The uniform is a vector of 3 float representing the lamp color.
+   Color elements are between 0.0 and 1.0. In blender it corresponds
+   to the 'color' attribute of the lamp data block.
+   There is one uniform of that type per lamp lighting the material.
 
-    :value: 11
+   :value: 11
 
 .. data:: GPU_DYNAMIC_SAMPLER_2DBUFFER
 
-    The uniform is an integer representing an internal texture used for certain effect
-    (color band, etc). 
-       
-    :value: 12
+   The uniform is an integer representing an internal texture used for certain effect
+   (color band, etc).
+
+   :value: 12
 
 .. data:: GPU_DYNAMIC_SAMPLER_2DIMAGE
 
-    The uniform is an integer representing a texture loaded from an image file. 
+   The uniform is an integer representing a texture loaded from an image file.
 
-    :value: 13
+   :value: 13
 
 .. data:: GPU_DYNAMIC_SAMPLER_2DSHADOW
 
-    The uniform is an integer representing a shadow buffer corresponding to a lamp
-    casting shadow.
+   The uniform is an integer representing a shadow buffer corresponding to a lamp
+   casting shadow.
+
+   :value: 14
 
-    :value: 14
 
--------------------
 GLSL attribute type
 -------------------
 
 .. _attribute-type:
 
 Type of the vertex attribute used in the GLSL shader. Determines the mesh custom data
-layer that contains the vertex attribute. 
+layer that contains the vertex attribute.
 
 .. data:: CD_MTFACE
 
-    Vertex attribute is a UV Map. Data type is vector of 2 float.
+   Vertex attribute is a UV Map. Data type is vector of 2 float.
 
-    There can be more than one attribute of that type, they are differenciated by name.
-    In blender, you can retrieve the attribute data with:
+   There can be more than one attribute of that type, they are differenciated by name.
+   In blender, you can retrieve the attribute data with:
 
-    .. code-block:: python
+   .. code-block:: python
 
-        mesh.uv_textures[attribute['name']]
+      mesh.uv_textures[attribute["name"]]
 
-    :value: 5
+   :value: 5
 
 .. data:: CD_MCOL
 
-    Vertex attribute is color layer. Data type is vector 4 unsigned byte (RGBA).
+   Vertex attribute is color layer. Data type is vector 4 unsigned byte (RGBA).
 
-    There can be more than one attribute of that type, they are differenciated by name.
-    In blender you can retrieve the attribute data with:
+   There can be more than one attribute of that type, they are differenciated by name.
+   In blender you can retrieve the attribute data with:
 
-    .. code-block:: python
+   .. code-block:: python
 
-        mesh.vertex_colors[attribute['name']]
+      mesh.vertex_colors[attribute["name"]]
 
-    :value: 6
+   :value: 6
 
 .. data:: CD_ORCO
 
-    Vertex attribute is original coordinates. Data type is vector 3 float.
+   Vertex attribute is original coordinates. Data type is vector 3 float.
+
+   There can be only 1 attribute of that type per shader.
+   In blender you can retrieve the attribute data with:
 
-    There can be only 1 attribute of that type per shader.     
-    In blender you can retrieve the attribute data with:
-  
-    .. code-block:: python
+   .. code-block:: python
 
-        mesh.vertices
+      mesh.vertices
 
-    :value: 14
+   :value: 14
 
 .. data:: CD_TANGENT
 
-    Vertex attribute is the tangent vector. Data type is vector 4 float.
+   Vertex attribute is the tangent vector. Data type is vector 4 float.
 
-    There can be only 1 attribute of that type per shader.
-    There is currently no way to retrieve this attribute data via the RNA API but a standalone 
-    C function to compute the tangent layer from the other layers can be obtained from
-    blender.org.
+   There can be only 1 attribute of that type per shader.
+   There is currently no way to retrieve this attribute data via the RNA API but a standalone
+   C function to compute the tangent layer from the other layers can be obtained from
+   blender.org.
+
+   :value: 18
 
-    :value: 18
 
-*********
 Functions
-*********
+=========
 
 .. _export_shader:
 
 .. function:: export_shader(scene,material)
 
-    Extracts the GLSL shader producing the visual effect of material in scene for the purpose of 
-    reusing the shader in an external engine. This function is meant to be used in material exporter 
-    so that the GLSL shader can be exported entirely. The return value is a dictionary containing the
-    shader source code and all associated data. 
+   Extracts the GLSL shader producing the visual effect of material in scene for the purpose of
+   reusing the shader in an external engine. This function is meant to be used in material exporter
+   so that the GLSL shader can be exported entirely. The return value is a dictionary containing the
+   shader source code and all associated data.
 
-    :arg scene: the scene in which the material in rendered.
-    :type scene: :class:`bpy.types.Scene`
-    :arg material: the material that you want to export the GLSL shader
-    :type material: :class:`bpy.types.Material`
-    :return: the shader source code and all associated data in a dictionary
-    :rtype: dictionary
+   :arg scene: the scene in which the material in rendered.
+   :type scene: :class:`bpy.types.Scene`
+   :arg material: the material that you want to export the GLSL shader
+   :type material: :class:`bpy.types.Material`
+   :return: the shader source code and all associated data in a dictionary
+   :rtype: dictionary
 
-    The dictionary contains the following elements:
+   The dictionary contains the following elements:
 
-    * ['fragment'] : string
-        fragment shader source code.
-    
-    * ['vertex'] : string
-        vertex shader source code.
+   * ["fragment"] : string
+      fragment shader source code.
 
-    * ['uniforms'] : sequence
-        list of uniforms used in fragment shader, can be empty list. Each element of the
-        sequence is a dictionary with the following elements:
+   * ["vertex"] : string
+      vertex shader source code.
 
-        * ['varname'] : string
-            name of the uniform in the fragment shader. Always of the form 'unf<number>'.
+   * ["uniforms"] : sequence
+      list of uniforms used in fragment shader, can be empty list. Each element of the
+      sequence is a dictionary with the following elements:
 
-        * ['datatype'] : integer
-            data type of the uniform variable. Can be one of the following:
+      * ["varname"] : string
+         name of the uniform in the fragment shader. Always of the form 'unf<number>'.
 
-            * :data:`gpu.GPU_DATA_1I` : use glUniform1i
-            * :data:`gpu.GPU_DATA_1F` : use glUniform1fv
-            * :data:`gpu.GPU_DATA_2F` : use glUniform2fv
-            * :data:`gpu.GPU_DATA_3F` : use glUniform3fv
-            * :data:`gpu.GPU_DATA_4F` : use glUniform4fv
-            * :data:`gpu.GPU_DATA_9F` : use glUniformMatrix3fv
-            * :data:`gpu.GPU_DATA_16F` : use glUniformMatrix4fv
+      * ["datatype"] : integer
+         data type of the uniform variable. Can be one of the following:
 
-        * ['type'] : integer
-            type of uniform, determines the origin and method of calculation. See uniform-type_.
-            Depending on the type, more elements will be be present.
+         * :data:`gpu.GPU_DATA_1I` : use glUniform1i
+         * :data:`gpu.GPU_DATA_1F` : use glUniform1fv
+         * :data:`gpu.GPU_DATA_2F` : use glUniform2fv
+         * :data:`gpu.GPU_DATA_3F` : use glUniform3fv
+         * :data:`gpu.GPU_DATA_4F` : use glUniform4fv
+         * :data:`gpu.GPU_DATA_9F` : use glUniformMatrix3fv
+         * :data:`gpu.GPU_DATA_16F` : use glUniformMatrix4fv
 
-        * ['lamp'] : :class:`bpy.types.Object`
-            Reference to the lamp object from which the uniforms value are extracted. Set for the following uniforms types:
+      * ["type"] : integer
+         type of uniform, determines the origin and method of calculation. See uniform-type_.
+         Depending on the type, more elements will be be present.
 
-            .. hlist::
-               :columns: 3
+      * ["lamp"] : :class:`bpy.types.Object`
+         Reference to the lamp object from which the uniforms value are extracted. Set for the following uniforms types:
 
-               * :data:`gpu.GPU_DYNAMIC_LAMP_DYNVEC`
-               * :data:`gpu.GPU_DYNAMIC_LAMP_DYNCO`
-               * :data:`gpu.GPU_DYNAMIC_LAMP_DYNIMAT`
-               * :data:`gpu.GPU_DYNAMIC_LAMP_DYNPERSMAT`
-               * :data:`gpu.GPU_DYNAMIC_LAMP_DYNENERGY`
-               * :data:`gpu.GPU_DYNAMIC_LAMP_DYNCOL`
-               * :data:`gpu.GPU_DYNAMIC_SAMPLER_2DSHADOW`
+         .. hlist::
+            :columns: 3
 
-            Notes:
+            * :data:`gpu.GPU_DYNAMIC_LAMP_DYNVEC`
+            * :data:`gpu.GPU_DYNAMIC_LAMP_DYNCO`
+            * :data:`gpu.GPU_DYNAMIC_LAMP_DYNIMAT`
+            * :data:`gpu.GPU_DYNAMIC_LAMP_DYNPERSMAT`
+            * :data:`gpu.GPU_DYNAMIC_LAMP_DYNENERGY`
+            * :data:`gpu.GPU_DYNAMIC_LAMP_DYNCOL`
+            * :data:`gpu.GPU_DYNAMIC_SAMPLER_2DSHADOW`
 
-            * The uniforms :data:`gpu.GPU_DYNAMIC_LAMP_DYNVEC`, :data:`gpu.GPU_DYNAMIC_LAMP_DYNCO`, :data:`gpu.GPU_DYNAMIC_LAMP_DYNIMAT` and :data:`gpu.GPU_DYNAMIC_LAMP_DYNPERSMAT`
-              refer to the lamp object position and orientation, both of can be derived from the object world matrix:
+         Notes:
 
-              .. code-block:: python
+         * The uniforms :data:`gpu.GPU_DYNAMIC_LAMP_DYNVEC`, :data:`gpu.GPU_DYNAMIC_LAMP_DYNCO`, :data:`gpu.GPU_DYNAMIC_LAMP_DYNIMAT` and :data:`gpu.GPU_DYNAMIC_LAMP_DYNPERSMAT`
+            refer to the lamp object position and orientation, both of can be derived from the object world matrix:
 
-                obmat = uniform['lamp'].matrix_world
+            .. code-block:: python
 
-              where obmat is the mat4_lamp_to_world_ matrix of the lamp as a 2 dimensional array,
-              the lamp world location location is in obmat[3].
+               obmat = uniform["lamp"].matrix_world
 
-            * The uniform types :data:`gpu.GPU_DYNAMIC_LAMP_DYNENERGY` and :data:`gpu.GPU_DYNAMIC_LAMP_DYNCOL` refer to the lamp data bloc that you get from:
+            where obmat is the mat4_lamp_to_world_ matrix of the lamp as a 2 dimensional array,
+            the lamp world location location is in obmat[3].
 
-              .. code-block:: python
+         * The uniform types :data:`gpu.GPU_DYNAMIC_LAMP_DYNENERGY` and :data:`gpu.GPU_DYNAMIC_LAMP_DYNCOL` refer to the lamp data bloc that you get from:
 
-                la = uniform['lamp'].data
-          
-              from which you get la.energy and la.color
+            .. code-block:: python
 
-            * Lamp duplication is not supported: if you have duplicated lamps in your scene
-              (i.e. lamp that are instantiated by dupligroup, etc), this element will only 
-              give you a reference to the orignal lamp and you will not know which instance
-              of the lamp it is refering too. You can still handle that case in the exporter
-              by distributing the uniforms amongst the duplicated lamps.
-              
-        * ['image'] : :class:`bpy.types.Image`
-            Reference to the image databloc. Set for uniform type :data:`gpu.GPU_DYNAMIC_SAMPLER_2DIMAGE`. You can get the image data from:
+               la = uniform["lamp"].data
+
+            from which you get la.energy and la.color
+
+         * Lamp duplication is not supported: if you have duplicated lamps in your scene
+            (i.e. lamp that are instantiated by dupligroup, etc), this element will only
+            give you a reference to the orignal lamp and you will not know which instance
+            of the lamp it is refering too. You can still handle that case in the exporter
+            by distributing the uniforms amongst the duplicated lamps.
+
+      * ["image"] : :class:`bpy.types.Image`
+         Reference to the image databloc. Set for uniform type :data:`gpu.GPU_DYNAMIC_SAMPLER_2DIMAGE`. You can get the image data from:
+
+         .. code-block:: python
+
+            # full path to image file
+            uniform["image"].filepath
+            # image size as a 2-dimensional array of int
+            uniform["image"].size
+
+      * ["texnumber"] : integer
+         Channel number to which the texture is bound when drawing the object.
+         Set for uniform types :data:`gpu.GPU_DYNAMIC_SAMPLER_2DBUFFER`, :data:`gpu.GPU_DYNAMIC_SAMPLER_2DIMAGE` and :data:`gpu.GPU_DYNAMIC_SAMPLER_2DSHADOW`.
+
+         This is provided for information only: when reusing the shader outside blencer,
+         you are free to assign the textures to the channel of your choice and to pass
+         that number channel to the GPU in the uniform.
+
+      * ["texpixels"] : byte array
+         texture data for uniform type :data:`gpu.GPU_DYNAMIC_SAMPLER_2DBUFFER`. Although
+         the corresponding uniform is a 2D sampler, the texture is always a 1D texture
+         of n x 1 pixel. The texture size n is provided in ["texsize"] element.
+         These texture are only used for computer generated texture (colorband, etc).
+         The texture data is provided so that you can make a real image out of it in the
+         exporter.
+
+      * ["texsize"] : integer
+         horizontal size of texture for uniform type :data:`gpu.GPU_DYNAMIC_SAMPLER_2DBUFFER`.
+         The texture data is in ["texpixels"].
+
+   * ["attributes"] : sequence
+      list of attributes used in vertex shader, can be empty. Blender doesn't use
+      standard attributes except for vertex position and normal. All other vertex
+      attributes must be passed using the generic glVertexAttrib functions.
+      The attribute data can be found in the derived mesh custom data using RNA.
+      Each element of the sequence is a dictionary containing the following elements:
+
+      * ["varname"] : string
+         name of the uniform in the vertex shader. Always of the form 'att<number>'.
+
+      * ["datatype"] : integer
+         data type of vertex attribute, can be one of the following:
+
+         * :data:`gpu.GPU_DATA_2F` : use glVertexAttrib2fv
+         * :data:`gpu.GPU_DATA_3F` : use glVertexAttrib3fv
+         * :data:`gpu.GPU_DATA_4F` : use glVertexAttrib4fv
+         * :data:`gpu.GPU_DATA_4UB` : use glVertexAttrib4ubv
+
+      * ["number"] : integer
+         generic attribute number. This is provided for information only. Blender
+         doesn't use glBindAttribLocation to place generic attributes at specific location,
+         it lets the shader compiler place the attributes automatically and query the
+         placement with glGetAttribLocation. The result of this placement is returned in
+         this element.
+
+         When using this shader in a render engine, you should either use
+         glBindAttribLocation to force the attribute at this location or use
+         glGetAttribLocation to get the placement chosen by the compiler of your GPU.
+
+      * ["type"] : integer
+         type of the mesh custom data from which the vertex attribute is loaded.
+         See attribute-type_.
+
+      * ["name"] : string or integer
+         custom data layer name, used for attribute type :data:`gpu.CD_MTFACE` and :data:`gpu.CD_MCOL`.
+
+   Example:
+
+   .. code-block:: python
+
+      import gpu
+      # get GLSL shader of material Mat.001 in scene Scene.001
+      scene = bpy.data.scenes["Scene.001"]
+      material = bpy.data.materials["Mat.001"]
+      shader = gpu.export_shader(scene,material)
+      # scan the uniform list and find the images used in the shader
+      for uniform in shader["uniforms"]:
+          if uniform["type"] == gpu.GPU_DYNAMIC_SAMPLER_2DIMAGE:
+              print("uniform {0} is using image {1}".format(uniform["varname"], uniform["image"].filepath))
+      # scan the attribute list and find the UV Map used in the shader
+      for attribute in shader["attributes"]:
+          if attribute["type"] == gpu.CD_MTFACE:
+              print("attribute {0} is using UV Map {1}".format(attribute["varname"], attribute["name"]))
 
-            .. code-block:: python
 
-               # full path to image file
-               uniform['image'].filepath
-               # image size as a 2-dimensional array of int
-               uniform['image'].size
-
-        * ['texnumber'] : integer
-            Channel number to which the texture is bound when drawing the object.
-            Set for uniform types :data:`gpu.GPU_DYNAMIC_SAMPLER_2DBUFFER`, :data:`gpu.GPU_DYNAMIC_SAMPLER_2DIMAGE` and :data:`gpu.GPU_DYNAMIC_SAMPLER_2DSHADOW`.
-
-            This is provided for information only: when reusing the shader outside blencer, 
-            you are free to assign the textures to the channel of your choice and to pass
-            that number channel to the GPU in the uniform.
-
-        * ['texpixels'] : byte array
-            texture data for uniform type :data:`gpu.GPU_DYNAMIC_SAMPLER_2DBUFFER`. Although
-            the corresponding uniform is a 2D sampler, the texture is always a 1D texture
-            of n x 1 pixel. The texture size n is provided in ['texsize'] element. 
-            These texture are only used for computer generated texture (colorband, etc).
-            The texture data is provided so that you can make a real image out of it in the
-            exporter.
-               
-        * ['texsize'] : integer
-            horizontal size of texture for uniform type :data:`gpu.GPU_DYNAMIC_SAMPLER_2DBUFFER`. 
-            The texture data is in ['texpixels'].
-
-    * ['attributes'] : sequence
-        list of attributes used in vertex shader, can be empty. Blender doesn't use
-        standard attributes except for vertex position and normal. All other vertex
-        attributes must be passed using the generic glVertexAttrib functions.
-        The attribute data can be found in the derived mesh custom data using RNA.
-        Each element of the sequence is a dictionary containing the following elements:
-
-        * ['varname'] : string
-            name of the uniform in the vertex shader. Always of the form 'att<number>'.
-
-        * ['datatype'] : integer
-            data type of vertex attribute, can be one of the following:
-
-            * :data:`gpu.GPU_DATA_2F` : use glVertexAttrib2fv
-            * :data:`gpu.GPU_DATA_3F` : use glVertexAttrib3fv
-            * :data:`gpu.GPU_DATA_4F` : use glVertexAttrib4fv
-            * :data:`gpu.GPU_DATA_4UB` : use glVertexAttrib4ubv
-
-        * ['number'] : integer
-            generic attribute number. This is provided for information only. Blender 
-            doesn't use glBindAttribLocation to place generic attributes at specific location,
-            it lets the shader compiler place the attributes automatically and query the 
-            placement with glGetAttribLocation. The result of this placement is returned in 
-            this element. 
-
-            When using this shader in a render engine, you should either use
-            glBindAttribLocation to force the attribute at this location or use 
-            glGetAttribLocation to get the placement chosen by the compiler of your GPU.
-
-        * ['type'] : integer
-            type of the mesh custom data from which the vertex attribute is loaded. 
-            See attribute-type_.
-
-        * ['name'] : string or integer
-            custom data layer name, used for attribute type :data:`gpu.CD_MTFACE` and :data:`gpu.CD_MCOL`.
-
-    Example:
-
-    .. code-block:: python
-
-        import gpu
-        # get GLSL shader of material Mat.001 in scene Scene.001
-        scene = bpy.data.scenes['Scene.001']
-        material = bpy.data.materials['Mat.001']
-        shader = gpu.export_shader(scene,material)
-        # scan the uniform list and find the images used in the shader
-        for uniform in shader['uniforms']:
-            if uniform['type'] == gpu.GPU_DYNAMIC_SAMPLER_2DIMAGE:
-                print("uniform {0} is using image {1}".format(uniform['varname'], uniform['image'].filepath))
-        # scan the attribute list and find the UV Map used in the shader
-        for attribute in shader['attributes']:
-            if attribute['type'] == gpu.CD_MTFACE:
-                print("attribute {0} is using UV Map {1}".format(attribute['varname'], attribute['name']))
-
-*****
 Notes
-*****
+=====
 
 .. _mat4_lamp_to_perspective:
 
 1. Calculation of the *mat4_lamp_to_perspective* matrix for a spot lamp.
 
-   The following pseudo code shows how the *mat4_lamp_to_perspective* matrix is computed 
+   The following pseudo code shows how the *mat4_lamp_to_perspective* matrix is computed
    in blender for uniforms of :data:`gpu.GPU_DYNAMIC_LAMP_DYNPERSMAT` type::
 
-     #Get the lamp datablock with:
-     lamp=bpy.data.objects[uniform['lamp']].data
+   .. code-block:: python
+
+      #Get the lamp datablock with:
+      lamp = bpy.data.objects[uniform["lamp"]].data
 
-     #Compute the projection matrix:
-     #  You will need these lamp attributes:
-     #  lamp.clipsta : near clip plane in world unit
-     #  lamp.clipend : far clip plane in world unit
-     #  lamp.spotsize : angle in degree of the spot light
+      # Compute the projection matrix:
+      #  You will need these lamp attributes:
+      #  lamp.clipsta : near clip plane in world unit
+      #  lamp.clipend : far clip plane in world unit
+      #  lamp.spotsize : angle in degree of the spot light
 
-     #The size of the projection plane is computed with the usual formula:
-     wsize = lamp.clista * tan(lamp.spotsize/2)
+      # The size of the projection plane is computed with the usual formula:
+      wsize = lamp.clista * tan(lamp.spotsize/2)
 
-     #And the projection matrix:
-     mat4_lamp_to_perspective = glFrustum(-wsize,wsize,-wsize,wsize,lamp.clista,lamp.clipend)
+      #And the projection matrix:
+      mat4_lamp_to_perspective = glFrustum(-wsize, wsize, -wsize, wsize, lamp.clista, lamp.clipend)
 
 2. Creation of the shadow map for a spot lamp.
 
    The shadow map is the depth buffer of a render performed by placing the camera at the
-   spot light position. The size of the shadow map is given by the attribute lamp.bufsize : 
+   spot light position. The size of the shadow map is given by the attribute lamp.bufsize :
    shadow map size in pixel, same size in both dimensions.
index 064067867aeba992428ee71f24f1ea0c1bc8f3c2..e5a78ecb02c1f55c1fdfcecd56e53ab7571d62bf 100644 (file)
@@ -1143,7 +1143,9 @@ def rna2sphinx(BASEPATH):
     fw("\n")
     fw("Welcome, this document is an API reference for Blender %s. built %s.\n" % (version_string, bpy.app.build_date))
     fw("\n")
-    fw("`A PDF version of this document is also available <blender_python_reference_%s.pdf>`_\n" % version_string_pdf)
+
+    # fw("`A PDF version of this document is also available <blender_python_reference_%s.pdf>`_\n" % version_string_pdf)
+    fw("`A compressed ZIP file of this site is available <blender_python_reference_%s.zip>`_\n" % version_string_pdf)
 
     fw("\n")
 
index fad9bfbbf902a5627c4feccf5815fde2be8135c0..1698e9892bc79df52199369441a05f655927d10b 100755 (executable)
@@ -11,7 +11,8 @@
 DO_UPLOAD=true
 DO_EXE_BLENDER=true
 DO_OUT_HTML=true
-DO_OUT_PDF=true
+DO_OUT_HTML_ZIP=true
+DO_OUT_PDF=false
 
 
 BLENDER="./blender.bin"
@@ -61,6 +62,17 @@ if $DO_OUT_HTML ; then
        # annoying bug in sphinx makes it very slow unless we do this. should report.
        cd $SPHINXBASE
        sphinx-build -n -b html sphinx-in sphinx-out
+
+       # ------------------------------------------------------------------------
+       # ZIP the HTML dir for upload
+
+       if $DO_OUT_HTML_ZIP ; then
+               # lame, temp rename dir
+               mv sphinx-out blender_python_reference_$BLENDER_VERSION
+               zip -r -9 blender_python_reference_$BLENDER_VERSION.zip blender_python_reference_$BLENDER_VERSION
+               mv blender_python_reference_$BLENDER_VERSION sphinx-out
+       fi
+
        cd -
 fi
 
@@ -74,6 +86,7 @@ if $DO_OUT_PDF ; then
        mv $SPHINXBASE/sphinx-out/contents.pdf $SPHINXBASE/sphinx-out/blender_python_reference_$BLENDER_VERSION.pdf
 fi
 
+
 # ----------------------------------------------------------------------------
 # Upload to blender servers, comment this section for testing
 
@@ -89,8 +102,14 @@ if $DO_UPLOAD ; then
        # better redirect
        ssh $SSH_USER@emo.blender.org 'echo "<html><head><title>Redirecting...</title><meta http-equiv=\"REFRESH\" content=\"0;url=../blender_python_api_'$BLENDER_VERSION'/\"></head><body>Redirecting...</body></html>" > '$SSH_UPLOAD'/250PythonDoc/index.html'
 
-       # rename so local PDF has matching name.
-       rsync --progress -avze "ssh -p 22" $SPHINXBASE/sphinx-out/blender_python_reference_$BLENDER_VERSION.pdf $SSH_HOST:$SSH_UPLOAD_FULL/blender_python_reference_$BLENDER_VERSION.pdf
+       if $DO_OUT_PDF ; then
+               # rename so local PDF has matching name.
+               rsync --progress -avze "ssh -p 22" $SPHINXBASE/sphinx-out/blender_python_reference_$BLENDER_VERSION.pdf $SSH_HOST:$SSH_UPLOAD_FULL/blender_python_reference_$BLENDER_VERSION.pdf
+       fi
+
+       if $DO_OUT_HTML_ZIP ; then
+               rsync --progress -avze "ssh -p 22" $SPHINXBASE/blender_python_reference_$BLENDER_VERSION.zip $SSH_HOST:$SSH_UPLOAD_FULL/blender_python_reference_$BLENDER_VERSION.zip
+       fi
 
 fi
 
index 6215673eb44b39af85d50484243410412382a1f1..8442e5d0c712939164db0f3a0cad74e69db4d871 100644 (file)
@@ -12,7 +12,7 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 # The Original Code is Copyright (C) 2006, Blender Foundation
 # All rights reserved.
index 753e28091d33ea44556648bac73938737de5e735..524b884450ce391ba00b64aa10797e94f12acfd9 100644 (file)
@@ -12,7 +12,7 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 # The Original Code is Copyright (C) 2008 by The Blender Foundation
 # All rights reserved.
index 58841d606cff24ad08a8f3a66e78da6b29f0131c..51b295e897f9dba9cbae43b35c5614f8a1a4af2f 100644 (file)
@@ -12,7 +12,7 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 # The Original Code is Copyright (C) 2006, Blender Foundation
 # All rights reserved.
index a90acb99f04def6d1549bfd8de8f97f2ac89716b..0d19fd193e735393347cfe4b0a562c0399af8c80 100644 (file)
@@ -2780,21 +2780,23 @@ void btSoftBody::PSolve_RContacts(btSoftBody* psb, btScalar kst, btScalar ti)
        {
                const RContact&         c = psb->m_rcontacts[i];
                const sCti&                     cti = c.m_cti;  
-               btRigidBody* tmpRigid = btRigidBody::upcast(cti.m_colObj);
-
-               const btVector3         va = tmpRigid ? tmpRigid->getVelocityInLocalPoint(c.m_c1)*dt : btVector3(0,0,0);
-               const btVector3         vb = c.m_node->m_x-c.m_node->m_q;       
-               const btVector3         vr = vb-va;
-               const btScalar          dn = btDot(vr, cti.m_normal);           
-               if(dn<=SIMD_EPSILON)
-               {
-                       const btScalar          dp = btMin( (btDot(c.m_node->m_x, cti.m_normal) + cti.m_offset), mrg );
-                       const btVector3         fv = vr - (cti.m_normal * dn);
-                       // c0 is the impulse matrix, c3 is 1 - the friction coefficient or 0, c4 is the contact hardness coefficient
-                       const btVector3         impulse = c.m_c0 * ( (vr - (fv * c.m_c3) + (cti.m_normal * (dp * c.m_c4))) * kst );
-                       c.m_node->m_x -= impulse * c.m_c2;
-                       if (tmpRigid)
-                               tmpRigid->applyImpulse(impulse,c.m_c1);
+
+               if (cti.m_colObj->hasContactResponse()) {
+                       btRigidBody* tmpRigid = btRigidBody::upcast(cti.m_colObj);
+                       const btVector3         va = tmpRigid ? tmpRigid->getVelocityInLocalPoint(c.m_c1)*dt : btVector3(0,0,0);
+                       const btVector3         vb = c.m_node->m_x-c.m_node->m_q;       
+                       const btVector3         vr = vb-va;
+                       const btScalar          dn = btDot(vr, cti.m_normal);           
+                       if(dn<=SIMD_EPSILON)
+                       {
+                               const btScalar          dp = btMin( (btDot(c.m_node->m_x, cti.m_normal) + cti.m_offset), mrg );
+                               const btVector3         fv = vr - (cti.m_normal * dn);
+                               // c0 is the impulse matrix, c3 is 1 - the friction coefficient or 0, c4 is the contact hardness coefficient
+                               const btVector3         impulse = c.m_c0 * ( (vr - (fv * c.m_c3) + (cti.m_normal * (dp * c.m_c4))) * kst );
+                               c.m_node->m_x -= impulse * c.m_c2;
+                               if (tmpRigid)
+                                       tmpRigid->applyImpulse(impulse,c.m_c1);
+                       }
                }
        }
 }
index abd35d33c1cd9e89dfe6dce62dc4ef4f17497d89..cbf92ee293ef9dadc488935f1d72903183ff4071 100644 (file)
@@ -12,7 +12,7 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 # The Original Code is Copyright (C) 2006, Blender Foundation
 # All rights reserved.
index 5b565518e4f8d77abb4b3c2301acd2f0f1adaca5..3019ee5904e8f0d116c73283aef955e137f03202 100644 (file)
@@ -12,7 +12,7 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 # The Original Code is Copyright (C) 2011, Blender Foundation
 # All rights reserved.
index 9704c137f8bb7636ab17f8e6ae37df37e08f1d29..34f6707398dfdc083abf45806f8d08f974e3e3bb 100644 (file)
@@ -12,7 +12,7 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 # The Original Code is Copyright (C) 2006, Blender Foundation
 # All rights reserved.
index 1e370e5f31b6a57c455853226349129445729322..075ff15a798971abf9b7646be358b5e107293258 100644 (file)
@@ -12,7 +12,7 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 # The Original Code is Copyright (C) 2011, Blender Foundation
 # All rights reserved.
index 8b79394c05342f03d13fc831f71439ee657cf490..6967048ac83362e9d34b8072d9c4dac8c0960cb1 100644 (file)
@@ -12,7 +12,7 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 # The Original Code is Copyright (C) 2006, Blender Foundation
 # All rights reserved.
index 02e219fa8713a79880136147547b39dac9dc9e53..c9d2bfc8fd623f9352859835b47233aa6cb676d2 100644 (file)
@@ -12,7 +12,7 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 # The Original Code is Copyright (C) 2006, Blender Foundation
 # All rights reserved.
index 89993d61491bb46f1b8d9d727390fa1863c3b677..31670f595f6575c5ca750624524e8a30763e2330 100644 (file)
@@ -12,7 +12,7 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 # The Original Code is Copyright (C) 2006, Blender Foundation
 # All rights reserved.
index 75b3605f75b98c4c732ea29f2d36f4b0b07cda56..5172a96e599d2b5bc9a319e4bb5f2c5878f3d7d8 100644 (file)
@@ -12,7 +12,7 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 # The Original Code is Copyright (C) 2006, Blender Foundation
 # All rights reserved.
index 05c62936dc0fb76f77b8b6393ac9f9f373d7d918..d6c7fd357b1b230957b18f0e69dcd59a2081f890 100644 (file)
@@ -12,7 +12,7 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 # The Original Code is Copyright (C) 2006, Blender Foundation
 # All rights reserved.
index bc9eb563e50f332738673ae6555554621bb7fdc4..2ea224f052dff2089ea80572dc72c3044e597662 100644 (file)
@@ -39,6 +39,9 @@ if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'):
 else:
     cxxflags.append('-ffast-math'.split())
 
+if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'):
+    incs.append(env['BF_PTHREADS_INC'])
+
 # optimized kernel
 if env['WITH_BF_RAYOPTIMIZATION']:
     optim_cxxflags = []
index d9adc5480dc473c35c941316e0dc5d4c6f3bc77f..cc6ba0731880e002203ceb51c3b115245ed567cd 100644 (file)
@@ -191,14 +191,8 @@ void BlenderSession::render()
        BL::RenderResult::layers_iterator b_iter;
        BL::RenderLayers b_rr_layers(r.ptr);
        
-       int active = 0;
-
        /* render each layer */
-       for(b_rr.layers.begin(b_iter); b_iter != b_rr.layers.end(); ++b_iter, ++active) {
-               /* single layer render */
-               if(r.use_single_layer())
-                       active = b_rr_layers.active_index();
-
+       for(b_rr.layers.begin(b_iter); b_iter != b_rr.layers.end(); ++b_iter) {
                /* set layer */
                b_rlay = *b_iter;
 
@@ -226,7 +220,7 @@ void BlenderSession::render()
                session->reset(buffer_params, session_params.samples);
 
                /* update scene */
-               sync->sync_data(b_v3d, active);
+               sync->sync_data(b_v3d, b_iter->name().c_str());
 
                /* render */
                session->start();
@@ -394,7 +388,7 @@ void BlenderSession::get_progress(float& progress, double& total_time)
 
 void BlenderSession::update_status_progress()
 {
-       string status, substatus;
+       string timestatus, status, substatus;
        float progress;
        double total_time;
        char time_str[128];
@@ -403,13 +397,13 @@ void BlenderSession::update_status_progress()
        get_progress(progress, total_time);
 
        BLI_timestr(total_time, time_str);
-       status = "Elapsed: " + string(time_str) + " | " + status;
+       timestatus = "Elapsed: " + string(time_str) + " | ";
 
        if(substatus.size() > 0)
                status += " | " + substatus;
 
        if(status != last_status) {
-               RE_engine_update_stats((RenderEngine*)b_engine.ptr.data, "", status.c_str());
+               RE_engine_update_stats((RenderEngine*)b_engine.ptr.data, "", (timestatus + status).c_str());
                last_status = status;
        }
        if(progress != last_progress) {
index 29ab0ebef1f4c6e5767482bdc04b6c9173643ac5..91996d52bea1fe93d2f2d65f888b91b87028ea90 100644 (file)
@@ -122,7 +122,7 @@ bool BlenderSync::sync_recalc()
        return recalc;
 }
 
-void BlenderSync::sync_data(BL::SpaceView3D b_v3d, int layer)
+void BlenderSync::sync_data(BL::SpaceView3D b_v3d, const char *layer)
 {
        sync_render_layers(b_v3d);
        sync_integrator(layer);
@@ -133,7 +133,7 @@ void BlenderSync::sync_data(BL::SpaceView3D b_v3d, int layer)
 
 /* Integrator */
 
-void BlenderSync::sync_integrator(int layer)
+void BlenderSync::sync_integrator(const char *layer)
 {
        PointerRNA cscene = RNA_pointer_get(&b_scene.ptr, "cycles");
 
@@ -155,7 +155,20 @@ void BlenderSync::sync_integrator(int layer)
 
        integrator->no_caustics = get_boolean(cscene, "no_caustics");
        integrator->seed = get_int(cscene, "seed");
-       integrator->layer_flag = render_layers[layer].layer;
+
+       /* render layer */
+       int active_layer = 0;
+
+       if(layer) {
+               for(int i = 0; i < render_layers.size(); i++) {
+                       if(render_layers[i].name == layer) {
+                               active_layer = i;
+                               break;
+                       }
+               }
+       }
+
+       integrator->layer_flag = render_layers[active_layer].layer;
 
        if(integrator->modified(previntegrator))
                integrator->tag_update(scene);
@@ -208,6 +221,7 @@ void BlenderSync::sync_render_layers(BL::SpaceView3D b_v3d)
                        /* single layer for now */
                        RenderLayerInfo rlay;
 
+                       rlay.name = b_rlay->name();
                        rlay.scene_layer = get_layer(b_scene.layers());
                        rlay.layer = get_layer(b_rlay->layers());
                        rlay.material_override = b_rlay->material_override();
index 5e76a0a0b1e858a349530504c5b4c228e7162e79..b0bd3004492d2ef51b3e6bd03b3528bd755844e9 100644 (file)
@@ -54,7 +54,7 @@ public:
 
        /* sync */
        bool sync_recalc();
-       void sync_data(BL::SpaceView3D b_v3d, int layer = 0);
+       void sync_data(BL::SpaceView3D b_v3d, const char *layer = 0);
        void sync_camera(int width, int height);
        void sync_view(BL::SpaceView3D b_v3d, BL::RegionView3D b_rv3d, int width, int height);
 
@@ -70,7 +70,7 @@ private:
        void sync_materials();
        void sync_objects(BL::SpaceView3D b_v3d);
        void sync_film();
-       void sync_integrator(int layer);
+       void sync_integrator(const char *layer);
        void sync_view();
        void sync_world();
        void sync_render_layers(BL::SpaceView3D b_v3d);
@@ -110,6 +110,7 @@ private:
                  material_override(PointerRNA_NULL)
                {}
 
+               string name;
                uint scene_layer;
                uint layer;
                BL::Material material_override;
index 7e0b0ff4d0f574d02d0aa5cdba629a3c43abc4aa..46ef5d2022ae967ee67030c30c907daa9df0a6db 100644 (file)
@@ -368,12 +368,13 @@ __device int shader_bsdf_sample(KernelGlobals *kg, const ShaderData *sd,
 #else
        label = svm_bsdf_sample(sd, sc, randu, randv, &eval, omega_in, domega_in, pdf);
 #endif
+       if(*pdf != 0.0f) {
+               bsdf_eval_init(bsdf_eval, sc->type, eval*sc->weight, kernel_data.film.use_light_pass);
 
-       bsdf_eval_init(bsdf_eval, sc->type, eval*sc->weight, kernel_data.film.use_light_pass);
-
-       if(sd->num_closure > 1 && *pdf != 0.0f) {
-               float sweight = sc->sample_weight;
-               _shader_bsdf_multi_eval(sd, *omega_in, pdf, sampled, bsdf_eval, *pdf*sweight, sweight);
+               if(sd->num_closure > 1) {
+                       float sweight = sc->sample_weight;
+                       _shader_bsdf_multi_eval(sd, *omega_in, pdf, sampled, bsdf_eval, *pdf*sweight, sweight);
+               }
        }
 
        return label;
index 698899ffd608935c4c544e929bc583897641ece7..7514fc2f2fef03de40c4fba8f869055c6ec8fad2 100644 (file)
@@ -27,28 +27,12 @@ __device void svm_node_brightness(ShaderData *sd, float *stack, uint in_color, u
        float brightness = stack_load_float(stack, bright_offset);
        float contrast  = stack_load_float(stack, contrast_offset);
 
-       brightness *= 1.0f/100.0f;
-       float delta = contrast * (1.0f/200.0f);
-       float a = 1.0f - delta * 2.0f;
-       float b;
+       float a = 1.0f + contrast;
+       float b = brightness - contrast*0.5f;
 
-       /*
-       * The algorithm is by Werner D. Streidt
-       * (http://visca.com/ffactory/archives/5-99/msg00021.html)
-       * Extracted of OpenCV demhist.c
-       */
-       if (contrast > 0.0f) {
-               a = (a > 0.0f? (1.0f / a): 0.0f);
-               b = a * (brightness - delta);
-       }
-       else {
-               delta *= -1.0f;
-               b = a * (brightness + delta);
-       }
-
-       color.x = a*color.x + b;
-       color.y = a*color.y + b;
-       color.z = a*color.z + b;
+       color.x = max(a*color.x + b, 0.0f);
+       color.y = max(a*color.y + b, 0.0f);
+       color.z = max(a*color.z + b, 0.0f);
 
        if (stack_valid(out_color))
                stack_store_float3(stack, out_color, color);
index 28ad028ad0e7e45b9ef3701cd7859628bb610bb8..1d3ace061ab4ca9b1c46ac1642bde7fb2eb783b5 100644 (file)
@@ -84,8 +84,9 @@ __device uint phash(int kx, int ky, int kz, int3 p)
 
 __device float floorfrac(float x, int* i)
 {
-    *i = quick_floor(x);
-    return x - *i;
+    float f = floorf(x);
+    *i = (int)f;
+    return x - f;
 }
 
 __device float fade(float t)
index ad95f04b4f989500dfa1972e419d9066b08dd1cd..6836be203f5791adb9889adf2db013797d57b229 100644 (file)
 #define __UTIL_THREAD_H__
 
 #include <boost/thread.hpp>
+#include <pthread.h>
 #include <queue>
 
+#include "util_function.h"
+
 CCL_NAMESPACE_BEGIN
 
-#if 0
+/* use boost for mutexes */
 
-/* Use STL for threading */
+typedef boost::mutex thread_mutex;
+typedef boost::mutex::scoped_lock thread_scoped_lock;
+typedef boost::condition_variable thread_condition_variable;
 
-using std::thread;
-using std::thread_mutex;
-typedef std::lock_guard thread_scoped_lock;
-using std::condition_variable;
+/* own pthread based implementation, to avoid boost version conflicts with
+   dynamically loaded blender plugins */
 
-#else
+class thread {
+public:
+       thread(boost::function<void(void)> run_cb_)
+       {
+               joined = false;
+               run_cb = run_cb_;
 
-/* Use boost for threading */
+               pthread_create(&pthread_id, NULL, run, (void*)this);
+       }
 
-using boost::thread;
-typedef boost::mutex thread_mutex;
-typedef boost::mutex::scoped_lock thread_scoped_lock;
-typedef boost::condition_variable thread_condition_variable;
+       ~thread()
+       {
+               if(!joined)
+                       join();
+       }
 
-#endif
+       static void *run(void *arg)
+       {
+               ((thread*)arg)->run_cb();;
+               return NULL;
+       }
+
+       bool join()
+       {
+               return pthread_join(pthread_id, NULL) == 0;
+       }
+
+protected:
+       boost::function<void(void)> run_cb;
+       pthread_t pthread_id;
+       bool joined;
+};
 
 /* Thread Safe Queue to pass tasks from one thread to another. Tasks should be
  * pushed into the queue, while the worker thread waits to pop the next task
index 02d54dd5e0134449596704b568172cc75d6a4e62..1e9728d7658ccaf46726ef01fd341a1aa70bd887 100644 (file)
 #include <stdio.h>
 #include <stdlib.h>
 
+/* absolute value */
+template < class T >
+inline T
+ABS( T a )
+{ return (0 < a) ? a : -a ; }
+
 // hack for MSVC6.0 compiler
 #ifdef _MSC_VER
 #if _MSC_VER < 1300
index dd3940059883cfad8854aafec5f506305c19da09..2b33c142e32c36139972c26aa6c7f3cae1c19af7 100644 (file)
@@ -177,12 +177,6 @@ inline T
 MAX( T a, T b )
 { return (a < b) ? b : a ; }
 
-/* absolute value */
-template < class T >
-inline T
-ABS( T a )
-{ return (0 < a) ? a : -a ; }
-
 /* sign of the value */
 template < class T >
 inline T
index 9cae2c27e65f17be4c6be82f3c2bef3016c8af19..98c4785797db171a0f8c7db2328aa5f0d3f700cf 100644 (file)
@@ -717,10 +717,11 @@ GHOST_EventKey* GHOST_SystemWin32::processKeyEvent(GHOST_IWindow *window, RAWINP
 
        if (key != GHOST_kKeyUnknown) {
                char utf8_char[6] = {0} ;
+               char ascii = 0;
 
                wchar_t utf16[2]={0};
-               BYTE state[256];
-               GetKeyboardState((PBYTE)state);  
+               BYTE state[256] ={0};
+               GetKeyboardState(state);  
 
                if(ToUnicodeEx(vk, 0, state, utf16, 2, 0, system->m_keylayout))
                        WideCharToMultiByte(CP_UTF8, 0, 
@@ -728,9 +729,14 @@ GHOST_EventKey* GHOST_SystemWin32::processKeyEvent(GHOST_IWindow *window, RAWINP
                                                                        (LPSTR) utf8_char, 5,
                                                                        NULL,NULL); else *utf8_char = 0;
 
-               if(!keyDown) utf8_char[0] = '\0';
                
-               event = new GHOST_EventKey(system->getMilliSeconds(), keyDown ? GHOST_kEventKeyDown: GHOST_kEventKeyUp, window, key, (*utf8_char & 0x80)?'?':*utf8_char, utf8_char);
+
+               if(!keyDown) {utf8_char[0] = '\0'; ascii='\0';}
+                       else ascii = utf8_char[0]& 0x80?'?':utf8_char[0];
+
+               if(0x80&state[VK_MENU]) utf8_char[0]='\0';
+
+               event = new GHOST_EventKey(system->getMilliSeconds(), keyDown ? GHOST_kEventKeyDown: GHOST_kEventKeyUp, window, key, ascii, utf8_char);
                
 #ifdef GHOST_DEBUG
                std::cout << ascii << std::endl;
index d5abcb03164e7697d5352b134a57c42daa8f90cf..63ba213f9b1721885a178a582ba98e4673561ec2 100644 (file)
@@ -327,9 +327,6 @@ def refresh_script_paths():
             _sys_path_ensure(path)
 
 
-_presets = _os.path.join(_scripts[0], "presets")  # FIXME - multiple paths
-
-
 def preset_paths(subdir):
     """
     Returns a list of paths for a specific preset.
index 6b0ab1c3adc5376dd4395e840082c9c60bc4963c..c4ec805a72de7523f3e9c0a3c25cda765c4a1dbd 100644 (file)
@@ -158,7 +158,7 @@ def bake_action(frame_start,
     # -------------------------------------------------------------------------
     # Create action
 
-    # in case animation data hassnt been created
+    # in case animation data hasn't been created
     atd = obj.animation_data_create()
     if action is None:
         action = bpy.data.actions.new("Action")
index 8149675000ffcd9366f2cf5b4201c7b8a9b24a83..601ffae4796fd8f5d844f542426d300846e88b94 100644 (file)
@@ -167,7 +167,7 @@ def edge_loops_from_faces(mesh, faces=None, seams=()):
             flipped = False
 
             while 1:
-                # from knowing the last 2, look for th next.
+                # from knowing the last 2, look for the next.
                 ed_adj = edges[context_loop[-1]]
                 if len(ed_adj) != 2:
                     # the original edge had 2 other edges
@@ -175,7 +175,7 @@ def edge_loops_from_faces(mesh, faces=None, seams=()):
                         flipped = True  # only flip the list once
                         context_loop.reverse()
                         ed_adj[:] = []
-                        context_loop.append(other_dir)  # save 1 lookiup
+                        context_loop.append(other_dir)  # save 1 look-up
 
                         ed_adj = edges[context_loop[-1]]
                         if len(ed_adj) != 2:
@@ -375,7 +375,7 @@ def ngon_tesselate(from_data, indices, fix_loops=True):
             if s1[0][1] == s1[-1][1]:  # remove endpoints double
                 s1.pop()
 
-            s2[:] = []  # Empty this segment s2 so we dont use it again.
+            s2[:] = []  # Empty this segment s2 so we don't use it again.
             return True
 
         joining_segments = True
index 63f15d9cf77b21ae55f61020c1c30be0fb4f0903..8f2b5324cdcdb93baf1cd211652a664d82437919 100644 (file)
@@ -44,7 +44,7 @@ changes have been made:
 import os
 import sys
 
-TIMEOUT_STORAGE = 3  # Time in secs after which the rootmodules will be stored
+TIMEOUT_STORAGE = 3  # Time in secs after which the root-modules will be stored
 TIMEOUT_GIVEUP = 20  # Time in secs after which we give up
 
 ROOT_MODULES = None
@@ -53,7 +53,7 @@ ROOT_MODULES = None
 def get_root_modules():
     """
     Returns a list containing the names of all the modules available in the
-    folders of the pythonpath.
+    folders of the python-path.
 
     :returns: modules
     :rtype: list
index 29e8a3960882a19ca0b241f3a4be26c50f99f898..d26a7728af1c45eb5aaf31ef952df1b3c67856cf 100644 (file)
@@ -161,7 +161,7 @@ class ANIM_OT_keying_set_export(Operator):
 
 
 class BakeAction(Operator):
-    """Bake animation to an Action"""
+    """Bake object/pose loc/scale/rotation animation to a new action"""
     bl_idname = "nla.bake"
     bl_label = "Bake Action"
     bl_options = {'REGISTER', 'UNDO'}
@@ -227,7 +227,7 @@ class BakeAction(Operator):
 
 
 class ClearUselessActions(Operator):
-    """Mark actions with no F-Curves for deletion after save+reload of """ \
+    """Mark actions with no F-Curves for deletion after save & reload of """ \
     """file preserving \"action libraries\""""
     bl_idname = "anim.clear_useless_actions"
     bl_label = "Clear Useless Actions"
index aa4f3a35e6d7452a93a9f942213b34fffab56b56..7a80b432c3a74148f975ba12de50a39e14d264ba 100644 (file)
@@ -143,6 +143,7 @@ class CLIP_OT_track_to_empty(Operator):
         if constraint is None:
             constraint = ob.constraints.new(type='FOLLOW_TRACK')
 
+        constraint.use_active_clip = False
         constraint.clip = sc.clip
         constraint.track = track.name
         constraint.use_3d_position = False
@@ -275,8 +276,8 @@ class CLIP_OT_delete_proxy(Operator):
 
 
 class CLIP_OT_set_viewport_background(Operator):
-    """Set current movie clip as a camera background in 3D viewport \
-(works only when a 3D viewport is visible)"""
+    """Set current movie clip as a camera background in 3D view-port """ \
+    """(works only when a 3D view-port is visible)"""
 
     bl_idname = "clip.set_viewport_background"
     bl_label = "Set as Background"
@@ -314,9 +315,9 @@ object's movement caused by this constraint"""
         frame_current = scene.frame_current
         matrices = []
 
-        # Find constraint which would eb converting
+        # Find constraint which would be converting
         # TODO: several camera solvers and track followers would fail,
-        #       but can't think about eal workflow where it'll be useful
+        #       but can't think about real work-flow where it'll be useful
         for x in ob.constraints:
             if x.type in {'CAMERA_SOLVER', 'FOLLOW_TRACK', 'OBJECT_SOLVER'}:
                 con = x
@@ -368,7 +369,7 @@ object's movement caused by this constraint"""
 
         ob.animation_data_create()
 
-        # Apply matrices on object and insert keyframes
+        # Apply matrices on object and insert key-frames
         i = 0
         for x in range(sfra, efra + 1):
             scene.frame_set(x)
@@ -791,7 +792,7 @@ class CLIP_OT_setup_tracking_scene(Operator):
 
         all_layers = self._mergeLayers(fg.layers, bg.layers)
 
-        # enshure all lamps are active on foreground and background
+        # ensure all lamps are active on foreground and background
         has_lamp = False
         has_mesh = False
         for ob in scene.objects:
index 55ad8a77d4303b9f73aa966321f70282c8c1fa39..4c04aa3b7f350b699504ce33168746bb29192474 100644 (file)
@@ -128,7 +128,7 @@ class SaveDirty(Operator):
 
 
 class ProjectEdit(Operator):
-    """Edit a snapshot of the viewport in an external image editor"""
+    """Edit a snapshot of the view-port in an external image editor"""
     bl_idname = "image.project_edit"
     bl_label = "Project Edit"
     bl_options = {'REGISTER'}
index b7c6b8589136280fc0f9931591a97c92766cb0ba..019cd37066c191f686d552e4f4b9cb3734211f41 100644 (file)
@@ -334,8 +334,8 @@ class ShapeTransfer(Operator):
         orig_shape_coords = me_cos(ob_act.active_shape_key.data)
 
         orig_normals = me_nos(me.vertices)
-        # the actual mverts location isn't as reliable as the base shape :S
-        # orig_coords = me_cos(me.vertices)
+        # actual mesh vertex location isn't as reliable as the base shape :S
+        #~ orig_coords = me_cos(me.vertices)
         orig_coords = me_cos(me.shape_keys.key_blocks[0].data)
 
         for ob_other in objects:
@@ -653,8 +653,8 @@ class MakeDupliFace(Operator):
 
 
 class IsolateTypeRender(Operator):
-    '''Hide unselected render objects of same type as active ''' \
-    '''by setting the hide render flag'''
+    """Hide unselected render objects of same type as active """ \
+    """by setting the hide render flag"""
     bl_idname = "object.isolate_type_render"
     bl_label = "Restrict Render Unselected"
     bl_options = {'REGISTER', 'UNDO'}
index 1aecfbbaa778ceea989f4062854a94fba58d0f41..1a17cd9f000bf7fcdf277964e8e6ae632f913a7c 100644 (file)
@@ -35,10 +35,11 @@ class AddPresetBase():
             name="Name",
             description="Name of the preset, used to make the path name",
             maxlen=64,
+            options={'SKIP_SAVE'},
             )
     remove_active = bpy.props.BoolProperty(
             default=False,
-            options={'HIDDEN'},
+            options={'HIDDEN', 'SKIP_SAVE'},
             )
 
     @staticmethod
@@ -195,7 +196,7 @@ class ExecutePreset(Operator):
                                  preset_class.preset_xml_map)
         else:
             self.report({'ERROR'}, "unknown filetype: %r" % ext)
-            return {'CANCELLED '}
+            return {'CANCELLED'}
 
         return {'FINISHED'}
 
@@ -427,7 +428,7 @@ class AddPresetInterfaceTheme(AddPresetBase, Operator):
 
 
 class AddPresetKeyconfig(AddPresetBase, Operator):
-    '''Add a Keyconfig Preset'''
+    '''Add a Key-config Preset'''
     bl_idname = "wm.keyconfig_preset_add"
     bl_label = "Add Keyconfig Preset"
     preset_menu = "USERPREF_MT_keyconfigs"
index 39c73f206642d305188d59e7b06823cf8853b7d5..c51ec74ddd6fea7c0434b2574f33708f3362b3b7 100644 (file)
@@ -25,7 +25,7 @@ from bpy.props import IntProperty
 
 
 class SequencerCrossfadeSounds(Operator):
-    '''Do crossfading volume animation of two selected sound strips'''
+    '''Do cross-fading volume animation of two selected sound strips'''
 
     bl_idname = "sequencer.crossfade_sounds"
     bl_label = "Crossfade sounds"
@@ -76,7 +76,7 @@ class SequencerCrossfadeSounds(Operator):
 
 
 class SequencerCutMulticam(Operator):
-    '''Cut multicam strip and select camera'''
+    '''Cut multi-cam strip and select camera'''
 
     bl_idname = "sequencer.cut_multicam"
     bl_label = "Cut multicam"
index 919677fff8b53369ec8fcb7e7626c58df5fd25b4..748255671ddd3eb6e0182d0f46c827ad2d09cb82 100644 (file)
@@ -99,7 +99,7 @@ def extend(obj, operator, EXTEND_MODE):
             iA = 1
             iB = 0
 
-        # Set the target UV's touching source face, no tricky calc needed,
+        # Set the target UV's touching source face, no tricky calculations needed,
         uvs_vhash_target[edgepair_inner_target[0]][:] = uvs_vhash_source[edgepair_inner_source[iA]]
         uvs_vhash_target[edgepair_inner_target[1]][:] = uvs_vhash_source[edgepair_inner_source[iB]]
 
@@ -156,8 +156,8 @@ def extend(obj, operator, EXTEND_MODE):
         return
 
     # Modes
-    # 0 unsearched
-    # 1:mapped, use search from this face. - removed!!
+    # 0 not yet searched for.
+    # 1:mapped, use search from this face - removed!
     # 2:all siblings have been searched. don't search again.
     face_modes = [0] * len(face_sel)
     face_modes[face_act_local_index] = 1  # extend UV's from this face.
index 99a492fab4af6598b9a56d6d52e885d3c670ae19..3159466c5ca44eca2a3fdb98aede2b5e56c048a4 100644 (file)
@@ -246,10 +246,10 @@ def lightmap_uvpack(meshes,
 
         pretty_faces = [prettyface(f) for f in face_sel if len(f.vertices) == 4]
 
-        # Do we have any tri's
+        # Do we have any triangles?
         if len(pretty_faces) != len(face_sel):
 
-            # Now add tri's, not so simple because we need to pair them up.
+            # Now add triangles, not so simple because we need to pair them up.
             def trylens(f):
                 # f must be a tri
 
index b79fc0c01b322722fdc3a31e5b97c483045bab54..622d19a0cfa32e92732607663bdec0cb64e41d83 100644 (file)
@@ -71,7 +71,7 @@ def pointInTri2D(v, v1, v2, v3):
 
         mtx = Matrix((side1, side2, nor))
 
-        # Zero area 2d tri, even tho we throw away zerop area faces
+        # Zero area 2d tri, even tho we throw away zero area faces
         # the projection UV can result in a zero area UV.
         if not mtx.determinant():
             dict_matrix[key] = None
@@ -162,7 +162,7 @@ def island2Edge(island):
     return length_sorted_edges, [v.to_3d() for v in unique_points.values()]
 
 # ========================= NOT WORKING????
-# Find if a points inside an edge loop, un-ordered.
+# Find if a points inside an edge loop, unordered.
 # pt is and x/y
 # edges are a non ordered loop of edges.
 # offsets are the edge x and y offset.
index ea58864f7c2ed9eafe26aa289d0761ac709e8b2b..85be72b48d8fe1a9e7bbca098a57f784bc259f2b 100644 (file)
 
 # <pep8 compliant>
 
-# History
-#
-# Originally written by Campbell Barton aka ideasman42
-#
-# 2009-11-01: * 2.5 port by Keith "Wahooney" Boshoff
-#              * Replaced old method with my own, speed is similar (about 0.001 sec on Suzanne)
-#               but results are far more accurate
-#
-
 
 def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean, dirt_only):
     from mathutils import Vector
index e9cb8af1cbd5fb55fb7112e24c1908cae8c9b9c0..6184082990049df198a73d9afb199e8ee95308b9 100644 (file)
@@ -397,7 +397,7 @@ class WM_OT_context_cycle_int(Operator):
         exec("context.%s = value" % data_path)
 
         if value != eval("context.%s" % data_path):
-            # relies on rna clamping int's out of the range
+            # relies on rna clamping integers out of the range
             if self.reverse:
                 value = (1 << 31) - 1
             else:
@@ -731,7 +731,7 @@ class WM_OT_context_modal_mouse(Operator):
 
 
 class WM_OT_url_open(Operator):
-    "Open a website in the Webbrowser"
+    "Open a website in the web-browser"
     bl_idname = "wm.url_open"
     bl_label = ""
 
@@ -1180,7 +1180,7 @@ class WM_OT_copy_prev_settings(Operator):
 
 
 class WM_OT_blenderplayer_start(Operator):
-    '''Launch the Blenderplayer with the current blendfile'''
+    '''Launch the blender-player with the current blend-file'''
     bl_idname = "wm.blenderplayer_start"
     bl_label = "Start"
 
@@ -1202,7 +1202,7 @@ class WM_OT_blenderplayer_start(Operator):
 
 
 class WM_OT_keyconfig_test(Operator):
-    "Test keyconfig for conflicts"
+    "Test key-config for conflicts"
     bl_idname = "wm.keyconfig_test"
     bl_label = "Test Key Configuration for Conflicts"
 
index 3aa995353b2e649c17b5aadda8be78cdb2169ac5..91230c9dc899c72cc39b54a936028594da22019f 100644 (file)
@@ -217,7 +217,7 @@ class DATA_PT_active_spline(CurveButtonsPanelActive, Panel):
 
         if is_poly:
             # These settings are below but its easier to have
-            # poly's set aside since they use so few settings
+            # polys set aside since they use so few settings
             row = layout.row()
             row.label(text="Cyclic:")
             row.prop(act_spline, "use_cyclic_u", text="U")
@@ -250,7 +250,7 @@ class DATA_PT_active_spline(CurveButtonsPanelActive, Panel):
                 col = split.column()
                 col.prop(act_spline, "use_cyclic_v", text="V")
 
-                # its a surface, assume its a nurb.
+                # its a surface, assume its a nurbs
                 sub = col.column()
                 sub.active = (not act_spline.use_cyclic_v)
                 sub.prop(act_spline, "use_bezier_v", text="V")
index e6801f00fce0e7397f382b175f4bb7b342021c9a..d6aeea8ece756a77610f10e63543c5538bf641e2 100644 (file)
@@ -215,7 +215,7 @@ class PHYSICS_PT_dp_canvas_output(PhysicButtonsPanel, Panel):
                  # toggle active preview
                 layout.prop(surface, "preview_id")
 
-                # paintmap output
+                # paint-map output
                 row = layout.row()
                 row.prop_search(surface, "output_name_a", ob.data, "vertex_colors", text="Paintmap layer: ")
                 if surface.output_exists(object=ob, index=0):
@@ -225,7 +225,7 @@ class PHYSICS_PT_dp_canvas_output(PhysicButtonsPanel, Panel):
 
                 row.operator("dpaint.output_toggle", icon=ic, text="").output = 'A'
 
-                # wetmap output
+                # wet-map output
                 row = layout.row()
                 row.prop_search(surface, "output_name_b", ob.data, "vertex_colors", text="Wetmap layer: ")
                 if surface.output_exists(object=ob, index=1):
index 6e54bdde024875990a323d20538c3c1c3a20a2a6..13d25e6ac8d5691d0968d9bdbfdb75532408aab7 100644 (file)
@@ -824,7 +824,6 @@ class TEXTURE_PT_mapping(TextureSlotPanel, Panel):
         idblock = context_tex_datablock(context)
 
         tex = context.texture_slot
-        # textype = context.texture
 
         if not isinstance(idblock, Brush):
             split = layout.split(percentage=0.3)
@@ -912,7 +911,6 @@ class TEXTURE_PT_influence(TextureSlotPanel, Panel):
 
         idblock = context_tex_datablock(context)
 
-        # textype = context.texture
         tex = context.texture_slot
 
         def factor_but(layout, toggle, factor, name):
index 8ebc1c450b4b1dcbb52951f903ad3de6d2a1af25..eb97e5463795e395e80f1d025df5e216a8ea76cf 100644 (file)
@@ -547,23 +547,15 @@ class CLIP_PT_display(Panel):
 
         col = layout.column(align=True)
 
-        col.prop(sc, "show_marker_pattern", text="Pattern")
-        col.prop(sc, "show_marker_search", text="Search")
-        col.prop(sc, "show_pyramid_levels", text="Pyramid")
-
-        col.prop(sc, "show_track_path", text="Path")
-        row = col.row()
-        row.active = sc.show_track_path
-        row.prop(sc, "path_length", text="Length")
-
         col.prop(sc, "show_disabled", "Disabled Tracks")
+        col.prop(sc, "show_names", text="Names and Status")
         col.prop(sc, "show_bundles", text="3D Markers")
 
-        col.prop(sc, "show_names", text="Names and Status")
-        col.prop(sc, "show_tiny_markers", text="Compact Markers")
+        col.prop(sc, "use_mute_footage", text="Mute Footage")
+        col.prop(sc, "lock_selection")
 
-        col.prop(sc, "show_grease_pencil", text="Grease Pencil")
-        col.prop(sc, "use_mute_footage", text="Mute")
+        if sc.view == 'GRAPH':
+            col.prop(sc, "lock_time_cursor")
 
         if sc.mode == 'DISTORTION':
             col.prop(sc, "show_grid", text="Grid")
@@ -571,15 +563,34 @@ class CLIP_PT_display(Panel):
         elif sc.mode == 'RECONSTRUCTION':
             col.prop(sc, "show_stable", text="Stable")
 
-        col.prop(sc, "lock_selection")
-
-        if sc.view == 'GRAPH':
-            col.prop(sc, "lock_time_cursor")
-
         clip = sc.clip
         if clip:
             col.label(text="Display Aspect Ratio:")
-            col.prop(clip, "display_aspect", text="")
+            row = col.row()
+            row.prop(clip, "display_aspect", text="")
+
+
+class CLIP_PT_marker_display(Panel):
+    bl_space_type = 'CLIP_EDITOR'
+    bl_region_type = 'UI'
+    bl_label = "Marker Display"
+
+    def draw(self, context):
+        layout = self.layout
+        sc = context.space_data
+
+        col = layout.column(align=True)
+
+        row = col.row()
+        row.prop(sc, "show_marker_pattern", text="Pattern")
+        row.prop(sc, "show_marker_search", text="Search")
+
+        col.prop(sc, "show_tiny_markers", text="Thin Markers")
+        col.prop(sc, "show_track_path", text="Path")
+
+        row = col.row()
+        row.active = sc.show_track_path
+        row.prop(sc, "path_length", text="Length")
 
 
 class CLIP_PT_track_settings(Panel):
index 901f709fb5b4531b2fb61649e7964571d2bd305b..b6a450e1a02e9cdae5c0b3eaaa7912669844da2e 100644 (file)
@@ -273,7 +273,7 @@ class INFO_MT_add(Menu):
     def draw(self, context):
         layout = self.layout
 
-        # note, dont use 'EXEC_SCREEN' or operators wont get the 'v3d' context.
+        # note, don't use 'EXEC_SCREEN' or operators wont get the 'v3d' context.
 
         layout.operator_context = 'EXEC_AREA'
 
@@ -362,7 +362,7 @@ class INFO_MT_help(Menu):
         layout = self.layout
 
         layout.operator("wm.url_open", text="Manual", icon='HELP').url = 'http://wiki.blender.org/index.php/Doc:2.6/Manual'
-        layout.operator("wm.url_open", text="Release Log", icon='URL').url = 'http://www.blender.org/development/release-logs/blender-261/'
+        layout.operator("wm.url_open", text="Release Log", icon='URL').url = 'http://www.blender.org/development/release-logs/blender-262/'
 
         layout.separator()
 
index da6d1f7212359ab19190dc573d712c0c23865739..1e68b41c645ae55888df5f102731fb702215eb38 100644 (file)
@@ -49,8 +49,8 @@ class LOGIC_PT_properties(Panel):
                 sub.prop(prop, "name", text="")
                 row.prop(prop, "type", text="")
                 # get the property from the body, not the game property
-                # note, don't do this - it's too slow and body can potentually be a really long string.
-                # row.prop(ob.data, "body", text="")
+                # note, don't do this - it's too slow and body can potentially be a really long string.
+                #~ row.prop(ob.data, "body", text="")
                 row.label("See Text Object")
             else:
                 props = layout.operator("object.game_property_new", text="Add Text Game Property", icon='ZOOMIN')
index 18d32575bc29bb00e94e2a0578d95d5e744ea511..33610f3ba33bbd43040ea2c6bb01b485a5a1490e 100644 (file)
@@ -143,7 +143,7 @@ class NLA_MT_edit(Menu):
         layout.operator_menu_enum("anim.channels_move", "direction", text="Track Ordering...")
 
         layout.separator()
-        # TODO: names of these tools for 'tweakmode' need changing?
+        # TODO: names of these tools for 'tweak-mode' need changing?
         if scene.is_nla_tweakmode:
             layout.operator("nla.tweakmode_exit", text="Stop Tweaking Strip Actions")
         else:
index 8a2dff8f050210e5fd4df97edbeb11d954f74bfd..2efeff0e0790a0d1a34654524cf69f7d71e2f07d 100644 (file)
@@ -293,7 +293,7 @@ class USERPREF_PT_edit(Panel):
         col.label(text="Grease Pencil:")
         col.prop(edit, "grease_pencil_manhattan_distance", text="Manhattan Distance")
         col.prop(edit, "grease_pencil_euclidean_distance", text="Euclidean Distance")
-        #col.prop(edit, "use_grease_pencil_simplify_stroke", text="Simplify Stroke")
+        #col.prop(edit, "use_grease_pencil_simplify_stroke", text="Simplify Stroke")
         col.prop(edit, "grease_pencil_eraser_radius", text="Eraser Radius")
         col.prop(edit, "use_grease_pencil_smooth_stroke", text="Smooth Stroke")
         col.separator()
@@ -316,7 +316,7 @@ class USERPREF_PT_edit(Panel):
 
         sub = col.column()
 
-        # sub.active = edit.use_keyframe_insert_auto # incorrect, timeline can enable
+        #~ sub.active = edit.use_keyframe_insert_auto # incorrect, time-line can enable
         sub.prop(edit, "use_keyframe_insert_available", text="Only Insert Available")
 
         col.separator()
@@ -833,7 +833,7 @@ from .space_userpref_keymap import InputKeyMapPanel
 
 
 class USERPREF_MT_ndof_settings(Menu):
-    # accessed from the window keybindings in C (only)
+    # accessed from the window key-bindings in C (only)
     bl_label = "3D Mouse Settings"
 
     def draw(self, context):
@@ -965,7 +965,7 @@ class USERPREF_PT_input(Panel, InputKeyMapPanel):
 class USERPREF_MT_addons_dev_guides(Menu):
     bl_label = "Development Guides"
 
-    # menu to open webpages with addons development guides
+    # menu to open web-pages with addons development guides
     def draw(self, context):
         layout = self.layout
         layout.operator("wm.url_open", text="API Concepts", icon='URL').url = "http://wiki.blender.org/index.php/Dev:2.5/Py/API/Intro"
@@ -1097,7 +1097,7 @@ class USERPREF_PT_addons(Panel):
                 else:
                     row.operator("wm.addon_enable", icon='CHECKBOX_DEHLT', text="", emboss=False).module = module_name
 
-                # Expanded UI (only if additional infos are available)
+                # Expanded UI (only if additional info is available)
                 if info["show_expanded"]:
                     if info["description"]:
                         split = colsub.row().split(percentage=0.15)
index 6fa3aabaeb81be90696332df6c4251535941fc34..030e1ee0f6db6a5fd431946af649dc7ac5a0ffc4 100644 (file)
@@ -180,7 +180,7 @@ class InputKeyMapPanel:
                     sub.prop(kmi, "propvalue", text="")
                 else:
                     # One day...
-                    # sub.prop_search(kmi, "idname", bpy.context.window_manager, "operators_all", text="")
+                    #~ sub.prop_search(kmi, "idname", bpy.context.window_manager, "operators_all", text="")
                     sub.prop(kmi, "idname", text="")
 
                 sub = split.column()
index 5e6edfed0528d5b85688293aac9029d4ab3f0115..5bd46856c9286574ee967e127608c2e16d5097bd 100644 (file)
@@ -751,6 +751,10 @@ class VIEW3D_MT_object_animation(Menu):
         layout.operator("anim.keyframe_delete_v3d", text="Delete Keyframe...")
         layout.operator("anim.keying_set_active_set", text="Change Keying Set...")
 
+        layout.separator()
+
+        layout.operator("nla.bake", text="Bake Action...")
+
 
 class VIEW3D_MT_object_clear(Menu):
     bl_label = "Clear"
@@ -1642,8 +1646,8 @@ class VIEW3D_MT_edit_mesh_edges(Menu):
         layout.operator("TRANSFORM_OT_edge_crease")
         layout.operator("mesh.loop_multi_select", text="Edge Loop").ring = False
 
-        # uiItemO(layout, "Loopcut", 0, "mesh.loop_cut"); // CutEdgeloop(em, 1);
-        # uiItemO(layout, "Edge Slide", 0, "mesh.edge_slide"); // EdgeSlide(em, 0,0.0);
+        #~ uiItemO(layout, "Loopcut", 0, "mesh.loop_cut"); // CutEdgeloop(em, 1);
+        #~ uiItemO(layout, "Edge Slide", 0, "mesh.edge_slide"); // EdgeSlide(em, 0,0.0);
 
         layout.operator("mesh.loop_multi_select", text="Edge Ring").ring = True
 
index aa7cec0c01ac8894ed2be62f9081eed269f1dc57..5171a6dd47dad7ae4c27646612790a013059ba63 100644 (file)
@@ -1051,10 +1051,10 @@ class VIEW3D_PT_tools_weightpaint_options(Panel, View3DPaintPanel):
         self.unified_paint_settings(col, context)
 
 # Commented out because the Apply button isn't an operator yet, making these settings useless
-#              col.label(text="Gamma:")
-#              col.prop(wpaint, "gamma", text="")
-#              col.label(text="Multiply:")
-#              col.prop(wpaint, "mul", text="")
+#~         col.label(text="Gamma:")
+#~         col.prop(wpaint, "gamma", text="")
+#~         col.label(text="Multiply:")
+#~         col.prop(wpaint, "mul", text="")
 
 # Also missing now:
 # Soft, Vertex-Group, X-Mirror and "Clear" Operator.
@@ -1081,10 +1081,10 @@ class VIEW3D_PT_tools_vertexpaint(Panel, View3DPaintPanel):
         self.unified_paint_settings(col, context)
 
 # Commented out because the Apply button isn't an operator yet, making these settings useless
-#              col.label(text="Gamma:")
-#              col.prop(vpaint, "gamma", text="")
-#              col.label(text="Multiply:")
-#              col.prop(vpaint, "mul", text="")
+#~         col.label(text="Gamma:")
+#~         col.prop(vpaint, "gamma", text="")
+#~         col.label(text="Multiply:")
+#~         col.prop(vpaint, "mul", text="")
 
 # ********** default tools for texture-paint ****************
 
index bc0252aa61660fc92ae22182fd080d71bb757758..1caf7c4398359bec859fbee90e4b254d96deedce 100644 (file)
@@ -326,7 +326,7 @@ class BUILTIN_KSI_WholeCharacter(KeyingSetInfo):
 
                 for i in range(3):
                     if not bone.lock_rotation[i]:
-                        ksi.addProp(ks, bone, prop, i + 1)  # i + 1, since here x,y,z = 1,2,3, and w=0
+                        ksi.addProp(ks, bone, prop, i + 1)  # i + 1, since here x/y/z = 1,2,3, and w=0
         elif True not in bone.lock_rotation:
             # if axis-angle rotations get locked as eulers, then it's too messy to allow anything
             # other than all open unless we keyframe the whole lot
index d3c94b86809e68923f07baade33ba785a0fbd9ed..a21e5ed86c876395c8d16f715f7669effc4e0f21 100644 (file)
@@ -15,7 +15,7 @@ class CustomMenu(bpy.types.Menu):
 
         layout.label(text="Hello world!", icon='WORLD_DATA')
 
-        # use an operator enum property to populate a submenu
+        # use an operator enum property to populate a sub-menu
         layout.operator_menu_enum("object.select_by_type",
                                   property="type",
                                   text="Select All by Type...",
index 0627624d2e70e01a2afd8cc04aea595fb0fe0629..a9f5e705b3d4d0468bc411913327a59ace966fc4 100644 (file)
   </style>
 </head>
 <body>
-<p class="title"><b>Blender 2.61</b></p>
+<p class="title"><b>Blender 2.62</b></p>
 <p><br></p>
 <p class="header"><b>About</b></p>
 <p class="body">Welcome to Blender, the free, open source 3D application for modeling, animation, rendering, compositing, video editing and game creation. Blender is available for Linux, Mac OS X, Windows, Solaris and FreeBSD and has a large world-wide community.</p>
 <p class="body">Blender can be used freely for any purpose, including commercial use and distribution. It's free and open-source software, released under the GNU GPL licence. The entire source code is available on our website.</p>
 <p class="body">For more information, visit <a href="http://www.blender.org">blender.org</a>.</p>
 <p><br></p>
-<p class="header"><b>2.61</b></p>
-<p class="body">The Blender Foundation and online developer community is proud to present Blender 2.61. This release is the second official stable release of the Blender 2.6 series, in which we will refine the 2.5 series and add exciting new features again.<a href="http://www.blender.org/development/release-logs/blender-261/">More information about this release</a>.</p>
+<p class="header"><b>2.62</b></p>
+<p class="body">The Blender Foundation and online developer community is proud to present Blender 2.62. This release is the third official stable release of the Blender 2.6 series, in which we will refine the 2.5 series and add exciting new features again.<a href="http://www.blender.org/development/release-logs/blender-262/">More information about this release</a>.</p>
 <p><br></p>
 <p class="header"><b>Bugs</b></p>
-<p class="body">Although Blender 2.61 is considered a stable release, you may encounter a bug. If you do, please help us by posting it in the bug tracker or using Help → Report a Bug from inside Blender. If it wasn’t reported yet, please log in (or register) and fill in detailed information about the error. Please post detailed instructions on how to reproduce it or post a .blend file showcasing the bug.</p>
+<p class="body">Although Blender 2.62 is considered a stable release, you may encounter a bug. If you do, please help us by posting it in the bug tracker or using Help → Report a Bug from inside Blender. If it wasn’t reported yet, please log in (or register) and fill in detailed information about the error. Please post detailed instructions on how to reproduce it or post a .blend file showcasing the bug.</p>
 <p><br></p>
 <p class="header"><b>Package Contents</b></p>
 <p class="body">The downloaded Blender package includes:</p>
@@ -47,7 +47,7 @@
 <p class="header"><b>Links</b></p>
 <p class="body">Users:</p>
 <p class="body">       General information             <a href="http://www.blender.org">www.blender.org</a> <br>
-       Full release log                        <a href="http://www.blender.org/development/release-logs/blender-261/">www.blender.org/development/release-logs/blender-261/</a><br>
+       Full release log                        <a href="http://www.blender.org/development/release-logs/blender-262/">www.blender.org/development/release-logs/blender-262/</a><br>
        Tutorials                       <a href="http://www.blender.org/education-help/">www.blender.org/education-help/</a>    <br>
        Manual                  <a href="http://wiki.blender.org/index.php/Doc:Manual">wiki.blender.org/index.php/Doc:Manual</a><br>
        User Forum                      <a href="http://www.blenderartists.org">www.blenderartists.org</a><br>
index 8752defcc15f50b284f7af6ab4690c8023d6e535..a045f47cb40293717d15c478173f91fd1a874252 100644 (file)
@@ -197,7 +197,6 @@ void BLF_dir_free(char **dirs, int count);
 #define BLF_KERNING_DEFAULT (1<<3)
 #define BLF_MATRIX (1<<4)
 #define BLF_ASPECT (1<<5)
-#define BLF_TEXFILTER (1<<6)
 
 #define BLF_DRAW_STR_DUMMY_MAX 1024
 
index ab7ef8072a9808741fe34db50ec78f2065ab3bdb..f0cfcdc97b9a1d4f3de36359b68d03a5ce73d76e 100644 (file)
@@ -54,8 +54,6 @@
 #include "blf_internal_types.h"
 #include "blf_internal.h"
 
-#define _BLF_PADDING 3
-#define _BLF_MIPMAP_LEVELS 3
 
 GlyphCacheBLF *blf_glyph_cache_find(FontBLF *font, int size, int dpi)
 {
@@ -89,11 +87,7 @@ GlyphCacheBLF *blf_glyph_cache_new(FontBLF *font)
        gc->cur_tex= -1;
        gc->x_offs= 0;
        gc->y_offs= 0;
-       /* Increase padding for each mipmap level: 0->3, 1->4, 2->6, 3->10, ... */
-       if (font->flags & BLF_TEXFILTER)
-               gc->pad= pow(2, _BLF_MIPMAP_LEVELS) + 2;
-       else
-               gc->pad= _BLF_PADDING;
+       gc->pad= 3;
 
        gc->num_glyphs= font->face->num_glyphs;
        gc->rem_glyphs= font->face->num_glyphs;
@@ -302,17 +296,13 @@ void blf_glyph_free(GlyphBLF *g)
 
 static void blf_texture_draw(float uv[2][2], float dx, float y1, float dx1, float y2)
 {
-       /* When a string is being rendered as individual glyphs (as in the game
-        * engine), the leading edge needs to be raised a fraction to prevent
-        * z-fighting for kerned characters. - z0r */
-       const float twist = (dx1 - dx) * 0.0002f;
-
+       
        glBegin(GL_QUADS);
        glTexCoord2f(uv[0][0], uv[0][1]);
-       glVertex3f(dx, y1, twist);
+       glVertex2f(dx, y1);
        
        glTexCoord2f(uv[0][0], uv[1][1]);
-       glVertex3f(dx, y2, twist);
+       glVertex2f(dx, y2);
        
        glTexCoord2f(uv[1][0], uv[1][1]);
        glVertex2f(dx1, y2);
@@ -415,15 +405,6 @@ int blf_glyph_render(FontBLF *font, GlyphBLF *g, float x, float y)
 
                glBindTexture(GL_TEXTURE_2D, g->tex);
                glTexSubImage2D(GL_TEXTURE_2D, 0, g->xoff, g->yoff, g->width, g->height, GL_ALPHA, GL_UNSIGNED_BYTE, g->bitmap);
-               if (font->flags & BLF_TEXFILTER) {
-                       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0);
-                       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL,
-                                       _BLF_MIPMAP_LEVELS);
-                       glGenerateMipmap(GL_TEXTURE_2D);
-                       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-                       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
-                                       GL_LINEAR_MIPMAP_LINEAR);
-               }
                glPopClientAttrib();
 
                g->uv[0][0]= ((float)g->xoff) / ((float)gc->p2_width);
index 50fef032b75ff3271eadb0c01c0c8db07f0ba4d8..7236015054d5b0f4b28ff3cb59c5ce1a4ba474fa 100644 (file)
@@ -51,7 +51,7 @@ extern "C" {
                /* can be left blank, otherwise a,b,c... etc with no quotes */
 #define BLENDER_VERSION_CHAR   
                /* alpha/beta/rc/release, docs use this */
-#define BLENDER_VERSION_CYCLE  beta
+#define BLENDER_VERSION_CYCLE  rc
 
 extern char versionstr[]; /* from blender.c */
 
index e99dece0f7cf777516aa28d4d83426eded1f5e7d..4c42d1e4a6c688de3f8c49eab5adfa2388e882bd 100644 (file)
@@ -74,7 +74,7 @@ void filepath_ffmpeg(char* string, struct RenderData* rd);
 
 extern void ffmpeg_set_preset(struct RenderData *rd, int preset);
 extern void ffmpeg_verify_image_type(struct RenderData *rd, struct ImageFormatData *imf);
-extern void ffmpeg_verify_lossless_format(struct RenderData *rd, struct ImageFormatData *imf);
+extern void ffmpeg_verify_codec_settings(struct RenderData *rd);
 
 extern struct IDProperty *ffmpeg_property_add(struct RenderData *Rd, const char *type, int opt_index, int parent_index);
 extern int ffmpeg_property_add_string(struct RenderData *rd, const char *type, const char *str);
index 3f3e3b80042a14ec93e1b387306b58796ab71489..a95cd8d00d872462f52626567ba2525c7e28417b 100644 (file)
@@ -650,11 +650,11 @@ void defvert_remove_group(MDeformVert *dvert, MDeformWeight *dw)
                                        dvert->dw[i]= dvert->dw[dvert->totweight];
                                }
                                memcpy(dw_new, dvert->dw, sizeof(MDeformWeight) * dvert->totweight);
-                               MEM_freeN(dvert->dw);
 #else
                                memcpy(dw_new, dvert->dw, sizeof(MDeformWeight)*i);
                                memcpy(dw_new+i, dvert->dw+i+1, sizeof(MDeformWeight)*(dvert->totweight-i));
 #endif
+                               MEM_freeN(dvert->dw);
                        }
                        dvert->dw = dw_new;
                }
index e67056cdd9e1ada39983826eb4057adfc88ee268..19fc75a88fe8ac36949aca9b5c0e4ee97b4bf21a 100644 (file)
@@ -398,8 +398,11 @@ static void build_dag_object(DagForest *dag, DagNode *scenenode, Scene *scene, O
                                                                // fprintf(stderr,"armature %s target :%s \n", ob->id.name, target->id.name);
                                                                node3 = dag_get_node(dag, ct->tar);
                                                                
-                                                               if (ct->subtarget[0])
+                                                               if (ct->subtarget[0]) {
                                                                        dag_add_relation(dag,node3,node, DAG_RL_OB_DATA|DAG_RL_DATA_DATA, cti->name);
+                                                                       if(ct->tar->type == OB_MESH)
+                                                                               node3->customdata_mask |= CD_MASK_MDEFORMVERT;
+                                                               }
                                                                else if(ELEM3(con->type, CONSTRAINT_TYPE_FOLLOWPATH, CONSTRAINT_TYPE_CLAMPTO, CONSTRAINT_TYPE_SPLINEIK))        
                                                                        dag_add_relation(dag,node3,node, DAG_RL_DATA_DATA|DAG_RL_OB_DATA, cti->name);
                                                                else
index a7aa4836be5e26868690e8bb23338ba019a68087..c7dec3d8f4b2c2f99033d5d3da1a7628c3920f30 100644 (file)
@@ -58,7 +58,7 @@ static IDType idtypes[]= {
        { ID_ID,                "ID",           "ids",                  0}, /* plural is fake */
        { ID_IM,                "Image",        "images",               IDTYPE_FLAGS_ISLINKABLE}, 
        { ID_IP,                "Ipo",          "ipos",                 IDTYPE_FLAGS_ISLINKABLE},  /* deprecated */
-       { ID_KE,                "Key",          "keys",                 0}, 
+       { ID_KE,                "Key",          "shape_keys",   0}, 
        { ID_LA,                "Lamp",         "lamps",                IDTYPE_FLAGS_ISLINKABLE}, 
        { ID_LI,                "Library",      "libraries",    0}, 
        { ID_LS,                "FreestyleLineStyle", "linestyles", IDTYPE_FLAGS_ISLINKABLE}, 
index cba92e7a14c846e0fcff4ac6f4e5c446d9c49db5..f9f02751d820ef6f46e9a0b10094cc82cb38153c 100644 (file)
@@ -1315,7 +1315,7 @@ UvVertMap *make_uv_vert_map(struct MFace *mface, struct MTFace *tface, unsigned
        for(a=0; a<totface; a++, mf++)
                if(!selected || (!(mf->flag & ME_HIDE) && (mf->flag & ME_FACE_SEL)))
                        totuv += (mf->v4)? 4: 3;
-               
+
        if(totuv==0)
                return NULL;
        
index 3a4ae5797a0b58671ec025ec119288236ea40d3a..cd3933d3c4479d4bc4419b59f9066c6e06c8c856 100644 (file)
@@ -4524,7 +4524,6 @@ void psys_make_billboard(ParticleBillboardData *bb, float xvec[3], float yvec[3]
        madd_v3_v3fl(center, yvec, bb->offset[1]);
 }
 
-
 void psys_apply_hair_lattice(Scene *scene, Object *ob, ParticleSystem *psys)
 {
        ParticleSimulationData sim= {0};
index e4fa2bde63b5e18b9f0286d3b3523e55ce7d4391..f0dea976aa9488bd5749c7c508c5f2e9f3f0fcd5 100644 (file)
 #include "DNA_object_types.h"
 #include "DNA_scene_types.h"
 
+#include "BLI_utildefines.h"
 #include "BLI_blenlib.h"
 #include "BLI_edgehash.h"
 #include "BLI_math.h"
 #include "BLI_memarena.h"
 #include "BLI_pbvh.h"
-#include "BLI_utildefines.h"
 
 #include "BKE_cdderivedmesh.h"
 #include "BKE_global.h"
index 0b043e26ab7e09586bb39a579a94864e4b8ff04b..bae4d9c4b4e7215a30c44ada05540a7abd523250 100644 (file)
@@ -49,6 +49,8 @@
 #  include "AUD_C-API.h"
 #endif
 
+#include "BLI_utildefines.h"
+
 #include "BKE_global.h"
 #include "BKE_idprop.h"
 #include "BKE_main.h"
@@ -250,7 +252,8 @@ static int write_video_frame(RenderData *rd, int cfra, AVFrame* frame, ReportLis
 
        outsize = avcodec_encode_video(c, video_buffer, video_buffersize, 
                                           frame);
-       if (outsize != 0) {
+
+       if (outsize > 0) {
                AVPacket packet;
                av_init_packet(&packet);
 
@@ -268,14 +271,13 @@ static int write_video_frame(RenderData *rd, int cfra, AVFrame* frame, ReportLis
                packet.data = video_buffer;
                packet.size = outsize;
                ret = av_interleaved_write_frame(outfile, &packet);
-       } else {
-               ret = 0;
+               success = (ret == 0);
+       } else if (outsize < 0) {
+               success = 0;
        }
 
-       if (ret != 0) {
-               success= 0;
+       if (!success)
                BKE_report(reports, RPT_ERROR, "Error writing frame.");
-       }
 
        return success;
 }
@@ -483,7 +485,7 @@ static AVStream* alloc_video_stream(RenderData *rd, int codec_id, AVFormatContex
        if (!codec) return NULL;
        
        /* Be sure to use the correct pixel format(e.g. RGB, YUV) */
-       
+
        if (codec->pix_fmts) {
                c->pix_fmt = codec->pix_fmts[0];
        } else {
@@ -509,6 +511,12 @@ static AVStream* alloc_video_stream(RenderData *rd, int codec_id, AVFormatContex
                c->pix_fmt = PIX_FMT_RGB32;
        }
 
+       if ( codec_id == CODEC_ID_QTRLE ) {
+               if (rd->im_format.planes ==  R_IMF_PLANES_RGBA) {
+                       c->pix_fmt = PIX_FMT_ARGB;
+               }
+       }
+
        if ((of->oformat->flags & AVFMT_GLOBALHEADER)
 //             || !strcmp(of->oformat->name, "mp4")
 //         || !strcmp(of->oformat->name, "mov")
@@ -538,7 +546,19 @@ static AVStream* alloc_video_stream(RenderData *rd, int codec_id, AVFormatContex
                return NULL;
        }
 
-       video_buffersize = avpicture_get_size(c->pix_fmt, c->width, c->height);
+       if ( codec_id == CODEC_ID_QTRLE ) {
+               // normally it should be enough to have buffer with actual image size,
+               // but some codecs like QTRLE might store extra information in this buffer,
+               // so it should be a way larger
+
+               // maximum video buffer size is 6-bytes per pixel, plus DPX header size (1664)
+               // (from FFmpeg sources)
+               int size = c->width * c->height;
+               video_buffersize = 7*size + 10000;
+       }
+       else
+               video_buffersize = avpicture_get_size(c->pix_fmt, c->width, c->height);
+
        video_buffer = (uint8_t*)MEM_mallocN(video_buffersize*sizeof(uint8_t),
                                                 "FFMPEG video buffer");
        
@@ -1200,12 +1220,14 @@ int ffmpeg_property_add_string(RenderData *rd, const char * type, const char * s
        return 1;
 }
 
-static void ffmpeg_set_expert_options(RenderData *rd, int preset)
+static void ffmpeg_set_expert_options(RenderData *rd)
 {
+       int codec_id = rd->ffcodecdata.codec;
+
        if(rd->ffcodecdata.properties)
                IDP_FreeProperty(rd->ffcodecdata.properties);
 
-       if(preset == FFMPEG_PRESET_H264) {
+       if(codec_id == CODEC_ID_H264) {
                /*
                 * All options here are for x264, but must be set via ffmpeg.
                 * The names are therefore different - Search for "x264 to FFmpeg option mapping"
@@ -1248,6 +1270,12 @@ static void ffmpeg_set_expert_options(RenderData *rd, int preset)
                if(rd->ffcodecdata.flags & FFMPEG_LOSSLESS_OUTPUT)
                        ffmpeg_property_add_string(rd, "video", "cqp:0");
        }
+#if 0  /* disabled for after release */
+       else if(codec_id == CODEC_ID_DNXHD) {
+               if(rd->ffcodecdata.flags & FFMPEG_LOSSLESS_OUTPUT)
+                       ffmpeg_property_add_string(rd, "video", "mbd:rd");
+       }
+#endif
 }
 
 void ffmpeg_set_preset(RenderData *rd, int preset)
@@ -1317,7 +1345,6 @@ void ffmpeg_set_preset(RenderData *rd, int preset)
                rd->ffcodecdata.mux_packet_size = 2048;
                rd->ffcodecdata.mux_rate = 10080000;
 
-               ffmpeg_set_expert_options(rd, preset);
                break;
 
        case FFMPEG_PRESET_THEORA:
@@ -1341,6 +1368,8 @@ void ffmpeg_set_preset(RenderData *rd, int preset)
                break;
 
        }
+
+       ffmpeg_set_expert_options(rd);
 }
 
 void ffmpeg_verify_image_type(RenderData *rd, ImageFormatData *imf)
@@ -1388,11 +1417,9 @@ void ffmpeg_verify_image_type(RenderData *rd, ImageFormatData *imf)
        }
 }
 
-void ffmpeg_verify_lossless_format(RenderData *rd, ImageFormatData *imf)
+void ffmpeg_verify_codec_settings(RenderData *rd)
 {
-       if(imf->imtype == R_IMF_IMTYPE_H264) {
-               ffmpeg_set_expert_options(rd, FFMPEG_PRESET_H264);
-       }
+       ffmpeg_set_expert_options(rd);
 }
 
 #endif
index 80953b2dbbbc6b10869edccdb7b4001ce974e88a..0f1a7caf96a5a7ca25e10b1d553f7298a1a3c398 100644 (file)
@@ -4771,8 +4771,8 @@ static void lib_link_scene(FileData *fd, Main *main)
                        (void)marker;
 #endif
 
-                       if(sce->ed)
-                               seq_update_muting(sce->ed);
+                       seq_update_muting(sce->ed);
+                       seq_update_sound_bounds_all(sce);
                        
                        if(sce->nodetree) {
                                lib_link_ntree(fd, &sce->id, sce->nodetree);
index 7b57ed243a17167350572b20e270153e1cc3ce57..c2d8c356aae19663e28c270ec23428809a670c4c 100644 (file)
@@ -773,6 +773,27 @@ std::string AnimationExporter::create_4x4_source(std::vector<float> &frames , Ob
                        copy_m4_m4(mat, pchan->pose_mat);
                UnitConverter converter;
 
+               // SECOND_LIFE_COMPATIBILITY
+               // AFAIK animation to second life is via BVH, but no
+               // reason to not have the collada-animation be correct
+               if(export_settings->second_life)
+               {
+                       float temp[4][4];
+                       copy_m4_m4(temp, bone->arm_mat);
+                       temp[3][0] = temp[3][1] = temp[3][2] = 0.0f;
+                       invert_m4(temp);
+
+                       mult_m4_m4m4(mat, mat, temp);
+
+                       if(bone->parent)
+                       {
+                               copy_m4_m4(temp, bone->parent->arm_mat);
+                               temp[3][0] = temp[3][1] = temp[3][2] = 0.0f;
+
+                               mult_m4_m4m4(mat, temp, mat);
+                       }
+               }
+
                float outmat[4][4];
                converter.mat4_to_dae(outmat,mat);
 
index c3a5c7a5383d1515331124d282df7c5a599554dc..ba7ec6859cc92f2e35f16fbb2197e07d0af4fa14 100644 (file)
@@ -83,7 +83,9 @@ private:
 
 public:
 
-       AnimationExporter(COLLADASW::StreamWriter *sw): COLLADASW::LibraryAnimations(sw) { this->sw = sw; }
+       AnimationExporter(COLLADASW::StreamWriter *sw, const ExportSettings *export_settings):
+                       COLLADASW::LibraryAnimations(sw), export_settings(export_settings)
+                       { this->sw = sw; }
        
 
        void exportAnimations(Scene *sce);
@@ -92,6 +94,7 @@ public:
        void operator() (Object *ob); 
        
 protected:
+       const ExportSettings *export_settings;
 
        void dae_animation(Object* ob, FCurve *fcu, char* transformName , bool is_param, Material *ma = NULL);
 
index fcfc197ce804a3de2b51296cda96bb07733896b1..0e89f2db74bed49f21b836fa5c4856692f7bf6c3 100644 (file)
@@ -221,8 +221,31 @@ void ArmatureExporter::add_bone_transform(Object *ob_arm, Bone *bone, COLLADASW:
                mult_m4_m4m4(mat, invpar, pchan->pose_mat);
        }
        else {
-               // get world-space from armature-space
-               mult_m4_m4m4(mat, ob_arm->obmat, pchan->pose_mat);
+               copy_m4_m4(mat, pchan->pose_mat);
+               // Why? Joint's localspace is still it's parent node
+               //get world-space from armature-space
+               //mult_m4_m4m4(mat, ob_arm->obmat, pchan->pose_mat);
+       }
+
+       // SECOND_LIFE_COMPATIBILITY
+       if(export_settings->second_life)
+       {
+               // Remove rotations vs armature from transform
+               // parent_rest_rot * mat * irest_rot
+               float temp[4][4];
+               copy_m4_m4(temp, bone->arm_mat);
+               temp[3][0] = temp[3][1] = temp[3][2] = 0.0f;
+               invert_m4(temp);
+
+               mult_m4_m4m4(mat, mat, temp);
+
+               if(bone->parent)
+               {
+                       copy_m4_m4(temp, bone->parent->arm_mat);
+                       temp[3][0] = temp[3][1] = temp[3][2] = 0.0f;
+
+                       mult_m4_m4m4(mat, temp, mat);
+               }
        }
 
        TransformWriter::add_node_transform(node, mat,NULL );
@@ -341,10 +364,16 @@ std::string ArmatureExporter::add_inv_bind_mats_source(Object *ob_arm, ListBase
 {
        std::string source_id = controller_id + BIND_POSES_SOURCE_ID_SUFFIX;
 
+       int totjoint = 0;
+       for (bDeformGroup *def = (bDeformGroup*)defbase->first; def; def = def->next) {
+               if (is_bone_defgroup(ob_arm, def))
+                       totjoint++;
+       }
+
        COLLADASW::FloatSourceF source(mSW);
        source.setId(source_id);
        source.setArrayId(source_id + ARRAY_ID_SUFFIX);
-       source.setAccessorCount(BLI_countlist(defbase));
+       source.setAccessorCount(totjoint); //BLI_countlist(defbase));
        source.setAccessorStride(16);
        
        source.setParameterTypeName(&COLLADASW::CSWC::CSW_VALUE_TYPE_FLOAT4x4);
@@ -366,16 +395,27 @@ std::string ArmatureExporter::add_inv_bind_mats_source(Object *ob_arm, ListBase
 
        for (bDeformGroup *def = (bDeformGroup*)defbase->first; def; def = def->next) {
                if (is_bone_defgroup(ob_arm, def)) {
-
                        bPoseChannel *pchan = get_pose_channel(pose, def->name);
 
                        float mat[4][4];
                        float world[4][4];
                        float inv_bind_mat[4][4];
 
-                       // make world-space matrix, arm_mat is armature-space
-                       mult_m4_m4m4(world, ob_arm->obmat, pchan->bone->arm_mat);
-                       
+                       // SECOND_LIFE_COMPATIBILITY
+                       if(export_settings->second_life)
+                       {
+                               // Only translations, no rotation vs armature
+                               float temp[4][4];
+                               unit_m4(temp);
+                               copy_v3_v3(temp[3], pchan->bone->arm_mat[3]);
+                               mult_m4_m4m4(world, ob_arm->obmat, temp);
+                       }
+                       else
+                       {
+                               // make world-space matrix, arm_mat is armature-space
+                               mult_m4_m4m4(world, ob_arm->obmat, pchan->bone->arm_mat);
+                       }
+
                        invert_m4_m4(mat, world);
                        converter.mat4_to_dae(inv_bind_mat, mat);
 
index 6e8abc083580a27c44c5250c0eaa009e5682f439..6e04a1773bb6118e715fb3ce22e9390272bafb9e 100644 (file)
@@ -257,7 +257,7 @@ void DocumentExporter::exportCurrentScene(Scene *sce)
        }
 
        // <library_animations>
-       AnimationExporter ae(&sw);
+       AnimationExporter ae(&sw, this->export_settings);
        ae.exportAnimations(sce);
 
        // <library_controllers>
index 1ad7c8c370e7b52e470f314aad5a2ae8781abe0d..80e20acbe4895635c82cbdcba8d0751089bb9793 100644 (file)
@@ -31,6 +31,7 @@ struct ExportSettings
 {
  public:
  bool selected;
+ bool second_life;
  char *filepath;
 };
 
index 379a0619040a9ff13dd716eab1255378d3f7e3c0..a2bca6733e1d4670d78055173fd09792947c36f2 100644 (file)
@@ -59,6 +59,7 @@ void TransformWriter::add_node_transform(COLLADASW::Node& node, float mat[][4],
 
 void TransformWriter::add_node_transform_ob(COLLADASW::Node& node, Object *ob)
 {
+       /*
        float rot[3], loc[3], scale[3];
 
        if (ob->parent) {
@@ -91,6 +92,27 @@ void TransformWriter::add_node_transform_ob(COLLADASW::Node& node, Object *ob)
        }
 
        add_transform(node, loc, rot, scale);
+       */
+
+       /* Using parentinv should allow use of existing curves */
+       // If parentinv is identity don't add it.
+       bool add_parinv = false;
+       for(int i = 0; i < 16; ++i)
+       {
+               float f = (i%4 == i/4) ? 1.0f : 0.0f ;
+               if(ob->parentinv[i%4][i/4] != f) add_parinv = true;
+       }
+
+       // Eat this 3ds Max et friends
+       if(add_parinv)
+       {
+               double dmat[4][4];
+               UnitConverter converter;
+               converter.mat4_to_dae_double(dmat, ob->parentinv);
+               node.addMatrix("parentinverse", dmat);
+       }
+
+       add_transform(node, ob->loc, ob->rot, ob->size);
 }
 
 void TransformWriter::add_node_transform_identity(COLLADASW::Node& node)
index 0731faceeedc412169a52db8858ca0690ca1b9d9..39114f6543b725fbca4299dbab555b3aa2778c88 100644 (file)
@@ -49,11 +49,12 @@ extern "C"
                return 0;
        }
 
-       int collada_export(Scene *sce, const char *filepath, int selected)
+       int collada_export(Scene *sce, const char *filepath, int selected, int second_life)
        {
                ExportSettings export_settings;
                
                export_settings.selected = selected != 0;
+               export_settings.second_life = second_life != 0;
                export_settings.filepath = (char *)filepath;
 
                /* annoying, collada crashes if file cant be created! [#27162] */
index b86f37b7af62a9ae407a265ec994eb851100635d..161977368db8204fc71c7f8ab8689823cfd42456 100644 (file)
@@ -37,7 +37,7 @@ extern "C" {
         * both return 1 on success, 0 on error
         */
        int collada_import(bContext *C, const char *filepath);
-       int collada_export(Scene *sce, const char *filepath, int selected);
+       int collada_export(Scene *sce, const char *filepath, int selected, int second_life);
 #ifdef __cplusplus
 }
 #endif
index 216bb8d0e082071228b9ae27f6db17302d069a81..79d767be63cb04d989583355195e77110931475c 100644 (file)
@@ -439,22 +439,28 @@ static void draw_marker(View2D *v2d, TimeMarker *marker, int cfra, int flag)
 void draw_markers_time(const bContext *C, int flag)
 {
        ListBase *markers= ED_context_get_markers(C);
-       View2D *v2d= UI_view2d_fromcontext(C);
+       View2D *v2d;
        TimeMarker *marker;
-       
+       Scene *scene;
+
        if (markers == NULL)
                return;
-       
+
+       scene = CTX_data_scene(C);
+       v2d = UI_view2d_fromcontext(C);
+
        /* unselected markers are drawn at the first time */
        for (marker= markers->first; marker; marker= marker->next) {
-               if ((marker->flag & SELECT) == 0) 
-                       draw_marker(v2d, marker, CTX_data_scene(C)->r.cfra, flag);
+               if ((marker->flag & SELECT) == 0) {
+                       draw_marker(v2d, marker, scene->r.cfra, flag);
+               }
        }
        
        /* selected markers are drawn later */
        for (marker= markers->first; marker; marker= marker->next) {
-               if (marker->flag & SELECT) 
-                       draw_marker(v2d, marker, CTX_data_scene(C)->r.cfra, flag);
+               if (marker->flag & SELECT) {
+                       draw_marker(v2d, marker, scene->r.cfra, flag);
+               }
        }
 }
 
@@ -550,7 +556,8 @@ static int ed_marker_add(bContext *C, wmOperator *UNUSED(op))
        if (markers == NULL)
                return OPERATOR_CANCELLED;
        
-       /* two markers can't be at the same place */
+       /* prefer not having 2 markers at the same place,
+        * though the user can move them to overlap once added */
        for (marker= markers->first; marker; marker= marker->next) {
                if (marker->frame == frame) 
                        return OPERATOR_CANCELLED;
index 8c20d9be4f88396aa193aeebe2e446d1c07cbbf9..5c762ca61cc7515204eea3af485418df04760070 100644 (file)
@@ -3389,8 +3389,12 @@ static int convertspline(short type, Nurb *nu)
                        nu->orderu= 4;
                        nu->orderv= 1;
                        nu->type = type;
+
+#if 0          /* UNUSED */
                        if(nu->flagu & CU_NURB_CYCLIC) c= nu->orderu-1; 
                        else c= 0;
+#endif
+
                        if(type== CU_NURBS) {
                                nu->flagu &= CU_NURB_CYCLIC; /* disable all flags except for cyclic */
                                nu->flagu |= CU_NURB_BEZIER;
index 6c93727bf55394d19c43d70b2ab4460fa9397239..99572345c96539be706ccbf88883691eb18186aa 100644 (file)
@@ -1117,14 +1117,6 @@ static int gp_session_initdata (bContext *C, tGPsdata *p)
                        p->custom_color[1]= 0.0f;
                        p->custom_color[2]= 0.5f;
                        p->custom_color[3]= 0.9f;
-
-                       /* check that gpencil data is allowed to be drawn */
-                       if ((sc->flag & SC_SHOW_GPENCIL)==0) {
-                               p->status= GP_STATUS_ERROR;
-                               if (G.f & G_DEBUG)
-                                       printf("Error: In active view, Grease Pencil not shown \n");
-                               return 0;
-                       }
                }
                        break;
 
index cadc57c9881c4304b0384ff8a8fa8bede0912fdf..7e413cf75f717cc7df8d94c910c639f9081d93f5 100644 (file)
@@ -5859,15 +5859,17 @@ static int ui_handle_list_event(bContext *C, wmEvent *event, ARegion *ar)
                        retval= WM_UI_HANDLER_BREAK;
                }
                else if(ELEM(event->type, WHEELUPMOUSE, WHEELDOWNMOUSE)) {
-                       /* list template will clamp */
-                       if(event->type == WHEELUPMOUSE)
-                               pa->list_scroll--;
-                       else
-                               pa->list_scroll++;
+                       if(pa->list_last_len > pa->list_size) {
+                               /* list template will clamp */
+                               if(event->type == WHEELUPMOUSE)
+                                       pa->list_scroll--;
+                               else
+                                       pa->list_scroll++;
 
-                       ED_region_tag_redraw(ar);
+                               ED_region_tag_redraw(ar);
 
-                       retval= WM_UI_HANDLER_BREAK;
+                               retval= WM_UI_HANDLER_BREAK;
+                       }
                }
        }
 
index 40cf0213203fb3f7104019e92fe991afd03870b3..0521ecbf0d093cdc744622cfb956ab910b4e951d 100644 (file)
@@ -103,7 +103,8 @@ static int eyedropper_cancel(bContext *C, wmOperator *op)
 static void eyedropper_sample(bContext *C, Eyedropper *eye, int mx, int my)
 {
        if(RNA_property_type(eye->prop) == PROP_FLOAT) {
-               const int color_manage = CTX_data_scene(C)->r.color_mgt_flag & R_COLOR_MANAGEMENT;
+               Scene *scene = CTX_data_scene(C);
+               const int color_manage = scene->r.color_mgt_flag & R_COLOR_MANAGEMENT;
                float col[4];
        
                RNA_property_float_get_array(&eye->ptr, eye->prop, col);
index daaca41393b0bcc426131f4e90aa67f858f202d6..0b468ef4c86065040f517c07f0a0112b0c1f5276 100644 (file)
@@ -594,9 +594,9 @@ static void ui_theme_init_new(bTheme *btheme)
 
 
 /* initialize default theme
  Note: when you add new colors, created & saved themes need initialized
-   use function below, init_userdef_do_versions() 
-*/
* Note: when you add new colors, created & saved themes need initialized
+ * use function below, init_userdef_do_versions()
+ */
 void ui_theme_init_default(void)
 {
        bTheme *btheme;
@@ -617,7 +617,9 @@ void ui_theme_init_default(void)
        /* UI buttons */
        ui_widget_color_init(&btheme->tui);
        btheme->tui.iconfile[0]= 0;
-       
+       btheme->tui.panel.show_header = FALSE;
+       SETCOL(btheme->tui.panel.header, 0, 0, 0, 25);
+
        /* Bone Color Sets */
        ui_theme_init_boneColorSets(btheme);
        
index 64fa322f2a558606ba18405e905d92b240649c8b..043e02ab1d0ce73d026f2bc270326342818e4f53 100644 (file)
@@ -1036,6 +1036,7 @@ static void make_prim(Object *obedit, int type, float mat[4][4], int tot, int se
        float phi, phid, vec[3];
        float q[4], cmat[3][3], nor[3]= {0.0, 0.0, 0.0};
        short a, b;
+       float len, len2, vec2[3];
        
        EM_clear_flag_all(em, SELECT);
 
@@ -1117,7 +1118,19 @@ static void make_prim(Object *obedit, int type, float mat[4][4], int tot, int se
                        rotateflag(em, 2, v1->co, cmat);
                }
 
-               removedoublesflag(em, 4, 0, 0.0001);
+               /* length of one segment on meridian */
+               len= 2*dia*sinf(phid / 2.0f);
+
+               /* length of one segment in shortest parallen */
+               vec[0]= dia*sinf(phid);
+               vec[1]= 0.0;
+               vec[2]= dia*cosf(phid);
+
+               mul_v3_m3v3(vec2, cmat, vec);
+               len2= len_v3v3(vec, vec2);
+
+               /* use shortest segment length divided by 3 as merge threshold */
+               removedoublesflag(em, 4, 0, MIN2(len, len2) / 3.0f);
 
                /* and now do imat */
                eve= em->verts.first;
index 5004559ba605dd2cedeb8eb6ca004a34aec08899..d7ec83e64e362a5a24a5053fff35d15a5740bcee 100644 (file)
@@ -2482,6 +2482,8 @@ static void linked_limit_default(bContext *C, wmOperator *op)
                EditMesh *em= BKE_mesh_get_editmesh(obedit->data);
                if(em->selectmode == SCE_SELECT_FACE)
                        RNA_boolean_set(op->ptr, "limit", TRUE);
+               else
+                       RNA_boolean_set(op->ptr, "limit", FALSE);
        }
 }
 
index 6ff62b16bde0df04300bdba4628bbf4484a6f67b..c317eabd48a21dda8df78424d9c75fde3093bced 100644 (file)
@@ -380,8 +380,16 @@ static int ringsel_invoke (bContext *C, wmOperator *op, wmEvent *evt)
        lcd = op->customdata;
        
        if (lcd->em->selectmode == SCE_SELECT_FACE) {
+               PointerRNA props_ptr;
+               int extend = RNA_boolean_get(op->ptr, "extend");
+
                ringsel_exit(op);
-               WM_operator_name_call(C, "MESH_OT_loop_select", WM_OP_INVOKE_REGION_WIN, NULL);
+
+               WM_operator_properties_create(&props_ptr, "MESH_OT_loop_select");
+               RNA_boolean_set(&props_ptr, "extend", extend);
+               WM_operator_name_call(C, "MESH_OT_loop_select", WM_OP_INVOKE_REGION_WIN, &props_ptr);
+               WM_operator_properties_free(&props_ptr);
+
                return OPERATOR_CANCELLED;
        }
 
index c7635bcf2cca51f4bc7e7d37d1b2d266879b1ef1..f689fb049fea7f4e0625ea5ca4d8a7b842aa6c77 100644 (file)
@@ -36,6 +36,7 @@
 
 #include "ED_mball.h"
 #include "ED_screen.h"
+#include "ED_object.h"
 
 #include "BLI_utildefines.h"
 
@@ -77,5 +78,7 @@ void ED_keymap_metaball(wmKeyConfig *keyconf)
                RNA_enum_set(kmi->ptr, "action", SEL_TOGGLE);
        kmi = WM_keymap_add_item(keymap, "MBALL_OT_select_all", IKEY, KM_PRESS, KM_CTRL, 0);
                RNA_enum_set(kmi->ptr, "action", SEL_INVERT);
+
+       ED_object_generic_keymap(keyconf, keymap, 3);
 }
 
index a331703690b199a76bf2ead160dc9079118c6d3b..49fa7837de654c36a15b9fba721522382918d3e0 100644 (file)
@@ -586,7 +586,7 @@ static void draw_marker_areas(SpaceClip *sc, MovieTrackingTrack *track, MovieTra
        }
 
        /* pyramid */
-       if(sel && TRACK_SELECTED(track) && (sc->flag&SC_SHOW_PYRAMID_LEVELS) && (track->tracker==TRACKER_KLT) && (marker->flag&MARKER_DISABLED)==0) {
+       if(sel && TRACK_SELECTED(track) && (track->tracker==TRACKER_KLT) && (marker->flag&MARKER_DISABLED)==0) {
                if(track->flag&TRACK_LOCKED) {
                        if(act) UI_ThemeColor(TH_ACT_MARKER);
                        else if(track->pat_flag&SELECT) UI_ThemeColorShade(TH_LOCK_MARKER, 64);
@@ -1178,6 +1178,11 @@ static void draw_distortion(SpaceClip *sc, ARegion *ar, MovieClip *clip, int wid
                while(layer) {
                        bGPDframe *frame= layer->frames.first;
 
+                       if(layer->flag & GP_LAYER_HIDE) {
+                               layer= layer->next;
+                               continue;
+                       }
+
                        glColor4fv(layer->color);
                        glLineWidth(layer->thickness);
                        glPointSize((float)(layer->thickness + 2));
@@ -1307,7 +1312,7 @@ void clip_draw_grease_pencil(bContext *C, int onlyv2d)
        MovieClip *clip= ED_space_clip(sc);
        ImBuf *ibuf;
 
-       if((sc->flag&SC_SHOW_GPENCIL)==0 || !clip)
+       if(!clip)
                return;
 
        if(onlyv2d) {
index 0d34cc2cfbf8d4600962277a67fa2f1ab11b0eab..97da05e3f764941ba0c9c6cd386672885467c502 100644 (file)
@@ -157,7 +157,7 @@ static SpaceLink *clip_new(const bContext *C)
 
        sc= MEM_callocN(sizeof(SpaceClip), "initclip");
        sc->spacetype= SPACE_CLIP;
-       sc->flag= SC_SHOW_MARKER_PATTERN|SC_SHOW_TRACK_PATH|SC_SHOW_GPENCIL|SC_MANUAL_CALIBRATION|SC_SHOW_GRAPH_TRACKS|SC_SHOW_GRAPH_FRAMES;
+       sc->flag= SC_SHOW_MARKER_PATTERN|SC_SHOW_TRACK_PATH|SC_MANUAL_CALIBRATION|SC_SHOW_GRAPH_TRACKS|SC_SHOW_GRAPH_FRAMES;
        sc->zoom= 1.0f;
        sc->path_length= 20;
        sc->scopes.track_preview_height= 120;
@@ -530,6 +530,12 @@ static void clip_keymap(struct wmKeyConfig *keyconf)
        kmi= WM_keymap_add_item(keymap, "WM_OT_context_toggle", LKEY, KM_PRESS, 0, 0);
        RNA_string_set(kmi->ptr, "data_path", "space_data.lock_selection");
 
+       kmi= WM_keymap_add_item(keymap, "WM_OT_context_toggle", DKEY, KM_PRESS, KM_ALT, 0);
+       RNA_string_set(kmi->ptr, "data_path", "space_data.show_disabled");
+
+       kmi= WM_keymap_add_item(keymap, "WM_OT_context_toggle", SKEY, KM_PRESS, KM_ALT, 0);
+       RNA_string_set(kmi->ptr, "data_path", "space_data.show_marker_search");
+
        kmi= WM_keymap_add_item(keymap, "WM_OT_context_toggle", MKEY, KM_PRESS, 0, 0);
        RNA_string_set(kmi->ptr, "data_path", "space_data.use_mute_footage");
 
@@ -587,6 +593,7 @@ static void clip_refresh(const bContext *C, ScrArea *sa)
 {
        wmWindowManager *wm= CTX_wm_manager(C);
        wmWindow *window= CTX_wm_window(C);
+       Scene *scene = CTX_data_scene(C);
        SpaceClip *sc= (SpaceClip *)sa->spacedata.first;
        ARegion *ar_main= BKE_area_find_region_type(sa, RGN_TYPE_WINDOW);
        ARegion *ar_preview= clip_has_preview_region(C, sa);
@@ -628,7 +635,7 @@ static void clip_refresh(const bContext *C, ScrArea *sa)
                ED_area_tag_redraw(sa);
        }
 
-       BKE_movieclip_user_set_frame(&sc->user, CTX_data_scene(C)->r.cfra);
+       BKE_movieclip_user_set_frame(&sc->user, scene->r.cfra);
 }
 
 /********************* main region ********************/
index ea58b4aa7375933d392ddafdf01a82b75bbf29a5..e1fe3788d05eda2f5302fab71182b5d1683db671 100644 (file)
@@ -594,7 +594,7 @@ static int image_view_selected_exec(bContext *C, wmOperator *UNUSED(op))
        /* retrieve state */
        sima= CTX_wm_space_image(C);
        ar= CTX_wm_region(C);
-       scene= (Scene*)CTX_data_scene(C);
+       scene= CTX_data_scene(C);
        obedit= CTX_data_edit_object(C);
 
        ima= ED_space_image(sima);
@@ -1445,7 +1445,7 @@ static int image_new_exec(bContext *C, wmOperator *op)
 
        /* retrieve state */
        sima= CTX_wm_space_image(C);
-       scene= (Scene*)CTX_data_scene(C);
+       scene= CTX_data_scene(C);
        obedit= CTX_data_edit_object(C);
 
        RNA_string_get(op->ptr, "name", name);
index fd7895052f146b2935321755a01e0b0ca9bf135a..3a5793461eaf46a8257c30b8512768d9b1a6a82e 100644 (file)
@@ -581,7 +581,7 @@ static void image_refresh(const bContext *C, ScrArea *UNUSED(sa))
        ima= ED_space_image(sima);
 
        if(sima->iuser.flag & IMA_ANIM_ALWAYS)
-               BKE_image_user_calc_frame(&sima->iuser, CTX_data_scene(C)->r.cfra, 0);
+               BKE_image_user_calc_frame(&sima->iuser, scene->r.cfra, 0);
        
        /* check if we have to set the image from the editmesh */
        if(ima && (ima->source==IMA_SRC_VIEWER || sima->pin));
index fe734e53651cf0c514766ba3cc2452c0535dcbde..906b5d01e326cbe3da346eb9f69c365b64447cd2 100644 (file)
@@ -1341,9 +1341,10 @@ typedef struct ImageSampleInfo {
 
 static void sample_draw(const bContext *C, ARegion *ar, void *arg_info)
 {
+       Scene *scene = CTX_data_scene(C);
        ImageSampleInfo *info= arg_info;
 
-       ED_image_draw_info(ar, (CTX_data_scene(C)->r.color_mgt_flag & R_COLOR_MANAGEMENT), info->channels,
+       ED_image_draw_info(ar, (scene->r.color_mgt_flag & R_COLOR_MANAGEMENT), info->channels,
                           info->x, info->y, info->col, info->colf,
                           NULL, NULL /* zbuf - unused for nodes */
                           );
index 66aefc72f3301593da3ece05d5e645a9f35df9b2..03fd22d104574e28baf5623fc033192d9b5934a2 100644 (file)
@@ -325,20 +325,22 @@ static int sequencer_add_generic_strip_exec(bContext *C, wmOperator *op, SeqLoad
                        RNA_string_get(&itemptr, "name", file_only);
                        BLI_join_dirfile(seq_load.path, sizeof(seq_load.path), dir_only, file_only);
 
-                       seq= seq_load_func(C, ed->seqbasep, &seq_load);
-
-                       if(overlap == FALSE) {
-                               if(seq_test_overlap(ed->seqbasep, seq)) shuffle_seq(ed->seqbasep, seq, scene);
+                       seq = seq_load_func(C, ed->seqbasep, &seq_load);
+                       if (seq) {
+                               if(overlap == FALSE) {
+                                       if(seq_test_overlap(ed->seqbasep, seq)) shuffle_seq(ed->seqbasep, seq, scene);
+                               }
                        }
                }
                RNA_END;
        }
        else {
                /* single file */
-               seq= seq_load_func(C, ed->seqbasep, &seq_load);
-
-               if(overlap == FALSE) {
-                       if(seq_test_overlap(ed->seqbasep, seq)) shuffle_seq(ed->seqbasep, seq, scene);
+               seq = seq_load_func(C, ed->seqbasep, &seq_load);
+               if (seq) {
+                       if(overlap == FALSE) {
+                               if(seq_test_overlap(ed->seqbasep, seq)) shuffle_seq(ed->seqbasep, seq, scene);
+                       }
                }
        }
 
@@ -711,7 +713,8 @@ static int sequencer_add_effect_strip_invoke(bContext *C, wmOperator *op, wmEven
 
        if (is_type_set && type==SEQ_PLUGIN) {
                /* only plugins need the file selector */
-               return WM_operator_filesel(C, op, event);
+               WM_event_add_fileselect(C, op);
+               return OPERATOR_RUNNING_MODAL;
        }
        else {
                return sequencer_add_effect_strip_exec(C, op);
index 985d70d21446579a1341c4ef80f27363987d203f..5238fd30ae69c70371095fb687e9f457a7f4d180 100644 (file)
@@ -1269,7 +1269,7 @@ static void do_view3d_region_buttons(bContext *C, void *UNUSED(index), int event
        }
 
        /* default for now */
-       WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, ob);
+       WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, v3d);
 }
 
 static void view3d_panel_object(const bContext *C, Panel *pa)
index 86b5ab9421b2cfefcc0114800976202bb1467ad4..fe244fbdafad5c80dd432ba02848c1de033220b2 100644 (file)
@@ -3805,8 +3805,8 @@ static void SeqTransInfo(TransInfo *t, Sequence *seq, int *recursive, int *count
 
                Scene * scene= t->scene;
                int cfra= CFRA;
-               int left= seq_tx_get_final_left(seq, 0);
-               int right= seq_tx_get_final_right(seq, 0);
+               int left= seq_tx_get_final_left(seq, 1);
+               int right= seq_tx_get_final_right(seq, 1);
 
                if (seq->depth == 0 && ((seq->flag & SELECT) == 0 || (seq->flag & SEQ_LOCK))) {
                        *recursive= 0;
@@ -3906,7 +3906,7 @@ static void SeqTransInfo(TransInfo *t, Sequence *seq, int *recursive, int *count
 
 
 
-static int SeqTransCount(TransInfo *t, ListBase *seqbase, int depth)
+static int SeqTransCount(TransInfo *t, Sequence *parent, ListBase *seqbase, int depth)
 {
        Sequence *seq;
        int tot= 0, recursive, count, flag;
@@ -3914,11 +3914,15 @@ static int SeqTransCount(TransInfo *t, ListBase *seqbase, int depth)
        for (seq= seqbase->first; seq; seq= seq->next) {
                seq->depth= depth;
 
+               /* seq->tmp is used by seq_tx_get_final_{left,right} to check sequence's range and clamp to it if needed.
+                * it's first place where digging into sequences tree, so store link to parent here */
+               seq->tmp = parent;
+
                SeqTransInfo(t, seq, &recursive, &count, &flag); /* ignore the flag */
                tot += count;
 
                if (recursive) {
-                       tot += SeqTransCount(t, &seq->seqbase, depth+1);
+                       tot += SeqTransCount(t, seq, &seq->seqbase, depth+1);
                }
        }
 
@@ -4216,7 +4220,7 @@ static void createTransSeqData(bContext *C, TransInfo *t)
        }
 #endif
 
-       count = SeqTransCount(t, ed->seqbasep, 0);
+       count = SeqTransCount(t, NULL, ed->seqbasep, 0);
 
        /* allocate memory for data */
        t->total= count;
index cc486b75245dc61db3753d0759d21a4e4a9aeb2e..a3e3eb19a5b2cd89afe9b656a7078e1975eeb894 100644 (file)
@@ -126,12 +126,6 @@ void GPU_extensions_init(void)
        if(strstr(vendor, "ATI")) {
                GG.device = GPU_DEVICE_ATI;
                GG.driver = GPU_DRIVER_OFFICIAL;
-
-               /* ATI X1xxx cards (R500 chipset) lack full support for npot textures
-                * although they report the GLEW_ARB_texture_non_power_of_two extension.
-                */
-               if(strstr(renderer, "X1"))
-                       GG.npotdisabled = 1;
        }
        else if(strstr(vendor, "NVIDIA")) {
                GG.device = GPU_DEVICE_NVIDIA;
@@ -147,17 +141,6 @@ void GPU_extensions_init(void)
        else if(strstr(renderer, "Mesa DRI R") || (strstr(renderer, "Gallium ") && strstr(renderer, " on ATI "))) {
                GG.device = GPU_DEVICE_ATI;
                GG.driver = GPU_DRIVER_OPENSOURCE;
-               /* ATI 9500 to X2300 cards support NPoT textures poorly
-                * Incomplete list http://dri.freedesktop.org/wiki/ATIRadeon
-                * New IDs from MESA's src/gallium/drivers/r300/r300_screen.c
-                */
-               if(strstr(renderer, "R3") || strstr(renderer, "RV3") ||
-                  strstr(renderer, "R4") || strstr(renderer, "RV4") ||
-                  strstr(renderer, "RS4") || strstr(renderer, "RC4") ||
-                  strstr(renderer, "R5") || strstr(renderer, "RV5") ||
-                  strstr(renderer, "RS600") || strstr(renderer, "RS690") ||
-                  strstr(renderer, "RS740"))
-                       GG.npotdisabled = 1;
        }
        else if(strstr(renderer, "Nouveau") || strstr(vendor, "nouveau")) {
                GG.device = GPU_DEVICE_NVIDIA;
@@ -180,6 +163,22 @@ void GPU_extensions_init(void)
                GG.driver = GPU_DRIVER_ANY;
        }
 
+       if(GG.device == GPU_DEVICE_ATI) {
+               /* ATI 9500 to X2300 cards support NPoT textures poorly
+                * Incomplete list http://dri.freedesktop.org/wiki/ATIRadeon
+                * New IDs from MESA's src/gallium/drivers/r300/r300_screen.c
+                */
+               if(strstr(renderer, "R3") || strstr(renderer, "RV3") ||
+                  strstr(renderer, "R4") || strstr(renderer, "RV4") ||
+                  strstr(renderer, "RS4") || strstr(renderer, "RC4") ||
+                  strstr(renderer, "R5") || strstr(renderer, "RV5") ||
+                  strstr(renderer, "RS600") || strstr(renderer, "RS690") ||
+                  strstr(renderer, "RS740") || strstr(renderer, "X1") ||
+                  strstr(renderer, "X2") || strstr(renderer, "Radeon 9") ||
+                  strstr(renderer, "RADEON 9"))
+                       GG.npotdisabled = 1;
+       }
+
        GG.os = GPU_OS_UNIX;
 #ifdef _WIN32
        GG.os = GPU_OS_WIN;
@@ -202,11 +201,6 @@ int GPU_glsl_support(void)
 
 int GPU_non_power_of_two_support(void)
 {
-       /* Exception for buggy ATI/Apple driver in Mac OS X 10.5/10.6,
-        * they claim to support this but can cause system freeze */
-       if(GPU_type_matches(GPU_DEVICE_ATI, GPU_OS_MAC, GPU_DRIVER_OFFICIAL))
-               return 0;
-
        if(GG.npotdisabled)
                return 0;
 
index 4683d4f721f88289220fdb954a054c0902c36196..c6e25d0b496d04fb5470e9c4353687b77ce8a623 100644 (file)
@@ -2077,19 +2077,21 @@ void node_tex_coord(vec3 I, vec3 N, mat4 toworld,
 
 /* textures */
 
-void node_tex_blend(vec3 co, out float fac)
+void node_tex_gradient(vec3 co, out vec4 color, out float fac)
 {
+       color = vec4(1.0);
        fac = 1.0;
 }
 
-void node_tex_clouds(vec3 co, float size, out vec4 color, out float fac)
+void node_tex_checker(vec3 co, vec4 color1, vec4 color2, float scale, out vec4 color, out float fac)
 {
        color = vec4(1.0);
        fac = 1.0;
 }
 
-void node_tex_distnoise(vec3 co, float size, float distortion, out float fac)
+void node_tex_clouds(vec3 co, float size, out vec4 color, out float fac)
 {
+       color = vec4(1.0);
        fac = 1.0;
 }
 
@@ -2106,88 +2108,19 @@ void node_tex_image(vec3 co, sampler2D ima, out vec4 color)
        color = texture2D(ima, co.xy);
 }
 
-void node_tex_magic(vec3 p, float turbulence, float n, out vec4 color)
-{
-       float turb = turbulence/5.0;
-
-       float x = sin((p.x + p.y + p.z)*5.0);
-       float y = cos((-p.x + p.y - p.z)*5.0);
-       float z = -cos((-p.x - p.y + p.z)*5.0);
-
-       if(n > 0.0) {
-               x *= turb;
-               y *= turb;
-               z *= turb;
-               y = -cos(x-y+z);
-               y *= turb;
-
-               if(n > 1.0) {
-                       x= cos(x-y-z);
-                       x *= turb;
-
-                       if(n > 2.0) {
-                               z= sin(-x-y-z);
-                               z *= turb;
-
-                               if(n > 3.0) {
-                                       x= -cos(-x+y-z);
-                                       x *= turb;
-
-                                       if(n > 4.0) {
-                                               y= -sin(-x+y+z);
-                                               y *= turb;
-
-                                               if(n > 5.0) {
-                                                       y= -cos(-x+y+z);
-                                                       y *= turb;
-
-                                                       if(n > 6.0) {
-                                                               x= cos(x+y+z);
-                                                               x *= turb;
-
-                                                               if(n > 7.0) {
-                                                                       z= sin(x+y-z);
-                                                                       z *= turb;
-
-                                                                       if(n > 8.0) {
-                                                                               x= -cos(-x-y+z);
-                                                                               x *= turb;
-
-                                                                               if(n > 9.0) {
-                                                                                       y= -sin(x-y+z);
-                                                                                       y *= turb;
-                                                                               }
-                                                                       }
-                                                               }
-                                                       }
-                                               }
-                                       }
-                               }
-                       }
-               }
-       }
-
-       if(turb != 0.0) {
-               turb *= 2.0;
-               x /= turb;
-               y /= turb;
-               z /= turb;
-       }
-
-       color = vec4(0.5 - x, 0.5 - y, 0.5 - z, 1.0);
-}
-
-void node_tex_marble(vec3 co, float size, float turbulence, out float fac)
+void node_tex_magic(vec3 p, float scale, float distortion, out vec4 color, out float fac)
 {
+       color = vec4(1.0);
        fac = 1.0;
 }
 
-void node_tex_musgrave(vec3 co, float size, float dimension, float lacunarity, float octaves, float offset, float gain, out float fac)
+void node_tex_musgrave(vec3 co, float scale, float detail, float dimension, float lacunarity, float offset, float gain, out vec4 color, out float fac)
 {
+       color = vec4(1.0);
        fac = 1.0;
 }
 
-void node_tex_noise(vec3 co, out vec4 color, out float fac)
+void node_tex_noise(vec3 co, float scale, float detail, float distortion, out vec4 color, out float fac)
 {
        color = vec4(1.0);
        fac = 1.0;
@@ -2198,19 +2131,15 @@ void node_tex_sky(vec3 co, out vec4 color)
        color = vec4(1.0);
 }
 
-void node_tex_stucci(vec3 co, float size, float turbulence, out float fac)
-{
-       fac = 1.0;
-}
-
-void node_tex_voronoi(vec3 co, float size, float weight1, float weight2, float weight3, float weight4, float exponent, out vec4 color, out float fac)
+void node_tex_voronoi(vec3 co, float scale, out vec4 color, out float fac)
 {
        color = vec4(1.0);
        fac = 1.0;
 }
 
-void node_tex_wood(vec3 co, float size, float turbulence, out float fac)
+void node_tex_wave(vec3 co, float scale, float distortion, float detail, float detail_scale, out vec4 color, out float fac)
 {
+       color = vec4(1.0);
        fac = 1.0;
 }
 
index 0f4ea048ea8ab0da9498492908b1412abe3dbf32..8334356aee0da01d98cbe3e912babc176a1481a8 100644 (file)
 /* DataToC output of file <gpu_shader_material_glsl> */
 
-int datatoc_gpu_shader_material_glsl_size= 52820;
+int datatoc_gpu_shader_material_glsl_size= 49606;
 char datatoc_gpu_shader_material_glsl[]= {
- 13, 10,102,108,111, 97,116, 32,101,120,112, 95, 98,108,101,110,100,101,114, 40,
-102,108,111, 97,116, 32,102, 41, 13, 10,123, 13, 10,  9,114,101,116,117,114,110, 32,112,111,119, 40, 50, 46, 55, 49, 56, 50, 56,
- 49, 56, 50, 56, 52, 54, 44, 32,102, 41, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,114,103, 98, 95,116,111, 95,104,115,
-118, 40,118,101, 99, 52, 32,114,103, 98, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 13, 10,123, 13,
- 10,  9,102,108,111, 97,116, 32, 99,109, 97,120, 44, 32, 99,109,105,110, 44, 32,104, 44, 32,115, 44, 32,118, 44, 32, 99,100,101,
-108,116, 97, 59, 13, 10,  9,118,101, 99, 51, 32, 99, 59, 13, 10, 13, 10,  9, 99,109, 97,120, 32, 61, 32,109, 97,120, 40,114,103,
- 98, 91, 48, 93, 44, 32,109, 97,120, 40,114,103, 98, 91, 49, 93, 44, 32,114,103, 98, 91, 50, 93, 41, 41, 59, 13, 10,  9, 99,109,
-105,110, 32, 61, 32,109,105,110, 40,114,103, 98, 91, 48, 93, 44, 32,109,105,110, 40,114,103, 98, 91, 49, 93, 44, 32,114,103, 98,
- 91, 50, 93, 41, 41, 59, 13, 10,  9, 99,100,101,108,116, 97, 32, 61, 32, 99,109, 97,120, 45, 99,109,105,110, 59, 13, 10, 13, 10,
-  9,118, 32, 61, 32, 99,109, 97,120, 59, 13, 10,  9,105,102, 32, 40, 99,109, 97,120, 33, 61, 48, 46, 48, 41, 13, 10,  9,  9,115,
- 32, 61, 32, 99,100,101,108,116, 97, 47, 99,109, 97,120, 59, 13, 10,  9,101,108,115,101, 32,123, 13, 10,  9,  9,115, 32, 61, 32,
- 48, 46, 48, 59, 13, 10,  9,  9,104, 32, 61, 32, 48, 46, 48, 59, 13, 10,  9,125, 13, 10, 13, 10,  9,105,102, 32, 40,115, 32, 61,
- 61, 32, 48, 46, 48, 41, 32,123, 13, 10,  9,  9,104, 32, 61, 32, 48, 46, 48, 59, 13, 10,  9,125, 13, 10,  9,101,108,115,101, 32,
-123, 13, 10,  9,  9, 99, 32, 61, 32, 40,118,101, 99, 51, 40, 99,109, 97,120, 44, 32, 99,109, 97,120, 44, 32, 99,109, 97,120, 41,
- 32, 45, 32,114,103, 98, 46,120,121,122, 41, 47, 99,100,101,108,116, 97, 59, 13, 10, 13, 10,  9,  9,105,102, 32, 40,114,103, 98,
- 46,120, 61, 61, 99,109, 97,120, 41, 32,104, 32, 61, 32, 99, 91, 50, 93, 32, 45, 32, 99, 91, 49, 93, 59, 13, 10,  9,  9,101,108,
-115,101, 32,105,102, 32, 40,114,103, 98, 46,121, 61, 61, 99,109, 97,120, 41, 32,104, 32, 61, 32, 50, 46, 48, 32, 43, 32, 99, 91,
- 48, 93, 32, 45, 32, 32, 99, 91, 50, 93, 59, 13, 10,  9,  9,101,108,115,101, 32,104, 32, 61, 32, 52, 46, 48, 32, 43, 32, 99, 91,
- 49, 93, 32, 45, 32, 99, 91, 48, 93, 59, 13, 10, 13, 10,  9,  9,104, 32, 47, 61, 32, 54, 46, 48, 59, 13, 10, 13, 10,  9,  9,105,
-102, 32, 40,104, 60, 48, 46, 48, 41, 13, 10,  9,  9,  9,104, 32, 43, 61, 32, 49, 46, 48, 59, 13, 10,  9,125, 13, 10, 13, 10,  9,
-111,117,116, 99,111,108, 32, 61, 32,118,101, 99, 52, 40,104, 44, 32,115, 44, 32,118, 44, 32,114,103, 98, 46,119, 41, 59, 13, 10,
-125, 13, 10, 13, 10,118,111,105,100, 32,104,115,118, 95,116,111, 95,114,103, 98, 40,118,101, 99, 52, 32,104,115,118, 44, 32,111,
-117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 13, 10,123, 13, 10,  9,102,108,111, 97,116, 32,105, 44, 32,102, 44,
- 32,112, 44, 32,113, 44, 32,116, 44, 32,104, 44, 32,115, 44, 32,118, 59, 13, 10,  9,118,101, 99, 51, 32,114,103, 98, 59, 13, 10,
- 13, 10,  9,104, 32, 61, 32,104,115,118, 91, 48, 93, 59, 13, 10,  9,115, 32, 61, 32,104,115,118, 91, 49, 93, 59, 13, 10,  9,118,
- 32, 61, 32,104,115,118, 91, 50, 93, 59, 13, 10, 13, 10,  9,105,102, 40,115, 61, 61, 48, 46, 48, 41, 32,123, 13, 10,  9,  9,114,
-103, 98, 32, 61, 32,118,101, 99, 51, 40,118, 44, 32,118, 44, 32,118, 41, 59, 13, 10,  9,125, 13, 10,  9,101,108,115,101, 32,123,
- 13, 10,  9,  9,105,102, 40,104, 61, 61, 49, 46, 48, 41, 13, 10,  9,  9,  9,104, 32, 61, 32, 48, 46, 48, 59, 13, 10,  9,  9, 13,
- 10,  9,  9,104, 32, 42, 61, 32, 54, 46, 48, 59, 13, 10,  9,  9,105, 32, 61, 32,102,108,111,111,114, 40,104, 41, 59, 13, 10,  9,
-  9,102, 32, 61, 32,104, 32, 45, 32,105, 59, 13, 10,  9,  9,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,102, 44, 32,102, 44, 32,
-102, 41, 59, 13, 10,  9,  9,112, 32, 61, 32,118, 42, 40, 49, 46, 48, 45,115, 41, 59, 13, 10,  9,  9,113, 32, 61, 32,118, 42, 40,
- 49, 46, 48, 45, 40,115, 42,102, 41, 41, 59, 13, 10,  9,  9,116, 32, 61, 32,118, 42, 40, 49, 46, 48, 45, 40,115, 42, 40, 49, 46,
- 48, 45,102, 41, 41, 41, 59, 13, 10,  9,  9, 13, 10,  9,  9,105,102, 32, 40,105, 32, 61, 61, 32, 48, 46, 48, 41, 32,114,103, 98,
- 32, 61, 32,118,101, 99, 51, 40,118, 44, 32,116, 44, 32,112, 41, 59, 13, 10,  9,  9,101,108,115,101, 32,105,102, 32, 40,105, 32,
- 61, 61, 32, 49, 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,113, 44, 32,118, 44, 32,112, 41, 59, 13, 10,  9,  9,
-101,108,115,101, 32,105,102, 32, 40,105, 32, 61, 61, 32, 50, 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,112, 44,
- 32,118, 44, 32,116, 41, 59, 13, 10,  9,  9,101,108,115,101, 32,105,102, 32, 40,105, 32, 61, 61, 32, 51, 46, 48, 41, 32,114,103,
- 98, 32, 61, 32,118,101, 99, 51, 40,112, 44, 32,113, 44, 32,118, 41, 59, 13, 10,  9,  9,101,108,115,101, 32,105,102, 32, 40,105,
- 32, 61, 61, 32, 52, 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,116, 44, 32,112, 44, 32,118, 41, 59, 13, 10,  9,
-  9,101,108,115,101, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,118, 44, 32,112, 44, 32,113, 41, 59, 13, 10,  9,125, 13, 10,
- 13, 10,  9,111,117,116, 99,111,108, 32, 61, 32,118,101, 99, 52, 40,114,103, 98, 44, 32,104,115,118, 46,119, 41, 59, 13, 10,125,
- 13, 10, 13, 10,102,108,111, 97,116, 32,115,114,103, 98, 95,116,111, 95,108,105,110,101, 97,114,114,103, 98, 40,102,108,111, 97,
-116, 32, 99, 41, 13, 10,123, 13, 10,  9,105,102, 40, 99, 32, 60, 32, 48, 46, 48, 52, 48, 52, 53, 41, 13, 10,  9,  9,114,101,116,
-117,114,110, 32, 40, 99, 32, 60, 32, 48, 46, 48, 41, 63, 32, 48, 46, 48, 58, 32, 99, 32, 42, 32, 40, 49, 46, 48, 47, 49, 50, 46,
- 57, 50, 41, 59, 13, 10,  9,101,108,115,101, 13, 10,  9,  9,114,101,116,117,114,110, 32,112,111,119, 40, 40, 99, 32, 43, 32, 48,
- 46, 48, 53, 53, 41, 42, 40, 49, 46, 48, 47, 49, 46, 48, 53, 53, 41, 44, 32, 50, 46, 52, 41, 59, 13, 10,125, 13, 10, 13, 10,102,
-108,111, 97,116, 32,108,105,110,101, 97,114,114,103, 98, 95,116,111, 95,115,114,103, 98, 40,102,108,111, 97,116, 32, 99, 41, 13,
- 10,123, 13, 10,  9,105,102, 40, 99, 32, 60, 32, 48, 46, 48, 48, 51, 49, 51, 48, 56, 41, 13, 10,  9,  9,114,101,116,117,114,110,
- 32, 40, 99, 32, 60, 32, 48, 46, 48, 41, 63, 32, 48, 46, 48, 58, 32, 99, 32, 42, 32, 49, 50, 46, 57, 50, 59, 13, 10,  9,101,108,
-115,101, 13, 10,  9,  9,114,101,116,117,114,110, 32, 49, 46, 48, 53, 53, 32, 42, 32,112,111,119, 40, 99, 44, 32, 49, 46, 48, 47,
- 50, 46, 52, 41, 32, 45, 32, 48, 46, 48, 53, 53, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,115,114,103, 98, 95,116,111,
- 95,108,105,110,101, 97,114,114,103, 98, 40,118,101, 99, 52, 32, 99,111,108, 95,102,114,111,109, 44, 32,111,117,116, 32,118,101,
- 99, 52, 32, 99,111,108, 95,116,111, 41, 13, 10,123, 13, 10,  9, 99,111,108, 95,116,111, 46,114, 32, 61, 32,115,114,103, 98, 95,
-116,111, 95,108,105,110,101, 97,114,114,103, 98, 40, 99,111,108, 95,102,114,111,109, 46,114, 41, 59, 13, 10,  9, 99,111,108, 95,
-116,111, 46,103, 32, 61, 32,115,114,103, 98, 95,116,111, 95,108,105,110,101, 97,114,114,103, 98, 40, 99,111,108, 95,102,114,111,
-109, 46,103, 41, 59, 13, 10,  9, 99,111,108, 95,116,111, 46, 98, 32, 61, 32,115,114,103, 98, 95,116,111, 95,108,105,110,101, 97,
-114,114,103, 98, 40, 99,111,108, 95,102,114,111,109, 46, 98, 41, 59, 13, 10,  9, 99,111,108, 95,116,111, 46, 97, 32, 61, 32, 99,
-111,108, 95,102,114,111,109, 46, 97, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,108,105,110,101, 97,114,114,103, 98, 95,
-116,111, 95,115,114,103, 98, 40,118,101, 99, 52, 32, 99,111,108, 95,102,114,111,109, 44, 32,111,117,116, 32,118,101, 99, 52, 32,
- 99,111,108, 95,116,111, 41, 13, 10,123, 13, 10,  9, 99,111,108, 95,116,111, 46,114, 32, 61, 32,108,105,110,101, 97,114,114,103,
- 98, 95,116,111, 95,115,114,103, 98, 40, 99,111,108, 95,102,114,111,109, 46,114, 41, 59, 13, 10,  9, 99,111,108, 95,116,111, 46,
-103, 32, 61, 32,108,105,110,101, 97,114,114,103, 98, 95,116,111, 95,115,114,103, 98, 40, 99,111,108, 95,102,114,111,109, 46,103,
- 41, 59, 13, 10,  9, 99,111,108, 95,116,111, 46, 98, 32, 61, 32,108,105,110,101, 97,114,114,103, 98, 95,116,111, 95,115,114,103,
- 98, 40, 99,111,108, 95,102,114,111,109, 46, 98, 41, 59, 13, 10,  9, 99,111,108, 95,116,111, 46, 97, 32, 61, 32, 99,111,108, 95,
-102,114,111,109, 46, 97, 59, 13, 10,125, 13, 10, 13, 10, 35,100,101,102,105,110,101, 32, 77, 95, 80, 73, 32, 51, 46, 49, 52, 49,
- 53, 57, 50, 54, 53, 51, 53, 56, 57, 55, 57, 51, 50, 51, 56, 52, 54, 13, 10, 35,100,101,102,105,110,101, 32, 77, 95, 49, 95, 80,
- 73, 32, 48, 46, 51, 49, 56, 51, 48, 57, 56, 56, 54, 49, 56, 51, 55, 57, 48, 54, 57, 13, 10, 13, 10, 47, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 32, 83, 72, 65, 68, 69, 82, 32, 78, 79, 68, 69, 83, 32, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 47, 13, 10, 13, 10,118,111,105,100, 32,118, 99,111,108, 95, 97,116,116,114,105, 98,117,116,101, 40,118,101, 99, 52, 32,
- 97,116,116,118, 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,118, 99,111,108, 41, 13, 10,123, 13, 10,  9,118, 99,111,
-108, 32, 61, 32,118,101, 99, 52, 40, 97,116,116,118, 99,111,108, 46,120, 47, 50, 53, 53, 46, 48, 44, 32, 97,116,116,118, 99,111,
-108, 46,121, 47, 50, 53, 53, 46, 48, 44, 32, 97,116,116,118, 99,111,108, 46,122, 47, 50, 53, 53, 46, 48, 44, 32, 49, 46, 48, 41,
- 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,117,118, 95, 97,116,116,114,105, 98,117,116,101, 40,118,101, 99, 50, 32, 97,
-116,116,117,118, 44, 32,111,117,116, 32,118,101, 99, 51, 32,117,118, 41, 13, 10,123, 13, 10,  9,117,118, 32, 61, 32,118,101, 99,
- 51, 40, 97,116,116,117,118, 42, 50, 46, 48, 32, 45, 32,118,101, 99, 50, 40, 49, 46, 48, 44, 32, 49, 46, 48, 41, 44, 32, 48, 46,
- 48, 41, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,103,101,111,109, 40,118,101, 99, 51, 32, 99,111, 44, 32,118,101, 99,
- 51, 32,110,111,114, 44, 32,109, 97,116, 52, 32,118,105,101,119,105,110,118,109, 97,116, 44, 32,118,101, 99, 51, 32, 97,116,116,
-111,114, 99,111, 44, 32,118,101, 99, 50, 32, 97,116,116,117,118, 44, 32,118,101, 99, 52, 32, 97,116,116,118, 99,111,108, 44, 32,
-111,117,116, 32,118,101, 99, 51, 32,103,108,111, 98, 97,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,108,111, 99, 97,108, 44,
- 32,111,117,116, 32,118,101, 99, 51, 32,118,105,101,119, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,114, 99,111, 44, 32,111,
-117,116, 32,118,101, 99, 51, 32,117,118, 44, 32,111,117,116, 32,118,101, 99, 51, 32,110,111,114,109, 97,108, 44, 32,111,117,116,
- 32,118,101, 99, 52, 32,118, 99,111,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,118, 99,111,108, 95, 97,108,112,104, 97,
- 44, 32,111,117,116, 32,102,108,111, 97,116, 32,102,114,111,110,116, 98, 97, 99,107, 41, 13, 10,123, 13, 10,  9,108,111, 99, 97,
-108, 32, 61, 32, 99,111, 59, 13, 10,  9,118,105,101,119, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,108,111, 99, 97,108,
- 41, 59, 13, 10,  9,103,108,111, 98, 97,108, 32, 61, 32, 40,118,105,101,119,105,110,118,109, 97,116, 42,118,101, 99, 52, 40,108,
-111, 99, 97,108, 44, 32, 49, 46, 48, 41, 41, 46,120,121,122, 59, 13, 10,  9,111,114, 99,111, 32, 61, 32, 97,116,116,111,114, 99,
-111, 59, 13, 10,  9,117,118, 95, 97,116,116,114,105, 98,117,116,101, 40, 97,116,116,117,118, 44, 32,117,118, 41, 59, 13, 10,  9,
-110,111,114,109, 97,108, 32, 61, 32, 45,110,111,114,109, 97,108,105,122,101, 40,110,111,114, 41, 59,  9, 47, 42, 32, 98,108,101,
-110,100,101,114, 32,114,101,110,100,101,114, 32,110,111,114,109, 97,108, 32,105,115, 32,110,101,103, 97,116,101,100, 32, 42, 47,
- 13, 10,  9,118, 99,111,108, 95, 97,116,116,114,105, 98,117,116,101, 40, 97,116,116,118, 99,111,108, 44, 32,118, 99,111,108, 41,
- 59, 13, 10,  9,118, 99,111,108, 95, 97,108,112,104, 97, 32, 61, 32, 97,116,116,118, 99,111,108, 46, 97, 59, 13, 10,  9,102,114,
-111,110,116, 98, 97, 99,107, 32, 61, 32, 49, 46, 48, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109, 97,112,112,105,110,
-103, 40,118,101, 99, 51, 32,118,101, 99, 44, 32,109, 97,116, 52, 32,109, 97,116, 44, 32,118,101, 99, 51, 32,109,105,110,118,101,
- 99, 44, 32,118,101, 99, 51, 32,109, 97,120,118,101, 99, 44, 32,102,108,111, 97,116, 32,100,111,109,105,110, 44, 32,102,108,111,
- 97,116, 32,100,111,109, 97,120, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 41, 13, 10,123, 13, 10,  9,
-111,117,116,118,101, 99, 32, 61, 32, 40,109, 97,116, 32, 42, 32,118,101, 99, 52, 40,118,101, 99, 44, 32, 49, 46, 48, 41, 41, 46,
-120,121,122, 59, 13, 10,  9,105,102, 40,100,111,109,105,110, 32, 61, 61, 32, 49, 46, 48, 41, 13, 10,  9,  9,111,117,116,118,101,
- 99, 32, 61, 32,109, 97,120, 40,111,117,116,118,101, 99, 44, 32,109,105,110,118,101, 99, 41, 59, 13, 10,  9,105,102, 40,100,111,
-109, 97,120, 32, 61, 61, 32, 49, 46, 48, 41, 13, 10,  9,  9,111,117,116,118,101, 99, 32, 61, 32,109,105,110, 40,111,117,116,118,
-101, 99, 44, 32,109, 97,120,118,101, 99, 41, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32, 99, 97,109,101,114, 97, 40,118,
-101, 99, 51, 32, 99,111, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,105,101,119, 44, 32,111,117,116, 32,102,108,
-111, 97,116, 32,111,117,116,100,101,112,116,104, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,100,105,115,116, 41,
- 13, 10,123, 13, 10,  9,111,117,116,100,101,112,116,104, 32, 61, 32, 97, 98,115, 40, 99,111, 46,122, 41, 59, 13, 10,  9,111,117,
-116,100,105,115,116, 32, 61, 32,108,101,110,103,116,104, 40, 99,111, 41, 59, 13, 10,  9,111,117,116,118,105,101,119, 32, 61, 32,
-110,111,114,109, 97,108,105,122,101, 40, 99,111, 41, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109, 97,116,104, 95, 97,
-100,100, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,
-108,111, 97,116, 32,111,117,116,118, 97,108, 41, 13, 10,123, 13, 10,  9,111,117,116,118, 97,108, 32, 61, 32,118, 97,108, 49, 32,
- 43, 32,118, 97,108, 50, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109, 97,116,104, 95,115,117, 98,116,114, 97, 99,116,
- 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111,
- 97,116, 32,111,117,116,118, 97,108, 41, 13, 10,123, 13, 10,  9,111,117,116,118, 97,108, 32, 61, 32,118, 97,108, 49, 32, 45, 32,
-118, 97,108, 50, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109, 97,116,104, 95,109,117,108,116,105,112,108,121, 40,102,
-108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116,
- 32,111,117,116,118, 97,108, 41, 13, 10,123, 13, 10,  9,111,117,116,118, 97,108, 32, 61, 32,118, 97,108, 49, 32, 42, 32,118, 97,
-108, 50, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109, 97,116,104, 95,100,105,118,105,100,101, 40,102,108,111, 97,116,
- 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,
-118, 97,108, 41, 13, 10,123, 13, 10,  9,105,102, 32, 40,118, 97,108, 50, 32, 61, 61, 32, 48, 46, 48, 41, 13, 10,  9,  9,111,117,
-116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 13, 10,  9,101,108,115,101, 13, 10,  9,  9,111,117,116,118, 97,108, 32, 61, 32,118,
- 97,108, 49, 32, 47, 32,118, 97,108, 50, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109, 97,116,104, 95,115,105,110,101,
- 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 13, 10,123,
- 13, 10,  9,111,117,116,118, 97,108, 32, 61, 32,115,105,110, 40,118, 97,108, 41, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100,
- 32,109, 97,116,104, 95, 99,111,115,105,110,101, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,
-116, 32,111,117,116,118, 97,108, 41, 13, 10,123, 13, 10,  9,111,117,116,118, 97,108, 32, 61, 32, 99,111,115, 40,118, 97,108, 41,
- 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109, 97,116,104, 95,116, 97,110,103,101,110,116, 40,102,108,111, 97,116, 32,
-118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 13, 10,123, 13, 10,  9,111,117,116,118,
- 97,108, 32, 61, 32,116, 97,110, 40,118, 97,108, 41, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109, 97,116,104, 95, 97,
-115,105,110, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41,
- 13, 10,123, 13, 10,  9,105,102, 32, 40,118, 97,108, 32, 60, 61, 32, 49, 46, 48, 32, 38, 38, 32,118, 97,108, 32, 62, 61, 32, 45,
- 49, 46, 48, 41, 13, 10,  9,  9,111,117,116,118, 97,108, 32, 61, 32, 97,115,105,110, 40,118, 97,108, 41, 59, 13, 10,  9,101,108,
-115,101, 13, 10,  9,  9,111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109,
- 97,116,104, 95, 97, 99,111,115, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,
-116,118, 97,108, 41, 13, 10,123, 13, 10,  9,105,102, 32, 40,118, 97,108, 32, 60, 61, 32, 49, 46, 48, 32, 38, 38, 32,118, 97,108,
- 32, 62, 61, 32, 45, 49, 46, 48, 41, 13, 10,  9,  9,111,117,116,118, 97,108, 32, 61, 32, 97, 99,111,115, 40,118, 97,108, 41, 59,
- 13, 10,  9,101,108,115,101, 13, 10,  9,  9,111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 13, 10,125, 13, 10, 13, 10,118,
-111,105,100, 32,109, 97,116,104, 95, 97,116, 97,110, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111,
- 97,116, 32,111,117,116,118, 97,108, 41, 13, 10,123, 13, 10,  9,111,117,116,118, 97,108, 32, 61, 32, 97,116, 97,110, 40,118, 97,
-108, 41, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109, 97,116,104, 95,112,111,119, 40,102,108,111, 97,116, 32,118, 97,
+ 10,102,108,111, 97,116,
+ 32,101,120,112, 95, 98,108,101,110,100,101,114, 40,102,108,111, 97,116, 32,102, 41, 10,123, 10,  9,114,101,116,117,114,110, 32,
+112,111,119, 40, 50, 46, 55, 49, 56, 50, 56, 49, 56, 50, 56, 52, 54, 44, 32,102, 41, 59, 10,125, 10, 10,118,111,105,100, 32,114,
+103, 98, 95,116,111, 95,104,115,118, 40,118,101, 99, 52, 32,114,103, 98, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116,
+ 99,111,108, 41, 10,123, 10,  9,102,108,111, 97,116, 32, 99,109, 97,120, 44, 32, 99,109,105,110, 44, 32,104, 44, 32,115, 44, 32,
+118, 44, 32, 99,100,101,108,116, 97, 59, 10,  9,118,101, 99, 51, 32, 99, 59, 10, 10,  9, 99,109, 97,120, 32, 61, 32,109, 97,120,
+ 40,114,103, 98, 91, 48, 93, 44, 32,109, 97,120, 40,114,103, 98, 91, 49, 93, 44, 32,114,103, 98, 91, 50, 93, 41, 41, 59, 10,  9,
+ 99,109,105,110, 32, 61, 32,109,105,110, 40,114,103, 98, 91, 48, 93, 44, 32,109,105,110, 40,114,103, 98, 91, 49, 93, 44, 32,114,
+103, 98, 91, 50, 93, 41, 41, 59, 10,  9, 99,100,101,108,116, 97, 32, 61, 32, 99,109, 97,120, 45, 99,109,105,110, 59, 10, 10,  9,
+118, 32, 61, 32, 99,109, 97,120, 59, 10,  9,105,102, 32, 40, 99,109, 97,120, 33, 61, 48, 46, 48, 41, 10,  9,  9,115, 32, 61, 32,
+ 99,100,101,108,116, 97, 47, 99,109, 97,120, 59, 10,  9,101,108,115,101, 32,123, 10,  9,  9,115, 32, 61, 32, 48, 46, 48, 59, 10,
+  9,  9,104, 32, 61, 32, 48, 46, 48, 59, 10,  9,125, 10, 10,  9,105,102, 32, 40,115, 32, 61, 61, 32, 48, 46, 48, 41, 32,123, 10,
+  9,  9,104, 32, 61, 32, 48, 46, 48, 59, 10,  9,125, 10,  9,101,108,115,101, 32,123, 10,  9,  9, 99, 32, 61, 32, 40,118,101, 99,
+ 51, 40, 99,109, 97,120, 44, 32, 99,109, 97,120, 44, 32, 99,109, 97,120, 41, 32, 45, 32,114,103, 98, 46,120,121,122, 41, 47, 99,
+100,101,108,116, 97, 59, 10, 10,  9,  9,105,102, 32, 40,114,103, 98, 46,120, 61, 61, 99,109, 97,120, 41, 32,104, 32, 61, 32, 99,
+ 91, 50, 93, 32, 45, 32, 99, 91, 49, 93, 59, 10,  9,  9,101,108,115,101, 32,105,102, 32, 40,114,103, 98, 46,121, 61, 61, 99,109,
+ 97,120, 41, 32,104, 32, 61, 32, 50, 46, 48, 32, 43, 32, 99, 91, 48, 93, 32, 45, 32, 32, 99, 91, 50, 93, 59, 10,  9,  9,101,108,
+115,101, 32,104, 32, 61, 32, 52, 46, 48, 32, 43, 32, 99, 91, 49, 93, 32, 45, 32, 99, 91, 48, 93, 59, 10, 10,  9,  9,104, 32, 47,
+ 61, 32, 54, 46, 48, 59, 10, 10,  9,  9,105,102, 32, 40,104, 60, 48, 46, 48, 41, 10,  9,  9,  9,104, 32, 43, 61, 32, 49, 46, 48,
+ 59, 10,  9,125, 10, 10,  9,111,117,116, 99,111,108, 32, 61, 32,118,101, 99, 52, 40,104, 44, 32,115, 44, 32,118, 44, 32,114,103,
+ 98, 46,119, 41, 59, 10,125, 10, 10,118,111,105,100, 32,104,115,118, 95,116,111, 95,114,103, 98, 40,118,101, 99, 52, 32,104,115,
+118, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10,  9,102,108,111, 97,116, 32,105, 44, 32,
+102, 44, 32,112, 44, 32,113, 44, 32,116, 44, 32,104, 44, 32,115, 44, 32,118, 59, 10,  9,118,101, 99, 51, 32,114,103, 98, 59, 10,
+ 10,  9,104, 32, 61, 32,104,115,118, 91, 48, 93, 59, 10,  9,115, 32, 61, 32,104,115,118, 91, 49, 93, 59, 10,  9,118, 32, 61, 32,
+104,115,118, 91, 50, 93, 59, 10, 10,  9,105,102, 40,115, 61, 61, 48, 46, 48, 41, 32,123, 10,  9,  9,114,103, 98, 32, 61, 32,118,
+101, 99, 51, 40,118, 44, 32,118, 44, 32,118, 41, 59, 10,  9,125, 10,  9,101,108,115,101, 32,123, 10,  9,  9,105,102, 40,104, 61,
+ 61, 49, 46, 48, 41, 10,  9,  9,  9,104, 32, 61, 32, 48, 46, 48, 59, 10,  9,  9, 10,  9,  9,104, 32, 42, 61, 32, 54, 46, 48, 59,
+ 10,  9,  9,105, 32, 61, 32,102,108,111,111,114, 40,104, 41, 59, 10,  9,  9,102, 32, 61, 32,104, 32, 45, 32,105, 59, 10,  9,  9,
+114,103, 98, 32, 61, 32,118,101, 99, 51, 40,102, 44, 32,102, 44, 32,102, 41, 59, 10,  9,  9,112, 32, 61, 32,118, 42, 40, 49, 46,
+ 48, 45,115, 41, 59, 10,  9,  9,113, 32, 61, 32,118, 42, 40, 49, 46, 48, 45, 40,115, 42,102, 41, 41, 59, 10,  9,  9,116, 32, 61,
+ 32,118, 42, 40, 49, 46, 48, 45, 40,115, 42, 40, 49, 46, 48, 45,102, 41, 41, 41, 59, 10,  9,  9, 10,  9,  9,105,102, 32, 40,105,
+ 32, 61, 61, 32, 48, 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,118, 44, 32,116, 44, 32,112, 41, 59, 10,  9,  9,
+101,108,115,101, 32,105,102, 32, 40,105, 32, 61, 61, 32, 49, 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,113, 44,
+ 32,118, 44, 32,112, 41, 59, 10,  9,  9,101,108,115,101, 32,105,102, 32, 40,105, 32, 61, 61, 32, 50, 46, 48, 41, 32,114,103, 98,
+ 32, 61, 32,118,101, 99, 51, 40,112, 44, 32,118, 44, 32,116, 41, 59, 10,  9,  9,101,108,115,101, 32,105,102, 32, 40,105, 32, 61,
+ 61, 32, 51, 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,112, 44, 32,113, 44, 32,118, 41, 59, 10,  9,  9,101,108,
+115,101, 32,105,102, 32, 40,105, 32, 61, 61, 32, 52, 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,116, 44, 32,112,
+ 44, 32,118, 41, 59, 10,  9,  9,101,108,115,101, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,118, 44, 32,112, 44, 32,113, 41,
+ 59, 10,  9,125, 10, 10,  9,111,117,116, 99,111,108, 32, 61, 32,118,101, 99, 52, 40,114,103, 98, 44, 32,104,115,118, 46,119, 41,
+ 59, 10,125, 10, 10,102,108,111, 97,116, 32,115,114,103, 98, 95,116,111, 95,108,105,110,101, 97,114,114,103, 98, 40,102,108,111,
+ 97,116, 32, 99, 41, 10,123, 10,  9,105,102, 40, 99, 32, 60, 32, 48, 46, 48, 52, 48, 52, 53, 41, 10,  9,  9,114,101,116,117,114,
+110, 32, 40, 99, 32, 60, 32, 48, 46, 48, 41, 63, 32, 48, 46, 48, 58, 32, 99, 32, 42, 32, 40, 49, 46, 48, 47, 49, 50, 46, 57, 50,
+ 41, 59, 10,  9,101,108,115,101, 10,  9,  9,114,101,116,117,114,110, 32,112,111,119, 40, 40, 99, 32, 43, 32, 48, 46, 48, 53, 53,
+ 41, 42, 40, 49, 46, 48, 47, 49, 46, 48, 53, 53, 41, 44, 32, 50, 46, 52, 41, 59, 10,125, 10, 10,102,108,111, 97,116, 32,108,105,
+110,101, 97,114,114,103, 98, 95,116,111, 95,115,114,103, 98, 40,102,108,111, 97,116, 32, 99, 41, 10,123, 10,  9,105,102, 40, 99,
+ 32, 60, 32, 48, 46, 48, 48, 51, 49, 51, 48, 56, 41, 10,  9,  9,114,101,116,117,114,110, 32, 40, 99, 32, 60, 32, 48, 46, 48, 41,
+ 63, 32, 48, 46, 48, 58, 32, 99, 32, 42, 32, 49, 50, 46, 57, 50, 59, 10,  9,101,108,115,101, 10,  9,  9,114,101,116,117,114,110,
+ 32, 49, 46, 48, 53, 53, 32, 42, 32,112,111,119, 40, 99, 44, 32, 49, 46, 48, 47, 50, 46, 52, 41, 32, 45, 32, 48, 46, 48, 53, 53,
+ 59, 10,125, 10, 10,118,111,105,100, 32,115,114,103, 98, 95,116,111, 95,108,105,110,101, 97,114,114,103, 98, 40,118,101, 99, 52,
+ 32, 99,111,108, 95,102,114,111,109, 44, 32,111,117,116, 32,118,101, 99, 52, 32, 99,111,108, 95,116,111, 41, 10,123, 10,  9, 99,
+111,108, 95,116,111, 46,114, 32, 61, 32,115,114,103, 98, 95,116,111, 95,108,105,110,101, 97,114,114,103, 98, 40, 99,111,108, 95,
+102,114,111,109, 46,114, 41, 59, 10,  9, 99,111,108, 95,116,111, 46,103, 32, 61, 32,115,114,103, 98, 95,116,111, 95,108,105,110,
+101, 97,114,114,103, 98, 40, 99,111,108, 95,102,114,111,109, 46,103, 41, 59, 10,  9, 99,111,108, 95,116,111, 46, 98, 32, 61, 32,
+115,114,103, 98, 95,116,111, 95,108,105,110,101, 97,114,114,103, 98, 40, 99,111,108, 95,102,114,111,109, 46, 98, 41, 59, 10,  9,
+ 99,111,108, 95,116,111, 46, 97, 32, 61, 32, 99,111,108, 95,102,114,111,109, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,108,
+105,110,101, 97,114,114,103, 98, 95,116,111, 95,115,114,103, 98, 40,118,101, 99, 52, 32, 99,111,108, 95,102,114,111,109, 44, 32,
+111,117,116, 32,118,101, 99, 52, 32, 99,111,108, 95,116,111, 41, 10,123, 10,  9, 99,111,108, 95,116,111, 46,114, 32, 61, 32,108,
+105,110,101, 97,114,114,103, 98, 95,116,111, 95,115,114,103, 98, 40, 99,111,108, 95,102,114,111,109, 46,114, 41, 59, 10,  9, 99,
+111,108, 95,116,111, 46,103, 32, 61, 32,108,105,110,101, 97,114,114,103, 98, 95,116,111, 95,115,114,103, 98, 40, 99,111,108, 95,
+102,114,111,109, 46,103, 41, 59, 10,  9, 99,111,108, 95,116,111, 46, 98, 32, 61, 32,108,105,110,101, 97,114,114,103, 98, 95,116,
+111, 95,115,114,103, 98, 40, 99,111,108, 95,102,114,111,109, 46, 98, 41, 59, 10,  9, 99,111,108, 95,116,111, 46, 97, 32, 61, 32,
+ 99,111,108, 95,102,114,111,109, 46, 97, 59, 10,125, 10, 10, 35,100,101,102,105,110,101, 32, 77, 95, 80, 73, 32, 51, 46, 49, 52,
+ 49, 53, 57, 50, 54, 53, 51, 53, 56, 57, 55, 57, 51, 50, 51, 56, 52, 54, 10, 35,100,101,102,105,110,101, 32, 77, 95, 49, 95, 80,
+ 73, 32, 48, 46, 51, 49, 56, 51, 48, 57, 56, 56, 54, 49, 56, 51, 55, 57, 48, 54, 57, 10, 10, 47, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 32, 83, 72, 65, 68, 69, 82, 32, 78, 79, 68, 69, 83, 32, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 47, 10, 10,118,111,105,100, 32,118, 99,111,108, 95, 97,116,116,114,105, 98,117,116,101, 40,118,101, 99, 52, 32, 97,116,116,118,
+ 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,118, 99,111,108, 41, 10,123, 10,  9,118, 99,111,108, 32, 61, 32,118,101,
+ 99, 52, 40, 97,116,116,118, 99,111,108, 46,120, 47, 50, 53, 53, 46, 48, 44, 32, 97,116,116,118, 99,111,108, 46,121, 47, 50, 53,
+ 53, 46, 48, 44, 32, 97,116,116,118, 99,111,108, 46,122, 47, 50, 53, 53, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10,125, 10, 10,118,
+111,105,100, 32,117,118, 95, 97,116,116,114,105, 98,117,116,101, 40,118,101, 99, 50, 32, 97,116,116,117,118, 44, 32,111,117,116,
+ 32,118,101, 99, 51, 32,117,118, 41, 10,123, 10,  9,117,118, 32, 61, 32,118,101, 99, 51, 40, 97,116,116,117,118, 42, 50, 46, 48,
+ 32, 45, 32,118,101, 99, 50, 40, 49, 46, 48, 44, 32, 49, 46, 48, 41, 44, 32, 48, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100,
+ 32,103,101,111,109, 40,118,101, 99, 51, 32, 99,111, 44, 32,118,101, 99, 51, 32,110,111,114, 44, 32,109, 97,116, 52, 32,118,105,
+101,119,105,110,118,109, 97,116, 44, 32,118,101, 99, 51, 32, 97,116,116,111,114, 99,111, 44, 32,118,101, 99, 50, 32, 97,116,116,
+117,118, 44, 32,118,101, 99, 52, 32, 97,116,116,118, 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,103,108,111, 98, 97,
+108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,108,111, 99, 97,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,118,105,101,119,
+ 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,114, 99,111, 44, 32,111,117,116, 32,118,101, 99, 51, 32,117,118, 44, 32,111,117,
+116, 32,118,101, 99, 51, 32,110,111,114,109, 97,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,118, 99,111,108, 44, 32,111,117,
+116, 32,102,108,111, 97,116, 32,118, 99,111,108, 95, 97,108,112,104, 97, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,102,114,
+111,110,116, 98, 97, 99,107, 41, 10,123, 10,  9,108,111, 99, 97,108, 32, 61, 32, 99,111, 59, 10,  9,118,105,101,119, 32, 61, 32,
+110,111,114,109, 97,108,105,122,101, 40,108,111, 99, 97,108, 41, 59, 10,  9,103,108,111, 98, 97,108, 32, 61, 32, 40,118,105,101,
+119,105,110,118,109, 97,116, 42,118,101, 99, 52, 40,108,111, 99, 97,108, 44, 32, 49, 46, 48, 41, 41, 46,120,121,122, 59, 10,  9,
+111,114, 99,111, 32, 61, 32, 97,116,116,111,114, 99,111, 59, 10,  9,117,118, 95, 97,116,116,114,105, 98,117,116,101, 40, 97,116,
+116,117,118, 44, 32,117,118, 41, 59, 10,  9,110,111,114,109, 97,108, 32, 61, 32, 45,110,111,114,109, 97,108,105,122,101, 40,110,
+111,114, 41, 59,  9, 47, 42, 32, 98,108,101,110,100,101,114, 32,114,101,110,100,101,114, 32,110,111,114,109, 97,108, 32,105,115,
+ 32,110,101,103, 97,116,101,100, 32, 42, 47, 10,  9,118, 99,111,108, 95, 97,116,116,114,105, 98,117,116,101, 40, 97,116,116,118,
+ 99,111,108, 44, 32,118, 99,111,108, 41, 59, 10,  9,118, 99,111,108, 95, 97,108,112,104, 97, 32, 61, 32, 97,116,116,118, 99,111,
+108, 46, 97, 59, 10,  9,102,114,111,110,116, 98, 97, 99,107, 32, 61, 32, 49, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,109,
+ 97,112,112,105,110,103, 40,118,101, 99, 51, 32,118,101, 99, 44, 32,109, 97,116, 52, 32,109, 97,116, 44, 32,118,101, 99, 51, 32,
+109,105,110,118,101, 99, 44, 32,118,101, 99, 51, 32,109, 97,120,118,101, 99, 44, 32,102,108,111, 97,116, 32,100,111,109,105,110,
+ 44, 32,102,108,111, 97,116, 32,100,111,109, 97,120, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 41, 10,
+123, 10,  9,111,117,116,118,101, 99, 32, 61, 32, 40,109, 97,116, 32, 42, 32,118,101, 99, 52, 40,118,101, 99, 44, 32, 49, 46, 48,
+ 41, 41, 46,120,121,122, 59, 10,  9,105,102, 40,100,111,109,105,110, 32, 61, 61, 32, 49, 46, 48, 41, 10,  9,  9,111,117,116,118,
+101, 99, 32, 61, 32,109, 97,120, 40,111,117,116,118,101, 99, 44, 32,109,105,110,118,101, 99, 41, 59, 10,  9,105,102, 40,100,111,
+109, 97,120, 32, 61, 61, 32, 49, 46, 48, 41, 10,  9,  9,111,117,116,118,101, 99, 32, 61, 32,109,105,110, 40,111,117,116,118,101,
+ 99, 44, 32,109, 97,120,118,101, 99, 41, 59, 10,125, 10, 10,118,111,105,100, 32, 99, 97,109,101,114, 97, 40,118,101, 99, 51, 32,
+ 99,111, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,105,101,119, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,
+111,117,116,100,101,112,116,104, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,100,105,115,116, 41, 10,123, 10,  9,
+111,117,116,100,101,112,116,104, 32, 61, 32, 97, 98,115, 40, 99,111, 46,122, 41, 59, 10,  9,111,117,116,100,105,115,116, 32, 61,
+ 32,108,101,110,103,116,104, 40, 99,111, 41, 59, 10,  9,111,117,116,118,105,101,119, 32, 61, 32,110,111,114,109, 97,108,105,122,
+101, 40, 99,111, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95, 97,100,100, 40,102,108,111, 97,116, 32,118, 97,
 108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108,
- 41, 13, 10,123, 13, 10,  9,105,102, 32, 40,118, 97,108, 49, 32, 62, 61, 32, 48, 46, 48, 41, 13, 10,  9,  9,111,117,116,118, 97,
-108, 32, 61, 32,112,111,119, 40,118, 97,108, 49, 44, 32,118, 97,108, 50, 41, 59, 13, 10,  9,101,108,115,101, 13, 10,  9,  9,111,
-117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109, 97,116,104, 95,108,111,103,
+ 41, 10,123, 10,  9,111,117,116,118, 97,108, 32, 61, 32,118, 97,108, 49, 32, 43, 32,118, 97,108, 50, 59, 10,125, 10, 10,118,111,
+105,100, 32,109, 97,116,104, 95,115,117, 98,116,114, 97, 99,116, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111,
+ 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,111,117,
+116,118, 97,108, 32, 61, 32,118, 97,108, 49, 32, 45, 32,118, 97,108, 50, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104,
+ 95,109,117,108,116,105,112,108,121, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50,
+ 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,111,117,116,118, 97,108, 32, 61, 32,
+118, 97,108, 49, 32, 42, 32,118, 97,108, 50, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,100,105,118,105,100,101,
  40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111,
- 97,116, 32,111,117,116,118, 97,108, 41, 13, 10,123, 13, 10,  9,105,102, 40,118, 97,108, 49, 32, 62, 32, 48, 46, 48, 32, 32, 38,
- 38, 32,118, 97,108, 50, 32, 62, 32, 48, 46, 48, 41, 13, 10,  9,  9,111,117,116,118, 97,108, 61, 32,108,111,103, 50, 40,118, 97,
-108, 49, 41, 32, 47, 32,108,111,103, 50, 40,118, 97,108, 50, 41, 59, 13, 10,  9,101,108,115,101, 13, 10,  9,  9,111,117,116,118,
- 97,108, 61, 32, 48, 46, 48, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109, 97,116,104, 95,109, 97,120, 40,102,108,111,
- 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,
-117,116,118, 97,108, 41, 13, 10,123, 13, 10,  9,111,117,116,118, 97,108, 32, 61, 32,109, 97,120, 40,118, 97,108, 49, 44, 32,118,
- 97,108, 50, 41, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109, 97,116,104, 95,109,105,110, 40,102,108,111, 97,116, 32,
-118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118,
- 97,108, 41, 13, 10,123, 13, 10,  9,111,117,116,118, 97,108, 32, 61, 32,109,105,110, 40,118, 97,108, 49, 44, 32,118, 97,108, 50,
- 41, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109, 97,116,104, 95,114,111,117,110,100, 40,102,108,111, 97,116, 32,118,
- 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 13, 10,123, 13, 10,  9,111,117,116,118, 97,
-108, 61, 32,102,108,111,111,114, 40,118, 97,108, 32, 43, 32, 48, 46, 53, 41, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,
-109, 97,116,104, 95,108,101,115,115, 95,116,104, 97,110, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116,
- 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 13, 10,123, 13, 10,  9,105,102,
- 40,118, 97,108, 49, 32, 60, 32,118, 97,108, 50, 41, 13, 10,  9,  9,111,117,116,118, 97,108, 32, 61, 32, 49, 46, 48, 59, 13, 10,
-  9,101,108,115,101, 13, 10,  9,  9,111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,
-100, 32,109, 97,116,104, 95,103,114,101, 97,116,101,114, 95,116,104, 97,110, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,
-102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 13, 10,123,
- 13, 10,  9,105,102, 40,118, 97,108, 49, 32, 62, 32,118, 97,108, 50, 41, 13, 10,  9,  9,111,117,116,118, 97,108, 32, 61, 32, 49,
- 46, 48, 59, 13, 10,  9,101,108,115,101, 13, 10,  9,  9,111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 13, 10,125, 13, 10,
- 13, 10,118,111,105,100, 32,115,113,117,101,101,122,101, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,102,108,111, 97,116, 32,
-119,105,100,116,104, 44, 32,102,108,111, 97,116, 32, 99,101,110,116,101,114, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,
-117,116,118, 97,108, 41, 13, 10,123, 13, 10,  9,111,117,116,118, 97,108, 32, 61, 32, 49, 46, 48, 47, 40, 49, 46, 48, 32, 43, 32,
-112,111,119, 40, 50, 46, 55, 49, 56, 50, 56, 49, 56, 51, 44, 32, 45, 40, 40,118, 97,108, 45, 99,101,110,116,101,114, 41, 42,119,
-105,100,116,104, 41, 41, 41, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,118,101, 99, 95,109, 97,116,104, 95, 97,100,100,
- 40,118,101, 99, 51, 32,118, 49, 44, 32,118,101, 99, 51, 32,118, 50, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,
-101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 13, 10,123, 13, 10,  9,111,117,116,118,101,
- 99, 32, 61, 32,118, 49, 32, 43, 32,118, 50, 59, 13, 10,  9,111,117,116,118, 97,108, 32, 61, 32, 40, 97, 98,115, 40,111,117,116,
-118,101, 99, 91, 48, 93, 41, 32, 43, 32, 97, 98,115, 40,111,117,116,118,101, 99, 91, 49, 93, 41, 32, 43, 32, 97, 98,115, 40,111,
-117,116,118,101, 99, 91, 50, 93, 41, 41, 47, 51, 46, 48, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,118,101, 99, 95,109,
+ 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,105,102, 32, 40,118, 97,108, 50, 32, 61, 61, 32, 48, 46, 48, 41, 10,  9,
+  9,111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 10,  9,101,108,115,101, 10,  9,  9,111,117,116,118, 97,108, 32, 61, 32,
+118, 97,108, 49, 32, 47, 32,118, 97,108, 50, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,115,105,110,101, 40,102,
+108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,111,
+117,116,118, 97,108, 32, 61, 32,115,105,110, 40,118, 97,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95, 99,
+111,115,105,110,101, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,
+108, 41, 10,123, 10,  9,111,117,116,118, 97,108, 32, 61, 32, 99,111,115, 40,118, 97,108, 41, 59, 10,125, 10, 10,118,111,105,100,
+ 32,109, 97,116,104, 95,116, 97,110,103,101,110,116, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111,
+ 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,111,117,116,118, 97,108, 32, 61, 32,116, 97,110, 40,118, 97,108, 41, 59,
+ 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95, 97,115,105,110, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,
+116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,105,102, 32, 40,118, 97,108, 32, 60, 61, 32, 49, 46,
+ 48, 32, 38, 38, 32,118, 97,108, 32, 62, 61, 32, 45, 49, 46, 48, 41, 10,  9,  9,111,117,116,118, 97,108, 32, 61, 32, 97,115,105,
+110, 40,118, 97,108, 41, 59, 10,  9,101,108,115,101, 10,  9,  9,111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 10,125, 10,
+ 10,118,111,105,100, 32,109, 97,116,104, 95, 97, 99,111,115, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,
+108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,105,102, 32, 40,118, 97,108, 32, 60, 61, 32, 49, 46, 48, 32, 38,
+ 38, 32,118, 97,108, 32, 62, 61, 32, 45, 49, 46, 48, 41, 10,  9,  9,111,117,116,118, 97,108, 32, 61, 32, 97, 99,111,115, 40,118,
+ 97,108, 41, 59, 10,  9,101,108,115,101, 10,  9,  9,111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,
+105,100, 32,109, 97,116,104, 95, 97,116, 97,110, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,
+116, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,111,117,116,118, 97,108, 32, 61, 32, 97,116, 97,110, 40,118, 97,108, 41, 59,
+ 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,112,111,119, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,
+111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,105,
+102, 32, 40,118, 97,108, 49, 32, 62, 61, 32, 48, 46, 48, 41, 10,  9,  9,111,117,116,118, 97,108, 32, 61, 32,112,111,119, 40,118,
+ 97,108, 49, 44, 32,118, 97,108, 50, 41, 59, 10,  9,101,108,115,101, 10,  9,  9,111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48,
+ 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,108,111,103, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,
+108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,
+105,102, 40,118, 97,108, 49, 32, 62, 32, 48, 46, 48, 32, 32, 38, 38, 32,118, 97,108, 50, 32, 62, 32, 48, 46, 48, 41, 10,  9,  9,
+111,117,116,118, 97,108, 61, 32,108,111,103, 50, 40,118, 97,108, 49, 41, 32, 47, 32,108,111,103, 50, 40,118, 97,108, 50, 41, 59,
+ 10,  9,101,108,115,101, 10,  9,  9,111,117,116,118, 97,108, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,
+116,104, 95,109, 97,120, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,
+117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,111,117,116,118, 97,108, 32, 61, 32,109, 97,120,
+ 40,118, 97,108, 49, 44, 32,118, 97,108, 50, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,109,105,110, 40,102,
+108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116,
+ 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,111,117,116,118, 97,108, 32, 61, 32,109,105,110, 40,118, 97,108, 49, 44, 32,118,
+ 97,108, 50, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,114,111,117,110,100, 40,102,108,111, 97,116, 32,118,
+ 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,111,117,116,118, 97,108, 61,
+ 32,102,108,111,111,114, 40,118, 97,108, 32, 43, 32, 48, 46, 53, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,
+108,101,115,115, 95,116,104, 97,110, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50,
+ 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,105,102, 40,118, 97,108, 49, 32, 60,
+ 32,118, 97,108, 50, 41, 10,  9,  9,111,117,116,118, 97,108, 32, 61, 32, 49, 46, 48, 59, 10,  9,101,108,115,101, 10,  9,  9,111,
+117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,103,114,101, 97,116,101,
+114, 95,116,104, 97,110, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,
+117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,105,102, 40,118, 97,108, 49, 32, 62, 32,118, 97,
+108, 50, 41, 10,  9,  9,111,117,116,118, 97,108, 32, 61, 32, 49, 46, 48, 59, 10,  9,101,108,115,101, 10,  9,  9,111,117,116,118,
+ 97,108, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,115,113,117,101,101,122,101, 40,102,108,111, 97,116, 32,
+118, 97,108, 44, 32,102,108,111, 97,116, 32,119,105,100,116,104, 44, 32,102,108,111, 97,116, 32, 99,101,110,116,101,114, 44, 32,
+111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,111,117,116,118, 97,108, 32, 61, 32, 49, 46,
+ 48, 47, 40, 49, 46, 48, 32, 43, 32,112,111,119, 40, 50, 46, 55, 49, 56, 50, 56, 49, 56, 51, 44, 32, 45, 40, 40,118, 97,108, 45,
+ 99,101,110,116,101,114, 41, 42,119,105,100,116,104, 41, 41, 41, 59, 10,125, 10, 10,118,111,105,100, 32,118,101, 99, 95,109, 97,
+116,104, 95, 97,100,100, 40,118,101, 99, 51, 32,118, 49, 44, 32,118,101, 99, 51, 32,118, 50, 44, 32,111,117,116, 32,118,101, 99,
+ 51, 32,111,117,116,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,111,
+117,116,118,101, 99, 32, 61, 32,118, 49, 32, 43, 32,118, 50, 59, 10,  9,111,117,116,118, 97,108, 32, 61, 32, 40, 97, 98,115, 40,
+111,117,116,118,101, 99, 91, 48, 93, 41, 32, 43, 32, 97, 98,115, 40,111,117,116,118,101, 99, 91, 49, 93, 41, 32, 43, 32, 97, 98,
+115, 40,111,117,116,118,101, 99, 91, 50, 93, 41, 41, 47, 51, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,118,101, 99, 95,109,
  97,116,104, 95,115,117, 98, 40,118,101, 99, 51, 32,118, 49, 44, 32,118,101, 99, 51, 32,118, 50, 44, 32,111,117,116, 32,118,101,
- 99, 51, 32,111,117,116,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 13, 10,123, 13,
- 10,  9,111,117,116,118,101, 99, 32, 61, 32,118, 49, 32, 45, 32,118, 50, 59, 13, 10,  9,111,117,116,118, 97,108, 32, 61, 32, 40,
- 97, 98,115, 40,111,117,116,118,101, 99, 91, 48, 93, 41, 32, 43, 32, 97, 98,115, 40,111,117,116,118,101, 99, 91, 49, 93, 41, 32,
- 43, 32, 97, 98,115, 40,111,117,116,118,101, 99, 91, 50, 93, 41, 41, 47, 51, 46, 48, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,
-100, 32,118,101, 99, 95,109, 97,116,104, 95, 97,118,101,114, 97,103,101, 40,118,101, 99, 51, 32,118, 49, 44, 32,118,101, 99, 51,
- 32,118, 50, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,
-111,117,116,118, 97,108, 41, 13, 10,123, 13, 10,  9,111,117,116,118,101, 99, 32, 61, 32,118, 49, 32, 43, 32,118, 50, 59, 13, 10,
-  9,111,117,116,118, 97,108, 32, 61, 32,108,101,110,103,116,104, 40,111,117,116,118,101, 99, 41, 59, 13, 10,  9,111,117,116,118,
-101, 99, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,111,117,116,118,101, 99, 41, 59, 13, 10,125, 13, 10, 13, 10,118,111,
-105,100, 32,118,101, 99, 95,109, 97,116,104, 95,100,111,116, 40,118,101, 99, 51, 32,118, 49, 44, 32,118,101, 99, 51, 32,118, 50,
- 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,
-118, 97,108, 41, 13, 10,123, 13, 10,  9,111,117,116,118,101, 99, 32, 61, 32,118,101, 99, 51, 40, 48, 44, 32, 48, 44, 32, 48, 41,
- 59, 13, 10,  9,111,117,116,118, 97,108, 32, 61, 32,100,111,116, 40,118, 49, 44, 32,118, 50, 41, 59, 13, 10,125, 13, 10, 13, 10,
-118,111,105,100, 32,118,101, 99, 95,109, 97,116,104, 95, 99,114,111,115,115, 40,118,101, 99, 51, 32,118, 49, 44, 32,118,101, 99,
- 51, 32,118, 50, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116,
- 32,111,117,116,118, 97,108, 41, 13, 10,123, 13, 10,  9,111,117,116,118,101, 99, 32, 61, 32, 99,114,111,115,115, 40,118, 49, 44,
- 32,118, 50, 41, 59, 13, 10,  9,111,117,116,118, 97,108, 32, 61, 32,108,101,110,103,116,104, 40,111,117,116,118,101, 99, 41, 59,
- 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,118,101, 99, 95,109, 97,116,104, 95,110,111,114,109, 97,108,105,122,101, 40,118,
-101, 99, 51, 32,118, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,
-116, 32,111,117,116,118, 97,108, 41, 13, 10,123, 13, 10,  9,111,117,116,118, 97,108, 32, 61, 32,108,101,110,103,116,104, 40,118,
- 41, 59, 13, 10,  9,111,117,116,118,101, 99, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,118, 41, 59, 13, 10,125, 13, 10,
- 13, 10,118,111,105,100, 32,118,101, 99, 95,109, 97,116,104, 95,110,101,103, 97,116,101, 40,118,101, 99, 51, 32,118, 44, 32,111,
-117,116, 32,118,101, 99, 51, 32,111,117,116,118, 41, 13, 10,123, 13, 10,  9,111,117,116,118, 32, 61, 32, 45,118, 59, 13, 10,125,
- 13, 10, 13, 10,118,111,105,100, 32,110,111,114,109, 97,108, 40,118,101, 99, 51, 32,100,105,114, 44, 32,118,101, 99, 51, 32,110,
-111,114, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,110,111,114, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,
-117,116,100,111,116, 41, 13, 10,123, 13, 10,  9,111,117,116,110,111,114, 32, 61, 32,110,111,114, 59, 13, 10,  9,111,117,116,100,
-111,116, 32, 61, 32, 45,100,111,116, 40,100,105,114, 44, 32,110,111,114, 41, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,
- 99,117,114,118,101,115, 95,118,101, 99, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 51, 32,118,101, 99, 44, 32,
-115, 97,109,112,108,101,114, 50, 68, 32, 99,117,114,118,101,109, 97,112, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,
-118,101, 99, 41, 13, 10,123, 13, 10,  9,111,117,116,118,101, 99, 46,120, 32, 61, 32,116,101,120,116,117,114,101, 50, 68, 40, 99,
-117,114,118,101,109, 97,112, 44, 32,118,101, 99, 50, 40, 40,118,101, 99, 46,120, 32, 43, 32, 49, 46, 48, 41, 42, 48, 46, 53, 44,
- 32, 48, 46, 48, 41, 41, 46,120, 59, 13, 10,  9,111,117,116,118,101, 99, 46,121, 32, 61, 32,116,101,120,116,117,114,101, 50, 68,
- 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101, 99, 50, 40, 40,118,101, 99, 46,121, 32, 43, 32, 49, 46, 48, 41, 42, 48, 46,
- 53, 44, 32, 48, 46, 48, 41, 41, 46,121, 59, 13, 10,  9,111,117,116,118,101, 99, 46,122, 32, 61, 32,116,101,120,116,117,114,101,
- 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101, 99, 50, 40, 40,118,101, 99, 46,122, 32, 43, 32, 49, 46, 48, 41, 42,
- 48, 46, 53, 44, 32, 48, 46, 48, 41, 41, 46,122, 59, 13, 10, 13, 10,  9,105,102, 32, 40,102, 97, 99, 32, 33, 61, 32, 49, 46, 48,
- 41, 13, 10,  9,  9,111,117,116,118,101, 99, 32, 61, 32, 40,111,117,116,118,101, 99, 42,102, 97, 99, 41, 32, 43, 32, 40,118,101,
- 99, 42, 40, 49, 46, 48, 45,102, 97, 99, 41, 41, 59, 13, 10, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32, 99,117,114,118,101,
-115, 95,114,103, 98, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 44, 32,115, 97,109,112,108,
-101,114, 50, 68, 32, 99,117,114,118,101,109, 97,112, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 13,
- 10,123, 13, 10,  9,111,117,116, 99,111,108, 46,114, 32, 61, 32,116,101,120,116,117,114,101, 50, 68, 40, 99,117,114,118,101,109,
+ 99, 51, 32,111,117,116,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,
+111,117,116,118,101, 99, 32, 61, 32,118, 49, 32, 45, 32,118, 50, 59, 10,  9,111,117,116,118, 97,108, 32, 61, 32, 40, 97, 98,115,
+ 40,111,117,116,118,101, 99, 91, 48, 93, 41, 32, 43, 32, 97, 98,115, 40,111,117,116,118,101, 99, 91, 49, 93, 41, 32, 43, 32, 97,
+ 98,115, 40,111,117,116,118,101, 99, 91, 50, 93, 41, 41, 47, 51, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,118,101, 99, 95,
+109, 97,116,104, 95, 97,118,101,114, 97,103,101, 40,118,101, 99, 51, 32,118, 49, 44, 32,118,101, 99, 51, 32,118, 50, 44, 32,111,
+117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108,
+ 41, 10,123, 10,  9,111,117,116,118,101, 99, 32, 61, 32,118, 49, 32, 43, 32,118, 50, 59, 10,  9,111,117,116,118, 97,108, 32, 61,
+ 32,108,101,110,103,116,104, 40,111,117,116,118,101, 99, 41, 59, 10,  9,111,117,116,118,101, 99, 32, 61, 32,110,111,114,109, 97,
+108,105,122,101, 40,111,117,116,118,101, 99, 41, 59, 10,125, 10, 10,118,111,105,100, 32,118,101, 99, 95,109, 97,116,104, 95,100,
+111,116, 40,118,101, 99, 51, 32,118, 49, 44, 32,118,101, 99, 51, 32,118, 50, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,
+116,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,111,117,116,118,101,
+ 99, 32, 61, 32,118,101, 99, 51, 40, 48, 44, 32, 48, 44, 32, 48, 41, 59, 10,  9,111,117,116,118, 97,108, 32, 61, 32,100,111,116,
+ 40,118, 49, 44, 32,118, 50, 41, 59, 10,125, 10, 10,118,111,105,100, 32,118,101, 99, 95,109, 97,116,104, 95, 99,114,111,115,115,
+ 40,118,101, 99, 51, 32,118, 49, 44, 32,118,101, 99, 51, 32,118, 50, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,
+101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,111,117,116,118,101, 99, 32,
+ 61, 32, 99,114,111,115,115, 40,118, 49, 44, 32,118, 50, 41, 59, 10,  9,111,117,116,118, 97,108, 32, 61, 32,108,101,110,103,116,
+104, 40,111,117,116,118,101, 99, 41, 59, 10,125, 10, 10,118,111,105,100, 32,118,101, 99, 95,109, 97,116,104, 95,110,111,114,109,
+ 97,108,105,122,101, 40,118,101, 99, 51, 32,118, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 44, 32,111,
+117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,111,117,116,118, 97,108, 32, 61, 32,108,101,110,
+103,116,104, 40,118, 41, 59, 10,  9,111,117,116,118,101, 99, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,118, 41, 59, 10,
+125, 10, 10,118,111,105,100, 32,118,101, 99, 95,109, 97,116,104, 95,110,101,103, 97,116,101, 40,118,101, 99, 51, 32,118, 44, 32,
+111,117,116, 32,118,101, 99, 51, 32,111,117,116,118, 41, 10,123, 10,  9,111,117,116,118, 32, 61, 32, 45,118, 59, 10,125, 10, 10,
+118,111,105,100, 32,110,111,114,109, 97,108, 40,118,101, 99, 51, 32,100,105,114, 44, 32,118,101, 99, 51, 32,110,111,114, 44, 32,
+111,117,116, 32,118,101, 99, 51, 32,111,117,116,110,111,114, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,100,111,
+116, 41, 10,123, 10,  9,111,117,116,110,111,114, 32, 61, 32,110,111,114, 59, 10,  9,111,117,116,100,111,116, 32, 61, 32, 45,100,
+111,116, 40,100,105,114, 44, 32,110,111,114, 41, 59, 10,125, 10, 10,118,111,105,100, 32, 99,117,114,118,101,115, 95,118,101, 99,
+ 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 51, 32,118,101, 99, 44, 32,115, 97,109,112,108,101,114, 50, 68, 32,
+ 99,117,114,118,101,109, 97,112, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 41, 10,123, 10,  9,111,117,
+116,118,101, 99, 46,120, 32, 61, 32,116,101,120,116,117,114,101, 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101, 99,
+ 50, 40, 40,118,101, 99, 46,120, 32, 43, 32, 49, 46, 48, 41, 42, 48, 46, 53, 44, 32, 48, 46, 48, 41, 41, 46,120, 59, 10,  9,111,
+117,116,118,101, 99, 46,121, 32, 61, 32,116,101,120,116,117,114,101, 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101,
+ 99, 50, 40, 40,118,101, 99, 46,121, 32, 43, 32, 49, 46, 48, 41, 42, 48, 46, 53, 44, 32, 48, 46, 48, 41, 41, 46,121, 59, 10,  9,
+111,117,116,118,101, 99, 46,122, 32, 61, 32,116,101,120,116,117,114,101, 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,
+101, 99, 50, 40, 40,118,101, 99, 46,122, 32, 43, 32, 49, 46, 48, 41, 42, 48, 46, 53, 44, 32, 48, 46, 48, 41, 41, 46,122, 59, 10,
+ 10,  9,105,102, 32, 40,102, 97, 99, 32, 33, 61, 32, 49, 46, 48, 41, 10,  9,  9,111,117,116,118,101, 99, 32, 61, 32, 40,111,117,
+116,118,101, 99, 42,102, 97, 99, 41, 32, 43, 32, 40,118,101, 99, 42, 40, 49, 46, 48, 45,102, 97, 99, 41, 41, 59, 10, 10,125, 10,
+ 10,118,111,105,100, 32, 99,117,114,118,101,115, 95,114,103, 98, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52,
+ 32, 99,111,108, 44, 32,115, 97,109,112,108,101,114, 50, 68, 32, 99,117,114,118,101,109, 97,112, 44, 32,111,117,116, 32,118,101,
+ 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10,  9,111,117,116, 99,111,108, 46,114, 32, 61, 32,116,101,120,116,117,114,101,
+ 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101, 99, 50, 40,116,101,120,116,117,114,101, 50, 68, 40, 99,117,114,118,
+101,109, 97,112, 44, 32,118,101, 99, 50, 40, 99,111,108, 46,114, 44, 32, 48, 46, 48, 41, 41, 46, 97, 44, 32, 48, 46, 48, 41, 41,
+ 46,114, 59, 10,  9,111,117,116, 99,111,108, 46,103, 32, 61, 32,116,101,120,116,117,114,101, 50, 68, 40, 99,117,114,118,101,109,
  97,112, 44, 32,118,101, 99, 50, 40,116,101,120,116,117,114,101, 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101, 99,
- 50, 40, 99,111,108, 46,114, 44, 32, 48, 46, 48, 41, 41, 46, 97, 44, 32, 48, 46, 48, 41, 41, 46,114, 59, 13, 10,  9,111,117,116,
- 99,111,108, 46,103, 32, 61, 32,116,101,120,116,117,114,101, 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101, 99, 50,
- 40,116,101,120,116,117,114,101, 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101, 99, 50, 40, 99,111,108, 46,103, 44,
- 32, 48, 46, 48, 41, 41, 46, 97, 44, 32, 48, 46, 48, 41, 41, 46,103, 59, 13, 10,  9,111,117,116, 99,111,108, 46, 98, 32, 61, 32,
-116,101,120,116,117,114,101, 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101, 99, 50, 40,116,101,120,116,117,114,101,
- 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101, 99, 50, 40, 99,111,108, 46, 98, 44, 32, 48, 46, 48, 41, 41, 46, 97,
- 44, 32, 48, 46, 48, 41, 41, 46, 98, 59, 13, 10, 13, 10,  9,105,102, 32, 40,102, 97, 99, 32, 33, 61, 32, 49, 46, 48, 41, 13, 10,
-  9,  9,111,117,116, 99,111,108, 32, 61, 32, 40,111,117,116, 99,111,108, 42,102, 97, 99, 41, 32, 43, 32, 40, 99,111,108, 42, 40,
- 49, 46, 48, 45,102, 97, 99, 41, 41, 59, 13, 10, 13, 10,  9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 46, 97, 59,
- 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,115,101,116, 95,118, 97,108,117,101, 40,102,108,111, 97,116, 32,118, 97,108, 44,
- 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 13, 10,123, 13, 10,  9,111,117,116,118, 97,108, 32, 61,
- 32,118, 97,108, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,115,101,116, 95,114,103, 98, 40,118,101, 99, 51, 32, 99,111,
-108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116, 99,111,108, 41, 13, 10,123, 13, 10,  9,111,117,116, 99,111,108, 32,
- 61, 32, 99,111,108, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,115,101,116, 95,114,103, 98, 97, 40,118,101, 99, 52, 32,
- 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 13, 10,123, 13, 10,  9,111,117,116, 99,111,
-108, 32, 61, 32, 99,111,108, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,115,101,116, 95,118, 97,108,117,101, 95,122,101,
-114,111, 40,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 13, 10,123, 13, 10,  9,111,117,116,118, 97,108,
- 32, 61, 32, 48, 46, 48, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,115,101,116, 95,118, 97,108,117,101, 95,111,110,101,
- 40,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 13, 10,123, 13, 10,  9,111,117,116,118, 97,108, 32, 61,
- 32, 49, 46, 48, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,115,101,116, 95,114,103, 98, 95,122,101,114,111, 40,111,117,
-116, 32,118,101, 99, 51, 32,111,117,116,118, 97,108, 41, 13, 10,123, 13, 10,  9,111,117,116,118, 97,108, 32, 61, 32,118,101, 99,
- 51, 40, 48, 46, 48, 41, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,115,101,116, 95,114,103, 98, 97, 95,122,101,114,111,
- 40,111,117,116, 32,118,101, 99, 52, 32,111,117,116,118, 97,108, 41, 13, 10,123, 13, 10,  9,111,117,116,118, 97,108, 32, 61, 32,
-118,101, 99, 52, 40, 48, 46, 48, 41, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32, 99,111,112,121, 95,114, 97,119, 40,118,
-101, 99, 52, 32,118, 97,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116,118, 97,108, 41, 13, 10,123, 13, 10,  9,111,
-117,116,118, 97,108, 32, 61, 32,118, 97,108, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32, 99,111,112,121, 95,114, 97,119,
- 40,118,101, 99, 51, 32,118, 97,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118, 97,108, 41, 13, 10,123, 13, 10,
-  9,111,117,116,118, 97,108, 32, 61, 32,118, 97,108, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32, 99,111,112,121, 95,114,
- 97,119, 40,118,101, 99, 50, 32,118, 97,108, 44, 32,111,117,116, 32,118,101, 99, 50, 32,111,117,116,118, 97,108, 41, 13, 10,123,
- 13, 10,  9,111,117,116,118, 97,108, 32, 61, 32,118, 97,108, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32, 99,111,112,121,
- 95,114, 97,119, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108,
- 41, 13, 10,123, 13, 10,  9,111,117,116,118, 97,108, 32, 61, 32,118, 97,108, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,
-109,105,120, 95, 98,108,101,110,100, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,
-118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 13, 10,123, 13, 10,
-  9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 13, 10,  9,111,
-117,116, 99,111,108, 32, 61, 32,109,105,120, 40, 99,111,108, 49, 44, 32, 99,111,108, 50, 44, 32,102, 97, 99, 41, 59, 13, 10,  9,
-111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109,105,
-120, 95, 97,100,100, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52,
- 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 13, 10,123, 13, 10,  9,102, 97, 99,
- 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 13, 10,  9,111,117,116, 99,111,
-108, 32, 61, 32,109,105,120, 40, 99,111,108, 49, 44, 32, 99,111,108, 49, 32, 43, 32, 99,111,108, 50, 44, 32,102, 97, 99, 41, 59,
- 13, 10,  9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100,
- 32,109,105,120, 95,109,117,108,116, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,
-118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 13, 10,123, 13, 10,
-  9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 13, 10,  9,111,
-117,116, 99,111,108, 32, 61, 32,109,105,120, 40, 99,111,108, 49, 44, 32, 99,111,108, 49, 32, 42, 32, 99,111,108, 50, 44, 32,102,
- 97, 99, 41, 59, 13, 10,  9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 13, 10,125, 13, 10, 13, 10,
-118,111,105,100, 32,109,105,120, 95,115, 99,114,101,101,110, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32,
- 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108,
- 41, 13, 10,123, 13, 10,  9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48,
- 41, 59, 13, 10,  9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 13, 10, 13, 10,
-  9,111,117,116, 99,111,108, 32, 61, 32,118,101, 99, 52, 40, 49, 46, 48, 41, 32, 45, 32, 40,118,101, 99, 52, 40,102, 97, 99,109,
- 41, 32, 43, 32,102, 97, 99, 42, 40,118,101, 99, 52, 40, 49, 46, 48, 41, 32, 45, 32, 99,111,108, 50, 41, 41, 42, 40,118,101, 99,
- 52, 40, 49, 46, 48, 41, 32, 45, 32, 99,111,108, 49, 41, 59, 13, 10,  9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108,
- 49, 46, 97, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109,105,120, 95,111,118,101,114,108, 97,121, 40,102,108,111, 97,
-116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116,
- 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 13, 10,123, 13, 10,  9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102,
- 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 13, 10,  9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, 46,
- 48, 32, 45, 32,102, 97, 99, 59, 13, 10, 13, 10,  9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 13, 10, 13, 10,  9,
-105,102, 40,111,117,116, 99,111,108, 46,114, 32, 60, 32, 48, 46, 53, 41, 13, 10,  9,  9,111,117,116, 99,111,108, 46,114, 32, 42,
- 61, 32,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99, 42, 99,111,108, 50, 46,114, 59, 13, 10,  9,101,108,115,101, 13,
+ 50, 40, 99,111,108, 46,103, 44, 32, 48, 46, 48, 41, 41, 46, 97, 44, 32, 48, 46, 48, 41, 41, 46,103, 59, 10,  9,111,117,116, 99,
+111,108, 46, 98, 32, 61, 32,116,101,120,116,117,114,101, 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101, 99, 50, 40,
+116,101,120,116,117,114,101, 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101, 99, 50, 40, 99,111,108, 46, 98, 44, 32,
+ 48, 46, 48, 41, 41, 46, 97, 44, 32, 48, 46, 48, 41, 41, 46, 98, 59, 10, 10,  9,105,102, 32, 40,102, 97, 99, 32, 33, 61, 32, 49,
+ 46, 48, 41, 10,  9,  9,111,117,116, 99,111,108, 32, 61, 32, 40,111,117,116, 99,111,108, 42,102, 97, 99, 41, 32, 43, 32, 40, 99,
+111,108, 42, 40, 49, 46, 48, 45,102, 97, 99, 41, 41, 59, 10, 10,  9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 46,
+ 97, 59, 10,125, 10, 10,118,111,105,100, 32,115,101,116, 95,118, 97,108,117,101, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,
+111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,111,117,116,118, 97,108, 32, 61, 32,118, 97,
+108, 59, 10,125, 10, 10,118,111,105,100, 32,115,101,116, 95,114,103, 98, 40,118,101, 99, 51, 32, 99,111,108, 44, 32,111,117,116,
+ 32,118,101, 99, 51, 32,111,117,116, 99,111,108, 41, 10,123, 10,  9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 59, 10,125,
+ 10, 10,118,111,105,100, 32,115,101,116, 95,114,103, 98, 97, 40,118,101, 99, 52, 32, 99,111,108, 44, 32,111,117,116, 32,118,101,
+ 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10,  9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 59, 10,125, 10, 10,118,
+111,105,100, 32,115,101,116, 95,118, 97,108,117,101, 95,122,101,114,111, 40,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,
+118, 97,108, 41, 10,123, 10,  9,111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,115,101,
+116, 95,118, 97,108,117,101, 95,111,110,101, 40,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10,
+  9,111,117,116,118, 97,108, 32, 61, 32, 49, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,115,101,116, 95,114,103, 98, 95,122,
+101,114,111, 40,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,111,117,116,118, 97,108, 32, 61,
+ 32,118,101, 99, 51, 40, 48, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,101,116, 95,114,103, 98, 97, 95,122,101,114,
+111, 40,111,117,116, 32,118,101, 99, 52, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,111,117,116,118, 97,108, 32, 61, 32,118,
+101, 99, 52, 40, 48, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32, 99,111,112,121, 95,114, 97,119, 40,118,101, 99, 52, 32,
+118, 97,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,111,117,116,118, 97,108, 32,
+ 61, 32,118, 97,108, 59, 10,125, 10, 10,118,111,105,100, 32, 99,111,112,121, 95,114, 97,119, 40,118,101, 99, 51, 32,118, 97,108,
+ 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,111,117,116,118, 97,108, 32, 61, 32,118,
+ 97,108, 59, 10,125, 10, 10,118,111,105,100, 32, 99,111,112,121, 95,114, 97,119, 40,118,101, 99, 50, 32,118, 97,108, 44, 32,111,
+117,116, 32,118,101, 99, 50, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,111,117,116,118, 97,108, 32, 61, 32,118, 97,108, 59,
+ 10,125, 10, 10,118,111,105,100, 32, 99,111,112,121, 95,114, 97,119, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116,
+ 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,111,117,116,118, 97,108, 32, 61, 32,118, 97,108, 59, 10,
+125, 10, 10,118,111,105,100, 32,109,105,120, 95, 98,108,101,110,100, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99,
+ 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,
+111,108, 41, 10,123, 10,  9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48,
+ 41, 59, 10,  9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, 40, 99,111,108, 49, 44, 32, 99,111,108, 50, 44, 32,102, 97, 99,
+ 41, 59, 10,  9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,
+105,120, 95, 97,100,100, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99,
+ 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10,  9,102, 97, 99, 32,
+ 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10,  9,111,117,116, 99,111,108, 32,
+ 61, 32,109,105,120, 40, 99,111,108, 49, 44, 32, 99,111,108, 49, 32, 43, 32, 99,111,108, 50, 44, 32,102, 97, 99, 41, 59, 10,  9,
+111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,109,
+117,108,116, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,
+111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10,  9,102, 97, 99, 32, 61, 32, 99,
+108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10,  9,111,117,116, 99,111,108, 32, 61, 32,109,
+105,120, 40, 99,111,108, 49, 44, 32, 99,111,108, 49, 32, 42, 32, 99,111,108, 50, 44, 32,102, 97, 99, 41, 59, 10,  9,111,117,116,
+ 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,115, 99,114,101,
+101,110, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,
+108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10,  9,102, 97, 99, 32, 61, 32, 99,108,
+ 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10,  9,102,108,111, 97,116, 32,102, 97, 99,109, 32,
+ 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10,  9,111,117,116, 99,111,108, 32, 61, 32,118,101, 99, 52, 40, 49, 46, 48,
+ 41, 32, 45, 32, 40,118,101, 99, 52, 40,102, 97, 99,109, 41, 32, 43, 32,102, 97, 99, 42, 40,118,101, 99, 52, 40, 49, 46, 48, 41,
+ 32, 45, 32, 99,111,108, 50, 41, 41, 42, 40,118,101, 99, 52, 40, 49, 46, 48, 41, 32, 45, 32, 99,111,108, 49, 41, 59, 10,  9,111,
+117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,111,118,
+101,114,108, 97,121, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52,
+ 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10,  9,102, 97, 99, 32, 61,
+ 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10,  9,102,108,111, 97,116, 32,102, 97,
+ 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10,  9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59,
+ 10, 10,  9,105,102, 40,111,117,116, 99,111,108, 46,114, 32, 60, 32, 48, 46, 53, 41, 10,  9,  9,111,117,116, 99,111,108, 46,114,
+ 32, 42, 61, 32,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99, 42, 99,111,108, 50, 46,114, 59, 10,  9,101,108,115,101,
  10,  9,  9,111,117,116, 99,111,108, 46,114, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,
 102, 97, 99, 42, 40, 49, 46, 48, 32, 45, 32, 99,111,108, 50, 46,114, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,
-108, 46,114, 41, 59, 13, 10, 13, 10,  9,105,102, 40,111,117,116, 99,111,108, 46,103, 32, 60, 32, 48, 46, 53, 41, 13, 10,  9,  9,
-111,117,116, 99,111,108, 46,103, 32, 42, 61, 32,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99, 42, 99,111,108, 50, 46,
-103, 59, 13, 10,  9,101,108,115,101, 13, 10,  9,  9,111,117,116, 99,111,108, 46,103, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102,
- 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99, 42, 40, 49, 46, 48, 32, 45, 32, 99,111,108, 50, 46,103, 41, 41, 42, 40, 49,
- 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46,103, 41, 59, 13, 10, 13, 10,  9,105,102, 40,111,117,116, 99,111,108, 46, 98, 32,
- 60, 32, 48, 46, 53, 41, 13, 10,  9,  9,111,117,116, 99,111,108, 46, 98, 32, 42, 61, 32,102, 97, 99,109, 32, 43, 32, 50, 46, 48,
- 42,102, 97, 99, 42, 99,111,108, 50, 46, 98, 59, 13, 10,  9,101,108,115,101, 13, 10,  9,  9,111,117,116, 99,111,108, 46, 98, 32,
- 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99, 42, 40, 49, 46, 48, 32, 45, 32, 99,
-111,108, 50, 46, 98, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46, 98, 41, 59, 13, 10,125, 13, 10, 13, 10,
-118,111,105,100, 32,109,105,120, 95,115,117, 98, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108,
- 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 13, 10,
-123, 13, 10,  9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 13,
- 10,  9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, 40, 99,111,108, 49, 44, 32, 99,111,108, 49, 32, 45, 32, 99,111,108, 50,
- 44, 32,102, 97, 99, 41, 59, 13, 10,  9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 13, 10,125, 13,
- 10, 13, 10,118,111,105,100, 32,109,105,120, 95,100,105,118, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32,
- 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108,
- 41, 13, 10,123, 13, 10,  9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48,
- 41, 59, 13, 10,  9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 13, 10, 13, 10,
-  9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 13, 10, 13, 10,  9,105,102, 40, 99,111,108, 50, 46,114, 32, 33, 61,
- 32, 48, 46, 48, 41, 32,111,117,116, 99,111,108, 46,114, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 46,114, 32, 43,
- 32,102, 97, 99, 42,111,117,116, 99,111,108, 46,114, 47, 99,111,108, 50, 46,114, 59, 13, 10,  9,105,102, 40, 99,111,108, 50, 46,
-103, 32, 33, 61, 32, 48, 46, 48, 41, 32,111,117,116, 99,111,108, 46,103, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108,
- 46,103, 32, 43, 32,102, 97, 99, 42,111,117,116, 99,111,108, 46,103, 47, 99,111,108, 50, 46,103, 59, 13, 10,  9,105,102, 40, 99,
-111,108, 50, 46, 98, 32, 33, 61, 32, 48, 46, 48, 41, 32,111,117,116, 99,111,108, 46, 98, 32, 61, 32,102, 97, 99,109, 42,111,117,
-116, 99,111,108, 46, 98, 32, 43, 32,102, 97, 99, 42,111,117,116, 99,111,108, 46, 98, 47, 99,111,108, 50, 46, 98, 59, 13, 10,125,
- 13, 10, 13, 10,118,111,105,100, 32,109,105,120, 95,100,105,102,102, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99,
+108, 46,114, 41, 59, 10, 10,  9,105,102, 40,111,117,116, 99,111,108, 46,103, 32, 60, 32, 48, 46, 53, 41, 10,  9,  9,111,117,116,
+ 99,111,108, 46,103, 32, 42, 61, 32,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99, 42, 99,111,108, 50, 46,103, 59, 10,
+  9,101,108,115,101, 10,  9,  9,111,117,116, 99,111,108, 46,103, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43,
+ 32, 50, 46, 48, 42,102, 97, 99, 42, 40, 49, 46, 48, 32, 45, 32, 99,111,108, 50, 46,103, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,
+111,117,116, 99,111,108, 46,103, 41, 59, 10, 10,  9,105,102, 40,111,117,116, 99,111,108, 46, 98, 32, 60, 32, 48, 46, 53, 41, 10,
+  9,  9,111,117,116, 99,111,108, 46, 98, 32, 42, 61, 32,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99, 42, 99,111,108,
+ 50, 46, 98, 59, 10,  9,101,108,115,101, 10,  9,  9,111,117,116, 99,111,108, 46, 98, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102,
+ 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99, 42, 40, 49, 46, 48, 32, 45, 32, 99,111,108, 50, 46, 98, 41, 41, 42, 40, 49,
+ 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46, 98, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,115,117, 98, 40,
+102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44,
+ 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10,  9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112,
+ 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10,  9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, 40, 99,
+111,108, 49, 44, 32, 99,111,108, 49, 32, 45, 32, 99,111,108, 50, 44, 32,102, 97, 99, 41, 59, 10,  9,111,117,116, 99,111,108, 46,
+ 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,100,105,118, 40,102,108,111, 97,
+116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116,
+ 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10,  9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99,
+ 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10,  9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45,
+ 32,102, 97, 99, 59, 10, 10,  9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 10, 10,  9,105,102, 40, 99,111,108, 50,
+ 46,114, 32, 33, 61, 32, 48, 46, 48, 41, 32,111,117,116, 99,111,108, 46,114, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,
+108, 46,114, 32, 43, 32,102, 97, 99, 42,111,117,116, 99,111,108, 46,114, 47, 99,111,108, 50, 46,114, 59, 10,  9,105,102, 40, 99,
+111,108, 50, 46,103, 32, 33, 61, 32, 48, 46, 48, 41, 32,111,117,116, 99,111,108, 46,103, 32, 61, 32,102, 97, 99,109, 42,111,117,
+116, 99,111,108, 46,103, 32, 43, 32,102, 97, 99, 42,111,117,116, 99,111,108, 46,103, 47, 99,111,108, 50, 46,103, 59, 10,  9,105,
+102, 40, 99,111,108, 50, 46, 98, 32, 33, 61, 32, 48, 46, 48, 41, 32,111,117,116, 99,111,108, 46, 98, 32, 61, 32,102, 97, 99,109,
+ 42,111,117,116, 99,111,108, 46, 98, 32, 43, 32,102, 97, 99, 42,111,117,116, 99,111,108, 46, 98, 47, 99,111,108, 50, 46, 98, 59,
+ 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,100,105,102,102, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99,
  52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,
-111,108, 41, 13, 10,123, 13, 10,  9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49,
- 46, 48, 41, 59, 13, 10,  9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, 40, 99,111,108, 49, 44, 32, 97, 98,115, 40, 99,111,
-108, 49, 32, 45, 32, 99,111,108, 50, 41, 44, 32,102, 97, 99, 41, 59, 13, 10,  9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,
-111,108, 49, 46, 97, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109,105,120, 95,100, 97,114,107, 40,102,108,111, 97,116,
- 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,
-118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 13, 10,123, 13, 10,  9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97,
- 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 13, 10,  9,111,117,116, 99,111,108, 46,114,103, 98, 32, 61, 32,109,105,110,
- 40, 99,111,108, 49, 46,114,103, 98, 44, 32, 99,111,108, 50, 46,114,103, 98, 42,102, 97, 99, 41, 59, 13, 10,  9,111,117,116, 99,
-111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109,105,120, 95,108,105,
-103,104,116, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,
-111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 13, 10,123, 13, 10,  9,102, 97, 99, 32, 61,
- 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 13, 10,  9,111,117,116, 99,111,108, 46,
-114,103, 98, 32, 61, 32,109, 97,120, 40, 99,111,108, 49, 46,114,103, 98, 44, 32, 99,111,108, 50, 46,114,103, 98, 42,102, 97, 99,
- 41, 59, 13, 10,  9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 13, 10,125, 13, 10, 13, 10,118,111,
-105,100, 32,109,105,120, 95,100,111,100,103,101, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108,
- 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 13, 10,
-123, 13, 10,  9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 13,
- 10,  9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 13, 10, 13, 10,  9,105,102, 40,111,117,116, 99,111,108, 46,114,
- 32, 33, 61, 32, 48, 46, 48, 41, 32,123, 13, 10,  9,  9,102,108,111, 97,116, 32,116,109,112, 32, 61, 32, 49, 46, 48, 32, 45, 32,
-102, 97, 99, 42, 99,111,108, 50, 46,114, 59, 13, 10,  9,  9,105,102, 40,116,109,112, 32, 60, 61, 32, 48, 46, 48, 41, 13, 10,  9,
-  9,  9,111,117,116, 99,111,108, 46,114, 32, 61, 32, 49, 46, 48, 59, 13, 10,  9,  9,101,108,115,101, 32,105,102, 40, 40,116,109,
-112, 32, 61, 32,111,117,116, 99,111,108, 46,114, 47,116,109,112, 41, 32, 62, 32, 49, 46, 48, 41, 13, 10,  9,  9,  9,111,117,116,
- 99,111,108, 46,114, 32, 61, 32, 49, 46, 48, 59, 13, 10,  9,  9,101,108,115,101, 13, 10,  9,  9,  9,111,117,116, 99,111,108, 46,
-114, 32, 61, 32,116,109,112, 59, 13, 10,  9,125, 13, 10,  9,105,102, 40,111,117,116, 99,111,108, 46,103, 32, 33, 61, 32, 48, 46,
- 48, 41, 32,123, 13, 10,  9,  9,102,108,111, 97,116, 32,116,109,112, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 42, 99,111,
-108, 50, 46,103, 59, 13, 10,  9,  9,105,102, 40,116,109,112, 32, 60, 61, 32, 48, 46, 48, 41, 13, 10,  9,  9,  9,111,117,116, 99,
-111,108, 46,103, 32, 61, 32, 49, 46, 48, 59, 13, 10,  9,  9,101,108,115,101, 32,105,102, 40, 40,116,109,112, 32, 61, 32,111,117,
-116, 99,111,108, 46,103, 47,116,109,112, 41, 32, 62, 32, 49, 46, 48, 41, 13, 10,  9,  9,  9,111,117,116, 99,111,108, 46,103, 32,
- 61, 32, 49, 46, 48, 59, 13, 10,  9,  9,101,108,115,101, 13, 10,  9,  9,  9,111,117,116, 99,111,108, 46,103, 32, 61, 32,116,109,
-112, 59, 13, 10,  9,125, 13, 10,  9,105,102, 40,111,117,116, 99,111,108, 46, 98, 32, 33, 61, 32, 48, 46, 48, 41, 32,123, 13, 10,
-  9,  9,102,108,111, 97,116, 32,116,109,112, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 42, 99,111,108, 50, 46, 98, 59, 13,
- 10,  9,  9,105,102, 40,116,109,112, 32, 60, 61, 32, 48, 46, 48, 41, 13, 10,  9,  9,  9,111,117,116, 99,111,108, 46, 98, 32, 61,
- 32, 49, 46, 48, 59, 13, 10,  9,  9,101,108,115,101, 32,105,102, 40, 40,116,109,112, 32, 61, 32,111,117,116, 99,111,108, 46, 98,
- 47,116,109,112, 41, 32, 62, 32, 49, 46, 48, 41, 13, 10,  9,  9,  9,111,117,116, 99,111,108, 46, 98, 32, 61, 32, 49, 46, 48, 59,
- 13, 10,  9,  9,101,108,115,101, 13, 10,  9,  9,  9,111,117,116, 99,111,108, 46, 98, 32, 61, 32,116,109,112, 59, 13, 10,  9,125,
- 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109,105,120, 95, 98,117,114,110, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,
-118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,
-117,116, 99,111,108, 41, 13, 10,123, 13, 10,  9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48,
- 44, 32, 49, 46, 48, 41, 59, 13, 10,  9,102,108,111, 97,116, 32,116,109,112, 44, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32,
- 45, 32,102, 97, 99, 59, 13, 10, 13, 10,  9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 13, 10, 13, 10,  9,116,109,
-112, 32, 61, 32,102, 97, 99,109, 32, 43, 32,102, 97, 99, 42, 99,111,108, 50, 46,114, 59, 13, 10,  9,105,102, 40,116,109,112, 32,
- 60, 61, 32, 48, 46, 48, 41, 13, 10,  9,  9,111,117,116, 99,111,108, 46,114, 32, 61, 32, 48, 46, 48, 59, 13, 10,  9,101,108,115,
-101, 32,105,102, 40, 40,116,109,112, 32, 61, 32, 40, 49, 46, 48, 32, 45, 32, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108,
- 46,114, 41, 47,116,109,112, 41, 41, 32, 60, 32, 48, 46, 48, 41, 13, 10,  9,  9,111,117,116, 99,111,108, 46,114, 32, 61, 32, 48,
- 46, 48, 59, 13, 10,  9,101,108,115,101, 32,105,102, 40,116,109,112, 32, 62, 32, 49, 46, 48, 41, 13, 10,  9,  9,111,117,116, 99,
-111,108, 46,114, 32, 61, 32, 49, 46, 48, 59, 13, 10,  9,101,108,115,101, 13, 10,  9,  9,111,117,116, 99,111,108, 46,114, 32, 61,
- 32,116,109,112, 59, 13, 10, 13, 10,  9,116,109,112, 32, 61, 32,102, 97, 99,109, 32, 43, 32,102, 97, 99, 42, 99,111,108, 50, 46,
-103, 59, 13, 10,  9,105,102, 40,116,109,112, 32, 60, 61, 32, 48, 46, 48, 41, 13, 10,  9,  9,111,117,116, 99,111,108, 46,103, 32,
- 61, 32, 48, 46, 48, 59, 13, 10,  9,101,108,115,101, 32,105,102, 40, 40,116,109,112, 32, 61, 32, 40, 49, 46, 48, 32, 45, 32, 40,
- 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46,103, 41, 47,116,109,112, 41, 41, 32, 60, 32, 48, 46, 48, 41, 13, 10,  9,  9,
-111,117,116, 99,111,108, 46,103, 32, 61, 32, 48, 46, 48, 59, 13, 10,  9,101,108,115,101, 32,105,102, 40,116,109,112, 32, 62, 32,
- 49, 46, 48, 41, 13, 10,  9,  9,111,117,116, 99,111,108, 46,103, 32, 61, 32, 49, 46, 48, 59, 13, 10,  9,101,108,115,101, 13, 10,
-  9,  9,111,117,116, 99,111,108, 46,103, 32, 61, 32,116,109,112, 59, 13, 10, 13, 10,  9,116,109,112, 32, 61, 32,102, 97, 99,109,
- 32, 43, 32,102, 97, 99, 42, 99,111,108, 50, 46, 98, 59, 13, 10,  9,105,102, 40,116,109,112, 32, 60, 61, 32, 48, 46, 48, 41, 13,
- 10,  9,  9,111,117,116, 99,111,108, 46, 98, 32, 61, 32, 48, 46, 48, 59, 13, 10,  9,101,108,115,101, 32,105,102, 40, 40,116,109,
-112, 32, 61, 32, 40, 49, 46, 48, 32, 45, 32, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46, 98, 41, 47,116,109,112, 41,
- 41, 32, 60, 32, 48, 46, 48, 41, 13, 10,  9,  9,111,117,116, 99,111,108, 46, 98, 32, 61, 32, 48, 46, 48, 59, 13, 10,  9,101,108,
-115,101, 32,105,102, 40,116,109,112, 32, 62, 32, 49, 46, 48, 41, 13, 10,  9,  9,111,117,116, 99,111,108, 46, 98, 32, 61, 32, 49,
- 46, 48, 59, 13, 10,  9,101,108,115,101, 13, 10,  9,  9,111,117,116, 99,111,108, 46, 98, 32, 61, 32,116,109,112, 59, 13, 10,125,
- 13, 10, 13, 10,118,111,105,100, 32,109,105,120, 95,104,117,101, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52,
- 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,
-108, 41, 13, 10,123, 13, 10,  9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46,
- 48, 41, 59, 13, 10,  9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 13, 10, 13,
- 10,  9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 13, 10, 13, 10,  9,118,101, 99, 52, 32,104,115,118, 44, 32,104,
-115,118, 50, 44, 32,116,109,112, 59, 13, 10,  9,114,103, 98, 95,116,111, 95,104,115,118, 40, 99,111,108, 50, 44, 32,104,115,118,
- 50, 41, 59, 13, 10, 13, 10,  9,105,102, 40,104,115,118, 50, 46,121, 32, 33, 61, 32, 48, 46, 48, 41, 32,123, 13, 10,  9,  9,114,
-103, 98, 95,116,111, 95,104,115,118, 40,111,117,116, 99,111,108, 44, 32,104,115,118, 41, 59, 13, 10,  9,  9,104,115,118, 46,120,
- 32, 61, 32,104,115,118, 50, 46,120, 59, 13, 10,  9,  9,104,115,118, 95,116,111, 95,114,103, 98, 40,104,115,118, 44, 32,116,109,
-112, 41, 59, 32, 13, 10, 13, 10,  9,  9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, 40,111,117,116, 99,111,108, 44, 32,116,
-109,112, 44, 32,102, 97, 99, 41, 59, 13, 10,  9,  9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 13,
- 10,  9,125, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109,105,120, 95,115, 97,116, 40,102,108,111, 97,116, 32,102, 97, 99,
- 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52,
- 32,111,117,116, 99,111,108, 41, 13, 10,123, 13, 10,  9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48,
- 46, 48, 44, 32, 49, 46, 48, 41, 59, 13, 10,  9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102,
- 97, 99, 59, 13, 10, 13, 10,  9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 13, 10, 13, 10,  9,118,101, 99, 52, 32,
-104,115,118, 44, 32,104,115,118, 50, 59, 13, 10,  9,114,103, 98, 95,116,111, 95,104,115,118, 40,111,117,116, 99,111,108, 44, 32,
-104,115,118, 41, 59, 13, 10, 13, 10,  9,105,102, 40,104,115,118, 46,121, 32, 33, 61, 32, 48, 46, 48, 41, 32,123, 13, 10,  9,  9,
-114,103, 98, 95,116,111, 95,104,115,118, 40, 99,111,108, 50, 44, 32,104,115,118, 50, 41, 59, 13, 10, 13, 10,  9,  9,104,115,118,
- 46,121, 32, 61, 32,102, 97, 99,109, 42,104,115,118, 46,121, 32, 43, 32,102, 97, 99, 42,104,115,118, 50, 46,121, 59, 13, 10,  9,
-  9,104,115,118, 95,116,111, 95,114,103, 98, 40,104,115,118, 44, 32,111,117,116, 99,111,108, 41, 59, 13, 10,  9,125, 13, 10,125,
- 13, 10, 13, 10,118,111,105,100, 32,109,105,120, 95,118, 97,108, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52,
- 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,
-108, 41, 13, 10,123, 13, 10,  9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46,
- 48, 41, 59, 13, 10,  9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 13, 10, 13,
- 10,  9,118,101, 99, 52, 32,104,115,118, 44, 32,104,115,118, 50, 59, 13, 10,  9,114,103, 98, 95,116,111, 95,104,115,118, 40, 99,
-111,108, 49, 44, 32,104,115,118, 41, 59, 13, 10,  9,114,103, 98, 95,116,111, 95,104,115,118, 40, 99,111,108, 50, 44, 32,104,115,
-118, 50, 41, 59, 13, 10, 13, 10,  9,104,115,118, 46,122, 32, 61, 32,102, 97, 99,109, 42,104,115,118, 46,122, 32, 43, 32,102, 97,
- 99, 42,104,115,118, 50, 46,122, 59, 13, 10,  9,104,115,118, 95,116,111, 95,114,103, 98, 40,104,115,118, 44, 32,111,117,116, 99,
-111,108, 41, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109,105,120, 95, 99,111,108,111,114, 40,102,108,111, 97,116, 32,
-102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,
-101, 99, 52, 32,111,117,116, 99,111,108, 41, 13, 10,123, 13, 10,  9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99,
- 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 13, 10,  9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32,
- 45, 32,102, 97, 99, 59, 13, 10, 13, 10,  9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 13, 10, 13, 10,  9,118,101,
- 99, 52, 32,104,115,118, 44, 32,104,115,118, 50, 44, 32,116,109,112, 59, 13, 10,  9,114,103, 98, 95,116,111, 95,104,115,118, 40,
- 99,111,108, 50, 44, 32,104,115,118, 50, 41, 59, 13, 10, 13, 10,  9,105,102, 40,104,115,118, 50, 46,121, 32, 33, 61, 32, 48, 46,
- 48, 41, 32,123, 13, 10,  9,  9,114,103, 98, 95,116,111, 95,104,115,118, 40,111,117,116, 99,111,108, 44, 32,104,115,118, 41, 59,
- 13, 10,  9,  9,104,115,118, 46,120, 32, 61, 32,104,115,118, 50, 46,120, 59, 13, 10,  9,  9,104,115,118, 46,121, 32, 61, 32,104,
-115,118, 50, 46,121, 59, 13, 10,  9,  9,104,115,118, 95,116,111, 95,114,103, 98, 40,104,115,118, 44, 32,116,109,112, 41, 59, 32,
- 13, 10, 13, 10,  9,  9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, 40,111,117,116, 99,111,108, 44, 32,116,109,112, 44, 32,
-102, 97, 99, 41, 59, 13, 10,  9,  9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 13, 10,  9,125, 13,
- 10,125, 13, 10, 13, 10,118,111,105,100, 32,109,105,120, 95,115,111,102,116, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,
+111,108, 41, 10,123, 10,  9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48,
+ 41, 59, 10,  9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, 40, 99,111,108, 49, 44, 32, 97, 98,115, 40, 99,111,108, 49, 32,
+ 45, 32, 99,111,108, 50, 41, 44, 32,102, 97, 99, 41, 59, 10,  9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46,
+ 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,100, 97,114,107, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,
 101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,
-116, 99,111,108, 41, 13, 10,123, 13, 10,  9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44,
- 32, 49, 46, 48, 41, 59, 13, 10,  9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59,
- 13, 10, 13, 10,  9,118,101, 99, 52, 32,111,110,101, 61, 32,118,101, 99, 52, 40, 49, 46, 48, 41, 59, 13, 10,  9,118,101, 99, 52,
- 32,115, 99,114, 61, 32,111,110,101, 32, 45, 32, 40,111,110,101, 32, 45, 32, 99,111,108, 50, 41, 42, 40,111,110,101, 32, 45, 32,
- 99,111,108, 49, 41, 59, 13, 10,  9,111,117,116, 99,111,108, 32, 61, 32,102, 97, 99,109, 42, 99,111,108, 49, 32, 43, 32,102, 97,
- 99, 42, 40, 40,111,110,101, 32, 45, 32, 99,111,108, 49, 41, 42, 99,111,108, 50, 42, 99,111,108, 49, 32, 43, 32, 99,111,108, 49,
- 42,115, 99,114, 41, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109,105,120, 95,108,105,110,101, 97,114, 40,102,108,111,
- 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,
-116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 13, 10,123, 13, 10,  9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,
-102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 13, 10, 13, 10,  9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108,
- 49, 59, 13, 10, 13, 10,  9,105,102, 40, 99,111,108, 50, 46,114, 32, 62, 32, 48, 46, 53, 41, 13, 10,  9,  9,111,117,116, 99,111,
-108, 46,114, 61, 32, 99,111,108, 49, 46,114, 32, 43, 32,102, 97, 99, 42, 40, 50, 46, 48, 42, 40, 99,111,108, 50, 46,114, 32, 45,
- 32, 48, 46, 53, 41, 41, 59, 13, 10,  9,101,108,115,101, 13, 10,  9,  9,111,117,116, 99,111,108, 46,114, 61, 32, 99,111,108, 49,
- 46,114, 32, 43, 32,102, 97, 99, 42, 40, 50, 46, 48, 42, 40, 99,111,108, 50, 46,114, 41, 32, 45, 32, 49, 46, 48, 41, 59, 13, 10,
- 13, 10,  9,105,102, 40, 99,111,108, 50, 46,103, 32, 62, 32, 48, 46, 53, 41, 13, 10,  9,  9,111,117,116, 99,111,108, 46,103, 61,
- 32, 99,111,108, 49, 46,103, 32, 43, 32,102, 97, 99, 42, 40, 50, 46, 48, 42, 40, 99,111,108, 50, 46,103, 32, 45, 32, 48, 46, 53,
- 41, 41, 59, 13, 10,  9,101,108,115,101, 13, 10,  9,  9,111,117,116, 99,111,108, 46,103, 61, 32, 99,111,108, 49, 46,103, 32, 43,
- 32,102, 97, 99, 42, 40, 50, 46, 48, 42, 40, 99,111,108, 50, 46,103, 41, 32, 45, 32, 49, 46, 48, 41, 59, 13, 10, 13, 10,  9,105,
-102, 40, 99,111,108, 50, 46, 98, 32, 62, 32, 48, 46, 53, 41, 13, 10,  9,  9,111,117,116, 99,111,108, 46, 98, 61, 32, 99,111,108,
- 49, 46, 98, 32, 43, 32,102, 97, 99, 42, 40, 50, 46, 48, 42, 40, 99,111,108, 50, 46, 98, 32, 45, 32, 48, 46, 53, 41, 41, 59, 13,
- 10,  9,101,108,115,101, 13, 10,  9,  9,111,117,116, 99,111,108, 46, 98, 61, 32, 99,111,108, 49, 46, 98, 32, 43, 32,102, 97, 99,
- 42, 40, 50, 46, 48, 42, 40, 99,111,108, 50, 46, 98, 41, 32, 45, 32, 49, 46, 48, 41, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,
-100, 32,118, 97,108,116,111,114,103, 98, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,115, 97,109,112,108,101,114, 50, 68, 32,
- 99,111,108,111,114,109, 97,112, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 44, 32,111,117,116, 32,102,
-108,111, 97,116, 32,111,117,116, 97,108,112,104, 97, 41, 13, 10,123, 13, 10,  9,111,117,116, 99,111,108, 32, 61, 32,116,101,120,
-116,117,114,101, 50, 68, 40, 99,111,108,111,114,109, 97,112, 44, 32,118,101, 99, 50, 40,102, 97, 99, 44, 32, 48, 46, 48, 41, 41,
- 59, 13, 10,  9,111,117,116, 97,108,112,104, 97, 32, 61, 32,111,117,116, 99,111,108, 46, 97, 59, 13, 10,125, 13, 10, 13, 10,118,
-111,105,100, 32,114,103, 98,116,111, 98,119, 40,118,101, 99, 52, 32, 99,111,108,111,114, 44, 32,111,117,116, 32,102,108,111, 97,
-116, 32,111,117,116,118, 97,108, 41, 32, 32, 13, 10,123, 13, 10,  9,111,117,116,118, 97,108, 32, 61, 32, 99,111,108,111,114, 46,
-114, 42, 48, 46, 51, 53, 32, 43, 32, 99,111,108,111,114, 46,103, 42, 48, 46, 52, 53, 32, 43, 32, 99,111,108,111,114, 46, 98, 42,
- 48, 46, 50, 59, 32, 47, 42, 32,107,101,101,112, 32,116,104,101,115,101, 32,102, 97, 99,116,111,114,115, 32,105,110, 32,115,121,
-110, 99, 32,119,105,116,104, 32,116,101,120,116,117,114,101, 46,104, 58, 82, 71, 66, 84, 79, 66, 87, 32, 42, 47, 13, 10,125, 13,
- 10, 13, 10,118,111,105,100, 32,105,110,118,101,114,116, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,
-111,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 13, 10,123, 13, 10,  9,111,117,116, 99,111,108,
- 46,120,121,122, 32, 61, 32,109,105,120, 40, 99,111,108, 46,120,121,122, 44, 32,118,101, 99, 51, 40, 49, 46, 48, 44, 32, 49, 46,
- 48, 44, 32, 49, 46, 48, 41, 32, 45, 32, 99,111,108, 46,120,121,122, 44, 32,102, 97, 99, 41, 59, 13, 10,  9,111,117,116, 99,111,
-108, 46,119, 32, 61, 32, 99,111,108, 46,119, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,104,117,101, 95,115, 97,116, 40,
-102,108,111, 97,116, 32,104,117,101, 44, 32,102,108,111, 97,116, 32,115, 97,116, 44, 32,102,108,111, 97,116, 32,118, 97,108,117,
-101, 44, 32,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 52,
- 32,111,117,116, 99,111,108, 41, 13, 10,123, 13, 10,  9,118,101, 99, 52, 32,104,115,118, 59, 13, 10, 13, 10,  9,114,103, 98, 95,
-116,111, 95,104,115,118, 40, 99,111,108, 44, 32,104,115,118, 41, 59, 13, 10, 13, 10,  9,104,115,118, 91, 48, 93, 32, 43, 61, 32,
- 40,104,117,101, 32, 45, 32, 48, 46, 53, 41, 59, 13, 10,  9,105,102, 40,104,115,118, 91, 48, 93, 62, 49, 46, 48, 41, 32,104,115,
-118, 91, 48, 93, 45, 61, 49, 46, 48, 59, 32,101,108,115,101, 32,105,102, 40,104,115,118, 91, 48, 93, 60, 48, 46, 48, 41, 32,104,
-115,118, 91, 48, 93, 43, 61, 32, 49, 46, 48, 59, 13, 10,  9,104,115,118, 91, 49, 93, 32, 42, 61, 32,115, 97,116, 59, 13, 10,  9,
-105,102, 40,104,115,118, 91, 49, 93, 62, 49, 46, 48, 41, 32,104,115,118, 91, 49, 93, 61, 32, 49, 46, 48, 59, 32,101,108,115,101,
- 32,105,102, 40,104,115,118, 91, 49, 93, 60, 48, 46, 48, 41, 32,104,115,118, 91, 49, 93, 61, 32, 48, 46, 48, 59, 13, 10,  9,104,
-115,118, 91, 50, 93, 32, 42, 61, 32,118, 97,108,117,101, 59, 13, 10,  9,105,102, 40,104,115,118, 91, 50, 93, 62, 49, 46, 48, 41,
- 32,104,115,118, 91, 50, 93, 61, 32, 49, 46, 48, 59, 32,101,108,115,101, 32,105,102, 40,104,115,118, 91, 50, 93, 60, 48, 46, 48,
- 41, 32,104,115,118, 91, 50, 93, 61, 32, 48, 46, 48, 59, 13, 10, 13, 10,  9,104,115,118, 95,116,111, 95,114,103, 98, 40,104,115,
-118, 44, 32,111,117,116, 99,111,108, 41, 59, 13, 10, 13, 10,  9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, 40, 99,111,108,
- 44, 32,111,117,116, 99,111,108, 44, 32,102, 97, 99, 41, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,115,101,112, 97,114,
- 97,116,101, 95,114,103, 98, 40,118,101, 99, 52, 32, 99,111,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,114, 44, 32,111,
-117,116, 32,102,108,111, 97,116, 32,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32, 98, 41, 13, 10,123, 13, 10,  9,114, 32,
- 61, 32, 99,111,108, 46,114, 59, 13, 10,  9,103, 32, 61, 32, 99,111,108, 46,103, 59, 13, 10,  9, 98, 32, 61, 32, 99,111,108, 46,
- 98, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32, 99,111,109, 98,105,110,101, 95,114,103, 98, 40,102,108,111, 97,116, 32,
-114, 44, 32,102,108,111, 97,116, 32,103, 44, 32,102,108,111, 97,116, 32, 98, 44, 32,111,117,116, 32,118,101, 99, 52, 32, 99,111,
-108, 41, 13, 10,123, 13, 10,  9, 99,111,108, 32, 61, 32,118,101, 99, 52, 40,114, 44, 32,103, 44, 32, 98, 44, 32, 49, 46, 48, 41,
- 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,111,117,116,112,117,116, 95,110,111,100,101, 40,118,101, 99, 52, 32,114,103,
- 98, 44, 32,102,108,111, 97,116, 32, 97,108,112,104, 97, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116,114,103, 98, 41,
- 13, 10,123, 13, 10,  9,111,117,116,114,103, 98, 32, 61, 32,118,101, 99, 52, 40,114,103, 98, 46,114,103, 98, 44, 32, 97,108,112,
-104, 97, 41, 59, 13, 10,125, 13, 10, 13, 10, 47, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 32, 84, 69, 88, 84, 85, 82, 69, 83,
- 32, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 47, 13, 10, 13, 10,118,111,105,100, 32,116,101,120,116,117,114,
-101, 95,102,108,105,112, 95, 98,108,101,110,100, 40,118,101, 99, 51, 32,118,101, 99, 44, 32,111,117,116, 32,118,101, 99, 51, 32,
-111,117,116,118,101, 99, 41, 13, 10,123, 13, 10,  9,111,117,116,118,101, 99, 32, 61, 32,118,101, 99, 46,121,120,122, 59, 13, 10,
-125, 13, 10, 13, 10,118,111,105,100, 32,116,101,120,116,117,114,101, 95, 98,108,101,110,100, 95,108,105,110, 40,118,101, 99, 51,
- 32,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 13, 10,123, 13, 10,  9,111,117,116,
-118, 97,108, 32, 61, 32, 40, 49, 46, 48, 43,118,101, 99, 46,120, 41, 47, 50, 46, 48, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,
-100, 32,116,101,120,116,117,114,101, 95, 98,108,101,110,100, 95,113,117, 97,100, 40,118,101, 99, 51, 32,118,101, 99, 44, 32,111,
-117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 13, 10,123, 13, 10,  9,111,117,116,118, 97,108, 32, 61, 32,109,
- 97,120, 40, 40, 49, 46, 48, 43,118,101, 99, 46,120, 41, 47, 50, 46, 48, 44, 32, 48, 46, 48, 41, 59, 13, 10,  9,111,117,116,118,
- 97,108, 32, 42, 61, 32,111,117,116,118, 97,108, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,116,101,120,116,117,114,101,
- 95,119,111,111,100, 95,115,105,110, 40,118,101, 99, 51, 32,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,118, 97,
-108,117,101, 44, 32,111,117,116, 32,118,101, 99, 52, 32, 99,111,108,111,114, 44, 32,111,117,116, 32,118,101, 99, 51, 32,110,111,
-114,109, 97,108, 41, 13, 10,123, 13, 10,  9,102,108,111, 97,116, 32, 97, 32, 61, 32,115,113,114,116, 40,118,101, 99, 46,120, 42,
-118,101, 99, 46,120, 32, 43, 32,118,101, 99, 46,121, 42,118,101, 99, 46,121, 32, 43, 32,118,101, 99, 46,122, 42,118,101, 99, 46,
-122, 41, 42, 50, 48, 46, 48, 59, 13, 10,  9,102,108,111, 97,116, 32,119,105, 32, 61, 32, 48, 46, 53, 32, 43, 32, 48, 46, 53, 42,
-115,105,110, 40, 97, 41, 59, 13, 10, 13, 10,  9,118, 97,108,117,101, 32, 61, 32,119,105, 59, 13, 10,  9, 99,111,108,111,114, 32,
- 61, 32,118,101, 99, 52, 40,119,105, 44, 32,119,105, 44, 32,119,105, 44, 32, 49, 46, 48, 41, 59, 13, 10,  9,110,111,114,109, 97,
-108, 32, 61, 32,118,101, 99, 51, 40, 48, 46, 48, 44, 32, 48, 46, 48, 44, 32, 48, 46, 48, 41, 59, 13, 10,125, 13, 10, 13, 10,118,
-111,105,100, 32,116,101,120,116,117,114,101, 95,105,109, 97,103,101, 40,118,101, 99, 51, 32,118,101, 99, 44, 32,115, 97,109,112,
-108,101,114, 50, 68, 32,105,109, 97, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,118, 97,108,117,101, 44, 32,111,117,116, 32,
-118,101, 99, 52, 32, 99,111,108,111,114, 44, 32,111,117,116, 32,118,101, 99, 51, 32,110,111,114,109, 97,108, 41, 13, 10,123, 13,
- 10,  9, 99,111,108,111,114, 32, 61, 32,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, 32, 40,118,101, 99, 46,120,121,
- 32, 43, 32,118,101, 99, 50, 40, 49, 46, 48, 44, 32, 49, 46, 48, 41, 41, 42, 48, 46, 53, 41, 59, 13, 10,  9,118, 97,108,117,101,
- 32, 61, 32, 49, 46, 48, 59, 13, 10, 13, 10,  9,110,111,114,109, 97,108, 46,120, 32, 61, 32, 50, 46, 48, 42, 40, 99,111,108,111,
-114, 46,114, 32, 45, 32, 48, 46, 53, 41, 59, 13, 10,  9,110,111,114,109, 97,108, 46,121, 32, 61, 32, 50, 46, 48, 42, 40, 48, 46,
- 53, 32, 45, 32, 99,111,108,111,114, 46,103, 41, 59, 13, 10,  9,110,111,114,109, 97,108, 46,122, 32, 61, 32, 50, 46, 48, 42, 40,
- 99,111,108,111,114, 46, 98, 32, 45, 32, 48, 46, 53, 41, 59, 13, 10,125, 13, 10, 13, 10, 47, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 32, 77, 84, 69, 88, 32, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 47, 13, 10, 13, 10,
-118,111,105,100, 32,116,101,120, 99,111, 95,111,114, 99,111, 40,118,101, 99, 51, 32, 97,116,116,111,114, 99,111, 44, 32,111,117,
-116, 32,118,101, 99, 51, 32,111,114, 99,111, 41, 13, 10,123, 13, 10,  9,111,114, 99,111, 32, 61, 32, 97,116,116,111,114, 99,111,
- 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,116,101,120, 99,111, 95,117,118, 40,118,101, 99, 50, 32, 97,116,116,117,118,
- 44, 32,111,117,116, 32,118,101, 99, 51, 32,117,118, 41, 13, 10,123, 13, 10,  9, 47, 42, 32,100,105,115, 97, 98,108,101,100, 32,
-102,111,114, 32,110,111,119, 44, 32,119,111,114,107,115, 32,116,111,103,101,116,104,101,114, 32,119,105,116,104, 32,108,101, 97,
-118,105,110,103, 32,111,117,116, 32,109,116,101,120, 95, 50,100, 95,109, 97,112,112,105,110,103, 13, 10,  9, 32, 32, 32,117,118,
- 32, 61, 32,118,101, 99, 51, 40, 97,116,116,117,118, 42, 50, 46, 48, 32, 45, 32,118,101, 99, 50, 40, 49, 46, 48, 44, 32, 49, 46,
- 48, 41, 44, 32, 48, 46, 48, 41, 59, 32, 42, 47, 13, 10,  9,117,118, 32, 61, 32,118,101, 99, 51, 40, 97,116,116,117,118, 44, 32,
- 48, 46, 48, 41, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,116,101,120, 99,111, 95,110,111,114,109, 40,118,101, 99, 51,
- 32,110,111,114,109, 97,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,110,111,114,109, 97,108, 41, 13, 10,123, 13,
- 10,  9, 47, 42, 32, 99,111,114,114,101,115,112,111,110,100,115, 32,116,111, 32,115,104,105, 45, 62,111,114,110, 44, 32,119,104,
-105, 99,104, 32,105,115, 32,110,101,103, 97,116,101,100, 32,115,111, 32, 99, 97,110, 99,101,108,115, 13, 10,  9, 32, 32, 32,111,
-117,116, 32, 98,108,101,110,100,101,114, 32,110,111,114,109, 97,108, 32,110,101,103, 97,116,105,111,110, 32, 42, 47, 13, 10,  9,
-111,117,116,110,111,114,109, 97,108, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,110,111,114,109, 97,108, 41, 59, 13, 10,
-125, 13, 10, 13, 10,118,111,105,100, 32,116,101,120, 99,111, 95,116, 97,110,103,101,110,116, 40,118,101, 99, 52, 32,116, 97,110,
-103,101,110,116, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,116, 97,110,103,101,110,116, 41, 13, 10,123, 13, 10,  9,
-111,117,116,116, 97,110,103,101,110,116, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,116, 97,110,103,101,110,116, 46,120,
-121,122, 41, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,116,101,120, 99,111, 95,103,108,111, 98, 97,108, 40,109, 97,116,
- 52, 32,118,105,101,119,105,110,118,109, 97,116, 44, 32,118,101, 99, 51, 32, 99,111, 44, 32,111,117,116, 32,118,101, 99, 51, 32,
-103,108,111, 98, 97,108, 41, 13, 10,123, 13, 10,  9,103,108,111, 98, 97,108, 32, 61, 32, 40,118,105,101,119,105,110,118,109, 97,
-116, 42,118,101, 99, 52, 40, 99,111, 44, 32, 49, 46, 48, 41, 41, 46,120,121,122, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100,
- 32,116,101,120, 99,111, 95,111, 98,106,101, 99,116, 40,109, 97,116, 52, 32,118,105,101,119,105,110,118,109, 97,116, 44, 32,109,
- 97,116, 52, 32,111, 98,105,110,118,109, 97,116, 44, 32,118,101, 99, 51, 32, 99,111, 44, 32,111,117,116, 32,118,101, 99, 51, 32,
-111, 98,106,101, 99,116, 41, 13, 10,123, 13, 10,  9,111, 98,106,101, 99,116, 32, 61, 32, 40,111, 98,105,110,118,109, 97,116, 42,
+116, 99,111,108, 41, 10,123, 10,  9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49,
+ 46, 48, 41, 59, 10,  9,111,117,116, 99,111,108, 46,114,103, 98, 32, 61, 32,109,105,110, 40, 99,111,108, 49, 46,114,103, 98, 44,
+ 32, 99,111,108, 50, 46,114,103, 98, 42,102, 97, 99, 41, 59, 10,  9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49,
+ 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,108,105,103,104,116, 40,102,108,111, 97,116, 32,102, 97, 99, 44,
+ 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,
+111,117,116, 99,111,108, 41, 10,123, 10,  9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44,
+ 32, 49, 46, 48, 41, 59, 10,  9,111,117,116, 99,111,108, 46,114,103, 98, 32, 61, 32,109, 97,120, 40, 99,111,108, 49, 46,114,103,
+ 98, 44, 32, 99,111,108, 50, 46,114,103, 98, 42,102, 97, 99, 41, 59, 10,  9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,
+108, 49, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,100,111,100,103,101, 40,102,108,111, 97,116, 32,102, 97,
+ 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99,
+ 52, 32,111,117,116, 99,111,108, 41, 10,123, 10,  9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46,
+ 48, 44, 32, 49, 46, 48, 41, 59, 10,  9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 10, 10,  9,105,102, 40,111,117,
+116, 99,111,108, 46,114, 32, 33, 61, 32, 48, 46, 48, 41, 32,123, 10,  9,  9,102,108,111, 97,116, 32,116,109,112, 32, 61, 32, 49,
+ 46, 48, 32, 45, 32,102, 97, 99, 42, 99,111,108, 50, 46,114, 59, 10,  9,  9,105,102, 40,116,109,112, 32, 60, 61, 32, 48, 46, 48,
+ 41, 10,  9,  9,  9,111,117,116, 99,111,108, 46,114, 32, 61, 32, 49, 46, 48, 59, 10,  9,  9,101,108,115,101, 32,105,102, 40, 40,
+116,109,112, 32, 61, 32,111,117,116, 99,111,108, 46,114, 47,116,109,112, 41, 32, 62, 32, 49, 46, 48, 41, 10,  9,  9,  9,111,117,
+116, 99,111,108, 46,114, 32, 61, 32, 49, 46, 48, 59, 10,  9,  9,101,108,115,101, 10,  9,  9,  9,111,117,116, 99,111,108, 46,114,
+ 32, 61, 32,116,109,112, 59, 10,  9,125, 10,  9,105,102, 40,111,117,116, 99,111,108, 46,103, 32, 33, 61, 32, 48, 46, 48, 41, 32,
+123, 10,  9,  9,102,108,111, 97,116, 32,116,109,112, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 42, 99,111,108, 50, 46,103,
+ 59, 10,  9,  9,105,102, 40,116,109,112, 32, 60, 61, 32, 48, 46, 48, 41, 10,  9,  9,  9,111,117,116, 99,111,108, 46,103, 32, 61,
+ 32, 49, 46, 48, 59, 10,  9,  9,101,108,115,101, 32,105,102, 40, 40,116,109,112, 32, 61, 32,111,117,116, 99,111,108, 46,103, 47,
+116,109,112, 41, 32, 62, 32, 49, 46, 48, 41, 10,  9,  9,  9,111,117,116, 99,111,108, 46,103, 32, 61, 32, 49, 46, 48, 59, 10,  9,
+  9,101,108,115,101, 10,  9,  9,  9,111,117,116, 99,111,108, 46,103, 32, 61, 32,116,109,112, 59, 10,  9,125, 10,  9,105,102, 40,
+111,117,116, 99,111,108, 46, 98, 32, 33, 61, 32, 48, 46, 48, 41, 32,123, 10,  9,  9,102,108,111, 97,116, 32,116,109,112, 32, 61,
+ 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 42, 99,111,108, 50, 46, 98, 59, 10,  9,  9,105,102, 40,116,109,112, 32, 60, 61, 32, 48,
+ 46, 48, 41, 10,  9,  9,  9,111,117,116, 99,111,108, 46, 98, 32, 61, 32, 49, 46, 48, 59, 10,  9,  9,101,108,115,101, 32,105,102,
+ 40, 40,116,109,112, 32, 61, 32,111,117,116, 99,111,108, 46, 98, 47,116,109,112, 41, 32, 62, 32, 49, 46, 48, 41, 10,  9,  9,  9,
+111,117,116, 99,111,108, 46, 98, 32, 61, 32, 49, 46, 48, 59, 10,  9,  9,101,108,115,101, 10,  9,  9,  9,111,117,116, 99,111,108,
+ 46, 98, 32, 61, 32,116,109,112, 59, 10,  9,125, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95, 98,117,114,110, 40,102,108,
+111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,
+117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10,  9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102,
+ 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10,  9,102,108,111, 97,116, 32,116,109,112, 44, 32,102, 97, 99,109, 32,
+ 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10,  9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 10, 10,  9,
+116,109,112, 32, 61, 32,102, 97, 99,109, 32, 43, 32,102, 97, 99, 42, 99,111,108, 50, 46,114, 59, 10,  9,105,102, 40,116,109,112,
+ 32, 60, 61, 32, 48, 46, 48, 41, 10,  9,  9,111,117,116, 99,111,108, 46,114, 32, 61, 32, 48, 46, 48, 59, 10,  9,101,108,115,101,
+ 32,105,102, 40, 40,116,109,112, 32, 61, 32, 40, 49, 46, 48, 32, 45, 32, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46,
+114, 41, 47,116,109,112, 41, 41, 32, 60, 32, 48, 46, 48, 41, 10,  9,  9,111,117,116, 99,111,108, 46,114, 32, 61, 32, 48, 46, 48,
+ 59, 10,  9,101,108,115,101, 32,105,102, 40,116,109,112, 32, 62, 32, 49, 46, 48, 41, 10,  9,  9,111,117,116, 99,111,108, 46,114,
+ 32, 61, 32, 49, 46, 48, 59, 10,  9,101,108,115,101, 10,  9,  9,111,117,116, 99,111,108, 46,114, 32, 61, 32,116,109,112, 59, 10,
+ 10,  9,116,109,112, 32, 61, 32,102, 97, 99,109, 32, 43, 32,102, 97, 99, 42, 99,111,108, 50, 46,103, 59, 10,  9,105,102, 40,116,
+109,112, 32, 60, 61, 32, 48, 46, 48, 41, 10,  9,  9,111,117,116, 99,111,108, 46,103, 32, 61, 32, 48, 46, 48, 59, 10,  9,101,108,
+115,101, 32,105,102, 40, 40,116,109,112, 32, 61, 32, 40, 49, 46, 48, 32, 45, 32, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,
+108, 46,103, 41, 47,116,109,112, 41, 41, 32, 60, 32, 48, 46, 48, 41, 10,  9,  9,111,117,116, 99,111,108, 46,103, 32, 61, 32, 48,
+ 46, 48, 59, 10,  9,101,108,115,101, 32,105,102, 40,116,109,112, 32, 62, 32, 49, 46, 48, 41, 10,  9,  9,111,117,116, 99,111,108,
+ 46,103, 32, 61, 32, 49, 46, 48, 59, 10,  9,101,108,115,101, 10,  9,  9,111,117,116, 99,111,108, 46,103, 32, 61, 32,116,109,112,
+ 59, 10, 10,  9,116,109,112, 32, 61, 32,102, 97, 99,109, 32, 43, 32,102, 97, 99, 42, 99,111,108, 50, 46, 98, 59, 10,  9,105,102,
+ 40,116,109,112, 32, 60, 61, 32, 48, 46, 48, 41, 10,  9,  9,111,117,116, 99,111,108, 46, 98, 32, 61, 32, 48, 46, 48, 59, 10,  9,
+101,108,115,101, 32,105,102, 40, 40,116,109,112, 32, 61, 32, 40, 49, 46, 48, 32, 45, 32, 40, 49, 46, 48, 32, 45, 32,111,117,116,
+ 99,111,108, 46, 98, 41, 47,116,109,112, 41, 41, 32, 60, 32, 48, 46, 48, 41, 10,  9,  9,111,117,116, 99,111,108, 46, 98, 32, 61,
+ 32, 48, 46, 48, 59, 10,  9,101,108,115,101, 32,105,102, 40,116,109,112, 32, 62, 32, 49, 46, 48, 41, 10,  9,  9,111,117,116, 99,
+111,108, 46, 98, 32, 61, 32, 49, 46, 48, 59, 10,  9,101,108,115,101, 10,  9,  9,111,117,116, 99,111,108, 46, 98, 32, 61, 32,116,
+109,112, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,104,117,101, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,
+101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,
+116, 99,111,108, 41, 10,123, 10,  9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49,
+ 46, 48, 41, 59, 10,  9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10,  9,
+111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 10, 10,  9,118,101, 99, 52, 32,104,115,118, 44, 32,104,115,118, 50, 44,
+ 32,116,109,112, 59, 10,  9,114,103, 98, 95,116,111, 95,104,115,118, 40, 99,111,108, 50, 44, 32,104,115,118, 50, 41, 59, 10, 10,
+  9,105,102, 40,104,115,118, 50, 46,121, 32, 33, 61, 32, 48, 46, 48, 41, 32,123, 10,  9,  9,114,103, 98, 95,116,111, 95,104,115,
+118, 40,111,117,116, 99,111,108, 44, 32,104,115,118, 41, 59, 10,  9,  9,104,115,118, 46,120, 32, 61, 32,104,115,118, 50, 46,120,
+ 59, 10,  9,  9,104,115,118, 95,116,111, 95,114,103, 98, 40,104,115,118, 44, 32,116,109,112, 41, 59, 32, 10, 10,  9,  9,111,117,
+116, 99,111,108, 32, 61, 32,109,105,120, 40,111,117,116, 99,111,108, 44, 32,116,109,112, 44, 32,102, 97, 99, 41, 59, 10,  9,  9,
+111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10,  9,125, 10,125, 10, 10,118,111,105,100, 32,109,105,
+120, 95,115, 97,116, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52,
+ 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10,  9,102, 97, 99, 32, 61,
+ 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10,  9,102,108,111, 97,116, 32,102, 97,
+ 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10,  9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59,
+ 10, 10,  9,118,101, 99, 52, 32,104,115,118, 44, 32,104,115,118, 50, 59, 10,  9,114,103, 98, 95,116,111, 95,104,115,118, 40,111,
+117,116, 99,111,108, 44, 32,104,115,118, 41, 59, 10, 10,  9,105,102, 40,104,115,118, 46,121, 32, 33, 61, 32, 48, 46, 48, 41, 32,
+123, 10,  9,  9,114,103, 98, 95,116,111, 95,104,115,118, 40, 99,111,108, 50, 44, 32,104,115,118, 50, 41, 59, 10, 10,  9,  9,104,
+115,118, 46,121, 32, 61, 32,102, 97, 99,109, 42,104,115,118, 46,121, 32, 43, 32,102, 97, 99, 42,104,115,118, 50, 46,121, 59, 10,
+  9,  9,104,115,118, 95,116,111, 95,114,103, 98, 40,104,115,118, 44, 32,111,117,116, 99,111,108, 41, 59, 10,  9,125, 10,125, 10,
+ 10,118,111,105,100, 32,109,105,120, 95,118, 97,108, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,
+108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,
+123, 10,  9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10,  9,
+102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10,  9,118,101, 99, 52, 32,104,
+115,118, 44, 32,104,115,118, 50, 59, 10,  9,114,103, 98, 95,116,111, 95,104,115,118, 40, 99,111,108, 49, 44, 32,104,115,118, 41,
+ 59, 10,  9,114,103, 98, 95,116,111, 95,104,115,118, 40, 99,111,108, 50, 44, 32,104,115,118, 50, 41, 59, 10, 10,  9,104,115,118,
+ 46,122, 32, 61, 32,102, 97, 99,109, 42,104,115,118, 46,122, 32, 43, 32,102, 97, 99, 42,104,115,118, 50, 46,122, 59, 10,  9,104,
+115,118, 95,116,111, 95,114,103, 98, 40,104,115,118, 44, 32,111,117,116, 99,111,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,
+109,105,120, 95, 99,111,108,111,114, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,
+118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10,  9,102,
+ 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10,  9,102,108,111, 97,
+116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10,  9,111,117,116, 99,111,108, 32, 61, 32, 99,
+111,108, 49, 59, 10, 10,  9,118,101, 99, 52, 32,104,115,118, 44, 32,104,115,118, 50, 44, 32,116,109,112, 59, 10,  9,114,103, 98,
+ 95,116,111, 95,104,115,118, 40, 99,111,108, 50, 44, 32,104,115,118, 50, 41, 59, 10, 10,  9,105,102, 40,104,115,118, 50, 46,121,
+ 32, 33, 61, 32, 48, 46, 48, 41, 32,123, 10,  9,  9,114,103, 98, 95,116,111, 95,104,115,118, 40,111,117,116, 99,111,108, 44, 32,
+104,115,118, 41, 59, 10,  9,  9,104,115,118, 46,120, 32, 61, 32,104,115,118, 50, 46,120, 59, 10,  9,  9,104,115,118, 46,121, 32,
+ 61, 32,104,115,118, 50, 46,121, 59, 10,  9,  9,104,115,118, 95,116,111, 95,114,103, 98, 40,104,115,118, 44, 32,116,109,112, 41,
+ 59, 32, 10, 10,  9,  9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, 40,111,117,116, 99,111,108, 44, 32,116,109,112, 44, 32,
+102, 97, 99, 41, 59, 10,  9,  9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10,  9,125, 10,125, 10,
+ 10,118,111,105,100, 32,109,105,120, 95,115,111,102,116, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,
+111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41,
+ 10,123, 10,  9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10,
+  9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10,  9,118,101, 99, 52, 32,
+111,110,101, 61, 32,118,101, 99, 52, 40, 49, 46, 48, 41, 59, 10,  9,118,101, 99, 52, 32,115, 99,114, 61, 32,111,110,101, 32, 45,
+ 32, 40,111,110,101, 32, 45, 32, 99,111,108, 50, 41, 42, 40,111,110,101, 32, 45, 32, 99,111,108, 49, 41, 59, 10,  9,111,117,116,
+ 99,111,108, 32, 61, 32,102, 97, 99,109, 42, 99,111,108, 49, 32, 43, 32,102, 97, 99, 42, 40, 40,111,110,101, 32, 45, 32, 99,111,
+108, 49, 41, 42, 99,111,108, 50, 42, 99,111,108, 49, 32, 43, 32, 99,111,108, 49, 42,115, 99,114, 41, 59, 10,125, 10, 10,118,111,
+105,100, 32,109,105,120, 95,108,105,110,101, 97,114, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,
+108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,
+123, 10,  9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 10,
+  9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 10, 10,  9,105,102, 40, 99,111,108, 50, 46,114, 32, 62, 32, 48, 46,
+ 53, 41, 10,  9,  9,111,117,116, 99,111,108, 46,114, 61, 32, 99,111,108, 49, 46,114, 32, 43, 32,102, 97, 99, 42, 40, 50, 46, 48,
+ 42, 40, 99,111,108, 50, 46,114, 32, 45, 32, 48, 46, 53, 41, 41, 59, 10,  9,101,108,115,101, 10,  9,  9,111,117,116, 99,111,108,
+ 46,114, 61, 32, 99,111,108, 49, 46,114, 32, 43, 32,102, 97, 99, 42, 40, 50, 46, 48, 42, 40, 99,111,108, 50, 46,114, 41, 32, 45,
+ 32, 49, 46, 48, 41, 59, 10, 10,  9,105,102, 40, 99,111,108, 50, 46,103, 32, 62, 32, 48, 46, 53, 41, 10,  9,  9,111,117,116, 99,
+111,108, 46,103, 61, 32, 99,111,108, 49, 46,103, 32, 43, 32,102, 97, 99, 42, 40, 50, 46, 48, 42, 40, 99,111,108, 50, 46,103, 32,
+ 45, 32, 48, 46, 53, 41, 41, 59, 10,  9,101,108,115,101, 10,  9,  9,111,117,116, 99,111,108, 46,103, 61, 32, 99,111,108, 49, 46,
+103, 32, 43, 32,102, 97, 99, 42, 40, 50, 46, 48, 42, 40, 99,111,108, 50, 46,103, 41, 32, 45, 32, 49, 46, 48, 41, 59, 10, 10,  9,
+105,102, 40, 99,111,108, 50, 46, 98, 32, 62, 32, 48, 46, 53, 41, 10,  9,  9,111,117,116, 99,111,108, 46, 98, 61, 32, 99,111,108,
+ 49, 46, 98, 32, 43, 32,102, 97, 99, 42, 40, 50, 46, 48, 42, 40, 99,111,108, 50, 46, 98, 32, 45, 32, 48, 46, 53, 41, 41, 59, 10,
+  9,101,108,115,101, 10,  9,  9,111,117,116, 99,111,108, 46, 98, 61, 32, 99,111,108, 49, 46, 98, 32, 43, 32,102, 97, 99, 42, 40,
+ 50, 46, 48, 42, 40, 99,111,108, 50, 46, 98, 41, 32, 45, 32, 49, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,118, 97,108,
+116,111,114,103, 98, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,115, 97,109,112,108,101,114, 50, 68, 32, 99,111,108,111,114,
+109, 97,112, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,
+111,117,116, 97,108,112,104, 97, 41, 10,123, 10,  9,111,117,116, 99,111,108, 32, 61, 32,116,101,120,116,117,114,101, 50, 68, 40,
+ 99,111,108,111,114,109, 97,112, 44, 32,118,101, 99, 50, 40,102, 97, 99, 44, 32, 48, 46, 48, 41, 41, 59, 10,  9,111,117,116, 97,
+108,112,104, 97, 32, 61, 32,111,117,116, 99,111,108, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,114,103, 98,116,111, 98,119,
+ 40,118,101, 99, 52, 32, 99,111,108,111,114, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 32, 32,
+ 10,123, 10,  9,111,117,116,118, 97,108, 32, 61, 32, 99,111,108,111,114, 46,114, 42, 48, 46, 51, 53, 32, 43, 32, 99,111,108,111,
+114, 46,103, 42, 48, 46, 52, 53, 32, 43, 32, 99,111,108,111,114, 46, 98, 42, 48, 46, 50, 59, 32, 47, 42, 32,107,101,101,112, 32,
+116,104,101,115,101, 32,102, 97, 99,116,111,114,115, 32,105,110, 32,115,121,110, 99, 32,119,105,116,104, 32,116,101,120,116,117,
+114,101, 46,104, 58, 82, 71, 66, 84, 79, 66, 87, 32, 42, 47, 10,125, 10, 10,118,111,105,100, 32,105,110,118,101,114,116, 40,102,
+108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116,
+ 99,111,108, 41, 10,123, 10,  9,111,117,116, 99,111,108, 46,120,121,122, 32, 61, 32,109,105,120, 40, 99,111,108, 46,120,121,122,
+ 44, 32,118,101, 99, 51, 40, 49, 46, 48, 44, 32, 49, 46, 48, 44, 32, 49, 46, 48, 41, 32, 45, 32, 99,111,108, 46,120,121,122, 44,
+ 32,102, 97, 99, 41, 59, 10,  9,111,117,116, 99,111,108, 46,119, 32, 61, 32, 99,111,108, 46,119, 59, 10,125, 10, 10,118,111,105,
+100, 32,104,117,101, 95,115, 97,116, 40,102,108,111, 97,116, 32,104,117,101, 44, 32,102,108,111, 97,116, 32,115, 97,116, 44, 32,
+102,108,111, 97,116, 32,118, 97,108,117,101, 44, 32,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108,
+ 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10,  9,118,101, 99, 52, 32,104,115,118, 59, 10,
+ 10,  9,114,103, 98, 95,116,111, 95,104,115,118, 40, 99,111,108, 44, 32,104,115,118, 41, 59, 10, 10,  9,104,115,118, 91, 48, 93,
+ 32, 43, 61, 32, 40,104,117,101, 32, 45, 32, 48, 46, 53, 41, 59, 10,  9,105,102, 40,104,115,118, 91, 48, 93, 62, 49, 46, 48, 41,
+ 32,104,115,118, 91, 48, 93, 45, 61, 49, 46, 48, 59, 32,101,108,115,101, 32,105,102, 40,104,115,118, 91, 48, 93, 60, 48, 46, 48,
+ 41, 32,104,115,118, 91, 48, 93, 43, 61, 32, 49, 46, 48, 59, 10,  9,104,115,118, 91, 49, 93, 32, 42, 61, 32,115, 97,116, 59, 10,
+  9,105,102, 40,104,115,118, 91, 49, 93, 62, 49, 46, 48, 41, 32,104,115,118, 91, 49, 93, 61, 32, 49, 46, 48, 59, 32,101,108,115,
+101, 32,105,102, 40,104,115,118, 91, 49, 93, 60, 48, 46, 48, 41, 32,104,115,118, 91, 49, 93, 61, 32, 48, 46, 48, 59, 10,  9,104,
+115,118, 91, 50, 93, 32, 42, 61, 32,118, 97,108,117,101, 59, 10,  9,105,102, 40,104,115,118, 91, 50, 93, 62, 49, 46, 48, 41, 32,
+104,115,118, 91, 50, 93, 61, 32, 49, 46, 48, 59, 32,101,108,115,101, 32,105,102, 40,104,115,118, 91, 50, 93, 60, 48, 46, 48, 41,
+ 32,104,115,118, 91, 50, 93, 61, 32, 48, 46, 48, 59, 10, 10,  9,104,115,118, 95,116,111, 95,114,103, 98, 40,104,115,118, 44, 32,
+111,117,116, 99,111,108, 41, 59, 10, 10,  9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, 40, 99,111,108, 44, 32,111,117,116,
+ 99,111,108, 44, 32,102, 97, 99, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,101,112, 97,114, 97,116,101, 95,114,103, 98, 40,
+118,101, 99, 52, 32, 99,111,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,114, 44, 32,111,117,116, 32,102,108,111, 97,116,
+ 32,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32, 98, 41, 10,123, 10,  9,114, 32, 61, 32, 99,111,108, 46,114, 59, 10,  9,
+103, 32, 61, 32, 99,111,108, 46,103, 59, 10,  9, 98, 32, 61, 32, 99,111,108, 46, 98, 59, 10,125, 10, 10,118,111,105,100, 32, 99,
+111,109, 98,105,110,101, 95,114,103, 98, 40,102,108,111, 97,116, 32,114, 44, 32,102,108,111, 97,116, 32,103, 44, 32,102,108,111,
+ 97,116, 32, 98, 44, 32,111,117,116, 32,118,101, 99, 52, 32, 99,111,108, 41, 10,123, 10,  9, 99,111,108, 32, 61, 32,118,101, 99,
+ 52, 40,114, 44, 32,103, 44, 32, 98, 44, 32, 49, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,111,117,116,112,117,116, 95,
+110,111,100,101, 40,118,101, 99, 52, 32,114,103, 98, 44, 32,102,108,111, 97,116, 32, 97,108,112,104, 97, 44, 32,111,117,116, 32,
+118,101, 99, 52, 32,111,117,116,114,103, 98, 41, 10,123, 10,  9,111,117,116,114,103, 98, 32, 61, 32,118,101, 99, 52, 40,114,103,
+ 98, 46,114,103, 98, 44, 32, 97,108,112,104, 97, 41, 59, 10,125, 10, 10, 47, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 32, 84,
+ 69, 88, 84, 85, 82, 69, 83, 32, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 47, 10, 10,118,111,105,100, 32,116,
+101,120,116,117,114,101, 95,102,108,105,112, 95, 98,108,101,110,100, 40,118,101, 99, 51, 32,118,101, 99, 44, 32,111,117,116, 32,
+118,101, 99, 51, 32,111,117,116,118,101, 99, 41, 10,123, 10,  9,111,117,116,118,101, 99, 32, 61, 32,118,101, 99, 46,121,120,122,
+ 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120,116,117,114,101, 95, 98,108,101,110,100, 95,108,105,110, 40,118,101, 99, 51,
+ 32,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,111,117,116,118, 97,
+108, 32, 61, 32, 40, 49, 46, 48, 43,118,101, 99, 46,120, 41, 47, 50, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120,
+116,117,114,101, 95, 98,108,101,110,100, 95,113,117, 97,100, 40,118,101, 99, 51, 32,118,101, 99, 44, 32,111,117,116, 32,102,108,
+111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10,  9,111,117,116,118, 97,108, 32, 61, 32,109, 97,120, 40, 40, 49, 46, 48,
+ 43,118,101, 99, 46,120, 41, 47, 50, 46, 48, 44, 32, 48, 46, 48, 41, 59, 10,  9,111,117,116,118, 97,108, 32, 42, 61, 32,111,117,
+116,118, 97,108, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120,116,117,114,101, 95,119,111,111,100, 95,115,105,110, 40,118,
+101, 99, 51, 32,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,118, 97,108,117,101, 44, 32,111,117,116, 32,118,101,
+ 99, 52, 32, 99,111,108,111,114, 44, 32,111,117,116, 32,118,101, 99, 51, 32,110,111,114,109, 97,108, 41, 10,123, 10,  9,102,108,
+111, 97,116, 32, 97, 32, 61, 32,115,113,114,116, 40,118,101, 99, 46,120, 42,118,101, 99, 46,120, 32, 43, 32,118,101, 99, 46,121,
+ 42,118,101, 99, 46,121, 32, 43, 32,118,101, 99, 46,122, 42,118,101, 99, 46,122, 41, 42, 50, 48, 46, 48, 59, 10,  9,102,108,111,
+ 97,116, 32,119,105, 32, 61, 32, 48, 46, 53, 32, 43, 32, 48, 46, 53, 42,115,105,110, 40, 97, 41, 59, 10, 10,  9,118, 97,108,117,
+101, 32, 61, 32,119,105, 59, 10,  9, 99,111,108,111,114, 32, 61, 32,118,101, 99, 52, 40,119,105, 44, 32,119,105, 44, 32,119,105,
+ 44, 32, 49, 46, 48, 41, 59, 10,  9,110,111,114,109, 97,108, 32, 61, 32,118,101, 99, 51, 40, 48, 46, 48, 44, 32, 48, 46, 48, 44,
+ 32, 48, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120,116,117,114,101, 95,105,109, 97,103,101, 40,118,101, 99,
+ 51, 32,118,101, 99, 44, 32,115, 97,109,112,108,101,114, 50, 68, 32,105,109, 97, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,
+118, 97,108,117,101, 44, 32,111,117,116, 32,118,101, 99, 52, 32, 99,111,108,111,114, 44, 32,111,117,116, 32,118,101, 99, 51, 32,
+110,111,114,109, 97,108, 41, 10,123, 10,  9, 99,111,108,111,114, 32, 61, 32,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97,
+ 44, 32, 40,118,101, 99, 46,120,121, 32, 43, 32,118,101, 99, 50, 40, 49, 46, 48, 44, 32, 49, 46, 48, 41, 41, 42, 48, 46, 53, 41,
+ 59, 10,  9,118, 97,108,117,101, 32, 61, 32, 49, 46, 48, 59, 10, 10,  9,110,111,114,109, 97,108, 46,120, 32, 61, 32, 50, 46, 48,
+ 42, 40, 99,111,108,111,114, 46,114, 32, 45, 32, 48, 46, 53, 41, 59, 10,  9,110,111,114,109, 97,108, 46,121, 32, 61, 32, 50, 46,
+ 48, 42, 40, 48, 46, 53, 32, 45, 32, 99,111,108,111,114, 46,103, 41, 59, 10,  9,110,111,114,109, 97,108, 46,122, 32, 61, 32, 50,
+ 46, 48, 42, 40, 99,111,108,111,114, 46, 98, 32, 45, 32, 48, 46, 53, 41, 59, 10,125, 10, 10, 47, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 32, 77, 84, 69, 88, 32, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 47, 10, 10,118,
+111,105,100, 32,116,101,120, 99,111, 95,111,114, 99,111, 40,118,101, 99, 51, 32, 97,116,116,111,114, 99,111, 44, 32,111,117,116,
+ 32,118,101, 99, 51, 32,111,114, 99,111, 41, 10,123, 10,  9,111,114, 99,111, 32, 61, 32, 97,116,116,111,114, 99,111, 59, 10,125,
+ 10, 10,118,111,105,100, 32,116,101,120, 99,111, 95,117,118, 40,118,101, 99, 50, 32, 97,116,116,117,118, 44, 32,111,117,116, 32,
+118,101, 99, 51, 32,117,118, 41, 10,123, 10,  9, 47, 42, 32,100,105,115, 97, 98,108,101,100, 32,102,111,114, 32,110,111,119, 44,
+ 32,119,111,114,107,115, 32,116,111,103,101,116,104,101,114, 32,119,105,116,104, 32,108,101, 97,118,105,110,103, 32,111,117,116,
+ 32,109,116,101,120, 95, 50,100, 95,109, 97,112,112,105,110,103, 10,  9, 32, 32, 32,117,118, 32, 61, 32,118,101, 99, 51, 40, 97,
+116,116,117,118, 42, 50, 46, 48, 32, 45, 32,118,101, 99, 50, 40, 49, 46, 48, 44, 32, 49, 46, 48, 41, 44, 32, 48, 46, 48, 41, 59,
+ 32, 42, 47, 10,  9,117,118, 32, 61, 32,118,101, 99, 51, 40, 97,116,116,117,118, 44, 32, 48, 46, 48, 41, 59, 10,125, 10, 10,118,
+111,105,100, 32,116,101,120, 99,111, 95,110,111,114,109, 40,118,101, 99, 51, 32,110,111,114,109, 97,108, 44, 32,111,117,116, 32,
+118,101, 99, 51, 32,111,117,116,110,111,114,109, 97,108, 41, 10,123, 10,  9, 47, 42, 32, 99,111,114,114,101,115,112,111,110,100,
+115, 32,116,111, 32,115,104,105, 45, 62,111,114,110, 44, 32,119,104,105, 99,104, 32,105,115, 32,110,101,103, 97,116,101,100, 32,
+115,111, 32, 99, 97,110, 99,101,108,115, 10,  9, 32, 32, 32,111,117,116, 32, 98,108,101,110,100,101,114, 32,110,111,114,109, 97,
+108, 32,110,101,103, 97,116,105,111,110, 32, 42, 47, 10,  9,111,117,116,110,111,114,109, 97,108, 32, 61, 32,110,111,114,109, 97,
+108,105,122,101, 40,110,111,114,109, 97,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120, 99,111, 95,116, 97,110,103,
+101,110,116, 40,118,101, 99, 52, 32,116, 97,110,103,101,110,116, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,116, 97,
+110,103,101,110,116, 41, 10,123, 10,  9,111,117,116,116, 97,110,103,101,110,116, 32, 61, 32,110,111,114,109, 97,108,105,122,101,
+ 40,116, 97,110,103,101,110,116, 46,120,121,122, 41, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120, 99,111, 95,103,108,111,
+ 98, 97,108, 40,109, 97,116, 52, 32,118,105,101,119,105,110,118,109, 97,116, 44, 32,118,101, 99, 51, 32, 99,111, 44, 32,111,117,
+116, 32,118,101, 99, 51, 32,103,108,111, 98, 97,108, 41, 10,123, 10,  9,103,108,111, 98, 97,108, 32, 61, 32, 40,118,105,101,119,
+105,110,118,109, 97,116, 42,118,101, 99, 52, 40, 99,111, 44, 32, 49, 46, 48, 41, 41, 46,120,121,122, 59, 10,125, 10, 10,118,111,
+105,100, 32,116,101,120, 99,111, 95,111, 98,106,101, 99,116, 40,109, 97,116, 52, 32,118,105,101,119,105,110,118,109, 97,116, 44,
+ 32,109, 97,116, 52, 32,111, 98,105,110,118,109, 97,116, 44, 32,118,101, 99, 51, 32, 99,111, 44, 32,111,117,116, 32,118,101, 99,
+ 51, 32,111, 98,106,101, 99,116, 41, 10,123, 10,  9,111, 98,106,101, 99,116, 32, 61, 32, 40,111, 98,105,110,118,109, 97,116, 42,
  40,118,105,101,119,105,110,118,109, 97,116, 42,118,101, 99, 52, 40, 99,111, 44, 32, 49, 46, 48, 41, 41, 41, 46,120,121,122, 59,
- 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,116,101,120, 99,111, 95,114,101,102,108, 40,118,101, 99, 51, 32,118,110, 44, 32,
-118,101, 99, 51, 32,118,105,101,119, 44, 32,111,117,116, 32,118,101, 99, 51, 32,114,101,102, 41, 13, 10,123, 13, 10,  9,114,101,
-102, 32, 61, 32,118,105,101,119, 32, 45, 32, 50, 46, 48, 42,100,111,116, 40,118,110, 44, 32,118,105,101,119, 41, 42,118,110, 59,
- 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,115,104, 97,100,101, 95,110,111,114,109, 40,118,101, 99, 51, 32,110,111,114,109,
- 97,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,110,111,114,109, 97,108, 41, 13, 10,123, 13, 10,  9, 47, 42, 32,
- 98,108,101,110,100,101,114, 32,114,101,110,100,101,114, 32,110,111,114,109, 97,108, 32,105,115, 32,110,101,103, 97,116,101,100,
- 32, 42, 47, 13, 10,  9,111,117,116,110,111,114,109, 97,108, 32, 61, 32, 45,110,111,114,109, 97,108,105,122,101, 40,110,111,114,
-109, 97,108, 41, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95, 98,108,101,110,100, 40,
-118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,
-102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108,
- 41, 13, 10,123, 13, 10,  9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 13, 10, 13, 10,  9,102, 97, 99,116, 32, 42, 61, 32,102,
- 97, 99,103, 59, 13, 10,  9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,116, 59, 13, 10, 13, 10,  9,105,110, 99,111,
-108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 32, 43, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 59, 13, 10,
-125, 13, 10, 13, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,109,117,108, 40,118,101, 99, 51, 32,111,117,116, 99,
-111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111,
- 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 13, 10,123, 13, 10,  9,102,108,
-111, 97,116, 32,102, 97, 99,109, 59, 13, 10, 13, 10,  9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 13, 10,  9,102, 97,
- 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,103, 59, 13, 10, 13, 10,  9,105,110, 99,111,108, 32, 61, 32, 40,102, 97, 99,109,
- 32, 43, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 41, 42,111,117,116, 99,111,108, 59, 13, 10,125, 13, 10, 13, 10,118,111,
-105,100, 32,109,116,101,120, 95,114,103, 98, 95,115, 99,114,101,101,110, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,
-118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102,
- 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 13, 10,123, 13, 10,  9,102,108,111, 97,116, 32,
-102, 97, 99,109, 59, 13, 10, 13, 10,  9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 13, 10,  9,102, 97, 99,109, 32, 61,
- 32, 49, 46, 48, 45,102, 97, 99,103, 59, 13, 10, 13, 10,  9,105,110, 99,111,108, 32, 61, 32,118,101, 99, 51, 40, 49, 46, 48, 41,
- 32, 45, 32, 40,118,101, 99, 51, 40,102, 97, 99,109, 41, 32, 43, 32,102, 97, 99,116, 42, 40,118,101, 99, 51, 40, 49, 46, 48, 41,
- 32, 45, 32,116,101,120, 99,111,108, 41, 41, 42, 40,118,101, 99, 51, 40, 49, 46, 48, 41, 32, 45, 32,111,117,116, 99,111,108, 41,
- 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,111,118,101,114,108, 97,121, 40,118,101,
- 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97,
- 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 13,
- 10,123, 13, 10,  9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 13, 10, 13, 10,  9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,
-103, 59, 13, 10,  9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,103, 59, 13, 10, 13, 10,  9,105,102, 40,111,117,116,
- 99,111,108, 46,114, 32, 60, 32, 48, 46, 53, 41, 13, 10,  9,  9,105,110, 99,111,108, 46,114, 32, 61, 32,111,117,116, 99,111,108,
- 46,114, 42, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99,116, 42,116,101,120, 99,111,108, 46,114, 41, 59, 13, 10,
-  9,101,108,115,101, 13, 10,  9,  9,105,110, 99,111,108, 46,114, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43,
- 32, 50, 46, 48, 42,102, 97, 99,116, 42, 40, 49, 46, 48, 32, 45, 32,116,101,120, 99,111,108, 46,114, 41, 41, 42, 40, 49, 46, 48,
- 32, 45, 32,111,117,116, 99,111,108, 46,114, 41, 59, 13, 10, 13, 10,  9,105,102, 40,111,117,116, 99,111,108, 46,103, 32, 60, 32,
- 48, 46, 53, 41, 13, 10,  9,  9,105,110, 99,111,108, 46,103, 32, 61, 32,111,117,116, 99,111,108, 46,103, 42, 40,102, 97, 99,109,
- 32, 43, 32, 50, 46, 48, 42,102, 97, 99,116, 42,116,101,120, 99,111,108, 46,103, 41, 59, 13, 10,  9,101,108,115,101, 13, 10,  9,
-  9,105,110, 99,111,108, 46,103, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99,
-116, 42, 40, 49, 46, 48, 32, 45, 32,116,101,120, 99,111,108, 46,103, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,
-108, 46,103, 41, 59, 13, 10, 13, 10,  9,105,102, 40,111,117,116, 99,111,108, 46, 98, 32, 60, 32, 48, 46, 53, 41, 13, 10,  9,  9,
-105,110, 99,111,108, 46, 98, 32, 61, 32,111,117,116, 99,111,108, 46, 98, 42, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102,
- 97, 99,116, 42,116,101,120, 99,111,108, 46, 98, 41, 59, 13, 10,  9,101,108,115,101, 13, 10,  9,  9,105,110, 99,111,108, 46, 98,
- 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99,116, 42, 40, 49, 46, 48, 32, 45,
- 32,116,101,120, 99,111,108, 46, 98, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46, 98, 41, 59, 13, 10,125,
- 13, 10, 13, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,115,117, 98, 40,118,101, 99, 51, 32,111,117,116, 99,111,
-108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,
-116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 13, 10,123, 13, 10,  9,105,110, 99,
-111,108, 32, 61, 32, 45,102, 97, 99,116, 42,102, 97, 99,103, 42,116,101,120, 99,111,108, 32, 43, 32,111,117,116, 99,111,108, 59,
- 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95, 97,100,100, 40,118,101, 99, 51, 32,111,117,
-116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,
-108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 13, 10,123, 13, 10,  9,
-105,110, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,102, 97, 99,103, 42,116,101,120, 99,111,108, 32, 43, 32,111,117,116, 99,111,
-108, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,100,105,118, 40,118,101, 99, 51, 32,
-111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44,
- 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 13, 10,123, 13,
- 10,  9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 13, 10, 13, 10,  9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 13,
- 10,  9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,116, 59, 13, 10, 13, 10,  9,105,102, 40,116,101,120, 99,111,108,
- 46,114, 32, 33, 61, 32, 48, 46, 48, 41, 32,105,110, 99,111,108, 46,114, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108,
- 46,114, 32, 43, 32,102, 97, 99,116, 42,111,117,116, 99,111,108, 46,114, 47,116,101,120, 99,111,108, 46,114, 59, 13, 10,  9,105,
-102, 40,116,101,120, 99,111,108, 46,103, 32, 33, 61, 32, 48, 46, 48, 41, 32,105,110, 99,111,108, 46,103, 32, 61, 32,102, 97, 99,
-109, 42,111,117,116, 99,111,108, 46,103, 32, 43, 32,102, 97, 99,116, 42,111,117,116, 99,111,108, 46,103, 47,116,101,120, 99,111,
-108, 46,103, 59, 13, 10,  9,105,102, 40,116,101,120, 99,111,108, 46, 98, 32, 33, 61, 32, 48, 46, 48, 41, 32,105,110, 99,111,108,
- 46, 98, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 46, 98, 32, 43, 32,102, 97, 99,116, 42,111,117,116, 99,111,108,
- 46, 98, 47,116,101,120, 99,111,108, 46, 98, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98,
- 95,100,105,102,102, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,
-102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51,
- 32,105,110, 99,111,108, 41, 13, 10,123, 13, 10,  9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 13, 10, 13, 10,  9,102, 97, 99,
-116, 32, 42, 61, 32,102, 97, 99,103, 59, 13, 10,  9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,116, 59, 13, 10, 13,
- 10,  9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 32, 43, 32,102, 97, 99,116, 42, 97, 98,115,
- 40,116,101,120, 99,111,108, 32, 45, 32,111,117,116, 99,111,108, 41, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109,116,
-101,120, 95,114,103, 98, 95,100, 97,114,107, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,
-120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,
-116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 13, 10,123, 13, 10,  9,102,108,111, 97,116, 32,102, 97, 99,109, 44, 32, 99,
-111,108, 59, 13, 10, 13, 10,  9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 13, 10,  9,102, 97, 99,109, 32, 61, 32, 49,
- 46, 48, 45,102, 97, 99,116, 59, 13, 10, 13, 10,  9, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 46,114,
- 59, 13, 10,  9,105,102, 40, 99,111,108, 32, 60, 32,111,117,116, 99,111,108, 46,114, 41, 32,105,110, 99,111,108, 46,114, 32, 61,
- 32, 99,111,108, 59, 32,101,108,115,101, 32,105,110, 99,111,108, 46,114, 32, 61, 32,111,117,116, 99,111,108, 46,114, 59, 13, 10,
-  9, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 46,103, 59, 13, 10,  9,105,102, 40, 99,111,108, 32, 60,
- 32,111,117,116, 99,111,108, 46,103, 41, 32,105,110, 99,111,108, 46,103, 32, 61, 32, 99,111,108, 59, 32,101,108,115,101, 32,105,
-110, 99,111,108, 46,103, 32, 61, 32,111,117,116, 99,111,108, 46,103, 59, 13, 10,  9, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,
-116,101,120, 99,111,108, 46, 98, 59, 13, 10,  9,105,102, 40, 99,111,108, 32, 60, 32,111,117,116, 99,111,108, 46, 98, 41, 32,105,
-110, 99,111,108, 46, 98, 32, 61, 32, 99,111,108, 59, 32,101,108,115,101, 32,105,110, 99,111,108, 46, 98, 32, 61, 32,111,117,116,
- 99,111,108, 46, 98, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,108,105,103,104,116,
- 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116,
- 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,
-108, 41, 13, 10,123, 13, 10,  9,102,108,111, 97,116, 32,102, 97, 99,109, 44, 32, 99,111,108, 59, 13, 10, 13, 10,  9,102, 97, 99,
-116, 32, 42, 61, 32,102, 97, 99,103, 59, 13, 10,  9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,116, 59, 13, 10, 13,
- 10,  9, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 46,114, 59, 13, 10,  9,105,102, 40, 99,111,108, 32,
- 62, 32,111,117,116, 99,111,108, 46,114, 41, 32,105,110, 99,111,108, 46,114, 32, 61, 32, 99,111,108, 59, 32,101,108,115,101, 32,
-105,110, 99,111,108, 46,114, 32, 61, 32,111,117,116, 99,111,108, 46,114, 59, 13, 10,  9, 99,111,108, 32, 61, 32,102, 97, 99,116,
- 42,116,101,120, 99,111,108, 46,103, 59, 13, 10,  9,105,102, 40, 99,111,108, 32, 62, 32,111,117,116, 99,111,108, 46,103, 41, 32,
-105,110, 99,111,108, 46,103, 32, 61, 32, 99,111,108, 59, 32,101,108,115,101, 32,105,110, 99,111,108, 46,103, 32, 61, 32,111,117,
-116, 99,111,108, 46,103, 59, 13, 10,  9, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 46, 98, 59, 13, 10,
-  9,105,102, 40, 99,111,108, 32, 62, 32,111,117,116, 99,111,108, 46, 98, 41, 32,105,110, 99,111,108, 46, 98, 32, 61, 32, 99,111,
-108, 59, 32,101,108,115,101, 32,105,110, 99,111,108, 46, 98, 32, 61, 32,111,117,116, 99,111,108, 46, 98, 59, 13, 10,125, 13, 10,
- 13, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,104,117,101, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44,
- 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,
-102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 13, 10,123, 13, 10,  9,118,101, 99, 52, 32,
- 99,111,108, 59, 13, 10, 13, 10,  9,109,105,120, 95,104,117,101, 40,102, 97, 99,116, 42,102, 97, 99,103, 44, 32,118,101, 99, 52,
- 40,111,117,116, 99,111,108, 44, 32, 49, 46, 48, 41, 44, 32,118,101, 99, 52, 40,116,101,120, 99,111,108, 44, 32, 49, 46, 48, 41,
- 44, 32, 99,111,108, 41, 59, 13, 10,  9,105,110, 99,111,108, 46,114,103, 98, 32, 61, 32, 99,111,108, 46,114,103, 98, 59, 13, 10,
-125, 13, 10, 13, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,115, 97,116, 40,118,101, 99, 51, 32,111,117,116, 99,
-111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111,
- 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 13, 10,123, 13, 10,  9,118,101,
- 99, 52, 32, 99,111,108, 59, 13, 10, 13, 10,  9,109,105,120, 95,115, 97,116, 40,102, 97, 99,116, 42,102, 97, 99,103, 44, 32,118,
-101, 99, 52, 40,111,117,116, 99,111,108, 44, 32, 49, 46, 48, 41, 44, 32,118,101, 99, 52, 40,116,101,120, 99,111,108, 44, 32, 49,
- 46, 48, 41, 44, 32, 99,111,108, 41, 59, 13, 10,  9,105,110, 99,111,108, 46,114,103, 98, 32, 61, 32, 99,111,108, 46,114,103, 98,
- 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,118, 97,108, 40,118,101, 99, 51, 32,111,
-117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,
-102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 13, 10,123, 13, 10,
-  9,118,101, 99, 52, 32, 99,111,108, 59, 13, 10, 13, 10,  9,109,105,120, 95,118, 97,108, 40,102, 97, 99,116, 42,102, 97, 99,103,
- 44, 32,118,101, 99, 52, 40,111,117,116, 99,111,108, 44, 32, 49, 46, 48, 41, 44, 32,118,101, 99, 52, 40,116,101,120, 99,111,108,
- 44, 32, 49, 46, 48, 41, 44, 32, 99,111,108, 41, 59, 13, 10,  9,105,110, 99,111,108, 46,114,103, 98, 32, 61, 32, 99,111,108, 46,
-114,103, 98, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95, 99,111,108,111,114, 40,118,
+ 10,125, 10, 10,118,111,105,100, 32,116,101,120, 99,111, 95,114,101,102,108, 40,118,101, 99, 51, 32,118,110, 44, 32,118,101, 99,
+ 51, 32,118,105,101,119, 44, 32,111,117,116, 32,118,101, 99, 51, 32,114,101,102, 41, 10,123, 10,  9,114,101,102, 32, 61, 32,118,
+105,101,119, 32, 45, 32, 50, 46, 48, 42,100,111,116, 40,118,110, 44, 32,118,105,101,119, 41, 42,118,110, 59, 10,125, 10, 10,118,
+111,105,100, 32,115,104, 97,100,101, 95,110,111,114,109, 40,118,101, 99, 51, 32,110,111,114,109, 97,108, 44, 32,111,117,116, 32,
+118,101, 99, 51, 32,111,117,116,110,111,114,109, 97,108, 41, 10,123, 10,  9, 47, 42, 32, 98,108,101,110,100,101,114, 32,114,101,
+110,100,101,114, 32,110,111,114,109, 97,108, 32,105,115, 32,110,101,103, 97,116,101,100, 32, 42, 47, 10,  9,111,117,116,110,111,
+114,109, 97,108, 32, 61, 32, 45,110,111,114,109, 97,108,105,122,101, 40,110,111,114,109, 97,108, 41, 59, 10,125, 10, 10,118,111,
+105,100, 32,109,116,101,120, 95,114,103, 98, 95, 98,108,101,110,100, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,
+101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97,
+ 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10,  9,102,108,111, 97,116, 32,102, 97, 99,
+109, 59, 10, 10,  9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10,  9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102,
+ 97, 99,116, 59, 10, 10,  9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 32, 43, 32,102, 97, 99,
+109, 42,111,117,116, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,109,117,108, 40,118,
 101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102,
  97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41,
- 13, 10,123, 13, 10,  9,118,101, 99, 52, 32, 99,111,108, 59, 13, 10, 13, 10,  9,109,105,120, 95, 99,111,108,111,114, 40,102, 97,
- 99,116, 42,102, 97, 99,103, 44, 32,118,101, 99, 52, 40,111,117,116, 99,111,108, 44, 32, 49, 46, 48, 41, 44, 32,118,101, 99, 52,
- 40,116,101,120, 99,111,108, 44, 32, 49, 46, 48, 41, 44, 32, 99,111,108, 41, 59, 13, 10,  9,105,110, 99,111,108, 46,114,103, 98,
- 32, 61, 32, 99,111,108, 46,114,103, 98, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,
-101, 95,118, 97,114,115, 40,105,110,111,117,116, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102,
- 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,102, 97, 99,109, 41, 13, 10,123, 13, 10,  9,102, 97, 99,116, 32, 42,
- 61, 32, 97, 98,115, 40,102, 97, 99,103, 41, 59, 13, 10,  9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,116, 59, 13,
- 10, 13, 10,  9,105,102, 40,102, 97, 99,103, 32, 60, 32, 48, 46, 48, 41, 32,123, 13, 10,  9,  9,102,108,111, 97,116, 32,116,109,
-112, 32, 61, 32,102, 97, 99,116, 59, 13, 10,  9,  9,102, 97, 99,116, 32, 61, 32,102, 97, 99,109, 59, 13, 10,  9,  9,102, 97, 99,
-109, 32, 61, 32,116,109,112, 59, 13, 10,  9,125, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,
-117,101, 95, 98,108,101,110,100, 40,102,108,111, 97,116, 32,111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101,120,
- 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116,
- 32,102,108,111, 97,116, 32,105,110, 99,111,108, 41, 13, 10,123, 13, 10,  9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 13, 10,
-  9,109,116,101,120, 95,118, 97,108,117,101, 95,118, 97,114,115, 40,102, 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,
-109, 41, 59, 13, 10, 13, 10,  9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 32, 43, 32,102, 97,
- 99,109, 42,111,117,116, 99,111,108, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101,
- 95,109,117,108, 40,102,108,111, 97,116, 32,111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44,
- 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111,
- 97,116, 32,105,110, 99,111,108, 41, 13, 10,123, 13, 10,  9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 13, 10,  9,109,116,101,
-120, 95,118, 97,108,117,101, 95,118, 97,114,115, 40,102, 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 13,
- 10, 13, 10,  9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99,103, 59, 13, 10,  9,105,110, 99,111,108, 32, 61,
- 32, 40,102, 97, 99,109, 32, 43, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 41, 42,111,117,116, 99,111,108, 59, 13, 10,125,
- 13, 10, 13, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,115, 99,114,101,101,110, 40,102,108,111, 97,116,
- 32,111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,
-116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110, 99,111,108, 41, 13,
- 10,123, 13, 10,  9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 13, 10,  9,109,116,101,120, 95,118, 97,108,117,101, 95,118, 97,
-114,115, 40,102, 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 13, 10, 13, 10,  9,102, 97, 99,109, 32, 61,
- 32, 49, 46, 48, 32, 45, 32,102, 97, 99,103, 59, 13, 10,  9,105,110, 99,111,108, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97,
- 99,109, 32, 43, 32,102, 97, 99,116, 42, 40, 49, 46, 48, 32, 45, 32,116,101,120, 99,111,108, 41, 41, 42, 40, 49, 46, 48, 32, 45,
- 32,111,117,116, 99,111,108, 41, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,
-115,117, 98, 40,102,108,111, 97,116, 32,111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44, 32,
-102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,
-116, 32,105,110, 99,111,108, 41, 13, 10,123, 13, 10,  9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 13, 10,  9,109,116,101,120,
- 95,118, 97,108,117,101, 95,118, 97,114,115, 40,102, 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 13, 10,
- 13, 10,  9,102, 97, 99,116, 32, 61, 32, 45,102, 97, 99,116, 59, 13, 10,  9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,
-116,101,120, 99,111,108, 32, 43, 32,111,117,116, 99,111,108, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,109,116,101,120,
- 95,118, 97,108,117,101, 95, 97,100,100, 40,102,108,111, 97,116, 32,111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,
+ 10,123, 10,  9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 10,  9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10,
+  9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,103, 59, 10, 10,  9,105,110, 99,111,108, 32, 61, 32, 40,102, 97, 99,
+109, 32, 43, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 41, 42,111,117,116, 99,111,108, 59, 10,125, 10, 10,118,111,105,100,
+ 32,109,116,101,120, 95,114,103, 98, 95,115, 99,114,101,101,110, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101,
+ 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,
+103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10,  9,102,108,111, 97,116, 32,102, 97, 99,109,
+ 59, 10, 10,  9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10,  9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97,
+ 99,103, 59, 10, 10,  9,105,110, 99,111,108, 32, 61, 32,118,101, 99, 51, 40, 49, 46, 48, 41, 32, 45, 32, 40,118,101, 99, 51, 40,
+102, 97, 99,109, 41, 32, 43, 32,102, 97, 99,116, 42, 40,118,101, 99, 51, 40, 49, 46, 48, 41, 32, 45, 32,116,101,120, 99,111,108,
+ 41, 41, 42, 40,118,101, 99, 51, 40, 49, 46, 48, 41, 32, 45, 32,111,117,116, 99,111,108, 41, 59, 10,125, 10, 10,118,111,105,100,
+ 32,109,116,101,120, 95,114,103, 98, 95,111,118,101,114,108, 97,121, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,
+101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97,
+ 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10,  9,102,108,111, 97,116, 32,102, 97, 99,
+109, 59, 10, 10,  9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10,  9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102,
+ 97, 99,103, 59, 10, 10,  9,105,102, 40,111,117,116, 99,111,108, 46,114, 32, 60, 32, 48, 46, 53, 41, 10,  9,  9,105,110, 99,111,
+108, 46,114, 32, 61, 32,111,117,116, 99,111,108, 46,114, 42, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99,116, 42,
+116,101,120, 99,111,108, 46,114, 41, 59, 10,  9,101,108,115,101, 10,  9,  9,105,110, 99,111,108, 46,114, 32, 61, 32, 49, 46, 48,
+ 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99,116, 42, 40, 49, 46, 48, 32, 45, 32,116,101,120, 99,111,
+108, 46,114, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46,114, 41, 59, 10, 10,  9,105,102, 40,111,117,116,
+ 99,111,108, 46,103, 32, 60, 32, 48, 46, 53, 41, 10,  9,  9,105,110, 99,111,108, 46,103, 32, 61, 32,111,117,116, 99,111,108, 46,
+103, 42, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99,116, 42,116,101,120, 99,111,108, 46,103, 41, 59, 10,  9,101,
+108,115,101, 10,  9,  9,105,110, 99,111,108, 46,103, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32, 50, 46,
+ 48, 42,102, 97, 99,116, 42, 40, 49, 46, 48, 32, 45, 32,116,101,120, 99,111,108, 46,103, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,
+111,117,116, 99,111,108, 46,103, 41, 59, 10, 10,  9,105,102, 40,111,117,116, 99,111,108, 46, 98, 32, 60, 32, 48, 46, 53, 41, 10,
+  9,  9,105,110, 99,111,108, 46, 98, 32, 61, 32,111,117,116, 99,111,108, 46, 98, 42, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48,
+ 42,102, 97, 99,116, 42,116,101,120, 99,111,108, 46, 98, 41, 59, 10,  9,101,108,115,101, 10,  9,  9,105,110, 99,111,108, 46, 98,
+ 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99,116, 42, 40, 49, 46, 48, 32, 45,
+ 32,116,101,120, 99,111,108, 46, 98, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46, 98, 41, 59, 10,125, 10,
+ 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,115,117, 98, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,
+118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102,
+ 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10,  9,105,110, 99,111,108, 32, 61, 32,
+ 45,102, 97, 99,116, 42,102, 97, 99,103, 42,116,101,120, 99,111,108, 32, 43, 32,111,117,116, 99,111,108, 59, 10,125, 10, 10,118,
+111,105,100, 32,109,116,101,120, 95,114,103, 98, 95, 97,100,100, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101,
+ 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,
+103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10,  9,105,110, 99,111,108, 32, 61, 32,102, 97,
+ 99,116, 42,102, 97, 99,103, 42,116,101,120, 99,111,108, 32, 43, 32,111,117,116, 99,111,108, 59, 10,125, 10, 10,118,111,105,100,
+ 32,109,116,101,120, 95,114,103, 98, 95,100,105,118, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,
+116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,
+111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10,  9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 10,
+  9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10,  9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,116, 59,
+ 10, 10,  9,105,102, 40,116,101,120, 99,111,108, 46,114, 32, 33, 61, 32, 48, 46, 48, 41, 32,105,110, 99,111,108, 46,114, 32, 61,
+ 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 46,114, 32, 43, 32,102, 97, 99,116, 42,111,117,116, 99,111,108, 46,114, 47,116,
+101,120, 99,111,108, 46,114, 59, 10,  9,105,102, 40,116,101,120, 99,111,108, 46,103, 32, 33, 61, 32, 48, 46, 48, 41, 32,105,110,
+ 99,111,108, 46,103, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 46,103, 32, 43, 32,102, 97, 99,116, 42,111,117,116,
+ 99,111,108, 46,103, 47,116,101,120, 99,111,108, 46,103, 59, 10,  9,105,102, 40,116,101,120, 99,111,108, 46, 98, 32, 33, 61, 32,
+ 48, 46, 48, 41, 32,105,110, 99,111,108, 46, 98, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 46, 98, 32, 43, 32,102,
+ 97, 99,116, 42,111,117,116, 99,111,108, 46, 98, 47,116,101,120, 99,111,108, 46, 98, 59, 10,125, 10, 10,118,111,105,100, 32,109,
+116,101,120, 95,114,103, 98, 95,100,105,102,102, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,
 101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,
-117,116, 32,102,108,111, 97,116, 32,105,110, 99,111,108, 41, 13, 10,123, 13, 10,  9,102,108,111, 97,116, 32,102, 97, 99,109, 59,
- 13, 10,  9,109,116,101,120, 95,118, 97,108,117,101, 95,118, 97,114,115, 40,102, 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102,
- 97, 99,109, 41, 59, 13, 10, 13, 10,  9,102, 97, 99,116, 32, 61, 32,102, 97, 99,116, 59, 13, 10,  9,105,110, 99,111,108, 32, 61,
- 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 32, 43, 32,111,117,116, 99,111,108, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,
-100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,100,105,118, 40,102,108,111, 97,116, 32,111,117,116, 99,111,108, 44, 32,102,
-108,111, 97,116, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102,
- 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110, 99,111,108, 41, 13, 10,123, 13, 10,  9,102,108,