! / 0 0 0 0 22716 ` YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYCGL_utils_sigmoid_derivativeCGL_aabb_subdivide_ndCGL_aabb_subdivide_2dCGL_aabb_subdivide_3dCGL_aabb_contains_point_ndCGL_aabb_contains_point_2dCGL_aabb_contains_point_3dCGL_aabb_intersects_aabb_ndCGL_aabb_intersects_aabb_2dCGL_aabb_intersects_aabb_3dCGL_utils_super_fast_hash__CGL_window_key_callback__CGL_context__CGL_window_mouse_button_callback__CGL_window_mouse_position_callback__CGL_window_mouse_scroll_callback__CGL_window_framebuffer_size_callback__CGL_window_close_callback__CGL_window_drag_n_drop_callbackCGL_utils_sigmoidCGL_list_createCGL_list_destroyCGL_list_set_increase_factorCGL_list_get_increase_factorCGL_list_get_item_sizeCGL_list_get_sizeCGL_list_get_capacityCGL_list_pushCGL_list_popCGL_list_getCGL_list_get_randomCGL_list_setCGL_list_is_emptyCGL_list_findCGL_list_reserveCGL_list_fillCGL_list_clearCGL_thread_createCGL_thread_startCGL_thread_destroyCGL_thread_get_idCGL_thread_is_runningCGL_thread_joinCGL_thread_joinableCGL_mutex_createCGL_mutex_destroyCGL_mutex_lockCGL_mutex_releaseCGL_hashtable_createCGL_hashtable_destroyCGL_hashtable_setCGL_hashtable_getCGL_hashtable_get_ptrCGL_hashtable_existsCGL_hashtable_removeCGL_hashtable_set_growth_rateCGL_hashtable_get_sizeCGL_hashtable_set_hash_functionCGL_hashtable_iterator_createCGL_hashtable_iterator_destroyCGL_hashtable_iterator_resetCGL_hashtable_iterator_currCGL_hashtable_iterator_nextCGL_hashtable_iterator_curr_keyCGL_logger_get_contextCGL_logger_set_contextCGL_logger_disable_console_loggingCGL_logger_enable_console_loggingCGL_console_set_colorCGL_printf_redCGL_printf_greenCGL_printf_grayCGL_printf_blueCGL_logger_flushCGL_logger_logCGL_logger_initCGL_logger_shutdownCGL_logger_attach_log_fileCGL_logger_detach_log_fileCGL_console_progress_barCGL_utils_get_timeCGL_utils_reluCGL_utils_relu_derivativeCGL_utils_tanhCGL_utils_tanh_derivativeCGL_utils_stepCGL_utils_step_derivativeCGL_utils_relu_leakyCGL_utils_relu_leaky_derivativeCGL_utils_relu_smoothCGL_utils_relu_smooth_derivativeCGL_utils_hsl_to_rgbCGL_utils_get_random_with_probabilityCGL_utils_get_timestampCGL_utils_is_little_endianCGL_utils_reverse_bytesCGL_utils_little_endian_to_currentCGL_utils_big_endian_to_currentCGL_utils_fast_srandCGL_utils_fast_randCGL_utils_xorshf96CGL_utils_srand31CGL_utils_rand31CGL_utils_quick_sortCGL_shape_initCGL_shape_destroyCGL_transform_create_emptyCGL_transform_create_from_matrixCGL_transform_set_positionCGL_transform_set_rotationCGL_transform_set_scaleCGL_transform_set_parentCGL_transform_update_matrix_localCGL_transform_updateCGL_transform_createCGL_transform_get_matrixCGL_transform_get_matrix_ptrCGL_sat_collision_overlap_on_axisCGL_sat_collision_detectCGL_sat_collision_calculate_axesCGL_utils_is_point_in_triangleCGL_utils_is_point_in_circleCGL_utils_calculate_circumcircleCGL_utils_calculate_bounding_boxCGL_utils_random_gaussianCGL_utils_calculate_bounding_squareCGL_utils_calculate_super_triangleCGL_gjk_shape_default_supportCGL_aabb_contains_pointCGL_aabb_intersects_aabbCGL_triangulate_points_incrementalCGL_utils_crc32CGL_utils_crc64CGL_utils_rot13CGL_float_quadratic_lerpCGL_float_cubic_lerpCGL_vec3_rotate_about_axisCGL_vec2_triple_productCGL_vec3_triple_productCGL_vec4_triple_productCGL_vec3_calculate_orthonormal_basis_from_one_vectorCGL_vec3_reflectCGL_mat4_mulCGL_mat4_decompose_luCGL_mat4_det_by_luCGL_mat4_mul_vec4CGL_mat4_transposeCGL_mat4_gauss_elimCGL_mat4_det_by_gaussCGL_mat4_adjointCGL_mat4_detCGL_mat4_inverseCGL_mat4_rankCGL_mat4_traceCGL_mat4_to_mat3CGL_mat4_from_mat3CGL_mat4_rotate_about_axisCGL_mat3_detCGL_mat3_traceCGL_mat3_transposeCGL_quat_to_axis_angleCGL_quat_to_euler_zyxCGL_quat_mulCGL_quat_rotateCGL_quat_inverseCGL_quat_to_mat4CGL_quat_slerpCGL_quat_squadCGL_mat4_look_atCGL_mat4_lerpCGL_vec3_apply_transformationsCGL_gjk_default_supportCGL_gjk_epa_2dCGL_gjk_check_collision_2dCGL_vec2_apply_transformationsCGL_quat_mul_vec4CGL_matrix_createCGL_matrix_destroyCGL_matrix_create_from_arrayCGL_matrix_add_toCGL_matrix_addCGL_matrix_sub_toCGL_matrix_subCGL_matrix_elem_mul_toCGL_matrix_elem_mulCGL_matrix_mul_toCGL_matrix_mulCGL_matrix_transpose_toCGL_matrix_transposeCGL_matrix_identity_toCGL_matrix_identityCGL_matrix_scale_toCGL_matrix_scaleCGL_matrix_get_elemCGL_matrix_set_elemCGL_matrix_set_rowCGL_matrix_set_colCGL_matrix_get_rowCGL_matrix_get_colCGL_matrix_row_to_matrix_toCGL_matrix_row_to_matrixCGL_matrix_col_to_matrix_toCGL_matrix_col_to_matrixCGL_matrix_is_squareCGL_matrix_is_symmetricCGL_matrix_is_orthogonalCGL_matrix_is_diagonalCGL_matrix_is_identityCGL_matrix_is_zeroCGL_matrix_is_equalCGL_matrix_traceCGL_matrix_copy_toCGL_matrix_copyCGL_matrix_printCGL_matrix_gauss_jordan_toCGL_matrix_gauss_jordanCGL_matrix_submatrix_toCGL_matrix_submatrixCGL_matrix_minor_toCGL_matrix_determinantCGL_matrix_inverse_toCGL_matrix_inverseCGL_matrix_minorCGL_matrix_adjugate_toCGL_matrix_adjugateCGL_matrix_transpose_inplaceCGL_matrix_sum_of_rowCGL_matrix_sum_of_colCGL_matrix_product_of_rowCGL_matrix_product_of_colCGL_matrix_make_zeroCGL_vec2_add_CGL_vec2_sub_CGL_vec2_mul_CGL_vec2_div_CGL_vec2_add_scalar_CGL_vec2_sub_scalar_CGL_vec2_scale_CGL_vec2_normalize_CGL_vec2_dot_CGL_vec2_length_CGL_vec2_cross_CGL_vec2_reflect_CGL_vec2_refract_CGL_vec2_rotate_CGL_vec2_lerp_CGL_vec3_add_CGL_vec3_add3_CGL_vec3_sub_CGL_vec3_mul_CGL_vec3_div_CGL_vec3_add_scalar_CGL_vec3_sub_scalar_CGL_vec3_scale_CGL_vec3_normalize_CGL_vec3_dot_CGL_vec3_length_CGL_vec3_cross_CGL_vec3_reflect_CGL_vec3_refract_CGL_vec3_lerp_CGL_vec4_add_CGL_vec4_sub_CGL_vec4_mul_CGL_vec4_div_CGL_vec4_add_scalar_CGL_vec4_sub_scalar_CGL_vec4_scale_CGL_vec4_normalize_CGL_vec4_dot_CGL_vec4_length_CGL_vec4_lerp_CGL_initCGL_shutdownCGL_utils_get_file_sizeCGL_utils_sleepCGL_utils_read_fileCGL_utils_write_fileCGL_utils_append_fileCGL_window_createCGL_window_create_undecoratedCGL_window_destroyCGL_window_poll_eventsCGL_window_swap_buffersCGL_window_should_closeCGL_window_set_titleCGL_window_set_sizeCGL_window_set_positionCGL_window_set_hiddenCGL_window_set_user_dataCGL_window_get_user_dataCGL_window_get_sizeCGL_window_get_positionCGL_window_get_framebuffer_sizeCGL_window_set_key_callbackCGL_window_set_mouse_button_callbackCGL_window_set_mouse_position_callbackCGL_window_set_mouse_scroll_callbackCGL_window_set_framebuffer_size_callbackCGL_window_set_close_callbackCGL_window_set_drag_n_drop_callbackCGL_window_resecure_callbacksCGL_window_get_keyCGL_window_is_key_pressedCGL_window_get_mouse_buttonCGL_window_get_mouse_positionCGL_window_make_context_currentCGL_window_get_glfw_handleCGL_texture_createCGL_texture_create_blankCGL_texture_create_cubemapCGL_texture_create_3dCGL_texture_create_arrayCGL_texture_cubemap_set_faceCGL_texture_array_set_layer_dataCGL_texture_set_scaling_methodCGL_texture_set_wrapping_methodCGL_texture_destroyCGL_texture_bindCGL_texture_set_dataCGL_texture_set_sub_dataCGL_texture_set_pixel_dataCGL_texture_set_user_dataCGL_texture_get_user_dataCGL_texture_get_internal_handleCGL_texture_get_sizeCGL_framebuffer_createCGL_framebuffer_create_basicCGL_framebuffer_add_color_attachmentCGL_framebuffer_get_color_attachmentCGL_framebuffer_create_from_defaultCGL_framebuffer_destroyCGL_framebuffer_bindCGL_framebuffer_get_sizeCGL_framebuffer_set_user_dataCGL_framebuffer_get_user_dataCGL_framebuffer_read_pixelsCGL_framebuffer_get_mouse_pick_idCGL_framebuffer_get_color_textureCGL_framebuffer_get_depth_textureCGL_ssbo_createCGL_ssbo_destroyCGL_ssbo_bindCGL_ssbo_bind2CGL_ssbo_set_dataCGL_ssbo_set_sub_dataCGL_ssbo_get_dataCGL_ssbo_get_sub_dataCGL_ssbo_set_user_dataCGL_ssbo_get_user_dataCGL_ssbo_get_sizeCGL_ssbo_copyCGL_ubo_createCGL_ubo_destroyCGL_ubo_bindCGL_ubo_set_dataCGL_ubo_set_sub_dataCGL_ubo_get_dataCGL_ubo_get_sub_dataCGL_ubo_set_user_dataCGL_ubo_get_user_dataCGL_ubo_get_sizeCGL_gl_clearCGL_gl_shutdownCGL_gl_render_screen_quadCGL_mesh_gpu_createCGL_mesh_gpu_destroyCGL_mesh_gpu_renderCGL_mesh_gpu_render_instancedCGL_mesh_gpu_uploadCGL_mesh_gpu_set_user_dataCGL_mesh_gpu_get_user_dataCGL_mesh_cpu_destroyCGL_mesh_cpu_createCGL_mesh_cpu_recalculate_normals__CGL_mesh_cpu_load_obj_helper_parse_obj_lineCGL_mesh_cpu_load_objCGL_mesh_cpu_planeCGL_mesh_cpu_add_triangleCGL_mesh_cpu_triangleCGL_mesh_cpu_add_quadCGL_mesh_cpu_quadCGL_gl_initCGL_mesh_cpu_add_from_parametric_functionCGL_mesh_cpu_create_from_parametric_functionCGL_mesh_cpu_add_sphereCGL_mesh_cpu_add_cylinderCGL_mesh_cpu_create_cylinderCGL_mesh_cpu_offset_verticesCGL_mesh_cpu_scale_verticesCGL_mesh_cpu_rotate_verticesCGL_mesh_cpu_transform_verticesCGL_mesh_cpu_sphereCGL_mesh_cpu_add_meshCGL_mesh_cpu_add_cubeCGL_mesh_cpu_cubeCGL_mesh_cpu_generate_c_initialization_code__CGL_shader_compileCGL_shader_compute_createCGL_shader_compute_create_from_filesCGL_shader_createCGL_shader_create_from_filesCGL_shader_destroyCGL_shader_compute_dispatchCGL_shader_bindCGL_shader_get_uniform_locationCGL_shader_set_uniform_boolCGL_shader_set_uniform_mat4CGL_shader_set_uniform_vec4CGL_shader_set_uniform_vec3CGL_shader_set_uniform_vec2CGL_shader_set_uniform_intCGL_shader_set_uniform_floatCGL_shader_set_uniform_doubleCGL_shader_set_uniform_vec2vCGL_shader_set_uniform_vec3vCGL_shader_set_uniform_vec4vCGL_shader_set_uniform_ivec2vCGL_shader_set_uniform_ivec3vCGL_shader_set_uniform_ivec4vCGL_shader_set_user_dataCGL_shader_get_user_dataCGL_bloom_create__CGL_BLOOM_SHADER_SOURCECGL_bloom_destroyCGL_bloom_apply2CGL_bloom_applyCGL_bloom_get_lod_textureCGL_bloom_get_prefiltered_textureCGL_bloom_set_kneeCGL_bloom_get_kneeCGL_bloom_set_thresholdCGL_bloom_get_thresholdCGL_bloom_get_iterationsCGL_bloom_set_offsetCGL_camera_createCGL_camera_destroyCGL_camera_is_perspectiveCGL_camera_is_orthographicCGL_camera_get_fovCGL_camera_get_aspect_ratioCGL_camera_get_z_nearCGL_camera_get_z_farCGL_camera_get_orthographic_limitsCGL_camera_set_fovCGL_camera_set_aspect_ratioCGL_camera_set_z_nearCGL_camera_set_z_farCGL_camera_set_orthographic_limitsCGL_camera_set_perspectiveCGL_camera_set_orthographicCGL_camera_get_projection_matCGL_camera_get_projection_mat_ptrCGL_camera_get_view_matCGL_camera_get_view_mat_ptrCGL_camera_get_pv_matCGL_camera_get_pv_mat_ptrCGL_camera_set_positionCGL_camera_set_rotationCGL_camera_get_positionCGL_camera_get_rotationCGL_camera_get_position_ptrCGL_camera_get_rotation_ptrCGL_camera_get_frontCGL_camera_get_rightCGL_camera_get_upCGL_camera_recalculate_matCGL_phong_pipeline_createCGL_phong_pipeline_destroyCGL_phong_pipeline_set_ambient_light_colorCGL_phong_pipeline_get_ambient_light_colorCGL_phong_pipeline_enable_gamma_correctionCGL_phong_pipeline_disable_gamma_correctionCGL_phong_pipeline_set_ambient_light_strengthCGL_phong_pipeline_get_ambient_light_strengthCGL_phong_pipeline_set_user_dataCGL_phong_pipeline_get_user_dataCGL_phong_pipeline_is_using_blinnCGL_phong_pipeline_enable_blinnCGL_phong_pipeline_disable_blinnCGL_phong_pipeline_add_lightCGL_phong_pipeline_remove_lightCGL_phong_mat_createCGL_phong_mat_destroyCGL_phong_mat_set_diffuse_colorCGL_phong_mat_set_diffuse_textureCGL_phong_mat_set_specular_colorCGL_phong_mat_set_specular_textureCGL_phong_mat_set_normal_textureCGL_phong_mat_set_shininessCGL_phong_mat_set_user_dataCGL_phong_mat_get_user_dataCGL_phong_mat_disable_normal_mapCGL_phong_mat_enable_wireframeCGL_phong_mat_disable_wireframeCGL_phong_mat_get_shininessCGL_phong_light_directionalCGL_phong_light_pointCGL_phong_light_destroyCGL_phong_light_set_intensityCGL_phong_light_set_colorCGL_phong_light_get_intensityCGL_phong_light_get_colorCGL_phong_light_get_typeCGL_phong_render_beginCGL_phong_renderCGL_phong_render_endCGL_tilemap_createCGL_tilemap_destroyCGL_tilemap_set_auto_uploadCGL_tilemap_get_auto_uploadCGL_tilemap_uploadCGL_tilemap_set_tile_colorCGL_tilemap_set_tile_texture_from_arrayCGL_tilemap_set_tile_texture_from_tilesetCGL_tilemap_set_all_tile_colorCGL_tilemap_set_all_tile_texture_from_arrayCGL_tilemap_set_all_tile_texture_from_tilesetCGL_tilemap_clear_all_tileCGL_tilemap_clear_tileCGL_tilemap_resetCGL_tilemap_renderCGL_sky_createCGL_sky_destroyCGL_sky_use_skyboxCGL_sky_use_skysphereCGL_sky_use_cubemapCGL_sky_use_proceduralCGL_sky_cubemap_set_faceCGL_sky_procedural_set_optionsCGL_sky_procedural_set_timeCGL_sky_procedural_set_sun_positionCGL_sky_renderCGL_markov_token_function_ngram_text_context_createCGL_markov_token_function_ngram_text_context_destroyCGL_markov_token_function_ngram_textCGL_markov_createCGL_markov_trainCGL_markov_generateCGL_markov_destroyCGL_text_initCGL_text_shutdownCGL_font_load_from_memoryCGL_font_loadCGL_font_destoryCGL_font_get_atlasCGL_font_build_atlasCGL_font_get_charactersCGL_text_bake_to_textureCGL_widgets_context_createCGL_widgets_context_destoryCGL_widgets_adjust_for_aspect_ratioCGL_widgets_do_not_adjust_for_aspect_ratioCGL_window_get_current_contextCGL_widgets_initCGL_widgets_shutdownCGL_window_set_current_contextCGL_widgets_begin_intCGL_widgets_beginCGL_widgets_flushCGL_widgets_endCGL_widgets_flush_if_requiredCGL_widgets_add_vertexCGL_widgets_add_meshCGL_widgets_add_vertex_ptCGL_widgets_add_vertex_p3ft2fCGL_widgets_add_vertex_pCGL_widgets_add_vertex_p3fCGL_widgets_add_vertex_p3ftCGL_widgets_add_vertex_pt2fCGL_widgets_set_stroke_colorCGL_widgets_set_stroke_colorfCGL_widgets_set_maskCGL_widgets_set_maskfCGL_widgets_set_stroke_thicnkessCGL_widgets_set_fill_colorCGL_widgets_set_fill_colorfCGL_widgets_set_fill_modeCGL_widgets_set_projection_matrixCGL_widgets_set_view_matrixCGL_widgets_set_model_matrixCGL_widgets_set_textureCGL_widgets_set_font_textureCGL_widgets_set_texture_coordinate_soCGL_widgets_enable_diffuse_shadingCGL_widgets_disable_diffuse_shadingCGL_widgets_apply_transformations_on_cpuCGL_widgets_apply_transformations_on_gpu__CGL_widgets_add_triangle_filledCGL_widgets_add_lineCGL_widgets_add_triangleCGL_widgets_add_quadCGL_widgets_add_quad_8fCGL_widgets_add_line2fCGL_widgets_add_rectCGL_widgets_add_rect2f__CGL_widgets_add_oval_filled__CGL_widgets_add_oval_strokedCGL_widgets_add_circle2fCGL_widgets_add_ovalCGL_widgets_add_oval2fCGL_widgets_add_arc2fCGL_widgets_add_rounded_rect2fCGL_widgets_add_oval2frCGL_widgets_add_circlerCGL_widgets_add_circle2frCGL_widgets_add_circleCGL_widgets_add_characterCGL_widgets_add_stringCGL_widgets_add_string_with_fontCGL_widgets_add_shape_out_lineCGL_widgets_add_cubic_bazierCGL_widgets_add_cubic_bazier2vCGL_widgets_add_cubic_bazier2fCGL_widgets_add_cubic_bazier_pointsCGL_widgets_add_cubic_bazier_points2vCGL_widgets_add_cubic_bazier_points2fCGL_widgets_add_plot_functionCGL_widgets_add_plot_arrayCGL_widgets_add_plot_pie_chartCGL_widgets_add_bar_graphCGL_node_editor_createCGL_node_editor_destroyCGL_node_editor_set_on_connectCGL_node_editor_set_on_dropCGL_node_editor_updateCGL_node_editor_render_beginCGL_node_editor_clear_focused_pinsCGL_node_editor_render_endCGL_node_editor_set_offsetCGL_node_editor_get_offsetCGL_node_editor_get_linked_pinsCGL_node_editor_render_linkCGL_node_editor_render_linkfCGL_node_editor_render_link_curvedCGL_node_editor_render_link_curvedfCGL_node_editor_node_initCGL_node_editor_node_updateCGL_node_editor_node_renderCGL_node_editor_node_set_positionCGL_node_editor_node_set_titleCGL_node_editor_node_get_pinCGL_ray_caster_createCGL_ray_caster_destroyCGL_ray_caster_add_wallsCGL_ray_caster_add_wallCGL_ray_caster_clear_wallsCGL_ray_caster_get_intersection_point_for_wallCGL_ray_caster_get_intersection_point_for_walls__CGL_ray_caster_calculate_angle_in_rangeCGL_ray_caster_calculateCGL_ray_caster_is_in_viewCGL_ray_caster_set_angle_limitsCGL_ray_caster_set_max_distanceCGL_ray_caster_get_trianglesCGL_square_marcher_createCGL_square_marcher_destroyCGL_square_marcher_set_user_dataCGL_square_marcher_get_user_dataCGL_square_marcher_enable_interpolation__CGL_square_marcher_generate_mesh_add_triangleCGL_square_marcher_generate_meshCGL_post_processor_initCGL_post_processor_shutdownCGL_post_processor_process_shadesCGL_post_processor_process_outlineCGL_post_processor_process_hatchingCGL_wav_file_loadCGL_wav_file_destroyCGL_wav_file_sampleCGL_wav_file_sample_at_time__CGL_trail_get_next_indexCGL_trail_createCGL_trail_destroyCGL_trail_renderCGL_trail_add_pointCGL_trail_calculate_distancesCGL_trail_set_resolutionCGL_trail_updateCGL_trail_bake_meshCGL_trail_clearCGL_trail_set_point_update_functionCGL_trail_get_mesh_gpuCGL_trail_get_first_pointCGL_trail_set_user_dataCGL_trail_get_user_dataCGL_trail_get_lengthCGL_trail_set_max_lengthCGL_trail_set_min_points_distanceCGL_noise_perlinCGL_noise_opensimplex2sCGL_noise_opensimplexCGL_noise_valueCGL_noise_valuecubicCGL_noise_worleyCGL_noise_params_defaultCGL_noise_getCGL_noise_initCGL_noise_shutdownCGL_simple_neural_network_createCGL_simple_neural_network_serialize_weightsCGL_simple_neural_network_deserialize_weightsCGL_simple_neural_network_set_layer_activation_functionCGL_simple_neural_network_randomize_weightsCGL_simple_neural_network_destroyCGL_simple_neural_network_evaluateCGL_simple_neural_network_trainCGL_simple_neural_network_copy_weightsCGL_simple_neural_network_mutateCGL_linear_regression_context_createCGL_linear_regression_context_destroyCGL_linear_regression_randomize_coefficentsCGL_linear_regression_evaluateCGL_linear_regression_trainCGL_path_finding_node_initCGL_path_finding_a_star_context_create__CGL_path_finding_a_star_get_open_node_countCGL_path_finding_a_star_add_nodeCGL_path_finding_a_star_find_pathCGL_path_finding_a_star_get_path_lengthCGL_path_finding_a_star_get_path_start_nodeCGL_path_finding_a_star_has_pathCGL_path_finding_a_star_reorder_pathCGL_path_finding_a_star_next_in_pathCGL_path_finding_a_star_clear_pathCGL_path_finding_a_star_context_destroyCGL_csv_createCGL_csv_destroyCGL_csv_load_from_bufferCGL_csv_loadCGL_csv_save_to_bufferCGL_csv_saveCGL_csv_add_columnCGL_csv_add_rowCGL_csv_set_itemCGL_csv_get_itemCGL_csv_get_rowCGL_csv_get_columnCGL_csv_get_row_countCGL_csv_get_column_countCGL_csv_clearCGL_image_file_is_png_fCGL_image_file_is_pngCGL_image_file_is_bmp_fCGL_image_file_is_bmpCGL_image_file_is_gif_fCGL_image_file_is_gifCGL_image_file_is_jpeg_fCGL_image_file_is_jpegCGL_image_file_get_format_fCGL_image_file_get_formatCGL_nd_tree_createCGL_quad_tree_createCGL_oct_tree_createCGL_nd_tree_destroy__CGL_nd_tree_add_nodeCGL_nd_tree_resetCGL_quad_tree_resetCGL_oct_tree_reset__CGL_nd_tree_node_add_item__CGL_nd_tree_node_addCGL_nd_tree_addCGL_quad_tree_addCGL_oct_tree_add__CGL_nd_tree_node_get_items_in_rangeCGL_nd_tree_get_items_in_rangeCGL_quad_tree_get_items_in_rangeCGL_oct_tree_get_items_in_rangeCGL_utils_is_point_in_rect_MACROCGL_utils_random_float_MACROCGL_utils_random_float_in_range_MACROCGL_utils_random_int_MACROCGL_utils_random_bool_MACROCGL_utils_random_vec2_MACROCGL_utils_random_vec3_MACROCGL_utils_random_vec4_MACROCGL_utils_random_color_MACROCGL_mat4_zero_MACROCGL_mat4_identity_MACROCGL_mat4_scale_MACROCGL_mat4_translate_MACROCGL_mat4_rotate_x_MACROCGL_mat4_rotate_y_MACROCGL_mat4_rotate_z_MACROCGL_mat4_perspective_MACROCGL_mat4_orthographic_MACROCGL_mat4_log_MACROmain.c.o/ 0 0 0 644 427872 ` ELF>@@(\YAWAVAAUATUSHˉHHdH%(HD$8D$ (HJHHHL H)MHI)ILV!HNH)H!LL)H3A)AFDD$a( 1HDXY)$\A)HH9uEIcAH $DE9t}DD)уtENB~McA~ L<$X~ YBA~ \CAADD9t-HH XY\AIcH$H$|$Dt$LD$LLlD$ NdADXAf.fInfInDfl))D$ A$E~EE1H4uAIcHD LD9uIIsD$ Dt$LD$H$DEHڃAE11L<DL$E1xD$HHHH)HHD$JLbI HL)HA|$1fAXHH9uE9tOD$DADt$I, A~ D~XAD9t HHcAXAALDL$D9\$ =HD$8dH+%(HH[]A\A]A^A_DHL$LH)HfDXAHH9uE11EIc 1H $XY\AHH9uAFD$nE11ff.fH B\@\PQYYXAPXAPXQPQ APPXAP QPXQXAPRAPXIX@AA@BA@ff.~0Hc1/wHH9t /v1f/r# /rA/FrJ/1ff.f/r; /r2A/Fr'J/rA/FrJ/fD1D~0Hc1/wHH9tA/v1DfA/r"/rA@/Fr B/A1ff.fA/rB/r9A@/Fr-B/Ar"A@/FrB/Af1ff.fHHHHH4fADHDDAQD 11Љ H9uǃtYt<1‰Љ1‰Љ1‰1D‰ 1Љ@FV11Љ fFЉ 1Љ[H9AWHAVAHAUAHKY8m4HATAUHSDH Hi'HHH)L|IGHt DDLIGPHt%HADD[DH]A\A]A^A_fDH[]A\A]A^A_ÐAVHAHAUAHKY8m4HHATAUHSH Hi'H)H\HC Ht DDHHCXHt[DDDH]A\A]A^[]A\A]A^HUHHHKY8m4SHHHH Hi'H)H\HC(HtL$H$L$$HC`HtHH[]fDH[]ÐHUHHHKY8m4SHHHH Hi'H)H\HC0HtL$H$L$$HChHtHH[]fDH[]ÐAUHAHHKY8m4ATAHUHSH Hi'HHH)H\HC8HtDHHCpHtHDDH[]A\A]DH[]A\A]ff.fHUHHHKY8m4SHHHH Hi'H)H\HC@HtHHCxHtHH[]@H[]fAUHIHHKY8m4ATAHUHSH Hi'HHH)H\HCHHt HLHHtHLDH[]A\A]H[]A\A]DHGHHDBEG X@8PD(Y/rm%(^JXY/rPG$X@<(JY/r5XY/r(PLtHHHtAH9tHxDE1DÐHxAH@ff.@GN/w1/ff.@AWHAVAUATIUIHSHHH<$Ht$H)IN4 M9svMfDILLӅy M9rM9vMLLӅ~iM9wHLH=HLLHH5LLH+$H9wqHD$L)H9vUI.H$[M9vHLH=HLLHH5L6H[]A\A]A^A_H<$HHLxHW HX^(@AVIAUATUHSG(H~7IE1f{!tH}LHAՄE(AH(D9H]M,AF9HcANAoH}4HAoNHIV HP tOHcU0HcH} @!H8I6M,EfM,[D]A\A]A^f[D]EfA\A]A^@!AfATAUHSoNHoFwfGAHC HS(E俒AH4AHDuHsHSD[]HA\%fDUHH0`%VHHT((HH(_](((_]((H9u \X\X\\fXX(((\\YYX.Q((\\YYX.Q_(XXY XXXXYY(X(\X\]UYAA`AAaH0]fD%(((LL$ LD$HL$T$ l$d$4$LL$ LD$fHL$T$ (l$d$4$LL$(LD$ HL$T$l$ d$t$ $LL$(LD$ HL$T$l$ d$t$ $AWAVIAUIATUHSHH(LD$Dd$`DL$E1;@IcHL$AD$LIHD$H<9Dd$AE;}yDLIqHcHHI4HC8HsHH5HHtuH LHStLH5PA(ti~VE1JMHHD$I Ji0HC(HHSu-ID9H(D[]A\A]A^A_DL$E9~HL$HHHI Hi40ATLLD$ Hs(MAXZfDAUATIUHSHH_(Hu HHXHH9HGHAT$1҉It$ ID$HHtAM,$!HHLt%I$HL$PIMI$uE1HL[]A\A]ff.ATUH(SHIHt'HXHHHh@?HID$ L[]A\ÐUHH H]fDGfDGfDHGHHGATUHSHHH H;St%LCHIHLHHPH[]A\Hx;fH*YC/sDL,HsILcHHC HfHЃfHH H*XD\L,I?ff.SHHHt&HHHHtHSHHC HH[UHSHH97v6HHHtHUHHu HEHHE H[]H1[]ff.@ATIUHSHM1HHHcH9v2MtHUHLHHu HEH[HE ]A\D[1]A\ÐUSHHH97v6HHHtHWHHH} HEHHE H[]@H1[]ff.@H?@AVAUATUSL7MtDHoH_ IE1@IHM9t$HLHu[L]A\A]A^fDI[]LA\A]A^DH9wvDUHSHHHwH HHkHC H[]@UHSHHH;wrHwH HHkHC HH9HBHH[]ff.fH@H H@H@HfDATHISHHt HHu-LcLH{1HSCHH[A\1HT$HL$ff.fUHt HHu H]1H]HSHH1Hu[1C[HHu DH1HfDAT(1IHLA\ff.fUHH]f.AUfHnfHnIATflUHSH@H)$IHthfo$Lh(H@0@8?@HID$HDH|EHI$HHt2H<ID$HtHL[]A\A]HLE1f.UHSHHWH?HtO1 HH9s?HHCHH(tHvH HHUH}H9rH}HH[]ff.AWAVIAUATIUHSHH(L(Mu HLxLI9LGLSLHLk D$H,HHH HLPILƁ(As0AEtOA$AtBECDfDL1H-u>HD$(dH+%(H[]A\A]A^f1H-tD1L1H-DLL1H-sfL1H-[f.L1H-;DATIUSHHT$@HL$HLD$PLL$Xt:)D$`)L$p)$)$)$)$)$)$dH%(HD$(1LLD$@L%H$D$HD$LHD$0HD$0H-HD$ 1H|$HD$HH HI1HHIHDH 1@ATLHHZIYD=UHHD1HHu8HD$(dH+%(u1H[]A\@1H1fSHƀHǀHH1HHHH9uH51[>ff.HH511H=Hff.ATIH=1HfH t99uHLH HL1H5A\D1A\AUIATUS1HL%LH tALHuHcLH H5A"H[]A\A]fH1[]A\A]AVIAUAATAUHH@u O   A   IHE11LDI$HI $fHKY8m4H5AD$HAD$HAD$(ID$AD$8H AD$HHi'AD$XAD$hAD$xH)LdFHL]A\A]A^f.H5E1f.H5E1lH51WDAWAVAUEATUSH8HT$D$ HL%I1H LH1j D$L5A YH LD,LLHD$(AAYAZIEfD)*K<YD$ H|$ Dljƒ|$(D1|$,AxED,ȉ|$ D9~QA9DA OHcA4 9uA9MtLAs~|$(ED$ 9fDD|$AHD$McC<HtHLH8LH51[]A\A]A^A_f.I6H1H|$ HwHyHJtH)LH)DHD$ dfL%?DA6@1t$,,H|$ wfBtA61H|$ wBtf.H(dH%(HD$1Hft4Hi$ffH*L$^ H*XZ^HD$dH+%(uH(@_f/vf.fff.Y \(f/vf.fff.f/vfY/vf./vf YYff.@/vf.YH8H51ffH8ATLfUH-SHHvhXDHH9uf*Y BYL1 @HH9vD/v[]A\L[]A\HHtf*Y BYL@SH1HdH%(HD$1HH$HHHHDHD$dH+%(uH[fDfDHHt%HD7H4HHOPH9uff.ff.HHt%HD7H4HHOPH9uff.=DiCÞ&%ff.HH HHH1HHH1HH HH1H1HH1HÐ=DiҧAiA%ЍH‰ÐHHHLHfSHHw0HD|$E@4$A,41}O)9HNA҃9HcD$ HcfnDLfpfoH)؃HLH@HMH HfLHHDfo)H fofofoafH0H0fjffjf fbbDxDxDxDxH9uD $Dfpfpf~f~AD9tp4GIHcMcHIAIF|JB9DFHI HC J ACAIHD|B9|FHI HCJ AIBF| A9HcDPLIfD$XfH~fD$XT$\D$L$`-AYt$ =AYAYXXtR\T/v1Ic5AHRITHD$`BJf./53DYDYAYD\$dDT$h~D$dHx[(]A\A]A^A_ÉT$,HL$ DD$(DT$Dd$DL$T$D\$ Dl$\$4$T$,f=HL$ DD$(-DT$Dd$DL$T$D\$ Dl$\$4$AWfAVIAUIATUHպSHh~N_dH%(HD$X1)D$0\^)D$@~GD$P\(((f.E„t.E„(LLl$~d$\$ WT$d$l$fD$0Yl$4\$ Yd$0L$8YXfX/~T$WE1(((fHD$HHD$HcHIH<IEHtM}LLH LfE1HL[]A\A]A^A_ff.HIHLcW1D;V W ;VE~x~tAUDZE1ATIUSH/Hc1L.HJ4LefDK JDITLHHH9uHIL9u[L]A\A]L1AWAVAUATUSHH~GIfpfpf~fA~fL$EIHLcIcLHHI$HtsHt$N H<E1It$I6H1fHH9AHLE9|HL[]A\A]A^A_f.E1LE1ff.H<AI19z*9r  AUA-ATfo%1U(HcDfSXLHHA11fHAfnI8fo fpL,DfoHffvT@I9uDD9tR(9t(D,McCDhD9~2(D9t(AMcC9~(9t(HAHA9Q[L]A\A]1L1@fnfnAVfbAUATUSvfI~IHYLcHcIIIEHHEAHMuDOfo%11(fDEADHIIfnfo M1HfpffoHffvT@I9uDE9tH(9teDMcBDXD9~+(A9tWA˃McB9~(9tMHL9a[L]A\A]A^fDfDfD1]fE1[]LA\A]A^LE1@IHWW |BHvu(HHHt1HYHH9uփ9t5)t H4(~Yփ9tHHYL11ff.AUATUSHD$H+~OIf~fpfL$f~݅IHHcHcHH~L$D$HI$H IMfAL$HyH)HFA(1H Y HH9u9t6)At ~ (DY A9t HYHL[]A\A]DHE1[L]A\A]Hc1 Y HH9uHL[]A\A]11sLE1ff.fHt/x+9w~&x"G f9~HHfHH@u99qA@ADtDy 9~HHc1ff.fH҉ Ht1f9w~DG EALHJHcI9~ D9D>HD$DhESHHc@ E1E11fIHHD$IHH\$EHD$AAAD$DHT$XHBHD$DHHD$HD$.zE|$0(I Lf.H^@H9uDE9tRA HcH ^HA9~3DكHcH ^A9~DHH^J11HD$D$HD$f9D HELcJHH+|$HA|$.(H1fDA :8Y\8HH9uE9tdD$DADt2IL(~ NDA~Y\AA9t <DHHcYH<\DD9 Ht$EHt$Ld$LT$D9HD$[]A\A]A^A_[1]A\A]A^A_@H|$L|$HLMHHYHL]A\fH. fDE1HL]A\f1DHJYB YJ\11aAUATUSHH~GHfpf~f~fD$9IHHcHH~D$HI$IfAD$jH.z2E;E &AT$A9T$ 9LHD$IHP P D$^ȅH0B(HHHLfDHY@H9uу9)ʃt H (~Yу9tZHHYHL[]A\A]HEHY@ YH\.f.E1HL[]A\A]HE11WLff.HAWAVAUATUHSH~G~ ff~fpfD$fA~ׅ~rE~mAAIHtUHcMcHIH<~D$HIt%fAFHLD[DH]A\A]A^A_LH1[]A\A]A^A_fD1ff.fHt'Ht"G;G uV9V u9uif1ff.fHAUATUHSH~Gf~fpfD$fA~ͅ~bE~]IHtKIcHcHH~D$HI$t!fAD$A9uHLH[]A\A]LH1[]A\A]f.1ff.fATIHtt~mAt$ ~dE1E1@A 2t@f.D9~(M $BHcMHcIA A9uAAA9uLA\fH9wDG EAA@H?DHcHJHHfDHHX(UX(XXH9uDAt<HcXPA9~!HcXA9~HcX@1HcƅHHcW f9DGEH?APHcH DrHQHH DH HX(UX(XXH9uDƒAt< HcXJA9~%HcXA9~HXDfH H1fDXHD9u1ff.fHtSxO9w~BW ~3HHcHHHTYHH9ufff.@xhHtcHcG f9~ODGE~>HuNHcAPHHHTYHH9uf.fHcH1H YHD9uATIHtWW ~HcH?1HLA\X\YfH~fH~H H ^fnfn^fDX@\@Y@fH~(foHYH fnfnYXf.wQ^H^(((\$ D$\$ L$(ff.fH~fH~H H YfnfnYXDfH~YH fnYXf.wQfH~fH~fH~H H fnfnfnYY\ff.(((Y(YXXY\ff.ffH~fH~fo%H H (YfnfnYX(D(DYA\D(DYAYfE\D/w9YD.fnY(w(YQXYY\\(ÐWH($(ĉD$T$T$|$L$d$ L$$|$l$XT$d$ L$YY,$\(\$L$,$t$\$H(X(Y\ÐHf$H|$ (Ht$\$ T$~$$H((Y(Y(X\Ð\YXff.XX@XXXXff.f\\@YY@fT$^fD$D$T$^D$^T$fo(XXf(\\ff.fYfo(YfHHfD$ \$ d$$((YYX(YXf.wQ^HH^(^((L$ \$d$L$ \$d$(뵐fT$YfD$D$T$YD$YT$XXff.fD$D$YT$YYXXf.wQfD$t$(fT$l$L$~T$\$~d$YYY\(Y\f.(((Y(YX(YXX(YY\\H(D(fD$`D$`(DL$d((=YAYXA(YX((Y\(YY\f/wWY.YD((EwPDYQAY(AXAY\XfoHĈY\W(HĈfoD$(\$(l$T$8DT$0L$,DD$$DL$ |$|$D$(|$d$D~T$0L$,DL$ ~T$8DD$$AXDYt$|$AY(YAL$\t$\$(l$~t$L$(@((\\YYXXff.fL$fD$(d$fT$f\$Xd$)d$HD$~D$fHn@fL$fD$(d$fT$f\$\d$)d$HD$~D$fHn@fL$fD$(d$fT$f\$Yd$)d$HD$~D$fHn@fL$fD$(d$fT$f\$^d$)d$HD$~D$fHn@fL$fD$XT$)T$HD$~D$fHnÐfL$fD$(\$\)\$HD$~D$fHnff.fL$fD$YT$)T$HD$~D$fHnÐHf$fL$($(((YU(YYYXXXf.w#Q^)$HD$~$HfHn)$($ff.fH~fH~fH~H H fH~YfnfnH YfnXfnH YXfnYXfH~fofH~H H YfnfnYYYXXXf.wQff.@fD$fL$fT$f\$(D$\D$YXD$)D$HD$~D$fHnH=t@H8HHty@HHǀHfH1HHHH9u1H5HH1H=Ht@HH51HG1H=Hfff.@HdH%(H$1HHHDD$0H$dH+%(uHĨff.iAUIATUHSHdH%(H$1HH\$0HtH]H{IHH5LHHthHT$0HLH9D$0u,HH$dH+%(u6HĨL[]A\A]LH51jFE1fDAUIATIH5UHt)HHLLH]A\A]1AUIATIH5UHt)HHLLH]A\A]1Nf1NDUHH?HHjt ]f]f.H?@HH?HfDH?@H?@H?@USHHH?@t@kH[]f@kH[]HwHGH?@H?@H?@UHSHHHtHkH[]fDH?H5HkHCPH[]f.UHSHHH tHk H[]fDH?H5Hk HCXH[]f.UHSHHH(tHk(H[]fDH?H5Hk(HC`H[]f.UHSHHH0tHk0H[]fDH?H5Hk0HChH[]f.UHSHHH8tHk8H[]fDH?H5Hk8HCpH[]f.UHSHHH@tHk@H[]fDH?H5Hk@HCxH[]f.UHSHHHHtHkHH[]fDH?H5HkHHH[]USHHHtH-H?H1H9HDHCPH{ tH-H;H1H9HDHCXH{(tH-H;H1H9HDHC`H{0tH-H;H1H9HDHChH{8tH-H;H1H9HDHCpH{@tH-H;H1H9HDHCxH{Ht"H-H;H1H9HDHH[]ff.@H?@HH?HDH?@H?@H?@HAWAVAUATUSHHGOG Y AAA(~CfAnοIHDhfp@ f@fnfb@ H@ f@A|$A4$ HA|$3AUE1D1K DCUA|$&(H A|$&(A|$)(A|$()A|$1HL[]A\A]A^A_fGuXAQAAQ@A[AA[@H51E1댃tK u&AAAif.H51E1ADATAAT#@AXAAX@AWEAVA(AUAATUSHfnfAnfAnfbIDxHf@fnſfb@ @ H@ f@A|$A4$HADjE1A|$DAW1UA|$&(H A|$&(A|$)(A|$)(A|$)rA|$1HL[]A\A]A^A_ff.AT(IHH@@ @H@ A|$A4$  A|$&(A|$&(A|$/(A|$/(A|$/rA|$1LA\fDAWEAVAAUA(ATUSHDD$ fnfAnfnT$ fbIDp Hf@fnÿfbDxf@@oH@ A|$A4$AD$jEADAT$A|$PAD$1PjA|$&(H A|$&(A|$)(A|$)(A|$)rA|$1HL[]A\A]A^A_ff.@AWEAVAAUA(ATUSHDD$ fnfAnfnT$ fbIDp Hf@fnÿfbDxf@@H@ A|$A4$AD$jEADAT$A|$PAD$1PjA|$&(H A|$&(A|$)(A|$)(A|$)rA|$1HL[]A\A]A^A_ff.@AWAVAUATAUHSHHBAAH=CA um}u  H3DAWD1E1ɋK DCAV}1H([]A\A]A^A_%fDH=H[]A\A]A^A_fDCAAGAPDA@ff.fATIUSH3  CH{ATDKA1PC11PCjP{1H0[]A\%ATASHH3{D({HD[(A\%ff.ATASHH3{D({D({HD[rA\%f.UHHH]ATASHH{3HD[A\ff.fUHSHH3  CH{UK1E1ɋSDCPCP{1H([]%ff.@AWMAVMAUIATIUHSHH3  CH{AWEEDPC1P{1H([]A\A]A^A_%@AUAATAUHSHH3  CH{UDD1PCAAP{1H([]A\A]%ff.Hw HG fHtGHtGAWfnfnAVfbAUfI~AATUhSH(dH%(HD$1H5IHpP@\At$P@ADID$8HAD1ID$@HzA5DﺔAIH HHuID$8E1 @ID$@E1 @I$E1 @ID$E1 @ID$E1 @foH)$@=Ռ1@M|$TAD$`ID$HHD$dH+%(rH(L[]A\A]A^A_DIl$8HHIl$@HHt.AFLMlH+HHHI9uLE1]Il$8LMl$HHIl$@HHH+HHHL9uL1H51gH51E1o1f.Il$8HHLE1zAUfnfnAATfbUhSfH~HdH%(HD$1HIHpP@\At$P@ADID$8H{ID$ADID$@H3ID$8E1 @ID$@E1 @Ht$D$@=ՌuC1@I\$TAD$`ID$HHD$dH+%(HL[]A\A]Il$8HHIl$@HHL1H5o/u E1{DH51E1@/YIl$8HHLE1+AUATUSH8dH%(HD$(1`@HcG\HxPHW\HtwP@E\E1 @ߌ1@fo}\H)$fo)D$@=ՌLe8HLmLLLe@LLL#HLLI9uH1H5-uTHD$(dH+%(H8[]A\A]DHD$(dH+%(uqH5H81[]A\A]k-H51S-땐HD$(dH+%(u)H5HD$(dH+%(u H5f9w\~HcHDfDH1H5,1HSHhHt@P@\@`HXH[ÐAUATUHSH`u}W\HLg8HLmLLL#HLLI9uHLe@LLHuPHH[]A\A]f.~LdHLL9]\~HSHH@dH%(HD$81`ufwP@1KXST1{\~%foHt$)D$fo)D$ HD$8dH+%(uSH@[fDHGHHT$ Ht$D$D$ H811L$ T$1@ff.UHSHHdH%(HD$1`u2HtGTHtGXHD$dH+%(uIH[]HGHHT$H$D$H8Ht$EHtD$`uHwHÐ1`uHGHff.@G\AWAVAUATUSHH`uZAAEM͉wP@HC8HDDDDHD@AU1@H[]A\A]A^A_%H[]A\A]A^A_Ðff.@AUATUSHdH%(HD$G\̓`HujD$AAwP@HsXDHD$ APD)A1@D$ZYHT$dH+%(uH[]A\A]1`uHG8Ð1ff.f`uHG@Ð1ff.fATS HIHtRHƿA4$ҐA$޿Ґ1ҐA\$ID$ID$HL[A\@UHHH]7Ґ%ff.@SHҐ3Ґ[%ff.fAUAATIUHSHH7ҐALHɿҐ1ҐHkH[]A\A]ff.fHH;GwBAUIATIUH7ҐHLLҐ]1A\ҐA]%H51&ff.fATISHHHtHGH3ҐHSL1ҐH1Ґ[A\%ff.HH;GwBAUIATIUH7ҐHLLҐ]1A\ҐA]%H51%ff.fHwHGHGJH;GwbAVIIAUIATUSLH;Fw_HI̋7ҐuA}ILL[1]ҐA\A]A^%fH51 %D[H5]A\1A]A^$ff.fATIHtHpI$LA\ff.UHHwH]ATIUHHS}t/}ƉAT$޿A\$ []A\fD[H5]1A\$fAUAATIUHSHHwALHɿ1H+H[]A\A]ff.fAVL4AUATUSL;7w[HHII͋wLLH1HL9IBH[]A\A]A^f.[H5]A\1A]A^#DATISHHHtHHsHL1H1[A\%ff.@HH;wCAUIATIUHwHLL]1A\A]%H51M"ff.fHwHGHHAH%UH-HuHuHH]ff.@SHH{t-;s1ɺ1[%[ff.AT(IHEHƿA<$It$At$It$At$fE11AD$AP11AAP1ɺA AP1ɺA0AP1ɺA@PID$ LA\fUHHwHuHH]Ht-SH?s1ɺ1[%Ht=USHH?sA1ɺH1[]%@H>ATAUHSoNHoFwfGAHC HS(E俒AH4AHDuHsHSD[]HA\%ff.@Hw HG UHH(HtH}HtH]ATUH0SHIHHhH|HHH@ H@ID$(HHH<ID$HHHSHHfo Hfo%HfoHHfoHffofˆBH9uHHt%HJH4H9vHL0H9vT0L[]A\1HLE1DATIUSHHwHH_(HfHHCHTHPH9uI<$fHSIL$1fL DILDIHIA)AQHIAIHAA@HA`D\x\\D\h\AQD(\(YAYDYAYYYAyA\X\Aa\AYXXXAYAXA`APAxXXXXAXPXHXhX@XHH9HtvH,H%HHݐ~SY((YX(YX.wOQ(HP^(YYKCH9uHL[]A\fDH?HtI\$(t$ HP$T$%~$(T$t$ (^(YYCKH9"{ff.fAWAAVIAUATUHSHLlL9sUE~PH]E1HL9s6E9}1{ uCH1HHIcAZAL9rH[]A\A]A^A_fAWAVAUATI(USH(dH%(H$1HD$ Ht+foH@>H@?HC (HD$HHt(foH@>@?HC (HD$HHt(foH@>@?HC (HHt(foH@P8@?HE (HD$HHt(foH@@?HC LHt$xE1HD$xH|$xHD$(HHH(D$tD$4)$HxLd$Ll$ Hl$80f.f'x H1H2vuP EntuL@1L$H LL$LLI1AHH9wRf.IH9v?A9A~ uAF1IcLAZIH9wfDHD$L0HPHx L;pLH$IHHHD$L0fDox 1H|$4Hl$8HD$H]L(HLJIM8HD$Hp I|$HHH Hu I|$(H|$(H} HH\$H{ HH\$ H{ HH\$H{ HH\$H{ HID$ID$ I$ID$H$dH+%( H(L[]A\A]A^A_@D$4L@1L$H LL$LLI1HAH9wKIH9v?A9A~ uAF1IcLAZIH9wfDMuIUI} M;uLH$HHIFIEfDL@1L$H LL$LLI1HAH9wKIH9s?A9A~ uAF1IcLAZIH9rfDM4$IT$I|$ M;t$HH$IIHM4$L@L$1H LfH$LHD$@)$)$)$MM9E11Ld$HLLl$PL$EMA tIL9sQLEwA/uAG 1IcIHcH@HDA NALDLd$HLl$PIEL|$@fL$Hl$8)$HD$HH$HD$PH$HD$XLM)$I)$)$)$ApH;t$HIUPLHIu AFpHD$H;0HPH|$X0HHp AFpI;4$qIT$H$@HIt$ HMHUH} H;MHHL$@HHLI HL$@HHML;t$P,HD$L0HPL@ L;pLL|$tLD$HHLHT$@I<HL$Pt$tHL$IFHT$@LD$HHt$tHqHL$PH9/HLLD$HI<HL$PHT$@HL$IFHT$@LD$Ht$tHqHHL$PH9pHLAII<AHD$D|$tL0LE1Xff)$f)$Uf)$ 11fH&fH*YE/ML,LHL$hHLL$@HT$`HL$hHT$`LL$@HE HHL$@HLMH<0MfI*AYE/L,LHT$@HM}HT$@IE HMfI*AYD$/ L,HHT$@IM|$HT$@ID$ H&DMfI*HD$Y@/L,LHT$@HHT$@HHD$Hx Lx\HL,I1\HL,I1LLfHH H*XLLfHH H*X9\HL,I1\HL,I1HHfHH H*XLLfHH H*XMfI*HD$Y@/L,LLHT$@HHT$@IHD$L@ LxH4fH*HD$Y@/L,LLHL$PHLT$HHT$@LT$HHL$PIHD$HT$@L@ LP HfH*HD$Y@/L,LLHL$PHLT$HHT$@LT$HHL$PIHD$HT$@L@ LPa\HL,I1\HL,I1\HL,I1aHfHH H*XHfHH H*X LLfHH H*X@AW((D(AVY(AUEATUSHxfD$`Yd$(L$hD(fT$P\$XX(YXf.QDYEYE(D^((YAXX.E(EDYDYA(Dl$E(D\$((QA(kDd$H^Hc4@HcYD(|$(EDY(\$YA(DL$@AY((YAYD(D\(AYD(DYD\$8D\D\Dt$0DD$,IŅfHcM}(A*D\$8E11DH=E1HDt$0DD$,HD$ D~d$HA\D~L$@fD9EQLA*~\$@1^(\XD(EYl$(DYDfA @(*@,fn@DP `$^DXDpD@(P \XD(EEYYD$EXXYD$EY@D89tT@tOE$foIMLcfAnE$fAnfDofbfDbfb~fAlfBfBLJHP9AFAL|$ AA9tAIEIE IEIEHxL[]A\A]A^A_T$8l$0\$,L$ T$Dd$d$(~t$8f~l$0\$,L$ T$DL$(D~d$t$8\$0Dd$Dl$,d$ ~t$8D\$0DD$,l$ D~d$((D(HD((((D(D(HC(A\D(HH \E\H(D\A\E\D(H4HD(HEYH7DYJ EYHBAYHB$AYDAYJ J,E\A\\DJrBHT7PHBHB$ZJ DJrBJ,H7HBHB$"jJ DJrBJ,HH HHHPH5DH4HHPÐAT0UH8fD$ L$(fT$\$f$$l$HHtIfo@HE(IHt^ HEHtCH@H~$$l$H~T$\$~D$ L$(H8]A\LH1뺐D(D(D(Ift$(EE(D((((HD(A\D(Hw D\E\HO(H?D\A\E\D(HHE(HEYHDYHAYDEYHxEYH@$?AYE\E\\DH@ @,D@pHDPX@ @,HxH@$DHD@pH h@ @,H@H@$DHD@pHHD@ ~ @,HxH@$?DHD@pH@@ @,H@H@$ hDHD@pHHT$xHIP@ @,H@H@$?DHD@pI@Ip fnfpffpffDHI@LAT0UHHfD$0L$8fT$ \$(fd$l$f4$|$HHtNfo@HE(IHtoHEHtTHfoHP~4$|$H~d$l$~T$ \$(~D$0L$8HH]A\LH1@ATUHHAHfD$8(((D$(HD$0HD$HD$ HD$HD$HH$H?fHnHfHnH?fHnHfHnH1H}HHt HcH}(HtH}HtHHHD]A\@H5f.AWAVIAUATUSHt$LT$ D$XL$DT$P\$TH((f*\(^f*D$\D$T\^D$H)!HD$`H1H H@HD$hHHL$pHD$xffLd$`Ll$h*Yl$\E1LXl$XEMMIfD(\$PA*YT$HXT$DD9l$Ltf*Y\$\X\$XD(d$TADD;t$ tfA*Yd$HXd$D(D(DL$8(DDD$0(|$(DT$ \$@T$d$l$d$l$fք$l$(d$$(T$\$@fք$$((\$d$\$fք$$((ID$ IT$(5L$J<8D~D$0$HH1E11H4H,H9HB/sgH,HI9LBHI9tcHHHL,P0@(\H$HcH/ r\H,H1H9HB/r\H,H1fDEMtI2MtM8ADIHWMNHJ3E1H\$f.H,LH)H/H,H)H4HAD4 /H,LI@LLLH$HH$HA,T0HHcIH9D$HHHHLB,:HD,(\J$/ LcMc=\ HH,H1#fD\HH,H1=f\HH,H1HL[]A\A]A^A_fD1E111E1LATUHSHIHHH|HHH<I$x((( rA$I$A$0A$pA$A$(A$A$0fA$@(A$ A$@A$PA$`A$A$A$A$A$A$I$IDŽ$IDŽ$AƄ$ADŽ$?IDŽ$ADŽ$A$P(HADŽ$A$`I$pA$I$Nº@9OA$A$I$A$I$A$E1AP1ɺ11AAP1ɺA AP1ɺA0AP1ɺA@P1H5H=I$L[]A\fDATHUHHHHLA<$LHHtHxHtHH]A\fHƀDHƀff.fH@HHHHH=HtHtH=ff.@H1ɺ( 0(fH0p(@((H8 @P`ǀL= (HƀHX(HfhfD f((DHE1HHAUATUSHHHHxHH4HHHHHHHH8HH5H8HufHH58H1ҾHH5H8H1ҾHHH58HtpH5lHT$8L$$T$L$$HH5hd`HT$8L$$T$L$$H,(H5$ H\$ T$8L$$\$ T$L$$H1L-L%fD@ALL1HHcH,H}uHLH8ރH;|H1ɺ11HHǀHǀƀH[]A\A]D@HL8ރH9O1DHHH H9r!HHHUUUUUUUUH9v1D1aSHHpdH%(HD$hHHHHHwH9r!HHUUUUUUUUHH9048t/q(^3~ {YCYӀYX@~@YXDX XH(C),$ofEDD)T$@oD(DDUEY)T$P(oAY)\$ o)\$0AXAXD(DEYYAXD(DUEYX(AYfA~AXAXD(DEYYAXD(DUEYX(AYAXAXD(DEYYAXX(AYD(D(DUDAXD(DUEYAXD(D̪EYD(YAXD(f~X(U((D((D(\$UfA~(D(DUDD(A(fAnAfI~(fInD$YA(fI~fAnAfInfAnYA(AXA(AfnY4$X({XcYY3sDYDYDYDYXYd$fnDYAXfEAYEXAYAYAYEXXfAnYAYDXkDkDXA(YXAYDXXDXXDKso+HrHHHHxHLA*ok jo{ z ok0j0o{@z@L4HtHoP1r0tLcJ<tEJ@zDHBHHr(J BHD$hdH+%(u:Hp[(Y1HHH)@HxH fHf$f\$L$HdH%(HD$h1H$)D$ )D$0HD$H)D$@HD$HBH)D$P$HUUUUUUUUH9HxHHH`HD~H~B`j\\B\((\YY(YY\\bB`@@D$,d$ D$(H|$HD$hdH+%(uHxAVfAUfA~ATUiSfH~H@T$Ll$Ld$LLD$L$~d$fHnffD$8YXD$0fAnLLX(\$L$D$fHn~d$fD$8fYXD$0fHnffH\$0D$8\$X(fA~ރH@[]A\A]A^ÐHxfH~H Hf$H f$L$dH%(HT$h1H$)D$0)D$ HT$HD$4)D$@HB)D$P~D$HHUUUUUUUUD$?((t$H9HxH(HH`HD~H~B`j\\B\((\YY(YY\\bB`@@D$,d$ D$(H|$HD$hdH+%(uHxHAWAVE1AUATE1UHSHHHEINc| Ncl Jc I HDA(DL$(YD\$$AY\$L$AXT$DT$DD$D\$$T$A(A(DT$A(D\$DD$DL$(AYA(DT$D\$A(A(H[ DD$0T$AYDT$AYD$AX\$$DT$DL$D\$\$$A(A(DT$(A(DL$D\$AYDD$0DT$(AYD\$$A(A(DD$DT$AXT$DD$DT$D\$$T$A(A(A(D@@YAYAX%(T$0YD\$(Y\$L$AX(d$$DD$DT$D\$(AYDL$0DD$A(A(DT$A(D\$DD$d$$AY(@D((D(D%D-AXDXDL$(DYD\$$DŽ$DYDt$DŽ$DYDŽ$AYDŽ$DXDXDXDAXDfD$fAo((Dd$AEfAoD$Afo$(DT$0$Dl$DL$(fD\$$HAYDt$D~l$D~d$D~T$0AX(A-"$fAo(fAoD$(fAo(~$$N -\$$T$YDT$YD$AX(l$8DL$%DD$$DT$AYD\$DL$(A(A(DD$A(DT$$(d$0DD$DT$$DL$(l$8A(D\$DD$Y (A(DL$A(DT$(AXDD$DL$D\$A(DT$(d$0DD$$Y DL$AY(D\$DT$(AXAXDD$$DL$% D\$AYDT$HAYA(A(AYAXDYAX(AXAXEXAEV $ffofAo$(((~$ DD$8T$AYDT$AYD$AX\$$DT$DL$D\$\$$A(A(DT$$A(DL$D\$AYDD$8DT$$DL$0AYD\$(A(DD$AXT$A(DT$DD$DT$D\$(T$A(A(DD$$A(T$DT$D\$DL$0DD$$AYD\$DT$AYT$A(AX(\$8Y DL$AYDT$$D$(AXT$0DL$D\$DD$8DT$$A(T$0DL$YA(A(D\$(DD$DT$AXDD$ DT$AYD\$(DL$AYDT$A(A(D\$AX\$$\$$DL$qA(\$YL$AYDL$(D\$$AXT$DD$DT$T$A(A(D\$$DT$A(D\$DD$ AYAYDT$DL$(D\$AXA(A(fD -\$(T$YDT$YD$AX(l$$DL$%DD$(DT$AYD\$A(A(DD$ $pfD$t(((D$|~$p$~$|& %\$T$YDT$0YD$AX(d$8DL$D\$AYDT$0DD$DL$(AYD\$$A(A(DT$AXT$DD$DT$T$A(A(D\$$DT$A(D\$DD$ d$8AY(+DA(DD$(Y T$AYDT$D$AX\$$DL$DT$D\$\$$A(A(A(DD$(%DT$D\$A(DL$E(HYA(E(AYEXEX€A(AXAXADYAYEXAXA(A $fD$(((D$~$D$~$DŽ$DŽ$聻@ -\$0T$YDT$YD$AX(l$(DL$%DD$0DT$AYD\$DL$$A(A(DD$A((d$8DD$DT$DL$$D\$A(l$(DD$0Y A(A(DL$(DT$$AXDL$DD$0AYD\$DL$AYD\$AXDT$$d$8A((DT$l$(DL$DT$D\$(A(A(A($D DD$(T$AYDT$AYD$AX\$$DD$(DL$DT$D\$A(\$$DD$0A(Y A(AXD D$DD$$YT$DT$AYAXDL$AY f.D\$0\$YDL$L$AYAXDD$ DT$AYDL$D\$0DD$(AYDT$A(A(DL$D\$AX\$$DD$( DL$DT$AYD\$\$$A(A(AX YAYAX YAYYAYAXAXf -\$T$YDT$$YD$AX(l$<DD$5DL$AY%D\$AYDT$$AYD\$8DT$((t$(AXAX(d$0DD$ DT$l$fL$4H*|$,t$0^YY XX(X|$(t$ -XE1fA~l$8L$(\l$$ANII d$HT$D$L$ HDC\Iǀ^Y\$$L9D$T$XD$(d$y|$ d$,D$|$0@"Hx[]A\A]A^A_fD$8H*l$,|$0^YYXX(Xl$(|$ 5XE1fA~t$4D$$\t$(DAFII d$H\$L$D$HDCTIǀ^YT$(L9L$\$XL$$d$y@L$HHT$@d$HT$D$`t$H[/vfu2\(H[DH([H\[fD(\(ff.AW(AVAUATUSHX@fD$HD$t$ L$ (|$TH|$(t$T^@t$SHD$HD$$t$ ,|$/= T$Gf-D$t$f\L,I?@AWfofH~AVAH AUATIfH~UH H(SfnHT$4L$dH%(H$1D$fD|$O-~$~D$x~$H|$(fD|$On~$~D$h~$H|$(fD|$OL|$(~T$p~L$x~D$`L~L$p~D$`L~$~D$`L~$~$\@|$OL|$(~T$h~L$p~D$`L~T$p~L$xL~D$`~$~D$p~$H|$(L|$(~T$h~L$p~D$xL~L$h~D$xL~$~D$xL~$~$L|$(~D$x~$~$L~D$hL~$~$=~$~D$`~$H|$(L|$(~D$`~$~$L~D$pL~$~$L|$(~T$x~L$h~D$`L~T$x~D$hL~$~D$hL~$~$kL|$(~T$p~L$h~D$`L~L$p~D$`L~$~D$`L~$~$ 11I1|$41ff.fS1H=HH1H=HH1H=HCHHC[fHUH(}HHHh}HHHh}HH=]ff.AUAATIUHSHHHH8HE11h1ҋu1AE1A11$3HH5H8D„A|$A4$HH5H8HDmH5DeH8DDEZYD`DIEAhAIHH8D H []A\A]%DAUIATIUHSHHHD$ H@8HE11h1ҋu1AE1A11$Au„{3HH5H@8ÄA|$A4$HH5H@8HDmH5DeH@8DDHH5H@8D$EZYD`DIEAhAIHH@8D H []A\A]%AWIAVEAUATIUHSHHHH<$H@DD$ 8H1E1hA1A71„A|$A4$HH5H@8Ä{3HH5H@8XZE}McE1L%HDELH1NtAĄA~A6HHH@8AwIM9uHH5H@8t$ HH$H5H@Dck8DCD`DICAhAIHH@8D H []A\A]A^A_%AUATIH5USHLH8dH%(HD$(1H111HLl$1fT$ fL$ LHft$D$D$D$D$D$ D$$fD$H|$RIFFH|$HHHLH|$WAVELH5HLHd|$fmt LH5VH|$HH+H|$HH f|$LH5H|$HHH|$HHH|$ HHH|$ HHpH|$ HHOHLHt[/HLH Hct$HHLH.|$datauH|$$HHLcl$$LLH5HHHHLHD$T$ HfnT$$fn\$fnD$fnfbfbflfC f*D$$*^C'LH51BH1HT$(dH+%(u H8[]A\A]DLH51LH5H1LH5H?@HE1dH %(HL$19w ~H9WHD$dH+%(uSDHËO1f|$H|$DADIANMcHLHcH0DD$Hw E1dH%(HT$19~y/GHspfɋ*HY,ׅҍrI;p}F1DGDIfT$AWMcIH|$LHcH0DD$HD$dH+%(uDHfDHW 1@H0=t2:uHcHRHHB,HBB$f.AUPATUIHHH@ I$ DH0H9uHfIDŽ$(A$I$@HIDŽ$0I$81ADŽ$H0I$HHfo@@HE(IHHEHfo fo%HfofDfoHffofˆ@H9u1H5H=I$ I$L]A\A]H51LH1ATUHHL I|$(HtI|$HtLLIt$It$LLLA<$LHH]A\HAUIATIUHSHHH;H51L;H51LH;H5D$ D$ HH{t4;s1ɺH1[]A\A]%DH[]A\A]DH;-@SH HfD$L$HtP\$D$\\@\HYYYXXf.HQ@/HW 1@H0=:uHcHt$fH R(HHH2t$fHnflrT$B,HBB HHBHZ8B,HuZfHS\\RK\JYYYXX.w@QXHCH[,HuHH [ÐH H51[HH|$$H|$$fH|$$H|$~$ff.HHSf(HHX@,Hu WfDHC\\@K\HYYYXX.w=QXHSH[,HuHH[ffHH|$\$H|$\$ff<DAUATUSHHHI1ffK$M$0\K$MD$ HLAf/S$D$ sHCHHEHCC HA$8HtrH]HtiM{*fK,A/$Dw$HDH]Ht4K$\/K$rHCHEHkC A$8HuH[]A\A]/MK,A/$D9H^I$6ff.AWAVAUATUSH8H$<H H.LfHt$`@9|D9~sHD$`Hx(HtHD$`HxHtH|$`H$8<@9MD9ALHcHcHD$`H <f HD$`*H@H@ H$^HLmL$8M|}CH@|$}HHD$x|$ }|$@|$\$ AeEEl$|$4d$\A}DD$ D\|$\(\$,fYA(l$0AYX(YX.Q ^YDYY.zA(W f(fEE(^fEAYA(DYY(DYYXAX\fA\A\.Q=^(YYYYfL$(YT$\$X(YX.Q ^YYYt$ l$$d$(HD$`}(E1L$u$m,H$HH HpHL$hH Ht$pHHH(IfDfHLl$\A*YD$8At$X|$Ni]fDfAfEfEfED*1A1EiCAÞ&EiCAAE*AÞ&EEiCAD^AA*G-=MAE*^EZEXD\EYD^ZAX\YAXEZEXD\EYDXA/v A(ƹEfEfA1fEEiCAÞ&EiCAAE*AÞ&EEiCAD^AA*G-=MAE*^EZEXD\EYD^ZAX\YAXEZEXD\EYDXA/v A(ƹfEffE1iCÞ&DiCD*AÞ&DEiCD^*C$=MD*^EZEXD\EYD^ZAX\YAXEZEXD\EYDXA/v A(ƹffEfE1AA1EiCAÞ&EiCAAA*AÞ&EEiCA^AE*G-=MAE*D^ZAX\YD^EZDXD\EYAXEZEXD\EYDXA/v A(ƹAffEE1fEEiCAÞ&EiCAAA*AÞ&EEiCA^AE*G-=MAE*D^ZAX\YD^EZDXD\EYAXEZEXD\EYDXA/v A(ƹffEfE1iCÞ&DiC*AÞ&DEiC^D*C$=MD*D^ZAX\YD^EZDXD\EYAXEZEXD\EYDXA/v A(ƹD1fEf1fEiCÞ&DiCD*AÞ&DEiCD^*C$=MD*^EZEXD\EYD^ZX\YAXEZEXD\EYDXA/v A(ƹDfEf1fEiCÞ&DiCD*AÞ&DEiCD^*C$=MD*^EZEXD\EYD^ZX\YAXEZEXD\EYDXA/v A(ƹ1fEfiCÞ&iC%D*Þ&iCD^%*-=M^EZEXfED*D\EYD^ZX\YAXEZEXD\EYAX/v(ĹD9tf.w[Q]A\A]A([]QA\A][]A\A].t2wDu fDfff.(GHG@G ff.AV(ATUSHH8G ?GYYYЃw.(XXY(\((\\((΋CH HcH>@kk5)4$T =(Ÿ(DXY9u^-E1f@;(l$(At$ |$T$L$d$nT$l$(|$ZYt$ d$L$T$XZYXf(\fZC\YfXZ[YY{YYYA9>H8([]A\A^kk5)4$T =(Ÿ(DXY9u^-E1f@;(l$(At$ |$T$L$d$>T$|$t$ l$(Zf(\d$L$T$XZYXf(f\ZCY[YYYXZYY{D9FH8([]A\A^kkT-=((f.XY9u^-E1ffI~aYfZZ\fZCYfXZ[YAY{YYYA9;(l$ t$|$T$L$$$l$ fIn|$(Zt$L$XYT$f/$$X6ffZCYXZIH8([]A\A^>fDkk5)4$Th=(Ÿ(DXY9u^-E1ffI~aYfZZ\fZCYfXZ[YAY{YYYA9;(l$(t$ |$T$L$d$B(4$fl$(|$fInL$TZXT$ZXt$ f/d$\ZYXffZCYXZ/fDt=fDu=u=4u==@ff.ff.AWHHIAVfHnfHnAUflATUSH)$XIHcH<H)HI$fo,$I1hCI,fo$I8IAUAfnǃfnDsfbMcfAE(IA}0HcHLIELIEIEL9uHL[]A\A]A^A_ff.AVAUATIUSGHHE1HH)HZ0HlhHfDHcH8MtH9uLIHtcHHH8HωHcSHsHHHcCHH9uMtM4$[L]A\A]A^1IHtE1E1HtwAVIAUATE1U1SG.NfDH;LHAH8HcC0ItE9f~"ILnHHcS0;t[1]A\A]A^D[]A\A]A^f1ff.fHcfHnHfHnHflH)H@@AVAUATUSHOD$HHfA~E1JL)H,D0~WfAn\d$E1d$ fHAA*YH*YD$ HXD$BID9h0KID9H[]A\A]A^ATIUSG~?1@I$HH)HH,H}H}H}A9\$I<$[L]A\f.AWAVAUATIUHSHHHcS,H{Lk8HHcS,LCA?HЋU@Icu,E1ffɅxCIMIUHcHfHAJH< HYHHXH9uIE(NA} ~_MEHcA$YXą~ 9B ~H2HD9t;Htr(Å~(9B ~H:MtA;E|(YX@9\$3fL$Io *D$^HUU ~BHM(HHHt1HY@H9uփ9t5)t H4(~Yփ9tHHYIHH]H9Xpp HHMHHyH)HpgFAz1HfD4XHH9u9t=)At H4~~XDƃD9tHHXD$D$9D$UHD$(dH+%(H8[]A\A]A^A_D(LHILfHHH9u'1DAHH9ufL$*D$^11CD$D$9D$Et$IG ~4D$Hc1XHH9u119D$uD$DHH7HGHGHG1fG fDAVAAUA8ATUSIIcHH4$VB T$L$X;\$ hHEL@/rDp (@ HufIAO((1H$HdH+%(uhHX[]A\A]A^A_AW0I 1HcM;\$HD$HD$H;D$HC Ld$MLt$(Mt_1HC(H9(HPH@ LC HL<II I;GnIWLHHHII9wH|$trL|$ Ll$1f.HC(H9(HPH@ HHHCH9(v-HpHHp L9:vHtLBLIHz LHL9rLl$8HD$ C,f\HL,I1HƒfHH H*XQf\HH,H1HЃfHH H*XtfHH;L$|HC(L(HC MffDHfH*AYG/s_H,HIwLD$HHT$HT$IIG Ht$IWIWHH<IL99\HH,H1@HƒfHH H*XTfHL$ HT$1H5j1HT$XdH+%(Hh[]A\A]A^A_fDHx=fH*YE/sML,HuILmHE HHEHƒfHH H*XYE/r\L,I?HxtfH*YE/sIH,HHuH} HT$HT$HE HUHUL.HC MvB\H,H?HЃfHH H*XwHT$ 1H5h1HT$ 1H5h1LD$HT$ 1H5ih1aAVIAUIH1ATE1UHHtHLLHHAHD]A\A]A^ff.AWAVAUATUSHHG(H$H(HHP HHH\$HIIH1L-DE1RH9L@LL@ I L $LH1IIw LI9tXIG(HL9HPH@ HMIHHL9uH9sGL@LL@ I L fDE1uHH;\$tIG(HAfE1H[]A\A]A^A_@AVAUL-ATUHLHAĄuHD]A\A]A^fLHH5IHHtLLHHHD]A\A]A^@AWAVAUATUSHHdH%(HD$HG(H(Ht H@ HH((L#IH~KfoMeHHHHL9t2IF(H9v7HPH@ HHL;(r[1]A\A]A^f[]A\A]A^ff.fHHHcHP(H;2HrHR E1H 2Ht!HHHHq HDff.HW(1H:t HB HfDHG(DAUATUSHHG(L(MtBI1 H;sAHPH@ HHH,H} HID$(I9uHH[]A\A]ff.fAUATUHSHLkHdH%(HD$1Ld$HLD$HuHD$8u?HL9u11HHT$dH+%(uH[]A\A]f.1AUH5ATUSHdH%(HD$1HHHLd$Lkf.HLD$HuPD$8uGHL9u11HAHHD$dH+%(uHD[]A\A]fDE1E1ATHUHHdH%(HD$1Ld$D$LD$Hu|$Bt1HT$dH+%(H]A\HLHuǀ|$MuLd$HLHuHLHuHLHfHLHG11HT$у(l ȃ  ATH5UHdH%(HD$1H9Ld$HHžLD$D$Ht0E1HHD$dH+%(HD]A\fD|$BuHLHu|$MuLd$HLHuHLHhHLHIHLH*11HD$ƒ(AălA ԃ A E1f.ATHUHHdH%(HD$1Ld$D$LHu|$Gt&1HT$dH+%(H]A\HLHu|$IuHLHu|$FuHLHw|$8lHLHMD$7=HLH|$a11Hff.ATH5UHdH%(HD$1H=Ld$HHžLD$Ht0E1HHD$dH+%(HD]A\fD|$GuHLHu|$IuHLHu|$FuHLHf|$8[HLH<D$7,HLH |$a11HAE1fDATHUHHdH%(HD$1Ld$D$LHu|$t1HT$dH+%(uAH]A\@HLHuǀ|$u11Hff.ATH5UHdH%(HD$1HLd$HHžLD$Ht(E1HHD$dH+%(uOHD]A\f|$uHLHu|$u11HAE1fAUATUHSHLkHdH%(HD$1Ld$HLD$HuHD$8u?HI9u11H HT$dH+%(H[]A\A]fDHA EuHA EuHLD$Hu|$t HLHuހ|$u11H Kff.AUH5ATUSHdH%(HD$1HHHLd$Lkf.HLD$HuPD$8uGHL9u11HA HHD$dH+%(HD[]A\A]fHA uHA uHLD$Hu|$tA HLHu݀|$u11HA HE1HAWIAVAUMATAUHSH8Ht$DL$ IHLHc󉘄Lh`H4$HHD$HL<HD$LHD$(IFpH LIFhIH|$ IF8IF@HH Ht9HHHDH HHDH5HHDfHnfHnIVHi0flAAF0IF(HUH|$HHD$ HT$HHT$LL$ HIFH|$HIF HjHtr<L$IF(MNIv 1HcIHHAӉfHnHAH0IcI HI 2HfHnflH9uH|$HIIFPIFHHEfxA9ANAH8L[]A\A]A^A_H<$IHIF8H8H|$(LLE1H|$(LE1I~8HtI~pI~hI~(I~I~ L4I~8HtI~pI~hI~(I~LWI~8HtHT$ LL$HT$ LL$H|$(HT$ LL$LH|$LHT$ I~8H@AWAVAUIATAUHSHHH<$DD$IHǀ HLh`IGpIH IGhHH|$IG8IG@7HH fHnHfHnIGHi0flAAG0IG(HHHD$HLL$HIGIILIG H@HtYIG(MO1HIG J<0fDHcfHnH0I4HHpH@fHnflH9uH<$HIIGPIGHHtxEgxA9ANAHL[]A\A]A^A_J<IG8HLHLE1LLE1I8HtIpIhI(II L@I8HtIpIhI(ILI8Ht LL$LLL$HH|$L&I8Hff.@AWAVAUIATAUHSHHH<$DD$IHǀ`HLh`IGpIH`IGhHH|$IG8IG@?HH fHnHfHnIGHi0flAAG0IG(HHHD$HLL$HIGLtmILIG HGHtaIO IG(MOHJ|1 HA 1HXHcfHnHfHnI4H0flHH9uH<$HIIGPIGHHtwEgxA9ANAHL[]A\A]A^A_ÐK|mHIG8HLHLE1LLE1I8HtIpIhI(II LAI8HtIpIhI(ILzI8Ht LL$LLL$HH|$LI8HfDHtWUHH8HtH}hH}pH}(H}H} H}HH]fDff.@LcO0IЃHAAG0Ii0HG(Hǀƀ(MHHcHHMPHIL)HM)ILZAD!ЃAD!IM)L^IAD!IM)IADHFH)HGAA1AIDA  HI9uAADD9tBD)At DMLLLD߃A9tHALf1fDAHH9uE11덐GxIHֺfnHG@9HGPO1DDfnHcHG`G0fbHfG|HGXHG(Hǀǀƀ(MHHcHHMBHIL)HM)ILNAD!AD!LFI)IAD!IM)IADLBHL)HGAA1AIA  HI9uAADD9tBD)At DMLLLDσA9tHA1fDAHH9uE11덐ATUH(dH%(HD$1HcOx9D$fnHOHG`1HG@HGPHG0T$fnfbfG|HGXHG(HǀHcǀƀ(~FHHL$J'H9s JD%H9rAHt$LHt$LHHD$dH+%(uDH(]A\1Ht$HL$@DHH9uff.ATUH8dH%(HD$(1HcOx9D$fnHOHG`1HG@HGPHG0T$\$l$ fnfbfG|HGXHG(HǀHcǀƀ(~FHHL$J'H9s JD%H9r=Ht$LHt$LHHD$(dH+%(u@H8]A\1Ht$HL$@DHH9uATIIE1USH󋿀H֋DșHD9H?wqM`PM;`XwgMT$MPPMIjLcLMLBHcHLIxHH7IHtcHuEIHGA[D]A\H?wLIHhfHL@AGf.AWAVAUATLi0UHSHxLg(HL$(LD$DL$4D9G|A9$cA$(HcHMhI$I$LEpUD$PLcU0HU(DGL$$HupHMhDD$TE1Ii0MZH\$`Ht$HHL$@LHcHLL,HD$ HދD$PLHD$HHIƉD$XI$ MHHD$DHD$hD$\fH$Aru0IAA(AAHH IqHBLiMAH9HFH9 ؃!HL)H!LL)LjH!LL)HÄH^LH)H|$T!1  AHI9uD$X9t`\$\\$8t^u# 9!X8W}DJG0MSoz<i\)7.(f6A?PILYtVdm@4|{&v~RU;/:*w,Fe+ 'blnOqpha" Q3k1jTsy2-]rCHNB=[Z _`5$gEc% xK>^u# 9!X8W}DJG0MSoz<i\)7.(f6A?PILYtVdm@4|{&v~RU;/:*w,Fe+ 'blnOqpha" Q3k1jTsy2-]rCHNB=6B&mSᅵ[><"BEf3ILڨ ]j|yD"مf-oa-ИQO] wUa5ϪU-$KGXAi^nDx=f| 9$5(ZjZ,0i/_I7Qmwm徭2d<Q\du[j%Uw1ߢwqZvIJ3&0h+38;x yz !zM=)fr(2IkPk /IkQv'U|mTՆXB`F=u=^䬔FnՉxI >30[/,ۺUS`Β e: y>1"GhJ/K2~}f`^.KϋWlX5u&6\O顑Jh%mg21%;t|*bEbTG{=0Dq1n.ůL_lDt9xVڛ?]O*`?~i-\Ch%Y*)pθڏrH%DV#{; N[Bpj28šHp)SC UPq9Ru {..t2l`vGG$3@!tԠHg-e5%I!c1Y] .lt2}^B+ .&sx/ 1psɿnb94 R@(:NxsaJ)d]ȡl&Uc2}v AoO-?w_o,!<،N˕3m"?ǐ9D|7^&Wzn+{JpE8\HFF(VQX^Q@Eb@)sh sC7KVb e's*\?:Ipx5%a$Ϧ6̓Rzrs_YC1gRyȍFPt@>^9ˠb-JorJ6N|_%T''}4d̜&l\oe+Mڗğ\I.6N#R…  kn~W{RoMl8(B#JyA+dNAc:Kx*v =w'Ż ($3@U^,qc>>n8$W`m=e0{`<'GB-"cݢ\ۋ_+Ϻ1"iz؈x;qc y`MVs,Z M͎Kr6;&o0 п*JU~2+kT\#ϸӍ< oA AQ)Z:ggSij :S ?вKTdHwE]Rqlx5ӒgJF2vپFV<^*hwu3IdeL4'߸opp5F 븳W,VBSRnrK;0w7&P]kZ;] ] y{210d^ٞ|&n@햏>HuYfBLA 7>(ϟԁ{{*Z{GjJlҬ*m:_4C.VKo-ia?YcӲ4]!Q%og &0w,aQ mjp5c飕d2yҗ+L |~-d jHqA}mQDžӃVlkdzbeO\lcc=  n;^iLA`rqgjm Zjz  ' }Dңhi]Wbgeq6lknv+ӉZzJgo߹ホCՎ`~ѡ8ROggW?K6H+ L J6`zA`Ugn1yiFafo%6hRw G "/&U;( Z+j\1е,[d&c윣ju m ?6grWJz+{8 Ғ |! ӆBhn[&wowGZpj;f\ eibkaElx TN³9a&g`MGiIwn>JjѮZf @;7SŞϲG0򽽊º0S$6к)WTg#.zfJah]+o*7 Z-Failed to allocate memory for window CGL_transform_create_from_matrix() is not implemented yet!CGL_quat_mul_vec4 is not implemented yetInvalid channel count for image Invalid channel count for imageCannot add color attachment to default framebuffer Framebuffer already has 4 color attachments This type of framebuffer cannot have a custom color attachmentFramebuffer does not have a color attachment at index %d CGL_ssbo_set_sub_data: offset + size > ssbo->sizeCGL_ssbo_get_sub_data: offset + size > ssbo->sizeCGL_ssbo_copy: dst_offset + size > dst->sizeCGL_ssbo_copy: src_offset + size > src->sizeCGL_ubo_bind: glGetUniformBlockIndex failedCGL_ubo_set_sub_data: offset + size > ubo->sizeCGL_ubo_get_sub_data: offset + size > ubo->sizeFailed to load OpenGL functionsCGL_mesh_cpu* %s() { CGL_mesh_cpu* mesh = CGL_mesh_cpu_create(%zu, %zu); if(mesh == NULL) return NULL; mesh->vertices[%d].position = CGL_vec4_init(%f, %f, %f, %f); mesh->vertices[%d].normal = CGL_vec4_init(%f, %f, %f, %f); mesh->vertices[%d].texture_coordinates = CGL_vec4_init(%f, %f, %f, %f); mesh->vertices[%d].bone_wieghts = CGL_vec4_init(%f, %f, %f, %f); mesh->vertices[%d].bone_ids = CGL_ivec4_init(%d, %d, %d, %d); Failed to read compute shader file %s Failed to read vertex shader file %s Failed to read fragment shader file %s Ortho graphic projections not yet supported!#version 430 core #define MAX_LIGHTS 16 #define LIGHT_TYPE_DIRECTIONAL 0.5f #define LIGHT_TYPE_POINT 1.5f #define LIGHT_TYPE_SPOT 2.5f #define LIGHT_TYPE(index) u_lights_data_1[index].x #define LIGHT_CONSTANT(index ) u_lights_data_1[index].y #define LIGHT_LINEAR(index) u_lights_data_1[index].z #define LIGHT_QUADRATIC(index) u_lights_data_1[index].w #define LIGHT_COLOR(index) vec4(u_lights_data_0[index].xyz, 1.0f) #define LIGHT_INTENSITY(index) u_lights_data_0[index].w #define LIGHT_VECTOR(index) u_lights_data_2[index].xyz out vec4 FragColor; //out CGL_int MousePick0; //out CGL_int MousePick1; //out CGL_int MousePick2; in vec3 Position; in vec3 Normal; in vec2 TexCoord; // unifroms uniform vec4 u_lights_data_0[MAX_LIGHTS]; uniform vec4 u_lights_data_1[MAX_LIGHTS]; uniform vec4 u_lights_data_2[MAX_LIGHTS]; uniform vec4 u_lights_data_3[MAX_LIGHTS]; uniform mat4 u_projection; uniform mat4 u_view; uniform mat4 u_pv; uniform mat4 u_model_matrix; uniform int u_light_count; uniform bool u_use_diffuse_texture; uniform vec3 u_diffuse_color; uniform sampler2D u_diffuse_texture; uniform bool u_use_specular_texture; uniform vec3 u_specular_color; uniform sampler2D u_specular_texture; uniform bool u_use_normal_map; uniform sampler2D u_normal_map_texture; uniform float u_shininess; uniform vec3 u_camera_position; uniform bool u_use_blinn; uniform vec3 u_ambient_light_color; uniform float u_ambient_light_strength; uniform bool u_use_gamma_correction; vec4 get_material_diffuse_color() { if(u_use_diffuse_texture) return vec4(pow(texture(u_diffuse_texture, TexCoord).xyz, vec3(2.2f)), 1.0f); return vec4(u_diffuse_color, 1.0f); } vec4 get_material_specular_color() { if(u_use_specular_texture) return vec4(pow(texture(u_specular_texture, TexCoord).xyz, vec3(2.2f)), 1.0f); return vec4(u_specular_color, 1.0f); } vec3 aces_tonemap(vec3 x){ const float a = 2.51f; const float b = 0.03f; const float c = 2.43f; const float d = 0.59f; const float e = 0.14f; return clamp((x * (a * x + b)) / (x * (c * x + d ) + e), 0.0f, 1.0f); } vec4 calculate_directional_light(CGL_int index) { vec3 light_direcion = normalize(-LIGHT_VECTOR(index)); // diffuse shading float diff = max(dot(Normal, light_direcion), 0.0f); // specular shading vec3 view_dir = normalize(u_camera_position - Position); float spec = 0.0f; if(u_use_blinn) { vec3 halfway_direction = normalize(light_direcion + view_dir); spec = pow(max(dot(view_dir, halfway_direction), 0.0f), u_shininess); } else { vec3 reflect_direction = reflect(-light_direcion, Normal); spec = pow(max(dot(view_dir, reflect_direction), 0.0f), u_shininess); } vec4 material_diffuse = get_material_diffuse_color(); vec4 material_specular = get_material_specular_color(); vec4 ambient_lighting = vec4(u_ambient_light_color * u_ambient_light_strength, 1.0f); vec4 diffuse_lighting = LIGHT_COLOR(index) * diff * material_diffuse; vec4 specular_lighting = LIGHT_COLOR(index) * spec * material_specular; return (ambient_lighting + diffuse_lighting + specular_lighting) * LIGHT_INTENSITY(index); } vec4 calculate_point_light(CGL_int index) { vec3 light_direcion = normalize(LIGHT_VECTOR(index) - Position); // diffuse shading float diff = max(dot(Normal, light_direcion), 0.0f); // specular shading vec3 view_dir = normalize(u_camera_position - Position); float spec = 0.0f; if(u_use_blinn) { vec3 halfway_direction = normalize(light_direcion + view_dir); spec = pow(max(dot(view_dir, halfway_direction), 0.0f), u_shininess); } else { vec3 reflect_direction = reflect(-light_direcion, Normal); spec = pow(max(dot(view_dir, reflect_direction), 0.0f), u_shininess); } vec4 material_diffuse = get_material_diffuse_color(); vec4 material_specular = get_material_specular_color(); // attrnuation float distance = length(LIGHT_VECTOR(index) - Position); float attenuation = 1.0f / ( LIGHT_CONSTANT(index) + LIGHT_LINEAR(index) * distance + LIGHT_QUADRATIC(index) * (distance * distance)); vec4 ambient_lighting = vec4(u_ambient_light_color * u_ambient_light_strength, 1.0f); vec4 diffuse_lighting = LIGHT_COLOR(index) * diff * material_diffuse; vec4 specular_lighting = LIGHT_COLOR(index) * spec * material_specular; return (ambient_lighting + diffuse_lighting + specular_lighting) * attenuation * LIGHT_INTENSITY(index); } vec4 calculate_spot_light(CGL_int index) { return vec4(0.0f); } void main() { vec4 color = vec4(0.0f, 1.0f, 0.0f, 1.0f); vec4 light_output = vec4(0.0f); for ( CGL_int i = 0 ; i < u_light_count ; i++) { if(LIGHT_TYPE(i) < LIGHT_TYPE_DIRECTIONAL) light_output += calculate_directional_light(i); else if(LIGHT_TYPE(i) < LIGHT_TYPE_POINT) light_output += calculate_point_light(i); else if(LIGHT_TYPE(i) < LIGHT_TYPE_SPOT) light_output += calculate_spot_light(i); } light_output.xyz = aces_tonemap(light_output.xyz); if(u_use_gamma_correction) color = vec4(pow(light_output.xyz, vec3(0.4545f)), light_output.w); else color = light_output; FragColor = color; //MousePick0 = InstanceID; //MousePick1 = 0; //MousePick2 = 1; }#version 430 core layout (location = 0) in vec4 position; layout (location = 1) in vec4 normal; layout (location = 2) in vec4 texcoord; out vec3 Position; out vec3 Normal; out vec2 TexCoord; uniform mat4 u_projection; uniform mat4 u_view; uniform mat4 u_pv; uniform mat4 u_model_matrix; void main() { gl_Position = u_projection * u_view * transpose(u_model_matrix) * vec4(position.xyz, 1.0f); Position = (transpose(u_model_matrix) * position).xyz; Normal = normal.xyz; TexCoord = texcoord.xy; }#version 430 core out vec4 FragColor; //out CGL_int MousePick0; //out CGL_int MousePick1; //out CGL_int MousePick2; in vec3 Position; in vec3 Normal; in vec2 TexCoord; // unifroms uniform vec2 u_offset; uniform vec2 u_scale; uniform vec2 u_tile_count; uniform vec2 u_tile_size; uniform sampler2D u_texture_tileset; uniform sampler2DArray u_texture_array; struct cglTile { vec4 color; }; layout (std430, binding = %d) buffer tiles_buffer { cglTile tiles[]; }; void main() { vec4 color = vec4(0.0f, 1.0f, 0.0f, 1.0f); vec2 frag_coord = gl_FragCoord.xy; vec2 coord = vec2( (frag_coord.x + u_offset.x) * u_scale.x, (frag_coord.y + u_offset.y) * u_scale.y ); vec2 tile_index_f = vec2( coord.x / u_tile_size.x, coord.y / u_tile_size.y ); ivec2 tile_index = ivec2(tile_index_f); vec2 tile_tex_coord = vec2( mod(coord.x, u_tile_size.x) / u_tile_size.x, mod(coord.y, u_tile_size.y) / u_tile_size.y ); if(tile_index_f.x < 0 || tile_index_f.x >= u_tile_count.x || tile_index_f.y < 0 || tile_index_f.y >= u_tile_count.y) { // discard; // Using discard might not be the best idea FragColor = vec4(0.0f); return; } cglTile current_tile = tiles[tile_index.y * int(u_tile_count.x) + tile_index.x]; if (current_tile.color.w > 3.0f) // case where tile is empty { // discard; // Using discard might not be the best idea FragColor = vec4(0.0f); return; } else if(current_tile.color.w > 2.0f ) // case where tile is a solid color { FragColor = vec4(current_tile.color.xyz, 1.0f); return; } else if(current_tile.color.w > 1.0f ) // case where tile is a texture from texture array { FragColor = texture(u_texture_array, vec3(tile_tex_coord, current_tile.color.x)); return; } else // case where tile is a texture from tileset { vec2 final_tex_scale = current_tile.color.zw - current_tile.color.xy; vec2 final_tex_coord = vec2( tile_tex_coord.x / final_tex_scale.x + current_tile.color.x, tile_tex_coord.y / final_tex_scale.y + current_tile.color.y ); FragColor = texture(u_texture_tileset, final_tex_coord); return; } FragColor = vec4(tile_tex_coord, 0.0f, 1.0f); //MousePick0 = InstanceID; //MousePick1 = 0; //MousePick2 = 1; }#version 430 core layout (location = 0) in vec4 position; layout (location = 1) in vec4 normal; layout (location = 2) in vec4 texcoord; void main() { gl_Position = vec4(position.xyz, 1.0f); }#version 430 core out vec4 FragColor; in vec3 Position; uniform samplerCube u_texture; void main() { vec4 color = texture(u_texture, Position); FragColor = color; }#version 430 core layout (location = 0) in vec4 position; layout (location = 1) in vec4 normal; layout (location = 2) in vec4 texcoord; out vec3 Position; uniform mat4 u_projection; uniform mat4 u_view; void main() { gl_Position = u_projection * transpose(u_view) * vec4(position.xyz, 1.0f); Position = position.xyz; }#version 430 core uniform vec3 fsun = vec3(0, 0.2, 0.1); uniform CGL_float time = 0.0; uniform CGL_float cirrus = 0.4; uniform CGL_float cumulus = 0.8; uniform CGL_float upf = 0.35; in vec3 Position; out vec4 FragColor; const float Br = 0.0025; const float Bm = 0.0003; const float g = 0.9800; const vec3 nitrogen = vec3(0.650, 0.570, 0.475); const vec3 Kr = Br / pow(nitrogen, vec3(4.0)); const vec3 Km = Bm / pow(nitrogen, vec3(0.84)); float hash(float n) { return fract(sin(n) * 43758.5453123); } float noise(vec3 x) { vec3 f = fract(x); float n = dot(floor(x), vec3(1.0, 157.0, 113.0)); return mix(mix(mix(hash(n + 0.0), hash(n + 1.0), f.x), mix(hash(n + 157.0), hash(n + 158.0), f.x), f.y), mix(mix(hash(n + 113.0), hash(n + 114.0), f.x), mix(hash(n + 270.0), hash(n + 271.0), f.x), f.y), f.z); } const mat3 m = mat3(0.0, 1.60, 1.20, -1.6, 0.72, -0.96, -1.2, -0.96, 1.28); float fbm(vec3 p) { float f = 0.0; f += noise(p) / 2; p = m * p * 1.1; f += noise(p) / 4; p = m * p * 1.2; f += noise(p) / 6; p = m * p * 1.3; f += noise(p) / 12; p = m * p * 1.4; f += noise(p) / 24; return f; } void main() { vec3 pos = vec3(Position.x, Position.y+upf, Position.z); // Atmosphere Scattering float mu = dot(normalize(pos), normalize(fsun)); float rayleigh = 3.0 / (8.0 * 3.14) * (1.0 + mu * mu); vec3 mie = (Kr + Km * (1.0 - g * g) / (2.0 + g * g) / pow(1.0 + g * g - 2.0 * g * mu, 1.5)) / (Br + Bm); vec3 day_extinction = exp(-exp(-((pos.y + fsun.y * 4.0) * (exp(-pos.y * 16.0) + 0.1) / 80.0) / Br) * (exp(-pos.y * 16.0) + 0.1) * Kr / Br) * exp(-pos.y * exp(-pos.y * 8.0) * 4.0) * exp(-pos.y * 2.0) * 4.0; vec3 night_extinction = vec3(1.0 - exp(fsun.y)) * 0.2; vec3 extinction = mix(day_extinction, night_extinction, -fsun.y * 0.2 + 0.5); FragColor.rgb = rayleigh * mie * extinction; // Cirrus Clouds float density = smoothstep(1.0 - cirrus, 1.0, fbm(pos.xyz / pos.y * 2.0 + time * 0.05)) * 0.3; FragColor.rgb = mix(FragColor.rgb, extinction * 4.0, density * max(pos.y, 0.0)); // Cumulus Clouds for (int i = 0; i < 3; i++) { float density = smoothstep(1.0 - cumulus, 1.0, fbm((0.7 + float(i) * 0.01) * pos.xyz / pos.y + time * 0.3)); FragColor.rgb = mix(FragColor.rgb, extinction * density * 5.0, min(density, 1.0) * max(pos.y, 0.0)); } // Dithering Noise FragColor.rgb += noise(pos * 1000) * 0.01; }Could not Initialize FreeType Could not Font Load Character %c #version 430 core out vec4 FragColor; in vec3 Position; in vec3 Normal; in vec2 TexCoord; in vec4 Color; in vec4 TexCoordScaleOffset; flat in int TexID; flat in int UsingFontTexture; uniform bool u_DiffuseShadingEnabled; uniform vec3 u_LightColor; uniform vec3 u_LightPosition; uniform sampler2D u_Texture[16]; uniform vec4 u_Mask; void main() { vec4 color = Color; if(TexID > -1) { color = texture(u_Texture[TexID], TexCoord * TexCoordScaleOffset.xy + TexCoordScaleOffset.zw); if(UsingFontTexture == 1) { color = color.r * Color; if(color.r < 0.1f) discard; } } if(u_DiffuseShadingEnabled) { float ambient_strength = 0.1f; vec3 ambient = ambient_strength * u_LightColor; vec3 norm = normalize(Normal); vec3 light_dir = normalize(u_LightPosition - Position); float diff = max(dot(norm, light_dir), 0.0); vec3 diffuse = diff * u_LightColor; color.rgb = (diffuse + ambient) * color.rgb; } else { if (Position.x < u_Mask.x || Position.y < u_Mask.y || Position.x > u_Mask.z || Position.y > u_Mask.w) discard; } FragColor = color; }#version 430 core layout (location = 0) in vec4 position; layout (location = 1) in vec4 normal; layout (location = 2) in vec4 texcoord; layout (location = 3) in vec4 texcoordscaleoffset; layout (location = 4) in ivec4 texids; out vec3 Position; out vec3 Normal; out vec2 TexCoord; out vec4 Color; out vec4 TexCoordScaleOffset; flat out int TexID; flat out int UsingFontTexture; uniform bool u_TransformPointsOnCPU; uniform mat4 u_ViewProjMatrix; uniform mat4 u_ModelMatrix; void main() { if(u_TransformPointsOnCPU) { gl_Position = vec4(position.xyz, 1.0f); Position = position.xyz; Normal = normal.xyz; } else { gl_Position = u_ViewProjMatrix * u_ModelMatrix * vec4(position.xyz, 1.0f); Position = (u_ModelMatrix * vec4(position.xyz, 1.0f)).xyz; mat3 normal_matrix = transpose(inverse(mat3(u_ModelMatrix))); Normal = normal_matrix * normal.xyz; } TexCoord = texcoord.xy; TexID = texids.x; UsingFontTexture = texids.y; TexCoordScaleOffset = texcoordscaleoffset; Color = vec4(position.w, texcoord.zw, normal.w); }void __CGL_widgets_add_oval_stroked(CGL_vec3 position, CGL_vec2 radius) not implemented #version 430 core layout (local_size_x = 16, local_size_y = 16) in; layout (rgba32f, binding = 0) uniform image2D output_tex; layout (rgba32f, binding = 1) uniform image2D input_tex; uniform int shades = 1; uniform sampler2D albedo_tex; uniform ivec2 resolution; void main() { ivec2 pixel_coord = ivec2(gl_GlobalInvocationID.xy); vec2 uv = vec2(pixel_coord) / vec2(resolution); vec3 scene_pixel = imageLoad(input_tex, pixel_coord).rgb; scene_pixel = floor(scene_pixel * float(shades)) / float(shades); vec3 albedo_pixel = texture(albedo_tex, uv).rgb; vec3 output_pixel = scene_pixel + albedo_pixel; imageStore(output_tex, pixel_coord, vec4(output_pixel, 1.0)); } #version 430 core layout (local_size_x = 16, local_size_y = 16) in; layout (rgba32f, binding = 0) uniform image2D output_tex; layout (rgba32f, binding = 1) uniform image2D scene; uniform float outline_width = 1.0f; uniform ivec2 resolution; uniform sampler2D normal_tex; uniform sampler2D depth_tex; float max_vec3(vec3 v) { return max(max(v.x, v.y), v.z); } float linearize_depth(float depth) { float zFar = 100.0f; float zNear = 0.01f; return (2.0f * zNear) / (zFar + zNear - depth * (zFar - zNear)); } float get_n_factor(vec2 uv) { float current_normal = max_vec3(texture(normal_tex, uv).rgb); float left_normal = max_vec3(texture(normal_tex, uv + vec2(-outline_width / float(resolution.x), 0.0)).rgb); float right_normal = max_vec3(texture(normal_tex, uv + vec2(outline_width / float(resolution.x), 0.0)).rgb); float top_normal = max_vec3(texture(normal_tex, uv + vec2(0.0, outline_width / float(resolution.y))).rgb); float bottom_normal = max_vec3(texture(normal_tex, uv + vec2(0.0, -outline_width / float(resolution.y))).rgb); float n_factor = 0.0; n_factor = abs(current_normal - left_normal) + abs(current_normal - right_normal) + abs(current_normal - top_normal) + abs(current_normal - bottom_normal); return 1.0f - clamp(smoothstep(n_factor, 0.2f, 0.85f), 0.0f, 1.0f); } float get_d_factor(vec2 uv) { float current_depth = linearize_depth(texture(depth_tex, uv).r); float left_depth = linearize_depth(texture(depth_tex, uv + vec2(-outline_width / float(resolution.x), 0.0)).r); float right_depth = linearize_depth(texture(depth_tex, uv + vec2(outline_width / float(resolution.x), 0.0)).r); float top_depth = linearize_depth(texture(depth_tex, uv + vec2(0.0, outline_width / float(resolution.y))).r); float bottom_depth = linearize_depth(texture(depth_tex, uv + vec2(0.0, -outline_width / float(resolution.y))).r); float d_factor = 0.0; d_factor = abs(current_depth - left_depth) + abs(current_depth - right_depth) + abs(current_depth - top_depth) + abs(current_depth - bottom_depth); return clamp(d_factor, 0.0f, 1.0f); } void main() { ivec2 pixel_coord = ivec2(gl_GlobalInvocationID.xy); vec2 uv = vec2(pixel_coord) / vec2(resolution); float n_factor = get_n_factor(uv); float d_factor = get_d_factor(uv); float factor = max(n_factor, d_factor); vec3 scene_pixel = imageLoad(scene, pixel_coord).rgb; vec3 output_pixel = scene_pixel * (1.0f - factor); imageStore(output_tex, pixel_coord, vec4(output_pixel, 1.0)); } #version 430 core layout (local_size_x = 16, local_size_y = 16) in; layout (rgba32f, binding = 0) uniform image2D output_tex; uniform sampler2D input_tex; uniform sampler2D uv_tex; uniform sampler2D hatch_tex[8]; uniform int hatch_tex_count; uniform ivec2 resolution; vec3 hatching(vec2 uv, float intensity) { vec3 overbright = vec3(max(0.0f, intensity - 1.0f)); vec3 opt = overbright; float tot_weight = 0.0f; for(int i = 0 ; i < hatch_tex_count; i++) { float a0 = clamp(intensity * float(hatch_tex_count) - float(i), 0.0f, 1.0f); float a1 = clamp(intensity * float(hatch_tex_count) - float(i + 1), 0.0f, 1.0f); float weight = a0 - a1; tot_weight += weight; opt += texture(hatch_tex[i], uv * 8.0f).rgb * weight; } return opt / tot_weight; } void main() { ivec2 pixel_coord = ivec2(gl_GlobalInvocationID.xy); vec2 uv = vec2(pixel_coord) / vec2(resolution); vec2 sc_uv = texture(uv_tex, uv).rg; float filter_f = length(sc_uv); vec3 input_color = texture(input_tex, uv).rgb; vec3 output_pixel = vec3(0.0f); output_pixel = hatching(uv, dot(input_color, vec3(0.2326f, 0.7152f, 0.0722f))); if(filter_f > 1.0f) {output_pixel = vec3(1.0f); } imageStore(output_tex, pixel_coord, vec4(output_pixel, 1.0)); } WAV Loader (%s): Invalid RIFF signatureWAV Loader (%s): Invalid WAVE signatureWAV Loader (%s): Invalid fmt signatureWAV Loader (%s): Unsupported audio formatWAV Loader (%s): Failed to read data chunkWAV Loader (%s): Failed to allocate memoryWAV Loader (%s): Failed to read dataTrail: Failed to allocate memory#version 430 core out vec4 FragColor; in vec3 Position; in vec2 TexCoord; in float Distance; void main() { FragColor = vec4(vec3(1.0f - 0.0f), 1.0f); } #version 430 core layout (location = 0) in vec4 position; layout (location = 1) in vec4 normal; layout (location = 2) in vec4 texcoord; out vec3 Position; out vec2 TexCoord; out float Distance; uniform mat4 projection; uniform mat4 view; void main() { gl_Position = projection * view * vec4(position.xyz, 1.0f); Position = position.xyz; TexCoord = texcoord.xy; Distance = normal.w; } Trail: Failed to add point, trail is fullCGL_csv_load_from_buffer: line %d is too shortCGL_csv_load_from_buffer: line %d is emptyCGL_csv_load_from_buffer: item %d in line %d is too longCGL_csv_load_from_buffer: line %d has %d columns, but %d columns are expected { { %f, %f, %f, %f }, { %f, %f, %f, %f }, { %f, %f, %f, %f }, { %f, %f, %f, %f } } #version 430 core layout(local_size_x = 16, local_size_y = 16) in; layout(rgba32f, binding = 0) uniform image2D tex_src; layout(rgba32f, binding = 1) uniform image2D tex_dst; #define MODE_PREFILTER 0 #define MODE_DOWNSAMPLE 1 #define MODE_UPSAMPLE 2 #define MODE_COMPOSITE 3 uniform int u_mode; uniform vec2 u_src_size; uniform ivec2 u_offset; uniform vec2 u_dst_size; uniform vec4 u_prefilter_threshold; vec4 prefilter(vec4 color) { // pixel brightness float br = max(color.x, max(color.y, color.z)); // under-threshold part : quadratic curve vec3 curve = u_prefilter_threshold.yzw; // curve = (threshold - knee, knee * 2, 0.25 / knee) float rq = clamp(br - curve.x, 0.0f, curve.y); rq = curve.z * rq * rq; // combine and apply the brightness response curve float threshold = u_prefilter_threshold.x; color *= max(rq, br - threshold) / max(br, 0.00001f); //color *= (br - threshold) / max(br, 0.00001f); return color; } vec4 downsample_box_13_tap(ivec2 src_coord) { vec4 A = imageLoad(tex_src, src_coord + ivec2(-2, -2)); vec4 B = imageLoad(tex_src, src_coord + ivec2( 0, -2)); vec4 C = imageLoad(tex_src, src_coord + ivec2( 2, -2)); vec4 D = imageLoad(tex_src, src_coord + ivec2(-1, -1)); vec4 E = imageLoad(tex_src, src_coord + ivec2( 1, -1)); vec4 F = imageLoad(tex_src, src_coord + ivec2(-2, 0)); vec4 G = imageLoad(tex_src, src_coord ); vec4 H = imageLoad(tex_src, src_coord + ivec2( 2, 0)); vec4 I = imageLoad(tex_src, src_coord + ivec2(-1, 1)); vec4 J = imageLoad(tex_src, src_coord + ivec2( 1, 1)); vec4 K = imageLoad(tex_src, src_coord + ivec2(-2, 2)); vec4 L = imageLoad(tex_src, src_coord + ivec2( 0, 2)); vec4 M = imageLoad(tex_src, src_coord + ivec2( 2, 2)); vec2 div = (1.0f / 4.0f) * vec2(0.5f, 0.125f); vec4 o = (D + E + I + J) * div.x; o += (A + B + G + F) * div.y; o += (B + C + H + G) * div.y; o += (F + G + L + K) * div.y; o += (G + H + M + L) * div.y; //pixel = imageLoad(tex_src, pixel_coords); return o; } vec4 upsample_tent(ivec2 src_coord) { ivec4 d = ivec4(1, 1, -1, 0); vec4 s; s = imageLoad(tex_src, src_coord - d.xy); s += imageLoad(tex_src, src_coord - d.wy) * 2.0f; s += imageLoad(tex_src, src_coord - d.zy); s += imageLoad(tex_src, src_coord + d.zw) * 2.0f; s += imageLoad(tex_src, src_coord ) * 4.0f; s += imageLoad(tex_src, src_coord + d.xw) * 2.0f; s += imageLoad(tex_src, src_coord + d.zy); s += imageLoad(tex_src, src_coord + d.wy) * 2.0f; s += imageLoad(tex_src, src_coord + d.xy); return s * (1.0f / 16.0f); } vec3 aces_tonemap(vec3 x){ const float a = 2.51f; const float b = 0.03f; const float c = 2.43f; const float d = 0.59f; const float e = 0.14f; return clamp((x * (a * x + b)) / (x * (c * x + d ) + e), 0.0f, 1.0f); } void main() { if(u_mode == MODE_PREFILTER) { vec4 pixel = vec4(1.0f, 1.0f, 0.0f, 1.0f); ivec2 pixel_coords = ivec2(gl_GlobalInvocationID.xy); pixel = imageLoad(tex_src, pixel_coords); imageStore(tex_dst, pixel_coords, prefilter(pixel)); } else if(u_mode == MODE_DOWNSAMPLE) { vec4 pixel = vec4(1.0f, 0.0f, 1.0f, 1.0f); ivec2 dst_pixel_coords = ivec2(gl_GlobalInvocationID.xy); vec2 uv = vec2(dst_pixel_coords) / u_dst_size; ivec2 src_pixel_coords = ivec2(uv * u_src_size); imageStore(tex_dst, dst_pixel_coords, downsample_box_13_tap(src_pixel_coords)); } else if(u_mode == MODE_UPSAMPLE) { vec4 pixel = vec4(1.0f, 0.0f, 1.0f, 1.0f); ivec2 dst_pixel_coords = ivec2(gl_GlobalInvocationID.xy); vec2 uv = vec2(dst_pixel_coords) / u_dst_size; ivec2 src_pixel_coords = ivec2(uv * u_src_size); imageStore(tex_dst, dst_pixel_coords, upsample_tent(src_pixel_coords)); } else if(u_mode == MODE_COMPOSITE) { vec4 pixel = vec4(0.0f, 0.0f, 0.0f, 0.0f); ivec2 pixel_coords = ivec2(gl_GlobalInvocationID.xy); ivec2 pixel_coords2 = ivec2(gl_GlobalInvocationID.xy) + u_offset; pixel += imageLoad(tex_dst, pixel_coords); pixel += imageLoad(tex_src, pixel_coords2); pixel = vec4(pixel.xyz, clamp(pixel.w, 0.0f, 1.0f)); imageStore(tex_dst, pixel_coords, pixel); } else { vec4 pixel = vec4(1.0f, 0.0f, 0.0f, 1.0f); ivec2 pixel_coords = ivec2(gl_GlobalInvocationID.xy); imageStore(tex_dst, pixel_coords, pixel); } }1IE0H% H% fH% H% H% H% H% H% H% H% H% H% H% ??????????????%???????????????????  ""$  !"# mesh->indices = (CGL_int []){ }; return mesh4B?o:zDQ8>Q8>Q8>?`@>L?33> ???B?BBB???>>L?L?=?L>>333???@?d0000L=>?_ #< ף<.)@׳]?A@6P?@ :H@ @H>>˖@I@?@?>Y?ff&?> ?ff>L ף=8%I!ZCK@pA AA@@K*?.AL>333?333?%I@(knN@?@?GCC: (Ubuntu 11.3.0-1ubuntu1~22.04.1) 11.3.0GNUzRx L0#FBE B(A0A8Ia 8F0A(B BBBF  >3K>3 S 0\4FEH R(D0D8R@p 8J0G(B BBBH D8A0A(B BBBHFKY D(D0q (M BBBJ A(A BBB0HQG0K DAH DAA0HQG0K DAH DAAHHFUG D(O0m (J ABBG D(A ABB0gHQG u DAF DAAHFUG D(O0r (J ABBJ D(A ABB(!H<?BEB B(D0G8GP 8A0A(B BBBA ,HXLBEB A(D0 (D BBBJ A (D FBBA (BDD nFF MAG@` AG T@BBE E(A0D8G`M 8D0A(B BBBD ShWpUhA`4BBD D(D0(D ABB(OFAI {ABEP , @ Th (|FAD q ABA 8Er0QEDD q AAH DCA4_FDD } EBF ACB00QEAG t AAE DCAd HxkFBB A(A0{ (D BBBG H(A EBB$<QDG ]AA$CEDG pAA (*Ha(@cFGG0u ABD l0EV E K)EO D P-\P #F\EL$ 8 8LFOE D(L@} (D ABBA $EDD mDAHFBE B(D0D8G`  8G0A(B BBBF 0iEDD H AAI DCA0 @En E GP HOHh FBB B(D0A8GP 8A0A(B BBBE     $E^  H4 jFBB B(A0A8DP 8A0A(B BBBC  x      FJ BA 0 FJ BA T FJ BA x FJ BA D BDA G[aD\  AABE H FIB A(H0 (A BBBA A(H GDBT0 FEB A(A0I^eD~ 0A(A BBBC D BDA G[aD\  AABE  rEh 2He mF\ F DH$ }FEA A(F0O (F ABBC D(C ABB8p BEE D(F05 (D BBBK X VFBB E(A0C8Fp}xNIxBp 8M0F(B BBBO |H0n A $ 8%L `t% )!)(H@_8JEH f ABH D ABA @jEI U AA d x22 "O ?LQ08ErL `St_FX 4wFBD DY  DBBA $FJ EA @FO EA d+x dOJM F(A0D8O 8A0A(B BBBE r 8A0A(B BBBD HFBB B(D0D8Dp 8A0A(B BBBG @mThQu [rU \(FAD0 ABA +0SFDA Dp  AABA H$7FBA A(D (F ABBJ D(H FBBpKSH FBB B(A0A8G^ 8A0A(B BBBA CK( FDD AB83Lb`.H`xZ"HP9 G IVH`H A xKg A 8 H`{hGpGxGGGGGa`T A \p+O8H`ZhGpGxGGGGGd`T A p}FIB B(A0A8GBBBGGGGl 8A0A(B BBBF HKZZ A llqFJbGGGGGGGGGGGGGGGq EA 8H`ZhGpGxGGGGGt` A !,\@h TVFG0FBxu\,FDD G@ DAB0|FAD G@(  AABB ,@HP A \HP{ A xHK(HK A H` A @qFEF D(D0DK0A(A BBBL0FBB B(A0A8J0 8F0A(B BBBI L8FFN O(G0D8GI 8A0D(B BBBA LFFE E(A0I8Dr 8A0A(B BBBH $ EJO@vAAH8EW0UFHhFFA D(L0J (D ABBA L(D DBB!JOHFBB D(F0^ (D BBBA L(A EBBRL0FBB A(A08 (A BBBE D (D BBBB QLFBB A(A08 (A BBBE D (D BBBB QLFBB A(A08 (A BBBE D (D BBBB THJFEH B(A0A8 0A(B BBBA A0C(B BBBDFBB B(A0A8D@8D0A(B BBB4@IE A(Z DBBAH FBB B(A0A8DP 8D0A(B BBBK 8lL}PK O(  DBBA DPNFB A(A05 (D BBBI D (A EBBA \FBA A(D@+ (D ABBF D (D DBBH c (D ABBA p=S>ULFBA A(D0c (D ABBF D (D DBBA LL`FBA A(D0c (D ABBF D (D DBBA ([KD AE XHFBB B(A0A8D`[ 8D0A(B BBBF < cP zd Fx n E L FBA A(D@  (D ABBI D (D DBBH <!OEA H(F0h(F ABBAXD!FBB B(A0A8/ 0A(B BBBA A 0C(B BBBE L!FBA A(D@ (D ABBE D (D DBBA `!OEB B(A0A8 0D(B BBBG D 0A(E BBBH e\T"FKF B(A0A8DPj 8A0A(B BBBE L8C0A(B BBBH"RBA A(  DBBF C  ABBH JH#BBB B(A0A8DPH 8A0A(B BBBH L#Kd`#BBE B(A0A8DP% 8A0A(B BBBH I 8D0A(B BBBA <#ODD00 DBC gDBCH0L$FBA A(D@ (D ABBD  (D ABBH lX$OBB B(A0D8DPx 8G0G(B BBBE L8C0A(B BBBG$3P$OBA D(D@f (G ABBE L(C ABBK0%FL%`%t%a%%0Fi%%%%*& & 0& D&rT m N `&+t&0&4&3&O0&_H l&&  ' ' 4' H'0\'p'''HPD R '5'='V'I (K L M E (($<(<P(<d(<x(<(/(2(/(H h F (Y(Q )H )\ A <)QTuT)UKD A p)8)FEA D(G (D ABBA ()MFEK n BBA ()MFEK n BBA *,* @*6Ea J A`* t* *HQ* * * 0*@ECG U AAJ MAA+ $+ 8+ L+ `+ 0t+FEDG O AAG [AA0+FEDG O AAG [AA0+FEDG O AAG [AA0,FEDG O AAG [AA0D,FEDG O AAG [AA0x,FEDG O AAG [AA0,IEDG O AAG ^AA(,!EAG AA -  -HR8- L- `- t-X-\FBB B(A0A8G@HGPBXP`Y@V 8D0A(B BBBC T-5FEJ E(A0C8F@gHHPMXC`Y@k8D0A(B BBB<.FTX.AFEE J(A0C8FPmXT`HhBpYPk8D0A(B BBBT.AFEE J(A0C8FPmXT`HhBpYPk8D0A(B BBBl/#FBB B(D0D8G@xHBPEXQ`O8A0A(B BBBL@K 8A0A(B BBBK <x/xFDC u(E0J8H@EHAPO AAB$/EFDG cDG$/VFDG tDG0EU$$03FDM UDB0L0qEDG r(D0P8D@OAAP0FEE E(D0D8G@rHEPJXH`O8A0A(B BBB@0FED D(G0r8D@IHPPO(A ABB1 ,1 @1T1Hh1pFJF J(A0H8D` 8D0A(B BBBF 81(FME H(I@= (D ABBA L1FBA A(D`N (A ABBF [ (H ABBH @28\[X2/Ei8t2FBA D(D0 (D ABBO 2EGPt AG (2EDG0~ AAH 33|(3QBB B(A0A8G@jHUPQ8A0A(B BBBF@D8A0A(B BBBBD3FBA A(D@YH\PaHA@T (A ABBA 34$4|FAK cDB@4EU\4p4#EX44cFED D(G0B(A ABB(4cPED eDG$4RFDG qHB(5cPED eDGD5 X5 l5 \5PIE A(A0s(C GBBg0A(H GDB55Fn5 EV46gFDG u ABG AHI4P6cFED D(G0B(A ABBH6FFB A(A0N (A BBBK A(H GDB$6QFDG pHB(6cOED fDG(7 <7 P7d7HO|7AEw7BEn M A7gF`7=Es79Lc( 8ILCG dCA,88PDD nFFh8 |8 8-Ec,8+FAI  ABA 08FDA D0  DABG D9FEE B(A0D8D@h8A0A(B BBBLX9FBB B(I0A8G ! 8D0A(B BBBE L9-FLM G(A0A8F> 8D0A(B BBBA 9( :FFDP ABE 8:](L:FFD` ABE (x:&FAD` DBE H:FBE B(A0A8G8D0A(B BBB,:rFED O0J ABBH ;FGB B(A0A8G8A0A(B BBBLl;RFBB B(A0A8G 8A0A(B BBBG $;FANPiDB;h;X< <FBB D(A0DPs0D(A BBBL<7H`<HEE B(A0G8M8A0A(B BBB(<D IE `L<?FEB B(A0A8D 8D0A(B BBBF 4(=FAA  ABE QCBx`=FSB E(D0H8DHMPhHA@bH\PQXD`DhGpDIDIM@ 8A0A(B BBBG @=FBB D(A0GP| 0A(A BBBF H >FBB B(A0D8G` 8D0A(B BBBJ (l>[FGD g BBD H>FBB E(A0D8Gp& 8D0A(B BBBB 8>FEG D(D0D (D BBBH  ?EO( 0A(A BBBF 0A(A BBBd0Y^FFB B(A0C8D6 8A0G(E FBBK  8A0A(B BBBH `YFME B(A0A8FW 8A0A(B BBBE 8A0A(B BBBYZ $ZC(8Z'gb FD &8dZ/FGF A(G@ (A ABB@ZFGE A(D0D@ 0A(A BBEE HZFBB B(A0A8D8A0A(B BBB(0[,EAGAA(\[ahKSpAAB([q}IIpAAK8[-FBA A(G(A ABB["\*d\FGB E(D0D8D 8A0A(B BBBH k 8A0A(B BBBK d\+FBG B(D0C8L 8A0A(B BBBH ] 8A0A(B BBBI P\OKE D(D0DPm0A(A BBBHAPd<]hFBE E(A0C8G 8A0A(B BBBD  8A0A(B BBBI ]FH}] ] ] (]EDG  AAE $^*8^ L^d0ed^ x^!^4^BEAG DAR GAA8^AWDD AAJ DAAJ_n(_^(<_FHA ABh_d(|_EDD@ AAJ __0_8_TFM$`_FAG FDB8(`FED D(D0D (A ABBG (d`|EDD0O AAB ``S i D L `~EM ] ED <`ED E AA a AF D DH D EG L(a~FEB B(A0A8G 8A0A(B BBBB xa+aa aa'H^a abb 80bFJF F(G (A ABBG Llb FKI B(I0M8K 8D0A(B BBBA b b^EXbeLTDckFED D(G0V8J@8A0T(F ABBD\cFED D(G@]HJPHA@U(F ABBTc)FEE B(D0D8GP`XJ`XAP68F0A(B BBB8cFBK A(J` (A ABBF 8d LdH w A hdH  A dV,dFGA T BBA $dFAG DBTd TED D(G@ (C ABBK D (A ABBF X,HeEG0a AB D OE $xeUK uAJM e 8eUFBA A(D@  (A ABBA de}FBB B(A0A8G 8A0A(B BBBI  8F0A(B BBBE Xf5lf f f f f f f f  gD gl TMN E(A0A8 0A(B BBBJ hg |gg PgTMD D(l  EBBA E  AFBA A ABBgE h%` h FEA A(G` (D ABBA  (D ABBI T (D ABBK h `hhDhFSQ F(A0A8FP8D0A(B BBB<iFBB D(A0 (D BBBD PPiKEB D(C0H (C BBBF A(F BBBCi,<iFBB A(A0D@0A(A BBB(ifFDA PDB\$j>FBB B(D0D8D@ 8O0A(B BBBE D8A0A(B BBBLjFBG B(A0D8D 8A0A(B BBBI 8jaMED C(F0r(A ABBI\kbQGB E(A0D8DP!8A0A(B BBBAAP8pkFBA A(K0  (D ABBA $kFAG tDB,kFAA D0r AAB,lFDA N ABD H4l+FBB B(A0A8Dp 8F0A(B BBBF l*<lFEJ A(C0 (D BBBF lOlHQLmaFIB B(A0A8J  8A0A(B BBBA PmEdm xm m mSFt F R mEy B Z A m2EU F MHnFBB J(A0A8D@ 8D0A(B BBBA 8PnFBD A(D0 (D ABBE n 0Ln( FBB B(D0A8J| 8A0A(B BBBG n4oRFEJ D(D0j(D BBBHPo<FBB B(A0A8DP8F0A(B BBBo PHoFBI A(J0P (D BBBJ A(D BBBHpTFBB B(A0A8GPn 8A0A(B BBBC HTp&FBE B(A0C8D@ 8F0A(B BBBE p @4pVAA _ ABF ACBp  qaV} E H,q L@qFBB A(A0a (C BBBJ A (F BBBA q 0qTsYq qq 8rsFBA A(D0Y (A ABBA @r 08\rFBA D(O@s (A ABBK 8rFIA A(D@ (D ABBG (r@FNG0Q ABA (svFHD0q DBG (,sRFNG0I ABI (XszFHD0i DBG (sFNG0E ABE (sFHD0e DBC 8s5FBA D(O@w (A ABBG 8tYFIA A(D@ (D ABBC HTtFEB E(D0D8Kp6 8D0A(B BBBH HtFBB E(D0D8GP 8D0A(B BBBD Ht FBB E(D0D8GP 8D0A(B BBBB 8uaJKTuhu(|uEFGD@ FBH (uMFGDP FBD ,uFJA  DBH vBFBB B(H0D8DU 8A0A(B BBBE D 8C0A(B BBBH \ 8G0A(B BBBL O 8F0A(B BBBA 8vFED W DBD X EBI 0vFED G0E  ABBH 0 wFED G@L  ABBI @wTTw}FEE D(G0l (A BBBB H8L@O8A0A(A BBBLwFHB D(D0FPc 0A(A BBBG HXL`OXAPLwFHB D(D0F`o 0A(A BBBK HhLpOhA`LxC`x"HYxxFH q$x%ECH LBFxHI,xhFAF K0p EAMyEDpED yFBB G(F0K8H`8A0A(G BBB$hydEAD KAAyy4yMy<yFG pBzFG B zzFG jB@zFG B`ztzTP``, I !f ?} `PM 06PW (K @  @ ( .1G %C /`)9$TY^c {``)`F`` `&00, F`U`d` |    @X @/5pp[)y0(     :E`Eb  u (  2 P   Z  d  n  x ( @ S c0h0nsx}H@ ( tp@@ %,3:AHO@V]dkrPyPPPXTP  ) 9;N Sj%+17=CIOU[`apg(m s$y(,h  &(Ea~  H   ! 8' h- 3 9 ? E K Q  W ] c 0i @o (v (} P 8 D < @ ` p 0        0   P @ p `   % , 3 : A H O  V 0] @d Pk `r y H  p       ( P       x ,     ! ( / 6 *= :D LK cR tY ` g n u |      & A I V b t  H  8 P L 0 4 ( P'  H) # * 1 8 ? F 2M T 2[ 2b X7i @p w ~     + 2 ; X T \ ` t d h p l x |   0 H  @ & - 4 ; ;B >I HP ^W e^ pe {l s z      M N 8N N  M hN N X ` ` O O N  HQ")07>hELSpZahxov} QQxQRhR #P@ %P>@3[Kv >`3S00 /` T w`  g` 0,+18?OOVgl   0 @P ` 8`Q_s) Q6 HkV<g@Cu *c@0p) - /#@S e{@ P `0i @0`EZ@! xP! `! p!$! ! !j%0#xA# a# x# #$ $$ %-&='MY\fn|*+0r020m@1}%.=N_p3Vx5|P6 `6%6 66%6 7/ 7)OP7!e7)7(78j9  92 `9/p92O9 d9"x9O@: P:?h::8: ;S`;_ ;&;A<Y < r0<wACD+D DH7KmXLwMQ`MrNP/P+PS<@R7ZTKrTS0U ^C_K`_`3@`b `.'aZ?@bWboc"eI0fVgxjjk+kO$0n:o}KsXptqivwx!x\ yhyVzup{{\{ ||'.4 ~A0Q bs(q 8 0 8B T p!g  @R  @Q  @Q  @J!!P*!?! LV!pj!0~!!=!ЭS!0!0>!p!U""8"T"m"0"P""c"z"F"n#PE#,#<#0M#U#оp##`##@#K## $$31$E$b$0x$$0a$$@0$$p$$%*% +% @% P%rd%+r%0%4% 3%`O%_%%0 %@%` &p &0&3&H&X&l&5z&=& V&I&&$&<&<&@<&<'/'20'0/@'`T'Yb'PQs'H''Q'U''p''''pM'M( /(06B(T(b(p y(( (((( () ),) D)U)@k)z)) )0 )@ ))P ) *` **A*pF]*p*F**F**`F+++FT+s+F++PI++!, , ,:, V,i, ,, ,,0,@\,-#-6-H-]-5v--A-- A-p#--x.*. EI.pVi.}..3..0q...@/ 1/ K/k// p/////0"0(?0d080/0 00011;1Y1u11P11 1@1`|2!272H2]2k2 #z2Pc2c220R22c2 3 %3  730E3c35r3  3@g333c3 3Q3c4 (4 >4O4\4n4{4A44 B444pg4505O5k5=5 95` I55 5`  5p  6 -.6 +B6 c666 666@-6p!6"7#]7 &(7'&47?7@(i70,r7,7p1R767`7h87X808;887[8:o8>8@?8H8I88`L8 9929E9]9q9M999999::O[B:pOT:Qq:@R:`R7::::R :R ;(;RD;U;Rq;;R;;S;;0S<<PS.<`S K<\<pS z<<S <<S <<S ==S3=D=Sb=s=S==T =T = TG= =pV>W">:> ] J>0] d>@] >P] >`] >p] >] >] >] ?]E?^ /?^I? ^ d?0^ w?@^ ?P^ ?`^ ?p^?^ ?^2@^ &@^ ;@_^@_y@ _@0_1@p_ @_7@_ A_7A` 9A `QA@`iA``A`A` A` A`A`Aa B aAM(B-BpfGBiRbBiBjB j B0j C@j<=Cj kCj Cj CjCjCjDj0-Dl+MD@lfbDl|xD0mXDmEDmZD@nGDnGEn ;En WEo sEo@EPo E`o Epo Eof Fo!Fp 9Fp WFpqFp FpFqFqFFFsGGt/GtBGwVGPx rG`x Gpx\GxGyG@zHz-H|YHp~HHH0H;H 2H`H@ IP &I` :Ip QI#jIIЌ II%II0$J` RJpdwJ}J`SJJ)J:JJ0JK@K0K>KJKpr[KhK {KLKKKPK`KJKLP+LOLzL  L0)L`LL:LM?M@ (MPOFM<]MrMmMM`QMhM0OMNNлpN@.9Np&WNlNNN.N0&N`N7OY2O OOgOpO O@dO"O"P"CP@eP 3zP`;PP PP/P=Q 5!Q`@Q;YQ;nQ;Q@pQ^QQQ RCR '5R/LR@mR@ R` ,R aRqR- S"1S*WSuS+SShS FSp  S  T  3T JT0"*gT`" Tp"T# T#!T@#T`#BU$A4U&nWUp'^{U(U)dUP/Up3U30VV388V3TNVP4_eV4~V@5|V5V5V`7~W8:W@W9~YW_WB+yW@CWPC W`CWC'WC XC,XCMXC uXCXF XP^XQeXpQkYR?YT)cYVuY{YZ Y[Y[YP\VY\Y@^Y^ Z_#ZaAZb ZZbUkZd}Zl5Zl Zl Zl Zl Zm [m )[ m B[0m d[@mu[tl [p [[ [[%[ \\"\C\ o\\,\]pf#]>F] f]0a]b]]]P%^D^+`^*{^^O^0a^E_ F_ g_ _ S__02_p ``@( 4`<`pRI`<``m`T`&`0`a`0`T`0`P a`sa*a@a`@Xavna Razaaa5aYb b*b >baRbpib{bEb@MbbBbbbc.c}Mc nccCc"c0Fc% d)dhEd@ad}ddd0dP4dMd<d  e$e@z[kJ[k[\F\dF;\\Fl\\F\\F6]\"^\;^\FT^\l^\v^^^^&_ o__H`R`,saRcR+dZVdZeZmmnQnrQrZssQlttSvQ#vRvDwQVwww!xSxxy,yRD{Y|_0|V5|:<|Y$}R1}as}z}R}Z}}R}a}bRZށreڂR_:R:ք:Ig_ą:ӅR:0::RوZCRRR,E,,,,ލ,ZYHŏkYZӐ\&RZ \&d&h&&p&1t&:|&C\&OlZR’ɒg֒RZlZglvZZMZh?,1U֚ ! / / / z*c dRq{SmƩS.mԪRRR&.M})Yɵ(>Y۷ z,ezvRR'1;CP0R H%XZ)Z 5GYRJYBYRfY:u"=uZRRRRRf]vR1},Rh")BQ  2a Ff<DK>C.3~)4OZu 3Lav CR#E^s*:J_tGVJ)>K6C 8Ia$ &GWg)8aq)^0152T2r222341?$GZ$b$$$$"-5>o$w01Cp22341$*$2:HS5m$162C1K]h3s4$$$5;]=$bw$$;$,1<=K]h3=1Wt1B,11DB1sHIK 1I?sP VjR~Rh~XH3KX\j]|IK_PlR5IR[cfg KKi( 7kLlUk|nkHHop2o=p`okpopqpK K i3 kH lQ kz k u k  & D      C N Z    R7?R}Qc:H]ydt|}Ipz !)}As} FSLC[w#Ed`,U8RzRVM j ;!J!R"R"l$#4#E#[#k#l##$R@%n%m`&p&&&&n&m&''/'pX'al'r't''m' '( (#(z*R++n,z,--,M.,.,//W0,000G2R2J22R3,4R85~]5i5~56"666 7z>7F7{7R7R[8X:zr::];,;,&<,^=p==,0>8>@>HBvPBR^BqlBsBuB8CCCSDEa]GGGGGGGGGH H!H-HAHMHeHqHHRHHHI Im1Io=IIIUIaImIyIIIIIII\J J"JSKbKtK|KKKKKKK+LBLMLLLLLM#M6MGM]MtM{MMMM NN-N@NINNNNNNNNO O"O5O@OVOOOPP#P3P;PUPhPsP|PPPPPQQ)Q>QGQPQ[QlQsQQQQQQQR-RLRuRRRRRRRRS=SZShSxSSSSSSSQTdTTT!U]UUUUUUUUUUVV5VV$VV$VVV6WWWWWWWWXJX]XhXsXXXXXYLY_YjYuYYYY Z/ZpZZZZZ[[A[d[[[[[\*\;\_\\\\\\]]]]^^g^^[^ROaVfayaR4b,b,bwb,dZ+eIfNfXf]ff f\ff f f fg gg.g5gJgQgfgmggggggggggghh*h1hFhMhbhih~hhhhhhhhhh i9iIiiiiPj]Zj]NlUlxalyl$ll$lm$m[m$cmm$mm n$nbn$jnznn$nn1o$9oo-p6q$Hq_qyqqqqqq rrkrrrr%)s8sSsgs&usssss&sss t&t)t:tPt'btkytltkt'tu@uGaup}uturuauumvv&v7v\Hv Pv\v!avhvuv|v"vv#vv$vv%vv&vw'jwwwwKwwwxKxK,xi4x=xxxx/yEyPYygyyyPzzzzPzz{(8{{{{1|G|PT|r|(|)}}}}~P~#~)C~c~)~8O\P+'@ـ-P:H'y''ׁP\'̂"&.6ZRZRrʃ݃klk8K*Rzo}mz<++,,",Y,҇,,$-,.DLU+,m)/0 7<L0Udw~12ʼn̉3܉45 6!(78|$KKiҊKKi$ .GS-%5CK^ʍ؍ k3l;kFCm$& !> .:G8;tCLÔДؔOajr{Е L97 Ul| P:  =RU:T$ɗH$PfW֙(\X; &i՜(Sg<QX_~ginS՞\{\nkH!4HGdolpopoȠpopq!p*<1=6lK~Kiˡ  ' C[M g   âiѢߢa S~%b>|R <kC Te   ¤ɤ ؤߤ ?  $@,BI PA_u| B ΥC DUnu E¦ F&- I&U\ n{ k lkŧ̧ #* W  f ح ;}i4cR,ԯV,MV| ±iܱ7iHiZi ߳izkkvl, VH u iз  i$U ai{ iʻۻ "i<G w  ǽ   7 g  wf~ i~ nfu i~' sfz i~ HfO { f ' bfi f f f" S i }vl, VC m Wt 5Ro Khvl, V   >Rg,V,3VgG G G +Gw ,.,,5,RVH1IvIjJwHJ Fv5 Q,, G' JK+DKLKBdKpK-VXLaMNWOe K(7MKVDZObNj PK$XK<KMZVVK-<MDK(M0atK|6EKTVVMK?NMKM0\kON DUKKKPMKV5`tK|6MRhVpKKM1JapN PO \KdK5DMKV$MTdK!7O?N` KP_KgM /KWO NKNMqKVKPMKKK9HKPMM$K,M4UdKlVK$MtKV4M<TdMpWQK8GKOVKV.ixMKPy=f7m rZ Of f  k ,X , ,9 r Rx R RRRNRRGZR]  RL ] _RH (R *2RDv8yYR  vyR J ly|y. J b R !&!0!""D"dK" " "S# #R$ $R,&RL&&W&W&W&W' 'R'(W (WL(WW(Wf( ((()~)_)TK+OS+W/W/ /)0W10m0 00011OF1 o1111O11 1X2.2E2c2 k2{2U2W2W222 2:3B3N3WV3V^3c333 424mv4K4K4i445W55W6v6R6v&7aT7v7Rt8X8a88 99949Y99 ::!:):H:Yz::::,:,;*;ZI;[_;,;;V;TB<aS<,<<X<,<<X =,<=d=au=,==X=,>>X->,i>>>P? I@r@@@ @@4AYBC-DawDDD*EBEzEEEEdFFFF{GGGHVDJdJJzJJJJVK`KKKLR"LRLLR`LRLL M)MaMMMM N>NXNNNNN O*OQO{OOOOO P=P]PkPzPPP\P PP]P PP^P PQ QQ#Q 0Q8Q?Q LQTQ[Q Q QQQQ Q_QQ R&RR &R`1R>RER PRa_RmRR RRRRR S0SSS^S&iSpS wSbSSS&SS ScSSS SaSTT TdT)TRT dTtTTTT TTU&UU "Ue.U;UFU&QUXU _UfkUxUUgUUU&UU UUV VhV&V-V 8VaKVXVV VVVVViVqWWWWjWXk/XPXjXlXXXX Y*YQYmYYYYYmYVZnZnZZoZZpZZq[[#\F\\\r]sA]mS]g]tx]]]]]]u]v^^w0^:^`^o^w^^K^K^i^^^_x_._7_y=_O_`_zl_z__k_l_k_ga{aaybedxdddzd|eReZfR@fRlfRfRsg,Qh,jZjRAkZ^kRk"lblNm}Vm_mRn~'n>nEnFoZQoZoZoZ1pZ=pZpZpZ qZ,qZqZqZqZrZ`rZkrZ t}t&tR2u]uKuvV{}RR4Rez}ۃR"R^RDŽ+fL|lRdRߎDˏ܏R,4LRwRƒR֒RR MjޓuӔ+(_Ɩ Ar'_5=M_d_i9qc:W&HX}ɟݟj$?]~۠)1:y_zأZ>zǨ Ei%<Uϵ 1jrz׶߶quz(Hɺ+Q4tCdKU{ο *I_co-T^fS4Ch u.Ri ([#>]siHoY>_ni Bd9yiHgs$$9&`i&PX$&P *1WG #6?HQZb 8Rw )2;CV_hqzHb  '09BKT\ox )2;DM1$4x540Y5tS5n _Ea_at_&-:B` _Xie~p{i~8,OisZ,ZX,t}ZiVReZ*cU\l2EU!L$e$$$$0"56:{buHXh  (V<   URV^i(mpLxDŽ33fe<Nޗڡu 34CP3aQZ^UE3Җ IK^,13$I383.d3B3L]3V@3`3j3t3~3V--. -P-/TX \$`(d,h0<4p8t<x@|DH$LhPTX\`Ldh$lptpx\|D @84`0L ht<@D HLP` L$P(,048<@lDHLP|TX\\0`\dhlp,tx|ď0lm$~N!  R 4 P@P `$80`  L`  `  , @ 0`P D00 D0X@lP` `4 h|@,Dp@p  (@<PP`0 4  T `l  @! P! `! p! !$ !8 ! 0# # # # # $  $ $4 %X &| ' ( *4 +  . 0 0 0( @1t 1 p3 5(P6<`6P6d6x667 7P7777D8h9| 9`9p9999@:P::4:P:d;x`;;;< <0<ADChD|DDHDKXLlM`MNPPP(@RtTT0U^_`_<`P@`d`|a@bbce0fg$j`jtkk0noLspptvx0xD yXy|zp{{{| ~00D `|4 $Llp @4@@L@P$p p0tЭ00pPd0P@ T h |  P  !0H!о!!`X""@#0P#d#0# $\$$$4%P%0d%x%0%%@%p%%% & &4&H&d&x&&& &`&&&0'@$'`8'pL'`'t'''''' '(,(@(T(h(@|((((0(`((P)$)@)X)t)p))p)*0* D*0d*px******+ (+0<+@P+Pd+`x+p++,`H,|,,P,-$-<-P-d- x-0-@-@.\.. /p|// /p 0(0P0000@101D1X1l1 11D2\2x2 2233,33P3 4@4`D4`4t4 4P4405H5\5p5 5056 6@T66 67,7@7T7h777 7p77 8` <8 l8` 8p 8 8 8 9\9 9@9p!:"<:#P: &|:':@(:0,$;,p;p1;6;`7;7<08P<8d<:<><@,=Hd=I=`L$>Mp>O>pO>Q$?@R@?`Rl?R?R?R?R?R?S?0S?PS @`S @pS4@SH@S\@Sp@S@S@S@T@T@ T ApVLAWA ]A0]B@]BP],B`]@Bp]TB]hB]|B]B]B^B^B ^B0^B@^ CP^ C`^4Cp^HC^\C^pC^C^C_C_C _C0_Cp_C_D_$D_8D`LD ``D@`tD``D`D`D`D`D`DaE a8EpfEiEiEjE jE0jF@jFj(Fj