From 790caa8316ba546741dc2ee8c7e86ab11da6277c Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Wed, 30 Jul 2025 19:04:49 +0200 Subject: [PATCH] [flutter] Merge web_ffi_fork sources into spine-flutter, fix web build. --- .gitignore | 1 + spine-flutter/codegen/src/dart-writer.ts | 4 +- .../ios/Flutter/AppFrameworkInfo.plist | 2 +- spine-flutter/example/ios/Podfile | 2 +- spine-flutter/example/ios/Podfile.lock | 8 +- .../ios/Runner.xcodeproj/project.pbxproj | 8 +- .../example/ios/Runner/AppDelegate.swift | 2 +- .../Flutter/GeneratedPluginRegistrant.swift | 1 + spine-flutter/example/pubspec.lock | 10 +- spine-flutter/example/pubspec.yaml | 2 +- spine-flutter/lib/assets/libspine_flutter.js | 490 +++-- .../lib/assets/libspine_flutter.wasm | Bin 409934 -> 544248 bytes spine-flutter/lib/ffi_proxy.dart | 5 +- spine-flutter/lib/ffi_utf8.dart | 2 +- .../lib/generated/alpha_timeline.dart | 2 +- spine-flutter/lib/generated/animation.dart | 3 +- .../lib/generated/animation_state.dart | 3 +- .../lib/generated/animation_state_data.dart | 3 +- spine-flutter/lib/generated/arrays.dart | 1643 ++++++++++++++++- spine-flutter/lib/generated/atlas.dart | 3 +- .../generated/atlas_attachment_loader.dart | 3 +- spine-flutter/lib/generated/atlas_page.dart | 3 +- spine-flutter/lib/generated/atlas_region.dart | 3 +- spine-flutter/lib/generated/attachment.dart | 3 +- .../lib/generated/attachment_loader.dart | 2 +- .../lib/generated/attachment_timeline.dart | 3 +- spine-flutter/lib/generated/bone.dart | 2 +- spine-flutter/lib/generated/bone_data.dart | 3 +- spine-flutter/lib/generated/bone_local.dart | 2 +- spine-flutter/lib/generated/bone_pose.dart | 2 +- .../lib/generated/bone_timeline.dart | 2 +- .../lib/generated/bone_timeline1.dart | 2 +- .../lib/generated/bone_timeline2.dart | 2 +- .../generated/bounding_box_attachment.dart | 3 +- .../lib/generated/clipping_attachment.dart | 3 +- spine-flutter/lib/generated/color.dart | 3 +- spine-flutter/lib/generated/constraint.dart | 2 +- .../lib/generated/constraint_data.dart | 2 +- .../lib/generated/constraint_timeline.dart | 2 +- .../lib/generated/constraint_timeline1.dart | 2 +- .../lib/generated/curve_timeline.dart | 2 +- .../lib/generated/curve_timeline1.dart | 2 +- .../lib/generated/deform_timeline.dart | 3 +- .../lib/generated/draw_order_timeline.dart | 2 +- spine-flutter/lib/generated/event.dart | 3 +- spine-flutter/lib/generated/event_data.dart | 3 +- .../lib/generated/event_queue_entry.dart | 2 +- .../lib/generated/event_timeline.dart | 2 +- .../lib/generated/from_property.dart | 2 +- spine-flutter/lib/generated/from_rotate.dart | 2 +- spine-flutter/lib/generated/from_scale_x.dart | 2 +- spine-flutter/lib/generated/from_scale_y.dart | 2 +- spine-flutter/lib/generated/from_shear_y.dart | 2 +- spine-flutter/lib/generated/from_x.dart | 2 +- spine-flutter/lib/generated/from_y.dart | 2 +- .../lib/generated/ik_constraint.dart | 2 +- .../lib/generated/ik_constraint_data.dart | 3 +- .../lib/generated/ik_constraint_pose.dart | 2 +- .../lib/generated/ik_constraint_timeline.dart | 2 +- .../lib/generated/inherit_timeline.dart | 2 +- spine-flutter/lib/generated/linked_mesh.dart | 2 +- .../lib/generated/mesh_attachment.dart | 3 +- .../lib/generated/path_attachment.dart | 3 +- .../lib/generated/path_constraint.dart | 2 +- .../lib/generated/path_constraint_data.dart | 3 +- .../path_constraint_mix_timeline.dart | 2 +- .../lib/generated/path_constraint_pose.dart | 2 +- .../path_constraint_position_timeline.dart | 2 +- .../path_constraint_spacing_timeline.dart | 2 +- .../lib/generated/physics_constraint.dart | 2 +- .../physics_constraint_damping_timeline.dart | 2 +- .../generated/physics_constraint_data.dart | 3 +- .../physics_constraint_gravity_timeline.dart | 2 +- .../physics_constraint_inertia_timeline.dart | 2 +- .../physics_constraint_mass_timeline.dart | 2 +- .../physics_constraint_mix_timeline.dart | 2 +- .../generated/physics_constraint_pose.dart | 2 +- .../physics_constraint_reset_timeline.dart | 2 +- .../physics_constraint_strength_timeline.dart | 2 +- .../physics_constraint_timeline.dart | 2 +- .../physics_constraint_wind_timeline.dart | 2 +- .../lib/generated/point_attachment.dart | 3 +- spine-flutter/lib/generated/polygon.dart | 2 +- spine-flutter/lib/generated/posed.dart | 2 +- spine-flutter/lib/generated/posed_active.dart | 2 +- spine-flutter/lib/generated/posed_data.dart | 3 +- .../lib/generated/region_attachment.dart | 3 +- .../lib/generated/render_command.dart | 2 +- .../lib/generated/rgb2_timeline.dart | 2 +- spine-flutter/lib/generated/rgb_timeline.dart | 2 +- .../lib/generated/rgba2_timeline.dart | 2 +- .../lib/generated/rgba_timeline.dart | 2 +- .../lib/generated/rotate_timeline.dart | 2 +- spine-flutter/lib/generated/rtti.dart | 3 +- .../lib/generated/scale_timeline.dart | 2 +- .../lib/generated/scale_x_timeline.dart | 2 +- .../lib/generated/scale_y_timeline.dart | 2 +- spine-flutter/lib/generated/sequence.dart | 3 +- .../lib/generated/sequence_timeline.dart | 3 +- .../lib/generated/shear_timeline.dart | 2 +- .../lib/generated/shear_x_timeline.dart | 2 +- .../lib/generated/shear_y_timeline.dart | 2 +- spine-flutter/lib/generated/skeleton.dart | 3 +- .../lib/generated/skeleton_binary.dart | 3 +- .../lib/generated/skeleton_bounds.dart | 2 +- .../lib/generated/skeleton_clipping.dart | 2 +- .../lib/generated/skeleton_data.dart | 3 +- .../lib/generated/skeleton_json.dart | 3 +- .../lib/generated/skeleton_renderer.dart | 2 +- spine-flutter/lib/generated/skin.dart | 3 +- spine-flutter/lib/generated/slider.dart | 2 +- spine-flutter/lib/generated/slider_data.dart | 3 +- .../lib/generated/slider_mix_timeline.dart | 2 +- spine-flutter/lib/generated/slider_pose.dart | 2 +- .../lib/generated/slider_timeline.dart | 2 +- spine-flutter/lib/generated/slot.dart | 2 +- .../lib/generated/slot_curve_timeline.dart | 2 +- spine-flutter/lib/generated/slot_data.dart | 3 +- spine-flutter/lib/generated/slot_pose.dart | 3 +- .../lib/generated/slot_timeline.dart | 2 +- .../spine_dart_bindings_generated.dart | 1129 ++++------- .../lib/generated/texture_region.dart | 2 +- spine-flutter/lib/generated/timeline.dart | 2 +- spine-flutter/lib/generated/to_property.dart | 2 +- spine-flutter/lib/generated/to_rotate.dart | 2 +- spine-flutter/lib/generated/to_scale_x.dart | 2 +- spine-flutter/lib/generated/to_scale_y.dart | 2 +- spine-flutter/lib/generated/to_shear_y.dart | 2 +- spine-flutter/lib/generated/to_x.dart | 2 +- spine-flutter/lib/generated/to_y.dart | 2 +- spine-flutter/lib/generated/track_entry.dart | 2 +- .../lib/generated/transform_constraint.dart | 2 +- .../generated/transform_constraint_data.dart | 3 +- .../generated/transform_constraint_pose.dart | 2 +- .../transform_constraint_timeline.dart | 2 +- .../lib/generated/translate_timeline.dart | 2 +- .../lib/generated/translate_x_timeline.dart | 2 +- .../lib/generated/translate_y_timeline.dart | 2 +- spine-flutter/lib/generated/update.dart | 2 +- .../lib/generated/vertex_attachment.dart | 3 +- spine-flutter/lib/io_stub.dart | 16 + spine-flutter/lib/malloc_native.dart | 1 + spine-flutter/lib/malloc_web.dart | 11 + spine-flutter/lib/native_array.dart | 6 +- spine-flutter/lib/spine_dart.dart | 58 +- spine-flutter/lib/spine_dart_init_web.dart | 245 ++- spine-flutter/lib/spine_flutter.dart | 13 +- spine-flutter/lib/web_ffi/ffi/extensions.dart | 253 +++ spine-flutter/lib/web_ffi/ffi/types.dart | 418 +++++ spine-flutter/lib/web_ffi/ffi/utf8.dart | 89 + .../web_ffi/internal/invoker_generated.dart | 1089 +++++++++++ .../lib/web_ffi/internal/marshaller.dart | 278 +++ .../lib/web_ffi/internal/type_utils.dart | 55 + spine-flutter/lib/web_ffi/meta/meta.dart | 35 + .../modules/emscripten/emscripten_module.dart | 186 ++ .../emscripten/emscripten_module_stub.dart | 68 + .../lib/web_ffi/modules/exceptions.dart | 17 + spine-flutter/lib/web_ffi/modules/memory.dart | 123 ++ spine-flutter/lib/web_ffi/modules/module.dart | 107 ++ .../lib/web_ffi/modules/null_memory.dart | 18 + spine-flutter/lib/web_ffi/web_ffi.dart | 7 + spine-flutter/lib/web_ffi/web_ffi_meta.dart | 4 + .../lib/web_ffi/web_ffi_modules.dart | 10 + spine-flutter/pubspec.yaml | 3 +- 164 files changed, 5480 insertions(+), 1224 deletions(-) create mode 100644 spine-flutter/lib/io_stub.dart create mode 100644 spine-flutter/lib/malloc_native.dart create mode 100644 spine-flutter/lib/malloc_web.dart create mode 100755 spine-flutter/lib/web_ffi/ffi/extensions.dart create mode 100755 spine-flutter/lib/web_ffi/ffi/types.dart create mode 100644 spine-flutter/lib/web_ffi/ffi/utf8.dart create mode 100755 spine-flutter/lib/web_ffi/internal/invoker_generated.dart create mode 100755 spine-flutter/lib/web_ffi/internal/marshaller.dart create mode 100755 spine-flutter/lib/web_ffi/internal/type_utils.dart create mode 100755 spine-flutter/lib/web_ffi/meta/meta.dart create mode 100755 spine-flutter/lib/web_ffi/modules/emscripten/emscripten_module.dart create mode 100755 spine-flutter/lib/web_ffi/modules/emscripten/emscripten_module_stub.dart create mode 100755 spine-flutter/lib/web_ffi/modules/exceptions.dart create mode 100755 spine-flutter/lib/web_ffi/modules/memory.dart create mode 100755 spine-flutter/lib/web_ffi/modules/module.dart create mode 100755 spine-flutter/lib/web_ffi/modules/null_memory.dart create mode 100755 spine-flutter/lib/web_ffi/web_ffi.dart create mode 100755 spine-flutter/lib/web_ffi/web_ffi_meta.dart create mode 100755 spine-flutter/lib/web_ffi/web_ffi_modules.dart diff --git a/.gitignore b/.gitignore index 25a4f2531..ffe9fa7cf 100644 --- a/.gitignore +++ b/.gitignore @@ -259,3 +259,4 @@ spine-cpp/build-linux spine-cpp/build-release-debug spine-flutter/test/spine_flutter.dylib spine-c/codegen/nullable.md +spine-c/.docker-built diff --git a/spine-flutter/codegen/src/dart-writer.ts b/spine-flutter/codegen/src/dart-writer.ts index 41835ab6a..e7c87c9f9 100644 --- a/spine-flutter/codegen/src/dart-writer.ts +++ b/spine-flutter/codegen/src/dart-writer.ts @@ -1611,8 +1611,8 @@ ${declaration} {`; lines.push('// ignore_for_file: type_argument_not_matching_bounds'); lines.push(`import 'package:flutter/services.dart';`); lines.push(`import 'package:inject_js/inject_js.dart' as js;`); - lines.push(`import 'package:web_ffi_fork/web_ffi.dart';`); - lines.push(`import 'package:web_ffi_fork/web_ffi_modules.dart';`); + lines.push(`import 'web_ffi/web_ffi.dart';`); + lines.push(`import 'web_ffi/web_ffi_modules.dart';`); lines.push(''); lines.push(`import 'generated/spine_dart_bindings_generated.dart';`); lines.push(''); diff --git a/spine-flutter/example/ios/Flutter/AppFrameworkInfo.plist b/spine-flutter/example/ios/Flutter/AppFrameworkInfo.plist index 9625e105d..7c5696400 100644 --- a/spine-flutter/example/ios/Flutter/AppFrameworkInfo.plist +++ b/spine-flutter/example/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 11.0 + 12.0 diff --git a/spine-flutter/example/ios/Podfile b/spine-flutter/example/ios/Podfile index 88359b225..279576f38 100644 --- a/spine-flutter/example/ios/Podfile +++ b/spine-flutter/example/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '11.0' +# platform :ios, '12.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/spine-flutter/example/ios/Podfile.lock b/spine-flutter/example/ios/Podfile.lock index 552d24f2f..ef078a776 100644 --- a/spine-flutter/example/ios/Podfile.lock +++ b/spine-flutter/example/ios/Podfile.lock @@ -14,9 +14,9 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/spine_flutter/ios" SPEC CHECKSUMS: - Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 - spine_flutter: 25063c3b7039f2fc0986b260b801a8bbc8906a3f + Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 + spine_flutter: 6181f4ff23c3d7b53a656057e290c8f76f304a2a -PODFILE CHECKSUM: ef19549a9bc3046e7bb7d2fab4d021637c0c58a3 +PODFILE CHECKSUM: c4c93c5f6502fe2754f48404d3594bf779584011 -COCOAPODS: 1.11.3 +COCOAPODS: 1.16.2 diff --git a/spine-flutter/example/ios/Runner.xcodeproj/project.pbxproj b/spine-flutter/example/ios/Runner.xcodeproj/project.pbxproj index 664dc88cf..d80742828 100644 --- a/spine-flutter/example/ios/Runner.xcodeproj/project.pbxproj +++ b/spine-flutter/example/ios/Runner.xcodeproj/project.pbxproj @@ -156,7 +156,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1430; + LastUpgradeCheck = 1510; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { @@ -343,7 +343,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -420,7 +420,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -469,7 +469,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/spine-flutter/example/ios/Runner/AppDelegate.swift b/spine-flutter/example/ios/Runner/AppDelegate.swift index 175629709..e4c5e5fdc 100644 --- a/spine-flutter/example/ios/Runner/AppDelegate.swift +++ b/spine-flutter/example/ios/Runner/AppDelegate.swift @@ -1,7 +1,7 @@ import Flutter import UIKit -@UIApplicationMain +@main @objc class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, diff --git a/spine-flutter/example/macos/Flutter/GeneratedPluginRegistrant.swift b/spine-flutter/example/macos/Flutter/GeneratedPluginRegistrant.swift index bfa0333a3..cccf817a5 100644 --- a/spine-flutter/example/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/spine-flutter/example/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,5 +5,6 @@ import FlutterMacOS import Foundation + func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { } diff --git a/spine-flutter/example/pubspec.lock b/spine-flutter/example/pubspec.lock index d38ecc27e..dc1bdaa9e 100644 --- a/spine-flutter/example/pubspec.lock +++ b/spine-flutter/example/pubspec.lock @@ -169,7 +169,7 @@ packages: path: ".." relative: true source: path - version: "4.2.36" + version: "4.3.0" string_scanner: dependency: transitive description: @@ -202,14 +202,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" - web_ffi_fork: - dependency: transitive - description: - name: web_ffi_fork - sha256: "557b3008bb3c8547ee63eac6e53c0ebebb443da9d7558b3f1b98e1ed59989a11" - url: "https://pub.dev" - source: hosted - version: "0.7.5" sdks: dart: ">=3.7.0-0 <4.0.0" flutter: ">=3.27.1" diff --git a/spine-flutter/example/pubspec.yaml b/spine-flutter/example/pubspec.yaml index d75e4de07..271a0b133 100644 --- a/spine-flutter/example/pubspec.yaml +++ b/spine-flutter/example/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 1.0.0+1 environment: - sdk: '>=2.17.6 <4.0.0' + sdk: '>=3.0.0 <4.0.0' flutter: ">=3.16.0 <4.0.0" dependencies: diff --git a/spine-flutter/lib/assets/libspine_flutter.js b/spine-flutter/lib/assets/libspine_flutter.js index 179af7fc3..619ffeb0b 100644 --- a/spine-flutter/lib/assets/libspine_flutter.js +++ b/spine-flutter/lib/assets/libspine_flutter.js @@ -18,118 +18,390 @@ var O=(c,d=0,e=NaN)=>{var g=d+e;for(e=d;c[e]&&!(e>=g);)++e;if(16L(`Assertion failed: ${c?O(A,c,void 0):""}, at: `+[d?d?O(A,d,void 0):"":"unknown filename",e,g?g?O(A,g,void 0):"":"unknown function"]);a.___assert_fail=P;var Q=()=>L("");a.__abort_js=Q;a.getHeapMax=()=>2147483648;a.alignMemory=(c,d)=>Math.ceil(c/d)*d;var R=c=>{c=(c-w.buffer.byteLength+65535)/65536|0;try{return w.grow(c),H(),1}catch(d){}};a.growMemory=R; var S=c=>{var d=A.length;c>>>=0;if(2147483648=e;e*=2){var g=d*(1+.2/e);g=Math.min(g,c+100663296);if(R(Math.min(2147483648,65536*Math.ceil(Math.max(c,g)/65536))))return!0}return!1};a._emscripten_resize_heap=S;var T=[null,[],[]];a.printCharBuffers=T;var U=(c,d)=>{var e=T[c];0===d||10===d?((1===c?ba:v)(O(e)),e.length=0):e.push(d)};a.printChar=U;a.flush_NO_FILESYSTEM=()=>{T[1].length&&U(1,10);T[2].length&&U(2,10)};a.SYSCALLS={h:void 0,g(c){return c?O(A,c,void 0):""}}; var V=(c,d,e,g)=>{for(var f=0,n=0;n>2],W=D[d+4>>2];d+=8;for(var K=0;K>2]=f;return 0};a._fd_write=V;a.ptrToString=c=>"0x"+(c>>>0).toString(16).padStart(8,"0"); -var X={__assert_fail:P,_abort_js:Q,emscripten_resize_heap:S,fd_write:V},Y=await (async function(){I++;var c={env:X,wasi_snapshot_preview1:X};M??=q+"libspine_flutter.wasm";try{return Y=(await ea(c)).instance.exports,a.wasmExports=Y,w=Y.memory,H(),I--,0==I&&J&&(c=J,J=null,c()),Y}catch(d){return h(d),Promise.reject(d)}}());a._spine_enable_debug_extension=Y.spine_enable_debug_extension;a._spine_major_version=Y.spine_major_version;a._spine_minor_version=Y.spine_minor_version; -a._spine_report_leaks=Y.spine_report_leaks;a._spine_color_get_r=Y.spine_color_get_r;a._spine_color_get_g=Y.spine_color_get_g;a._spine_color_get_b=Y.spine_color_get_b;a._spine_color_get_a=Y.spine_color_get_a;a._spine_bounds_get_x=Y.spine_bounds_get_x;a._spine_bounds_get_y=Y.spine_bounds_get_y;a._spine_bounds_get_width=Y.spine_bounds_get_width;a._spine_bounds_get_height=Y.spine_bounds_get_height;a._spine_vector_get_x=Y.spine_vector_get_x;a._spine_vector_get_y=Y.spine_vector_get_y; -a._spine_atlas_load=Y.spine_atlas_load;a._spine_atlas_load_callback=Y.spine_atlas_load_callback;a._spine_atlas_get_num_image_paths=Y.spine_atlas_get_num_image_paths;a._spine_atlas_is_pma=Y.spine_atlas_is_pma;a._spine_atlas_get_image_path=Y.spine_atlas_get_image_path;a._spine_atlas_get_error=Y.spine_atlas_get_error;a._spine_atlas_dispose=Y.spine_atlas_dispose;a._free=Y.free;a._spine_skeleton_data_load_json=Y.spine_skeleton_data_load_json;a._spine_skeleton_data_load_binary=Y.spine_skeleton_data_load_binary; -a._spine_skeleton_data_result_get_error=Y.spine_skeleton_data_result_get_error;a._spine_skeleton_data_result_get_data=Y.spine_skeleton_data_result_get_data;a._spine_skeleton_data_result_dispose=Y.spine_skeleton_data_result_dispose;a._spine_skeleton_data_find_bone=Y.spine_skeleton_data_find_bone;a._spine_skeleton_data_find_slot=Y.spine_skeleton_data_find_slot;a._spine_skeleton_data_find_skin=Y.spine_skeleton_data_find_skin;a._spine_skeleton_data_find_event=Y.spine_skeleton_data_find_event; -a._spine_skeleton_data_find_animation=Y.spine_skeleton_data_find_animation;a._spine_skeleton_data_find_ik_constraint=Y.spine_skeleton_data_find_ik_constraint;a._spine_skeleton_data_find_transform_constraint=Y.spine_skeleton_data_find_transform_constraint;a._spine_skeleton_data_find_path_constraint=Y.spine_skeleton_data_find_path_constraint;a._spine_skeleton_data_find_physics_constraint=Y.spine_skeleton_data_find_physics_constraint;a._spine_skeleton_data_get_name=Y.spine_skeleton_data_get_name; -a._spine_skeleton_data_get_num_bones=Y.spine_skeleton_data_get_num_bones;a._spine_skeleton_data_get_bones=Y.spine_skeleton_data_get_bones;a._spine_skeleton_data_get_num_slots=Y.spine_skeleton_data_get_num_slots;a._spine_skeleton_data_get_slots=Y.spine_skeleton_data_get_slots;a._spine_skeleton_data_get_num_skins=Y.spine_skeleton_data_get_num_skins;a._spine_skeleton_data_get_skins=Y.spine_skeleton_data_get_skins;a._spine_skeleton_data_get_default_skin=Y.spine_skeleton_data_get_default_skin; -a._spine_skeleton_data_set_default_skin=Y.spine_skeleton_data_set_default_skin;a._spine_skeleton_data_get_num_events=Y.spine_skeleton_data_get_num_events;a._spine_skeleton_data_get_events=Y.spine_skeleton_data_get_events;a._spine_skeleton_data_get_num_animations=Y.spine_skeleton_data_get_num_animations;a._spine_skeleton_data_get_animations=Y.spine_skeleton_data_get_animations;a._spine_skeleton_data_get_num_ik_constraints=Y.spine_skeleton_data_get_num_ik_constraints; -a._spine_skeleton_data_get_ik_constraints=Y.spine_skeleton_data_get_ik_constraints;a._spine_skeleton_data_get_num_transform_constraints=Y.spine_skeleton_data_get_num_transform_constraints;a._spine_skeleton_data_get_transform_constraints=Y.spine_skeleton_data_get_transform_constraints;a._spine_skeleton_data_get_num_path_constraints=Y.spine_skeleton_data_get_num_path_constraints;a._spine_skeleton_data_get_path_constraints=Y.spine_skeleton_data_get_path_constraints; -a._spine_skeleton_data_get_num_physics_constraints=Y.spine_skeleton_data_get_num_physics_constraints;a._spine_skeleton_data_get_physics_constraints=Y.spine_skeleton_data_get_physics_constraints;a._spine_skeleton_data_get_x=Y.spine_skeleton_data_get_x;a._spine_skeleton_data_set_x=Y.spine_skeleton_data_set_x;a._spine_skeleton_data_get_y=Y.spine_skeleton_data_get_y;a._spine_skeleton_data_set_y=Y.spine_skeleton_data_set_y;a._spine_skeleton_data_get_width=Y.spine_skeleton_data_get_width; -a._spine_skeleton_data_set_width=Y.spine_skeleton_data_set_width;a._spine_skeleton_data_get_height=Y.spine_skeleton_data_get_height;a._spine_skeleton_data_set_height=Y.spine_skeleton_data_set_height;a._spine_skeleton_data_get_version=Y.spine_skeleton_data_get_version;a._spine_skeleton_data_get_hash=Y.spine_skeleton_data_get_hash;a._spine_skeleton_data_get_images_path=Y.spine_skeleton_data_get_images_path;a._spine_skeleton_data_get_audio_path=Y.spine_skeleton_data_get_audio_path; -a._spine_skeleton_data_get_fps=Y.spine_skeleton_data_get_fps;a._spine_skeleton_data_get_reference_scale=Y.spine_skeleton_data_get_reference_scale;a._spine_skeleton_data_dispose=Y.spine_skeleton_data_dispose;a._spine_skeleton_drawable_create=Y.spine_skeleton_drawable_create;a._spine_skeleton_drawable_dispose=Y.spine_skeleton_drawable_dispose;a._spine_skeleton_drawable_render=Y.spine_skeleton_drawable_render;a._spine_skeleton_drawable_get_skeleton=Y.spine_skeleton_drawable_get_skeleton; -a._spine_skeleton_drawable_get_animation_state=Y.spine_skeleton_drawable_get_animation_state;a._spine_skeleton_drawable_get_animation_state_data=Y.spine_skeleton_drawable_get_animation_state_data;a._spine_skeleton_drawable_get_animation_state_events=Y.spine_skeleton_drawable_get_animation_state_events;a._spine_render_command_get_positions=Y.spine_render_command_get_positions;a._spine_render_command_get_uvs=Y.spine_render_command_get_uvs;a._spine_render_command_get_colors=Y.spine_render_command_get_colors; -a._spine_render_command_get_dark_colors=Y.spine_render_command_get_dark_colors;a._spine_render_command_get_num_vertices=Y.spine_render_command_get_num_vertices;a._spine_render_command_get_indices=Y.spine_render_command_get_indices;a._spine_render_command_get_num_indices=Y.spine_render_command_get_num_indices;a._spine_render_command_get_atlas_page=Y.spine_render_command_get_atlas_page;a._spine_render_command_get_blend_mode=Y.spine_render_command_get_blend_mode;a._spine_render_command_get_next=Y.spine_render_command_get_next; -a._spine_animation_get_name=Y.spine_animation_get_name;a._spine_animation_get_duration=Y.spine_animation_get_duration;a._spine_animation_state_data_get_skeleton_data=Y.spine_animation_state_data_get_skeleton_data;a._spine_animation_state_data_get_default_mix=Y.spine_animation_state_data_get_default_mix;a._spine_animation_state_data_set_default_mix=Y.spine_animation_state_data_set_default_mix;a._spine_animation_state_data_set_mix=Y.spine_animation_state_data_set_mix; -a._spine_animation_state_data_get_mix=Y.spine_animation_state_data_get_mix;a._spine_animation_state_data_set_mix_by_name=Y.spine_animation_state_data_set_mix_by_name;a._spine_animation_state_data_get_mix_by_name=Y.spine_animation_state_data_get_mix_by_name;a._spine_animation_state_data_clear=Y.spine_animation_state_data_clear;a._spine_animation_state_update=Y.spine_animation_state_update;a._spine_animation_state_dispose_track_entry=Y.spine_animation_state_dispose_track_entry; -a._spine_animation_state_apply=Y.spine_animation_state_apply;a._spine_animation_state_clear_tracks=Y.spine_animation_state_clear_tracks;a._spine_animation_state_get_num_tracks=Y.spine_animation_state_get_num_tracks;a._spine_animation_state_clear_track=Y.spine_animation_state_clear_track;a._spine_animation_state_set_animation_by_name=Y.spine_animation_state_set_animation_by_name;a._spine_animation_state_set_animation=Y.spine_animation_state_set_animation; -a._spine_animation_state_add_animation_by_name=Y.spine_animation_state_add_animation_by_name;a._spine_animation_state_add_animation=Y.spine_animation_state_add_animation;a._spine_animation_state_set_empty_animation=Y.spine_animation_state_set_empty_animation;a._spine_animation_state_add_empty_animation=Y.spine_animation_state_add_empty_animation;a._spine_animation_state_set_empty_animations=Y.spine_animation_state_set_empty_animations;a._spine_animation_state_get_current=Y.spine_animation_state_get_current; -a._spine_animation_state_get_data=Y.spine_animation_state_get_data;a._spine_animation_state_get_time_scale=Y.spine_animation_state_get_time_scale;a._spine_animation_state_set_time_scale=Y.spine_animation_state_set_time_scale;a._spine_animation_state_events_get_num_events=Y.spine_animation_state_events_get_num_events;a._spine_animation_state_events_get_event_type=Y.spine_animation_state_events_get_event_type;a._spine_animation_state_events_get_track_entry=Y.spine_animation_state_events_get_track_entry; -a._spine_animation_state_events_get_event=Y.spine_animation_state_events_get_event;a._spine_animation_state_events_reset=Y.spine_animation_state_events_reset;a._spine_track_entry_get_track_index=Y.spine_track_entry_get_track_index;a._spine_track_entry_get_animation=Y.spine_track_entry_get_animation;a._spine_track_entry_get_previous=Y.spine_track_entry_get_previous;a._spine_track_entry_get_loop=Y.spine_track_entry_get_loop;a._spine_track_entry_set_loop=Y.spine_track_entry_set_loop; +var X={__assert_fail:P,_abort_js:Q,emscripten_resize_heap:S,fd_write:V},Y=await (async function(){I++;var c={env:X,wasi_snapshot_preview1:X};M??=q+"libspine_flutter.wasm";try{return Y=(await ea(c)).instance.exports,a.wasmExports=Y,w=Y.memory,H(),I--,0==I&&J&&(c=J,J=null,c()),Y}catch(d){return h(d),Promise.reject(d)}}());a._spine_major_version=Y.spine_major_version;a._spine_minor_version=Y.spine_minor_version;a._spine_enable_debug_extension=Y.spine_enable_debug_extension; +a._spine_report_leaks=Y.spine_report_leaks;a._spine_atlas_load=Y.spine_atlas_load;a._spine_atlas_load_callback=Y.spine_atlas_load_callback;a._spine_atlas_result_get_error=Y.spine_atlas_result_get_error;a._spine_atlas_result_get_atlas=Y.spine_atlas_result_get_atlas;a._spine_atlas_result_dispose=Y.spine_atlas_result_dispose;a._spine_skeleton_data_load_json=Y.spine_skeleton_data_load_json;a._spine_skeleton_data_load_binary=Y.spine_skeleton_data_load_binary;a._spine_skeleton_data_result_get_error=Y.spine_skeleton_data_result_get_error; +a._spine_skeleton_data_result_get_data=Y.spine_skeleton_data_result_get_data;a._spine_skeleton_data_result_dispose=Y.spine_skeleton_data_result_dispose;a._spine_skeleton_drawable_create=Y.spine_skeleton_drawable_create;a._spine_skeleton_drawable_render=Y.spine_skeleton_drawable_render;a._spine_skeleton_drawable_dispose=Y.spine_skeleton_drawable_dispose;a._spine_skeleton_drawable_get_skeleton=Y.spine_skeleton_drawable_get_skeleton;a._spine_skeleton_drawable_get_animation_state=Y.spine_skeleton_drawable_get_animation_state; +a._spine_skeleton_drawable_get_animation_state_data=Y.spine_skeleton_drawable_get_animation_state_data;a._spine_skeleton_drawable_get_animation_state_events=Y.spine_skeleton_drawable_get_animation_state_events;a._spine_animation_state_events_get_num_events=Y.spine_animation_state_events_get_num_events;a._spine_animation_state_events_get_event_type=Y.spine_animation_state_events_get_event_type;a._spine_animation_state_events_get_track_entry=Y.spine_animation_state_events_get_track_entry; +a._spine_animation_state_events_get_event=Y.spine_animation_state_events_get_event;a._spine_animation_state_events_reset=Y.spine_animation_state_events_reset;a._spine_skin_entries_dispose=Y.spine_skin_entries_dispose;a._spine_skin_entries_get_num_entries=Y.spine_skin_entries_get_num_entries;a._spine_skin_entries_get_entry=Y.spine_skin_entries_get_entry;a._spine_skin_entry_get_slot_index=Y.spine_skin_entry_get_slot_index;a._spine_skin_entry_get_name=Y.spine_skin_entry_get_name; +a._spine_skin_entry_get_attachment=Y.spine_skin_entry_get_attachment;a._spine_skin_get_entries=Y.spine_skin_get_entries;a._spine_skeleton_get_bounds=Y.spine_skeleton_get_bounds;a._spine_array_float_clear=Y.spine_array_float_clear;a._spine_array_float_add=Y.spine_array_float_add;a._spine_skeleton_get_position_v=Y.spine_skeleton_get_position_v;a._spine_bone_pose_world_to_local_v=Y.spine_bone_pose_world_to_local_v;a._spine_bone_pose_local_to_world_v=Y.spine_bone_pose_local_to_world_v; +a._spine_bone_pose_world_to_parent_v=Y.spine_bone_pose_world_to_parent_v;a._spine_bone_pose_parent_to_world_v=Y.spine_bone_pose_parent_to_world_v;a._spine_path_constraint_pose_create=Y.spine_path_constraint_pose_create;a._spine_path_constraint_pose_dispose=Y.spine_path_constraint_pose_dispose;a._spine_path_constraint_pose_set=Y.spine_path_constraint_pose_set;a._spine_path_constraint_pose_get_position=Y.spine_path_constraint_pose_get_position;a._spine_path_constraint_pose_set_position=Y.spine_path_constraint_pose_set_position; +a._spine_path_constraint_pose_get_spacing=Y.spine_path_constraint_pose_get_spacing;a._spine_path_constraint_pose_set_spacing=Y.spine_path_constraint_pose_set_spacing;a._spine_path_constraint_pose_get_mix_rotate=Y.spine_path_constraint_pose_get_mix_rotate;a._spine_path_constraint_pose_set_mix_rotate=Y.spine_path_constraint_pose_set_mix_rotate;a._spine_path_constraint_pose_get_mix_x=Y.spine_path_constraint_pose_get_mix_x;a._spine_path_constraint_pose_set_mix_x=Y.spine_path_constraint_pose_set_mix_x; +a._spine_path_constraint_pose_get_mix_y=Y.spine_path_constraint_pose_get_mix_y;a._spine_path_constraint_pose_set_mix_y=Y.spine_path_constraint_pose_set_mix_y;a._spine_from_rotate_create=Y.spine_from_rotate_create;a._spine_from_rotate_dispose=Y.spine_from_rotate_dispose;a._spine_from_rotate_get_rtti=Y.spine_from_rotate_get_rtti;a._spine_from_rotate_value=Y.spine_from_rotate_value;a._spine_from_rotate_rtti=Y.spine_from_rotate_rtti;a._spine_bone_timeline_dispose=Y.spine_bone_timeline_dispose; +a._spine_bone_timeline_get_rtti=Y.spine_bone_timeline_get_rtti;a._spine_bone_timeline_get_bone_index=Y.spine_bone_timeline_get_bone_index;a._spine_bone_timeline_set_bone_index=Y.spine_bone_timeline_set_bone_index;a._spine_bone_timeline_rtti=Y.spine_bone_timeline_rtti;a._spine_inherit_timeline_create=Y.spine_inherit_timeline_create;a._spine_inherit_timeline_dispose=Y.spine_inherit_timeline_dispose;a._spine_inherit_timeline_get_rtti=Y.spine_inherit_timeline_get_rtti; +a._spine_inherit_timeline_set_frame=Y.spine_inherit_timeline_set_frame;a._spine_inherit_timeline_apply=Y.spine_inherit_timeline_apply;a._spine_inherit_timeline_get_bone_index=Y.spine_inherit_timeline_get_bone_index;a._spine_inherit_timeline_set_bone_index=Y.spine_inherit_timeline_set_bone_index;a._spine_inherit_timeline_get_frame_entries=Y.spine_inherit_timeline_get_frame_entries;a._spine_inherit_timeline_get_frame_count=Y.spine_inherit_timeline_get_frame_count; +a._spine_inherit_timeline_get_frames=Y.spine_inherit_timeline_get_frames;a._spine_inherit_timeline_get_duration=Y.spine_inherit_timeline_get_duration;a._spine_inherit_timeline_get_property_ids=Y.spine_inherit_timeline_get_property_ids;a._spine_inherit_timeline_rtti=Y.spine_inherit_timeline_rtti;a._spine_attachment_dispose=Y.spine_attachment_dispose;a._spine_attachment_get_rtti=Y.spine_attachment_get_rtti;a._spine_attachment_get_name=Y.spine_attachment_get_name;a._spine_attachment_copy=Y.spine_attachment_copy; +a._spine_attachment_get_ref_count=Y.spine_attachment_get_ref_count;a._spine_attachment_reference=Y.spine_attachment_reference;a._spine_attachment_dereference=Y.spine_attachment_dereference;a._spine_attachment_rtti=Y.spine_attachment_rtti;a._spine_ik_constraint_timeline_create=Y.spine_ik_constraint_timeline_create;a._spine_ik_constraint_timeline_dispose=Y.spine_ik_constraint_timeline_dispose;a._spine_ik_constraint_timeline_get_rtti=Y.spine_ik_constraint_timeline_get_rtti; +a._spine_ik_constraint_timeline_apply=Y.spine_ik_constraint_timeline_apply;a._spine_ik_constraint_timeline_set_frame=Y.spine_ik_constraint_timeline_set_frame;a._spine_ik_constraint_timeline_get_constraint_index=Y.spine_ik_constraint_timeline_get_constraint_index;a._spine_ik_constraint_timeline_set_constraint_index=Y.spine_ik_constraint_timeline_set_constraint_index;a._spine_ik_constraint_timeline_set_linear=Y.spine_ik_constraint_timeline_set_linear;a._spine_ik_constraint_timeline_set_stepped=Y.spine_ik_constraint_timeline_set_stepped; +a._spine_ik_constraint_timeline_set_bezier=Y.spine_ik_constraint_timeline_set_bezier;a._spine_ik_constraint_timeline_get_bezier_value=Y.spine_ik_constraint_timeline_get_bezier_value;a._spine_ik_constraint_timeline_get_curves=Y.spine_ik_constraint_timeline_get_curves;a._spine_ik_constraint_timeline_get_frame_entries=Y.spine_ik_constraint_timeline_get_frame_entries;a._spine_ik_constraint_timeline_get_frame_count=Y.spine_ik_constraint_timeline_get_frame_count; +a._spine_ik_constraint_timeline_get_frames=Y.spine_ik_constraint_timeline_get_frames;a._spine_ik_constraint_timeline_get_duration=Y.spine_ik_constraint_timeline_get_duration;a._spine_ik_constraint_timeline_get_property_ids=Y.spine_ik_constraint_timeline_get_property_ids;a._spine_ik_constraint_timeline_rtti=Y.spine_ik_constraint_timeline_rtti;a._spine_skeleton_create=Y.spine_skeleton_create;a._spine_skeleton_dispose=Y.spine_skeleton_dispose;a._spine_skeleton_update_cache=Y.spine_skeleton_update_cache; +a._spine_skeleton_print_update_cache=Y.spine_skeleton_print_update_cache;a._spine_skeleton_constrained=Y.spine_skeleton_constrained;a._spine_skeleton_sort_bone=Y.spine_skeleton_sort_bone;a._spine_skeleton_sort_reset=Y.spine_skeleton_sort_reset;a._spine_skeleton_update_world_transform=Y.spine_skeleton_update_world_transform;a._spine_skeleton_setup_pose=Y.spine_skeleton_setup_pose;a._spine_skeleton_setup_pose_bones=Y.spine_skeleton_setup_pose_bones;a._spine_skeleton_setup_pose_slots=Y.spine_skeleton_setup_pose_slots; +a._spine_skeleton_get_data=Y.spine_skeleton_get_data;a._spine_skeleton_get_bones=Y.spine_skeleton_get_bones;a._spine_skeleton_get_update_cache=Y.spine_skeleton_get_update_cache;a._spine_skeleton_get_root_bone=Y.spine_skeleton_get_root_bone;a._spine_skeleton_find_bone=Y.spine_skeleton_find_bone;a._spine_skeleton_get_slots=Y.spine_skeleton_get_slots;a._spine_skeleton_find_slot=Y.spine_skeleton_find_slot;a._spine_skeleton_get_draw_order=Y.spine_skeleton_get_draw_order;a._spine_skeleton_get_skin=Y.spine_skeleton_get_skin; +a._spine_skeleton_set_skin_1=Y.spine_skeleton_set_skin_1;a._spine_skeleton_set_skin_2=Y.spine_skeleton_set_skin_2;a._spine_skeleton_get_attachment_1=Y.spine_skeleton_get_attachment_1;a._spine_skeleton_get_attachment_2=Y.spine_skeleton_get_attachment_2;a._spine_skeleton_set_attachment=Y.spine_skeleton_set_attachment;a._spine_skeleton_get_constraints=Y.spine_skeleton_get_constraints;a._spine_skeleton_get_physics_constraints=Y.spine_skeleton_get_physics_constraints;a._spine_skeleton_get_bounds_1=Y.spine_skeleton_get_bounds_1; +a._spine_skeleton_get_bounds_2=Y.spine_skeleton_get_bounds_2;a._spine_skeleton_get_color=Y.spine_skeleton_get_color;a._spine_skeleton_set_color_1=Y.spine_skeleton_set_color_1;a._spine_skeleton_set_color_2=Y.spine_skeleton_set_color_2;a._spine_skeleton_get_scale_x=Y.spine_skeleton_get_scale_x;a._spine_skeleton_set_scale_x=Y.spine_skeleton_set_scale_x;a._spine_skeleton_get_scale_y=Y.spine_skeleton_get_scale_y;a._spine_skeleton_set_scale_y=Y.spine_skeleton_set_scale_y;a._spine_skeleton_set_scale=Y.spine_skeleton_set_scale; +a._spine_skeleton_get_x=Y.spine_skeleton_get_x;a._spine_skeleton_set_x=Y.spine_skeleton_set_x;a._spine_skeleton_get_y=Y.spine_skeleton_get_y;a._spine_skeleton_set_y=Y.spine_skeleton_set_y;a._spine_skeleton_set_position=Y.spine_skeleton_set_position;a._spine_skeleton_get_position=Y.spine_skeleton_get_position;a._spine_skeleton_get_wind_x=Y.spine_skeleton_get_wind_x;a._spine_skeleton_set_wind_x=Y.spine_skeleton_set_wind_x;a._spine_skeleton_get_wind_y=Y.spine_skeleton_get_wind_y; +a._spine_skeleton_set_wind_y=Y.spine_skeleton_set_wind_y;a._spine_skeleton_get_gravity_x=Y.spine_skeleton_get_gravity_x;a._spine_skeleton_set_gravity_x=Y.spine_skeleton_set_gravity_x;a._spine_skeleton_get_gravity_y=Y.spine_skeleton_get_gravity_y;a._spine_skeleton_set_gravity_y=Y.spine_skeleton_set_gravity_y;a._spine_skeleton_physics_translate=Y.spine_skeleton_physics_translate;a._spine_skeleton_physics_rotate=Y.spine_skeleton_physics_rotate;a._spine_skeleton_get_time=Y.spine_skeleton_get_time; +a._spine_skeleton_set_time=Y.spine_skeleton_set_time;a._spine_skeleton_update=Y.spine_skeleton_update;a._spine_texture_region_create=Y.spine_texture_region_create;a._spine_texture_region_dispose=Y.spine_texture_region_dispose;a._spine_texture_region_get_rtti=Y.spine_texture_region_get_rtti;a._spine_texture_region_get_u=Y.spine_texture_region_get_u;a._spine_texture_region_set_u=Y.spine_texture_region_set_u;a._spine_texture_region_get_v=Y.spine_texture_region_get_v;a._spine_texture_region_set_v=Y.spine_texture_region_set_v; +a._spine_texture_region_get_u2=Y.spine_texture_region_get_u2;a._spine_texture_region_set_u2=Y.spine_texture_region_set_u2;a._spine_texture_region_get_v2=Y.spine_texture_region_get_v2;a._spine_texture_region_set_v2=Y.spine_texture_region_set_v2;a._spine_texture_region_get_region_width=Y.spine_texture_region_get_region_width;a._spine_texture_region_set_region_width=Y.spine_texture_region_set_region_width;a._spine_texture_region_get_region_height=Y.spine_texture_region_get_region_height; +a._spine_texture_region_set_region_height=Y.spine_texture_region_set_region_height;a._spine_texture_region_rtti=Y.spine_texture_region_rtti;a._spine_translate_x_timeline_create=Y.spine_translate_x_timeline_create;a._spine_translate_x_timeline_dispose=Y.spine_translate_x_timeline_dispose;a._spine_translate_x_timeline_get_rtti=Y.spine_translate_x_timeline_get_rtti;a._spine_translate_x_timeline_apply=Y.spine_translate_x_timeline_apply;a._spine_translate_x_timeline_get_bone_index=Y.spine_translate_x_timeline_get_bone_index; +a._spine_translate_x_timeline_set_bone_index=Y.spine_translate_x_timeline_set_bone_index;a._spine_translate_x_timeline_set_frame=Y.spine_translate_x_timeline_set_frame;a._spine_translate_x_timeline_get_curve_value=Y.spine_translate_x_timeline_get_curve_value;a._spine_translate_x_timeline_get_relative_value=Y.spine_translate_x_timeline_get_relative_value;a._spine_translate_x_timeline_get_absolute_value_1=Y.spine_translate_x_timeline_get_absolute_value_1; +a._spine_translate_x_timeline_get_absolute_value_2=Y.spine_translate_x_timeline_get_absolute_value_2;a._spine_translate_x_timeline_get_scale_value=Y.spine_translate_x_timeline_get_scale_value;a._spine_translate_x_timeline_set_linear=Y.spine_translate_x_timeline_set_linear;a._spine_translate_x_timeline_set_stepped=Y.spine_translate_x_timeline_set_stepped;a._spine_translate_x_timeline_set_bezier=Y.spine_translate_x_timeline_set_bezier;a._spine_translate_x_timeline_get_bezier_value=Y.spine_translate_x_timeline_get_bezier_value; +a._spine_translate_x_timeline_get_curves=Y.spine_translate_x_timeline_get_curves;a._spine_translate_x_timeline_get_frame_entries=Y.spine_translate_x_timeline_get_frame_entries;a._spine_translate_x_timeline_get_frame_count=Y.spine_translate_x_timeline_get_frame_count;a._spine_translate_x_timeline_get_frames=Y.spine_translate_x_timeline_get_frames;a._spine_translate_x_timeline_get_duration=Y.spine_translate_x_timeline_get_duration;a._spine_translate_x_timeline_get_property_ids=Y.spine_translate_x_timeline_get_property_ids; +a._spine_translate_x_timeline_rtti=Y.spine_translate_x_timeline_rtti;a._spine_transform_constraint_create=Y.spine_transform_constraint_create;a._spine_transform_constraint_dispose=Y.spine_transform_constraint_dispose;a._spine_transform_constraint_get_rtti=Y.spine_transform_constraint_get_rtti;a._spine_transform_constraint_copy=Y.spine_transform_constraint_copy;a._spine_transform_constraint_update=Y.spine_transform_constraint_update;a._spine_transform_constraint_sort=Y.spine_transform_constraint_sort; +a._spine_transform_constraint_is_source_active=Y.spine_transform_constraint_is_source_active;a._spine_transform_constraint_get_bones=Y.spine_transform_constraint_get_bones;a._spine_transform_constraint_get_source=Y.spine_transform_constraint_get_source;a._spine_transform_constraint_set_source=Y.spine_transform_constraint_set_source;a._spine_transform_constraint_get_data=Y.spine_transform_constraint_get_data;a._spine_transform_constraint_get_pose=Y.spine_transform_constraint_get_pose; +a._spine_transform_constraint_get_applied_pose=Y.spine_transform_constraint_get_applied_pose;a._spine_transform_constraint_reset_constrained=Y.spine_transform_constraint_reset_constrained;a._spine_transform_constraint_constrained=Y.spine_transform_constraint_constrained;a._spine_transform_constraint_is_pose_equal_to_applied=Y.spine_transform_constraint_is_pose_equal_to_applied;a._spine_transform_constraint_is_active=Y.spine_transform_constraint_is_active;a._spine_transform_constraint_set_active=Y.spine_transform_constraint_set_active; +a._spine_transform_constraint_rtti=Y.spine_transform_constraint_rtti;a._spine_ik_constraint_pose_create=Y.spine_ik_constraint_pose_create;a._spine_ik_constraint_pose_dispose=Y.spine_ik_constraint_pose_dispose;a._spine_ik_constraint_pose_set=Y.spine_ik_constraint_pose_set;a._spine_ik_constraint_pose_get_mix=Y.spine_ik_constraint_pose_get_mix;a._spine_ik_constraint_pose_set_mix=Y.spine_ik_constraint_pose_set_mix;a._spine_ik_constraint_pose_get_softness=Y.spine_ik_constraint_pose_get_softness; +a._spine_ik_constraint_pose_set_softness=Y.spine_ik_constraint_pose_set_softness;a._spine_ik_constraint_pose_get_bend_direction=Y.spine_ik_constraint_pose_get_bend_direction;a._spine_ik_constraint_pose_set_bend_direction=Y.spine_ik_constraint_pose_set_bend_direction;a._spine_ik_constraint_pose_get_compress=Y.spine_ik_constraint_pose_get_compress;a._spine_ik_constraint_pose_set_compress=Y.spine_ik_constraint_pose_set_compress;a._spine_ik_constraint_pose_get_stretch=Y.spine_ik_constraint_pose_get_stretch; +a._spine_ik_constraint_pose_set_stretch=Y.spine_ik_constraint_pose_set_stretch;a._spine_bone_create=Y.spine_bone_create;a._spine_bone_create2=Y.spine_bone_create2;a._spine_bone_dispose=Y.spine_bone_dispose;a._spine_bone_get_rtti=Y.spine_bone_get_rtti;a._spine_bone_get_parent=Y.spine_bone_get_parent;a._spine_bone_get_children=Y.spine_bone_get_children;a._spine_bone_is_y_down=Y.spine_bone_is_y_down;a._spine_bone_set_y_down=Y.spine_bone_set_y_down;a._spine_bone_update=Y.spine_bone_update; +a._spine_bone_get_data=Y.spine_bone_get_data;a._spine_bone_get_pose=Y.spine_bone_get_pose;a._spine_bone_get_applied_pose=Y.spine_bone_get_applied_pose;a._spine_bone_reset_constrained=Y.spine_bone_reset_constrained;a._spine_bone_constrained=Y.spine_bone_constrained;a._spine_bone_is_pose_equal_to_applied=Y.spine_bone_is_pose_equal_to_applied;a._spine_bone_is_active=Y.spine_bone_is_active;a._spine_bone_set_active=Y.spine_bone_set_active;a._spine_bone_rtti=Y.spine_bone_rtti; +a._spine_to_scale_y_create=Y.spine_to_scale_y_create;a._spine_to_scale_y_dispose=Y.spine_to_scale_y_dispose;a._spine_to_scale_y_get_rtti=Y.spine_to_scale_y_get_rtti;a._spine_to_scale_y_mix=Y.spine_to_scale_y_mix;a._spine_to_scale_y_apply=Y.spine_to_scale_y_apply;a._spine_to_scale_y_rtti=Y.spine_to_scale_y_rtti;a._spine_from_property_dispose=Y.spine_from_property_dispose;a._spine_from_property_get_rtti=Y.spine_from_property_get_rtti;a._spine_from_property_value=Y.spine_from_property_value; +a._spine_from_property_rtti=Y.spine_from_property_rtti;a._spine_from_property_get__offset=Y.spine_from_property_get__offset;a._spine_from_property_set__offset=Y.spine_from_property_set__offset;a._spine_from_property_get__to=Y.spine_from_property_get__to;a._spine_from_property_set__to=Y.spine_from_property_set__to;a._spine_transform_constraint_pose_create=Y.spine_transform_constraint_pose_create;a._spine_transform_constraint_pose_dispose=Y.spine_transform_constraint_pose_dispose; +a._spine_transform_constraint_pose_set=Y.spine_transform_constraint_pose_set;a._spine_transform_constraint_pose_get_mix_rotate=Y.spine_transform_constraint_pose_get_mix_rotate;a._spine_transform_constraint_pose_set_mix_rotate=Y.spine_transform_constraint_pose_set_mix_rotate;a._spine_transform_constraint_pose_get_mix_x=Y.spine_transform_constraint_pose_get_mix_x;a._spine_transform_constraint_pose_set_mix_x=Y.spine_transform_constraint_pose_set_mix_x;a._spine_transform_constraint_pose_get_mix_y=Y.spine_transform_constraint_pose_get_mix_y; +a._spine_transform_constraint_pose_set_mix_y=Y.spine_transform_constraint_pose_set_mix_y;a._spine_transform_constraint_pose_get_mix_scale_x=Y.spine_transform_constraint_pose_get_mix_scale_x;a._spine_transform_constraint_pose_set_mix_scale_x=Y.spine_transform_constraint_pose_set_mix_scale_x;a._spine_transform_constraint_pose_get_mix_scale_y=Y.spine_transform_constraint_pose_get_mix_scale_y;a._spine_transform_constraint_pose_set_mix_scale_y=Y.spine_transform_constraint_pose_set_mix_scale_y; +a._spine_transform_constraint_pose_get_mix_shear_y=Y.spine_transform_constraint_pose_get_mix_shear_y;a._spine_transform_constraint_pose_set_mix_shear_y=Y.spine_transform_constraint_pose_set_mix_shear_y;a._spine_scale_y_timeline_create=Y.spine_scale_y_timeline_create;a._spine_scale_y_timeline_dispose=Y.spine_scale_y_timeline_dispose;a._spine_scale_y_timeline_get_rtti=Y.spine_scale_y_timeline_get_rtti;a._spine_scale_y_timeline_apply=Y.spine_scale_y_timeline_apply; +a._spine_scale_y_timeline_get_bone_index=Y.spine_scale_y_timeline_get_bone_index;a._spine_scale_y_timeline_set_bone_index=Y.spine_scale_y_timeline_set_bone_index;a._spine_scale_y_timeline_set_frame=Y.spine_scale_y_timeline_set_frame;a._spine_scale_y_timeline_get_curve_value=Y.spine_scale_y_timeline_get_curve_value;a._spine_scale_y_timeline_get_relative_value=Y.spine_scale_y_timeline_get_relative_value;a._spine_scale_y_timeline_get_absolute_value_1=Y.spine_scale_y_timeline_get_absolute_value_1; +a._spine_scale_y_timeline_get_absolute_value_2=Y.spine_scale_y_timeline_get_absolute_value_2;a._spine_scale_y_timeline_get_scale_value=Y.spine_scale_y_timeline_get_scale_value;a._spine_scale_y_timeline_set_linear=Y.spine_scale_y_timeline_set_linear;a._spine_scale_y_timeline_set_stepped=Y.spine_scale_y_timeline_set_stepped;a._spine_scale_y_timeline_set_bezier=Y.spine_scale_y_timeline_set_bezier;a._spine_scale_y_timeline_get_bezier_value=Y.spine_scale_y_timeline_get_bezier_value; +a._spine_scale_y_timeline_get_curves=Y.spine_scale_y_timeline_get_curves;a._spine_scale_y_timeline_get_frame_entries=Y.spine_scale_y_timeline_get_frame_entries;a._spine_scale_y_timeline_get_frame_count=Y.spine_scale_y_timeline_get_frame_count;a._spine_scale_y_timeline_get_frames=Y.spine_scale_y_timeline_get_frames;a._spine_scale_y_timeline_get_duration=Y.spine_scale_y_timeline_get_duration;a._spine_scale_y_timeline_get_property_ids=Y.spine_scale_y_timeline_get_property_ids; +a._spine_scale_y_timeline_rtti=Y.spine_scale_y_timeline_rtti;a._spine_physics_constraint_data_create=Y.spine_physics_constraint_data_create;a._spine_physics_constraint_data_dispose=Y.spine_physics_constraint_data_dispose;a._spine_physics_constraint_data_get_rtti=Y.spine_physics_constraint_data_get_rtti;a._spine_physics_constraint_data_create_method=Y.spine_physics_constraint_data_create_method;a._spine_physics_constraint_data_get_bone=Y.spine_physics_constraint_data_get_bone; +a._spine_physics_constraint_data_set_bone=Y.spine_physics_constraint_data_set_bone;a._spine_physics_constraint_data_get_step=Y.spine_physics_constraint_data_get_step;a._spine_physics_constraint_data_set_step=Y.spine_physics_constraint_data_set_step;a._spine_physics_constraint_data_get_x=Y.spine_physics_constraint_data_get_x;a._spine_physics_constraint_data_set_x=Y.spine_physics_constraint_data_set_x;a._spine_physics_constraint_data_get_y=Y.spine_physics_constraint_data_get_y; +a._spine_physics_constraint_data_set_y=Y.spine_physics_constraint_data_set_y;a._spine_physics_constraint_data_get_rotate=Y.spine_physics_constraint_data_get_rotate;a._spine_physics_constraint_data_set_rotate=Y.spine_physics_constraint_data_set_rotate;a._spine_physics_constraint_data_get_scale_x=Y.spine_physics_constraint_data_get_scale_x;a._spine_physics_constraint_data_set_scale_x=Y.spine_physics_constraint_data_set_scale_x;a._spine_physics_constraint_data_get_shear_x=Y.spine_physics_constraint_data_get_shear_x; +a._spine_physics_constraint_data_set_shear_x=Y.spine_physics_constraint_data_set_shear_x;a._spine_physics_constraint_data_get_limit=Y.spine_physics_constraint_data_get_limit;a._spine_physics_constraint_data_set_limit=Y.spine_physics_constraint_data_set_limit;a._spine_physics_constraint_data_get_inertia_global=Y.spine_physics_constraint_data_get_inertia_global;a._spine_physics_constraint_data_set_inertia_global=Y.spine_physics_constraint_data_set_inertia_global; +a._spine_physics_constraint_data_get_strength_global=Y.spine_physics_constraint_data_get_strength_global;a._spine_physics_constraint_data_set_strength_global=Y.spine_physics_constraint_data_set_strength_global;a._spine_physics_constraint_data_get_damping_global=Y.spine_physics_constraint_data_get_damping_global;a._spine_physics_constraint_data_set_damping_global=Y.spine_physics_constraint_data_set_damping_global;a._spine_physics_constraint_data_get_mass_global=Y.spine_physics_constraint_data_get_mass_global; +a._spine_physics_constraint_data_set_mass_global=Y.spine_physics_constraint_data_set_mass_global;a._spine_physics_constraint_data_get_wind_global=Y.spine_physics_constraint_data_get_wind_global;a._spine_physics_constraint_data_set_wind_global=Y.spine_physics_constraint_data_set_wind_global;a._spine_physics_constraint_data_get_gravity_global=Y.spine_physics_constraint_data_get_gravity_global;a._spine_physics_constraint_data_set_gravity_global=Y.spine_physics_constraint_data_set_gravity_global; +a._spine_physics_constraint_data_get_mix_global=Y.spine_physics_constraint_data_get_mix_global;a._spine_physics_constraint_data_set_mix_global=Y.spine_physics_constraint_data_set_mix_global;a._spine_physics_constraint_data_get_name=Y.spine_physics_constraint_data_get_name;a._spine_physics_constraint_data_get_skin_required=Y.spine_physics_constraint_data_get_skin_required;a._spine_physics_constraint_data_get_setup_pose=Y.spine_physics_constraint_data_get_setup_pose; +a._spine_physics_constraint_data_set_skin_required=Y.spine_physics_constraint_data_set_skin_required;a._spine_physics_constraint_data_rtti=Y.spine_physics_constraint_data_rtti;a._spine_to_scale_x_create=Y.spine_to_scale_x_create;a._spine_to_scale_x_dispose=Y.spine_to_scale_x_dispose;a._spine_to_scale_x_get_rtti=Y.spine_to_scale_x_get_rtti;a._spine_to_scale_x_mix=Y.spine_to_scale_x_mix;a._spine_to_scale_x_apply=Y.spine_to_scale_x_apply;a._spine_to_scale_x_rtti=Y.spine_to_scale_x_rtti; +a._spine_constraint_timeline_dispose=Y.spine_constraint_timeline_dispose;a._spine_constraint_timeline_get_rtti=Y.spine_constraint_timeline_get_rtti;a._spine_constraint_timeline_get_constraint_index=Y.spine_constraint_timeline_get_constraint_index;a._spine_constraint_timeline_set_constraint_index=Y.spine_constraint_timeline_set_constraint_index;a._spine_constraint_timeline_rtti=Y.spine_constraint_timeline_rtti;a._spine_to_property_dispose=Y.spine_to_property_dispose;a._spine_to_property_get_rtti=Y.spine_to_property_get_rtti; +a._spine_to_property_mix=Y.spine_to_property_mix;a._spine_to_property_apply=Y.spine_to_property_apply;a._spine_to_property_rtti=Y.spine_to_property_rtti;a._spine_to_property_get__offset=Y.spine_to_property_get__offset;a._spine_to_property_set__offset=Y.spine_to_property_set__offset;a._spine_to_property_get__max=Y.spine_to_property_get__max;a._spine_to_property_set__max=Y.spine_to_property_set__max;a._spine_to_property_get__scale=Y.spine_to_property_get__scale;a._spine_to_property_set__scale=Y.spine_to_property_set__scale; +a._spine_rgb_timeline_create=Y.spine_rgb_timeline_create;a._spine_rgb_timeline_dispose=Y.spine_rgb_timeline_dispose;a._spine_rgb_timeline_get_rtti=Y.spine_rgb_timeline_get_rtti;a._spine_rgb_timeline_set_frame=Y.spine_rgb_timeline_set_frame;a._spine_rgb_timeline_apply=Y.spine_rgb_timeline_apply;a._spine_rgb_timeline_get_slot_index=Y.spine_rgb_timeline_get_slot_index;a._spine_rgb_timeline_set_slot_index=Y.spine_rgb_timeline_set_slot_index;a._spine_rgb_timeline_set_linear=Y.spine_rgb_timeline_set_linear; +a._spine_rgb_timeline_set_stepped=Y.spine_rgb_timeline_set_stepped;a._spine_rgb_timeline_set_bezier=Y.spine_rgb_timeline_set_bezier;a._spine_rgb_timeline_get_bezier_value=Y.spine_rgb_timeline_get_bezier_value;a._spine_rgb_timeline_get_curves=Y.spine_rgb_timeline_get_curves;a._spine_rgb_timeline_get_frame_entries=Y.spine_rgb_timeline_get_frame_entries;a._spine_rgb_timeline_get_frame_count=Y.spine_rgb_timeline_get_frame_count;a._spine_rgb_timeline_get_frames=Y.spine_rgb_timeline_get_frames; +a._spine_rgb_timeline_get_duration=Y.spine_rgb_timeline_get_duration;a._spine_rgb_timeline_get_property_ids=Y.spine_rgb_timeline_get_property_ids;a._spine_rgb_timeline_rtti=Y.spine_rgb_timeline_rtti;a._spine_render_command_dispose=Y.spine_render_command_dispose;a._spine_render_command_get_positions=Y.spine_render_command_get_positions;a._spine_render_command_get_uvs=Y.spine_render_command_get_uvs;a._spine_render_command_get_colors=Y.spine_render_command_get_colors; +a._spine_render_command_get_dark_colors=Y.spine_render_command_get_dark_colors;a._spine_render_command_get_num_vertices=Y.spine_render_command_get_num_vertices;a._spine_render_command_get_indices=Y.spine_render_command_get_indices;a._spine_render_command_get_num_indices=Y.spine_render_command_get_num_indices;a._spine_render_command_get_blend_mode=Y.spine_render_command_get_blend_mode;a._spine_render_command_get_texture=Y.spine_render_command_get_texture;a._spine_render_command_get_next=Y.spine_render_command_get_next; +a._spine_translate_y_timeline_create=Y.spine_translate_y_timeline_create;a._spine_translate_y_timeline_dispose=Y.spine_translate_y_timeline_dispose;a._spine_translate_y_timeline_get_rtti=Y.spine_translate_y_timeline_get_rtti;a._spine_translate_y_timeline_apply=Y.spine_translate_y_timeline_apply;a._spine_translate_y_timeline_get_bone_index=Y.spine_translate_y_timeline_get_bone_index;a._spine_translate_y_timeline_set_bone_index=Y.spine_translate_y_timeline_set_bone_index; +a._spine_translate_y_timeline_set_frame=Y.spine_translate_y_timeline_set_frame;a._spine_translate_y_timeline_get_curve_value=Y.spine_translate_y_timeline_get_curve_value;a._spine_translate_y_timeline_get_relative_value=Y.spine_translate_y_timeline_get_relative_value;a._spine_translate_y_timeline_get_absolute_value_1=Y.spine_translate_y_timeline_get_absolute_value_1;a._spine_translate_y_timeline_get_absolute_value_2=Y.spine_translate_y_timeline_get_absolute_value_2; +a._spine_translate_y_timeline_get_scale_value=Y.spine_translate_y_timeline_get_scale_value;a._spine_translate_y_timeline_set_linear=Y.spine_translate_y_timeline_set_linear;a._spine_translate_y_timeline_set_stepped=Y.spine_translate_y_timeline_set_stepped;a._spine_translate_y_timeline_set_bezier=Y.spine_translate_y_timeline_set_bezier;a._spine_translate_y_timeline_get_bezier_value=Y.spine_translate_y_timeline_get_bezier_value;a._spine_translate_y_timeline_get_curves=Y.spine_translate_y_timeline_get_curves; +a._spine_translate_y_timeline_get_frame_entries=Y.spine_translate_y_timeline_get_frame_entries;a._spine_translate_y_timeline_get_frame_count=Y.spine_translate_y_timeline_get_frame_count;a._spine_translate_y_timeline_get_frames=Y.spine_translate_y_timeline_get_frames;a._spine_translate_y_timeline_get_duration=Y.spine_translate_y_timeline_get_duration;a._spine_translate_y_timeline_get_property_ids=Y.spine_translate_y_timeline_get_property_ids;a._spine_translate_y_timeline_rtti=Y.spine_translate_y_timeline_rtti; +a._spine_rgb2_timeline_create=Y.spine_rgb2_timeline_create;a._spine_rgb2_timeline_dispose=Y.spine_rgb2_timeline_dispose;a._spine_rgb2_timeline_get_rtti=Y.spine_rgb2_timeline_get_rtti;a._spine_rgb2_timeline_set_frame=Y.spine_rgb2_timeline_set_frame;a._spine_rgb2_timeline_apply=Y.spine_rgb2_timeline_apply;a._spine_rgb2_timeline_get_slot_index=Y.spine_rgb2_timeline_get_slot_index;a._spine_rgb2_timeline_set_slot_index=Y.spine_rgb2_timeline_set_slot_index;a._spine_rgb2_timeline_set_linear=Y.spine_rgb2_timeline_set_linear; +a._spine_rgb2_timeline_set_stepped=Y.spine_rgb2_timeline_set_stepped;a._spine_rgb2_timeline_set_bezier=Y.spine_rgb2_timeline_set_bezier;a._spine_rgb2_timeline_get_bezier_value=Y.spine_rgb2_timeline_get_bezier_value;a._spine_rgb2_timeline_get_curves=Y.spine_rgb2_timeline_get_curves;a._spine_rgb2_timeline_get_frame_entries=Y.spine_rgb2_timeline_get_frame_entries;a._spine_rgb2_timeline_get_frame_count=Y.spine_rgb2_timeline_get_frame_count;a._spine_rgb2_timeline_get_frames=Y.spine_rgb2_timeline_get_frames; +a._spine_rgb2_timeline_get_duration=Y.spine_rgb2_timeline_get_duration;a._spine_rgb2_timeline_get_property_ids=Y.spine_rgb2_timeline_get_property_ids;a._spine_rgb2_timeline_rtti=Y.spine_rgb2_timeline_rtti;a._spine_event_timeline_create=Y.spine_event_timeline_create;a._spine_event_timeline_dispose=Y.spine_event_timeline_dispose;a._spine_event_timeline_get_rtti=Y.spine_event_timeline_get_rtti;a._spine_event_timeline_apply=Y.spine_event_timeline_apply;a._spine_event_timeline_get_frame_count=Y.spine_event_timeline_get_frame_count; +a._spine_event_timeline_get_events=Y.spine_event_timeline_get_events;a._spine_event_timeline_set_frame=Y.spine_event_timeline_set_frame;a._spine_event_timeline_get_frame_entries=Y.spine_event_timeline_get_frame_entries;a._spine_event_timeline_get_frames=Y.spine_event_timeline_get_frames;a._spine_event_timeline_get_duration=Y.spine_event_timeline_get_duration;a._spine_event_timeline_get_property_ids=Y.spine_event_timeline_get_property_ids;a._spine_event_timeline_rtti=Y.spine_event_timeline_rtti; +a._spine_to_rotate_create=Y.spine_to_rotate_create;a._spine_to_rotate_dispose=Y.spine_to_rotate_dispose;a._spine_to_rotate_get_rtti=Y.spine_to_rotate_get_rtti;a._spine_to_rotate_mix=Y.spine_to_rotate_mix;a._spine_to_rotate_apply=Y.spine_to_rotate_apply;a._spine_to_rotate_rtti=Y.spine_to_rotate_rtti;a._spine_bone_timeline2_dispose=Y.spine_bone_timeline2_dispose;a._spine_bone_timeline2_get_rtti=Y.spine_bone_timeline2_get_rtti;a._spine_bone_timeline2_apply=Y.spine_bone_timeline2_apply; +a._spine_bone_timeline2_get_bone_index=Y.spine_bone_timeline2_get_bone_index;a._spine_bone_timeline2_set_bone_index=Y.spine_bone_timeline2_set_bone_index;a._spine_bone_timeline2_set_frame=Y.spine_bone_timeline2_set_frame;a._spine_bone_timeline2_set_linear=Y.spine_bone_timeline2_set_linear;a._spine_bone_timeline2_set_stepped=Y.spine_bone_timeline2_set_stepped;a._spine_bone_timeline2_set_bezier=Y.spine_bone_timeline2_set_bezier;a._spine_bone_timeline2_get_bezier_value=Y.spine_bone_timeline2_get_bezier_value; +a._spine_bone_timeline2_get_curves=Y.spine_bone_timeline2_get_curves;a._spine_bone_timeline2_get_frame_entries=Y.spine_bone_timeline2_get_frame_entries;a._spine_bone_timeline2_get_frame_count=Y.spine_bone_timeline2_get_frame_count;a._spine_bone_timeline2_get_frames=Y.spine_bone_timeline2_get_frames;a._spine_bone_timeline2_get_duration=Y.spine_bone_timeline2_get_duration;a._spine_bone_timeline2_get_property_ids=Y.spine_bone_timeline2_get_property_ids;a._spine_bone_timeline2_rtti=Y.spine_bone_timeline2_rtti; +a._spine_linked_mesh_create=Y.spine_linked_mesh_create;a._spine_linked_mesh_create2=Y.spine_linked_mesh_create2;a._spine_linked_mesh_dispose=Y.spine_linked_mesh_dispose;a._spine_scale_x_timeline_create=Y.spine_scale_x_timeline_create;a._spine_scale_x_timeline_dispose=Y.spine_scale_x_timeline_dispose;a._spine_scale_x_timeline_get_rtti=Y.spine_scale_x_timeline_get_rtti;a._spine_scale_x_timeline_apply=Y.spine_scale_x_timeline_apply;a._spine_scale_x_timeline_get_bone_index=Y.spine_scale_x_timeline_get_bone_index; +a._spine_scale_x_timeline_set_bone_index=Y.spine_scale_x_timeline_set_bone_index;a._spine_scale_x_timeline_set_frame=Y.spine_scale_x_timeline_set_frame;a._spine_scale_x_timeline_get_curve_value=Y.spine_scale_x_timeline_get_curve_value;a._spine_scale_x_timeline_get_relative_value=Y.spine_scale_x_timeline_get_relative_value;a._spine_scale_x_timeline_get_absolute_value_1=Y.spine_scale_x_timeline_get_absolute_value_1;a._spine_scale_x_timeline_get_absolute_value_2=Y.spine_scale_x_timeline_get_absolute_value_2; +a._spine_scale_x_timeline_get_scale_value=Y.spine_scale_x_timeline_get_scale_value;a._spine_scale_x_timeline_set_linear=Y.spine_scale_x_timeline_set_linear;a._spine_scale_x_timeline_set_stepped=Y.spine_scale_x_timeline_set_stepped;a._spine_scale_x_timeline_set_bezier=Y.spine_scale_x_timeline_set_bezier;a._spine_scale_x_timeline_get_bezier_value=Y.spine_scale_x_timeline_get_bezier_value;a._spine_scale_x_timeline_get_curves=Y.spine_scale_x_timeline_get_curves; +a._spine_scale_x_timeline_get_frame_entries=Y.spine_scale_x_timeline_get_frame_entries;a._spine_scale_x_timeline_get_frame_count=Y.spine_scale_x_timeline_get_frame_count;a._spine_scale_x_timeline_get_frames=Y.spine_scale_x_timeline_get_frames;a._spine_scale_x_timeline_get_duration=Y.spine_scale_x_timeline_get_duration;a._spine_scale_x_timeline_get_property_ids=Y.spine_scale_x_timeline_get_property_ids;a._spine_scale_x_timeline_rtti=Y.spine_scale_x_timeline_rtti; +a._spine_path_constraint_position_timeline_create=Y.spine_path_constraint_position_timeline_create;a._spine_path_constraint_position_timeline_dispose=Y.spine_path_constraint_position_timeline_dispose;a._spine_path_constraint_position_timeline_get_rtti=Y.spine_path_constraint_position_timeline_get_rtti;a._spine_path_constraint_position_timeline_apply=Y.spine_path_constraint_position_timeline_apply;a._spine_path_constraint_position_timeline_get_constraint_index=Y.spine_path_constraint_position_timeline_get_constraint_index; +a._spine_path_constraint_position_timeline_set_constraint_index=Y.spine_path_constraint_position_timeline_set_constraint_index;a._spine_path_constraint_position_timeline_set_frame=Y.spine_path_constraint_position_timeline_set_frame;a._spine_path_constraint_position_timeline_get_curve_value=Y.spine_path_constraint_position_timeline_get_curve_value;a._spine_path_constraint_position_timeline_get_relative_value=Y.spine_path_constraint_position_timeline_get_relative_value; +a._spine_path_constraint_position_timeline_get_absolute_value_1=Y.spine_path_constraint_position_timeline_get_absolute_value_1;a._spine_path_constraint_position_timeline_get_absolute_value_2=Y.spine_path_constraint_position_timeline_get_absolute_value_2;a._spine_path_constraint_position_timeline_get_scale_value=Y.spine_path_constraint_position_timeline_get_scale_value;a._spine_path_constraint_position_timeline_set_linear=Y.spine_path_constraint_position_timeline_set_linear; +a._spine_path_constraint_position_timeline_set_stepped=Y.spine_path_constraint_position_timeline_set_stepped;a._spine_path_constraint_position_timeline_set_bezier=Y.spine_path_constraint_position_timeline_set_bezier;a._spine_path_constraint_position_timeline_get_bezier_value=Y.spine_path_constraint_position_timeline_get_bezier_value;a._spine_path_constraint_position_timeline_get_curves=Y.spine_path_constraint_position_timeline_get_curves; +a._spine_path_constraint_position_timeline_get_frame_entries=Y.spine_path_constraint_position_timeline_get_frame_entries;a._spine_path_constraint_position_timeline_get_frame_count=Y.spine_path_constraint_position_timeline_get_frame_count;a._spine_path_constraint_position_timeline_get_frames=Y.spine_path_constraint_position_timeline_get_frames;a._spine_path_constraint_position_timeline_get_duration=Y.spine_path_constraint_position_timeline_get_duration; +a._spine_path_constraint_position_timeline_get_property_ids=Y.spine_path_constraint_position_timeline_get_property_ids;a._spine_path_constraint_position_timeline_rtti=Y.spine_path_constraint_position_timeline_rtti;a._spine_rgba2_timeline_create=Y.spine_rgba2_timeline_create;a._spine_rgba2_timeline_dispose=Y.spine_rgba2_timeline_dispose;a._spine_rgba2_timeline_get_rtti=Y.spine_rgba2_timeline_get_rtti;a._spine_rgba2_timeline_set_frame=Y.spine_rgba2_timeline_set_frame;a._spine_rgba2_timeline_apply=Y.spine_rgba2_timeline_apply; +a._spine_rgba2_timeline_get_slot_index=Y.spine_rgba2_timeline_get_slot_index;a._spine_rgba2_timeline_set_slot_index=Y.spine_rgba2_timeline_set_slot_index;a._spine_rgba2_timeline_set_linear=Y.spine_rgba2_timeline_set_linear;a._spine_rgba2_timeline_set_stepped=Y.spine_rgba2_timeline_set_stepped;a._spine_rgba2_timeline_set_bezier=Y.spine_rgba2_timeline_set_bezier;a._spine_rgba2_timeline_get_bezier_value=Y.spine_rgba2_timeline_get_bezier_value;a._spine_rgba2_timeline_get_curves=Y.spine_rgba2_timeline_get_curves; +a._spine_rgba2_timeline_get_frame_entries=Y.spine_rgba2_timeline_get_frame_entries;a._spine_rgba2_timeline_get_frame_count=Y.spine_rgba2_timeline_get_frame_count;a._spine_rgba2_timeline_get_frames=Y.spine_rgba2_timeline_get_frames;a._spine_rgba2_timeline_get_duration=Y.spine_rgba2_timeline_get_duration;a._spine_rgba2_timeline_get_property_ids=Y.spine_rgba2_timeline_get_property_ids;a._spine_rgba2_timeline_rtti=Y.spine_rgba2_timeline_rtti;a._spine_skeleton_renderer_create=Y.spine_skeleton_renderer_create; +a._spine_skeleton_renderer_dispose=Y.spine_skeleton_renderer_dispose;a._spine_skeleton_renderer_render=Y.spine_skeleton_renderer_render;a._spine_slider_mix_timeline_create=Y.spine_slider_mix_timeline_create;a._spine_slider_mix_timeline_dispose=Y.spine_slider_mix_timeline_dispose;a._spine_slider_mix_timeline_get_rtti=Y.spine_slider_mix_timeline_get_rtti;a._spine_slider_mix_timeline_apply=Y.spine_slider_mix_timeline_apply;a._spine_slider_mix_timeline_get_constraint_index=Y.spine_slider_mix_timeline_get_constraint_index; +a._spine_slider_mix_timeline_set_constraint_index=Y.spine_slider_mix_timeline_set_constraint_index;a._spine_slider_mix_timeline_set_frame=Y.spine_slider_mix_timeline_set_frame;a._spine_slider_mix_timeline_get_curve_value=Y.spine_slider_mix_timeline_get_curve_value;a._spine_slider_mix_timeline_get_relative_value=Y.spine_slider_mix_timeline_get_relative_value;a._spine_slider_mix_timeline_get_absolute_value_1=Y.spine_slider_mix_timeline_get_absolute_value_1; +a._spine_slider_mix_timeline_get_absolute_value_2=Y.spine_slider_mix_timeline_get_absolute_value_2;a._spine_slider_mix_timeline_get_scale_value=Y.spine_slider_mix_timeline_get_scale_value;a._spine_slider_mix_timeline_set_linear=Y.spine_slider_mix_timeline_set_linear;a._spine_slider_mix_timeline_set_stepped=Y.spine_slider_mix_timeline_set_stepped;a._spine_slider_mix_timeline_set_bezier=Y.spine_slider_mix_timeline_set_bezier;a._spine_slider_mix_timeline_get_bezier_value=Y.spine_slider_mix_timeline_get_bezier_value; +a._spine_slider_mix_timeline_get_curves=Y.spine_slider_mix_timeline_get_curves;a._spine_slider_mix_timeline_get_frame_entries=Y.spine_slider_mix_timeline_get_frame_entries;a._spine_slider_mix_timeline_get_frame_count=Y.spine_slider_mix_timeline_get_frame_count;a._spine_slider_mix_timeline_get_frames=Y.spine_slider_mix_timeline_get_frames;a._spine_slider_mix_timeline_get_duration=Y.spine_slider_mix_timeline_get_duration;a._spine_slider_mix_timeline_get_property_ids=Y.spine_slider_mix_timeline_get_property_ids; +a._spine_slider_mix_timeline_rtti=Y.spine_slider_mix_timeline_rtti;a._spine_animation_state_create=Y.spine_animation_state_create;a._spine_animation_state_dispose=Y.spine_animation_state_dispose;a._spine_animation_state_update=Y.spine_animation_state_update;a._spine_animation_state_apply=Y.spine_animation_state_apply;a._spine_animation_state_clear_tracks=Y.spine_animation_state_clear_tracks;a._spine_animation_state_clear_track=Y.spine_animation_state_clear_track; +a._spine_animation_state_set_animation_1=Y.spine_animation_state_set_animation_1;a._spine_animation_state_set_animation_2=Y.spine_animation_state_set_animation_2;a._spine_animation_state_add_animation_1=Y.spine_animation_state_add_animation_1;a._spine_animation_state_add_animation_2=Y.spine_animation_state_add_animation_2;a._spine_animation_state_set_empty_animation=Y.spine_animation_state_set_empty_animation;a._spine_animation_state_add_empty_animation=Y.spine_animation_state_add_empty_animation; +a._spine_animation_state_set_empty_animations=Y.spine_animation_state_set_empty_animations;a._spine_animation_state_get_current=Y.spine_animation_state_get_current;a._spine_animation_state_get_data=Y.spine_animation_state_get_data;a._spine_animation_state_get_tracks=Y.spine_animation_state_get_tracks;a._spine_animation_state_get_time_scale=Y.spine_animation_state_get_time_scale;a._spine_animation_state_set_time_scale=Y.spine_animation_state_set_time_scale;a._spine_animation_state_disable_queue=Y.spine_animation_state_disable_queue; +a._spine_animation_state_enable_queue=Y.spine_animation_state_enable_queue;a._spine_animation_state_set_manual_track_entry_disposal=Y.spine_animation_state_set_manual_track_entry_disposal;a._spine_animation_state_get_manual_track_entry_disposal=Y.spine_animation_state_get_manual_track_entry_disposal;a._spine_animation_state_dispose_track_entry=Y.spine_animation_state_dispose_track_entry;a._spine_animation_state_get_renderer_object=Y.spine_animation_state_get_renderer_object; +a._spine_bone_pose_create=Y.spine_bone_pose_create;a._spine_bone_pose_dispose=Y.spine_bone_pose_dispose;a._spine_bone_pose_get_rtti=Y.spine_bone_pose_get_rtti;a._spine_bone_pose_update=Y.spine_bone_pose_update;a._spine_bone_pose_update_world_transform=Y.spine_bone_pose_update_world_transform;a._spine_bone_pose_update_local_transform=Y.spine_bone_pose_update_local_transform;a._spine_bone_pose_validate_local_transform=Y.spine_bone_pose_validate_local_transform;a._spine_bone_pose_modify_local=Y.spine_bone_pose_modify_local; +a._spine_bone_pose_modify_world=Y.spine_bone_pose_modify_world;a._spine_bone_pose_reset_world=Y.spine_bone_pose_reset_world;a._spine_bone_pose_get_a=Y.spine_bone_pose_get_a;a._spine_bone_pose_set_a=Y.spine_bone_pose_set_a;a._spine_bone_pose_get_b=Y.spine_bone_pose_get_b;a._spine_bone_pose_set_b=Y.spine_bone_pose_set_b;a._spine_bone_pose_get_c=Y.spine_bone_pose_get_c;a._spine_bone_pose_set_c=Y.spine_bone_pose_set_c;a._spine_bone_pose_get_d=Y.spine_bone_pose_get_d;a._spine_bone_pose_set_d=Y.spine_bone_pose_set_d; +a._spine_bone_pose_get_world_x=Y.spine_bone_pose_get_world_x;a._spine_bone_pose_set_world_x=Y.spine_bone_pose_set_world_x;a._spine_bone_pose_get_world_y=Y.spine_bone_pose_get_world_y;a._spine_bone_pose_set_world_y=Y.spine_bone_pose_set_world_y;a._spine_bone_pose_get_world_rotation_x=Y.spine_bone_pose_get_world_rotation_x;a._spine_bone_pose_get_world_rotation_y=Y.spine_bone_pose_get_world_rotation_y;a._spine_bone_pose_get_world_scale_x=Y.spine_bone_pose_get_world_scale_x; +a._spine_bone_pose_get_world_scale_y=Y.spine_bone_pose_get_world_scale_y;a._spine_bone_pose_world_to_local=Y.spine_bone_pose_world_to_local;a._spine_bone_pose_local_to_world=Y.spine_bone_pose_local_to_world;a._spine_bone_pose_world_to_parent=Y.spine_bone_pose_world_to_parent;a._spine_bone_pose_parent_to_world=Y.spine_bone_pose_parent_to_world;a._spine_bone_pose_world_to_local_rotation=Y.spine_bone_pose_world_to_local_rotation;a._spine_bone_pose_local_to_world_rotation=Y.spine_bone_pose_local_to_world_rotation; +a._spine_bone_pose_rotate_world=Y.spine_bone_pose_rotate_world;a._spine_bone_pose_set=Y.spine_bone_pose_set;a._spine_bone_pose_get_x=Y.spine_bone_pose_get_x;a._spine_bone_pose_set_x=Y.spine_bone_pose_set_x;a._spine_bone_pose_get_y=Y.spine_bone_pose_get_y;a._spine_bone_pose_set_y=Y.spine_bone_pose_set_y;a._spine_bone_pose_set_position=Y.spine_bone_pose_set_position;a._spine_bone_pose_get_rotation=Y.spine_bone_pose_get_rotation;a._spine_bone_pose_set_rotation=Y.spine_bone_pose_set_rotation; +a._spine_bone_pose_get_scale_x=Y.spine_bone_pose_get_scale_x;a._spine_bone_pose_set_scale_x=Y.spine_bone_pose_set_scale_x;a._spine_bone_pose_get_scale_y=Y.spine_bone_pose_get_scale_y;a._spine_bone_pose_set_scale_y=Y.spine_bone_pose_set_scale_y;a._spine_bone_pose_set_scale_1=Y.spine_bone_pose_set_scale_1;a._spine_bone_pose_set_scale_2=Y.spine_bone_pose_set_scale_2;a._spine_bone_pose_get_shear_x=Y.spine_bone_pose_get_shear_x;a._spine_bone_pose_set_shear_x=Y.spine_bone_pose_set_shear_x; +a._spine_bone_pose_get_shear_y=Y.spine_bone_pose_get_shear_y;a._spine_bone_pose_set_shear_y=Y.spine_bone_pose_set_shear_y;a._spine_bone_pose_get_inherit=Y.spine_bone_pose_get_inherit;a._spine_bone_pose_set_inherit=Y.spine_bone_pose_set_inherit;a._spine_bone_pose_rtti=Y.spine_bone_pose_rtti;a._spine_bone_timeline1_dispose=Y.spine_bone_timeline1_dispose;a._spine_bone_timeline1_get_rtti=Y.spine_bone_timeline1_get_rtti;a._spine_bone_timeline1_apply=Y.spine_bone_timeline1_apply; +a._spine_bone_timeline1_get_bone_index=Y.spine_bone_timeline1_get_bone_index;a._spine_bone_timeline1_set_bone_index=Y.spine_bone_timeline1_set_bone_index;a._spine_bone_timeline1_set_frame=Y.spine_bone_timeline1_set_frame;a._spine_bone_timeline1_get_curve_value=Y.spine_bone_timeline1_get_curve_value;a._spine_bone_timeline1_get_relative_value=Y.spine_bone_timeline1_get_relative_value;a._spine_bone_timeline1_get_absolute_value_1=Y.spine_bone_timeline1_get_absolute_value_1; +a._spine_bone_timeline1_get_absolute_value_2=Y.spine_bone_timeline1_get_absolute_value_2;a._spine_bone_timeline1_get_scale_value=Y.spine_bone_timeline1_get_scale_value;a._spine_bone_timeline1_set_linear=Y.spine_bone_timeline1_set_linear;a._spine_bone_timeline1_set_stepped=Y.spine_bone_timeline1_set_stepped;a._spine_bone_timeline1_set_bezier=Y.spine_bone_timeline1_set_bezier;a._spine_bone_timeline1_get_bezier_value=Y.spine_bone_timeline1_get_bezier_value;a._spine_bone_timeline1_get_curves=Y.spine_bone_timeline1_get_curves; +a._spine_bone_timeline1_get_frame_entries=Y.spine_bone_timeline1_get_frame_entries;a._spine_bone_timeline1_get_frame_count=Y.spine_bone_timeline1_get_frame_count;a._spine_bone_timeline1_get_frames=Y.spine_bone_timeline1_get_frames;a._spine_bone_timeline1_get_duration=Y.spine_bone_timeline1_get_duration;a._spine_bone_timeline1_get_property_ids=Y.spine_bone_timeline1_get_property_ids;a._spine_bone_timeline1_rtti=Y.spine_bone_timeline1_rtti;a._spine_slot_data_create=Y.spine_slot_data_create; +a._spine_slot_data_dispose=Y.spine_slot_data_dispose;a._spine_slot_data_get_index=Y.spine_slot_data_get_index;a._spine_slot_data_get_bone_data=Y.spine_slot_data_get_bone_data;a._spine_slot_data_set_attachment_name=Y.spine_slot_data_set_attachment_name;a._spine_slot_data_get_attachment_name=Y.spine_slot_data_get_attachment_name;a._spine_slot_data_get_blend_mode=Y.spine_slot_data_get_blend_mode;a._spine_slot_data_set_blend_mode=Y.spine_slot_data_set_blend_mode;a._spine_slot_data_get_visible=Y.spine_slot_data_get_visible; +a._spine_slot_data_set_visible=Y.spine_slot_data_set_visible;a._spine_slot_data_get_setup_pose=Y.spine_slot_data_get_setup_pose;a._spine_slot_data_get_name=Y.spine_slot_data_get_name;a._spine_slot_data_get_skin_required=Y.spine_slot_data_get_skin_required;a._spine_slot_data_set_skin_required=Y.spine_slot_data_set_skin_required;a._spine_deform_timeline_create=Y.spine_deform_timeline_create;a._spine_deform_timeline_dispose=Y.spine_deform_timeline_dispose;a._spine_deform_timeline_get_rtti=Y.spine_deform_timeline_get_rtti; +a._spine_deform_timeline_set_frame=Y.spine_deform_timeline_set_frame;a._spine_deform_timeline_get_attachment=Y.spine_deform_timeline_get_attachment;a._spine_deform_timeline_set_attachment=Y.spine_deform_timeline_set_attachment;a._spine_deform_timeline_set_bezier=Y.spine_deform_timeline_set_bezier;a._spine_deform_timeline_get_curve_percent=Y.spine_deform_timeline_get_curve_percent;a._spine_deform_timeline_get_frame_count=Y.spine_deform_timeline_get_frame_count;a._spine_deform_timeline_apply=Y.spine_deform_timeline_apply; +a._spine_deform_timeline_get_slot_index=Y.spine_deform_timeline_get_slot_index;a._spine_deform_timeline_set_slot_index=Y.spine_deform_timeline_set_slot_index;a._spine_deform_timeline_set_linear=Y.spine_deform_timeline_set_linear;a._spine_deform_timeline_set_stepped=Y.spine_deform_timeline_set_stepped;a._spine_deform_timeline_get_bezier_value=Y.spine_deform_timeline_get_bezier_value;a._spine_deform_timeline_get_curves=Y.spine_deform_timeline_get_curves;a._spine_deform_timeline_get_frame_entries=Y.spine_deform_timeline_get_frame_entries; +a._spine_deform_timeline_get_frames=Y.spine_deform_timeline_get_frames;a._spine_deform_timeline_get_duration=Y.spine_deform_timeline_get_duration;a._spine_deform_timeline_get_property_ids=Y.spine_deform_timeline_get_property_ids;a._spine_deform_timeline_rtti=Y.spine_deform_timeline_rtti;a._spine_posed_data_create=Y.spine_posed_data_create;a._spine_posed_data_dispose=Y.spine_posed_data_dispose;a._spine_posed_data_get_name=Y.spine_posed_data_get_name;a._spine_posed_data_get_skin_required=Y.spine_posed_data_get_skin_required; +a._spine_posed_data_set_skin_required=Y.spine_posed_data_set_skin_required;a._spine_event_queue_entry_create=Y.spine_event_queue_entry_create;a._spine_event_queue_entry_dispose=Y.spine_event_queue_entry_dispose;a._spine_event_queue_entry_get__type=Y.spine_event_queue_entry_get__type;a._spine_event_queue_entry_set__type=Y.spine_event_queue_entry_set__type;a._spine_event_queue_entry_get__entry=Y.spine_event_queue_entry_get__entry;a._spine_event_queue_entry_set__entry=Y.spine_event_queue_entry_set__entry; +a._spine_event_queue_entry_get__event=Y.spine_event_queue_entry_get__event;a._spine_event_queue_entry_set__event=Y.spine_event_queue_entry_set__event;a._spine_transform_constraint_timeline_create=Y.spine_transform_constraint_timeline_create;a._spine_transform_constraint_timeline_dispose=Y.spine_transform_constraint_timeline_dispose;a._spine_transform_constraint_timeline_get_rtti=Y.spine_transform_constraint_timeline_get_rtti;a._spine_transform_constraint_timeline_apply=Y.spine_transform_constraint_timeline_apply; +a._spine_transform_constraint_timeline_set_frame=Y.spine_transform_constraint_timeline_set_frame;a._spine_transform_constraint_timeline_get_constraint_index=Y.spine_transform_constraint_timeline_get_constraint_index;a._spine_transform_constraint_timeline_set_constraint_index=Y.spine_transform_constraint_timeline_set_constraint_index;a._spine_transform_constraint_timeline_set_linear=Y.spine_transform_constraint_timeline_set_linear;a._spine_transform_constraint_timeline_set_stepped=Y.spine_transform_constraint_timeline_set_stepped; +a._spine_transform_constraint_timeline_set_bezier=Y.spine_transform_constraint_timeline_set_bezier;a._spine_transform_constraint_timeline_get_bezier_value=Y.spine_transform_constraint_timeline_get_bezier_value;a._spine_transform_constraint_timeline_get_curves=Y.spine_transform_constraint_timeline_get_curves;a._spine_transform_constraint_timeline_get_frame_entries=Y.spine_transform_constraint_timeline_get_frame_entries;a._spine_transform_constraint_timeline_get_frame_count=Y.spine_transform_constraint_timeline_get_frame_count; +a._spine_transform_constraint_timeline_get_frames=Y.spine_transform_constraint_timeline_get_frames;a._spine_transform_constraint_timeline_get_duration=Y.spine_transform_constraint_timeline_get_duration;a._spine_transform_constraint_timeline_get_property_ids=Y.spine_transform_constraint_timeline_get_property_ids;a._spine_transform_constraint_timeline_rtti=Y.spine_transform_constraint_timeline_rtti;a._spine_slider_pose_create=Y.spine_slider_pose_create;a._spine_slider_pose_dispose=Y.spine_slider_pose_dispose; +a._spine_slider_pose_set=Y.spine_slider_pose_set;a._spine_slider_pose_get_time=Y.spine_slider_pose_get_time;a._spine_slider_pose_set_time=Y.spine_slider_pose_set_time;a._spine_slider_pose_get_mix=Y.spine_slider_pose_get_mix;a._spine_slider_pose_set_mix=Y.spine_slider_pose_set_mix;a._spine_constraint_dispose=Y.spine_constraint_dispose;a._spine_constraint_get_rtti=Y.spine_constraint_get_rtti;a._spine_constraint_get_data=Y.spine_constraint_get_data;a._spine_constraint_sort=Y.spine_constraint_sort; +a._spine_constraint_is_source_active=Y.spine_constraint_is_source_active;a._spine_constraint_update=Y.spine_constraint_update;a._spine_constraint_rtti=Y.spine_constraint_rtti;a._spine_physics_constraint_wind_timeline_create=Y.spine_physics_constraint_wind_timeline_create;a._spine_physics_constraint_wind_timeline_dispose=Y.spine_physics_constraint_wind_timeline_dispose;a._spine_physics_constraint_wind_timeline_get_rtti=Y.spine_physics_constraint_wind_timeline_get_rtti; +a._spine_physics_constraint_wind_timeline_apply=Y.spine_physics_constraint_wind_timeline_apply;a._spine_physics_constraint_wind_timeline_get_constraint_index=Y.spine_physics_constraint_wind_timeline_get_constraint_index;a._spine_physics_constraint_wind_timeline_set_constraint_index=Y.spine_physics_constraint_wind_timeline_set_constraint_index;a._spine_physics_constraint_wind_timeline_set_frame=Y.spine_physics_constraint_wind_timeline_set_frame; +a._spine_physics_constraint_wind_timeline_get_curve_value=Y.spine_physics_constraint_wind_timeline_get_curve_value;a._spine_physics_constraint_wind_timeline_get_relative_value=Y.spine_physics_constraint_wind_timeline_get_relative_value;a._spine_physics_constraint_wind_timeline_get_absolute_value_1=Y.spine_physics_constraint_wind_timeline_get_absolute_value_1;a._spine_physics_constraint_wind_timeline_get_absolute_value_2=Y.spine_physics_constraint_wind_timeline_get_absolute_value_2; +a._spine_physics_constraint_wind_timeline_get_scale_value=Y.spine_physics_constraint_wind_timeline_get_scale_value;a._spine_physics_constraint_wind_timeline_set_linear=Y.spine_physics_constraint_wind_timeline_set_linear;a._spine_physics_constraint_wind_timeline_set_stepped=Y.spine_physics_constraint_wind_timeline_set_stepped;a._spine_physics_constraint_wind_timeline_set_bezier=Y.spine_physics_constraint_wind_timeline_set_bezier;a._spine_physics_constraint_wind_timeline_get_bezier_value=Y.spine_physics_constraint_wind_timeline_get_bezier_value; +a._spine_physics_constraint_wind_timeline_get_curves=Y.spine_physics_constraint_wind_timeline_get_curves;a._spine_physics_constraint_wind_timeline_get_frame_entries=Y.spine_physics_constraint_wind_timeline_get_frame_entries;a._spine_physics_constraint_wind_timeline_get_frame_count=Y.spine_physics_constraint_wind_timeline_get_frame_count;a._spine_physics_constraint_wind_timeline_get_frames=Y.spine_physics_constraint_wind_timeline_get_frames;a._spine_physics_constraint_wind_timeline_get_duration=Y.spine_physics_constraint_wind_timeline_get_duration; +a._spine_physics_constraint_wind_timeline_get_property_ids=Y.spine_physics_constraint_wind_timeline_get_property_ids;a._spine_physics_constraint_wind_timeline_rtti=Y.spine_physics_constraint_wind_timeline_rtti;a._spine_skeleton_json_create=Y.spine_skeleton_json_create;a._spine_skeleton_json_create2=Y.spine_skeleton_json_create2;a._spine_skeleton_json_dispose=Y.spine_skeleton_json_dispose;a._spine_skeleton_json_read_skeleton_data_file=Y.spine_skeleton_json_read_skeleton_data_file; +a._spine_skeleton_json_read_skeleton_data=Y.spine_skeleton_json_read_skeleton_data;a._spine_skeleton_json_set_scale=Y.spine_skeleton_json_set_scale;a._spine_skeleton_json_get_error=Y.spine_skeleton_json_get_error;a._spine_physics_constraint_create=Y.spine_physics_constraint_create;a._spine_physics_constraint_dispose=Y.spine_physics_constraint_dispose;a._spine_physics_constraint_get_rtti=Y.spine_physics_constraint_get_rtti;a._spine_physics_constraint_update=Y.spine_physics_constraint_update; +a._spine_physics_constraint_sort=Y.spine_physics_constraint_sort;a._spine_physics_constraint_is_source_active=Y.spine_physics_constraint_is_source_active;a._spine_physics_constraint_copy=Y.spine_physics_constraint_copy;a._spine_physics_constraint_reset=Y.spine_physics_constraint_reset;a._spine_physics_constraint_translate=Y.spine_physics_constraint_translate;a._spine_physics_constraint_rotate=Y.spine_physics_constraint_rotate;a._spine_physics_constraint_get_bone=Y.spine_physics_constraint_get_bone; +a._spine_physics_constraint_set_bone=Y.spine_physics_constraint_set_bone;a._spine_physics_constraint_get_data=Y.spine_physics_constraint_get_data;a._spine_physics_constraint_get_pose=Y.spine_physics_constraint_get_pose;a._spine_physics_constraint_get_applied_pose=Y.spine_physics_constraint_get_applied_pose;a._spine_physics_constraint_reset_constrained=Y.spine_physics_constraint_reset_constrained;a._spine_physics_constraint_constrained=Y.spine_physics_constraint_constrained; +a._spine_physics_constraint_is_pose_equal_to_applied=Y.spine_physics_constraint_is_pose_equal_to_applied;a._spine_physics_constraint_is_active=Y.spine_physics_constraint_is_active;a._spine_physics_constraint_set_active=Y.spine_physics_constraint_set_active;a._spine_physics_constraint_rtti=Y.spine_physics_constraint_rtti;a._spine_physics_constraint_gravity_timeline_create=Y.spine_physics_constraint_gravity_timeline_create;a._spine_physics_constraint_gravity_timeline_dispose=Y.spine_physics_constraint_gravity_timeline_dispose; +a._spine_physics_constraint_gravity_timeline_get_rtti=Y.spine_physics_constraint_gravity_timeline_get_rtti;a._spine_physics_constraint_gravity_timeline_apply=Y.spine_physics_constraint_gravity_timeline_apply;a._spine_physics_constraint_gravity_timeline_get_constraint_index=Y.spine_physics_constraint_gravity_timeline_get_constraint_index;a._spine_physics_constraint_gravity_timeline_set_constraint_index=Y.spine_physics_constraint_gravity_timeline_set_constraint_index; +a._spine_physics_constraint_gravity_timeline_set_frame=Y.spine_physics_constraint_gravity_timeline_set_frame;a._spine_physics_constraint_gravity_timeline_get_curve_value=Y.spine_physics_constraint_gravity_timeline_get_curve_value;a._spine_physics_constraint_gravity_timeline_get_relative_value=Y.spine_physics_constraint_gravity_timeline_get_relative_value;a._spine_physics_constraint_gravity_timeline_get_absolute_value_1=Y.spine_physics_constraint_gravity_timeline_get_absolute_value_1; +a._spine_physics_constraint_gravity_timeline_get_absolute_value_2=Y.spine_physics_constraint_gravity_timeline_get_absolute_value_2;a._spine_physics_constraint_gravity_timeline_get_scale_value=Y.spine_physics_constraint_gravity_timeline_get_scale_value;a._spine_physics_constraint_gravity_timeline_set_linear=Y.spine_physics_constraint_gravity_timeline_set_linear;a._spine_physics_constraint_gravity_timeline_set_stepped=Y.spine_physics_constraint_gravity_timeline_set_stepped; +a._spine_physics_constraint_gravity_timeline_set_bezier=Y.spine_physics_constraint_gravity_timeline_set_bezier;a._spine_physics_constraint_gravity_timeline_get_bezier_value=Y.spine_physics_constraint_gravity_timeline_get_bezier_value;a._spine_physics_constraint_gravity_timeline_get_curves=Y.spine_physics_constraint_gravity_timeline_get_curves;a._spine_physics_constraint_gravity_timeline_get_frame_entries=Y.spine_physics_constraint_gravity_timeline_get_frame_entries; +a._spine_physics_constraint_gravity_timeline_get_frame_count=Y.spine_physics_constraint_gravity_timeline_get_frame_count;a._spine_physics_constraint_gravity_timeline_get_frames=Y.spine_physics_constraint_gravity_timeline_get_frames;a._spine_physics_constraint_gravity_timeline_get_duration=Y.spine_physics_constraint_gravity_timeline_get_duration;a._spine_physics_constraint_gravity_timeline_get_property_ids=Y.spine_physics_constraint_gravity_timeline_get_property_ids; +a._spine_physics_constraint_gravity_timeline_rtti=Y.spine_physics_constraint_gravity_timeline_rtti;a._spine_skin_create=Y.spine_skin_create;a._spine_skin_dispose=Y.spine_skin_dispose;a._spine_skin_set_attachment=Y.spine_skin_set_attachment;a._spine_skin_get_attachment=Y.spine_skin_get_attachment;a._spine_skin_remove_attachment=Y.spine_skin_remove_attachment;a._spine_skin_find_attachments_for_slot=Y.spine_skin_find_attachments_for_slot;a._spine_skin_get_name=Y.spine_skin_get_name; +a._spine_skin_add_skin=Y.spine_skin_add_skin;a._spine_skin_copy_skin=Y.spine_skin_copy_skin;a._spine_skin_get_bones=Y.spine_skin_get_bones;a._spine_skin_get_constraints=Y.spine_skin_get_constraints;a._spine_skin_get_color=Y.spine_skin_get_color;a._spine_curve_timeline_dispose=Y.spine_curve_timeline_dispose;a._spine_curve_timeline_get_rtti=Y.spine_curve_timeline_get_rtti;a._spine_curve_timeline_set_linear=Y.spine_curve_timeline_set_linear;a._spine_curve_timeline_set_stepped=Y.spine_curve_timeline_set_stepped; +a._spine_curve_timeline_set_bezier=Y.spine_curve_timeline_set_bezier;a._spine_curve_timeline_get_bezier_value=Y.spine_curve_timeline_get_bezier_value;a._spine_curve_timeline_get_curves=Y.spine_curve_timeline_get_curves;a._spine_curve_timeline_apply=Y.spine_curve_timeline_apply;a._spine_curve_timeline_get_frame_entries=Y.spine_curve_timeline_get_frame_entries;a._spine_curve_timeline_get_frame_count=Y.spine_curve_timeline_get_frame_count;a._spine_curve_timeline_get_frames=Y.spine_curve_timeline_get_frames; +a._spine_curve_timeline_get_duration=Y.spine_curve_timeline_get_duration;a._spine_curve_timeline_get_property_ids=Y.spine_curve_timeline_get_property_ids;a._spine_curve_timeline_rtti=Y.spine_curve_timeline_rtti;a._spine_ik_constraint_create=Y.spine_ik_constraint_create;a._spine_ik_constraint_dispose=Y.spine_ik_constraint_dispose;a._spine_ik_constraint_get_rtti=Y.spine_ik_constraint_get_rtti;a._spine_ik_constraint_copy=Y.spine_ik_constraint_copy;a._spine_ik_constraint_update=Y.spine_ik_constraint_update; +a._spine_ik_constraint_sort=Y.spine_ik_constraint_sort;a._spine_ik_constraint_is_source_active=Y.spine_ik_constraint_is_source_active;a._spine_ik_constraint_get_data=Y.spine_ik_constraint_get_data;a._spine_ik_constraint_get_bones=Y.spine_ik_constraint_get_bones;a._spine_ik_constraint_get_target=Y.spine_ik_constraint_get_target;a._spine_ik_constraint_set_target=Y.spine_ik_constraint_set_target;a._spine_ik_constraint_apply_1=Y.spine_ik_constraint_apply_1;a._spine_ik_constraint_apply_2=Y.spine_ik_constraint_apply_2; +a._spine_ik_constraint_get_pose=Y.spine_ik_constraint_get_pose;a._spine_ik_constraint_get_applied_pose=Y.spine_ik_constraint_get_applied_pose;a._spine_ik_constraint_reset_constrained=Y.spine_ik_constraint_reset_constrained;a._spine_ik_constraint_constrained=Y.spine_ik_constraint_constrained;a._spine_ik_constraint_is_pose_equal_to_applied=Y.spine_ik_constraint_is_pose_equal_to_applied;a._spine_ik_constraint_is_active=Y.spine_ik_constraint_is_active;a._spine_ik_constraint_set_active=Y.spine_ik_constraint_set_active; +a._spine_ik_constraint_rtti=Y.spine_ik_constraint_rtti;a._spine_rtti_dispose=Y.spine_rtti_dispose;a._spine_rtti_get_class_name=Y.spine_rtti_get_class_name;a._spine_rtti_is_exactly=Y.spine_rtti_is_exactly;a._spine_rtti_instance_of=Y.spine_rtti_instance_of;a._spine_physics_constraint_mass_timeline_create=Y.spine_physics_constraint_mass_timeline_create;a._spine_physics_constraint_mass_timeline_dispose=Y.spine_physics_constraint_mass_timeline_dispose; +a._spine_physics_constraint_mass_timeline_get_rtti=Y.spine_physics_constraint_mass_timeline_get_rtti;a._spine_physics_constraint_mass_timeline_apply=Y.spine_physics_constraint_mass_timeline_apply;a._spine_physics_constraint_mass_timeline_get_constraint_index=Y.spine_physics_constraint_mass_timeline_get_constraint_index;a._spine_physics_constraint_mass_timeline_set_constraint_index=Y.spine_physics_constraint_mass_timeline_set_constraint_index;a._spine_physics_constraint_mass_timeline_set_frame=Y.spine_physics_constraint_mass_timeline_set_frame; +a._spine_physics_constraint_mass_timeline_get_curve_value=Y.spine_physics_constraint_mass_timeline_get_curve_value;a._spine_physics_constraint_mass_timeline_get_relative_value=Y.spine_physics_constraint_mass_timeline_get_relative_value;a._spine_physics_constraint_mass_timeline_get_absolute_value_1=Y.spine_physics_constraint_mass_timeline_get_absolute_value_1;a._spine_physics_constraint_mass_timeline_get_absolute_value_2=Y.spine_physics_constraint_mass_timeline_get_absolute_value_2; +a._spine_physics_constraint_mass_timeline_get_scale_value=Y.spine_physics_constraint_mass_timeline_get_scale_value;a._spine_physics_constraint_mass_timeline_set_linear=Y.spine_physics_constraint_mass_timeline_set_linear;a._spine_physics_constraint_mass_timeline_set_stepped=Y.spine_physics_constraint_mass_timeline_set_stepped;a._spine_physics_constraint_mass_timeline_set_bezier=Y.spine_physics_constraint_mass_timeline_set_bezier;a._spine_physics_constraint_mass_timeline_get_bezier_value=Y.spine_physics_constraint_mass_timeline_get_bezier_value; +a._spine_physics_constraint_mass_timeline_get_curves=Y.spine_physics_constraint_mass_timeline_get_curves;a._spine_physics_constraint_mass_timeline_get_frame_entries=Y.spine_physics_constraint_mass_timeline_get_frame_entries;a._spine_physics_constraint_mass_timeline_get_frame_count=Y.spine_physics_constraint_mass_timeline_get_frame_count;a._spine_physics_constraint_mass_timeline_get_frames=Y.spine_physics_constraint_mass_timeline_get_frames;a._spine_physics_constraint_mass_timeline_get_duration=Y.spine_physics_constraint_mass_timeline_get_duration; +a._spine_physics_constraint_mass_timeline_get_property_ids=Y.spine_physics_constraint_mass_timeline_get_property_ids;a._spine_physics_constraint_mass_timeline_rtti=Y.spine_physics_constraint_mass_timeline_rtti;a._spine_from_shear_y_create=Y.spine_from_shear_y_create;a._spine_from_shear_y_dispose=Y.spine_from_shear_y_dispose;a._spine_from_shear_y_get_rtti=Y.spine_from_shear_y_get_rtti;a._spine_from_shear_y_value=Y.spine_from_shear_y_value;a._spine_from_shear_y_rtti=Y.spine_from_shear_y_rtti; +a._spine_bone_local_create=Y.spine_bone_local_create;a._spine_bone_local_dispose=Y.spine_bone_local_dispose;a._spine_bone_local_set=Y.spine_bone_local_set;a._spine_bone_local_get_x=Y.spine_bone_local_get_x;a._spine_bone_local_set_x=Y.spine_bone_local_set_x;a._spine_bone_local_get_y=Y.spine_bone_local_get_y;a._spine_bone_local_set_y=Y.spine_bone_local_set_y;a._spine_bone_local_set_position=Y.spine_bone_local_set_position;a._spine_bone_local_get_rotation=Y.spine_bone_local_get_rotation; +a._spine_bone_local_set_rotation=Y.spine_bone_local_set_rotation;a._spine_bone_local_get_scale_x=Y.spine_bone_local_get_scale_x;a._spine_bone_local_set_scale_x=Y.spine_bone_local_set_scale_x;a._spine_bone_local_get_scale_y=Y.spine_bone_local_get_scale_y;a._spine_bone_local_set_scale_y=Y.spine_bone_local_set_scale_y;a._spine_bone_local_set_scale_1=Y.spine_bone_local_set_scale_1;a._spine_bone_local_set_scale_2=Y.spine_bone_local_set_scale_2;a._spine_bone_local_get_shear_x=Y.spine_bone_local_get_shear_x; +a._spine_bone_local_set_shear_x=Y.spine_bone_local_set_shear_x;a._spine_bone_local_get_shear_y=Y.spine_bone_local_get_shear_y;a._spine_bone_local_set_shear_y=Y.spine_bone_local_set_shear_y;a._spine_bone_local_get_inherit=Y.spine_bone_local_get_inherit;a._spine_bone_local_set_inherit=Y.spine_bone_local_set_inherit;a._spine_atlas_dispose=Y.spine_atlas_dispose;a._spine_atlas_flip_v=Y.spine_atlas_flip_v;a._spine_atlas_find_region=Y.spine_atlas_find_region;a._spine_atlas_get_pages=Y.spine_atlas_get_pages; +a._spine_atlas_get_regions=Y.spine_atlas_get_regions;a._spine_bounding_box_attachment_create=Y.spine_bounding_box_attachment_create;a._spine_bounding_box_attachment_dispose=Y.spine_bounding_box_attachment_dispose;a._spine_bounding_box_attachment_get_rtti=Y.spine_bounding_box_attachment_get_rtti;a._spine_bounding_box_attachment_get_color=Y.spine_bounding_box_attachment_get_color;a._spine_bounding_box_attachment_copy=Y.spine_bounding_box_attachment_copy; +a._spine_bounding_box_attachment_compute_world_vertices_1=Y.spine_bounding_box_attachment_compute_world_vertices_1;a._spine_bounding_box_attachment_compute_world_vertices_2=Y.spine_bounding_box_attachment_compute_world_vertices_2;a._spine_bounding_box_attachment_get_id=Y.spine_bounding_box_attachment_get_id;a._spine_bounding_box_attachment_get_bones=Y.spine_bounding_box_attachment_get_bones;a._spine_bounding_box_attachment_set_bones=Y.spine_bounding_box_attachment_set_bones; +a._spine_bounding_box_attachment_get_vertices=Y.spine_bounding_box_attachment_get_vertices;a._spine_bounding_box_attachment_set_vertices=Y.spine_bounding_box_attachment_set_vertices;a._spine_bounding_box_attachment_get_world_vertices_length=Y.spine_bounding_box_attachment_get_world_vertices_length;a._spine_bounding_box_attachment_set_world_vertices_length=Y.spine_bounding_box_attachment_set_world_vertices_length;a._spine_bounding_box_attachment_get_timeline_attachment=Y.spine_bounding_box_attachment_get_timeline_attachment; +a._spine_bounding_box_attachment_set_timeline_attachment=Y.spine_bounding_box_attachment_set_timeline_attachment;a._spine_bounding_box_attachment_copy_to=Y.spine_bounding_box_attachment_copy_to;a._spine_bounding_box_attachment_get_name=Y.spine_bounding_box_attachment_get_name;a._spine_bounding_box_attachment_get_ref_count=Y.spine_bounding_box_attachment_get_ref_count;a._spine_bounding_box_attachment_reference=Y.spine_bounding_box_attachment_reference;a._spine_bounding_box_attachment_dereference=Y.spine_bounding_box_attachment_dereference; +a._spine_bounding_box_attachment_rtti=Y.spine_bounding_box_attachment_rtti;a._spine_skeleton_clipping_create=Y.spine_skeleton_clipping_create;a._spine_skeleton_clipping_dispose=Y.spine_skeleton_clipping_dispose;a._spine_skeleton_clipping_clip_start=Y.spine_skeleton_clipping_clip_start;a._spine_skeleton_clipping_clip_end_1=Y.spine_skeleton_clipping_clip_end_1;a._spine_skeleton_clipping_clip_end_2=Y.spine_skeleton_clipping_clip_end_2;a._spine_skeleton_clipping_clip_triangles_1=Y.spine_skeleton_clipping_clip_triangles_1; +a._spine_skeleton_clipping_clip_triangles_2=Y.spine_skeleton_clipping_clip_triangles_2;a._spine_skeleton_clipping_clip_triangles_3=Y.spine_skeleton_clipping_clip_triangles_3;a._spine_skeleton_clipping_is_clipping=Y.spine_skeleton_clipping_is_clipping;a._spine_skeleton_clipping_get_clipped_vertices=Y.spine_skeleton_clipping_get_clipped_vertices;a._spine_skeleton_clipping_get_clipped_triangles=Y.spine_skeleton_clipping_get_clipped_triangles;a._spine_skeleton_clipping_get_clipped_u_vs=Y.spine_skeleton_clipping_get_clipped_u_vs; +a._spine_path_constraint_spacing_timeline_create=Y.spine_path_constraint_spacing_timeline_create;a._spine_path_constraint_spacing_timeline_dispose=Y.spine_path_constraint_spacing_timeline_dispose;a._spine_path_constraint_spacing_timeline_get_rtti=Y.spine_path_constraint_spacing_timeline_get_rtti;a._spine_path_constraint_spacing_timeline_apply=Y.spine_path_constraint_spacing_timeline_apply;a._spine_path_constraint_spacing_timeline_get_constraint_index=Y.spine_path_constraint_spacing_timeline_get_constraint_index; +a._spine_path_constraint_spacing_timeline_set_constraint_index=Y.spine_path_constraint_spacing_timeline_set_constraint_index;a._spine_path_constraint_spacing_timeline_set_frame=Y.spine_path_constraint_spacing_timeline_set_frame;a._spine_path_constraint_spacing_timeline_get_curve_value=Y.spine_path_constraint_spacing_timeline_get_curve_value;a._spine_path_constraint_spacing_timeline_get_relative_value=Y.spine_path_constraint_spacing_timeline_get_relative_value; +a._spine_path_constraint_spacing_timeline_get_absolute_value_1=Y.spine_path_constraint_spacing_timeline_get_absolute_value_1;a._spine_path_constraint_spacing_timeline_get_absolute_value_2=Y.spine_path_constraint_spacing_timeline_get_absolute_value_2;a._spine_path_constraint_spacing_timeline_get_scale_value=Y.spine_path_constraint_spacing_timeline_get_scale_value;a._spine_path_constraint_spacing_timeline_set_linear=Y.spine_path_constraint_spacing_timeline_set_linear; +a._spine_path_constraint_spacing_timeline_set_stepped=Y.spine_path_constraint_spacing_timeline_set_stepped;a._spine_path_constraint_spacing_timeline_set_bezier=Y.spine_path_constraint_spacing_timeline_set_bezier;a._spine_path_constraint_spacing_timeline_get_bezier_value=Y.spine_path_constraint_spacing_timeline_get_bezier_value;a._spine_path_constraint_spacing_timeline_get_curves=Y.spine_path_constraint_spacing_timeline_get_curves;a._spine_path_constraint_spacing_timeline_get_frame_entries=Y.spine_path_constraint_spacing_timeline_get_frame_entries; +a._spine_path_constraint_spacing_timeline_get_frame_count=Y.spine_path_constraint_spacing_timeline_get_frame_count;a._spine_path_constraint_spacing_timeline_get_frames=Y.spine_path_constraint_spacing_timeline_get_frames;a._spine_path_constraint_spacing_timeline_get_duration=Y.spine_path_constraint_spacing_timeline_get_duration;a._spine_path_constraint_spacing_timeline_get_property_ids=Y.spine_path_constraint_spacing_timeline_get_property_ids;a._spine_path_constraint_spacing_timeline_rtti=Y.spine_path_constraint_spacing_timeline_rtti; +a._spine_timeline_dispose=Y.spine_timeline_dispose;a._spine_timeline_get_rtti=Y.spine_timeline_get_rtti;a._spine_timeline_apply=Y.spine_timeline_apply;a._spine_timeline_get_frame_entries=Y.spine_timeline_get_frame_entries;a._spine_timeline_get_frame_count=Y.spine_timeline_get_frame_count;a._spine_timeline_get_frames=Y.spine_timeline_get_frames;a._spine_timeline_get_duration=Y.spine_timeline_get_duration;a._spine_timeline_get_property_ids=Y.spine_timeline_get_property_ids;a._spine_timeline_rtti=Y.spine_timeline_rtti; +a._spine_skeleton_binary_create=Y.spine_skeleton_binary_create;a._spine_skeleton_binary_create2=Y.spine_skeleton_binary_create2;a._spine_skeleton_binary_dispose=Y.spine_skeleton_binary_dispose;a._spine_skeleton_binary_read_skeleton_data=Y.spine_skeleton_binary_read_skeleton_data;a._spine_skeleton_binary_read_skeleton_data_file=Y.spine_skeleton_binary_read_skeleton_data_file;a._spine_skeleton_binary_set_scale=Y.spine_skeleton_binary_set_scale;a._spine_skeleton_binary_get_error=Y.spine_skeleton_binary_get_error; +a._spine_alpha_timeline_create=Y.spine_alpha_timeline_create;a._spine_alpha_timeline_dispose=Y.spine_alpha_timeline_dispose;a._spine_alpha_timeline_get_rtti=Y.spine_alpha_timeline_get_rtti;a._spine_alpha_timeline_apply=Y.spine_alpha_timeline_apply;a._spine_alpha_timeline_get_slot_index=Y.spine_alpha_timeline_get_slot_index;a._spine_alpha_timeline_set_slot_index=Y.spine_alpha_timeline_set_slot_index;a._spine_alpha_timeline_set_frame=Y.spine_alpha_timeline_set_frame; +a._spine_alpha_timeline_get_curve_value=Y.spine_alpha_timeline_get_curve_value;a._spine_alpha_timeline_get_relative_value=Y.spine_alpha_timeline_get_relative_value;a._spine_alpha_timeline_get_absolute_value_1=Y.spine_alpha_timeline_get_absolute_value_1;a._spine_alpha_timeline_get_absolute_value_2=Y.spine_alpha_timeline_get_absolute_value_2;a._spine_alpha_timeline_get_scale_value=Y.spine_alpha_timeline_get_scale_value;a._spine_alpha_timeline_set_linear=Y.spine_alpha_timeline_set_linear; +a._spine_alpha_timeline_set_stepped=Y.spine_alpha_timeline_set_stepped;a._spine_alpha_timeline_set_bezier=Y.spine_alpha_timeline_set_bezier;a._spine_alpha_timeline_get_bezier_value=Y.spine_alpha_timeline_get_bezier_value;a._spine_alpha_timeline_get_curves=Y.spine_alpha_timeline_get_curves;a._spine_alpha_timeline_get_frame_entries=Y.spine_alpha_timeline_get_frame_entries;a._spine_alpha_timeline_get_frame_count=Y.spine_alpha_timeline_get_frame_count;a._spine_alpha_timeline_get_frames=Y.spine_alpha_timeline_get_frames; +a._spine_alpha_timeline_get_duration=Y.spine_alpha_timeline_get_duration;a._spine_alpha_timeline_get_property_ids=Y.spine_alpha_timeline_get_property_ids;a._spine_alpha_timeline_rtti=Y.spine_alpha_timeline_rtti;a._spine_color_create=Y.spine_color_create;a._spine_color_create2=Y.spine_color_create2;a._spine_color_dispose=Y.spine_color_dispose;a._spine_color_set_1=Y.spine_color_set_1;a._spine_color_set_2=Y.spine_color_set_2;a._spine_color_set_3=Y.spine_color_set_3;a._spine_color_add_1=Y.spine_color_add_1; +a._spine_color_add_2=Y.spine_color_add_2;a._spine_color_add_3=Y.spine_color_add_3;a._spine_color_clamp=Y.spine_color_clamp;a._spine_color_parse_hex=Y.spine_color_parse_hex;a._spine_color_rgba8888_to_color=Y.spine_color_rgba8888_to_color;a._spine_color_rgb888_to_color=Y.spine_color_rgb888_to_color;a._spine_color_get_r=Y.spine_color_get_r;a._spine_color_set_r=Y.spine_color_set_r;a._spine_color_get_g=Y.spine_color_get_g;a._spine_color_set_g=Y.spine_color_set_g;a._spine_color_get_b=Y.spine_color_get_b; +a._spine_color_set_b=Y.spine_color_set_b;a._spine_color_get_a=Y.spine_color_get_a;a._spine_color_set_a=Y.spine_color_set_a;a._spine_translate_timeline_create=Y.spine_translate_timeline_create;a._spine_translate_timeline_dispose=Y.spine_translate_timeline_dispose;a._spine_translate_timeline_get_rtti=Y.spine_translate_timeline_get_rtti;a._spine_translate_timeline_apply=Y.spine_translate_timeline_apply;a._spine_translate_timeline_get_bone_index=Y.spine_translate_timeline_get_bone_index; +a._spine_translate_timeline_set_bone_index=Y.spine_translate_timeline_set_bone_index;a._spine_translate_timeline_set_frame=Y.spine_translate_timeline_set_frame;a._spine_translate_timeline_set_linear=Y.spine_translate_timeline_set_linear;a._spine_translate_timeline_set_stepped=Y.spine_translate_timeline_set_stepped;a._spine_translate_timeline_set_bezier=Y.spine_translate_timeline_set_bezier;a._spine_translate_timeline_get_bezier_value=Y.spine_translate_timeline_get_bezier_value; +a._spine_translate_timeline_get_curves=Y.spine_translate_timeline_get_curves;a._spine_translate_timeline_get_frame_entries=Y.spine_translate_timeline_get_frame_entries;a._spine_translate_timeline_get_frame_count=Y.spine_translate_timeline_get_frame_count;a._spine_translate_timeline_get_frames=Y.spine_translate_timeline_get_frames;a._spine_translate_timeline_get_duration=Y.spine_translate_timeline_get_duration;a._spine_translate_timeline_get_property_ids=Y.spine_translate_timeline_get_property_ids; +a._spine_translate_timeline_rtti=Y.spine_translate_timeline_rtti;a._spine_attachment_timeline_create=Y.spine_attachment_timeline_create;a._spine_attachment_timeline_dispose=Y.spine_attachment_timeline_dispose;a._spine_attachment_timeline_get_rtti=Y.spine_attachment_timeline_get_rtti;a._spine_attachment_timeline_apply=Y.spine_attachment_timeline_apply;a._spine_attachment_timeline_set_frame=Y.spine_attachment_timeline_set_frame;a._spine_attachment_timeline_get_slot_index=Y.spine_attachment_timeline_get_slot_index; +a._spine_attachment_timeline_set_slot_index=Y.spine_attachment_timeline_set_slot_index;a._spine_attachment_timeline_get_frame_entries=Y.spine_attachment_timeline_get_frame_entries;a._spine_attachment_timeline_get_frame_count=Y.spine_attachment_timeline_get_frame_count;a._spine_attachment_timeline_get_frames=Y.spine_attachment_timeline_get_frames;a._spine_attachment_timeline_get_duration=Y.spine_attachment_timeline_get_duration;a._spine_attachment_timeline_get_property_ids=Y.spine_attachment_timeline_get_property_ids; +a._spine_attachment_timeline_rtti=Y.spine_attachment_timeline_rtti;a._spine_shear_timeline_create=Y.spine_shear_timeline_create;a._spine_shear_timeline_dispose=Y.spine_shear_timeline_dispose;a._spine_shear_timeline_get_rtti=Y.spine_shear_timeline_get_rtti;a._spine_shear_timeline_apply=Y.spine_shear_timeline_apply;a._spine_shear_timeline_get_bone_index=Y.spine_shear_timeline_get_bone_index;a._spine_shear_timeline_set_bone_index=Y.spine_shear_timeline_set_bone_index; +a._spine_shear_timeline_set_frame=Y.spine_shear_timeline_set_frame;a._spine_shear_timeline_set_linear=Y.spine_shear_timeline_set_linear;a._spine_shear_timeline_set_stepped=Y.spine_shear_timeline_set_stepped;a._spine_shear_timeline_set_bezier=Y.spine_shear_timeline_set_bezier;a._spine_shear_timeline_get_bezier_value=Y.spine_shear_timeline_get_bezier_value;a._spine_shear_timeline_get_curves=Y.spine_shear_timeline_get_curves;a._spine_shear_timeline_get_frame_entries=Y.spine_shear_timeline_get_frame_entries; +a._spine_shear_timeline_get_frame_count=Y.spine_shear_timeline_get_frame_count;a._spine_shear_timeline_get_frames=Y.spine_shear_timeline_get_frames;a._spine_shear_timeline_get_duration=Y.spine_shear_timeline_get_duration;a._spine_shear_timeline_get_property_ids=Y.spine_shear_timeline_get_property_ids;a._spine_shear_timeline_rtti=Y.spine_shear_timeline_rtti;a._spine_bone_data_create=Y.spine_bone_data_create;a._spine_bone_data_dispose=Y.spine_bone_data_dispose;a._spine_bone_data_get_index=Y.spine_bone_data_get_index; +a._spine_bone_data_get_parent=Y.spine_bone_data_get_parent;a._spine_bone_data_get_length=Y.spine_bone_data_get_length;a._spine_bone_data_set_length=Y.spine_bone_data_set_length;a._spine_bone_data_get_color=Y.spine_bone_data_get_color;a._spine_bone_data_get_icon=Y.spine_bone_data_get_icon;a._spine_bone_data_set_icon=Y.spine_bone_data_set_icon;a._spine_bone_data_get_visible=Y.spine_bone_data_get_visible;a._spine_bone_data_set_visible=Y.spine_bone_data_set_visible;a._spine_bone_data_get_setup_pose=Y.spine_bone_data_get_setup_pose; +a._spine_bone_data_get_name=Y.spine_bone_data_get_name;a._spine_bone_data_get_skin_required=Y.spine_bone_data_get_skin_required;a._spine_bone_data_set_skin_required=Y.spine_bone_data_set_skin_required;a._spine_slot_pose_create=Y.spine_slot_pose_create;a._spine_slot_pose_dispose=Y.spine_slot_pose_dispose;a._spine_slot_pose_set=Y.spine_slot_pose_set;a._spine_slot_pose_get_color=Y.spine_slot_pose_get_color;a._spine_slot_pose_get_dark_color=Y.spine_slot_pose_get_dark_color; +a._spine_slot_pose_has_dark_color=Y.spine_slot_pose_has_dark_color;a._spine_slot_pose_set_has_dark_color=Y.spine_slot_pose_set_has_dark_color;a._spine_slot_pose_get_attachment=Y.spine_slot_pose_get_attachment;a._spine_slot_pose_set_attachment=Y.spine_slot_pose_set_attachment;a._spine_slot_pose_get_sequence_index=Y.spine_slot_pose_get_sequence_index;a._spine_slot_pose_set_sequence_index=Y.spine_slot_pose_set_sequence_index;a._spine_slot_pose_get_deform=Y.spine_slot_pose_get_deform; +a._spine_track_entry_create=Y.spine_track_entry_create;a._spine_track_entry_dispose=Y.spine_track_entry_dispose;a._spine_track_entry_get_track_index=Y.spine_track_entry_get_track_index;a._spine_track_entry_get_animation=Y.spine_track_entry_get_animation;a._spine_track_entry_set_animation=Y.spine_track_entry_set_animation;a._spine_track_entry_get_previous=Y.spine_track_entry_get_previous;a._spine_track_entry_get_loop=Y.spine_track_entry_get_loop;a._spine_track_entry_set_loop=Y.spine_track_entry_set_loop; a._spine_track_entry_get_hold_previous=Y.spine_track_entry_get_hold_previous;a._spine_track_entry_set_hold_previous=Y.spine_track_entry_set_hold_previous;a._spine_track_entry_get_reverse=Y.spine_track_entry_get_reverse;a._spine_track_entry_set_reverse=Y.spine_track_entry_set_reverse;a._spine_track_entry_get_shortest_rotation=Y.spine_track_entry_get_shortest_rotation;a._spine_track_entry_set_shortest_rotation=Y.spine_track_entry_set_shortest_rotation;a._spine_track_entry_get_delay=Y.spine_track_entry_get_delay; a._spine_track_entry_set_delay=Y.spine_track_entry_set_delay;a._spine_track_entry_get_track_time=Y.spine_track_entry_get_track_time;a._spine_track_entry_set_track_time=Y.spine_track_entry_set_track_time;a._spine_track_entry_get_track_end=Y.spine_track_entry_get_track_end;a._spine_track_entry_set_track_end=Y.spine_track_entry_set_track_end;a._spine_track_entry_get_animation_start=Y.spine_track_entry_get_animation_start;a._spine_track_entry_set_animation_start=Y.spine_track_entry_set_animation_start; a._spine_track_entry_get_animation_end=Y.spine_track_entry_get_animation_end;a._spine_track_entry_set_animation_end=Y.spine_track_entry_set_animation_end;a._spine_track_entry_get_animation_last=Y.spine_track_entry_get_animation_last;a._spine_track_entry_set_animation_last=Y.spine_track_entry_set_animation_last;a._spine_track_entry_get_animation_time=Y.spine_track_entry_get_animation_time;a._spine_track_entry_get_time_scale=Y.spine_track_entry_get_time_scale;a._spine_track_entry_set_time_scale=Y.spine_track_entry_set_time_scale; -a._spine_track_entry_get_alpha=Y.spine_track_entry_get_alpha;a._spine_track_entry_set_alpha=Y.spine_track_entry_set_alpha;a._spine_track_entry_get_event_threshold=Y.spine_track_entry_get_event_threshold;a._spine_track_entry_set_event_threshold=Y.spine_track_entry_set_event_threshold;a._spine_track_entry_get_alpha_attachment_threshold=Y.spine_track_entry_get_alpha_attachment_threshold;a._spine_track_entry_set_alpha_attachment_threshold=Y.spine_track_entry_set_alpha_attachment_threshold; -a._spine_track_entry_get_mix_attachment_threshold=Y.spine_track_entry_get_mix_attachment_threshold;a._spine_track_entry_set_mix_attachment_threshold=Y.spine_track_entry_set_mix_attachment_threshold;a._spine_track_entry_get_mix_draw_order_threshold=Y.spine_track_entry_get_mix_draw_order_threshold;a._spine_track_entry_set_mix_draw_order_threshold=Y.spine_track_entry_set_mix_draw_order_threshold;a._spine_track_entry_get_next=Y.spine_track_entry_get_next;a._spine_track_entry_is_complete=Y.spine_track_entry_is_complete; -a._spine_track_entry_get_mix_time=Y.spine_track_entry_get_mix_time;a._spine_track_entry_set_mix_time=Y.spine_track_entry_set_mix_time;a._spine_track_entry_get_mix_duration=Y.spine_track_entry_get_mix_duration;a._spine_track_entry_set_mix_duration=Y.spine_track_entry_set_mix_duration;a._spine_track_entry_get_mix_blend=Y.spine_track_entry_get_mix_blend;a._spine_track_entry_set_mix_blend=Y.spine_track_entry_set_mix_blend;a._spine_track_entry_get_mixing_from=Y.spine_track_entry_get_mixing_from; -a._spine_track_entry_get_mixing_to=Y.spine_track_entry_get_mixing_to;a._spine_track_entry_reset_rotation_directions=Y.spine_track_entry_reset_rotation_directions;a._spine_track_entry_get_track_complete=Y.spine_track_entry_get_track_complete;a._spine_track_entry_was_applied=Y.spine_track_entry_was_applied;a._spine_track_entry_is_next_ready=Y.spine_track_entry_is_next_ready;a._spine_skeleton_update_cache=Y.spine_skeleton_update_cache;a._spine_skeleton_update_world_transform=Y.spine_skeleton_update_world_transform; -a._spine_skeleton_update_world_transform_bone=Y.spine_skeleton_update_world_transform_bone;a._spine_skeleton_set_to_setup_pose=Y.spine_skeleton_set_to_setup_pose;a._spine_skeleton_set_bones_to_setup_pose=Y.spine_skeleton_set_bones_to_setup_pose;a._spine_skeleton_set_slots_to_setup_pose=Y.spine_skeleton_set_slots_to_setup_pose;a._spine_skeleton_find_bone=Y.spine_skeleton_find_bone;a._spine_skeleton_find_slot=Y.spine_skeleton_find_slot;a._spine_skeleton_set_skin_by_name=Y.spine_skeleton_set_skin_by_name; -a._spine_skeleton_set_skin=Y.spine_skeleton_set_skin;a._spine_skeleton_get_attachment_by_name=Y.spine_skeleton_get_attachment_by_name;a._spine_skeleton_get_attachment=Y.spine_skeleton_get_attachment;a._spine_skeleton_set_attachment=Y.spine_skeleton_set_attachment;a._spine_skeleton_find_ik_constraint=Y.spine_skeleton_find_ik_constraint;a._spine_skeleton_find_transform_constraint=Y.spine_skeleton_find_transform_constraint;a._spine_skeleton_find_path_constraint=Y.spine_skeleton_find_path_constraint; -a._spine_skeleton_find_physics_constraint=Y.spine_skeleton_find_physics_constraint;a._spine_skeleton_get_bounds=Y.spine_skeleton_get_bounds;a._spine_skeleton_get_root_bone=Y.spine_skeleton_get_root_bone;a._spine_skeleton_get_data=Y.spine_skeleton_get_data;a._spine_skeleton_get_num_bones=Y.spine_skeleton_get_num_bones;a._spine_skeleton_get_bones=Y.spine_skeleton_get_bones;a._spine_skeleton_get_num_slots=Y.spine_skeleton_get_num_slots;a._spine_skeleton_get_slots=Y.spine_skeleton_get_slots; -a._spine_skeleton_get_num_draw_order=Y.spine_skeleton_get_num_draw_order;a._spine_skeleton_get_draw_order=Y.spine_skeleton_get_draw_order;a._spine_skeleton_get_num_ik_constraints=Y.spine_skeleton_get_num_ik_constraints;a._spine_skeleton_get_ik_constraints=Y.spine_skeleton_get_ik_constraints;a._spine_skeleton_get_num_transform_constraints=Y.spine_skeleton_get_num_transform_constraints;a._spine_skeleton_get_transform_constraints=Y.spine_skeleton_get_transform_constraints; -a._spine_skeleton_get_num_path_constraints=Y.spine_skeleton_get_num_path_constraints;a._spine_skeleton_get_path_constraints=Y.spine_skeleton_get_path_constraints;a._spine_skeleton_get_num_physics_constraints=Y.spine_skeleton_get_num_physics_constraints;a._spine_skeleton_get_physics_constraints=Y.spine_skeleton_get_physics_constraints;a._spine_skeleton_get_skin=Y.spine_skeleton_get_skin;a._spine_skeleton_get_color=Y.spine_skeleton_get_color;a._spine_skeleton_set_color=Y.spine_skeleton_set_color; -a._spine_skeleton_set_position=Y.spine_skeleton_set_position;a._spine_skeleton_get_x=Y.spine_skeleton_get_x;a._spine_skeleton_set_x=Y.spine_skeleton_set_x;a._spine_skeleton_get_y=Y.spine_skeleton_get_y;a._spine_skeleton_set_y=Y.spine_skeleton_set_y;a._spine_skeleton_set_scale=Y.spine_skeleton_set_scale;a._spine_skeleton_get_scale_x=Y.spine_skeleton_get_scale_x;a._spine_skeleton_set_scale_x=Y.spine_skeleton_set_scale_x;a._spine_skeleton_get_scale_y=Y.spine_skeleton_get_scale_y; -a._spine_skeleton_set_scale_y=Y.spine_skeleton_set_scale_y;a._spine_skeleton_get_time=Y.spine_skeleton_get_time;a._spine_skeleton_set_time=Y.spine_skeleton_set_time;a._spine_skeleton_update=Y.spine_skeleton_update;a._spine_event_data_get_name=Y.spine_event_data_get_name;a._spine_event_data_get_int_value=Y.spine_event_data_get_int_value;a._spine_event_data_set_int_value=Y.spine_event_data_set_int_value;a._spine_event_data_get_float_value=Y.spine_event_data_get_float_value; -a._spine_event_data_set_float_value=Y.spine_event_data_set_float_value;a._spine_event_data_get_string_value=Y.spine_event_data_get_string_value;a._spine_event_data_set_string_value=Y.spine_event_data_set_string_value;a._spine_event_data_get_audio_path=Y.spine_event_data_get_audio_path;a._spine_event_data_get_volume=Y.spine_event_data_get_volume;a._spine_event_data_set_volume=Y.spine_event_data_set_volume;a._spine_event_data_get_balance=Y.spine_event_data_get_balance; -a._spine_event_data_set_balance=Y.spine_event_data_set_balance;a._spine_event_get_data=Y.spine_event_get_data;a._spine_event_get_time=Y.spine_event_get_time;a._spine_event_get_int_value=Y.spine_event_get_int_value;a._spine_event_set_int_value=Y.spine_event_set_int_value;a._spine_event_get_float_value=Y.spine_event_get_float_value;a._spine_event_set_float_value=Y.spine_event_set_float_value;a._spine_event_get_string_value=Y.spine_event_get_string_value;a._spine_event_set_string_value=Y.spine_event_set_string_value; -a._spine_event_get_volume=Y.spine_event_get_volume;a._spine_event_set_volume=Y.spine_event_set_volume;a._spine_event_get_balance=Y.spine_event_get_balance;a._spine_event_set_balance=Y.spine_event_set_balance;a._spine_slot_data_get_index=Y.spine_slot_data_get_index;a._spine_slot_data_get_name=Y.spine_slot_data_get_name;a._spine_slot_data_get_bone_data=Y.spine_slot_data_get_bone_data;a._spine_slot_data_get_color=Y.spine_slot_data_get_color;a._spine_slot_data_set_color=Y.spine_slot_data_set_color; -a._spine_slot_data_get_dark_color=Y.spine_slot_data_get_dark_color;a._spine_slot_data_set_dark_color=Y.spine_slot_data_set_dark_color;a._spine_slot_data_get_has_dark_color=Y.spine_slot_data_get_has_dark_color;a._spine_slot_data_set_has_dark_color=Y.spine_slot_data_set_has_dark_color;a._spine_slot_data_get_attachment_name=Y.spine_slot_data_get_attachment_name;a._spine_slot_data_set_attachment_name=Y.spine_slot_data_set_attachment_name;a._spine_slot_data_get_blend_mode=Y.spine_slot_data_get_blend_mode; -a._spine_slot_data_set_blend_mode=Y.spine_slot_data_set_blend_mode;a._spine_slot_data_is_visible=Y.spine_slot_data_is_visible;a._spine_slot_data_set_visible=Y.spine_slot_data_set_visible;a._spine_slot_set_to_setup_pose=Y.spine_slot_set_to_setup_pose;a._spine_slot_get_data=Y.spine_slot_get_data;a._spine_slot_get_bone=Y.spine_slot_get_bone;a._spine_slot_get_skeleton=Y.spine_slot_get_skeleton;a._spine_slot_get_color=Y.spine_slot_get_color;a._spine_slot_set_color=Y.spine_slot_set_color; -a._spine_slot_get_dark_color=Y.spine_slot_get_dark_color;a._spine_slot_set_dark_color=Y.spine_slot_set_dark_color;a._spine_slot_has_dark_color=Y.spine_slot_has_dark_color;a._spine_slot_get_attachment=Y.spine_slot_get_attachment;a._spine_slot_set_attachment=Y.spine_slot_set_attachment;a._spine_slot_get_sequence_index=Y.spine_slot_get_sequence_index;a._spine_slot_set_sequence_index=Y.spine_slot_set_sequence_index;a._spine_bone_data_get_index=Y.spine_bone_data_get_index;a._spine_bone_data_get_name=Y.spine_bone_data_get_name; -a._spine_bone_data_get_parent=Y.spine_bone_data_get_parent;a._spine_bone_data_get_length=Y.spine_bone_data_get_length;a._spine_bone_data_set_length=Y.spine_bone_data_set_length;a._spine_bone_data_get_x=Y.spine_bone_data_get_x;a._spine_bone_data_set_x=Y.spine_bone_data_set_x;a._spine_bone_data_get_y=Y.spine_bone_data_get_y;a._spine_bone_data_set_y=Y.spine_bone_data_set_y;a._spine_bone_data_get_rotation=Y.spine_bone_data_get_rotation;a._spine_bone_data_set_rotation=Y.spine_bone_data_set_rotation; -a._spine_bone_data_get_scale_x=Y.spine_bone_data_get_scale_x;a._spine_bone_data_set_scale_x=Y.spine_bone_data_set_scale_x;a._spine_bone_data_get_scale_y=Y.spine_bone_data_get_scale_y;a._spine_bone_data_set_scale_y=Y.spine_bone_data_set_scale_y;a._spine_bone_data_get_shear_x=Y.spine_bone_data_get_shear_x;a._spine_bone_data_set_shear_x=Y.spine_bone_data_set_shear_x;a._spine_bone_data_get_shear_y=Y.spine_bone_data_get_shear_y;a._spine_bone_data_set_shear_y=Y.spine_bone_data_set_shear_y; -a._spine_bone_data_get_inherit=Y.spine_bone_data_get_inherit;a._spine_bone_data_set_inherit=Y.spine_bone_data_set_inherit;a._spine_bone_data_get_is_skin_required=Y.spine_bone_data_get_is_skin_required;a._spine_bone_data_set_is_skin_required=Y.spine_bone_data_set_is_skin_required;a._spine_bone_data_get_color=Y.spine_bone_data_get_color;a._spine_bone_data_set_color=Y.spine_bone_data_set_color;a._spine_bone_data_is_visible=Y.spine_bone_data_is_visible;a._spine_bone_data_set_visible=Y.spine_bone_data_set_visible; -a._spine_bone_set_is_y_down=Y.spine_bone_set_is_y_down;a._spine_bone_get_is_y_down=Y.spine_bone_get_is_y_down;a._spine_bone_update=Y.spine_bone_update;a._spine_bone_update_world_transform=Y.spine_bone_update_world_transform;a._spine_bone_update_world_transform_with=Y.spine_bone_update_world_transform_with;a._spine_bone_update_applied_transform=Y.spine_bone_update_applied_transform;a._spine_bone_set_to_setup_pose=Y.spine_bone_set_to_setup_pose;a._spine_bone_world_to_local=Y.spine_bone_world_to_local; -a._spine_bone_world_to_parent=Y.spine_bone_world_to_parent;a._spine_bone_local_to_world=Y.spine_bone_local_to_world;a._spine_bone_parent_to_world=Y.spine_bone_parent_to_world;a._spine_bone_world_to_local_rotation=Y.spine_bone_world_to_local_rotation;a._spine_bone_local_to_world_rotation=Y.spine_bone_local_to_world_rotation;a._spine_bone_rotate_world=Y.spine_bone_rotate_world;a._spine_bone_get_world_to_local_rotation_x=Y.spine_bone_get_world_to_local_rotation_x; -a._spine_bone_get_world_to_local_rotation_y=Y.spine_bone_get_world_to_local_rotation_y;a._spine_bone_get_data=Y.spine_bone_get_data;a._spine_bone_get_skeleton=Y.spine_bone_get_skeleton;a._spine_bone_get_parent=Y.spine_bone_get_parent;a._spine_bone_get_num_children=Y.spine_bone_get_num_children;a._spine_bone_get_children=Y.spine_bone_get_children;a._spine_bone_get_x=Y.spine_bone_get_x;a._spine_bone_set_x=Y.spine_bone_set_x;a._spine_bone_get_y=Y.spine_bone_get_y;a._spine_bone_set_y=Y.spine_bone_set_y; -a._spine_bone_get_rotation=Y.spine_bone_get_rotation;a._spine_bone_set_rotation=Y.spine_bone_set_rotation;a._spine_bone_get_scale_x=Y.spine_bone_get_scale_x;a._spine_bone_set_scale_x=Y.spine_bone_set_scale_x;a._spine_bone_get_scale_y=Y.spine_bone_get_scale_y;a._spine_bone_set_scale_y=Y.spine_bone_set_scale_y;a._spine_bone_get_shear_x=Y.spine_bone_get_shear_x;a._spine_bone_set_shear_x=Y.spine_bone_set_shear_x;a._spine_bone_get_shear_y=Y.spine_bone_get_shear_y;a._spine_bone_set_shear_y=Y.spine_bone_set_shear_y; -a._spine_bone_get_applied_rotation=Y.spine_bone_get_applied_rotation;a._spine_bone_set_applied_rotation=Y.spine_bone_set_applied_rotation;a._spine_bone_get_a_x=Y.spine_bone_get_a_x;a._spine_bone_set_a_x=Y.spine_bone_set_a_x;a._spine_bone_get_a_y=Y.spine_bone_get_a_y;a._spine_bone_set_a_y=Y.spine_bone_set_a_y;a._spine_bone_get_a_scale_x=Y.spine_bone_get_a_scale_x;a._spine_bone_set_a_scale_x=Y.spine_bone_set_a_scale_x;a._spine_bone_get_a_scale_y=Y.spine_bone_get_a_scale_y; -a._spine_bone_set_a_scale_y=Y.spine_bone_set_a_scale_y;a._spine_bone_get_a_shear_x=Y.spine_bone_get_a_shear_x;a._spine_bone_set_a_shear_x=Y.spine_bone_set_a_shear_x;a._spine_bone_get_a_shear_y=Y.spine_bone_get_a_shear_y;a._spine_bone_set_a_shear_y=Y.spine_bone_set_a_shear_y;a._spine_bone_get_a=Y.spine_bone_get_a;a._spine_bone_set_a=Y.spine_bone_set_a;a._spine_bone_get_b=Y.spine_bone_get_b;a._spine_bone_set_b=Y.spine_bone_set_b;a._spine_bone_get_c=Y.spine_bone_get_c;a._spine_bone_set_c=Y.spine_bone_set_c; -a._spine_bone_get_d=Y.spine_bone_get_d;a._spine_bone_set_d=Y.spine_bone_set_d;a._spine_bone_get_world_x=Y.spine_bone_get_world_x;a._spine_bone_set_world_x=Y.spine_bone_set_world_x;a._spine_bone_get_world_y=Y.spine_bone_get_world_y;a._spine_bone_set_world_y=Y.spine_bone_set_world_y;a._spine_bone_get_world_rotation_x=Y.spine_bone_get_world_rotation_x;a._spine_bone_get_world_rotation_y=Y.spine_bone_get_world_rotation_y;a._spine_bone_get_world_scale_x=Y.spine_bone_get_world_scale_x; -a._spine_bone_get_world_scale_y=Y.spine_bone_get_world_scale_y;a._spine_bone_get_is_active=Y.spine_bone_get_is_active;a._spine_bone_set_is_active=Y.spine_bone_set_is_active;a._spine_bone_get_inherit=Y.spine_bone_get_inherit;a._spine_bone_set_inherit=Y.spine_bone_set_inherit;a._spine_attachment_get_name=Y.spine_attachment_get_name;a._spine_attachment_get_type=Y.spine_attachment_get_type;a._spine_attachment_copy=Y.spine_attachment_copy;a._spine_attachment_cast_to_bounding_box_attachment=Y.spine_attachment_cast_to_bounding_box_attachment; -a._spine_attachment_dispose=Y.spine_attachment_dispose;a._spine_point_attachment_compute_world_position=Y.spine_point_attachment_compute_world_position;a._spine_point_attachment_compute_world_rotation=Y.spine_point_attachment_compute_world_rotation;a._spine_point_attachment_get_x=Y.spine_point_attachment_get_x;a._spine_point_attachment_set_x=Y.spine_point_attachment_set_x;a._spine_point_attachment_get_y=Y.spine_point_attachment_get_y;a._spine_point_attachment_set_y=Y.spine_point_attachment_set_y; -a._spine_point_attachment_get_rotation=Y.spine_point_attachment_get_rotation;a._spine_point_attachment_set_rotation=Y.spine_point_attachment_set_rotation;a._spine_point_attachment_get_color=Y.spine_point_attachment_get_color;a._spine_point_attachment_set_color=Y.spine_point_attachment_set_color;a._spine_region_attachment_update_region=Y.spine_region_attachment_update_region;a._spine_region_attachment_compute_world_vertices=Y.spine_region_attachment_compute_world_vertices; -a._spine_region_attachment_get_x=Y.spine_region_attachment_get_x;a._spine_region_attachment_set_x=Y.spine_region_attachment_set_x;a._spine_region_attachment_get_y=Y.spine_region_attachment_get_y;a._spine_region_attachment_set_y=Y.spine_region_attachment_set_y;a._spine_region_attachment_get_rotation=Y.spine_region_attachment_get_rotation;a._spine_region_attachment_set_rotation=Y.spine_region_attachment_set_rotation;a._spine_region_attachment_get_scale_x=Y.spine_region_attachment_get_scale_x; -a._spine_region_attachment_set_scale_x=Y.spine_region_attachment_set_scale_x;a._spine_region_attachment_get_scale_y=Y.spine_region_attachment_get_scale_y;a._spine_region_attachment_set_scale_y=Y.spine_region_attachment_set_scale_y;a._spine_region_attachment_get_width=Y.spine_region_attachment_get_width;a._spine_region_attachment_set_width=Y.spine_region_attachment_set_width;a._spine_region_attachment_get_height=Y.spine_region_attachment_get_height;a._spine_region_attachment_set_height=Y.spine_region_attachment_set_height; -a._spine_region_attachment_get_color=Y.spine_region_attachment_get_color;a._spine_region_attachment_set_color=Y.spine_region_attachment_set_color;a._spine_region_attachment_get_path=Y.spine_region_attachment_get_path;a._spine_region_attachment_get_region=Y.spine_region_attachment_get_region;a._spine_region_attachment_get_sequence=Y.spine_region_attachment_get_sequence;a._spine_region_attachment_get_num_offset=Y.spine_region_attachment_get_num_offset;a._spine_region_attachment_get_offset=Y.spine_region_attachment_get_offset; -a._spine_region_attachment_get_num_uvs=Y.spine_region_attachment_get_num_uvs;a._spine_region_attachment_get_uvs=Y.spine_region_attachment_get_uvs;a._spine_vertex_attachment_get_world_vertices_length=Y.spine_vertex_attachment_get_world_vertices_length;a._spine_vertex_attachment_compute_world_vertices=Y.spine_vertex_attachment_compute_world_vertices;a._spine_vertex_attachment_get_num_bones=Y.spine_vertex_attachment_get_num_bones;a._spine_vertex_attachment_get_bones=Y.spine_vertex_attachment_get_bones; -a._spine_vertex_attachment_get_num_vertices=Y.spine_vertex_attachment_get_num_vertices;a._spine_vertex_attachment_get_vertices=Y.spine_vertex_attachment_get_vertices;a._spine_vertex_attachment_get_timeline_attachment=Y.spine_vertex_attachment_get_timeline_attachment;a._spine_vertex_attachment_set_timeline_attachment=Y.spine_vertex_attachment_set_timeline_attachment;a._spine_mesh_attachment_update_region=Y.spine_mesh_attachment_update_region;a._spine_mesh_attachment_get_hull_length=Y.spine_mesh_attachment_get_hull_length; -a._spine_mesh_attachment_set_hull_length=Y.spine_mesh_attachment_set_hull_length;a._spine_mesh_attachment_get_num_region_uvs=Y.spine_mesh_attachment_get_num_region_uvs;a._spine_mesh_attachment_get_region_uvs=Y.spine_mesh_attachment_get_region_uvs;a._spine_mesh_attachment_get_num_uvs=Y.spine_mesh_attachment_get_num_uvs;a._spine_mesh_attachment_get_uvs=Y.spine_mesh_attachment_get_uvs;a._spine_mesh_attachment_get_num_triangles=Y.spine_mesh_attachment_get_num_triangles; -a._spine_mesh_attachment_get_triangles=Y.spine_mesh_attachment_get_triangles;a._spine_mesh_attachment_get_color=Y.spine_mesh_attachment_get_color;a._spine_mesh_attachment_set_color=Y.spine_mesh_attachment_set_color;a._spine_mesh_attachment_get_path=Y.spine_mesh_attachment_get_path;a._spine_mesh_attachment_get_region=Y.spine_mesh_attachment_get_region;a._spine_mesh_attachment_get_sequence=Y.spine_mesh_attachment_get_sequence;a._spine_mesh_attachment_get_parent_mesh=Y.spine_mesh_attachment_get_parent_mesh; -a._spine_mesh_attachment_set_parent_mesh=Y.spine_mesh_attachment_set_parent_mesh;a._spine_mesh_attachment_get_num_edges=Y.spine_mesh_attachment_get_num_edges;a._spine_mesh_attachment_get_edges=Y.spine_mesh_attachment_get_edges;a._spine_mesh_attachment_get_width=Y.spine_mesh_attachment_get_width;a._spine_mesh_attachment_set_width=Y.spine_mesh_attachment_set_width;a._spine_mesh_attachment_get_height=Y.spine_mesh_attachment_get_height;a._spine_mesh_attachment_set_height=Y.spine_mesh_attachment_set_height; -a._spine_clipping_attachment_get_end_slot=Y.spine_clipping_attachment_get_end_slot;a._spine_clipping_attachment_set_end_slot=Y.spine_clipping_attachment_set_end_slot;a._spine_clipping_attachment_get_color=Y.spine_clipping_attachment_get_color;a._spine_clipping_attachment_set_color=Y.spine_clipping_attachment_set_color;a._spine_bounding_box_attachment_get_color=Y.spine_bounding_box_attachment_get_color;a._spine_bounding_box_attachment_set_color=Y.spine_bounding_box_attachment_set_color; -a._spine_path_attachment_get_num_lengths=Y.spine_path_attachment_get_num_lengths;a._spine_path_attachment_get_lengths=Y.spine_path_attachment_get_lengths;a._spine_path_attachment_get_is_closed=Y.spine_path_attachment_get_is_closed;a._spine_path_attachment_set_is_closed=Y.spine_path_attachment_set_is_closed;a._spine_path_attachment_get_is_constant_speed=Y.spine_path_attachment_get_is_constant_speed;a._spine_path_attachment_set_is_constant_speed=Y.spine_path_attachment_set_is_constant_speed; -a._spine_path_attachment_get_color=Y.spine_path_attachment_get_color;a._spine_path_attachment_set_color=Y.spine_path_attachment_set_color;a._spine_skin_set_attachment=Y.spine_skin_set_attachment;a._spine_skin_get_attachment=Y.spine_skin_get_attachment;a._spine_skin_remove_attachment=Y.spine_skin_remove_attachment;a._spine_skin_get_name=Y.spine_skin_get_name;a._spine_skin_add_skin=Y.spine_skin_add_skin;a._spine_skin_copy_skin=Y.spine_skin_copy_skin;a._spine_skin_get_entries=Y.spine_skin_get_entries; -a._spine_skin_entries_get_num_entries=Y.spine_skin_entries_get_num_entries;a._spine_skin_entries_get_entry=Y.spine_skin_entries_get_entry;a._spine_skin_entries_dispose=Y.spine_skin_entries_dispose;a._spine_skin_entry_get_slot_index=Y.spine_skin_entry_get_slot_index;a._spine_skin_entry_get_name=Y.spine_skin_entry_get_name;a._spine_skin_entry_get_attachment=Y.spine_skin_entry_get_attachment;a._spine_skin_get_num_bones=Y.spine_skin_get_num_bones;a._spine_skin_get_bones=Y.spine_skin_get_bones; -a._spine_skin_get_num_constraints=Y.spine_skin_get_num_constraints;a._spine_skin_get_constraints=Y.spine_skin_get_constraints;a._spine_skin_create=Y.spine_skin_create;a._spine_skin_dispose=Y.spine_skin_dispose;a._spine_constraint_data_get_type=Y.spine_constraint_data_get_type;a._spine_constraint_data_get_name=Y.spine_constraint_data_get_name;a._spine_constraint_data_get_order=Y.spine_constraint_data_get_order;a._spine_constraint_data_set_order=Y.spine_constraint_data_set_order; -a._spine_constraint_data_get_is_skin_required=Y.spine_constraint_data_get_is_skin_required;a._spine_constraint_data_set_is_skin_required=Y.spine_constraint_data_set_is_skin_required;a._spine_ik_constraint_data_get_num_bones=Y.spine_ik_constraint_data_get_num_bones;a._spine_ik_constraint_data_get_bones=Y.spine_ik_constraint_data_get_bones;a._spine_ik_constraint_data_get_target=Y.spine_ik_constraint_data_get_target;a._spine_ik_constraint_data_set_target=Y.spine_ik_constraint_data_set_target; -a._spine_ik_constraint_data_get_bend_direction=Y.spine_ik_constraint_data_get_bend_direction;a._spine_ik_constraint_data_set_bend_direction=Y.spine_ik_constraint_data_set_bend_direction;a._spine_ik_constraint_data_get_compress=Y.spine_ik_constraint_data_get_compress;a._spine_ik_constraint_data_set_compress=Y.spine_ik_constraint_data_set_compress;a._spine_ik_constraint_data_get_stretch=Y.spine_ik_constraint_data_get_stretch;a._spine_ik_constraint_data_set_stretch=Y.spine_ik_constraint_data_set_stretch; -a._spine_ik_constraint_data_get_uniform=Y.spine_ik_constraint_data_get_uniform;a._spine_ik_constraint_data_set_uniform=Y.spine_ik_constraint_data_set_uniform;a._spine_ik_constraint_data_get_mix=Y.spine_ik_constraint_data_get_mix;a._spine_ik_constraint_data_set_mix=Y.spine_ik_constraint_data_set_mix;a._spine_ik_constraint_data_get_softness=Y.spine_ik_constraint_data_get_softness;a._spine_ik_constraint_data_set_softness=Y.spine_ik_constraint_data_set_softness;a._spine_ik_constraint_update=Y.spine_ik_constraint_update; -a._spine_ik_constraint_get_order=Y.spine_ik_constraint_get_order;a._spine_ik_constraint_get_data=Y.spine_ik_constraint_get_data;a._spine_ik_constraint_get_num_bones=Y.spine_ik_constraint_get_num_bones;a._spine_ik_constraint_get_bones=Y.spine_ik_constraint_get_bones;a._spine_ik_constraint_get_target=Y.spine_ik_constraint_get_target;a._spine_ik_constraint_set_target=Y.spine_ik_constraint_set_target;a._spine_ik_constraint_get_bend_direction=Y.spine_ik_constraint_get_bend_direction; -a._spine_ik_constraint_set_bend_direction=Y.spine_ik_constraint_set_bend_direction;a._spine_ik_constraint_get_compress=Y.spine_ik_constraint_get_compress;a._spine_ik_constraint_set_compress=Y.spine_ik_constraint_set_compress;a._spine_ik_constraint_get_stretch=Y.spine_ik_constraint_get_stretch;a._spine_ik_constraint_set_stretch=Y.spine_ik_constraint_set_stretch;a._spine_ik_constraint_get_mix=Y.spine_ik_constraint_get_mix;a._spine_ik_constraint_set_mix=Y.spine_ik_constraint_set_mix; -a._spine_ik_constraint_get_softness=Y.spine_ik_constraint_get_softness;a._spine_ik_constraint_set_softness=Y.spine_ik_constraint_set_softness;a._spine_ik_constraint_get_is_active=Y.spine_ik_constraint_get_is_active;a._spine_ik_constraint_set_is_active=Y.spine_ik_constraint_set_is_active;a._spine_transform_constraint_data_get_num_bones=Y.spine_transform_constraint_data_get_num_bones;a._spine_transform_constraint_data_get_bones=Y.spine_transform_constraint_data_get_bones; -a._spine_transform_constraint_data_get_target=Y.spine_transform_constraint_data_get_target;a._spine_transform_constraint_data_set_target=Y.spine_transform_constraint_data_set_target;a._spine_transform_constraint_data_get_mix_rotate=Y.spine_transform_constraint_data_get_mix_rotate;a._spine_transform_constraint_data_set_mix_rotate=Y.spine_transform_constraint_data_set_mix_rotate;a._spine_transform_constraint_data_get_mix_x=Y.spine_transform_constraint_data_get_mix_x; -a._spine_transform_constraint_data_set_mix_x=Y.spine_transform_constraint_data_set_mix_x;a._spine_transform_constraint_data_get_mix_y=Y.spine_transform_constraint_data_get_mix_y;a._spine_transform_constraint_data_set_mix_y=Y.spine_transform_constraint_data_set_mix_y;a._spine_transform_constraint_data_get_mix_scale_x=Y.spine_transform_constraint_data_get_mix_scale_x;a._spine_transform_constraint_data_set_mix_scale_x=Y.spine_transform_constraint_data_set_mix_scale_x; -a._spine_transform_constraint_data_get_mix_scale_y=Y.spine_transform_constraint_data_get_mix_scale_y;a._spine_transform_constraint_data_set_mix_scale_y=Y.spine_transform_constraint_data_set_mix_scale_y;a._spine_transform_constraint_data_get_mix_shear_y=Y.spine_transform_constraint_data_get_mix_shear_y;a._spine_transform_constraint_data_set_mix_shear_y=Y.spine_transform_constraint_data_set_mix_shear_y;a._spine_transform_constraint_data_get_offset_rotation=Y.spine_transform_constraint_data_get_offset_rotation; -a._spine_transform_constraint_data_set_offset_rotation=Y.spine_transform_constraint_data_set_offset_rotation;a._spine_transform_constraint_data_get_offset_x=Y.spine_transform_constraint_data_get_offset_x;a._spine_transform_constraint_data_set_offset_x=Y.spine_transform_constraint_data_set_offset_x;a._spine_transform_constraint_data_get_offset_y=Y.spine_transform_constraint_data_get_offset_y;a._spine_transform_constraint_data_set_offset_y=Y.spine_transform_constraint_data_set_offset_y; -a._spine_transform_constraint_data_get_offset_scale_x=Y.spine_transform_constraint_data_get_offset_scale_x;a._spine_transform_constraint_data_set_offset_scale_x=Y.spine_transform_constraint_data_set_offset_scale_x;a._spine_transform_constraint_data_get_offset_scale_y=Y.spine_transform_constraint_data_get_offset_scale_y;a._spine_transform_constraint_data_set_offset_scale_y=Y.spine_transform_constraint_data_set_offset_scale_y;a._spine_transform_constraint_data_get_offset_shear_y=Y.spine_transform_constraint_data_get_offset_shear_y; -a._spine_transform_constraint_data_set_offset_shear_y=Y.spine_transform_constraint_data_set_offset_shear_y;a._spine_transform_constraint_data_get_is_relative=Y.spine_transform_constraint_data_get_is_relative;a._spine_transform_constraint_data_set_is_relative=Y.spine_transform_constraint_data_set_is_relative;a._spine_transform_constraint_data_get_is_local=Y.spine_transform_constraint_data_get_is_local;a._spine_transform_constraint_data_set_is_local=Y.spine_transform_constraint_data_set_is_local; -a._spine_transform_constraint_update=Y.spine_transform_constraint_update;a._spine_transform_constraint_get_order=Y.spine_transform_constraint_get_order;a._spine_transform_constraint_get_data=Y.spine_transform_constraint_get_data;a._spine_transform_constraint_get_num_bones=Y.spine_transform_constraint_get_num_bones;a._spine_transform_constraint_get_bones=Y.spine_transform_constraint_get_bones;a._spine_transform_constraint_get_target=Y.spine_transform_constraint_get_target; -a._spine_transform_constraint_set_target=Y.spine_transform_constraint_set_target;a._spine_transform_constraint_get_mix_rotate=Y.spine_transform_constraint_get_mix_rotate;a._spine_transform_constraint_set_mix_rotate=Y.spine_transform_constraint_set_mix_rotate;a._spine_transform_constraint_get_mix_x=Y.spine_transform_constraint_get_mix_x;a._spine_transform_constraint_set_mix_x=Y.spine_transform_constraint_set_mix_x;a._spine_transform_constraint_get_mix_y=Y.spine_transform_constraint_get_mix_y; -a._spine_transform_constraint_set_mix_y=Y.spine_transform_constraint_set_mix_y;a._spine_transform_constraint_get_mix_scale_x=Y.spine_transform_constraint_get_mix_scale_x;a._spine_transform_constraint_set_mix_scale_x=Y.spine_transform_constraint_set_mix_scale_x;a._spine_transform_constraint_get_mix_scale_y=Y.spine_transform_constraint_get_mix_scale_y;a._spine_transform_constraint_set_mix_scale_y=Y.spine_transform_constraint_set_mix_scale_y;a._spine_transform_constraint_get_mix_shear_y=Y.spine_transform_constraint_get_mix_shear_y; -a._spine_transform_constraint_set_mix_shear_y=Y.spine_transform_constraint_set_mix_shear_y;a._spine_transform_constraint_get_is_active=Y.spine_transform_constraint_get_is_active;a._spine_transform_constraint_set_is_active=Y.spine_transform_constraint_set_is_active;a._spine_path_constraint_data_get_num_bones=Y.spine_path_constraint_data_get_num_bones;a._spine_path_constraint_data_get_bones=Y.spine_path_constraint_data_get_bones;a._spine_path_constraint_data_get_target=Y.spine_path_constraint_data_get_target; -a._spine_path_constraint_data_set_target=Y.spine_path_constraint_data_set_target;a._spine_path_constraint_data_get_position_mode=Y.spine_path_constraint_data_get_position_mode;a._spine_path_constraint_data_set_position_mode=Y.spine_path_constraint_data_set_position_mode;a._spine_path_constraint_data_get_spacing_mode=Y.spine_path_constraint_data_get_spacing_mode;a._spine_path_constraint_data_set_spacing_mode=Y.spine_path_constraint_data_set_spacing_mode; -a._spine_path_constraint_data_get_rotate_mode=Y.spine_path_constraint_data_get_rotate_mode;a._spine_path_constraint_data_set_rotate_mode=Y.spine_path_constraint_data_set_rotate_mode;a._spine_path_constraint_data_get_offset_rotation=Y.spine_path_constraint_data_get_offset_rotation;a._spine_path_constraint_data_set_offset_rotation=Y.spine_path_constraint_data_set_offset_rotation;a._spine_path_constraint_data_get_position=Y.spine_path_constraint_data_get_position; -a._spine_path_constraint_data_set_position=Y.spine_path_constraint_data_set_position;a._spine_path_constraint_data_get_spacing=Y.spine_path_constraint_data_get_spacing;a._spine_path_constraint_data_set_spacing=Y.spine_path_constraint_data_set_spacing;a._spine_path_constraint_data_get_mix_rotate=Y.spine_path_constraint_data_get_mix_rotate;a._spine_path_constraint_data_set_mix_rotate=Y.spine_path_constraint_data_set_mix_rotate;a._spine_path_constraint_data_get_mix_x=Y.spine_path_constraint_data_get_mix_x; -a._spine_path_constraint_data_set_mix_x=Y.spine_path_constraint_data_set_mix_x;a._spine_path_constraint_data_get_mix_y=Y.spine_path_constraint_data_get_mix_y;a._spine_path_constraint_data_set_mix_y=Y.spine_path_constraint_data_set_mix_y;a._spine_path_constraint_update=Y.spine_path_constraint_update;a._spine_path_constraint_get_order=Y.spine_path_constraint_get_order;a._spine_path_constraint_get_data=Y.spine_path_constraint_get_data;a._spine_path_constraint_get_num_bones=Y.spine_path_constraint_get_num_bones; -a._spine_path_constraint_get_bones=Y.spine_path_constraint_get_bones;a._spine_path_constraint_get_target=Y.spine_path_constraint_get_target;a._spine_path_constraint_set_target=Y.spine_path_constraint_set_target;a._spine_path_constraint_get_position=Y.spine_path_constraint_get_position;a._spine_path_constraint_set_position=Y.spine_path_constraint_set_position;a._spine_path_constraint_get_spacing=Y.spine_path_constraint_get_spacing;a._spine_path_constraint_set_spacing=Y.spine_path_constraint_set_spacing; -a._spine_path_constraint_get_mix_rotate=Y.spine_path_constraint_get_mix_rotate;a._spine_path_constraint_set_mix_rotate=Y.spine_path_constraint_set_mix_rotate;a._spine_path_constraint_get_mix_x=Y.spine_path_constraint_get_mix_x;a._spine_path_constraint_set_mix_x=Y.spine_path_constraint_set_mix_x;a._spine_path_constraint_get_mix_y=Y.spine_path_constraint_get_mix_y;a._spine_path_constraint_set_mix_y=Y.spine_path_constraint_set_mix_y;a._spine_path_constraint_get_is_active=Y.spine_path_constraint_get_is_active; -a._spine_path_constraint_set_is_active=Y.spine_path_constraint_set_is_active;a._spine_physics_constraint_data_set_bone=Y.spine_physics_constraint_data_set_bone;a._spine_physics_constraint_data_get_bone=Y.spine_physics_constraint_data_get_bone;a._spine_physics_constraint_data_set_x=Y.spine_physics_constraint_data_set_x;a._spine_physics_constraint_data_get_x=Y.spine_physics_constraint_data_get_x;a._spine_physics_constraint_data_set_y=Y.spine_physics_constraint_data_set_y; -a._spine_physics_constraint_data_get_y=Y.spine_physics_constraint_data_get_y;a._spine_physics_constraint_data_set_rotate=Y.spine_physics_constraint_data_set_rotate;a._spine_physics_constraint_data_get_rotate=Y.spine_physics_constraint_data_get_rotate;a._spine_physics_constraint_data_set_scale_x=Y.spine_physics_constraint_data_set_scale_x;a._spine_physics_constraint_data_get_scale_x=Y.spine_physics_constraint_data_get_scale_x;a._spine_physics_constraint_data_set_shear_x=Y.spine_physics_constraint_data_set_shear_x; -a._spine_physics_constraint_data_get_shear_x=Y.spine_physics_constraint_data_get_shear_x;a._spine_physics_constraint_data_set_limit=Y.spine_physics_constraint_data_set_limit;a._spine_physics_constraint_data_get_limit=Y.spine_physics_constraint_data_get_limit;a._spine_physics_constraint_data_set_step=Y.spine_physics_constraint_data_set_step;a._spine_physics_constraint_data_get_step=Y.spine_physics_constraint_data_get_step;a._spine_physics_constraint_data_set_inertia=Y.spine_physics_constraint_data_set_inertia; -a._spine_physics_constraint_data_get_inertia=Y.spine_physics_constraint_data_get_inertia;a._spine_physics_constraint_data_set_strength=Y.spine_physics_constraint_data_set_strength;a._spine_physics_constraint_data_get_strength=Y.spine_physics_constraint_data_get_strength;a._spine_physics_constraint_data_set_damping=Y.spine_physics_constraint_data_set_damping;a._spine_physics_constraint_data_get_damping=Y.spine_physics_constraint_data_get_damping;a._spine_physics_constraint_data_set_mass_inverse=Y.spine_physics_constraint_data_set_mass_inverse; -a._spine_physics_constraint_data_get_mass_inverse=Y.spine_physics_constraint_data_get_mass_inverse;a._spine_physics_constraint_data_set_wind=Y.spine_physics_constraint_data_set_wind;a._spine_physics_constraint_data_get_wind=Y.spine_physics_constraint_data_get_wind;a._spine_physics_constraint_data_set_gravity=Y.spine_physics_constraint_data_set_gravity;a._spine_physics_constraint_data_get_gravity=Y.spine_physics_constraint_data_get_gravity;a._spine_physics_constraint_data_set_mix=Y.spine_physics_constraint_data_set_mix; -a._spine_physics_constraint_data_get_mix=Y.spine_physics_constraint_data_get_mix;a._spine_physics_constraint_data_set_inertia_global=Y.spine_physics_constraint_data_set_inertia_global;a._spine_physics_constraint_data_is_inertia_global=Y.spine_physics_constraint_data_is_inertia_global;a._spine_physics_constraint_data_set_strength_global=Y.spine_physics_constraint_data_set_strength_global;a._spine_physics_constraint_data_is_strength_global=Y.spine_physics_constraint_data_is_strength_global; -a._spine_physics_constraint_data_set_damping_global=Y.spine_physics_constraint_data_set_damping_global;a._spine_physics_constraint_data_is_damping_global=Y.spine_physics_constraint_data_is_damping_global;a._spine_physics_constraint_data_set_mass_global=Y.spine_physics_constraint_data_set_mass_global;a._spine_physics_constraint_data_is_mass_global=Y.spine_physics_constraint_data_is_mass_global;a._spine_physics_constraint_data_set_wind_global=Y.spine_physics_constraint_data_set_wind_global; -a._spine_physics_constraint_data_is_wind_global=Y.spine_physics_constraint_data_is_wind_global;a._spine_physics_constraint_data_set_gravity_global=Y.spine_physics_constraint_data_set_gravity_global;a._spine_physics_constraint_data_is_gravity_global=Y.spine_physics_constraint_data_is_gravity_global;a._spine_physics_constraint_data_set_mix_global=Y.spine_physics_constraint_data_set_mix_global;a._spine_physics_constraint_data_is_mix_global=Y.spine_physics_constraint_data_is_mix_global; -a._spine_physics_constraint_set_bone=Y.spine_physics_constraint_set_bone;a._spine_physics_constraint_get_bone=Y.spine_physics_constraint_get_bone;a._spine_physics_constraint_set_inertia=Y.spine_physics_constraint_set_inertia;a._spine_physics_constraint_get_inertia=Y.spine_physics_constraint_get_inertia;a._spine_physics_constraint_set_strength=Y.spine_physics_constraint_set_strength;a._spine_physics_constraint_get_strength=Y.spine_physics_constraint_get_strength; -a._spine_physics_constraint_set_damping=Y.spine_physics_constraint_set_damping;a._spine_physics_constraint_get_damping=Y.spine_physics_constraint_get_damping;a._spine_physics_constraint_set_mass_inverse=Y.spine_physics_constraint_set_mass_inverse;a._spine_physics_constraint_get_mass_inverse=Y.spine_physics_constraint_get_mass_inverse;a._spine_physics_constraint_set_wind=Y.spine_physics_constraint_set_wind;a._spine_physics_constraint_get_wind=Y.spine_physics_constraint_get_wind; -a._spine_physics_constraint_set_gravity=Y.spine_physics_constraint_set_gravity;a._spine_physics_constraint_get_gravity=Y.spine_physics_constraint_get_gravity;a._spine_physics_constraint_set_mix=Y.spine_physics_constraint_set_mix;a._spine_physics_constraint_get_mix=Y.spine_physics_constraint_get_mix;a._spine_physics_constraint_set_reset=Y.spine_physics_constraint_set_reset;a._spine_physics_constraint_get_reset=Y.spine_physics_constraint_get_reset;a._spine_physics_constraint_set_ux=Y.spine_physics_constraint_set_ux; -a._spine_physics_constraint_get_ux=Y.spine_physics_constraint_get_ux;a._spine_physics_constraint_set_uy=Y.spine_physics_constraint_set_uy;a._spine_physics_constraint_get_uy=Y.spine_physics_constraint_get_uy;a._spine_physics_constraint_set_cx=Y.spine_physics_constraint_set_cx;a._spine_physics_constraint_get_cx=Y.spine_physics_constraint_get_cx;a._spine_physics_constraint_set_cy=Y.spine_physics_constraint_set_cy;a._spine_physics_constraint_get_cy=Y.spine_physics_constraint_get_cy; -a._spine_physics_constraint_set_tx=Y.spine_physics_constraint_set_tx;a._spine_physics_constraint_get_tx=Y.spine_physics_constraint_get_tx;a._spine_physics_constraint_set_ty=Y.spine_physics_constraint_set_ty;a._spine_physics_constraint_get_ty=Y.spine_physics_constraint_get_ty;a._spine_physics_constraint_set_x_offset=Y.spine_physics_constraint_set_x_offset;a._spine_physics_constraint_get_x_offset=Y.spine_physics_constraint_get_x_offset;a._spine_physics_constraint_set_x_velocity=Y.spine_physics_constraint_set_x_velocity; -a._spine_physics_constraint_get_x_velocity=Y.spine_physics_constraint_get_x_velocity;a._spine_physics_constraint_set_y_offset=Y.spine_physics_constraint_set_y_offset;a._spine_physics_constraint_get_y_offset=Y.spine_physics_constraint_get_y_offset;a._spine_physics_constraint_set_y_velocity=Y.spine_physics_constraint_set_y_velocity;a._spine_physics_constraint_get_y_velocity=Y.spine_physics_constraint_get_y_velocity;a._spine_physics_constraint_set_rotate_offset=Y.spine_physics_constraint_set_rotate_offset; -a._spine_physics_constraint_get_rotate_offset=Y.spine_physics_constraint_get_rotate_offset;a._spine_physics_constraint_set_rotate_velocity=Y.spine_physics_constraint_set_rotate_velocity;a._spine_physics_constraint_get_rotate_velocity=Y.spine_physics_constraint_get_rotate_velocity;a._spine_physics_constraint_set_scale_offset=Y.spine_physics_constraint_set_scale_offset;a._spine_physics_constraint_get_scale_offset=Y.spine_physics_constraint_get_scale_offset; -a._spine_physics_constraint_set_scale_velocity=Y.spine_physics_constraint_set_scale_velocity;a._spine_physics_constraint_get_scale_velocity=Y.spine_physics_constraint_get_scale_velocity;a._spine_physics_constraint_set_active=Y.spine_physics_constraint_set_active;a._spine_physics_constraint_is_active=Y.spine_physics_constraint_is_active;a._spine_physics_constraint_set_remaining=Y.spine_physics_constraint_set_remaining;a._spine_physics_constraint_get_remaining=Y.spine_physics_constraint_get_remaining; -a._spine_physics_constraint_set_last_time=Y.spine_physics_constraint_set_last_time;a._spine_physics_constraint_get_last_time=Y.spine_physics_constraint_get_last_time;a._spine_physics_constraint_reset_fully=Y.spine_physics_constraint_reset_fully;a._spine_physics_constraint_update=Y.spine_physics_constraint_update;a._spine_physics_constraint_translate=Y.spine_physics_constraint_translate;a._spine_physics_constraint_rotate=Y.spine_physics_constraint_rotate;a._spine_sequence_apply=Y.spine_sequence_apply; -a._spine_sequence_get_path=Y.spine_sequence_get_path;a._spine_sequence_get_id=Y.spine_sequence_get_id;a._spine_sequence_set_id=Y.spine_sequence_set_id;a._spine_sequence_get_start=Y.spine_sequence_get_start;a._spine_sequence_set_start=Y.spine_sequence_set_start;a._spine_sequence_get_digits=Y.spine_sequence_get_digits;a._spine_sequence_set_digits=Y.spine_sequence_set_digits;a._spine_sequence_get_setup_index=Y.spine_sequence_get_setup_index;a._spine_sequence_set_setup_index=Y.spine_sequence_set_setup_index; -a._spine_sequence_get_num_regions=Y.spine_sequence_get_num_regions;a._spine_sequence_get_regions=Y.spine_sequence_get_regions;a._spine_texture_region_get_texture=Y.spine_texture_region_get_texture;a._spine_texture_region_set_texture=Y.spine_texture_region_set_texture;a._spine_texture_region_get_u=Y.spine_texture_region_get_u;a._spine_texture_region_set_u=Y.spine_texture_region_set_u;a._spine_texture_region_get_v=Y.spine_texture_region_get_v;a._spine_texture_region_set_v=Y.spine_texture_region_set_v; -a._spine_texture_region_get_u2=Y.spine_texture_region_get_u2;a._spine_texture_region_set_u2=Y.spine_texture_region_set_u2;a._spine_texture_region_get_v2=Y.spine_texture_region_get_v2;a._spine_texture_region_set_v2=Y.spine_texture_region_set_v2;a._spine_texture_region_get_degrees=Y.spine_texture_region_get_degrees;a._spine_texture_region_set_degrees=Y.spine_texture_region_set_degrees;a._spine_texture_region_get_offset_x=Y.spine_texture_region_get_offset_x;a._spine_texture_region_set_offset_x=Y.spine_texture_region_set_offset_x; -a._spine_texture_region_get_offset_y=Y.spine_texture_region_get_offset_y;a._spine_texture_region_set_offset_y=Y.spine_texture_region_set_offset_y;a._spine_texture_region_get_width=Y.spine_texture_region_get_width;a._spine_texture_region_set_width=Y.spine_texture_region_set_width;a._spine_texture_region_get_height=Y.spine_texture_region_get_height;a._spine_texture_region_set_height=Y.spine_texture_region_set_height;a._spine_texture_region_get_original_width=Y.spine_texture_region_get_original_width; -a._spine_texture_region_set_original_width=Y.spine_texture_region_set_original_width;a._spine_texture_region_get_original_height=Y.spine_texture_region_get_original_height;a._spine_texture_region_set_original_height=Y.spine_texture_region_set_original_height;a._spine_skeleton_bounds_create=Y.spine_skeleton_bounds_create;a._spine_skeleton_bounds_dispose=Y.spine_skeleton_bounds_dispose;a._spine_skeleton_bounds_update=Y.spine_skeleton_bounds_update;a._spine_skeleton_bounds_aabb_contains_point=Y.spine_skeleton_bounds_aabb_contains_point; -a._spine_skeleton_bounds_aabb_intersects_segment=Y.spine_skeleton_bounds_aabb_intersects_segment;a._spine_skeleton_bounds_aabb_intersects_skeleton=Y.spine_skeleton_bounds_aabb_intersects_skeleton;a._spine_skeleton_bounds_contains_point=Y.spine_skeleton_bounds_contains_point;a._spine_skeleton_bounds_contains_point_attachment=Y.spine_skeleton_bounds_contains_point_attachment;a._spine_skeleton_bounds_intersects_segment_attachment=Y.spine_skeleton_bounds_intersects_segment_attachment; -a._spine_skeleton_bounds_intersects_segment=Y.spine_skeleton_bounds_intersects_segment;a._spine_skeleton_bounds_get_polygon=Y.spine_skeleton_bounds_get_polygon;a._spine_skeleton_bounds_get_bounding_box=Y.spine_skeleton_bounds_get_bounding_box;a._spine_skeleton_bounds_get_num_polygons=Y.spine_skeleton_bounds_get_num_polygons;a._spine_skeleton_bounds_get_polygons=Y.spine_skeleton_bounds_get_polygons;a._spine_skeleton_bounds_get_num_bounding_boxes=Y.spine_skeleton_bounds_get_num_bounding_boxes; -a._spine_skeleton_bounds_get_bounding_boxes=Y.spine_skeleton_bounds_get_bounding_boxes;a._spine_skeleton_bounds_get_width=Y.spine_skeleton_bounds_get_width;a._spine_skeleton_bounds_get_height=Y.spine_skeleton_bounds_get_height;a._spine_polygon_get_num_vertices=Y.spine_polygon_get_num_vertices;a._spine_polygon_get_vertices=Y.spine_polygon_get_vertices;a._malloc=Y.malloc;var ha=Y._emscripten_stack_restore,ia=Y.emscripten_stack_get_current;a.wasmExports=Y; +a._spine_track_entry_get_alpha=Y.spine_track_entry_get_alpha;a._spine_track_entry_set_alpha=Y.spine_track_entry_set_alpha;a._spine_track_entry_get_event_threshold=Y.spine_track_entry_get_event_threshold;a._spine_track_entry_set_event_threshold=Y.spine_track_entry_set_event_threshold;a._spine_track_entry_get_mix_attachment_threshold=Y.spine_track_entry_get_mix_attachment_threshold;a._spine_track_entry_set_mix_attachment_threshold=Y.spine_track_entry_set_mix_attachment_threshold; +a._spine_track_entry_get_alpha_attachment_threshold=Y.spine_track_entry_get_alpha_attachment_threshold;a._spine_track_entry_set_alpha_attachment_threshold=Y.spine_track_entry_set_alpha_attachment_threshold;a._spine_track_entry_get_mix_draw_order_threshold=Y.spine_track_entry_get_mix_draw_order_threshold;a._spine_track_entry_set_mix_draw_order_threshold=Y.spine_track_entry_set_mix_draw_order_threshold;a._spine_track_entry_get_next=Y.spine_track_entry_get_next;a._spine_track_entry_is_complete=Y.spine_track_entry_is_complete; +a._spine_track_entry_get_mix_time=Y.spine_track_entry_get_mix_time;a._spine_track_entry_set_mix_time=Y.spine_track_entry_set_mix_time;a._spine_track_entry_get_mix_duration=Y.spine_track_entry_get_mix_duration;a._spine_track_entry_set_mix_duration_1=Y.spine_track_entry_set_mix_duration_1;a._spine_track_entry_set_mix_duration_2=Y.spine_track_entry_set_mix_duration_2;a._spine_track_entry_get_mix_blend=Y.spine_track_entry_get_mix_blend;a._spine_track_entry_set_mix_blend=Y.spine_track_entry_set_mix_blend; +a._spine_track_entry_get_mixing_from=Y.spine_track_entry_get_mixing_from;a._spine_track_entry_get_mixing_to=Y.spine_track_entry_get_mixing_to;a._spine_track_entry_reset_rotation_directions=Y.spine_track_entry_reset_rotation_directions;a._spine_track_entry_get_track_complete=Y.spine_track_entry_get_track_complete;a._spine_track_entry_is_empty_animation=Y.spine_track_entry_is_empty_animation;a._spine_track_entry_was_applied=Y.spine_track_entry_was_applied;a._spine_track_entry_is_next_ready=Y.spine_track_entry_is_next_ready; +a._spine_track_entry_get_animation_state=Y.spine_track_entry_get_animation_state;a._spine_track_entry_set_animation_state=Y.spine_track_entry_set_animation_state;a._spine_track_entry_get_renderer_object=Y.spine_track_entry_get_renderer_object;a._spine_to_x_create=Y.spine_to_x_create;a._spine_to_x_dispose=Y.spine_to_x_dispose;a._spine_to_x_get_rtti=Y.spine_to_x_get_rtti;a._spine_to_x_mix=Y.spine_to_x_mix;a._spine_to_x_apply=Y.spine_to_x_apply;a._spine_to_x_rtti=Y.spine_to_x_rtti; +a._spine_sequence_create=Y.spine_sequence_create;a._spine_sequence_dispose=Y.spine_sequence_dispose;a._spine_sequence_copy=Y.spine_sequence_copy;a._spine_sequence_apply=Y.spine_sequence_apply;a._spine_sequence_get_path=Y.spine_sequence_get_path;a._spine_sequence_get_id=Y.spine_sequence_get_id;a._spine_sequence_set_id=Y.spine_sequence_set_id;a._spine_sequence_get_start=Y.spine_sequence_get_start;a._spine_sequence_set_start=Y.spine_sequence_set_start;a._spine_sequence_get_digits=Y.spine_sequence_get_digits; +a._spine_sequence_set_digits=Y.spine_sequence_set_digits;a._spine_sequence_get_setup_index=Y.spine_sequence_get_setup_index;a._spine_sequence_set_setup_index=Y.spine_sequence_set_setup_index;a._spine_sequence_get_regions=Y.spine_sequence_get_regions;a._spine_to_y_create=Y.spine_to_y_create;a._spine_to_y_dispose=Y.spine_to_y_dispose;a._spine_to_y_get_rtti=Y.spine_to_y_get_rtti;a._spine_to_y_mix=Y.spine_to_y_mix;a._spine_to_y_apply=Y.spine_to_y_apply;a._spine_to_y_rtti=Y.spine_to_y_rtti; +a._spine_path_attachment_create=Y.spine_path_attachment_create;a._spine_path_attachment_dispose=Y.spine_path_attachment_dispose;a._spine_path_attachment_get_rtti=Y.spine_path_attachment_get_rtti;a._spine_path_attachment_get_lengths=Y.spine_path_attachment_get_lengths;a._spine_path_attachment_set_lengths=Y.spine_path_attachment_set_lengths;a._spine_path_attachment_get_closed=Y.spine_path_attachment_get_closed;a._spine_path_attachment_set_closed=Y.spine_path_attachment_set_closed; +a._spine_path_attachment_get_constant_speed=Y.spine_path_attachment_get_constant_speed;a._spine_path_attachment_set_constant_speed=Y.spine_path_attachment_set_constant_speed;a._spine_path_attachment_get_color=Y.spine_path_attachment_get_color;a._spine_path_attachment_copy=Y.spine_path_attachment_copy;a._spine_path_attachment_compute_world_vertices_1=Y.spine_path_attachment_compute_world_vertices_1;a._spine_path_attachment_compute_world_vertices_2=Y.spine_path_attachment_compute_world_vertices_2; +a._spine_path_attachment_get_id=Y.spine_path_attachment_get_id;a._spine_path_attachment_get_bones=Y.spine_path_attachment_get_bones;a._spine_path_attachment_set_bones=Y.spine_path_attachment_set_bones;a._spine_path_attachment_get_vertices=Y.spine_path_attachment_get_vertices;a._spine_path_attachment_set_vertices=Y.spine_path_attachment_set_vertices;a._spine_path_attachment_get_world_vertices_length=Y.spine_path_attachment_get_world_vertices_length; +a._spine_path_attachment_set_world_vertices_length=Y.spine_path_attachment_set_world_vertices_length;a._spine_path_attachment_get_timeline_attachment=Y.spine_path_attachment_get_timeline_attachment;a._spine_path_attachment_set_timeline_attachment=Y.spine_path_attachment_set_timeline_attachment;a._spine_path_attachment_copy_to=Y.spine_path_attachment_copy_to;a._spine_path_attachment_get_name=Y.spine_path_attachment_get_name;a._spine_path_attachment_get_ref_count=Y.spine_path_attachment_get_ref_count; +a._spine_path_attachment_reference=Y.spine_path_attachment_reference;a._spine_path_attachment_dereference=Y.spine_path_attachment_dereference;a._spine_path_attachment_rtti=Y.spine_path_attachment_rtti;a._spine_sequence_timeline_create=Y.spine_sequence_timeline_create;a._spine_sequence_timeline_dispose=Y.spine_sequence_timeline_dispose;a._spine_sequence_timeline_get_rtti=Y.spine_sequence_timeline_get_rtti;a._spine_sequence_timeline_apply=Y.spine_sequence_timeline_apply; +a._spine_sequence_timeline_set_frame=Y.spine_sequence_timeline_set_frame;a._spine_sequence_timeline_get_attachment=Y.spine_sequence_timeline_get_attachment;a._spine_sequence_timeline_get_slot_index=Y.spine_sequence_timeline_get_slot_index;a._spine_sequence_timeline_set_slot_index=Y.spine_sequence_timeline_set_slot_index;a._spine_sequence_timeline_get_frame_entries=Y.spine_sequence_timeline_get_frame_entries;a._spine_sequence_timeline_get_frame_count=Y.spine_sequence_timeline_get_frame_count; +a._spine_sequence_timeline_get_frames=Y.spine_sequence_timeline_get_frames;a._spine_sequence_timeline_get_duration=Y.spine_sequence_timeline_get_duration;a._spine_sequence_timeline_get_property_ids=Y.spine_sequence_timeline_get_property_ids;a._spine_sequence_timeline_rtti=Y.spine_sequence_timeline_rtti;a._spine_animation_create=Y.spine_animation_create;a._spine_animation_dispose=Y.spine_animation_dispose;a._spine_animation_get_timelines=Y.spine_animation_get_timelines; +a._spine_animation_set_timelines=Y.spine_animation_set_timelines;a._spine_animation_has_timeline=Y.spine_animation_has_timeline;a._spine_animation_get_duration=Y.spine_animation_get_duration;a._spine_animation_set_duration=Y.spine_animation_set_duration;a._spine_animation_apply=Y.spine_animation_apply;a._spine_animation_get_name=Y.spine_animation_get_name;a._spine_animation_get_bones=Y.spine_animation_get_bones;a._spine_animation_search_1=Y.spine_animation_search_1;a._spine_animation_search_2=Y.spine_animation_search_2; +a._spine_physics_constraint_timeline_dispose=Y.spine_physics_constraint_timeline_dispose;a._spine_physics_constraint_timeline_get_rtti=Y.spine_physics_constraint_timeline_get_rtti;a._spine_physics_constraint_timeline_apply=Y.spine_physics_constraint_timeline_apply;a._spine_physics_constraint_timeline_get_constraint_index=Y.spine_physics_constraint_timeline_get_constraint_index;a._spine_physics_constraint_timeline_set_constraint_index=Y.spine_physics_constraint_timeline_set_constraint_index; +a._spine_physics_constraint_timeline_set_frame=Y.spine_physics_constraint_timeline_set_frame;a._spine_physics_constraint_timeline_get_curve_value=Y.spine_physics_constraint_timeline_get_curve_value;a._spine_physics_constraint_timeline_get_relative_value=Y.spine_physics_constraint_timeline_get_relative_value;a._spine_physics_constraint_timeline_get_absolute_value_1=Y.spine_physics_constraint_timeline_get_absolute_value_1;a._spine_physics_constraint_timeline_get_absolute_value_2=Y.spine_physics_constraint_timeline_get_absolute_value_2; +a._spine_physics_constraint_timeline_get_scale_value=Y.spine_physics_constraint_timeline_get_scale_value;a._spine_physics_constraint_timeline_set_linear=Y.spine_physics_constraint_timeline_set_linear;a._spine_physics_constraint_timeline_set_stepped=Y.spine_physics_constraint_timeline_set_stepped;a._spine_physics_constraint_timeline_set_bezier=Y.spine_physics_constraint_timeline_set_bezier;a._spine_physics_constraint_timeline_get_bezier_value=Y.spine_physics_constraint_timeline_get_bezier_value; +a._spine_physics_constraint_timeline_get_curves=Y.spine_physics_constraint_timeline_get_curves;a._spine_physics_constraint_timeline_get_frame_entries=Y.spine_physics_constraint_timeline_get_frame_entries;a._spine_physics_constraint_timeline_get_frame_count=Y.spine_physics_constraint_timeline_get_frame_count;a._spine_physics_constraint_timeline_get_frames=Y.spine_physics_constraint_timeline_get_frames;a._spine_physics_constraint_timeline_get_duration=Y.spine_physics_constraint_timeline_get_duration; +a._spine_physics_constraint_timeline_get_property_ids=Y.spine_physics_constraint_timeline_get_property_ids;a._spine_physics_constraint_timeline_rtti=Y.spine_physics_constraint_timeline_rtti;a._spine_rgba_timeline_create=Y.spine_rgba_timeline_create;a._spine_rgba_timeline_dispose=Y.spine_rgba_timeline_dispose;a._spine_rgba_timeline_get_rtti=Y.spine_rgba_timeline_get_rtti;a._spine_rgba_timeline_set_frame=Y.spine_rgba_timeline_set_frame;a._spine_rgba_timeline_apply=Y.spine_rgba_timeline_apply; +a._spine_rgba_timeline_get_slot_index=Y.spine_rgba_timeline_get_slot_index;a._spine_rgba_timeline_set_slot_index=Y.spine_rgba_timeline_set_slot_index;a._spine_rgba_timeline_set_linear=Y.spine_rgba_timeline_set_linear;a._spine_rgba_timeline_set_stepped=Y.spine_rgba_timeline_set_stepped;a._spine_rgba_timeline_set_bezier=Y.spine_rgba_timeline_set_bezier;a._spine_rgba_timeline_get_bezier_value=Y.spine_rgba_timeline_get_bezier_value;a._spine_rgba_timeline_get_curves=Y.spine_rgba_timeline_get_curves; +a._spine_rgba_timeline_get_frame_entries=Y.spine_rgba_timeline_get_frame_entries;a._spine_rgba_timeline_get_frame_count=Y.spine_rgba_timeline_get_frame_count;a._spine_rgba_timeline_get_frames=Y.spine_rgba_timeline_get_frames;a._spine_rgba_timeline_get_duration=Y.spine_rgba_timeline_get_duration;a._spine_rgba_timeline_get_property_ids=Y.spine_rgba_timeline_get_property_ids;a._spine_rgba_timeline_rtti=Y.spine_rgba_timeline_rtti;a._spine_clipping_attachment_create=Y.spine_clipping_attachment_create; +a._spine_clipping_attachment_dispose=Y.spine_clipping_attachment_dispose;a._spine_clipping_attachment_get_rtti=Y.spine_clipping_attachment_get_rtti;a._spine_clipping_attachment_get_end_slot=Y.spine_clipping_attachment_get_end_slot;a._spine_clipping_attachment_set_end_slot=Y.spine_clipping_attachment_set_end_slot;a._spine_clipping_attachment_get_color=Y.spine_clipping_attachment_get_color;a._spine_clipping_attachment_copy=Y.spine_clipping_attachment_copy; +a._spine_clipping_attachment_compute_world_vertices_1=Y.spine_clipping_attachment_compute_world_vertices_1;a._spine_clipping_attachment_compute_world_vertices_2=Y.spine_clipping_attachment_compute_world_vertices_2;a._spine_clipping_attachment_get_id=Y.spine_clipping_attachment_get_id;a._spine_clipping_attachment_get_bones=Y.spine_clipping_attachment_get_bones;a._spine_clipping_attachment_set_bones=Y.spine_clipping_attachment_set_bones;a._spine_clipping_attachment_get_vertices=Y.spine_clipping_attachment_get_vertices; +a._spine_clipping_attachment_set_vertices=Y.spine_clipping_attachment_set_vertices;a._spine_clipping_attachment_get_world_vertices_length=Y.spine_clipping_attachment_get_world_vertices_length;a._spine_clipping_attachment_set_world_vertices_length=Y.spine_clipping_attachment_set_world_vertices_length;a._spine_clipping_attachment_get_timeline_attachment=Y.spine_clipping_attachment_get_timeline_attachment;a._spine_clipping_attachment_set_timeline_attachment=Y.spine_clipping_attachment_set_timeline_attachment; +a._spine_clipping_attachment_copy_to=Y.spine_clipping_attachment_copy_to;a._spine_clipping_attachment_get_name=Y.spine_clipping_attachment_get_name;a._spine_clipping_attachment_get_ref_count=Y.spine_clipping_attachment_get_ref_count;a._spine_clipping_attachment_reference=Y.spine_clipping_attachment_reference;a._spine_clipping_attachment_dereference=Y.spine_clipping_attachment_dereference;a._spine_clipping_attachment_rtti=Y.spine_clipping_attachment_rtti;a._spine_from_y_create=Y.spine_from_y_create; +a._spine_from_y_dispose=Y.spine_from_y_dispose;a._spine_from_y_get_rtti=Y.spine_from_y_get_rtti;a._spine_from_y_value=Y.spine_from_y_value;a._spine_from_y_rtti=Y.spine_from_y_rtti;a._spine_point_attachment_create=Y.spine_point_attachment_create;a._spine_point_attachment_dispose=Y.spine_point_attachment_dispose;a._spine_point_attachment_get_rtti=Y.spine_point_attachment_get_rtti;a._spine_point_attachment_get_x=Y.spine_point_attachment_get_x;a._spine_point_attachment_set_x=Y.spine_point_attachment_set_x; +a._spine_point_attachment_get_y=Y.spine_point_attachment_get_y;a._spine_point_attachment_set_y=Y.spine_point_attachment_set_y;a._spine_point_attachment_get_rotation=Y.spine_point_attachment_get_rotation;a._spine_point_attachment_set_rotation=Y.spine_point_attachment_set_rotation;a._spine_point_attachment_get_color=Y.spine_point_attachment_get_color;a._spine_point_attachment_compute_world_position=Y.spine_point_attachment_compute_world_position;a._spine_point_attachment_compute_world_rotation=Y.spine_point_attachment_compute_world_rotation; +a._spine_point_attachment_copy=Y.spine_point_attachment_copy;a._spine_point_attachment_get_name=Y.spine_point_attachment_get_name;a._spine_point_attachment_get_ref_count=Y.spine_point_attachment_get_ref_count;a._spine_point_attachment_reference=Y.spine_point_attachment_reference;a._spine_point_attachment_dereference=Y.spine_point_attachment_dereference;a._spine_point_attachment_rtti=Y.spine_point_attachment_rtti;a._spine_path_constraint_mix_timeline_create=Y.spine_path_constraint_mix_timeline_create; +a._spine_path_constraint_mix_timeline_dispose=Y.spine_path_constraint_mix_timeline_dispose;a._spine_path_constraint_mix_timeline_get_rtti=Y.spine_path_constraint_mix_timeline_get_rtti;a._spine_path_constraint_mix_timeline_apply=Y.spine_path_constraint_mix_timeline_apply;a._spine_path_constraint_mix_timeline_set_frame=Y.spine_path_constraint_mix_timeline_set_frame;a._spine_path_constraint_mix_timeline_get_constraint_index=Y.spine_path_constraint_mix_timeline_get_constraint_index; +a._spine_path_constraint_mix_timeline_set_constraint_index=Y.spine_path_constraint_mix_timeline_set_constraint_index;a._spine_path_constraint_mix_timeline_set_linear=Y.spine_path_constraint_mix_timeline_set_linear;a._spine_path_constraint_mix_timeline_set_stepped=Y.spine_path_constraint_mix_timeline_set_stepped;a._spine_path_constraint_mix_timeline_set_bezier=Y.spine_path_constraint_mix_timeline_set_bezier;a._spine_path_constraint_mix_timeline_get_bezier_value=Y.spine_path_constraint_mix_timeline_get_bezier_value; +a._spine_path_constraint_mix_timeline_get_curves=Y.spine_path_constraint_mix_timeline_get_curves;a._spine_path_constraint_mix_timeline_get_frame_entries=Y.spine_path_constraint_mix_timeline_get_frame_entries;a._spine_path_constraint_mix_timeline_get_frame_count=Y.spine_path_constraint_mix_timeline_get_frame_count;a._spine_path_constraint_mix_timeline_get_frames=Y.spine_path_constraint_mix_timeline_get_frames;a._spine_path_constraint_mix_timeline_get_duration=Y.spine_path_constraint_mix_timeline_get_duration; +a._spine_path_constraint_mix_timeline_get_property_ids=Y.spine_path_constraint_mix_timeline_get_property_ids;a._spine_path_constraint_mix_timeline_rtti=Y.spine_path_constraint_mix_timeline_rtti;a._spine_physics_constraint_reset_timeline_create=Y.spine_physics_constraint_reset_timeline_create;a._spine_physics_constraint_reset_timeline_dispose=Y.spine_physics_constraint_reset_timeline_dispose;a._spine_physics_constraint_reset_timeline_get_rtti=Y.spine_physics_constraint_reset_timeline_get_rtti; +a._spine_physics_constraint_reset_timeline_apply=Y.spine_physics_constraint_reset_timeline_apply;a._spine_physics_constraint_reset_timeline_get_frame_count=Y.spine_physics_constraint_reset_timeline_get_frame_count;a._spine_physics_constraint_reset_timeline_get_constraint_index=Y.spine_physics_constraint_reset_timeline_get_constraint_index;a._spine_physics_constraint_reset_timeline_set_constraint_index=Y.spine_physics_constraint_reset_timeline_set_constraint_index; +a._spine_physics_constraint_reset_timeline_set_frame=Y.spine_physics_constraint_reset_timeline_set_frame;a._spine_physics_constraint_reset_timeline_get_frame_entries=Y.spine_physics_constraint_reset_timeline_get_frame_entries;a._spine_physics_constraint_reset_timeline_get_frames=Y.spine_physics_constraint_reset_timeline_get_frames;a._spine_physics_constraint_reset_timeline_get_duration=Y.spine_physics_constraint_reset_timeline_get_duration; +a._spine_physics_constraint_reset_timeline_get_property_ids=Y.spine_physics_constraint_reset_timeline_get_property_ids;a._spine_physics_constraint_reset_timeline_rtti=Y.spine_physics_constraint_reset_timeline_rtti;a._spine_atlas_attachment_loader_create=Y.spine_atlas_attachment_loader_create;a._spine_atlas_attachment_loader_dispose=Y.spine_atlas_attachment_loader_dispose;a._spine_atlas_attachment_loader_new_region_attachment=Y.spine_atlas_attachment_loader_new_region_attachment; +a._spine_atlas_attachment_loader_new_mesh_attachment=Y.spine_atlas_attachment_loader_new_mesh_attachment;a._spine_atlas_attachment_loader_new_bounding_box_attachment=Y.spine_atlas_attachment_loader_new_bounding_box_attachment;a._spine_atlas_attachment_loader_new_path_attachment=Y.spine_atlas_attachment_loader_new_path_attachment;a._spine_atlas_attachment_loader_new_point_attachment=Y.spine_atlas_attachment_loader_new_point_attachment;a._spine_atlas_attachment_loader_new_clipping_attachment=Y.spine_atlas_attachment_loader_new_clipping_attachment; +a._spine_atlas_attachment_loader_find_region=Y.spine_atlas_attachment_loader_find_region;a._spine_slot_timeline_dispose=Y.spine_slot_timeline_dispose;a._spine_slot_timeline_get_rtti=Y.spine_slot_timeline_get_rtti;a._spine_slot_timeline_get_slot_index=Y.spine_slot_timeline_get_slot_index;a._spine_slot_timeline_set_slot_index=Y.spine_slot_timeline_set_slot_index;a._spine_slot_timeline_rtti=Y.spine_slot_timeline_rtti;a._spine_physics_constraint_mix_timeline_create=Y.spine_physics_constraint_mix_timeline_create; +a._spine_physics_constraint_mix_timeline_dispose=Y.spine_physics_constraint_mix_timeline_dispose;a._spine_physics_constraint_mix_timeline_get_rtti=Y.spine_physics_constraint_mix_timeline_get_rtti;a._spine_physics_constraint_mix_timeline_apply=Y.spine_physics_constraint_mix_timeline_apply;a._spine_physics_constraint_mix_timeline_get_constraint_index=Y.spine_physics_constraint_mix_timeline_get_constraint_index;a._spine_physics_constraint_mix_timeline_set_constraint_index=Y.spine_physics_constraint_mix_timeline_set_constraint_index; +a._spine_physics_constraint_mix_timeline_set_frame=Y.spine_physics_constraint_mix_timeline_set_frame;a._spine_physics_constraint_mix_timeline_get_curve_value=Y.spine_physics_constraint_mix_timeline_get_curve_value;a._spine_physics_constraint_mix_timeline_get_relative_value=Y.spine_physics_constraint_mix_timeline_get_relative_value;a._spine_physics_constraint_mix_timeline_get_absolute_value_1=Y.spine_physics_constraint_mix_timeline_get_absolute_value_1; +a._spine_physics_constraint_mix_timeline_get_absolute_value_2=Y.spine_physics_constraint_mix_timeline_get_absolute_value_2;a._spine_physics_constraint_mix_timeline_get_scale_value=Y.spine_physics_constraint_mix_timeline_get_scale_value;a._spine_physics_constraint_mix_timeline_set_linear=Y.spine_physics_constraint_mix_timeline_set_linear;a._spine_physics_constraint_mix_timeline_set_stepped=Y.spine_physics_constraint_mix_timeline_set_stepped;a._spine_physics_constraint_mix_timeline_set_bezier=Y.spine_physics_constraint_mix_timeline_set_bezier; +a._spine_physics_constraint_mix_timeline_get_bezier_value=Y.spine_physics_constraint_mix_timeline_get_bezier_value;a._spine_physics_constraint_mix_timeline_get_curves=Y.spine_physics_constraint_mix_timeline_get_curves;a._spine_physics_constraint_mix_timeline_get_frame_entries=Y.spine_physics_constraint_mix_timeline_get_frame_entries;a._spine_physics_constraint_mix_timeline_get_frame_count=Y.spine_physics_constraint_mix_timeline_get_frame_count;a._spine_physics_constraint_mix_timeline_get_frames=Y.spine_physics_constraint_mix_timeline_get_frames; +a._spine_physics_constraint_mix_timeline_get_duration=Y.spine_physics_constraint_mix_timeline_get_duration;a._spine_physics_constraint_mix_timeline_get_property_ids=Y.spine_physics_constraint_mix_timeline_get_property_ids;a._spine_physics_constraint_mix_timeline_rtti=Y.spine_physics_constraint_mix_timeline_rtti;a._spine_from_x_create=Y.spine_from_x_create;a._spine_from_x_dispose=Y.spine_from_x_dispose;a._spine_from_x_get_rtti=Y.spine_from_x_get_rtti;a._spine_from_x_value=Y.spine_from_x_value; +a._spine_from_x_rtti=Y.spine_from_x_rtti;a._spine_array_float_create=Y.spine_array_float_create;a._spine_array_float_create_with_capacity=Y.spine_array_float_create_with_capacity;a._spine_array_float_dispose=Y.spine_array_float_dispose;a._spine_array_float_get_capacity=Y.spine_array_float_get_capacity;a._spine_array_float_size=Y.spine_array_float_size;a._spine_array_float_set_size=Y.spine_array_float_set_size;a._spine_array_float_ensure_capacity=Y.spine_array_float_ensure_capacity; +a._spine_array_float_add_all=Y.spine_array_float_add_all;a._spine_array_float_clear_and_add_all=Y.spine_array_float_clear_and_add_all;a._spine_array_float_remove_at=Y.spine_array_float_remove_at;a._spine_array_float_contains=Y.spine_array_float_contains;a._spine_array_float_index_of=Y.spine_array_float_index_of;a._spine_array_float_buffer=Y.spine_array_float_buffer;a._spine_array_int_create=Y.spine_array_int_create;a._spine_array_int_create_with_capacity=Y.spine_array_int_create_with_capacity; +a._spine_array_int_dispose=Y.spine_array_int_dispose;a._spine_array_int_clear=Y.spine_array_int_clear;a._spine_array_int_get_capacity=Y.spine_array_int_get_capacity;a._spine_array_int_size=Y.spine_array_int_size;a._spine_array_int_set_size=Y.spine_array_int_set_size;a._spine_array_int_ensure_capacity=Y.spine_array_int_ensure_capacity;a._spine_array_int_add=Y.spine_array_int_add;a._spine_array_int_add_all=Y.spine_array_int_add_all;a._spine_array_int_clear_and_add_all=Y.spine_array_int_clear_and_add_all; +a._spine_array_int_remove_at=Y.spine_array_int_remove_at;a._spine_array_int_contains=Y.spine_array_int_contains;a._spine_array_int_index_of=Y.spine_array_int_index_of;a._spine_array_int_buffer=Y.spine_array_int_buffer;a._spine_array_unsigned_short_create=Y.spine_array_unsigned_short_create;a._spine_array_unsigned_short_create_with_capacity=Y.spine_array_unsigned_short_create_with_capacity;a._spine_array_unsigned_short_dispose=Y.spine_array_unsigned_short_dispose; +a._spine_array_unsigned_short_clear=Y.spine_array_unsigned_short_clear;a._spine_array_unsigned_short_get_capacity=Y.spine_array_unsigned_short_get_capacity;a._spine_array_unsigned_short_size=Y.spine_array_unsigned_short_size;a._spine_array_unsigned_short_set_size=Y.spine_array_unsigned_short_set_size;a._spine_array_unsigned_short_ensure_capacity=Y.spine_array_unsigned_short_ensure_capacity;a._spine_array_unsigned_short_add=Y.spine_array_unsigned_short_add;a._spine_array_unsigned_short_add_all=Y.spine_array_unsigned_short_add_all; +a._spine_array_unsigned_short_clear_and_add_all=Y.spine_array_unsigned_short_clear_and_add_all;a._spine_array_unsigned_short_remove_at=Y.spine_array_unsigned_short_remove_at;a._spine_array_unsigned_short_contains=Y.spine_array_unsigned_short_contains;a._spine_array_unsigned_short_index_of=Y.spine_array_unsigned_short_index_of;a._spine_array_unsigned_short_buffer=Y.spine_array_unsigned_short_buffer;a._spine_array_property_id_create=Y.spine_array_property_id_create; +a._spine_array_property_id_create_with_capacity=Y.spine_array_property_id_create_with_capacity;a._spine_array_property_id_dispose=Y.spine_array_property_id_dispose;a._spine_array_property_id_clear=Y.spine_array_property_id_clear;a._spine_array_property_id_get_capacity=Y.spine_array_property_id_get_capacity;a._spine_array_property_id_size=Y.spine_array_property_id_size;a._spine_array_property_id_set_size=Y.spine_array_property_id_set_size;a._spine_array_property_id_ensure_capacity=Y.spine_array_property_id_ensure_capacity; +a._spine_array_property_id_add=Y.spine_array_property_id_add;a._spine_array_property_id_add_all=Y.spine_array_property_id_add_all;a._spine_array_property_id_clear_and_add_all=Y.spine_array_property_id_clear_and_add_all;a._spine_array_property_id_remove_at=Y.spine_array_property_id_remove_at;a._spine_array_property_id_contains=Y.spine_array_property_id_contains;a._spine_array_property_id_index_of=Y.spine_array_property_id_index_of;a._spine_array_property_id_buffer=Y.spine_array_property_id_buffer; +a._spine_array_animation_create=Y.spine_array_animation_create;a._spine_array_animation_create_with_capacity=Y.spine_array_animation_create_with_capacity;a._spine_array_animation_dispose=Y.spine_array_animation_dispose;a._spine_array_animation_clear=Y.spine_array_animation_clear;a._spine_array_animation_get_capacity=Y.spine_array_animation_get_capacity;a._spine_array_animation_size=Y.spine_array_animation_size;a._spine_array_animation_set_size=Y.spine_array_animation_set_size; +a._spine_array_animation_ensure_capacity=Y.spine_array_animation_ensure_capacity;a._spine_array_animation_add=Y.spine_array_animation_add;a._spine_array_animation_add_all=Y.spine_array_animation_add_all;a._spine_array_animation_clear_and_add_all=Y.spine_array_animation_clear_and_add_all;a._spine_array_animation_remove_at=Y.spine_array_animation_remove_at;a._spine_array_animation_contains=Y.spine_array_animation_contains;a._spine_array_animation_index_of=Y.spine_array_animation_index_of; +a._spine_array_animation_buffer=Y.spine_array_animation_buffer;a._spine_array_atlas_page_create=Y.spine_array_atlas_page_create;a._spine_array_atlas_page_create_with_capacity=Y.spine_array_atlas_page_create_with_capacity;a._spine_array_atlas_page_dispose=Y.spine_array_atlas_page_dispose;a._spine_array_atlas_page_clear=Y.spine_array_atlas_page_clear;a._spine_array_atlas_page_get_capacity=Y.spine_array_atlas_page_get_capacity;a._spine_array_atlas_page_size=Y.spine_array_atlas_page_size; +a._spine_array_atlas_page_set_size=Y.spine_array_atlas_page_set_size;a._spine_array_atlas_page_ensure_capacity=Y.spine_array_atlas_page_ensure_capacity;a._spine_array_atlas_page_add=Y.spine_array_atlas_page_add;a._spine_array_atlas_page_add_all=Y.spine_array_atlas_page_add_all;a._spine_array_atlas_page_clear_and_add_all=Y.spine_array_atlas_page_clear_and_add_all;a._spine_array_atlas_page_remove_at=Y.spine_array_atlas_page_remove_at;a._spine_array_atlas_page_contains=Y.spine_array_atlas_page_contains; +a._spine_array_atlas_page_index_of=Y.spine_array_atlas_page_index_of;a._spine_array_atlas_page_buffer=Y.spine_array_atlas_page_buffer;a._spine_array_atlas_region_create=Y.spine_array_atlas_region_create;a._spine_array_atlas_region_create_with_capacity=Y.spine_array_atlas_region_create_with_capacity;a._spine_array_atlas_region_dispose=Y.spine_array_atlas_region_dispose;a._spine_array_atlas_region_clear=Y.spine_array_atlas_region_clear;a._spine_array_atlas_region_get_capacity=Y.spine_array_atlas_region_get_capacity; +a._spine_array_atlas_region_size=Y.spine_array_atlas_region_size;a._spine_array_atlas_region_set_size=Y.spine_array_atlas_region_set_size;a._spine_array_atlas_region_ensure_capacity=Y.spine_array_atlas_region_ensure_capacity;a._spine_array_atlas_region_add=Y.spine_array_atlas_region_add;a._spine_array_atlas_region_add_all=Y.spine_array_atlas_region_add_all;a._spine_array_atlas_region_clear_and_add_all=Y.spine_array_atlas_region_clear_and_add_all;a._spine_array_atlas_region_remove_at=Y.spine_array_atlas_region_remove_at; +a._spine_array_atlas_region_contains=Y.spine_array_atlas_region_contains;a._spine_array_atlas_region_index_of=Y.spine_array_atlas_region_index_of;a._spine_array_atlas_region_buffer=Y.spine_array_atlas_region_buffer;a._spine_array_attachment_create=Y.spine_array_attachment_create;a._spine_array_attachment_create_with_capacity=Y.spine_array_attachment_create_with_capacity;a._spine_array_attachment_dispose=Y.spine_array_attachment_dispose;a._spine_array_attachment_clear=Y.spine_array_attachment_clear; +a._spine_array_attachment_get_capacity=Y.spine_array_attachment_get_capacity;a._spine_array_attachment_size=Y.spine_array_attachment_size;a._spine_array_attachment_set_size=Y.spine_array_attachment_set_size;a._spine_array_attachment_ensure_capacity=Y.spine_array_attachment_ensure_capacity;a._spine_array_attachment_add=Y.spine_array_attachment_add;a._spine_array_attachment_add_all=Y.spine_array_attachment_add_all;a._spine_array_attachment_clear_and_add_all=Y.spine_array_attachment_clear_and_add_all; +a._spine_array_attachment_remove_at=Y.spine_array_attachment_remove_at;a._spine_array_attachment_contains=Y.spine_array_attachment_contains;a._spine_array_attachment_index_of=Y.spine_array_attachment_index_of;a._spine_array_attachment_buffer=Y.spine_array_attachment_buffer;a._spine_array_bone_create=Y.spine_array_bone_create;a._spine_array_bone_create_with_capacity=Y.spine_array_bone_create_with_capacity;a._spine_array_bone_dispose=Y.spine_array_bone_dispose;a._spine_array_bone_clear=Y.spine_array_bone_clear; +a._spine_array_bone_get_capacity=Y.spine_array_bone_get_capacity;a._spine_array_bone_size=Y.spine_array_bone_size;a._spine_array_bone_set_size=Y.spine_array_bone_set_size;a._spine_array_bone_ensure_capacity=Y.spine_array_bone_ensure_capacity;a._spine_array_bone_add=Y.spine_array_bone_add;a._spine_array_bone_add_all=Y.spine_array_bone_add_all;a._spine_array_bone_clear_and_add_all=Y.spine_array_bone_clear_and_add_all;a._spine_array_bone_remove_at=Y.spine_array_bone_remove_at; +a._spine_array_bone_contains=Y.spine_array_bone_contains;a._spine_array_bone_index_of=Y.spine_array_bone_index_of;a._spine_array_bone_buffer=Y.spine_array_bone_buffer;a._spine_array_bone_data_create=Y.spine_array_bone_data_create;a._spine_array_bone_data_create_with_capacity=Y.spine_array_bone_data_create_with_capacity;a._spine_array_bone_data_dispose=Y.spine_array_bone_data_dispose;a._spine_array_bone_data_clear=Y.spine_array_bone_data_clear;a._spine_array_bone_data_get_capacity=Y.spine_array_bone_data_get_capacity; +a._spine_array_bone_data_size=Y.spine_array_bone_data_size;a._spine_array_bone_data_set_size=Y.spine_array_bone_data_set_size;a._spine_array_bone_data_ensure_capacity=Y.spine_array_bone_data_ensure_capacity;a._spine_array_bone_data_add=Y.spine_array_bone_data_add;a._spine_array_bone_data_add_all=Y.spine_array_bone_data_add_all;a._spine_array_bone_data_clear_and_add_all=Y.spine_array_bone_data_clear_and_add_all;a._spine_array_bone_data_remove_at=Y.spine_array_bone_data_remove_at; +a._spine_array_bone_data_contains=Y.spine_array_bone_data_contains;a._spine_array_bone_data_index_of=Y.spine_array_bone_data_index_of;a._spine_array_bone_data_buffer=Y.spine_array_bone_data_buffer;a._spine_array_bone_pose_create=Y.spine_array_bone_pose_create;a._spine_array_bone_pose_create_with_capacity=Y.spine_array_bone_pose_create_with_capacity;a._spine_array_bone_pose_dispose=Y.spine_array_bone_pose_dispose;a._spine_array_bone_pose_clear=Y.spine_array_bone_pose_clear; +a._spine_array_bone_pose_get_capacity=Y.spine_array_bone_pose_get_capacity;a._spine_array_bone_pose_size=Y.spine_array_bone_pose_size;a._spine_array_bone_pose_set_size=Y.spine_array_bone_pose_set_size;a._spine_array_bone_pose_ensure_capacity=Y.spine_array_bone_pose_ensure_capacity;a._spine_array_bone_pose_add=Y.spine_array_bone_pose_add;a._spine_array_bone_pose_add_all=Y.spine_array_bone_pose_add_all;a._spine_array_bone_pose_clear_and_add_all=Y.spine_array_bone_pose_clear_and_add_all; +a._spine_array_bone_pose_remove_at=Y.spine_array_bone_pose_remove_at;a._spine_array_bone_pose_contains=Y.spine_array_bone_pose_contains;a._spine_array_bone_pose_index_of=Y.spine_array_bone_pose_index_of;a._spine_array_bone_pose_buffer=Y.spine_array_bone_pose_buffer;a._spine_array_bounding_box_attachment_create=Y.spine_array_bounding_box_attachment_create;a._spine_array_bounding_box_attachment_create_with_capacity=Y.spine_array_bounding_box_attachment_create_with_capacity; +a._spine_array_bounding_box_attachment_dispose=Y.spine_array_bounding_box_attachment_dispose;a._spine_array_bounding_box_attachment_clear=Y.spine_array_bounding_box_attachment_clear;a._spine_array_bounding_box_attachment_get_capacity=Y.spine_array_bounding_box_attachment_get_capacity;a._spine_array_bounding_box_attachment_size=Y.spine_array_bounding_box_attachment_size;a._spine_array_bounding_box_attachment_set_size=Y.spine_array_bounding_box_attachment_set_size; +a._spine_array_bounding_box_attachment_ensure_capacity=Y.spine_array_bounding_box_attachment_ensure_capacity;a._spine_array_bounding_box_attachment_add=Y.spine_array_bounding_box_attachment_add;a._spine_array_bounding_box_attachment_add_all=Y.spine_array_bounding_box_attachment_add_all;a._spine_array_bounding_box_attachment_clear_and_add_all=Y.spine_array_bounding_box_attachment_clear_and_add_all;a._spine_array_bounding_box_attachment_remove_at=Y.spine_array_bounding_box_attachment_remove_at; +a._spine_array_bounding_box_attachment_contains=Y.spine_array_bounding_box_attachment_contains;a._spine_array_bounding_box_attachment_index_of=Y.spine_array_bounding_box_attachment_index_of;a._spine_array_bounding_box_attachment_buffer=Y.spine_array_bounding_box_attachment_buffer;a._spine_array_constraint_create=Y.spine_array_constraint_create;a._spine_array_constraint_create_with_capacity=Y.spine_array_constraint_create_with_capacity;a._spine_array_constraint_dispose=Y.spine_array_constraint_dispose; +a._spine_array_constraint_clear=Y.spine_array_constraint_clear;a._spine_array_constraint_get_capacity=Y.spine_array_constraint_get_capacity;a._spine_array_constraint_size=Y.spine_array_constraint_size;a._spine_array_constraint_set_size=Y.spine_array_constraint_set_size;a._spine_array_constraint_ensure_capacity=Y.spine_array_constraint_ensure_capacity;a._spine_array_constraint_add=Y.spine_array_constraint_add;a._spine_array_constraint_add_all=Y.spine_array_constraint_add_all; +a._spine_array_constraint_clear_and_add_all=Y.spine_array_constraint_clear_and_add_all;a._spine_array_constraint_remove_at=Y.spine_array_constraint_remove_at;a._spine_array_constraint_contains=Y.spine_array_constraint_contains;a._spine_array_constraint_index_of=Y.spine_array_constraint_index_of;a._spine_array_constraint_buffer=Y.spine_array_constraint_buffer;a._spine_array_constraint_data_create=Y.spine_array_constraint_data_create;a._spine_array_constraint_data_create_with_capacity=Y.spine_array_constraint_data_create_with_capacity; +a._spine_array_constraint_data_dispose=Y.spine_array_constraint_data_dispose;a._spine_array_constraint_data_clear=Y.spine_array_constraint_data_clear;a._spine_array_constraint_data_get_capacity=Y.spine_array_constraint_data_get_capacity;a._spine_array_constraint_data_size=Y.spine_array_constraint_data_size;a._spine_array_constraint_data_set_size=Y.spine_array_constraint_data_set_size;a._spine_array_constraint_data_ensure_capacity=Y.spine_array_constraint_data_ensure_capacity; +a._spine_array_constraint_data_add=Y.spine_array_constraint_data_add;a._spine_array_constraint_data_add_all=Y.spine_array_constraint_data_add_all;a._spine_array_constraint_data_clear_and_add_all=Y.spine_array_constraint_data_clear_and_add_all;a._spine_array_constraint_data_remove_at=Y.spine_array_constraint_data_remove_at;a._spine_array_constraint_data_contains=Y.spine_array_constraint_data_contains;a._spine_array_constraint_data_index_of=Y.spine_array_constraint_data_index_of; +a._spine_array_constraint_data_buffer=Y.spine_array_constraint_data_buffer;a._spine_array_event_create=Y.spine_array_event_create;a._spine_array_event_create_with_capacity=Y.spine_array_event_create_with_capacity;a._spine_array_event_dispose=Y.spine_array_event_dispose;a._spine_array_event_clear=Y.spine_array_event_clear;a._spine_array_event_get_capacity=Y.spine_array_event_get_capacity;a._spine_array_event_size=Y.spine_array_event_size;a._spine_array_event_set_size=Y.spine_array_event_set_size; +a._spine_array_event_ensure_capacity=Y.spine_array_event_ensure_capacity;a._spine_array_event_add=Y.spine_array_event_add;a._spine_array_event_add_all=Y.spine_array_event_add_all;a._spine_array_event_clear_and_add_all=Y.spine_array_event_clear_and_add_all;a._spine_array_event_remove_at=Y.spine_array_event_remove_at;a._spine_array_event_contains=Y.spine_array_event_contains;a._spine_array_event_index_of=Y.spine_array_event_index_of;a._spine_array_event_buffer=Y.spine_array_event_buffer; +a._spine_array_event_data_create=Y.spine_array_event_data_create;a._spine_array_event_data_create_with_capacity=Y.spine_array_event_data_create_with_capacity;a._spine_array_event_data_dispose=Y.spine_array_event_data_dispose;a._spine_array_event_data_clear=Y.spine_array_event_data_clear;a._spine_array_event_data_get_capacity=Y.spine_array_event_data_get_capacity;a._spine_array_event_data_size=Y.spine_array_event_data_size;a._spine_array_event_data_set_size=Y.spine_array_event_data_set_size; +a._spine_array_event_data_ensure_capacity=Y.spine_array_event_data_ensure_capacity;a._spine_array_event_data_add=Y.spine_array_event_data_add;a._spine_array_event_data_add_all=Y.spine_array_event_data_add_all;a._spine_array_event_data_clear_and_add_all=Y.spine_array_event_data_clear_and_add_all;a._spine_array_event_data_remove_at=Y.spine_array_event_data_remove_at;a._spine_array_event_data_contains=Y.spine_array_event_data_contains;a._spine_array_event_data_index_of=Y.spine_array_event_data_index_of; +a._spine_array_event_data_buffer=Y.spine_array_event_data_buffer;a._spine_array_from_property_create=Y.spine_array_from_property_create;a._spine_array_from_property_create_with_capacity=Y.spine_array_from_property_create_with_capacity;a._spine_array_from_property_dispose=Y.spine_array_from_property_dispose;a._spine_array_from_property_clear=Y.spine_array_from_property_clear;a._spine_array_from_property_get_capacity=Y.spine_array_from_property_get_capacity;a._spine_array_from_property_size=Y.spine_array_from_property_size; +a._spine_array_from_property_set_size=Y.spine_array_from_property_set_size;a._spine_array_from_property_ensure_capacity=Y.spine_array_from_property_ensure_capacity;a._spine_array_from_property_add=Y.spine_array_from_property_add;a._spine_array_from_property_add_all=Y.spine_array_from_property_add_all;a._spine_array_from_property_clear_and_add_all=Y.spine_array_from_property_clear_and_add_all;a._spine_array_from_property_remove_at=Y.spine_array_from_property_remove_at; +a._spine_array_from_property_contains=Y.spine_array_from_property_contains;a._spine_array_from_property_index_of=Y.spine_array_from_property_index_of;a._spine_array_from_property_buffer=Y.spine_array_from_property_buffer;a._spine_array_physics_constraint_create=Y.spine_array_physics_constraint_create;a._spine_array_physics_constraint_create_with_capacity=Y.spine_array_physics_constraint_create_with_capacity;a._spine_array_physics_constraint_dispose=Y.spine_array_physics_constraint_dispose; +a._spine_array_physics_constraint_clear=Y.spine_array_physics_constraint_clear;a._spine_array_physics_constraint_get_capacity=Y.spine_array_physics_constraint_get_capacity;a._spine_array_physics_constraint_size=Y.spine_array_physics_constraint_size;a._spine_array_physics_constraint_set_size=Y.spine_array_physics_constraint_set_size;a._spine_array_physics_constraint_ensure_capacity=Y.spine_array_physics_constraint_ensure_capacity;a._spine_array_physics_constraint_add=Y.spine_array_physics_constraint_add; +a._spine_array_physics_constraint_add_all=Y.spine_array_physics_constraint_add_all;a._spine_array_physics_constraint_clear_and_add_all=Y.spine_array_physics_constraint_clear_and_add_all;a._spine_array_physics_constraint_remove_at=Y.spine_array_physics_constraint_remove_at;a._spine_array_physics_constraint_contains=Y.spine_array_physics_constraint_contains;a._spine_array_physics_constraint_index_of=Y.spine_array_physics_constraint_index_of;a._spine_array_physics_constraint_buffer=Y.spine_array_physics_constraint_buffer; +a._spine_array_polygon_create=Y.spine_array_polygon_create;a._spine_array_polygon_create_with_capacity=Y.spine_array_polygon_create_with_capacity;a._spine_array_polygon_dispose=Y.spine_array_polygon_dispose;a._spine_array_polygon_clear=Y.spine_array_polygon_clear;a._spine_array_polygon_get_capacity=Y.spine_array_polygon_get_capacity;a._spine_array_polygon_size=Y.spine_array_polygon_size;a._spine_array_polygon_set_size=Y.spine_array_polygon_set_size;a._spine_array_polygon_ensure_capacity=Y.spine_array_polygon_ensure_capacity; +a._spine_array_polygon_add=Y.spine_array_polygon_add;a._spine_array_polygon_add_all=Y.spine_array_polygon_add_all;a._spine_array_polygon_clear_and_add_all=Y.spine_array_polygon_clear_and_add_all;a._spine_array_polygon_remove_at=Y.spine_array_polygon_remove_at;a._spine_array_polygon_contains=Y.spine_array_polygon_contains;a._spine_array_polygon_index_of=Y.spine_array_polygon_index_of;a._spine_array_polygon_buffer=Y.spine_array_polygon_buffer;a._spine_array_skin_create=Y.spine_array_skin_create; +a._spine_array_skin_create_with_capacity=Y.spine_array_skin_create_with_capacity;a._spine_array_skin_dispose=Y.spine_array_skin_dispose;a._spine_array_skin_clear=Y.spine_array_skin_clear;a._spine_array_skin_get_capacity=Y.spine_array_skin_get_capacity;a._spine_array_skin_size=Y.spine_array_skin_size;a._spine_array_skin_set_size=Y.spine_array_skin_set_size;a._spine_array_skin_ensure_capacity=Y.spine_array_skin_ensure_capacity;a._spine_array_skin_add=Y.spine_array_skin_add; +a._spine_array_skin_add_all=Y.spine_array_skin_add_all;a._spine_array_skin_clear_and_add_all=Y.spine_array_skin_clear_and_add_all;a._spine_array_skin_remove_at=Y.spine_array_skin_remove_at;a._spine_array_skin_contains=Y.spine_array_skin_contains;a._spine_array_skin_index_of=Y.spine_array_skin_index_of;a._spine_array_skin_buffer=Y.spine_array_skin_buffer;a._spine_array_slot_create=Y.spine_array_slot_create;a._spine_array_slot_create_with_capacity=Y.spine_array_slot_create_with_capacity; +a._spine_array_slot_dispose=Y.spine_array_slot_dispose;a._spine_array_slot_clear=Y.spine_array_slot_clear;a._spine_array_slot_get_capacity=Y.spine_array_slot_get_capacity;a._spine_array_slot_size=Y.spine_array_slot_size;a._spine_array_slot_set_size=Y.spine_array_slot_set_size;a._spine_array_slot_ensure_capacity=Y.spine_array_slot_ensure_capacity;a._spine_array_slot_add=Y.spine_array_slot_add;a._spine_array_slot_add_all=Y.spine_array_slot_add_all;a._spine_array_slot_clear_and_add_all=Y.spine_array_slot_clear_and_add_all; +a._spine_array_slot_remove_at=Y.spine_array_slot_remove_at;a._spine_array_slot_contains=Y.spine_array_slot_contains;a._spine_array_slot_index_of=Y.spine_array_slot_index_of;a._spine_array_slot_buffer=Y.spine_array_slot_buffer;a._spine_array_slot_data_create=Y.spine_array_slot_data_create;a._spine_array_slot_data_create_with_capacity=Y.spine_array_slot_data_create_with_capacity;a._spine_array_slot_data_dispose=Y.spine_array_slot_data_dispose;a._spine_array_slot_data_clear=Y.spine_array_slot_data_clear; +a._spine_array_slot_data_get_capacity=Y.spine_array_slot_data_get_capacity;a._spine_array_slot_data_size=Y.spine_array_slot_data_size;a._spine_array_slot_data_set_size=Y.spine_array_slot_data_set_size;a._spine_array_slot_data_ensure_capacity=Y.spine_array_slot_data_ensure_capacity;a._spine_array_slot_data_add=Y.spine_array_slot_data_add;a._spine_array_slot_data_add_all=Y.spine_array_slot_data_add_all;a._spine_array_slot_data_clear_and_add_all=Y.spine_array_slot_data_clear_and_add_all; +a._spine_array_slot_data_remove_at=Y.spine_array_slot_data_remove_at;a._spine_array_slot_data_contains=Y.spine_array_slot_data_contains;a._spine_array_slot_data_index_of=Y.spine_array_slot_data_index_of;a._spine_array_slot_data_buffer=Y.spine_array_slot_data_buffer;a._spine_array_texture_region_create=Y.spine_array_texture_region_create;a._spine_array_texture_region_create_with_capacity=Y.spine_array_texture_region_create_with_capacity;a._spine_array_texture_region_dispose=Y.spine_array_texture_region_dispose; +a._spine_array_texture_region_clear=Y.spine_array_texture_region_clear;a._spine_array_texture_region_get_capacity=Y.spine_array_texture_region_get_capacity;a._spine_array_texture_region_size=Y.spine_array_texture_region_size;a._spine_array_texture_region_set_size=Y.spine_array_texture_region_set_size;a._spine_array_texture_region_ensure_capacity=Y.spine_array_texture_region_ensure_capacity;a._spine_array_texture_region_add=Y.spine_array_texture_region_add;a._spine_array_texture_region_add_all=Y.spine_array_texture_region_add_all; +a._spine_array_texture_region_clear_and_add_all=Y.spine_array_texture_region_clear_and_add_all;a._spine_array_texture_region_remove_at=Y.spine_array_texture_region_remove_at;a._spine_array_texture_region_contains=Y.spine_array_texture_region_contains;a._spine_array_texture_region_index_of=Y.spine_array_texture_region_index_of;a._spine_array_texture_region_buffer=Y.spine_array_texture_region_buffer;a._spine_array_timeline_create=Y.spine_array_timeline_create; +a._spine_array_timeline_create_with_capacity=Y.spine_array_timeline_create_with_capacity;a._spine_array_timeline_dispose=Y.spine_array_timeline_dispose;a._spine_array_timeline_clear=Y.spine_array_timeline_clear;a._spine_array_timeline_get_capacity=Y.spine_array_timeline_get_capacity;a._spine_array_timeline_size=Y.spine_array_timeline_size;a._spine_array_timeline_set_size=Y.spine_array_timeline_set_size;a._spine_array_timeline_ensure_capacity=Y.spine_array_timeline_ensure_capacity; +a._spine_array_timeline_add=Y.spine_array_timeline_add;a._spine_array_timeline_add_all=Y.spine_array_timeline_add_all;a._spine_array_timeline_clear_and_add_all=Y.spine_array_timeline_clear_and_add_all;a._spine_array_timeline_remove_at=Y.spine_array_timeline_remove_at;a._spine_array_timeline_contains=Y.spine_array_timeline_contains;a._spine_array_timeline_index_of=Y.spine_array_timeline_index_of;a._spine_array_timeline_buffer=Y.spine_array_timeline_buffer;a._spine_array_to_property_create=Y.spine_array_to_property_create; +a._spine_array_to_property_create_with_capacity=Y.spine_array_to_property_create_with_capacity;a._spine_array_to_property_dispose=Y.spine_array_to_property_dispose;a._spine_array_to_property_clear=Y.spine_array_to_property_clear;a._spine_array_to_property_get_capacity=Y.spine_array_to_property_get_capacity;a._spine_array_to_property_size=Y.spine_array_to_property_size;a._spine_array_to_property_set_size=Y.spine_array_to_property_set_size;a._spine_array_to_property_ensure_capacity=Y.spine_array_to_property_ensure_capacity; +a._spine_array_to_property_add=Y.spine_array_to_property_add;a._spine_array_to_property_add_all=Y.spine_array_to_property_add_all;a._spine_array_to_property_clear_and_add_all=Y.spine_array_to_property_clear_and_add_all;a._spine_array_to_property_remove_at=Y.spine_array_to_property_remove_at;a._spine_array_to_property_contains=Y.spine_array_to_property_contains;a._spine_array_to_property_index_of=Y.spine_array_to_property_index_of;a._spine_array_to_property_buffer=Y.spine_array_to_property_buffer; +a._spine_array_track_entry_create=Y.spine_array_track_entry_create;a._spine_array_track_entry_create_with_capacity=Y.spine_array_track_entry_create_with_capacity;a._spine_array_track_entry_dispose=Y.spine_array_track_entry_dispose;a._spine_array_track_entry_clear=Y.spine_array_track_entry_clear;a._spine_array_track_entry_get_capacity=Y.spine_array_track_entry_get_capacity;a._spine_array_track_entry_size=Y.spine_array_track_entry_size;a._spine_array_track_entry_set_size=Y.spine_array_track_entry_set_size; +a._spine_array_track_entry_ensure_capacity=Y.spine_array_track_entry_ensure_capacity;a._spine_array_track_entry_add=Y.spine_array_track_entry_add;a._spine_array_track_entry_add_all=Y.spine_array_track_entry_add_all;a._spine_array_track_entry_clear_and_add_all=Y.spine_array_track_entry_clear_and_add_all;a._spine_array_track_entry_remove_at=Y.spine_array_track_entry_remove_at;a._spine_array_track_entry_contains=Y.spine_array_track_entry_contains;a._spine_array_track_entry_index_of=Y.spine_array_track_entry_index_of; +a._spine_array_track_entry_buffer=Y.spine_array_track_entry_buffer;a._spine_array_update_create=Y.spine_array_update_create;a._spine_array_update_create_with_capacity=Y.spine_array_update_create_with_capacity;a._spine_array_update_dispose=Y.spine_array_update_dispose;a._spine_array_update_clear=Y.spine_array_update_clear;a._spine_array_update_get_capacity=Y.spine_array_update_get_capacity;a._spine_array_update_size=Y.spine_array_update_size;a._spine_array_update_set_size=Y.spine_array_update_set_size; +a._spine_array_update_ensure_capacity=Y.spine_array_update_ensure_capacity;a._spine_array_update_add=Y.spine_array_update_add;a._spine_array_update_add_all=Y.spine_array_update_add_all;a._spine_array_update_clear_and_add_all=Y.spine_array_update_clear_and_add_all;a._spine_array_update_remove_at=Y.spine_array_update_remove_at;a._spine_array_update_contains=Y.spine_array_update_contains;a._spine_array_update_index_of=Y.spine_array_update_index_of;a._spine_array_update_buffer=Y.spine_array_update_buffer; +a._spine_scale_timeline_create=Y.spine_scale_timeline_create;a._spine_scale_timeline_dispose=Y.spine_scale_timeline_dispose;a._spine_scale_timeline_get_rtti=Y.spine_scale_timeline_get_rtti;a._spine_scale_timeline_apply=Y.spine_scale_timeline_apply;a._spine_scale_timeline_get_bone_index=Y.spine_scale_timeline_get_bone_index;a._spine_scale_timeline_set_bone_index=Y.spine_scale_timeline_set_bone_index;a._spine_scale_timeline_set_frame=Y.spine_scale_timeline_set_frame; +a._spine_scale_timeline_set_linear=Y.spine_scale_timeline_set_linear;a._spine_scale_timeline_set_stepped=Y.spine_scale_timeline_set_stepped;a._spine_scale_timeline_set_bezier=Y.spine_scale_timeline_set_bezier;a._spine_scale_timeline_get_bezier_value=Y.spine_scale_timeline_get_bezier_value;a._spine_scale_timeline_get_curves=Y.spine_scale_timeline_get_curves;a._spine_scale_timeline_get_frame_entries=Y.spine_scale_timeline_get_frame_entries;a._spine_scale_timeline_get_frame_count=Y.spine_scale_timeline_get_frame_count; +a._spine_scale_timeline_get_frames=Y.spine_scale_timeline_get_frames;a._spine_scale_timeline_get_duration=Y.spine_scale_timeline_get_duration;a._spine_scale_timeline_get_property_ids=Y.spine_scale_timeline_get_property_ids;a._spine_scale_timeline_rtti=Y.spine_scale_timeline_rtti;a._spine_attachment_loader_dispose=Y.spine_attachment_loader_dispose;a._spine_attachment_loader_new_region_attachment=Y.spine_attachment_loader_new_region_attachment;a._spine_attachment_loader_new_mesh_attachment=Y.spine_attachment_loader_new_mesh_attachment; +a._spine_attachment_loader_new_bounding_box_attachment=Y.spine_attachment_loader_new_bounding_box_attachment;a._spine_attachment_loader_new_path_attachment=Y.spine_attachment_loader_new_path_attachment;a._spine_attachment_loader_new_point_attachment=Y.spine_attachment_loader_new_point_attachment;a._spine_attachment_loader_new_clipping_attachment=Y.spine_attachment_loader_new_clipping_attachment;a._spine_draw_order_timeline_create=Y.spine_draw_order_timeline_create; +a._spine_draw_order_timeline_dispose=Y.spine_draw_order_timeline_dispose;a._spine_draw_order_timeline_get_rtti=Y.spine_draw_order_timeline_get_rtti;a._spine_draw_order_timeline_apply=Y.spine_draw_order_timeline_apply;a._spine_draw_order_timeline_get_frame_count=Y.spine_draw_order_timeline_get_frame_count;a._spine_draw_order_timeline_set_frame=Y.spine_draw_order_timeline_set_frame;a._spine_draw_order_timeline_get_frame_entries=Y.spine_draw_order_timeline_get_frame_entries; +a._spine_draw_order_timeline_get_frames=Y.spine_draw_order_timeline_get_frames;a._spine_draw_order_timeline_get_duration=Y.spine_draw_order_timeline_get_duration;a._spine_draw_order_timeline_get_property_ids=Y.spine_draw_order_timeline_get_property_ids;a._spine_draw_order_timeline_rtti=Y.spine_draw_order_timeline_rtti;a._spine_physics_constraint_pose_create=Y.spine_physics_constraint_pose_create;a._spine_physics_constraint_pose_dispose=Y.spine_physics_constraint_pose_dispose; +a._spine_physics_constraint_pose_set=Y.spine_physics_constraint_pose_set;a._spine_physics_constraint_pose_get_inertia=Y.spine_physics_constraint_pose_get_inertia;a._spine_physics_constraint_pose_set_inertia=Y.spine_physics_constraint_pose_set_inertia;a._spine_physics_constraint_pose_get_strength=Y.spine_physics_constraint_pose_get_strength;a._spine_physics_constraint_pose_set_strength=Y.spine_physics_constraint_pose_set_strength;a._spine_physics_constraint_pose_get_damping=Y.spine_physics_constraint_pose_get_damping; +a._spine_physics_constraint_pose_set_damping=Y.spine_physics_constraint_pose_set_damping;a._spine_physics_constraint_pose_get_mass_inverse=Y.spine_physics_constraint_pose_get_mass_inverse;a._spine_physics_constraint_pose_set_mass_inverse=Y.spine_physics_constraint_pose_set_mass_inverse;a._spine_physics_constraint_pose_get_wind=Y.spine_physics_constraint_pose_get_wind;a._spine_physics_constraint_pose_set_wind=Y.spine_physics_constraint_pose_set_wind;a._spine_physics_constraint_pose_get_gravity=Y.spine_physics_constraint_pose_get_gravity; +a._spine_physics_constraint_pose_set_gravity=Y.spine_physics_constraint_pose_set_gravity;a._spine_physics_constraint_pose_get_mix=Y.spine_physics_constraint_pose_get_mix;a._spine_physics_constraint_pose_set_mix=Y.spine_physics_constraint_pose_set_mix;a._spine_posed_dispose=Y.spine_posed_dispose;a._spine_posed_constrained=Y.spine_posed_constrained;a._spine_posed_reset_constrained=Y.spine_posed_reset_constrained;a._spine_posed_is_pose_equal_to_applied=Y.spine_posed_is_pose_equal_to_applied; +a._spine_ik_constraint_data_create=Y.spine_ik_constraint_data_create;a._spine_ik_constraint_data_dispose=Y.spine_ik_constraint_data_dispose;a._spine_ik_constraint_data_get_rtti=Y.spine_ik_constraint_data_get_rtti;a._spine_ik_constraint_data_create_method=Y.spine_ik_constraint_data_create_method;a._spine_ik_constraint_data_get_bones=Y.spine_ik_constraint_data_get_bones;a._spine_ik_constraint_data_get_target=Y.spine_ik_constraint_data_get_target;a._spine_ik_constraint_data_set_target=Y.spine_ik_constraint_data_set_target; +a._spine_ik_constraint_data_get_uniform=Y.spine_ik_constraint_data_get_uniform;a._spine_ik_constraint_data_set_uniform=Y.spine_ik_constraint_data_set_uniform;a._spine_ik_constraint_data_get_name=Y.spine_ik_constraint_data_get_name;a._spine_ik_constraint_data_get_skin_required=Y.spine_ik_constraint_data_get_skin_required;a._spine_ik_constraint_data_get_setup_pose=Y.spine_ik_constraint_data_get_setup_pose;a._spine_ik_constraint_data_set_skin_required=Y.spine_ik_constraint_data_set_skin_required; +a._spine_ik_constraint_data_rtti=Y.spine_ik_constraint_data_rtti;a._spine_transform_constraint_data_create=Y.spine_transform_constraint_data_create;a._spine_transform_constraint_data_dispose=Y.spine_transform_constraint_data_dispose;a._spine_transform_constraint_data_get_rtti=Y.spine_transform_constraint_data_get_rtti;a._spine_transform_constraint_data_create_method=Y.spine_transform_constraint_data_create_method;a._spine_transform_constraint_data_get_bones=Y.spine_transform_constraint_data_get_bones; +a._spine_transform_constraint_data_get_source=Y.spine_transform_constraint_data_get_source;a._spine_transform_constraint_data_set_source=Y.spine_transform_constraint_data_set_source;a._spine_transform_constraint_data_get_offset_rotation=Y.spine_transform_constraint_data_get_offset_rotation;a._spine_transform_constraint_data_set_offset_rotation=Y.spine_transform_constraint_data_set_offset_rotation;a._spine_transform_constraint_data_get_offset_x=Y.spine_transform_constraint_data_get_offset_x; +a._spine_transform_constraint_data_set_offset_x=Y.spine_transform_constraint_data_set_offset_x;a._spine_transform_constraint_data_get_offset_y=Y.spine_transform_constraint_data_get_offset_y;a._spine_transform_constraint_data_set_offset_y=Y.spine_transform_constraint_data_set_offset_y;a._spine_transform_constraint_data_get_offset_scale_x=Y.spine_transform_constraint_data_get_offset_scale_x;a._spine_transform_constraint_data_set_offset_scale_x=Y.spine_transform_constraint_data_set_offset_scale_x; +a._spine_transform_constraint_data_get_offset_scale_y=Y.spine_transform_constraint_data_get_offset_scale_y;a._spine_transform_constraint_data_set_offset_scale_y=Y.spine_transform_constraint_data_set_offset_scale_y;a._spine_transform_constraint_data_get_offset_shear_y=Y.spine_transform_constraint_data_get_offset_shear_y;a._spine_transform_constraint_data_set_offset_shear_y=Y.spine_transform_constraint_data_set_offset_shear_y;a._spine_transform_constraint_data_get_local_source=Y.spine_transform_constraint_data_get_local_source; +a._spine_transform_constraint_data_set_local_source=Y.spine_transform_constraint_data_set_local_source;a._spine_transform_constraint_data_get_local_target=Y.spine_transform_constraint_data_get_local_target;a._spine_transform_constraint_data_set_local_target=Y.spine_transform_constraint_data_set_local_target;a._spine_transform_constraint_data_get_additive=Y.spine_transform_constraint_data_get_additive;a._spine_transform_constraint_data_set_additive=Y.spine_transform_constraint_data_set_additive; +a._spine_transform_constraint_data_get_clamp=Y.spine_transform_constraint_data_get_clamp;a._spine_transform_constraint_data_set_clamp=Y.spine_transform_constraint_data_set_clamp;a._spine_transform_constraint_data_get_properties=Y.spine_transform_constraint_data_get_properties;a._spine_transform_constraint_data_get_name=Y.spine_transform_constraint_data_get_name;a._spine_transform_constraint_data_get_skin_required=Y.spine_transform_constraint_data_get_skin_required; +a._spine_transform_constraint_data_get_setup_pose=Y.spine_transform_constraint_data_get_setup_pose;a._spine_transform_constraint_data_set_skin_required=Y.spine_transform_constraint_data_set_skin_required;a._spine_transform_constraint_data_rtti=Y.spine_transform_constraint_data_rtti;a._spine_to_shear_y_create=Y.spine_to_shear_y_create;a._spine_to_shear_y_dispose=Y.spine_to_shear_y_dispose;a._spine_to_shear_y_get_rtti=Y.spine_to_shear_y_get_rtti;a._spine_to_shear_y_mix=Y.spine_to_shear_y_mix; +a._spine_to_shear_y_apply=Y.spine_to_shear_y_apply;a._spine_to_shear_y_rtti=Y.spine_to_shear_y_rtti;a._spine_polygon_create=Y.spine_polygon_create;a._spine_polygon_dispose=Y.spine_polygon_dispose;a._spine_polygon_get__vertices=Y.spine_polygon_get__vertices;a._spine_polygon_set__vertices=Y.spine_polygon_set__vertices;a._spine_polygon_get__count=Y.spine_polygon_get__count;a._spine_polygon_set__count=Y.spine_polygon_set__count;a._spine_physics_constraint_damping_timeline_create=Y.spine_physics_constraint_damping_timeline_create; +a._spine_physics_constraint_damping_timeline_dispose=Y.spine_physics_constraint_damping_timeline_dispose;a._spine_physics_constraint_damping_timeline_get_rtti=Y.spine_physics_constraint_damping_timeline_get_rtti;a._spine_physics_constraint_damping_timeline_apply=Y.spine_physics_constraint_damping_timeline_apply;a._spine_physics_constraint_damping_timeline_get_constraint_index=Y.spine_physics_constraint_damping_timeline_get_constraint_index; +a._spine_physics_constraint_damping_timeline_set_constraint_index=Y.spine_physics_constraint_damping_timeline_set_constraint_index;a._spine_physics_constraint_damping_timeline_set_frame=Y.spine_physics_constraint_damping_timeline_set_frame;a._spine_physics_constraint_damping_timeline_get_curve_value=Y.spine_physics_constraint_damping_timeline_get_curve_value;a._spine_physics_constraint_damping_timeline_get_relative_value=Y.spine_physics_constraint_damping_timeline_get_relative_value; +a._spine_physics_constraint_damping_timeline_get_absolute_value_1=Y.spine_physics_constraint_damping_timeline_get_absolute_value_1;a._spine_physics_constraint_damping_timeline_get_absolute_value_2=Y.spine_physics_constraint_damping_timeline_get_absolute_value_2;a._spine_physics_constraint_damping_timeline_get_scale_value=Y.spine_physics_constraint_damping_timeline_get_scale_value;a._spine_physics_constraint_damping_timeline_set_linear=Y.spine_physics_constraint_damping_timeline_set_linear; +a._spine_physics_constraint_damping_timeline_set_stepped=Y.spine_physics_constraint_damping_timeline_set_stepped;a._spine_physics_constraint_damping_timeline_set_bezier=Y.spine_physics_constraint_damping_timeline_set_bezier;a._spine_physics_constraint_damping_timeline_get_bezier_value=Y.spine_physics_constraint_damping_timeline_get_bezier_value;a._spine_physics_constraint_damping_timeline_get_curves=Y.spine_physics_constraint_damping_timeline_get_curves; +a._spine_physics_constraint_damping_timeline_get_frame_entries=Y.spine_physics_constraint_damping_timeline_get_frame_entries;a._spine_physics_constraint_damping_timeline_get_frame_count=Y.spine_physics_constraint_damping_timeline_get_frame_count;a._spine_physics_constraint_damping_timeline_get_frames=Y.spine_physics_constraint_damping_timeline_get_frames;a._spine_physics_constraint_damping_timeline_get_duration=Y.spine_physics_constraint_damping_timeline_get_duration; +a._spine_physics_constraint_damping_timeline_get_property_ids=Y.spine_physics_constraint_damping_timeline_get_property_ids;a._spine_physics_constraint_damping_timeline_rtti=Y.spine_physics_constraint_damping_timeline_rtti;a._spine_slot_curve_timeline_dispose=Y.spine_slot_curve_timeline_dispose;a._spine_slot_curve_timeline_get_rtti=Y.spine_slot_curve_timeline_get_rtti;a._spine_slot_curve_timeline_apply=Y.spine_slot_curve_timeline_apply;a._spine_slot_curve_timeline_get_slot_index=Y.spine_slot_curve_timeline_get_slot_index; +a._spine_slot_curve_timeline_set_slot_index=Y.spine_slot_curve_timeline_set_slot_index;a._spine_slot_curve_timeline_set_linear=Y.spine_slot_curve_timeline_set_linear;a._spine_slot_curve_timeline_set_stepped=Y.spine_slot_curve_timeline_set_stepped;a._spine_slot_curve_timeline_set_bezier=Y.spine_slot_curve_timeline_set_bezier;a._spine_slot_curve_timeline_get_bezier_value=Y.spine_slot_curve_timeline_get_bezier_value;a._spine_slot_curve_timeline_get_curves=Y.spine_slot_curve_timeline_get_curves; +a._spine_slot_curve_timeline_get_frame_entries=Y.spine_slot_curve_timeline_get_frame_entries;a._spine_slot_curve_timeline_get_frame_count=Y.spine_slot_curve_timeline_get_frame_count;a._spine_slot_curve_timeline_get_frames=Y.spine_slot_curve_timeline_get_frames;a._spine_slot_curve_timeline_get_duration=Y.spine_slot_curve_timeline_get_duration;a._spine_slot_curve_timeline_get_property_ids=Y.spine_slot_curve_timeline_get_property_ids;a._spine_slot_curve_timeline_rtti=Y.spine_slot_curve_timeline_rtti; +a._spine_slot_create=Y.spine_slot_create;a._spine_slot_dispose=Y.spine_slot_dispose;a._spine_slot_get_bone=Y.spine_slot_get_bone;a._spine_slot_setup_pose=Y.spine_slot_setup_pose;a._spine_slot_get_data=Y.spine_slot_get_data;a._spine_slot_get_pose=Y.spine_slot_get_pose;a._spine_slot_get_applied_pose=Y.spine_slot_get_applied_pose;a._spine_slot_reset_constrained=Y.spine_slot_reset_constrained;a._spine_slot_constrained=Y.spine_slot_constrained;a._spine_slot_is_pose_equal_to_applied=Y.spine_slot_is_pose_equal_to_applied; +a._spine_path_constraint_data_create=Y.spine_path_constraint_data_create;a._spine_path_constraint_data_dispose=Y.spine_path_constraint_data_dispose;a._spine_path_constraint_data_get_rtti=Y.spine_path_constraint_data_get_rtti;a._spine_path_constraint_data_create_method=Y.spine_path_constraint_data_create_method;a._spine_path_constraint_data_get_bones=Y.spine_path_constraint_data_get_bones;a._spine_path_constraint_data_get_slot=Y.spine_path_constraint_data_get_slot; +a._spine_path_constraint_data_set_slot=Y.spine_path_constraint_data_set_slot;a._spine_path_constraint_data_get_position_mode=Y.spine_path_constraint_data_get_position_mode;a._spine_path_constraint_data_set_position_mode=Y.spine_path_constraint_data_set_position_mode;a._spine_path_constraint_data_get_spacing_mode=Y.spine_path_constraint_data_get_spacing_mode;a._spine_path_constraint_data_set_spacing_mode=Y.spine_path_constraint_data_set_spacing_mode;a._spine_path_constraint_data_get_rotate_mode=Y.spine_path_constraint_data_get_rotate_mode; +a._spine_path_constraint_data_set_rotate_mode=Y.spine_path_constraint_data_set_rotate_mode;a._spine_path_constraint_data_get_offset_rotation=Y.spine_path_constraint_data_get_offset_rotation;a._spine_path_constraint_data_set_offset_rotation=Y.spine_path_constraint_data_set_offset_rotation;a._spine_path_constraint_data_get_name=Y.spine_path_constraint_data_get_name;a._spine_path_constraint_data_get_skin_required=Y.spine_path_constraint_data_get_skin_required; +a._spine_path_constraint_data_get_setup_pose=Y.spine_path_constraint_data_get_setup_pose;a._spine_path_constraint_data_set_skin_required=Y.spine_path_constraint_data_set_skin_required;a._spine_path_constraint_data_rtti=Y.spine_path_constraint_data_rtti;a._spine_physics_constraint_strength_timeline_create=Y.spine_physics_constraint_strength_timeline_create;a._spine_physics_constraint_strength_timeline_dispose=Y.spine_physics_constraint_strength_timeline_dispose; +a._spine_physics_constraint_strength_timeline_get_rtti=Y.spine_physics_constraint_strength_timeline_get_rtti;a._spine_physics_constraint_strength_timeline_apply=Y.spine_physics_constraint_strength_timeline_apply;a._spine_physics_constraint_strength_timeline_get_constraint_index=Y.spine_physics_constraint_strength_timeline_get_constraint_index;a._spine_physics_constraint_strength_timeline_set_constraint_index=Y.spine_physics_constraint_strength_timeline_set_constraint_index; +a._spine_physics_constraint_strength_timeline_set_frame=Y.spine_physics_constraint_strength_timeline_set_frame;a._spine_physics_constraint_strength_timeline_get_curve_value=Y.spine_physics_constraint_strength_timeline_get_curve_value;a._spine_physics_constraint_strength_timeline_get_relative_value=Y.spine_physics_constraint_strength_timeline_get_relative_value;a._spine_physics_constraint_strength_timeline_get_absolute_value_1=Y.spine_physics_constraint_strength_timeline_get_absolute_value_1; +a._spine_physics_constraint_strength_timeline_get_absolute_value_2=Y.spine_physics_constraint_strength_timeline_get_absolute_value_2;a._spine_physics_constraint_strength_timeline_get_scale_value=Y.spine_physics_constraint_strength_timeline_get_scale_value;a._spine_physics_constraint_strength_timeline_set_linear=Y.spine_physics_constraint_strength_timeline_set_linear;a._spine_physics_constraint_strength_timeline_set_stepped=Y.spine_physics_constraint_strength_timeline_set_stepped; +a._spine_physics_constraint_strength_timeline_set_bezier=Y.spine_physics_constraint_strength_timeline_set_bezier;a._spine_physics_constraint_strength_timeline_get_bezier_value=Y.spine_physics_constraint_strength_timeline_get_bezier_value;a._spine_physics_constraint_strength_timeline_get_curves=Y.spine_physics_constraint_strength_timeline_get_curves;a._spine_physics_constraint_strength_timeline_get_frame_entries=Y.spine_physics_constraint_strength_timeline_get_frame_entries; +a._spine_physics_constraint_strength_timeline_get_frame_count=Y.spine_physics_constraint_strength_timeline_get_frame_count;a._spine_physics_constraint_strength_timeline_get_frames=Y.spine_physics_constraint_strength_timeline_get_frames;a._spine_physics_constraint_strength_timeline_get_duration=Y.spine_physics_constraint_strength_timeline_get_duration;a._spine_physics_constraint_strength_timeline_get_property_ids=Y.spine_physics_constraint_strength_timeline_get_property_ids; +a._spine_physics_constraint_strength_timeline_rtti=Y.spine_physics_constraint_strength_timeline_rtti;a._spine_vertex_attachment_dispose=Y.spine_vertex_attachment_dispose;a._spine_vertex_attachment_get_rtti=Y.spine_vertex_attachment_get_rtti;a._spine_vertex_attachment_compute_world_vertices_1=Y.spine_vertex_attachment_compute_world_vertices_1;a._spine_vertex_attachment_compute_world_vertices_2=Y.spine_vertex_attachment_compute_world_vertices_2;a._spine_vertex_attachment_get_id=Y.spine_vertex_attachment_get_id; +a._spine_vertex_attachment_get_bones=Y.spine_vertex_attachment_get_bones;a._spine_vertex_attachment_set_bones=Y.spine_vertex_attachment_set_bones;a._spine_vertex_attachment_get_vertices=Y.spine_vertex_attachment_get_vertices;a._spine_vertex_attachment_set_vertices=Y.spine_vertex_attachment_set_vertices;a._spine_vertex_attachment_get_world_vertices_length=Y.spine_vertex_attachment_get_world_vertices_length;a._spine_vertex_attachment_set_world_vertices_length=Y.spine_vertex_attachment_set_world_vertices_length; +a._spine_vertex_attachment_get_timeline_attachment=Y.spine_vertex_attachment_get_timeline_attachment;a._spine_vertex_attachment_set_timeline_attachment=Y.spine_vertex_attachment_set_timeline_attachment;a._spine_vertex_attachment_copy_to=Y.spine_vertex_attachment_copy_to;a._spine_vertex_attachment_get_name=Y.spine_vertex_attachment_get_name;a._spine_vertex_attachment_copy=Y.spine_vertex_attachment_copy;a._spine_vertex_attachment_get_ref_count=Y.spine_vertex_attachment_get_ref_count; +a._spine_vertex_attachment_reference=Y.spine_vertex_attachment_reference;a._spine_vertex_attachment_dereference=Y.spine_vertex_attachment_dereference;a._spine_vertex_attachment_rtti=Y.spine_vertex_attachment_rtti;a._spine_slider_timeline_create=Y.spine_slider_timeline_create;a._spine_slider_timeline_dispose=Y.spine_slider_timeline_dispose;a._spine_slider_timeline_get_rtti=Y.spine_slider_timeline_get_rtti;a._spine_slider_timeline_apply=Y.spine_slider_timeline_apply; +a._spine_slider_timeline_get_constraint_index=Y.spine_slider_timeline_get_constraint_index;a._spine_slider_timeline_set_constraint_index=Y.spine_slider_timeline_set_constraint_index;a._spine_slider_timeline_set_frame=Y.spine_slider_timeline_set_frame;a._spine_slider_timeline_get_curve_value=Y.spine_slider_timeline_get_curve_value;a._spine_slider_timeline_get_relative_value=Y.spine_slider_timeline_get_relative_value;a._spine_slider_timeline_get_absolute_value_1=Y.spine_slider_timeline_get_absolute_value_1; +a._spine_slider_timeline_get_absolute_value_2=Y.spine_slider_timeline_get_absolute_value_2;a._spine_slider_timeline_get_scale_value=Y.spine_slider_timeline_get_scale_value;a._spine_slider_timeline_set_linear=Y.spine_slider_timeline_set_linear;a._spine_slider_timeline_set_stepped=Y.spine_slider_timeline_set_stepped;a._spine_slider_timeline_set_bezier=Y.spine_slider_timeline_set_bezier;a._spine_slider_timeline_get_bezier_value=Y.spine_slider_timeline_get_bezier_value; +a._spine_slider_timeline_get_curves=Y.spine_slider_timeline_get_curves;a._spine_slider_timeline_get_frame_entries=Y.spine_slider_timeline_get_frame_entries;a._spine_slider_timeline_get_frame_count=Y.spine_slider_timeline_get_frame_count;a._spine_slider_timeline_get_frames=Y.spine_slider_timeline_get_frames;a._spine_slider_timeline_get_duration=Y.spine_slider_timeline_get_duration;a._spine_slider_timeline_get_property_ids=Y.spine_slider_timeline_get_property_ids;a._spine_slider_timeline_rtti=Y.spine_slider_timeline_rtti; +a._spine_path_constraint_create=Y.spine_path_constraint_create;a._spine_path_constraint_dispose=Y.spine_path_constraint_dispose;a._spine_path_constraint_get_rtti=Y.spine_path_constraint_get_rtti;a._spine_path_constraint_copy=Y.spine_path_constraint_copy;a._spine_path_constraint_update=Y.spine_path_constraint_update;a._spine_path_constraint_sort=Y.spine_path_constraint_sort;a._spine_path_constraint_is_source_active=Y.spine_path_constraint_is_source_active;a._spine_path_constraint_get_bones=Y.spine_path_constraint_get_bones; +a._spine_path_constraint_get_slot=Y.spine_path_constraint_get_slot;a._spine_path_constraint_set_slot=Y.spine_path_constraint_set_slot;a._spine_path_constraint_get_data=Y.spine_path_constraint_get_data;a._spine_path_constraint_get_pose=Y.spine_path_constraint_get_pose;a._spine_path_constraint_get_applied_pose=Y.spine_path_constraint_get_applied_pose;a._spine_path_constraint_reset_constrained=Y.spine_path_constraint_reset_constrained;a._spine_path_constraint_constrained=Y.spine_path_constraint_constrained; +a._spine_path_constraint_is_pose_equal_to_applied=Y.spine_path_constraint_is_pose_equal_to_applied;a._spine_path_constraint_is_active=Y.spine_path_constraint_is_active;a._spine_path_constraint_set_active=Y.spine_path_constraint_set_active;a._spine_path_constraint_rtti=Y.spine_path_constraint_rtti;a._spine_update_dispose=Y.spine_update_dispose;a._spine_update_get_rtti=Y.spine_update_get_rtti;a._spine_update_update=Y.spine_update_update;a._spine_update_rtti=Y.spine_update_rtti; +a._spine_curve_timeline1_dispose=Y.spine_curve_timeline1_dispose;a._spine_curve_timeline1_get_rtti=Y.spine_curve_timeline1_get_rtti;a._spine_curve_timeline1_set_frame=Y.spine_curve_timeline1_set_frame;a._spine_curve_timeline1_get_curve_value=Y.spine_curve_timeline1_get_curve_value;a._spine_curve_timeline1_get_relative_value=Y.spine_curve_timeline1_get_relative_value;a._spine_curve_timeline1_get_absolute_value_1=Y.spine_curve_timeline1_get_absolute_value_1; +a._spine_curve_timeline1_get_absolute_value_2=Y.spine_curve_timeline1_get_absolute_value_2;a._spine_curve_timeline1_get_scale_value=Y.spine_curve_timeline1_get_scale_value;a._spine_curve_timeline1_set_linear=Y.spine_curve_timeline1_set_linear;a._spine_curve_timeline1_set_stepped=Y.spine_curve_timeline1_set_stepped;a._spine_curve_timeline1_set_bezier=Y.spine_curve_timeline1_set_bezier;a._spine_curve_timeline1_get_bezier_value=Y.spine_curve_timeline1_get_bezier_value; +a._spine_curve_timeline1_get_curves=Y.spine_curve_timeline1_get_curves;a._spine_curve_timeline1_apply=Y.spine_curve_timeline1_apply;a._spine_curve_timeline1_get_frame_entries=Y.spine_curve_timeline1_get_frame_entries;a._spine_curve_timeline1_get_frame_count=Y.spine_curve_timeline1_get_frame_count;a._spine_curve_timeline1_get_frames=Y.spine_curve_timeline1_get_frames;a._spine_curve_timeline1_get_duration=Y.spine_curve_timeline1_get_duration;a._spine_curve_timeline1_get_property_ids=Y.spine_curve_timeline1_get_property_ids; +a._spine_curve_timeline1_rtti=Y.spine_curve_timeline1_rtti;a._spine_region_attachment_create=Y.spine_region_attachment_create;a._spine_region_attachment_dispose=Y.spine_region_attachment_dispose;a._spine_region_attachment_get_rtti=Y.spine_region_attachment_get_rtti;a._spine_region_attachment_update_region=Y.spine_region_attachment_update_region;a._spine_region_attachment_compute_world_vertices_1=Y.spine_region_attachment_compute_world_vertices_1; +a._spine_region_attachment_compute_world_vertices_2=Y.spine_region_attachment_compute_world_vertices_2;a._spine_region_attachment_get_x=Y.spine_region_attachment_get_x;a._spine_region_attachment_set_x=Y.spine_region_attachment_set_x;a._spine_region_attachment_get_y=Y.spine_region_attachment_get_y;a._spine_region_attachment_set_y=Y.spine_region_attachment_set_y;a._spine_region_attachment_get_rotation=Y.spine_region_attachment_get_rotation;a._spine_region_attachment_set_rotation=Y.spine_region_attachment_set_rotation; +a._spine_region_attachment_get_scale_x=Y.spine_region_attachment_get_scale_x;a._spine_region_attachment_set_scale_x=Y.spine_region_attachment_set_scale_x;a._spine_region_attachment_get_scale_y=Y.spine_region_attachment_get_scale_y;a._spine_region_attachment_set_scale_y=Y.spine_region_attachment_set_scale_y;a._spine_region_attachment_get_width=Y.spine_region_attachment_get_width;a._spine_region_attachment_set_width=Y.spine_region_attachment_set_width;a._spine_region_attachment_get_height=Y.spine_region_attachment_get_height; +a._spine_region_attachment_set_height=Y.spine_region_attachment_set_height;a._spine_region_attachment_get_color=Y.spine_region_attachment_get_color;a._spine_region_attachment_get_path=Y.spine_region_attachment_get_path;a._spine_region_attachment_set_path=Y.spine_region_attachment_set_path;a._spine_region_attachment_get_region=Y.spine_region_attachment_get_region;a._spine_region_attachment_set_region=Y.spine_region_attachment_set_region;a._spine_region_attachment_get_sequence=Y.spine_region_attachment_get_sequence; +a._spine_region_attachment_set_sequence=Y.spine_region_attachment_set_sequence;a._spine_region_attachment_get_offset=Y.spine_region_attachment_get_offset;a._spine_region_attachment_get_u_vs=Y.spine_region_attachment_get_u_vs;a._spine_region_attachment_copy=Y.spine_region_attachment_copy;a._spine_region_attachment_get_name=Y.spine_region_attachment_get_name;a._spine_region_attachment_get_ref_count=Y.spine_region_attachment_get_ref_count;a._spine_region_attachment_reference=Y.spine_region_attachment_reference; +a._spine_region_attachment_dereference=Y.spine_region_attachment_dereference;a._spine_region_attachment_rtti=Y.spine_region_attachment_rtti;a._spine_event_create=Y.spine_event_create;a._spine_event_dispose=Y.spine_event_dispose;a._spine_event_get_data=Y.spine_event_get_data;a._spine_event_get_time=Y.spine_event_get_time;a._spine_event_get_int=Y.spine_event_get_int;a._spine_event_set_int=Y.spine_event_set_int;a._spine_event_get_float=Y.spine_event_get_float;a._spine_event_set_float=Y.spine_event_set_float; +a._spine_event_get_string=Y.spine_event_get_string;a._spine_event_set_string=Y.spine_event_set_string;a._spine_event_get_volume=Y.spine_event_get_volume;a._spine_event_set_volume=Y.spine_event_set_volume;a._spine_event_get_balance=Y.spine_event_get_balance;a._spine_event_set_balance=Y.spine_event_set_balance;a._spine_atlas_region_create=Y.spine_atlas_region_create;a._spine_atlas_region_dispose=Y.spine_atlas_region_dispose;a._spine_atlas_region_get_rtti=Y.spine_atlas_region_get_rtti; +a._spine_atlas_region_get_page=Y.spine_atlas_region_get_page;a._spine_atlas_region_get_name=Y.spine_atlas_region_get_name;a._spine_atlas_region_get_index=Y.spine_atlas_region_get_index;a._spine_atlas_region_get_x=Y.spine_atlas_region_get_x;a._spine_atlas_region_get_y=Y.spine_atlas_region_get_y;a._spine_atlas_region_get_offset_x=Y.spine_atlas_region_get_offset_x;a._spine_atlas_region_get_offset_y=Y.spine_atlas_region_get_offset_y;a._spine_atlas_region_get_packed_width=Y.spine_atlas_region_get_packed_width; +a._spine_atlas_region_get_packed_height=Y.spine_atlas_region_get_packed_height;a._spine_atlas_region_get_original_width=Y.spine_atlas_region_get_original_width;a._spine_atlas_region_get_original_height=Y.spine_atlas_region_get_original_height;a._spine_atlas_region_get_rotate=Y.spine_atlas_region_get_rotate;a._spine_atlas_region_get_degrees=Y.spine_atlas_region_get_degrees;a._spine_atlas_region_get_splits=Y.spine_atlas_region_get_splits;a._spine_atlas_region_get_pads=Y.spine_atlas_region_get_pads; +a._spine_atlas_region_get_values=Y.spine_atlas_region_get_values;a._spine_atlas_region_set_page=Y.spine_atlas_region_set_page;a._spine_atlas_region_set_name=Y.spine_atlas_region_set_name;a._spine_atlas_region_set_index=Y.spine_atlas_region_set_index;a._spine_atlas_region_set_x=Y.spine_atlas_region_set_x;a._spine_atlas_region_set_y=Y.spine_atlas_region_set_y;a._spine_atlas_region_set_offset_x=Y.spine_atlas_region_set_offset_x;a._spine_atlas_region_set_offset_y=Y.spine_atlas_region_set_offset_y; +a._spine_atlas_region_set_packed_width=Y.spine_atlas_region_set_packed_width;a._spine_atlas_region_set_packed_height=Y.spine_atlas_region_set_packed_height;a._spine_atlas_region_set_original_width=Y.spine_atlas_region_set_original_width;a._spine_atlas_region_set_original_height=Y.spine_atlas_region_set_original_height;a._spine_atlas_region_set_rotate=Y.spine_atlas_region_set_rotate;a._spine_atlas_region_set_degrees=Y.spine_atlas_region_set_degrees;a._spine_atlas_region_set_splits=Y.spine_atlas_region_set_splits; +a._spine_atlas_region_set_pads=Y.spine_atlas_region_set_pads;a._spine_atlas_region_set_values=Y.spine_atlas_region_set_values;a._spine_atlas_region_get_u=Y.spine_atlas_region_get_u;a._spine_atlas_region_set_u=Y.spine_atlas_region_set_u;a._spine_atlas_region_get_v=Y.spine_atlas_region_get_v;a._spine_atlas_region_set_v=Y.spine_atlas_region_set_v;a._spine_atlas_region_get_u2=Y.spine_atlas_region_get_u2;a._spine_atlas_region_set_u2=Y.spine_atlas_region_set_u2;a._spine_atlas_region_get_v2=Y.spine_atlas_region_get_v2; +a._spine_atlas_region_set_v2=Y.spine_atlas_region_set_v2;a._spine_atlas_region_get_region_width=Y.spine_atlas_region_get_region_width;a._spine_atlas_region_set_region_width=Y.spine_atlas_region_set_region_width;a._spine_atlas_region_get_region_height=Y.spine_atlas_region_get_region_height;a._spine_atlas_region_set_region_height=Y.spine_atlas_region_set_region_height;a._spine_atlas_region_rtti=Y.spine_atlas_region_rtti;a._spine_constraint_data_dispose=Y.spine_constraint_data_dispose; +a._spine_constraint_data_get_rtti=Y.spine_constraint_data_get_rtti;a._spine_constraint_data_create_method=Y.spine_constraint_data_create_method;a._spine_constraint_data_get_name=Y.spine_constraint_data_get_name;a._spine_constraint_data_get_skin_required=Y.spine_constraint_data_get_skin_required;a._spine_constraint_data_rtti=Y.spine_constraint_data_rtti;a._spine_shear_x_timeline_create=Y.spine_shear_x_timeline_create;a._spine_shear_x_timeline_dispose=Y.spine_shear_x_timeline_dispose; +a._spine_shear_x_timeline_get_rtti=Y.spine_shear_x_timeline_get_rtti;a._spine_shear_x_timeline_apply=Y.spine_shear_x_timeline_apply;a._spine_shear_x_timeline_get_bone_index=Y.spine_shear_x_timeline_get_bone_index;a._spine_shear_x_timeline_set_bone_index=Y.spine_shear_x_timeline_set_bone_index;a._spine_shear_x_timeline_set_frame=Y.spine_shear_x_timeline_set_frame;a._spine_shear_x_timeline_get_curve_value=Y.spine_shear_x_timeline_get_curve_value;a._spine_shear_x_timeline_get_relative_value=Y.spine_shear_x_timeline_get_relative_value; +a._spine_shear_x_timeline_get_absolute_value_1=Y.spine_shear_x_timeline_get_absolute_value_1;a._spine_shear_x_timeline_get_absolute_value_2=Y.spine_shear_x_timeline_get_absolute_value_2;a._spine_shear_x_timeline_get_scale_value=Y.spine_shear_x_timeline_get_scale_value;a._spine_shear_x_timeline_set_linear=Y.spine_shear_x_timeline_set_linear;a._spine_shear_x_timeline_set_stepped=Y.spine_shear_x_timeline_set_stepped;a._spine_shear_x_timeline_set_bezier=Y.spine_shear_x_timeline_set_bezier; +a._spine_shear_x_timeline_get_bezier_value=Y.spine_shear_x_timeline_get_bezier_value;a._spine_shear_x_timeline_get_curves=Y.spine_shear_x_timeline_get_curves;a._spine_shear_x_timeline_get_frame_entries=Y.spine_shear_x_timeline_get_frame_entries;a._spine_shear_x_timeline_get_frame_count=Y.spine_shear_x_timeline_get_frame_count;a._spine_shear_x_timeline_get_frames=Y.spine_shear_x_timeline_get_frames;a._spine_shear_x_timeline_get_duration=Y.spine_shear_x_timeline_get_duration; +a._spine_shear_x_timeline_get_property_ids=Y.spine_shear_x_timeline_get_property_ids;a._spine_shear_x_timeline_rtti=Y.spine_shear_x_timeline_rtti;a._spine_from_scale_y_create=Y.spine_from_scale_y_create;a._spine_from_scale_y_dispose=Y.spine_from_scale_y_dispose;a._spine_from_scale_y_get_rtti=Y.spine_from_scale_y_get_rtti;a._spine_from_scale_y_value=Y.spine_from_scale_y_value;a._spine_from_scale_y_rtti=Y.spine_from_scale_y_rtti;a._spine_posed_active_dispose=Y.spine_posed_active_dispose; +a._spine_posed_active_is_active=Y.spine_posed_active_is_active;a._spine_posed_active_set_active=Y.spine_posed_active_set_active;a._spine_skeleton_data_create=Y.spine_skeleton_data_create;a._spine_skeleton_data_dispose=Y.spine_skeleton_data_dispose;a._spine_skeleton_data_find_bone=Y.spine_skeleton_data_find_bone;a._spine_skeleton_data_find_slot=Y.spine_skeleton_data_find_slot;a._spine_skeleton_data_find_skin=Y.spine_skeleton_data_find_skin;a._spine_skeleton_data_find_event=Y.spine_skeleton_data_find_event; +a._spine_skeleton_data_find_animation=Y.spine_skeleton_data_find_animation;a._spine_skeleton_data_get_name=Y.spine_skeleton_data_get_name;a._spine_skeleton_data_set_name=Y.spine_skeleton_data_set_name;a._spine_skeleton_data_get_bones=Y.spine_skeleton_data_get_bones;a._spine_skeleton_data_get_slots=Y.spine_skeleton_data_get_slots;a._spine_skeleton_data_get_skins=Y.spine_skeleton_data_get_skins;a._spine_skeleton_data_get_default_skin=Y.spine_skeleton_data_get_default_skin; +a._spine_skeleton_data_set_default_skin=Y.spine_skeleton_data_set_default_skin;a._spine_skeleton_data_get_events=Y.spine_skeleton_data_get_events;a._spine_skeleton_data_get_animations=Y.spine_skeleton_data_get_animations;a._spine_skeleton_data_get_constraints=Y.spine_skeleton_data_get_constraints;a._spine_skeleton_data_get_x=Y.spine_skeleton_data_get_x;a._spine_skeleton_data_set_x=Y.spine_skeleton_data_set_x;a._spine_skeleton_data_get_y=Y.spine_skeleton_data_get_y;a._spine_skeleton_data_set_y=Y.spine_skeleton_data_set_y; +a._spine_skeleton_data_get_width=Y.spine_skeleton_data_get_width;a._spine_skeleton_data_set_width=Y.spine_skeleton_data_set_width;a._spine_skeleton_data_get_height=Y.spine_skeleton_data_get_height;a._spine_skeleton_data_set_height=Y.spine_skeleton_data_set_height;a._spine_skeleton_data_get_reference_scale=Y.spine_skeleton_data_get_reference_scale;a._spine_skeleton_data_set_reference_scale=Y.spine_skeleton_data_set_reference_scale;a._spine_skeleton_data_get_version=Y.spine_skeleton_data_get_version; +a._spine_skeleton_data_set_version=Y.spine_skeleton_data_set_version;a._spine_skeleton_data_get_hash=Y.spine_skeleton_data_get_hash;a._spine_skeleton_data_set_hash=Y.spine_skeleton_data_set_hash;a._spine_skeleton_data_get_images_path=Y.spine_skeleton_data_get_images_path;a._spine_skeleton_data_set_images_path=Y.spine_skeleton_data_set_images_path;a._spine_skeleton_data_get_audio_path=Y.spine_skeleton_data_get_audio_path;a._spine_skeleton_data_set_audio_path=Y.spine_skeleton_data_set_audio_path; +a._spine_skeleton_data_get_fps=Y.spine_skeleton_data_get_fps;a._spine_skeleton_data_set_fps=Y.spine_skeleton_data_set_fps;a._spine_slider_create=Y.spine_slider_create;a._spine_slider_dispose=Y.spine_slider_dispose;a._spine_slider_get_rtti=Y.spine_slider_get_rtti;a._spine_slider_copy=Y.spine_slider_copy;a._spine_slider_update=Y.spine_slider_update;a._spine_slider_sort=Y.spine_slider_sort;a._spine_slider_is_source_active=Y.spine_slider_is_source_active;a._spine_slider_get_bone=Y.spine_slider_get_bone; +a._spine_slider_set_bone=Y.spine_slider_set_bone;a._spine_slider_get_data=Y.spine_slider_get_data;a._spine_slider_get_pose=Y.spine_slider_get_pose;a._spine_slider_get_applied_pose=Y.spine_slider_get_applied_pose;a._spine_slider_reset_constrained=Y.spine_slider_reset_constrained;a._spine_slider_constrained=Y.spine_slider_constrained;a._spine_slider_is_pose_equal_to_applied=Y.spine_slider_is_pose_equal_to_applied;a._spine_slider_is_active=Y.spine_slider_is_active;a._spine_slider_set_active=Y.spine_slider_set_active; +a._spine_slider_rtti=Y.spine_slider_rtti;a._spine_from_scale_x_create=Y.spine_from_scale_x_create;a._spine_from_scale_x_dispose=Y.spine_from_scale_x_dispose;a._spine_from_scale_x_get_rtti=Y.spine_from_scale_x_get_rtti;a._spine_from_scale_x_value=Y.spine_from_scale_x_value;a._spine_from_scale_x_rtti=Y.spine_from_scale_x_rtti;a._spine_rotate_timeline_create=Y.spine_rotate_timeline_create;a._spine_rotate_timeline_dispose=Y.spine_rotate_timeline_dispose;a._spine_rotate_timeline_get_rtti=Y.spine_rotate_timeline_get_rtti; +a._spine_rotate_timeline_apply=Y.spine_rotate_timeline_apply;a._spine_rotate_timeline_get_bone_index=Y.spine_rotate_timeline_get_bone_index;a._spine_rotate_timeline_set_bone_index=Y.spine_rotate_timeline_set_bone_index;a._spine_rotate_timeline_set_frame=Y.spine_rotate_timeline_set_frame;a._spine_rotate_timeline_get_curve_value=Y.spine_rotate_timeline_get_curve_value;a._spine_rotate_timeline_get_relative_value=Y.spine_rotate_timeline_get_relative_value; +a._spine_rotate_timeline_get_absolute_value_1=Y.spine_rotate_timeline_get_absolute_value_1;a._spine_rotate_timeline_get_absolute_value_2=Y.spine_rotate_timeline_get_absolute_value_2;a._spine_rotate_timeline_get_scale_value=Y.spine_rotate_timeline_get_scale_value;a._spine_rotate_timeline_set_linear=Y.spine_rotate_timeline_set_linear;a._spine_rotate_timeline_set_stepped=Y.spine_rotate_timeline_set_stepped;a._spine_rotate_timeline_set_bezier=Y.spine_rotate_timeline_set_bezier; +a._spine_rotate_timeline_get_bezier_value=Y.spine_rotate_timeline_get_bezier_value;a._spine_rotate_timeline_get_curves=Y.spine_rotate_timeline_get_curves;a._spine_rotate_timeline_get_frame_entries=Y.spine_rotate_timeline_get_frame_entries;a._spine_rotate_timeline_get_frame_count=Y.spine_rotate_timeline_get_frame_count;a._spine_rotate_timeline_get_frames=Y.spine_rotate_timeline_get_frames;a._spine_rotate_timeline_get_duration=Y.spine_rotate_timeline_get_duration; +a._spine_rotate_timeline_get_property_ids=Y.spine_rotate_timeline_get_property_ids;a._spine_rotate_timeline_rtti=Y.spine_rotate_timeline_rtti;a._spine_mesh_attachment_create=Y.spine_mesh_attachment_create;a._spine_mesh_attachment_dispose=Y.spine_mesh_attachment_dispose;a._spine_mesh_attachment_get_rtti=Y.spine_mesh_attachment_get_rtti;a._spine_mesh_attachment_compute_world_vertices_1=Y.spine_mesh_attachment_compute_world_vertices_1;a._spine_mesh_attachment_compute_world_vertices_2=Y.spine_mesh_attachment_compute_world_vertices_2; +a._spine_mesh_attachment_update_region=Y.spine_mesh_attachment_update_region;a._spine_mesh_attachment_get_hull_length=Y.spine_mesh_attachment_get_hull_length;a._spine_mesh_attachment_set_hull_length=Y.spine_mesh_attachment_set_hull_length;a._spine_mesh_attachment_get_region_u_vs=Y.spine_mesh_attachment_get_region_u_vs;a._spine_mesh_attachment_set_region_u_vs=Y.spine_mesh_attachment_set_region_u_vs;a._spine_mesh_attachment_get_u_vs=Y.spine_mesh_attachment_get_u_vs; +a._spine_mesh_attachment_get_triangles=Y.spine_mesh_attachment_get_triangles;a._spine_mesh_attachment_set_triangles=Y.spine_mesh_attachment_set_triangles;a._spine_mesh_attachment_get_color=Y.spine_mesh_attachment_get_color;a._spine_mesh_attachment_get_path=Y.spine_mesh_attachment_get_path;a._spine_mesh_attachment_set_path=Y.spine_mesh_attachment_set_path;a._spine_mesh_attachment_get_region=Y.spine_mesh_attachment_get_region;a._spine_mesh_attachment_set_region=Y.spine_mesh_attachment_set_region; +a._spine_mesh_attachment_get_sequence=Y.spine_mesh_attachment_get_sequence;a._spine_mesh_attachment_set_sequence=Y.spine_mesh_attachment_set_sequence;a._spine_mesh_attachment_get_parent_mesh=Y.spine_mesh_attachment_get_parent_mesh;a._spine_mesh_attachment_set_parent_mesh=Y.spine_mesh_attachment_set_parent_mesh;a._spine_mesh_attachment_get_edges=Y.spine_mesh_attachment_get_edges;a._spine_mesh_attachment_set_edges=Y.spine_mesh_attachment_set_edges;a._spine_mesh_attachment_get_width=Y.spine_mesh_attachment_get_width; +a._spine_mesh_attachment_set_width=Y.spine_mesh_attachment_set_width;a._spine_mesh_attachment_get_height=Y.spine_mesh_attachment_get_height;a._spine_mesh_attachment_set_height=Y.spine_mesh_attachment_set_height;a._spine_mesh_attachment_copy=Y.spine_mesh_attachment_copy;a._spine_mesh_attachment_new_linked_mesh=Y.spine_mesh_attachment_new_linked_mesh;a._spine_mesh_attachment_get_id=Y.spine_mesh_attachment_get_id;a._spine_mesh_attachment_get_bones=Y.spine_mesh_attachment_get_bones; +a._spine_mesh_attachment_set_bones=Y.spine_mesh_attachment_set_bones;a._spine_mesh_attachment_get_vertices=Y.spine_mesh_attachment_get_vertices;a._spine_mesh_attachment_set_vertices=Y.spine_mesh_attachment_set_vertices;a._spine_mesh_attachment_get_world_vertices_length=Y.spine_mesh_attachment_get_world_vertices_length;a._spine_mesh_attachment_set_world_vertices_length=Y.spine_mesh_attachment_set_world_vertices_length;a._spine_mesh_attachment_get_timeline_attachment=Y.spine_mesh_attachment_get_timeline_attachment; +a._spine_mesh_attachment_set_timeline_attachment=Y.spine_mesh_attachment_set_timeline_attachment;a._spine_mesh_attachment_copy_to=Y.spine_mesh_attachment_copy_to;a._spine_mesh_attachment_get_name=Y.spine_mesh_attachment_get_name;a._spine_mesh_attachment_get_ref_count=Y.spine_mesh_attachment_get_ref_count;a._spine_mesh_attachment_reference=Y.spine_mesh_attachment_reference;a._spine_mesh_attachment_dereference=Y.spine_mesh_attachment_dereference;a._spine_mesh_attachment_rtti=Y.spine_mesh_attachment_rtti; +a._spine_skeleton_bounds_create=Y.spine_skeleton_bounds_create;a._spine_skeleton_bounds_dispose=Y.spine_skeleton_bounds_dispose;a._spine_skeleton_bounds_update=Y.spine_skeleton_bounds_update;a._spine_skeleton_bounds_aabb_contains_point=Y.spine_skeleton_bounds_aabb_contains_point;a._spine_skeleton_bounds_aabb_intersects_segment=Y.spine_skeleton_bounds_aabb_intersects_segment;a._spine_skeleton_bounds_aabb_intersects_skeleton=Y.spine_skeleton_bounds_aabb_intersects_skeleton; +a._spine_skeleton_bounds_contains_point_1=Y.spine_skeleton_bounds_contains_point_1;a._spine_skeleton_bounds_contains_point_2=Y.spine_skeleton_bounds_contains_point_2;a._spine_skeleton_bounds_intersects_segment_1=Y.spine_skeleton_bounds_intersects_segment_1;a._spine_skeleton_bounds_intersects_segment_2=Y.spine_skeleton_bounds_intersects_segment_2;a._spine_skeleton_bounds_get_polygon=Y.spine_skeleton_bounds_get_polygon;a._spine_skeleton_bounds_get_bounding_box=Y.spine_skeleton_bounds_get_bounding_box; +a._spine_skeleton_bounds_get_polygons=Y.spine_skeleton_bounds_get_polygons;a._spine_skeleton_bounds_get_bounding_boxes=Y.spine_skeleton_bounds_get_bounding_boxes;a._spine_skeleton_bounds_get_min_x=Y.spine_skeleton_bounds_get_min_x;a._spine_skeleton_bounds_get_min_y=Y.spine_skeleton_bounds_get_min_y;a._spine_skeleton_bounds_get_max_x=Y.spine_skeleton_bounds_get_max_x;a._spine_skeleton_bounds_get_max_y=Y.spine_skeleton_bounds_get_max_y;a._spine_skeleton_bounds_get_width=Y.spine_skeleton_bounds_get_width; +a._spine_skeleton_bounds_get_height=Y.spine_skeleton_bounds_get_height;a._spine_atlas_page_create=Y.spine_atlas_page_create;a._spine_atlas_page_dispose=Y.spine_atlas_page_dispose;a._spine_atlas_page_get_name=Y.spine_atlas_page_get_name;a._spine_atlas_page_set_name=Y.spine_atlas_page_set_name;a._spine_atlas_page_get_texture_path=Y.spine_atlas_page_get_texture_path;a._spine_atlas_page_set_texture_path=Y.spine_atlas_page_set_texture_path;a._spine_atlas_page_get_format=Y.spine_atlas_page_get_format; +a._spine_atlas_page_set_format=Y.spine_atlas_page_set_format;a._spine_atlas_page_get_min_filter=Y.spine_atlas_page_get_min_filter;a._spine_atlas_page_set_min_filter=Y.spine_atlas_page_set_min_filter;a._spine_atlas_page_get_mag_filter=Y.spine_atlas_page_get_mag_filter;a._spine_atlas_page_set_mag_filter=Y.spine_atlas_page_set_mag_filter;a._spine_atlas_page_get_u_wrap=Y.spine_atlas_page_get_u_wrap;a._spine_atlas_page_set_u_wrap=Y.spine_atlas_page_set_u_wrap;a._spine_atlas_page_get_v_wrap=Y.spine_atlas_page_get_v_wrap; +a._spine_atlas_page_set_v_wrap=Y.spine_atlas_page_set_v_wrap;a._spine_atlas_page_get_width=Y.spine_atlas_page_get_width;a._spine_atlas_page_set_width=Y.spine_atlas_page_set_width;a._spine_atlas_page_get_height=Y.spine_atlas_page_get_height;a._spine_atlas_page_set_height=Y.spine_atlas_page_set_height;a._spine_atlas_page_get_pma=Y.spine_atlas_page_get_pma;a._spine_atlas_page_set_pma=Y.spine_atlas_page_set_pma;a._spine_atlas_page_get_index=Y.spine_atlas_page_get_index;a._spine_atlas_page_set_index=Y.spine_atlas_page_set_index; +a._spine_atlas_page_get_texture=Y.spine_atlas_page_get_texture;a._spine_atlas_page_set_texture=Y.spine_atlas_page_set_texture;a._spine_physics_constraint_inertia_timeline_create=Y.spine_physics_constraint_inertia_timeline_create;a._spine_physics_constraint_inertia_timeline_dispose=Y.spine_physics_constraint_inertia_timeline_dispose;a._spine_physics_constraint_inertia_timeline_get_rtti=Y.spine_physics_constraint_inertia_timeline_get_rtti;a._spine_physics_constraint_inertia_timeline_apply=Y.spine_physics_constraint_inertia_timeline_apply; +a._spine_physics_constraint_inertia_timeline_get_constraint_index=Y.spine_physics_constraint_inertia_timeline_get_constraint_index;a._spine_physics_constraint_inertia_timeline_set_constraint_index=Y.spine_physics_constraint_inertia_timeline_set_constraint_index;a._spine_physics_constraint_inertia_timeline_set_frame=Y.spine_physics_constraint_inertia_timeline_set_frame;a._spine_physics_constraint_inertia_timeline_get_curve_value=Y.spine_physics_constraint_inertia_timeline_get_curve_value; +a._spine_physics_constraint_inertia_timeline_get_relative_value=Y.spine_physics_constraint_inertia_timeline_get_relative_value;a._spine_physics_constraint_inertia_timeline_get_absolute_value_1=Y.spine_physics_constraint_inertia_timeline_get_absolute_value_1;a._spine_physics_constraint_inertia_timeline_get_absolute_value_2=Y.spine_physics_constraint_inertia_timeline_get_absolute_value_2;a._spine_physics_constraint_inertia_timeline_get_scale_value=Y.spine_physics_constraint_inertia_timeline_get_scale_value; +a._spine_physics_constraint_inertia_timeline_set_linear=Y.spine_physics_constraint_inertia_timeline_set_linear;a._spine_physics_constraint_inertia_timeline_set_stepped=Y.spine_physics_constraint_inertia_timeline_set_stepped;a._spine_physics_constraint_inertia_timeline_set_bezier=Y.spine_physics_constraint_inertia_timeline_set_bezier;a._spine_physics_constraint_inertia_timeline_get_bezier_value=Y.spine_physics_constraint_inertia_timeline_get_bezier_value; +a._spine_physics_constraint_inertia_timeline_get_curves=Y.spine_physics_constraint_inertia_timeline_get_curves;a._spine_physics_constraint_inertia_timeline_get_frame_entries=Y.spine_physics_constraint_inertia_timeline_get_frame_entries;a._spine_physics_constraint_inertia_timeline_get_frame_count=Y.spine_physics_constraint_inertia_timeline_get_frame_count;a._spine_physics_constraint_inertia_timeline_get_frames=Y.spine_physics_constraint_inertia_timeline_get_frames; +a._spine_physics_constraint_inertia_timeline_get_duration=Y.spine_physics_constraint_inertia_timeline_get_duration;a._spine_physics_constraint_inertia_timeline_get_property_ids=Y.spine_physics_constraint_inertia_timeline_get_property_ids;a._spine_physics_constraint_inertia_timeline_rtti=Y.spine_physics_constraint_inertia_timeline_rtti;a._spine_animation_state_data_create=Y.spine_animation_state_data_create;a._spine_animation_state_data_dispose=Y.spine_animation_state_data_dispose; +a._spine_animation_state_data_get_skeleton_data=Y.spine_animation_state_data_get_skeleton_data;a._spine_animation_state_data_get_default_mix=Y.spine_animation_state_data_get_default_mix;a._spine_animation_state_data_set_default_mix=Y.spine_animation_state_data_set_default_mix;a._spine_animation_state_data_set_mix_1=Y.spine_animation_state_data_set_mix_1;a._spine_animation_state_data_set_mix_2=Y.spine_animation_state_data_set_mix_2;a._spine_animation_state_data_get_mix=Y.spine_animation_state_data_get_mix; +a._spine_animation_state_data_clear=Y.spine_animation_state_data_clear;a._spine_shear_y_timeline_create=Y.spine_shear_y_timeline_create;a._spine_shear_y_timeline_dispose=Y.spine_shear_y_timeline_dispose;a._spine_shear_y_timeline_get_rtti=Y.spine_shear_y_timeline_get_rtti;a._spine_shear_y_timeline_apply=Y.spine_shear_y_timeline_apply;a._spine_shear_y_timeline_get_bone_index=Y.spine_shear_y_timeline_get_bone_index;a._spine_shear_y_timeline_set_bone_index=Y.spine_shear_y_timeline_set_bone_index; +a._spine_shear_y_timeline_set_frame=Y.spine_shear_y_timeline_set_frame;a._spine_shear_y_timeline_get_curve_value=Y.spine_shear_y_timeline_get_curve_value;a._spine_shear_y_timeline_get_relative_value=Y.spine_shear_y_timeline_get_relative_value;a._spine_shear_y_timeline_get_absolute_value_1=Y.spine_shear_y_timeline_get_absolute_value_1;a._spine_shear_y_timeline_get_absolute_value_2=Y.spine_shear_y_timeline_get_absolute_value_2;a._spine_shear_y_timeline_get_scale_value=Y.spine_shear_y_timeline_get_scale_value; +a._spine_shear_y_timeline_set_linear=Y.spine_shear_y_timeline_set_linear;a._spine_shear_y_timeline_set_stepped=Y.spine_shear_y_timeline_set_stepped;a._spine_shear_y_timeline_set_bezier=Y.spine_shear_y_timeline_set_bezier;a._spine_shear_y_timeline_get_bezier_value=Y.spine_shear_y_timeline_get_bezier_value;a._spine_shear_y_timeline_get_curves=Y.spine_shear_y_timeline_get_curves;a._spine_shear_y_timeline_get_frame_entries=Y.spine_shear_y_timeline_get_frame_entries; +a._spine_shear_y_timeline_get_frame_count=Y.spine_shear_y_timeline_get_frame_count;a._spine_shear_y_timeline_get_frames=Y.spine_shear_y_timeline_get_frames;a._spine_shear_y_timeline_get_duration=Y.spine_shear_y_timeline_get_duration;a._spine_shear_y_timeline_get_property_ids=Y.spine_shear_y_timeline_get_property_ids;a._spine_shear_y_timeline_rtti=Y.spine_shear_y_timeline_rtti;a._spine_event_data_create=Y.spine_event_data_create;a._spine_event_data_dispose=Y.spine_event_data_dispose; +a._spine_event_data_get_name=Y.spine_event_data_get_name;a._spine_event_data_get_int=Y.spine_event_data_get_int;a._spine_event_data_set_int=Y.spine_event_data_set_int;a._spine_event_data_get_float=Y.spine_event_data_get_float;a._spine_event_data_set_float=Y.spine_event_data_set_float;a._spine_event_data_get_string=Y.spine_event_data_get_string;a._spine_event_data_set_string=Y.spine_event_data_set_string;a._spine_event_data_get_audio_path=Y.spine_event_data_get_audio_path; +a._spine_event_data_set_audio_path=Y.spine_event_data_set_audio_path;a._spine_event_data_get_volume=Y.spine_event_data_get_volume;a._spine_event_data_set_volume=Y.spine_event_data_set_volume;a._spine_event_data_get_balance=Y.spine_event_data_get_balance;a._spine_event_data_set_balance=Y.spine_event_data_set_balance;a._spine_constraint_timeline1_dispose=Y.spine_constraint_timeline1_dispose;a._spine_constraint_timeline1_get_rtti=Y.spine_constraint_timeline1_get_rtti; +a._spine_constraint_timeline1_get_constraint_index=Y.spine_constraint_timeline1_get_constraint_index;a._spine_constraint_timeline1_set_constraint_index=Y.spine_constraint_timeline1_set_constraint_index;a._spine_constraint_timeline1_set_frame=Y.spine_constraint_timeline1_set_frame;a._spine_constraint_timeline1_get_curve_value=Y.spine_constraint_timeline1_get_curve_value;a._spine_constraint_timeline1_get_relative_value=Y.spine_constraint_timeline1_get_relative_value; +a._spine_constraint_timeline1_get_absolute_value_1=Y.spine_constraint_timeline1_get_absolute_value_1;a._spine_constraint_timeline1_get_absolute_value_2=Y.spine_constraint_timeline1_get_absolute_value_2;a._spine_constraint_timeline1_get_scale_value=Y.spine_constraint_timeline1_get_scale_value;a._spine_constraint_timeline1_set_linear=Y.spine_constraint_timeline1_set_linear;a._spine_constraint_timeline1_set_stepped=Y.spine_constraint_timeline1_set_stepped;a._spine_constraint_timeline1_set_bezier=Y.spine_constraint_timeline1_set_bezier; +a._spine_constraint_timeline1_get_bezier_value=Y.spine_constraint_timeline1_get_bezier_value;a._spine_constraint_timeline1_get_curves=Y.spine_constraint_timeline1_get_curves;a._spine_constraint_timeline1_apply=Y.spine_constraint_timeline1_apply;a._spine_constraint_timeline1_get_frame_entries=Y.spine_constraint_timeline1_get_frame_entries;a._spine_constraint_timeline1_get_frame_count=Y.spine_constraint_timeline1_get_frame_count;a._spine_constraint_timeline1_get_frames=Y.spine_constraint_timeline1_get_frames; +a._spine_constraint_timeline1_get_duration=Y.spine_constraint_timeline1_get_duration;a._spine_constraint_timeline1_get_property_ids=Y.spine_constraint_timeline1_get_property_ids;a._spine_constraint_timeline1_rtti=Y.spine_constraint_timeline1_rtti;a._spine_slider_data_create=Y.spine_slider_data_create;a._spine_slider_data_dispose=Y.spine_slider_data_dispose;a._spine_slider_data_get_rtti=Y.spine_slider_data_get_rtti;a._spine_slider_data_create_method=Y.spine_slider_data_create_method; +a._spine_slider_data_get_animation=Y.spine_slider_data_get_animation;a._spine_slider_data_set_animation=Y.spine_slider_data_set_animation;a._spine_slider_data_get_additive=Y.spine_slider_data_get_additive;a._spine_slider_data_set_additive=Y.spine_slider_data_set_additive;a._spine_slider_data_get_loop=Y.spine_slider_data_get_loop;a._spine_slider_data_set_loop=Y.spine_slider_data_set_loop;a._spine_slider_data_get_bone=Y.spine_slider_data_get_bone;a._spine_slider_data_set_bone=Y.spine_slider_data_set_bone; +a._spine_slider_data_get_property=Y.spine_slider_data_get_property;a._spine_slider_data_set_property=Y.spine_slider_data_set_property;a._spine_slider_data_get_scale=Y.spine_slider_data_get_scale;a._spine_slider_data_set_scale=Y.spine_slider_data_set_scale;a._spine_slider_data_get_offset=Y.spine_slider_data_get_offset;a._spine_slider_data_set_offset=Y.spine_slider_data_set_offset;a._spine_slider_data_get_local=Y.spine_slider_data_get_local;a._spine_slider_data_set_local=Y.spine_slider_data_set_local; +a._spine_slider_data_get_name=Y.spine_slider_data_get_name;a._spine_slider_data_get_skin_required=Y.spine_slider_data_get_skin_required;a._spine_slider_data_get_setup_pose=Y.spine_slider_data_get_setup_pose;a._spine_slider_data_set_skin_required=Y.spine_slider_data_set_skin_required;a._spine_slider_data_rtti=Y.spine_slider_data_rtti;a._malloc=Y.malloc;a._free=Y.free;var ha=Y._emscripten_stack_restore,ia=Y.emscripten_stack_get_current;a.wasmExports=Y; function Z(){0XLh97nPKki zYK9-7Rn9r*oO8|rNhs%>bIxHUl=Z5*tNL_2_m1(ug57&geO+B$T~%Ej&N-shS(*_- zWVR_T-XybSX3I_TTf!f)Ndf=C>kM4Td+-$K$AIk@dipE+o_q2rU43=V)ghhaFJ5WTi6V!tptA~Owtf7e}Z&y56Dtg_!E9t)lGFFi*wCesJfK= z07IVm7xojt0fr3Wf5b#yfLI_6a)aC1EkQZ(7eKSr6e%yZ5b2rUNfrEl%gpcb_wTSf zf452YcldX4%ijSiQ6y=Bee!@Myr~QXNZBo=V7~)&1{;D!eh>1p&f!)T8h`|83($n$W4A)f^JpDF$*F&U z6KDhO{4P6`&$Y*wHwFe;olbjddSJLUIwmrBuQJeDJOOt$?T9r$yLqcKI?x$!O?H+{ zOb<*>wU>{!H(#qfJT$QR)aZ0uNG_jkFYOFYjZRLt#|Ng`ozdU62bQ#3lS1U~pLg%P zHFL#cZq1y?<>5vdO29whhow>}mn(@vVFCO>Y9^npXUc_oy#QCM047(=6>3%fuPFYa z2;~aJ(y9$n00uQt1WvhP`EP+qq4IZdnadRlxk4_7{6z`=D-_D*x)7^;O%ygjMxT{` z)tTpK|GHMK7OU_FI2MZKzyHEt{^dXXV-ZT$p$4o3SQUyzAc{h%Bt$U>-0)7{XNpBA zRIF9YMXZN8s(%q~{D%eLPkAkDfDq+kc~Mc+;m+ra*(_WY%U>@ROTegF$`$hYzxkUl zf1_HeRiQOdvJQ=dKSl+$TJ3Z2=L=t`e)hA_CSYDhVe!BGs-o~sR7)9(ltJ)1a7R^F zWs^#U&;B(w3~y%2py`5u#unE87Tzm?1n>v?M2LCwKy~oHVliLH<-eF!Vgsjg2^w77 z@Jrt=!T&@bR#I9OTL27Df`ZZ&{shsgH56Nb-g7lz0qlgRm+>FuUMzp7_~kZ0<;5vN^pgg+?NYgXx3l-RZ(E`phM_~{PmN<_u<|@{ZkR_ zp!fgK%;x?dsBcwl3pPUjjlbYODJC>62LhL{uTj(37ErQm!78h$mj3|Is2V6O|6p^f z*f{kE+FBB_)ld$4uT(PnpX!1;a2vRSFktp@SF%=oL6Z7czEt|gSHASqQmIx03jRR= zh$i~`*TH|_TJ;$=0!LzL@3+vuO`g$%kImr+HqIQ&-vQv}K32ZRf_ z29QK5rQlDvk#8&#VY+CvV>f) zY78ezbr2xHDX|d+_ z|1t?iBg>)=AufxUdKnzBzh7imHPrsaFG_AD6isrgm!-(c#6))WZ&p?X1pK#g0hxRk zybNV6Lkx(v0z0qNP~}KBja5-p=q~j?Xn^qt82?4zXPo~*WjSmJ{DFdCHu-vSJ!hWF5Jp|`RD)kzdl{aXa5E+u!Wft2#0?JC^x_Ex;UaB zk9^~Ap+FgbLU%zU;U6^4##&%svHpS@U_7Ef*+%2jCH${X|AW@~#m46$DE@DVK&S$d z`^uMcdFcs>?E?eZR%lHAd#j5){0}tsb@{81TXW6TR-3f$o%IjKZg6?7ytFuHGcJL>`}1LTxpH3{@;N$ zHYpUoy2cu7w6LiVmot;%52ZpWli51EVnw!ChGD;XE_o8FaJexX?y9!)NEFK zYG42c@udTUt+BCz!Rd*qj>!K-XL5ABJ+QR3>BQ8)^7d3`bYff-`R?eraksRl!nVg- zi^tjnL+!=OMh4n5Fx1OJ|DN0{FI^LR^6@T&N5W*Mo zFT237VzJ7C6co$6>K9$mRBLnDF@sa>7UW}}i2|nD<3sH!@ma4`%z^9poYyKwpx#+q zV&31zL_t_0F# zwX`kfg-f@lr(1(dmV!dWYMv^$)0f zgBZ4fb;$FBAhe)$|3*n11eiJ!%`_yi(%KY1BpZ+N>`b->N5@CRdTBsp$-p0drHhnH zM`s46CS*`qKMjja4eXC8szoJ5?2OnT4aO{I#D-}w)FpD86+cOXF}GRq)74a)ho>f% zQriZo>wiYhVUl!@Q%EprSohTQ^r+Z~JjWz1Z;dT$i+?6ZG%2#kzpP=H^z`V`_82A! zT-(MJKBU`ds;=)}$wqy$yrUw>&x0UTgaP_D(uU1RO8CFXwMWO7v|;&SK#M`z`rqUO z9-SMp4uvTXpxdz#xxR-$DTk*p*8LySga>I&PL9orfB!3`Mvshj814K;4Cm5 z|C-FpL&~oGztro=h@mZS9i1QYU?Rs4W#(a;9FqokgwTT!1lY-0@pG~gqbk|`?O~v! zb~e#zqponOJ=}(_4G%#8A`0S{5Y7!9Me8MEnxVTm!5 zzeU)Qy|U4SnI(4LUW*Jd48&TE0Ze)PaC#YJ?v)u~lM2^^WiT>960n3_BaZA$wDRh8Qy~XbJl!mvvsBBnspXLAjQxFA&W=A*#u@29WNmqMcS$51 ze49qj6vl~%ch`sQ=NwzYog%$qDR~LcCV03T*GVGJ$!M~+4h0WgVA&+hn%Xc?99+^C z6I7+9PEKJCWnm_D0!^&7-GO!dhN6#V(81X(25T|prl*pmlJXAup)N)>QbIY^8t)8G zOf41D9*_3)vPqfaiDf!-Cb_`Ai6#Z;h~+5=OwT)Fa~kZm9B3JGRypG~3@O;Ij+k}X zBFR$OZ}p79$jqlEU_u}@^Z&WLhr#C+>31#(c`I4Ba7nTh(!}pWnfnmTJ_jbIaPB%5 zY9`J`#FhaC!&DV!8f%FanJ96Q*eVm!f-y3zCARJcStPc}xRPU#O1Ow^Gw!?`6{0N= zx^TM;g<-1?Czs52Mh80mFeXhiUJ4 zXAGB$j_{m`F*NNvG82jem`aJGJQCI~Nk?bgF-OHZaSV6UG%RZ_n`*-r<_IoM(wyR0 zZjwXRxfr>=Lq@%*43&H;Kwl=-3lmZ3W#TwC{6Nv=V*Pm0<>L5An^3A{i^K*LK^(@i z+C}1ol)}pwiJ!y^1NFoVjfoC#sSl;t%}0l(mxz-hKoo*{KmkwY$Qb9iq&+&aWLlgO zK^iOxc`7@J!&COyX&FiOGn88gLE1Pd>konw6CtMvq9{qHge?d`M#jW) zI1P)sFt8&u;Ry0YtV|fi8JVxDNE*ap{ezg|Qbv4chEm2Tda4bsKB^0xmHCG*>|2XF z6JyID;gdNxj7DeAwa6lIPS-}L0ZFCx=W6@p$Yfdps)i>aG;jwSi#R<6Vb6#$M$@dMx2tTtYT7cR*g1`MMFj zT+X0=xs>1j%`(_pfQ5gOO8h#l7oZgN*416LOTcSV4Mp1I9~oj#`=xx8?Oe+VS^%OQ zfY(2*3BKe4y)D+|6;z*$y#g!aV*NM-?FAt}ChH5xfm}Kh!_zQ{?T8KHIAwZ-+mL)D z!f!F`j>3W?ZcpQ0_)Hv)Tpjdv+(!}SgA+^P6;>2QFAVh2crx}0-reOqmCiCZ}j*Mz|( zqhmv`f+}v~$&@64q0bHsO>90cZnt=$@I<)7lAXfhof%gk89VOsZd0tFoK=fs#fG~% z#h2tzETCm6N!PP>>H8GYxG@o5r+Fx&$Yt;GnoNXyGpiWgB~^VNYZO9=N>gTe*t(ym zzy?Y88?Aj9B;9)(kyHi^J@0`Gwbr<=lF$cPUV|cqdx&QYa!*MQ%~}Ww7&bMLgJiVH zv{^-~6*f&)`Y=Z`n}%!$CWeQ>f<%+@0vmz0#fV43l1nDj6XMY@S#kjKW2u9L8CM_A zn5mCDNJymCR@x{jk=V3#X)QUJUPu(S0k;f-UN@2vQ-IfqDp-f=$QnUAKmRS$UPHn+!5y2R6*u<@Fv&L-6ChsX41I8%(_v=@>t zVmN87cp&5#WOFf~N(u*-wx^d&42fsi=3;Q!$GAWCTsI_psd&B{5_zHliWj;e*;K`g zJXuVWb4I+>4TcP7#LL}aDB-Mlr5g;n&5BnuWYTG}(dhhIH!QLw?CTi{O=*0U`OSzo zx`CxCWw@9TZ*~LA9+E@IjCiXXSaK%tO3r`MWF8w`Iyx=h?gmA^3i?ilj+Lfyg`)yf z)1$3{k+F%ztugVZZe@_YQ|8?a9b-tV2j^ttBXEk3DtfP5A*mmy(EHt_!yXuFErs*j zBV5r3-O6A^PMHsRi8if8OX1ltuH>U`1+Wscz{lMRU`ynN7U}DgZUwLgv%rdM553QO zQ&h=T-O6AkPMNKG{ z>e?&tZ*-EtAZSr#V|K|VI@6g6H)0*$HJpHlIq7ho7JehzA%%X>M71K2^qnT~l0dRp zph;4UU9-F~YH-7GY>BK}4vS)anwXem zSy+*e=iR}nk;UG`XtylYY!S77X`#s?CJLr{Eh<*5W+%I|BUp5rERls;BxGzH&>s$A zkiCH!A+1|{5W}+rGB1y=X9h6_JS(7l+G2o$+K1*sTo5JaU@#k?)p3uDGZP@6jKJuy zYpgDw0nkL&W0GY5u{LRwmzh6#iN#0y!X8=fc=-?xuJbN!$pvTiDAJxBLLq~IgHD=` z3W2p8`Q$=J>=ogHsAbDLVust{GZ~zKGdvw}7tcNd^$fM9aKT>U_Ri9jJAlJSO5l;P z>Cr(rL$*(r=G*}w#5alAguBug3wbf@Bu=UWtl%jz(ALt4p*HOC$7`g`e6cTwo&c+H zIOHLINsc0ymGICBtTpQ(N~`1hai0W1+TYE^I+qi6jO>3tR32nS{%x+Hg%}wN9m8o@ z^koCwnZ{N3OlX7OX}l9Uy$${#oI+?f890=htK6YJOG0Wl z9oV6jLR(N{(#7^ShUG<`Garym#$|)5y_m!E$YO(RI0l*SNa^X|(Q5I~P9IP!CzD)-Cn8rv3V`~Hfjuj>& ztI?(eN9Gr;j_r;I1yAh6;G!+FEsf?Pw&2pl4q_vsXF~Z2DH<>i=Hb~PYa=5oa>&?L zHAqli>CnlFNP36pD(WQO6AR$vEeI2&O9zoy^C3JPbr4Bi_Rs&}=ddQLAJ;xjf96cM?T+NHXmtO41j!y9^TqBB^;$GC`u- zs&^jbJ?#W9#X6i#LJr8BVJu3XY$B6z$cY$a5)PeAf?UTTVqtkp%`b<;DC}+n#i7OF zl^DelS?cQmf@coog8_sdAmdCp{*W;^Ok|_19fdF_#PJM*M(qG6Cj^meMS&E9;x%#* zB4ZCQ@{B!z2^zbDlU8*kPZL4$o5A^}rR@$pI;@`mKZ=JUpSDOG9U^LPAX}t`V{ZsO zCQE_C185GUArFw)GmWzzf-IUk-y^#=9mBa+O&00#OYHg#-f8eK+LUz8Yi$S`CxT`3 zQa1!0u#>prVODEHFdgn~2s&`p63%hSCcWmN3fOTe`3PdP>!vYc=e0J;9I@=2HpWeB z-Q5s$xH&FNzV5XE*(oSFaaz6X#uPDw%o0aVYpdM9T|{+#j{KIYVLWw#tp=%p;(yV(pdbU?PZ zLOSBisVWXZ-=0gy*fFW+`lJQZBfa05OMOn%no~DeVQfyKa$NhyTtrO*-JCRPM?T(r z>gts;6dup>E0}w=jM*TiHYad0?T~elOJ?b2=_H~hlSq@E1cVcfB?J>;r`t~L$ljQv zbGq%Iuo43`LYYzk#ba_Zp*2O3e0VM&XTr`vd6H8Nifmhcn3HMdG{6QpIX0clvQ4>> zm1V&38rfQDqz=@Wm}b0vwjI*U(cvYH?j)Vo@@v4d z`FVa5;AusGF6=lA&`NKpRus{W1t~nGWze|C6PAF82y>!B7bRJtp^E?DqzURHLvF&%d@0%h zERPSu`xnpRNRomQXY(GP3qlJ^?yV)x=?%C@oErneYuPN0=k*3$B+k#0;Ux0N*9i`w zjP0e9@XWfVhznw1tlkA*m?g8&<>BNZZUhE6cf>_8g_1`=l!wRgcqDOIB1k@+qIXL} z2fk#KocfIIvT*kv)hqSt;Z)aBW4 zhK(01g$-@_gj@0kL|W#AGj~_S3ZiP#3SJrOQ*tL|@$|yQKg7UTiypHl7HLHkfQKw2l@FzaZMCSZy(gi zKW6Dm2IDx|nBN|$f35!Z7>O3JGzq!jsv zEUk$rWYkGZ+~^a~Oj_b5pMWJ6i<^A{mRKxq@d;RBP~7Shu*9Ia%_m?9csry|z!F2^ z4!@aLLcPgnM%?L>u^f}{^2tf*SvY=dK7S@nDk(h+$BxOFZ5=A+a-#v?M=>MrW~WcZ z&5Cyao>fK!i&TcK3Pgl=gXf6dsv6aPx|Df^sIQ&XD;iOrDw%cJ{e2X ziwxnoQLtf5emZMD{V8oorjpNCy~wk{wbC~S*D{X3hBgP+qNA?=9@_R(g=NR4Y!0p^ zb07m1+#FOWnT*5RLCpA-v;>u8KT~D;u#NNPZj|{+Ic#WP+SW4|XKZm{m8J4hC(WWA z3D7Wjo)+5iREp7ym~kdNJEO^-Qw{3Qo|uI>X&u9cNodDY^|>=0i)+A|iN$N=Nf<5C z1Y}R-Frg@?#aCHB&(k!UDC?G~ z`U{*lCjjjD zol!uES9~%uVDhVB0RWO5{HNU3<}X{hH>V0V&3+8vH6Mf$*q|La<_)#wW2)@f+?}s; zzqoYWsiY^Dj_S15zFYvxqN3FsoJF}1yXVB4F&wf=dRV;0YkMv~#Ici8;Bz5ZrHYX7 zp4>s4MXuzzaR_R9=Se)Ixj%aQ-}%v6mm9)37*Z?C_C6uWDNoNd`F5(m7er5r4(iy$Y@zLR9_OwQlz&-8I8;?H))`6bHu_-0Ny!b z1haSeV244{hELJVAfeXCKS_LtX#3u4JjXXsvYYWWnfiI59XL{`V^(tFujbe6qwjID z?jy9YWD7n5WmaEPn2BOgD1~{SMUF7S9-f7%JT>1(NmdH=K{sCb0SU2p9Hn?k)Q7x! zq^H^D0=OI0KFXSBUERm?HCii=R=Lx8qasznqueJQPC>zZFI!X)Y^VyA2WDyWFP%Bc z;%xv7_f!lA> z?)5l9j`rAlEl1~JdKQlZC7mScUQH4InM*}H!timRZWW=58S}Qy@nFCwKk(CWJoaptTSGaSJ~?7g7m4k|WF72yi``-kXHtgr zN7&TtVR#f40CvdnhIkja*fGZ^y)7h073nNur!W8wL49>^=NzpJ1(ZaweU}_fx&jd0 zKpKYv5UfioSieR!0HOhDR~9z_kptdtIZBZO0B_*iJ%yWmYwI34T7n30lN)1V&m2$3 ze4CZo3_chq_DWHr+Jg{#^GF@23N?hwRj`y5S0nbR1ntv>lS~*c=l9V@s>5UkUb`As zCd!24sDA0{zB$@u4{!{oIlo*)CpY9V2j=3f^2%rziVsd+8SPUW#j_}{5T!*wh$ahO39Lr< z7JoW$cn%Cu(H?`5_%Pr}fDAZ4if1`qF)6r}BJnY6-;INXy)0=Cjh3$CzvKMR;yq zZ7JvxMyrexKZlGAr1tsTutPUpo3gq9LVGdgh5-mWEbRz72-*11GoAsQyp?FlLC~N@ z39&=OY8-c@{*D6e2S8)6GZ(@vPzpqdH6-)lJtoJ(y?9A%f2t+7dP2Bl#WtVGGU*t{APQ8ZLJTO zZcPCnaV+QWHUf>D5XXfTD6I;DS&Gdkls1#c z*+3mIWX4R(U^XP4EC;omzYTa-@7up$?DaH>am8N7@Cn zE5#FOy8yNZ1r!^_mm}>G6vE>uy zvnxWS+BtQvwP`DWkvzT}>DT5A-*YiKRkZ7JWTZ|Q;^XsBzf3ad&qbGZ8W3NOwCj`M z|WT^$F-NaO&14Ul3g9oV%rQ&!__lFmCg~ zTOS~Ggx{mb^Tg}>bYzemy)_T^szb?GUPT4?`n*rZ;!NJqCnu%h^sP@$O2hHnG%}vQ zO{3!hT%Rs$*C%j&x~yIw!S(4$c|3#b)06Ue2-l}$c|K;lZ-9>Fnf^2%?hcQQP7W*==dk6{UD)2EZxV`gdHYk5P=d+U2+Y{dv&$eseZ~-i24#GU;p^f< z_~Pcp6Yxq}JtO6L?)jYY#cyFr>3lgnHAur+e>$J+b znPQ9z%#>6z>RC^dKdl{VQ+N4Ww1F{VdhYhwxOP?YS zdkZ|ct+9(~J0T{6900H6X_DUm8-(~GU)@gQ;2(Gs$VX^rr)+VDiWE zi0gASpYmZcw4t`)jHPzE8+cBbj@K;|H^yZ)D_AxFuiw3inY*t!=}fi;G3smgpw7Qp zPdJ_TV|WF$E%1c1TLBbKC2l<7>{h~=aCU>s)<-9t-AZGyh)+0sDeX=;yOojh1}B`o zl#EU|dnxS981ZdiJYW596gMZFy%Y~mIJ=d^4&vP$o^bY3#+z{VQplZfb}NH@8J=+V zQc^Cc8WYZ5%0wody%%*RoIMvbCY-&L@h6*U<>6fLnRBSC1%* zN5@-JdeVIx9~B7G7m3?r0If)OG^PstgFxaA9)aA-eC&WcG<2tzeh_o?e;GN%T`>rD zk2(&dpMPwPO)hD9!`$7hB8RLSNONX~oY)I(IyiK)8h*WjT{RXqpK=MKWGjt_T*$nf ziV(%a4Nc@61lFeZY1ER)nfwK#0L~jqDCrD90|Q6TU>qjm!rFrZnZ6@|IRubv1`s;n z$C+?=r|k@f3F^)c=3!1+#}K+{`WxWn#EZBF6p*4uyhaIw*g;3E0yQQPB;Gzdj!=wp zc*$sT5ATe~Nja|z+{+uy=G{f&KKr(IC)z<*VC==U#QnUjp4?m{9`J8|T|8*t#Qp2F z#6$kgMdD%q=GVm|_D$HqSvn~m{A4MJ=eG44}K+E-Vu-U zR+|P`yv+8fP9kAN(LahSIGhc5ZP?G+QY*mz9&S!d|!`M6f9{f9AP3?J?SKS94Xt6 z3%Uw9LetX#PeiJ~c?3Tu8$ofZN&Xr^=~zS2JObl*L$NY|lHF>ZG>CIVET@dLz7yf- z#2)kU6}vN#r4@hDYv&k5@g-7w5{J^;ZO0-SdILOVJbH>PGg%4ptoLa?S{lM=^Cc?@ zVG{f0IGn7Ex(3YScmR=D+cP|AkJV;m2EU+g3PF*h0sRkJb_zk0F4Yg6@=zTRH9^w= z#N$*N7Dgc+_ad;w1o+)n5uj}Yob?32(g>dAAguP2beGU7#&ewBIb_}SWMd9F>2*Ho zB=-q4cRRfc6gHz3nT3OLBNa6?fZ`}c1{gqagrZC+fY8w?&V(Zqd9uRcuAvso+p;Fo6U!$U*LU~grZH27$y|d zsT!xAlY>`s(d3v4QA|_un6I-zFYrqoR z1Js{96R+r{agD&{IH*^{6(u8rc+E#39|Q5aUz6$^c+?(`E-7<8(ML)3!gCD<>J2vA zM2pBvy>|ePiPEk;4DW-R*$?r*$tML&n(l!l+0^Bbufi$;`P(mMdBo`V48phJC=!|w zsf_W_rE0tUE!LI^K`xV1?d78r%Q|8c8Xa7~*u=!7Sjo*dsaS)gzRi0GCKZ`4nHU>N zYIr9ELnb!tPdry~xq+l@n9zuKLjdH%fcJQZ(&f-uGBGvX?f{aH5xgIQA}=5M0S5|~ z>kxdAVirFC%*$Se4In2){*V(qx3s#((HOq-%qw#a3j?##nB@da2DYEXN4$_^R)v!A z^^o|OH^BK8yxl>*?@AjLZFk+yFG(?h$jb%ZVN5(Mxe_4CrauoJ=Z7%;o<0+18T|kp zEtrPygC`RiU8^mg#C^hh+i`xf2Ug?*J%IHhmDcID3Sp#r6U^56fH6qqK{c(x5bFB;%OHOW2P33%Nf zO$1Fo>R2`ha5!Bw1uvO}6JZ^(Q>cx|Q5Dy{vvUZCC!L+w9Pg43bo1tr&ESj)p1c&h zhLi=2&`4k~Y7Nbb-D0ksghlx_WN|B>-Z0xLJ%Pt?_1a{ydyJ$1-d$QGgGE051@Jxc zbP7w})M*IsxF8ZWCT9j4&7(~qybJau9?0|=chtP`!OSYgJy~wgJiWJ~!#NbCqI>1( zIG`rD0%(Ff1hsdbpT1#6s?L4#wB@DYC^H@g5c_&{BMD9|&A2k5ZsGp>`i&-B2NqCg zJx=1ZPS=Bl6zyc5i)b2_8yX!Mo$i2ba}Lc+u^$p&16IzY$| z1mf0l^3Y6`~NA@boOiL?1UAqg78A zgnTsU(wupy$IuDN6F$XvS*!>$4i~wcw}xF=uofKIae>R|5jgP2Z}V}w3hM|Jc%IV_ zw}#|^Uy2*4gMGA)=W;+9jRSp=-boJUwIc3l9pHlMX8%qN@hibzpjFE}F9Lc@u%5)AU~M85X)JaBA_~NM4d8#! zDz`5n*6pl8(w?+xJQCK*Ef z#UdJu;;O`fEH8~QIUF5RPeUSG@9^Sq4+T;0Ucr(013tPTSWr3p8JV?IUfWeb>#XB9 zdMo6eP3fUgsEwBY;)?%XNj$aEV*~9YEPTqry8K_o!S|ih^;Ef^k^pe6364bpZNRkJ_?BH4RW{ZXjL% zB%YGs;SwD+`DD$>yy9h3b?~ME!KPv_sIWqz+a@Q@dJ0EL8$gkU#yFdXyp7>?I0(WT z3=qGb-{yoMHg`&xe1JA^%FKKOn=}o!Ho!OHARp6gX=Tvo;}|Msf-xMKX0$psMoPha zHi`K~TV@*^4Td%+X$GhAoQ)q#Fmf(7wA1pG$%Qc5+^Dxhn8fJF@?#);(gTe{T*+Uy z4k6JxH1hO3X*-0Joi~9KJN;^f5KPVP$d$u@=nQY}rEr!L8qeB7BiZ9CZ94!s3t&`_LX<*rA={M%`rZK0o zvj6=SVT2$oT&TIh~yfqb}^l30_$Rh1lJGwdcKXLOuo zcf;!huh$AV-{a{;S_P;Cdk)h}EmCzfiQ#!^w_2R!kY^0N6{B3SSJ^mqG*@Mf4znx_ z+md9Gz3R+PEO~7rtufO1F3xkW`%^2m{pfn&C3$W{*Am(d<1a3C>cF;3xi(_WcCCaQ zlHH^$9;;AYuln$$%=e?S-hgyQuPHbCMbE{9Uiu&L*|Sr75>777e`hWtM-07pO~JY- zJ5^7G66^i;T;#M(m?Lc08l}Bl#v9%04H`x&Gd9t}BN8-zT+Um{F`Twpa=aLByuCSX zLK=CKxFS#8nO1Bm9BDBNUCG^$@%13;%yrW$9=RpwqmjU`Wnw;C5 zq_JI_j~k~I%E{=i(+Qq$%od&-xlTMNTX@~_gWL7iB7{Cob%V7C0jCc~J9vyP-zjMQzY?LUVt^J?eWgCDfm(p^S&)489oBr8XFUL z@Unx+VQ>s~HsRDUKnQjxkBKI1s!cDM7I*P}gh__LJq`27j<`ESl>;HZ(e$2>`WG)7 zhW8i2ck4cDwjL*?)G_z!bW3(jLUFp~KD~*pak^8;aFooF1GZb-qW7M45vQ-{q+C)^ z^%RZQ#%=DW`}tf&Li2lxmfjKwC|^9_%g=rCpxybp0anL7WOqJ-l5Tt0R=woFo%V=N z(_QwcJ~N;-q&tju1XL@Qjdw;z#^GH>@`OM4-D5m~O946E_;{W&reG1>qqJNU1WBWY z&ZU`Y5aaYSEn@|ts>^9kCB@J9wJXnHCdos9`g4kYP1(qtJHaXnndhxMV538H26nJvX8_0LNzD zcO#01Ym0HTt^tvVqUnycI1xp|f)OR5CYC~nMA$Ah#J3YCqG)6=qL|chMA3+lg*Y~+ zv8H`Ey{a*Wb;KZsZNxfWTgKpW2eAHPwqq?8;x20K0^n2Qx1WSzSV`~=7_o;U+pO&;xzgjjVQD%?&f*XD5 z6OCT^W_{L*=eIocY5+;JDEz*x;rg@Oz7;@zLumgPRIIMQt#T3i$>N^ zlhj}&3D!`PApCyzRVwRIo$Z?+6RF3o*>+M*sM{?+OrU1pN1A0AKm=h}L8PlwOhLY_ zgJuw)1Wdu8JEpLr;44U?Q%pf|Blq@AL6W(0@H_6E|$atzAK3}fOb^P-K&boNHv;a%-i*?rS<;z+p3$`E_fB|yn6Y0o9S z0U;x$10v}KO_S|ORYol932&HlPv)wP+low3E1&wJK(~!;lODh^;cW|+yBTn8wN~IY z0Boq%^w^*~wrLHX1}u=wn$#rRS;?#c@r}+JVhyCSvsi-@)3V&iC?B#WE9EkwCP8sWLjrxE84gfhYZRZ)!hQ7Ri!o^ z3bJXX;tcyrH6Lwc)-*xALWfLihl1syCe1OZ9Sc@+s*u`@taP8aknvcqt4NN?STin# zP=;c~1R^A{#WGz*^^L-sk|~ffg+OZ(1F-Bwl?rvc6&@AL?CgN}Mi&RDM#l!aOn0Xh zR8+On#;H$tvPTmS;B@TH_Gn_jb?;iEi2(?XCI;Q<=YYD5s9?FT!Ndp%0b7*}{B92@ z*9ZdvlVmC-DptfZgb7)J74ZzLX$rB%8TJr^7)BB6cx@S$DDvSCy>Uavu}gtYo2gVP zgmLU+*Mj9}b_s1Fmh?7;t;Fg*8{!y>)ju{;1qLhZIe;WUSgE^>@-4>FtqoQIBSi~I z;IM`)n@h-atTOla!EVYh?64cuFvf0%rY+Kn=aUm-vm+DZyc)1a!ET5}b!>0Xf;9*+Cv9+6R=`xY zGRt+C=$Mu@ZZk&NlQoKJQes55RZ=T_%dt`|W~0m{*tR4%+1h3`VVY*0GkC~eQ{^g5 zYX~;QFo7W5==WfE>dv-WC|?Im0cWp*)dYj&bo1T?s~;p#_pz03Djt-oT4R8uIK69S zlMVpNa%%}Bb_3L&yg$jL2LOO)A>zTieL`b47({Z5MX zAHEHl`fnen{}PhZfBQQ9hrmexNgl!eLrQA@At2O$@_wxUkl3yN5EJS@x=$h7?mwh; z?>|Jv`%m&nCXsgkAu-y2NYwpjd9QpTLT1O*iTf3-wJ(?M^yL2bs(gah-Dw4_gw8?N z*OC;*=~&y!u{9EFJ=c@elX$E(GA4jfw_Evi0yX&E7T63kOf(}vx7IyD6P?k zEv3N>gGw_PZB>@b>xaI`o(?Kl^EQXkGnvt@Pa1#^Dux1ImY{({TTV!cWYX~>Uu!Atbuz+yq>b|!{ zn1HwFPfWI_ruF+T4k_4%?jaltIJ98|v?IXDdD51w zEDEI8tHf*M=V)n!3NT6@n~k?mXBwkJ9r0^2I)|6Eiu?6Qk$ljOUM!&vi?@h9MC?@& zyhI%=;J+k-SJs2@$SEOsJw$3P{)-_v)e6=UcqIhS^n&>C%OJ>T&99Mg-bn-b1H8c$ z!f1t4APiv=cP0}Gfyk$6pbH_8jj~*RR}8s!2%LECgS_1uf+allR~^Y4Qql0tIC)nL zmKZ$EMq@zR>M89Cfu-p`R3PyJ+X3p#p9;JW^GaR}r~8e3HiiQ|igl?|Vi;5+yjy;1 zdbA~)U9i|MjQt_0CXFwg#A=U^zy~(g>jFl`8vLU!QlP{`@ZnuP!iJx=A7!I=1{VtOxc;b3wet=o(CVcxJrMK zKo(H%XfgqR;O}&)vha-@*-!AM_|_PHgc_p`eo^Pw6q!ahGhf{%*A6KPK2o4a8GyLX z6o8Abt4C`DrJ~})xwNyNwfdmXhH|WUF~qyY-po+a6fb7f zHUr;2?20$4nGq|y;|>0^;_dEuga52}Cqr+e=}CT-9?ysux|cF);ZiSlFJ-hvm70am zJa(1Pt7{g%{MfaWS(p4&^sLy5-;Ea6hFKSt+B#3iE#jrHuCa+h7zN0tpXEcm@iJJG zRpzOi~Y(d4ZSG;<8~qux>CqJ-WOtUhIy?IyC+zUeZtJKR5;{lX$s1 z7?~^ZD}0?0bB+HHHu!2FuEbM^{twI_1)uije44s=W zD3a3~1!Bc#Oehz6vp@y-z7~sCgZMtml)Mf7Ek4}CWK>&1UdiocvMjCUdYjPt9+PBA zMS7bZDv(`L-tN7)_}xPMRcl@u-8c$hz0{L*M*JOnUPUwo{z3G8fL;l#MyI>_CB<`K zAU%~6YGyD(18*-4MFwhx?2OEJ<|w%J0h{m7t+4lwz&SJ;wHA0!;Gf3<-xWAV1*id4 zy^QVL%r|;h04kjq9ltrZVtOTVj@9w<}M5`1%ts!#eMXH&>uO=2KbjcMBv)tBL9hg0Nvy@4p}? z3!>b01hSwYmOG*&KH-(9C=QhaA1z7~kR4o{&M&cxa)W+@*$x~tUpg^_OA<7V58{!n zjemxB1%h~NRR>>Y3Lg!Z?Dx%)g9hPJY7@SqNL~_z%U-~5owOD6H+caph(_jeQH0QM z@kix@XyolKiM*ZRp&?{l$lopTPHHD%9W?(+Q@T{*W~1ZaFT8fgtIHudBs}ro?XzjT zrN%AZJMac=P%YBvw<^Z7e%?CprV3jZ<7vNNNPA&Ch4u?!%hfna%NBve+b=}}>pIa~ z!!Lpr`O}5Da6r9#97f`4k}m^tkYkQGBNI<|{BlxuYsT4& zlZLq}!Jak5(|=!usCu3@#8cF8Ih`ZTwL(ss;z_(;Au8L>qUKVowiI~%czjkFuGPu2 z=Gr%^I3-?lm63y&lq3PNVe{1)67R; zFIhp)huB}}Li*@ny93`CzA#6Dvgb1RIYG)r{W2(u{FopmVPS;YZ`&e@LGMzSOLCMk zg&E;pY={_(!jPASUCN*J3$qJ<3-GddA!HsdbUA-@K3tQY93~%hfse?O+4x1Uo=}nJ zGf}fiJ{_29H|n!#bm+~mSbcYmCVf6xT3+&5wP=SL-&LcO)#qh>SS>1$wDWC?MDL7^ z;x}-#YG_e)yCNTkbLcv!(32^Rk#y<7HBh;U6!w}3v zy`F*xDz`>;J^S~8-T)pE5?d4)t9wV|u$&^WJpz-Zh8oX}>9A zfShdyb~cypI-5&J1<4vN$WZ+*LPnn*WA&@UxnkE`q;zLuYFg};W-OBB$ifXCnx7V2Rj=2hR`>xvp|~Cc*;+p(U0`qYz=O zwmg?1>vU@iExeF#xlkRXlQjCf z5E}i-rCci36b|@tB+YLq;74(=5kdh!1n~lX2owzXE>N2MZXD(KP29;5XbSne^K8XO zXxF1A`G~|ZXgKsC?11eNSd5545d@B zS#fI|mT;RDw`FO-3Cp(m=n$M$eu+Pi?t_q*0=>-VJADw!wWK{dvSeDk5=S8`LcJQV z5P7LjVZX{lR=7eO$i&{os0(0q60=W{+&auh-4!RL3r?tgi!=ug^XkCLaeEw29PSs# z$=+ey{^_!*b#C$7Xd_Wu%LbNr#PVG{7AdiySEG&6r{pL*QFl>dndi-Tw{adT*0XpZ8a|)} zpDeR(V^87jgNl^mB)sK^=EMfpeT1v~8`ADtf`=6;JiC8z(V|FGP?SS#3QDwmVr&_R zdZV=xMT`{u~iJlw?8=*Z|eobpr*-^|h+Bn~8&NAtMqA=O@- zIEE7r4=~gonQFuG-my^@9eC(qx+9J&#=3B_1&_cTA1yBv>y9`fSRQRtTF8F-^H*jU zBUxI=i9riNva*nqiXjU@`iwX^N}Cm@aGqr;2Fqy+Ikg*PR-9H0SqO5mEaY?^7re>{ zM%{TvF=Qc9DBD8LEQTz^0usx!g585ivXHZb7J>k_kaMCe$U@Fd>0z*t^P=U+Le3BN z6MFeFv0kiumx<#tA)1V#V*L;a8?{^Bs6nSPCsL4Ll{0mynaCylVUCJ#|rLmD?cK+_Y=LLP?&-4{>tV44c># zFFXtit){BH4#KClT;XN&+G8zT(W7tko|WMPVIgo}C1eh8Tnb4O+FlFcwQE-nQ~@uB z@VagYqgO-H81ZrluS&a&P(${5NQ|4-IxL9rRzirIv*wYe4+W(~kFp3&CQP?wT zV#!g^ss{BW$v1@Mls+V%8U3%ICXkNpgtUTRFzVNj0|FlPqglHT7-|o}vXmOak{B|{cIVMG~)UmGl!u{+sB6d9Jv z!bFq;mdV0IED1|w@jg*0%B^7lmR5kS1 zCSc1X;c|z7!qR4=TThiD6d1Z(T?m$b1(l7}`7X;>qK4h(Xikn=*_M67kde_Mb) z?Jaegj9{p;(y^vmuo8F%AM$V^SfQP|Qz{t(#V}l*+oi5TcXz6gHf*Q|j!pk)39}u`0q#D;qL)%85g~oP?b`HIB45DWkY#lQINJ zvh|c!+Q~Z2kzH=mE1zKpbKWP#9{(&mm`isZ%%!6amEY4z2Nw|CbG$G&w-R`elCmtf z4toRiIbLydVJPd8Wn*IlW9r2|AMvY-Tp${v34A_{BdyTLy_?^XafBF}xEDBKa)BtK zQ6=6hV-Vz`AaAE>oO17XVi;sYm_PA|@9NSz(drWM zjdl>zaoa?y@ZDIH!8XZr&a}?vGD13zvmLQT1c9V$IygnTsUQa*JY zk|%sn`Lb9M*(VcIV?&xfhndTB^!}VsEjrb(PBuphU>%_X&-2Tu+#0a=;AKm|0C2UdP*@I7dL@p95N_^tjX`?SO@ZD+-=tW}d5-&tLywOtVB^hFy z5-)28K;}Ct#kM7Pd4;;eU}r3-c421(5LcbZZz((yI0NTxc(p&k4I#7Q_Ebn~2Ds?G z=3qqt!M)~`id6jGu0*3@hzrH$?Mv2X4(_nBGwe{Z_QWJf`+>E4B}u3Q>Fs-GeIf=I zN!*cpSZyBZlKiCrInYal8>(&R4l2edzL7C8&oVy#s^PZ`*bYL^waqyW8g_vdi!TG zgwl%EKBf56xn3FVUh#)>y)xJUHA#v;>E;!pm5CpyGugc~2dmMmO03Y~IWRy)dJIzD z$>Yh44CHhfRye*hN5QRUalSvd!rn^A92$*U3#^X(c^q)XWR423S5e{*HV2i?D=XjZ zU2oV|dbMSa)$t0l}|RfeX0^{77%+Y$2h79IJb2y>%zKhD#*M4jx&HTM}xR-zAB*6QZdciFc z2c)(h8-@}d$SGa0R`t1%gG#)cAWsOu9L;(2`N5?xDl=DG?*>3CnR82*1InQW8=eTc zh|rN0qXuMPE_(CUgv$oCZQ$%9D+WJvP~d5S%M0tY*S&d`7D9UA-a3O~RE=x{v3(A3 z@5qY7-HzHkHFAYU6>x~=`A!I<<8c}z4!+hg4o56I(#E)Hts65eS1iOhF*L0ct$>+U zFGok-I1kmEgu=A8+HsFEanEn0OB}*eDRs`;3~h&ULTiw;uhDGDAfZ~+!U@g592%}3 z@T(&Y5*h-M4&xNrph-=`*CeLlW$2VZ8&v5Ww!g%WKp1o^&UF0% zi!rKk1T`KtB-09lusSOxkD?5MnxYI-5^oTa%27;%pi1!D;tYaaLOKKF%rp`PaVW7J zB57?ZiuS@}n&8Mj5GvfMwehCP?;PyDd<+ivQ#B5pS^IqFh8jmnTj-fn8Lqc0^TLB7)6j^r>) z=M>Bkd{l|ztVz=`m_njSLv2Z}zu;s@9iK3m@^R#6^;(<(!SXswOIDN2D$oQI$k942 zbGh&fuwUVoc8>`oUgZ@V6M>S9O-xLRV|ZXNsnQRSdTfY_WibzfWvGCTu&ksW7n7ZP zP@EW(T_fJ$r7BZ8tY7*xESvJ^Yp4eWP-GqU-O}`M+^sw;m~<>o^xH!0mFD1e>aZjg zsa?J~T^t|NogBuub>`}{zAX=iY1baJ{qj#I9|&0triGd(fY7Wd8joKIBc@1M7( zR}7_vVFb4`#RKyyH_gk4W~O#!sZg!IQeXI$um0`V{{A1=TC}pX@au~fe&d^;UVGuU zzWtr=e((GL^r!5**`o?a7mg_$TR5(8eBp$`iG`C2Cl^jBoLV@oaC+g4!kLA$3TGG2 zDV$q4uW)|hg2IJ`iwYMPE-74ExU6t_;flhQg+COoDqLN-rtrtYwT0^n*B5Rm+*r7& zaC707!mWkd3bz;TDBM}Nt8jPWp2EF_cM5+hTv)uQxL0ZK(#fS$OCL2(ES+9DrF2^9 z#L`)%t4ddwt}K1hxS@1&>88?yrKd~JlpZQw(Riz{YvsAjDa9)rkHGb_rRPdB?`M(t zXz9`h5*~+Nbo-go6Q!r%|9H9Z`O=HP^5xPirB_R@m0mBsQ34gbU3#zde(8hKhoz57 zAD2EUy;E9I-m1KHd7JXKgv*=<-_I8L*eGtDCueC)5~X+&n%x+KD&HQ`L4_n<)g~S zmrpLATRyLRe))p(h2@LNN0g5%pISbtd`kJ^@+IX<%a=*)<>f2NSCv62*cq~AC^BVe_Z~gyrQyI<%RNVN0n^vX$eFbv)hnym=~q|(SY3Ec^^WQ@r8}#4SMP+I z&w;tzQ@yWx5BwyAAf+p)HDZKv9vwLNNk)fO(ix^!mku-f6ZBWg$1j;bA9yDPJI z?SR@rwL@yh)Q+tkS3ACTLhZ!b-n9d3C)EzF9a=lNc1rEk+G!GddhLuF*!S7B3u+hE z&Z(VOyQp???UEV_b4BeBwaaQ(*HEFC)vl~vRfAr=wsu_&4gdPujkW7**eblbsdh{4 zCVh2l?e^NO^6Kr{pK9;bQ2lq*-l@G?yQB7g?W5YqwGV4om+pjmuP)tH`=EAr?Wx+r zdumVDo`H*dYtPme-dB6B_B>qNUwfgp@PXQkwU^-H!P?8Ug%8zUsl5sp57%C+EqtW* zdhHFkc(nFrZQ*0Jw`wbEpVU^=cdPGS-=n@~eXsi7^?mC5*7vLLUq7IJVEyR&A@xJ+ zht&_SA6!48eq{Y9xIRYydu;vW`lL=8Xub)_7cv}68`UUli>lf88sb5>au6}y` z`uc_S8|pXJZ>~R5f3*I1{fYXM^{49C^r!33)-eLWzbY(YtDdjFS_iGZj(@#bUs-<} zfBdQbOzGYF`}KDv63c#2|45eofXg1-*rBmwW2eT>ja?eMHtx!NQs1hvO=G*pZjId= zdo=cJ?A6%2@kxE_#y*X08{0SbZS2?Bzj1)X9@sdjaY*CP1{&evjT2>1JiI~i=b6$G zji+lTH%@6B0k_Z)k8C_wJGF6I<4C$bs_|m&^u`&Dqv-nR#+i+?8fQ0-rt4!Guh-6L zoZC2tu8(cJRXeY7e&blWKCW>=9WRU z^4ATG8yhz@ZfV@yxV>>#F|VF|JX?MLgwNkQ@6>uGw`FeKe$mWNFUU0a-7ULm zf2O%7{Iejtc2>ae1M!yp4dd^o3q(>(N1 z0cDym^F1K0C*TkNwPKyVPb%LA#Pa}#|9>^>lb|p%2$5a~68t|z`tXfR-}U7t{L{Q& z39;f$d1u=1 zdHcDS+r zrGe5s>vk!~hw$?j%?L5iLro;dsc?DnU9u=LhT58s0#+&EVYqrg$=o~=+6z*xgj*j} zn;;ItcYP<*yt>9$$HLW}`sz}+x=2@hH(Z?!T7+u3fiJ_YLvPoO*cK?aUMZTOLS%g? zTt1(OTtuz6Uscbs}7?gzf`vqOe!OWOf9UP8SRF894tm%Se@cY#YP`#M}c zkd)o=BXEFoy4R{=GJpm>FB-FyYaJda|q{}^5WShq&mnXvIj?e`}y%H|3PRia7 zm+ydE6ZLhtJOC=A%N@7MHea9)Ci4TwX&!KsYzefWc@Y^W`4dEy=0~7KYz^Id8E#z% z^;5vvcI#~O4~c;u3YU8(m*>Le$8ZS&1Y349T)vrHJ`I;!Czl_><$vkX_hv~BDb2sbi)%WMkW0smIND^P);;J(ckh%eKvRY0C~sSM~~%l=G33UI)@ zMwV{Zn0E%5I(33cs0uP%0TzeqR@t*TgETgY=-qFN5xyJ3fOd z>Dy`E>Y&+vya%?6SpwSb#$d4h(rCmgwZ0chkoc6FSFPFH9}EmiEzH(Gl^64&D$wM7 z=rAxUpdOg%d#MgakZtbusN!`%72BUd)|hS}>j9T_Ua`I;)1OaRgApO?LUYGAGyOTV zX~;{;psCp9AUJlvcSF?HlM>|Dm1ML%Y#=rQns5(PBBfaM zQyHOJ4k`n}ecWkG;dQowoF&aMVU!NvP-tuH8n*jQLJzkoG91?rWB%b;tx`N(bJD?)rrd&)&899-~PPHU2ncd zG{0$d@&fSa)%peS0L}D^533M3`t$QeZe48if^1W4gvy?u#i{_(%z%M!`ZXb%|FA(L z13s#;3c2NcbOb*9Yh`xYBDpbN}me~(!o51+gqJz+KZsoYh1w6LPbV6N z;^hVCjTrY#4eJU_4GZ92+q0A@uuJEoF1=OOcImuw>8q-VOD}}}k)w9sbye4?cYr?r zpK$6NSY=){w+~$xof=FVof?d8)&9J4>TGwXhMrYsoz+gAW2eq3SB0R#u1Zd=u{}C9 zRMMXVrv{gpFO;w5z^$Nk%&BvUQ-e6lsk6$db3a9=mW{6W=ao~FE=;G+K`Ik-YK)2K z)H#SZ?9^FuYG%x)FI^%B+LcZXN+zeyqf>Le(B&|CkyGbQlY^$SO@rG*=PR4eOQ+^8 zR8EZzmBAF7K~9Z&z`jHWH(TU7by|zqsoj?8CXrMBPqwJ5Q|ALteRUO_I2zW;J19d_Q)b~uIwo@jP0X?AIg9&2R1B{fS@}J7#I4UD%=r*V-bUPouEwg!- zHw8UelbfNH-5YiHMqlk8KzML5m1C)J0NQ{w6ox$6An3jN*rw3$IO)muj?d2#Usm{e zP%Eku`?X%H9hiYNLRM}bCwQ{K3&5d&DyKHs3oN3fqrpNj#11?;hxq{Z3Z$H}-25CQ zNEo>xKtbe_eS?B>Oou|JN9FQ2V=x;shyJ-086XKQZ_?x}5JZvbmh21&n~-vWk8Ip10^@|wg7U@< z@FyHMz|EoC`it;uei5)r$e&1NCG<7XUxFTiNe_%q@EhBW^Mm>r_SX~8Z?eCz>FB+> z?N-an+;Whp2raG04|J z3Hjz~V_ayHZuNTzxNGe5}hN~_eG$H3~vPFIWO*)ZL^ zL#lTQ>=(5nPIwSY`yPx@D%)2*1z)l zmw;aob=1td*_C3AK`LEI+rR$N64D`Uar?RQt3V~GZ|}0V86H^(f4tqKg+8`U{_%KGFU@i zjy(;w4Qn|70+Xc04!vgeXE8&T2jFM`_62Kc*nwbNXweXfFoiR`WdTGQNML1`%ACEq z8pKevKI-IEH|_g7Oe zZCE!`(ILN}2=goWT^z;P^FM=Lr7Lgt8x=2#{pAIPpF#WtIVa~AASgrM^cR|0jQ_B5 zfRi%}r0N&MfX(JtK-SF9=2vs;0$W(kL%roU$m3NNA`$4S@|*c`Q6t}9ga`pQfHm5D ze_?}$oUK5aa(@X{2AZM{!>FnNBYSgASXG7CQKzA@=^k*^GtD}EmK$2Ih z_QOV6-~5J*grMGY=Fh{%f*6hd;yL^F&-*n_TbtSWdAyB5Y_s1q#Rl*r_me5SoSuSy zo7dmiZ?_LK3re7d($Cg_l_6ZogA4ev*>A8>1=XTL-#zm{5KvNnei5hm&^FX5{IfAm zlAtfokrE+02()?G4_FznD~^KRkS(nH^-I$Rqv7ms=u)zFUKQQ>&{5p)Qu)vnbhV<7_nYsSjZ{|xw0GW^*{4)vp6wq`1#UBHL z)D0~|?hC5G7z10JI%d!=PD;1b3 zU=Fon9dGy_Nt636)&NK{sC1U`k{0}Vj`K|7Li!zd}_@QmXq=yw4M zgTnql_TC5HuB)o|-D~ZA&fe#&bCQ+zv<>96ti4I$G)*A-LOJ&4%2_sI5qhbgSKsUB zLtAovz4u~L-=os&r|sM_oF zTOGHe+J*)2Kx)zCurdZ3kc=gqG`hpT*|`k}on>DY0hI7`!U^E7HC@1kGEa&k3NNRD zEOU!WRs>12i|RXx#BoBzablP_PKY>GsjO*;RLWJ2azUT-yXC7-iR^FEq;swDgYE>7vDMT1K~!$Wc3>KNi;1v$MB@b7qE#^+CdL43P?CrR8LW>ftZ&a|5-lGb!an9gQ5Vp|AlS zdeX)u6_#uh^g!pU%0w|kW$b8#V39seYM`VUxuho$IL9<6oKlq<0m$sZ2~%9P-~cd} z;!v|VE%F^!?}33uVwh;_qb-cplF_DaV3DwO_>rPDyhvJFBvmRR0*j>enjYNQ7D@XD z#S3kbkW_SRk?_PKnU0GD!UaLoBC)4H`YC3l-?|2!GZghjVmx3%JixXrpq3_!AH#)- z0&ATu63WCy;?>7RVs$~<`jVRO%C!(S8=h|lPPURL7+2EV9u{lMSJE6D#3mFatkGRo zl5;oPrB0gukXaL9E#HG(b21nz5p_bt>QdAb`Vz>#kyeyTG9{l|=nt%)mU$y~KK8Ok z(K`J(v$Z@KiCLm~N`~ht(L7bDYB^jCPgiSe!q?VBSX)z?E-6DaT_CqVM(eNEoWu$j zgNNj3DadT6)EA=7ZjMx^8IT(7h|;qv78%lB$_Nnh7)+k6qI$CHob>!`PA}wR@h}w| z8nE8;JqPa{Db&9ExGfUe=v?ZxP`y^`5%q>bm%1fW8|5!q2lYj!OhXORIXBqa`a`z+ z>8xGdM=^$&ifYWMKR>x-FwnG^c;9)A#)B_fd7SAK`MqG1OpO>c=`f_y{v?wl~uQ;)RXQ5mSJiLpeu>558Vh<18tK1z|&j5fV;DrJ@wph!zhF4YopF; z9464k>_x{>SdFi5px}P|Ib~bg=da9YK{Pb8ngjlKP45O?eUeD(Y?x?dZBn*i6rHj! z`Dc@m(upa*6jNqm%G+Z~9#h^CQ|4mI?MXI|)`TuSxY@h(xeSx}{nvpev_x;Ko^@EP z*=g3iQF&lzJ)YTcawD6>1LW(;@L+5`*XwAgj#`~FdLI~UuEA2 zzXXr`ZBv<8DUgB9jeRiw1Lm_*UIQK&dq~H`3I`2v<0iK{NlrwEzBj$A3RK zU9TZm4Rj5M#>`YIk4j{;oM5w;xTo#EA89Kmj+WV}IJY#)zuQ`k0`1se%w(sG^gRD7 zAx8!7jU)Y?SAU;Rj)inBwt{F77JnIkPq#72^}f6UpSIE9V3(bQFBkrN&kCc#s^d96*3SOE>DrqI8|Dh7o?OyeGUmnO<-TnM zV??zKafDEEaLvCy#RAZ7?Dk}@qm)?u+vU0hix+(wD1uLDzli)u;@5d9tX_m#Ob?W? zd_Z1JvYL&l48PWXWlORgc<08~Rh0i=broal!r8W8*S$yW*!J?r%{y!R*vjw*?N@gH zQ7c<2KVm&w+B3RghGLN`_VvlVfj|;8BPM!rcF3n>!!^pat3>%w0uzh0};DE z-i}ZA27LHLJ9{+M*2B>CPWQLEGf9_J392&_i5JqVke1T2c_r#G6vxu(r{!y}>`t-M zK&2@x?%4(b870t~CPR=6H=KgTWGK%JIx7{1gCbT?TT8l>Nq*2DOlkXqI|Tjcw?*dR zG8j78A87a!MaRnc5H6{Pa5>UrS|$vklu*T^wnAz7qbS@+NvR&u)rJDOkRC$xOS>p_ z4B3cO?G%-&3?Y>gYC7eIKDGMYjkT#Rri4oslJa0mXC#GI!it#_l%@VhjXWVJM~D^L0QK8aOG9OVvJ~{P zFPRE5)6Nn|?5u{cs~Q3@HMkBAh17|D6NAGk)Uko##FYMUVoHBFma@j-gfgSUK`Q%X zJA2E&PtFLgMZouQEvB5X$#D+G{7A+E>;3)DTvp0I)iz$uvc%7n&vW4KM9EV7^)zYM ztYIwta~mka`>s@pHfgEYu)7l?z~E)X9?E=-Pz@Wxn~%#2s-@quotYM{cB#Q}4rvE* zTbR$fF!Co0f_j5$s9NNZQW##hNxp=&pv4ZjwcH?{ot_y`sg|uFweZHy5VGRF0aBY3 ze9Ygr4qY(}SAByZiSDRfc642&g8tytRL@GKb*CNCSvdpBL7JAMl%JY#FCNSuJOK8F z^j`-E=PM9y7B~790^ve>b@oRI{?FLVa6OPs_UXsMfPn$)P@3m|8XX2f@ZUqFI*cX8 zh6b<%)Q(sZ`HObibu5Vj1r^@Y^dT1JU7=-Tp18q@kN(&~1MS(_N?4?JEi|^TbK17R65ssIOf2it!D^VPv+NZX#TOktiiH#b{jtnFQK zGI+F|(O0Ir5}H*Jz`KfBMC_=|qO`M2SN{9$F<`I>82|&56v5yd09XD*Fc{%V zvk$hM=KotmMa?fWW?nCN-ijAs8aF$&o;D+&0~LI@v<8|>WG5kV7qr?)-^Pmye2^M^ zHTm8b7avWgV|$(&cM)bfcY*zwiAAlm2*MK65~jBP3NSPuvjS}881`EZErfvm!c%IQ zk|Hz7-zP)s&^oXV4k1ALWC-BL0KBIgeVGod12Md4@tLqm`h})%_~Ul_ z589|a3a1oO&!W)C|1jkJqjvUFNt#@f{HSc%at-3J56oWKv9>R!`vC%nc+%_jn=YpN z>=#v`9g+>_V=WOq()HEp+3>+i@!`hd4>zhBKI|X(@dl>YZDr#phR1`_ItD+MFMInoCsS5kvGW6w+eqVTunz=3M9m(<{ z|70(aval#0>6!wl*Kj9tP9FXx+?Rp5H;Db9DXXPJa2)_>kT)hV0{a!J3ze9g?da{tJF` zwrCc}Z-B@jlNzi%^hmOe`N-_4&~c~XIWIKlKBJvbMIaE{7*8M&8k(jA1*xm(^YW`3 z466C(rJ_Ilx}c&TK%SWmc_Z7z)QUnlvZF9^RLeJ(Ia;~&=de@O1!8zVA3omw0pG~gMqhxxHq{+Jh7hG8J9To!$ZZli8REnEqJVe4e zB6N=6I|Gj8@1C@jE$PJ-)?FM@mSUbmG0(1;^2;&h{HoOXp;RPYi|NZk%7s;)3q#69 zRmw${vaNARNI91$CxMq%DVK(n%c_*iLdq+vlvjq7-Brr&kn*3al>Z!3exOSE0hc0t z9R|yUWx{i{$}}h3ASg#%?l+xWTkiYgawiW#6O@(E0QwCOhh_~aJVa2CXMVp5-pQdL|BT!b{xLNhG!U^BlJP` z2mNI>!7|%X-tp|R0|#P5gH~UwjFZxKga``Nl)?_G#Il-U`+$Z{s|;@kTV-;q6eY05 z@B*EEpgGecV0P3hL(N~beFw^bwaR=CszVvA{7cRl*H^`TnXsSOEaB^C z2iD9#&SuYGRRV`T- z3)!z+NQ>49e}M;5Lz3T(W>4A;1dbiA`B?W z23qthq!sIOsIWFFxmt<$yQmQj0`e&=#m{WUO z<1CM7f<&04nv}^x@YT5mxxMyg^qQN!D4Koc@zOP%x~MnJfsPDezPApz3sJf$Q`Vs# zQfH8@n^*1WPFaI^d=*n?H5*+vZtgXFRVJtbQLNYw0$H)(+zw@2+PC1s0aFsnK=XY#h8xL|A5gYLud zoet+B1mE5mpxQ`!b8=|^mV_<`edZLI#8;F-0bFU~kvay7eH@KoF~=aHoZ+&|Ab_|n;tI*Ds>I;ZRMa6S1 zhrBr1_O(ag7vL_7YHQE<6e9Z`og(l*pr$?*>sdjbZAYsj>u5EsP@)pX38GE8SBiev<_T9+~f{R+I7CP2E%N>(1_J`o60R zDcF+k=srW$ZEGwTQ&ZAXaoU02DOT_m5;RodDfzx>J?&iXo~Bl;iVJyB)%limyA^yT zJ+?1Py;F))iqkIJ)IALd!VpjEo}xy!ghoP{Qx0@b5r)$*Qsn2~=}y!B`tOD_tLyt- z^olFLTSW4E?DWvI(2Os|Gj{(lVG%H}15OU<89mmy1)db1B!IIWY3SL*jZz8@S+hzMYtbFveeMN zvvqoYAc?SkovE_O@(t zfUT2%f$cB36}`<87Si1y^6$6VLS|;O3xaJ>*BN`i9Cx^L@Fk@`l5&faaJ&;LkCNQ% z`^}G>e7$5_W25Y45(9|HC3=Pw0pcW0Eutj# z*Kf^af8Dod+hJwj6W7Apq|zp|G=<@qpt%d^1i#jW9S#}0A4Ydz(k2rg_QMGG+7D~p z05G<~pOv1DA^cBbJ~DN0nkawnu$}DJa46TzKTIGM8n09v=n^xuvycvPc6tpw|+M$uWBVKoZ7wx|d&HA)=# z#PGlmO_c8%95}%Fh=zW2MT=ZP$EY=@WsWt2sNvK#{+5rfdLXFa}HOC4%{4 zdPR|B7xq6h3G@V%GXC>Qa3PVU_GS9#isd3b(DN@L!)2SK$Ml+N6~0BlhCBg+^Lvo$ zjkZw~B75RinfgHG6jV+Px2r9fZ3KWWEkiA^rw{g_YXIubT$*_bZ-F zN#M~xey%G#-dVGc)4I??mXwhFJ(Uyk9o5r&tEcx>Pw%gu?u=^tt+9?@jVaq>%CE(g z#h7weOsQ1czaCR|#616B+Z2;q(nTp$w&vGOm-jx(Q)4Bh?^OEsdU_j(=D*R-o|z=q z*hi2nSJKiGyOQgu?^<2~u6`CHd@sV=|KLQz^z zSA<1$d*y&X>|6mQ)zy^)wazMKW?BDkJdpkGR;wi)@T74q$mFMby}F$%tN4GQWCzXl&YbW_ zCN{n*x!uAhX$hOYR@N}Z!c+n_Y%Q1E6L_i;G+kTLXqe8wFde7<=9aW|1OnF&v3j%L z>#Lw~d@A=P}( zmB!js16Uc+&?&v6VSUzMw-@_aL6dS&R|hcgAak#PMx#hdl3%tp*zdyRRQZ!yG%cj% zE1sr`bpY^ra-qq~Pp&sZlsY4ju+RlQV1j_Cb$WxD_nQ?$#-o4as?uhH+W&n6R*1he z0~+D{Wu%@d-xIj!-_1mOV1y`sCY8ULr`aJA=oS(DIccVYYln7NHyv*k>7AILC9W?;xb@MbKegk*jC5o%@KtP5SQe6l4(Q# z9e$B%1cmYPs^9+@fC1wiK56-w!zaydnf8Ff7}6D*0^w3ty~#dZFp4@^$>A7yv_PWm z9Q%M!)v;~BF2#Bf=Fl&6z0+)r*Z`XC9BHcxQlz!%_&SM5-y&p#kdFU#uDoY>E~^3S zgB2l}D#+y88l9n2yGGU<<+BXiUl0o0N@2Wmq5AbdYMiC$#i#N7-tdgFy?j@AhG&&; z3(xenM8dZ%R{n9dVM}91Jp^)bMfC~0<&|kMl8#T{mJxIRa#0>gv{z<0T7GbtmSjzf z5TGp_ayCDNGwe2+Mxy{@h-&O1g}~!v?_gBpD(^r5RCTV(IS|!Y1j+-TQc}>?AB5e8 zhd>=D7~>i%^rvLv6#5oJpe71|%1nl+pp+|`bd9+;s1Ur^2WqsDuTUr(9ZQla_4x<9 zX#N$yI83HCHeKF?7ep-(ZYnH?qKt9oUgo1X>q6t4J^@7g%&whZpB?EX`@J;~S8+`H zJ+|K0BC~!rsUZvXO6hL;9_#T)a8?Utst&1>>MLCi0dUz$04a4EBa$ieP!-Pj;SOx0 zeY&Y5d7|iFi+Uv|%I2J6F+UYMpc)e+wdG>?B$BI*hL!&Yus5tSJV)Ef0uQ_>^t-CY z7LHe`gDM_MQIkGKMiJf{E}Mm9ZDa5~t7fS-2Ec{iq{vPfgU}^#wJ~F$e+*0{%F!hb z!s$chMC0_qK^MC$L@_`4iLR_MHsA)6f`TNtc%57?*AgyInodC_mhDd8_G?&kR2m_@5THtB0ppt+hsu%kAnzeZl)gX`!H^2q^g@ zQ*p5iQBA*Ol2)sZsE~k&sI14pM?iK%)DUm+!~G$g(1Rfyl7YqdC;JE+BGKtUY?!HP z2tx-$-ZNDl1{^Pi7=fuvA*K|A_L%^%io<|x%%T)RDYR(D-x5~X95jhlCwn!&+7}Qh zRtGXTR%{XsPcpfPW3wNCws+fNIL##{PV$f9m!dCMlvPaenog5^O#d#Egq?i0N!RH> zNV3y%xg2TjVgio{5UtkC_=ciS#tfe)%n zBVi4{6du9pX%iGAB!{FXbjIw^pb7pBRap)4%xs| zG%|I;BQy={Pb4A)K3iKgj3fnt zw&5-U1_-81FmO5n(j8@Q2~x)D8G1E(_m*uMlV{#4gT~5UM`Z#e?j@lx>rvpdWyBxtbJn7vIdjv=t&w0}P%)2Xss?o^3S&ZS~Eh)yW{~ zR&GcNr$=UUEs2?BnK#prO`UdVf-4|yxC;{GNoT-CrOZym?6G=Ntc`sKAHG+$k1R+Y*{puqqbvxe*515tW%vSi*%!LQ5@4$*&Y*Zl3`FJ% zRCSC;Sh4DP%04#%O8}lMvaP+2RxJ;vs3&Cy)zX!2n+%eD1qV6Q^Tqt)n?PB#i#&WO zFvoh21R<&FWw|9Y*6IK(jL+aEK&ec#?D$f%$|8kt_nK)yz=FQ;DcEEImQx7>7K8*x zKjq$vur6T98Nn!xI_*j7tU*c0E;4bBECCuFk*WnQ?5_&4h|>Y7JLBMYc2n5SBqJkr z*AW4*Yb^i(daD9}L2H*Fd~^Wpasccc1;DN&17N2Obu0kP)3Cwp%thct@gnXK6UvB+xw%jJP++q$PgO(fUaREG3Q)?BOk=ATM!hE?oYq{~LIa7#k zFg^bp#did|!8G-Pj;;;Ge}3}cQQYSJ-%;GPtU__gmM0d)>j*CP42p~Q$ACcQp24-E zxO2!WMT`Yv?s#u}fwhT0>?CBkmESidVi${Ad@?PQV_P2`t@?W#d$jxHZbt38*>QfU zw(I_z7(XnYiaCe#F=JwbeYtZa@9@8kHS7rXiD;HQx3N?065uNCy}uq0>gA75g$?xI zKW}IQ-SQ3eUDE1Gy?cF4y?Z+w=nyULx^NWjb2^IlK<#V_cXUeayt(}GXWPCye|$Fk zouraAg3CQ(HQ|xOW(xQgZ+6s7F_VNj2`oY~4D83<%^T-6@Su{xZ3cTCN`~rvj`umK zN!TG&iQ_X-pTZ1r&`X{k7TJV}w#|vR1#LW9C0X{N{%-XITDpFAx|`6+N-+TvA7}KH zM<<4LA@?`Rx1M%_bs_J1Ds>?;&*kr)%1-CE09=whVTcL}2%_<Q7c(%0Wk*a0n@NpI51ZXs5E&>RJBuDKsXgnUZlq8IFr5jx6meUeM zFmIe`JSW}k@@6W_P+D$f^I=6S?67ED)hR1S~HHZ~%0bzGYUr_7~T6E%JxxPgw)`LZ-UXLGy zbZbaNQH7JPTSF4if|cO2N$(w#`sx}@r$8GoNeq~7YbrcT&FB^#&?REI&yVYjB9?0& zwkvelIP-`tyCL&PrLwKpR@Z-228l(YRr}ew`(IEenvdF{yDxI+?zy6kbLFr2sk?s2 zi-UftbVFc5B+1^CR2hwkf+BbhfvoruVTzR>5w@kGfqxOm8A|hx*isMC!be?B@@UJA z?1$CziEUE1^x-xq=SuFt5{T`Y6N%>21>hV4d?!|pK#~rD>?s@lfkeYk1j^QOk6BmE zsX-R!Gj)eWA^$n=5nt&OFY46OHYGQ#ty521KYpP$PXR);*{TDHnF3||aMH}xLG`rF z-)>ExChzG&kpBdoKor4Y#dZ*yc1{(rDcRP*xqxevwl$J2B8)iEdN2o0yNU8x13mkB_$Im(3C_f!z0AMu!z`*uuygk!c6TBT^&^PLKMt==n z_0=hJBrCH#uvD?F<@c}|biUL`5izO_R%_6nS@EfwWoFQxiIC0NwJ`WM*PR6O`;DnQ zJn9t6;p}$@zrPde6#D1pq23=hI{IUG3YCnHq=>@0lYKHh@nI>gap_DofiV8dL-gQn zjaOCHA1NDx+*UV@Xg^&Ur*;dmAlXtXAolHcov}&=DRNL&Bg^HM*~B630YE6~8d=!0g)^mFN0{9w-HqK-`rQ_AYqFzjHGCbrVi-`S>N@ z_93@D_Ii2_VJIKc19Ru{9)t-Qn5%?2-|T6Z_vrz!P_8Td=Z=Igx^R~uOh~vEg2}$$ zs`tm`lX@_G;b5bE;fOR}KF=4$t5ca9!b;H?z&TMHqD z{YOYSt4cX5q-?2DwuF?ktCX{)Uvma`sm-}0vzNs)3zvj^oRO%UzRw36$g?Z^p(MSA zYXD&mJG+UHtU7H-(o&He=s8!?X+u&tzNpiN%Dya}y(J~fT|T0W&{;zj(^*5yzSNVi zVS4E%nT`oECtbuAoU9!Hi^1KRgOgRt<>s=ZhE$RM*?GWyXEt+>(X&DXc$)n z(dU&uc-ZgD9O3B{22+KEs8ttEsk{Pdp6W03U5q_}I@R#m+7->4AJ>lHy(^xFq|0PD zv_p|abGZ+l(EeqcLbwKlzFe?{4!0({qcT9*+T3}d=d%_2pxzq5E)>9GtFbq_Tt^h0 zzn5)tXCr{k@s}5yGKM%6@XdW6yd--zY*-T^m1JwFY^=8ly4Vis95CL$JA~p=M6ei) z=H8Qh1%6(N&)a^?SB?}bj}eRp#mbKIeeT^4)p#geC-J4}zW(Fk>7z$NwM}HR;&D)( zu#q*wZA7K+SU7?N>yVZtiM{3*tawTo%#N-?DAi;K!N)SsCSC6;_(3~==Ial7dz_u zZm<&ppCSA2^?rT$1zN&yT2;- z#+vuwn@p{F?-Nnfdi_8+orh=p?u?>N=z;SuoA`And-@@K#3-}>87CMYe|{SHK2>gj z0UvKN;rbvd-e9KrWZg`2xV9*7Vo`p)k7!zyi{+X^j7QwEbh2%k&9^8dFUD{z2Pf5H4i2j+N45*Tq{O0jzKx@EBCQ;x z(?X^O%2``F;bsY(aI*y3$$!ii`B$s>Q12fI*YvoBXZtF*?EDvEz*aj%boK9zcOVhH z=r^WeJPX`nozXJn;U;52&GI3C0H@@Qk;Y>b`#Kgnh5ch^52b&T;0L~cj8_RU+9O{j zRDhv!0zpXd(2;CiU~--E<7e1%fyw=3C;NI3_6v(fCex};a)cweIY4#qYB97Bfh?W~ zwg_ZvJ`wyR5y*7%muBkm+we{?zKN+Y2xM}rKvdxW z4sk76xWng*&0%sNkegKFfiNQWOSa+&1u9e{j5XM>k0el(+8>BRcBJC;Ce&d5;*I~M zfIsuE4fwy?w+5d`-{pXdx$dqUWzuE@Yu42k=%6Dm4ygGDne;bzFmwNw24m*Ee=9RH z|J2URJ^eLvqC6R zMS^fad8zaQxSb|aHG2>~_Lu`f_)vslBFEMqe7xPQHO2#SdKB7KPVO0!b8AveDi)9x zCB_iNN!eSruk2y7EwQFHQPRSOqjbWfJ2HyLW6(7xS$sc|z2(&}r6L{8#95ddm(7`1 zj%qsTl@qg$A5IW(k3Aw%S6X0P$Y!eQ6-rv-55fWGnZi?6Jxy0nQ`Hj(=|VmNR)?o{ zc$%OQ9B_3M8TZ&mwj?ctL(^dC$AE3vsYA?!*V;_+jsN3JWp7M4s|>(M!}6sc^PkqF zjQ0f&^MUXf4B6mk-xs()AF|5pxP(`1fJS>1eStAM~3Nul4hl39$ zJasHoh@TRtPDN?49w0vh^Uwn@(e<(sBUBG=8kz7+$dNMlazQ6u=UbV6yEI(GM)gZB z;^YrfE<)Gs2Oy=iJcUo!S;%nFzQ~z zwYo9Tr)W9A7(>!{1h2?5?G$|iHxFWO7b^5auL zcLvg80|M8I&I^qwSQV@iS_jj;0piOEDad4B>AWrX_5C9r)wz%F3Sp{PyOkDF6WRpN z)eG(MKyoT9l2>q6NRSZ_saz2jAy?UVh8shuLSO5pp~Y2sQ=dx7Srvx@mDgqqa$7L| z@i!KWv*8S+Vl<|cZ$PU4&x+Cftz{hMG%+KcfS}2?wmMGpub;ojJo2>i7d7Dg#h=7q z{7L-9pTuAMN&Lm1#9#bL{6$a0{N;qQ2RdM;1W?e(7`HEx6lo(XIa^k^lR@TS940Ua zNN!+HfjK}9Ay<8Z*k@0XAPzGJ2?oX-?C^{Qt?M%f6&I~N8gmT7imp+w$T0_H6#Lp) zZx5>%hbjWa(h3!08y>xys{z27LsRPy)zH5#=HNXYVh**$K69ug_L)OSTqAR+N*$Rw z{8N%nUOS#O$mpMn)^O0Q&l>FbTE!Y@L2jXa*5J}(3X(ujZQk_TXAPlCsEnC7CZ8`* z@gPkeg*8~&8f&mBhFL>s0GUS((D~zK4OCbpFFtnGKzYecX8$@OYq%pBw+Gq(pwN4O zHQZ?#hgn0+IF>ae)zvX0n~BDr2ipV1#4L6TMu>_GTu%5 z)`QK4wjPtd^VB-Y?hVh#Qz*5FTK4gMt7;7?)=dKzX8 zORL;^^ydc{1^Nf|%buF8N2nd@+Mkc1t%m@eFoGIyiAl%LTl%Bxx4#PBLI;L<%kz`9 z^OpYTkH}jz)YjmyahndsDmBhBS?4TvjKnz$b3(5MIm^VrrbDwB%`gl& zixy+xEa4bZyUtmZJ6%Xp9Zw+NWGpK_HgS%T1FNFOS*%EC0M4QYP?sDRXQ4_eJa*3F z<&Vx;IF~m@yLE7svk(t{jCw0(9LrgnN9HVFcIE9Km!o+W8+@xy6+V zMf$?#DmV<0*`?gt?i^;pIZWXk291}LTd2CkVPHFv!!(`4r~&6N{v;0LPvS8CBo5=KN7V7uHC#;rk&WijWOdNOV!peKx` z#%+|O=17h7R+|~ub#WnUrPo=VuB$)XHR-x^!A29Z1dO7tOCVUQuB#7%K9L_{xEk-| zQ9(Vi9XP6cGHK^(8M}HQx(Y#emhnHSJT9$WP>oYJN*G3V5p{D6lZVMPuFCBKf}Y+ng7V(SQxr z;+in8=lhPj-MKp*$CM6@GNr?ok**rfx@{&YW5%&esjti!+3xgJaX;1^*MYl7J8*+# z9PU8Oc=Kt9(xDg)EWnY2Sz)vY#E0k5HlWo2R<{l0}qdO;Qp~4 zh#8N)13x=44g!ylcHrkN<1hqb#$)fmgJV0e|8pao{x6R0K+JgT9eDfXI0zgZ?ZCS% z<1hqb#$)fmm&bPC&}av~GPVOT>apaYFq~%9__#zEaPwoV#Z_dzjzQ($Pg}-e2*ixX-hn?J+ku0l9r*0n4#bSd-huyNCwd#D zvH8j}c4)K%zi1hUArLbjdk6kvYzOWh?Z97;?Lf?U>>YUb%s3plZ?psNv5dnIh#8N) z178{2fd@uA@DF1<5HlWo2YzjK90VR7?Z9tX#$gD=jK|)Ae;M0>$45JGovs2Nbp#3- zkG%sQwt9zG!Tv9d(1DMQ?Lf@9)(-46>0WD3mb++Wmi<3zEoo~n^UhCvn7~S$TQCi^ zyV_bL{}&xcVMXg7Y&<$s9aH0LD?Hlx{vi1sQ{!tZJlgod<7s?tg-07dbUcl(t?+2$ zcOOsVYb!k3_M+d5xU z;nBtquBm)BNM6@gc(n0D$J6-Q3Xe8^_wh8ow!)*0-*-HXudVQC;}0B9<7+EC+W5oA z)A-s7k2e1J@ie}+!lRAv4+7b-t@AY%9&P;Kn#vEa^EDM7ZT!%h$`3WZw!)*0-+erd zudVQCpbkPR##Y! zdo;684xBgteLHx%!hsb|Z!VU<^89#u^Ui@QSbo)xRCC9=Lbw*?XG64+U&)3KOcRRa z=I=Pc2c~~wx+~jO6$2HkYq%SSfJrm82rt!Hw|ayZ55P~jBZZOkIG_0&;-!t}q)XxW z{;qg@_zja8M|>XUJpRyG@y8nFXBSWK&>z%U{HJp0+{79O`aeBz%(g}hD{?MRI!nE+ z@n1rob9wTV|5~N|*O2nxs+9j`DO{r{z&%6+Bs+tim-puet^D&DTHLSJLIvMNsNhTG zQ@*kMIlqL*gX`e|?5CEr-9H%czszM}Q*fG|9c=<0+WMnqDGxVn_s`K0P@?iri?fVZ ze)jg%j$cr`wZ|e2R|fl;>L3P{OT4IR8o{ovh0Zwv?T?$iT@Z{g%k`|RhT zM=cQdp``rc$$<=lOFt80?YaZX+y*>7I-t-35sZc@0D+P}dZLNnFFxhO?{igXmPNrSPTIoVZ<^=!9Fak7+yh_elM)S9ni&=oZa z<>)c!Hk$XD)Y%q;Zeu(uDc>SH%0Ci=j;P#ZHV6KvD+ZlMSlJvF;bOYkIQ|wQ=!RMQ z{bu&26t|x8)};JM*CwbRFBjkw@XUd~nTNan!R-bmKMQ`YnLD-QLK99o&-4MU@QWW|*J}YK(3UWGnZ>`XKdxhQ{ZnpU%rnD~^x5ilDPJ`z{ zRhb3F(?J;KKS*5~fR_iu`%6yeK)GXxL2!JvNWvh(O3qXkAJ!P-BJyx~$JcL+4rt01 zN7Yk|=6_BaugzFwFW~5`h=2ZcP9-j%L!`i%7H{@GhiUb+a~u6@JTA%JQAwT5@1WTE zs+Ten5cZt(Rl?#cRwH&^F-GiE!BvZ$2*;9z2G9T268nylwZy0Wh}Y#=4N&0!AfT?U z0Clwh_1e_{>a}A4rGnq$fVwKne!0RZ=))kOZi$Dc&q)<)Q*!HSU0zm@B|J-k z62hgf-GU-r`x?78)8N5}#)bxgB!j~&@09Ty&5Qv+C8dyo@z^Gme8K(<)c8`fKVSPz zY+U=K4U8DFuMyGX4edsDl2ZIVXONN^0n`^O0sd`gSCSRf^G_{i-u1-H3nArxt{$`G z_S$y-5kktjmY`LU!d(Z{v<*yXjk+s{_GWOs_T) zwk3_*&PARinQuY%x2>fjDD&uP*Z0$S^t2oMX*_0>E%zrD6a6#ejo0?0 zD@i4>-@?X<6M|x3NYqheuj|YOR|`0zjloTJ&knRSY)Q3Cie-`&{a)F6ED zn+ahWuR-{>K7?;y8-#Big7B@YfbeZ60Ky8*oqygmD&HIwK0E;6d;0*sZ*2g+X9&Re ztOCIIo&W$F3V-UGiNZ8qL*e`T5Po275dO>%gg>(i2;YAKAnc_1?mlVe5jEn@^7S!} zEvmnLv)P$Sd)FD|&YCuQ-)v1A{fM;DakIZwg7bb9;6XJ0b+;$v7S8XhwQzoi5sh6t z{>Z@1eE(z-e;+`9J*2okoRoidq7~P7Pd&v(#{7d-c=W^7(}(=#iu|{#ln;lL-OKoC&yBX(k0^E*#`w?8*OaX&M$7$jctEQrZRKWHOQKFK4}Ok!l*vl&D_cEx zhva*fvFu0%c&8qq`{MlQQuTupRmFCp)cn$PI&3BTVoDdE4@8ag zQh70H!Tvb>Jz0gG?6t|-xnNU|E8laklG}77q;SaI>a=b8;Nfrb&J|qisQtX%$zDt` za;e|dC%>iKl1Si9Q4WcZsc2w?aqOTbMTyyu>-JtOPM>b%4K$AijIDHcwzU)n)-D7p zZsjJGrHqqwVAKvreX_^L@bO5jm=hyqv0e8 z8WQZP`JU-<7TIA&I+4KRJWFA#Xjy<1OaD8$&)_?BJfS6=QV34dxvQ_i)K8=Wnfev5 zpf{mR=z%qdodHvSzt8H7!-5Mi)q(917889~Oei)1u%IK`m1jq{h)?i9jx7kaGky=dg1~vm>;viaOb{lS7d9xNtq(I#TA}0~pQ|t}S zd*X>}ukEfsuhH1o=;|&&el~dGNns7`=;|i5TKZs_bg8){5U~aEHLpwR=U9r3?*%L( z!4}-I(OfF%qupp5$<(i%K#Yx4S{_=d1vhL{-P}0w$6c?~eLKzU-Xv{Zqx)^Pq`MR$g8W_L*XZJ+2`b}Z5uhcz z>0IZPS6W3AuVfM??1gwa`qJL*UnX}8t@TnS#H>;<{PY0dlLI%ib)=dD+;OnnYh9{r zm#Pfw5SlugPF}vL@XgD;iA#BITmA(498!~_a~Ziv?@ndKRJP>9SC8$6hD$YUjmK_V zxGcQw)Z4E3ZI|A5UWSVfo*zipNSLhlPt0a-NKnV}XGt*7x`t+fScDkh#c)e3$|47{ z3RI3#B5TSpFNEWFbCqFc0$2-8poO+X$_CRsW)jCF>AujxzQ70R%fw(`A{q5Du>3!% z{#d4de_|%}CvYYY{hM^PB4lUnj&c-m)F>pkZ8Tt22yqHqj{4wnqQ5<)a$L z`%2BqFb)S3T*5>h!7$FAG)&a78pcluMBOoF5TZ(39Yn`@(i|0{x}n~^eJY3sSDGh> zC^rKgCq$>9n~HuLy=B;qg{>V@V)e8=Sj?i!!MTn2#6~Ood5eA(TxQs=1){+N(d(1c zsOfyqV}WmL)E$hT#05H32Pczs8fw9mIfAZ=iyqb@B5<`9-I3b7I)C9`cmMisqHlS@ zpquF7hI=&LD@R7%&#+SSXnYWb4qoyb%g5Yk$qIbSRQCR+n=QHHsJfVT9`b3}l`|Kn zyl>gYT4WX)FRHG6fEF;~swnN4%ZIp_OrQsqcG&A_Z8_n?O%+OjrZTq}fK2wubn6)8hDqI8L2A@egd z_`76Hf+*!bJtYz6@b5LsKmN{gOL^UtHoN67`uo}8z20kWM;yIcbw7Qv%`q3pwajU_ z23Lx2tcuT9CW|8#*Fe5J^GrIR`;m-^+o08Pv&QHxzhx@>4mZpLNNB9~5UhB_8g|`t zfFaR?V1XlWk@gb5twF3W51PEcT&SDL|IEzf2S=}#W4rrLC)!!~BgUr#;S*|BGjI$i zC7h7u|1e?NxpJ$Svc5TKzq_U96B|HFm7+TAj=(bK7G9;F75Isgg&sVj-}S z*#xDqgn;K$d%G`sTSc9pnLH0&~8RU_hH+$$%mzm=Q!@?iHx)^mt|oII3CX&XsfkO;iMy|D7a0$}-j z+F5o}md>#0_7!($f|`bW=Sv%<9Cx%G^VW&A>&t@5Ym>lc^_GO~d6M7X*3}l=OsG9O zJ7^wfz)gNOE{9tOd+AEAmETC+The@GWf93+Inmn`&GQgX|u`J zmfGgUq68G=mpV{7E4?YkOrTSer6)s{E~IyIc%=GfMdncaP3gYIDbI;NxZmEWkxm!c zN^e?ynkr_fafL1kRLz3K$->?RZlGDvB9Ic`X>o3)H=)b|A{#hmw)gFRsqnl3#``&(8O0QW>rq3ms>Owaod(Yd|O!`DNt7%l%+SLrgl)0T!7_jd}j!-uXQ<_C{#cES3 z=yfxlW;a3SdY$u5`?XImUIzY2S3@@IHZwA@av=YgsiJdpZ*ql>gC{GXqjbmDO_%pR z$}k!$pfXK08ePA`x$CG$J(IOe2Qr_nc{Ka?SUGe~1_cBD#$|Lqz*}=;lbd&Em^Xr= z>w`mJr8hWr)3vFau1{U23Cn!yrU#~uL`~fRhc2@drVfo$n7XDuZr7};d~;=43)PT! zCiZ*EJEAG49G&QOz*<|lz}cZr_)LK3mDpE@Hwnvc?saZvXr1#8edM_>ylfMN6>Jlb zTVE^(cqwczo1zy^5ztNVr z*aRHCFY>OX8sB&FzB9Y0oo1#6mB0*>aGDJPPA%?tMS-E{qFP4xzy&CU5^Nq;5)uq; zw>t!OijY{742xV_LD6bqFqB0pP8g;k0}JiVi>TZi>cB?QZ9yVoTl$=kNrM*Ffb{%J z2CcvArnyGFoOh04T^XRcvvlqN76pFMVKQed@0Q+nf?E3B-kZ`7hKQ8|y&2TBAl!-% zlH?r+v>~BkR*a7huw&`aOfaQWdTQ%SYls$O*jd+t9H%Im=@rUk1B3%+yRY`GIxa9H z3Zh}s3^0(M*r#q{KV5>G*xC@bSID(N+b zTdm5pzbY%RSSQE=OVC$q*?RTnUV5`8Dy~X#R_`)ToalDERf4lpf~5E$mR#fu~a=WQzxX22Lx(#9;jgiLY6Sq>kWtaw8M zfKRA%5J`|`^5(@Ke*ctksK}Lc^8v+)2(0`j0go}=Osjg@UOmNADI4?5m6U@2L!18dNwUy>WVIQ({ zMbuQUf3W+md5!mK+j@nPDvMo?&2PL>`+7_ubh#!9)5p*lKL}6O=eo41hMwX9{9lG% z6)za=LhPVTv^uc%k+P+^jV;Y>3>ePi)_|HOZr>MS4-E;u!cBL&)beDh37-6pIZ_- z5>*acrHd^xx9+#W;~l|3$vZq5DWp6!-ap2YVbjVTV6Sy< z;lz*uv_J)rTWq?#wyXT-3X%{08O2`9J9d!AUx!uqMK8oxc<}v3-p>=) zr&wUw!ePUq57&neHx7SLOc;Ki{qg1t@kJW!(k*(Y%uW32 z!a|*U1bK2DqD4odm)uNf8a{;FHDp0;0%}19V*mz6LchCnE}Rhz6`?vY^IfRAC;Tj0 z)SDX4OVJtZ|9n|uTU_GZ`M|UAZjvuvQa19hwYxfbC|q7zfCZ-N%FN4Wp+0m8b)uJt zcX-L)^^$N{m86-bsJhzivBtrEleF=>X!iX?V1wpzVHeSnNB7oRpb6Um#gUG^3eGE5 zC+sG^&{JgRDoMt-rlEZ+zy>psI-eWkq9^@pbor22Px>%toNf!E_qCq5(ayYg==Ge4 zvAjzBax>itXv9Mh>L; z6}a|?0b?43gD{MtAa*B}HwUZ65vM4ObyZV@|A1Ij|=q2l3=z~QQ-KCWyXz!ihBaODX8Z*=*>vV8&Uhu)r(UZ|!nlH4h55H1uE z6_^aZIVxNfP~i)Gj9RKt!Qil~y9!j;RiT1a1T}F?2zdSl!V`cKCd}0_K_C`x&>fwX zVm+(bS!y-SA`z@pJd~eHd^pjvDH?+C$-TbX=G1ODc2`kD zRLSZM!0Le9Xhs|6cO<1Vl7i(^(me3CQsEeC6Hx~y5$=7I1lfpep@<<(Q)7w9M(;ob+X&d)d<)S_&P@JD9(e$*>LrorQFFB);P%x!pd5rW0Q#*hU@MfL6Wp zLEXo7xf9<@M#Y57t(1$IBEA|6WHZYiYTAW{)&8XHfQ$L>Kzem^(}X`Qf^7cucq5p@ zBJr(uTn{yLX(FAuDxPr{1rBH2y_@ct6}&-=Y|~1$H@iPpaQW&hco`K`ySRH}1sAQp zg8F_B^p-_GNS?9lPU%BHl3@IU<7}nnYDdWBdCU(Y=jzMP$MS3)VOPRc7jl}hVJFw# z@I=4i845nESkr7SVHUj!F9>0d1)axu!AUPDTjgJ+oWMwa)aV2yTRl9ut{htBSq%i_v4XP;J6i1?Cy|EA2yRVm8(_+JX?Aa z@E}n-?gEt|&W0Kt*l7W%)+Ug*+7WM8b{v8o03auy0suG;;cLeC6X<-{I(02zk-20l zV{jdz3K&A7QxHLpaW6PkZ6f$)S-Di4Vbfn@J%R$-P@PMnr5CeO$ZB;0Nl-XoUwzcT zS;8wIYzd6KnmCe59GN5~rApCgEfV2JC0Z&Bp)f`Yi%1AOh2RxKDeU+Ia#<-;)>%^$ zNZlLUT)_Hm*(45@VTCX@O&D5#o3JNeCVer!!<4cu+GCy`<-(rq1Fd962oK<{?oA-+ zrr?Q$6KEXMc0=05GH6JEIO5=!eu!M`j*N)X5kj*tdiD^pQ$$vi*w2iIZze)a%DXdk z+l3YokcEE%vW(dxEVK*6->4zKGl28iPJrAga7_2pBMoLSIPke&k?u1Ce~ z-X>+U=25pMYJR3QGO~5RWPWDA7&X&{ENgnHStkqCWJYoit&oR^vk)XRDoi?rOs&Y= z`nGjIg)wLmNYLMe&7ZC>@RA4M;2W;lP?}Zzjrh5aVf_79^(F zQ9PN5J2Y;ihu}_I-KK)%@FY-Gy&b6~Iz^^4X#Ch2G#v@0Y^IKvB-;TrPDSbfTAAiw z<&2zGO;+Ce2q%ryvC@pb1KsD~tDS%ZtE~S*E}gln4ZvFVL0r(fw&<{TV+@`5o!4kQ z_@b4^)gcBn%}F>N3PcFAY=tB$O z&o`_C^=yc&fZyVnr=aamtqj_c88LL1;K}?AMj4P<=vF(w!Qb+q)X`BHhV4m!E`Vzy zg~HzMEK5R@(|kE(cD77@1PUSzgM_sXl=Ea&Ch+&#Iu^HqV{sgX~)4xCs`?-rc)`-+0{zTY5T34sKFRS zI1w{#>SoLIN;*BhKlKibG|O4Ns-5nfR?Gl;9Q>NlgZ9j?+9=f|{s`AY^I6`Uxy^rU z=9wxL&erNv##(~Xt}E7i=OzK(Wd3^6lj0N^B-3I}KTZ033Vsm~F`XOKlO6Cb*-B-n z1^es4q?hbRAUX61a#3TGOw@@?H8+`Q6R}|n!6sF5@bZ+k$(E8SCpi&-QSr=*Y?W}N z`~$PSX8DjTREr4xce$ymnH`+OuGV+wh#Z%d0)}ri_RK>8QWQ;`!t}kESeG^uyg8tW zOuPJI?5Tr847OQMmBR+|$pJY|G;!mJd6bTnQl+azqvX6tvux&X%5a5m{t#OU+SI{2 zHK#v%-%;4{Z+h~0qt{j!;O-`fZS1vQK8u!5a|N?}`790zLMm3r%V#+WUN-lzIC*CB zwIKjAUOr0#ZxbN=1+#R4G4?QXX$feokfZR}o6(s@4uHn@S#05cR#q8jam$!pDQ1?% zah!sAc@aW8VoG_>Fe7m!bdvV0*GizLIQPALb|&^BHf2@Ddb&C(O%rz7Tpit;zi|p5 zEKkvCcwF2`X-1)SLM}OpTyhf7n`zKwg_(ep*?Wg~pEJZ8efDXi%Y2`yGV`fppN3~H z)U3I#GE-7>teTIqn|cc5j$;;BR#%Xv^cj}YvujH!{|zmqJN_apr0ey-9AxvhoLxpR zC>lWXWsJBjEy;%m>uGsCkHvcKJ5oKkCjm{Xr(;rd{)P|{gNsF3?b=M1i+hy{6Ah1n z3|vou?VkY$a9=48K5Bc220H7ne#IYUP30Nlz!iRf-OFLCD1JPbfDQrS?I zhh)X30VNl~QjFCY)rL~?^0BWZg>r=2IccsYEvZnWpZY|j{2$%&`Q=}Jq7fVlT2$wq zzWpz~av$I~X62SGALvrf9tk}%DX^Z=BHwty)Y_`^0APpF|oGvgTddsg?{Bb$!e1;f@V)5dj2%y9)93HhrM%8 zgF8@MB{nXm8-)faA&JFp)tGvxyzL=|uBP|tfe*-N`8(TPK&Oopk2t1l5^f_!6oUW5 zR?gMnga`gBO5UylXda_O{JmA;U3yXr`}IIw<^BF(!@FDMOxbjo8es2zC%+85@gcoa zVjsVfB=x)iFlRvKz*Pk%ugdo6Q>$# z*N#D9fDkA9J(2d%jOInNeoj`chjX&tbTA^7jqgGK-86b(7G2wL;P34_*rutUiq=^D z?e`*tB<1U#Rh}!~x-{p`61JsMrZj*a+AX*XJBNHf4x%QR@ybZ(U69n!t>#?OL3EXu zHp;_R)yK?tD$NNaxAwYjlD<|E`M6t$Zv8>1>s?byd)U(cB&5B63WmrXW@P*Gko5U! zWqZJ~eKDl{yj>S^7ed(IY9Tw05V?bqVR*`aV;XxfNQHSo6TcOty6@B~#z<%cm!^T5u$QuJmrnYPK}N@$nd6dFk|Hic8_6W++a-@SLkC>rSEdx_h78DD*%)NvGcAJ6*VJso|5 zpW0frz<;}C+ZNyc`@coh_-?cyap+?&(-K9MgIFSP7rtpnd|?Yt@FR;UArPgeCk3!t zb2>9YX8xbqFxxn<(b)GvN6n2?WCy%l-$5WE^Y7_^`}pqg0ydziNb@&hEM#S?mW{nh zh5u=n&-(908+Dp>qeq;gu={r-ju9QYI^FF^2Oy0c#VM&ETQO^qzQQzMs0J}5G?%=a z85t0=l#qD_zu8Q$djq?09}V7tiILKXNhtT_mn&f_RNpY|P$R%#hn=8vU2 ztJ{kobFLpu6CL)_HadFe5q(Ar(~N#_4kp~slrTPCfT{iNC=}U+;jFgT?C*4^)y0)b zK`|i=0a=xJfA3544^1Nk-ul<9IR%(_%xMY)`%rYt-d9{N$^t2^D2u`{P*Iv)O>J`3 zfkN;jgDAhd$jNLl&q$lCz1tcvJZ7Gq8ICjz(cD}#O$oMHK26q!XL4X*oc)S^?&HRSKbj;elj`y<_MtD)ISB|i z>VXbvm-rPK;~F~H{S_Vkmh&WzB7!gf_cz$P$Yc9!`i9f_p8Qr+Y&_ogH&msxyY-;T zuh#?hln?lWF_Oa|k~oR&zAU7n?Y_vV-LbydzTLjq9*i%yhA(o!cLUUlp7?T8_;O?Q z<@)etU-*KV%!^#*C0^}~yecMN?#Y*U@5>X0jnpYnABGJTYsLYt%@_4IA_^a|OyDflY6Tj=2;3{m`Gh{Acimm}l$+V~=bYmzR(6vWpn z(D&n-65T}lE;7)osZD&uaEMh8OXL;G{%SFO!44z2$qk0oz^-rHJ11rNs2lKXD=|gi z5d{Q5ehh$SXU8%sJOX%j*BH1zOU}HM(}7Cfp4doEb}ijPdMKgQlaJ8X*-cDmYJG+G zNJX;%u}~mg^>(tLzY(wLZQn=SNs2Y*{k1~lx;s1AT}?-)J0C@@0wBK(Ke2Rgu(2=> ztvpr&HgaSnE$t>&M8mjV3X3dGG4=!2Eig-4@Uhz@cDr?@cSdo>N?|XHD~5g9I3i#v71VmoJ;l6R?ABFJ=+HviboF#n^|ZcvYFAHL zcw(0J&_|5Oiu$`D7zuGW4j}SItITo>jYBuro8X_aSMhw=QMrpRHdZa=-oyw@?LhLS zfFjJuL@^7_LAzuK25^F&t= zBgGlEK8dc09H>c43W8m|uQ=o8l`hA7<<5j?3<1+rf1^6{YVOwASDm@=B1iy00~EyK4N$Hq{x6yW2s?+L5Xkk z#YDdllOydWKuq0DTM#symq9p8&NZu;oOxgP$ukkM!u%9=Vn0sDz?#s@@|(M73{1xv zHXZW@Y5mg^6%~vAy03w?QdWQ=qVf68jX6bvhIU4Vy`EWGS8$%;qVAmd%_73|U}TjZUyf-Anwk7H;Om2f1ndMlt=(u;6!Av?anX_bB1XfZ{Ba;Zc^kPqu6YXY&?;_ z;HE)Y=gku67N|`wNj#_!Lm9`TrSEZ=IDcL*HC9rbT|8%nf1s5w-oz42*#LB(!O!I0 z?la44&AD(A+{NX@aDTqoTAb#JCSiW>jAf(yFm(Q0Tg(B!=YVj}$@fk7HZ4OyHU+Hf zZYqtWI5LR_O_V=s=Tr*o`RXX#ET5G}P|Cb|Lk zrX1*JK{lC0TYa12VUr$PlSc3K%S3WgGH)tQzge_$qP(WwX7S7;wE3I^>WVe|i=FZs z8m90jAZVI_-kArA(~C0?XayM-PT+JW@b6}NIe+{b5uWe)VM8WH*DRhfrWtnMVc?ic zXpPwk0+0q?oJ5L zh5_+p6t7z1Pe$^{G)VGLp6rEyR0CC%j$ts^P>2wwp>SP+wu?qWOudD-5y-Tv(Hyjb zw?g2KPQP!pyfo?}CWWS%Rv_&%agC5q4~|F-v_Ld$vF`b4bWf*T8zKg3o(}ul)IF2Q zDN{R`8_E`40AOUVC+^-eCg15j{{Td3X=$Z6{eZZB4izKe@PAzCops*3-?imCSD-Pc zTOPt4ozBbr@`2*{%Cq#HE4_u~<=&QJi@U@0o}(IOdfQ`_o2<&Y-kGt=(?gZdDK^C_ zH$fwxLzUZOm7Az?Yq1qRzFcf67K(-C;;dyF>UAY}Z50_^E>5S}Ocl|w=FA-sWjjxbo*>=BF{Izauy^7zH(AvD5>U>zhWwA9Q{v|U&gd;fW2&8 z?w)0zuMr6%dyBuR4Zb_VVzf5TqANto0VmF?7>D8p0j^8o15L(z7E~Lifu=%CqXldN zwz%h_GmU2J8d23i@6Q&!Kl{MV69Obu|7^O7fN1Ij-*u~P4*Z)ZHVDyiRLlFQX83o8 zA;(5$?Yy_Y^`8I0hNi-|GY*{hvp@4QpxzmMeEX^2`iGq>y&m)Stm0XQZ!?Z>bA5cH z-j?_gzw=CgsJD-FXU2NZ>?57m`)ukhibBHUW-a`?umG5FcQ`3F3qN{A4-UTE>lM!m zJ$QEUY{SE67e!U}xn8zRF2Hk~YE-&-?sAVR1lwM{{OOeMjVs)I$w=YOste=CKiu-n zstZqy7S2~)m_5yK%X6zP+#W5wan*%8qlFRkR|)OT1(*Z|r>d~RnrQ8@!FDE^Ira@V z#KG_bW!KaNZY{7`1~;C?ZSA%so03D&IZFyS8*KG5hml8FYpf)AWe}lHH=_&JNRWg= zfIZU7@t;%{sJBbmalIAkdzZtSJMZK7-S;20I?j{;SUkVj4xQXGBF}8C$ul!Z4m2S? z9&S+>y#)g@(M8t7=~hDKFZN}i^+5{K35m(o-qUf+7KUPjb{uRb#oe^0?4E%%ed-nz zS6hsty#laGcLg~Wso4_a2f~~7YjSo=3$DLXm2H*WvJ2a=81^;Y}iehGC~CtWQ0ZxPcP0mz%VN{SBK56F=?AZ3{+@& zRNYpZG98d~KgImbVm2RKE}pldhZimP=Gp2qVjF0omqkget{gN}6LUjC5ZtJ4XZKl_ zwcFLt_HLn{t=$CzM&**&CDYLj<;L`+9#vWsx@{4Y;FW|V6H{5>_W(N}BAZckUP0J; z{1DXe+1mO=W!7_xXBP`Aw9KknlCmhsOEgJjTY5C)`4A2LJC>4;(3g|cc%I<4>-J@5Qr7XMS{H%$eQ| zd&i5LD)@dT%N37vP=$ATbEbNu0AVB~`TM1KVOuc8^s|;4#mS}+$?i?ld&@s^x>5jUD<7~{3`h^Q^e1x@Ev8~#KLK9ke*)D8Uk^@x1HT!T? z@TcI&13~{72P#VeSSL^EPhxp{8t}kD%1^AZw&kY+Wh4&{6Bw*i9RcaaYp9QT z4IgvCzfaTFFeIUt(o-2gCqz?I<^ZcJM`#(b-&bU`4M!23sx{bhUPWWmB4Vp+CSSb} zPz_=hKIlAbB*g}E3zKRau>f=Mme&CD86qGW3`2laSu?aR(nQlRlOULf4HGa|oIuM@ z1EYz2 z1&!H)uPOU#PM&~RsW24GmD7JB2zMJQq5}k~N|U9ELN(f5;$s||!HVTysnqtgFh#mj zplDgY(mP2(FL^P#S2PHlxYE~W?ezH+PB}PVtheEMl z)oxhf@~qZMkIvH-@!JV~Nc;mqLBoeJ&>E?CyxsPg7vC`#RJ=LtxqBH!Bmad?_R}ph z85=7`vA7$?8u>Ci7S`w0Krpcf0WyDwonzAi$G9hE7alE#^huUiA7gg4WYzDa`0chy zH^ZvTTX=#>41-NW=X|-DmT-aS42pZf`MQrw2J_YHDs3}In~9XBFA?FScI|064qf!M zwR}jUF=@B*TnQ%j}(vwuO z%a%g!d(rBpq)WD9mt*0GST|M@K@>2v%vzZ>3V3Kidn7SfituE5DOe$HI)DI2A9NVp zpg1O&>0~+>FUWKp$0Q*gzzqor-D%njOb8!CJ}`;%1ty-~fA4edJ@3`4580Mu)0S+# z`*H61*k_;pb@txJ&@66|ssis|*dm3V(JfEUqusex{^E0tMLw5z;|5O3Bbk`z(ybIx*f`) zW(|a{gy_@E8Rfeh)d^32!UsMfdG||f1?sQ%vq>7IA6TOPfn-|!BCI$Y=?Cwx5SFYV zh6D!~9kE(fZ=hD1ea$el{Yn;i^3ME%ko4rv(9({NsovQ5os;0*=k@gEbtodluTs=u z&$79}na`Mr0*&QQW}2@G&Ed%bDysKbn>3alk_mLkMxrer?SaVqWTd;rh}HL|hNVmi z(DBfEO&O>^v@>jHggPgxu-{peMj)2M8q}2ZbFDxIBW5M>RblAz-x0u!ml>DhB~XAQ zQUWZaLFlm&V2#sQ7;lm^GNx4&Et#?aj|MBTj5VQjE^8g{2oSLN18M2LlMpEGY}tD# zZn&S1ZZ95-vRj=lcO2}z-^q~Xc*teMyh`>`^Rk{NnY{3Oxte<*Uz-b`+PRxA+-Kx2 zUELMyc+Yv%G32UpCf0H8JnE1Y*86druC&#|uPmBtAIpIIi#Cm{h7;#e!%eXh(7*CC zv4)#h>4MW@kk0oWlk_)Ag zGAS~^{e3eF2J61NEeFbJ@Q(g$g*5Lnq~nr%KKSCaAsyR*cE2=|gaYB~Y5Uqj%vy)2 z*s;|v)rP&;eXx3AmwM4r({NY4VK*dR>yivq`Ua>E0Isku0?TVm)1b z+=90Qsk3;#U#K%zxdXa2r0>mdz48((hT<>$T#&r8^ND<==5SAY8}4cUf~J__- z?q!@i-fx3`u^_kliFh0~R(|eJxz|y7_qpeql_v|MSi!FHJ&%%W>QNC_yq3j-sZ~K* zkj2ia-2HvIU0`75V785mP?7w9d$u^%=_0YL$Mji9f!N{ z!aAr~Q4F^FURTf#hhJmG*Bj0)kUi1Bh(DL2q5+)LG_GeMu>v{gFgC& zM&7nl7VyUu#)Rb0_!t$s-3nPU*BEIi63k5m`uw0jFRL~ z6K2W8?U*PZKQtgo)Z&OD7OkWGaU!dVDh-z&wnsgjK05R{nwuD1n;+-S-fxzk)HBZG7Z0QUGC#1CI-40t_YXJ@-z!Kmn@7bDx!)o;vkOC)pSOX_{ zSOX_KJWt?MUo8imh0Y(g@+my`#lOueYM6tPC(L1RTcrug4Hhe?$kH;Hqwj;evrIE) zYCuKS_n6@HBc~|UP#YaO%%$5_`)K%3g@`~B(Lo@*KSj|4R_P%yTKW(e4SpVs5K}@R zQUkdWLLSr0wbu~t$R!!vAv=zLU?4#L5`#3r7}nU+9U9o;S^%?X-;V@L$ZWT0fSFth z9G*-q>2R3OK>#HWYXBt=YXF6ZYX?yE!Eyi!VRt(fT$5|CyQKV>GV+iK(2~IKMFRi5 z+%p$oQR*Vm*=eoNr1Bxj+ZhxGkos{O640O2IU7Piv(3Si;z1kte$Gf!rZl;*R7LOq zT8AJMH72F(jNb3$;?WSWq8EGo{XYLeujFC&zmSjN5@ks!-@dDSXRf$Slz{H(j^ZcC zNiz6`JR$YVTUDn-z}+mJal&zZq zbXD393AenPZ~Ue;t$~w)Bx5|TG;dYcI|qFVo(9Nwe&}gyN@IP!xAt`6R_Bv2ds{(T zICp%S6$HJL+6r6M`Z4WSkGJ~c!XM9b_t?Wc) z+%=I;D&0i|f;rS%j~m`v<&IuNH?3lcp;HQ!>reO-=up4ym!yy8I8NoARz!>0Z@Hpd z(QMmmXd#P?yys=*wKDC7WlRaUA^p*ZuD=G@X!PaBBv3eA`cz&Krib__(1w*MlSBCd z)$~AJ(?{!?I5=jNn!o{LN{Qu9@ULf0VN;8* z98*p7MvgM~t%8@9z7}szu+Db5OteL^Iq zn;lPEZ+@bJjnW_r5<4RaW5g98x?dXWvy)2B4ue@=`+OAVkv-6+lP5CJ@ge9LV-YHn z`(0h$X%ub+z%1kSL@0zNT}D$Af^_% zCsMXG5D8~@2^Ie;%3(sZ2Bm%+JCLQd7SPR+2O@6@NngGZzg>E`UX}>`nF;+a{mq3u z*jvNz;z3WQ2G{WmIOI_J&+}W$VUyuORGjZ0PC`)PK%lVwhQjvm>-1zl`HTxTB>Vb2 z)Q=_VVeptoVm^WgvgOke{1|8Qy>S|lul=u3G|6AUYysdTgMnPOw`VTYheQAqbq0e8 zGVL5vrM9ZrtW3N1A$))sc0n9W|M{uJX?mQrOmkfD$7UeqX*u+Oe=aaKYLo^4aY zKD$~_!alp&LBc*uAE>V_=by5c;*=J%nW`>5x15;ad8}E_@vExJ$9D9*n>>%L>N$C< zs`9Z9dOn{#SC2xr)CpxvZIu&0)CV;!XGJrnan=1|Wl|+uYCA;owhVCnw)Vx%6^vLq zWk@w|uXVb{$sjgND5%CvCx)N2m2T68Y6YtIoO}qHKum9Bm0-=n##DFK~#K=8<`8Z$tDq1 zO)sa%hs*w?XJf6lPH@!92-*q-8+J%8K5z1OEG~+Vv&xd(mtz+`O{c`mii_(4gw(q0 z-INuWI>r7)R?OE0*2e-JE6_Q`)>KAlSk=WU$WRGmEhFqS1)^b_%Z;%HGRRV3=2Qs( zRf1t5wB`llwv6pI7n`__bAe^Onv09Mj&m{3HFLq%(Ra;UqFMyE2rL6aw4vL8<0x%# zaYQzd*n75w;7XyV?hj#`6&i?ToE2d8MEgmeaaNGj6XJWyzU815==6kcm5cU7u+kH` zHGYIF8dd6Ay3ZqJB>U;fj>6`{+HGY}bIA&9xy6Ou*HTPYgH|++vksGoT7tCyBAvHV zttYKNy1+_L9%}J1TK0sJhgx}TGqD4aJaj@ZsnuvXjT0(>_`8$@kfvej`e!Ul7e5_a zy7FiAaCq4Z5VXsim}(cN6}z`oyEbaSSKeM9u-|vN_p$o@9QQs&cZUfwy6M?#<#3{WNM2+gfm1;u%WXoKF@>=#>K}B;?HLZd+cP*VEpE>ckGr4u zEbSVlxx;EQn7sNM-41+1FA%)CUubtapKUcJl>v>$y1$M$G0f$p{+&Jzx2GcFT<+xu z6VrM*yG#}Q>_m9rX9sy__*v++oio!tN*471jQ=enguRFW-e@qpArjKS&dKTb*lc@d61a+SaC;@|xEPF@osLYAI0r}~|uW6xf<`7GDSx2n89 zdlonPGkiD;FP|)C&i1<}xyP>oKZ14LA46v2WCnV>n;a4REcVu2m+=SrCN_Oijs(~s z|8dgl|GwzCGAT)?S)by$qo>iR)5rf zzfFUS*PWt0K9X}k!K|E+Vow$QqpN#Abc!^9v}cb$WHCVY{5qaX;359s_`30Ns>eof zR0^elstMD`kT7J4Ss$iPId`ndGc+b>lA=Y%1x^H_v&H&Sf!W{QUvFuUP+C_xg<~p5!>@;TI z=tiVMM5(Yu3b~_RBm4jyAIUDJk8gJZUVe6vABLX==8vB?-W>e2dg~RS^$J~g`%@>8 z?xq~F{Y!L036JLnA78q;f3a|k@Cw1=`z#csA^V=<=~);p9ofKlyCvmoMs>4jfm`7{ zkrd=vl4REb31U%|qC79x6+Ayhr_O^@TF^Czy= zBhLLHz=MXk-buvA>3-*I(W#JgGi?{^PoqTPFE*u!i%m4m#Np|pN~aY2i^G?7K^TB* zldmO3dw?${acB5|!+)V5==*?R8se9c86_`(UUrBmw&{~#@N@v_md&)c=?qmh)h)&| ztv$SZC>OYkY~ZJaLD{uu&QRC% zThS=N&`pG|oc7g|Wrn(FgI3!9;pI(3$=sGBFQ{a&RdA&O8Bh`c*}vegY}L z6b#3DMHf3pNz@kwsAk2bn|t$oxOg4^Waw_2K`;((IivKzMZguK2xJ6Z&m+QZ05WlI z1izft^(ijS_T_JN;sd}qL|GPN_nfg6t>@RWCau7=taob%XC$R}D)=jsJpEQ`VlY+- z^d&B+XW;@zp3{RFdIgGRT+Ukozwjp_3r`U9niEor#0`~ zorVhIkY)8+m?z3=(S0k#7&7cL{<_UdjgWnS0H?EbTJ#xeJwv$}u$%7wo`6>Fa46TAIbhXZZ{q*?3mnH^M3SQQOQJ{PnmNscxU?tqap(PKrD} zDL^!35cnyL$WaGcM6&{Um%KFr zoXui}mDi2ldbm^08CRNC3pVy^&wO7$BN+G|En)`10kdI98yOUDI!vc(i`ckjvn3~m zWUftD|7|WFK#U49jvF9)r!d-JZL44l^ zX@?*I(;{?MOY=rknx}M)coF42Mf|R1yao{Jvtanu@{F0Lq5N@q{rDHM5O3qZMfR(c{=oA0G+M^E+jtEEf)% zTMDA#b`I_i*YkG$?{fD|fmZM1V;B0lFr@&xUM{OR2&SuT_-Jc3Y?PsjxVObp8doqBB*o6Y&f6>DY$nG1Y^$_`hnuhegH1grA)z^xASnT{#?v4!1 z#a=$Kx!A*n&4u(jn+w%uN}ML!LI{E;$AnzJihI10$46lA@(Y~$qyA?zqguDbGRfHm zm!f*y`3&!%=Hngtz(EuS#4ckpAR^p55H(7?eexQT_y#qiP7EZm{GIoC83B-aSpjlB zBK?A2gh(5ml#-s7@r>-GfO%KlPi&Wtk%D1mGT@{PLrTGO*8n_sv%Q$Wll_KO;F;iB zkG-LYmI*W~hpojyXeNiGJac;~aMsaCi*+>8;vrz?bQ)hcXo5u}ofnm~Xr%M`LY)cG zNENOcDXD0|awH%`Bc0z@Y7R@+nJ?#^kLDK6B;Kd<4;pe2+QDpxkRdh+of^qqcEjNU zTME>00SO|5kvFjE2-8A_xE+{^z!Wj$R*6j`GGr3f!X{b7mVg;U)S}cDVm(-MvMBXc zSCcO?O99uyWC%0H%FyRjZqkB{$oztlLA+dP)gPlmTJ3yi#W)w}QWf$P`cLbNt8&L} zfzEb0+u%yNLnn*;HHi8ndY}r2I??&PCdua6xXiluqoM;Zb4)VBk4f5@GQl*g-YUtw z%Oo)Q!xpB${cWwo;frvqG(F)_=?(8$?>?Ndnff?CfZ(94=& z5%5*KuS3!jdvFPsu_rY7sw_)NxW7*9MEa)NKhgl>EN6`4} z(}Ic&4cP7M=h8Lv(`Ny%rIpqWs5Z&Kc7Khz;uIUfEg=XSwi25G^hKvA!^?Iu%{9;y^*m zMx)lA?)orlav|eWPxp9fr)DVN%eDw;Rg$+5129a)rqTI$R8U6$NC1=`H2Xr9Mb%zK(4X$CE@J?s|lbg?l1EkdtsA_>}Qga9=fWW9r<5$A2OSPe21^HiQt zP0ndTv&M}7Bisq6=%?3i$WnccheIRS(=lLZQOWcVs&TD6L(~RpYQITuScas)mqKUg zCAL;0J2)EdYy~R$k-r3cBO0q`Un!SjP52^dsNiB0P36eFdLuMghO7KK6XbP5v z`cr$;I@P1fd?XkyWT)V1v0wE2JUaE3+|c%kz-csio^Vgz%mjg|OM9ZVP|X&+ydLTp z(_p)+%-5M7NO)a_1x&IB_^%YoOa$|kpDM;ruhSL=9EmNuP$9FQ%k@IGx^eB_P)bl7 z*X-KUF?(7!n0(0k)wybXYFj`3^i!N2M?d#MW3Y1iJrYO$IWUl9D#h``qIA+L_>uTY zFub-;?{Wf|bslUq#&6Ak)DQO>+e%!aBJVhV-gk4y%6nB3qb~youw5l%kUY8*TO~ic zz;G->+5zKdmuMCRS?2OzBs0pcel8H=RhV-~E&uRrr$Pg{g&5yCtK%yuJRJ%bMaE)oh&PN|r2WSy(J!6*mrSsQ~#spH3 zLvtKxvYrJ^fF$sbM`)VsT0iwtagAlcN zAoHi?RfH(z=lZ#^5cHFS7)B)~)ia6XXP8NwL~g?*`ovc4+Dv+3wF|#c$$BQOU6`4* z3-(ttS^nWiID3w%{MEcX@p1ELX8yVdJ5XGvPDhcOO>NxZTugQTC)Zyp^o|HEpyJ1k zjHfXnJcDSaO|{lHv!W3P8J9=2*-<&CzDXIWSIm>IQkvuLq*g`|=I#su>dy*BX z6PM6(Tn(7rqT)vFTb6qhwB8RRJ#C;2Mfb&PX&Oj4j+9d~$-D zw8xRObA$l#xjc*H4=r5iBsUTkhcFB*Md$&;`nfF9<~0o(*>PfW6VM)mTp&6;B*a<1 z9pe({Sj{XAy%oC(>4;6fXiB~y7uBnWij{K+oWS>IIuh7&`%dy3-xn^AvQ{3;I)wj@ zwy%#E+K5NY?4!)=zZFY|E&UcA95FKLforeED<*&WL%;ZwU-{DC-~C>0_tNqmI_-Q9 z7a#Mv&ad15vmbmJTr|s!m3ANJurvy4D`wx&<9+`4`k}|PqS7}EJ-z`eZd+)89k}x@ z#IsxRpDFLZgoD@>%t<)GGp)Y@;eTq=?Mv0|0HDN<-Th$O&u1O^N@)N8HvCAwOtbLV zn@^n3EWn@ATNyQN7R1^g@mX-#4*}2&P;6WcJqC928}WTg-krGC=8RVG7Z@np%U!hC z5?dsgM+qY5xF^QV3}Vz3zezEGPgGwK--SjB7%+Qj)hFSxmEAT_R&7g++2dW%mV()> z@C$Q09B;457Q92-u!`O2l#@@=vK4@EreD>@RYhfD-1J?Zlz9G&3*3O_|94uXOwHe@ zQOU&ue?b%Dm_&K5+EX&ANMPapoXtcrJ^(lW0?@C0+LuneR}76?5D}A$9L;S}cQmhD z6Dv^o6|n+a{fbxt=3z;9mc;~{^sPgkS6y^|5EoRjI)k*@33E;in&MZXtY$M4rZDZ2 zzZUgySHB@rx!e8wc)DA+dt_zvV3lM~^z$&R$^>h)jqlYIl$nnZbIZ!jZ;x{T+mKfM z#C1^$Z!;YwiZHcIddbi_+uLd#&AUMPb?-uUWIexGGyw16t(pxxvT_*>jAM^|1z(^! zvxhQXaR-Jc_d~9XU+psMUg!UWU_w}_YDd3;SZ-X+By5ZNf#lktE%zX~x4MsUTr9A+ z;u7|`8hR(VS^<7vX(!Pc*kNkrt%5t4!JKqtKIfRb&daGS@)TrsF%Mh8Vjj2s9TUb| zE#>`@tKgZ*eg2*P_yBZtI3vhDnG|i7_o*Y-$N7{QwSp+~SwqxLaKr_WT!xyhFhqUG zXx5f4#i30L%_Ln)^6;CJ5oB*?(%^ed_C1|9H^~j6W1oNLQkdl+cYH#S*Sx{V0P$W7 z$w0~gj~J(&cW$qjsO_liR-#dkve(=9Nm32_(9E3Ik4Q6efwO2#A_&Xt+CnRtO7hg` z1aeddH@3y(Bw=E;uo$G7f^j?auM7Z^Z8FZ;x+X(F(be}b1>oxc?Cc?6woc}bOaxTl z8`&4^Ok3Y5Edn1<92FuwBr@#3P&Egs|1K8m`x|Edit9CzKF&ZXQt{&?_bz|DMOO^& zHkAO+j&plb0sn9C=g0gpJ7d1^Z}P`1?6~ZW9X%rB2GTSkXeQBGnq>F=lfvr%*dbry6mpbKKQ-v?@0%qBUat`w zizRod@e|l~?R_uaJaC5J&8kEhcLVQEI1QV(DW^GR%{jrNlcYPQvfR$|ij0RPAq}#G zhxuW$IzzZAZ#VoSr^TXI`m6epV#!MAADB;D#4uylw|!NN9As8W=0PSek?(uhGz97A z^v`sE-RZM#!rOaKpZF&^U-D18zn?V2t21YNa`aA zzJ^oy;ejFA^k8C?_fDto*>Fr6xZ$2^FpLc6XCI9ET@Aya$jAnVVLa`yP(-7#D2)BR zMjVFs2}`2_M=7d)=b?YtIlX_?5W=V#hs?!%W7gS`-;5p;hr`&IjBj6GkBQ;cBidb! z$cA_RQzB)AK57>}Oi2WIJujz+CWbIrCMM2_T%|`$iOlPUO=Lhk3+iygAgt&3^n+H0 zKb**g>#UK%bVmRZ_@KqT`UGmcOa=!8#|dP1Z0u_etcBOE1Xtds#`AKQK4D0n61dtWpvG-%s0tu4ubalI8**G6Q(hzNgI z-uZ0DvOEg?&oLd&z47nVELz4#lV1wmD&u1iNtV~awyNC`86WL?W8%-gjE@Ea5>LpL z#sCxYgd*7O5Maz8w3>3dXx}HwsWd`%IqiD`%(FM+qXB5a5!5q2N}e-N1p*4FZq!f@ ztObXRfJ#bb0oi_H4JwIl%mXqH!p`i+0E)B|2vxLmV4bZ*JCBb95+u~1#P8~0f~`LNA+&Vx z^VM>QE@@9RjAJDSgx_VdcFndqnH^5A(-K5D5;?-!FNr6@+BY{R01~h)3 z)j*T7uVKCysFBaluJ7aeK0;gGKE$^p9APOH90vrPmEbtUw}G1}HP2?g{jS_2R`SO% zGQ2mv0eZGG_!iPb{d*kaY|CUDEK_n%_d)rTJ&>1=URwT%Cw|pl;eC^RL(V;BQxckD zqG7iMcZSbSkv5yH)Vp#>98=^OvY53XAF%hZ)DAHuA5h=*IxfJCShCn#Yx`V4Fk`8# z{>uvpR6zJU=P^klf#gtM%!^A+FXD{xKAS)%Sv0!4oozU?aB+QxYZgZvPNp33VEf*vu`?F=8X8k+=?tt+6E*}S(W1vHWm1|w9xh2b>Ol4Na7nghJtW)m z;O8q*%8~7jq?85%3}Ui78DMUfEN)M4*1(Rf1u(&oGzu`slvqR6)KqZ*IDzAi?C>)O zK!-Jk;|?I_xCWsUAg*aE1ISZTy%c%SR#eAG?19r7lm3{C;ejN>K?ZZyo`xK_zXpizYZZGhuG z3xNj5wP6O1YuC8_YHI$QKa=WN>^?7a13L^nGbU#tqIM;))FEVnKWOp)vlea}A-Sd#)jEHE`UR zk`3v*+f|jGorslx*ms*+<+<1jB@PssZ(4=OLN={9c}WHUDhce*+P+b@2eg#pR=<44 zBKu3X3l50yg<9bGQ0`V^H_T0s`j9#zgTy2RqWO3>dMK54#;cT)JQdFnS_E@!U6BWP;#ODl|zDq>DxJOyt&rn#zoQg z$_0YG7KWOnaf<$TmTP>ZOW!}^B(ALd(x&oTlgvbafb0jZFv}p!mx*xbe4*J`AI>J$ zxc2CHabGR_wQa+02&*Q`!j1dVgd2C93ODXB6>gM6Ls>oC&+jIoyYF z^X>VtSs%9egCTIn-g!9d$Ff6oBI|y9vh#2=A2*6*Q**#1cftOqkc**>!-&m=GerbZ z7OSRBuIOe40elUuR)#KNR9>OVcR(r!F?2z}du7z7muanQY5@b}LJM=%(`ZqEePMz( zv|u!3FzXjNz7A-Q!75fK3eiPVJ|IHgFMA|yMBS=SqZQ`7z9*`qQ4EZMkfkcMLu>eW zT~<3nx{euY>054VdyjVRnssfKj|-R-IO=^gS1<7ZPww!EP409&Z73N;D5}=+w88m8 z-sE-N4(+PE*(`z!lw*T?5ZjD*KQS5dNZe$3Bz`fkJo&VBZ4vF-x;A=`*UIudff-&c zOMB}0AvWV1^-DQdjHeYv8uT^ny#1NoKkcuFOcL8bs6D>6wpG+MWRidhGq$CfB)&Wm zzg8xRJxZHlt`lIcCc$RohBzDI+Qy+(n{jAyeGC5%Y?>*#aTQMkoZ+j9fTS9@^IC?m zxly%S<4h#s{YoYAj%RugH6y>Ak51EINZpQL)G)~u4L7WSNor{J`fF%zSvC6s$!#5D z1DrV9#wDe^tYBH?KiD;x|KRRtMK=Y|JC`oTe%LUsmVdj1(DmO_+Z z2!}fJ=O}FdHah=z4bo}4VhczU{!HtrfEtgyg?y9$xYHHvrVsHCgMxE)E)EFF6Hi&L z6QH0NmS@6{3voN5n+g36lchw|@=To17wTTfGf`o&5t>TbSdKn~JQL^lm706oEJw%? zK2{v+Pi;j)@V^o}+H6sfUEx*^jf5`F6;o0^$hua(=S$o(yGRcR8R$CZ6oZ)7AD6NK zRu-*aN9KC?+B1)#j}+sZ5u(XH{u+KQG?0)fd8kORAViHI0AU_3(#QyFV*QyLd=Y9+!<{psJhp|dabfnz0WYjU?fu(w5Ur1=e zd)iPxI7Jok+V=B@@xrhBK@k*43LEsP#3JzsQ}jdE)Hg+!T7`2$HZ+ohecsED97vTP zo3+t>CNJOi5f9c2yF&o4ZO-NfuX87^1Gv2m;D~O`A7<)!sLAppLd-MWEW|t~QzcUe@Y_}xeg2x!&pet2S9PEh<( zTeg=F(@d@4kdxCRwdbv%zx1u@$?k8HJb_#4CC{pXE;ww44;#s6@*td}g(vJ~1GMmW zo#)4VAC*jz9Ut$3(_qW)DnFKF8a>r>faXO!ppXPI|cDwbe6xt&4FDf%(;7p<|jKR^S$NS#Z3fYBYvTAA+WZ zX!C-OHlbcf!K@Y|ni3j^@DGBfveRV9P?P;8UDd)?1_U7+nxalSoQSKA^enP2jcX=I zT%t}**t(;qVaDu4DrIDtP;cplnx8fxu!wckA8QbehURT@Yz+zmiaw9S_o`!^ssS5J zJgJYK^09ne*`R{S2^o~|!@F*?f~`!rtPyJv)-}jg7>%Hrk`5n&SED%z;8U}7DVe>5 zbQsj)1X^IWQHhFn03G@WfHaB4!L6WIfDni@rTH^NoZ6nvSAM)K+&D&!!pDfNtwDnC zR!!&LAk!GT%S1(DAgv$@^JB;;w70(A#vVMzv2dUy)3?P;Wr7ySOCM_-@(lXK1LmW48nv(TY+z5nX zip?e>lMH+Y?o+=rk!H+Ot{7J6lsn7SjUDARm|i`GOKgofg|nEqZCs1OEof3JQVaay zjA|MUbu=(;ZaEB$%-gOG=jDjVyVCPm7;r-A}wPZ^` z?2SH&y_p$CC~olxv4@n@LJlxXS1Xmr6@wv~4}HamULX_s$#S-40C-$8bs|l0WB|u@ ziq2C>6^g0qf8s+~`B_MJQhhw|kM9SNaa;I)F|Ni{zF&f_h8Q-vnr|V5Xa;sOqa`+- zfor(X*r;eiGQN51ML8#TLt9R)3_~ps>JeKBV{%65AoDR*F&sKiSGo)Ys{#0_01~6w z%2I;04EO_lpgC~#mQ&s}N4TE~<_rUlx?pRWhQ$=1at;`LrPl@+zKIjBu{cDK<6yjN zn@fi66n`DC3Tx?b}6^p&~Ne%iKF-QfW zsUD>tE+>~B96*ZPM;9y8r$YU3sxm|1Ka-Zc6{IDn?$!_kT&AOfdEHk@N6<)N6i!&I z4K<^HpL!NtW-+0TBIc}O6S35pBnL~oAv1cF(bk08W)}Ra$$6bCg$`EF{ zA_$VY)5j4a=j#x;1OL7z1m^eyR>Nf)pQ z1pCbz(}}NHI&!iHPo%(wQr*r=xw3-8ul2C&@3fLkC?M6WF3apy5~Ix`24IW{i3$fz=tKPq*b6c zvtksEc@XAj>|a7YtScw!TXtQ>pVw_hOXTXr2lS7NeBssia)dxEGe_51uY6TB^t{OV z@b|UZ=4bE~`F%1T5nX7K$$g@y_o2L8d`tOweuP0hF7G?w@i>1bj+AdA4aNj!B3qYd z=xKgdixhoal{A%Z+}l2*7K`R9H|zCys1IF$G^(s`2)8t&N!l&5?=&9Asy)O**0w){ z#G_%Az~ay`(~{JM=8=+6*w)bwO!`)~{j4TZYpN#pz`Q2NHyQp!tNo$X#2|~N*EBv@ z6KD7ot-b0)V>ewMKct$(QO5cWu{Hzc8FtI9ZxCkn6e`sG4k|91Zj-a`z#4tm9QaPz zocL0mmqoDA8)G!^^lH2esPXOe*G4`@{Y~qz;m@s%LIXZT@r#cgm8LC#+#<;E{KOlM z9KF92BG0>Tp0%wX*yWpNuY35iA9(qh&YQ+aT-!LFzcK$&HhP)sR`<+oo&8XA-B3l3 zO&rqCTi&1vY?^O?HdSK;7re?!HI-G0jx*DCsHO69v|pT+1mh z-P5x^BUV`Dz+kWBbf22e${+;b%8UwC19HKA0g1(p!-T~7ef636Qhk1i(?%LhTlw&3 z@_*i>2J7&HUvDBW=>72{hwgtL17CMb`3Q@oQ9k_X{2&GI+{41;&m$i=*Ppnv{A>IA z9A<)vJ7xU5^Um@SuaK8t3opm-EKmG}wK8!h&HT03MCBL%$ZwwGPm#ZmkKeC|Z~i>| z_~Y4|U;ZY$e&9bmklnxl#`hfgqmP4L-?#e!02mXjZ|k`HvTq zzfwN`NZCAAzU|@s;0v4C@ekbj8=5rEbQ)*757!|q2zijXTG9}qbWLS(&gCie@KjF^ zK50rLB=c*2!HTt{A|mPwkPMbqP)jVh_V%wUxRx=asvMV;#d2g>rbP&)R}n~soIfZ7 z8ffyn$Bw=`fb_(Pm=sHgf_hRcB|oE+Ixq_+=(29v43W#^gf$NsB7nd&Bj?FsbwE&J zXvPB7{=aPLMf2!Aa)_mKs~=uIKv%G3&@rsq6*U+D%|?Fn-%vf0|jD{+K}AmPy)52D~2u`^L+4M_k8ejMI!x z2wCSKKF#%H_~`8W_H4gy%V$6Rl1r~W_gDi%Z=4;QA(+vj+3_rIG+Ses`eFKP0aF`T z@g18P7e-hvf0!!_=e#{uHV)yar^G+)ABH=1Ks-irNTv4b1DF%vV}FzAPd&&UdJLgc zwfPV04fg`%KyAp;`JvHuYAt2mUmd^jv9M5x&p{zRqP0fXhplxFNj1+JyMDCc}`XjZQl(QK|xlIJdwN z&{p27f(u-n3139h9Utz2yiBN)9S7MvEg#CtfAekSwdVN-TmG9iXUC9?Y~XphaHx9q zJN4G_%1u&#PZPdi8opffRz4yj93CNskFTnsR(Z98t(u-0uqlJ>AP43wPm~2Qk0Cn< zP6k-jmr4E*EeJntxdSE0Gs^ByPq`D2T}r|?NNqc0l72a_m-TCC{=;04NZB1#c zAUVk(I`@oQY_JKg68FWn8jjmpzX=4oKRGKo2C-7B6=6_Yy?)nZ2|&j{U@Qrcp6yw# z(h%g9#7EpyB{&*^;fBp3C~(7sO*K$75MH1&rXcYiolp*RSvjNJQ6dyDTUij0h7Y-= zg6z|(yFtTN@*2-OK?mp;Bp$M(F0%hTQQk@|MT`3A62cZeqEX(xMskPn2OA3YjCrS# z^JGfF@B^WyN$uyl)LTrjGfl@KZ%_ki5R9Kbl%if#K<^N^B!JrcDQo#e=(S!B(mdme*m- zf{eyI$#|RO;-I^YFnOpm+HX>&UF3t-B{k*3*eqNAEHOg9=gK-ai|H?LdDKMT7#$j;wL7`SO54nmV=G`7)e z3jd^GF&tedqX3tD^33AaL}kfs@|YX4)0LT~U&COuXpp0ZftYp(9j+Pyun5RU*M*Bl z(#N$MIoA2VE^l;i9VdB=3T-VisqKZE0JQb-pi=jUV)KJGFKP_(l=tZ|EUf&Dlj&T_ zWp5m_-y?VfjUnDO``zwcvweWM&wJe|y5fgSC@6OMs~F`&*{hD|U^Pah18#w+0;;&v z2?6x+wZLm!30N{Oa-gxBCt3z9wkb4cK}|dt!Oz4e-jq1R=CEdM@l(Z3{#$-q2Ci@XOzZwlFRTG8TSc3M4`*ECap-3)yYbpT6@KI$JI>W31r952Vm*X85U^xX* zLl~RTSX0qTilqFr&ntg9H!6xyBxedR1QD_yOybO5w2J$SgAyfKK@gdqZ6bnp z#hlgi4+Hh!VgUwoHf7OqtGdh~JUm!lP6cSuT!K~9^p4p}@oiL39#^asU4>0(uOhf8 z#nyc3z+|1SqBaeBRFwDqIf#Lhs`tTNf=+|CqwW4Q0G5i3wdfj*Mxt}eJF9CzVg3wz z3Yt>x$q6%3bgynKaQWldE4bXMm)B&47oF$M#LnQ&v6K7Vha6;aG$69cp73Rypdbv< z{vTvdt(dq4I)Rqgqo0y-jjKbSQW7Mc{huh#3SUK)E8-i70OOx8n}=pwjjWZcg!TYU zn)ni_!{E+P#q$4)myPo8<7Kn_3%dlp*x+V^d0B^V3@O#qjE~GyrHFd3jnH`#) z$y)Uv8r2l4nZKn%uycFXD8Cplo8{-@Wvl$Ncsa(20+eMT8j&Siih8ltqp_$?dU^TC zqnYRZW^tLdoZ>=YSaCzl1!)c*A*!ffC>Tr6xs2G06k`cRDE3N^FH;3-I4VE#g;efg zzT_$CKDQzkvSC6Kb{K~B5ek?qrn%@NQzin!*D|qwpE=F53r-Y1B#pzYY|3$4 zP=ThMxh}tMpVZTxGow;d{1fd|AZaWL1!~Myx4{(+Mkr~Q4MWLXhy~UO1xszqc!wq8 zIi5<|%L7hx*(kqE1(}`-1h14FLkQ9}*>1S7E+JTL^Z1dA0^4xI6r8q90yo!ElWEY6 zB&R}GA!(w3aOX&=uL{;qGjdP@k{<}Q?V{)Kj;51o1}?5(6tlgafRTjA@(poUuh8I9 zN(&gGmM`5QQd%RiqBnz_NA@XoRQ4&RlU`eQOc@gZaR@aRRGj3tcw-aWv!WvFu`%*E z)QxF0Z8IcGyfqdxUv*qlXe7xjK=6}32V?NP5yxSGnpjjZex@aQvGKP|_UUPr=^}szla)qZhm*O{D(>*(_7N(UVX>Hi zX-mvi1@@IclDSZ8#AUtmTrLUW9Emir-S}2FZ?DO8Sfa7qtz5kK%O(LdBq44qtQh{P zDn0E#TaY)jMO?Zsz*Q+Q!L$Y8(l!xMZJDx6K(r3RidC^l1JsK=@5V9v+2eQn>?iwf zFGAF@y(D2qILVPT8ul?!)%NB#-M>rn%8BsixW72Y^Uuj%b+dnP*dHH=k8fnr1F%9r z1hAT9D|8BR`L>2!rmGEw%!-Mrj3Io4Ga#2pU&gy%+i$z{g?4eEz?fwUAQTc^ z*cCt*Erl?c<;9VuQ_%y7r#IO%LC^$LQvidd%uG9IxVCHQdT^5&)XqBGK#pHhysc4) zv@}MnAnqq5ooU<@KpxZzpm`%>TyhOq7Bx}w%Em;Mt^q?=fz%DA{tZfBS`M1}^smbL z$#Yo!C-U(|i^yW0;gO}vVR9V#CLLAGi%XlOw=}dZD2& z#LE_Tg79>#l*l>M{LaDVclqsNvB3n)(7D~kdb?HUe0YCJO`xNOS6w!(etYVInO(ZL zfhbT9nw>aSpYDCs-0zu==;0j%e;JU%Kj?@KBQtpG2U~QMpQsTBnXS9 z?Gh3mpE_LZslx@5hX#i(4y99k$=$OZt<3$Rdo3z{p@*jsOS=f-)QE%Dg1T`cXsCBFP32r(5*rFjkR9OZ;3DQfc!QN z#RHHrEJ&K|7iBhb=RKzYZD%0^gqm+6p|0g9U?eF8Sr&Val%!nrQ3|7a0*{v&*|;4W z)&~LfJ-tm@C)-G5)o1-|BkR;F=}-fqrjBRhO%=*Uk}FExfwkSm1`lSd#TwrRHn9dR z3$AaDp{m^kn@#M4OR%vzs8zy_p7~TuvayU>7Q-(=+Bl2S?BSv zW9deA5ewD0^%cwrzphk(YS#0%IX+13v1aAb%ru)~vA0rV#=J4c+K?Q8WD7#}^X~5| zcx(<~)31>FQro{2M|3HzU9dH}G^T=z$CO}IkWy0b4u}Vbty69H1Ybxdp5D87A3Vfa zJ|q1!%uDfYw$J&0;2IdGN@g;apEhCmk$sE`i&5!0kUbYPTHK`gm^&mqqg;Za>14bd z3axYZKvpxvui5$4aM%GuW08cz1CXM#DB}~3fskfhxFZ+!5}bq>E4cbcftzmMX5Y}7 zRBY~*?r3eUr~1-2m@<4GKziQcMNV^{d%7#{{vU;8&OFHOpjp15Qcbjn9u<2!3gE`4V$2sE%G+Qw3^Hr=n>N_E-ykK3ZtTax#lq zKtba9Xd_>RUF~}r#K-b)s_VwPz5=9xW8%8;cj~|NrJX!}Ok06+s5q&D^5OWLgEYh9 ztU`RNpS}KbJ#_67A_h4~@!JS+$)FrJ@{5Wh~ z?v7MQTRdS|rsQkTfukDmg?8Y0XYIhT<52gV!GXgrD+i8+;J~pZb>Mh9dKeryo`$9Z zsy_&-|Nb`@)gN1m>VF$iU5HJ-_XYjPAb>ZIN^8gbzVKOG5pkm>>s*wTyUL$DPvx4Ib3)X_octDJ9C(TxvCCMVfdM|0WMJ2 z$3-F5a<(y0N4*IRx1uT})*2cfjHJV+pp(hfCT=^lR7_mmjH*!AzQV1A=6EVods8|y z4PXP*6;>@%RXVQpFg55n|9j_KO(v@JHb@pKB9_V#p56MQFw~I4u~70cQ1W$^$Gp6i z49mJdI|*Uid9Zt5hnZ@WcRL1h`mbM@C)h4oKHpWe-u?38$L+jl>`0YsyPuU_G&(;> zmF4H`v$9>jyIX$3B%QqbQx>hM{Q_|kw&@;YsNyC(Nfw96#6m;noi(C01Hj9ZUlSgv zx8{8%uU`2rhnBb?lS{3`O>0KC>sV8%JV1e9HHp=ESR3(}wyH5=eRF+dI35J>trabo z?l;0UAO`u;v$Ttf(hBlFGZWWIs`~|{QFy+~C0wciQGArv;ptVXuv5fM?EjF-Qa>GH zPjAPgo8VJ$Nk$kPJLE&elEH3i#v;&)Uy{)D#u~fv_P}yruIDTVb__5n$nO*7QXVG4 zLKMx0esGqO2a}t&*@`m<5)f8SB3Q~*w|NORMUaFTX8sY-u9Ce2z{cG&RD@RqgNS-% zhAvy*XzzGO`(~a^gzaN6jrBy}S7H;vJ_a@z3OU{J5FID4F>+J}JcdvaNt&`x*}iZA z*!sf~E!;E$n4;CKssh7NycYe<&4>r_iO4_)sy_IfHp|-^3I;v-`DXJ)x2`8X3dg{Q zaSWW;nt@+NbvMfxl$Ce>*Q|W&pJd&SOhJz1Ps=lq_@c@XK_Zj#;ap4TC*+jV{Uc6p z(^dvS{fUfW?OzCnZ>54ddKVt0CT%Tc0TpauPxUC)TtE2aXI zA7f(kMRjT&t>2#Ajg^OG=!oHy@NXDF0=xBE?B{YU^2x^F&*WjT#y#k}D4^v3LM_dP zLzB%x!ET~>8B`Pq6bH+q{K-GyvU|sDgov`f03lM$SczaZ#X~4|YFTWZFIdW;hAOU* zm4ogk%9Ht_SI%fs!@!pxE!dil7R;R&3al5xo-NBcQLqU`ycuj$^$qIu00SFZj za1d2fm9Xcl#H4xcbAOz3d61h+cc{%56FdPy!`qf zGA9+kY3xq_T2Z35tjn(*+CELboxy*8tBHO7?nDE3mVsOn4ennwP z79gmZ{o}nem4e0Tl1jwfAZyfmBcm>SZO&Mg$-RlSmhtKamW?l0sCgvu0j1fwVh2Su z-`64~8gK?Z@MQ-=vL^`(z;#U&Ke7Ow@~cw5>L`Oxu{{{~wIbHy6;H$mVmZ!TL^`Zu z@s=eOAJ@BW8OHoon2dR7SXul|RxOJaczr=$qHU@ijboJ$?mx4$@fN57W84%+FxMxv zr0Lz;v}z4H<;T9i)W2WIF2MmX(n@f~X=Pq+j_)t!{Q#{@3T=snHdAPjRwkvM7fWrS z)DW#qihYY0+nznIqLt7WC^H01UQS|)ihvCsIU8(g4lJYb@*SVdF3+-;W?g3R7e1N2 zFw3saG@GZxH9TGv5&^^3j=RBVn=UUmxZCeL@(_n9bxiVzmZW_7+vWO$V1|9q2Q#nS zTuj;e)Iu2NOYLci)>o%Q^xeRXz;&DbLFftGl4)LLFOsySpNkcrR?qagHCzpvW7Ez4d)D;cnG zISzzjC`g1-F95CyV}&p3D&gCRMUAK$SN@adSbDOCGFQ6kDV=(Xc27 z>hdh=qgqU`s1KWn1sP0;jAVk5cphlZLI&Gh7S976TF4p{S{BcpIOPjjlTyp$c}<-v zJh!1=0GU8j{3)OtkB^G*edr0n_frABpIipMb!|DADSz zjngIC@gUKPo(AgRi`FDslQanOHlahyGwQHDTJStg1=V}Mx zk5Vh?Ti{Tbs>N#RXHv*f z%s??yFV^8wj$#IinPjmJ7jqOF00oOlNT$$RVT>;)1OXh(aVn4j=Qk~?N>&63T$N~m zZ6VPLXC#tH)R>Ta&Q@wgu$I}O-ThM~Zi@m1Fp@q}>1MU=Ab~094o*Lvu~*7N0ITFL zBMVX!TviV(MQVa|BUKZo)USXkusx{>Q*J40Cu#y>6s2lL5h_m91g|(z6TITKQwbB< z``cCj#M1gDrOUsG_tF^J66)KvS*l$|vlMSIOQ|^Xpu*Fu78b~@Xm<@o7rf})8j9}l zqVsDgx~QTH*%n1Zg+V@V)z36Y6l9x=Y#4%WAD=T+mm7fj`lM;$7oWH;6ZECM!lQ)O0>9;2oE z=SVh*Wpsc*$T<)KaeyDD`$ic(t9eZj0Eq_#I7}#-k)?hv|2QK|mU>3wJX}b89_e8( z_Jp+`*rlX233qboR9wF?k|fvCsWIxLP(qRu>2$bMLXuPIbhy|cNv^m)wj1aAQr;N< z!kW1Lf{N}~3)kPFlG}o?Hk#{00)k9xTpvK?3A+yr-{w$om8C53{biV4RU%K;$S{W@ z;Y6&ck*<>Aa`Jx+4K@eX$#6kVEbxLU|JS6Ok!*;inf-5TwRoNapEM%-lyr zH2`G&DHF`a%~80ct+T<`p+ruJ0e+qogI2|24T=qN^rRfLDwbOvM7vLzBBTr)Iv4SYfnGG=)^Fw1Sq@Gklff5evHta5d^8}LTC+c!0aqp+D)`rY_ytFMFGvd|L@wdO!=(};m-6A^VuM6ZZ_P?{ z*!b`ZgnK~XW~7c6;J(dNtfGJ4tm2%2y}JH=OeGJGz$twXu=?*>xX@ZaJE zrBdq-+KS|674|=uu@+S&Qf6WzO2te#KgrViSVgN?jH>FI@TMBihbsiny=MW>P3i#w z@>O}VkTodkj;v-#(o<0+kqsANLkN<~n3W+ZY>h7A$(D^o+aUBx8Y}`s;K>$E9gIbQ zJVbsC1Ap+|d{Jh{vPRx)ZS3G5EhYM|j31gZ`x8^9zYOw1v3p+$a_CxZCA5ypGp1fH zqgTRksbyBeaIwLaptl_n*+tAHGm1T3ELvz&Ej`=WHxU4Sm_$JFYS3J|Q$=^N7G|_l zu#&NKmp9aPQ)ySGQX*n%Q>p4+NQm>o=*vXvldsy|hcnkY|k zWLc1?F4b%!QdNc0bzpMPU`dujtZrZ_j3^4#k3|Pp!-%ph2xvSkDG^f16DtE%u}-Nt z#|wY~05yK6?hLqavH-VDlp+g*neKK7r~GW*1@#*&CEL1bw^@d zXe1_k!=%BY1F}X+gGZEI3F{2q2(*0744I!a{*|%L z&NH5#?Qp=iub$ZzXCcoqGwj zoBpRw?eNSJwZnAAa$g1SoZ3xy2xm4fTjSmDwrh>k>=SYp^nD4}uW~A{jB_%^n>(RO zr1l9DU6Nuf#aPjRePXyA>oArZv`-8dWD$D7R2G5^iJ^TLi!WHeqFyC3DAzUknsE&5 z?C1f~YL3WmO0gr5#>BZTTE!*C2?7*vnC43!%=n;b=F)Kt;7O%QdB+)(#{g38PqW)- zWZ60*Nv++}{vM49z6RZBo2~XX)VkE{YD*{DX0?0c14q4)RenTcd%Ur>HHKr3H&$(e z#>SvbaUkB~=+~3)i;3mx~0ML2SQL z${9tn+t=x~RlWUQ-L|XS@6&C!x@C)Cyez8Q|CQSZ*iRW3^2YkVUnqu5wO3n_+p~^9 zw>_Jp7(bH%AhjI}#$pp&Q#3nC;cTXQ3+^A?d6+#eGf7Eo};UO2sZYRL9z zqTQPT$+ZJqFf(DM1cHfMuF0G&!MJLx#0X2LsCiW)<-~)w&LOMBver%`{jtG8PCQ&8 z+;6}t;np|v@PiX`*0p$Y0R|zEna(BDXR3{EDgMOpjp>dLoEtR)duPh6#+41qQEN?V9%jJO|6RniHC?EVgJ|N{z`KTV2 z=X6JryWgz4cj&I!DIc=Ccj^wy2HQEF^shXbR`m0{?v(SOKAZQ1Zv0sXoeMgY37NG} zMAd7_plB)FqUhSbHKu~FJO%(G+BEnNS(%Jf z#YGSmQpvxGk#Att)f-DDt|rBhe`7@h29V)$2wbt;p!H+8;P9%`dyz3F0>-BeCiBhR z!HmRpx5wrfLSo{_OmyOM>N^96Xx&mak0`WAH&9;=fJa!~XSY!1#t~U&_VUgSN*Y2< z$5m&mpvwwtwrXGEhYpn=;pBV@=rn)>l9R4W)JM997<;5&XhvoOYc*qZ!!)+Nel#G_~JN-;gr z*U38PPxU(48`gbuJlAqI)?%6I&f|5mOhz_58E{hN2};x+D+4Me$Z}$4D$na z6Qr91vJA1kS8&c)G{`ly`TFp+O5#LnDS0E7c-L6K_suGPjF~ip9MqlnAqx{Oi75Lx zpL@*nF_mQJ#l#uepfXK%Z3b37Onzb*5uao%g+ht5-sIpm2;(o`(&**RS}!v`+n^Xi zQTo@UxY@v5$$n>i^|JCLUmAntIQi<~?RqHo+Ynnltvm5u5@&VFpVOWAuHqugpVyuE zE^myd${;JA3f+RIR{Sy#g2Wo>giGr#>(3OIIi-+v3=OISU_=(2qBvCm$a2PG0m+l8 ztI%H_b=lP->!PMmmi!gGO1mmP2jWzgd|{g{uOY9}Ih7gM|IaJyAp_O@;)tr2!@hHs*$I2=QES&X-;Dk zJuRj2lBEKbH<7BQX2Wwwsa7C^iPq+oCoT(Kxl{B|If2J6uMJjiN>ZgOO{p6?v_bsG zJp{t%%C&EO;{>=6TYLYR;xhB1(k8BfaYtlEKP38cvLKxX7nmcLBTn=8gpeMDU zr8{Jt7zTHrEM|$kwfxW~#RwCE$p~I*qzsH5;@&R*CEPm|EMezOGe=3{_Nt67%6MSW z!!>{q7Yua~7Q|;cdSit3NsUQg33fGiKOL|>X?kiEWSw(sw8ar#sG9HVy-hc-aWIRw zIUq{=023X<2bhdlZAz4m1JqJ*iF(N>)#eS}X0)!+f7Aejz8_I^)Bw)|MbiN;!4zrquvqZQ)&okV*3RN8-CO((W^8+GE zhJxc`w+@uq68}dvmW@+VP_J1C9z~;{tr{e@3g1D&PhnUtcBT z^Iiu=$>+Sl6a*x8BJ{{tNAT^>#E`S`O26aP41vp_phC_NhXa^dZgRMQgYc?W4yF?Q z&gae}7V?4=xXeOuxG*PCgSP3hCyOQwJW=bsvcjV zQK59#Fz~(CZtf0yIe(?S9GV+8QVYT(+yYqfCMy!VnQldx4YP6zsO;GCwof)9hD(Kw zIjzdn?RvOaZQYjJwVOlP-4f~yMc@g2?FdkhA~ zukFu3_S1;{;lMt5HV2EUX2Tt`l~bm2ke*>SsuHPV_V`hzG%1FW+JxB|%}C;yJzNes zG?p85%pNX?DDDLVt<-xhU<*Y$a!7*QEw5L~H%a!1y;q0^LK_Yt>Yi78V!Dw%Z}kMr zZXJXs=u~J}ZFCO?q1jN9LZgGwhD(M0l7*olwBcg)wy$v2phB0FFdp2L&@Rk`@Wzb{P^R*2K_Ee0aX*9Kownsgm|X>G_TxINpJ1QS%bi?Bt| z%!tGggz39;uWe{yzYcVunzWh@48bDW?PZFdY~!7G^uexC;ea z>NV&tdZsAgObi*bm%w@F6M^%h%(kYHByrIdtdY8n55U+C)i$xU(6iE7?Ko9ussRC7%r7ydm4T* zTx<~A_11*${U%pn6WlN0--ui>Q_B@A7^-hn@dIm-D-NjS{uSkl1B}}D8ls^ZditzQ z&atd4!FFh%*y7khmUt5BI)Wi2-|3M10!fy2e23X-8|G zOMIXp=4Fxb=_;;k>?nyslVXSuu~>s*Rb1C_ImCxpu1UE%-etHT;)53q#9Z$=eFoOY zzl!ZLKG{T^7>gRy=gERzm`JnL|)8d;kJ$0>B>xtcPzkdN~tsAcAHtav9l@Cb=ppYF`6(AY;#ZR zc2&rCW|6KGc?(VG92zYkOVl%6aC+ZkQ#d#jSj^a0?35?+gWV5v{CeyPZSu`qa?kqT z*-k$zxsK1Hnl_!t&t8d+KG8v2A~~{GOcMp_VEr|L)i9}A&zdw_&91{WX*DQk90?ZI z2Jcf1u6Y#5C50TTT{Z}BB%I8AWjb2H#?pheZ%aLJU3 zjSJb`*!3VR0__ZO#&SRb!_g*4r3dv&Gnd#fA{p-d`-%#mg(IL?wL=y+wqLFRt!>9vOvcnSRBLydg%7aLPIpNR>wD z14>5d0}4x88&f`@WQ0DTWP}O~92nu8J+Kj44|^N!fi%ag*r35`sCC+ARz@|x-euMJ zdM_^K!r*#4ijDE|awh_+8DTsg#RsN#e`->8TXjZ}^9JroR;?Z=O5Pq!g&}LZ+a8E8 zsDxaG?ZI>y@@#xC6XtMTd@vj4up1w&>-mt^#|Pao%EtI$LvNEkkb9Fg zyRmn%Jy23ldob6#)E-+k^S|;Nsq9dvJ+8m;~d;uFLpSTv>2D z;t0SO8;dzyFqn;XHJ#F-Y{e!$yeN4HxaW(_#k`(hl04sDTvkj5;xQ>!Xf$D9T|EP^ zPRJ6bAi)ivf&@2w3KHD#DM)a`ry#)%pMnH8duy>R~A=11+%bj^envi zxmhSzn1zPVLbjV(xaz{q!j9)=VWnAU`Yi0$EL?rzX5sR57Uanx(`}SxkdiJdUR>-b zE{9M3tEWejaak>qWL$7bBpK(Li6rA(Gm&JRYbKJ6bInAO zajuz2GR`$!l9@y(34+Vz5QZmm!}`InE8obDlQu; z_!K0l@H7Z6I<6xME|()dKKWUAqJqo+*t1XzE|()dUa(mh5M1Wad3$q9Sti67hIu&* z^GX=zA`J72idjxXX8DC@H?#c83_AHJE#{kqhOSvAe8H(hLJXWbm=*)8l$f)OLE*BB zL-nt&I8=XU#i9D&S}EN9Ybu4i|I*^3Xk*wV<{T68^}ntA)ym?a^XW!G?b)gOjnb7< zBSp&9E10n`DkH^}70g&Bo1*FBisIsUc~vb8U_Fe&0M?+yijkG$Q{=bM(&&_VdO3hBqj+L2HYe8_RI$>h7KPw zJI5u#ilNg+?7^kMilLK5uqw)K=T?l%o)Vp5^Jrn<#o-9Xx%JOkF|ye(1&&TkfrJ6g z0#=O6ik%lubKCLUEG(x#YZed&Y%T0&7QXeu&BEo+&B98vfE7ctfEDAi;+hLL3s*ij z3oFe+D^MiO!b>mQEG#}Z3oFgSn9ssF&BCq=Hw)+)&+Rcp0ck0B9`{*zK(p{|7j71= zN@szivdpfk9ZdF!C$X!VRTYcPBAV(|C8NX+K7lh z8NYmK_pjxPZ(GvMXS0I1nm)Mtrgg0kURmpdi?tFswVV=|Y(}~gm}rHr1SVRcD}jkt z=t^Ls6}l3bXoao>CR(8@fr(b=N?@WDx)PXZg{}l9TA?d}iB{-JV4@YeML5w4-6EW5 zg>DgctuRpnp)5}UfxC3H5_nlk;Qr~DGgyN_ zQ-^{OS_!=3X;a0=ak7+KN1}cN zw+<;F2%ab(SFlrc)kp;-Djp;Qa>e7mXSd?TYf$+Y9gX)VV?8n2F`a8O}1?+_5yMUcY?Ji&^Qo9S-iPY`_b|SUAbeBl&E?_58yUP_WwUd`A zx?D(!9|hOiS9C2d7n_z7uoGX=b=VDh>jt-(K_V9Ji&?mA1qADWq7rc^CtAn@_}7tr zZmK67%lloXm2lH3rIeb&b62tC{V}<`A6LfKehYVd7vu>XTHhqTND1jS$X|Yg4o~Xf zKtc^uFKHa339HD;949Nqm}=+=sYx|Jl+gx&G<)b^soauw?hc6>6(xpOc}pe`yXni5 zUK>{g9@zes-i#G(5BZ;^iVX)3mB(K_lhOZBL4WLpjaKhv40wz@T%m?Gw=cW8u1LQA zE#-LfW+Wo}{+KmGvLJ84fr?XaP7~xl!0%nfEJWcjKg0(pbN)L&$g}Ppv%GhAe}WK* zkyv2UgER zJh+EAd7y5md^kJUCD34%w5vapm;ZTMX&i0#sEtW{gA#yrNC485wZYR5Hu2+DW(p#& z2(SVLm^h26m8i_aRpDXd6><>+&leS2K5M!R6wTMip}d052yn=Le|b>MPFBhdHH((7TtYI@qFER z#2~n%pc@`r1fqrIc&Ok;NF3zML)MlJvfFqR545D%azS>(<(3Vy8!k8;WT*F?Vq+P| z`y7NZ*j`4CqPwP1bdM6Hv4&9$ms@re!v%*&q4&##3a+EatAz@#JBsL(6bkOE3WrKU z1&2!|v3F^x;Bc`zd`D4rdaE!w_?f}HhPRLme6#RU3zAYeR22Xkg9K+8P7?n&5K3By z3CXqZNAU6nWSv^_|?iCs!eLZn0h47i@T+bL2t{$F$J5q>%U2;^@X} zC=ZuP;^@Yc7}McmKB$2>Iv1%&{aZ}WPECa{%!xLEn{62MBiX^AVm%UOp~*ZvG*P^y z`+HOH{h>l%N(%j{3OzVAJw06LD@mbGheC)tgUx+CDfEdc^IcJkr0E(g_gGTyzl3r$ zx}^J$C*}TIU9LS`-;XJSKFFqFeu^Vl@R?D&6T{{HbyDuXhjO%w;4#?0wGKA{B#;6nzcpw75v5;we2Gl8WV(KUT~l z6(dL&-BqPxB^40zvN8;Z!Sz}yCduyVQnA-iNyVX}@#UmqYo?Nl5%Lcjy{n{Rq>Af7 z&zzIT`AMZ>rJ#GNCF6hnU!SOCyaW$FpWxxwryak*8!Q=1(|=TtDhV2b@(d7U5Mxa7 zI@pH?xf~;Z^Zs11v6f?y0!502C_L`KPM_#$D|A3>bxZe84;7N#314Q@-gX?A@rL{ zR)|TTw3GnW)L=$2}y+(&dX@LHhiHoBC3m zMA0RRRMFN%N6Bi}n}u>v|K*K0+J&T#Bd?grE;WL}9T|qXv(}SXZ#Q=(CNnp8B_=c9 zV4lPwB#eRN|JYdQLY>c)Yz$W-B_Xgec0V0Txmv=MY1k5}syT{*>eYNG6kk1wpnpjL zRGUkN%JDS4%R5S^a0uGpyuWuDi&IB;PB(W;umbj%VJyD9%*$KpNBhWT{_P&&ED?T- zBOH^^{i|sTZ9tfOn&_r%HA4!Z9z_LE>fiH#Qy&uZN>1i(jt*70&`7iWNg|EoNP;vm z$RRGwWqM5gyPoViC450t{im32C^&QMPr~e?>0=1j1Iqob_Lm zPhExE@@ea^nNMAa+qPSZP1fQ_ycPras>~otVS^l?V6kt4)*l_dn*4N_qpxV9x`mBa zNe|nasBSqsyd|!-or!9)Ub){be@rZBOjevU?&y6lzhyKo)=ikFrle4sm_cnF8P9t( zk;y8uj!f1Yo5A*plx8HHy7@228=gvOLadvTGOZFeE|)NEOstDWJDvs2lO^$&O>G(t^$4qvK+o&`M$jfIl-_&HKt9HbuJY2kDOY+e>%-Al*^vGSXc?NO#n_ zoOIU@(p`T-y2JKMNY{Vqm>jn?GfLlRXJl-0+fu|SoOMK;!dXWRv5>wd;uJ2DMVw*_ zyY(ZGGna@{ICF_Og)^6kQ#f;pjy0XRM8}%WT%u!5XD-pP z=5+?K=vech6-39H*IPm4jCg|;M9zr06-3U6Lo0}!5f52G z$*)K8^--}o;jZL2<+tk1q3BI;$nEE=c78d{!|}yFqKApk1ZgHhNyorQcqt{oQfc4_ zLbNJENyoqlB^?7JlynS?P|`6lLP^KK2qhf@Bb0Ouj8M`sFhWVkzz8KB10$4l42)3H zF)%_&$G`|B9RnkjbPSA8(lIbXNyoqlC2y`#Qv7;l_$n*7&M0Oj1k{;sm3E8lPg~L` z;ImKuCz3ybJiBY;;ZUCRPvm~0_&`*AG{0Whsp29keocNz*s03-dq;k6p-|mvf$>BVrsQ4xFuxyy0t7=4OzYp zmj$;5zuZ@q1&2d?>{?myst_N0#0v0iO<7Y*k#hwf+*dB0 zP~zA+99EvtFMJgirmw;kgOXp_t5Ao-$`ksUt-=+9l3&@Y(D2~16DM+cLSM60xMEQ9 zD|;2jJ)y7JDqJxr`IWs26f%|+Xv1Wwl5_9Sq!;^ax7-kU25!yAsm0exQk z*-RLY+&gRRRCB^`RG+VnpK4ARj-nH`$$DdkquBH{S#i>EWT%=)_}rQBfV^z^dyWH6 zJSF8F>#9vSu#!2(lcQhH#3N^>VBwHCrcRE2{n_F5aiw7OnDBU-tQDOU#vV_T)oKHY zOiFs&Lq`rPab3LiLLzfFGc zEyrSRev7Pa&b%UPTkP6}vc$2e>4cHB%};J3)5f+ZqLpdG^~%V!;d*6c+Hm7XWZH1! zM`YS?<40uLaN|d0+Hm7XWZGz8s9M1q`LQl4CN_3it59Xo#5wgWZ+R|WBWu-`b1;&T zSLX$Ts5aR;r<~lBX**}I7T}0fym_uUWyk59_ZtRKEDUaKnr1!3LNm>Jh=pdF^$-iq zH0xoUcvRsM!MHLW1rr&#d`%()m+y+mz~#FlGI05>hzwl5Dhzwl5D?BZj8Mu5`xPgm;gTdMo8H#*YM1~^Y6_KIHO@eMHn#IBuB_5r&B2(96 z>T1Zil20+_nsFtHf|+K7edTTomO#c8tpdlFN<8|)S7BlLDqJyR`YU@CFs|5MIKe9X zy=%7$V~IysIFlQ$j7NkitBewlD%q%#jw<=6&Xs5KLK*^BUAy8k<_OC@ws4$|JHm1! zs~lll*noAD+m*w^%n`N|Il|(Dqwp}UgxTT<3nS%luQTol+kL*_VIg>HM~<)_U{*Q8 zhB&h;g@?6F%Tu)5gd;35C4+4oVFxd|AM6Ky=W6|6w>W|SUL^8;s^|3LwjAkj*+j!@ z?hpI?W6H+WUirsGYHzP}?7H3;DrcdJJRjCt@b+;%`@qdBJ5B66%i%**Z9Aul$$Hyr zj*}H9HAlTKwcvfF?zOj;1ShoMm!JED>$-|Zx{|JI!9!7{>ALP@t!;GO$!g=euHN>D z|CFxFa^onm1c_Rx!QKF~Oc#;LTRKWrn(E6V$cKq_6yjsyJ^yspA}&Vh;Agu;oVy~@q7bl(WRIJlC|b#-HB4#p_fv_(U%gPDt5-aU&x zc2=L;<{-ktr~w%Ee2sG<`0~XJKZFT>T|_KlZ|Jm>w3RiQGnED5F-Icw*`*QKkq-Wk zIpTpI|3NTl9Sr*XqlQYsK#@0$-^c_}gy2gVy9 zT1+E&>V07Z59`OY2CC$FKQ`V##~XO$pM?f~d%Fgjr4{AJ#~T=U1HW4~@PvL$8$p#t zuq~dFj;Z(q`+cv6->$0f^~XOv+4;6$uoFTO;((g_Vm7t*bs(O{(K^&3GSG8$*#OGIz3Gg&{f(h+}gnD_-t2 zKqfmOj~2q>iKlqU3U$K!?Y(4$IHA&Iykv>SC~IBLOIBXV*4UB6Zr8OKsO-GZUm%^& zaQiBG(a#u(knw-l;5T}BkMBs!=fb_`t>sr7;_Fv2BMxP}`RwrKxY~9K^JKkk zN$6z7NfN5}D9riIB`a91Nt5E6e3UPn%g%LFydI8>#Q?&Qv3s)CI%qgDzKMxP^nWUo zxasWhrnu5{CNWuS8zwPXZJbHyt(e5Ca8?~>5>uISz9Wpv&kpmQVAN#2Z82)H;v`1t z{WeVb&<@~z=EYa4h^RvU-6-U{AB9M%K8?RIT4R88Kl&A{ikT%$d&YqZ(L z52MX1<&?7SRM%*`FRNXnO_lf>?HQt6;W6|1j3=?WH5Zw@z$M!MZ59D)N7rbptB~EQ zbec_N+OuZJZsq)K{NH?+%|KbF#+06K7_KMtnr&maPDYRXUXss~ZLEJl7(O0c6U%Rs zINV2qh4Nr^QSXg=8K}cCTm49UmS@xS#65UN0=ve$-N{#+r#F|5%K=AYlpYvt0*hm7N-q2 zy9LTG8=D`~1)`%kaOEEu_i7j(AyM3Jh1-xFZW%^2T!GZcF1jBM3)#6Xdlb6y#^iNI zKSp2uPn2BHA@=xyK&!y5qyt=uTbaNfRhrJNCTnd&JtwP;Q%}8>X1lS-<}mlF@TeKX%+|W*NyilMozMfkL4Sf9S~^m+^x=0EHxi zGj9wLtH{-LYA&O_hAKar4rc))vHY@bdaAn(!IZX5YVoWdlHrBVMZ-v+DmER)UA!~OY~Zg4o5+a&Knst&tv3nyc=Eo)L_csn_$+{FH_C@n-F|We;xUe&=uzz;qbCCnO>ne)8Tc$BdO`V+DonS$I z-KABuDybFx=ouh%I^>HsN{9Qh^T2_{BLzcPJ!fkTil?od!G?EX?erm2-xsD0IOr$u z`wI5Vi^(uskqjDb~aBmH)=UMb61L}jes zPF5^snKGtQ@6F3~V<>}yyMx`w)UX@eHK)W|aPfTpZ7W3bI99qPMQ}GeH9^);_<5X_q zRzsV(e+NmqNULO9U-!Cbdyxy3O_R^^&qd8sFeMMCpH4u;m+)$FdFOAGona~8tMr^) z|KiCR#;NGlk@XPt<#bQEJGKz{SDP7ua~D#VmR?Q_Eeav4S#IDfk>8&4l_(_9`AQTe z>wZv?-=3fDM1Fhj2Nn74xgS*Ix94t8k>8%XJw<+d?y?m5?Rf-Z6q4u>h>^#ZM<7NX zTONTJd2G3xu6u0l!5wCa^NS?OkNBTy(8LW;rgr#fl{)6^#}tI>c^V=oK%I0gW;mWXdh z?g*EkpAYI@qhMR3o7sa4?}mGB$?!93{v)9U42=Z>Eh2Ood|ww*YGiVckx4T0*}`2x z54sxD9+`;!@aOB?w09I-pO(q)=! zC4#;tMOBi#n2?B%T@ymGSA=BTB}hd;$+)XhJq@)@FoiY zWY)QAL}uL)xYim&*mWSY(%q+?T?MMUmdr$vER)AgffBDJEh<%sZYOI6QDZH^SQVvU zovc<9ZNbdWu3S@<8Ef>#psAu2NsFkBOcEM{_$2I_ z3MkF5VS2-i64vb!b2BvqtxrCOd*6ojVehcPLd;6nq>N8DM(2%xjgoIg(n4B11LK}C zG&U{!o#oK)XNZIwoRNxg8Zh^?KHNH#4E2+38h2HznBG^Mge ztSOo5KCUU1)iO@_Dg>FVC%rOs*tpC|pmNWIieY1w)&L>`MZRW+vm!JN*fjq`Kk93O z4-8vO%;f!MkoWQU^;JWpQf5A5(z8x)NTsT0ORL(I9b}5G*p;qW)`%f6uG)1uQ>?0u zL13~T5Gb1)hrnb-Am9}P1ZrIoReK=sU!9+Tic6@ha=fzagc5L>ljmZ-yu;{aSr5|D zuD1ec6FpC(GSMAiwzU2aDBGY4?jWyj*c{WqyvxDN{*vFGt&id5X?)0dVz;#j!Qt1# z>04RAy@r-twSo@rnrWe!g3);`xb_=zFzJ8WGHuvyP_!P4ivmp#42{)213YGJPp%-R z)#=wz4<)nhN8Wc?`=?<_lGwQ&!U+z$76iJ2xL)1v;2+B{Uz01%=!)OV43GUBa}%qy zJ6{%vpb_+4iuu=!JFft%3GS?-m^&N&sLmL*aqOhMVJuhfCJ>J)nY$ZR=5F&1i7GjF zvdrC$nkr1zima}Uh;2+(b4FHX?lw0QxtN@C}AtyazK&@|LJ12M-8f z;uAQQIyUGUcekifBc(=}$=&FGRIRkAQ7xm|IG>2>l@>MXHKiF(6`uDrO^R}$dSvw?TJYROV-KSpD{ufV>R=8V~Bt_BpdRK z4ED=1A=4I4wSww0*>uB~;rQ=w%8$$Qzk^m;GzEzzg*L0bd{zg5+VVCQdPWWrqDq_? z8&nH8X;7bIiK9U^IDiygl`;Duf8a37Btl%xjxy3|rU2K;qYc$Jy*}DdzU9J(cc_Ml z%^0eO?6b%|;0;Ii0dF|64|v1ATWq=7aFK~C3vSC+aU&;4bY}3la`+niw>Xu4@7m~J zQ+RBpl3h;W+fk({jn_r2voRGi-$z&b*wto!vk>cNvM6^Sg`0&+c^dT5g-j-raL9KVSW)+-Y{um1eQX({=H}y0ZP*j(hsj@9XpQkvoB+LIfYH_r736W&z4gx zHxpWjs%tlevvf6C9;d5QxH$iE4@7=s@Q-^o4!a%df;K)=c?3bgbd@8?qj>6utuL+N za);{d`e`@;@Pe>%j!vKZEKwXjNKa`a>^kr1mjE=5mP6AhtS;0~s0f{hvfi%oki zk&`;m5lt^o-JQZGn~RrFmbW+-d_CryJQ@8AUc@b(-m_jn=e|69n;?barKuyKo3FW` zRAl+wTS#`DO(i?7@#Z($K4GM3LrNs=Sh5Pc4z8s~OIJZtnXN=;F-bl^Ps$0(^YoXf*XiKA=y#?L#(&ofqvo6W_~p`2l*jGK2VZl0YTW^pB7DdXjxnwL-3 z@|7}9-ibK*WHn!@l8@_cFSpbj_uY*~FgH4MCITh18TqDn!8 zk$@E~%4989dr=0X z%L2D7uf$JARj;ScOmwa~CVqls6oh3$_+$ns`nnkK{F@$IXYXR#sh;lPsZ%|j;>oTM zw3=_{lxgsrZN3k9)(Lpl5uWvI^Gkh!OKbC6K(Vbl?^E8FqP%GwQ6Zie`P<*X&ufXF=f?2!fp6gF^TW@}Flewpkj~^AG)rcui?<_Pps^%6PYiNw@OxAM?j@28dIg=ILf$n&{8-xgr**>Ev$4(AvSCdOfx z|Lt*=`&R#R7|HX?$(f>!G@2aFR)?!Ond_w7DdR$F92gMh{105Ghi^8x94*L z2Cg9a+!!#T4!ThX1_{0kZO_Gk1`KmG7#P6Y1!)SE7tOTS(RnyQpPQf<4vP-} zC6^+`fQW9uqW~{hE6^sg8Vdhc4eb{z;7EoMU^bqsyrhO$;gw3DA1)V~8T?uoS6=H) zAm>H$59q%&oY7Wr_tDUtyon}8;2lOISPUcZlXphhz#7rj7@|uGhPRsJ2;9{&#!hd! zau(Oz)N&OJD7S01T*duK=GK*$afBb?6Dn{!B#q9<9hCyNLsHPfSxN=L4tXSL;{&b& zx6f0fgGYi2+~$ug%!BZ9R<6FH(G)F+)=Q5c*qLe=Z=D< z;Z0WHS<)!jGrZXfJWCn{dxy7JfoDmhVBb)>h73oX<}JB?%)i`E$rcbkvQH7r-7KZ8 zrkgAORB8QIqczSK?Wkg&>(B;2Ekp0BpY`n$66SmD0lQHDoSEyw{tbhbgR>roT??opo)TqcxeYb;01599!W6WT&Q(;Vh z@Do}apX4t=^ZAKg<`+Anvx42fnq^@)wVPO&*>P~I%9NGjkYZw`v=D$V0uZZl>I$aW z$W+9)G0ZU=Uh!LP30XR3B*9$`YpU5t;M0EkGs&mlu9G71X>ji?leGd1m1QJ8;GC=`k<&P>S>W_GU|h5_&Eps{AVfUw z8}=AawqcKk4a-(-kB)MS8iyC}9<{@UwNKXklS5RnmU4Eu-@;1?M*rXF@|UI$dOcC? zM?b?e@dNxE&}QB}Gip3AYMmK;I@IlZ-DX)AA*7}aE^jg`!FiWipyq)yjv}%^O~83q zWr4EW(xXZdoOjh0sL5IpoOeYQsL5*MaMoKL!L|vwh_@Z(O2Q46{H9Y zD$t;;AVXMCf%>gti}w&f(j%~SV0S6K?M>gn%sA?3p9h{)I{-P z!^1j6ZIdN+kKXJRFA^s@`!OUSU^+oBop2-PguOV)X`e+79sKHxOCgN}mbJcD-qOSv(ht%xqhjzyEz#_6JG#4)3QXg_)|Y{>Os6zP11ty_zfC#BxCF(J66t`#)^oXC2%qZfgB?iM-Oso%L!hh(N8XI&}^BKrNF&UwvROc_esQj7-sa`{W&{4~zu)QuSt<$2>@uMLA-cjpa1@7-$ zBFFEUjZyEd#SF4h8@QJd1DFQ+#x~UmS*nCG;m^LS49feE2(>Z!b{93=gh=Mn5c*6% zcS__!93c1$p$40=>;{q9L~{4e%q9hScN3%(4P^u7tSwiXW@;JSqe|y-FLX+f2RGqJ zJ{;@+MbRCVhd_80TOCT=h;&EkvdLQp|0`6~Sb-k?t>lZn+iI2CyRhS*E@hL!r`v3Y zJzMtgp2_`-yf(g7wST!Qdc3d`5KR(7i5*uXAq3@}{d4My(naOQfOK(h*)R5h=cAiq z6b?$&*kbM+nS@G4vtKecIJQS=;g}gkwm7ZZm@UqYbCE61jdQgvj_W1ua>?3WsmqS0 zqUW+q8~Bpp48V>u=Cj4f_5DDam($E#n}g3uO*ZSOZNb`dHu!uOaT;3Q7`9}#ZVW!t z;Xr^48)KYDC1Zvt6>Py=6;5KVHEaf6?X=p?ETzwLx5rbHZI)gt>m+y!d^XXzZ#2}8^9vr#qqutUf|5OjJ526DPTLQcCfOD zp-_&$3zQ=ho`JkuGR<3VlS=*R z{!$FcJe^Dc9`ke(lbqr*YMxFU!Vv@{ZysDIW zjq`cplt!*|vMQw7j~?M6A3)B$N<3bqa2D0SX23qRx#gKF5I)n~Z8X%v zhX+^9JnelYjR3*NHac@#bwH#sAhG}m-p7D2PtytzSup%iX$%mPwHy%C8VAH=H3!6) z+iLE?ehVS|+h*D?fWb#ox#jTVsZ@(*n|omzcK-W*w)=eRy{xUV8Xb>nRhmZjPu!YC!3=~{1#Zovpf!{zkJowGOIvCJ z1v(tFadbFr59w4Zs39Z$Z^$35zd)(uo^h zToD^|4Q;cKc88y$o7L(g%#Upr2ZLK}zPLZ(d>{PUYk6?K&VYxy1~etjU~rrcB*KWv zKr{_VoLo+W_mImQ^q(*br_C~N3C_GBZ;86p*`+PuT);iaOI9!+a8L4*6)XhY)7hmJ z3bUr?X2dFcpWomA)tn~ z7TnRa%-xXF5c?|D0)OJEYjGfu7h8)x5MEN{$=#h%6pOZ2Wep=h`><5)$1mUjt^kYV zj3H`NvY+{l!&hO1vdW~RPCh-t2Y+MiEJJvo>;;R4g0)q~Pv*>CfXXMD>&PO7~;(R1xEY3$F#^QV=Vl2)_BF5r;Bw{SiMCnn{Peda`F}^#a`x!_5*LAK!`F>C zQ|7CT86{ChW~_D!tU!95q6(o zMA)6eMugpwHzMp#awEd-J3S)ozSASZzQ;B|MA-LQffIK5His+o_Hz^DG+=@{Q(;fc z`7ZV_2o+@qa-zJ9?bwd!mSUp3%vSgC9U}ya-PgfmhWG*@n1K@Q6EZHtgZII0XF^WC z?5ekZkn^Sm_g&T2|FfBN=DgdGzaSejo``|7xZQ`?S?L#P6=Q^Fs_PeSQ?&Of@5?X) zQwgFle6A4!(eqyBv2zkcYw{4{790 z8+i)Eo8`!L>RZ)FsZoyIr1+>BzOrRQ8PzK7XtEx@vSqyn_3H6YR>W72_7`azoFQ(8C;%$8{PT`ay;+s8=wb zf-TiayOgl)u%$YEmlC!uwp2&*m&ca)puWbI88N>+pXvS9eAYXk!Sm!xy9hHhmYIZU zBtjj}w$lc6Fs%#e(>w_(7VqPGquXZ@aidC(^i;~?Y&(;+9O{O!L&!a z9w-*r#O+7Haak zJzB25RR#o4CCe1ddPV3@1Nu8REUG3@3RQ|0JfahmwW0-&sl;Tp z@dejg$%;&}$;xT!o=_!T*YPDactHP3U{*^y9t{rQS+UTt35JAT*$JK+FhtnMRiv|k zurshokyv3=y33b>CUlFHKts~L*^-7wk|uPktPzJNSRh%e++H$RRMp196DI3Hx60#^uf?Iuh>a<-)|5?vYAP_5qx zs-+D_IOGJBeJ*QGgn9C}R5W3QWwPeXS^-dC5s4Ab`HW-JEvA#rp<*tyalsI6xnf4h zGfou7kw^R3Y%*ad##7t=73p&$KbbaMLD?wVHcwkzMKi=xG~Y>EoYbbP$=cfb%J~#2@X*n*wbh)H;CE*08kC&+ z40f1^Mv>e)tYtJg_F$P70;=j10HkGXQ}RK8pt>{E7SR!ty%MHVKWoKGMD^@cdB-$Z ze4JTFqSF1T+xwno+9oR379Z?JtYL)>c_{<;MDX!6$kUo3kxz9+aV$1y#uKPH(IOhV zw0H!~iXnNpaNq>qQA@;;1-u&`#6*oDdD;gNF`ESp$uflp4JyN8bK!PN(`>O;W=;j= zZJ#UprU8F|w}l;Ph`GhSTB^YX1kx-+3a!vb<(}jWTKTm&F*Up(@E!z*HG!vQ+YA>g z`f<7mtpH4b6t6@yR)nhTyw_%6Sv9cf!vYN$xWv(r7JRBjddd;Xk2liRdEftvST=E2 z#^+3BouVlekewr|Q2^{(VGBlhOI77BGGmAQG+BxY1!{^b9*-)Be-h4yKoV98I z-uC3wRl7YU?ktf5ShISomWyInSX~x7Scfd(FLK}Rs-)kkK%|B0j zH}R2H7*KRZgTcpiHRPw%nC{E_ptsuS{nt)5^WIjtP%Ar8|EC^FunB1Skt>yV;~jbw ztaa4{E;=-RID=>C4r+cat!GO*KC#j~n?^y3>DpJ_Zwkf-{n@CPhEob}?teEc$oP5#J@q&gcAY^PA;|?c6;_ zV1lHUfqu*E#LD5IemB<+;B6qasec#Q%QeR$sd@l%3!$^3a|u$3e|7oXzQofYJmu|6 zj}`6BymQes^To1Q_lNjk^}Sc<$PFM2lKz%8Y85b2tQ~igF+Pl@T86@n1LoLhVR8`#+xp`_rcSmP_67uwD}i-HhrO_P1lQl3BMuO$PQX&!{)(bvtXm>+_U2?4ZNl2%9cK=A2iV0+R~D* zyjoi7eF3_R%=`KTE06mOuouM}wY^MAN=AR~Z6%`17)^~1k33P$YXcd!*c-mW9*Rn9 zbe_GIjcCL4ZR=vK>>}6H6!n2LYYDXy1&AG@bmsNR(L51h)Vro^QWUGll-BB)TzDfL zmA$T7<*HX}woIy2w%L0$OH(nIiMcBG?v}Y`j6ELOzzL8^qW~oULD_ohAw^-rQ~}70 zUqdq23r0_SrTg(q02)7*nxBF%IqOj`a=tN4nLprNEi#EJ2>NT49}5JwbQ?h^rIIt? z)O=WK4B`~MY-OoxWqF6K&{prqU)tjf!p3uKLP2Qs$Y0uaOSCh;LgByAwn9q$c@Vd} zK>eB9UzZ)t(>GrF{4f92PkrL6Pw_~k{OE)KkxvitgFiX1*$K-$J>e~;Z`%Dw@4np* za*c%z{+4aaXCet}6UA#@d~~9iK2`hJMDa1aRc39J>)FBTSKj-bEKAR)?GHZDr(Xw|lK;xr1yr-87MVki_iO8!fW@z)>sk~2I<}6S#Xg+? z(~AacoIR3qRg=*n_xef(pJ?|EZudr5_Dt$z>uJM>(W8Hn>VIs#LiEt&W1$QrY4oYj zfXPCkpPN!cE&pZTIOXp>9&cs39QjoEai}5^YZZ|=x zcwY_zS6Z_xlzZ49504O2v%1>v0rFs)Lq5Y!F7{%oCqowSc}24}34qVhN(FqMi2)xi z4DnRTkxcC)k~yjwnH3zEXnMG-d0r{tf~^adEC3A&Fc@YHcwF9;l7^W@A2rZK@^+bT zN!W$D6)qGsaBwf0?Jwfj#JsI6H=;FFGW#jVT+|DV@)#UECFAxA>tdq;E@xz{;@Oust;JO47 z#=2b7KqCo41i5$pW0PyB0*wkngysA+<0V!ocR@tBcs&j|O$})|m(@--o_u5U`DFAj zKf!NZWiQ(W;edomkv4CMGD%Y41*bIlcG{4Cn02XlG?swnyz}P55`)M(mt$xTK98(> z-X?M7DA?E&b&ZffTQ(g)qr*<$dxlgSWe*YBvPITdx5mckbHBxenLdBtvhtcFc|#&X zlfKP%U3zB7y2=|R5B&%^wKD*mdP=<~fCBmk2>$c(4y2Mgt>rcmbw{7FRk!ZI8>)n$ z?M0HGIl)kn`Rk|*#s-(?m8tCmXl4yqB?GKE{a3&D!Ub{qbL{vF z7cP{K4=^+1^zY;cbm6oUg!_21;ET6=@x5Mrsw}?Ki%)v-@$oicSE4jviBJLBq9-<+ zlNdIrI+85$sZy4Z5M$v>*=kZ(o4O5LYBe13Wq!n$ z)kl142QFmI3j8mu0(kWv zOa2Pn4a?kPI~jc;c!DQ_=6!%7AVxC!-6Zg~(>vpBYT#7az@7Z~WZ3|zba%oWOAJbI zFD&KwLlui&-64yXY-23;%f@2=O`qK|XXn}{3(MMk`)1L56oUlP*NMU$V<_oAI@CEQ zU|J4RMSzo~p?#P%w1Ej!72ut$-%skE$ivymqKg@a8IL{%{(&^3-%su+8Y|*!KY1x{ zJ%$zI62^|cUf%PQqU`E@P9J?rkODVD-Py+&i^ zew3%^;q3UEUi+8tJH9!1WFBK{^!x$h(y|j*`=7vZpJ5G69+f>GgoizMWUj%ywW+Sw ziusE=^T=D6a2R5-a7hPWPzUnHL;g5wQsuU)cP|z)9B~LTVmHBOnHM&$O(nvV0cagT zGR0Iz9DqKA6WBK`z5#M04%v08&%J`1K#+Iz%+WZXA-9aU+7$AS9iOH!U&v%cY3nX5 zm53aGq*9_F?R#Ik%`NB9vOsn zohoKc8TdDfuIYVkQ8MbCrL2A_)H-UCK7s+-9WFzo|L?bw(FYHVelQ*V_1wTxqa$>n z3viT%Z2OgN?<-l>d9TcTVzP?+ofDb=V2Z5xMbg{w`w9DB0gfKyT!23(;jO)(Y>5F9&PH2O*wTPR$2 z6YADaH6>)A=Qc&dPbA^;gq%h4?e!5BP(?Zhz63@BeJ^-}k4xYxet>ImAj zvuu2$-mSglLNtxvJH&4aEe@9hT`u0#<>I{tER$)2y)*b9ac=-!D*@)T0CV3|z(~pACGqc9sI~&@qB_G@7IrYeth0F zXGGjpUNq#z^{<0HzxnX%8kkBzq~(oKI{3M6c7iIY?jpET$is$Eju{?LAq#aJdBCkv z(~Wr(yXuq?3c~SwbbI2=5V3aH1SLQgS#D-EMqT4=N}+ni-YGjCR=%O4ap#yS_dj%H zvnv0~vCxWonlqd^6L$Uk1eJzB<)$ZZ=T`^c$*y{mvO}^BAY%zt=h;XadCLy&PsXfGZH zf_zW3w^u@5g+P95VF~%_^8k7C)z3lzN#1Xs*si;A!1o>ShIYCz(=a>HHkc@~q|Sb) zDHggZcb#{2`lt^v@dcopP)Igm;NB{69{vKv1a-rBc#y9M0JRkfxGs8I!#=ji3fHYN z{-qPJ4+yVqGZp;mYzyMsN*ScvHTW$n-?YLK{1uZ_vShlO0KX&t)cynDR7{z41cP!cvLP`!tQQLc4!cEF#LEthO;&>@Iws6w zY=%;IdjFYQZ4l6$qRqt=t)y(%?yvUl(K1P}pXr<7>G7}V{v%O13Xh8m-NUH$_oQ;D z@ON1^`r4t3(&)5T5Q!)~1)|6*j!Xx+t3Am&!ILZ#4jz|(RPCcwm$9F<)8}-aE+u^( zAx90ip}8|UqZ4_dq*El~Ii&H3+=+RWOoUWWwU55j)#4~Mcx-P)%wd!+y;YMqkMzWOy^{ep+s zTRfktGN@Y^W=CpKz`)kv`&fR9TxscM8#cQZm9mpVV|xM~PsdpdQ2^t>Eyf0ExdXz? zZ7{NFQB|8A?=~rWvm&gLi%5oHK2&lF)L8?Np#$N*mY<$d6PEJkB?JcR6NaPC5|I^p z;UhJ#JOolcWlO_}E7{!AoRLC^+VOmbabt@^dMRdwA=xB`%yQI=P!f)Osi3(sNnr>% ze0fz{6g859I zi~LpoKj=3|RPT%qrZeh=b>bIL3$O|cV_UIlezPrG7*+(!pCCut;A&y4Cs?(uO`8F1 zT@#%9Y9v5)5nzyXw1eO@S{ItLU82!Wbcq!}UCx0LTxN`LHNEG|={|mvQ-^@hp27Muw}L#J{^oCcTF$7&#*K-fKwuzPES1*5D7gUeRDng)_9?~6sc5rpo> zSZX_Dchq6sUAa}Z-z5S^35jwerc;2w$AQ21a_hZ)FYLuJIEMXy8T`@(ODy)vcKu-= zpT54HY(G{N^*8nHL9B(@ouRR?+WnQ0v<6QO#}+# z_-BG_pfDot`Y#U@#$ah2(uW#WwAvY4hkB$M>Z^UIuZe~l(;DyA$WF0ni@A7lEB%?a znA?!#tz%jB5!_l0=`g<_&abMGY#Zp617aynOVSA0O^Z_(Q+&K+7TaR_tE)l0#s_h< z9t7gjbR@5ap^dQp7}(BZ^y|u_d2KbC+k7;ydp@H95*pA}VAw!P>V_mF2D;;|ceEPQ zH~Eo7@5VSpoxG|c2~{PB6spKy zYGCS6l#W$vgoY@1%)*PZGt@&!RwWsMyq{wBJ7BhD7pR!hnyelcy{Z+vsQCj@g1o$nT29rWLF#K$+ho~if zmhdT3Mvz`)W(bmZqA$}vccbMU)Lpa;ObQaA7OJLYCG{Btw|ZhoXOlqGonr#yn-WeI zm?FL}0(%KC!SkXrdC$ILiTe8+7Doxnp}y~Wz+AY5#X-E%$xq%C;sF(dJKR6(a&vOly&?f8UoAkuYTeuzUAVZo<4W!IPP2u z22{*?N6T~K1Ty(0e2w1pFF)|?8#aqBbq{~bCa;^9-t;3s{KNcI-PT29pURJfoyUP0f7UPt^g<);(83HKw9Wp68RsrGp?tQ%q`W0zmqQ<&(kI$h z_&C{%wqAgV7m>8grHfc-I%OPm3%+U&U6cvBrX_`}_TMT;)E9tHf1v!REC6$0O=O5M zob`bcm%u<(axyH)DLR(vI+6Jg_Xjj3MnMH~izv-1hCde)Wm%M^MrJ@YW=!Wx?Bd8$ zgL4Gm^Bzl`+Hj?7MzlcMip2koVbcc(VUT^L34s&DF&5PU@ry;tMHzfqI>;?$-1;M2v@dE>pyo8{yLJYx%Ao$N;>LU~w-{W!Yw#op{kiSGYA^ncP z#fB-tWmJG>`lb7B3bez)N(?8(!ETL-#*5pI@WMjH|<;7G%i1QX6Cb(o8L4BQ|tpj*ihg zd3iYKr-@Vh6KP~@;bQi#pW!hHc$0bBH8HR;m1W^9V@Ca7Vpe8?qgY<=d85cY!b8gq zI%v7&dDYk2&W@hbVk@c%AaEvZz7Fli2`UJ1c~>wOlsNZ-vj7GLUglv*kk7R`J-w&S;(&%KTYtlcJqL*`Hf29h*LE%s)Qi7FffdWxdbAcvM&#oMR^?w&Tk=DyVt zQ?ilav7Jml^*tFUlYmxb=9-MKjhK+lP!FhErB7QWnWj{$$FjiQpy&ygw3ui(Q!f(& zhw{VlDf49z`HXoG@N92v1^rELv@{7DETN;XI&5r048fz~W`GCkfwncrq=*Gb=pZ)i zRn81{dM_YyfH};xBY@E%?;i56ltYI6@-)7a7GRZ43o4O!tn|(8GhwA0O~+l6fbBO`q72q zHy?)>CiCBs+fLI@zID`jDCzxA3LyG!LubqI?|WWDTpnhiZ6cgBL?REw{iMv4p3sEsn8WjFT0JtHL~v<68wO zN{%EnOcQ~Km4Q*QTvG;p``)ccIj8tTNTd{KhF*TZeI#a0^OvL`YVH!Km?F?v0;H*a zR3I&9X|#g#3SC!c>>}n9thm}x=TZlz_#iZcPzJ+1;rz;24>K3l*kS*mr#NnxuLh6w z#Qgq6nx*eGCs=ch*6Ri+#^1diV#;MblD-GFFLCZDCU`bMEuV5-eN!$?3i6pa4cI}Xorc!?c~`RW7c*? z-f%gG56_f~VWi&%6D@|t<8F%#VKLtH0#{S37}~h%L8uMf5TC&f@pn>--wrC<=()cZ zO9K{9=?4?U*J1E)dcynBntmxL0~&OSKdc1*za&Npz+a!>csu&?|I26h@PnAJ!G}ck zi4*&3DEp#*sPQNDgLX!bmc8)#XEEa%*s2i$Bb7={x5?;R^eA9KvQkiurPpg+fk zbBq5Dc=zt6+r z?D5o|b{iO+!oFiJVGtKSKJ4cmAB`0x$#B6QhjRi5HY1AdbRfTL9QW9PEQ~d=%bIvJ?S*jy6-;RN zgA_i%c%0VMkbtYh^f|m~<<$x#$#<+U?0T>bGO61n^zXwdkZ|KNTM$d85E%qGR;|Cdcld-w z=M#F3J~?Th$eMZr5jsC$J-*|tr4dtOB%>piWAHs)2jw|Ep13q@XD7fxT6@rXyi|0> zcy|viQ*l?w+4&Cj-0@4g+W9V$)8)H{Z6P;L^?NCnG$z5@s1VfS9w-fe?)26Apstoi zV^eSM!Pu(54_#zL`4Wc|+GF{=jhcTjwJ#g&2KgYs4ve`3#DK@e&0-gegjzCs#;LHX zeEi}Mj-K|%OZm#Cw}{boT@80~KHjyNFHssAmpgHuo!A3H`ySIpFt+EhpJ>gXoB`Kl)nzyC(G0oW zgIH#k`*3Ds^iSkhDMgk1f4T*(+@_eumGNzzs=NXa7W~_FsA$8%Xbi3RjD|jx>b4p6 zF@Rw*PGW2|5{=$=ZwFTnDk4F;UbKSxT_=fmvz6H_20z^E%`*-k{*mM(X?Vmyv}%vv z;xi7Js-~zeC@ijhqr>=*VBH|vw%_aXIpbJk9H$(5Ya2XM_a}Qc4jsPe`HtQ$Rm4qO zYzmKXRR~|}R+v-0+dT)?Z&w*IOpVesRxYx_g7hCg5G53>;zYs|vE;Cvs5F}VbiFwokQQKh>?t0}MpDktQ z0}bkR`Cs49YdVJ#3BmqfKJYUE4ox65BFi1OS|Ux0(l(0)*-!YT>mu>F)!{Yg0i0;i zqNw^D;)q7xG*kY1QEPe}_%xQmg4u2}*Z?kmU>Sj6d4TnOa17M75&J`a#rTpqX`0NFEB z_SEji0bjoN9ug~8Y1@ts^BoZ$eW;@l2RbXDD+dJkW{LBL z>0oNWcr|7#!YbH`1YB1TUk!U-T!X#c5^R-edII(V;Q_W`v(f;JfnS|%L3~>&gET>H zCHPh7;GZZg!C&tiAwGM19Q=;>Q~MKe_#hyD1^*Wo4`~Dn%a}tM%A}K-R(Tdt#jiRX z-MvA?EAR?Cx(U%}ZI6eX?LFIt*Ox@B{7Vn!tJ9iGq0}tgnnc5ckS6{Z#kHgcNA)O* zYvLsmssX;FxC}0ARVc1~Px=DGFIG+jgYRfmzK#4n1oJ`ew8(HC*D$;A=cov&NH>;3 ziMj2XWDu)nB!d&aFb*7wL^4nUcvXwJaD|d&kTLEUZ@qnWr{MBZ%spmbQAB;o6*)?z zVfY$DGuSmnzJ&XK;Twol0qOu?Q4NuB z)W?8n=6t~nuNAr(V!f=;%`i4>J5YG*w(FGW{v|}F3f+b50&PLc67zHLO{XGV=D=U% zIPC(y@a@KCw7w4cRw$Ltcr!{Kfv#O~Ga`~{Gb+q8-i+O9bh-%%$uHiFkI|2~vS^@~j82!dk$03sf-z&Hb{+)EL$)kaO84Xl>V)PN$DlL`% zBY&Cpp4PTSnaeF9vjh@XOB>+8;4@t$o5tvq;hWJH{YOKHfkjhF;xXQTGdSjdH+nv((1mk7oI6sfas}88+acu>57sBgs%p*wuQko*8_+=PooKHy0Yi0xK12{9=X`Ml!G3R!EMd4srofU=o(p2xE?jkWZwt zTN=o)jdxf-3O|@?QIu1nHxzs;v6;*aQ1OChAK(C1nu^XG5Skg3a`FCF+cT5kS~f@ghZzWSv~fa9Ak1N$mJQaLD^vARt@CDly4-F@#u$wP zpJdU1qvc>sZBg!SE6&Se%zLVapDBp>%Ot)0+ti^k{~t)(t@d)yW^Z}c9bmUfoWisQO!m{mFn zjSZ9n>V4)&!g`>%20D?B`m$Xc`5qlV)8kv#8Ul?41-mLZenLd%aF!1)aREzbdMps5 zd}?x(9UtYx7o3rdp1WqF)J_beJZPhAZad0PGs^!Fg5WmNrdxXhST9^?YRK8>lRo5Z z^dbFVd*_XkZIa?Xfpf~YR}9F~-|w-|M`sn`E&pC{;yii5Br~I{Lk`zlp(0#)^m$)Gt8tQN z-k?@={q`fF^2Cx%QIwB#UiUus5`3lZcyDS z5x3RX`=`tI-vj-^WsjYi$(KTBzls#)kOKDwOeeTPU`*oOx-zfxcP*cJ48N4oC*7UI zPm8fGJ<0~fXsZhRLwq9t9@RhV9GdIwS1xG;EAs2fH(jKvWtqqCr-uhD-8JPM-F~k* zGav;D#~G0Bx@)bdnI?zi9A5VsT(fjAlxA%Ml_$xC+ikQ(|1oS@e7n9mls^&09d1YT zbLF89%6WI3V|+M0zmCd{s)f`+ha@d!W~6+=TW9o?&5sY8a{6fo_ZeP_GI31)sJZ@> zS^59+uL3Y03x)bIWG z6Jz4`*K$mFKxj;zEn|XS@;qb6x$dpl^Ti)x z^+30a0akaHKNJ;0p+p>Z`0 z-pTEvHx8*KVYX0b5>g1Df_Dt5K?$j)>5y8AC%9BYO4oTZf~9KAF{GA2b{1T9Do7oj z){sp`Tf|WGIFmWT_7=Zt_RkZ#JA&*|tUv`_e`qDv(irTUYfxM)bYRDyQ7_qS=@1n@ zr&A`*x_pYik{O@Xv%PsHym>mjQCPv~QHia%T-rDCJk>Yy>ho_t6yC`7Q?1Gw+~44L zZ6)%;);AAVZ!Uy4@9`JNyrX9%JU_^fFYAZ4A#EZ2>cjha`lyN#ct@YnkGK2#AP1k~ z$s(5T^x~8LnfBnPRU7qQtsV2?wX*iA7a#KCgFM+Fmc2LU<7R!ifBP<^-b?w3T_VdIvO*~2(!wv>59qhG> z0SpFb;D#p^UzNAT8tjcY)$b}AvUqS-uC!wsEzf%sV)L zN~^H%SLp!VKwu*kdUUWajbRLIp(nmqPv#h0_5{%C7~Ig)st3I@6M=|<8Hg;qvPO*J z<4~IQ>nnjK5#I74vH9STW~uS{T-R61dQNrohUF)mmU+4v91D&af@}tY2nlglvlHVG z5r6y=qlmVRb#&a|0B(6gA~P}xh*QDQT%lKNA^7xyc%d7d|#;umGaU zvdo_|aw1D?pyUn~W(W$bz@d#H;Z6Y*6$~2rAm2Us(K%ea&5>ta!J?Wacg*DN*C%{G z29p_4s5^yd!iG~TTBiYGyzC}waafLx*uW@<3sNz6S8kM0QP8pBqf z42^uaZo%|(l!2&y5Y_P2u~SD&=OQdm`M3> z9S=+8!}UDu3lD|DQudY)`!5Z1eAK)7p0eb?rQt9?kgr@C77f-ppCdV!7Tm#LCRQGp z`#d8r?Vi=#MbQ|!O>;oA<=~1N@?taBILZ+c<9C1%sDt?mQ5LAtlGKy?g`GF#LzOS* z`+0vIW7+aPSNSqyRFnJT_j7NXJbU0l`V1Y$fd_=NMbFy2$#$GgL!)^w#l>aWSHQYvgS z#>)>ctcvr2yGfj_@o_fAEMEeHtRYzR?k1hLF8u%%7CF#l!P9(E+ypZs+~kbYm!m9) zc@mmW@T^`UDV+b#4ID&uKN!eX0z`ksJ2clqpp*c{-qoL3y_wDDoU6=_6tG@@TFl-G zH@*o*q*KQ5twQo|dR^UwG+X>H%MOH&*0OiN&h@qpLDq||a%JQ1sOjy3^VsxuX?ko< zo1W8nrk9HHK}Ln$ysW1;Urmp}cNv%J>6XVuV+vfhl+Wo`7j_sX7+h9ypY;jCVKwjB z*Cgp1sA<0%Z%9Z;6Xvo}HnyuAeuIn6&g3oa?ABJ!v|9*Ob0!2=maQdnxwUoy5m*|p z-zplT#@ptW`zzDZqU`J>^c%IdBxikJI{LN#0JXG&&DN63W-^7*&b<{h%7&0|j*dV$ z++g8^?YFE9`*~Bex^DckO;tmvYq=nRcx<`$UH)`5WIcio3iegfa1l_@$vQtt& zCfq>kYvE=J8AXQNO6t`i<>RDY<5UnUf2&aj0xuE&N&^&uzp9ay^h}*h9n{FOBu*bz z^J_6Id7YK8f~50v^lY+$=s0EVcUENg9!Z^=hqw^G=8g(bX#LK6l4|)isKh{1&?w=u zH-B~7Vn;H*PzV4V0N^R5Ka!-7nPX0)Z{GU-&Zax#qJ*kS{KqZee)V>m{b09#=}bdy zn(#a|q|Zm9ZYy7BH2{q*i_8Utkzko1c3ne)lW|2Y(&bdBC2T~C8tC|tb(ONu^g%mI za?mVSpvkv@1_JIMJoJ1(bM8u@IVaFOv@_5=gak-!MpD5+7GgCp1vJvT9t0`@Jlg}u z0kbSN6lO?kk|@=Sb|&j4M=^y1j|QXv6X%w{uhd^nDNYbGnPQ~tnIQ;7w(_RK`92w5 zZS{pXs551oc8M~pH_>M1ZD!sknX~KwS)r-)MVpuVFQ1d6%3@g84$2qfJwI%)4bY+B z^Y*@_9KMDz90i!BqLiiteXNRJ>{s`Mtr z2EsM;oAa$P70EiV&VOjnXf^{(FZa2;<<`O?FF z9?XQI2b|ty2Eo`8I0U93$t$ji-y}haON@ zP_gg~QH}hPo)3`s;?hO5mwfY*Yd$Lq>H#XWtN>+{pW^!b0B0*Y|Ky)0>QZroJ@@nL z_3?hS5q}JxFenHVo8+17LHM)zqW5?iCjF1ica(*bMXi z$|S4i(L32GT`K^aXaSNzqe9cD=P0@B3+(wo$m;5Y-N^M^cI@49{-B!(`D2lH*h;pY zICT_U*4)|ryLTe|B)XHXE54kO}EUrQl+K7A<&0)%@o zBBSRhZDT7EsfMfwDpP3KMg$!(c|i??5vfS@Tx-HI`#{K&sLu|T1IcQfh#1R3)yZ*< z2#iISztyM#OAl5VEp^UTp*9WMK*V%~6KcS|Dr3dLGaJYGS`ZWV zxLOfc%)}KPpZxNw@YVhKOgZ?Odhiii-S16a8Hx=4v=5$LAZ{Np-oRTGc?^8w_p*NiWOVeB7N9Hu37)Y zP*3Y$#b1;DubbY#ioYiP8`Ieee-&SC|B#!p^^Zs_IE@S@t*TuAlJ%4e@2tlRywF#U zPs;s;AUUzWCS*DKbP-Q`1v9Spm!v8qDLlpkorFX-#Do5gp>X|;ak-+a{RL`kf5j{f z22$^@Xlfv-e6)<8Io-2EK%U9<#5d`N#-f&F_F-xxva`X96#XphMnu!@B1${&))W}Y z%tQ)Ra+WIFrrIxe*VZ9u(+AQk+oqjKc>*f`(oLS)YZ{dVkr%0dtZll1IO@M->1D@y zE<5I@$zs^2FBKT0CBk8IzEtq*Kz>m27l!Lf{=y`f4mqIcjmSBJ8BE?7T3SSBBWl>S zfg%M^xssLbL?95B$0Ax}hkf1xfk}Qoim!=C5au6{d>hHYL?)@%rjZ~Hfc!`n9JGk0 zgGnyDtPhA(?4_@MkWG0C2*O_NsQVc0E`Mo$m5;!3N&OXheAom!UApFol3T6G_ zjr!9W9%4=z^Ep7`!Tm$2glPI&`X+f!B@UIOgB;E>B1n`1bC{3M6)Myui4apX>5a*z zK3PlKU{|#k=ty_D8K`fjVQga52S+%z(XZUKgJQs83DdehXFBXiGK>i>d|u9dMUz6g zAX3CMmIJO~9IQ2rH{U^f!%8bTlovrCxp9j!k`KOflzykeS{O-3reo7MfuJj%S^%OT z^oMj)0*RtYr%RDRclpQ+*@s7P)!)Y!PW1#B3e;H5+ zsR2b_qqqzx!YI6914Vg=qy_>6RD?m*AizL`toaHG@$&E>dd$vDV^eC;2IqCd{hF^p zo44FA&Cfq%_L>LzufF{$UA~Npw1LUkI!aEF!BvMUjbRFjzC|to0vDJG<>BKD00W>BY2k7JSZL~IJ61&v66H7yd6Vz?VQF{xeZvVFN$q`?HzCc zWR}*z<`lEdL#lmcTASNAGkVY4>@X@cP|WyYl-PcB7&TKKMp;8*pwb>(H!QR}tbOkW zM32;?`%0y1s*Q9zrRx5vEHv7v_X~KZcc99$^U-Zon~~T~(G&v1LQkxUpv$J0nvK-f zX<0`|#)fiM$ri|rd*z~t;J@4!MSyr&>bWu&a)>P7gKxF7d)+jF{d#Alq2S=<^XBSh zGCVhZuqQd>NBWsV{ou|eS7Rapvkony&639yy%-=GU61hbv4gV&X zj_sw1d^{tQ$pY2DbYXN5T57J+mU2ddI?{w~VyK-cAd9W9_$^;H{k9f^$4V1PkMk9%>RnwC&Kz&L(V0gp38J?ZA*iKNF&3^q@5TwXW3|(mO_`7j}qj?mC*aO_du2> zz-iygMqa*c@U`ATe5_JV(4e)f+r%8+JB9Yn_Q%d@y`>5Q{!EIo2}T8KpOh@5OdWY5 z;qTeh|31NA9ZP&BJe!Ly@5!g!`)2CO2~*3x({KKCE?YQHsFfq0IfN~4{aUR(nPw-h z^q&RV5D5oK+0~$SzNp!xFbaq}V)M*vQoAw3*HIUaQ-Z9nOg38CB`*Q-R9Pi^EOuzP zSNV~f%*7vP>oDvALg?yHZmLw$8BVCpSF=&gc!L>OdrE@ zSzl=_;iwlMdmKt z;BbTsyRts2q0l-DTf&4G1R9-7aowJ(yBfgW#+<3Tx`1fjv~$C=CsQ^mdGsFG7`4t6 zm{UMSV7Zz-g|~~590+=+vUu^O3fLo0s_>nzOyRjFhm8>rVd)HBR6 zH}j9AER9k4e7DGDfRo)kS{nEE`U^k=zrA~oC`vy=%=h>U7>2!=uU?pW7{fq#u~5BO z@-Nto95u<;t?YcCUX+*z&7gwe9OT__u2te(t%9=7trgm-Ol=j;0sC^d3TMpbHnv-D z6FSi_ILB=eKtrBwpwBru-^w!@#A}s!mAAELTjid8S`fpJ%h1ZC4Ze})meNsdc@}?AOdxPPr^QcnaFHOMPh_B zHPmI%q1kG3Xrigwq7l7>Oprz0+#1y_8(4xdeQuMT8t)m6peyN%9;TR#<3ZS=z1{E` z^)B0zh`cWTw5~<|F!Wxt{<&xnz*Vy^`&aSTq<=}=Q~Gy79ME6u`Oi%6U&UXO`P;?2 zTj8(bs{i?N{pVjy{F|>gLEL{`ENdD@nH6mhWHAu&c@AWLVk68~{I6gq_t{W%+$_Au z@~Ycex{7yzI+iNtHrMS$U857lEZb8S-{J1YiM$I%AcKm0ZiqUV;WuP`mwsd35cy_! zIP0*<7i}EU!Ios?h2)3=luk8psxT&mvP;;axY&|c60q)@*<7K(d-Hw#5it`D<(58SR02ioS0W)($BvFP2(dEB zQ86jTmv!1CLwiZsu)flasrsZP#;sMYHVbn=G6HJ7_*ocl`T(GQhZN%y7~KerMq4$K z=s0eCBu-oB#)eRfRHBj^pbf!}1ME_31=;u~$c=0&j3~^Wv`(`8@8i-cSUi46#9nM( zd@Ni?WkDOdnd-vr|4^FJzI-pIWfzC(OAl_#8rlJdc5NUSxZpwz#j4C83AkSwc$7`x z5mqd1CLNL!0Qo}DimiO@x1-DH;`4Sl(%5#?yYcN0iZT{l6H!PbW+PYsQF^m8Bw3ub6GcHYyk2WuCD390OsE zS<2^&S&nQFMM74=zJ*o^JkGmjVRG=~2^NNN#aI}ihlPo8NEQ)CFL_raiv*#ZHcQ@B z%OcLN)JeQYXx6L^cUdH%4aV3P^*9W-!9-l_ss~f60mjx#O$hm<7zl#X&JKiVd54HWB$h?YJkqa>fl3wv;+Z5F{@0Z_WiMn!V7}oN z=_-UEpOqXj?`t9Fz}aoY2@YiXI_uMtAXJX=a%3NxHgN($Q+I4pn;A&HGKDCdV};Xx z>&^f{cO|`GjiDUj_F=2 zkOr%v$}j->$_j=CXqKF=GamTv;((nkVGSBv#&jr2Os18}nZ^7MuHNTmbR`iw~qpiX&%9mrK`hrCK z%C@;6qk0DepTWKjt-xAo26f9_AVOMSO29jE7eoY126Z!Wg5bV~BeKe-sQ0iEVuWtH z;%G!Ecu1z3IBjECQV3^8AFvNgEAaMxXm{d@1m;#zyb#-j;*ULG@?TE(*-Ro zkgwRP@7t>HGCK@37zA1FK^(C@bR=B6^#L-8^}z@S)`x20YSPFz7Onwa<21oc*@-p5 z243{W!K>p+U||AQ0Clmf7quc7jR2&rX??&zFqmS8Sq;*7TY;i4Rj^GufZ!T$s0@^d zSb^}S{+02gqmmL@))`k6yArvBV9ylE7y%f%j|iMjeu(3DrdD)?N^$0>^?_|gqgWqs zmjyLWqSr<#ZrjsN=4pG@ZkB3wB(zAiJt0Ke0P-M{<9FNuwZz`oo>SVMY?T;NLjc&Y zKp6dH7q|t2zG%nLO?t@owBE5TE95cKJCMhcZ5eiRg**iNv3E`6QEkpiM;=q^9dK#e z(}JJS6EbOZT3w5NBE7M8;n2XBN3105GYtqxetNZy%nm1xu&YlS4i!)JPb?=IXBm^Y zB3_?n4;7342{p||eaiVHjn6PYR6NZ;K^Erpi5q&0IemJ{p~C#kJ0&$C(K>g zKa&Jn9eBcN7xp)?pdB`^5^N)27v!iH6mi5NSVj36u?Q07XPiYaSha+TwMF8p)jIZu zbq4bqL%gWZ88otjz5!d?m{U%S*q0Wrr2;CfGk_qc?6tAXW=ENe`ez9+ZDX-*%mM?z z2oLgYGv8D@g-BC5S!Hz7>%2xfAFVSWknb;^>ifuG^MvSX*C70U0wg@Q+u^yqF+JoD zxA5?LEf4AjvuVM=>S${>#=v2ing+%U+=r(}yc?qm1_(RLJ{^tz9XZ%KK-(R$jt{P( z4)YVawhHA&cfB9%hE?~&IB4s~jf_EK_d39RtFGg?N?IKj9`3qW#|>+!>)<}rUt`1T9#Riy{yGaVxVH*0h-~T+=U8Ld-IGNsR6XZDioy!fH`@3e0bthE z_}U6DZ`^|Bt#{;WE3C%^@h*chb23SDdG9ND5P09J2NoH3#J2<20iA=c_M@ttU+#b&ZF#K2!)LQBJ(42utCJkuCJ6lyZ5m-474H^yggB0Rf~z95 zqn>u`;fyV9Bex`p2`~90H~^{yE|6}ys*_cmWwyDlk^cAVDyF^h z@6^ij9dUv&F256dx{D(Jby-FEna@DrY?R-Mo8^JH-)@NH3eUn-lT9O*4}G3RyH@pI z8|!$}8tOQzk`^B0W$GfqjY+T&oU7}`-LDkt5Fi;<3UY5Jc&rxbTuT;>NK;w8{Oy6f zzTL>H7TZ%b_x}lc=@(rj3rTtZchjAT9Bs;bzMIOw6|bD{a*?-2tgEQuxb#3aVF=Wk z?|e8G_`-KJu8(~@$$uL{tzxzl@>g^Lj(p=;%Iby4rn@joN_3wC&@`K%S#N^2z*fT~ zUeA@7^zl!&OBlE@XDTS*>;7L(^yw1X7{6kLEiQi{bJ7LRDhMgvxM|kTO1Z2IhD5}$ z(9F-23RCkr*G`lJ6b=3lz}DO-JBIV6j8NxCXdWdi@HM4>L#BW?{I_UhRf2dOV$%E7K%OTt+prY zy(}$WAom2C5P|u-vUEalUJ%Jf*RTl4|`5F6eVQf zv?jBNM%7OSZPDv9GByh&3~f!TwuC5%s7wpcaR3uIXgb-p;x%bRJ!-@eATKIL2OvS9 zI;isrx@HvE4&W791hVb0w+)6}rQIMSh}XsoUW{zu8@J|N2iO|#&nH8HMxAcSQOVlj7}F_SvFnx z)!2aR1+AvbB97VGw??Kb3o~t-RZZ#iR|JPf>1w({^mZ_jklH28hE3c_;EcunH#if! z5a5jIiq{t!oQWglm{No@Jd2mYSr*|8Y6HI3wrs#z*4&oh_XeCbqWPqPN46!jAJxQH6<9gJ}O}UAF=b;`7(J&-imqNM}2?6^zr5DvNwsRE4xQ zzbTVU!}L${T5b2^tMLP4CN45^OXI&&M~OBmO|Vav;? zPAf*@r7DH}pEa|#EZymw3gV7bwdkcw;o#90MbAC8E_jj_>E{Y9E^BZ32-TjaHrk_` zjWLGrae&_3@lIcEY_)laZ+WdWdA1R#h$oaA!a24lmuTp_kUI%B^Ut@~DE+>PTD zuLOcF3VRb&GhCt_2(Ed89_xu=8=q@=Z%HZhE|A5|dZ6%);TLw@-jDJtZni^h?2RqP z)$y>vNfaN8uyQb^rj1BQ9x2^R6&^or35jnU+AUP~!T^3jmKYG1)oIKcxP+DCvpG9} z1a8M_ZMOc&q4uR@OOP0A&jZkY%@7x9euIVQMF9$wt6OKTgTxirIol5U;A)F<|$aNC46b zO!^{`RjFyD9oDQGcKN}0bT;Igq!GAm&^m=wQh2C?`(K`egHh*<1zubRkOsI|P4cCqe-f*6123IKKM)ar?g$o?~bae%k0PDA? zm!0jkfN!81?M~zWY2Lp`?L=rA3V?NzkfpG*dJ=7E`2sw5Zjk_>_y${WbRlEm8DGqJ zS;s9}B98oC5v~Y(q257!+q0J-<8zxI-(JjRT|=%4v4j_H=ISWIje=c;jOjYf3|cOK zr3e&;Kpq#wt31-CT zQN100m;7aC*zHg$lq(|VhWtfdNi5cMl)p6dOC+e8RdXp&f^{u_v7}LS12hG>qtaVl z8glH6o&zY&27w}Vf#S{-K;)V;VKif$%G7ij5SRQ<6qJsxZqF{*168o6OZH?JOQ-o_ zkNl~}OSC4p{}gLBsaICf{N1%wNph(W=l1L>f6?Uwa3E?6OuWUe+Jn0QAS|5)XI&j= zTKWHn&li26C#vBfClR)12XH4jp!F#xd3rI_RYz>Qubs}iM`pq(1W^J#ff~#4rzmi^ z#l?EI!MgEN?S1Oc<%6Xo*!l2!yyaacHx~y32q5w8O+hNy)#*~yKnWG8#;~+ z=e$pSwjARt=JKOl5=nj659}U8tMvdc3ZMXHpwx?)YD?aSpFm#BUAB3Uhu&{IMpT2- ziVepH^DHWjZ4Zsn2^G(eY5V57m;%kS?z5DR7t~K;7oQ^zR3FzpC-EOHITqCw2MKo3 zpaolI=UK3p+plE*KqBQNcRHR#T^tjbEhg3xQE!g!lAwe7(+X|ktS5c@kztQd%+HNF zW2`B{_&(H)*DM{V>qev*f>ME{%m>5#eH6L0)`0L0e;)udszER}kolcDb!!1k@e;5e z+D62k49`h$g`b$kL}6_!DjA1dvd-?L5=m77!W+F_7Ji zY32#{ptyl}y9sUg%|N~4L8STTI>H-@r($5ja}TG!qNPzmI$nT>_N0tG6zt@G=b4#0 zQb~}pXNnu_gQ2IGutVw8`kI*mUQQs!*LCR(cpplyQ|)dwQh!WlCw-)@v{{#8__9`P zrOWY@k+sig@a04Nx3v9q85qRCXcXTb#r$49nN9qBYEdLd_Ke(qI5KX%N6(;%#E~a3 zIKYEJKZu^?cSC_Vj<6-T=_^s+`Ja%J=$$N@eN6`LkSQy})4aTZocnLA3OP6F9 zO>-&e%&{R15dFRN*}9`Nx&8Xr*$Zdyl$sR2pb9%`MK?lBNf}b- zG!G|v5K@ZB3Mz#so(8H?%tT!U&gawC*1-V*X2X*hGd$X@Gf=8y!yX}D7;`uOt|k7Y z9dPUB4^K0cho{9A;QDsVzwUmvKzEvSE3eB;2QXBA_h`>ruqE?^nD70bPko!xWkfOk z*)hEyT^LcA2MhlKoC-GptTtdDo}ZFV(MYw3_XpD3^k`so-I!u^1+SjSrjJbME?R(S zpTHFEU^vUv+l-0BBIRPD-W}CZEE4ZH(v2j>L0ek8mcT%Ot}D9uJG_U=h!O*XXj#uI`tTq?D*dS#_z4(zu$Fjg;|*EV$ho6W6eq8M5(!Z6vjDNU@2q}fuNdnSv zWX4*Ctdws_!?UGGk#WJaCq^th|j2^KRc|jgBt{I>1oUt@Wj0GZBvN#Wr=OA3zd_o8K!oSsjrQy@xY)bDHI9_ zKeHzMUyAvO{LbExBQN6Kn7&x>Ba&zq>bx3PzcKzTvu+F+i)Uq5i4{hqWmM8;;*qJm$uoFuos%r` zgHi$%rNkfipFPrb?1IW#B@eZpmC^s7eB_Zw{`FNykKS?av(Q=km)G)o`;ljX?5+L% zOOnr{@~J(*M!Rin2|}X5MgFGg38NKVwITEB&xMjS^%5_{{B(c2Wy%2C=(bN7$cSFb z;=iKvDC*!lY=8#XagTK0?TljKDrb5M#sXpkp1 z$Q(lOG5fRk*sx>sWn2~%&DkkFAAmqiR%B1t%yl4apz?Pg_dF!MP&|*~L2;(*dTrAy zjt$#Zon6|VB&ZaOJ!|ZjGO<3E>BxSuLYHZKSH0wspmub)yVIRgOxu~zZzcpQ2=kyP z0s`s@HLbhrba$;Kcm8m{d&CQv>OE8mqK4p5yOdFoJ6P(Im}S=KSk5( z|Hf#_ZjcXS~$CEnRX^yT)?wsvIT<|vb`Z&0FYfbT2zh?i-E%8 zNNJ^A8=l3B-$fq~S+H^aibDtx zS_H0#b3-4?QBNqnur|KQj%&<|E(VDZfqC0*iBbRy5)0H zfkziLjSHH4J9~+0#?K-%&y?9hoFY@jblHYPSV>J`lrnR zhDnDRwGLS5oeBH#aQR4jWm(vvK%A-aKkH*6zUQu_{6tZH3zxuibHPw&a9VjkX4<0s zeKnc?H2|b_AN@xc?mjnvZ{HB5S}Z^EKDwK~zmJ3nqka=@`&=3RoY|RheY?~#nh8YO zI9Yy1$tTNP6lOGr8^gsLCpqZfb>sRct=l=tUVdy(?Bc-=?Ceu+yPOckWxV5C0d(t;Q zq-=NpBx&-=-h?#@mQb1B-si)ErDgtOwrcsla~sfgudQCjm?L!EckCeLCqX;@0dIOuHn-74J@E6tHIW_Y1b9I10yaTK!@R=Af= zCVg-gxTOX5<_|`&4xti)+x6#OqtgPY4@)}jc+PkPA!Do&q#7pr;^P9b)% zV%Wj=F!^djTYse;d@p$xS)MUFn5MqccL1VHjN8q{`-JY!Gl~ z*uLgx%vQQHbWR29&Ux90r0=$N@3hVt&@ucX3sezH&HMVohDI0|guE3PJY2e#TmBd% zZt=6Yx;HAVY@dAMEUq9tc)D@7I(kspW1BB=#$wLL*F7(KGTRqNjq zlfrQt{>XM4!JubW-9<+nc9`$(xWo1^@Q;5wc}9W&DQ~8~2+uNfzb`y%yBH%I`mBu{ zXJf%N%8r!=+1R8)+OGh_Kcvz5W@o1(s+AWSWj5e<(vr80# zut%O5f=bwYlA~VxuJ|Jz$nN@};Wn&Spo7o##sGkWT@wI+`v?GTYK*fG0YKxZiAd7}#nNj!71Nn@^1tSe2DMtSr0;x8Nk`8$0t6~1*X_-u9hUTumK4a`E=#(u znS>52I|9m0%WHe(ZSOVqXxbj$I?EKDRkHcZ_uP@>;T7Jt{M@)tdg_tfMb{v7) z=7SY@@v_Ya{%meOgN#X0(1U^u_O`GBI@N=;1TbpP*4Wca8fcK^ay5BSXdxG92&?4| z8XCkW0Lat^aRq=Pq^2kwHTsgWLHs7Ux z-f<*GTPsiiVoXH@;PISB5dZ}Z9#299POtD*r#vGd=*AoYnRR~^;=WV9^3w#6a?rH3 zsJX3?c`@&;uol!3_%C(3S_|)X+yR?3P+W!xFzP!1yZBp zAzZ_^Uyp*IKDNpmJ_~=ktLO@GKotB3d!b1AM|2Zs*Gx)#dCKhx7^}#Lmb51$B&(wxLZq?)t#gG!x`frAGoHa#g&g(j+szBCUojW)lJ(-_xXnCTSgnY_ zBOgv873hpoflm2>yDCJ_H9_T{cOn(w0tnu}YeYhLpBq@2j~ZpZ%u(iIK$!va7|ImG zWc#deKtP8f*aHx1#l?z%;9R`zG7yy*i4`#L{f2=H)m(_Z6ov<_D)yHr)0aKH>68WF!q|IHHKIruXI)2NX(wjNX#C%S8UK? z=!6l_+t7S1C)9RUom(a+)&vnusJ7$;eoRiVQK%k>h|38cQi~qp=WAB7N!F6r`89Bh zAjGis=vKY;yiXA!)?3fGMX>~dTWk^vn~>dd0n_M^Jk(hbkr;xd8*@1qsW8rANxbn< zBBGtd%-AJ8ngjD36EZmoRXMF1Us}!wyh26DA~rZAK8Y4@xGz~ulCw>;c-4K0i5X(Q zANd=9hNIE6o`mKXD+&zGo*QMJski~fMuWzy#)|! zXcR`qOO6`EmM8?p7kbA&1+0onjc#re@JHxnR9P|)<2UzWwr>@Xb5_;uwA{QRh7 z^fT${k>zjxp3uSjyHJ~@Tg5a@BU?r6NkF=zD8pGx2-OH3L?#g((@pPWH+>ldONskj zZtIj_&6V|KFrfJBK%GM9+EIO3lMbHeEv=|8Q$3?{n-~@Ks-wGW;DSsC{9k_ADnqJ<5isX+^&Wi_HQS}3?#MhgKY>%U(q2Q6g8bQn9`I9j+IgNc1R5iN|h z+a;Cf5%CRlzY2`Dt%1>=wjxIR!+@=x3T)gOp3#byH-~4b-);)eqLDX*XE>E79gQ?0 z%FK3*y*)(L3DwNY-$i&ZA~}xzHQja-_M&P#z+OYM{Y;VG$g03}*08rkt<8pP5XlRc z?fm5&a8$gH7>^oSTj2GARe;ov3Zy2>odKknijh7~mfs9))HXQ7{~n$Tp1%~HW%Kxa zc;;5D^3&m2eDcS`vv|m*`j&bsPf9#(lGn(4!R;>-`8^k$@R+Q6#jx+Vex{Qjj+pZUM}QLW=hqB+?2bmUG;{ z{MXJ|Zv%t;Qh0`@m#+@b!Z=rlXJMRg-{bj(alRU!6YE^$L~8?{2!UYNHF3oc6kFBv zLr;TkHuj+j;t%60@T~-H$5<=lq6&%Sn+MyZ`z34nj>@2m-L}mH&6T%TJ^{Yo?ufuA z7OOxi`Mhg6fSf%4QZN5}m$V13Mqq*^8|b(Vhsm}AK_a}AGQWjyC5LqmfD>;rVRL+{ zE_%~1sHk;ru$3C7aB1^ggf6NYxOYh|J1moxsQ9I08R^TlzZm+mvF;0W6V?B+tarq$ z@(2vwCM){?Wm&%-v-(Lm8=={SP6qbd8<_A%R>Xu~xyQwYr-Rx4K7g?>;b+6MFySY{ zvoPU@!?Q5q2f}k=D-=~LBVhjnix6jlm0~M0lCmb^I+0Ouo1o_K&24*+S}xS~{q&Ef}Kao9C-nY|??4JV|V- zz;!jo_h~DNtCWvFTdX#WsHk~pL31U#@MEIOC^J1Ox{ybri}BGX7hSyKT6Cdvs(?v~ z(u{OcvX`HoU142U=ONH`$rcr^9Hf z)lGIG=~7D?vCkdUZ3I`cX3G4JcQs6YTR89&(!bEO`>`sz6j%9Q`>{la01Gn_E_92H zA^qx)H|kl$i8-Wy!1FI!{vAZA59z;?6uEm4Kw<5IBG+uQNVP+|viKy5TvN~P8?aY|6|`wqQsf#L z-E%@kE@m<9zcLATBhaHKkRo@Fj*iue+xc6p@yHTuBkk@{>%Ft1$AQ_N9v4*90@&saNEF8b$7TND7aEBKJJ;`Aybrj6kwF z$ob+YUBD3Jd@ekTCVnzJkCQ)tV5N*nKNTg7>uZreAL^pMH5e5#UpPgM$a8d%q zm6vbgGtNEct6~ogZy7Iu7EFB~(j$(KnZ!zMS@~u2w%M#`00`7)XNr)qgg3d^l0I=R%%SlWLvDjWjT|%^DO_T3 zWQBuJ;a@SXqRLt*>;6)wf%sfyhOJQM5f;QX*$wVPO)XkJu^wBUj{ur>olee1?)nM3?=RG~!z5c<4C#mVGxor(x6r8JUnu6>smCd-J>c??xuQ z#47mgN39w6V01&*Z<@oTx!WtYyIOt&oq6-G{x6;jj1#N7Q3f=VbE(jg&UZfC==TmQ z{g#H~|1L{un&Ng_%5{}F?NWPxpfcWFX7Asu-d||%pQ+woWbd!2${)1%yQ=R$ZSQ|o zz5fh=NCci!Xs%lc7k)vw5KR>aDX`YP|9gT8fA=vJb_6T6TG&_rT~RH((-z`grW;B8 z%!dP96B-Jm#}T0hPo%)ERScFpH?9?hLQ63{#B*UIwtbzYc??*>U8}&Lt8+O2^#<1b z<%Tfv`bwBsf;Dl$e!P4<+~J)463q;*pgDn=VXSSJDR$FtDKmrdPI-B>QyK%8nVw(7 zMP%5J%3!N2cE_ohrQ+Q@*eZk9Ti#pYn*kbq9aG*~Y?G?l!0q;m1=}Nc8wxa(bH!HB z)?Uw7;fH-B{>Ii+tX&2u_mb zSLd$WQC~a4C)E1d;0hPR>950K25*-UcgQbKn`LBlM=f^&klRDBHM_Aff|SFFVFEue zV`Xiya?!ywgpb7hx`u^{mT3)~3!2DiE(Dp>CQkE7HcPq>t1@t+ep!kr);z4j98n(= z!SU9B4J0`JP6JE)MujD8o}N^`V-x1Tn15_ap)&Cuvpph(yYy@0qtkbkr#E2VM}>Qa zb}YtG7*)9UB!gMSrocv>U-JH>%&waT17rYD04P;jsUhwYdL+H{{Vzxhh0HZQs7vpCvhb zH9WIaBZ}0QkF~>;R9h_6ZK~=y9Jg@P5y!gZHfscwbl%-hcgGceN3`|8fJ~U*CZDS2p1N z;mXkSWaQVGB=m7laCk>o_k@A>zdm*FzB+ByZGmeS<8n)Q7US~H@cg7@Tu>uDk>NV{ zPv+&<>~LnSWtn#^%e+F2tlp7)tqNHhK_go!kAjxv(?srn474n3JNJDe$BvIQ%=3TV zFweiY!rC@ZPbxVS#|{QfkQfh&%T)$YE(NYeq%ZIeoH1|j4TMMAb$HlYND9KKDkL}F zk;7T3CJ8LYNxsY>Fu)-<4}Bmh|LhLa2zTt^t$y78FJP}_l-HT(I~&hm_4Cgu$-#Gw zSmB(`52vIF-dMh6#!7NNYF2r?-3~8*_F=K?`6qhxn(%W()GK=K=HGK$K!J>{(>my@ zH}Z+|=@wc6J&#W8Y~)qyq74Q2RU8_212eFpQfW}gj_GU!#=|k4UO}lvZ)OWWrgzC{ zMk+y?$-Ehh8qmYTl4jUb^X~8^z2$IYXr?|GM4^qokvhdjS69+QkG?raeVoVd5ygp^ z$sS{`GnaWoRpUL2;i)=$&FBGh#1;%nA3qK6N*`5b5f2-)L=B6C%k>)SL*pyf5Kbn9 z$;~hZXsQ)$m=*JQBUT$~{>3WZNUV)`BhCJpHZ@bcfI{x0a!h5~2tQh|POOiL1%)rc z;Jl=rzaG zK9O$o|30I`fd{w06Py)V(cw&yvd6*Ml*5@iUcniq7By)OXRaH} z=Q<4l(FW1 z;fBymzeXrou_5mC4Y3*9=^Nt;*iOgCIFuQ?(+$)|b~?r5PWO^0+3B%{dMQ_|Vd+xZ zRg-}00rq9s=~f#%{o-n;$J*HG&HmIoeSc%8&*?@w+vzG+@ANna?PN%n1KR2P4YDfbaW59W=0 z`ig~Mg63(nECswd8IF5GVqs6t35nsJw!k$5Mq~(4K90x?4a|(rY+zK8&ZvQ!z!ZU& zFc0%yU)QE;=*vD5po=y)6?61P9>yWai71#665$O<$!vKyJCLJZ`F%53#2R$WNQp(R z838bbR#^)vi8a&!wqgwqU?3TAUXQ~P{Mhjdf@Bx7)p1}x%v$6;g1Hb2T*gD_f@XG# zS(|NGdm2%*ZMw*26<4Mmfu1U`QqkH2dSZPzULnk5tiq14oV;0-^8)fNuHzHpv`M7j z_v(m%BR1x3K?u!?vT%X~ma4q=ez=aDVjq{ymjr0N`_frAf-= zZ=c}eUj^Q_DjMA-_m+5nA2>P2K5hnRid;k}448*$Qd2ulS~#GU&LC638J44MaJY0^ zoeFX{FLI}07(Z2!J2RqL(Xp!6*`^QGs-E6bvJ3f*?=-6Su+_LxI=iPSPd!`L! zlxHa|{6kx?F78BvExX1@q4zEra`A+ylz>$kRE@D{;w@>iLvdGv< z&4|r~r&T~0;<#+^0yUD>k``TGccv=;=#;`kDFH7l1B4T>@xoP0*m$h9#`kRW7N-K$ zt*HlqWg)a#z8F6nbSmOL!8{pSq}c=xY&_qyoGm7tf5e7OYib09D0A3|mh+*nR%~n0 zpe7&scQdxPn;hmBM)*Zt03-J3eld&zg{^nbY+yCV5+ejDqeNm6BPCMI?qw|Emhn^d zC|E?0@@#pvZ5o`oMakoa>w%~yKV~LJvoaDT4oJBTqEP!bqK*aQ(RQ@GB^kt3gUN5 zV;*t$v3=7Lk`L}aCd95U`WZLUIr~XeHZ(OvDedGBF4x(t!;e6&5*D;k+J*LT-mpbp zi9Ki=3LRm;8w@8F4X3F+98TnC?{gKmxkTw$)BF?-WQdl#S9$hHFCm(L;!}$vlU}jW zd%qPp=2+unE^y}d{@f8g^ zxDhAm+JWl_ECK<{g;tBztB;6AZ#a(35ke5nQ~C0qA0)t0j(I(==_O}(W(@Hxe7`QLOnbZ+VTLJ^%u1=vUS74LP( z+sQJblI2VOl~1_=ROhO{SSiRS%gO}2_2Vj5Q~-@RrrO0>ajadE5AGvQ+L0xtIlp)Y$lyfVBZ{ARZQIj%6c(c z|C7ctzgRi8yV9q+0xtxmOZL`+C;B0?;TXMOb#xEimjL^#(yEffp;roJn zY$J^EGei7i!|~*({YXO;W4w-?UW!KI+j>{mnjH1ITOO8BA$w2gbth!v`Y;LhB8-1l z#oFMGMHXqYe1yXVend`tZDAywGcZuAS7R)7lrGD{Ij7V(z!jAM(CuS!-3y;n}DH3uK33uP+C)j;yYoDm^U?Wzc>$rff4fom>I=O~>FSU9{`7Q6$&2KMj+J)Bs4BT75 zZ>jpiql{Hg(R*9mBVsTu@jJ~gw?1)mo5Cq{%ImIY!CeS`id(Ym0;bFPZrk+|=HA!> z>+q#oaTG4W;&7?opwvgct6a=$^{s3Y2X#Z-r2;ck7^AU|3ga;FE2xevM{$RJ32ibJ zKj$eg=Pr}8?XqaG)dFV1` z2bh%}V755J#rj}o9@}1kdZf2Q!(K7(1vWxr+NSJkmtRH*_;hcu$)`!PWuU_ha%X(h zAgStCzdtGeDbA1!VqTgpOQ~vIDR|9XE-mjD4=3CQj>#t%5{OUk_t3351LuhicOTLhS3$@I0;Q+b~ojJ+8uORhpcQI zmKtmo=*e`7CQyv&62SB=WDps1iKXl>%jbo)-vapd1-`wrx%JR40GpM>98X9zqLY)O z24C0E(%BH5T;l6in$n!ySzWZH-D0z9&^|J&3^dLv8b7h*bGl4TI|oCoSEThpndt#w zwbdrdfBk4Yk?nK#&M;@XJDQ36a-RV&nKml3;Nq7+PSIDLp^@W|Vn4PWvM67MX3;0H zH#D5>nv?As_IB^9kz^)Tn(N3-i%eR3D0}hKu z3q^rclh126@w_kfh^V0Iu!0Z>(u^+B<+Git2V7}N+VW0=V{n*3>|k5KfA6pMa_b8A z@`K~{amv`&-Uax<_e&}TL738) z9X!pjkE5rjv30lQ52MnCrmqSijhVf1$O+72TI*_xyyx_Fm(S4YK12VG^wZDbR$a{y za!q4`F7P5ukQHeSPF`fc7h!&^NHsrdh4~rR$^rR}tR880mm*CJ2L=<4Jh=6DeMnPV zb6^+ftc)}pZ9CHRwjVXp3~iqPaWz_Ylo>|76lJazamAKThPd2vy^Nd!xZh7W>+d7u z0jNKOu{8@w>mMT00%Lv6!-)e@xB~r6&yn4Ae>KXn{9`OoP6^9>qc3h^JmU~JmeZRY z3(Xrh6ZY*{OPGo`gAH)3BbP9)F%?;T)yj!?wMwzawciNhI&Qx$+tnv8vaVeXMiZOW zg9nDMDYg!`Ia4#riz$sBZO>?9dv+lICamAkcpcqeu)>_~!p>JSV|Ep466bUar>1KT zG2B6umGzv0<5oGPuY*pCmYnHx`UZ$>appM*DiYz!*QF!KvJi$dYU0IOt1AXgP%#ju z7ppL)wFb%@-`e6@kS5b#BhB4|1=a&rWZg*9nTh#1I88iA4h{P1%SuRdr0qS8w%3O= z*WdQuM%(M-G}qtuzDC>2c+FLD_v>%FXtaGakc$f-lKHAR?De<3&}jR{&^Fhwm-COJ z?bSirVx#3dLdyqedDE)7`{kpCyYB>^{`88wKdU$+q-_XyTH%3ftOO`xi|ZDQuX5F* zwo2f<^}ANS9<3BOu|C%BLf?vfJ$_)z_Yu!wkg)r{-qTFmcX!Yt(!T;vLbxk-~B zK@SbYv*F=K%u5S6)G=gG%BRCaI1fVj?L`ciI ze#tB93s=QNjI=E#BDTFgCSv_u{J0OP z=8*lO9~FaxZH+>V5F~?leB$1UxURbiiIZx@#zTk8m%YGzP(ua7sb}Cr{Nn)D6y86f z20TBDAD6KpROBoa1}twzo_$uoH-jzBTTrBZ=82hkK|k$HcTX54{q<@2p&bk2exD-rjB%J| zgmj!cSwuCW(2M|LFb~SF-@IONakW)0j|}kHjGtABl;CT!8%|Yr!{#Py)te0XjvGwd z;)ii_Ui%h%>JR!BOS&?<;{~Lsf^Ry09+9UUV?RFy2e+zwWmq^V@uKDRJ`+zi zaDZzn|F&y4DkUDv+Am-AfuO`&Qt-2}Ag3uPd*766M(~i|l;3B5*8TFD>ENh1+UEVS zDCIuaEQjLI+WfekZ3T=+%YD94?(^fy5#MlZgI|aRy{~^YV?*?D#=agK-`Bs7Md|A& zn&o0&KQq3s4>ZbsYFxQr-7vPRUy9|ttM@kbsuC-9*6BLa%I(J8Jbnce#;ka{% zO)hVY&z&3JIQUV1!Pin@%##vxRQU~k-rUXKF&z|W!PE$525RWpzY*+HPO!}&TB~Cw zY7g`YfI%MU5V6Y4iszBctgsY(9IK9jX~C3AJ~Oi_6KAeqG=vt6F|vZ5CQ2&8DfTIN zC1j$~qcKA#L)1a1*dBo}lI-a6B$+-UQ9TrzT#o!wV5F`X+Coey_}~U5TxFcq1W?22XNO4mVfh+N41(zk zh8z~&*(G<^xuzpMAkdZb1-QLRhY5Qk&`qSN$iHPB6ne0Y*Tz-7qOQjW3x?HSX`g?DgBnzq5y zZMD=o`j4j-9Aa}{9TSJ?i@7z?+VT2PT_o8OZn}~ zSW!nU>8?hKCX|^dCZs6$K}U)}TOB=l((Xu(vdcB^mABOs5EBxz@_T>@x2y{jZho?2 zLL7$Ig9*hwIyU^>QEWJQ1=#TKJ4Aj+0N;iy;ZXRnap}u&f%oQ(FG7&I>}4C5K7a(X zvT?Z_2r(yzK$au9H@ip(2{P_y}^?1fssbKH(1iW!FF(LZ`C-qU*T8|8#Cl2 zDV|YamRU899l>vo*QARLh9fQkj{5}S&ucyUiA1(eUEt==!Dq4J6 z6Nj&-#eHgVCoP%+c@-@}c3=+VJ=|H4Nz4GqWvfwjb9RX1L>Kj+!pPAKuUgg338Z5F(W$z*0=CE>S53Nn#jo zEz~xKN2nzlda(Kyp|(#iwu3?J#K9`)!nR_0i)&~v*++ZKu+!RA7!jW~u03W>u)ZPE zg~!qt7PXRXu6TWg6W$eNC=@fxWGJPL%24dK_ONS;rHCgbQnE+e!_xy5o7CNYQL?hf zNG3RSd&JH@iAMM?Cf-+~-5j+&72Q}Lb&%F!IdLE^wEQne^-1d?4uIsDqvT-@@-XM* zVbaKh+d)q)d3X#gp{ImAm?hN6gA)dpAS=#P(B}y!4B*8<-w1=waUFtHEG96{MeZq! z7Po%4IMYz9owPFw!S&ciAOQ1V^5H3m;_w5kmA?~}_NK6Z%e3@QFrfJ#&47&;59NPM z=pYjAyp9u>Le3BP0~qb>YzLaoqv5~Kvs#xxxXiDb;(x-qYolc&+I}gnwBI*f)Ze7v z!pU60jhw0*S_yeGDT_S=P(2F94}oN4o3lgVuOHPmha4IX=cFOZvyz(uoi3KgujNoo z`CFJc%DZ{w)~=&>7}Cf}?g|W<-t;&e>n?Xojx`UX-08V;+s)i`b7cmls3C?>C?_qv1LGXMdR&kO z3j5)LN6W$&Ppy2ddIT&5bUMQy#yKzRmLHupN$Cq|`6irvaKvM3fB2Mw)}YYz=={W2 z;XQbKw4-$(EPA78$2D5hLOwH$aoROn(-K+E1m(=4om!nnYqpDCY4)N%Tti_bJvwh% zT`)vroHwTd;@MiG)mf|aW{5&X)ZJ69(GoCphMV#4W70Oe@`)eCf#hc`RB3%)5^R1C z9u?r?JOG4%cO0^iruBfkU1VhpTnf!a4zM^d#EaRl#kfGa2Dwgh+~U2c->tfcr~<5z z?I8LHe)bQu^M_Ls&GFW-;%w>=cwAH(?GqdT{7BWGsppvOw@yI5gYR$eOb%2*RHX1* z=CeVGcz$TgHe)lv>cAep10x$hTZT_z1fa*C#cN=&L9R~I#Z$`UxuhlgUphFe*iiZ1 z3^tYbSVWZvEB556F!A4+8O#@*reO_sKN*}Er-Jo0EXADaRIO&%LN}iWo6;%2Zt<2Z zc#3+Wd6kV;24`|=-ax~{?0Nb|u!T*M1UDlpWaa@B*W!RC&i#KdxUu03`P_$#aV5Vg zSh>|Mm1r?>A#yN3hqXCPaORtiqai1k2$jS*6XU0e8gj;-e!M_EC{7QHe?V+gK(fW@ zvB9rEDMlK!i9TI2sr33}gbWegR>7~(=ArCRtAQAu?!@Ty7&0hl;(Rc}zC5w}hX@cX zi5G!M#AsHDv&}?^(egxy(P;5NjB*j9JcbNXtksp;3&bcKIG=N3WK(g0#6FwUN3mom zi$|8M7P%Ws#thn`u{8CfB{qE{iw1Qq-=V|Wcl8HT6so)sXha@WR701@V!I{sTad*uw|gn6OUMCR_{!&tr7d)E9Kr^TnCPG_#Qq*~fo^ zn);+l+-)|83fvSem}g3rb7mKXI|?5~KyQn?sS$?Ft-=Fo{Bm=Ut2Zhy}S78>w+`H-yPChgLPUz?G_Xacsbm%n0$9Spl; zAZPR@W6O2QFLa8na);Q;Gjg|m*84WzU-{vrd<8LbxGX|ax|8`ZjX-|wgXw6k^1)ApDq*kLfvs zxq7LzEGO(V4#lmw5VUQAk8Kf$w_b2xSl+|CKH&R7J^YgooUn&FSoElR*j`r;f3wlU zw>-{0oUk6EahxsRg|z+KJyi2xo|0Itf<=}bnk@P{lHnz{CHi#-x@)ox3LaVz)eoXqbSL4?NV`K@Rg z9NUWKckHSLRNae1TuBb2{m5%6PIr_{LoAKCx;&gZ;O)zwgW0-7bkapK$veoZ;zVVb zF`@M!u#^v{qBJ%K`#Zro43;*W$2h1mmq%$#?&H;I45Ts4HxM0J)6ULlS+!3|ID#eD z@l@mhlgA7uRgZJxfZ&A1oJN7Sf4C9#i#LJ*8~k2+7xrhO^GkU|3cIXKo)490?G7`5 z2?r;MpO9)FDV!5bH1a_{%ns`)$pzLCZ4$C@nMfFvii;e%93 z$5lq1XVU2tT{4M;W0b5ww|ouuPVplW`@ztA`LTVpi@r?RK-FgpmEFeCoiicG#ROGQ zckm4XG6RNmIoEJFIf$QtNFa(FE>J^cbZv)rD&dy6Z$nL1ZIOMCYf1s#X&$y+8kk#IG7c4v9FH?pC`fFeLV@{x9d==(F~)h&Pi2jecC|4U7sjo! zw&QWLfbH5(or6+;;LVX7kJ};c<~|3RrWlV%{x#e^0hce%NHaAL|H-u(VjQ@mK^nVF z2>W|7`O0Rxqd}P#Ag~ZiaLyKF&%Q~}&k?t=Gbt)c7lp@H#mg2P(VAX*N;G(r*h9#u zXfToren>)WDi#25^qK~;Y*CY&_-r8@AQJs}`2n5U1%*)s}nD%iOdJo=3nAZ_JKq)hF{6xfB;a07uRQK$pGHf*zqTXn%8Ym+y9Wlb#N5X&XFeoPfB+L7LDJkABqTj4 zd8ipoE-DkA?$T+az-enfkm*X?&G8dQidhPc;u~dt! zPjl;NnTrTl4p=aSu4bzht#gtIz+T4VW zV=6*`NA57&nY3aNEf_^W6%?5oDT2_bti)Glj&~*#u?RweifD6X<;+MC#SS`pF5G|# zofox#-m92AC+Vw-sX^i$6+NfFx*WORr~p+?7p72#UFk5p*QIHCB;(ek^4_b{B8l;f zOgl>QKGm6U6ZGNPEJ@L)^O~YvzxEg8+2n7aUfz&yzWxiU;XBywLbRE8{-P3YuM&8< z&R(eDzF$ncgM^T`U+U$5+XbRrA&_=&OVdg2aLWI#bC&K=yke-`UM3sB9u^XgVUbE; zH+7C65sU z6feL0jWmB~8habn8&@_db%?qF6z@1Z7J#1^J%8XkC+PX^Cvwkk{pJaJzUv9y^RJ(v z=X;*WJ^$c|=6qp%&;KV-Mv;VFS?*>Bv$5YG_3d5#{DB$m=<< zo1qfEl{UKK+gi-Aw8JJ%eTBgXtSFtUDQ$PVslhz;r!+G?>5h8?CJSP3lZ0ZH>bO%~ zq;N`pSa36DE1`BN7$@a&H5py5TByA6!|Eup(@ewT-f~w#-pmk+bBYO%*g*=kJZluP9Yp#0T2~;@q^~^nR#6@>gbq5MV78 zTO9vc<CJJD}Gg6c~Ic8MLTpx-gd{>7RSG{y7?Kyl3hX%5_fN*1^CU1{-yWuk>gh zU9!0MmXyw>WFrS#%zYJ*?rZ;lCF87 zL!LZoj%ey9Qz#KNEnB+4mtNXz?X|%lGQb26s9(aNIDTsaJIlKVpfQ0CpAu#2?ls_( zOgorYW`RY~ELdl>%5lon2s5gM){LlUnnBQQ`g~9cX5`0NkO1cU7toSAId9IEzM~CU zYwNBROB)R1vqI1udmM+Px0v6okaT*uY@Gy8LjtrzM)7nbvBuMl#2QbB#MR^Js(`5g zM)9=WhpPJo!948>&y5hbh4m9RHlwCYdx~udjT0hk%%3P5yoyn`u@eU>1Ik39n5{_5 zpml-3wQ2&VM4z}Ni9T_S;^QYS98nn4+zIHLQ?U`Mc8!rQjoRmwEXFJqJovYwrFk&g z#5N0BRwrZ8jGBu_=?6tCz|tg;vKK%VeWO<8eUEziG!*pnG)%vkH>~r4Ycm`+OuY(G z^w0&zLa_@$chWBR9Y!?0I!oIUP4~fT!otzpHVc|c=)+Gz9#VF>J5ru@SPF)zmHm8b zkGRGoeT&0^O8X$>%M!2+&KNbe5gTAFWunq>qOyeYW6l^zjn)rw3g98Qg0?wh(4)?f z8TO9@#y)_C(^bWP7H42s3oK<$)M0HIdVAP1PKSN|+_4hn<30sxbvj@*Q;=RYY)(PC zrYRt|IMGc%kuptSX`pR2Q*c+7P91R#jbwu~zrRCCGyHJi#K1%AHMASOWlEK5L`#iJ zmR7+S4qE_F(h!1-#!5&36F!)8O}yWlQ0(xX$N7^{+iLDHH>NtqRSa@o3R5zz~q3LUJ^r?IRG3?aJEP_b=#DZ+)ARe_aq z-8c!niB)NL-`{3wCRbjX_fN-_v6UjUmoF4bLK|=~_Y^9#`9YWn*Ne-mtq0@P#Y*an z24Ig}v{?NB2%=B1dW*_B*<3;`>57XOBag~GBt#zd_`|k{ldKW7yCuNZt9lH{;}#L8 z6fR8HQNWczXKAa%>fyd;|H3KrLb%jP#F9vbD|2g;3OgaUiaHcC zAFMVHrovDcS63di)P3UPS%$ueF=2_x`7v9M#(1CHJ`>Av1?ir$bi;p)1mw! zLcS$G`Hhb~_^n?g^2xc+$}SGCfA{OJc|EWD$!3>wUZ7%UXXk-Gkc;S{)DC+|d{e0O z+22^)a;{-f{%}d?Bh!0STGH)-CCLXo`QjzXG`&5$WF%3jPqTG}|Gd~I<{)o2cb8Jp z^0|>Pb>eL053M??wtV^V*aYX<$Vc|nK2S`$rBR=fqZf0jUu~C zFtm*W)4PLjKx0;!PFXUStt%-4VsEPFHa(icD;T=3B|ULdg6J7Km*3wL6dm&YR;}gZ z*y_)ovZge!$)vpb;k5hHD0yqPOVkR}SN`hhVMbIX#WaEmD{ph4OUwKH0Y=$Wwngja z5Z0)8`LkNGa-je?WI>H0o04_kHl0nf55>Zb|0j^xi;5N6wih>R7LKR$;49$0L6<12 z+K1t#Z2fTfH{)p8JIp6h-05=nVfB(qHYpkuzlHQCtrxPfr^`LcH%QcSF)8DgnX-ZW zg*~Fw+5?Li%JhWvBi4?mok`(_Je~&UB-2=fNTp1XZilgK9V;e|7cCAQ#u}8KH_}gD zpD;Dz#bo~a?yyr%{_GIMgeZ%;Do&E#C0Q{GjOU?b*bcTiFq1+av}KDI6%%WB5$>I+ zeH3efXZgoY9vZ?}UWAu;2WuqWU_9%nDB5iFG#B-Is->XW+0X(Mx*Hyc*)eHiRHHRM z+;EIH=@m^iwc*$shZ~L;+4a(gaWXd~w^4nE{FL_$naqcwld;!5)f;+>G1Geyo3<)r zJ?2eWNS#3ynu^2u>vaC#Qv_}KA*Hln^ZXxc+)mOovsKRG`VZ0OFK7@f+lH`gt%Afw zjg-WU#9WNPbAcc`LJ~k>x&j5BDo`Mg;9zNm1_aA0Gz)6V-k=>7tJ?SXJT`s4WR8w& z+H9%_^=a^>2?FtkxqS$-pp`-Eg-^ppeHeA-BYrh>eyM=BQ{qc*@j_=UM_kL8W4b$5 z6n&gEXiwDYZ_3illn?=oK!aDf%&=)Vt+O8nrb3TEc#%o33tx}XLrb6qu<0#Y{sHK= z4}w(x(Do0gQSAe!qwrzk-TsB;v@f86@MZG%{0qwnL`wAHik%aRnT}{+mdEn=HDaJb-QoL| zxd~eDo_*pRjsA>OJWpBidg20avf8QZ3=*|7StHFpPn|tkr^}wJ^4=Emsw{|8tQj0# zclX$mUPn*V!D`EeTkL6mPd4BELuZkSltxH44OdcrFti{ZlEc#~%DMSXDw^g0G6PyP z&aB|acq`%qX*O&2)x32Z{mSHNSTcB+ojsZx0&$ zqNk}Va-Rjh&I`l-jMVsScgA#LG)B4yIGegc8}A_&BVT)t>b zr{yiuok>S{m4)1yOv4n2gSwC1u+@M-zzyT`NBv=|yy4ZrE#6$^gI<5DyM zz;Lyl;mZEsApo#mhRc|&z;GFpC58*!ZcLUKF0i>VSt97*Z_Y4?mK#%s9a=P1GnQfI`oVO?sWDf9zvTRmI5ivM2A++4(S6XFce&!)DoRHut*yu`Qm@ovCuQOA zu&_LAk#ab~)GcA@0vrv+j;r@@Q8R(1GB1r$mJa2!8223wKF`4_uy9K&0C3QJGC-#I_0V*Wl)=jQ*7*D7nT^t<5C0}e8NY6xl+z)hZj&q8JFe3l=F zjC|Hh!Bu<^^!bO#XT6k4`5>rwmTlrOXPH3%*FKVVKa?6PBK?dg%T2H4LA2$l9v}@| z0-OJH&*(S0gMXIBLejJ7Dx>Cq^K&g_L+!GIp9lW|+61YU&(n=aHay+=8fsF~t$I-1 z4>|I0mG>w`r75&0+b6ueOXfF2;7kF`M9=35nw5}d547sqW z^X!EGIqEbX`xAK+YO6$%-E9S*AHRQu)<`h(|0C2y+OOFMkro0QzFVQV1Y1~9AUxJ8P^IN(p?vvSFB`YH3*YxGIe-HCN)sznfXa#qLAwUj zo5Lg7CVGn$GSt7|b0HdNIjoku9~r5oF29NLF}x%ut>^UBF{^LClsBnryx41`{l*~8 zYgs<|vA3$pd$Lz5Aj+LLt|t$ETRo9~bSzj8VM#$e2i2ndq5*e2E)3ioIOK%j`#8(} zy|_E_U+j0E3PLW^LF$_$X=5)Deqv*Ca`DQM&z<42&;Nr}6?MzY(Rrl+4k1OQZFWVp zWDRwMjkih8N!<Od$4FOHrhOQD zQAJ+nCnPquwVCd&F+HUJ&UjDk1KU8U}Rc_HI-1;p6Sb7EzjzJWY2m^skw7Bs^G`7 z#^Jr8Z3jQfTO)%cO{QEeB%ux4{`BC>VQgMZ(w7s|U!Dfr@)A<+(5EYScmRu%A=RH- zmD5sygz|os$M~g~5sj)bZk4y_(+X9?~by5{PRM`v!qBA5v{qxig7iV`evRVCiik2IA<%UOSyvE?O})t1`ewTtv)C z_wyB-p$u>yGP*zk@od*KCNDJx$DwMFeG7NV*CPxdXOBWUf;-Y-EuxFl^%7WbI`++a zqAEBGdhGc1*Bj@0@Hq_%TZ>SSGdW#%^~gjpH`0vV??2!2pX-ihN_?mP+~Gg>`p<*@ zbIsLR_cG9ttH37kaMEOE`5Q(}k#{=QNXu{eLr{PL6*m{{cl~7X%AoxsJX0`4a?_vu zrLyj?w5Z;BP(kQkk6Xi&?1nbmj!p_KLhD5^b^PSNguw~cD}PJN7)N-eG8v?;ec3)| z6ivJYK86HWxY#tF6w|3RwZZ=u=cdfBF$tziKJ6Dfh~Df_R|iX^DUdS}>+U6rxm<%+ z9q~?HA9n_~q|r!k3>BQn?Mp@jtJCINVPmD{uKF2rBpNlrPtVmiFZ6 z;z~B5wBfdidLlP$B6&*#HChPfK}rv;M74#a@~};)&8_^lgMEXW8bshSHh=VA(cD8Pi=aMct) z0U17Cqgz;Ubib0qg4_P)I7ww(omf%nC;Rq|j6qPyQCp4@+$(Bq1MSJ(9USOyne3Cf$E;1V(ApWq#szERj9z z*(7KKGA{sy@N;-TJt~P|O=m3~^NsYPRrkXD&S5~T7d>zfOvm|sME<%5Mdlrve=Muh zzI#l2x2gO3v^iSlskP6?UPxWVqhdzrD1&HY7_ext1}tNOPq{m5^Ma*^J=iKg;+KN~ z378;Mk5}58ZD(ngXr>qoC@4uTB@aja!QV_+*8SovI?vY2yh#05m@X-YhiCuS)>QT1 zio2ziMWPhc-r9V93S<V+6@J9#aNv0*30pk z)ejL$d-COAfC<2&#mLTD+M|*FkQ4C^2Z@43WRwC_>>66Mb6AO1m`cO1Y!0S!bUc)A zYbu4)$(;GJlYMQ={@r@nIdo_s`gNNVJH?I)IWD`s!+HC%+YfFRg?tKPUsqgq8zF$I znW4X0`jz_&4+(FqiJ|f4q_p={Fi<8Ok&MlTDQYdBBE;e_MJH*phBi)Y!S)E3pq8m1 zP6mPM75w7x=OziZr=hONa_9MoFiby?x69GM^b6Qq><5a|+o|)w*!;J!@2xDRXSwah z0o<=PO&CUE!wBVPj0GmM!1hOtK{HH{y-b?mba_Leg(S4t8Q&tlF{%cUK7z6dh(})d7}(BOY%Xm|HwgZ#5aC zXbbPPN;Wmfi~vO-TOueFo!{TX(T{4uf$zi?yt({;K7ry7wzfE|@DHFO+jK*Yha4z!U^;7NY|W;A~eaB^}2jgmuj;w$WTle#;2pBdphtC$Sc z8jPv5MnLsa&QLuiiivZQgz9OpyIjpC?+*d;&9&28JNxw>8C}*f-OF45@dGuT7UP*~ZrmlQxdGsiXTGoAwc6ACA(G%hq zwg|Xy&-wHES*auQWPDyfJ&VEda_*Jndg(a{IL`)APX0%$q-=Kuh>aXNL8)QJ9HZrt z>z94S8gYH9eNeP$fuR+dR?v27YV)kx*DNaKvi3}7akPBbHsW!)og)(Es69<(z^g;+KJaHj$zJ&044bsw}1<7%Aid{dzc z#9l+EEu-sGDN!uRaqW^EQknij`n~OdbhTe?1wFnoIN3h&EgWUYBsM>wb%t(cMz0-LNJr+)BfvvuIv(K5)!Mw)Q)odvp6WF9 zGxlqMi_d1ih9iP&P;PpnX2qoldszi6e@qe|E9e0_9DL9mV{A3qV~p+uKw31GQzUo? zZ`XdFheex&)vMq^q~#5NOF`-4Hw6{`!Ya$(spUXlCP)9;Z~|<5U(iOupKFSO;N&w^ z9rpG~a$pQbyjoNLAKXjRnn8x;`u|_bvZ*5(`hV}0bc zT^t7gYw=**`Qh-dSdDC-Nj(!ZELUtnn+O4FLa7I+L@33yeA3W$U&!0ER#tB_MRxE? z>FTm#=7k~#Tr%|{ex=i+v|y)uOlJa*y^&%dIalv%Vq*(daavAeK86PC+%O~k$!YM&!}(%P+7b{Y z9)U&c_%UMqFagH~COID)00J`0Y%CNwTyuak&cTW>kAu6=|SMYOZI3$_&J{ zpgv-5H`Y@yd2EQ2TMx~3UF&e_IE=&O@nggO@nd|0bvQPhJzlVVNZas6Hqi7zgsI6F z+4S>p&}eZn?b8ogev#I|SBD2BGpY$?!=I8~SZ)1lk6&M?x))K|RIF?&RMxS|%9Mz< z5QG=8gj5Jt;g>Io5)Ufso3B)Hnm9%#fPi`VqtGOcS?b_1{n&09q2DhB5`fogwyfz1~F`#FER%H8O%h@E^f00y?boF6dNL6YzBy3+bo;X^-B zE|y>9;wn+^qCgrunL6zUJSgl?GvzF4k1@lEkiX{e<*L z@UQetNKg!BaFu^JmbH_fWO<2^b>Wu8p-0sfiJkO}4*k9aj4qDHE!64ByZSZwr)F0j z;g;1D<4ACe&8_*}YiIfiRvsShNyk4)8;u>U9Fn5rjxmqY5l5RsxaA-na1XYlbdVpMBZrGT(LFP|F5(W6kW-|IgmLfZ26jb)M&OpLOeT^?sBb z?Q^1lo!E&0cVavS)hWN@IFW6|7<#@@WLvgWRo0_aR^&#O%F!bN3YAZ>g$OP6*w6JxW~noc&yT z?X}lhd+oK?nLcxQ%bM#}VQOlQ)$+_|RWpdX|6Y?=O9$TMMWE$SU*i~Rw0PU zRHzetJZ-0hK*P$Qof1XWqK>AqQ}{rJou0mw#k8I`OcCvhtuFkBH-fMmgwm+kLbEZ` zIDnUI+chyv60Y$&z*^oOKgau(KKXK=?0BYQ+^3FQP0uhV0OdU(Pi+mP`9GVZpT6%SSMa*>X7@&C`g$BK*l>5q2!v zEAy7@-iN4Jj3amNn@NWSs*csYDzDEit$Br~!MFO$ikTv#7jd`c%bjyV&j-2*%6s& zCZxO@BQw^5=b*=e3{^Q6JFJ1KZ03GvUutK?nlFYrooxqSfFp>3Jamk+92cY zd9*<#%iWRR#n|6KM#@)O`Sz53tTnMu@v@aRLGlv1P-_E%{i1IO+klLvNCtf}6VoMO z)`S3BD-H8G z@T8!jA3_4*n@e@tvUe`1;4XE2z`y^Q2_@|#*r=b8{TR;RiNh|De29qNU)R-*hMMMo z`#bZGa<${@b()9>v7hphbl>Q|*6}`iGF}8ViA8-%n-yyJyt3-;ln=6AW{R+ih{QF@ zxm-p!%?zoC^{H@*{__=@ncT+dED{IIs&c!IZCquT(mrCM+VMJZMvjG3#KH#sVS#D> zLlQmH2uDkZuZt5j25XnvJBIxc0`}XmDfwIV_HhBEjmw!^I>!uayPF71v?M_@? zq?shGB9Kp#s-b4`dJcHT_i##R^m7g$Ixm`LBo3pcDNwBy!q!nX}5jmHy%qP-lWMZ!9NrK z#xf!3g_c?4RZo1=4lAd)Shrg!9=Sle?^vEAhOvemlw-#ajjrMca$D|;D~bNAmYHD*bV=+Cw))Vj8#3SnNHa*#KbCY8b~ z>@c_JMwTp-3IaKT70b#$J5;1vgufyc_$?;q>zq68Rv$0s)+H`I?q1(|&z6t5zYWWkdh z=FRcgsTId~>}*yqtMV81q<8)1Nk&g3={HZpbpS7&?3)*20(fJ~;Xs<>XCK)apViyZ zUu636fLsx+O4bxBwTop|&DvI~5{i}TGa&_^pp~j8rT~MHRw^eWohy~_kA9_gxixQN ziFWxVYQ?$p>-u!eg32+BUL%Es(-eM6$rAn4IA!3+$D)lPgbF)NThy{>8RlDqNX=Yfm;YOorV+f2irlqsKW=yY)UffQ; zhNz4u7cX1Z+&SBTUI3ME)ZBb{9xvy>f5B z5%;?3mXIXe4>56(>mFhn5jwuDE_muv5WG~pdW~C_;HY7fNPB&&96R;9M{cQA}6ecrI(G_xpmQ;9R)u`4-t2CNM!@-4HH zmr^>kLHx)YMl7G=3^FP72Hdg1f^D^=IMw7dJFg>H+h~2+Hd>tF zyS>*|S+@Vq`mb%bn4cYd3_In$ZPy4&-e{TO9E)?`za=I?_Poq#x)O0z50Hm$5R`p5 z$H~BMQL&Bk?~3lIsbKZ%5_C>~mRo;q4!3?hv@d=huM<_rnDzTL(1fPRt6(O4-=Hj#nq-g_7S%_OsD+_gMRYX>D3purF3agqj zcGA8OkF8TLPUt8=^e22ayaqxmJQgQhI>Pe>)J?Z3|C) zq`8F~MbESoI?|0zw0<7@i2QbtXrLSUlkO>Qu1XNtp(!6y0a? zCuJI$Qgou`<3`~PVJWCC+@JR0L7g_Cf@zE6pKOKM zQXpJSSs<{UG&(z0;l7X7|DyS<|3%*}bkkRVg9$$F7PXc&>lnTPS@`o_zpQPoqX6WI zep%aEClZh)erK2UzxV^l`N@@k%2FIv{tha@9o)0R;ks!K*DMQUrs&@*00)0IR{&m` zQUIpJy$FAXV9qaBquLz8@3o4(S%}^gZ7mBgJEj~B3K6MvQDotmAexlaD#*7;$C(SW zpNRwu{0HZF_`k785bH-M!20vp$88+Fjr9{-xP$fgiuD(K+x5cw@q+6+hS9u(v$q&G zxS>EE_^(a26r2~)tpd$sN$(7tUDB$MdcESVIX7=fs}?s`{~Zjx=zw--VBjj=$-oJJ zIE{g0w4cVV#fSJ{nP#~Uk`Z~xi(T3jm%R8wak*dqj1;qgI)uH*Q{YlG9w93rgUj>O zHo8&63$Py|XiLX)m8Hq~1IV%W+W)w`2Nv=bSjfidECfqR5t89tR}zBU2{95emlyp5 zDDR98pKm8-WGIhCsKa6#`9Cs}p=BC)S_+8GfkN#ZFuD{~3+`eBM580p*ShU!$&Axw& z{r)Y##_)}(ZU5%CFH9o_lF*QuHfG($jdD!a@Vhu;Ijvn>p1~}5Rj##*%QIR!o-1~7 zd4_gzzA5eE0Hd5|a9)*XRDA{(CF>m3KF=T+plVbV^%1Dhepzf+>vEVqU2~0uy3!O| zTGF{~=ebO8mt#AVvdrU^66cH4<>;95O!GTWa;2gciC#rrro`@aDJ7TYY`nGeTt?!u z@9@quAEuz_@UF`Tt#r2dEp??pfzsEsr5i%Lx>EBy*tlI?$tgwif3>zmwkiB?w1c(% zYg4;f?E<@o(gk|fF0i44k$e}}J(Moe^Fq>lbdJIEBA$DP(j|J9X}y~DnL4z@7tu~0^!3~od~8xU8(;Z3VROJ7=U1(qM< zU^T#++$vD0TjC#F%D-tbhcvW zp02V2tB%c}kSzgCg+jKJ=VGh9jOW4(v7G0^48ehL%M7uSXEaXRj??wD?YJ;jpvkaP zpu{jy4Btjw4An+h49iASXn-@ReCnW6<#gk;8*} z4L|*!)2;NZ4;GB#5OFAz@BfQ4E-4S*0`Sjc0lWxg)MN45*;ur!6eYL96}x}Wgv~E@ zx}Cr{^K?6bapr#>I{}ccoQVVX&%}Ps9ioHx&RbvmmgW8bUvZ8A$KPS(pkyCEF!P}Z zCys@Z{ZgT1Kck1vLlIN5JFW#5Y{S>PP6zJ=lUH=Pa(i(ReB1cZdz4KZE90`3PF#S ztuAt{sL(j+tq}e#t!M_7MS5PLvMlDgP+6qP6e^2UnL=feD#OW%sVV3K)6^6pp%}Rh zxEQ7BEX9aS|0|$31*X96Oqz+>l=d)nnjlOnW$HAc&{d{1lR}?q(@YBWWlA$?pfF8S zL!=a-hDi5E|ImI2ZA9A_z6vDE))KR9VcakkL7`h=Oqr8^152vO>4;V+S`a^S@QZLX zoqmdd(owAE6wRYBi^@LFu?Tl7Xfxo$ezd9JvNBnqFY(#d0LMVQ`vSZIfeUG0um=Os zq1$pJXl1^&TH;V;dGF_4-MtR|;B`vjU8B4VPp`}JcMW%yTjtPhE&pHsb)xUEp!)Bk z`G3VJp)TI6;s+niS7Qa(vPa(R!=?Dbs{s4->>s_X3>tS*OV`Fwc4f`sNgvYkPZxh# z2~AYGxs_vGXbtJgnU)4mEdRISAgqY!Xv{(L)4hDlIcSuFW*9WihkVCKjw#RMJa&P9 z)tzZ9XVO<=IR@sB`0RKE{}20a#d{|U-r3)me-DCIKkz~H@kc33_5UZv@%j2c?ECCG z-X9wuKOQT9$@N>36W<3c{O@@4eZAaf4?bXpj>!aQmz8}Te8b!OJC7Im$=RXXEeL`3aSzr-*ejJGd)@9V+KF>LsE)JMyGIpLm9`CShIU*6 zEd^uku)k7z{TIPEgXL$^+Q?_fH($M(8H%VyKKKrvpopKa>do{A1jO}r@w*fqV5*2e zIThYu&_$uhhnZmjAN&d6Z6tv=lQB8raBm!h`qW48xCdnbG`;zSkAL5>571%$Xdr6v zIRJ_VB%^b7^oh_SBFQA~_#VT1@%p7=t6^cC|;4RV@zf&v}*zYXdG zKDlpE>A#BPGQCjqcVbMbDyYZ45Qjy8L$mF_$Rw$@AO4h6kR4;BIXz1!Vb6!4eJ{U%^6oPeCtP^L;I-v1-SzJOZJmld_P=z00~DS)af1jZ2+psYn3(vFjoU&+ z04ti(+H>Iv)jfIB|Md9#Klf>x9Q%vk`tsL;H>ydpZ}^q3Z~L+4g2&dKxZ%Ce{Pu=- zzxy|p5vZ-t^hS$_8R<_~y9j4BAcAP-GY)0^;fFu+Rl|Jff{&+5-O?Kly!hFN)^7X? zjR6w>uDO1qc>48;bcvqVe?9rynG+Lk$qo12yK>XVnsNNTG_;`uXkG@%9}Ij`F1SX+&(yWfY_XlrHNrCS-I6*(`6a9^#8--bfz z2R=?O@+wuPB9BDbvfbIw5}1UCvEfgUP3#Vi?UEjlcAD=Klod)Ti-)u2eEk;hMgHS1 zQE#?o#NnV>&nBNh3J^ve#!V-3{Dd@nlZZ}AF_x5U(&A*r*!fAjrL;H4W)R@!rd50v z;-ZCT8~ONwT&w|)V;6g$&pO|W@LzzTeW~U^kW^_rHm~TY)nc-Q#2$e=HuNU2nRo7@ z;XLJpTQVW1QZ>&XHSf4qt6aB4{i9aiME|iLhFr57*;`zFI9ZUb)epCyvK7NP#BePq z8qoNBZF)=O;7(N*SPX>zf>(Af*0`}lwrF6-51x26dNy5}L%rjZ0!k6ufL8&W75Hsl@ABx6;%wQ&jkKE`u ziU`rTs{(v^bg2z3n?_zSpCHzE?3oc))Pxiq{f#5wSMICYdIZVOp2%4a+@&?8EKhL= z4Tq&15452vgQP(|=pJSRjJqq0kh?DMJ-SgB*~CXf&v=;W(onvP3#Q|GZq_c*&t!!T zG?a;uOD;B7#(zp#@OC;88xXmuP#XaGz~~KPQ<2!lq&5nkXB@-Y?s7|>B)hv`gDk_# z6%?>Um+>ptH1!zCu;fW23K*rA45W~NgeU@$|5vF~VJ=8x1nG3m3PJk+ntmQg zdCv7EX@1Dn<{|Sk3A5ij`L_qWw9UTqb6*^nCU(Q}t8Uov^`zcPH;| z(dU!z+rRh!UN{K|)}j=?kGE2-TRM?2_2Wdm_5^n9f!u7qzc+zhzA5G^RL*|~C>HNz zx_V<`glP2(A@ZMj(htEB9v9>#5*i6&$m2a|{GGoy4(rY)|6YQ&_0aq=I%;Ik91s&H z)jyEx!ck>>%ra84AQ$X3?*KwwU*gZIn?YpIDypPwd~|ddO6{gFn8=xFtCC`T1{wcT zfi(+i8Zr&SdiN)$$MQzRXeDB~v@W2mc=(yj(k@>x7_5|3;7yl!v}q0G50URsZN-HR zeN-cJH}R)FoRx1KRYK^(C;1cfHy`gk(OA;*bsdp8%Ek)*moOx$A!M( z?0q}lwG&KKnm^MEtpxT@oM$jRoL1Kp85zyir>+^8aMi)b5M}(^@grmv05V1tW$FZX z^+R~xpKpBp*ksV&>JK9z27@0~y&qlt(VM^YZw{^l0U}hvW7~yR{}Zh27YMII_X1qI zmZ15QqB4Ge$|}|13TW0{*-K}@SOH{h;6!%xi%OWtUim})reWUdKelvWsjX}qTHvGO zPr!iAPH*UlZz$DiRXmZ#Pfbj?kY#nw3bHXswJqT%oIriHCpiGXP-$O#!dv$51$4JFp(^Q7vfp$ht?*(7X1069s+jKOtV$Dsq0^-n8NiK}C!w z{Q11(`E~cT_5;lT;?C2X!HFbd|Ir+FQET#S8IA8haApeCXIkyF(t_Z={*-BlrZo7c zCPaYDFk^GkQ$kh&Ww5CqudqVA(xrWvr`j4#LwoF80LJ>LN$|qp)kjV?`gvlp7YJzX zEtYt5L(Z%or%#yG2YQcpGAo&SF`jid^tn{7!kLykl))itxAF}>zAd2-+63B>5fhu8 z_=NzX;2sm&7Qi z#I=fyoCS?TC0(wHGL!Hw@(nqE8B*M`<6wA5c8b_U`lwc{VBhkyGNU=4k)|eJc!*A*nqimad@L6PLra z`bp#dwQTY{HFXWuo`~75Lv_-Y>sGiutr7<8Nmfw*v_`iQE$woJTd=1q6-vpT)+!o| zJzcF&$Jx_0KAa3KUnhsmFdG=Qu??^%cL5<9&=VN~wx0DqQf<9?FE`i~yfN+q)AWzY?ftWB)1Z9qarlXevnwSP>pOJiH*7$WPFU%|& z3SJ0!V#aLwn?I-TvnYvS*(S5g-J}WFl+*eK>bid z)+I$F<|U2&t!rxsChyx}@Q?-Laj{{Q4wI7b6j*RtDPe37!sZjK3IoS3C32ISK6JIT z)Ob1!7y=4yP4ceMFG#-zm zaBno5K9?UjaHefS$nU1cNDRU<3xwP}cy@`bzh^F-O;Nyvw*PlvBm!c7yW(@E2 z+Pai)baSeKz*gcJC6dbWGojfRHoAGAkbwu*Eb&yz{vBJlus?+#9mlB6bdp=im{@|NJ z%{pfBODf6gAqGVv91gFJp!pnedk`;b7tY7e7V!XC6a9tah=#R%%FX|SZ9ra+!n9Pr zBHn>YT@;7I!v4ixY30h{XOzFkyyikZBx}GYn)3G8?GIB)C0qwjs?{(enfiN=sioI*TUNJ|;B)329K>*w6HO z@z7jEQ`#61B>_{2j;9%dzCZ!#p|}QWJj&K!67%#MxMh-v{9v)d>VivKz`pj57hzF;XLr&N#Xx^Ibvn>e9#%hzsiN~3-{+sCO95B4F6 z_5y!X6o@m%qyo%D$Pf0)h#xbY;%=fXdORJ~Uu@2Eo-_eih3`*_gu>TFsPuNEApKT36fUfdPny_Ml(1?46 z^;#@d$$8e|EaaRulW1!0I-j&U&n8a-<01vzX`t$eqYZonr_m^^BR5^@%vq@ z7S_;0tYZU=cR9U8wwhQoJU{c7cFuvhJjy2W=cTbY8EZ$Jj347<0R=iaSs+eEm=xn> zP)o%+h_W}?`Dp;D?AKWA!!`Jf%+*}31d5A9I_MNNZQPlCHZbM|Em!rulKH~K@~mbb z18*gMS!9GBxiS#^ZWOXaamBPL=FF{X_@?PcEe;$QpgFf{cuu1|OXXLt4}$Ui$DfBA z$*8|G34o`dnvb&cBst{wE;nx_5X8KI})jSJpZm@>cH$^39lK?hd#-Ns%J%XZz&E#NP%AG zJA2vXOgiLL1xYy)&Rw_w@w>og=`O`kX`3bcF4eqShvZpm-U`a#;okb<6FSIB+mvNr zQYIOHA`Yfxb~qv!kr4n*gDA?bxJfZ2W+tEP#h<{@icOuE$)(Cr!n6p=8u_nfN{Uh8 zc-2~k0!30A#_rqID%4_mNsER12?VQ&q1)53X>>&smt4rk$o9v6?XA`Fh_W~9V|{H4 zS6YVFQ5zpX^=vCZHD*p*fc8SH?uea{(rtx9iCTp@|H#xCxr-P%G?)yAk0!~y!Dc?! zYEi2Jbx};vt_D=ra{yTe!eocFR4Gl_h;oY@Z1`NZ7mos+4&e>$0pBb_p9Zo*mVz|dN(wy<^3CMG{h%#+EwxMew0VXHNh_FiumbpaQ~q8x)&~- zfs1(x822TPT8SrSC~-wR9(ov#*q*yP`*O%eV715&d#yj)qf?Gup^+&PyKrW|2u5i+ zW*~>(MyLYeQD4|VgXTbI@J_Ts12T56N9|M98WzAbaM36e0Bt;)tX6?1Vox$hW8s*J zHYNMq>dXlld(-433z2FWP7rvOByQ=cyRdko#>mN|l#SE5N6!`UkvMT`bUaShFjL?d z5{U{DIlqowo+D((lf6bK*;(}1qUzZw(H8T(oHwqB&oQhk;+O63OA*WG*Nm=SiIVS9 z#`&m`B$Sq`M@<9Ud1H>Pp!r+U$^qBix)U43X!Ad5VV$!;GeV47vY{J(-e1p$^ehiJa%Ex`339Iw8{XJ@bpWvg6>g~KIf^kbc;v4;f4d8s3 zrt0aHFxA`&TF7;Z+zesVW}4mVlg*D?rE@vKyll!vJ87P!Xil1wzR$BpcrUSJax$6B z3G=kipS1iJFUr3nKArdS93Bs=9b_aeBzCLc#u)_&jJ1zP-B?a0KTWg_35Z;7vjjU9 z;X+s>F2p!0xJsg(UlqA^^wVg<@fwKCb*GDl@f=w?oLm;6Kg0vk08`d3n+OXg9hILg zl1&oaowBK|fR{4*LS1{ILN<}!E}Qg%Zi{TOU7%kH2&K;UrnP0H+^Xn>QdN@4yx3qA zM|IF{yU111K8Do#AIWdNNr#pSYDXHr*#pvU+1;TR3q@))K)i z``$r`rgJCN0UwGas9ScFNR@U8GR6I!{ivw`*d_^iwsx33P(v1Ub7SFjPBv@m)@`Fm z^gH5TdcmglfQ$36%cJp|_^#7i_47wRjV#e8Vdsw!ZJyhPnSW?=HS4XfKUvMxRwdPp z$^WL0@hB#r7L06seE%K9@mlRtNj91Y|^#TbjM@_6*kVmhSEsf+YDH zk^r$Je@QGw2j;53R)6?J0J2_xE*Dqfm*t@!3sk&>aI>e}Y8}5#t=(9nvuIS3p3?8p zpDh;&l^6rPa@On5Jr`$R5fAv@ZV{C(%H>I?6oX_~|M?gsqi70V%wJ?wC##4vM5l7b zE&s?x`OJs!&xB|l1QWwsMA}Z5n8R88u>?fd2wcF(u%6XXeP#ZV+n4sn=-!x(R-a7j z5k#KVkv_<#1)2*&^2!dsda!oBq)#UQiT!2c$Nw6yJ{;ZJv6ogK zN>)%J;=htgx4M>_wZg7hlv;wVZBsB>uqEvbi_?$}%rQPiH_~b4CS*P)C_!bKeLn}_ zE6@?Du5V;`B!Tk8583*7LKI)}0}RxQxp$!jL6(qbT@cpsIh{g-nIm!6s%L9%NmfJy z0J%aehIb6KZV9N#e(x{8#^D*f93MfBO>_ufr5rIcVP))-%H~csuzIjAevskA*CnXj>h&ml3|@aD=E+*`yBTYr z#ygC{N3M;ynO!!F2#LrMQ?`#5`Ql(uyG)Obh|?oOtl{1mZ-FSgv&J}eO6&RzPllwt zreVn9D>K!wR*gKLBrH({u04oqT+VG%+Gr=Pb;?Dci7vC$o`k5r^6 z^6+vwar!-1W@nR&dyRh=T4Kp3za-;&Ae2GvuPwsdNFTgvYenPqnLBa(4k+I zGEKi%+mU6rqBGY{AN-c31`@Esv7(L4Ty1yKhc&r2mhInVYZ45#tw&5r ztVc)>BH*XC8_z@U$J@3VOE>Wm_(6fzMp14%&mWiUE z6#6o0;kscSXq>nkYmrG=5i?<0DOqmYVtgr_+G51nX+H%=4Qo%7o$VyR*>h#KJ^Y?7 zCu?Y7yuF3LXJHkalsKE9h1A(Bjaw^6%FXAQyzD%Ikn@a*a%wa2bQ$9_nm$uc<{FfE zx;W2~Fw z%K!*Futwp{dUo9jZLWZT)YT3e2Le<)AczYH;>42A#i(1T47F_hx9GrQ{VagD8hg2D zY?9Qxv9mUumx|%MSn`ccmV9H4XOr(1J>@{=EQRXdooiv|iZ;im+B|A)K2fxJByV#( zZ{2&&47IqYJDC+9H!R!G4>$zATG|kzz6; zRCh}IVe;`d2;e75vwy(>?ZMcH+Kwz6_nox{k=uo6^Qd+AL|iD=&%uZ=5qOppL&J#R zccwwVhhUsN9&SVM48YFEom9D|8Ne90v+~toNFE3XTfX+9s<({pWL|@t<^Ix`(q)YV zQ7g0-n%c4g$@yG~cqM8G_Ep}d&DaRqvBvh1m&3c*M?#>Gpg38Bp#Nt1?)Q7ng=pOr z)d}e!KWP5>$>O7T5F@YmMq;gYNzqR9BU||L-nd+;az0kenxol2m^G;jg`KmC$D-yl zL}=F;wf0p10K3tx6J9g_^Je|LHGHEEF;&OT^bi66S*K^6)$x5I8`h=MwC>iKZIr=x z`iC&xQsFACr6~JjR%nPs`Oh2^R$aH)SC@ZHtJena)Y@x%-zPsyJGV5cX9sbCZwh^j z5P8;K7qzmhlE6bKzkYbUIwFPIKs10v<5Au!X(X;uGPNrfM79^y0C57BV-wNNRZMP6 zaMErL0h#?)e(0MFyMqS8p{5OWBkQsg9mKQQ;dE|=(`e$Pl4$Hv_3M9rJ!UK?P1FsrB-AIf`R|S@Tx*yt5oW z<_G=V=p7NeT#tD$*#(J73o05BSDU+uDXh!w0PiI~Ry%ozHkh#h!jS2Jkp2+-&;RP5 z|4w*oF*`Gyo|+>-3lBPflwAW9LOG|jitR`rm2|LcA8WI6N?I0Je+?L-P0SUyJLeK9 z#ZLl~z*@1vJ`Jrbj`mPs)J2-O=oAX_{zLaj$IGb`x`y_K&7-iuRa$k?t!DD!!Bs|3 zlCsbI>EB<|8ti-~J)b;l%f`(3Bw-w`&>@f{3D|_4?t>XtPYqrO4`Allf9P&>QD^22 zr?bv^(^#uJR5pjf8b-*rs`>d|*MR4(2kDv#Zqkip<=x!0$Ugbk;SdL+C|4~SK^M%& zjY8&1n1K1T4%t|dCxdTk@M_QoU(E+kNQ+<)gAo&P1pDUd4R+*MvGIcqclcn!LFczJ za9R#&A-%`=Qyb;eBbc6ln*|lHV%kKP7}nr^&EPDn2%fWgkRu4Fd$sF+CUu9Ldo*Dx z8s6>7LE8E7yobt`Q||p#vDEgWwT$NiOo&9e}6@cwKvh z6p_$LX!WrRoMwH))Ic}5;>gJ)5OC{#t-b^P%%rvf#etcv-O;aYsW_@1aN1g4CCGUHII%)o&z1(h+d6!oyanwOA z0$@+_3vEX8dxzuIp#f4w)Y+}H#4bjc_B=?KI{aMgiWo81GH&`^w|mGV*_E z1EE`RV^6%2LTJBdVqK5SjH~x#pE94s@8w1VdF<@Z!qg0uj2@_D8)b8rRiBM4-p%)H zaNVzDD<5`?hDNh0s~p7iAOi5x;$Eg)H9{4rjExo$_GxDyI1i{k3n>4mo?)%fRwt>v zOXy($OC8A9plZl{DdThcq49=TOZ)5-{A{PPP2K54~C#Wleno!LWzOR{1>7S}? z-AeuBLyf72Dn>I6+VsgwYAl}mJz@i4Q?P+Q$X{ZaHPv5py*6O}v^hO@FQVCiuI_i5J+-^>{g_KA5p;Bx zIh4FkKHQ=huk`cPM_7wapXA-B0W8Q#sfU0lZh@krKp_}_5h`U_{`p;L0!vXqs`3&> z`1i<7T977iIfSMh^mE+67@+@KoP-3$4sbB%({BrRd0jl`?Of+8q{ zy9Ab=VM`|1b~9>DGTrPv%J2pepRC&5X^6#wq4BZ8ywI+5WwN+Gr0cRRI9Ow>T^6ORfY30& z&VHH1$?6TuXCgVi%r6Y83MjLCDO#ntQki#`rVXF1kiJY5gpCq4`7;iiR+Qs`0?tv%k2i|Axm_0w1 z|1Pz)5=ANbWe}?$4R=-qVIEx1kYMtRw*V;=NSc@yG)ZXqV{#jhhPoyqG#Q9OlSW}{ zvrpvOg5K~%7F~HlrdM`L|8Oa)?l0|Q{j$fdX^(BgV2iEuH>0+451nx3gq?bE zI64?`O&+4jE$Xg3$(C9pD~Y;T-vR^ciXS9sDGQ*qJZ-aGw#_zM2rF*h>VS!EoXm%*!8Y!a0{^v`&vxiTar`TbBKCu#3BJOk4W@zP zy}K%ze7b-xTOrFvMGjoXV|c{*&*yl>;caBdzGAfrlYqS&JCp0S{S!b|7-)@Ml-Gwb ze(dA(JY~OU>$N=_0qtDx-UOqJ%+`4O7MQA-354m?n!ws3P9?_gCj$;YbyTQLQ5_5oRoCLrsj+;|8$$Zq$8>N4wJxfUABSO!ljYF^A~zgS`sAICAD|FW=VD(5SMNh7S>kY+TVCS)a^WY^UY!)HWIra zr?qjTtt*k2v_{#MpllU1#+3SUp$m=1BPa{h`qEV9eweEJ1tUf}BM(qhEOsle)?;nd zz%Y$zL0W4faoy$<{i&e9P$^j9{wUlZ?&HQ}8tcxa+0${@@4LCQ7q(>66y)~jAlT#& z*ouVn*Pn1<^MCJEo8t2WLvo+6u0n|On^luCv7wZ$#QV7tYPbZQ=hq!PQ-+~5&PQxT z^#N`%LFzg#xamhL7&!eaH+*z9WtoguiQ-W34=WwZ6l_mXMhvdJpg1bmAM*6NrDx<3 zVTQvMngFYcmo23HqJca=!K`qmEO%;VHYo+T3T#hB$mYz%nYo z4Yx@9(Fc8bLt^NM3P{&PQ=xrww%RD8@$VzTnZXFpLIq{%IZ|7GhZ^$NV+mZY8%zYN zx}3zfMlXiZ09aG@i)^>bnOrV>FbuX6&5xpI$=Lw%v`7TlM@;5(_OekslUx>(y;j6T zujmJB`Rz~>&?}^e=nI8cYK>C7DNDI{y)Ge2Kc54H2J5MoIqs6$S0rd$^V|x3puXr* zn~f`5J)^QAElf?x0#MM9?4S;_ZRfMF6tqi_1bb*axhPt=Ka%v|b}G^XjtFY5qtovm zA}VH$PoX4>{MwholKFG%ko`v$MN~%-)m?9g0r1AR%!`69Ositm-KO3TL<8n4kJr2~ zRZVgyNA53iVRvzD$fNcV*-4XRtjAKLfZXy zZ2x{+1!&D*M%%6S5FN#jMzR}I^nU*#_ABWN5rR7aWFsk$tdzKd!>AN0w5#LpL}hN5 zUB{5Mt*vU;w@~C3LT)yUx+b)m=%5-e$}sz}-z(+nhCcs>u2Z+Ww5~ClP>x=U`c9w2 zsH>}~iW(K&EaY-mi5(G-^&C#(=L=4*s(Co2CkT%^EM)_kbwP|-AXqFOsU3hfEJzf? zVdTnL%$MqbQ%lC`db}_+?H2lEl*rF+b@C|2pa4aj_y!G-kt30}cWRsOxI@~<4jOw5 z15@iY!i6?Z_okG%rKd|y8P{=YAX)+CT@kJerc24e932^i>k3;w%J52t)iE1!F&kn7 zQ-iHvG}yXA)&Qr$pb_dAh7m*UFkD@=FkP&k4~cIkGaSJ4G{NDHowo1_Vm!^;FjT}w zkm2>Hutb{TRl3NPE))?|v#-NxZ@QHa_!(V6!{GK>{B{1*SImr0iO{PZHF%roNJ~mI zl=X|makA)E*c+Xsu&ujtf7!lW1~!WU6-dnRF=`Dj zoMb$Aamoj6_UQ&#zsB27qTP2YEzSQmm)0xIW^-vp?@>8ky0mL)xO8brDi9+_r|7LV zmo}DC2Aov0FK|B9=q8R83fEd(3ZAaZ9t6!y0iY*W@2v%46qi<&E2}6ByLG)#Xm@}6 z3vATqJcDrPUQxX9CF1Vo#S7B6n~&^HwXn2!u}Vug%|bQo(idtW0p6hQ>=gjQfsS=k z6&vm`XwwzxN>oHKH<17=!L2+gpdU$;`cA&|jOkUcDRbaphpF*2UDJM_Ts{%aFH-O|WQD zG}A?-#4Zt%Z`mS$IP_e%;?Z;kGzQlbX=pV=E=_iJmhy{A$$qI$7U^sNn*9yPXN6nT z{FUAWGUKb(Ec%^%$k7uVSiJ3k8S~z z($iP>jH_Avrb>&gpm5*LK^RJ*yeh@_Wj7NJo&!1U$< zgfVu^7#adEg`^U|Xat3rV!wh(8BRtieK`(+$>(9v3798Z&APZtpe*|6XoH#StbhQh zH^iZ3=0x;f8+l!|be88fqQz&6zy-CYnoZ1LQMqZlN$&7YdjZ)CnDz zIYtZN3qiVg+!QW3751rE_e+L5r7VOI1ioAkI|nP5*KXmMsY5O@k=mXxuGnVX_T+8> zEDfzNVTsi6?L`smZ7fHSLAdZ8XaLyRA2ffycV(loOP}_ZMwiA2BuP&WKy|>vRtOz! zKiXoL>3lTMajsm!+3T?pz&(K{ue9CPZ(l7(7njvmBA>Qw=MVddu(y}l7Fl(*v>CAdfz)TzdCF@?Y07z)f z$hU();$(5CrTsYb880ZqYmOkh{Vq7L9ddJnw4TBSoJ&uzKiDiZ-H&D zKOEl87O0%ipm8qljU#tm`D7Bo6!PlOPS&-JU3J&Ua9&#rf@Kg>nfRITfUxn9k4iL7 zXb3ik(SSgd4T$SXlO=4D>AkW-vrsdN1>d@>DRNLEMy z15hr27i9l|JhA@g>e;ViLX!wy&`q_Z;frCxh(6pVzS5PL5);5C3M6eU5idd103K_GcPX-j13mqy>DNmMi$? z%JqnGVf|kSL(sM*e}x+Z54&Dyk@`}g7^=X@;iuiE-N|@3s{=yT1x7R&7OzAbsPs2Z zOe;Z1Dvl<&GHe-kZtfrE_b-B*KpcLK!Vq+zPH7NPCzKk!9ehvrk$XijxAdcNXX7v8 za~)^(hX~Kg<}T^7u47K1>my>}Bdt6T(7au&|{Z^*du&7Cd zcF=+vVeE4}mxt^qrM5He!C3!ZJ70*wh4_RfxC^p}EMn*t7mTcHhY@52ieYh*0$D(k z@eYb{PAu1Z)XrwdRuYc>fLC!1mWRwFtwMYgdDe2$ zL$v`WF#d&V_D%hz;hs_M3cMYPGM|T=hXi5_cFLGT)1@8;m|_082dUOtj`~kaQ&=Nl zIj^hvPUS9KeoncC>><<2FactW4*a=#wpLqbJ`2eT^BxxXdknJ%%1T$6?5gZdYW9|X zU$R#$cdA?VxWWNx3vyLgKzmt8nog2S)5M^{;pxaLSLnTF%Z)$7t4X)4t{c)&8~Dqy0Ig_)z^?Cxn z>B&G--D?b0XcISe%b%KnrHWvTkuHBq{B@yMq9m!OFQ#eu_Bs>>EIxEP3VV>Ahw5T0 zs*kt6p^il*`-3eiak?7;KX}JZ$llaD?c-57(4Zo=>4l-IZl);Y&a+;N3WBu*Xk$#X zCJd&kx~y=~dYBJ62sXKz^zBOaW}S8c4XPL;Y~|kzCX5Hgo(Cax7GiZyF>cg`(Pi?v z5VMIyh}H?PXVCRMUp97ea* zf~&OG(#H+t$K)gRfmmth2yXmb^l5gYjW+h04PH6ZBeZ%rwU|LzW|b`@x7G?Geacrx zqK+M=+(kf8?lfb;T&+X>S!+fJ-DtrUA@fDQR#M|;-+B19cn4X6PJc=%5xw6=lsumC zgO3JWC^uBUdwb@Gd5m3n(!A-cy)BI&SLk?M!gq>JkaE%QP7uYjwUI{*zmijEytv9g zB&~{VTN9HJkqP!&4*`(_MR|b6Eyz$^J7R?9q*|J-`|t?ii0kA&hO<2Fc7aNVZKjSH4L) zV*-nIK}r5?AWWt5$HC6hxXwnQLsTHmPq5b=;L-MxGkcf#=f7SrR3_!eJbz##a? z@qJP=Vz6;B zOZK3ml_Ptn4_vE)ejNkHEvZgGZ*aNp$Uz~xtM#Tc%Mx!4%IgXADOCY`gtW40{bE#d zUEWI3>fWEkV9=cofT$P%)_TmhhE8ZJq`g3q4v5MPUULY9%kc0)MwoMp0ON$&7Q`ns zW8Pp=)K6+mc#@-r|EmIK1EuOtr38p=7BRu;xK^J4hp znDr!AoBRmVtm8RX&%+sFDnt~sR8g>m-y$4Y>+%>}`>LDR(agJUm|Z)pmLg=^wZn~U zH``g}L%s!^U7+^`-bP8oJ_rj|dNa!3@>=@9xQ~;Lzf2W9W7|nJ&isU@xDwX251H{A z+ru_`J5|>{iox}xKYi#AKJ%%+{$Inp4T&ka^IJlnWSR z`BC^w+;2wToNl0={StOo=PnbhQ+3+PU`sAHt`ESg&h(jJ`yWV-hI%WUF+`;p{RK96 zU69+Ie;~{su#|aAGz8OV+$l{W6kupvtkXz#+BDQbB8yZ)qtuVZ5|Qj8G_FWGQ@~41 zAq!@#LwwUuND?7MjirneE~8Ty`RJLWH~#-8qN#MVhz7XibL_$$`!E{lxbZ;p_*`(frERwG@Eew!98Q-kO)BbCS9n}Dg ztnS^}IjdGQ(rPt}^LEB@5W8?;-Slo_tFdr5A*@W>S8D)K)NeIkB%tZhU~4pJ@?&u+sW(}$gLI3tKYvm%uaRfA{fXn%I}gFapX^TR_8Ef~?MEtDj_ zS!l9-82lKJtTm9U%`xsAFdk*lBI!e9!&I=asYhw2Oq9MqgC=Xi{6#JBE&TJmFP;#% zmjJ_Z!t+53oP@pF%CNv1sn8VeNV{1>o*FK5;e)8ByE85wMc5OEbrqW;7gl2-SedQk zk?--6A1Oa1|1+2$K}fdlUHuIWLE&GI{$ymd3y!iUcuqBb52b8yGQs1?Z(Z^$lrj0< zGtks>OY9cjv^yXdEusM${soK;Cc&I&G^Ol`4>J4@>WbJP7&;}*Rx=OHG=5&*)X~1o zKCLH@H=_lvjY^--Zq~s%R$Bdcn=Z!1c{^zha-#Jt9%5?w#fb#MW6g^urY17rz<|)N zp`S>&SU!;yEhaKxB9+fXLLJj5GCFlc+J*N$!5Z~%(%KOMCGCSWYbVXKa|{aC+%mJw zKY;)>&n2w}Ku7HTMsHe{uapRt6E6`eCnDILRDhUQ%od1 z;E0x88#007)Q=IE0Auc8c&K53A{ufW5!DGgtvzxQb%Lc`Ln%T;nsI|ej5e^75YH5; z7bSEHLP^uv)If0mV^ZW$+&&)IvD6d_YCM!SJ36Z_)=3Zt_WeW6PqBZ4UrH&K(Sc9T z7;1EJgBIJ6(`qHMRsa(1tlapwG2W$=gP(v<_J9})m??eo7Au731)Q<7tZ%2BF#_=2 zhF_M9&{_7JNo+|gUW_EaQG*~NrL{vZ7hJ-2?5r|)8U14<7n@T!Hdte}dL`d=MbJoaXBuSP5dC5W(=X0Je8JOR7&B3N@J*0 z`A{j%=2R-SY3v5>srf9}jbJc#qZ>M+E~6yI0uV-B?L@>x_!X%!*$BjGD6CVKim`?P91y{8jH11@Ea@^-0Bl!n18j0og~; zEIri=>DuC<*ModjWlB*1{M^|@swVtTHEnEE@#{z;42?<+F%l2Ift^o-E-H)v&c^c} zOf+ctg`b9?H4W3azVev{1kiM5VO*aWi#gZV_-z_A5DgNr3^q-J_N@yr2|{ zwf;L%9OaY_{b(ZiDd5+87D_Q=fRZ{kekM%gry*K1StfoW#LZG4fsT@$qj2V4Jet)E z>)@hhax|7eqh?HKoL#KN9*tOKL6h{8X<|+JpfPTtQR~pq2s0dGstYuV{}>uIb$+lc zDi92f^o$6B&q(|Est5OVbw_JDm8~ zRW}-6u1BSPc9GybDCxqW*J0t1^opSN^&;91V@SE!6k{5Bw0LHtv%!_un+6-p?pP^u zR4Vn7j?3+oyE~VA{_T!_8EWe6)FcZ@qdYCOz4;64h2hQ}gl~u5o*4E$1Vou;zRtD4&}*!w4Y+!&P=dck;MzQ_o9EtG3K! zxFyzFFZgA`N4m_Egt8-rhj{_~M+PSY22k(cdorzOeTpoQ>0p_Y62b_*htBxfA|(Jw z=m6-dQ{Ce4;*C^Yc7a3y8_?^4GjF+}mK&{>8^gdwlh~W|b5CP1K8&&T2aX&pFk3p9 zXgWx)C|Ujiy!a6wvQt;?M4-1o9o+=hfv;iC97LHK#Dh<~xl863WLP#Hx`u^H=#uq^ z6ucRUmO!^_^#^=ldC`oVI!N=pTqB`XZ36_8j{26$7Msr!{qO*-fx<&HScM3fPtf@& zB9=v^-F`)8u-3APb+b(&gf!juUuhb8xM-9%6w-l{$sF;Q(**#z#IE1cufl+SJ*cwK_^-lW4|~D zH{?)e85ett8HO_jxWfL51$upGH`C&5GSIdan&kq}sl!Rc=uIUrE()JYONXJONtzix z1>9P=rNbf;)~Rne(!szN!-#JO?#rCrSCzx_%8jqqn~_#+!Tpm<3l2NZyUN>@9&DplRhv=X zOFuhS@P`Vvj`$|+_&(`rcEm8udCWev7N%r5;CtF|v%$5$T_nxA?I?q98g$T6 zA@005Y=65*u5s`VF`H~_@5p2u%ci}qrHS@)@FerNmkaK?+WclFbb`>Dv%2TQi|caHajNdiVXN+>uS;BfU-#?` zbx*g~eQ~Pp1nB@LaGxvcpSJqk&~6(t#bS`tK3tuDwTALEV*ZMFB1{dxPlOV24fs2a zhj*Xa+k$mG92yM4=2Szt(QxLEPYkvnn%I#pWEgUjx*|RjrhWOC#to*uth&GW8c8}UzDEzuU{_fqoS7TkM zvOW9u(sh$^IMNuk^&LpL5<#(aIo)w$RHSlXfeRx|?uE@!kG~7mahG0vBZKa+>!sO) zd%1GL1KzS+P*IIux2R}mkt5I>ft_5#8dTqXc!?|?l)oCiH%VSm#*F&G9Pk;C!v|H`ARuNg)tdV>Pc%kt)uN%hPx*3@TM8(| zaS_}u0&2}^iC@T~kO5lM%iQvVM2+@Glv0agys{zcaPWJKl`neu+;ye7u19soXq@|< zv#=yK`1>efx==%e&?Q1ZODzV42LZv|@Dc!0O}GH8WIw&1gW!T?+L<6QqAlU%h8Aik zl8d=)RFPI9?avNLfnHD#FdlwxK`+!=S4e&ST&~Xfbsz=^Y-DR0vJr0A1~3IoHX@{` zv^82AL|?Tw>_wlRQ?xuLiB+Z}?2@K8mMTC^%@l#C^tRxReqIn1O4Ct!JImidVc=-0 zAisQRO;1SQoxZT@P=ob9r3~bCP!X(7EiLJ(Ex0$36?D!E0oA0ris-V&qBjclGrR?!na19(jMZ07Lgm{%EQ>Z$o zbJH{Q;YxBOVao0M&xbg|swX zgU?;ucj)^TZm0S|{l>iJ`I*7C^MA z-Jk0!^tyA{DyHdm(mG0q+Awi|Wj>|q8OP%)_gu=IIgZR*xoar}u$K)}Dgtj8DR*`m z6*EP_KfHF>xxm`rE>iCBEh&_{_HMm$mupw~&`p_x`B5JIr6v6U>tN!O!E5L0_RX+c zX2+w7em(e=?3>z!~&4~wUIB@bzZGI3;zxgNBXbl(rVp3#f-sk*3Y2X z4Gc31lwREenZ>YyV#fz6xUOS*;w`B5v^8LR1oV_tnEa+#2P7}Sj!wYMUOl188|>tT zh`lD_O%mQkydd;*nI{29iJpCY$Ol^tc{r=8;YBQd^uwYF)-`#HUDGYtAi?Qq4|#6_ zy$={l2UBA2=<>R>ffeX{ zfeuf>l3Natl8tJTy||byw~SChJ=2G8 zXn|=xj#Ea>v>6TefzBZbHr>sdl?~G;3d)7P6_af!sCkS>~ z4kUBcGcP9o;P}0~aFGX$@_tgIB3XI`4`}HS zEK*jc>s`;Ff*cr4SEaGpi2EFGrE`;Zg;Xb4=YM`e`)!1t*qg9xWm8hO1 z6MZ%6qgles8#j8NN@RK&*&`zzeS?*@0V#w$Sd-a}5}?nwg$(1>%a;EVN724=9>`A( z74{c)_~h_f#Ey+maya)G{&Lwj%*g}=;4mhe>&(1^Z!|f`@o0cFfvSHj>R|A(9H82d zm^OjCs*jA<0#qOGGfcaPJm%LB?_0P~y;~oCVB^OJPxdk`Y9AAhjCVq+1(2PBq-YaU zC{Xli8cW$X-yeEIXPzWbH4ulMtS=GkY*e}=7CUGw@H&KPfgTbMe;!9Rl5rG8RFo}9 zAad!XlIoyC$WGCaz)1k4Q2NbEYwAxPN|ur4Ljyh9`gY(akUOs_F@+ezRB2&$WvN5~ z3n0Q`l(j=Z(8Bf6geEA>#I?vf`exo&vyIhjdE?Fm>u$T196ajL4kp@ ziN6iAb6sDkYC;Wn`M`H&k&cy85HE1Nj4ntY!A z_j~m|%(b_qjM-R6WlE5n0q3Dfkd+~_foOodD2=nX_>YIiDh34J8)2J{TyEuNeJu8d zvI?bFM|8+e%3Bl%0hp7RCTMdTi{)M~J?rY(v#y;z>$=&qJ|%~uSy0a>9A?eaJ;>SW z{q7ujpPwV|r8)B8!_J!b%{lVk7tUVq$Q*e; zK1be9&5?I}j=Z0pBkx0VsC&5`$sIr6YA&N{ch zF-P8~=g7m3+16$Zqt;yn@zBV4C?{61WeSOxujTuaINXx0tB_*q92W%*@p{u1T+sNb zkdUW-<1KB$?f^-A-nM3h?EIGT`4|BWOdoP6CP}PQp zQ+ox%k+VW@YZ`JsY)QH`2)O6~$RDwMyDa0i7vQM?H!4^&cs&op*$(`30862BU(Z4Q zU;jyXE()^oTH|N#-Z8p;$L7(oM}iI8*B6gBjc$La_4458rrle~zjfQ#=54$5v~}A9 zTes<9*OtwjMjr__?btE$Nbu0ZBV$|jFgChr+pdvKW1A^(-=-0M?%zDJDKEVzxOe-* z+wR}G?ZJDu?+G5-x+mDRdF*z6TD3?~tvz&eKYt(Ev?qAO)q8@g-sGHHd(T>)*531` zwfFFR)!IF8TD!-Qv~lCM&3nc+?ik(r&}O%N_vX+N~R_N}C>-}1<=t@rJ^e*3mvK&q4t z8s-DrM;~fSyLGtjW&NhHEp4wm0E23q#>O_?x8)%{4(6B`+`cE9O1<0qZcA7%0NUQ~ z-2C9y?c3TC)KS~(?VESCzg|DGb;l0y-Bx03)3yf%026z$Ru7jBnXIx^*lV z+4_+EeQ?WIux0aB{cL~W0VXN{ll%o;5Arjzor&7upF#L0Wj_S=v$5de-Mb8*yFh4x zv0cID-SoDr4F$V``?o&0l_cN1NxNCUx$mX%_+Z@Gr(XV^ME_eU-&AZ&T?PCs5?%U!-)Ljocu||v3O)cEnrG3m?elBxQeD!Hai96MHou~@xo0}|W*X_G3bkOn zR6&n7G0{tQES`4>*z)DDacUu7qJnX9F~<2<**ZM`vOC~*bCm9&%Zs@7bkI9W&%n{= zEZ@%U=PcMM38ojFMhmu1FHxqDp&JpR8#lFN$0cf+B%6QnQIj+CFK-hwZ(trmO3lCR z`*I;RM~#lDoKdt+M^8tMX;OC1vePB-oP|53^PELHCHI^~FP7?a7M~LSa~8WxGUi?P z4sE{gQe0uv=;)?Lc1>^0NEuB`iXwt~#_TECH6>xB2whaVV|uc&kxdtsn6`3E?9R7O zlrd!T=Fv-)H<>-XPzPvUtWPg84Yo~!zm0k~qA$_^^jaMa+nA?j?j1AMnAT5$(>WV1 z#P#$-v$VBwXxH{_)5~^1S~U3fOBI}{z_ealdfuEp-dGUX^itDXGrW6Nc8Q{B{9_M~ zZr(Vr!aKH)Jo4bhSee$l6xHdyPD9+q1*Wwj^%iPDoKJ6QT0ykm;m!AN6l1+a$%05W z7Hstr(FoJQ(>BtGoLDclQEx?Mp5&?k;+|Su4h1FZZFtaY{)LrLcSH4Z*iLe85cG_ zGT$n>mOkI&GYknc#k^~GYNs1tL)Cl&UrPTgdtL=501@`$9w&Djo)+Z=;F(H$5cF*}Pkrw)S`J*mU1(sP0AKd^?+3 z%=1K%U&`|>yct8$w)-~E7n&I;|Gn66=UaXB!F%UhbcUYTvtYX0G~X6BjqKPm@4`U# zTFQR!e1TBA^DgW+4?D13UP_qe(>A?Whdy=JEQO}2lcq`CziDjK^v0%@n_)ucQENs? zF^_tkQeqwzrt_hBRPjP(9tCsuIiHe+F?Akgr)k?8=TXHpx_Ok7(s%!i4R%rpO7smg z%zQ_o_0vy8E?Hy4#V010tkZ5|yJTURTBc51E?N9W9Y!M5#pYA=T1eb?xn zn;#g#vcogUcga57k!JEonJog;=|c`F|aIUg-TX5eN4$(O28{NDaXf|#0=YJCU!Nc3O+OO9D0&Nq6Ef0^3*m2Hw zIQ{l*n?@MH=tKP2#yH6L95;__zn3&L=;8_ODSs@~f&4WW?fIKzRsNU@lUA|O;b7}< z@P@5H(LjFg6ufuq{bO4Ku@}zEwDZ=+JJ_;`KPt-cQ2VhBOK0o0`$itVf3rWxnSNw4 zci~Ldwl~kC%)7_7j_kTb!9j2~oQ()`W7|hBQTP_d!y)P=O0D0%edH2F%(Qsd|JU1@ zfW`ENfB)`>QrRi8PPQnakYwtVeJg8}wNObUNtP_55|JcXvW8IBkbN>ki4;m9RI-<4 zCS)(Y-{;Jn^!wrczwdRu*X#0`x$pb?Joj^!=RD_`bIwe-H|Onvl5AS#GsoM5Z7P`P z)2f@4q~0&2o;$I7&0sLQ6)X~qrp)tP>_*e(`}(`lR9wIt!FO{w=$q*8F#LSyyOF=^ zEWCPpkLBN0^D5RW_(Q=Bce>Ta0CX+2Svj2|N1y5VcuB6R4djL%HpgcaP6@vA+$tAa z@aJHPB-rdg#qzk3yX!2x`YrOoG9rfCym;a7lU3fN{QY+FK-FFLG3vXRzZbCgT=+}; z*Em;IQ4LoAj?D4#8NQtc<)ORbEk*7TRlJ_=WQ|2`3@ddVE`O1U5Z*`m_@ZOPD0`Hv2NFVRo+$>3Lk zf9;Xcs)>K4IvVHGzO2($MpV77(iKM1Uj^akMbgNIA_RLWaK)mhCU(Qs8=gh}56ROkBXqC+d0h}pSADCzg9!c zdZx&k*{Yt1(OPY=(Yi9`Ow2`bwu4p0RThe?48C}!>ZD5Sgmg}PRRoym#J8lf)KyhF zpT&tB>>M!15*b>H92|!Y`!zMHjJRVlDxJX&14!&P+sAK_4WVmWT3WIWirA2W z`I(!Dosg@DKB`mUzn1fFMKQSlpOpKxczsYvRg3YJ|F9{3EAz)4`&%hC8?L&gek(9|=-*_a zpI6z*zb~nJ^ZhF=|M5&z`I+VSN>xjb;2**hv8npM3$hKvZ~dyJ`I8^}EK+r$e=DWV z`CA<8s(MiF_r&Tm_V0pfR`Z8A+sVJR!0+VWqJLcKdHlKR_Y_#j-x8>&zWAIq&q~y8 z@%&D#X(kyj74K7Kon*{qGmWETh9pb2aP&=i#6t1x(@W}rFQWw5d>V7DZ@ zJZ86ojpvfzGTRV#YqBe2b{p9Ek^Qhj*zI7q$GR}v2zCdo3$r`IHYPhMvrS-kLVjkO z!tRXx%_DI;Hke}J3VUI!nXRsY%k41iFkAv-m{LFTSJs$a)JpuMaFAOI{OyWkh3YrPcqGO!#-fRJYe>_89%gdD-JSAr0* z3arL@3OPdIuK^P9-yCZZ6LN&XUI)T~I!Dw?($%gGe?5r6y25X<0d^$t`~x_CGKDf5 zp+|vDU^CbPwgQy-%JN3T-UhZ~AHE`8=N+(jf?Z%Yhyi=RUa$|u0^wNN5BmUcQg6e9 zu;ai8wI2`r5I78u;P^%U8b@It!~QJ7{yz>o0sN^gp^X#JPm*0C%C|TLI}w})XTVu- z4x9%U&`(jO{zceQkOVFPU#utMy=1WE;4-)Zgnf_>IS3W2Z< zp1^(z@RLFnc%x_FIXI{GU%-9|UV$P|3|@mb;4OHEaq(1fD}CxtmR;b_CjVU7+QT{zF-Sk;148`J@Hfv_Ly!LAR4wi>{02pR!B zppOJ`??`u9V>nHK0cZ-Ef##qEXbD;Y5ikU;K^q`!oVKvr0iluhu#JGQV>-a@2#kRV z=mbnbXV3+7#X=+~NY~g54*q28zZL?2rxiOPB-;fw;K!5EAUMHrVwkfMP6(U?IOA8rSq&c59c=rkZklb-x7Id2zK4qoJG=G4 zp5Xt5LSF;cf-t~#(K@_`17R1fhaCYnfJm?r4Mde<|3<;t1U7>$U@M3QIqEI24fb}h z1MCF5z;0B|L1oPtID6nchcjd^oPB`(tKS9Ns{@V`^u}3u_w0z1G;jtkfazt>BDJvX zTVeHJmjGY*AzC=Qe?kw5MY8?i09wdEK<^-&I1mpG0d)^~3(ev%{3GBfI0lY`1dyp- zj}x#@f>R(7oCar*_{e9h$5}Y%;7H+EoQHD(Tm({(1TKL*btV~XIk*h2fMk$@%4ICm zRXC||!oJ`%bq&sSkOn-lRdAY$L%i1w_~{^{GOn7o{P#3<6Z$Q18>mlHZ&6<}6MhzJ zkvZ6EbceP06;3vk95_4R@Ux@42;2j6`R0G09o>f}40O4$AApBIJv%Bw9)5Q82(dgM zsgh>}>_Cu@xR9d&_G3^8Rzbt;DB+tr#}mY!0tw>6h`s_g%kd0xA;)vrFThKn&hZsF zG+)6l!pg1wj%`~E=QVf(*tW&#DHicMZ{fcK3ZO(`DT10MaNfhoU?o1l`3OqECj_4( zX#E+^7w{DbXZ~-ng){$m*uwJtfL#X4f%?pU$3BLjfli<|&2WLTiRWO4I|G=pR zCyzPR;Xt)}%R5+dO*mzOqXj3dOg#;%iK41?`|rD5BFZe*hOPs2K`l@l)B$xtJy0Js z01ZJSAPhu$u=Rm3$~A`F1jMO(xB={@pc!ZmT7Z_I6%YYKEabUzjC!r%v;kEYpe_7% zKxnKzY$LY5sKEY)Ds=?L2uOZnH=4ld1WZ9^fJ0;l;+kDxcSWHitdJQTbI=W__w{we zE$~;u34i91{a!Tn1guk8;=LCT20km;y@4251N=c2yVVtFfrDcUXDgguc5wQDzMvlv zy61n7$o|jk*xBA1N*#iflt{)@O(CsxG{s=GKQJGH zTqy02zyh!k!CayAA_NwL0I&o?sZe?;0?WX11jB;Vxg`j!0D&L~LL3Bsxq}f{2|^H* z3#C^fuo{GdH4yTI(rXb21M3hh6-tLAupUH!4GXpC85}vBugtj&=L($FtKcNVNrAJKIalGN!ii(f zH8|JdoP%SP2ImGy2N^&(P;SD$1%xsBHtbB01@3@sBq&3I+BtCUf_ng+J!&;tV5@l_ z1!Cdo`(G2nC zpap0NS|M3fm^zsV0YmVoWUUcz1KI*1Sv%P6fe{drJr|O7KoCF7^T%Yyh?{^;KuBf^ zyEEtlgk*{9)JxVCK{N2DB{N678|V&%WIbS80Q}}sWwPLKbuvo?dx1YCvqHQ#5Cb8Z zHEbKe0b$8w|b-&<_a7`okUo1_B{j?0WT*4MK1*_*1eWhz|wBfRM}{ zwgVUrgk+^cvJnW51b<343h~ik3=onz!X6980U=pR1Wuby2snfBU;<$MY$Dz#0pSps z40{T20j^*w`c?1-^?^POf$2bkib5w94s_N@g(Yx98F%0T)CYP7a`g8`nHh+Ag1=4C ztLB-Ba$aB-P)*Tsfdx~hNDbY(vk~(K7-0)bzLw#*LR51OB0lW6V$NJRzHoAwGY^g* zoafA$562%)DIETT!vX{rg1;@*B51gw+MB**n_9hmTC;&{uYw-w*o$I0)iEJXYj65?CLCa~K=} ze_Dv6hzm)M!9ETWfbhv?3v!%*e-fMmf69@FxRB#C>@(mjQ0FK`j(z&)5I7H}U@PKs z1_xx%)AenE93l2kqPom6SZ+D(oy|j(nY=ZCdssJ(^Xz%VY=&X$Zi#gpb(>+hw;R%+ z->cBXd(gMN)X%}2$~x*%);J@|@BWFVK9Z9-dK30%Uz#@ZCtWN!OlMuMl9hK`x?|sm z25T0Q_Uq2nJTi;kwD?IKPc)|@n}hVJMK>t!C5hWfr8JZbSoypQT;y9GSkJLKlqY z(~CFP$U5LXed(n|k)zho53kqM>ckYPIcXhrtu~ed$_7x$VJ{L%Z<9soHhLD{f+o9e zpqkBI(#mKzifJ^3*4fS=Np1xh&9f&>O*6VNR*%x+=25^?7xD^|lR?Try6KTj+C_Qf z9Ar#u{Zr^b^Uc)ncs?17%cA`@HK>MG1$A4-(G~L|+B&>|E-p2v_SVVN(o0FZzfPte zt*mJIha2>MRSQ}YVThk3Ttaufzf)J!1*F%zFP(0bO34O0>1fIo>SS++n|YHcWa$8U zHrJH4r*5NeQ!#10vxE{4ZlRuzcj>;(XWCb<3EBIX(e$0ho)frVY;E=jpvpGcvgKn0A|0kbBFS6g|$Bj{F!%%a-R- zYqzsxUKC0%WiF&lxkN{BJFPoVhmazA>SRx;H_WN#Gkq#t znof=7Bj{s`gVdyO0(EZKoq`%nrJz9?^eKD-9ZgtHEsH3ftq4t_!9ck5x+ zTt+RUGRWtaf*RUip0$cV74%APc%! zUWW#4OC*ojSv1$T53QSIPP_Hak@ST&tut#!U;KJe*BZ^Kb}bDWT5|?^X?AWsG9P446Nb$vhq*b_e~dS7TU{pOPoC7s{Vo}4?W9T7M^Iw#NA%kN zDy{m~mrwUhFF!l?1tS5)(HZ_?{&LK7u1G+wfi z>eY{=x<$D(OLCkZRSYG|h`Qw5#Gj__*CW^Ti*zmYJk_&JqB|d|)8P3=^ybWGder(N z=`=b-q3yfS^dNuI?%j>*L^Y+6R)?s?zAJS6-7%Wjz5&g?Vo#=vcaVJS7OKVtk#@;v zGO-P#*=EtyD^ZJTiS#Hpc>;ZkOrg}HL&@RBemdCmCcTWepu>?-l;39t8B8l6|1c%Z zSUZZ!9`&SSdk)iMJu_Si-9xp0Jf!LN?)0w4S?cK4mBx*g(ZC8Tn)&TK&A;@KI&6GQ zhb3LfJ?t}8PuHXGtu^Vv^A==%Dwf7ITTd1@waKARF*UptOWoR>rjkQVX}DV)-MPG< zbh)}TVc|_`^Ua?E)>fy`#=ew#U^LC~eo9K*nc6m^*C*GS< zSoCE|KDvNH20f%NlVT`UQc6ckx={YxZNyEKQf9$yin!K_j31q$eeJApR@z2KM{lGv zrwft3hH2^MXny*$hb)e*(bfm@pPQl&-SKG9=*s+Hi3fg52CJ*_34^vUux&tgVKC% zQP=cyB%4)^o1%NE#;oTwK0k&G=M1E&4erqSiNSc1eK2{AEu`pC8Z^SOC$+qLmb$%9 zp@!a5Xj0ebw6b$NwK$nfd(17U=GjP_9%Z(=9RVsPd zkSX+VexgAd(=RKy=X%}$wcqBbN zS)2SWw51nIUC1wY4b|4`L@S!qqGj$;q|s5Ib}#m)^72bGw!e}d;N1Q8K|@-5;XI{m zDI>EuBYN+hOi@=YC^v2_CB~hm+ZlDJL8vLs8P}aUjSZ#fThHj8=sbB%K14RgJE;DY z3@X$IXwhkgv1NnM)f z(&)rsa)=J2F|9Mm*fEdfsrT@R%VuiobB;VWO{ezbU5Fc{pyl=JQt9dXRF?jUx=T%g zf{G?(Q2t~W@(ABfk=>M(*7zK`I&G&XQVmOL1fxIpN==#Lx!COkn_j; z^kDH;+BHT_!$ZE)Sj{qevFI3uwzeS4qpitfV;(sc9iqVYmUQFQb{bhbmZH0zp!oZB z$g{>EaywZ<%U2(y)x);Xw=4@Xj66jFfkSBPZ9}r%okw{C9qEam6?werLqB&urpY-| zD8M6@E*x1*j-U6E$?7&_cfpaIy=#)8aR~Jq7(}7ZUeb$QIW+i(Eme#yrsj2T&{gL( z6!qPNvM*nyx>s-0qw&XR;MEXX*>@@#hV-URi=wEW>nbuH7C@3tO{uS}0j+KyK?}v9 z6qoXxUOWn*6ss%LzVtPH@jxGll#$y$6SCfTf|8c#QtZe)GRmJuo=@^=Ta*FCb=*WV zZgn8-cZt+*w}>3J-XNdAX|!xf8>)NWoDO~pr$%F6k>UHAbQ*J-Im_&6zrjd4{p~OX zKE6kr^Ib{b;vclRn}YW4A>Vhisn@#26nHM4yv!%k0HX=`SpN@TzGy-T|7ORc1&a$M}Gc+82%IO5+`Zi7kV z+m4R=xyG5X9`)<5;M>J?zK^mOtM`&?n-W-&B)i3(F0FOHrq>ZJW5j?vhffA^!B!62 z3-3GP?_n1l*U-IEuY~iKt!_HJ_jYlQZa?C!KP$OOdAU0py3CcjN*35`d#mKK+*j3G zJUK$Ta=CYr-ZLfF@UuscQFp?`ek=8|6CNnJ@8RFtNN%l_7JSa{=#{DDT(7@$b@<{U zzP^2alm6F~Ty%D~3D5UMh=V?+-mtl(f7m0X#!JhJKOaPgOc zz9x}J(B6(NKGv6P#Cx-{&EM`*a=P9Tq1~&^ls3!$dE9-wlB<){#dy@%P12DQ8f0p0 zRC1259m1575z-8^S@NVcN>0D@?)f%p8>EG%@yE6WD!Jp16N{f^OT;6?_g~+-Sji3A zxc{|YGl?`{aslTyOIJ+$^yG0{C1-Y6d-jtrf#N3xtv>B+ ziR~|&({#I`wKU?v!_4JPlw6`tE#JVNYsI?No*!7*K*_C7zZDwU$Xh(Ni%tCTT1xKB z;RO5n_CaF3vt~L!HI>{jzavjI`hfyc-fJO^>(gdGNi03pX9v?5kF^)IGPx>|<{g+#QQ3o1(0_ z(l5JTbbs_p!Ra--b;`gXTKXccVY2Bn1vh(`@xej6SBhJAZ!qjYfr4A(*4&OHU!Y};Uu?VXlLx5SNj@F`2d)jx8@<=wQtV$)Dp zmzuW}oN~HmZ*BL@;&IgCo!t!ux2W2lhfgxR#hK#Er}w5RxULQAa^V#l#Rb{-ON^5h zT*C3i7jH%Qi;ave?mm<$xCMn{-XyiyD6XAf9(_`Z_1QO-9_+N!|KxcEH+bL1 zyo`cX(mw9D_dYzM;HFsCO-e0TC=DFGbF4|Cg8Mu%;O&40A=0{$lWxSGK>hpWO=|Sm zD1K;k+G5~w1y^JHnl5Lz28heAZOLhHRKaPFY5w%dvF@y584lB6VsRkofUh6JC zJHUBO`*;P{Lq6T)rFoQikl|6iIR_QoZvSZ4AF)f50I|Xcr&jNmd8u(F{b=&l-T@oSB-b@9cSG; z{N#byv_VswF-BP5?mc_IKjXPk+VIw}=um8rmK6q8!ILG@ zqu1IDXo~ISJHRJ!xI^DcTlei7DIMWZusbkG!3_;} zzd!57O6diy8$R#l3eM=(29vVmbHx!Q`vNzlD7cIBbe{CMGh5uI%`<~(*A?8f)>B(o zzq(55_F__idxnC$YxeY6Nb|MgZl*)tZqLN=bWxg}b#a4qQahWI)$ZbWGgIs^%ZLy= zo$A_f*8>H2YWzI!V9#K&tbCE97mlyQo#9(!53+`=4~USupIO&YOQGN{9LpQ~AlXs+LvQ%Gy&n~v?dJp5bz&o=R?aWh`F_Lp z-+0ur^xh2Vz{x*8_*bC6u5t2us@NbMqPeGQLJcK%Gk=QC{R%(voy$WbT4KC8vNiJi zkE9J!?Uwf^T)}vBs@CzY$Gqo>cZ^z@zuf@iVfpTf=Fh^#i!&>x92TLxvv$_{!eH^x ztZ|*+8!0)DrVf_JZ%z}Rex(^TyNi;WVGud1lb46sGeVgs>Z#=JoX!YpvPL5Po;=A> z7vt-k?-ksnqwA$hLbZmN4pef3}im!3*)sF%hOXRBbbOQOa{!+A=sl})0S z;oU&#lt_G9EWC0DW`dwqj1>!lAPV)q`8#rW^n=IPdB>!j~J!c7MqS8_E)hwP-u;bNol zu8L+Cl$`mS_~a;)VDXj_;#7<()`L=*Bn_!@UTH$avQ4FweS;bm#J|fAziEI$gFe&-+k_E26C2C|y>IspmZVXf7nJU@3Eq`FPEK+hc$KJV}N|i7*jj5t17oHZ~k>#44 zjcysxUZuM5?J{+BLBsK(cVt|`?K6#T=v7felmDXH^6fHp;q4!G9q-8eACB(OcD#O) zYHRTAGIgux<*nDVWYx#Knjt;jN~IFtE>q(UAD-xuB`b*w?3UW9m8#vsQntP+PzN3R zwzfu=%zb=~@|3vts=9Kf#xpfy-qW`GGG%qDl`d0w)l#W3Oig2IW@1!3+f3PV)6!k% zEJ{@Sh*yjMrb_sBucEH)Q!)KhIhe7ZT3&Z)MBQ}hkF@LyeVroHx(Dx`F?^9x6*c~EYT-w=zD$iU^$WR@E?a+gtyzMDfvT>Ysl`l{OB~WZ-jKOR z+~lS?Tu}9^7^a3^gPQQPm9)(b+3U*#@}`HiQ!O*E#{W%~@a-~nMCp$4qtay0axPbY zkY%i@>%zCo)J&0E%<}6p?eCA4%aVj`#kYGMYGJ*9LJwb)ISm=@8}X>B8vi#{#J9`T zOoLZ-@1@GzpPt+|^Lag0yTrH4)QE#VT`R82dX1>JyYH@+Rn*Y5zo>;Dur=bDny}~D zi}qJ#>nCVMtSu0!>dKj###BlAEED?_nRsCj*UPmUTl4#uSBw9q#<04fH(0wZMP+l7 zWmaR1>_Zm5SM3D}-!4;2T74b0>58mo%G}0X*R@r(>%zCoRF^Jyjn7_|ZQfVENvx!E z6}9+psx9AcI%_v`$+G)$S?PqL)tfzaRLjh(@qbfAe7j67d}OxatxWcz+rEio=BxV# zG4(Z6eG_!{OENK)7U7QSa&8DeAkg!N-4OJ$murZ|nO)k3vCa;By+ zwQz{l?8pnU>xU*3_2{J@%Xqc;Z)yyy8+sFUW6bXLPd+D`F}90+$0h0!mRIBdrb_sB zndi~pv|S>4b~v@19N?BsV) zrr7hL`+%}eNvb1(squePWB7J?_2>CjyY|Tr{cQi~>_4B>;}KJf|E5Zqx+V+VYGIx2 zfxBhTwU;evFX^aimKP8GMReg?h1ghfSF73iEwWw*zHc0}u7j$oEmL2!s$~gr^7XPE z2eLmeY57=n!r;X|1E8-4%%M0tG;Yt`<;hY`C&Q1v_K9CMH5I+Q2P zpQo?hml7tXv8wXjjSfY{aZB5e&)l>~y@Iw(E#}qyoAc6-a9SO52Y#5*RK5C44ZX|i zYRb)CAL9agrwzBMUq_`DzJnUiRF?r+y|kV#J9^- zTjxoWyPfAA4otF|Sig;WW4vYUGS%hiy6ZD9axZ3lF_A%y z8U=X{cJN!Z)m4rk1o>W^(8<*FD;@U-&`w)`($hXf9MqNG;c_E8L#M z73s5fR#VlLFg2d35qb$_ZpmDz@6a}JT~bwB!vvlsz zlOqo6dZ_1(a;6sZb$eT`%1r0ZG#KNYGE}|)Vwf8G2zBd~r2d$b!QC<0eAV~ud(|M} z!qj-CM&u+|pSa2ONYMLYT%kSyZTWWjy00qgjK0NnEwytoYH&rh4@69T4OKt?`O#0e zxccE2-SiA^s1g(3Y#tIPoSM}<`Zm|~ajhF~)0?SQS6;-LWvY|Ci{;!*ZiB-+{YN|a z3%q#NgQ;mub#e7DP08enUyJqEHc?M1B}^@5Y7y&lSzPmy{nP3gst+O;riSK2{dy#Q zqE{BTLVy34o7;p58s9EcXN;c~Ez9E0CJh|OiuiV!dalmw{*CT%uP+R^P_Rlp z=_q`~+GT1)-jb3_cev8(BZhq6p`JO&nHpLE)g}AM`$pN^Ik92(;-~5z7{kSo4-!4NE=#bylgwx69NR zORZzA?{d!9rmyh1r2Y_F_>!$JQ!}rR{t|GPQ`$~aygRC%I>?zCTBxCWy@rePeMBia7A0VGA&$T7OoTvSA2ylx55=z;YzA-MO3)5DO{lxt~3f)423Iy z!WBH>N}O;-O}H{9T;UR~R0&s{geynF6(HeCj&MarxUwQ#ArY>02v;nGD-XgI1b)L) zQJ<(b8-{+Jd4&6z@_ocD+&j28s#XQNm!Q%u`>O6y47631liH}tbyk<#%w78UbrVoixtoA=zrbqi(bF6U(jDcX+PRKnewGVsjKIfrDb<;F>0{qM-YZRKGu z3eNgd+ub)TPjN9b|7mq9_APf|gXNfb{}k?J+01bk7>VyZPZ^>ce2X(Zv}an@m13^B zTWU#v%^dEX-NI@wLyEYsyPI{|5uVFU9W?q=p2sULBjAKXY+)YmR18kj_rJp}PMsg) zX>ebbf8pRPoofZ$_0N|E4b*!jGdX9Bdput_{0S%ip8>vBZ(v}+>>8?wHha@m+3XAQ zIy%s+>1dG#Y3nw@Q@ffFbxD)eVKwcZywK1!tn;gaZfzE>jW2SNHVbPLUh9zE_LmyE z8nwvoAl~&Fvhw_kb}hatUZLG(W$Ga(D^nLjb@oEqc&G*c@Ct4HE0k$~e0XnJpT+qX z?FP&wyyAaTSWTNY#b1R)p*n)c7tkiVpdw_z&jYN-yIx}!BBaG1@8f4q2E=e|T#lzp9YG89x4=@*a;ojP<9~BjmGS%035h8ZK?f>c@zB*K` zdJRpjn%e4WI=Z!L*Qr~teuIXM^z<7yF=*PXd5e~JQ_ArKpBynct`o|&Kuv&tE64Vhqj$>DndInza&$a7I*=S4M~+S+N6(O> z)5)=m<=C5Y>_Rzqy&U^Nj{Yo1N0B!J%|Q#$60`!?73}MO?5hUJXg?Y4C!_sjw4aRj zlhJ-M+D}IN$!I?r?I)xCY_y+@_LI@K@uk38s9y{9YoUIvM{NJHf5=J5$sc~m#UFa8 z%XeyafUvHKWg#pFwF4c23Frb?-(k0PtwCQf5DW&x!D!$NT!9<#0A64=VEt`52m+yC zE!YIMfSq6;I0%k{Q{Xg^fy>}3xCXKTw#omu+tyb T68U@lML>Q;72z0Pqw&80RmnH+#QBwfV|_( z1T$_R0|p5Q5(O0mB|sDuP+lquO2D8z1px&W6$KR)6*VF%%K!KKs_MM@oSqp#;qDrA z`kbn-zN-4_tM65hWAzQLwk^xDf8+h@QQju}vyQSi*_)2?`OF7N#IKDUhuQdp*DmCq zVE##&6OM9K31`y@)=?E^Z#sbmn5>GOa8w!3{AcM3_)9DTg}?R*_6bK>!0#d%KNbN_ z#6L?K0tmF{1foOs3GzZPREamK{{)4Zsl;I_z^eyDsyWQ8NWD@uI(#BfppFs}Sut^) zz;4f`cL_!OM zVF^+WW$|D-XL6)b7!;IdGYO-Jfu5`WZ#t@jx%ihDw-X3UU^608u?!AtQK(Qv(I1s! zfCPtiRHuHDTt}$kY!VV|BwFV|9tbn-%6+YPo7!SWL7$-&6+mL>-2rk_FZ?6 zJsLAQOO;OG!n^vx*yZqMo+>@m`eS+IQ{_xed z>-bMs;mHd#I+=oWZ?fk#J#PyB&79d;K_$8e=(&_a*K1xEK>4qWjpd_4t?<^ZjxOJ~ z(Gh#^*~mw3^k4MAB-_WoWJ+hJ)aUtoF6in&-sG++dzEHP*=zq&iFEfp*LNM?>hQa| zKsIjz$cg@QEcok3)b%_IgaJK#43YYWUI2vuY}fXxw#)xb1_@o)u@sc&dVcd|HY)j4ctk3T5#=zkz8c){38r46%u-~deRcZB=Y$y7=h+SqY{PF>I z$AL5F%z2gFv3S}nr18HF+nZh$Y(&5^EM#}15Q96z9r>NAFY(xgedzMmZ}(JMw(MCPe-D65cB?FF2K+b zjBiy^*yg3+U~B;*Z&u@f{^P4BVqEu_?17v@EDWD* z`Caae(hN>EVqRi*Aakxf<295?$Qtm^sa9*XiKU|dmr5P4>FB`ZURY-7kjteJbN+-u+I9X>z8f& zWM^c=DOI2x!fiMB)$-ZjwofjVR`;)7J23266MK6h(pL8_?OU~~cj?gDfkDfgHMnm1 zn*QGYHGM~~>hE3FfAsoed;2#)m<=vpyT&R_R@tljR;(T9J-&ZHQp+ZF`I2mmhoFkkzH}9N$mkWRNEkfxND8^bM`*8|+=R zwr`nL-@UhY`I=?R2T-{8nDuLx4uOEZLnNzh?VbgfF*v$!=}K$TUdcRCXwCZ7y~|hk z9oyf#u5akLL2I&Zma1&|VDGxseb$s2*eZff=UjmgeLiy?jmIz_7LZ>^uz6itASm z2{~0WX6!u*7%R4BHrqg%w$I9K^D!8R-lNy9>9_VM&L3R0cF5YRP5#Q|Yph_;yhaHA z{^R@C3|WobRtiAh8Vm`!z-rDd#Ik&4@6xqv28RavmIK?~3km@Nv1ag?wF8*GG5qYF zLU{5{5_Haf#h}Lx4=!Iin1r6IL*?(+9tTEn(3)S2L-H5oGA-M=tpAuka_%5GVgFpP!7SLza{0kfMtEk>TA0gK z1kwO6&t({cC1R{W>lKC7C4gQzuia>+IB?KfR9JNe@PL=M!k@oeo6b0{TB*))sTij2N^I%AG)hJO}z8w8(FrKpU)sbMweb8?67Co5xy) zt$)nTW4U4L)rDNHwBC~3e3n)DVIfOu<@lOh03y%;|CFm9*m7exytYuN9M?B^ob|d~ zwLk=-+MxF!(yZ4PbNu>c%hxKPH_R*=-DB1bT5sH^D0iU$nErwOHB0+@2Vo@jTW`w6 zW0cQ7w~%C@?;T=CEgk6ZgM;|y7LphMgW`}v6llh>{sHSPEn>%@AYlx5SuVDfk}s!FNNNEYfuPB`;H)o7S|}o zn+7{fGjvXk$^u&lBhUJmVkp>-AlK@(%lfT<)$=z8*BaRC*1t_xt&WG9R9-`6eYhrY zI&0bb0cD)LP0QFgTbM*ye@P}&j4(qhlR|K#HCHd+U{%`zQ+6bQ|Ci>LT+9R}#{aJ! z5L-*2BSxzhK)pu~EAssBcEB2A1pI$AbL6&hDSVy*>)%_*t?0Ra9n9K(>&Shx1EtBW ztZ^#Br7Pi&4Z)uNzgqlcYwKILZq=~$9|fe4W+*&^R!n9Xlu%eC;&l87+k0=>1(;0-NbZM4*i0x&i#0k*P$ z)=F55RHpROvU~FA&;r>zG`z0gT2&xK61bC$y;>WY*`6oB<*f~IhDn^tbbMCu(cs4mv~g}u$HLVvg)1eYrQiEga{HK|5-4+2J13wV-7@& z1bWswK^q9B3?#6yQN$v&o(6`j6La8*DGRqLXFNHzV>s42V&{OR(Glz2sFy?G@_9hO)I)4q4@0DOr=PtM9KVd}^&vDMBIaI8bD&%<(r z4g!@h_}3wn*l)ehE)cG4q43#?901cG0a&RuK^`3=TlW2S4wOL?L7i>q$O1zzvAL~t z@<0qC1@ZyAK<%JU%hw#+d(6Pv)z-fj*F>11wbs9AJ)7*8sI^EC_o|?>I7=TanzpKV zMDP#UIU|DLe=kkP<^9X7bMrcgA>(jDSM)6#w$3wi(s-G@%7jJidg*cf)`!hh%Vxi0 z?Euso8l>Wt*7>$JoJIju5!(xlFo~c^_Mx@C_*uV>eq+D&5jz{CB8-F;Gmsz6g_Pi7 z2J%8%dr(omaTIx5ex5{-FEWIT%CRjB8AeXS#kO8@XaTV_$jlcrdPZJJnz||w{pps`Rn;hdDpZMoOoF_max`QdY(o!lvYPF+qyQFL5L(ZaD&!$xwU10K4WJCs-{VKBaA?G zmKzA35BlY|uI&I}-^g@%_){j-szEG^GtZl`n)|w>Hk!35d+R9vlPO=*<`j4k>6}Gp%L`WiYz9p$mJJ| zzE0IEd8p=wmfWZ$a&K(O6)G_zib}uOk{g#Dw!V}*4Ml@5$)1{R0&wko^i4aYgLQ$I60>M)KnfTiSxda?joy6lDn4b zB8w(-znboYaBh;sx25x0JT*?Y+j`?b+-gm{JJLBUsdMf$OdppqB)cn}#X=_QZo}PF z7eYv3ZWXVXVWxH}PvW^>i!^;IkIGC9$6-c|rt+1zx~H{Lwn=5)Ys~a?i{dD{_4QT= z7EeIjXH4)k4y^Dbq3&;mBAyJ?1CfQ1>Pc+Ws0i*iTEU1c3--;{whQyeLG}k*A&4ju zhJPp$eo>2HG#|fwa5;diZyCmo`_A$v``d=~B%3*Dv-Uf--k%})@$AZ`ioG-0NK-aM zxLj}Bu%;SiVRF>qK5Qm$RJ%(5Zi*vRt!CB4`d%uNO->B;_fwgfv3n$yNwo2JSU*T* z5^W;$hbjJ+uJylty{yWqxv{^onb<)V9!%%IO!I#8a(z%b>TEE4)?9~SAZ7u06wZZyPet}`@j@As87`E;-td*`Jisjwa zn$Ln!{@sRi)8&o5a9V3Ni<|7zTeD@@w8d~{Yj#|E*m`ekwv@&;+5r&bJ+0YNT4$fp znjM!Ow$5tJj!O?)TU)bPdik2;`mx0qe5!R#Ocs_l**`Ykc$_Vz2bKRf0Jg+_uw~Xy zTHypu7VdE~EzmSsaCgaxOdswcdW5~k;>D( z(|NzN^$tBLr){=h89OJD*qaRrJZXHwHbB^zfSL7cBioaZI*1W_BGzwG{LL<;MeA=< z#M8}Li|9O9)Y_FIUX-aP{_j#nr38@+nDtbus45ZX{@!RgX?%oO;fUtm(TjrgN++9iu)R8SRW)1Sr+J8V5;^ihOYS$kUZM5)GXw2b?fErV#a{+#L=v!krP*m|R7R2PJ1GKnKid6`Tj28zmL8sR7{_e%8^pqggC>|)@W?u z%G?%{bD#V?SyDgK(b6O(%R~bt$-O*>wRW8T52HaH&{2D;cUq#AvajJ6y~%1 zFsyGq+_~k4t;dWF(UQ;dQ8VABijlD?lu;0Yo)}d_Sc?P3`ATC=yYQV z=3~+uZO<%*A}S5_-r@?`D#e87IC>4UwL+p&Kp$}Q7JybDVv=3CA9VD>Yd(xh#j0xI zXbau78*hEc(d&Ep*l0bjJ?0p+(3;=2S`DId&EJVv%O}JjfX80BvXGL8+O4p_vj{kXSfubMz`p79B;bC=*@iHSlm#$jA4yQYhP0k&Xikr$A1h)3qVm1$u2qVCkX*%Tr z5~E_5PZ)CMfyFHINk=ag7Z|G|OBKeS+M|HRSbt{hDOpL5C66+;F_uaSP|oYQmz4bjqX!hycUZ=Nuj0PvsjA z>3T!HC|B(am6a5=CNa~jxv|-TGw!K5!jdVSAmL;kQ4k2B5Exde@1v6RV3tb0Hd?BR zh>9Zd(NJy(Np^`PlewQUv0JH9pI7?4qa!tvXnJpsImN|gnNj*Dp6VBj4#q|s5#{fkA=dJ?6fzhq=)YQs$2PbvdN_?ry7 z6+kMe9Y!z|Kw%>>T5a9j28`|0V7C~7P=M`d3hHQ=p!MZ8;KZ5%-)Yop0d`uc*pWDB z-P#6_cq72CINB;Iz=#F+{-LGESzm1fM}!9Mwl;7a{Pk;=^JKJjdmA|7GjMkpEn3h% z?BGQFRC_%+FvLZetw!hMz_49|YmXU%ojw?C8P9=}ej2zQT%4oQIoOWWG2ouWa(Y7+3SQEg} znoD8#2@LC_UC#|pnj!7rOhdWTq8*&U$K4n06t}@=ruJQJp$%38eRo^vH11)X5^UF! zH11*R^tR9uZasI;YzrOX*3j=Y!TG`=i;b|;OjtS>mY8GM(+#Y|gz_BbcqZIryrx1} zW2R{iFNBLMw03}OXk?se%~FWboTE^eU_4|*P%brRrBR9CNZz&_Ba>vHE z+JX~(3jEt9!cd4^Ryq3>@(;I#Ch{cocg&(uA?~cnaH6(aa|;lCw!kJGTFos$+8A15 zt4=%6B-vq%>5y_ER!u_KVC^6i#I~L_GO!S5LI#c)>6!~nvbQO$KrA3W-L5L5 zC3UnU50g=l1t9Elq#N~mZXTM5A0IUf;8`eQil81d-ftEvG4HLnCD#HHVv?8)r$%}( z4^e`fB0ZReGh?bIIP{>7hGyXmi)^s&DgrU6HelDmC|IcG3P21N>b5o<5UZ2ZjQN#q zGBL$qr<-U^>(M*qY7?9cV?8_?Bxxa#|7sf8a_lcgNn2$UFye#dGYS;jM?+;4Fe0Pf zqpi($z13rW_h_(0sbTMmhP~ugf?}>Co8?1vv{p%3UFxsR5QW{IhC`wY)En(?3+!4`dZ5jg! zu+c$aPt-PLJG=~N%Yl)TjFngft=g-hM@Ab8ws~3KYA*IB)MXn|7~qplu&byY#Jn2U zqT|d1HhbXg{YjB!(guC1#K>rKoprne%V^f{7zR-QH;gha#CYsL-|@?bphri6C8Z7Q zJB{I5&^Mt5BDC)^DBT}da><89+HH!d=QFBo5v8&eNY@qdB!G+nk&)Y7r_(!hg%$6;lLHLTR=$b^K@ygvu28@o4>KHMCJQoqiIzIBn<@ zgFkL!I61u_X3@|;Z3D!4AVB7l#sWk}i2f|H$XnY-Tn4VIc%rghhHb5{niaa7dWkOr ztQn)cwO%4L^77}Sw9mjj5xF7x_)-G$mNw#D1W8i<-W-{=`ItpM#X zLmT$l2*ud`%|~Y7-e&CkRxqNYIK0!WTIEzJJq64ik#(PsM=r;)-fkR)Rv;o$K))~x zbvf0sN$WSj05&#qJ|cj`W^^lvVByi7QLymbPcaCwEahrXF$g;akoU9!5iE)0Jvp5g zELyVljl^;L1!fh#=u9p!O4agW2f&Y#Tu0iU3b;V_vdd8?f6I z0cu(XCz*|C1(ZsFj1NAN4xhnn&``f@V+KDrUe6o!S6tRo1U#!CQw7+g6eD&(jZ`u$>g4|f$>bHK|29b7|cSXAf z%}oG2uQ+V|&M~(nm~{4qK@96DbG*uIFP8mm%a>U*^s%cborFUA@68daC_^{`k*gu= zFtdNpRKqgrw#a*;t&=8?#g;8Ub~(Op@ULdqpvhx7o%gWWMw6~jZb4If4*x}m_aXqP zH39H+E(!+r)V^z6if#4?ng+0OCi76O&~emZX#GIHPFMT>RFX9#AA}9jr9d}bM-H0x zRy9A92-aKwD?gKMJl^Wc&t%Ett)H3wH+hx5!ZKILWOAj}SHNi0+jBD6QtvCQCkk*& z&9AV2ZZ;X^lwQ_>=urL!oP5*q%M1{k5&=cVU@?EjVzKr9O24`wdspwL^~?&tqDWqL8%oRuohP|aR3;C=4umn&Vx@j z6tLGAb3G4MP2W>oEx7VPG`qjsHLFgFSZW_UdKw)co2(_b?v(&UnQtwv#^=e_F12o{ z?2aqgqi-uho8n%47#R38SHJa*%Cy!@RqmUWSuMplcIMXg2P+*{mTfDvtKV?_2@_8% zpXzRLPj}zrp6R~V-Ri#2eZTu-_f+?6{GRHb<9@*1^MiQ!kbACsp8H|v>*SJ@^x4Bojx4WNq?{Gim-sxWH-sN85-tAuQe$D;5d!Kuc zd%wHg{g%h)2i$K;+Jo-5-0uL#cir!~-*+Ezf8hQQm0#jM=Kj{*<^II|x%+GPH`1Kn zxlg-)aR2E3$$iHCGnzKyo$UR^eV2EVcZ&C3?=0`#-l^Uh-kIKey!U&TxLdssc;|R$ zd*|Z$4(|f*!`?@|Pk5JkU+^yVZty^wZ#Qg^T{~i4Qhu%-T$GubCpL##@e(pWt z{mOgN`-S%#?t&bpJj6yZuxBE&gf#d%XAg zAM(%g-|wI6pXZ$ z{+Ill{agH-{2l(S{#X1j`?vd-xL@_}@W1BYh)xFn$*#D0IU7u9`p8tsa{=k1! zejoFH?El1n-2b`%g#T0jXZ|n!C;eafyZqn#Py4^~|Ke{hol<(%KdE$b>D{GMOQ)C4 zD7~k2R_RoX$5#A(U+Dv-vrF$UeYkXf>4T+nOBa+rQrcF!sPxg&#ifszE-l^XURL^K ziS=Gyy0Uat>FUy_N;i~lEPb)`rP58M9i^K~x0JqI+F81-bbINJ(oai2FWp)CTIuf6 zJ-~f$>AuppN)MO5Q~GY{iPA4hca?rw`g-YCrEiy>Ed9Flo6?_4e<_WWPb%N%o?PBs zKD~TK`Aj^&x4ad9-&a1n{DJZZ%a^$4mM_NpdFAcpkCi`Oz7)?NE?-vuMER5D%kg}E z`HJ$DSCy|WUsJvo&mSpYSN=@-v*pj>`J?6Q%bzcQp?m|LFD&0!{$lw{ z<(tY+dfUpEly58FUcRIJwesENub1yC-&ek~e1G|Y@;A!gE`O)YUO!y^p8S5l`~&&@ zVfnH0kIIjie_Z}q`RC;)%0DUpLehU(eo}saQ{E-NzbpS^R@Phzz#?7({v7WEIe;vl00LE zuV`A~4(kmys~Rq>-&C0qZr^Ud#(I@wh1<5<;r4|n5?*1FkoQmc0^EVy^5gq@}eyob9a=P^9}pjyAc51$~GM)>5% z?D|Lia2MWw*$f|7Z_nWEi_zPbkJ;gwvsq>2zkZ`<+q)SlrE z^>zi`c6J)b>+trc&JdNe+z!0`W=?po!g3qlZrw9{M7<#~{LEa|^$?z}jW8fPJiB4A zqnY9TJ*Eu05Pl|ldm3*a+RH$WeB2Iy)ES}yta%IGZm62Kt$4d5dOH_y=STHz!`r=4 zeV5^F+g#J)tMK-%sND5}B$9#M=*|ay#*M{~jjqF1+oE-X6f)rBRO_!P`@N8P0tiZ{Lq-`6S*x6}>%; zw+r?*)EoJP9d3=@w%~1B1i2M&pN;a)#oH&Mx1FD~!@E9VbJAXb$B_|_kLThM-#X>v zGXS5*hiyoE;$pkUvG7*yl<8hStvsW8K0flg$ypL!x1E_y$6FF!FOLm;(iW_Q`R3K{ ztJEKLMV^GS`SP&a6sge_*pw_Dq|9}k#P|jNS%G9uL8cvctvJxB5M?0ERMj+`DoY0V zqNVjZ)cBoQ;g%_3PdGBCZb33_{+Jy|J3UCXD*iatFM3W1U;2(38aLC)Hj^czW;zsZ zU95`DbaXQv)lA8pf=nmTOiIe?-c}f_Y`U|p!0B-+O|%sdP5%wv5{O!RUuR0A6u5kt z^(wcHr_yVJ(_ZCH4@VXTZdhMYKfB@puE*gApIO9fTBNR5v$~wBRV5N;S0woj4KJ`7 zc7WV!HLy^dPXS#G98(b*F$-j5MXz$L@RXMYE~;SL>LlNdmvHQ6I7^&O;b-U6F9upX zsnpPVBOpFI2MXfJi|zUcD9-r0^3x; z;=ny&MQDfTNWqC6Xa!mvSPQHPGthcaem3dmh5;VJ+dfRP)Zbm1QJoARP)fAf1VGMn zyqvU3PFhz^T0JLCCKc5kC)H2z$>U8@V`#BD3`xTVf8R4D{EA&awH$D!oVSpAv3|AR zaO>Z8LE$>{zlu(x)jdwvM3=1K%Cy3GZ+FQ~VB<<)6CNxbIzudS2iP+z0ybByR|&0u z#>iU@3*2T2f+oPcLu=r7pqJuJXN8oURlleLE+oeW&WeCy1o^ZUgiYTl>}XG@hUd=; z|Gay6r5*lZE~hF42{k(Vyo-V)(`V=!Oni1BgvJ*mL{Z@hO$8rxAOa9UI;Dy5ixd&i z25Arat%v}G6%bX3;A$c~*-8WuQ4xU?PzpCmLlOYLU4e(9O*cURkdy>)wYlVx0GOIU zqX>Yp%o3ok7)uQ^0IP4dZHQA0f%Q6aCaBxARI}wBkDT+~>uS=)F61w;mNYQ;a;Up| z8ac(RGsN~*Gu3ug&sEg-P%o>r@gNe0bxrgv@F04ulIvft$ZNzPHW`E+H|PO@XLMfL zXgUuFHAoIJ!FJ~gAEDrsi7*i{7=UK_dB{f_RC=}g#VxM8_onU>>=Pj(7OrgWJzIch zh7|%|=mawbnC#w|8QS&7T|+!OrXZj8Zgz&-Zx!iY3D2DzK5ofOsz2p6te`Wr53=S5 zofP-8@pi_`4|D>RIt!^I>fer6zsi}SfVzh0(SmOs-WBnsu zqe~dr4=(Jr+Fx0IV@cK89iSyGfKu@7AftcSodkj5lUM^MtF=}3^K z3<(@`u|xOLwg^B#>Z;O#cn`WvIeUesnJOw`5Fif-neP?0>|l+hpd55O(}^xf<96!&;s3MC_rx@cQKG8J$r}o4a)dK^@kU582;!Nhc6Cabfv5d)qDJa1ZJ+_pGmDhC5S=; z$D|`>iWlC~L(>q_kMoNZ!K?{?Rl^XSR{<5&817BV*GTByoMknGZP)uteUWZeanrtgs;QAK4G0P?id zx=V&hxU3uiyBdwj;l(wGyoN})>9Fx3qF`fle5V5nt)12Ecr&F~2n~5HSox7xpYx1` ztd5ybe|A`T3x4SV0W@fIsK(TS4rIYrgXQ!sE2zo*t52jW77%bc)IVidPjt5Oi=lc+{(ls8&5S)}0XnC(sTOt$IK( zLE0uX1VB926F7pM80-nEw>9Wjjuuq(v!&JnS3H&+a4@+ZaK+z7fM^ASNfzE8sScwQ zW`VzwipQjbs7Q~sk4c{`=|7kj>l?^aKz?o?q>Q{;w90%*`EVj-p`={J6d0;hZ;K@5 zv_uNIX>(Wjt?4juKx2s41D%6OTP9stA$7{|sWH*R%{pO5=-}vva4nKS24hvi9Q3vKCfj%wDF zh?I#2?Y=BK(I6p{6HQp6OqMv3EP+|f>0dk0ITBTYSvfr;`KSsCPXOX5R(K@mMJIbr z;nk^lf|NdGHX6wu90vxW?4manOQ`??76u7QLwG{%dQF?IqcUU0@;8_qex-|6r&0zz z&U{)fB7@%qIzhc2=*(w@3n`u171)|+my)hOwE|@|D(SkAfb#)J1oW}++C!;KEIpL8 zxw5>JlI7{zI4?|X8Cfp1^%z;+p=5bSN|rCg7$;;o+XYDuGGo?vxMYeiC^J@OT+(g? zD~kD?oaV-Qjzl`?u4I{-gEFMBo#SaP`~!Nl%5-BoEPT!~y(C(hG=}tx?WLqp-z}0! zb~v?2sNbfeUODxpCkT29zbb;GdAf%OC6oPd{wi+0LY%Z?K0h)1yWB}<2O2Tes zV;U4;4(P%usV;g1@*ku6Jmvp%*f^2Ir?wpvD`4_!R*0wf0a`4W*&VZjp50|VyTeCB z;XEaQ87djb{!;y$WzOSBR6*5I(B9OTi@YoSX3aT4-XT;ju7nQ!6Bw4_mmCD83^`>t zI)MtN>LjEiQaBNBby};?irXuVPE{H`M2zemtI8m&7D zT3RIvV}!6Vw+dM{cdzs2sD zdH{uQFAH+WCgvYHT?1!LINn^dTWB zu=}{iRS?jLv(fxpXvFR;*Y8671h3k_t>5k8MfuWV2hOIMMk}sND-J4>GYJeqYfJ+F zG&9Sw6_@mpp^9m~!TQ9+YII-%Lq5_cB9?%*Ev-2C-a$F`$dNh|fy%OYGUDgJmFMjT$J2;XOhGv7^n zPD(p6$zz`!9g>zGTJxoAO%Mo8T@iHTOyO4d4HVH+IO#@2Lv3)&V50vkVB(B!?oEzZ z)eff=nR`#}-(y(^iVy$z{^HKlhkryp!j~9bLI*{*SweLGzhL!Y36t>%a5_5eHA}MS zHX*#COL_j(8yS`w%_SIzgusMR5(4oHR3w2Ox>_0GFA+27s#y554ki4PvHpm2z=ZR& zoFZXPGic%C3+g{BA$msb2%8DdWrkPE^*teC@TZH`FvQ8jV!0_NAMQF*ejf#%O@QEF zu#O#WLf+N0pze2;XENqa*k6*0JK@*A;UH^~r2LL%luki#2{5 zlp;oJa1uKI&>CzJ(e7i@ZZi_vZDx^n`-;+T(;$~_QYwwX>d(cB?$du)bV|{6{$0_D zqU#JFNvNSd2>Qgmq#ODPcOXrx_aKfLx~4ePI1MYMBtFRWCr*%|5HM^et@)*RitRTSzuW6{0m2dTX6tODeN~;PLoWs9hK~W1qkbthwfcQP)bAGe#dR)s{@uC!FY8>=MH#pH z9iwxJWtnlP-!ZKvJfyTM*AniFb?zO1*SRmYb9p(onEoxC%RkN=)wx9ci_YK9+2O9L zY;Oy%nu9++cEA!<_AIJ&QTv2^Eg`Y}<1G@Wi(p@?V3X>fX2*n# z`lrb;Ay)r~DNTNceP~Sg*q~ele<3$P z!5bp0#D2|UiS{S=1ue!Z0%0DFMA%|P=b4i9Zq$yTN-aDXvA}CSuowXfVtjCJ?D-rlDR*!`lWcOOfF;bS3Ge8&F|HAAdKIS$*xo3R z+vXri`&x%c%1Gp=Ep`r*lw`p3a7nqEAxrMQIYM4fGq3+!Ue7hJ|3_Z`Vm2H7yS#qf z_O!7oRr8uxHa&3Fi|cUL)a73 zsK+@t9rRpm{4P3^V+neuYilE^rMAUwMnQ@NZp3G}XRS*Z^44l5VOMm@zL; zVy!J&o{YDcCYC1w5J&t(m!N58@gb7T81v`ZB_$HuOXV^75SJ>UOCRE*SQMXUMDc&C z1uF1Kt$q`Z`Y`;0aRZyYUX0)5;%jo<6>E7oc!Z5KvdW8{sNz3zC-m=N?+Pa}GTp>x zRGi2mF!0Js3)d~VfXDJuNG)a34kcf4&wjj2Cj6^*6bS3HVJ{;8e%kxn@b8|{WV6G) zimZx9=F6%oL(tz+kF+Yjt{%D8db@i3Z?@Jdti0nT%F1dj@uk4ZSN)Axc}{|r=N7T@ zX2q#{f@%MMQ1p z+ZTXow<`uGS6`qW$<^nmM{@NU>hbSf{nFuT6|j0KaP>8RBd*>%!PT>ixcbZc$-XXf z^$oGCzBZQCm&daDlE2I9myj_XOr#gS_|RHS-1cCi*y9MgS#T1KlN&xG@o5QsA?vk_ zV%Nj_+(REZx~BFEFrIRc-RAo3OXsuCQ?#pvL8j%=93+Nv(+SkbPx09DJ;0u!r`Z>=C( zsW_0T&uoQCA5&H37pt?|UNVkURNidzmr!^n9G=6iW7<6R`FWy3=(%1KbL%H#ZoN34 zThaOnY=)^!`g_z~GkQX{0-jszxoXzB3`q#^y z95TH20_&*gIH(>T90yGfudtz9%5{W<1ifDl z{;9+9;WcvAhn#3xXO1Uzs^duzBJ0@DAs7y(OW34n%M~6tWUfS{+EP74z;ytGAUXM8*fT6-qy?2zM0kg~cq9VT~q6N9b|$CH%xk*IAIs)3Hf zl}?AkH0TWcl>k<{nvJI6A{T~q#K)65%yl7<-?-NgCo2dD`r=Fj42bFfU?Ze}QNhw1 zUcF|A96l+Bx6q&`6?h4O}7(Wp``AS z4P2cVp!ku2kDCZ&Nsq_3{FpwF(lb$AN$7(UZ@MB)pGoL57bW$DDw9NHCn`Ep(FbHy z^l|0*mN*J*Z@@d_c%e#3=!5=37pCbmQ#vMcuC4lK38CQ z>`jgz(kFwdmofKaOI%-)B2p{9i)#|N!kGJtp~Te$Ky2<$q9u+yID<*b{HxHlfXl`s zYP!nEW5STfRVIyp%yw;RPKvCq1A;`A0EiC}OO+U7T_tWb2kFE0F+Y6#)$rQU6#5HIFpBI-lRM<fmCCe9SCOg`HNi zO@NppuoT?VCd@#fGn9~K%-78bfERR|MZ&}t&PHnYLDs^+S2c^6!PG`NYvznr^heD~ zbjSbzqDMp$YwpAZ6Cng)s)oSetb!zJ!8l-dv5!=i|I){*S%>m{R0ZvQADO8s->0a2 zw1!S65n>BJb;c(x2(?lq)ROY7PM9h5PL;wWW+l(CEE;PUjtuTABrxz&YRPd<5|HJk zkV>L2LIPqL6}Ja5*E1{`UBCgtwbYzHftl`)*SR&Yy@^0Bu-iI zxVG#?q{Q?Wh7!~zx6M&h;ORvk)+mP$&Jh_X=NaFI!KWgMs0Ch8^n##0gnA})S2s&a zZDT@Vmu8Q1n9(vAa{%P3?ZXIoh(2@uMy}%XMu0bR4w^I9F@G~PrL@!4z?zJzfl(7P z`GMH(glgUh>i`@I4Z$`4!yuTFN*j(N)u~q9syswutYpN(IZSHA41oqW4yu|b zm>eR2jGbdHV^Ut?%@Fc!*b4UyzKCo!>xE;h@w)G6*E~BJuWLUUmC$;z#8U9WP^}zZ z%BhI(E;&VSQNpjXHX>JOJmM61Ff)ua#fD|k)^+ZXf32wj6GQH37_S(mT1ZKT0y%n1 zTZXR&V(H{qRk3rdttyG8JtuvFy+KN)bHkp*H|_e_ewF~Tw2)HD5cyh<82yvdBM=eT zQ6%0BqWNC4DvuMPDjO4nI#cSBf(hN##J!a2&TQV}fL)N1jZzJ z(p}EH^SHaX6EKr`P0~4jD^iqCnzwk3uS+bO>k`#Izj(o<9A2aD(8A43;U~?_TIKL! zbF&uOgX_x_?xYSrzOpPhAabPu$DR`prpy9sAub9ynDelHGK^@6(MNws6#j;Z!Y-@92iv zu($PL26hl*Al(GZ?`^i3F9t7@w&x~xnd7vN?Cd_|(As3mr^B^v1Wz$CiDF?XjC)#Q zUw8Nr7*}0JLB<7Sy#do)ctV($6G<2a%!^#bye>XT5m=4gg099C0MEt^>pSd~O$VQe za5zB_qH}mlC8Bdq_%yC#mx!LaI0%=6s=FY?wU^DE4PJaKd*d2=;7RrqH6S)a*@MyG z0Oxv zn#xJ<0s^xCNCM)@=)*8jE_IGH{cth_zHUH{uN;UWb|?;^zQH<_hzA7Ffxst90RTtv zOAv>XueeYj@B<@NC5_c+04*V|1CP8G6=J{+Q7PBkO?dckl*(1G7-h8&@m-tdLR8D^ zYW%_qDnn7|OXZfsA$fa)*Ijoo@kYB*#WQUX?@;um6mEQb1NVYAI?-!|xLH~O_N}e} zV)85e>d+f#PFfLEgGtH6N?u~uK&H4GdMi*}Cw>rkn5HDR+SQ+5p9>nH09VPNGwQ0q zZUK50-fQ7=5#f@R^*@wwCyWq@v?4QueDuFuPZqh^5ky9RY{;YZmlWk~TJdEx11bCT>?Kv1dPaLJX7lc<9CD0r39F|6dL3lU3lLAE!sWf;&pNriOm{P)RDIQEPpN4^UZh#Zh zP}MA-R`tSx=F{TfL(Hc-_)s;*VhQ6l2NjVBmz1(Z6s}GYu_LHzA||5_oFC}CLc_t} zcS4%3D0Ga*b>Mam<@Hz@u>pmVh@(0#=)!BiF(0l+rf@S*>4}HTD6XUC9^=%UoDhBT z1s@`(Yb$r{@e2D&xNB~5l)kPPQU|+IE2rch@X>iVuq(TcpuE zXB*l#&)F`2DF){uG+qBS?nFZ0#T!-wKc_J_=zz12yLGeJcY)d66n5|h?tqvDzR)Z? z&)Lw}N7dHoamah}u@!#Oh)+|(dw4n)FVIKzhdfFw^f@RAs|9m|9#mk}Z!R}G>9ivV zh4^Ia6I12{`)GMKWnvjJK?V_AH_zFqTCm+7Zwp3Vty|zd&lZf>stK2ky9w43-Gs{X zY{F*Uge#;8V;_YjrU6}SfJ;iN>CpPrW)x~c_r4A^J8zK2Q{`0%7GuOIKuc}8QFCJJ z++##_>~oKTAu;!qZ&*0@aFW`hQ6|$@%0aU*P3Gf|^m%S2HJ^y)qq_?8@waL|cBuJS z%FYN6mJ>zSBs z!Cz@67Egn01Jd*Gg`Ec4j>r+pU;?!!lcRiIyb17qt&oJr)hsx*qHG6R4^Q#btYzU3 z4!QoZL`|AhnqzD?W*?O%=10NA#e{^?lt~&XO(@cqi7RO`ac}QQD$>(UlfyD6?jO{| zH8xLnf^p)y;rrF)i%O9?;TB2M7cfIj?V{CGg0V#BN)KmKwBL5S*+W%yncdu1Y1-yI z{+?ks_v0`2Ud-q3Id*eF{ZFvMIP0+r4dtCMyXHdTai(`<8}f)GCL1CKT2>M7KW+s~ zr8-sxJU7_CSOJf(W=!`vqWZ_Cc;^YsMoH7yMl!#(vni z#nKBV5XUW+UNC_;PO+30hohRA|3$@;vKJ8$RLgG@f_k$iU&QHXVySK=Vs5oVYtw@o zd?DV)(G&~wMw^kprVpdZ*ZT?NvonH>J24R@KeRRt(MN1*TFE7V>uhKY!DT5|4{@Ce zkw{1dL68RaR0gPhfJT*cB#}r~tPD54 zS-#4t5i~3NVpGm5;g?qUF=>SXFTpG6C2K_8QVqhAsv1W6RJ@bkD7vXvnI>?KO~A=4 z8&y!Zq$6!k*o>mTez>;^{i+=o68gp7%OlXMkE-((d*Sgz>LdkslAUFaTKM6q=BR}q zKD)0R7m{6JQ55=MRBXN>5J#aG1-pfyua1mj=?Kf48ZI55UZgDkZbd!`%pDMrE^&l< zaZttZ!j(6H=|a>2Khi}90z;}pe6Xp3%EU?a#v&bORgiuQq-r+;Qee|)Ms22 z@kAXLWgx@E?-P-A0K{=o`9c{OEvTsYeW&inpGp#kHA@BP&k<_lbt)=K4ppJ$G|5b8 zxr)#-h9NUcv3`zO${2lTa}sA57Ua0NR0C&nx6W8*DZY-4xq?M@5Ee`w&r-paKTA77 zMDYIepQS+ZSDmGLmjP%~FiY#v82jPGqFK86Wea#K7+c(q)fW!S=?=C}dKy=j4Y9FB(V^|-na}*o! z0YoI|TWsQQl{C90LIE%p{t&ehMZFE?0CxrIR)wJA(6n4w>_*?r#nwslpGpqGq zd*TUT{Xi`^!k#v&l)vMRn!&F~>S^Uz6fOZ`V|&X=f}~+3A;<8=vRu;eEgf3hEhrho zS33^kp29?-5hAWg!aX&HFSd{&k zR3BH!FBVtDS838Fp~DDMg+EpJ4^3E4#yw3Lz8XQZs@zj7$J0Gk7`SFD?x{vplWO3e zs%p5SLGY_;uz^R_Fsk7jyQglb-BU#&aZkmwal@yKd+LV2GVZAx{=~SaZuouUp1R?K z>Jct-!pTaS!?BY!s(UK#7p$LgxTpTu-BY+|+Sfu;+q$PXMb!eCa8L0mOJNe>ag09( z0x5V??kP@p(JA%CKb74ba@GO<=5%_c(`iX_|EAetRs$~?^O_HllmFM=YK9pg+jnqj zBEmY+t~T^7Zx<972bHU;w$m8zUc0K{CSJ%AOu?7C)Sfmx4axLzWv(d8ofDG|t=lMZ zg`Xrt*q|!Rs|>FzL==Jy@G+Q=v$FMfVZjhiSS$k(-1ifoCBu#nKlx2E+VST!dN6f4 zeJMn_(S_k;>|w=6%6#>avRlhD@hIOXyS0ob`7YV5<@zaj;RuQVN!B_S4T|puZgA-; z@g+1>>pT#_*ZXp~x*Hq%!daY|f!l3fWoPikFi-(=Lg z8{}+sR|B?0)@V@M*y`1*fPN^efIe}f6~e}NJ|}+E$&xr1D`F^<0bvZ)J!vS?Emd~AAu5SPe|Hg&0hjA#{zEe4AW za`FCT6NznRstP1BjWZR8CMA$0Zmm9YjkfK<>A6SY^dvjT^c-^}36eoalE$$UG?Hj$ zdg3C;mgy;bSyPcDPLMH8&yCUa#Ih;p2Y0wu;8_ce^!)VI{3M|;Bzk^wI*D`iU_3`T zUZqu-qqlmPqv@TCc#S_>0B&#-9~+X%vw0t+B|c*`k5`K9r?=_!fV;R(n)rqh!7th; z*au)(!{4|5RgcqK*(@qHF~6}O*r&07uwUb4!Mw&oFyPCBp2jNz?&pEb!Lj!jris#y zblceW`QW0`m?wXCH2Fb(HTmZTuK+=17hcYkZ$@dHpj@_3Oh3H~uf4pnnRBy^dzNtvs;*p z^KT#Q7~n+HlS~KNU&>N^2Br86N^x%UH%3+mgq&>SAG7d&e#-zxc;miP?oEGw%K(rn zJoW}*H&N@jX}EcQS`+7auxy8(C6@v4*>&R$jbX9Qctbb`G45r6Y0q!5ZW>*x7k3!| zXV0{P_QP3Jp9gTNm{l-YtOKjdISp!mKfDtAXVf}Rl9>wJ9ku3W)|3`SRt#pCsw=&w zw3uUy4*;!bX4jMom)^h_D6=?PSc;E>6)h~K*Wy(9=ddt^uEF5%M0uF`*jXosCh&;Q z{8h9`QHN2HHYqx3@@tdARsO1+ncz7t7t09&Twg3QaQ@;+4p8uc>kC&-Q{fU67YpP= zohDG#S-(QL>g?+N_bYZJ`#uWJL{j&d+%wltLCHSi$dp3FRjKu%s3l9dnNXtUfKz<1-rBU z{&JIN9FneCldf58_BH9uBuu=yc!k+FmnK|~*?29A3KI;HYz_>=eH!!NHS7n&4Hug< zO4x**tbp!Bq5^mr2!`=bvKAU+I0F$GW8_a!;0ShfNjQcIE$NA6^{HiHYa(|Dj@1|| zv>C=+C5*9s#pD$yYz#KT+%*lQsheHsGi# zgTs{w2qpwJ4ZmbOJ_r=AS(BFG+?kx(iZ>AKPT8|NrI7y8%%(;+xCpZ{P;$w~iZEfc zM#rx@5{RpGE*|&J0meb%jRVGFz+KYVIrF?N1~hw`vKgS-WeBFiW|)eTMcQUaZt$Va zF#Zibv>C>`!Ds68vl*to_#1ri>5s@}(4YQjZ!>%qUaYbi$Vb>hAx!h%(q^EwZ~=q? zCmtSgObqh1(G9up!tuafFBo6JG#;kZZU_&rRcUGsVlhA|W7=^> z;;G)Kfa~#q$r^qbLm_Bq2861Fihn?Gi+HUNfTqRbJ&D2CXk)QNZ2_ zS6sp)nVCWPs0UnXXpT0X^HmF{n@2`=ShP?5@DBYU&2XpA7_n8xsb<&2E|cM?jFFmN zyV`!6LNy|X3H@-JIj;49$*AZOW~FZP?Ye}z1r54VZW|GPpqxL8^D?_W1Nx4tN|8F@K4FPmHy z^HxKgk#9}J8ToW^1mh?}YCI!f3p$mf#08_G`n1r|B2%w5CeO&@G8>$c=Sg=EiuB?c zd62Njna@34hC=F$ydsZT-9gcuGxDwB=OTa8Y-F6lGxDVXoKk7R%EESF^ahqzq!0hv z%)e*A{KopH+HI~fkuB<&Yv5mmzvwGrR48uzP%etfhT9S$FbTKaJza0BrtcpA zN6B>rg4Fmy?CbSSUTT16nB@qcfXf1Di3llL5EoXW1+<0Otlki#LH#Kknc`BRPruo*C}-9Dv+`byVTl0(5tWH9x(x*4-UisV zxU^aI9O7dUy9({06ev`#Ml68n6>ugV>MiUiv9;{_0 zD@CR;>}XD~br6znPdVv?ZqOrnhW1uW%QcPL;39uT3L19}6WwFU9ypU&}alNuQ z5ZD0*{84D|-$4&CSHzcC1c?nVz@g@Rw zRTo)&Z0A$O{Rk!sXUqL3IA*Y-F{vs$9ef^ta%g8!;K_WH0pey7@+kLwwcbUfPZdQn z#ebfzXLl_ewkb!`wQqcO36KXkc^zW17N%N=15EWDmB3 zCG|2Ei&A>IF0u}EUSQ3N?&0DVvaDX_P}Gw?%5&>Zw{+*sX_`z*%c}0w_#@rvhB(1< z+#R`qP`ZOy4Z8!AMANkUb&YOO6#AW_JJTJM(cMw82jgQ=twBqG;U!c+IqTo>}lRBa}g9QYpxXEBT#GhW)t zZNq+yTvFVQX*T7uA9jUz;|n199h{IIxbCp7I+*YXU~i`Rusb|^56y=m44a_xqIM7z z(gQaU2Fcv8g#K1$!YG+j{{$=-As;Php}jCq$~B<+Rw78P-76;77Ez=W#7yb@+v{*; z$VSW0)ZyT9G1$1r-S9iFu0;Qy!?J&s{-f8N&aUB#KbSi3H9ZD&7y&lc!D)8*`L0}R z;reb`6W_;2q-Qao;UKRW09%#eM6bD*JT?$jSvIx$ znFjUh(AYXM5FhApyj^x6@3pUoKbFgX5eHGu2BBbq(^J9>5~zg;jAIp|2iB(SH?F|v z05F2$+!rbGfj0F@x&Y9qRJkw`#e8jXZ+L1L*BH~u_64a59xetpka|&-b~?k^f@~4c zR(X$q+OuKmOf)9i0jn#8xgJ%D3;ba;BYv6o*BU-I*P^k!!k=x9{0kn+hG)fg%SU(A zz^i`ChY1|se|Q92c_eLj=_ODkK1`5w;*M0E6D@KCYGt{@DK3cRaF%Z)w;a}BFxZv0(rFvLHY}Q_h zR?=A)?^AqZ`b;L~ajt4|qWGDcpv$x=M(|sO z7ZHu-1+g^-zb7KM16@~$o3#}TC35MG&8jkRJ<#l2ftA`+B7)zoi3onDi&q%@Ml_Of z#ExL1assKzi|SK57s0M@&`ZGtRX_#5>$o45fo~2B+D1BQ(!o3A5~3Lb<&ed}9&mLc z>RksdL7(YraUf%nnoCVng^h}-$mxAhtGlbhNnF9b)tDkcwg|h6C5m53XGJwl>O|&2oPZ~H6Z(@R=lbjPW=ee!{3kXFqL8Chp@Rgbt zFD@gOTkS(cEWxE+B)qq8{! z=<7pNU6>8%P|FcUWmk;phMn=O4^bHMYiQ%UVP~xCLojQ>mXzIoI7tm}b_0$dK0RN) zx6Qjdo}4ci=y0|FarI~=7^{8U<-f>LcCWm|= zq6>1fh7UvpI7cuYk*mcHm0%4Yh#<^teuW3T&$W(j^*v-UQrrbr5Cv;Gu*8A6fp0{> zT!Ou-=7!uv?$QXKPJ;-#g9efKj4nr%rPQ3o_mEXVu~h&edlRQ~(#pp#pelk671KhK z7D5BD$;mG<%$Ahoml%3@StvACeRFi)8KD=m9Z*cz!;}D!t<6q&6>0-^?1*H)=^w}! z@}QDnqZiyo4nBi<(U_vXu18CRRwW$;Ppb zA2k`XgoSyj=N}C~AeLjbsV^MBraVIIPYe>&zZxdaG)PAL1zF*5Zz(lqXJxD`iNM5) zWh_OMlCjDS$;eoUzz`P@YI6-Yw(2L`7ptFeoveO>OiF(4LI~DgAxl$r=^ge8d^}@z z*Th!yDPtauWlO~g03sv>Jau9gsp$XL+E=l@VmD; z>URg0czJ#d46MX(P{vO122=5IGRkEp*s!sf;F<&nCM^>@li9!X1>&^V zbl@?7Us6#?(7TN?RWAAu>=5JfHMjH3{y6F=G{qLhDo6rb$??flenXJEs3s_}qM!p+ z)zeiW%F3$HEGbMi@1PEdU^G^YHw+mi18&%dd`G=ddteq5*Sa3@4dy!1fbt53CUEqE z20{*#`2ingen5*qV9Q6lg4zP>A)tk$%t{<|4cLD#9wo3V?I8 zr?3dFfoGAwfGQDxH}TP|2k`YVt|*kzZvEx7srCDOz@zq^cGHG)j|m`5k4D@UH-h~H z#z(>8f>AZ1>}?9lAPXW&RWLyWoF$h2@V z1%a&kan$g=uO2;QQ9vva8bebFP1COj^}PkV5l{$8iyJ}{^#qQRsVrS=I1n#o7txTQ zyaMcx8703oi(o`>w94>Iu}36oJqpNIhfQZd9d<3b+XmlcV`qLQ3PKMNdaHeGU+uPu z-vz-`hKI`1eXuRjqE5WPRdVTaJwc-~xw z)&PvtRLb#d(@fwrl>}d7<}{UrlE%zwsxjjjOe^Lq6y^?74#6D3+-VXzH0G*Fpy$TA zyJF0=s#@B7mBL&z<+?QHZj(^cm?xNoZjHGfW1f(Q8CDY;FwvCbMlvQ$G6@qk=E){u zlEyqmW47i&oP*eq9odF|37bj~u^_(POz|nrDOgf~*t5f_Nb^{9H&n`mX(nMRDrLfS zlQ0dHGGTW~kio^Zs@eJube@37<;=Co`cLEV;_GWvUE<$k<~|e8TyA_)GZ)5UBtC3z zVB$_FH7h9L?&)DGA?-N$WY+LmJNy-76osHpId5V8el`$l1gPXjq8d@?7fh8JzaVWx zCREW^5d=@8jSS=M!mNqgyv1Rgtwfv8a1tUfx6P0?#4OTABj4gEa$bWvBlE$m{*pw40S_#JN>(Rx6~>Plpw=v$wgATLTbkCA#xR|BSALb0+U9Bt_;8;NC0W!Hs1nQ#AMDwDT!y# zx2W-BB4@#3iANGMSNb+x7!r0Ou7al9k9F{-&6S=sU7-;i5EVVs#GOU(025V63;qxi zk+hjFQ3nK^4!VE?*x#dI*>R3N;7u?N>Lq9{G?Y* zb(t#(Fh%uJnz4ls+#`xq^ynw4#)43|h3=P6*NsuBtq-=qYV zgaXDlRFR+v;|8LDG3BU$aal%Wxb_HC%#B)~B=oOBoY21tvC_XTKRVvi+@JW%SSQHf zr_KqahJ+qgO;6}yRYO7#s~VIZb^}4qMTi{avjurV6)WTkRjiOFRIx&?RI$)yLMv*X zQz7*dnph!DXkvvpp@|h@rHKXc1lb07YP(~vJ{)H5zjCQyKBTVO~MR~cvg&<8#FRhCSSAqJxsA#8u6YcVGoUXFO#sR zMjU9wGJt!vq9%9X8>m3uK-5gyJ>LqntSDi+L^Ib8n=wQqAuUP+s5}9-cMR4{%8M-A z>=^eetp+@^jP2(KSy&E-Y;fzlxVWL+S*3$K zm`NBviwbhnKYd^^Y#AC-%CVI!(Vdbd4zzZ0CCiCQbxA2sZH-XA)+nXw#(aSbbX3z< zzLG@y5H(&F885h@NgG_rO=Nb`c;Ox*^z117U~GiCyHVBWfG+ z(BhIM6|+O1#f^5a6h?W3BU&^z&xa?Jv6g&kjom$fmCXcDzQ)c%6=>`%SS%yS2h0_X z-6I+saq}Mbdp087=zV89@ZEmfV*Q=CST+XL{n6F_P(VD35qiWGSkO6w~sazCNSvtVj4 zz|vx&GFO>Tfz9nc!hm8Uip7G!HTC#ssmG0Kw(H--a!mb7U!)l=o5;a!nWB_Xir-qM zD6>?@TBazoRBt3JIYpTjvlFaLCX7YpDk%vW9aP@_cG0=b%G==rVVXnUJXl5_bWpDj zv#x@iwat6i9ZkfBj-#J=yad?4-d9LGjWhFJ0=TE-%-B{{_~FtJ24Am2uQieVB!nyzG+Qifp?P@2SKm{OKu5@3ql z5YaKifQLokaTkM4o_WOPz79MX4+C65KMuK&ribAKl=y;1nqpyFN58Z*#Tr~nnljMi zGWvB0Jr_t*Sc@FNLoikdfU#7x2B!+j8XO=FV}*xMXi6vy3}ixK30ttKg8l{OHCZ-- zC^oRkz7bd(6Pvso!L>88$=Mn(WoC;OIYKleBY#T1LysDz2?ZmXqvufUmcke;gwlw1 z=ZtDWgSgs)PKN#>3)&I=!?P|nT>qA^eKw4reFsmcBm}%W<4AUmK`nI+G#EdRyv=;I zl!Yo#OIfg3j!-QzS0v#oQA=2aSVdy4gIekulUiCw@c*B^_m7h6JnKB`-m2;@b#<$& z<(Ax*+V-t-+iok8E!(o(ag;=rD2YSlWA8a;jv-DE=lGoUw!CL!jW^353Dyi|#u+?I z#_9~2gAW*RATt>7fCn5l>p0**c5onY!jRd?ECvFbWSC55NER3Z-p}`W-h1zRZ&gVx zTe6+l1grYK_r33r=Y8Ji*ZVxrd(S4=(mkqp*D2YOOnp^FlDMmiA{nu!;ZsJWf7_HT z=}c~hEtIXutRgFX(6=xF>}O}$LOXoKFO39-@ORFV3~q3E=nn4xIP6)5G_+m|cT zeP7OW->3PXNH)!NPni69U$P0ld!JQ(-zga{bxy^31$k)NLd<=?Xx#VDoY=r6N6?cD5!sj7Ti_x<-;p zGnZ5i;;ETf+0Qls$bGEoGH; zcS~8qx~F5;y|k3sflgE@TKC9OR<9MUdu%DISF5hOpANAT##qX1e>6C??S1A|E8448 zw3-?3RV&)2t!P*g3oBYUx~W>x0`m**j>+A!Pwqo_M>2jdq407u(F0~TNYxluXLWZN89uqG)*&2TUq_x- zKEKHG$~%laue?L|ys{3*dO+W34M$#A-f-k~&ct}6?kVz#EOX6vj2ZF8gxP`<9 z70=R#?Sn@)Bk??9Rq5+g5)YLs5>I+4{$JJ_1~=m=&RfjQI0^0>kC?n8&&v2@a3}-z zWEU29#O(cO3xVw{9Sut0anfS6Y>a2CMBSpsuKQ(15; z%iVJor!3CEgzTV;Q$Q*4>`6PH(Xk8Uu*N$kT17<8WenjYQlI2}-x@7=$Ck)|kV#i# zcBX|AO6IDX{5jN=JOSY#$k`^&DoIrfj4JMI#XEET+OPNw za}VS8&I%1H@2p|~@|mH`m*5)P*{XNu`t`Y<*&gpKH*Hx6ldtMInAtwFX>ECP0fE<7j*4*Zf>e9pm@(F7tl6cynJPh)06!xwF9rTQ!~T>che0rBZgVhLvSv zq+vf2j|2)IU?fm@J1$VraMzGN8O{YdWKGZJNMG6@CDNn_HAsLuBE=Mto8;!q*qIC? z*}@H1E?dyYd>H&fPV4qINYq!ia+XJ=H`X_kpTYV%Ko$H%w6d9;koYTviCG3f$3;hTZoN$-w4D!BjZyb%Do9E3J28o_FX(;1*S}A)uDxV8$-!graAQ0XBb<; z{CxE(@PN8z2&ki=8|LSdBL!R$R-awDF1I2+L;W8@W;2g4BnKr+Be8)18WK^p6zfAw zb+%)O^pPz}mH!+eXN-1EPC|#-=QOhB@s|e`La9(1^TvGkjT_&@?wb{^B?ndYP;A?g zs1gE{qOe&805C$kHY5=M@c?~Kdm5#RDBww(eT^{^&_nmtz%;Z3M3}kREvm}bagZ7z zL6aSOWSftq$g!fPg}+3V0wt-5n)O-}M9q4&s;KFbM%!l7Y?@4$X;JW@DHcV+LADkq zCmzJFq!!kMqb11c;bLJeHWMr+JLVR#iN5N~PsiUsbT# zt+eJI1`=3e!=R-+ZC2T@zW^=eBU4b&nwDaoYL#Fy*g|l1jbmjCSJ$w>MjlPBjN9h=9qDosYzqEubkr`dIQ98T3Z^ z9Ht&4!yaUH_cm4|ukLhAj7$@OMESwx7|w|3MOXc>1#xARG;7hr*7W{CDt1FBgn7Um zwEaUTYtN&T{oV;uY!qba@G<2@@R4{C$t{W`n<%$ThK~Z9qy!ami#Hs}E#B}1xy2eT zf&pW|V*)cectjWVXm`T=b5_Zp(&aq$B3bh5KGUW69x<4(t!FW1(hbrFQpEjK>o0dNGWhYOE z(Bae^X@PRm^u5s!NmWR(;lACxqf0i5l5}`5Eu+eVX)zAnOU-@j{oPcY=f8{jZ?9*{ znOSL&+8<}tJ=u)nELM2(E4Sp{(7)bs0Iq5rQA9xrE&451P_Zd)gCm5lpoEG@DNA$0 zM=8@#?278*xW+dPzK`FMZ1oQsSe&Kd+ssuj^+^?C(t>)|~0ia85G=eD`%eGdNu`tF^5AtMfs z#SZ=OKK4Go@Ob~ixRUQzAX@P~uGjMYYH*KZ)#}wsLMofA-pc#3pIumkw{RzrTxA6w zL6xo@s!L4cd&fo*_Xtb6#R6Emfv8#qNxJ0%)aw;EvZuiXi_y_~z2a2fFKVo&rT3Pm z?pQyBa? zYy_~daI&sVTR~VOx9zD$SPh?Fo^>OFRN!)Z8g1sEDRtD=It-<)Zn+A0ijR;H$T z8Ah{d%TTrT_>=TaQmUWg79k%tlc5Rjju4ZWi7y&avc=K72llxxLnJ7KK@CiinI+m* z)YrF2M39;^Ul7;ATvsKn=6@MgaxAG6qk1hz9coo03+vS!p>jf`w_Qi){}#}>2}1uD zC6E}0#~s7cNM>`yj_}wKJHlf}?2@WrQWIiF;@K7}h{Us=6&OCU-IR1*ynB|FWBEFT zUHi!aSC~CFmzb0FV=i0wI+g5qr=Y&qZ zk+JjG))XSAAgy+|4NKie_A+1V$X@1a9TH#2Ugm3E+RMUPyET+v<^mYp8cM;|zJnp; zw~#f|!Qh9g)aV5;_@OEV3*=DM!2D2^f^GfnRuEEIkWGqY*{b1rqo}dSC8sLztQ8b& z?_XdAp0$F49sMOM2w5x0S<&BR1)iWn>0$kn;cS0)9roYR#o*#FaySb?%d?Otxm@&o zas^YkSYoZfy_D_BmQ;R0RDNZ4l_H#EmRXpV^k#C+S>+>V0TUU0CoDmP8@>b)Zuk;J zxZz6>;f60kgd4sD5pMVr5U3}SzF?O9lb`SGi8&8w>r&MR2!tzjdStC0FC zG!C&B4xGDHxcb#qIMpgNeH9LA71qw(D&X@}QY62H!#IQ_oi@jWS7p~^S7-ZRqS=-G z{n=Ih>#}S5*JfAu4`loL+}D|PW!Ig>jQuSp4*iR1m+mDF{l!Zq4xL*1*;kW(_E*IL zq#^e2RLt=Q*Y-9f?JU?eO%tS@7hT31E8F$2tj-SMrXt%R+*D+{{?(;0L(b9h!c3{V zAn?5;(v8b>k#yt2OeEbnCyk^V=cJKze9^=f=Uo(_CY+x z3DyWRJwJiwF1L_;ZL%O`sbVaOw$%GjN7U#muK19kFz6#G*n0aNd zLMhDbL!>-st56YU7O?yD7e?7Av>7J44<@=FCVCxA^xA@fa;M(67z6!y#6bUAmsgL| zXI>)Ya~(6{22PeEea6YM=`-+4gOBM6*^@mC?r2C7;)_E#aw#@Zf(lTCJh z=s7q!{miD& z#~TgQfU}{4>>4jfTodj9c-1Px5>)kZmOz4pRsqk=ZWZ>wx(cUSg;tZWXS3brnvv3ix|y zFFdSOc>TFs1$30sLO4#w|JD>mVYS_GY!nH5XLe>GzA)vh@RU~J4d-qZ4#ca_!AD>I z4LUj1i8OXvv(jSixehJ&0Qv)pCZ<~~v{(0Ei>3C4Y=8fC*>(Mc*|q)GX9xOk;1tj; zw>0xDrg(l;if4Z-K36?10bWrWMF4^e!N1dmjmvV@Y7QUzj3o_hXUmTc-uNc65c7Y@ zeb+ZR=gY!##v`tZsD5ehw{-n_PZyx+=I?P>{xZ~LPp!CefEKGgg9BAH3q`hKUqz9v z944d4R@5vMS+-0?QyU!Y{bq|n*xCBjx3Z$TDZTWJPv2{L>HeBtdR?i9;vO?z4~@=O zoyY>-ZY7KbFR-x2GuYJ`T@RF@UsfS+sqFDo^chxkY z;He@V2(c9X=UNWh4vf`-a@~iklfK1tpNBf7*UJBQZoF0y=uhF1dyTY!RzcJL7qBC#-39DOYIgxUlG|xO5 zBL#pkC;ccofC0^V;Ippv+q!;i_`Y|{H5h+rV9>rIZS~*CWZUE=2rZb6;`*{7UDnf5 zpqFW5`#tWzuksL=!fK&t0JyjeXg&Wn~#GdpPv+dObXP866aj~M6y`RF4g@9--7 zW`3)+$6sz?#HWkD+;SXgCaN?({<2nYm7g>Tb~fwvzS<(5 zNXdoglGDuEmQb0Gd`+WhG?&?;Xf&7E9LCB{IgbxZSAjTFk)x|b*xr8)8#8cdZS|Tm z;1RCP7{Zl^zA_-wg76CX7FpF4up0$r)@wx(eQ`i$z1omCI7dja}Q;Q!fXc75;n#q=vxem|=6`>OKq+Ou=jDxZ(4d_Ghm0wC__3sIFn z^q?N~g;)~T`lG1UABS3Whcjec>(8QEe_Gb6P3=ELwf^HY2csw6s2(}rire~HRO{JL ziyo(|wZ0M6`jfJj%OER*g`7NY%@&YH6;?P)#uB8-*<2nKW^YCwrDLkzWb&xo+H-ld zqr$QB=q&OmB5bzc^631T%A@nns}|JAIh98duh)&P1$ne5k#p(obIrO;Sy`apjzIsz zCFom|B-2t7Z4Cclx4Os>fh$t&lu|^z2oeK%BI*)@igJkod7&$vV|@Uz4~w9ug=||X zFicL{P)T(#F>OONGeIpNe`2Zw%jqepR-CdLUtDjnUYo?p4zq7QMHQL6H(N9y^6pP)6{y!y1?M~XuH5rWH4w9xU!bpVue0L|K~Xl z7;_G)gc^BJe)l-+DXLas#ho%Nzh1Axi#t(Ze!XHH@_IkQvwXzjS;bH)JgXe9v6-k+ z6onp*wq7gZS@Brw)yD8FXF&gWiwszHWqI!hl-F_GIh#)4h2aI?cdj1seYeC!eBUiG zfJpj@NUC_gWdcwvHKrW#{QfL#0cmPq`hNRED*D}|0oZBWf+uc6(VdCvJ&IrVwj)cC zTX`Z&k)Nw>3BA)5`5oEn3}LzyJG!|26XUKsIZ4~11coi75*JXXB;;w9N`s{tP~b@< zriMOk3OtF#lqHmEWY?>XGG|t&di=?aK1rG6*$nY*KH0yD&DrC>Zu5|^0@z=Ljdb5I z8Q#k{I(P5l-`?F^AINWZ_ptrm-VbVlwj#Ar|3x61SYYa8Q$-QkBsU3k5(@KH-TgS; zKjU2E%#|+?XB?6TIWwPnDE#OoABUE^|qO@pLm=HheNB zg@S`9+IVg&jezL3(#S;Xw$jK%>$cL!MC;o-GSRxNG&0e;tu!*xx~()a(e{BPIdyHP zb_k{GIyuqCVn2Ewi&)`Ul=)O(j&lcGpzHxE++M<7u$#~N*)EkYMderH;nguC*+eh- zTt|FGE&&9>R>8dF_l;kL>$7p|u#t^ji0daU#ReAgE9135+FX~p0g}6p2%reBYasPk z_pc(88-`eTGz)hMQ_!Vsw8%PAk%`JAR+k>{Um91d$V8E3SFe}v_mRvo^@??wNbkGZ zrNdK7b)Hg864L2sU;<54ZPExdTtaG!edID*F4ajAEySOiJY7mjCOAgb zCP{VmdK0C(dd0d_mrJ5Dw`nIMAsp+kdd{<#vvAk@N7LBN$;Q=FB0oq&MQr3Ap=b$oVhF(@rV&d>ql@Ak8rjU@d#%t5sz@T67dLUD-n-ywi59O zXDbnpaJCX1<2hT2j`5tWM8|l}R-$9P3ysf2$9T(D5FO)PYz2|?U1kN5^W9}u5INsn zWCfA)-M|VW=esMcAc_jR#0o4b3`x?XC1G>yAJ|m4WK#nYGL4aZ@jcxx+N;_NQSG&C zNyJyh=SRh_&6cwZF|AX)D=NMryC}Piw15;}92J{i>aOgP>~GV1$y6fe}hN21a5_F8hTxIw58~LP^KK2qhf@Bb0Ouj8M`sFhWVk zzz8KB10$4l42)3HF)%_&$G`|B9RnkjbPSA8(lIbXNyoqlB^?7JlynS?P|`6lLP^KK z2qj-rqNF(WuKtP@Txe@s2w_n&G28=4;N%i^bcT(aJSm*W-vsh(E0KpoXfimFzKPWFSsbk z)>&R~amY5<&kM3ZCI@*zA5~C@eo0<12#LB@@`6i3qOMExf)$d8=#$Ixf=dIEUY-|R z)^{Xb%?mCMiMp=H3sys-uHAXT6(Qo{HF?4A5R$qlFL+G|N!@D&_yBm+T|;3FrBoL! z>)1sdyQD&sJ!94sY3{V1zpq?6!4g0)Z55EM<@q~qbDh~L%#UA%)5Zb6vR9#uK$Yk3 zIa`I(#sR;wSE1_pd(Kwjv~j?%>{Y0G{+_c{IBgv8D|;2Hp1lN!33%&1V7Y&2U&}HeN(w$?h)6m87Jajr$I7h{(a?xjnt6iK8+97IGDVRKJ3Ek_pf*nLBvT;K9dbQFzQk=(zvsiTX3(K{rD89KZrZ9`? zC{u@>HM3aF-jyGA)~#3--7rUQNr{10I^=N?od=Wi~E;-vMVRu>Q!AV~JBL`l-q>(kvnNwsCG1i*#B#P=7=g#rU-4-l?j3@51 zm?;nF3txr#@vCs!q~@>eRjB3xJ!h*>$pg9z*PZ^ZYJ?NV_*W|rsB(WQ2dHv^>cqI6 z^`!#H3wcydcr@gHyFNos*k?jQ@_ba7=Nkc1Rbk{|6{#@Y!aK(_D~#Z1G?!%;y>(8v z%#FBhp6)PQ_ajAT#1oVQyVNMEHt8t2UT>muP_I~54)S}F7Q;PBr%-afWgHz%Oeqx^ z#d1VC%2-9l0xzOU;}w~DtqF=uy;@a~(OXt-UV zlDmi~3c<(xOmGRr&APu8(6vqZ8w;gEM0K{n{*lj}xO^Ipmx`@|Df@1L zZNKI9ANln7@#Jc4F`kas|J;Q7X}$fP*T2tq!^nJ-di~7nKR&)b7lw&ZZOMAhw(L$Z zsQW3|)@0k9Vu%ZVG|@J)OAB477< z#hm?4g?Z?GxUF^V<~h5?TFlDBJo@e}Fk+dzgo#JIYAi#$>>}Idfp^>y3@!C|a#VbS z66_d~G?1gV@CUDX{TQJ|f^tT)O^uX+ccFp7lqZ6iqBe;jyam#)XKz#@h|rJ{Ls+Pm zcO$clweQ_D^HdX<#c)W@fQu)BXbk`Ro@|l)4%z(N%q-#ECmZs;F9pV?_~L^?C)vs^9QhuUJ12(0kh<$Vk}NIT4&^!SPYzXL+!bHQzRD{?EhY z9>ufQ0()P+Tb@_|RGh`(XB&!@{tZ(Hwu8MFW%IogQ)Uqyy)CJ zhA>J|XoAeD);I+#+I z)G5;GSg#%VM3u&~-g>PGte{@4$_niCNEBY-Gs2CTY?}z&wznWl%w$W@GA0_dkLIv} z+3s&I82)=`8e1&nCBf_g0Jyu+35tkJo0i}QP(A$ol{wZjCmfkeY0OfhEcd4X9`Rmp zozwNSwrzDmI1RH$Nt3u-~Lpit%0$IkF=?%9pYxie@&o8;W)n9d@#2aSb~|Y1+!?WSx<3B2@~vY6p<0 zqwK0RW@g*a3|aKK>~pqGd6}DyoV^5XvHSL5`0_;=CjIl%dzmqdLoA-Jj*q2D>6n$_ zOr6-%Fc5tNB+j>v2VEu%ig8DNTlXyMj5Yn9E$w5pJ>HSY`Xw}17 zZWWJ{Bw{0@_}q<5tl02-!nicicvM}SLU$gAwL5}>BVmi`iXAB8Tjyrrv)X0@;6D{M z&^o)tu=hdDQV?aU1Wvvkug5FdNL(-d10r|}*`hWWnYZ2KP$iC9gfpkq;Rw;mnSwV* z==N0-5@om{6IFg1#>k?}Y@+jBA3)@q?r0IYraP;Mq9y#iEIQwHEQ!u{{dg=o-}U3M z=zQ0Y$D;FHKOT$Dcl~H9I^T6q^vE^cJ<+3+J@-V9PWIdrJv!NQj}1TB+s?7c0>+U> zBfHXn#z9ju;mC2Zf)PAYFFGt1#22#+_YnB#a(RfHT}A77%5FCzZNYjR8?W~-C}@1n zJ+)KCON_#US`ha?V=ssAlv@jgdYiCR7^WM@uaXbD8e7Pk>@${~Hl9!RturyOZD%71 zpXq9kZIAU#ML8)~79Q@0a&gpCKTLQok~&Oy z|8vRkuP;;jvD3XbIykxy9m#`1K*Z3IJd&8s$w9quwrFpinePPZ)%f$nsp0(HaAK)G zAY&OmJZ$~1LQ|v?(1te=`u6^%QqDom+Szu~OI{pgS{y|t6-CI@%@2?Ut}eYsgT!Rw zPpf)b%~teux|5_OrW9%G6HbzrjuUYZRm+)qU9GRzE4XAmVMe`T&dhVwUhfOlK3hVy zUDKZVCtaETmwG=kg1PPE{kcc87sd z5eVTIL0Xm$=1y(Xz%CNa0|(jDXh%+M)5npfqDq0Q>}gCt3aS$ z4+!M-st~AG1Oi?$KtS)!85)~W)>AH2S(`w^1=dSCS&5f!|Z99CgJjDxOe2DYPgQfbTLSS$mfbe0b0Lt*9HS+zyO zMU+}y{a`}=K*p}&y;|ia8w??Q{^mJF9CMtcdGgly2q^y@42&f`1`wuf6Yhflm5CNm z0>le1IR2yyR{w%&NGB&FtPvJABsg3U7XEM2dOn57#MMH&hTqR1R1W?6dW+dhseMa(if_p8^6m}PwG zSFcuOmN`j4h&ZA|$Nb*vo5;C3+Aw0!P$#0Dby5^j3cE(P6MIJN%Z3RXT})jjz^8W&|B?Z+77)7ysd*$n zUa z!;O>W$Z+EgJAtr<$zVR(@T%;0^We~ZErcQyY%KqyyhF}V2smy1M!yB_I{a4#u+u0d zc&oHD14k2eTXJrq&K_AfOyUK@l;K>W$v40zTLMeY%s#;M;B3YgRu+k!SweQc zSkb9n%S=6(O^|Q>ywJwAB0&k$olF|`HGTCy(;i$UcjkBRqQ0kf&zdF^4);q#`(2St zl5gfasld10t7%6_J!7XMw&^m;kk5-@$vZwQz<@I$jDDXN;w4^q`zZ=HX# z_3X;t{ZrO`1<#GhRPbDVvGc%l2cZ+0T=oD&l6F@3`Kvb^z^6+6#PH^Y%6l z7JGO6oX#8W^MP>|OM8GY$ODP?GHl2MU41+)`bw~%IQ$YD zzr*jm;bWtN8nXUfZr=W_j#^?m}sIyA6G?|0feyV)K_%%_)kd(;DB z!^S-CfKk1m(S380-kUXONUsNp+X+*q`8$il-%7Kz9Gf;zk~Q?=87h=7y3Zs@>t4So zF=OF(S0z%4)i zPjzrJ>A>D&oS^tz6~Jv12+eGDx_l^>;Pca=pHhN6m0>Q z&{iXEOCa*)i$DbYKQR3=0LRasMR2_Ii~H!e)ogz5+iEsH|7|s!U--6~&12tIv-#KG zRk=!y=Wm>N9ye+AS^F#<-hb_Z^!r@EyeCUl>n@)D>Y4-TonCr} zm)_3Pmngl>OKu$La>>C=?1dFg&H-NVxpl&*T|ikB{j(j_ll^ioN{ zAEj;wf!EBy>F~omBB5%8_a*-OK59L(??C#1p1Di>n?FDV2ELgetUZ62XTZwc6F=Er zv$t8gn=}&kNHz%s_uc7-{ZVyyrw{3&Kj&k5OwG~lNA(+Z^DxiZ+!~c7__umSH>B<0 zoTgM22)#NI<8cucF?C}`3rVaAW~s85J6scfoQGXt_6h*56kvIBfHV>ZSOX z9(%z4l(q0Nvj-{ByxDIL`?F+k-IOhZR_lJD(}UV7L|5At2>hQ=DU-A`es zwcW(>EIa;Yr^era51YYX%*tAJ+O=JSlJABD8JtU$Hp_wGuTtYse~*u2->JtDFlsa7 z*ze<@-D3BO_6Q@#j)VIIqkUv}ct-okq!-^uhl(9wQ#-tg9dNkV0oG2~0Zse9)%$g) zc}8!m_}|Ce!CslhrwU^GtdP9-r|ejv1G_-zz>!tpUF>6_eQWsXHN$!}1xhR9D`>R; zhK9W5`0KhG8gisdcBgAXQTyxQ8tVtmVWoQiXS4T2lS$Fb4GkeD&8~_pw0b{>&4TDEKyh6*3g~s%;$b-QKAfO( zVMCrsk8MQk2#v@H0<8t3vY#j9MrCboZ`be$3T^nT?*ksGNT&Ck9&<(0I)S;=2=I{a zG8I6-Itk8q;X%j#L#M|6fK8jh{=<&_v|Gpi!(*}kUPNVYV}M8cWl3< z!1i18?$%9U`>h4GTRSyu|CNcgd#{m2uMhY{$-%mLdd|$NAuj2ig;{6fF`&&+p_W`dqgZH;O-qUU! z?{6K8_eUytZ`gQByf>ZF@&0Im_eX{IcWeUh?)PsuHyyGs)% zI5rknd7pQ9Pbhwmm)_;2cZAZTUV6KiBA1vza*LNDpJ>R)C02UKOOa1hx<8ceV;pR+ zJyzQI0G;bCnwE?N1)Jf)*o;jY(M)V+8VSdUIs$zl>adxTs0TJvw!<>OXv4D$np0X^ z16z>(5hVkkk=G-2#b@~G33GAFo5*LVv)G5hXh?Vm6hlJppDpBQg;y-{(%Uu6%~KZW z`+&KA48~MVZqmTuGl+5pKqg@>HSSCL$#4c1+#Jpv2w=QF8B7niaQ8EX3&WXg+H|J- zZC(!~IUIG7V6HXcV+dC(gn#s0Z+c32jb?N+XEreRW6Z$M)_F}O+lxb9g%Btya_pGf zee)kZ_2v(oYcrew4&VH=Yaon7&pQGLU5Cq6r`s!=-?ro=5E|1nLy>R(_Y|A|J(|ir zo7nvK6r11Lv2fKkh!-@skNNJGfWvMr^=a1a>!!i{U9s=8RMrr~`4(&U`A?b>lY*dV z0(`s-Mt~R+KyId++8I6{@}|V=pb#0eoAuofvtu&_+5m+Kv>{LqXhWbJw}^5;C2kd! z(EhxO;c#HM$|r1IXo(7a4{K-ZDeQB0zn+fx4-`UA&-iHP{S} z;8URmqun}=+%pzO?yBI3t(=Q2c}+kgIAsf~$fC}hCR zNXhUSO7Wu2l7SX+_%%DB{S*IERS##@z(GFz90YyM8`$rqNF>9rKTR!YwJNW8@p4|g z#2*`<;sqo`9cmb#Q+?26__Y3L_!phw^6(prxC2N@ZfFgbGG6IJp7dcu)8M#vc%Ry9 z@yFxQ_qWjA{h#E;5%1_mo@wMZ|GA4F*{Rr&cY1$EDft9gd^-*&^a4DDHg^pdd%xFF z|CJt}LYGyCkGd%_Ohi9LGsDMI*&e@aaBB>|@LRlW@CjaG1{mhA@eBOl)H`)}B6B$W zxm6Z@PAMDyYuMBvm?` zy=&B4g{qhqL%Y;i4|XwGE_mwNSTu)lOr8oRw90EY`WTSbd|CD}(`NzB9)78|>ZKV^ zG6O90dvLw?i&H!O^<$VY1&ojKJAB|7K6oUBAT!;4Y&L%O4^nNn29u1eS zv*xd+(881$>M%*>&s)=;FeI(<(p#p+`mpi3gk_OYNIS=x0Z1%=)O6A_9{O6vuBfG@~`8c5HDYJ;bYz} z7>8#V+ks<=?naU%RnHo5(NWvZJk%(TC2W(CVkE?0O*s4*q2HV45ivyLV_oj#Rn&TFz-+2Ql*{s5Z-o~JcgczJ-P+VBv zJEA!QiFUfKg_-ruE+T3JIs60mq-|;q0?;igbiiDG2|F_1H}*epJxWn?Te7IJVy(+DH?h7}?)rZWDv8iqA6hUYtFHHvz0y)SaQ zz4xR9b6c9>9^G->7%s2(7ZLcj_dda41TV9lNRhT$Jk4^2klU;Wz18%f`M1$dj{}e0 zY0oUfist5BXJGEYz_PcHG?bkMi*SH#(ilGW(@F2ga1%_BH|>A-R^NZg-qTdG_qXjq zH*fr%%5s7;8uDfbJ%NCu;P|%!L!OqFFf$~?ENhsSfNLP0n|-`zwc1-UgnLG>RY6DC zVuSHxBy-=)`V%z-H3P|K=EFikz#Vn5_usk6l&GUA=`6jkxB3aWRgiX9)9=#;uFUv@ z`HZQF7#&Rs*GQWZ8=EiJbS9J`08+@TB*H7MsysX5m8QpB!U57bo+eY)und;N#t>c~ zAji48Uf`New0^VqYqGXBWd>#swFHsXl*3s4-2k1Q218op3Uyp*_4j9hphec-`wC%#pDFdNt7Nzd_R6_w{ib-rHCc zPWCvUQJY}ty>H(5CKz;&8j)kIKlkoAZms48$E^jsn>y`1F@;MyO0t~VE9;tLGIBO3 zpJoI9$60&atNMD}W{-+XCvtpSwo8vVBhQAvR!$Dym?hx>t7Q1= zvXg^D8`)(j@&3WpCkI35vOip&t(@F=@I(D;vX$)ell?aV)aB-(Y&jFy zB`@*i+11>Ebs1H8J4-mbQ>*O!-mh4kBXu{D!G!?Bzv651pnm_|*)%gl$OP)EoLLW0 zZ3l@W#YFQ<0h6)Ma#ji?!kMX#w^!3gb;Grh{%uTEgdz}`Z4r@q)T%O4(L5SzDLWHC zW{7Z4QndtFoz5g?h@kbS`GjFIJR!$w`iy!rh5XaWpk+EfgKQU!iFd7CFt@@x{nLCV z3aFrKwH^i+`K6OG>KSXBzKFs@Qq|ns!AjENZ=aUvUn?J%jl;*sH{5LfUheB~Xk4sc zrh0*XA4>X}em9c-HWn{o@seztg5Hp#k26sI?y&Y3+)Qqn%;zt(yp$X2bbd0JTc_B_ zudwM7<*%^giwFDm7^i5>@n9cZXw;*&DM3(&d&am9 z`Y}McZC@zOo8@A{k7K*yI+5mG>%*yI(iR>EbM)egXx%Ev#kxhv^@LUacmhia>xZNj zl$c5+?Sb^;R`u}$xd4HXYx)?~2gcy(mP)|Qn3yl(MG8Q?V3=Zn(XiCh5CpIVq6I~X z*$3GUNyG+o@Zjb-eU2at@=-z{U|RVSsE>8yuTct|!?D1!-3nS)0@LG?UaO z)z*$ENNInKw&*wtVlfxilJ6h}=h>Vfi~`~ST50fnlyLz~-&dS06$?uRbv_$5)8+ok zR+U$CyxOK$7p`Yl`zuz8H2pV&C%RFBSIZ%DlCc7IvM{BcWqNhddUlzAMXVb;R%p_; zD`{Xk*@|9)oj1)bI5gNeY~L%qc=o2bZO{j{-ySd6cGKK>6flz4c)bodkk zALOC;s|uIWj|qy1wEV87w-IoD-f*?|<>|p(cAl1))DJw#IG_Umn*(5b$sSy=mmMDU z7gFe4wne(@obq$eQp{n^J>iX%$Q9o3lkr2cf@OYCO_sbm=_;fVe3Xo#`hC<)U{ysW z)=?fMJKbvfSlVy6GB%%;${43iWU?|%5%x}pGXCX_Lp#>9IjO=ZRMvzkabBhrDmqcOBwzaN!72-Ubm6mu#wCB*}?4f8`&F*=i$;l zTot;1BfG9FlAdrNTieL4FUv?9ejE{=HMpCMZ46O`svzH`{t`U!0_{@$1^l;a(R=)GG!gGo z%R!-Cx;1Wp{v}f>`9)M2Iu?opRdid zQ$>r|dr+nMubG|iyXgFU7b&r)G9#dt3oRS#?5AWM{g!2t?8({;)8hkTPZO4^TF&Mg zTRwGsw4Jbn=Cy<7vjva=cd4DegC_OOh_r#wxh2!?^lwOvDyq)*6Qc%qm|zd5PjVuL zC~VCFf{&DfnU1@ong;uI7LF6kb(WDlWZu@+ek1Dx;J)beN;c>>m~Ot4l&q8U6w<<2 za$u2PMq!dG*q|-NUJ`O^XKn5Gvo^zOkZM}u#X2qXB`D4`2hStbN`EVj)`K;A^@7EE z!BV||EDr2c`D%v<)8%@>N-g9=ZjnWJ3WU93AL8N~MT)FZqkC}!j5A8%>bLlT#87xi z?@x&&xg<&6KcPnN&ss{W)a?F;G-)a@H9IzFt&C|8T4^qe7VIg_C{ZXXx;%7K;=W~g z!S>+6s4#elQl2G%JOZpOz6wPUwFkPkJaUxAQZxg^dnxX>Sq#tJ@-8U4W+yXLoc9AadstNxPnFhI{1E?$=Bt}2%D7V+`enacodVkgkCklK{ZgQXi zKI~5K+%Vgaq2eA~Otkgn2yF&2OPe%EHEDD=^8!2Uf893dtl?G8w%wf`9c#&V{WP`Q1Ad5+2{%-dC8a+e2ULc4rC~9G>%#-60Zs+ zx3b%rLLyu0haObjqZ@uX9dN=I4U-YBfYK)O2N@7R)!zSOCh=uWA_ZVzr#`ro5AMuT z*aRcsB>|qt~`~va&&X0pUpi;|)f$(jFCZW^Lz08bR+5Bm~uUp>B6a zgAtT;782Y0{8YF5quZO??rn2W==hK|_BL)CCLE=!wtHsK>McSLMufGJe06M6H(Od_ z227eIe%+$agizb8KHeZa$Ww{m{bY=EflNzGYkZl{tEv8YB1?@3Bxg6nCb@59z=t@m zrY926+Pdux7PR}>p(h~8d;zNQb6+xGI}Vy=GQ|>GCZlGJJEXz`tg;&*zTIcv-JhW9 zSvH(4th0pwF=tZuTU9#O^$DyRf+g#drDln;#iDB}rJC4~SDx%|l~64kFQfdRHG#c* zv%@2-i$*`Znc)%gMOFGb)$kM-77s5Ks4Y>&^xno5mNY?hEJ?K_Q<Xl<7}i8u zF^$30C4TXE3qKmBwg}4Wtv1yDR;dV30$O2%>m6s)?x+PU!720T^kto0A9DHv;hKA^ z(wmu@i?Gmo8+K7dllmsBKO1{6%ob3s;S>AnPs}z_=Y$d_3Q}SFH2jnWV_p~B~@SA#SI;LaS%%?KZh~#@Uy?aq~`WER*h?^h{QoB2aERMJ0)VM!NuNB zA$9ZdgZ&-q#hSR~!2tw@4+cBX=61Ymmrg>+)SB&(6UpAj?$9KNfZ~!Zp6u&h8+n6J zGGNzs>^i~ux4?ll&=YTb=iP4+)qC6Bk}5H6agfLymyTkV;>#AmGd}|etb&ke0c9iy z9+qvR0};}Ts>(vm=pY}xKQi-%p3kSGNz3@D6f(4~BnaZb7Okun7E0~VdCg#s)nMEY z>o^Qum;)(gi$!uhKpDg0-6LF2lpmIqPK&&os+{C-_(SE7CU9muEWx;Evk3eX5@ys) zp}~IW^DxIUkIQSAsKr~~^cHa(}MTNMT08oMPeIIrAmmI{~nFptBzy`YU#{t%-UK6eDm}OzH zCoYRIC-VIL2_7U8`UpACcB~;ennaDC^ldse&2y_Iq*goa=C2cj;lI65KDu9S4u7)K z!}wZ%uN{1c1(YS22IcqFQpmmC`3Py~1Hu4uy%Lo(fcm+$2?IdIBG3$;Exb--AZ)SM zSxEli|FbQPLx@{8?|0?sZ|;zdmBqqZp6EB zIu?OKSY)h8Q~M<8eGx5Pqz#c?9obhL^gEpQFt$`5CP>Kj1Qnlv?6)Gz1Wk3jf1MQR zu5zn_b>~riuJ)E1x+#(^t*9xI!7P9VyGgY-&DCC{d1-acVME#awUq?U7J4O03j_Gd zwt_QR9v7=T{VD(ErCL*Z5Sw^Z5jMX*fJ?wCbfb>IWr{zoG_-77URbtqw(9% zU9di_7+j;=VCc!9pLSL{N%yS4M$$v_4vkbQVQ$_ANs3KrQ1C1&cSf5M6}{WN7H?bJ z{md>Q=>(hfjrvh*9i2b$tKbFPRGCX(gXsW`2Zd zo>3zh_Qy7oXUWly!1fts?-??3gqUO91^%!lU}kS4KxRy>D@JNvF{ak;ky^XQ)OyWG zt=AN_qIEb@S%)Lzs@zhka?7|Xw^yp%KCa5aN|l4-svN3RIW(@y;qLYVjN+{z$Xa^1 z+x;Jt6vG!(G)zrTk|+})McU79Wt6M)Y_`c|U@0;yzkuFJ_<6(e!+t|elT@Dgo9BmZ_BbnZp zNh|T8Z#E!PzqpaFsc!yadGz1AcgYl1%tasHMoT9?aeMbQMkbs{KoORlO{jvDgd-=d z!=t{!voxWu3GM23pQsXE;(zo?rZRbP$>^NxM`|crGnp^FB3-#203!BXk?y(P1;8uP z{nrE8rid)QohB{`$gAo5)M!k&-xmls)~uXz^9cma*!t{38{s~p)us;A;`_SYN1JK$ z-fnTelIw4GAgVLcJNvUX4O*mW3XbZZ+vLQp{8odh4L#pJn9(yHP1EM9cNEP8m0$xY zmIBqd3+w7#QlZ!2?EI{vg7CBd!QqL6aweSH7<76+*unFi(mgm-;NxI6;>X|gAP$04 zdS_qk!`{^CeYk@rX*GK&MLf|cr@dRV`HjKW4a@{wT|kTU&9EL$2J>7gb{kdZsf0(< z2IHiXjbz^jw(19YPdp)m=4-50{vpcH3@`5B#SE|bW;XM>cM2%8VTr|Lu-IOckZDh4_*3kQ9}s$ff^BQv{Q)rCOxDM_ZJz<*SQj(o$uy5D?tZH2%2dW>8zXuH z^iJoqerVQXtmPS^-69;$5HVFOMrU#($F-bB+M%EvQ^VE45K+rx;NUG!;w1NHr2+R-2tmSRq+1H_0rve#2;!2$ zwt;uMA8`Oz>a3=RLpA+L^QvO(hK*DXo#uiDQ#t$;8yH<1Km05K%g2GQ@o{_J#z(=X{*6GG6)_0QY6PD<#WG@Eb@k7d5pzEa+r+N$0^uQA z8#KBPwUg=KIlz2uD}GxbBdC}9iT#vzo3M~6Tgr;uZoBMB);TgJh!1km6iWgRmvNq= zK7Xx%QbBUTJ*Gw00GW9>dDrnWM{wd|vis;!XCm5twmbL>rTE7?GQAu28&i}mYy2kg za$&u5)d>IDB3v%;%;m~w@`2{?A*4ub9;r(<;pR*b35)sgBluqRPIiXBaG@%17SRM;X6Cu$qbh+t)-0i>|epr}A8_A;n#wEW|8qfPj@w$Zv@O_QmY zEYrH>2}?i$af}>W4h{%j0!0$7;6X+F@O!vW-z`d!oU{YXe_)0_1y4wxPcyOzT3d*- zPCEmYZi6CknS=2JtDQ$5fVy((LB|^Y&=p#_4>yOuFf-1M2^pxdtmi9Vy!_yOB!>5q z0B;;D@(rnNb&lZuk>>D6UUBfgJ%+bkD*=Ar@uI-{7n{SUUUBfgD~9)70l)8gQQ-Yl zbNCO=F}(lD_Vj%8YB=zT^w?l7NEUOFHNS~Vx?CH+&aY+N_?rEpV;2fKO21)JBj~qB zhN|bDyZ7Gy1^RiezsrA?y>KT?yISDodF7_qKF#dM$u+QX`Bm?2+-*)DCKXTsWk>8J zbqOrc7@8eGD)#%wQD$jEydNX|^gHGnLry$7bR^*0eTMre+oJT{p~Zc3TltV{gLVyw zXdsAQVzihCv`DOXr#~}% z_9uxo9qNdV@m0pH2ycx$w5utt4QAx>&p>DU)9%(q-(dpNvKQDCZo(uzqjUvanOO!M zq5JP*65O$b^AIlJVOk1>>Xy?gqt_Iegbe|Zb@^<|O$bE%*tEESPytSYhNh)U8A8%vrfRl0fp??x4KBaJG?tK9Wd@0a0h8!5#a`hIlDo+veZS%9gu!zj4Gb*&Y zJlNE?04n2;331d?G`uvM?(3Xb$E=o;=8MUI*|anSq3hF$|2`6aEfjicK=TOW77Sek z4+x>g|IaXSTGArG!25vU=N3-jat|6{A8Pb3M>;C0PsP8CNXN*(jMHq(>7zJ4nS283mqCQ`JSKe6 z`;^|DncEr)sNsouz-1Gxi*C z9N9s|JW0gILx-HNfX-;(awp)&V))DEd*^+<2>397P*A~8&uBo5dKF(5 zP*0BaBIi^ehkC-D0JgEH2OS0&3ab^85<|+k9RG6k@)*)$=MqE8WY!(K_(oH-*jr6e z*hSJE!=JFVc*p*;*7eR~NVf{Nwnlh^htI-@k+^O&ex*G_Koq<=iyp72@-L3kYo47T%5@OAiE{A?lJxGSl$AAWwT=dXg-FA^~b|`3y`PHwy=@6@In2d%r5+jqi(u|`|=h}=#LY5 z3lD6vh1PoSL(^p21F+p2EUZJo#kOLr#NvR;vKVVk;09q$V!M-ldJ#3z74qP$S$D1= z=S?GatMJ!Y@gx;St_O6lvifB=7BpI`r?PrI`A*f#o*L7K%4W^IAsXuaNq1Wq{KJnV z^7$Y~k@?85b@cZDHliG(u<|uTIG8a)v}sF1haN@HBad-(EAjJYa9jqCWjWIxB74{o%?Xm_ot{+KkD!OMl-IWW^~?c zozmg%^s$8FP+j5^HS`SL2V{acHl zqsEHW6`2jLJZdg$_#r{f7Wn**ud4gv5qL=_S_O2wc-=tE`l9G6otJJ=7UM-(E*2%L zUyXUHMNzO)v?zF5o@P}2F>x>Ye zpKF)I=jYmInfTNx-5*Sso&5pXbk8cKix3$Zo}GEP=IPb@{B!}fKv90pVDe;n#`j`T z6r;HRUK(q~UEuj`;aaHjZ4n-D3s}t$X>a59y2~AYX@y_Kr|<)=FWXlm2E`pyXLs4^ zoju+vafIA?XScHv99cV7_tJ{}@#M;#^Pp&>Ek^(*;dhllX7MB5?nMJaIY-PxHN?E3 zflpr@4quPp@b$9|hYH5*ZQNPMh&#L88TOD|puf}vIk3Kc_#?^QM&nq)+cC$%<0P-) zdDZP+MRjBOFnrkBZa5eJtm>aV`e&d1Av-cYQN2G$MA(_vm)4JVjllsID0@}l;@7BG zJbZ# z;4XX}H?m~Il#yp?3>93@jG>j6chyVx2cQl3Od@MqpG+5>gaY+aHkNm8z1=xzht7$3 zQ0J*SXF#&HQNUm|l8uvnMR?ku-Y-Qwccma{Oh{~mGH4LX5wKLC*S-Htwnx4EpX{ZJ zB@9loriO~VST+NPvqJUmgSbt@;qi7)H)kF4h{LvxIlR5o-x86bo^B&Efyv!K+W1o9 z{%jkAR90Q zcy&i;kx_aV^clK%kS;)%wk;icg!$bSELfi&z_ExlxR_9Le z#{#DH#ul=r=Q~8jGb&+t)|b%Hccsa_qaL@y8uRd>zr&I?aC4^{#|=Hul8@x1p6*m1 z{N4^yp6or+9^NOf!HqL+{Z2#j&^lXzl{i)F5phIZ_$sWit~IG_wnF@HF%F;QIKf12 ztW>#iT$NiZRc;+uC1zs^66%Ivgs3A2o0hshh~9r`b}y@A6+`0!4DC4ny3_u8@So+) z=Hxk0H3g?0>nbe76&Xljc(Z8qu0lb%4fncPxZ7ZE)RQ;$@+qhSq19 zd{<|9#fy3q-u137{8<39{es}k<$j_R75a2@&8u0pvT{R0F`%QOAL0Yr3q~keAa=DC z7$wnm*sxt)aD>0cg<8wt3q%`#LqVO5{%s`RlGFL@iWAklWk1*8tffxifdimRaz`)i@TAL+SGm0Tg@1qqK(@RCXe?aqCAb_M?U|kMT;Y#Pz)_oHy}k z#i&!Lc~UqB7Ix5#XM^lC$(c2B-u$sG?!4JMHo(i#)`WmUt;tl;fvw3@u_g*xW=%NU z4Nkrs1afYq&f;86&|q`fl}Oui>k{z-I{lxr&@%}9a1kREqgO@{eid`p(owZ+S$2pf zqe$NZXGPLQ(r{U@^I7U>H;bTy$nhn)hw7OcdHf`A0Ic4_+(m3QTZS5^8n-05& z@i6oy^L%CWjW7a_JcssXGVQQ7=ER>7KPP1X` zpcxPjE~)$>P{$*uS#m`cBiDz;$o<>g)XJJsS0gusM9`6G5)>KTP#?#v=cb9ip;_h>DF4y3- zVD5UOp!JT{gg?wx1E6sKu#P1Ax-XEEE5W3J7XelF_Yqbtn8-az%z1^p4Ty$X7^oA- z+m$B-mG@zf&%b65R9r65?b6)a0@H(9rh|aHymCK*Z{*l(cQS#!r2SImJ)ExVP+xgT zYy)V_UZk;7Y6fEs3C9JZdo?*SmRWQ+-bdjuRIX-W?g#rR6Ps!tQeAGKoiP8yXEJ|) zx2gFXunuo({)c`32S?|Bc=G(YfQ^}s%%4S~+!Bv9SRJm$X#fIS-}I3F*W^DLKy;d- zI1;!Cn*-Pti~ZI)#S@nAP=aVd9&Ir?%yJI^2qMojxh7acmg7O8XfP$k=WCDg=c4vD zxT0eIVYA`3{{U&WSW40GFk-FWn4CHFO*8zzXNEt&IQ&v0c7Q@hHT zKLp@;Z>O(LB^^bD>^nB#V8(%_e@!2RFoVuJh0?f+>5juskmNoLtf@45+%LEe&j0f^ zUobP|0R7A=WP`+cl4HezA&fSACp9M2@}Bgy@D>RReB~RECnr(J7$W4wJKU?vcjhL8 z4b-mZk{C{QHurd?KHDjyIVC$*pD?uY%bU4nD)2cpsKtE5K3L-@ny&f4_AxkW-q0&u z_{G#eeSWbfO%qzv;fl{)?X3FDA+yEIb&U=#uPK2zmj0%}jHpRsOq1Lp$oXu|hp?C{ zgs6D4NjR(u>*gkhaV3asP_(8MgQNcTo_)G?U+08ba}u8Wt_)<9Av%aWyeG-cBJ-`l`5v`Wv07$#qHtQALR=kj&D z8YW+ZvmP+l=ziBE+wMorvO34=fx->JivKrC`_YiTZ&DbNFjDJ4w>!>Uy(DvW%^)8;LvZiw$W&riBR2n- z?w3cp=cIRJDi@B_x^PUbqa(GBj;Zy%BelM_9JgVFmY_D#IQ2!sK zpc|P@E!)nhcff7+D&JKb!`{Ys)vJ8>NR{udS9#}1m3P*wylbS&yXsZmJyPY}l?is@ z`QkoTeOxSHUf7a%v&AX^B`3~U9MgGF)YV%0o^g%6r#!FTz;z(@gA0O*&dOhx?`cj# z;BTB9azw6U5j0vJ&{y@a-`?!^2TcFGS?hMcKO9HH$ikUsONXuq5;{T=&9g?E)`Bcc zcGyfg2k*G?l39y0MU_s+-NL%;Y+MJaA6-6@VNTZUwBl464i^A$$ z7or>xdrS|RF@;Ri;{F`Kgh&g3WaBPosTA@G5O--)WJLH#;X$`E=5I_&(6Q=|3$zYq zQlM+_Sq_ad28$O(dhbkiR#>f|-b;xnpyAe8g9gIW3bHGeY1gLC9?GGyVjp1+p-9kR z>jI6i+_RQ)nh$0E#4K*6FfB8~Q{w4a$!|-;Z|oetR=C>~k`aMrKHU@^ODEh%ppl#`T|9{olix%kxzOHNT$F_CMy`AJGB{_(Fc^MkR)BwKfo8Zb##cp z3RR=PNXs7CC4mGZ>H{c^S64FU#gGI-983BVyDz-Zml$?{{dOMZ?-BSq+FYN4Yf zupOFy!yWT>V(iGbs1xIS!-dqOUBh5ut-)gpDwGG+&cP#35GLtA^ImA@7lKk>mk;nd zFRy-+9%>$1h33x%(MIW^+=XiM1II!?lytiG}9 z&siheN)kPO=GT}_Bb!qqvqsi~C&~udcoR2j{moxK_uMC*1K+9eChq>dkN=+HaZOvI zrfzk+uZPSBrDtBaofuy}DvDr#9{L{r39^%9&Pwgi!{1{GBD%kuq^>T_Y zLYLP^hL-%X2KbVrU~T7n?zR@&--ANbwg+Nz^=A60znMD9n<+gE6QYQuk*6nlpU7!V z;6AyLr4J5T?^3mQ=^GiDh?X5GH{I7h{?LPi_PeMzZS`4zyfn!=?`Eo$_qVVh-S3Pv zDKQ^034xLs*tFgycxZlB^zQJ)Dlqf>9V^7l-|dNmv`M-b)mo)T_GRyPrpa8EwYvW_ zF@+XXm*SGA$`m<3^@o-l(cL4oG=gBX5+qhDv>^=E3)05GfS|nWb7yF>!-;MJHfLv8 zAx?kv(*0)>hcjivaZ*(b$ASdIa2QFe_gM|eDwRXZD``kFq#z0A$woFaq`_DKf&guL z?GC<1uL?20#Gn2fGA728cuFmW6qgD_+ug6Cxl=|FY;-q`z=Qu{)&aS(XPJCza;%wynh5#27KBpqD4EciE!JOiHQ*^YIw+AcNY7T6b_12*AWna= z(fDD1c?0T&$u#>3-~{fpNz{+EiD*upmO##$xZJ=bObD^bAr#~zK+Fww*z9T$ZW*fD zUy!t5YXl+Gl+8tB7qtuavs5?RXsm8H6u=dAkK$y229oLysLEx5t~DilpNoj}&7cK( zzTh9Tb>eo&c^b;20d5o^h}857MeZjVEe1D^&;yW7lu)Z_$+$$x3_co~@ZIL*V9-Xl zel<8v%$CH*U?8*6*x;A}@Uy|GJrkOI6cCsI0$WJUQ5IapZ#whVwMYgB%GH&mCWnKq zNx3?7Wsu{oFp)htahusyUuZ)#Cu~OMr@L?SZT7Qml6l!A`?&|qz*3xSQGQq;VPu8e z^~ykkaG;ZxEp}~SXDX*TUA&Eq=1e)wp#jkx zt}bDPGAl&y%4v=iL9NJmnln|WIktEbS?nWd38sc)5EaRRB6u7j>l%nb8@DCo8u3J> zX|)M!2sY&`dHZ0R+Zpr)9B+D;iNkXG_=_wwLYJxjG;p!22k@?= zo428kiyY7JsgvqyD<4c#pvE*Y?cat?K8zaj$&h=B2=DzcH$RF!sAkC-pwG0<2vCzG zSL!W}El^Kx*_3F>uqbkm9EOzmQZZ_05Zo^%AduuyaG}^4grse~f%@f(g|~n&R^p3A zT@B67PM}~a1RB0rJfCv0lKNt)YqoI454%%tQP3>TcOnLnWx9-kb?pAt7LZjkAhQu| zF^h$h2uK@~wEH5^U<|bO0ybxK!q0MtM&6+yqM*XHVS^Mjv}dq@PG}*Js%;MTgpdn~ z!bB$I0W92(1B0+CP?i*8%Gxq$QAbF8-fn2pxeB@!4f=PY$kGjsw=e=$-RQa(vAiO4 z;;UY4Rq4bT0*g$GyZWwc3vszp{BHeDxiGBZB=il%ELoz425YfvUvfTJp|1s>tI$^_ zrB=q!*PNvpGiNroW`NmQnh5~Lmjv8* z+c94>W)K!Fa4a5ScG6+YXN9pbEUi$0Zs6lVieUPU;GFpUyJb*@CQNzKQr20rMrpiQ z(37wMUTCEq$!*sePTF6rqVZM!afV#1A{Tq)tH@TcRTRXa9KyRg&>i>qrnbDklm=-5 zi@S@o0B^e+z0HB9i51K5sLCn|3xqxVj#)Q6>^^vO;D#ALHItu2g4OTsvWF#O1?1y2$Lq{I-$Bmj{wbA}`#bf~Ts zbpC~`N2)5VnLbys-5#g6urg+1?U{}$HeiB^)K<#R1+(2A@O=(<72;j_DHfOl&xC|>S zmmP#Py6-4bw7jr}gi}8vGZ&6JHY3BuS>uTq$=gNx!2zJkPkCllwa30Nd%lEd^L8Rl z4}QBy$9gM!zHQwkv@1`XKw8+(dg{`q2oiu7*7IXj3L(h|OsAHIM$od2i*V^W5rPtInm50v(yVYsGI7w zv?MXuLS(#V$+4K$fS^UNOQr4r9#A|E7}`u{8F$)E9AZM4F_0NT!$2mT9y}1h-Gu4T zq``nm=J((G+>iIFB$Z?bl3w_u-o59ZkA3#pXP>?I*=L^ym5+fh>M=(hwI57R^>?(c zsqXh}jW+~ZIaOO}je}E+n1vXUC=QXkHJR-Y`TlK>7PHPB(S7KDc&B~W9nt;d00&TW z@P#)FQ&h3`O@8Wsypge1vFh@QvfI;9eb+o zv()h4RM0fkVN_&kN|n^l_xUQitF7^z#1IZjbQtU1t?g>JeQ8shW(Ey`L;I`_g=w1T zKIoqTyXIHR8g9m;1r`Uj)qeuEuc+`MMAZmW0WnZ%*5X^}n?7dAh9r*65(p@#9LJ~4 z9vH#!;x!rG=~!@|iHogV=+B@NkA~&>Y$&#J&%}K7y43;kwnC=jlXc3{7!&K#?a3)P z9`_skY=cdK(XFY_69}HV^5!vhDX}hvHuSS@_!|YwcI*cDYb+ZM43K0q+*~dEKnbV0 z&%`<@0SglM5S{e2de@DQqrKJGCyS|Wd##9YUrB@q9DTyUY9j0fB229gA95pUvQDo} zj1UBKlidiqtbKook=YBCFwi8hg$FR)%0f897BXdD8WV5=52*zr#Vukkt zGlOm!!M|ma4e%f*3s2g!Gb9wVo;U~02%8~HQp1B~@S#DPrnrU%9N>&EWCrXR3GxR1 z5Snd-*lRN?+_{eXi&v54$X@ZKsg|h9QAM>xZV#+;>2g%ty&ToDXkLzRQCq;M2-is1 z2p3Eggew~JVY9<3+<^eDYy>hpttGND!X@UQ=r-HHIEZAqe3q7x?-)VmM`Ffcf;^*w zJk5wGk-_WQmBYNjQ)$vR^{9W`^&+J4GP|qv^3oW0rv@W_E6I@WGUsxQEmNYHWub7G z1$K+DC>Xdn0Ro;GZ%OljiKw0{s)BjvKn>EC{)O~PEeGU5HL*rTEA*ZOi_NSj*>HSG z*KDa%OgUSuyUt!UTh{jTS!=ea<}1t=YrI?@K!-T501C^4-iBt&a2JL<;IpOP2kYU$ z2m}p0j|!fn*`kT)J@?s?)VWPDTOQWc@>iM;SNeX5>7uCMqR&_>&2foXCS{zw+*Fyk zds5DcLsABY-D-xEoOW2!Fpg(r6PUXVsx$W(7+_uj8Db@(AeZBYnEO(SULrE_l~F&Z zv1YQ;e-)($k+D|KrE*1G(uzvkmzE>~-?S}HTwx2baPn=F3AKz4SM4*F2oOl!oWrph zBiz{dxCp9Gl@M&pjHm`CCq#8$`5}j=V(9`H8Sm3V$$aRUWs$i~V`d6Pwr~)&jM)ej zit5^qXQvH(mNAA+%b0c`MfhQ2!tAKTma!qZ$L5BN4mG*0N|W5C`NA^R?LO9w$E7@c zKpK^3;V2gf{xr?$q<7n&c7Y^+dOl)J_s7rh*zm^}d2IUQIS-plaWvOc{G9!!+mi?Q zeJRp0NT5B#<%X{Paz}ys@dxJMsIkFzhn(OB0+m0ma=>*&!M;Zf_ZD$xysi3QZIvcAH_aHvArsGK$>8{cqrz`_SWp4Hg64& zq5OG@;Z>wX1XHq#X_&k%6hgF30BGlPeBv(g?uu^wX}Mg$>f;rn$w0=WOxG}b~JC?pK)^}&Fie079IUc=G2R{R65LFX*!{wpxE|orn65;B}b3tr?`is zsvwJB3s943Om3`xUW2SUliD&272!KbGXz8MW`r@T-@-P$**djN0MLrmfd1!Ln;-=QV@i7$(Q# zaTN|)+zoMp8FCv{9(1UJ1*cFM5=OsJ(p_-C<;$343?qebOd%D2WdS#@ z7^7#^po7Hx*6G>Uxh_ModBeHaAavFwDdT>u0LXZtQr*;uMJ@ncxu>JT-JfV5vFJHt zpa~W{X-#~pOp7Hf|6ctx%R}JAl;J!?O>I+xtvM{$WgnPDV3aA1d+;s@f$_)lmvG2> z;(UO6c{H|1J9R{uG>#hH5#6}Dt$m|yVf?{@k3_LnTRRBy>TT^TTcv$#)!Lu;uZud! zWiaj0DXvvLJT%%W%DYKhOKY`CZJ||a3w_;Nwz_W@LW#AtU#+fc>-cC}Xg}r`baJ#U z>j4yGsJ$(rS^41z&$lJCj4U2rXk1P-{)P4hoxcEr0Q8pwf^i6*t0$>Z5*vO08C@6Y z(vly;=4O&IBD*{+XXHIxnS6#ic1+|IfbWl4p4=2FJ@jP(mVe$ zksiBi88ybOuG(3&38m8{A&J&V)g*HnN4ymqip_!G7CG8S>xEe%BvjdySHHqO0mN5K z>|YWWHxWVG-5-eKmK~R8x;aXCaHLhXLE}#{ZO~JlUSeor=Bz-J z5O=h(W;tB@ddo2SfU9sWoU{PdNRa^cd-M4RX7XQ;@-KaZc4iE)=>XXO-i&+Zhozp& zV2bIV=8TofSv7)hvSKoFvqDQ;u$+c+86TVjQhe*mI5JvsP$@9%YYU|MW_+eC9k4msMB3Z9>MD!RF=;)f_Dq?Dt<>S&+^dm)SMTOtjo`hy^wmiGt4m*vs}u;768Uy<}K z=h!`ukqGArXI(YlFnsxSn97I+(?qnCQ+8?NJ>s|Gr5lncmMP4*e8%Z2ZZ}JL>Y_ zfa&EZ8xt^aY7@_Rnv+r|an0i{^QPXVib}lJA=24{uzj z#@R`1E1ajz}bsK%Pz%8GD?E>**+*#0G2zW%*8#pYoo; zoD2hy!m^-N+*BY%wbC_v0g9q2tFoxaJxv)8N=W}oj`cr_uuh{&L2c76E-8&*qGr6B zQ5+{WVhHpr)!2mLz<#r0gU7p%o~=uGt}=AXK7asErlc&Pv9?d6V;DRN+-0g6PL z%g=m>oKY4b3OxO|KVm7+bKc~HSpWAhZ6X@ya>wj{u8~D@&|{j)c)^@654IscV^4L@ zKCQYvEaRR0na9DPihJFIsH+AoDOHnyHkY5B%3q(KyCpaR$*SpM=SyzAbM}gV8lf!| zp2A}0#Qo>YJ#r`^izI~RWb6NwzIM5VOwo3|gv=ia#f&*7{ZDpOu^rHBQpTISxD!w* z$S|J$Q0!^Xhct4V8JBMl^Q~()Zlu_sqV7jxefxcIV|HO&thA&ENA5ROpz1}h3Lcvi zf;8eNxWFYGy?*4y6NzwNZoE;pdSUW#m4X@GNKiA{p2X<=XFZ?6Dl$0brHsHYtzCckpQp5$q2H3)#~ovMy+=0SAQ1uXOI5u)t`O(vtNG>=sJ;4 zk0)(AG@Xv^LcPcEwo6}AZc!trZXlwR?pmV;UAaMRlGfNTkl4LJ!^%@9+i)8a9O}mg z?mOd{v`o#~=V>o{92Rbf$R>!yva;egNZ{0%Htvd|r{BDsjxBRP1lutF^$=xQs?rGp zwkY?Ky^}kDEXOO{=xpzzI+^(!`c6)CwH0pNAg8dvqOY9x zen`^8FvbH!0pUaF4sh{F*hX6wZq+;u=uxVl#*V8xxaxWZ7{*tYv*fO=|MJ&&Aq9~L z{<+7S>o+b^!9mQjIu-RKoNKsVvc; zSxD8L#-O)l7nG<5!}H3rEELkKEQ%0HZIpe4;He>g&rO< zc>hUTek5yLpf8QPp8TcPyzxC;5ly9buZ{pfVkC#U0fps$941tc2HZGDK{ZEhhPHcC z1)zwcd%vqT7$Ic_(I@}Xn-JNQa3`_|AV1z(W=|A!a$mdfrQ-cY(!-|8{SwXrSMX-GtXC7CiD=c>n%UZ+1x09;s3RvbcpCcmN0+V7( z2Lr{{(+&kv4Jc5yB_mib3RaYKgrps*P;B}Skg6qDfZ`q!1eub=)w~UR|RwQM!XA8Ds9oznBnvg zN_U2;msM>T%U$a(mH{2of+hY84;Ft874V}AZ1l=rv3`y)3z1JnUm6kJDFlBvT&w#% zyX0wHzufS{=tI2?y&Vxx;`b0k%n!A#oX@(N!BnV<4=b5Fnq&haaY7SEo#T2cy(9WU zVS2JVe|C@XPPSMjjVF@E1?9kiT~g0zQ>+nyl#Cymer4spmvjJ zTa*B-6E-f;#Cb-_l9w{${Te4Y?RmyXQ=8#0ZtQ~na$I-id{@k@AXn?S^SBH`+?%$_ z#YEE;egKqE8rxtOoU+*h5$9sC;YA;6opb4gA@j*&+A?zi=|pWDfC7z~I$o^`5cc$& z>7iB~h;)yMvZ(jn@rc~G$lhN&z%fNVGAH%<4T7Q!sh8ilmZtgr#eKc+EDt-p;<|#} zFVIB;+J*kJZ*W2R6S42Cazw4c?arJFN*0-nGR9_Od9=?Q13;wks0eVN zy8jVQhYKm>35MICdFkK|8EmgGq81Fv*tBK(W1pxxT7wi4_6oIKir%&f5ga=y$E%<@ zLr2>jcx8k@op+O@f?Bcn+gfdWe|walj`LsGoWF_KSd7)5wR}==02m;!y$fo<|8s>} zwkVI*37q$XY5@`VUl!4J-x1}{Syj(RUe{lnT>$y|YU=tPtLvL&xD;5w73z8fRaZ*E z-ZaS{XDe+FzfasDlv(nA+J76SE-UkI)+nR1BP#QJRfY@9tg3@nMf^^$X^EN^qkNYd ze<4)#L7XVn_i=?UZOjcoCkA5zh%-0b_>)qSg{RD#Cf{ni zA!FLxi5haTQUm4_VD?RKF_j@zUGwi4TP+`#aQIClY~d?~Y8t}eH9#1xxlR+Z-~|NQ?@lh;v4e$I zhH-dP=W3=(SSX)_U;Q!RpdXqpHFYQOEB!T!kZ*;pa~6h#E{r&&AnGg(-~vd9gY6J6 z4|CaTA@nFZ1QBm9pBC)tTNPY^T6Ss{=%JTw)=x9*YwKYHD<#Ap_?3*H?JQ;|;!1oF z+Yx|DUe<=Y^sgEp^rhJOAlio-4}36jK9~&g!QC+C8Xu%j8**)qtK>-od$XCS=9342 zZ}Ym~dq9OxtpmPO-U>*9jjRRTsbT1Z?{u)W7|IkZ?#z0a{lm@&pvzRu{5Y1erP^Ri zHD?Jsi^W41+9eQ+h4PN!E=ds$i`af|fuEnfa);0C8e%v+4c z#j3DBxmW{R!lOI4wszX872ktguBI8PJPwd(hdm6~(R6FA8Vfon7FIxyh%*GenB^tm zH$%d`^gW=!zyM?;KY^^J8s-t)9{_4+__*6Dby#HSC{Qtz&a8ook?MOk(gj9Fs<)3t z^@g$Obj$K!TBB_j|D@A4ONdnnSgNVQTQl7XQ%$EYtPHj~3OUjl(82b;*rjlRhX5HF zy9j+hDthOrq%Q?35mbgy*~6N3)u==rfT}B060qM1K!Cq(GTt`IZ%b4TQI%exs_D^@ zDyvVY>Bu;rYYYitXj${gKFM!lK4UEE!lV{8gs>`h?Cr8i2!P8mA4#A! z<^$hbJVuPtDE~Cx^{ArU0Xf(t$!-@Hm$biQ&|wOY_-;uio&2Hved(qdX%?+M_kI&J zp(*Ccuk9duK-6?_tFsG1gWS$o8NXnww40`B@2LxeTip(M`p&_vs169DvU1_zHXtgk z@Rzebqg2jI%gx8`p@}Hpz@k5n9v{5&56RB$-cRG!r+|;j`{{PsS5;{up%n2-?2aE} z#&&>;uZK#Z)T7h(q_`#N4QaZ^8|qA`g6TnR++zE#+(4|6f`evAN6($XVz4nC@1Jev@AD{RRBb{f^*N(^Fw~GvU808cyehV8 zzQ372NHrKbM$Z4Ke;Rb09bFm`0hn+ID>LG>$hcdrX~l$R+Oj<8R+TYLQ78!-1P$5E z=b2PaqA`gH_(X zhn@Z;CoswcJraFoVwK{T6h(~FAKaU6!_>i_Dg8l#ggpr3>GjQr@)(N_QVN_}mg;-& z@AiLyo{Zx?0L4R)I^fPBgt$kPoY5|Qt-TjhV(nief19DOHjxdCrJVOH*?4?G?$S`J zqfHRc7)$^hOGB-g0sKSE01WY|WRBG#-D_e7Hq!(cQN>r&hrVhCvL`W2eCm>DMwTDK zZ__!^fpcwyb?8AWXP~D*qU6JXqqfjR$imiN;im}$GxRj=bW3217-cRY7!I!;?6=VP zI@XTBD=)Wp$YN4oJCF~Kp=vpn*5XGry=1_{&X)uTR?U=%F~zV}kp{rjFx*F!{rEcI zKCX;QmtFIYkHAfV1Byl=A)YyHUe4UT4$_ek_=yHL!=YFQ7~cUli$R=Dv-saU*xFbG zP%F-OVR84s;5?gbBv&7v*@9xS%C%FjK8i1d2FtV95sp4AcyhR*7I*_mffLR^*`>43 zZQ5>ITwF=Fo+r6bzq6Z{Nq+8|SF-G`fA-V2eai|f$5zY9Hq%yKW|q&Vw<*u!x2$A? z<>hQHos(^MtY{?V#iB2Z_r9)ZWQ!W<7I~(NMz)4V(sWDF$QD+sltx}xG_r+8ZcT5M zcr~BSrGs>^oMy|}YnC$}S6KB}(U#M#K(bs2_uI&orR2CZWP-y*j(OUaBGaCpv0xA_aaW-Mn4;)nNfMz0!!VVbD^Bu5pZHI^SF%|q-?ns{_A*N}rMw`9x)fJ(5_|=Uv}uLu zzpi+jE844=%5>4*bj4J>y&GxohV%w8m79ddGw|vSdN>!SH)&$ern5H7XPNL0*^TLq z#%69zZz#)tgO|n=RDx-e#hbs`Ki!zkFZ>o0uIq$%YZ=rB~QJ{oNXTE-#fCIihF zmzE-s#-sL0=y(lO>}veE*dkAD3G!l1U*Q@HW)1p^ z&CKg*9$%M&jtlOPCQmH~o#n3o<5QpdX3d&uDRSv;>FZd&<`Cywg*eYy=eMS}*2HjWe-OOm& z&7LuIM6HK2B)aX8vH83qn<(+P5*Ix2IAo(UOc}>_HZ#f$F4pFEOYs$k}6y#rvZrPKQ5yi(|LX>kPy$|O9!Ytn9=t;|oVWICP07X#Bt zI^g#_=IaMj4*I8C>%5&?Y5@BHSZ#?2d?_+KGbPAXIo1 z7aZ!BnJq=Ebsj2pXFw!C*+U^~%tf-QHbna=4!tXB3o?n^H4syQ=1FXM#VSxX)j-fE z$uHL^%TEQ$NFD@HmxSeIj4#LE^q~IRgmXb7NDJbyrefC83T-km@maKwiLPo+GR_2f z4rr8tEJ&U#geCvuj7TL9%W=1meGR?xe};!6N(c1v8@LAO;%Lmcp-Ya>*x49ETb&Iq zGtCISL7XN(ZdP5(&nPP+z#-Ioi|NGQ3VJ`>Op=GjhG;TDCvv9w7GRFP)xwP98mwM* zg<)L=nDsDiiO6tjjCiEulPO=hKf)z^IiAZ;Ib6I2tqzoretT6K7gZFhk#P(Eu+R*P zp?{@PZw5=9{$0s7u4J2`YQ5N6lSW+pxsvsH!Ss=BSjn!F4;qn1<-NLTC7Y54GM4gT zY-Jf8feX+WIS09S4>M*GZB{+$q*UBaDW0ShV%y&G<6|GCU5G6D=$@B<>QDalJ^x_; zo!_nrdzr4W*T1T33Qe(5b#Gcpxi@GfqX)oqo{QjG`VjjETpq)RHBh#y-Zc)?e6=U& z1mHmmc#+wG(CyK~aX9UHhaP{W;eI)6W1fjI!^(&1v>rb1?lk#nPUrG2&1zkaIoc3C z87jI@zic^K`BUpIjup}1ILz-0MRBz4b%spBcxuJ>^Q#RnYaKJ(I*YTBXT=x!W!ub3 z?^}22ouTv&es_encdxs2k5Y1x?C{$OrKi?aT24(G>i+xfcqSfZPvfz1m=r_^eB10M zlLeLr4e&g_4AWe3ze$`wal1vX$j|ai2|2>;Ok?@W?9QM4P^|y8uOGoUEQ8KBEfP?j zi|iUj7=+MsOhBO;d3ibh*5}hDm}Z3m14fa>y!71qFz{Go#3M}gfB><-D|>`-luE)f z%9?o>X_-+`{_E?~%74~P`VVy;B#}k=y$J9}2MA}V75vAF6LWxku%Rw0T<%#F&niYF zcYn#?W?O(b@{1p*l+wJ!ZaQmUll`ijkV$7HI(t&21@I_3 zHyDxuylW@+*~6q$a~^+-F3BoqZebkx_my1qg9Tkf+c zA+)m#Az=yeLTXo>cHTbYJJUOn320-1?T(GY%nqgu^;7Dop}qqrxUL%GA=IZFZ3*ae)Dt%_pq?F+blgzSc=wn? zRKC;Q5f>N;8-eS61bn}I;BGCpLDNa6?#5hroztt2z?OGml(H}rx^e;1kb+MCxo=8p zw&7y4(yucL=1y1Ar&7E$%2Cvy*iN6BJP|u=fWf=$jXppVXr>4r9iKn;k7*@0k59$P`~~ndOz%@23xldC)~(ZV{${A@;RJeAjqv`VJ5F zD-Un@CHI8F!`WMg``e_HCiw4gi-)w_o7C<;r#Kpiq)W=o4iXq$li8rzAyx3C^C7;a zgnS{Fii;r+?QR1=QfzF8#yK3~UM{ZBsPW+&CWuis$IMi#nehy}J;bJz+73yy=H6%| zKtybu&$^Ohww76ogyX1K5X=jXiX9~?h)kq8cx6-|!wf*Avw zy)-I9<6uju&_20(6;M%mq3eoBoXiC&@T(ymtF>)(0bihk)<_kzFHo^iL&ZWsg}Sjz zu`yyjacFq=X!w(>5Fz9#D-kSzMuobFV9z0fAyq_l>6h81%Rg%R1Q%}WymVb$gr}&NS`U~Zi1XJ~_DNEYcq)>*@*d*t zX;Ke*>H$yP$J^ti?&Wv!nDVK2iZjALpZ^5!PlvXi48M^Rvv)u0MW&$DTdT zCodqVIzs{QVqF^89rc)AxUD&T)R z{nYJr=18L|FL}L4g|#nAX!CkripzRlrtQnt!}%Br!fpKkm#FRqKrM%HK6x=N1as!I zX8Io>n;FL)4xg*>GYa@r1<7w#kbLG!kQ5N89wVt|t9m|J)${y%>!Bx)swc&SnzwjL zu3yUh<~_k!2j;ye+@!2SY{J3NjGJd77C2bDWVb3=o01kE8CnsmT)W&vRjxK^aX!C% za~_e>0IkhxJTWd`EJOiT|7z3TTyQQ28Qg+MSa&;R1E(bi)u}{#-ds{uCb_AmuoDl zCFmN9u3URj(d0F@s>OWWMa|~(VcL!gagxrFY*UoT{!k# zB^-weIF{;gJk4P|8KF=E^m7d{HxFGU9LEbdPS)Xg<>PYvvT%Igs`+xNfCC};RV9#9 zmj&eeR{?Ua6a$gdUsXuXxtMsVxw{&aM@vwU&R{zdMhH&;m%@ z9^ew0+8>ap{Q-G;M2ou`jw&r~__XBJu=3TVuVxKdUHWPkuhpfmX4PC>`jc0&gsm?9 zo3E(!=U-9jFTJADS0j?C-zfUeqv*eLG$dZGSPQ?!0f!>|=8DOBY)(HJwBXBy#d~rx znS7}AV6wRWed4?)h;9wM}{M{KDWcjSdr#pq-oL%G>x;^=8D zJ@s@fG9$4&J$<**=WF?kR+YX`OJ}P~_3u&oj#|1PvNQ3Ge9U8jj@4s;27C(_>x%(u zaX)eK&}M?g{ghjQdHhx}K)LKv#&U}QI;m&5B(Qg~!6R`t^Jbp8fn-Y0B=9zAF-9>3Nvnw}Q#H;E5_lNi?0Wg^ zvejR_v*XW6u<*tvxgz(Z*DrH=F)A(DJeJ!M@(^HOd|4YZr2(AB(tVPX24vtwDrcig z=U^VoJq#S-$YA>v5l7SMO^otB~|lp?>F|1Gj4HKZhM zfnjhWB5RjT!?rfgVzxCP|2pMs#<4%eoU2U-O}8yd+*M1QBat%{@~*5VtR~vD5*KTU znq@aAaZfGLCq3ILt7kl>iq+HId?trtyjuI@9G&R4?KL{fZDXe1(H(!cBl0)y_Vsg# z#agY_Dy(2*$K5hHolVH;E3hOpYPz?P886xJv~U(a=R%YV&0zbWnPHPrVKO5sWjfmj zu`vHYtSfzBZrca8I>HAz!0~~JZXa6Z2XhhP0EaB6G|oOh+2AZ`hZ2ADE_28apGJN- z8+&vsx8aw@`==!|B#WtZG0kizpb@d&QEMi#iSUQT}IEB5-AmHmO zw0j+NPmx!*R>@z*Zr@ZHb!=KP*=NA%_qCF73nfTA)^j?bzvsMfH1{%`$Bzug&o&|(41IXv=~*^jvB(c!+WaFQ_3h$Njnj|(3_ z#p#CgI7g5-9lxLsE}kzc!NqUod`R7WelR9a@m@-w)PB~X!JT(4(;kKPW`2z9-kFdt z?`h?D`WKf6M#Gl<7tM#-((fXj6_XgcgC6y=x}7jd)w@JGT~fzS4%pS#1HQGhgh>48 zp6z$d{?YH=zU|H>-6^McB`oWYfZ_so|k=F zf3g#`ib6rG3QFKXM0%4lxDC<#97jq7#elg^Yw{Y3GM;)KyyB#IgPkcnc>;z5gsjB7 zg?6Yw0+HUf;B3F`EqdOYZ9K<;m5tV?d$ZXY9f)B3vfeq6)eFft&2ao7vzUvCC(UG= zjNre`{8cHjgwLl+9yiI7i5T7wn=`&X=&R)dphYBLUgaJmxy(=%%Gd{a!*mJ5N7lVe zkQ?|0W%F}HQ-@z76YFP55f<61yVx3RhA`SnBlITWYUIts%W=RCr$hjpXpfx>>1Ky~ zh5($L&tRS~W1uV@u%I@P!S$3<(8@=&|K(JQhDET-f=uO-Du3HX9;Ms(e~O_L(WciK zdJJy;*{47I^+$AsILXd2;R90eeDkqEnvR`=Y~97?-fS>~j?htP;AZFtBrShh??)q@ zIHy>T2DG9$@&%w_Hz66Q3A44bJWxy=kA?}A;&;%e%j*2HW&-hU6=rkn5fF+p&`J9% z=a)0jPRtqQZ&+^oqc?745LXkJr|*1^VqI|h#3tnVmGkG)NmLF&(_F^pXix!Sd%1w6 zo2DFyxM^l^0|j^9#h-}Nfiq%p>TCm811T9ZBQ}~?k{B}sr^flq^D+;FQMSf8X6om9 z(wV0`KB55|UkY914v!=d3#{dvX z%PYeJxqaRk?dj)~qHe2B+@Vzo)V&FgFYX#C2pdWrL(+L9>zrfgeAMop(NXW{;{+YP zK$o?|j9)-%Y7u7SA`S5e7Oob(p-|E0bo>$ZlTm8{>-hnr$l)T2K^FZB0$;JHfvCZf z!_fZDIXJY2g{#{QF1v@C)3t|OSU4;{Uu)x z8WUz|Roi^Q4hPUj%jUbEXb_c9Bh&vBZf9W0TtG}<@mZu3mx)zs>RaV{MMXz{7DY7y`fj`F3QA{s@LgRaXT-Se04JNoR&^AFtl*heJ7z2mbF9(wn?f9cN0j1zox z&o|jWzrnl8wmEyzq0BQk{ZD`NUp@0^2U%Z8MIGm z3(3h&dg;Vw@K&Rmak0cPRn7vr%mUa}H#q32x^bFTV?rf5Dp#6c?rz}nz}o1*{)sz3 z7V6CKuMHhbtObaT^|q50xwHySC=!E>@3d}2{y;(4H)W=M2Fj{rXil$U#dqd)V zu?{iE=P!WO;vB1nUY+;Pu&!mq)~4tJbE!fqgTGcr7CDsTm8*!?)GiKPRDrk_Yx&Z0 z+PQ~M<|k{}Sg+hJK#>jr>Ah^Mgr%_Q)$5Eo@@cTp{W+l@gB)1UR8g;G*WDC)jjy)* zyYq26qooPvtl1WLmX+HuC{tW$dcst~lOD?3M;C``nIYz=i zzfsx_92qBTp$8-iIe6y8i0zyt{vdin+p2C0QI^`W)T+T+LBncWMa{s4ZlRufQPTw0 zO7~2dpAfCvt8orj_+rHsSR-v)G=DO1h4(X-umxb(p_76!*hyiL$STI5nFDu@L6A+1 zn$bAiD-Px~Ma*ct8k{Q;^&cilySz!UH5Umq0jCvF+8``Kk)^?qPU^Mt&(ROFz4Yy9 zIQss=pxsarCO1Yp-7LD0bu?}kx1SKYEK(S4WEz+!%AZU}T%W3_#)?dxai~l;v710S zuGnQH%e+vZ1{7 zS`MvoSC0_K-eNjo{^H28Sz9os1n6U1Ot%$GiD&SNO-D351q&mQ+e7k~Uz7iYZyrz)N-Kz{%9nYYS>58e+kxl-d=Vx`dVs|6mScwAJhG)CP z6-mXAEuS|byI~7~lo@n6NiYV2c}^J!HcuOCgMjrUfI$8L0;>eK8xOZmanP?ne6`k@ zo)nqN+O(ek^BXnPKUoAUU^Z~G4jh%S?G&i)7^>3=rhyOH8}mP`581Bpy5IG%FF+tY z)QwLWp%|*6dlpELJ%th->w)Cvre>5TS?oxVdIgEF8C@xM|IMphp|ra@t2&JyF;lJ& zIHsqR%{RZY@&aL+hQl<{mPpm#nM-^KTIowLz_*t!A`NcpFeWAKG#07D4Dxe!aRvM_ zIEeJ^c2+If#RZSyl8@N$3`DV;pdRi*P$NsPOt_NHc4c1qITr9($24Q(iBQ74I|@pU zV+KGSA>e|n$_2F)9w$OSX9jg1sO@K6;aj_93!x%iW}sh_3CyZPoauLrWXq?BoXPdH z@8?^HA;WzG#(mRLE_ylcatQqzwt-owPX9#gZe*XtvFuwwsV*sbZezZn`%a?% zJo(jr{tI@?$SMG27T5zIe&>k+a45ia(9Usl=ZU2*m0)R`Z?6!&7deyh+E_`8+(os12NO9IdI|`?RFVa>?8YFpnByPWthZ$(q%sS731t2hp_>nlK18cd?R16=9 z!%DIrwy0J!6WQzM!1i0AG7hWc!$btbM1!H0q_fvFYnU4QBnR$@4*1i%?}*;b=>50O zEF80T$+l1SfIqXy>=7dNU&#_PH1vP(t5R*Cn}?yB_a}C@8u&9xl||_vanEcJ+|E_tfx zP~-_6stS;+su^BO)$AcvwELn@9+PqVkFlRGxMYF67~AW`@cOvFsu#MIl5bj&ROyq- zf!_E8zj}X~U)BCBzulJ--+A_C7_Vnz4VaoJmogYoj^Ah);LvkBr6oqEL4LS8C$s{t zE_?E+IBx_5r>NKw7Uj6A4r0}HhPvEBD&k&!?x|M(cqo5_Urv&F`IGA|eu!c|21dYM zd}-aq_l4rH3!CHyJz%pr+}pk-tBY?Agelj{Wzu z(OYFcQ>bBr}i}n0K2Bh~R@FjLP;92_5aD(q{BD zW+&U(Y?-jgN5~$EfsDv})TSrd+RA~kl)Z4vLIv2*(*%=BSJw(!PjNI8#Fy-;!>^vw zarM*tS0Q1;1#nZoAz$Yvd-OyCf zQ0s5KvwT4hsXA*@<+5WZFvHj}Fg9#eN2*Z+3SmH73fATLXqkIWs=Nk4@Jc3vzv=Jd zq%t==6L-JA>md#7o#hi|6KSo(ztf`|Fefa!f$`N;Q$*1X!hv7*hnePDb5=z+Q1Kwr zQKpJ+pkb|va;knPx&bP1Ep~sMPlv|gHZICZ2wO{(3(*bKY7phL1s2qTIV*%H2VW;u z28lwHE2A3-bQk3e6$?g?Kthcc-M~<>L$8W%a3xgiwBi*is^|u^vvU{~Y%12G8(bO{ zq4BU}$tR+Q3hV`dR_!DjUmJ~XAm9sBz=3UttwKc^-2f1a=mwkyKtM8#AO~ob-KCzf z>{nUZauY>dSFQ#eF3z?o$INhfxu)HC>Q=DPE!CcpVid)n*6=LVfoIRJ=Zpv}9d! zx`f7uri(W|toblqPQuHn8Ti#u+IUl3OqY|I9ZI4#QtQ*@cnuYPG)|p(GA@V&Syej8{>i=Tsd%d>z6M75gN*5`szy)`KEiA)9q%6i0lz zB$7_mkmSeqzzX>IFx>aUU_j4L^Zaz&?LIj!L-B)ZWslf!|BN;qo{RH8>*v1~mj;8s z#$cd4&lm$w?HL_}K$%#=|D=WZg1O?^IH87=t12QMXrxd$;_awqrNSZpO~{5nFXUVg zFF@rF$F?)!+M8IXHKU+?7IMIpX%&u-s{EIW^1V$BHmYu?xF9@7Ls(TL8+uuW@3d)Wyj>)glF>tphhlL*Tt1Fo)maKT7LdsP9ifZfpO4SeXt4oKe35_?r@yjxD@hi1D!mk88 z10fd19WbL|YD#{ko(J=UP=P8Y#mOu-`%8-ro`EPa>p+ETLKQ0Z4U)jRsrCRg4>*OT z2IEO>O}jKILgVW}#Q{eJ@DH(W0e@*!>?@|CdR{{XI( zE>o~>Atx{^re?vcu!HQeMz2af4@B8$9U-kW<93E@m_v`xsl{~bp?P-b} zSjIaNI9b1D1#{142^-#eE_#mcte#JJ&-tdFPwFRi2lrWYS_-V$bAZQ1s0SDf7BvFG z9__4?pHm2X@$O9%K0bYyoP?u~FaMyu;N*)DLC#%Wm0&dZqtM_gCKT?M!xvv5H2!3r z^Xk?BtK4?q)snnQgzGB}XZ4I2a8TI5N*y6foU zfWHe%#4gDYa;CKq+DhGzfUx$EL9o6jJfm&0a{SWFo#T-TbU1j*x^d{l;Kp#<1Nc8@ zqnFXIgTTbk5&Zl0D|df>mhjS*52CJo(2Uj?0Lq~iUDhd7CU$j*W(kBKS~2RFFQ{W< zxDLXG;!a(ns`DclOvdq=p9a}bzPr%h5H66w1OMEhKRS zprNSQ=<9k%or68`9S&7oKfv_@dhdkm2W}LdJDP41t?*}mI>SCMfAHe{W7d9AKu=+~ zf%q`B9`+<6bXwAJl8$#%KZxX{qpqblJVO69{eAkt0X7sq^+~vm!bpF~Zlg#iD{QHu zL+SKzdB}INUjC5vjhsg)f213xtvMQ{T(pRf{^Rgu_glXbT2%{(RI_-ZV33FoO+H_tUdC|F1_8|`2fX*e>Abt)Sf7%G0 zOScWxf7=$-HE zAY3iI1NPwz&Z+S8b)qL7$?m*}U+GZ3Q?8u<)m1GLHZRzO5mb-Z;Q(JyrXLY6F6RSB zb4qrsiK^ld65DD15@v=kNTGh&cD(*0tLxudtDpJ8vNT%%p+L3PSeQA!>V*2sd7uHZ z6A-%5)FzXUosP5sD69o&HHe%@aHe&sL6n+qV-%(mXCIbzT!zy?*D#NY;|e>=;|e=# zj`Z;K^0>m;H)$^zY`+S}6|Si+ZQ1_iWIX;5Ge13+P0U5fqW>$XI=F}9t^W{#7tsEu z(g|tyx(DHNz>O&#)3;Q0JtM)fMrQ4IKx48lHGdXn`NEwmFQeqA?HT3-VI?@tKxUI} z`iL=R1I6u(PtD>$L;Z^TzQHhPnsZ?~E9t)-q*tgmBx+}Ebw`oCpSu=Y%uX@N1zOc_ZT^8BN(Ju)MiP$_{slpQSc9dAN> zgL6Ck-3n*F3B(PB(iGWxGVZiQ0(NW`Z&y(W-)X`%&TdetJ{g5x8x-W|SzZx~ocoaM z)LPrsDM2Q|)asiOnQ;_VK{B{n&ajj}vq4?^ojCvUto-~y72gq~Y2MXP;i~_GEfW$t zIPW9oL5DzXL&v#%h(V|nnaIhmNr(B-{VPJk0KD4fBqR-L0Fp!v6TWa%Qn}xe&cSE- zKk~6~#A8oLdyj#j8vPG7bY-M|sV&+oeC!xDV|FLfRmrK46|TiXJpIP5ED<1`Nj?E`=T^ z$c~IYMv{=M1Kde_#$dpJf9njo0t(Wsfb!i70i_cZfFOuO{`LlCJ3wkk9?~5Fru|{L zm+}LNvN@`PIIs%VF<4luWMQ<`GVY~$XJdiTFeV_7aQWnO4+A*{6p`E}lvJ{EV$%jN zYXFU=v3%}DU$~zsNb*>iWSs5MGGIYd*yk2VV>Zoz(+4Y&Q;1FgAjumDYMZ@j>tz_1 zp0!=gIQ3p0+(p;D;!vZ?vskL=zc)W%z?S_4Nl`691UfR}P}^{Ds6-^Fz6ySU1zQUJ z5E|=D!lCzCG#Ek#cvGXmL$v{9XN?B3p{p1;_*CTlpyU$Z1qeZn1}{ZeEeIJ3o+zi% z#P(>qW~Lqw{ZkLTf6OU$5E{2ix*v{XZ7l?@OQyn`lSj6A)mscj4}F()+uf0nEfj{L zLBk9;d_us++oOKju(lQ)u}%+em};0~kE~8eMcz^{qKT`A^%JdASVHy*E;&r6A<(-Y zN!)kKD5#3B{j4Mj2kEO8qT|g!{;|LOQgGwKmiy+f{Pkb`)t~;xPyP^IUHib{<2yXg zHoe)ySGdV;QojITyZ9w_r>8FPrf7Kco;v5L7)W)3#(p-JfX3V?oMkLOoF)FeYh7 z#b({FM!~FfVJC^Ub3;rZ2!I6y(qOpEYN+91X<#L-zM1^d@IAb(9Ga&06rPQ$e6^pNF)XK~I$?3^kCooJzS1L5{(2EfnSw;rdmmwQ-|4SwNa?rx{{4_Srr(0WQjFoV6JiW6M){*%XAF!FRE~wb zf3DU2n3e-Di1;%0P1z&rz+1zcC zpUo}bPoR{p`UWKSYIJypl|6`&O|gw!ZrMa3uJB)dMNw ziMG(dFpYJBQ85#-VFU;RsOle=U$_KY^-#Oc7}BVQ!-{F_JquN-peBy5Fc6%&aZHu8#fTd+)UrV)q=IAyf!UI((Y z*fQfl>9p=f>n?wd%|w|Q{s)&^#2mu#mP|pC*1EVW(pkY2Dw!#G0*gqTpMs7f-D=}AjQU z>TMAFLdG{f$a~tSSj2%pl;O8nUFRU7=&p!=?wvtF6<^TwK^Imfjd!UB2FD65!@uvI(dTxk5BZ!R7~=Sx1)<0|?dH)tZ5d)h z9V3xN+Y{lq=sP)L`>~Uzvq*7D=^V4pesOCLI&O}2vM`YjLqQg8HIkM;5)6R z(~7j!f4CD|%9UC9vcx#Lu92mt3o^z)DS1SNs)6PI*+9fvAj5zZq zlEwVukHoKQP=f*dslR9(%NqKA>i%Ot|4}-=@xA#MnIuVmkrN_hd~6Sslz+bX@r&8m zWBC(S`l9R&kICft*kk#Jy+S@d6F#;d%bzO}Y32#9iORQr_rJWzKWY3?3V$rbg?`~H zUy1(Fn?X4LJonF^iw@9%_MZFyuV06}zHM;{R9M`m`}#j*=xIAZ&;5hv{-G)F8i&5V zCEfgme`VS;M?%&9lO{(IB$ zpUiK*KX07OKXV~I`r1Zx>f?`nM1$7p%Cq4jo(&h{@`z(onjVWw!;d(k3@xOr6MoY1 zVLU6~rvr&$uC8=26z4Dg1RSzO|42I}5s9gXd{NKB2`6QNEy&@5JPf%8x_|P-&lHzS zoh}YeDx7j2_kR`prXPciyBA{C0q2Re!{+VFL?{JYk^nIXn(vaV)oJ6zQ#jz#JI+4D z`fk(2zAGN-mCsR*nh^izmX@cu|MLwUI4b6?PFEr$(aYNDN(*knvZ7<+Nb0uW$nfPs zy-D0nB8zZ11&!=Wo{-D1%+0W%P|2Q4-*$5hU2-pcC&)p=1EQRaiQ+4SLM|;?t}rHx z_DREHVHlvrWKq0bcE$E2>f4}jQeEq)C&yB%EYb`bkk0$t5GxH@#1%7o$%YTUQE7$y zaXs7CfkMy}aWRO!!6pQEeV(&LrqnX7J_Gauvq-?E>yw!F22moSpZ-C zOGSieY)5g@Xtpqzv-v_KCu)NRxWh8)xwp@E@`M4JuP5{57~Vi~ogMp5d3eIE=*ck^ z*sB7tUdm(MLcWB3@xRpr(^9qZcj}AdYq&NH4e_zH>trG#?R=#9RXFd!^nQZr{YLAs zU1le-7k6^ACe8Buq-M0AzDxaQ-hQIj;~_Ps4$dB}?Zl-d$PgvdlNV)_=dU1(QH4|t zI{7QjTHvr(T$cpAr`mCc320J_!eog1B*~)9o2;=Nj{1G3OdtukDAdrNn7=j12Dzdt zppQXe+asLoEXqSuD?TxnB%Fwv^ulytqA3DgLn(2Zu--sUCQS0(OkFgXbIGg(M5>mU z$qzDt>wCnCVWN8A8s)r0N6iuefLy^$hPouJu~9dcKSV8QlU#tr`Upf0#yu=5+QcHI zMF(0AG)uGeQB-HzZj|XjaU!07+Ajn$K3-1{kcVzo>4eF&d+X<>}fnHJy;lYvJAixJgs&$r~ zC+{quL!Xn-=W$wTaQsdv3WJ9Ps_h@u9=dIUnRtr@7NJ`%pV3p2gk3~7vLm@_n~uR! zC)GmHNicg1L@?7Ca+d47hq0boG+ibYvaI`t)deeG^4-7 zqC|Qe8h@_!0$TFHGn++&Uc@$djLqH6hw@0nuWry=IOJO0V6{Dl*j@Gj(h0-|=%Pi_ zjN2CKru&x*$p$nGGLs2gvJ@mHqgaDX$)EXVGbJmP?PR4wJNfgZ%0l&=GYlyMgEoef zFGh&u$PA5aWB)PsHZ@`fayQ*5o(Ha>uh+koE`Bb0>-}9eZ|RQC6@yMWh4ZEeT>y9x zWVIf;grIi$Ic$EPRoV}3=_ zl}Mz#B@AHN4b85YRv2WXe=hZ=s5#{~?YR+P5Nm)$K)*x>JCz!P1jKP`n>LmV&k&sz z0h};a0)i4SlTpg!3t;A-=YX(wx=IN*b*u zA6TPJFa;u{5`xA$0>HH~$RqkN${>Aw1Q?=&&A08nCdfT>?oh96EZ2eX;6dAdA2oT$V9`3 zKL{dL4_nhzK@jw`>qbBAfs=SNe?1jQ*yQ)EOc~SW%Lcqt5ZG)jhcVTORSMUCro<{j6+14uZkYY_e>!g*+t5s+W~>}&ZJ9CL zKP5&0YcjlpW4Ylm$^Wu=Y~;UhkI)qxBe=hOsH2Ttd!5HkM6bIMgN(;iwf;eLY{O*K ztp1@Lz@&n4TW--VOK_q^1rd(5LEKQkig+fX(dt58+o^Teu)L#pH68sW3g7itllPCpCmIn5V#iP@Y zrTW0yqYtduL|_a%jJz^L0Y-{3P9=!f#DbS1E%-ie8f6!k$b3vn2AnHLSlEFaU@|5k zMEPG>k!rAG##4*C7m+=gB0IHbRFSQ~hEhbOqDOm7j2=1aWJ|K>FBh3Pz!L17NG0RN zfuMOz2pObYJPHMOOL`%!-W|~*Yp)(*^-P^T`kgbo{4n2!x=rRb$2${b(1s+O!cbvn zVty>ifkVF`SgCCPhz#)gz@Tm8F=o98hnVQLmICAon%~r;7ruc;a}<$@Q$4G*Sa1+n ztkfmn3j<~1tztAoYfT5EgMgILfsq7agT+)YwUBOL6nVg>Xx5t=+a9GQHxEs5z_e=0 zz%oN0OK-7O1fVr`#)#1VvLuZ9+MdvxA2R@t*A0FWK8H9n8p3EUcWk>eSpTK0Y{n~BSm4?QH@JMIlgBypDc!b{q5178X4N|?`krHA`Bb5%W5D%BO~kvI<9A- z+JP`k%V7c}2knP>DFQU9q$0qulWo&bhEr&Hye<&9F16W z<>Dd@(;9^UP1>eskx=PbP1IvF3~QDT(nAc+V8@|KS2ST|VCaBpS;Ml9 zh()7a|5tg5^Nc|h1L|1ZPMTwMPO^{b-K;8DaHR@rwcybPvygK3`D-EN?C*6X!c?XI z12Rr4X}8;vtg@;^0ufzdyWK1r zk_Z(V(lQeo`u~c@ChB-dZRHa1Mw%b(nM1QP-DKii0B$ku+pB={?)?EZL5AvH`Pi`f zE!E{9d-V0aS?@HP7PIwU^PcvK{zwjl6{=uRjl0^7eA=n5be=-Odcc!8inioH`3W9_k#OSrYi zrpXQV*fI&y1fN+=(t;L{G>XfaY%+K?Ji4I4JQ2o30ru#m7N<%6SvdN%aAUzv zYuz5XhoVSzv{EKdjC7;ZMVo5p%kfjB3utLy}P&#s=1k;|Nk0FKG8$ zT4>}`kt1Dip#wu~m?D=Fhma64AxZIw#RR2;2@L#?WRJB)jIE)gOsb~_*UoW*S3*?`dL>jbtma~wva$p(Gl|9}cANr=5JxGEd%cDSB(g%NO05t^ zl^|4U@R&wSB3rInC^d3GkGg*zyvNOqY;%n_A2lBb3y1QUp54B#Zk$O&LrX9ILe_&1n*XXLWNBjylXztC$h?eOi&2}AvW@-sjQgU#z{v4eGa6H?GO zxTLw4KE@AtCF=u%?i^7kOeKnJ^TRrE-@1!)X2FVckRks~hhjcCyuRXEqIOYEuJTTO zkhig)x*8)MxSIMZ_wcUGtAAzlDmZBhw>B+Dj>D`At*^{U^KYT))t;GG!`&b;@xB4J@WU9 zVS1IvEEE%Wma)y(`VyddM$nLlI)9nbl;WS#zWYkV`Ppv~by)Je|LpJ|`C=>{Q}*zA zF9|@qANPxQl&-HSjTdegUKKFE3T_wIR9EQnbM*MfVs)8CpIv12L2eiGiXv>IMePH^*)I&`s>*iD+#1Vo7yG^RF@qiTxIaXYm{0a2o zaIf3jqV5j{1`jM+{tM6o5Xc7u_-RcV(5kbVeHKScs72C1(G@K|D$QmZ~~SqS7xf)0g~AY0K4iJ%IuA~*~VFu5W>HY)iM-#!~DEDNDs23G@y zHy5A0-QiOTm?v~;iJHV-K||@-8ykiE*tbG#chefFvdc9j)=@u33q7HROUCYYT~uT^ zkqrO4?(H^5N?CV~jn*{Av@+_br|hYblA;Qac$HtxNQnA>AqcV0`v~gTc_nA|gud<3 zg4x8>EbKrFOdO~;oKrR#MnuV(r`R!$P#RXExzeB}`P5gUx_nxrNYJ0Z2pmu*V(8^5 zDTuYJNl_IdcHog+wZ%ZuX^-hf$w4I<6*!P(4 zV<+>|EciA(Qw+jPSa7=zCv`)VvG(TwGoXCgk=2A9<@lN5|MXaq#}i zz=MAK|Jv&vg3<%0h8?bU%07(1B2I{4=d$Wo3mzL?i%n#w-CBdT7CfzPVZ3FPinNwJ zbQi`F#6&)Yq1Goelh`MOFg}F=)+gJRvQG!>6Q%~B7XkCpmPh+|P|exaxXsG82&`)a zwgDug8H*t*2d>aXj+h(;iETK63q~!QJSo)-6(wXViEK0<;1u~9jW=^^wCa*fg>19g*pLaM*GUW_m)MH6W-(wyb|evyK>(y`jb)ZJ z5}Xvr`NfNNgCv_kwgsg+VbxGSL^?u!nWK*U;gJ^cmf42TKbo(gsYpW{wG&z0nJTn7{&pOZd%Mkx@#4{=FBe^aD$MY_>$kdal%0ltn{&et*B zoEoK@Q+7|R0RdcZIp<=#Zg@W7Ixkx>{*LFk zQa8K=aR#H1UPgt5(TtZ9bH0vw&ZDbH=TS((Ok(xYk#629wgSvok=$7!T?XXU>dHFrRP&w5CUe z?=jyC=vyaH1!|cbdefoCD@qy7<z7*9P2?k}a#PEY9f{nR-lNHf5i4v}h2n@7ID1k^#jU3yrB4 zGUTB16cGj!qF-+qU@bu39$@4pVsLYC1E}A~|6BO~dj6m0|84v~gC*s|z)aA=6v|MH zO2Q5X?M0k;FqSOpU(=~GqDtOR|8Xoeg&HG}2&!j8HcqCV51GDeH0*oA_hQJ#PjHy0 zmPvzQnF!ri4cTZejfLeRT4im>Mzgg&n>@|21?sC0*|?BwkrSVc`ISlKqMa2&JJV=Q z`e-%uFg#kLh0>N>4?7yK$1O?&`lAMH{C3^4(vf+FxVsvZo{!l^Qz6Ypv+;J_zS7fW zx*Hj+o-B?sq^)X$poQk$Tr`74lX#CBms&F-{PF|}It%u)dMo4>6j*u^T2qZ4^AHcC zQNuYzKyc8B=LQUmj4D_9moR}uBH`5aSZs%``?{Wy#J&@TOovP?slUXOgeQ~5XLvC#$wziZ%?@FmBX)bI$2C*F_clj z(v3#UqCnbEh7_t8sosovpN#7DlZpDx@;5H}b9;Bk_D@fx9c*Q%J*?nqAg$g|a%yj9 zhu+S`iWpfNb!Quqx?Q)wQDem~>|14kqyCCl*tg08M{D}#!)xCv1Kc?aiZChK1&HS& zLDBC2c1xrz3N#;F@foFC%opl%qYS(f=r~%a1g(me5W^{z;3P+m1h%OJmqjfP3giWb=xcQ(hZa!f|liet8&V-sMCoJ@Hqt@Mt^mXZtVKSu? zIvRkf@pkSfvWa^nw08&&Nn0Oah4r?Ic2;7KHm8HG@axO9(;jMPNwZ9+tH;u8W+y=P_H?7t zdzOBKrB9vs`IW&p@@0#@Y_c!Y_T_qgc|Bj|^yM4u%PschR(;vQmwA18jeU8oeYs6v zwhLA|y!+_glaZcvE|LWs(PMjbxa=_NsW8SinXm4SG23&q14#$fJL-|1pAp6Qpc|J} ztPl*?DI1my4oNT|5joBT168nnSHj7!bjPk_fgfmVo*(vs=JxQZ_M*(Z^z6mL zHFHa@y&#=xu{p&u1zTV#VLPI!aG1S(Ll zn)(5`rM|UNmKE^$an7Rsy!qb#XIlM#(oAnK9Dk{4E0sxA#rg$Ps;{pay<#P^ zPu23Ou`Jd!`&6y2zTEjDWS^?VwZG=D_Sit`$m!=%u;%gy@AA08r`kTiU6n50r>oUD z>96eYK&2iInGbpDK~LS!n;ZrAdFozI1>07`ZbJ!pfFc={uT!yd7rhY^UNF8eBvf`T zAyk${Y9i&19{tJ)Pc6`+>QMXOEMssdbUv@{`XgqaAHf{1uNQ4ZL2C8KXj3CDgEIAI!Z zNH>*CD%)ft`j)qFg*f3a(k-SSstOHRy^U(nXaj+FNCnvBOt2WXRrR-+PMeBh*VYAcgX0vM5*{nCXPBsf&qHE`^ z_vZ2acSP^Dm!`icK+PxvMw7_f;=oy3Jeaj$FZ@^gx$W=Bwkno8N&DE*-I`6==|Ogu zr^=mW=EL|5AIEKbnT2JavhQd4u`|hN4}9|NWqcjIAMUcZ-*we)AUGp{_2U)OO8AzyfoQzR1l_oLm#IziwR*ADy zceATrHK#!G^XVk(4Om2I8aJV7ql6|zCdJyD5H(MvTUpaNyX~viFEqYpRxMy!4{^(d zL^6cp&Z$3vxT^zFxI9dVxZ4o-L_yr(>@vhXyEbtbf>2F{U;z%qJuHM@L58ri@gPHS&5C;cq8_QQM2{^h>=@OwbJtcWHXd4VZIy(H&_d8w5#>oFhR|A-&jwV?;mB?b=7&^d*9Eh z_p0-E{z#A&QSi$9v1T>0xs#k# zl##6x2B-5?7CVW9^9^xuI-~C%+d62@X8Jy1&Z{AoTU-T7#G~zf)bN@oTO*UBlS~uP zPUmv8l4}yy>1?%CPtMH-^(y^N@AtL9h9 zh)d-_VnDI;C32x!B45|M)Qr^-2Jed`1`Asxsb$_~_SBTtgbubzCrXiIuuTTU$yDmL zNym|yO21aL+X^Pi8Y#g<*)WxA@tQD|x{1=4rmxLko3Au1P(hseJo{m}wb0AQ4O3M8 znXoQRX`*T0iw21xNX)w+VaBy-%b^+3<`E=%QINp8Ba0p)qx59t{X4=)o*>fYUN?30 zETX5|O-zM|LW(2+-~PdXHZPeF2|vgv%LDL_89?zExj;|nj@;DoNwXM!jDN2RJWrBn zWidPf!DI5cy)yXSQCV%avlvoW!(w>KD|itmM+$DWnSfQLgOz@5o#R-fp%RiHvP-lo z1^BSfHH9f5(QoQ|)OUAsbTSyIN#^seli6TloAYwEp9aRz>cW6wkM{vHtK7R~HG(TY zsb9GD8~nyoeZK+bhHJKUv)hpn!OI{Hc2|)e|`3} z(hgkDMkq}ZG#jK_Tf_j+SB;)TGOV}Nq=g(Cd&$t;-9BsCYz|}t z(Jdi*nH8Ab`0?A>PVN>e=yXqIShC!`PE@d)FS7tlDcq1ayaj)li0sy zf}~2))zc+vOKr=XelATkx@LK+My=YYsm3~OzF6-rLBYtqL0)%6MrD*q6>Q#`kk~i* z8O782y-H8y1DEOHfy}hz2p!f&kZl%G1X(^+9>{J{G!JC(fOe_O)GMh;lR2KQ0-IG5 z9Evw-fimb=PtGxQqSjFx?j?H9vc3kxJ!PZ%QCTQu^;#(bLSN-q zkMQHOoPV_z#F;J&$g+u=e9*A|j-2j&pJ_SYd$w$yE4yb$zsp&gZPs^neZjgur0Yl% zZuXmyofaxt&s32{rbgEnYDsT8SEK6-4LNT*+ho^WuTf`iq`!25j!k&Im}tV}2=X#k zAUB;TL2y}uwuhA<5G_ z)wbbm!6bl(VA2Fn7@QPLVD*o(=DVzI*o=ZnZH|(USQJdU*a}~E!K4yR*5$SY!cQVY zpd7Do)v11SolCa;$Xu_h3}q0d)J1oxJ90q&Q8I0MBXJ{Ia86itEC^pUU9p7QK#S=Mbm5*w9YVj24R*3bK)>u+y zFxL91#hLkO6D6PXpcue=+R<<@py6q2W5vfPlCy z8bZ@xN@!TXirYX#ZDua!wI@U_-9h341LCU55CT1-fz~YkQH_R!Q)uYq%d(Dxje8v% zy8l+y-dkbgUcH{5#0Hmd_+fRIubn8)SJ*gLW8;Ae8z~370#V!>u<7H9wh^wd_exO;oDI5mZctBjM4F5nhWD>LkBJ>|*_ zcslB6dN82rg03WYCZa8P?XXW`Y9_@zg47@Q$b&Vij#rp!kPNl@4BClis^)h?HJIg$ zmpr(YZ1}V--8?vju8wpkQ|?gmQ0{Ck*E|Xf@@!v2QlcPWF>aFT3 zZ|{6DAHn!Ha-%%f*0K|5fU zFi;4J(Z@Pt#XU|WPczEwv=L)5su9I9as7t5Tr}bqZZK&U2lyi0V^Log>LQ!P%IJAW zQ#RzQ?9BL=8Pc%3fJHgE>i&+I$iY#!#oU^K9JI1ocphKvHhEDLvo3}w&4?ZQ37hq5 zQf{<1a0`Lv8c1m_tpH zmG&CxRc2LpiZaa*$w4gG>opsyBAjY9RC(xCmR2R{6m_7P!3#ask@oC$#Fvf6I^xSl zV;%8jqp^$2{oP^PmtjYm3q8L+$4A zbDPEf(Wlzl9ynX<*_P9Pk-Fupp)Zei{9-Hk>`%<<@0h@I`YXPG)vD&jodz#%EVJIh z#xm>U)>vkJ+WI{S}UfV)CghbiL)P(J^~7!d*mVzL_)g96t@xv<8@?07G3N<RdBbqXOL#$ITOu-4N_pGGF{2AL)ztWD=~q9@m6gth5xPV`CWhQ8Xa z^7-*lL@h0xQ@F?!8GBl`fn0XaAt&_8edh`&3CTi6DWc~|@#b}C`V~S1k@U&+k>uQr zkel+9(_wEb3r|p4UL}B7$UeeiQg%5O^)PvE0Hr9#aPGux39_wdb+YaYc%N!%K7rPH zKKAcNJ!oWVptUg@r*k#X+MJ8i*(TAduad{;W4rL4%Ti6u(A)yAJ$KV4mp#K8ZJWDB z2V6$-m{3V4W^iS&KIEg2vW#u+wUlr>j85!tv#YW;<%j1Z8sCXtyxF_&Z?Y0#ZE zM7c+T9D&AUADOcRkiZzWnP3#d33Q7wVskuV6qr~d98I^PBhtw(K|0g3u+iDZf{vw( zZKP1Mk1smItIwu{t2X?+RmquLStNg`uR33kZc$+XAumClRzgFbcSXSaO%8d` zD@Ppsy%IQe#D9yhWc|j)H1@W$&CuE<7Q_NH2tz2knqkOfSanmU3A_&z-L#<%H>g)V zw2ed?n$&u$zS_w8xCKV7kyV!`Mpj);!ZKo`y2X+-PQ;(`Y9t$dV*(lzaDM8u->-xZ zeQOLM)X7;1A3~=}=1J&H{jTwfR4NIwVD_7s=sr$t0{Yu<@K>$0_pmV&m^dL|ZG4S# znGz75IK5_>IS?DqqNkk$@FzCg@XrCBz{iO+D9~l~L6S4Z#Ssn++(Dca;F@NHD>O`S zhp&7q+IED)j@=vovQCspgK~BX3QA^v7N-COIgtBNOr8|HT0eBYvBk=eR6RDT++wYa zT4n)nG@DHp3_)=|aJcEZ(#MNfURFA|c&NG{fTZe1%&XX4|CqDH*s>0@L-MgI7){5;t zS^9Ds4sr26LR|cB%Tj{16FX^0?;)d`ZyM!zb`8tDR^Z1At@QD;)4*aDyGgF0WH>Z}gl{D(P~-1wBI zd@ouXd1o_kU92-I{cs~)#dP5d)YuyRKo_O1^&Q1ftsf+AS?q}3kKkekw7`UXI215w z84M%v7DEMeHMtFA!)-)+rDJ05JkRkA<#LApHjYQyYCF=ij{ay1rWoGJaa8rTNU9bX zmBr9l(cggoi-~&UMYh4)p754u8;=#)X5PPO`ur#+b4D-br@UwAE3iudGD0mFfE4T6 zZJf6aP{gLJ%2>}>*HF^3iCF>^AG-EfmL;Wd>6>=XNYTYQ)d(Ff<~FH?TpEpRll-#R zT)64m#R$rl1d5c;^hx6t#tGTW-VgKc!`f0n0Wvaer13?Y``9#0c`Ugty~M6L6xw1Jx;TuVk>La z{SoY&!{#NG?0k0%9eM2_dH{GwCjxuq`i_JX0=Ud0{ZvCBG`YELT)vtmyTfkB!gQkF-jCt zK^4J~drImKL$G$W@keQB!(ENA?L-7XB5$Z_Q=hCh`eYznvJ#Qk$*Szj0EsaEt_;1e zTrD5Jviyg#(ldk-ujz-dJEA+GyG9HMRB;e0su1=;If#_mP&bOW9wZ)?**NftiZl)g z*`!tD(9mbmd6&ebhDD1S5bj&51(7{mWz<&5pbi+Wx-8{9ESX|am18@`r z1^N9f6|~;0lvKeE1egIY0LF>%5(uKdH-%sQL^}ErQ*{9i_bt4k$&idbFKL2ULDTu) zF`56FG#2=$Du5T^R*-*P`aH|dJ9M&9Vz=DUMKjUyNyeTqRy?AOYkaV!fGK%CJ&Ocr zvqWdRWY;B+kZ2xXZv2g&)a0~TD!+8;Q8c88OJE9T8jRZL@Nnkx`K0{iYjD5%m&jz6 zqO+3d;7jg{tNF(6Bc>%a|1aYNvPp`6FxSGZ*#7e-pScRmcdyz9w4}49Mydl8?LEG3npp>^T3HUjyNq|xbew1|Vo5I++lV)=~TpM5z6KSk8U7}4JISs|&FH*liGvJna@Sv6~ zq0%TW-o*8MIGO5v;&w2hTP0I zOP`%i`Hefh)C9sQ-<&-J;vto!irq3r18{}sgC_NnR2({aC= z%6gG#0x<9>h%zC#oPwZnE1_%ctCCyjOD=Z!uz{>WmT%}&6j7aI+!WA1;3M*mR zy%iO|N?9fa!%>ihR%AqwCP@zMGMYwrShRCpmX8-SrmOI5e%3TEuHzKRqTUY5ZSFe0 zxq>`qJ)pqNuluVXxN&pzy^1N)cztG`xYMb2%|I4kLp$(ei*jgbE^EOg)d z*k&=x7dJ0r_nqHVHOs}~MGPCgka2DkzX%0EX({U*8GF(z_io6DYWSOjP4<~P<* zAWsw$mh5_JjjcRUJjXIQ7+R!IB@C^8J=vB_OoM zmXMJIAd@Ex2{lkxdjd^zXSRTntAMv0fV!s2p{;oT#FPs4wzrBMUu>QG@7iAxKmDn+ z{Qv&mh&$=lSfC`i^^r=;4_sUR$f*3DwEXo2ebYGV>u~hfox!hXS^pvFURoIj5VI^o z$>`5?JApO<82i)O4q_FC>+o|2OoX3PVm{Y#Zijh#U3SlSJ~Ji>(Q zkE)(!q~!J{vy11IqO*C?W;ucqD=++n<3W}L5OHU1Cq^klk%suN|_{N!Bwr!JLDU5hl@8_a9zSDdV`m> z=ndpJrS=J4fj^FxdDb(k%UeOtHl991-Ctdor9fZT)@3`eCB#esdNPwazlTLTS{{#+ zqbutwl^t z>hny@8G~nHK)@dB?c|1v8XAX=O;Zhuq#EZi+@z*@l8RI0-wi52 ztWW{`)2PsTDC`LFQ>a*Ppkh6sLez3k0V?lt8alV0o%5%A*QJ-}`*{=W319vMBEIs$ zL1rrj`XaSJ1wikEMPl7CvT#!0=ug?N<86TL^G{HWer%8~NM+`_%sJnvDjB`e zZ?%yd&~Uc~Uj2*|l^YQrY$K~*e#8|Qc3`9kaPjH+`+q9vIBmADI1Emtn`JlZW=A!- zwJm;3Y_czt)-k;vhm%_HAh-}yrX9(@)?Ohcv#<~WUq`ZTJTp!h@ixTI7P!T}kRqf& zZ<4#!W}mw$$b$7{JmCKYI>~O_{Awa7{BNEVS}54M<;Q$#=B;=FpXStDyBJBi=c$h< zIj?qxd|9M^D(upiMRUq)r?J_Jgt9I~Q} z$~IRO^Yb7PAn1xt`(wswu~CK@$4N-czHHxLaNeC`_szuqti<8{Q^gg70C{*I50pW^ z*Ns7YfMvV(>@jMJBD3sC5HKqk46}*i0oby*?zdukd2i_d+^vzkeM}l#?f2CxbChX zd<5MBmqK|v2_XiukHB#gi%DaKq z*)9QF6{V{xqjZp|nIw~)Xq=rDh%?Z5V-e*$&Lhf8#Zzbxgs#~#6Z2|o3&GnU8IsYK zBIcFon4e0Fn6KxH2wpZV2)@R=6a38ff)Okbe1&@Lw{rnY`OKpF{OPp(n-vL=JH0zU zYA_-h%3IOK-3p_`FjS)?R%IqHvo*s1eDLS|SYm(h{j1qL;*;~Q8Fv~-Zuav3`XY@e zioLONC|G62vc%B=seye|TAza>jJ#rTB;M#2)A+^Azfb>oI{HyF|C0Si)qH|}>i1~y zM8G2fLMp9>6Gi`kG;@{)NQ&X)DTg7}o(l8PQ$fUfLc8wurniY0mNs%y9%+Y*igC|{ z3#vxWp5{0ri0a$AnH8(7mL$CL8a|bL>K|YsB&rxYE7;Re)y3&3p&5av0iPH4 z$JhgJ0dIHuv+%_Bcz6n$N891+5z~`?OYG?BDqd8TFt|e>O;7?e(AtA+t5Cu|+VbX5 z-ytT*=k_z;9CL`~zHTEx4YHkhxtKU&3My8M8g}tO>@6Hm>ukvI17Vq?lsD3s{YZ5> zZfSrOf+~qFJ5?2IlC?X^QtjFR15)I4rX&EHZ^Fs#rO)->M*fT>`x=%*h-tkQ;6NJ_NDeTX zDjI8afTsV)d};n4VPGf$x@cC!$yyRdV*VCca13>~$!gOa3CoO0%LYSY?bboSEuSp2` z*q;2=ef3;bnlET#GYjn639j1~COZMgYSccz)6AMcR%m2`Xbx0Eh^4I2hhl{zz_OIVO0fGfd37r%zj>8|1;DH5Wnc!xK(TG-~28VhB=}tKg73 zLP`#ypM31+2EFiyn<&u4G;N3=bg_^;sJ^`{e8pW-U=8D37!I13Ck7CeF9C`dgdGVS3eNnDZ%LHj;od;|WHXq1|FLIY`@R47H$U?uH$9Q}-d`++*MIZDCmw&F zPP$!$Z_I7H|Jd*D`}uGFmT&pZn;t**hEL!2_8bIJfJ-D??3jI-+k!Rw|vVl(E?}QsO#(O&u{RqvfYatI4U&YcwaI1 z{>N#Z0~Z`qc z-fDY{p={hi(8Fkh&0Lrm>kyf$XD^mqwt)!BF^koQAOWEAH4cq4IKB^}?Hf0LVEeDn zz{%2vXr!8f-%zf;$~H}s+*UL^)vg)+(jd_}^Q~liKp?hviSqwG_6Mvl5)7GyArb&aY?SfsxBdUQn(Xg7?z`8_kM zZZi7q_F(f%4kS58{>Zs*{(h9M^Io+Gl6@wy#RJ; zU9RB1lB@KMV`F)JEa7cG4^+65(N}XF)UNEB%(P5t&3$mU=DfmA%SN~B2Fl2B(DJI; zj(CvO7Vjhni)%uv2FGYsShO8M+mgVXA8f8E+9Yc4Gj?U78{Rn$uXwJk{oX_z zqib7<&U}Ywa)u!eo4sKpiCaFi?b-`NOfMd#w$MH5Kyy?7SlPv>LdW8uSqBP@tL^D%y>X7^bmSbXZ=5^?6Arl}-?ihXICw@3eTtDdTyNE)ZvQ8mjsQ8A+A zP;z*eUd>@*%OZ-%XT#xZ1$|j!Rg9~roT~FI!lnGW0w?}p^=L66=Y;`eB(;}05wbL#Fr*AY{C%-W<8I>rYk z3XD1D;_rJs@r3`dai%P%2LH<*i1^BfggLya3lGov?F*E2dH|WY!`+wBHjW}V$#MS$aP-XsN6y+;R6ICcY`2p%qtrCKP|p;+IQDJ>FP#C}kE8uZO-MA>yV;#4d2ab5OIO3XSsWG_cH3wvY`9#1(_yg45Fw|hn()*0x{@gl97 z7kP452)=jM{hF{LO;jlqikch}y&uDXzW8XdkI;Is@C`i9QJ(hQ$pM^v@vZ~(^O$dv z({HcfFp5sqBPuw7g?;!auw6xwc`Crfnh&U8J|9{IC)jVw`=`D1k|FWlZ`>UHgw9ga zS=?MV6<`!UZo)3IJ;S(e2FyO5ZjP5cE%!9~x=9#MGM!|t;OB()h_B0zkCBz=&3F#> z*XS^v(iKNnZ*JuKHuKTNVgdL2b>#Sjy#V>pUM#@HWFINReXNwpmoHLkLuK}?5VthMys=*F{%c!`^$nbsW zm+|pde^;m(HLcMSj{^F`OhJCuglLM=%2BEJ{N8vGNb)^|J-Cj&a_$*I@!u?#z?dAp zKK}-I;ih`59?NYgf=Z@xYHbGItALav4c&ZU^WtXSc}$I;0>P*F2!CU`q-rP9ugbdS!|$SIZpp*lT-v1pUSE2jdRJq+m%4EbH5h8k5* z7oT)>*&3MmKs6|P3<=oxrtX&i{JN$p?<6AmtARVpPXccFnPkAyhghrKN(@`f5tXEl zoM0q$kf4Xk&SFoZ)oIlwgGgSG0sfF80>jp+$UP2fu3fkZ3zQ9ifa`8v?#4@{wC%b? z(}bcV-pEMWi*g)gu^s(MYamhJZHNMo4AN2X@a;)hrF=U2NT*=CP4~UbX+b@RhO+q! zysz=_f{Wq3;Ke(V6R)nFn{?u3bJZ@l!SUsKJllCaGKQYq3ZzCVC*Il$M0>(KN2~aE zu3S4a#y@MEFpJQFr8e3Her#%#@4jB5BH^cSMI}p%|F!QmbSF6U^(ZW4xX%{mcE}JQ zPRMB0x8m%1x*O;ovm#09lWP?1Na^FsAD+$Hg?W(XJGtpJ|sYF!w$>J@k?syVQ zrssf`YvS^U1$8sqYay&sAn0|AUI5k7JTz-3-WIURwGCfx`=tKZnP^QY8Z~TS$aAUO zP7&K_zNstGYuPb%0lxSE13lb`D;ob9^L zytt)KGvyrRnNYq+N*6Q;-iY>g#4ub!Xh)sKi?*5QI`&jzM0-^{pdG6V-m-bXBF5A0 znw!M>z_D&5Cv$^n+BuKVRHYDfH0YjK(t{S%v?7}BscECAc8gMZUUJFl5mm<`w^#IU*xDGZbGGQ-yjs|iZAaaS0TxGS&XuI6IMLTU&X zsbJv8(u8#9E`~>xaRnDcqbUYV{DER5$`gs-Rdg0KQj;=y<(@C49yTDT2+>6Dj2%jY1dnSqeq{`<~#u;@TO;U=nxsrDRT5Mo$(BUYV-q_(GHj^H7z;~iW-B-&>fpEf1B^6 zZiKTG~3yTp~7_XXz#ptyVV%#Q#{~7NP zZCWAL@;F|R>}=T+0luhh!XWr!m;8CLB%%CZy$=RY)k4e4wZk?cW!$8fNU+Uh95SxP ze2ZpISn!MmK5i3!6lEoB6MpG{)Yv98pbS0H_!`D!SLk_Z+k{_?wu4pm9q3R`YBr*K z%=RaTX*K2L6T^@8*DTBkdWX&ZOlfXh8x4<fT zvSHIpyXqs3iK5iB4kb&~Rsi!f#O4tvj`nyfuDjbZ%{8EM0k`EcPJ8fOd@;541dzIT`Fs6~8&g2s=CF0@SW+m=r1w zBUGq49|YgZ1}w=J@Nn&g1BE(;#YRBL$kHBtxH}_M*G}u>XHr9wYP*!13=pM`$Us+2 z7s7xfo<;-*!G!r9MHph$bdrM#VW$Wppk<^YZBVUE3)@~G#79mwwgzcwsmfI`1iYwe zPUe84ye7Rm3V6lRXfXtKmK?M}!{i-&B4rn-OpVfQ=hL^?HK-plK0==mm})RXtXR@e z*QDeboYJwXXl4LH7Y$Bwuzm(OWq)M;3d|7dfNcFY$~`_2r}{jxsxT^vjbJ5o?&jc_ zm~LA|O3le5RPWR8xn7Nw zdg1}Xyc@nL7{ermW_1iM)UjIC!DdYu?Valoelf0uI`CWx6vNeqyQ!nvTl@*zTg2w} zPS%TCAzn9C)zP1u;ZJ|f7X}pWxG;q9&+vSB^i%}YZ%ur{nOb%T{Ayx7t9O0)Q26kH@Zo8_KgWmn zgbz=J4^Qe{B_0nSemMMY#t-iZ36JutHXex|E`$#cdir@PdRi#Dmxt%|aE=Fl?(y%Z zd3#dHr+E0d9@wDJ_uKvZ3EpJuI_{~*JXP%ES!ITyDDx3d7C%ttHBVjjRQQR5u8uT87t^zeZmng!1DbrZ#4=y7bA=wU4Vu7huirDm^mtEWU}~2 ztoX+!i$~a-#XqLvga7r`)|C%0Jd}QS6e*tbpluRDpR=kS(QPc&^13X&jC+ecM|0wM zTk7YY6EwG0Wf$h#>Y_?7hKlB zdYNDj?ibv6%)uDkPTC?ZL~p5ZY+;w_cNK~Pg=mCT3dtN%lmaGK%gh}6z__@e>wQ3! zce@BbYw}*O;%hX-4wH%LpsQP>i_`;r!oH3z9b;E$2rptGi>(gprBpwV)jShy4Y42Q zTg2f~kXC&rSn%epfFU~*Y=b;sX0pOsZ**#^C7E9rc+~e~FwWpmG6}tOIUQNdfPTu1?#mVgHkgvVXdq?CP1f7 zNArWarR7*)=5wNwmYs`k%aaLz5e8U@s4&1y*!dNsAM9y|RfX1XbEh+~gT?WNWEvwz zEyp1;9r4dj91unKX;Wnh&;(4fh@a5wN$Ru?FqSqV>H}m`+nNXpYWLoV+}N$ean3+6 zcg_XUpiv!yH&O+OqQrgrSz{}SpQGcwWom&+07nNc@u_GX)o@?VUnbAqGl!A{q;Z^5 z-RJs7*?w`6ltpk~&XH2nE_C?_7`~05jM!A~FRs*cmkhW>RT;4N>Cy#+i~9?FLSzEm z$EH%90f!77K1XxBzu=-xof75F1tUA3!*7BXB$#Al+wPzD`HnWi#jRK&Rh3>|!^={9 zc`YwjhZk<3p3kp}FV}30b9_kVbu+9Vgx$X}9&;<@fsJutlVE{EqYy^R(O@zhFZ6v8 z$ZaOU{Hwmhj|91Ob40bqjI?k26?w6l3yuh3v7GPcNa;#`AYa}fJR1A6Npf1m`4#zC z>D))l_tyZ+mhbqCyoT=w`2Jd;Z+z$0Jb+5iB=_ zQ=t-~PbKOT1=w6xi2M?&X?E7!m!PiWfv7bUB3Vu236|fSv6BQ3Rt#|>c#Ny_)#52m zcao1@y#^%5zt)U(B%Ks{@I*?GE-tFRY6&`?+YalR`es( zrLzCl9QG0*UK+YECN@uja%AAKWlbl)_%PP^D+ad_xq)+&qJzDxe4sDQ_iCxdAiz3u z)|ty;2E%sYY!_XzPtu}=LGujzss+pmN{jf=uLen7Rj3pV9r@?=Gp8?e(RF;Wln-NF zw3xe=Rrsq|?dAwT63P;ZEB~t3*Hvg6v!&(R8xSp8&E5dh*4HW{kM&|+;V2XUiSF%V z(XsCBQ}>ve);%;3I!*Udu|0UGNSlv!_ZF+}0sK60Dc=HJ+G`6!j+6X?p5|EyLkGi7 zFT2j(LDp9Fd+uwJR8h0-sr80LP9feGZpik^_C@ef;608(1fTfwivcY1A+<3R zrqWLI&4x;MC0!D0F9THCkcyas6Z5DL-#RDpKVIJ1Pm4$=mB*ZY83MCb!cVcK5@<^D zCr_hFVjFj00i>K#I59okZNZc>O2{z-ehtdFV^Kn%=oViO<3?WUv@fanDKr#4@?`P0 ziql>tZiPY;YqixGR(;Tox+d*NrpCJwNE{Gb;BnS5ni5DbL$+w^dR_g^GxE!>c-w7?})zb&y2s@+Y z0Y?jfR5;KEjmpnJi{zktWwv+JY=am_%CeY$=$&w?s~>#41(-Dbdugd0m4C6n{Cb_K zX$h6ED;Y&3cA4*yWKELWk&H0b+L()6&^Ka@3R}$hotmsM^BOa+G4t4gxEh8UoyE=m zH(!v6dT$s{=|;f%um$Nt#bG73?;VAeFI>q+Hx#a3I;ib&}372Nlle1_$*Ha zq*)pd>QjL?vBGni?jKDEf~N$e^k^rK#xX zk;#Fs!{Epizr2Po@%B2L{dK-8lwrqA1`6hHSP9bH92Hp*2zXy|uZl9LgEk1oJX$E# zQ}sx{#cMZENao9-y`W8?0hMjbk#7{d@6W$tbK@e)MZT$H*hzBwfV|bf3N_0u72TwG zZNA?EF~K3PgC_P2@n$%z_=hj(P*RLhEu^yYj}S+bR009>piyXt+Lkul-m8NE?I8e zRy)x;d34&xZhqad_g=3kA|D2Rsq#MJmZUrV)PLa6NkTi41{z==Tt%y&p>!fK@Yw+2 zt_F(+AmdbMRL$XNsBJ7@=rf^S0|@>R890vnRgxIE15`0(A_0qOp)L%sI1!%*)QsWNe9Wlerm&E}qCm_t)Z!>PWrqPNd$*}H9ry^-TcB$Z z%(MtPExA8gD0P~kg8_%LL)nH!a7P>h``r#ZfK&(*Eej-{`C`kq2)f%Qiy+_bwIi)O z%v`0|x~vxOPGj*t?{jc!>>G=BSfzHvIUrT5ln-tu|0sC#r zNDW&ilqCQZW>_r*7;0;2gh5n}-k{0OZE-Mi_1GE@D~Tmr%VK!1VDns2H>-IizZ%WI zW_I&Rel?o6b!IE_mHc9xhs!j_zQI?aW+X1@OL6SuY7+sg# zDY(&~i*uS+(5B{0U1**{@N?mbGGD^NMuMtL7TUl2Og8M!%p= z-6(GhnDaU|))K3VNiOClP*jo3FnlUgf(n8rX-dp0>^GWK1kugst34BB9TYXTOO(l% zP#GFkf0$KUA<$e8+*XE0o!sVFh#L2TZhvIuG@z{Jm!#D z!c@FbU>BCShWU4+;AwxpB3TO?awThFpi9SnNxqyJ!YC!5CylEec!HH-Vx|)$AS%SQ zYd7n^=({0~HEg1nz5a`2IIp?d@gc09nAcr&Uk3Hccf z+E7b^4(eH^zGQs9aZ8bXl~YUs`el(JCsrRL!!wB3A~3E>(hsEV-%JOA3{6BYt|6}r z=_?!TRkVYU{u(>}nG|DEOj0lQ=dUpm;K)|HDDnfM15t-|G)NnczfwQ_@hW}F=+A!C zj%&tJ{B*~oVCNXRq@Tz$xUEPg0?Ag;P1RS}51}jGL>CPKbk<@VVn(peGOGxKAsdQW zc7|rAmD_g9B38?`+sbp-1Bwy57If>iIo+XPi1JDC*!KhK6lw(VElfAr@4CcFtxLS| z7U~;U`p0Ts1kK|sx2PTY=sU~wJ9Q8RV(rU}>ykk`sF>y+!r(9t{lerpomH4EgQ5}w zFI*@@Wp)Ee;4F=~FwoRS2^UsOrFPXsO}ONuYCv!OO&WWqMH^8{S_){?=uAe52Fl8= z0w``!@mc~54LO+kIApRmV2JBRY}eNfZ`WHjiY6c`aH{p;B@iK!1`$I6A*Rp}#v6zT zKzO|-xWv62l@I+_5@u2BKX8ar^8@VNEss~wST5K8MNu}(#@DEqX0Gap_i1I~4ONH` z(GdJ)S9`f&yxRFSRf#rVCMWDf1m|eRDf2x=USu7&$x5(cXJq11h^n?lHnRDvRhaD$ zN@;7S$0<4rvHXZX!@k%WVN@U{Muteew!cGwdFpp9?2P>i+ZyA>{*GjRcokn*u6+|j zTQ>`5&Xx}nZ@#XeX!|aY*6+qHPdo1NSVdY3CH;qHMC?|-sdG#jzhnWB>ENlT5zRDb zZl@8Qp1B$}rd`nFcB2th=FBY`5jvjD1$7D@YbvFgGi{ibHB6>R=M0jKkD24*n234* zZ5tDf$lpdC)wb?fGnhngHZFo&@)<16JI!vf@#o>JOe-YtJ+eniKjc)en-YplPDlD& z5Qrc85;sNW&;wp0wlK>Q$Z8A^?$`3ITuQ22BTQ>lT$$)_#5N85KAO~n=HRUu!AWbB z0OTbwgV2U4E#@4;{RpsMxrq?ma2l5Os{jk`q|670MUd$qKSmw4W37VPx>O_ekLbBwRNUZB-uCbFU~sC;8PT!E@o=JXZPs2y6M* zk#~(Rpm5h^{@GV#3lDb{5CWf1$jr=~=!rNk5WOeLh7uY5zB8_Hkzz~2aE#}I#2&`G zj0U6HVN22A5NS>BEfSk{L_bn*Fc{&-M2%ycgsO@<^s!9G^XO{wR%mB*!c|+{8Z-Nx zB5()*?p~$ZS*mRl2HQypm$OujOALlOE!kSuRC@)RC!8Nx+tR#}UybI)S!Oiv3`hQT zuWauL+A^zoCBGWI*QJUxdavZFd9I&x(p%Kx^D>d%Vom0S7v? z1&EI#vYM8LeR}Tl%+dgKuw7>NUZEfEa<*8KCQ4PB`f-nsB_zNE6W>6_o>NusiAa>k zd|!CkC|Zw>4$1TKR=lf0t#njF=!yw^z)ltMaS)5f>BhB*d5K zNsi#dT8a_0l44*}usE^QdG`R9K}_4AL7hcOlk8ehn5JJcAbHR8rPRYU*l zZ#ar;{}mT24KCP@fHcg7lYlr+=ayeKLK~dnKB8nXf`dY+lI|&A$wNpUs#qK~%2-ElhPEs`#QX zXC_d@yh}S_;4y9C3$c_h7IT=PkV3R73rKUr77hElH7Bhqn_j+%Uunx1h-dlIsv$8% zt9e+r8e&M0#Hq4f_}Wy9A^xs5nzMsiC5xbh>&St@VoMkK+5wiv3ie`Qsl|U81RVM^ zx!MS@NG28}cp1xmz*VArpp|-T8w0F@`MzQ#{B5y^2ylE`?GVjgED8u?Xr@5~0@;}a z82+D^6lEW7Td>6)0YFQuIWNk8l*llM4~sqw+UuL!Mv5Tw5Ywey_pB?w8f!Qb4^5jC zfpp1{6$|AY*6=tQDsP3(SZjs^TC3y-R}tLAD2!o<(U78kagmvNhwT)2i+SyyOadzG zBI{6DCG!}x#Bg-lsbwAxa@DjWSk=gQ&Nznr)6w_vPd{HMzPi2*P5;vorulHtZ7B?$xizE%l&;|%f)l}slRE^=ec}5J>w7W;o%L{!B|Mg4`^Ec z;SQ&3b$0q2UVK@dp`C2nPOZMkrZ21P)~27;(bgB)^ktP*)3&Vs>asH>Wv-rCmJL4Noec{Pu`gFQRP9aQdxO9Y%j{q z%Mp7y0$WmdexX%pm(kQb2;@fPG1f#P|FKc|ffnI9baI!IqL%I9>#_4CVo>DP&xyg{ zzrh-a+N3;1#?oQxr$yQ@(_k7*+f&y*dv+NPd7AnLR8-GD{CA63VrYtA2S9!$Hx5Er zb8cT5ytU#RC&;98@5lN5Tr~@C-+}j7pcKWjNjOXDXZ#7~9}fF78~%$|wtmqX^5xrf z84w_V*T+Gq^~28XZ$3+sxalK$V3^7u#wckxe>WD`82;uGQ(AS}iT}^3hDTNVqp^y2 z?!Jl(Dk$&q2l@Sc5@6ui_^x1h-nx+;H8KmqShV)K2{})>D}b>U_nBnm2D20A4&$h@ z^TJR2?C4j!9_Ig7EffdqZb%if#G=6D+U_-(m{s?>8UL3gfLqfVYV{Suxw#W ze(mh=Blm?TedNr$GbcvuJHDsAeAvEo1yOzBSps*mEjsVO=Ve}lPn!u zsVr;GNos3QS>u#PDr#g-Ld#pJEJnj)6TLxYWZgn#oXVJwrtx>g!kZ9WE<8tzY!qU zh*`5Yv29J<8bYdLvA=f@t1_gM z7ZyIjhrXP4>3d!ZgEoNk+RXL$)$ zm6jibb3CO73O^oxkx=dZ0>7%e4@!Z0#m;i_usZ83XWBR=Qyp<7bMB6^Q_Fk9CoEUp ztN3Wy@($n1>*ZbB~) z&sHMl!CJ&5xTk8QG3z5Ex)MHuyA^l>m@r5tF47_!Ct}^Lg~x5P1?Aq#0{+1<1RcEk zqQI)7=5oMjwj+hh?$(kr^)aM;Tj);KEnfPDuanIizN9C9{B<7ZYdz=-$1bfdBpxw0 zhW3L#4pNCJ0cg0p4WL_YO177Hx7@Ucti-BB(_CI=do&2_2zdb)Ej^M-i~gVd&prt zNUzdcMJ)bKl&QF*+Bo&rIDm23kR0a)=Ua?M!@Q6%7Ul(F?-4$Vun>EpVohaROKgz5 zm?vsxIN@n9VT%|=#mdbk%1*{H_cUB#Rw>Lf70Nzg{;SO_ie?W((K-t85{BtFIJCto zB&i;SK&;5>x`*yEiYv;E)77~m+-jqDxB%CG-K?EleY+>`Jy!JW+M5eE-F1L#Q#gv< zcFqLoG&62_yx$bj+E^4^U2W;GF>q_y2+K4=0#rrYOj3N1>?Dlv9WuZ!0k5Hm@EU|3 z^p0)(hLEtpIf{rKE|nqzF-1<*5PE<_qPw*m6%iqRTd^gI)@ehuW<;Y7L!;Kxgd#FS z=yCF-*&te{E?PgELWbEx;$U!2+YR+ts%S2s?y5WTWIWC-UH){3ZZpErb&uk|gFzne z&=`G?d*$RyXM<=_mV78rfmSLwPo5+>rRYg!&Ro$6m6g21S5{i+!O|ITyBtn5(;9so zBm#?s32Hcva|HK}aktM&svwYyt`TC@M8Ihe{##vFOWZrObmxKbD1f_f1Lx5z@;zMD#wfNACD*xyQmrbU=xD<$ zAt(=4N8K?c0~%bOxMl-Ar6%J zm3Hyi6(#5iF$ITv*?Qnrj+}FHOQ(IR1+uR$7BtP*5G4w(#sVXX>ZRDfj1-LOaRhk< zY*Cgck%BFp+l1oJx9&uwIy@K2{BF*KdZ;&rsTX`=gzWd=3j|}3fN(vTylI8S!^=kD z>iDr8pBS-@Eaqb>ng~(rD0p7D07SFr>F%0IoEW$lQn{(BWmuH3Bx%9!LF(pLjQ41! z#J_^#ZTNvI$6`BaGyiZDqXS$5s4K!auWnGAy_MUbMnA%_@|NUyGO@3UJA;Y5RPzp6 zuXD{e#i(t1!bXf7wVqs$HEY z>jV_uc@7xiBA&eIewA;~7^B!AGMkX+3=?)!B3&Gf{t$d2SX%bTjr02;MM;syZsZ4KB2$UA;PUpjiSJBAA2eQ)p5AgrCW+&rBf z9@9@r1mW9MWY>M+56#JV+}%dMEJX5L5d3p3J9->?fz^Y4eYt!@ezuc!9`bc4sShMqY0J(UCS8KG$}j- z&9)Etw*`KHHXHq3`y#He8wElQ06%^6V}hTX8SMohKcyy#`sN5I5;;183Y~j5Bxsx7 z;)g5FRZseQofDeVTwv}gw2GC2`3ZF@#n{zVu-`prZJlNgdaI|$61LbwH(*$PHi{vR z^mKeMdR$jOKK+g6N;eq&7?YNNwA9b#!wvs>x9Q0XpNnIJk)gF^W9A7l z-!FPT!PZlV#F&0_Os{(vdK8aj%c-98!|E^;Y903OxgU0l$)&~NM|j)Xi=fSydmsL< z+S%O0orff0UB~hbMY6OPi=fyrBk_oo+u^J4()n-_KlJb*t{5W48+D2$X=%9irU0S* z9`i0k!#a#WINf~Do!B`R@{yf(Ajfg2u|4`NW^O>0#gxstO_Al8u}v#MB#aTof#hU9 zeC+c&v&~^Q1oi+NNpE)M!XY)JJIi`3UqGHrt@FN)kO|WC|O4fFrY!1RV z_Az2i0D+0Xa4Cpf5=Y3O`@=b^i^n{jGZ``G{F?0oNcf(8(Nz$>=Un)f&kcu(qVV1D zQRy{=?>Q()$^n;*oA6y5-a~_ueH{qJeDSSD(KJ5Bp(vn_tR)3U4BbN>FmP3x<=8Eb z9oq%yxX8^&D#CGNND=3^3~9c2>5<$8ZU0=#0_B6P2Do|17+p}@L_4;tXT*|8+{TU- zZ5Ec8j(!t9Z;A3m$}Doa_He~PwF8Q`x_^~KM za9d+Rg(M2A)JPs54^`vQC3Ywj3W(`44*V~3a%c2MUCa;N(eHWljD_^B^0R-x{EMaX zXWQjxuU1&bi>)lH>=meQbO5+ksWJ^`z3409h)N)+smL#MX)1;~ldd z+PorY_^(;?e@oK=PP@x29W*oU_dh`{y%Q)S0( zQf#K%7X)wnazXFDN8Yh}e)896=aDX{F1Z#4)Y5$!EOufS#>VKUzJ0C#tjjc!ONfnE zZvgc-e&GvW`0Iau;lhV*;_mhE>~xf{ z&vFKU@8zar@pF>yl0>7J9-P^`s9Ab$qwp3(!&m|OI-BZ~;&ApF@c9Z6P`@hfM-ZPUGM@jG)8uw5EGarabS1?)2oC4 zW5lxI`+YaB)8bF1@wywtMg(lpj!cI#tlM2TUJafif_wD+*mDkfyU&}s9s-~kyCFf4 z$N5W76nAHp!QsovJ^ID|l#8QTfD^T`3-?GlMSQon_lS(!R_@hv6H)WQE%0SEX{+A% zr@mYAWayWKv=&Z`!vCRU#Ur#f!)$aUSkUtJ32d%JM_u~~p zT08^2K|${L1wut=pJ7TEtt?3lQ8DdNI+-GzRKi^i+jcuuqbk~U z1XAZEK;k6LT}kg^5w=?6HkMAI^RaIefB^9<(G;f4{4EFazSVF1UiRhu462ip|C;aN zF%UH_752(6&O$DzkfL~SK0j9xWNgmrkPv#<^(^OMh8k>tgB7Ccv7Bwza-GqWL3S>5 zG?WKrp{ks@m)Z$hW?;Asil(d9eGgQ^<0O5AP0LM}GMp*4R!zJAprnfIA$Zz_4;n8i zGd#KW1BdwK4GB8cp(K^5y5vpQq_l5HWUgA^6h1^cdXmU6URtQ6j2Uv@OVYzPKQ>tR z(3SA0vQ52SZ5FC+?NF@^j@6jALxp231+e?|OsCH;06YUE4p?@p+JVo2?!1KB@v?F= zcB6%U)dE*%SPQ+eOxFP|(D@Wv_!u#gr_=C{WMZ?e-^Wf6O6+ z(X+kLf579G*WW{*;#EtwUO&w_N_#~e;Pv}Fvo?Ox!Ke0dK0JMhK|YF%jKXNQF>)!R zNpXio@}vJj8e&?0bYb)%oNSSbilOM1s5l7gnxgi!Zi0QO!-$w(?Uv_12KUv3vQzsi zL3U0O+?d-9c)*f(W#H9B+WJ>~i>p#hYB!_tjdmcExFFia=2W?4d&wLYsgIRaTc)rE zZtFFDr{(8c;9p0^vZCPBt0SBjZj#+Zwq|7aiF*6DU_1`>%BDenRiCiOmCzd8fN}B& zFWKmWcm!*q7JkgRq%S*ps@rnh*96vN;ft`9!%AF~11Ua}-4;GHvFD8o9E_*0?J@RM zR5k$io}xypi%z-5d`v%=Eom?CG%wNt-0BXU&^+>|Mnx808LqZUl8ALfKC0yqad9sl z6-Xonlb>WTKe?m(hQI(qpe8s^Y(qfiVmM$yd-D?g4-e^!rErsvlmhWKeaJnPZAYad zN1E7=pj|$#WlVhEcD>wMZvh|GPV1aWpXvzMCSiC^9RZKP2s0BN$0EX3Id{(PFUko_ zMJsiQ)vYDOLl5dil+jjq*mpHfh%ffop`Em)vBYHA!fbAY1|B|-F%38o8#NBr1ZTP@ zCHe(yn{vO>(cyq{*)AN?!eB$c(Xfio8@6?fCBBS7N0Qzha=r#M^>g{bQ{)U zg<_VAg3-z&K0c{2ji&)QhwU9BTTa-Qf2M7vORW6`?Nh`}xNF% zH{iDE(bExZ>^Kf97_&LF3AI9l*4QM`Hev#=IX*E%8Fsc(s}C8I$#5k~Rd-};rA=uQ z(asv%w2^XqY;3xrd13#zabgfc)39W#BQ)LUu9^;Taa~22Bc9pc^Ujz(kyNM9Ibv=n z)qRX@>dGptv+9DvLYT0H2p$?1w5@m$Fb(~0D=^mE1~7iyKg`y=r^T-#p{@X9;;sUs z{3`O1P27cnYj)^b((IrTB@cUBPP)C^w%Fy*)#N57eqLTtv)^ zrNvnok|X@I#{>vtHJ+z#_y#Jt#$vu^qz%Goj74adtp#xt&Yv}hgee_oHK!SMsNWc= zPwhw~#z;L$twB24oQPUE0kFhKp${P*X_qamYEc1HYk#|CMP{_dvQn?L0S#EIBO0`< zhz|tDV@%A@U~^Ik#JsWNdeT5cV?Egh4L(aFhch&UBwB;-2@Umn;t28eM9YU%6Mo3p zTt0lEkT;8lLmSMlX}C7v?ne?|ZQ+%kVl_0D8Z(7@X}QyQXI2j_G2*Z^5|I{|8A-d``8%5uY$HTlqZ#wl=P)aG^laO7!C%X z%F;Q+JqZRf=TVx~z*TI!JuZQX)Q-P=n!G*E6f?yyw5Gr(2=k`ck$1R*6yj~TQ>O38 zOBHf=FN*|;aj12+?A;fHu>@N3+E9z6T1y^aF-kULXymF{8GVT44WmP)+*$yShR8` zb?z3^dyTbyTO%PFYUU@mfp!=f8qyXUF zO>$8UB+fAlBk}TKw6H&1E8lsb{1CYRN}1=U*S3G%V!(*OwatM2%v>BW+DXb^=CF>9 z-(d9o*755zF$P4{o#zm^k0G;Z))>ZGnNb?jSnF7Z+Rns~l3;_XP08s&?N)=z3T1@G zpmO7)4=SRD29hH#Yf!b|AuC-@v$!29Dh{mSvSyu==`n6U#6|iBv3FuB}K~2`Y=8i!Ww>CI?$D zhg};x)LdnxF*Y04Xo(x2tV4Z`X1l)Iq0d!f$zz~ehL>Zeh;tw-0dGv z1>o=S*H!yTzTV$X(gP;!KX#5nEC?uNIL@)<#W( zcmJ&bQfBwh)hZ-2%5N9VGxZJ%zn zH#Ji9=HSPA#;HYXxA|xTNaLI|RjE z*}7CRH3gNLx$aPMA2-r={r{{ zR))CI9sK}X&Sm#I3g)mmCbS|F^nSz@eENeYN?#qpZP=Ej<$~zwlHr)5?BhuR2Q~PL z=vmSnw?3kPDo$Iw>?!gj&yoiaz!vn303tSu4MG?d#<=1jJQmpoD~Q$T0ofKec(dT~ z%DA}kSg}Zu_=`xKgs`d0D;$cdQhCpSSxJo=khEt|6EM7jbRj|!o3<)rJr*@yd`49W z6=z4k+m=*pDGK3=FA6D)uALN1wbdmahs|&u*CGwmVi+du7VWqSG6Wd%w$Qb z#=l#QKTl!&2}v&%(ZJ`LYplr*v=%k*@8@lK@B?uy*# ziyTJG;49{EYNHRLvT5**#3sNOW1fV~s@1U8txv-ym;U-|Y`F;=md#nP?ZVAwTJ-vI zf4``uIL_A$N-DeOU`$3Sb1+1SvVockjzbKFpj~)Bl+ZtRZuiUP@BUj*0?S zDk&k~y_E2+uSm6FRmZD+@Mcgpv8uDCf3mTrZ+Zu-HGQ=Gihd_}s21y?=$6<)>N1uk;XZfijg**zpw@t%aN`Y@mAx}?1j6B-j9_asL zXyLm-!E?#kqQ9Ed^LXo1qkpF=VdU=FJv51srA`soLCa3U2nUKxTDUGdLI0T+h$Z;t zAJoEGOCHB(N*I(e95y76ScB3JHqsBuFdKx9whJBEf9WkGzTTDcH9dXqv& zuM#@ubDo3Hf$86c4i-wx6E1YXn{dx|p#yHTpl2=p2qs+qpmkK@3!+KyRu)WQidCx; zMzAu8e1b3`h7lLbV$TL|l`yggVPua9BjTHJ&E+x5B|-ujT9Q_fT|%uqMk%8hS%%R? zkB@26%DeztE&x;NHk{eI$oUPew^)sJt$F}C!fA3z1k&1y4fsKoD8>Ndlo-$scS!cJ*(s+Rr0~t zqe^K}?BfJ4l0-}$nV6cg0jf>#hU}_Yj_iG%E;XzK+Jin4`uQ9|kJk8o8}31jWOQI_ z&#;**g3*4mVsZbK_I}%YmJ}_0W*P{w>qdJHgz=dM5JJOq3AWN#Uevf;(d1>%|IDHg z`suX%n-y6ee>SbeL6f;y_>7BmFChwI*mF_PI9DD;K?qbIDwZZkPYH6Z`>B)r$)2^NW4`PibLf6CcEx{K2>3KyclM(0NL)CTAzI#crIC$rH_zbodTlXG_ zr_|+pPBCOI@=}L{I9I%sC&AHQ#+XHBnTk&PbfNltuMD{DX8dMHW;@mGX*22b}q{jb<+M}o(q zX!NaP@}L&Rs84LHh{r96(FbCPok_<_IsZ-OVbSZH$V;Vm+~M z1_=qWQg3Wtym)iMpVM!A>GSO6WHkR7p zztz26i5g1Oc|{2amcFugLHlcU!m<+P^mREpif)n2TM05UQkJc#{fjzj+?PWru5Okz zcTuhl88@O=c@#Bwjzx2NTmu;S-o4srmuLks0=D^g$SZ&zk5lCeHcp!@s6vvEeHIjH zqswFsI+F&e?jyEz@ zilD~PNwu%UtXD93)r187Mm+j#LCAeJ66}zPb()cuhGQgm^B2DG@WUnEijwF;=X7`# zs=;g23PVH|zll0EY(+;03D^bnlVK&c)Qls(!m}Id#5-6c$zAaPH3^Rdu=Z$EaYBvi zq|g=8v+>#dz3L%Rbdvy(GqImwaT;_GTk-!CNt@n z4r9B?8q0BJBwB}SWgQ&-NMFm2+37Rna6clUQB5S2m&xGkjl@L^=tE)_@EGndWUxsh zn>Lr2qHlrH_&GZU@g~kEw(|i&d&wG#Rt<%1QnM5p6k-@GKinD$iBu5e+O_6&>E*1B zo!ytSI%ewN?dcSrj0*#J?)TJMa4z4KuR1K=tq#k!;2qYi_U_url~(y{E9~8CknyoOzb!Fw~jms@uM&QB6$;H2ag#NZ+L8lM_7bZE4lLlw;YGx^BR=72_Th{zUFmp(M^vgY5EfDpKPHFDPf_U5pP((6^fDR}4 zG~he*h4j8M*OH|{v$szr1Su(3%b&lZ{GVE*f8HxHSsZ}6eB@Vv51#DiQu|r*H-g*9 zYAWA}RP~w=OdAs|&}CaEMj!6kB-QM6fB@OHj%-sND>^^$6mCrG2!b zfif9(22&_%ZAB4g_<*7vnyjgfZBYbM@sgx!4R$MGH4-5F#p%y(1%)V`b#==_w;-^B zekkv-vw=A~TQOE~pzR$??9b}aCm2l6^33D%Vb!DwBb`_`LizdNU~6Ri4w&@=tL4D;!tIeqVeuGX7 zGy%NqjKS#eb;w6sUwsP(m;>Xig3erd$y$3%D3*Y{{8>%%LQ)%_UR!6Iz5_yM{y;M&tPEKRf7mPu6GC1JmUmO3T zRsKP8c5x{|7D$6Ukn!8jHCN7`FE6}s(|wfqLhru&OLn;M zrwvgCQm6<>h?R*2#Gg54kd?4!W&Eav6hBr0d((a7y8ng*zU#Gizso8q+XE3|BZuOi zsGDWTFgT{vs(atPumF^0uhp)6@vA|pLWPURe~ z*fwHo5LFvyH7NE`fVPZos-(n(;f)-`Q<%shzpj6lesKYi&F-@;H{<@WAt5^|sr;bk zTmmNaoOi^>c{&2(-OgaVpA@3t`lls}TPxflQHD$s@&j9^>$ctDwc{x0%pCJueQ6Sy zjv=sZpG+ZG!+wxzsSajAJ+y2Gei>1nfN?<7s)Q6Ve_k#^OM4K(6kt_){u}@kDM{wOt#kc1UEV z#VHl!(8p-jmSevgcO5-54CbP@$y+C^V~L}$LCsr@#4~QJu+HteY={$UJ)@9z3hJJz zLk5Z&jCSv5Yj)>fF}w34S=P6EwH+xvQ`Tk0Ig5q>p87h{WvUf&tgOE#nn-)Xd`pN8 zL*@vZaJ4b(MybJDVQuWiiI8MM8s2rEtW*Ttyi3YhmJf;TB@2-%kuEaa$T^|7@fd|F zTd@aKwDJQi#e<7^sz{RTd8OZ}#aNay8Kv1VZYfSwd+V)b(=XGY zQjFSNiS6$>q-2;YJzi&XQlFo0)>?1lx-wVd0=LfnkCTR;^0=G?nWDsTizr{8y_fY` z>Ai+^0{05*#Cog~d@njn@m@i>7N-p zugQ9H@$=#nDt@b%YOpcQZ8_wNM!seO#*@~W*$w=`Z%c`1z4JR*nSgsT&OUi1#|XB_ zW_rW_wSfr@Bdt&E4R7X=Of*TklqdM7QK?NZnS%s5n%?l{AOW+Wy4*n`Xmxx?w6wlD zK#~JIB1Ga00kR^%vYLNIOUAED?Bxzrb6IDu({n9L8H^S2f*ESLy(})*V`s_)(mGX9qdBEm^&g>0ZsD zh-ef8b8|@!g-wS$b>CBt2elTS70&;T>fH*bCwaP`1un`1LNAS?59GBXB(vV1#~}if zmtQe?$==^Fw(`DTGhqiyxvDMYgc-~fUvKf~d)3cbdGytbqSA?pvhC-=9sR4^<%Af- zo%Z&!GjCDy`4ZO5aJv^q)BlPxvMnrm{(&g4+Uomvd9W$lxAR+pD&Qc?GdbvAxeSsI zH4AXnUnX;>A7&zm=TD1cTb@zz%Ua@9Ec17Zy}w($p>CT)-=4o40_~LkZsrH)&rQ}d ze>eHH;qiuFTZi?w9yB(g7?y?tg3}B(HX%DxNaWX+D=kty>K*3Src4cYH>ny~e#-j{ zO(%OO%QoG-ryVlRT-7os`({%t+?(~-s-1UMgQ@M9pT;{aMvc;cSK_i}W-=?~Py%&- zb8K)|(r_TX_uJs{?nlq&nw`D45{*d%*z_3kB{bHSG;<8|HYn6uy+&Kre+RbTX3FvJ z_B#{yWhU$`Y`4suuB{HZKlOX?XU42?sOAjLtoOh@r_IAt&O)>5*hp)qRl{II$FDix zUU>>!0_*W}fc5$BKCC#$!Mz!EgY{J7{`HK7gSMwx1f-9Cp3uh>`kDt1A&M~~6sitK z=eB;kX0ZB9sC(k63hA33gMCZH~IYBR=r!Q4)TmldHnRQ2%HA(kpCh5K$anu-at0U8F z7AdE^hf+G#jb~Eb5G#8DJqIrxLv>kd;BDn0eur*m-2}=o2W1#>T4h8xcC#M_ZvHCA zjf|CCW)7-_U-%`9sNB%e^8GzjEHiYVUSx(2vZ`jLt-+v`Jm30iF?3+nLOy2o3d-EZ zp)z_;>Tp#}eU__2btKeNfK>WNOPr;a)ls`{WT%TYmNY;@x9W&}EF;P-9aVdiXF2a- z`2BOk@AP4^fj;M9n!ZRmud*jEQqGG)R2(+-3T)~JPS$}^_8zC568I@`1ReazQFT*7V#7Fjd+6N$0u|H=oC&p+mCFZsuO?ZsI(Cq0R(r4vxAoTgZZ zuvwzTIl;?Ri9=pX7xDG8XjdfXTCzwr&z(%xTwUIE6>SZ7a}*{cZxvJgj2Sp)V{Ua}LgqRg$N(*3Ntq&tcUi#4)BPL1W*@3Y!j}23&Ca9c zou1|AKm!>#(11T%t7e&>ZIBl1GpLz4%^LF474>$@(Eb>@pSC%~SD=DSb<~w$Ic{`O zQjQxwoFZeNsg!e-Tm8#BWx(bT8en<%Oxes^KDDw5&4CdL&>MfEQ$15m^C$#z++yVE ze`S6+LN{G-n;bkHtm(@HdpYMz?(#4~&q^hBR@n|NEaac`<_H&ts z?PqV5y2z9;ApW9$M=NkFKfPiib;{UJFPn1<7+W9drbm-z^g~Uo#;Hzu9&)TYgiNtjYx}}`>@$-rLGCMY^LaGWFsu?V!B|BI$cL7N{k8l6fCY63N+XHz1fh)4=nT7_JD zL&#;v`mBp*KGrAUG)3%OW&P!ht?Hlg>7=Y=3OVYfbd5-F#OF>$gC6x zcd%K6IBMXh1%YBcNwfpov;n$vP(lz_`@q}Ae2wQ_mY9FKH*vbadbNqWe2q5|vZzC| z%}w2>U-QM@^qqN?{NkLbw0+hYS$`q(z0KcmRkjHwpk)7IJfikCP=eosR`0d@Y<3yTbA0AGZVbF#BRb|iC}ANEX5wl zIc9B*oohOVog5`Nd*Hs20WX)2#;RYwML3H1Zdq?~UFO`Bmy;LbxysXAh^sv*K{#Y! zT(-5jT2+)j@W7c~UD6~>DoXc0|96YhO^U4oqr`?a+3u+C*z>qEyX zUDFrE%J^7jAUI!kmR&8?T>O6*jBr4i*U#o=lN)+ll(jLU2 zF#V>#H1Ryu)$_&QpGD^6(W(}qp~d6aG+<{7>d9#>C}a5VCEkK!i^PTnB}))b@d>#F zB}>o(&?n>;lq^9O6rUgq3Sbno1lI0Z0v{byLMcn&n-f_A%P=Lh>B0q|!gGK(*>&Jc zoHjgPw0x)YqYXcSHvH>VJ|Nq1Uh1ia;XA%efG@dRd(4)cnUeZ{iyE34Y!C#e-MRRV z+h*WlAm%%%YPNY*v+ZA`YMT8fQ#DQP%v4R&STa@9G?q-&G>s)wHBDp5c0f#H$#y_Y z?UW&f{SQ++GgZ^n&P>%bwKG#SP3@!tN}z1wDuef)*LHFhiwT$S8k}0C%(WUfU8QVj zn$63en);rUkQSXaSEia7q}{YArMZID%pfk*qLk)Jm#j@_j98myY|1orPTYyf(9zTw z%`L|?M)Q}-uEm-MM$i~-ETl=IG1^#2lSE^*v5+Q-#%NmN!W?fovP?^CsEq1x-b>RG z^B$REm_u(spPyowt8-1OR;yw-Lk*N>n5lueLMhEKR|EM7&Wh$nPNx5%yq%vptVRDr zla&4ktNxDZe+|PLJDOS}XIw7R16D6{DUvf4JJUn| zO|kpeRm^5;Ajd;?YUJSZJZ>_4v6Ta59H7G~^wn5*u4O@dUYMFeu;MFSH}%4Hg4?^h z^lk1yw)o)j4{?5UJ9#PozvA1-`<1TGF6aH>iHZHOPMob+S3B?)Wp%;+>WMba1_X~= zrpK_KP~DAr8SfcwH|;FnUk`o)wJXGxh9ausR~~!pam)7J3=QG?GX4>c?2+O1B<*RMBV3RNF26B(ti z*_uY1H~|5w<8<-XF*`PJj-tfT3A& z5JtN2 zl=TxQ{`gg8u;7tzS`Z2liA@}VEQE;O$3DdIXglm_1enE7EVp2gWrwc1q&iTp<`&T^ixm!Q=*nUpn;9O1QrO#}8 z$Nm+a|2P{0T=DZC|2RK2`QznXV^lc)=n9YR7rtYV%AwF>9))=d*^m1eO)VzLqohPk ztZqZR?oHiBOmIMxKtJID7hJb~)!!cLd;FW%9=PsxujzXE15-w%P{>feM z`q|~m^6(FI{4*##a^N}IJeV)Rr{;BrOBL^nk zyzAE7x2XRU)jK|QV6uMU_u|qu@6`yk=R#$=_n&Hid1Q@AGQuuWKcp_#$dGcgOp~8yqdusqI;{ zh(-!AXRgz!Xplm&JQ>7|w`HgZ0^CqEi}!so&?TGCCRzW1ocuTp;jQSey{x1QhO!SQ z(hUCTK;S?6Wd}*4Mvb+3wAd+d#|Pg4HnYZEG?c|0aPuZ>^T;4SM>{pZMk#bJ=;opWg&F$HhFp9{=GoE1a7$9>lcTqGiikJ}-qC>N*z)_iyoFm-l>jn$xB~w) z2&rGds3WK(1X{g!$9|9aI;E1NLk=hcfi){Qdlu&#wtx`CyMe4Ad zGb;*%C{a`>&(+pWV;rVg7j2?uzHg{;<_u=46UP}Ak1u!gK%RB1z%ia2(Zmb&Bqfcw zAm~Rvs289X6qfz9Px-Lhv|{YlVgaEHrpq@&QtD#>@sy0PAyZLFtf3dE$}Ym=ssQ>P zkuQQI02HrX%gM@ms3o6_-h6RK#AuU^ikLh`(-vep4wAhw(J~H@bvJ-;Df%y+H8-kT zZT?0OkTEY^z;rQ6&Dt4F?}z^KuAVd@>d~`##+C^o_?d^5T1kXx+*L=iJ-SqfrcII+ z%m#@09eZXJ*GfVPr%R0^xOrJon~xy**#jBNfx9$@l<6rBq3$r1dGXyS#mXT&VR&RX+&&5 zsJ3$t;CSEo240xqPy^t4wO+ z-4&ivj5YL!U*G$Itf6CHJ@QCPLkshU7EW(S?WkcO`u*Blc5eGGbEW{nYLvqF$wsU- zOCu7dzMrqMcgZ)h5gy3R>TYg@aPb>rK7^g|Ul7dQ(+t^ z;2eK0TFIaXjjW1V<}b5zq10|NgNclpHVSc?lKp7@E5jwTE9x>8!g_bw^%{EPiZA`} z={0Kt%8G}cNiA;4>?Oe>Nd?|?-hjtvfzvu14Gq{HYA3#hb%Q9-c zzPIL{W?;m~VCNRNwb@*<4R)aWCU%02< zwn~?GHtU^qZG8_T%J?_>eI(@o(nl0!$^>_HLwMfjabn`Jsi3vi_aGqpg7>K04_)vJ zEC1vNcP|G4B2>X+%Y{b!lg#WFFmlqo0N1J|sQ$31jNc!zLVU(AL9=d8pZLds>7NxX z_Z~=(?gNFvWcr-_*26669~wHa)K-=a4e-(NCt*PQW>)l~uSjQPT|8NjpPHOx+@f^S zGO{qJYgxiiIEngfAsu6Zp;EsxOBX2~sK*B^HcF3L!2{`w_A7Nioyww~^HCOeIE#Ba zj{`cYho}fVH7Oz~3CX>?jtI6F@^Ilm4H|OsQ?9^*L0l0>ANUB+)q;q53n3U8RI;w` zyGEo@9?D)PL^-ZJ#3}yS78F_kc# z{Dy|-K>D=()&un=c&Z+x&-nzV#^Ed!vS5-K!0nwIPme?4<#gYld7-7+z(+ZKf{3LEjZ)v`d$!fMh9C9=9hO}u4-_g7P0=Q4!Ni? zcs7kDcJ4aTMD>wIJ&m{^Skql+*r6$P{;5e3AR|oQT=bNXl|vcycjJwei&vUV4C+R2 z60NZ_0T|mM^B4NA+G1;qL?tlZ>c@57OVTBI4_S$ZU*G5}3&-qaK2nDF@+Juh z3OQoo@e&NW4?t+8$YphEhKH*Ggo=91H?DM*RT?B8Eabk`^V_VhcGcV2#2s>$(l;`+UuzK!q_M z?bO_qLe)`D!&tJ}m`?q2RD!mHUTwx|n5ub-%9ERTLcqv-QG| z3k9K(v7)43m?6$eu0kCVi`6v-VJ!v=Fm1+@82~+`?NT;kUh1(wV`}xl=zTqOAHo1q zlo8>J2K~j;d@>u3EJch(LRkG!Sr>0B*^W5!mqv6ObAeAP2J``~wrn4a%vi{=od;?F zgoF_6{I*fQ8PenHtghqhZtG4T>mrNhl3E@-)OY2cBL|X4<0#w~H_v?owi$(43(F8}7B5rO zH9ck1L`Rp3zN=ibyRf3Bk{*0g*h;@HOEL^W-6Mv>qHg2~nQr$qfG$jpw0 zu?WV(`=qQq@Mkg8Li*FJ-@x~6+IzyH@?Z?tBG>&)Kw&f z^be@&692l2LWT6BI+uHy1@|ks8h&asQ`{|1e?LyY%=fOfE6;k7w*AHW$;7+ki+7fH zZ?V*b*`SY^hp&!Lh4ipMl`*i+%*?bRm|#u4^3ka(HU{N zpnF3hJ+#+Al}G6%*u^~k;KOfSe43x>BqxyXp@%)YNLwln7!B4(-nLP?Md zt%pf1q{Rz(?Aq%9ew1JT%DiW|OKJNsIU#{TQhcsZqc8M`8%@8u)L&BkH{9;Y9*vlJ zr{gP5D{Js>MyeJO!^b8mn{auiYDnW6q}KfJ+e&|vTRpEXRQO*gRQMO`Plb2?$9{ck zp%4^`mC$D_M5Gid5#MNN1BZ^=O=y-+)Z9>yx@l|&TSo-!`p?!3f1PKDQ~IO~j6}!} zM$5>U5`g0ttaW?{%0)7u>W!Py_=b90cWprgwV{|nvu)jI@L$y}&BT?{zqN}_%jws3 zS21NvU^Kk78~YiQI?F9^msUS%tHFP@IRpW^(lhlMGZqMqxNW9QpRf5;m7r%Xo`#&$ zYAtGx-SiNhe~D4#bMgrn#Pbh=E`(v26zwgxcy7xpG1-<*ut?`@i`&xcccWYgQFX4ACzu&`bVGhl~MAl1x z7tl&%vxzxF_^;vhniU<4-?1z_KNcrLeHJI<$1oF+VLB%Z#L4QB=Vee!$r^~#H`pd> z0IBR$U+lVJybRA&U8V<$i$vP(6g9nfQ~KEe9>*kXOWSnI?770k^lVEX2XAuNW|HA@ zby*xYX^r)1U5Hr&7$j-|HaIG)lCH@&y z{-tp_Th2`dk5Ca20i*uG6XY9`J#LP3y0L*P3J>-5>;aC&TMzXu-?Q5-wu>G7g38UI z9!m2=X+RKW{eRbH`yy=~&tKI2&xYsdyz%@T_k*4m&$9|~7(xj&dai?)E@8}}rZ#Yt z;o#Vb6VN^`ND`BG*#}-lO@5HuRaL`48J1EMHhdV>xvpPG8oSAIE6S&*4X?)#HhcA5y^XHcX(x!P@qU? z!`FSinuMAwFKMoD2%^e57P37Yn?jdYan^Zkd~9dzr(Ta{N0eTnFD$goTPYcuMlEar z&9fx~#TYrQ09rFKxg%Cainj?4A!-t4>?2iUq|T-1kYKGZ++M4lGuVu0kLI*0P!st8 zO`TX?bG|pauiT?_s9y2It*!y0<3n2-@w9l0uFSL!b9AH=;A?Z;;#v)m82dj8_;4Yq z-^(U1+}hDlQv-q|832JqLq+MWFHTpb?(@SeB z6DP7(dWTd1MSN*|PgW7VvWjo?mG#!@34IB-Ay$OB83TE$L7X;#(GHiGLFClbpV2cN zJ{AmS%g+El`s~kDKWBZqw^kQ)>(rwRrHeIYhE}ZK4$$hZuY9LiHfT4AaMY+gsQyNo zB$iJ8-_AQb!#`Vg?HCr8L-V(zV7Tw#X@@g)R2vO$Q~4AHMiK!?e2^AIJd3O zZLcGOUB}R&cR{n7-k)ZjAwHoUuaY14eFW*(B#We_@zY`7&OR-5Pn>E*fJ1ppEUd#Rg;SNoHRx98=JSWQSXvIw50Q zy>^g^7^u#hyYVimx%r3g!s>|@qm^wTouF}#o~7~LxaL&pL|nUskpjn%NR*Sv@#S{a zxOQrdPST^Ov3b#>QB5n%<8t6w8Xu!uOXHXA?@JNW=UJnxSEAbYDB*aN)N16GyN7jb z)Abp)_{s-ZG!AgnCQJ}x)z52U9wsAmNoA+3(ibB?Ui*A|hb{8Ci0*xl&C7Jsmq2=h z&u)GUjW)|Ce3?lr^R)flXMdlFeA(lk2qr9Yudno|b>MhduM3D*!n(#*&@#`O>U4Mwp~o9(uUyeQg1mm2?xzTyULc%sNv zFlbU!Od?Y)l+n9OY}Of@?vf(ec74rOaN>~6rE>ae*RABJI(JYF@O2OFhfDXBpnENh z>)gP}a@14+Y?Iud)-%KsD3KN2Tv^zmlhvBC6>S#&ZC$HA;Ia?iOx(at*;hsU zeC@}PCHjufxg$ht=az0}Uq@NYeCz72EvB>fQDkHCzhj>xDTv9}b4E5XvGWc-pSjr8 zkyrYvf{;LkEYHM28YG6{si7J|dUD;#)i5s-_y`UwKhJo$z;<7WZ{dNwxGAC%FQQ`8 znjJqv1OU3e%DX@XAS04EQ}LSH(f|^ezqMNklH^Y$0b)u1f>??+%~ifff0pTw)1M{c zD*Q4%^s_*8GcOId9&(Gd1=pOru|#KHsU$tQ@714mCkd5UUson&mHymwa`Mu+*SB_~ zTAQ26lj%|nl41U5eUOZzDr6LYkx|oGMJ&;&lnG1Udr~^%;oCDIS^>e8v@9ZRrAsW^ zO#WB`qJ0=HU}RWHE2zG*e#!MqOJj6ztVW9u)+!N1o>q`P$fnsEi;Ant4!^jsa);F| z2A6d}yv)YekHnOYqWwK=f1eAp;g}3P#82CbaB*K*(iU)GiO`he${L4}|seANEFltCzwR}pwm_@%!GPhyR% zQ z91i3c$V`RwN#qgxODFdK6`p-KyR~Ak-nOB(kQ@krEU8T25QAz zyu_LZWm&HX!U}$;O*EJ_5|^z?ddZEog;6g+E)mps3;r?$e?dJ z(?&kJ=GqSB=(L@F-?QMYQP6kso^AETeGdyWtMN_@itwVveTJzCsl!UxA(hP?OfY&d zFRrEg@O23)w|EuG9-Y_Uh;g#oyH;ZCQ-6n0_(-)LSJR7!5Fr@;j49)AnP&%sT4j1{ zL~I@zVh#7kcymPA`78RVom$srcrqkqB@IKajYNhT)~cRogM=X}$F&DhmCGS8g*$-4 z%UOhBx1&VKzT{9)ID&<^HiJbLD-&2I|FCtL_o9>pg6UyT=Jk@T_8sQ7e6Z63_DL2& zHb}Xx4Ovlh0;&cL`n`6f}?Pucg;-Caa#zz0_$!C9T z%5*N61Sw3d<7~yC^4Z@BzPSMxDM?Wz@N%){^n0wx(0bAov=ATPnxu5bou+&f%6ZhP zd8r6zqX#HzOXC-_N~Vf6G-VWXzIN`=uL`M#->dD&vK#AN(%X**c<$(HQDuic0hcId z3&db6Z6h;R-dgLzm|PxDcW$;h$pEy>M~utNM@Uce5p7~C-iO|ow`DdKu4hWNF&hgl zvyrg$kA<6o!zQl;r!+r?%8P=XCI$KGAv*(H|d-y$EtX)D46RkD;Jrk>0!z4A-osH6j)v~u( z{dFk-#|w>w$zt6`;^`u`XEc3=p2SN~;%VYITfz)~As_NWHsl2s>5(jzIB&}R3#Tv! zff(QQoYlf}Pki=Q|2EWKrLAq-I60{T$_|$S5LRGG?$LU5`2j7ifPmP=4jKmnR6HPv za|q&^MIVb%w@?|%>BQ$~z+?R=fHx|8Ij?Mr*sQXn)}5E~?z~v=l}#0VWy!O(*NL7o zATyRi@z-Tq*s;9MiDsSqtj;I$I`?LEPGog5j4c&3fSPPpaM&t%F0bI}tb$1@(013~ z1u}~>r94iW8V_q|jV05{Q1ntvk``r_d+HRq{j_~C!{8Jc)CjOTG8zFzhU0XS2x>iS zwLTY%6pSvg8fb}3(j@C`#`@wk8iEJQh|so4+7E+|w?P0uQJnn?c4-a9Ley4d>4a~r z(TU71M4kJrxhLXWv3?Flgo(hjoEREL1m9i{x;+FFF);H|*T`o5uC=*~X{pLFUAA`y z<$!>&<(qsedgIt8#x+fW>sog31U0MzSM+T2LLt5&Y@^KIb}=O^!PorT2H2|2Du2eRTA*s!;O!=B2H_X}M*1HF&WrofC1N@Guech2&uE#u>Y=^|81?829tDU)uCf4P3fcKK` zt8KhP8;n>0VaRmgID;RgANiF(|9p5;K02q^JT*Un1|GEiD7ywIgmMmP7Tbci}U;q1Mjn1Bqej1$xJ=x${UDjv%Ckf+lhYo?H zRs)-`(;YCwwnKd!5T)$va0%@$}WNDtpe!+ zj?;9*X>lv3Ez*ad3J2K_MY(Fiiem5kjY8%Miqd$DgWUTr&$CF?)faC>&w*ysFqI!?_YHPr7h{?tPGv$!5OpuFJ$s1}2_1x1A3niu)<2sX==v7!Jy;6_+$vwH zYnR_MDX&IxU}Vd8bZc2Ej_TQ;7AT5;WOrX66Bj8ckXq)Zyzq*q5#J(z4+!Vso$18G zJ8}1bC)k=^EjhOvf^&6&q#6teQ4t#o`kcC7{Fl;iP3Vgqd4zVz1-h%RqVjr&D-AJ? zj_b&xI?rP^18r)n2@fTea-*f(O1g742Y6*!X8#R$7Mlq~)iU}2H zq~1A2Y3*UT*?L?ji!@1uU?qf~e){8h9kZou_Mp(szP>YFL?*P~Be9N1rpDDf)88_e z#5Z%Qfizb3`(SDYN=ge9vW2qw%BsyIjknh4%6-3-F52Se4vwX5%yJOZi3q?+i?f;X z)CiTKG(MI?*rkm1SyZ8TDsa|tcXb1%022YkqJ?Zb=b_Z76tNoQaDg}j!UHZL#ft^;xIS2EBmQYd zT+B*-W_Xr?=L^tI{cAo_nEp#(rkDl^+kj zn@GlY07c{^z^hHDXInWzT@uuhnSxi-s(YwnG}E9(pFFF^;;G*w zHV`%i8~B6#C6<|Ut)hS_go5K$GI?s+^uliwy<`;*6djt~cZ^+6P&1WVGet)>n?(qI z64=liv5B%W!jRZ@omiK^Ceo+5x-oI$Jwn}UoE!`XYp;f)}q}fIX9{U zvoliatp0Y{&E}6*F&KamDn(iT`CViJOE-bE$w?TI!%iG~Kg`FAWWB)QZ>d*cGdReDL(J>lSe%8N06wO5PDjd4g7}cK z2d=Cm+tkf8Hz%}fT#+Qs5b4Nl0}kdGbC*deE1(Mm?CB4bI9a`6`3xl6m)W5~6#->- zHbt`(Pbzcn(y-yO71EZ8f-osil0SVxG7>`STFLNTDbNHCY(d8t)Nbc#6yraXd@ZCp8`{tX^;pMd7*1ck5ENPjwL&JeS?3%FO^G+hs*YHGa9)n3 zCt~q`|8DvT66?{Bi^k9{-oN`nc(Q)reO8az^JBU1Qd%=nl#(3>vGUQ-^nxJFgXdMN4WJf%C;4b0YTH@JK7d)) zV%lI~Ev=0LA)Et~kZoS>P2!MoeU312c+;l)e=u8adiB zeN|nwRW)k`%WhujNGxnBRcW)-qX#n~)doN+gwo3*Wm^+on+yn1ukOJ?g}Oho*c zRm76S;r(DhGR+NLj2|xULs?H&p~bn_?xkRQbleU8l~6NJr{o|2w&9@JEJ@;aKW^my zzSblmjZalPQ%@do33<%4C1xHca{_?j<8iiR=&Jrq`CuN^F8y|*Y*BXh57%un8`c)x z)SWyZ>L?yec%?Xn^~BD?iNLS72_*88dMG0jHB@`&Rr4luW$E~`#4^xi@FNmx@M#QCi@6DP5ulr_T#IR9z5 z1f9p1?>(tRS&&?_ppOVIPGVG#IJ&4eJfM=G6C6Fb(G0hHf08#1i97-#i4Oo??fX+$S zkG2KNSu)?*Yh+y5$S6^7Qr>=WGSQnn$5E`U)+oK85n9j)U6fZP=r^Sc#yDPAk5Z?4 z!$WpjwYtN!3bFFImuXad8~%^>Q}sWH21QZ;F#AZZ-wMl0j|$cQh*}}90?5;@9l#J` z!ktZ)_i71}2|bc~L`<}bBGAL{G<^UCLJEhzYj~OFDA}tri6ijsw4uL&?6e>x%%^hd zI5ujZlAv;pbK{-^wMCO!Rb19+8QqM-{-%$l0Vqg#GswB?MPm+2L5&1Su!rO$bE7#s zBS{Yqq9Q%uh@j>g8hzbhZ2><^25WQu+?Sk4{RVZ&LZc0hQ+p0=n{S2z@HSYRm1lHe zy-lpT!}R#xsMmbr@s1a!+G?3MBj=PjnNsUus4*?;+!Co6mL(CqueIVM7%dm!Abo2c z?8{#2WqBLxFEqCtgnGx#82SDB3DBy~pw_l^autg2jRY_@=bh$-5MD-Gh!FPuAsdNm zWTnIv97eg&m0bnDCJM7ReGOgK`n65VyE!7a5OT9_R5YM%HSI`;I`{m+FBLMqf|9gY zuh_9!myFfON2_^xr^}uzYN}aKOp9jbaEPnG(uZIrgR{-US;^s)vM4-iSCo}v+RmV+ zfnd>m2yF+{2V|+=*xP%&^0X!x@3LGHfgoRXhcFKZ0%Cf1vwIV zyIt#f$63)XmdY4j=$L9R^Huihp>mxZH+Htm`{Ek52Sh8NygkB4!4x8SlA{cRa2-|4 zddX-+(?=uDM?-9&+1biTovq}Z&3mZ*7J3Y|!*H`hvjOAmyHqi}0G_7_c5!T5g;x;c zY2La~%X^UG-l#i>G{hI_z*c>Zh@dU~Cphg5H+3df5|pxxNUz2*=f|Hkdp$WquXdE- zZK5MhDbY~cEfUAYtwVR*$oP?sq+L$yT_HMDASRuW#9H;XxX1Lg>)D1X%e%}>($!xu zw>(wSX^2*rp?S$f*ae_r$~f^uo47hoL56Bmw`o$<^g|U6z0Ix7wz+D0tA&`P`5G;M zcXKp{=SXQ^T`8F+R`tx5tVdsX%z}r555B*s>tvI&E(DdUsst`4#FrdTvRMwL}u8n zn+1h-bhp01Mt#aN2#1b^`P`E^Ya%gG>>g7R6|Z$-PR2W@CJ3K zuK*C9avEf@;ZB3LzOcRs6;aGhBmhfriw+7olQ@=uGuJsL(Y&ay>u#9WqQ1i38uy=Q zhC6Z2g{xTnP(REFr)~wyeNR?<+udl7i~3^KE~f5l_Z7=x zH<#6}Xi+rN&b5f`A|zk4UGw44bKS!2^@Y$FTu-E-nFP61S;AS&Pbwz;aD^n|SpZbK z6Ub+wn_KmaB?aV^8333#L7hN!FW zpaZN6ZiF)!03-_lc!gPkbn1v!xTOV1y~I>gSRbJkHPxx6I#p%GVbg@o=kd>!TUsu!i?LV6kPvvu1(g6sA;_f^%N6$4U}WUtGIoknDVvTV<3z1#J7)%zL>trUVC1G3 zU@cuq#Gqx)1Y=hRuOmmhTfkI<0z`9|mo-U4O#{9?lU=ll;u2d2yKtJGBg|EV0tN+b zLfc}F-a_|6kj@uZQ7ee;@v&I(3x+$z%z+OCK3^vb2g{e0Zs3@qLo70oTAk3Z*hbx! zC$H7Ya#hqD7>*A)-eBA7x}Ts!#f8(CDh4-aLfH6fS=F@?D+Q<5>+;BO$B z;06fRhEcCTlnIDqNmB)Ek1Px|$2c$6b*?+QtZ`Y^;q(Cdej{6g=lb4vM8jbmW7h0sh1JxCn4YnLlAZ(TRe+lx@zGI#BTxx2Ppv`bkPT-%uB zS@4fwaY5Dirjtja5CMRB8%`Sak0+I)I~ilSnu0BMEpw9|QdVm?19yC}3Ey#O-wPQUG2(dXC+HmBb% zWEuC$Wk?n@n4j9Wa&kzxjvdaYox?&QSf>TKTqFLP)#9j17fTM94FhZ&HM+tV`>ZQ` z2gGYO^Cg_^6CaeoM}<=XTih&Yk@8ZW=&HcU;HTcIox9kQRsbPw2P5hX6IWslRLZIk zY|_FJkh(7uTp6|uJ1e_~`2CCE1`vlYqc8*=s8K3J%n7ANZ@ceJKX#u8=EiQ6?R4Tr z{Ho)$vVm(@S)te3t?8Iu=E|_xMjLcR>uMB`OayaBCyQe<0kHEc90JtFI*Jh`Is=i!ylLb#=DGHyYUQ{i5Nf$Mkp<6KN z!hSL+mXG_%(?16jl>tkKt!ovlX}e_}&rJl!FFc>pBcO!)H6ME%gso9gZ6 z0;Ah5b~wVtLEA+sZ>o1tEy9smu=f>GDYj z)!LT}@K3a*-_ltZ^|p zuZy?TOPg`)IppTBe5{v-xC6%M!0(->Jz6!-AwwE@FA97*hL{6I#Vb#GdHM!bdtPr}_-9Cf(ACPC-L${I7DU zP+Y4(H5D=QvKGN55W!W@q7u#{AP(_EBSUMKe7wk3xPWFfYg#f$fgqNSOXkX61-q}_ zrjhTW+93UvrKuJbA^>?biXGi*tu(-(&uW_)blSG9m6Y`i#VfaWt0@B756@bJ|H&>< zxf$Z(D6WHC6IR9akM?8=r*&Y{50j_81v{So!{l?U)Ju@%v@TK$<<1>Th9JQRo-`pu zg_0C4$jFffv(&&RH~K!I!U23HZ;TNFzMWO4a1VW%GnmfFS8KDNw^>5FY$J*0nDXG5 z$_%kQijW>20>@_|? zLvO_zLofSln}%MxroX+sJy|MoXFG-YsPPomvRXKMVVuaUD|35>Q9duAY@{}4k6P;x8_o^(l;KyEgmIF(CJU1&duF#!@Y_y zzV1=43*~C+S8mU|hhXf&gXS@3^{q>OSXadBpuN)#1a%Jc-3g`$TOHZW;Fqxhji*-e z-O{R9vQ;q`ar?kdYa!rrK+ztcandnV(~f&UGvdBH=&Hdx*kIRodn8t4SuSJkDS$O` zae4OLU?X516^VUtmB%(ZVmH_pb%ei|W%pf^eDwgUe|TbSheqhzkad!wrIRe1Y^;2h zG{ykt^@5V@8$g&z<#U7iCAr3Wq5V@J%{H%>?;>bx$cZWLCfS86@j(~sFLNc@G^U%S zbemN2>Bz63j|Toup z+OtP(0t^%0pTr_0BM^N_V#VP=b%AMwl{eS6e9^9D^GJvo6>a*lJSHvLTKy zG}OfpAIPImv5uef#st%kT!$z}kqjo(!eCcjT73?skEz&=Dq1wN_#jp9dNJ1{+SP3V zszv=&!^}b7!l-Yd*-4f~rNR#GPNdW^E7jhht*K8=<;B<4+YK+TKuqS1d2dn!D^lhC zc0Mqis@y&GN~0VGZ7xjET&grsp3jG1ca25JsiNBvHEs4W9WFpZV-~3t?mo1gitP$d zj5RK1%I?;!DX%Herj!Nj5mL)$ zw2MK>wR0!n#0*n)8 zTM(bnhG_3W}V%!CMIrYb6y@S9&b)^KHmYhQi?E1GjI8>Uwesip|o zcJ)w_Ze=;kc*w1QeG4?dz}qLO*k81Qh29MEH=a)$820hc@du`&XKXpC${C;V5ZAl5 z??7gpXMNa3Z=-0>c8smR@Z*pC(eM7&U;RvYmpm^8s#Si@HCkt7&HIU$u2_YicDz= zc#Fwp7Zz&+-xL(0L`hLHpN_(2wB;iIJoDzp$^Ssqj5m{LfZsiPE*zu}quy!98i=0Q ziDT;#+6G4rG?GI!HT04`6|YqAu>b7g zv|^|rBz0^}k6E$2l18m*oYgadbJ&R!%V#zlTZuVa)8nTs->AM>VSx%8y+N7h%0FB6 z0*BznQ2F5^8Zb^FyFVs{nWF(gwn35q#`61+h^CB-ZnNV_;c}F+ajkvBYJ?QCCb+a7 z9SxMJE{zc~FR914ZyWX)J`9aRDR<>FD$?oDH3&mUoLc&%Z=LaB=c$YujO^4ZN+RD( zH0cg3e(0_;*FdkpDI$=&m=dUw_(784Dwx>RqSR9cN*|g*m1W;RFrjP04bhnlJ`Kk< zE)kXkp1+yEN!qKf6cenG3RU5Xw3SKZso`Q5K7f9@HRWVcgh6pg=dHEc!BA#GSegRt;KN#UO#OO{MVv6XEA2KL{D2wOSv%pBkm`IAiUQN3e zWCF#Z4|4ke*4)1Ek;DK+He@*B>L%#4{Ln%438r=#tq2)u_6>G1TEMP_c%?|cD4<+$ zT{Mj~JA&&UgCb|**8aeb86;&?f5>fybY@+wtsr*my9cXBSir$Ar4`HWz&Bh%**`@Br}; z8$*axETE8AgGe^#Pl-Yr!ihy25uQflCXL1qplZetYQa+}PWl;@k~yc+7%EjdR7$lO zm1?ROyMcRZJacv<7>wQM7>=mRD2cuRgi%*35it;cMygNN192KMs~cj51P2pio|eF9 zpj{+M8<{wpksOT>EiSNm2dae8x*Qr}s6+f!?_>qvkki7-?uRYXrb{04S53_6W0{(Cx}|3FQhhF|z$ z2pYpMgX=4uVL$-QWERHtgT^qZ|27Qjh&l;a2AhUK{C)Z`DSUZkgXjP>X zFea4rQsVSjDvc!~LHrTZl(9lN(ux)0TLCMSheZt`M=sm3Y_E$HWQ+GQ2wOKC1q)vj zu>y}&i5L;MjSw?Uc+Lc?@hi3&(BCrm6$mC1tgr*4bt&{B0U;U3f8)n2mUF=xf#2wX zdeNh}*g!E^b4ur$HK%k?j2@GrSndW!>A2C4a}Xt`botB}iggOj(~%dHLb2xmbQDJ! zr9(d&2!3+-^`3@O%;=z`j`g1bQ~#+*BAGnKPlUMBlt-YWWoIZnbt@jtuqDldld8$k zSOAS0F`@DFVlDP)#4wvNj2U80>7X%gpi%SC&DivJiIHFUnSOezp0G-`TH zM`Pg82)^*AfEKbD@G?%Zw|cjzr@T>seG%<5@xzE~lvNX29| zLaS}5`Vm9;G{pF6tii8lLX>1Ow}+%PeieqK;qTfQ)0RC zf>$Ptq}_~3Xgkt)7#F~QsBbEu1C{P=2kVuzOZNw)+FE9}gv)~Nr7?ciNeciH8UVVs zX0v#_cr#VIogNXu2J|Z6%xX?lbJD0e83Hb<#Nwo%dy>9*59Zc)?A@JXwy?XV;UK!C zXn6?m;(Pdr?YnXy0>uUD=-~Ps7#jx7KD4Pm{P)D1+hu@3h@}&uOYA~~cG-W3!IzOc z5ooqYf4~Q}7mdiF-Bi!ZGD)qr7C^06J7i0h+gK1jDrPX=<>{EuG|}xYI?LB6PnhYtmF}4g>K`~n z?~_zx3lJNhtN3FM`skj)PhtOs1}@o=3Iw@icnt(}Re$VW3Gj*|whXC&Q0RMy;ENej zR0@6@WaJVvvb!Px7<-8hazhK`XsSC55kLyJaKSdp&gw(kgnfe&bfR|A_mfj_LJnn^ zak00VVLH<_R#;%ML9Yt!SX!J;1zNX4vz-1pw5Jx)d(+ADJgccfT)!5Z`FP8Xh*Io>^u*TCrDFDlVEO$W!>Rd3}YcTeLf zR)R9SMQOXmSY(A!FLrs`D`|Z6$;Ef+&mG;Q`wgc^1RFmhg7?;;yY>FA)912LOQy2U z?XHaw~N$~C__%3EVFi;e7Y+t?(C8);!*r5iY+pY`(sd38-$3tc?OT)1-EK3%X{f( z8w-A0!R8TPpPkqtMa?!DhS-tWf!e~5tZLLv|LJ^Z3vO1s*0+=W?qJqqlL zvwgsY?hrQ9^eG-b9wp0R-WV8EnOyC402k#s~xaLSDr@9FO4U|y5aYUP$DjYzf*a5 z_n~bKSSP~4z7T9SE5eh8ZGYTiF#b@*XnhXdkfRj$#fJ5+tWOgL(>7+^U;H)7=3MR` zqJ{RBv74u27b?E6qs|dqyxLq&4l0LV`&7#`f+cYaeb3ZtU|Tjg{Q~`eezhN^(xWxtyH7EF4~&AgStAMQl*Fp z8n(~?K{#@I1qOXCSf5cp7y~}`v1hk(8wA{pOR?$>jT4noTBWGy?n6FbI>b1-P{fBHz}nS#rR}H)M4M7jFj&|jY3DPbEEp5hqf~TxhzZj z)!d(miX|lv@;6$_bsn{Yt^=rzs`w%lm8`R>?giFHRj@a?RB_Oi>e{z!m(e)4w(?KK zl33yIAcyHfi3p)xgn*WscM2Z@u5iOo07y090!Hg=xb3UK6fjwjkfPGo zsI3ou)#|Vp-Il03@faj#nKrQt8s1o{03|h2TsNh+*>`mFf}l{GHp^RC{%SGRb%ql|(=6_Qe$jYE1SebIYpise=p)h4!2STPrx$5vco!sS))^;>xWg6*x zJ3ARAggD0tiaAxa?Ls*V#16RYpigsvZtJK7T2+^RBb`E|qkR*v1lwxr%{6-@uY5e! z*t$!Rj9sMlpK1Cwl4OD%KO|xECL5^|DsA2~zD!m~AAJSyz@bCbOH#l^uF_<3RmXI0 zT82JcL9QeWxqa#R5jOGIyY)Sa>5)1RvQX=@eK1=|$4}hRBExMNY-(5&M&4~&A5$QQ&Gcc}mq6?TD6csb(MeFC^U^Rhs$Ce)esA_y z%$?kJ=-U=rf#EnV-2krY@#u7_SP6JfM`*> zztEoRb;qz(%+Twkbrc?H!Ne}6c~jLhj>kFfGbwlGI&#j+T|+5=y{vAk2)v!7+}TM~ z%oI8Q@Y><@3D){{l5&T4Nv_FGSXT6a%AV(^<)r_k(r zhv)@Lug-y-#;}26$7d)wuw#1Sji~n2)oW`6^pv_V`7N;yNM3>+oq%J#3Zcpy?4*T= zy(;2O65d6;AoMetCjm!}&K-QN2U`qjIIODTxlDfa!@LUSHE9>Ps++x9g40nS^4uZvQbsC78kSSoDnLB+-m2Mi25LbPgc{xz~c^M;VQsDdPpOKl!^$@GHv*Z zW}CLuW#YdJ`QbGOgWS{yW9|idd;u+0-G$bYFO6p4DQgPfJ7d}Mp!II^vygJ|69l^~ z2a>sJnHLj(aQs=kaFhp(5}H0IQ&D;@$dSvbP%BbjvCU>iBQp&vQY}d) z`eKwvvxJu?*L$x@WO@a)3Tx7cz`jFI)aGj-nmK?7BWx zl-ple;giB^enV`0klne5@t8~h*}P0p0QO+AxyH;p?Awuo9FKa56R7&fqz?KX&HyTZ zpJ@{~tor-!8i48(eTHclk;eEM;(ZM#+V0lp9a#ABS(9xHi|WUOBjcTrYS+XzA<65+ z6bckw8pcBUtq+9W(3wRERCUCmC+l;=+8mWGiNy}u3cL9wcl?rwrNqX7OO+yt=L$0j|<6gkEJrB;y zru)2)i{Jj3Jx}nU+tuZ`RQ+;UASA`03JsP5doNKB^Pn2MmcURt$}XwYp`<`WlKjzQ z;V(r&I#EtOvgCoW{;liB9|~^TI6km(vqI}P-oJjM0-M(j^p8Ch^pB1XKNM`(GCaOs zf$_2ajhl!2#|Ox;rhk~9wFATbS?&je`$o2GT)Teb1NV(Q7;ISoV6b^${5F0b@IQ^h zB&hI%w6>PN4U*->ql?v zAH5y$1~!jpKUw6h>o*de$88?(9~%!g508uoYXEFK*g7yaKJefQ3y+ShCx*_hUA69^ z&Fj}}UNN$9GZ5yntJTx{N5(eHh`(uQM#QTA@pUaxqku)l{o~{PYu0U0urEVO-^hb$ zGxlzSr6ppO0BU&$D=lw#4m_}aWMfN&nr(T#ZD4cj>x$v^qoWK&OOEmWjSmQ%(Sflw z`dvG4e?P;@7_1u@TR$EQuis#QA6PdYtQ%ObpOO3T2Z{hZ^A}_?j=}xIBmIinFtT+Z z9S^o_-E0`%91Luw*3B&)-yE!6|G;{pd^MXHgbkzAMS+p~$2Tglp`SnZk5X#m`VIZ# z^pM1%_52+k*!aNsy3J4&8H4fl8wQ3MTS8;&>Blgkfwd3tmty+S$gW>QKy7RpA9(l3 z*zj7R*dj;$2nTl!4Ga&Ak8E^g-%Mlf(#>w|$iQZ|ab(=l{+e}e3_78)mK?!d5Rm1# zUjunHg@V!XFXllY|aIn z$JV@YGlMs9`I^zuH#Xkhm_y&Uej_vU3KCD7^^_!c#u78A?~Hk8(&8C2Pp8u}W}QyM zXUuvseV;LVb3o3R?Ji;co%an6tQkLJJ{#n-=V-R-$>5A7^3gq~OgC>H*?7i`XU&l2 z6Yh-FT>qfSg|jqv7c=(cYAzpMKR(bTWP3e1R||bNK)P!j0dvNzcMWXXGO%&YSu!zi zuj?Q0KVwbTi))=VS3Wpr%{aXeXU*ORcWY!C9vKynW|AgY zzlN}QF+KhTqStj>hKB)hY(xKWFgyZ8L8fJ_ z93HukH}rx$1ozK^NM2+3+3VW=4U%5j+xrmGS&;b&Pw#JJ8ygDN4+WR55Aq5!!4bS~ z{o3($!6-r!!M1T|VC@D3WU#KEKgtTLpTRuWZ(K9HWo<^VZ@e3vj*MM#=1hHbZzvsB zC(oYwMw&)#IZKtRMn;Cuk_BC3oUs@fd)N5-v*k60b{8^p;{((xl#Y&Ud_Wi=7_7;Z zgdjtAuz9q9jS^4-c}yd7*SPm?UjKsw!I~{&TL*&s2GEy`4tar$AV>mZ=zta&AKNkz zZ0#TB@A{2*+pkgJfJWVjcA%+32K^p&1CYtc=$+^fW19yWK<4iwO!GW^fB!H!#vd95 z5M~aV6@N@rHZ+9bByDb`*Kt>8D#Xbd&`_I+)0DYsDKoXiMwwG+ijA~ZZLtw)Jg4#2 zloE}oo4iWact5F6cS<8Wee!KgtVZf}xo*;kxl5{j<88YB>IZjZVM>H zm=(}BjF~@L)7ad7_xka5x92e@y-4m@>els}*WWih5WH)2El~<>mK=eH8+4xa`{3BX z{R0g5ngRd1VPq{6HWN#?=_TVJ7WOmWf||sLATP9o_oCpl8nLMHoANM=i$)kZVd>)h z0TA(b-N^7-y7u6}+TivPH$2ckgzi2t4xc7w&G5)(em0K}jE?G6OS%4y<9Ce?@HY0q zeWt^!!za&vi#^2@w)ocR>x)mLU5jdH5XO!yDw9$$ILIfsb;|}ccDifSByjqJ5msRm z8sGo##Tnn@SKIGV*b|u_0w1Blu+Tj|8$XJ=$8!77?dk0;3oloDhr9h!aMX+Qe8phJ# zeXUEpD-|2y0gzua_haLbkktG0}>mRmnIzNLTI-M?j{X-W>H4G*lXVfH{)tzYXj zceK285-kob#`Qay4X);J*w`4aV*~v%YqMV8gJ znzmM2*On(OHck6-qh9#9CX%KV%DCL=lBK}8@!Xzq##~aEPM1M~;&f@(!HF4^YD zG?1H8Z(6j~qt$q})(%#gImJnPo1RgNa^Z4XY?k|^_zc@8#pj4SDZ$`4DYn5TPSrBV zIjH~`IVrAhCeWE0gzmi=NdLI1YY)Msn^XWo=l77$#>vnWWXNa-ec5pHe-FDCe!AU#HKF+nV(#|hR5)-htf zIq7^Y!Ap29<@uf(iaI{PVkB#eTm>33HAi( z%LKX1F?ciIX(0F(f>#FV-nS&hw-UUHdf$@FdmF)JJm1U1DahdMJl9Y;N$((dEzfeE zUY;!JC6ZEJ`*>FHT-Qu`v;xwhIoc)>#Ahl z27()TMtB6_D9g9Lvl zNO!+2DQ+XUJxKQx+(B?B#7l63;KL9v!S@r~6{MdgxSQZ3fKPA_!4FU`!My}ONWBDq znBb34@3N%$D8V14-et+WA0znVJo|Wlf+ri^Pb~8wK1S5z492o#;eLW2;`vFQ5A!_1 z^AVmWgY>VnivB-de~L$#$SQjDdwm=KfvBIJp7czX^iiTGrzd^>dz0c*L>*uP5-bq> z8JZ#ZF@irEq^}bEIf4h7dsip3pCktZ9S7fCwI z>o4*AGS9CxlU^q26TJQ^&#&=3%kvx$W4ib4$--YJ_!~T*|I^MUn!3*Az6u(S$e*pdn{vpBt3<(qb zBZ4nM2n7EN!LPt$2!55|*WfYlNap=lg8z-@k9m&qWVqgYZSsFwI}>oIzWD!te9NvZ zMQNo?k+PJ;x{?GHD$9v|!&+DA~x%b?2&pmVI&XD|owjT8ndq*Q_`378UM14XDTZ+kJ zBWcklw9Oa+7h7<#6(isxZXA5Z2)OtK7u&EG!$lr0^6`)mX~lM2>_B}*b)p8^T^yn= zwB4w0sGk2&KBDhvf1rM%e*K4}BgBpgS+cz9xGc7KQ336z@QzMT?0nM3AG$YWA zM01H6S_z71;?M}XHzlN_P_+8~&oZgPyh^kK9gX>vQDabJQR8Slg!1FjOh8RUsi3fR zg=JwhRa~BgnPSn%PewBZH5D}tg_*cClNv5h$4sSY1f9qXOi)K@2r>ySAMKRQM6ZdO zg_`{z3(5v*DJ}HcDE#$elUPg;!`~`~IcQR;nTtjbO%65l(CDM7q-H)E12hfP;BV*y z15Fn-_zMeQgvKWa_kJOoMW|lX!q5mxIby;V)Ykt>r4F)fn6@3|^dGCF zD{)4@16R_3W@;d=-USnOqFnzclVLzua1F!Nzd_!sqO<|F7mQAbh7Fmr7Fz-AoBgcGPgGc(bjM0ugS zF>~c$W*%y<-vvy#h`NNLM;QOjo=+i2%Z8)Bi~``+wSVu$t`bwlA}}QqiziZZ z1;+(grhM)4M!I8;0;0X5LVB8!mSMxTgE zLf!d~u_;SNpMtuJy7wQeMkaP2eJYJc%>y(KX*6mcp?QqPzZlIEG-+re(I`Ge!$zf} zGEf8C!KRFZo{P#vW&OvhDa%HmgUUta{l|JKdxkzARe&n|k3~KQY5gMf#i-|~lK)|X zYcIj;FQ=hM$r#0@wT};`@S41gi=%Ta-lM3$waw_Q>@u?Xk|%j9TR>dqC2H?bour#8 zJ5qOt>UG^AScsmXRAMOaAJ<{=DmUnzp$KIg)SzZgH*9&w1xEOJyofAc-I~z>;gb*h!uGDE`|2nuAstx0eW4R z;bZ)G*z6b#5@SEXsqpO(J<=WmjCTODsvp$$n}e8`HWXSZLP6Yq@T_+LSAQ-j=a|BC z=WLK{u7-`?>fq;*12@NAfW^r*puC|BZWxJzsCYl<9w(5c(+rnZ*TU0dIxuZPHcW8k zL)7=pFn6K>ocLM@9jC{`(I8d45$Y(sbo&WfnukEqa1lHhnFra*S0E`T3uc<**S&F! z?|W=1e00}@h`h_7y9L{4`B6x{brI%SzJ%9C-ylYAG?;tz!nP~wu=n+C*n0Fk97)*# zqZFHfyUYp4q1)?pipoKhE5v^3QHp(XJZcJ=Pm~Gd-zshR3}s}N`e{78lmr{9G0rYBrfhijeL94ShC!yg5zLajkN1mp!Wo4~xUJ#|vmQi&X-F1$ z>dXci%iXZ=RuH&0O$6)rEtid!P2o5y;1L?1( zK+mz8;AXZDqLla$7MN*R(uM97$Kf7+SXN_X55{&w;1ufwSgxA^ z^R{tecaX8ele~f}< zuE$`!S{ht%nE`pliI6nX0)pyy!kITLn7MBa42{izL*il3sf8osUNvZSj{~QyWw5Po z0bH!{h8S`Y7KQb}FkgSrHmQY>`B$K3uRn}>)C3am4MB0925e$RgAFqjca4_F|gJk0mjET&m*Mr+3VNkPh2Pki?1rL8d?C@I$z3=A1oolz@ zy`nZ=SgwK0ueY$x+zHx5AHj_6TCl;21E&23u=B?gIGE81(?j3GZKf7D`G134XipdetGCBNdFBm}CbD3A_&H4e;Q^k0 zLxDAFALQL!4}09|f&UpGV!1WsynO@-PHEur;suobGal}CXo7!uCS)fa0$;PY&|?=3 zdCV?IY@ZD^UoHdL#D>z^-4OI_BB;N62r*L)@Xh39NLn8X4>t^j8JelEf_WU?ir)f{ zgyG=1@fs*8s6+K5P59Z^2dsC$ftAq*4IaBdEWQ_vn0w)rniK&$96aCY@UEWSAw-PHg# zHPN8D#}u|Gl*5xvKKRM-GH|u3gYb1Cu*Py8OnCVSbUSijgquCsX*Iy9S@AIbUN&6Q z(F2J`vCw)K`=}mOIOoy;YW;`scb1sguWQ2U=h2{YBOLBuuYlQhQjq#%A;`Zif@2w_ z5b-V(ZjVZb!s{nNV&^89WjPAeaQfxM$aeT3?h7NOx4{LI063jd3vc_>!FB3G@MO&a z(azuSgmV>k>|71Y)#G4wjtyvjXTxioOVIV~JPb1r02PCq5WB%1Mv}Y0)ISf!Dk9)s z;|m3~4}s&*4d&bBK}6gY{8JL)9=8jTo9}Fgt{fguxiFn zcvYAW&7CH2bXzS%Y^#Dd8QKtgF&hq9SAxsOTxfqg0@4f^uypiNusmoF<>}qv7Lo^v zv+Q8_;x-s(v=AI~PQ#487HE3a36qW%!k*x{AW@eK{jUSSZD&2C^yNXQL?#@yJAgN* z-h=0ESHNhWC*;ZRgq|1iFk}CFcu=DR6TnD466EcRp-*}_eCYZGfrh)G-ghRnRQf<~YCQ0H zWiV@Q0nDE72>PmvVeFfHIN2)&zn1TW+2g8UeX0+v3ik(#NyVUUSq_y)Q8&zCYod72Y*!35n;pP8Fakn!`A{(GF*sUBz=sWN zSnHh!RYr19<8B6;<7yyz^fgeOxfC{bzJ@nPF2Pj`F0A(b307jg(D?5iU`^5k{iI3Y z99j*Q%?aQ&O&3-PaqgNvvcY`@nIC(hi0Gb=B`k1{<_4Y?1VUd!Rq z3so?Vs)lM)OZafW0GvNBgx^=*!{$nR@N|xaw8SG|`RzJroS6(JX_m0jO#)QaePO<- zH?Tf_g2tMK2gIdcpw;wZqGX+dz9!GgG)255Ze2{{H?Fs-WLW-ei5UM<{XuY83z~}$7~u=^($en?e05k` ze3%a1ncidD=i{p}PV(zhKgsK(9=^i(PM5jAy)?F)Dmoiek8j}@;hf9wg|j?328LJJ zmwRN=)9Fw7_rE6$3rl?Dl3GQ_q>UZ!K#S5*OvG*d{-MmI!msdxN**mS#21>n5+9Me!(|Bv8%3% z9O2;3c4Qthy8MMt%A8Ki9oZbjK6S#aS@9#EjQHj}cU`$Z*&p=8RX`@)g{_|^0jH=B@I(1qvmM+_9Ys8vRT5Ncs{=QYodAw8tw<|zd}IagG|3K{9fu$pZY zpDe>C4{xWKA2j!7C_d7b`YpyMD-R^ri!AhIXjiT5-7CT;%fDCH&96Df=vUfyPokGc zhS~-iGGlz%9Z@0nx!-tX$C?$zZOcR0MezpnZgucTpyt}K-^Ih(PF142?|k8ra=kF4 z<}!D7PgLWacTGH^IJV@zvT``PF>XY*=0_gcy;A*_S=1@Uq&W&JZ`Sh2S(oWY927#? zTh=JEbGNM7>a%)OrC#yK*vreDBW50DUyNJxrn`(s9qwm?pN`)jIk+c|B|6ywoV}^xUjreUIY0Xn!bL!a~#-pVh&rXZy zk-6M$8lQB+7-p(TihFMHNR&sosYf3`dQzuz^>0jrOZOX@)333}4`{P$uT3+Lk>612d`1eEE z&kavFU5(}uuP1X(Cn@Y?bKXiHR6x&*-~E{Hyp=tB%y!1TC>~jRrp{tPHIwZVw)V#{ z^e>ETj&GZIn0>(hOY=eWDaZV{%Xz-+11E2oT}FTQljQ^*WnXrI^Fpi7=qoBEHy1?) zF^FC5Y8PDp_#5U=s&zcsr$s*RABo%J%5}Er`x3^`$+*{hr}0R_kFH6J7KO0atg4OjO6QRkfljY?6`o?Ji5Kqe;PQxC zNw7w5vO6QFJ;p0Ihew|7m-;Zbd^cnA$xr{+-q>3OO{!pOI8y6CTyfBR}7iEkEZO#CCcZFhiWj zBWZW4t=?o?vVSSAetf-?M~uJSTrfN~h;6X3F<{>htpCs?{jOI#*ruC*ef8+a_IlRZ zwVoHuUM_Y`D@Bw~p4Zq*z3xB2D9>CGGy(gY#7iMRf29YrB`3VL&BFfZzD%;#9k>0A z$aSY`B9yT|?2Fo@^D&Tdq_p4uwhHFoC|P!{&WEw0Y{RS$H9m13vr0et`Buh*Cb6*H zv-xC)a>%ZkuFedXAbz#VJU%IZQ0zVWER+2++s;xN``0}``-xrBIrdSO_;O8CK3Nuj zQ2)-bAof?*Fp1Nv`Q(=Pf}5ve4lqu~{;D2r%_p*xj8(1%d$BKh7btyn!1y7VFW1-v zGEV8d8}iA8Pgb~!ByKeDVK}6UbgJ&>lZi&D;;Jvb*!B^gx)+b~Nx?8v!zb!2_Ka)Y zBbWN}NyQlhhoKJ-FuoDLrddIJ;=b?7+Aq1@4DXfCeyzRCC+)!%=M;L*vEK&8UQdq2 z{{O(_`b&2L*d5M+nr6v-BB7FC!p;t4sM$F3#-{O!&gb~-FbyBZ#WdG>8o7MJJ5{C~ zzwIo;c!`^>2VQU6J{mTp%?o6Y%!o|tdxzJf=fUQNtV4{dpsOb{oA`uP>|l~9x}MSD zeoiB+lTScjI6}~Jeipi+bJhakh@+0|aC0&Kl$o4^A(3_HE;Tq)SqKRKSaZ_L zUUF1=>Z&Aej7t|#2TJ29wO%snkjG2T?lliz#%`G`q{fsMQ2Jf-bkdlYoR`iiR~vjj zu?1yS1aT=neCWJ=MkS}tXhx{Z*rCF*Ac)(8)L~qfpJOGb*k`5L?5YvMeXZ-JaVd@S z_0<|$$uW@jYU^BBE!<`b2>lTy}qq$(fM>YK|sRT_`NCwNX1QU^g?O3&1euwj*RNXms7e;~c&l6fh=j5E}tX$L!bqL6|hE~Rm|Z*Oug zE=zGDBP;LF1o*zn%()~CtAjFvJvgeiJK-Y%cZo1(xCnIQ({Uv!-sSo=ef!V zX*8v*pGZqn!=@USa!zP=U45+AE<8p88vi%S6vU;}c=PVjPhN0NGs17HZx|-rDhEMa zN*$_;lG;l+Q<8lnA5GH`Qe#2fUr5{4-Ne;OICA~OV)bl%t4$v&l*UuaUG1v6={aZY zj>4zGX{y4qAc#w8^yOzg=ZZOVe4=)&{#We}+VVGA*Gc!c7t01|9`Ma7;+%Wrr=7A& zSy+}!DNbErT;{5R&O(k;&~vhNRhqC}MN?WpX-fS>_T)lNYv$7GZT?e*+bp0hf1^x6 z+&(P3rYq8BT>?llzBt`x(c2 z`TBi9@BXAMf1@gbxWDO|m78Q=<#C+q@5StFkQ2rQL0n3MZtd0T&*jWtBNw&k>V!XN z!QW`zSFDW|N>i?VY@C+MIcF;#o)sK`}v`fQ0hr>8L*D+IO)B?fr70~#< z(P&z>fYP7|D!uO690LnAbKk=q!lS?x#HF--;`epuvp5nt?xVBIY2;wqDu+`0e zss1RFb0J24bS!h$A2j}N)L0Og(xB3#$6s?fUAE0a zUpSnvx-pw94i2;ppfmxgk_I;R3=RX@)o0F87p_S^`S!`x=#4_xy zH^__^?hltzmKTk>++cS|8Ye%&wt4RSfxb*YY_pap-U z#2~LCY+hL?$S-4sOJbUK<41t!+K==<` zsKJFHTpR|Ow9@>ngNkxY(yVbM-1XT&zs97H#iDxW#cZnw$0d{|AXO@u zK6Tk8GDpTnCoOuQD+US+Xi?)PmYqp7S^v6Y6IWhjf$(tQn-P;%T69+B9j90_y)XUX zex-q9$)u2VmL9FBkqKdOu|C5l6^S-^WlIM~ zQj``@sv_k*|5*m9Tk3O6%Uu4{qj=KB;S~U(FfpO$BiSC{^WKOvL;=o%2wGmBe0i{e|8OO3LaxL{_(XJ~)gk_nO zwon?Rn9{pFo3Qq+m>f4dPgonql(GVmrs#Sv2+kpgANE=N>pjrhstDo==(UDMwOsP- zm`h``?!f-mwbHnh%K2xk+K@*M&tlBlqMimn*TXDBcGJbY)PZDq@}hSspj56s@7JDUQm%0!ci)!|VJG20X$z%6l_?AEJ|}Zi6noVB z2Tnj^LEKMkMjfls$9sul`Y41%zP+CCg_r#)2u4Uw;(v6kjD(wiX-&{2QZq_7E0wZJe*xCNdBRYl;>{p15KS$Rv1z(-9ziL zD#)gEv4<9hqlMH#5SP;Cmy=VKE6J6*pf7q25<+S$h)Zd{dscvZB{}%YS+YcJcDkUC zR1w4#ta;Scx`Ij)TO~D?r7}xMK@j&mmW|dIzccA2+4yYR$-Nl^Z({2{(fy^gG=F`M z=S#vjw&S%W4GbN)lolY(7j@Y9KKqH=4fyR zXmBQHa7JcuW@T`OWN@ZqaK>VA=3#IKK~V9~yfAEX@QUv{6G>;z&ow3Z*}X7B>arR)L590Z6wS$YarhRlF|A7-!G2eh_coN+q~bkoCRl+m$$ihli1!$ogLEe zI4N@N?eouf5zj{xrTk1@b50F;oN~UPlX$+^J*MSK1?R@LGcwAtxe#FgSie&{#9_8dn-oa=W<=32=v|GERp4F24Zy9E$icK7i$LjbQPY>CCt$*tQbOR5Tj*iNt0_4BGRhE|0^Ip zj3y5Q_y;6uvLxX1a4>m?`9x&EqzPXY@s4NVS293SMo<)=k)4mkJaV{Bd{vZ1FqA%l zB;M454}3=Ug62`c_2KITd73VGl2o9JfY10h2A9T+!EbVeToI8TKIjA)@V{+lW1gE3ej_z0%()HKjJKW1sbL?DcQG0-lm+I6O8_6bMX@?z zF3KI{il42O{Oa!y;RtVm#U!AgxBWjoK;)kxLq)~JB_s!mNlD8L8!js+uP|byqSC0* z%45ck8$V&9it41v!VLd6{{IyH|9@uOpP}MI#0HuswkY6YRdVs}Juaqkah{MXj*>uO zyX9hibFp=Du`zM60dle7aj^k$vEgvBk#MnPaIxia@ep(IXmaroa`Dh}@i=g?J#(?4 zaL1y?p~j;opeCa5P|%wvvoU@)#?Qw1*%&_?<7Z?1Y>c0c@v||0Hpb7!_}Li00^?_6 z{A_I7cq63@mY2cuGFV>b9hlT#7m=0~!JYaCaHTkDB>1LNFQ)$U0`I>Ji@~N_iebx8 jhb=J!-hi5ji6RKu_$o^48^0#Sj1`d toNativeUtf8(Allocator allocator) { + Pointer toNativeUtf8({Allocator allocator = malloc}) { final units = utf8.encode(this); final Pointer result = allocator(units.length + 1); final Uint8List nativeString = result.asTypedList(units.length + 1); diff --git a/spine-flutter/lib/generated/alpha_timeline.dart b/spine-flutter/lib/generated/alpha_timeline.dart index a5772f2a7..dc5ef8d82 100644 --- a/spine-flutter/lib/generated/alpha_timeline.dart +++ b/spine-flutter/lib/generated/alpha_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'curve_timeline1.dart'; diff --git a/spine-flutter/lib/generated/animation.dart b/spine-flutter/lib/generated/animation.dart index 8a604f6ba..73073f20e 100644 --- a/spine-flutter/lib/generated/animation.dart +++ b/spine-flutter/lib/generated/animation.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/animation_state.dart b/spine-flutter/lib/generated/animation_state.dart index e586263a3..7768a3ce7 100644 --- a/spine-flutter/lib/generated/animation_state.dart +++ b/spine-flutter/lib/generated/animation_state.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'animation.dart'; diff --git a/spine-flutter/lib/generated/animation_state_data.dart b/spine-flutter/lib/generated/animation_state_data.dart index bfb89971c..5415ee9d3 100644 --- a/spine-flutter/lib/generated/animation_state_data.dart +++ b/spine-flutter/lib/generated/animation_state_data.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'animation.dart'; diff --git a/spine-flutter/lib/generated/arrays.dart b/spine-flutter/lib/generated/arrays.dart index fc147cfd8..3677e58ed 100644 --- a/spine-flutter/lib/generated/arrays.dart +++ b/spine-flutter/lib/generated/arrays.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import '../native_array.dart'; @@ -122,7 +121,22 @@ import 'update.dart'; /// ArrayFloat wrapper class ArrayFloat extends NativeArray { - ArrayFloat.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayFloat.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayFloat() { + final ptr = SpineBindings.bindings.spine_array_float_create(); + return ArrayFloat.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayFloat.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_float_create_with_capacity(initialCapacity); + return ArrayFloat.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -137,11 +151,69 @@ class ArrayFloat extends NativeArray { final buffer = SpineBindings.bindings.spine_array_float_buffer(nativePtr.cast()); return buffer.cast()[index]; } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_float_set_size(nativePtr.cast(), newLength, 0.0); + } + + /// Adds a value to the end of this array. + @override + void add(double value) { + SpineBindings.bindings.spine_array_float_add(nativePtr.cast(), value); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_float_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + double removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_float_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_float_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayFloat that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_float_dispose(nativePtr.cast()); + } } /// ArrayInt wrapper class ArrayInt extends NativeArray { - ArrayInt.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayInt.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayInt() { + final ptr = SpineBindings.bindings.spine_array_int_create(); + return ArrayInt.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayInt.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_int_create_with_capacity(initialCapacity); + return ArrayInt.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -156,11 +228,69 @@ class ArrayInt extends NativeArray { final buffer = SpineBindings.bindings.spine_array_int_buffer(nativePtr.cast()); return buffer.cast()[index]; } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_int_set_size(nativePtr.cast(), newLength, 0); + } + + /// Adds a value to the end of this array. + @override + void add(int value) { + SpineBindings.bindings.spine_array_int_add(nativePtr.cast(), value); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_int_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + int removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_int_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_int_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayInt that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_int_dispose(nativePtr.cast()); + } } /// ArrayUnsignedShort wrapper class ArrayUnsignedShort extends NativeArray { - ArrayUnsignedShort.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayUnsignedShort.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayUnsignedShort() { + final ptr = SpineBindings.bindings.spine_array_unsigned_short_create(); + return ArrayUnsignedShort.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayUnsignedShort.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_unsigned_short_create_with_capacity(initialCapacity); + return ArrayUnsignedShort.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -175,11 +305,69 @@ class ArrayUnsignedShort extends NativeArray { final buffer = SpineBindings.bindings.spine_array_unsigned_short_buffer(nativePtr.cast()); return buffer.cast()[index]; } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_unsigned_short_set_size(nativePtr.cast(), newLength, 0); + } + + /// Adds a value to the end of this array. + @override + void add(int value) { + SpineBindings.bindings.spine_array_unsigned_short_add(nativePtr.cast(), value); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_unsigned_short_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + int removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_unsigned_short_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_unsigned_short_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayUnsignedShort that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_unsigned_short_dispose(nativePtr.cast()); + } } /// ArrayPropertyId wrapper class ArrayPropertyId extends NativeArray { - ArrayPropertyId.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayPropertyId.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayPropertyId() { + final ptr = SpineBindings.bindings.spine_array_property_id_create(); + return ArrayPropertyId.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayPropertyId.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_property_id_create_with_capacity(initialCapacity); + return ArrayPropertyId.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -195,11 +383,69 @@ class ArrayPropertyId extends NativeArray { // NOTE: This will not compile due to C API bug - buffer() returns int instead of Pointer return buffer.cast()[index]; } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_property_id_set_size(nativePtr.cast(), newLength, 0); + } + + /// Adds a value to the end of this array. + @override + void add(int value) { + SpineBindings.bindings.spine_array_property_id_add(nativePtr.cast(), value); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_property_id_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + int removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_property_id_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_property_id_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayPropertyId that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_property_id_dispose(nativePtr.cast()); + } } /// ArrayAnimation wrapper class ArrayAnimation extends NativeArray { - ArrayAnimation.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayAnimation.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayAnimation() { + final ptr = SpineBindings.bindings.spine_array_animation_create(); + return ArrayAnimation.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayAnimation.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_animation_create_with_capacity(initialCapacity); + return ArrayAnimation.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -214,11 +460,70 @@ class ArrayAnimation extends NativeArray { final buffer = SpineBindings.bindings.spine_array_animation_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : Animation.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_animation_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(Animation? value) { + SpineBindings.bindings + .spine_array_animation_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_animation_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + Animation? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_animation_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_animation_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayAnimation that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_animation_dispose(nativePtr.cast()); + } } /// ArrayAtlasPage wrapper class ArrayAtlasPage extends NativeArray { - ArrayAtlasPage.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayAtlasPage.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayAtlasPage() { + final ptr = SpineBindings.bindings.spine_array_atlas_page_create(); + return ArrayAtlasPage.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayAtlasPage.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_atlas_page_create_with_capacity(initialCapacity); + return ArrayAtlasPage.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -233,11 +538,70 @@ class ArrayAtlasPage extends NativeArray { final buffer = SpineBindings.bindings.spine_array_atlas_page_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : AtlasPage.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_atlas_page_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(AtlasPage? value) { + SpineBindings.bindings + .spine_array_atlas_page_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_atlas_page_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + AtlasPage? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_atlas_page_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_atlas_page_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayAtlasPage that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_atlas_page_dispose(nativePtr.cast()); + } } /// ArrayAtlasRegion wrapper class ArrayAtlasRegion extends NativeArray { - ArrayAtlasRegion.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayAtlasRegion.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayAtlasRegion() { + final ptr = SpineBindings.bindings.spine_array_atlas_region_create(); + return ArrayAtlasRegion.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayAtlasRegion.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_atlas_region_create_with_capacity(initialCapacity); + return ArrayAtlasRegion.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -252,11 +616,70 @@ class ArrayAtlasRegion extends NativeArray { final buffer = SpineBindings.bindings.spine_array_atlas_region_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : AtlasRegion.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_atlas_region_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(AtlasRegion? value) { + SpineBindings.bindings + .spine_array_atlas_region_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_atlas_region_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + AtlasRegion? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_atlas_region_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_atlas_region_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayAtlasRegion that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_atlas_region_dispose(nativePtr.cast()); + } } /// ArrayAttachment wrapper class ArrayAttachment extends NativeArray { - ArrayAttachment.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayAttachment.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayAttachment() { + final ptr = SpineBindings.bindings.spine_array_attachment_create(); + return ArrayAttachment.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayAttachment.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_attachment_create_with_capacity(initialCapacity); + return ArrayAttachment.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -289,11 +712,70 @@ class ArrayAttachment extends NativeArray { throw UnsupportedError('Unknown concrete type: $className for abstract class Attachment'); } } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_attachment_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(Attachment? value) { + SpineBindings.bindings + .spine_array_attachment_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_attachment_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + Attachment? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_attachment_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_attachment_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayAttachment that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_attachment_dispose(nativePtr.cast()); + } } /// ArrayBone wrapper class ArrayBone extends NativeArray { - ArrayBone.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayBone.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayBone() { + final ptr = SpineBindings.bindings.spine_array_bone_create(); + return ArrayBone.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayBone.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_bone_create_with_capacity(initialCapacity); + return ArrayBone.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -308,11 +790,69 @@ class ArrayBone extends NativeArray { final buffer = SpineBindings.bindings.spine_array_bone_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : Bone.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_bone_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(Bone? value) { + SpineBindings.bindings.spine_array_bone_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_bone_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + Bone? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_bone_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_bone_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayBone that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_bone_dispose(nativePtr.cast()); + } } /// ArrayBoneData wrapper class ArrayBoneData extends NativeArray { - ArrayBoneData.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayBoneData.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayBoneData() { + final ptr = SpineBindings.bindings.spine_array_bone_data_create(); + return ArrayBoneData.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayBoneData.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_bone_data_create_with_capacity(initialCapacity); + return ArrayBoneData.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -327,11 +867,70 @@ class ArrayBoneData extends NativeArray { final buffer = SpineBindings.bindings.spine_array_bone_data_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : BoneData.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_bone_data_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(BoneData? value) { + SpineBindings.bindings + .spine_array_bone_data_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_bone_data_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + BoneData? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_bone_data_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_bone_data_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayBoneData that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_bone_data_dispose(nativePtr.cast()); + } } /// ArrayBonePose wrapper class ArrayBonePose extends NativeArray { - ArrayBonePose.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayBonePose.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayBonePose() { + final ptr = SpineBindings.bindings.spine_array_bone_pose_create(); + return ArrayBonePose.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayBonePose.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_bone_pose_create_with_capacity(initialCapacity); + return ArrayBonePose.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -346,11 +945,71 @@ class ArrayBonePose extends NativeArray { final buffer = SpineBindings.bindings.spine_array_bone_pose_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : BonePose.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_bone_pose_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(BonePose? value) { + SpineBindings.bindings + .spine_array_bone_pose_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_bone_pose_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + BonePose? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_bone_pose_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_bone_pose_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayBonePose that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_bone_pose_dispose(nativePtr.cast()); + } } /// ArrayBoundingBoxAttachment wrapper class ArrayBoundingBoxAttachment extends NativeArray { - ArrayBoundingBoxAttachment.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayBoundingBoxAttachment.fromPointer(Pointer super.ptr, + {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayBoundingBoxAttachment() { + final ptr = SpineBindings.bindings.spine_array_bounding_box_attachment_create(); + return ArrayBoundingBoxAttachment.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayBoundingBoxAttachment.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_bounding_box_attachment_create_with_capacity(initialCapacity); + return ArrayBoundingBoxAttachment.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -365,11 +1024,71 @@ class ArrayBoundingBoxAttachment extends NativeArray { final buffer = SpineBindings.bindings.spine_array_bounding_box_attachment_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : BoundingBoxAttachment.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings + .spine_array_bounding_box_attachment_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(BoundingBoxAttachment? value) { + SpineBindings.bindings + .spine_array_bounding_box_attachment_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_bounding_box_attachment_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + BoundingBoxAttachment? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_bounding_box_attachment_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_bounding_box_attachment_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayBoundingBoxAttachment that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_bounding_box_attachment_dispose(nativePtr.cast()); + } } /// ArrayConstraint wrapper class ArrayConstraint extends NativeArray { - ArrayConstraint.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayConstraint.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayConstraint() { + final ptr = SpineBindings.bindings.spine_array_constraint_create(); + return ArrayConstraint.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayConstraint.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_constraint_create_with_capacity(initialCapacity); + return ArrayConstraint.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -400,11 +1119,70 @@ class ArrayConstraint extends NativeArray { throw UnsupportedError('Unknown concrete type: $className for abstract class Constraint'); } } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_constraint_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(Constraint? value) { + SpineBindings.bindings + .spine_array_constraint_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_constraint_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + Constraint? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_constraint_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_constraint_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayConstraint that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_constraint_dispose(nativePtr.cast()); + } } /// ArrayConstraintData wrapper class ArrayConstraintData extends NativeArray { - ArrayConstraintData.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayConstraintData.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayConstraintData() { + final ptr = SpineBindings.bindings.spine_array_constraint_data_create(); + return ArrayConstraintData.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayConstraintData.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_constraint_data_create_with_capacity(initialCapacity); + return ArrayConstraintData.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -435,11 +1213,70 @@ class ArrayConstraintData extends NativeArray { throw UnsupportedError('Unknown concrete type: $className for abstract class ConstraintData'); } } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_constraint_data_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(ConstraintData? value) { + SpineBindings.bindings + .spine_array_constraint_data_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_constraint_data_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + ConstraintData? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_constraint_data_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_constraint_data_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayConstraintData that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_constraint_data_dispose(nativePtr.cast()); + } } /// ArrayEvent wrapper class ArrayEvent extends NativeArray { - ArrayEvent.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayEvent.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayEvent() { + final ptr = SpineBindings.bindings.spine_array_event_create(); + return ArrayEvent.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayEvent.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_event_create_with_capacity(initialCapacity); + return ArrayEvent.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -454,11 +1291,69 @@ class ArrayEvent extends NativeArray { final buffer = SpineBindings.bindings.spine_array_event_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : Event.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_event_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(Event? value) { + SpineBindings.bindings.spine_array_event_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_event_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + Event? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_event_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_event_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayEvent that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_event_dispose(nativePtr.cast()); + } } /// ArrayEventData wrapper class ArrayEventData extends NativeArray { - ArrayEventData.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayEventData.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayEventData() { + final ptr = SpineBindings.bindings.spine_array_event_data_create(); + return ArrayEventData.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayEventData.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_event_data_create_with_capacity(initialCapacity); + return ArrayEventData.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -473,11 +1368,70 @@ class ArrayEventData extends NativeArray { final buffer = SpineBindings.bindings.spine_array_event_data_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : EventData.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_event_data_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(EventData? value) { + SpineBindings.bindings + .spine_array_event_data_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_event_data_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + EventData? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_event_data_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_event_data_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayEventData that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_event_data_dispose(nativePtr.cast()); + } } /// ArrayFromProperty wrapper class ArrayFromProperty extends NativeArray { - ArrayFromProperty.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayFromProperty.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayFromProperty() { + final ptr = SpineBindings.bindings.spine_array_from_property_create(); + return ArrayFromProperty.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayFromProperty.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_from_property_create_with_capacity(initialCapacity); + return ArrayFromProperty.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -510,11 +1464,71 @@ class ArrayFromProperty extends NativeArray { throw UnsupportedError('Unknown concrete type: $className for abstract class FromProperty'); } } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_from_property_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(FromProperty? value) { + SpineBindings.bindings + .spine_array_from_property_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_from_property_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + FromProperty? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_from_property_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_from_property_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayFromProperty that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_from_property_dispose(nativePtr.cast()); + } } /// ArrayPhysicsConstraint wrapper class ArrayPhysicsConstraint extends NativeArray { - ArrayPhysicsConstraint.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayPhysicsConstraint.fromPointer(Pointer super.ptr, + {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayPhysicsConstraint() { + final ptr = SpineBindings.bindings.spine_array_physics_constraint_create(); + return ArrayPhysicsConstraint.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayPhysicsConstraint.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_physics_constraint_create_with_capacity(initialCapacity); + return ArrayPhysicsConstraint.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -529,11 +1543,70 @@ class ArrayPhysicsConstraint extends NativeArray { final buffer = SpineBindings.bindings.spine_array_physics_constraint_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : PhysicsConstraint.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_physics_constraint_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(PhysicsConstraint? value) { + SpineBindings.bindings + .spine_array_physics_constraint_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_physics_constraint_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + PhysicsConstraint? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_physics_constraint_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_physics_constraint_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayPhysicsConstraint that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_physics_constraint_dispose(nativePtr.cast()); + } } /// ArrayPolygon wrapper class ArrayPolygon extends NativeArray { - ArrayPolygon.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayPolygon.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayPolygon() { + final ptr = SpineBindings.bindings.spine_array_polygon_create(); + return ArrayPolygon.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayPolygon.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_polygon_create_with_capacity(initialCapacity); + return ArrayPolygon.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -548,11 +1621,69 @@ class ArrayPolygon extends NativeArray { final buffer = SpineBindings.bindings.spine_array_polygon_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : Polygon.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_polygon_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(Polygon? value) { + SpineBindings.bindings.spine_array_polygon_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_polygon_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + Polygon? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_polygon_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_polygon_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayPolygon that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_polygon_dispose(nativePtr.cast()); + } } /// ArraySkin wrapper class ArraySkin extends NativeArray { - ArraySkin.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArraySkin.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArraySkin() { + final ptr = SpineBindings.bindings.spine_array_skin_create(); + return ArraySkin.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArraySkin.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_skin_create_with_capacity(initialCapacity); + return ArraySkin.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -567,11 +1698,69 @@ class ArraySkin extends NativeArray { final buffer = SpineBindings.bindings.spine_array_skin_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : Skin.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_skin_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(Skin? value) { + SpineBindings.bindings.spine_array_skin_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_skin_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + Skin? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_skin_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_skin_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArraySkin that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_skin_dispose(nativePtr.cast()); + } } /// ArraySlot wrapper class ArraySlot extends NativeArray { - ArraySlot.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArraySlot.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArraySlot() { + final ptr = SpineBindings.bindings.spine_array_slot_create(); + return ArraySlot.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArraySlot.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_slot_create_with_capacity(initialCapacity); + return ArraySlot.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -586,11 +1775,69 @@ class ArraySlot extends NativeArray { final buffer = SpineBindings.bindings.spine_array_slot_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : Slot.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_slot_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(Slot? value) { + SpineBindings.bindings.spine_array_slot_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_slot_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + Slot? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_slot_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_slot_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArraySlot that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_slot_dispose(nativePtr.cast()); + } } /// ArraySlotData wrapper class ArraySlotData extends NativeArray { - ArraySlotData.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArraySlotData.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArraySlotData() { + final ptr = SpineBindings.bindings.spine_array_slot_data_create(); + return ArraySlotData.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArraySlotData.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_slot_data_create_with_capacity(initialCapacity); + return ArraySlotData.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -605,11 +1852,70 @@ class ArraySlotData extends NativeArray { final buffer = SpineBindings.bindings.spine_array_slot_data_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : SlotData.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_slot_data_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(SlotData? value) { + SpineBindings.bindings + .spine_array_slot_data_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_slot_data_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + SlotData? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_slot_data_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_slot_data_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArraySlotData that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_slot_data_dispose(nativePtr.cast()); + } } /// ArrayTextureRegion wrapper class ArrayTextureRegion extends NativeArray { - ArrayTextureRegion.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayTextureRegion.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayTextureRegion() { + final ptr = SpineBindings.bindings.spine_array_texture_region_create(); + return ArrayTextureRegion.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayTextureRegion.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_texture_region_create_with_capacity(initialCapacity); + return ArrayTextureRegion.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -624,11 +1930,70 @@ class ArrayTextureRegion extends NativeArray { final buffer = SpineBindings.bindings.spine_array_texture_region_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : TextureRegion.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_texture_region_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(TextureRegion? value) { + SpineBindings.bindings + .spine_array_texture_region_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_texture_region_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + TextureRegion? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_texture_region_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_texture_region_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayTextureRegion that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_texture_region_dispose(nativePtr.cast()); + } } /// ArrayTimeline wrapper class ArrayTimeline extends NativeArray { - ArrayTimeline.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayTimeline.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayTimeline() { + final ptr = SpineBindings.bindings.spine_array_timeline_create(); + return ArrayTimeline.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayTimeline.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_timeline_create_with_capacity(initialCapacity); + return ArrayTimeline.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -721,11 +2086,70 @@ class ArrayTimeline extends NativeArray { throw UnsupportedError('Unknown concrete type: $className for abstract class Timeline'); } } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_timeline_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(Timeline? value) { + SpineBindings.bindings + .spine_array_timeline_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_timeline_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + Timeline? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_timeline_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_timeline_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayTimeline that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_timeline_dispose(nativePtr.cast()); + } } /// ArrayToProperty wrapper class ArrayToProperty extends NativeArray { - ArrayToProperty.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayToProperty.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayToProperty() { + final ptr = SpineBindings.bindings.spine_array_to_property_create(); + return ArrayToProperty.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayToProperty.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_to_property_create_with_capacity(initialCapacity); + return ArrayToProperty.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -758,11 +2182,70 @@ class ArrayToProperty extends NativeArray { throw UnsupportedError('Unknown concrete type: $className for abstract class ToProperty'); } } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_to_property_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(ToProperty? value) { + SpineBindings.bindings + .spine_array_to_property_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_to_property_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + ToProperty? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_to_property_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_to_property_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayToProperty that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_to_property_dispose(nativePtr.cast()); + } } /// ArrayTrackEntry wrapper class ArrayTrackEntry extends NativeArray { - ArrayTrackEntry.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayTrackEntry.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayTrackEntry() { + final ptr = SpineBindings.bindings.spine_array_track_entry_create(); + return ArrayTrackEntry.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayTrackEntry.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_track_entry_create_with_capacity(initialCapacity); + return ArrayTrackEntry.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -777,11 +2260,70 @@ class ArrayTrackEntry extends NativeArray { final buffer = SpineBindings.bindings.spine_array_track_entry_buffer(nativePtr.cast()); return buffer[index].address == 0 ? null : TrackEntry.fromPointer(buffer[index]); } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_track_entry_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(TrackEntry? value) { + SpineBindings.bindings + .spine_array_track_entry_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_track_entry_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + TrackEntry? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_track_entry_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_track_entry_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayTrackEntry that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_track_entry_dispose(nativePtr.cast()); + } } /// ArrayUpdate wrapper class ArrayUpdate extends NativeArray { - ArrayUpdate.fromPointer(Pointer super.ptr); + final bool _ownsMemory; + + ArrayUpdate.fromPointer(Pointer super.ptr, {bool ownsMemory = false}) + : _ownsMemory = ownsMemory; + + /// Create a new empty array + factory ArrayUpdate() { + final ptr = SpineBindings.bindings.spine_array_update_create(); + return ArrayUpdate.fromPointer(ptr.cast(), ownsMemory: true); + } + + /// Create a new array with the specified initial capacity + factory ArrayUpdate.withCapacity(int initialCapacity) { + final ptr = SpineBindings.bindings.spine_array_update_create_with_capacity(initialCapacity); + return ArrayUpdate.fromPointer(ptr.cast(), ownsMemory: true); + } @override int get length { @@ -816,4 +2358,47 @@ class ArrayUpdate extends NativeArray { throw UnsupportedError('Unknown concrete type: $className for abstract class Update'); } } + + @override + set length(int newLength) { + SpineBindings.bindings.spine_array_update_set_size(nativePtr.cast(), newLength, Pointer.fromAddress(0)); + } + + /// Adds a value to the end of this array. + @override + void add(Update? value) { + SpineBindings.bindings.spine_array_update_add(nativePtr.cast(), value?.nativePtr.cast() ?? Pointer.fromAddress(0)); + } + + /// Removes all elements from this array. + @override + void clear() { + SpineBindings.bindings.spine_array_update_clear(nativePtr.cast()); + } + + /// Removes the element at the given index. + @override + Update? removeAt(int index) { + if (index < 0 || index >= length) { + throw RangeError.index(index, this, 'index'); + } + final value = this[index]; + SpineBindings.bindings.spine_array_update_remove_at(nativePtr.cast(), index); + return value; + } + + /// Ensures this array has at least the given capacity. + void ensureCapacity(int capacity) { + SpineBindings.bindings.spine_array_update_ensure_capacity(nativePtr.cast(), capacity); + } + + /// Dispose of the native array + /// Throws an error if the array was not created by this class (i.e., it was obtained from C) + void dispose() { + if (!_ownsMemory) { + throw StateError( + 'Cannot dispose ArrayUpdate that was created from C. Only arrays created via factory constructors can be disposed.'); + } + SpineBindings.bindings.spine_array_update_dispose(nativePtr.cast()); + } } diff --git a/spine-flutter/lib/generated/atlas.dart b/spine-flutter/lib/generated/atlas.dart index 012a9e1f3..f65d35ede 100644 --- a/spine-flutter/lib/generated/atlas.dart +++ b/spine-flutter/lib/generated/atlas.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/atlas_attachment_loader.dart b/spine-flutter/lib/generated/atlas_attachment_loader.dart index bb22eec8e..7ee453280 100644 --- a/spine-flutter/lib/generated/atlas_attachment_loader.dart +++ b/spine-flutter/lib/generated/atlas_attachment_loader.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'atlas.dart'; diff --git a/spine-flutter/lib/generated/atlas_page.dart b/spine-flutter/lib/generated/atlas_page.dart index f3a466acb..dbd97261e 100644 --- a/spine-flutter/lib/generated/atlas_page.dart +++ b/spine-flutter/lib/generated/atlas_page.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'format.dart'; diff --git a/spine-flutter/lib/generated/atlas_region.dart b/spine-flutter/lib/generated/atlas_region.dart index 122296d30..e79fbe22e 100644 --- a/spine-flutter/lib/generated/atlas_region.dart +++ b/spine-flutter/lib/generated/atlas_region.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/attachment.dart b/spine-flutter/lib/generated/attachment.dart index f6658cd9c..2296ad524 100644 --- a/spine-flutter/lib/generated/attachment.dart +++ b/spine-flutter/lib/generated/attachment.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/attachment_loader.dart b/spine-flutter/lib/generated/attachment_loader.dart index ca1187678..bb63bf40b 100644 --- a/spine-flutter/lib/generated/attachment_loader.dart +++ b/spine-flutter/lib/generated/attachment_loader.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'bounding_box_attachment.dart'; import 'clipping_attachment.dart'; import 'mesh_attachment.dart'; diff --git a/spine-flutter/lib/generated/attachment_timeline.dart b/spine-flutter/lib/generated/attachment_timeline.dart index 2376d3888..c358f594f 100644 --- a/spine-flutter/lib/generated/attachment_timeline.dart +++ b/spine-flutter/lib/generated/attachment_timeline.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'slot_timeline.dart'; diff --git a/spine-flutter/lib/generated/bone.dart b/spine-flutter/lib/generated/bone.dart index 952ac3a89..94fa22d2c 100644 --- a/spine-flutter/lib/generated/bone.dart +++ b/spine-flutter/lib/generated/bone.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/bone_data.dart b/spine-flutter/lib/generated/bone_data.dart index 061fa4799..3834bdd98 100644 --- a/spine-flutter/lib/generated/bone_data.dart +++ b/spine-flutter/lib/generated/bone_data.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone_local.dart'; diff --git a/spine-flutter/lib/generated/bone_local.dart b/spine-flutter/lib/generated/bone_local.dart index 5b58bacc6..b1319f941 100644 --- a/spine-flutter/lib/generated/bone_local.dart +++ b/spine-flutter/lib/generated/bone_local.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'inherit.dart'; diff --git a/spine-flutter/lib/generated/bone_pose.dart b/spine-flutter/lib/generated/bone_pose.dart index e1957af5b..6689d875f 100644 --- a/spine-flutter/lib/generated/bone_pose.dart +++ b/spine-flutter/lib/generated/bone_pose.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/bone_timeline.dart b/spine-flutter/lib/generated/bone_timeline.dart index 406c7e4d4..890326e02 100644 --- a/spine-flutter/lib/generated/bone_timeline.dart +++ b/spine-flutter/lib/generated/bone_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/bone_timeline1.dart b/spine-flutter/lib/generated/bone_timeline1.dart index e328c3b4a..1a2922ae1 100644 --- a/spine-flutter/lib/generated/bone_timeline1.dart +++ b/spine-flutter/lib/generated/bone_timeline1.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone_timeline.dart'; diff --git a/spine-flutter/lib/generated/bone_timeline2.dart b/spine-flutter/lib/generated/bone_timeline2.dart index ca5de3cba..59444aba1 100644 --- a/spine-flutter/lib/generated/bone_timeline2.dart +++ b/spine-flutter/lib/generated/bone_timeline2.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone_timeline.dart'; diff --git a/spine-flutter/lib/generated/bounding_box_attachment.dart b/spine-flutter/lib/generated/bounding_box_attachment.dart index f07f3afac..58f9259b1 100644 --- a/spine-flutter/lib/generated/bounding_box_attachment.dart +++ b/spine-flutter/lib/generated/bounding_box_attachment.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'color.dart'; diff --git a/spine-flutter/lib/generated/clipping_attachment.dart b/spine-flutter/lib/generated/clipping_attachment.dart index ae4f4341c..3e98cf436 100644 --- a/spine-flutter/lib/generated/clipping_attachment.dart +++ b/spine-flutter/lib/generated/clipping_attachment.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'color.dart'; diff --git a/spine-flutter/lib/generated/color.dart b/spine-flutter/lib/generated/color.dart index e6555c41a..98d6b2fd0 100644 --- a/spine-flutter/lib/generated/color.dart +++ b/spine-flutter/lib/generated/color.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; diff --git a/spine-flutter/lib/generated/constraint.dart b/spine-flutter/lib/generated/constraint.dart index 7c6f9da69..cc6ffcb84 100644 --- a/spine-flutter/lib/generated/constraint.dart +++ b/spine-flutter/lib/generated/constraint.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; import 'constraint_data.dart'; diff --git a/spine-flutter/lib/generated/constraint_data.dart b/spine-flutter/lib/generated/constraint_data.dart index aeb1992a8..2e0770618 100644 --- a/spine-flutter/lib/generated/constraint_data.dart +++ b/spine-flutter/lib/generated/constraint_data.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; import 'constraint.dart'; diff --git a/spine-flutter/lib/generated/constraint_timeline.dart b/spine-flutter/lib/generated/constraint_timeline.dart index fe477b3a6..67d000f33 100644 --- a/spine-flutter/lib/generated/constraint_timeline.dart +++ b/spine-flutter/lib/generated/constraint_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/constraint_timeline1.dart b/spine-flutter/lib/generated/constraint_timeline1.dart index 306d8a9d9..cdddfbcfa 100644 --- a/spine-flutter/lib/generated/constraint_timeline1.dart +++ b/spine-flutter/lib/generated/constraint_timeline1.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'constraint_timeline.dart'; diff --git a/spine-flutter/lib/generated/curve_timeline.dart b/spine-flutter/lib/generated/curve_timeline.dart index 5a80f47e8..4f72bfcf9 100644 --- a/spine-flutter/lib/generated/curve_timeline.dart +++ b/spine-flutter/lib/generated/curve_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/curve_timeline1.dart b/spine-flutter/lib/generated/curve_timeline1.dart index 4232abe9b..d3f3a2f36 100644 --- a/spine-flutter/lib/generated/curve_timeline1.dart +++ b/spine-flutter/lib/generated/curve_timeline1.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'curve_timeline.dart'; diff --git a/spine-flutter/lib/generated/deform_timeline.dart b/spine-flutter/lib/generated/deform_timeline.dart index d243311b3..ecd11e5f9 100644 --- a/spine-flutter/lib/generated/deform_timeline.dart +++ b/spine-flutter/lib/generated/deform_timeline.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/draw_order_timeline.dart b/spine-flutter/lib/generated/draw_order_timeline.dart index 11415d088..5a33498a5 100644 --- a/spine-flutter/lib/generated/draw_order_timeline.dart +++ b/spine-flutter/lib/generated/draw_order_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/event.dart b/spine-flutter/lib/generated/event.dart index 041d7af1a..17a672431 100644 --- a/spine-flutter/lib/generated/event.dart +++ b/spine-flutter/lib/generated/event.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'event_data.dart'; diff --git a/spine-flutter/lib/generated/event_data.dart b/spine-flutter/lib/generated/event_data.dart index 90f58fbb6..45e51c6b6 100644 --- a/spine-flutter/lib/generated/event_data.dart +++ b/spine-flutter/lib/generated/event_data.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; diff --git a/spine-flutter/lib/generated/event_queue_entry.dart b/spine-flutter/lib/generated/event_queue_entry.dart index 7889081f6..2c3bc9591 100644 --- a/spine-flutter/lib/generated/event_queue_entry.dart +++ b/spine-flutter/lib/generated/event_queue_entry.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'event.dart'; diff --git a/spine-flutter/lib/generated/event_timeline.dart b/spine-flutter/lib/generated/event_timeline.dart index 48e2917b1..5a1c41ca5 100644 --- a/spine-flutter/lib/generated/event_timeline.dart +++ b/spine-flutter/lib/generated/event_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/from_property.dart b/spine-flutter/lib/generated/from_property.dart index ec5d7909b..ff85ac5fb 100644 --- a/spine-flutter/lib/generated/from_property.dart +++ b/spine-flutter/lib/generated/from_property.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/from_rotate.dart b/spine-flutter/lib/generated/from_rotate.dart index 8b4bfad0e..736223ba7 100644 --- a/spine-flutter/lib/generated/from_rotate.dart +++ b/spine-flutter/lib/generated/from_rotate.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'from_property.dart'; diff --git a/spine-flutter/lib/generated/from_scale_x.dart b/spine-flutter/lib/generated/from_scale_x.dart index f852b3d72..b3dae0d08 100644 --- a/spine-flutter/lib/generated/from_scale_x.dart +++ b/spine-flutter/lib/generated/from_scale_x.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'from_property.dart'; diff --git a/spine-flutter/lib/generated/from_scale_y.dart b/spine-flutter/lib/generated/from_scale_y.dart index 975c9f399..dd275388c 100644 --- a/spine-flutter/lib/generated/from_scale_y.dart +++ b/spine-flutter/lib/generated/from_scale_y.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'from_property.dart'; diff --git a/spine-flutter/lib/generated/from_shear_y.dart b/spine-flutter/lib/generated/from_shear_y.dart index 00e023bd4..0c05de818 100644 --- a/spine-flutter/lib/generated/from_shear_y.dart +++ b/spine-flutter/lib/generated/from_shear_y.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'from_property.dart'; diff --git a/spine-flutter/lib/generated/from_x.dart b/spine-flutter/lib/generated/from_x.dart index 64935354a..6ac332ca6 100644 --- a/spine-flutter/lib/generated/from_x.dart +++ b/spine-flutter/lib/generated/from_x.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'from_property.dart'; diff --git a/spine-flutter/lib/generated/from_y.dart b/spine-flutter/lib/generated/from_y.dart index 5a890485c..8a3627a69 100644 --- a/spine-flutter/lib/generated/from_y.dart +++ b/spine-flutter/lib/generated/from_y.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'from_property.dart'; diff --git a/spine-flutter/lib/generated/ik_constraint.dart b/spine-flutter/lib/generated/ik_constraint.dart index 09d2eeb7a..57cfc8050 100644 --- a/spine-flutter/lib/generated/ik_constraint.dart +++ b/spine-flutter/lib/generated/ik_constraint.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/ik_constraint_data.dart b/spine-flutter/lib/generated/ik_constraint_data.dart index db2e1ccf9..ec53e4675 100644 --- a/spine-flutter/lib/generated/ik_constraint_data.dart +++ b/spine-flutter/lib/generated/ik_constraint_data.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/ik_constraint_pose.dart b/spine-flutter/lib/generated/ik_constraint_pose.dart index 9b4a230db..b02d17ae9 100644 --- a/spine-flutter/lib/generated/ik_constraint_pose.dart +++ b/spine-flutter/lib/generated/ik_constraint_pose.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; diff --git a/spine-flutter/lib/generated/ik_constraint_timeline.dart b/spine-flutter/lib/generated/ik_constraint_timeline.dart index 7e1937cb8..9e967a781 100644 --- a/spine-flutter/lib/generated/ik_constraint_timeline.dart +++ b/spine-flutter/lib/generated/ik_constraint_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'constraint_timeline.dart'; diff --git a/spine-flutter/lib/generated/inherit_timeline.dart b/spine-flutter/lib/generated/inherit_timeline.dart index 4f50e65bf..d6f459bd4 100644 --- a/spine-flutter/lib/generated/inherit_timeline.dart +++ b/spine-flutter/lib/generated/inherit_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone_timeline.dart'; diff --git a/spine-flutter/lib/generated/linked_mesh.dart b/spine-flutter/lib/generated/linked_mesh.dart index 7d8be896c..af047e733 100644 --- a/spine-flutter/lib/generated/linked_mesh.dart +++ b/spine-flutter/lib/generated/linked_mesh.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; /// LinkedMesh wrapper abstract class LinkedMesh { diff --git a/spine-flutter/lib/generated/mesh_attachment.dart b/spine-flutter/lib/generated/mesh_attachment.dart index 886ca91e0..9fb0bf606 100644 --- a/spine-flutter/lib/generated/mesh_attachment.dart +++ b/spine-flutter/lib/generated/mesh_attachment.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/path_attachment.dart b/spine-flutter/lib/generated/path_attachment.dart index 8c9f1bbee..553f2fd4d 100644 --- a/spine-flutter/lib/generated/path_attachment.dart +++ b/spine-flutter/lib/generated/path_attachment.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/path_constraint.dart b/spine-flutter/lib/generated/path_constraint.dart index 9a1b1a3d2..f140bbccd 100644 --- a/spine-flutter/lib/generated/path_constraint.dart +++ b/spine-flutter/lib/generated/path_constraint.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/path_constraint_data.dart b/spine-flutter/lib/generated/path_constraint_data.dart index 7aa41a872..917a0565b 100644 --- a/spine-flutter/lib/generated/path_constraint_data.dart +++ b/spine-flutter/lib/generated/path_constraint_data.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/path_constraint_mix_timeline.dart b/spine-flutter/lib/generated/path_constraint_mix_timeline.dart index b129fba36..f2f3e269f 100644 --- a/spine-flutter/lib/generated/path_constraint_mix_timeline.dart +++ b/spine-flutter/lib/generated/path_constraint_mix_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'constraint_timeline.dart'; diff --git a/spine-flutter/lib/generated/path_constraint_pose.dart b/spine-flutter/lib/generated/path_constraint_pose.dart index 7b0a9065f..a843aed0a 100644 --- a/spine-flutter/lib/generated/path_constraint_pose.dart +++ b/spine-flutter/lib/generated/path_constraint_pose.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; diff --git a/spine-flutter/lib/generated/path_constraint_position_timeline.dart b/spine-flutter/lib/generated/path_constraint_position_timeline.dart index 5b8c25501..6057ad671 100644 --- a/spine-flutter/lib/generated/path_constraint_position_timeline.dart +++ b/spine-flutter/lib/generated/path_constraint_position_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'constraint_timeline1.dart'; diff --git a/spine-flutter/lib/generated/path_constraint_spacing_timeline.dart b/spine-flutter/lib/generated/path_constraint_spacing_timeline.dart index 8c5c09660..0b7dc6e67 100644 --- a/spine-flutter/lib/generated/path_constraint_spacing_timeline.dart +++ b/spine-flutter/lib/generated/path_constraint_spacing_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'constraint_timeline1.dart'; diff --git a/spine-flutter/lib/generated/physics_constraint.dart b/spine-flutter/lib/generated/physics_constraint.dart index e9831a3c6..6d57a039f 100644 --- a/spine-flutter/lib/generated/physics_constraint.dart +++ b/spine-flutter/lib/generated/physics_constraint.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/physics_constraint_damping_timeline.dart b/spine-flutter/lib/generated/physics_constraint_damping_timeline.dart index 6fe67dea0..5f3da22f6 100644 --- a/spine-flutter/lib/generated/physics_constraint_damping_timeline.dart +++ b/spine-flutter/lib/generated/physics_constraint_damping_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'physics_constraint_timeline.dart'; diff --git a/spine-flutter/lib/generated/physics_constraint_data.dart b/spine-flutter/lib/generated/physics_constraint_data.dart index 04c136f69..035c6d32a 100644 --- a/spine-flutter/lib/generated/physics_constraint_data.dart +++ b/spine-flutter/lib/generated/physics_constraint_data.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/physics_constraint_gravity_timeline.dart b/spine-flutter/lib/generated/physics_constraint_gravity_timeline.dart index 3b5a45e22..2745dd256 100644 --- a/spine-flutter/lib/generated/physics_constraint_gravity_timeline.dart +++ b/spine-flutter/lib/generated/physics_constraint_gravity_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'physics_constraint_timeline.dart'; diff --git a/spine-flutter/lib/generated/physics_constraint_inertia_timeline.dart b/spine-flutter/lib/generated/physics_constraint_inertia_timeline.dart index 95987dcfc..5c1c33205 100644 --- a/spine-flutter/lib/generated/physics_constraint_inertia_timeline.dart +++ b/spine-flutter/lib/generated/physics_constraint_inertia_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'physics_constraint_timeline.dart'; diff --git a/spine-flutter/lib/generated/physics_constraint_mass_timeline.dart b/spine-flutter/lib/generated/physics_constraint_mass_timeline.dart index 0b232541c..ad1ce0020 100644 --- a/spine-flutter/lib/generated/physics_constraint_mass_timeline.dart +++ b/spine-flutter/lib/generated/physics_constraint_mass_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'physics_constraint_timeline.dart'; diff --git a/spine-flutter/lib/generated/physics_constraint_mix_timeline.dart b/spine-flutter/lib/generated/physics_constraint_mix_timeline.dart index 02fefba82..fe66c1663 100644 --- a/spine-flutter/lib/generated/physics_constraint_mix_timeline.dart +++ b/spine-flutter/lib/generated/physics_constraint_mix_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'physics_constraint_timeline.dart'; diff --git a/spine-flutter/lib/generated/physics_constraint_pose.dart b/spine-flutter/lib/generated/physics_constraint_pose.dart index e0a602452..eec71411e 100644 --- a/spine-flutter/lib/generated/physics_constraint_pose.dart +++ b/spine-flutter/lib/generated/physics_constraint_pose.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; diff --git a/spine-flutter/lib/generated/physics_constraint_reset_timeline.dart b/spine-flutter/lib/generated/physics_constraint_reset_timeline.dart index 2e995bf60..487882a30 100644 --- a/spine-flutter/lib/generated/physics_constraint_reset_timeline.dart +++ b/spine-flutter/lib/generated/physics_constraint_reset_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'constraint_timeline.dart'; diff --git a/spine-flutter/lib/generated/physics_constraint_strength_timeline.dart b/spine-flutter/lib/generated/physics_constraint_strength_timeline.dart index 7139605e9..7bc7dd3ae 100644 --- a/spine-flutter/lib/generated/physics_constraint_strength_timeline.dart +++ b/spine-flutter/lib/generated/physics_constraint_strength_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'physics_constraint_timeline.dart'; diff --git a/spine-flutter/lib/generated/physics_constraint_timeline.dart b/spine-flutter/lib/generated/physics_constraint_timeline.dart index 19670ba16..69e4d401f 100644 --- a/spine-flutter/lib/generated/physics_constraint_timeline.dart +++ b/spine-flutter/lib/generated/physics_constraint_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'constraint_timeline.dart'; diff --git a/spine-flutter/lib/generated/physics_constraint_wind_timeline.dart b/spine-flutter/lib/generated/physics_constraint_wind_timeline.dart index fcd084e5b..8af801df8 100644 --- a/spine-flutter/lib/generated/physics_constraint_wind_timeline.dart +++ b/spine-flutter/lib/generated/physics_constraint_wind_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'physics_constraint_timeline.dart'; diff --git a/spine-flutter/lib/generated/point_attachment.dart b/spine-flutter/lib/generated/point_attachment.dart index ae794e322..d271cb7e6 100644 --- a/spine-flutter/lib/generated/point_attachment.dart +++ b/spine-flutter/lib/generated/point_attachment.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'attachment.dart'; diff --git a/spine-flutter/lib/generated/polygon.dart b/spine-flutter/lib/generated/polygon.dart index d55971820..6ba9b2d74 100644 --- a/spine-flutter/lib/generated/polygon.dart +++ b/spine-flutter/lib/generated/polygon.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/posed.dart b/spine-flutter/lib/generated/posed.dart index 26db970be..3a52136e7 100644 --- a/spine-flutter/lib/generated/posed.dart +++ b/spine-flutter/lib/generated/posed.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; /// Posed wrapper abstract class Posed { diff --git a/spine-flutter/lib/generated/posed_active.dart b/spine-flutter/lib/generated/posed_active.dart index a0a917625..55f5183f9 100644 --- a/spine-flutter/lib/generated/posed_active.dart +++ b/spine-flutter/lib/generated/posed_active.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; diff --git a/spine-flutter/lib/generated/posed_data.dart b/spine-flutter/lib/generated/posed_data.dart index fc3e907af..294c0610a 100644 --- a/spine-flutter/lib/generated/posed_data.dart +++ b/spine-flutter/lib/generated/posed_data.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; diff --git a/spine-flutter/lib/generated/region_attachment.dart b/spine-flutter/lib/generated/region_attachment.dart index 4c2934596..a6b7167ff 100644 --- a/spine-flutter/lib/generated/region_attachment.dart +++ b/spine-flutter/lib/generated/region_attachment.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/render_command.dart b/spine-flutter/lib/generated/render_command.dart index 02181db46..4e27cf4cb 100644 --- a/spine-flutter/lib/generated/render_command.dart +++ b/spine-flutter/lib/generated/render_command.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'blend_mode.dart'; diff --git a/spine-flutter/lib/generated/rgb2_timeline.dart b/spine-flutter/lib/generated/rgb2_timeline.dart index d9f4cbc1e..c9e2f1138 100644 --- a/spine-flutter/lib/generated/rgb2_timeline.dart +++ b/spine-flutter/lib/generated/rgb2_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'slot_curve_timeline.dart'; diff --git a/spine-flutter/lib/generated/rgb_timeline.dart b/spine-flutter/lib/generated/rgb_timeline.dart index 736b595de..54716707a 100644 --- a/spine-flutter/lib/generated/rgb_timeline.dart +++ b/spine-flutter/lib/generated/rgb_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'slot_curve_timeline.dart'; diff --git a/spine-flutter/lib/generated/rgba2_timeline.dart b/spine-flutter/lib/generated/rgba2_timeline.dart index 8da87ed6c..21fb1bb8c 100644 --- a/spine-flutter/lib/generated/rgba2_timeline.dart +++ b/spine-flutter/lib/generated/rgba2_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'slot_curve_timeline.dart'; diff --git a/spine-flutter/lib/generated/rgba_timeline.dart b/spine-flutter/lib/generated/rgba_timeline.dart index 661ec7900..976601828 100644 --- a/spine-flutter/lib/generated/rgba_timeline.dart +++ b/spine-flutter/lib/generated/rgba_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'slot_curve_timeline.dart'; diff --git a/spine-flutter/lib/generated/rotate_timeline.dart b/spine-flutter/lib/generated/rotate_timeline.dart index 74920c3ea..82c3e53ab 100644 --- a/spine-flutter/lib/generated/rotate_timeline.dart +++ b/spine-flutter/lib/generated/rotate_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone_timeline1.dart'; diff --git a/spine-flutter/lib/generated/rtti.dart b/spine-flutter/lib/generated/rtti.dart index 3d17264d4..b1aa0f4d6 100644 --- a/spine-flutter/lib/generated/rtti.dart +++ b/spine-flutter/lib/generated/rtti.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; diff --git a/spine-flutter/lib/generated/scale_timeline.dart b/spine-flutter/lib/generated/scale_timeline.dart index fc857b870..4ea788607 100644 --- a/spine-flutter/lib/generated/scale_timeline.dart +++ b/spine-flutter/lib/generated/scale_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone_timeline2.dart'; diff --git a/spine-flutter/lib/generated/scale_x_timeline.dart b/spine-flutter/lib/generated/scale_x_timeline.dart index 1ddea169c..47c6f9d60 100644 --- a/spine-flutter/lib/generated/scale_x_timeline.dart +++ b/spine-flutter/lib/generated/scale_x_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone_timeline1.dart'; diff --git a/spine-flutter/lib/generated/scale_y_timeline.dart b/spine-flutter/lib/generated/scale_y_timeline.dart index ae2316216..db0189d55 100644 --- a/spine-flutter/lib/generated/scale_y_timeline.dart +++ b/spine-flutter/lib/generated/scale_y_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone_timeline1.dart'; diff --git a/spine-flutter/lib/generated/sequence.dart b/spine-flutter/lib/generated/sequence.dart index 6d785cc3e..c55f4f0c5 100644 --- a/spine-flutter/lib/generated/sequence.dart +++ b/spine-flutter/lib/generated/sequence.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/sequence_timeline.dart b/spine-flutter/lib/generated/sequence_timeline.dart index d61ba2544..9c1666c8f 100644 --- a/spine-flutter/lib/generated/sequence_timeline.dart +++ b/spine-flutter/lib/generated/sequence_timeline.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'attachment.dart'; diff --git a/spine-flutter/lib/generated/shear_timeline.dart b/spine-flutter/lib/generated/shear_timeline.dart index ddc6d1d74..768a58bea 100644 --- a/spine-flutter/lib/generated/shear_timeline.dart +++ b/spine-flutter/lib/generated/shear_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone_timeline2.dart'; diff --git a/spine-flutter/lib/generated/shear_x_timeline.dart b/spine-flutter/lib/generated/shear_x_timeline.dart index c0f7fbb7a..ce55c61ab 100644 --- a/spine-flutter/lib/generated/shear_x_timeline.dart +++ b/spine-flutter/lib/generated/shear_x_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone_timeline1.dart'; diff --git a/spine-flutter/lib/generated/shear_y_timeline.dart b/spine-flutter/lib/generated/shear_y_timeline.dart index 286720514..17637a3f2 100644 --- a/spine-flutter/lib/generated/shear_y_timeline.dart +++ b/spine-flutter/lib/generated/shear_y_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone_timeline1.dart'; diff --git a/spine-flutter/lib/generated/skeleton.dart b/spine-flutter/lib/generated/skeleton.dart index 3b0b80c00..08c5293e1 100644 --- a/spine-flutter/lib/generated/skeleton.dart +++ b/spine-flutter/lib/generated/skeleton.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/skeleton_binary.dart b/spine-flutter/lib/generated/skeleton_binary.dart index 8b84c85ab..356ae474e 100644 --- a/spine-flutter/lib/generated/skeleton_binary.dart +++ b/spine-flutter/lib/generated/skeleton_binary.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'atlas.dart'; diff --git a/spine-flutter/lib/generated/skeleton_bounds.dart b/spine-flutter/lib/generated/skeleton_bounds.dart index 0f5253a73..30332ee23 100644 --- a/spine-flutter/lib/generated/skeleton_bounds.dart +++ b/spine-flutter/lib/generated/skeleton_bounds.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/skeleton_clipping.dart b/spine-flutter/lib/generated/skeleton_clipping.dart index a3a5730d0..9e8b8cdf5 100644 --- a/spine-flutter/lib/generated/skeleton_clipping.dart +++ b/spine-flutter/lib/generated/skeleton_clipping.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/skeleton_data.dart b/spine-flutter/lib/generated/skeleton_data.dart index b5cd1febc..e5bca8030 100644 --- a/spine-flutter/lib/generated/skeleton_data.dart +++ b/spine-flutter/lib/generated/skeleton_data.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'animation.dart'; diff --git a/spine-flutter/lib/generated/skeleton_json.dart b/spine-flutter/lib/generated/skeleton_json.dart index 5e24d857d..d69026c6f 100644 --- a/spine-flutter/lib/generated/skeleton_json.dart +++ b/spine-flutter/lib/generated/skeleton_json.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'atlas.dart'; diff --git a/spine-flutter/lib/generated/skeleton_renderer.dart b/spine-flutter/lib/generated/skeleton_renderer.dart index 1f2290f44..e8dc7f6e3 100644 --- a/spine-flutter/lib/generated/skeleton_renderer.dart +++ b/spine-flutter/lib/generated/skeleton_renderer.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'render_command.dart'; diff --git a/spine-flutter/lib/generated/skin.dart b/spine-flutter/lib/generated/skin.dart index 2cc90c7f9..0ba10e558 100644 --- a/spine-flutter/lib/generated/skin.dart +++ b/spine-flutter/lib/generated/skin.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/slider.dart b/spine-flutter/lib/generated/slider.dart index 7d7284dd0..19144e378 100644 --- a/spine-flutter/lib/generated/slider.dart +++ b/spine-flutter/lib/generated/slider.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/slider_data.dart b/spine-flutter/lib/generated/slider_data.dart index d797430a6..1bcc69e15 100644 --- a/spine-flutter/lib/generated/slider_data.dart +++ b/spine-flutter/lib/generated/slider_data.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/slider_mix_timeline.dart b/spine-flutter/lib/generated/slider_mix_timeline.dart index 8e9d64f38..2c0ab30e5 100644 --- a/spine-flutter/lib/generated/slider_mix_timeline.dart +++ b/spine-flutter/lib/generated/slider_mix_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'constraint_timeline1.dart'; diff --git a/spine-flutter/lib/generated/slider_pose.dart b/spine-flutter/lib/generated/slider_pose.dart index 771a42078..862bbf486 100644 --- a/spine-flutter/lib/generated/slider_pose.dart +++ b/spine-flutter/lib/generated/slider_pose.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; diff --git a/spine-flutter/lib/generated/slider_timeline.dart b/spine-flutter/lib/generated/slider_timeline.dart index d31799f54..beb02cdb9 100644 --- a/spine-flutter/lib/generated/slider_timeline.dart +++ b/spine-flutter/lib/generated/slider_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'constraint_timeline1.dart'; diff --git a/spine-flutter/lib/generated/slot.dart b/spine-flutter/lib/generated/slot.dart index 41f6891d8..2bf75c176 100644 --- a/spine-flutter/lib/generated/slot.dart +++ b/spine-flutter/lib/generated/slot.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone.dart'; diff --git a/spine-flutter/lib/generated/slot_curve_timeline.dart b/spine-flutter/lib/generated/slot_curve_timeline.dart index 809d92476..fbf5c453c 100644 --- a/spine-flutter/lib/generated/slot_curve_timeline.dart +++ b/spine-flutter/lib/generated/slot_curve_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'curve_timeline.dart'; diff --git a/spine-flutter/lib/generated/slot_data.dart b/spine-flutter/lib/generated/slot_data.dart index eb0654e64..9b756d20b 100644 --- a/spine-flutter/lib/generated/slot_data.dart +++ b/spine-flutter/lib/generated/slot_data.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'blend_mode.dart'; diff --git a/spine-flutter/lib/generated/slot_pose.dart b/spine-flutter/lib/generated/slot_pose.dart index 8451f9767..0037c09ef 100644 --- a/spine-flutter/lib/generated/slot_pose.dart +++ b/spine-flutter/lib/generated/slot_pose.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/generated/slot_timeline.dart b/spine-flutter/lib/generated/slot_timeline.dart index e02905523..7bd30e184 100644 --- a/spine-flutter/lib/generated/slot_timeline.dart +++ b/spine-flutter/lib/generated/slot_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/spine_dart_bindings_generated.dart b/spine-flutter/lib/generated/spine_dart_bindings_generated.dart index c6e6ac148..3e1cdc417 100644 --- a/spine-flutter/lib/generated/spine_dart_bindings_generated.dart +++ b/spine-flutter/lib/generated/spine_dart_bindings_generated.dart @@ -6,7 +6,7 @@ // // Generated by `package:ffigen`. // ignore_for_file: type=lint -import '../../ffi_proxy.dart' as ffi; +import '../ffi_proxy.dart' as ffi; /// Bindings for Spine C headers. /// @@ -7710,104 +7710,117 @@ class SpineDartBindings { _spine_skin_entry_get_attachmentPtr.asFunction(); /// Skeleton functions - spine_bounds spine_skeleton_get_bounds( + void spine_skeleton_get_bounds( spine_skeleton skeleton, + spine_array_float output, ) { return _spine_skeleton_get_bounds( skeleton, + output, ); } late final _spine_skeleton_get_boundsPtr = - _lookup>('spine_skeleton_get_bounds'); + _lookup>('spine_skeleton_get_bounds'); late final _spine_skeleton_get_bounds = - _spine_skeleton_get_boundsPtr.asFunction(); + _spine_skeleton_get_boundsPtr.asFunction(); - spine_vector spine_skeleton_get_position_v( + void spine_skeleton_get_position_v( spine_skeleton skeleton, + spine_array_float output, ) { return _spine_skeleton_get_position_v( skeleton, + output, ); } late final _spine_skeleton_get_position_vPtr = - _lookup>('spine_skeleton_get_position_v'); + _lookup>( + 'spine_skeleton_get_position_v'); late final _spine_skeleton_get_position_v = - _spine_skeleton_get_position_vPtr.asFunction(); + _spine_skeleton_get_position_vPtr.asFunction(); /// BonePose functions - spine_vector spine_bone_pose_world_to_local_v( + void spine_bone_pose_world_to_local_v( spine_bone_pose self, double world_x, double world_y, + spine_array_float output, ) { return _spine_bone_pose_world_to_local_v( self, world_x, world_y, + output, ); } late final _spine_bone_pose_world_to_local_vPtr = - _lookup>( + _lookup>( 'spine_bone_pose_world_to_local_v'); - late final _spine_bone_pose_world_to_local_v = - _spine_bone_pose_world_to_local_vPtr.asFunction(); + late final _spine_bone_pose_world_to_local_v = _spine_bone_pose_world_to_local_vPtr + .asFunction(); - spine_vector spine_bone_pose_local_to_world_v( + void spine_bone_pose_local_to_world_v( spine_bone_pose self, double local_x, double local_y, + spine_array_float output, ) { return _spine_bone_pose_local_to_world_v( self, local_x, local_y, + output, ); } late final _spine_bone_pose_local_to_world_vPtr = - _lookup>( + _lookup>( 'spine_bone_pose_local_to_world_v'); - late final _spine_bone_pose_local_to_world_v = - _spine_bone_pose_local_to_world_vPtr.asFunction(); + late final _spine_bone_pose_local_to_world_v = _spine_bone_pose_local_to_world_vPtr + .asFunction(); - spine_vector spine_bone_pose_world_to_parent_v( + void spine_bone_pose_world_to_parent_v( spine_bone_pose self, double world_x, double world_y, + spine_array_float output, ) { return _spine_bone_pose_world_to_parent_v( self, world_x, world_y, + output, ); } late final _spine_bone_pose_world_to_parent_vPtr = - _lookup>( + _lookup>( 'spine_bone_pose_world_to_parent_v'); - late final _spine_bone_pose_world_to_parent_v = - _spine_bone_pose_world_to_parent_vPtr.asFunction(); + late final _spine_bone_pose_world_to_parent_v = _spine_bone_pose_world_to_parent_vPtr + .asFunction(); - spine_vector spine_bone_pose_parent_to_world_v( + void spine_bone_pose_parent_to_world_v( spine_bone_pose self, double parent_x, double parent_y, + spine_array_float output, ) { return _spine_bone_pose_parent_to_world_v( self, parent_x, parent_y, + output, ); } late final _spine_bone_pose_parent_to_world_vPtr = - _lookup>( + _lookup>( 'spine_bone_pose_parent_to_world_v'); - late final _spine_bone_pose_parent_to_world_v = - _spine_bone_pose_parent_to_world_vPtr.asFunction(); + late final _spine_bone_pose_parent_to_world_v = _spine_bone_pose_parent_to_world_vPtr + .asFunction(); spine_alpha_timeline spine_alpha_timeline_create( int frameCount, @@ -39937,634 +39950,254 @@ class SpineDartBindings { /// mbstate_t is an opaque object to keep conversion state, during multibyte /// stream conversions. The content must not be referenced by user programs. -final class __mbstate_t extends ffi.Union { - @ffi.Array.multi([128]) - external ffi.Array __mbstate8; - - /// for alignment - @ffi.LongLong() - external int _mbstateL; -} - -final class spine_alpha_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_animation_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_animation_state_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_animation_state_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_atlas_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_atlas_attachment_loader_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_atlas_page_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_atlas_region_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_attachment_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_attachment_loader_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_attachment_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_bone_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_bone_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_bone_local_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_bone_pose_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_bone_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_bone_timeline1_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_bone_timeline2_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_bounding_box_attachment_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_clipping_attachment_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_color_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_constraint_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_constraint_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_constraint_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_constraint_timeline1_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_curve_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_curve_timeline1_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_deform_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_draw_order_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_event_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_event_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_event_queue_entry_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_event_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_from_property_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_from_rotate_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_from_scale_x_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_from_scale_y_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_from_shear_y_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_from_x_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_from_y_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_ik_constraint_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_ik_constraint_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_ik_constraint_pose_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_ik_constraint_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_inherit_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_linked_mesh_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_mesh_attachment_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_path_attachment_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_path_constraint_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_path_constraint_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_path_constraint_mix_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_path_constraint_pose_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_path_constraint_position_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_path_constraint_spacing_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_physics_constraint_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_physics_constraint_damping_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_physics_constraint_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_physics_constraint_gravity_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_physics_constraint_inertia_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_physics_constraint_mass_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_physics_constraint_mix_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_physics_constraint_pose_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_physics_constraint_reset_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_physics_constraint_strength_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_physics_constraint_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_physics_constraint_wind_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_point_attachment_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_polygon_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_posed_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_posed_active_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_posed_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_region_attachment_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_render_command_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_rgb2_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_rgba2_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_rgba_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_rgb_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_rotate_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_rtti_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_scale_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_scale_x_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_scale_y_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_sequence_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_sequence_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_shear_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_shear_x_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_shear_y_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_skeleton_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_skeleton_binary_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_skeleton_bounds_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_skeleton_clipping_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_skeleton_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_skeleton_json_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_skeleton_renderer_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_skin_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_slider_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_slider_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_slider_mix_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_slider_pose_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_slider_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_slot_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_slot_curve_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_slot_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_slot_pose_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_slot_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_texture_region_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_to_property_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_to_rotate_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_to_scale_x_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_to_scale_y_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_to_shear_y_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_to_x_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_to_y_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_track_entry_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_transform_constraint_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_transform_constraint_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_transform_constraint_pose_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_transform_constraint_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_translate_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_translate_x_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_translate_y_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_update_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -final class spine_vertex_attachment_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} + +final class spine_alpha_timeline_wrapper extends ffi.Opaque {} + +final class spine_animation_wrapper extends ffi.Opaque {} + +final class spine_animation_state_wrapper extends ffi.Opaque {} + +final class spine_animation_state_data_wrapper extends ffi.Opaque {} + +final class spine_atlas_wrapper extends ffi.Opaque {} + +final class spine_atlas_attachment_loader_wrapper extends ffi.Opaque {} + +final class spine_atlas_page_wrapper extends ffi.Opaque {} + +final class spine_atlas_region_wrapper extends ffi.Opaque {} + +final class spine_attachment_wrapper extends ffi.Opaque {} + +final class spine_attachment_loader_wrapper extends ffi.Opaque {} + +final class spine_attachment_timeline_wrapper extends ffi.Opaque {} + +final class spine_bone_wrapper extends ffi.Opaque {} + +final class spine_bone_data_wrapper extends ffi.Opaque {} + +final class spine_bone_local_wrapper extends ffi.Opaque {} + +final class spine_bone_pose_wrapper extends ffi.Opaque {} + +final class spine_bone_timeline_wrapper extends ffi.Opaque {} + +final class spine_bone_timeline1_wrapper extends ffi.Opaque {} + +final class spine_bone_timeline2_wrapper extends ffi.Opaque {} + +final class spine_bounding_box_attachment_wrapper extends ffi.Opaque {} + +final class spine_clipping_attachment_wrapper extends ffi.Opaque {} + +final class spine_color_wrapper extends ffi.Opaque {} + +final class spine_constraint_wrapper extends ffi.Opaque {} + +final class spine_constraint_data_wrapper extends ffi.Opaque {} + +final class spine_constraint_timeline_wrapper extends ffi.Opaque {} + +final class spine_constraint_timeline1_wrapper extends ffi.Opaque {} + +final class spine_curve_timeline_wrapper extends ffi.Opaque {} + +final class spine_curve_timeline1_wrapper extends ffi.Opaque {} + +final class spine_deform_timeline_wrapper extends ffi.Opaque {} + +final class spine_draw_order_timeline_wrapper extends ffi.Opaque {} + +final class spine_event_wrapper extends ffi.Opaque {} + +final class spine_event_data_wrapper extends ffi.Opaque {} + +final class spine_event_queue_entry_wrapper extends ffi.Opaque {} + +final class spine_event_timeline_wrapper extends ffi.Opaque {} + +final class spine_from_property_wrapper extends ffi.Opaque {} + +final class spine_from_rotate_wrapper extends ffi.Opaque {} + +final class spine_from_scale_x_wrapper extends ffi.Opaque {} + +final class spine_from_scale_y_wrapper extends ffi.Opaque {} + +final class spine_from_shear_y_wrapper extends ffi.Opaque {} + +final class spine_from_x_wrapper extends ffi.Opaque {} + +final class spine_from_y_wrapper extends ffi.Opaque {} + +final class spine_ik_constraint_wrapper extends ffi.Opaque {} + +final class spine_ik_constraint_data_wrapper extends ffi.Opaque {} + +final class spine_ik_constraint_pose_wrapper extends ffi.Opaque {} + +final class spine_ik_constraint_timeline_wrapper extends ffi.Opaque {} + +final class spine_inherit_timeline_wrapper extends ffi.Opaque {} + +final class spine_linked_mesh_wrapper extends ffi.Opaque {} + +final class spine_mesh_attachment_wrapper extends ffi.Opaque {} + +final class spine_path_attachment_wrapper extends ffi.Opaque {} + +final class spine_path_constraint_wrapper extends ffi.Opaque {} + +final class spine_path_constraint_data_wrapper extends ffi.Opaque {} + +final class spine_path_constraint_mix_timeline_wrapper extends ffi.Opaque {} + +final class spine_path_constraint_pose_wrapper extends ffi.Opaque {} + +final class spine_path_constraint_position_timeline_wrapper extends ffi.Opaque {} + +final class spine_path_constraint_spacing_timeline_wrapper extends ffi.Opaque {} + +final class spine_physics_constraint_wrapper extends ffi.Opaque {} + +final class spine_physics_constraint_damping_timeline_wrapper extends ffi.Opaque {} + +final class spine_physics_constraint_data_wrapper extends ffi.Opaque {} + +final class spine_physics_constraint_gravity_timeline_wrapper extends ffi.Opaque {} + +final class spine_physics_constraint_inertia_timeline_wrapper extends ffi.Opaque {} + +final class spine_physics_constraint_mass_timeline_wrapper extends ffi.Opaque {} + +final class spine_physics_constraint_mix_timeline_wrapper extends ffi.Opaque {} + +final class spine_physics_constraint_pose_wrapper extends ffi.Opaque {} + +final class spine_physics_constraint_reset_timeline_wrapper extends ffi.Opaque {} + +final class spine_physics_constraint_strength_timeline_wrapper extends ffi.Opaque {} + +final class spine_physics_constraint_timeline_wrapper extends ffi.Opaque {} + +final class spine_physics_constraint_wind_timeline_wrapper extends ffi.Opaque {} + +final class spine_point_attachment_wrapper extends ffi.Opaque {} + +final class spine_polygon_wrapper extends ffi.Opaque {} + +final class spine_posed_wrapper extends ffi.Opaque {} + +final class spine_posed_active_wrapper extends ffi.Opaque {} + +final class spine_posed_data_wrapper extends ffi.Opaque {} + +final class spine_region_attachment_wrapper extends ffi.Opaque {} + +final class spine_render_command_wrapper extends ffi.Opaque {} + +final class spine_rgb2_timeline_wrapper extends ffi.Opaque {} + +final class spine_rgba2_timeline_wrapper extends ffi.Opaque {} + +final class spine_rgba_timeline_wrapper extends ffi.Opaque {} + +final class spine_rgb_timeline_wrapper extends ffi.Opaque {} + +final class spine_rotate_timeline_wrapper extends ffi.Opaque {} + +final class spine_rtti_wrapper extends ffi.Opaque {} + +final class spine_scale_timeline_wrapper extends ffi.Opaque {} + +final class spine_scale_x_timeline_wrapper extends ffi.Opaque {} + +final class spine_scale_y_timeline_wrapper extends ffi.Opaque {} + +final class spine_sequence_wrapper extends ffi.Opaque {} + +final class spine_sequence_timeline_wrapper extends ffi.Opaque {} + +final class spine_shear_timeline_wrapper extends ffi.Opaque {} + +final class spine_shear_x_timeline_wrapper extends ffi.Opaque {} + +final class spine_shear_y_timeline_wrapper extends ffi.Opaque {} + +final class spine_skeleton_wrapper extends ffi.Opaque {} + +final class spine_skeleton_binary_wrapper extends ffi.Opaque {} + +final class spine_skeleton_bounds_wrapper extends ffi.Opaque {} + +final class spine_skeleton_clipping_wrapper extends ffi.Opaque {} + +final class spine_skeleton_data_wrapper extends ffi.Opaque {} + +final class spine_skeleton_json_wrapper extends ffi.Opaque {} + +final class spine_skeleton_renderer_wrapper extends ffi.Opaque {} + +final class spine_skin_wrapper extends ffi.Opaque {} + +final class spine_slider_wrapper extends ffi.Opaque {} + +final class spine_slider_data_wrapper extends ffi.Opaque {} + +final class spine_slider_mix_timeline_wrapper extends ffi.Opaque {} + +final class spine_slider_pose_wrapper extends ffi.Opaque {} + +final class spine_slider_timeline_wrapper extends ffi.Opaque {} + +final class spine_slot_wrapper extends ffi.Opaque {} + +final class spine_slot_curve_timeline_wrapper extends ffi.Opaque {} + +final class spine_slot_data_wrapper extends ffi.Opaque {} + +final class spine_slot_pose_wrapper extends ffi.Opaque {} + +final class spine_slot_timeline_wrapper extends ffi.Opaque {} + +final class spine_texture_region_wrapper extends ffi.Opaque {} + +final class spine_timeline_wrapper extends ffi.Opaque {} + +final class spine_to_property_wrapper extends ffi.Opaque {} + +final class spine_to_rotate_wrapper extends ffi.Opaque {} + +final class spine_to_scale_x_wrapper extends ffi.Opaque {} + +final class spine_to_scale_y_wrapper extends ffi.Opaque {} + +final class spine_to_shear_y_wrapper extends ffi.Opaque {} + +final class spine_to_x_wrapper extends ffi.Opaque {} + +final class spine_to_y_wrapper extends ffi.Opaque {} + +final class spine_track_entry_wrapper extends ffi.Opaque {} + +final class spine_transform_constraint_wrapper extends ffi.Opaque {} + +final class spine_transform_constraint_data_wrapper extends ffi.Opaque {} + +final class spine_transform_constraint_pose_wrapper extends ffi.Opaque {} + +final class spine_transform_constraint_timeline_wrapper extends ffi.Opaque {} + +final class spine_translate_timeline_wrapper extends ffi.Opaque {} + +final class spine_translate_x_timeline_wrapper extends ffi.Opaque {} + +final class spine_translate_y_timeline_wrapper extends ffi.Opaque {} + +final class spine_update_wrapper extends ffi.Opaque {} + +final class spine_vertex_attachment_wrapper extends ffi.Opaque {} abstract class spine_attachment_type { static const int SPINE_ATTACHMENT_TYPE_REGION = 0; @@ -40708,140 +40341,59 @@ abstract class spine_texture_wrap { static const int SPINE_TEXTURE_WRAP_REPEAT = 2; } -final class spine_array_float_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_float_wrapper extends ffi.Opaque {} -final class spine_array_int_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_int_wrapper extends ffi.Opaque {} -final class spine_array_unsigned_short_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_unsigned_short_wrapper extends ffi.Opaque {} -final class spine_array_property_id_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_property_id_wrapper extends ffi.Opaque {} -final class spine_array_animation_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_animation_wrapper extends ffi.Opaque {} -final class spine_array_atlas_page_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_atlas_page_wrapper extends ffi.Opaque {} -final class spine_array_atlas_region_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_atlas_region_wrapper extends ffi.Opaque {} -final class spine_array_attachment_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_attachment_wrapper extends ffi.Opaque {} -final class spine_array_bone_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_bone_wrapper extends ffi.Opaque {} -final class spine_array_bone_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_bone_data_wrapper extends ffi.Opaque {} -final class spine_array_bone_pose_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_bone_pose_wrapper extends ffi.Opaque {} -final class spine_array_bounding_box_attachment_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_bounding_box_attachment_wrapper extends ffi.Opaque {} -final class spine_array_constraint_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_constraint_wrapper extends ffi.Opaque {} -final class spine_array_constraint_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_constraint_data_wrapper extends ffi.Opaque {} -final class spine_array_event_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_event_wrapper extends ffi.Opaque {} -final class spine_array_event_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_event_data_wrapper extends ffi.Opaque {} -final class spine_array_from_property_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_from_property_wrapper extends ffi.Opaque {} -final class spine_array_physics_constraint_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_physics_constraint_wrapper extends ffi.Opaque {} -final class spine_array_polygon_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_polygon_wrapper extends ffi.Opaque {} -final class spine_array_skin_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_skin_wrapper extends ffi.Opaque {} -final class spine_array_slot_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_slot_wrapper extends ffi.Opaque {} -final class spine_array_slot_data_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_slot_data_wrapper extends ffi.Opaque {} -final class spine_array_texture_region_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_texture_region_wrapper extends ffi.Opaque {} -final class spine_array_timeline_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_timeline_wrapper extends ffi.Opaque {} -final class spine_array_to_property_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_to_property_wrapper extends ffi.Opaque {} -final class spine_array_track_entry_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_track_entry_wrapper extends ffi.Opaque {} -final class spine_array_update_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_array_update_wrapper extends ffi.Opaque {} typedef spine_array_float = ffi.Pointer; typedef spine_array_int = ffi.Pointer; @@ -40899,64 +40451,19 @@ typedef spine_bone_local = ffi.Pointer; typedef spine_atlas = ffi.Pointer; typedef spine_skeleton_data = ffi.Pointer; -final class spine_atlas_result_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_atlas_result_wrapper extends ffi.Opaque {} -final class spine_skeleton_data_result_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_skeleton_data_result_wrapper extends ffi.Opaque {} -final class spine_skeleton_drawable_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_skeleton_drawable_wrapper extends ffi.Opaque {} -final class spine_animation_state_events_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_animation_state_events_wrapper extends ffi.Opaque {} -final class spine_skin_entry_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_skin_entry_wrapper extends ffi.Opaque {} -final class spine_skin_entries_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} +final class spine_skin_entries_wrapper extends ffi.Opaque {} -final class spine_texture_loader_wrapper extends ffi.Struct { - @ffi.Char() - external int _dummy; -} - -/// Bounds struct -final class spine_bounds extends ffi.Struct { - @ffi.Float() - external double x; - - @ffi.Float() - external double y; - - @ffi.Float() - external double width; - - @ffi.Float() - external double height; -} - -/// Vector struct -final class spine_vector extends ffi.Struct { - @ffi.Float() - external double x; - - @ffi.Float() - external double y; -} +final class spine_texture_loader_wrapper extends ffi.Opaque {} typedef spine_atlas_result = ffi.Pointer; diff --git a/spine-flutter/lib/generated/texture_region.dart b/spine-flutter/lib/generated/texture_region.dart index 9014c9ee1..3df91d574 100644 --- a/spine-flutter/lib/generated/texture_region.dart +++ b/spine-flutter/lib/generated/texture_region.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/timeline.dart b/spine-flutter/lib/generated/timeline.dart index d3264115b..9d5cdbebf 100644 --- a/spine-flutter/lib/generated/timeline.dart +++ b/spine-flutter/lib/generated/timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/to_property.dart b/spine-flutter/lib/generated/to_property.dart index 8b80952ba..d64ad7291 100644 --- a/spine-flutter/lib/generated/to_property.dart +++ b/spine-flutter/lib/generated/to_property.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/to_rotate.dart b/spine-flutter/lib/generated/to_rotate.dart index f995afa7e..e56f37155 100644 --- a/spine-flutter/lib/generated/to_rotate.dart +++ b/spine-flutter/lib/generated/to_rotate.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'to_property.dart'; diff --git a/spine-flutter/lib/generated/to_scale_x.dart b/spine-flutter/lib/generated/to_scale_x.dart index 8a4dd8896..c4697d049 100644 --- a/spine-flutter/lib/generated/to_scale_x.dart +++ b/spine-flutter/lib/generated/to_scale_x.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'to_property.dart'; diff --git a/spine-flutter/lib/generated/to_scale_y.dart b/spine-flutter/lib/generated/to_scale_y.dart index 244ed8f18..f472dd5cf 100644 --- a/spine-flutter/lib/generated/to_scale_y.dart +++ b/spine-flutter/lib/generated/to_scale_y.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'to_property.dart'; diff --git a/spine-flutter/lib/generated/to_shear_y.dart b/spine-flutter/lib/generated/to_shear_y.dart index a19272c79..af8f41f15 100644 --- a/spine-flutter/lib/generated/to_shear_y.dart +++ b/spine-flutter/lib/generated/to_shear_y.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'to_property.dart'; diff --git a/spine-flutter/lib/generated/to_x.dart b/spine-flutter/lib/generated/to_x.dart index 6def4fb43..db8172b56 100644 --- a/spine-flutter/lib/generated/to_x.dart +++ b/spine-flutter/lib/generated/to_x.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'to_property.dart'; diff --git a/spine-flutter/lib/generated/to_y.dart b/spine-flutter/lib/generated/to_y.dart index 248d8cd59..85a4e8d2a 100644 --- a/spine-flutter/lib/generated/to_y.dart +++ b/spine-flutter/lib/generated/to_y.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'to_property.dart'; diff --git a/spine-flutter/lib/generated/track_entry.dart b/spine-flutter/lib/generated/track_entry.dart index e5a503c28..bacd3b6cf 100644 --- a/spine-flutter/lib/generated/track_entry.dart +++ b/spine-flutter/lib/generated/track_entry.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'animation.dart'; diff --git a/spine-flutter/lib/generated/transform_constraint.dart b/spine-flutter/lib/generated/transform_constraint.dart index bbc35cb4e..281390c3a 100644 --- a/spine-flutter/lib/generated/transform_constraint.dart +++ b/spine-flutter/lib/generated/transform_constraint.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/transform_constraint_data.dart b/spine-flutter/lib/generated/transform_constraint_data.dart index cefe8c55d..c637f0a73 100644 --- a/spine-flutter/lib/generated/transform_constraint_data.dart +++ b/spine-flutter/lib/generated/transform_constraint_data.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; diff --git a/spine-flutter/lib/generated/transform_constraint_pose.dart b/spine-flutter/lib/generated/transform_constraint_pose.dart index 6f9496c69..365c5ff3c 100644 --- a/spine-flutter/lib/generated/transform_constraint_pose.dart +++ b/spine-flutter/lib/generated/transform_constraint_pose.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; diff --git a/spine-flutter/lib/generated/transform_constraint_timeline.dart b/spine-flutter/lib/generated/transform_constraint_timeline.dart index b4acd74db..0fdad5fb1 100644 --- a/spine-flutter/lib/generated/transform_constraint_timeline.dart +++ b/spine-flutter/lib/generated/transform_constraint_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'constraint_timeline.dart'; diff --git a/spine-flutter/lib/generated/translate_timeline.dart b/spine-flutter/lib/generated/translate_timeline.dart index ba36bd27c..68ef342f4 100644 --- a/spine-flutter/lib/generated/translate_timeline.dart +++ b/spine-flutter/lib/generated/translate_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone_timeline2.dart'; diff --git a/spine-flutter/lib/generated/translate_x_timeline.dart b/spine-flutter/lib/generated/translate_x_timeline.dart index 8a10cf4cb..7c3a41844 100644 --- a/spine-flutter/lib/generated/translate_x_timeline.dart +++ b/spine-flutter/lib/generated/translate_x_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone_timeline1.dart'; diff --git a/spine-flutter/lib/generated/translate_y_timeline.dart b/spine-flutter/lib/generated/translate_y_timeline.dart index 540a18349..a24f2830c 100644 --- a/spine-flutter/lib/generated/translate_y_timeline.dart +++ b/spine-flutter/lib/generated/translate_y_timeline.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'bone_timeline1.dart'; diff --git a/spine-flutter/lib/generated/update.dart b/spine-flutter/lib/generated/update.dart index 033e9bf15..f69648fc0 100644 --- a/spine-flutter/lib/generated/update.dart +++ b/spine-flutter/lib/generated/update.dart @@ -29,7 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; +import '../ffi_proxy.dart'; import '../spine_bindings.dart'; import 'rtti.dart'; import 'physics.dart'; diff --git a/spine-flutter/lib/generated/vertex_attachment.dart b/spine-flutter/lib/generated/vertex_attachment.dart index c8e4df9f5..833d04235 100644 --- a/spine-flutter/lib/generated/vertex_attachment.dart +++ b/spine-flutter/lib/generated/vertex_attachment.dart @@ -29,8 +29,7 @@ // AUTO GENERATED FILE, DO NOT EDIT. -import 'dart:ffi'; -import 'package:ffi/ffi.dart'; +import '../ffi_proxy.dart'; import 'spine_dart_bindings_generated.dart'; import '../spine_bindings.dart'; import 'arrays.dart'; diff --git a/spine-flutter/lib/io_stub.dart b/spine-flutter/lib/io_stub.dart new file mode 100644 index 000000000..70bad8c7e --- /dev/null +++ b/spine-flutter/lib/io_stub.dart @@ -0,0 +1,16 @@ +import 'dart:typed_data'; + +/// Stub File class for web platform +class File { + final String path; + + File(this.path); + + Future readAsBytes() async { + throw UnsupportedError('File operations are not supported on web. Use fromAsset or fromHttp instead.'); + } + + Future readAsString() async { + throw UnsupportedError('File operations are not supported on web. Use fromAsset or fromHttp instead.'); + } +} diff --git a/spine-flutter/lib/malloc_native.dart b/spine-flutter/lib/malloc_native.dart new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/spine-flutter/lib/malloc_native.dart @@ -0,0 +1 @@ + diff --git a/spine-flutter/lib/malloc_web.dart b/spine-flutter/lib/malloc_web.dart new file mode 100644 index 000000000..8efaf35cd --- /dev/null +++ b/spine-flutter/lib/malloc_web.dart @@ -0,0 +1,11 @@ +import 'web_ffi/web_ffi.dart'; +import 'web_ffi/web_ffi_modules.dart'; + +/// Web implementation of malloc that uses the Memory allocator +/// Memory.global will be set when the DynamicLibrary is loaded +Allocator get malloc { + if (Memory.global == null) { + throw StateError('Memory.global is not initialized. Make sure spine is initialized before using malloc.'); + } + return Memory.global!; +} diff --git a/spine-flutter/lib/native_array.dart b/spine-flutter/lib/native_array.dart index 9144a5509..6c389ba1b 100644 --- a/spine-flutter/lib/native_array.dart +++ b/spine-flutter/lib/native_array.dart @@ -27,7 +27,7 @@ // SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // *****************************************************************************/ -import 'dart:ffi'; +import 'ffi_proxy.dart'; import 'dart:collection'; /// Base class for native spine arrays. @@ -55,7 +55,7 @@ abstract class NativeArray extends ListBase { /// Set the element at the given index. /// For read-only arrays, this will throw an UnsupportedError. - /// Must be implemented by subclasses. + /// Must be implemented by subclasses that support modification. @override void operator []=(int index, T value) { throw UnsupportedError('This array is read-only'); @@ -63,7 +63,7 @@ abstract class NativeArray extends ListBase { /// Sets the length of the list. /// For read-only arrays, this will throw an UnsupportedError. - /// Must be implemented by subclasses. + /// Must be implemented by subclasses that support modification. @override set length(int newLength) { throw UnsupportedError('This array is read-only'); diff --git a/spine-flutter/lib/spine_dart.dart b/spine-flutter/lib/spine_dart.dart index f026a1be4..fbb1436df 100644 --- a/spine-flutter/lib/spine_dart.dart +++ b/spine-flutter/lib/spine_dart.dart @@ -26,12 +26,13 @@ /// THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. library; +import 'package:spine_flutter/generated/arrays.dart'; + import 'generated/spine_dart_bindings_generated.dart'; import 'spine_bindings.dart'; -import 'spine_dart_init.dart' if (dart.library.html) 'spine_flutter_init_web.dart'; -import 'dart:ffi'; +import 'spine_dart_init.dart' if (dart.library.html) 'spine_dart_init_web.dart'; +import 'ffi_proxy.dart'; import 'dart:typed_data'; -import 'package:ffi/ffi.dart'; import 'generated/atlas.dart'; import 'generated/skeleton_data.dart'; import 'generated/skin.dart'; @@ -346,40 +347,59 @@ class Vector { extension SkeletonExtensions on Skeleton { /// Get the axis-aligned bounding box (AABB) containing all world vertices of the skeleton Bounds get bounds { - final spineBounds = SpineBindings.bindings.spine_skeleton_get_bounds(nativePtr.cast()); - return Bounds( - x: spineBounds.x, - y: spineBounds.y, - width: spineBounds.width, - height: spineBounds.height, + final output = ArrayFloat(); + SpineBindings.bindings.spine_skeleton_get_bounds(nativePtr.cast(), output.nativePtr.cast()); + final bounds = Bounds( + x: output[0], + y: output[1], + width: output[2], + height: output[3], ); + output.dispose(); + return bounds; } Vector getPosition() { - final position = SpineBindings.bindings.spine_skeleton_get_position_v(nativePtr.cast()); - return Vector(x: position.x, y: position.y); + final output = ArrayFloat.withCapacity(2); + SpineBindings.bindings.spine_skeleton_get_position_v(nativePtr.cast(), output.nativePtr.cast()); + final position = Vector(x: output[0], y: output[1]); + output.dispose(); + return position; } } extension BonePoseExtensions on BonePose { Vector worldToLocal(double worldX, double worldY) { - final result = SpineBindings.bindings.spine_bone_pose_world_to_local_v(nativePtr.cast(), worldX, worldY); - return Vector(x: result.x, y: result.y); + final output = ArrayFloat.withCapacity(2); + SpineBindings.bindings.spine_bone_pose_world_to_local_v(nativePtr.cast(), worldX, worldY, output.nativePtr.cast()); + final vector = Vector(x: output[0], y: output[1]); + output.dispose(); + return vector; } Vector localToWorld(double localX, double localY) { - final result = SpineBindings.bindings.spine_bone_pose_local_to_world_v(nativePtr.cast(), localX, localY); - return Vector(x: result.x, y: result.y); + final output = ArrayFloat.withCapacity(2); + SpineBindings.bindings.spine_bone_pose_local_to_world_v(nativePtr.cast(), localX, localY, output.nativePtr.cast()); + final vector = Vector(x: output[0], y: output[1]); + output.dispose(); + return vector; } Vector worldToParent(double worldX, double worldY) { - final result = SpineBindings.bindings.spine_bone_pose_world_to_parent_v(nativePtr.cast(), worldX, worldY); - return Vector(x: result.x, y: result.y); + final output = ArrayFloat.withCapacity(2); + SpineBindings.bindings.spine_bone_pose_world_to_parent_v(nativePtr.cast(), worldX, worldY, output.nativePtr.cast()); + final vector = Vector(x: output[0], y: output[1]); + output.dispose(); + return vector; } Vector parentToWorld(double parentX, double parentY) { - final result = SpineBindings.bindings.spine_bone_pose_parent_to_world_v(nativePtr.cast(), parentX, parentY); - return Vector(x: result.x, y: result.y); + final output = ArrayFloat.withCapacity(2); + SpineBindings.bindings + .spine_bone_pose_parent_to_world_v(nativePtr.cast(), parentX, parentY, output.nativePtr.cast()); + final vector = Vector(x: output[0], y: output[1]); + output.dispose(); + return vector; } } diff --git a/spine-flutter/lib/spine_dart_init_web.dart b/spine-flutter/lib/spine_dart_init_web.dart index cd1bb5745..3382796c2 100644 --- a/spine-flutter/lib/spine_dart_init_web.dart +++ b/spine-flutter/lib/spine_dart_init_web.dart @@ -1,37 +1,39 @@ -/// -/// Spine Runtimes License Agreement -/// Last updated April 5, 2025. Replaces all prior versions. -/// -/// Copyright (c) 2013-2025, Esoteric Software LLC -/// -/// Integration of the Spine Runtimes into software or otherwise creating -/// derivative works of the Spine Runtimes is permitted under the terms and -/// conditions of Section 2 of the Spine Editor License Agreement: -/// http://esotericsoftware.com/spine-editor-license -/// -/// Otherwise, it is permitted to integrate the Spine Runtimes into software -/// or otherwise create derivative works of the Spine Runtimes (collectively, -/// "Products"), provided that each user of the Products must obtain their own -/// Spine Editor license and redistribution of the Products in any form must -/// include this license and copyright notice. -/// -/// THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY -/// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -/// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -/// DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY -/// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -/// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, -/// BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND -/// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -/// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -/// THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -/// +// +// Spine Runtimes License Agreement +// Last updated April 5, 2025. Replaces all prior versions. +// +// Copyright (c) 2013-2025, Esoteric Software LLC +// +// Integration of the Spine Runtimes into software or otherwise creating +// derivative works of the Spine Runtimes is permitted under the terms and +// conditions of Section 2 of the Spine Editor License Agreement: +// http://esotericsoftware.com/spine-editor-license +// +// Otherwise, it is permitted to integrate the Spine Runtimes into software +// or otherwise create derivative works of the Spine Runtimes (collectively, +// "Products"), provided that each user of the Products must obtain their own +// Spine Editor license and redistribution of the Products in any form must +// include this license and copyright notice. +// +// THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY +// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, +// BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND +// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +// THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// + +// AUTO GENERATED FILE, DO NOT EDIT. // ignore_for_file: type_argument_not_matching_bounds import 'package:flutter/services.dart'; import 'package:inject_js/inject_js.dart' as js; -import 'package:web_ffi_fork/web_ffi.dart'; -import 'package:web_ffi_fork/web_ffi_modules.dart'; +import 'web_ffi/web_ffi.dart'; +import 'web_ffi/web_ffi_modules.dart'; import 'generated/spine_dart_bindings_generated.dart'; @@ -48,45 +50,164 @@ Future initSpineDartFFI(bool useStaticLinkage) async { if (_module == null) { Memory.init(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); + registerOpaqueType(); registerOpaqueType(); registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); + registerOpaqueType(); registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); registerOpaqueType(); - registerOpaqueType(); - registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); registerOpaqueType(); - registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); + registerOpaqueType(); await js.importLibrary('assets/packages/spine_flutter/lib/assets/libspine_flutter.js'); Uint8List wasmBinaries = (await rootBundle.load( diff --git a/spine-flutter/lib/spine_flutter.dart b/spine-flutter/lib/spine_flutter.dart index 88b65a6f5..93c42e1b8 100644 --- a/spine-flutter/lib/spine_flutter.dart +++ b/spine-flutter/lib/spine_flutter.dart @@ -5,8 +5,8 @@ export 'spine_widget.dart'; export 'raw_image_provider.dart'; import 'dart:convert' as convert; -import 'dart:ffi'; -import 'dart:io'; +import 'ffi_proxy.dart'; +import 'dart:io' if (dart.library.html) 'io_stub.dart'; import 'dart:typed_data'; import 'dart:ui'; @@ -87,6 +87,9 @@ class AtlasFlutter extends Atlas { /// Loads an [AtlasFlutter] from the file [atlasFileName]. static Future fromFile(String atlasFileName) async { + if (kIsWeb) { + throw UnsupportedError('File operations are not supported on web. Use fromAsset or fromHttp instead.'); + } return _load(atlasFileName, (file) => File(file).readAsBytes()); } @@ -139,6 +142,9 @@ class SkeletonDataFlutter extends SkeletonData { /// /// Throws an [Exception] in case the skeleton data could not be loaded. static Future fromFile(AtlasFlutter atlasFlutter, String skeletonFile) async { + if (kIsWeb) { + throw UnsupportedError('File operations are not supported on web. Use fromAsset or fromHttp instead.'); + } if (skeletonFile.endsWith(".json")) { final jsonData = await File(skeletonFile).readAsString(); final skeletonData = loadSkeletonDataJson(atlasFlutter, jsonData, path: skeletonFile); @@ -320,6 +326,9 @@ class SkeletonDrawableFlutter extends SkeletonDrawable { /// /// Throws an exception in case the data could not be loaded. static Future fromFile(String atlasFile, String skeletonFile) async { + if (kIsWeb) { + throw UnsupportedError('File operations are not supported on web. Use fromAsset or fromHttp instead.'); + } final atlasFlutter = await AtlasFlutter.fromFile(atlasFile); final skeletonDataFlutter = await SkeletonDataFlutter.fromFile(atlasFlutter, skeletonFile); return SkeletonDrawableFlutter(atlasFlutter, skeletonDataFlutter, true); diff --git a/spine-flutter/lib/web_ffi/ffi/extensions.dart b/spine-flutter/lib/web_ffi/ffi/extensions.dart new file mode 100755 index 000000000..0234e5c94 --- /dev/null +++ b/spine-flutter/lib/web_ffi/ffi/extensions.dart @@ -0,0 +1,253 @@ +import 'dart:typed_data'; +import 'types.dart'; + +import '../modules/memory.dart'; +import '../modules/module.dart'; +import '../internal/marshaller.dart'; + +import '../web_ffi_meta.dart'; + +/// Extension on [Pointer] specialized for the type argument [NativeFunction]. +extension NativeFunctionPointer on Pointer> { + /// Convert to Dart function, automatically marshalling the arguments and return value. + /// + /// There are several rules that apply for the return type of `DF`, see + /// the list of [allowed return types](https://github.com/EPNW/web_ffi/blob/master/return_types.md). + /// If marshalling failes, a [MarshallingException] is thrown. + /// + /// If this is called on a pointer that does not point to a function, + /// a [ArgumentError](https://api.dart.dev/stable/dart-core/ArgumentError-class.html) is thrown. + DF asFunction() { + WasmSymbol symbol = symbolByAddress(boundMemory, address); + if (symbol is FunctionDescription) { + return marshall(symbol.function, boundMemory); + } else { + throw ArgumentError('No function at address $address was found (but a global symbol)!'); + } + } +} + +extension DynamicLibraryExtension on DynamicLibrary { + /// Helper that combines lookup and cast to a Dart function. + /// + /// This simply calles [DynamicLibrary.lookup] and [NativeFunctionPointer.asFunction] + /// internally, so see this two methods for additional insights. + F lookupFunction(String name) => + this.lookup>(name).asFunction(); +} + +/// Extension on [Allocator] to provide allocation with [NativeType]. +extension AllocatorAlloc on Allocator { + /// Allocates `sizeOf() * count` bytes of memory using [Allocator.allocate]. + /// + /// Since this calls [sizeOf] internally, an exception will be thrown if this + /// method is called with an @[unsized] type or before [Memory.init] was called. + Pointer call([int count = 1]) => allocate(sizeOf() * count); +} + +/// Extension on [Pointer] specialized for the type argument [Float]. +extension FloatPointer on Pointer { + /// The float at address. + double get value => this[0]; + void set value(double value) => this[0] = value; + + /// Creates a typed list view backed by memory in the address space. + /// + /// The returned view will allow access to the memory range + /// from address to `address + size * length`. + Float32List asTypedList(int length) => boundMemory.buffer.asFloat32List(address, length); + + /// The float at `address + size * index`. + double operator [](int index) => viewSingle(index).getFloat32(0, Memory.endianess); + void operator []=(int index, double value) => viewSingle(index).setFloat32(0, value, Memory.endianess); +} + +/// Extension on [Pointer] specialized for the type argument [Double]. +extension DoublePointer on Pointer { + /// The double at address. + double get value => this[0]; + void set value(double value) => this[0] = value; + + /// Creates a typed list view backed by memory in the address space. + /// + /// The returned view will allow access to the memory range + /// from address to `address + size * length`. + Float64List asTypedList(int length) => boundMemory.buffer.asFloat64List(address, length); + + /// The double at `address + size * index`. + double operator [](int index) => viewSingle(index).getFloat64(0, Memory.endianess); + void operator []=(int index, double value) => viewSingle(index).setFloat64(0, value, Memory.endianess); +} + +/// Extension on [Pointer] specialized for the type argument [Int8]. +extension Int8Pointer on Pointer { + /// The 8-bit integer at `address`. + int get value => this[0]; + void set value(int value) => this[0] = value; + + /// Creates a typed list view backed by memory in the address space. + /// + /// The returned view will allow access to the memory range + /// from address to `address + size * length`. + Int8List asTypedList(int length) => boundMemory.buffer.asInt8List(address, length); + + /// The 8-bit integer at `address + size * index`. + int operator [](int index) => viewSingle(index).getInt8(0); + void operator []=(int index, int value) => viewSingle(index).setInt8(0, value); +} + +/// Extension on [Pointer] specialized for the type argument [Int16]. +extension Int16Pointer on Pointer { + /// The 16-bit integer at `address`. + int get value => this[0]; + void set value(int value) => this[0] = value; + + /// Creates a typed list view backed by memory in the address space. + /// + /// The returned view will allow access to the memory range + /// from address to `address + size * length`. + Int16List asTypedList(int length) => boundMemory.buffer.asInt16List(address, length); + + /// The 16-bit integer at `address + size * index`. + int operator [](int index) => viewSingle(index).getInt16(0, Memory.endianess); + void operator []=(int index, int value) => viewSingle(index).setInt16(0, value, Memory.endianess); +} + +/// Extension on [Pointer] specialized for the type argument [Int32]. +extension Int32Pointer on Pointer { + /// The 32-bit integer at `address`. + int get value => this[0]; + void set value(int value) => this[0] = value; + + /// Creates a typed list view backed by memory in the address space. + /// + /// The returned view will allow access to the memory range + /// from address to `address + size * length`. + Int32List asTypedList(int length) => boundMemory.buffer.asInt32List(address, length); + + /// The 32-bit integer at `address + size * index`. + int operator [](int index) => viewSingle(index).getInt32(0, Memory.endianess); + void operator []=(int index, int value) => viewSingle(index).setInt32(0, value, Memory.endianess); +} + +/// Extension on [Pointer] specialized for the type argument [Int64]. +extension Int64Pointer on Pointer { + /// The 64-bit integer at `address`. + int get value => this[0]; + void set value(int value) => this[0] = value; + + /// Creates a typed list view backed by memory in the address space. + /// + /// The returned view will allow access to the memory range + /// from address to `address + size * length`. + Int64List asTypedList(int length) => boundMemory.buffer.asInt64List(address, length); + + /// The 64-bit integer at `address + size * index`. + int operator [](int index) => viewSingle(index).getInt64(0, Memory.endianess); + void operator []=(int index, int value) => viewSingle(index).setInt64(0, value, Memory.endianess); +} + +/// Extension on [Pointer] specialized for the type argument [Uint8]. +extension Uint8Pointer on Pointer { + /// The 8-bit unsigned integer at `address`. + int get value => this[0]; + void set value(int value) => this[0] = value; + + /// Creates a typed list view backed by memory in the address space. + /// + /// The returned view will allow access to the memory range + /// from address to `address + size * length`. + Uint8List asTypedList(int length) => boundMemory.buffer.asUint8List(address, length); + + /// The 8-bit unsigned integer at `address + size * index`. + int operator [](int index) => viewSingle(index).getUint8(0); + void operator []=(int index, int value) => viewSingle(index).setUint8(0, value); +} + +/// Extension on [Pointer] specialized for the type argument [Uint16]. +extension Uint16Pointer on Pointer { + /// The 16-bit unsigned integer at `address`. + int get value => this[0]; + void set value(int value) => this[0] = value; + + /// Creates a typed list view backed by memory in the address space. + /// + /// The returned view will allow access to the memory range + /// from address to `address + size * length`. + Uint16List asTypedList(int length) => boundMemory.buffer.asUint16List(address, length); + + /// The 16-bit unsigned integer at `address + size * index`. + int operator [](int index) => viewSingle(index).getUint16(0, Memory.endianess); + void operator []=(int index, int value) => viewSingle(index).setUint16(0, value, Memory.endianess); +} + +/// Extension on [Pointer] specialized for the type argument [Uint32]. +extension Uint32Pointer on Pointer { + /// The 32-bit unsigned integer at `address`. + int get value => this[0]; + void set value(int value) => this[0] = value; + + /// Creates a typed list view backed by memory in the address space. + /// + /// The returned view will allow access to the memory range + /// from address to `address + size * length`. + Uint32List asTypedList(int length) => boundMemory.buffer.asUint32List(address, length); + + /// The 32-bit unsigned integer at `address + size * index`. + int operator [](int index) => viewSingle(index).getUint32(0, Memory.endianess); + void operator []=(int index, int value) => viewSingle(index).setUint32(0, value, Memory.endianess); +} + +/// Extension on [Pointer] specialized for the type argument [Uint64]. +extension Uint64Pointer on Pointer { + /// The 64-bit unsigned integer at `address`. + int get value => this[0]; + void set value(int value) => this[0] = value; + + /// Creates a typed list view backed by memory in the address space. + /// + /// The returned view will allow access to the memory range + /// from address to `address + size * length`. + Uint64List asTypedList(int length) => boundMemory.buffer.asUint64List(address, length); + + /// The 64-bit unsigned integer at `address + size * index`. + int operator [](int index) => viewSingle(index).getUint64(0, Memory.endianess); + void operator []=(int index, int value) => viewSingle(index).setUint64(0, value, Memory.endianess); +} + +/// Extension on [Pointer] specialized for the type argument [IntPtr]. +extension IntPtrPointer on Pointer { + /// The 32-bit or 64-bit value at `address`. + int get value => this[0]; + void set value(int value) => this[0] = value; + + /// Returns `true` if the size of a pointer is 64-bit, `false` otherwise. + @extra + bool get is64Bit => size == 8; + + /// The 32-bit or 64-bit integer at `address + size * index`. + int operator [](int index) => + is64Bit ? viewSingle(index).getUint64(0, Memory.endianess) : viewSingle(index).getUint32(0, Memory.endianess); + void operator []=(int index, int value) => is64Bit + ? viewSingle(index).setUint64(0, value, Memory.endianess) + : viewSingle(index).setUint32(0, value, Memory.endianess); +} + +/// Extension on [Pointer] specialized for the type argument [Pointer]. +extension PointerPointer on Pointer> { + /// The pointer at `address`. + Pointer get value => this[0]; + void set value(Pointer value) => this[0] = value; + + /// Returns `true` if the size of a pointer is 64-bit, `false` otherwise. + @extra + bool get is64Bit => size == 8; + + /// The pointer at `address + size * index`. + Pointer operator [](int index) => new Pointer.fromAddress( + is64Bit ? viewSingle(index).getUint64(0, Memory.endianess) : viewSingle(index).getUint32(0, Memory.endianess), + boundMemory); + void operator []=(int index, Pointer value) => is64Bit + ? viewSingle(index).setUint64(0, value.address, Memory.endianess) + : viewSingle(index).setUint32(0, value.address, Memory.endianess); +} diff --git a/spine-flutter/lib/web_ffi/ffi/types.dart b/spine-flutter/lib/web_ffi/ffi/types.dart new file mode 100755 index 000000000..322a6d2b0 --- /dev/null +++ b/spine-flutter/lib/web_ffi/ffi/types.dart @@ -0,0 +1,418 @@ +import 'dart:typed_data'; +import 'package:meta/meta.dart'; + +import '../modules/module.dart'; +import '../modules/memory.dart'; +import '../modules/null_memory.dart'; + +import '../internal/type_utils.dart'; + +import '../web_ffi_meta.dart'; + +/// Represents a pointer into the native C memory corresponding to "NULL", +/// e.g. a pointer with address 0. +/// +/// You can compare any other pointer with this pointer using == to check +/// if it's also an nullpointer. +/// +/// Any other operation than comparing (e.g. calling [Pointer.cast]) +/// will result in exceptions. +final Pointer nullptr = new Pointer._null(); + +/// Number of bytes used by native type T. +/// +/// MUST NOT be called with types annoteted with @[unsized] or +/// before [Memory.init()] was called or else an exception will be thrown. +int sizeOf() { + int? size; + if (isPointerType()) { + size = sizeMap[IntPtr]; + } else { + size = sizeMap[T]; + } + if (size != null) { + return size; + } else { + throw new ArgumentError('The type $T is not known!'); + } +} + +bool _isUnsizedType() { + return isNativeFunctionType() || isVoidType(); +} + +/// [NativeType]'s subtypes represent a native type in C. +/// +/// [NativeType]'s subtypes (except [Pointer]) are not constructible +/// in the Dart code and serve purely as markers in type signatures. +@sealed +@notConstructible +class NativeType { + const NativeType(); +} + +/// Represents a native 64 bit double in C. +/// +/// Double is not constructible in the Dart code and serves +/// purely as marker in type signatures. +@sealed +@notConstructible +class Double extends NativeType { + const Double(); +} + +/// Represents a native 32 bit float in C. +/// +/// Float is not constructible in the Dart code and serves +/// purely as marker in type signatures. +@sealed +@notConstructible +class Float extends NativeType { + const Float(); +} + +/// Represents a native signed 8 bit integer in C. +/// +/// Int8 is not constructible in the Dart code and serves +/// purely as marker in type signatures. +@sealed +@notConstructible +class Int8 extends NativeType { + const Int8(); +} + +/// Represents a native signed 16 bit integer in C. +/// +/// Int16 is not constructible in the Dart code and serves +/// purely as marker in type signatures. +@sealed +@notConstructible +class Int16 extends NativeType { + const Int16(); +} + +/// Represents a native signed 32 bit integer in C. +/// +/// Int32 is not constructible in the Dart code and serves +/// purely as marker in type signatures. +@sealed +@notConstructible +class Int32 extends NativeType { + const Int32(); +} + +/// Represents a native signed 64 bit integer in C. +/// +/// Int64 is not constructible in the Dart code and serves +/// purely as marker in type signatures. +@sealed +@notConstructible +class Int64 extends NativeType { + const Int64(); +} + +/// Alias for Int64 (long long in C) +class LongLong extends Int64 { + const LongLong(); +} + +/// Represents a native unsigned 8 bit integer in C. +/// +/// Uint8 is not constructible in the Dart code and serves +/// purely as marker in type signatures. +@sealed +@notConstructible +class Uint8 extends NativeType { + const Uint8(); +} + +/// Alias for [Uint8] +/// Use Uint8 directly as typedef only works for function types +class UnsignedChar extends Uint8 { + const UnsignedChar(); +} + +/// Represents a native unsigned 16 bit integer in C. +/// +/// Uint16 is not constructible in the Dart code and serves +/// purely as marker in type signatures. +@sealed +@notConstructible +class Uint16 extends NativeType { + const Uint16(); +} + +/// Alias for [Uint16] +/// Use Uint16 directly as typedef only works for function types +class UnsignedShort extends Uint16 { + const UnsignedShort(); +} + +/// Represents a native unsigned 32 bit integer in C. +/// +/// Uint32 is not constructible in the Dart code and serves +/// purely as marker in type signatures. +@sealed +@notConstructible +class Uint32 extends NativeType { + const Uint32(); +} + +/// Represents a native unsigned 64 bit integer in C. +/// +/// Uint64 is not constructible in the Dart code and serves +/// purely as marker in type signatures. +@sealed +@notConstructible +class Uint64 extends NativeType { + const Uint64(); +} + +/// Represents a native pointer-sized integer in C. +/// +/// IntPtr is not constructible in the Dart code and serves +/// purely as marker in type signatures. +@sealed +@notConstructible +class IntPtr extends NativeType {} + +/// Represents a native integer in C. +/// +/// The size is ABI-specific. For common platforms, this is usually 4 bytes +/// on 32-bit architectures and 8 bytes on 64-bit architectures. +@sealed +@notConstructible +class Int extends NativeType {} + +/// Represents a native size_t in C. +/// +/// The size is ABI-specific, typically same as pointer size. +@sealed +@notConstructible +class Size extends NativeType {} + +/// Represents a native bool in C. +/// +/// The size is typically 1 byte. +@sealed +@notConstructible +class Bool extends NativeType {} + +/// Represents a function type in C. +/// +/// NativeFunction is not constructible in the Dart code and serves +/// purely as marker in type signatures. +@sealed +@notConstructible +@unsized +class NativeFunction extends NativeType {} + +/// Opaque's subtypes represent opaque types in C. +/// +/// Classes that extend Opaque MUST NOT have a type argument! +/// +/// Opaque's subtypes are not constructible in the Dart code and serve +/// purely as markers in type signatures. +@noGeneric +@notConstructible +class Opaque extends NativeType {} + +/// Represents a void type in C. +/// +/// Void is not constructible in the Dart code and serves +/// purely as marker in type signatures. +@sealed +@notConstructible +@unsized +class Void extends NativeType {} + +/// Represents a char type in C +/// +/// Char is not constructible in the Dart code and serves +/// purely as a marker in type signatures +@sealed +@notConstructible +class Char extends Int8 { + const Char(); +} + +/// Represents a pointer into the native C memory. Cannot be extended. +@sealed +class Pointer extends NativeType { + //static Pointer> fromFunction(Function f, + // [Object? exceptionalReturn]) => + // throw new UnimplementedError(); + + /// Access to the raw pointer value. + final int address; + + /// The [Memory] object this pointer is bound to. + /// + /// The `Memory` object backs this pointer, if the value of + /// this pointer is accessed. + @extra + final Memory boundMemory; + + /// How much memory in bytes the type this pointer points to occupies, + /// or `null` for @[unsized] types. + @extra + final int? size; + + factory Pointer._null() { + return new Pointer._(0, new NullMemory(), null); + } + + /// Constructs a pointer from an address. + /// + /// The optional parameter `bindTo` can be ommited, if and only if + /// [Memory.global] is set, which is then used as `Memory` to bind to. + factory Pointer.fromAddress(int ptr, [Memory? bindTo]) { + bindTo = Memory.global; + Memory m; + if (bindTo != null) { + m = bindTo; + } else { + throw new StateError('No global memory set and no explcity memory to bind to given!'); + } + return new Pointer._(ptr, m, _isUnsizedType() ? null : sizeOf()); + } + + Pointer._(this.address, this.boundMemory, this.size); + + /// Casts this pointer to an other type. + Pointer cast() => + new Pointer._(address, boundMemory, _isUnsizedType() ? null : sizeOf()); + + /// Pointer arithmetic (takes element size into account). + /// + /// Throws an [UnsupportedError] if called on a pointer with an @[unsized] + /// type argument. + Pointer elementAt(int index) { + int? s = size; + if (s != null) { + return new Pointer._(address + index * s, boundMemory, s); + } else { + throw new UnsupportedError('elementAt is not supported for unsized types!'); + } + } + + /// The hash code for a Pointer only depends on its address. + @override + int get hashCode => address; + + /// Two pointers are equal if their address is the same, independently + /// of their type argument and of the memory they are bound to. + @override + bool operator ==(Object other) => (other is Pointer && other.address == address); + + /// Returns a view of a single element at [index] (takes element + /// size into account). + /// + /// Any modifications to the data will also alter the [Memory] object. + /// + /// Throws an [UnsupportedError] if called on a pointer with an @[unsized] + /// type argument. + @extra + ByteData viewSingle(int index) { + int? s = size; + if (s != null) { + return boundMemory.buffer.asByteData(address + index * s, s); + } else { + throw new UnsupportedError('viewSingle is not supported for unsized types!'); + } + } +} + +/// Represents a dynamically loaded C library. +class DynamicLibrary { + @extra + final Memory boundMemory; + + /// Creates a new instance based on the given module. + /// + /// While for each [DynamicLibrary] a new [Memory] object is + /// created, the [Memory] objects share the backing memory if + /// they are created based on the same module. + /// + /// The [registerMode] parameter can be used to control if the + /// newly created [Memory] object should be registered as + /// [Memory.global]. + @extra + factory DynamicLibrary.fromModule(Module module, + [MemoryRegisterMode registerMode = MemoryRegisterMode.onlyIfGlobalNotSet]) { + Memory memory = createMemory(module); + switch (registerMode) { + case MemoryRegisterMode.yes: + Memory.global = memory; + break; + case MemoryRegisterMode.no: + break; + case MemoryRegisterMode.onlyIfGlobalNotSet: + if (Memory.global == null) { + Memory.global = memory; + } + break; + } + return new DynamicLibrary._(memory); + } + + DynamicLibrary._(this.boundMemory); + + /// Looks up a symbol in the DynamicLibrary and returns its address in memory. + /// + /// Throws an [ArgumentError] if it fails to lookup the symbol. + /// + /// While this method checks if the underyling wasm symbol is a actually + /// a function when you lookup a [NativeFunction]``, it does not check if + /// the return type and parameters of `T` match the wasm function. + Pointer lookup(String name) { + WasmSymbol symbol = symbolByName(boundMemory, name); + if (isNativeFunctionType()) { + if (symbol is FunctionDescription) { + return new Pointer.fromAddress(symbol.tableIndex, boundMemory); + } else { + throw new ArgumentError('Tried to look up $name as a function, but it seems it is NOT a function!'); + } + } else { + return new Pointer.fromAddress(symbol.address, boundMemory); + } + } +} + +/// Manages memory on the native heap. +abstract class Allocator { + /// Allocates byteCount bytes of memory on the native heap. + /// + /// The parameter `alignment` is ignored. + Pointer allocate(int byteCount, {int? alignment}); + + /// Releases memory allocated on the native heap. + void free(Pointer pointer); +} + +/// Base class for all FFI struct types. +/// +/// This is a stub implementation for web_ffi compatibility. +/// Structs are not fully supported in web_ffi. +@unsized +class Struct extends NativeType {} + +/// Base class for all FFI union types. +/// +/// This is a stub implementation for web_ffi compatibility. +/// Unions are not fully supported in web_ffi. +@unsized +class Union extends NativeType {} + +/// Represents a fixed-size array of [T] in C. +/// +/// This is a stub implementation for web_ffi compatibility. +/// Arrays are not fully supported in web_ffi. +@unsized +class Array extends NativeType { + /// Constructor to allow [Array] declarations. + const Array(int dimension1, [int? dimension2, int? dimension3, int? dimension4, int? dimension5]); + + /// Constructor to allow [Array] declarations. + const Array.multi(List dimensions); +} diff --git a/spine-flutter/lib/web_ffi/ffi/utf8.dart b/spine-flutter/lib/web_ffi/ffi/utf8.dart new file mode 100644 index 000000000..25c11cab7 --- /dev/null +++ b/spine-flutter/lib/web_ffi/ffi/utf8.dart @@ -0,0 +1,89 @@ +// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'dart:convert'; +import 'dart:typed_data'; +import 'types.dart'; +import 'extensions.dart'; +import '../modules/memory.dart'; + +/// The contents of a native zero-terminated array of UTF-8 code units. +/// +/// The Utf8 type itself has no functionality, it's only intended to be used +/// through a `Pointer` representing the entire array. This pointer is +/// the equivalent of a char pointer (`const char*`) in C code. +class Utf8 extends Opaque {} + +/// Extension method for converting a`Pointer` to a [String]. +extension Utf8Pointer on Pointer { + /// The number of UTF-8 code units in this zero-terminated UTF-8 string. + /// + /// The UTF-8 code units of the strings are the non-zero code units up to the + /// first zero code unit. + int get length { + _ensureNotNullptr('length'); + final codeUnits = cast(); + return _length(codeUnits); + } + + /// Converts this UTF-8 encoded string to a Dart string. + /// + /// Decodes the UTF-8 code units of this zero-terminated byte array as + /// Unicode code points and creates a Dart string containing those code + /// points. + /// + /// If [length] is provided, zero-termination is ignored and the result can + /// contain NUL characters. + /// + /// If [length] is not provided, the returned string is the string up til + /// but not including the first NUL character. + String toDartString({int? length}) { + _ensureNotNullptr('toDartString'); + final codeUnits = cast(); + if (length != null) { + RangeError.checkNotNegative(length, 'length'); + } else { + length = _length(codeUnits); + } + return utf8.decode(codeUnits.asTypedList(length)); + } + + static int _length(Pointer codeUnits) { + var length = 0; + while (codeUnits[length] != 0) { + length++; + } + return length; + } + + void _ensureNotNullptr(String operation) { + if (this == nullptr) { + throw UnsupportedError("Operation '$operation' not allowed on a 'nullptr'."); + } + } +} + +/// Extension method for converting a [String] to a `Pointer`. +extension StringUtf8Pointer on String { + /// Creates a zero-terminated [Utf8] code-unit array from this String. + /// + /// If this [String] contains NUL characters, converting it back to a string + /// using [Utf8Pointer.toDartString] will truncate the result if a length is + /// not passed. + /// + /// Unpaired surrogate code points in this [String] will be encoded as + /// replacement characters (U+FFFD, encoded as the bytes 0xEF 0xBF 0xBD) in + /// the UTF-8 encoded result. See [Utf8Encoder] for details on encoding. + /// + /// Returns an [allocator]-allocated pointer to the result. + Pointer toNativeUtf8({Allocator? allocator}) { + final alloc = allocator ?? Memory.global ?? (throw StateError('No allocator available')); + final units = utf8.encode(this); + final Pointer result = alloc(units.length + 1); + final Uint8List nativeString = result.asTypedList(units.length + 1); + nativeString.setAll(0, units); + nativeString[units.length] = 0; + return result.cast(); + } +} diff --git a/spine-flutter/lib/web_ffi/internal/invoker_generated.dart b/spine-flutter/lib/web_ffi/internal/invoker_generated.dart new file mode 100755 index 000000000..dbb49bf1f --- /dev/null +++ b/spine-flutter/lib/web_ffi/internal/invoker_generated.dart @@ -0,0 +1,1089 @@ +import '../ffi/types.dart'; +import '../modules/memory.dart'; +import 'marshaller.dart' show execute; + +/// https://stackoverflow.com/questions/26122009/is-there-a-maximum-number-of-parameters-for-functions-in-c-with-the-gcc-resp-m +/// the C Standard 5.2.4.1 says: +/// 4095 characters in a logical source line +/// 127 parameters in one function definition +/// 127 arguments in one function call + +class OpaqueInvokeHelper extends InvokeHelper> { + OpaqueInvokeHelper(Function? base, Memory? memory) : super(base, memory); + + @override + InvokeHelper> copyWith(Function base, Memory memory) { + return new OpaqueInvokeHelper(base, memory); + } + + @override + Pointer run( + [dynamic arg0, + dynamic arg1, + dynamic arg2, + dynamic arg3, + dynamic arg4, + dynamic arg5, + dynamic arg6, + dynamic arg7, + dynamic arg8, + dynamic arg9, + dynamic arg10, + dynamic arg11, + dynamic arg12, + dynamic arg13, + dynamic arg14, + dynamic arg15, + dynamic arg16, + dynamic arg17, + dynamic arg18, + dynamic arg19, + dynamic arg20, + dynamic arg21, + dynamic arg22, + dynamic arg23, + dynamic arg24, + dynamic arg25, + dynamic arg26, + dynamic arg27, + dynamic arg28, + dynamic arg29, + dynamic arg30, + dynamic arg31, + dynamic arg32, + dynamic arg33, + dynamic arg34, + dynamic arg35, + dynamic arg36, + dynamic arg37, + dynamic arg38, + dynamic arg39, + dynamic arg40, + dynamic arg41, + dynamic arg42, + dynamic arg43, + dynamic arg44, + dynamic arg45, + dynamic arg46, + dynamic arg47, + dynamic arg48, + dynamic arg49, + dynamic arg50, + dynamic arg51, + dynamic arg52, + dynamic arg53, + dynamic arg54, + dynamic arg55, + dynamic arg56, + dynamic arg57, + dynamic arg58, + dynamic arg59, + dynamic arg60, + dynamic arg61, + dynamic arg62, + dynamic arg63, + dynamic arg64, + dynamic arg65, + dynamic arg66, + dynamic arg67, + dynamic arg68, + dynamic arg69, + dynamic arg70, + dynamic arg71, + dynamic arg72, + dynamic arg73, + dynamic arg74, + dynamic arg75, + dynamic arg76, + dynamic arg77, + dynamic arg78, + dynamic arg79, + dynamic arg80, + dynamic arg81, + dynamic arg82, + dynamic arg83, + dynamic arg84, + dynamic arg85, + dynamic arg86, + dynamic arg87, + dynamic arg88, + dynamic arg89, + dynamic arg90, + dynamic arg91, + dynamic arg92, + dynamic arg93, + dynamic arg94, + dynamic arg95, + dynamic arg96, + dynamic arg97, + dynamic arg98, + dynamic arg99, + dynamic arg100, + dynamic arg101, + dynamic arg102, + dynamic arg103, + dynamic arg104, + dynamic arg105, + dynamic arg106, + dynamic arg107, + dynamic arg108, + dynamic arg109, + dynamic arg110, + dynamic arg111, + dynamic arg112, + dynamic arg113, + dynamic arg114, + dynamic arg115, + dynamic arg116, + dynamic arg117, + dynamic arg118, + dynamic arg119, + dynamic arg120, + dynamic arg121, + dynamic arg122, + dynamic arg123, + dynamic arg124, + dynamic arg125, + dynamic arg126]) => + new InvokeHelper>(_base, _memory) + .run( + arg0, + arg1, + arg2, + arg3, + arg4, + arg5, + arg6, + arg7, + arg8, + arg9, + arg10, + arg11, + arg12, + arg13, + arg14, + arg15, + arg16, + arg17, + arg18, + arg19, + arg20, + arg21, + arg22, + arg23, + arg24, + arg25, + arg26, + arg27, + arg28, + arg29, + arg30, + arg31, + arg32, + arg33, + arg34, + arg35, + arg36, + arg37, + arg38, + arg39, + arg40, + arg41, + arg42, + arg43, + arg44, + arg45, + arg46, + arg47, + arg48, + arg49, + arg50, + arg51, + arg52, + arg53, + arg54, + arg55, + arg56, + arg57, + arg58, + arg59, + arg60, + arg61, + arg62, + arg63, + arg64, + arg65, + arg66, + arg67, + arg68, + arg69, + arg70, + arg71, + arg72, + arg73, + arg74, + arg75, + arg76, + arg77, + arg78, + arg79, + arg80, + arg81, + arg82, + arg83, + arg84, + arg85, + arg86, + arg87, + arg88, + arg89, + arg90, + arg91, + arg92, + arg93, + arg94, + arg95, + arg96, + arg97, + arg98, + arg99, + arg100, + arg101, + arg102, + arg103, + arg104, + arg105, + arg106, + arg107, + arg108, + arg109, + arg110, + arg111, + arg112, + arg113, + arg114, + arg115, + arg116, + arg117, + arg118, + arg119, + arg120, + arg121, + arg122, + arg123, + arg124, + arg125, + arg126) + .cast(); +} + +class OpaqueInvokeHelperSquare extends InvokeHelper>> { + OpaqueInvokeHelperSquare(Function? base, Memory? memory) : super(base, memory); + + @override + InvokeHelper>> copyWith(Function base, Memory memory) { + return new OpaqueInvokeHelperSquare(base, memory); + } + + @override + Pointer> run( + [dynamic arg0, + dynamic arg1, + dynamic arg2, + dynamic arg3, + dynamic arg4, + dynamic arg5, + dynamic arg6, + dynamic arg7, + dynamic arg8, + dynamic arg9, + dynamic arg10, + dynamic arg11, + dynamic arg12, + dynamic arg13, + dynamic arg14, + dynamic arg15, + dynamic arg16, + dynamic arg17, + dynamic arg18, + dynamic arg19, + dynamic arg20, + dynamic arg21, + dynamic arg22, + dynamic arg23, + dynamic arg24, + dynamic arg25, + dynamic arg26, + dynamic arg27, + dynamic arg28, + dynamic arg29, + dynamic arg30, + dynamic arg31, + dynamic arg32, + dynamic arg33, + dynamic arg34, + dynamic arg35, + dynamic arg36, + dynamic arg37, + dynamic arg38, + dynamic arg39, + dynamic arg40, + dynamic arg41, + dynamic arg42, + dynamic arg43, + dynamic arg44, + dynamic arg45, + dynamic arg46, + dynamic arg47, + dynamic arg48, + dynamic arg49, + dynamic arg50, + dynamic arg51, + dynamic arg52, + dynamic arg53, + dynamic arg54, + dynamic arg55, + dynamic arg56, + dynamic arg57, + dynamic arg58, + dynamic arg59, + dynamic arg60, + dynamic arg61, + dynamic arg62, + dynamic arg63, + dynamic arg64, + dynamic arg65, + dynamic arg66, + dynamic arg67, + dynamic arg68, + dynamic arg69, + dynamic arg70, + dynamic arg71, + dynamic arg72, + dynamic arg73, + dynamic arg74, + dynamic arg75, + dynamic arg76, + dynamic arg77, + dynamic arg78, + dynamic arg79, + dynamic arg80, + dynamic arg81, + dynamic arg82, + dynamic arg83, + dynamic arg84, + dynamic arg85, + dynamic arg86, + dynamic arg87, + dynamic arg88, + dynamic arg89, + dynamic arg90, + dynamic arg91, + dynamic arg92, + dynamic arg93, + dynamic arg94, + dynamic arg95, + dynamic arg96, + dynamic arg97, + dynamic arg98, + dynamic arg99, + dynamic arg100, + dynamic arg101, + dynamic arg102, + dynamic arg103, + dynamic arg104, + dynamic arg105, + dynamic arg106, + dynamic arg107, + dynamic arg108, + dynamic arg109, + dynamic arg110, + dynamic arg111, + dynamic arg112, + dynamic arg113, + dynamic arg114, + dynamic arg115, + dynamic arg116, + dynamic arg117, + dynamic arg118, + dynamic arg119, + dynamic arg120, + dynamic arg121, + dynamic arg122, + dynamic arg123, + dynamic arg124, + dynamic arg125, + dynamic arg126]) => + new InvokeHelper>>(_base, _memory) + .run( + arg0, + arg1, + arg2, + arg3, + arg4, + arg5, + arg6, + arg7, + arg8, + arg9, + arg10, + arg11, + arg12, + arg13, + arg14, + arg15, + arg16, + arg17, + arg18, + arg19, + arg20, + arg21, + arg22, + arg23, + arg24, + arg25, + arg26, + arg27, + arg28, + arg29, + arg30, + arg31, + arg32, + arg33, + arg34, + arg35, + arg36, + arg37, + arg38, + arg39, + arg40, + arg41, + arg42, + arg43, + arg44, + arg45, + arg46, + arg47, + arg48, + arg49, + arg50, + arg51, + arg52, + arg53, + arg54, + arg55, + arg56, + arg57, + arg58, + arg59, + arg60, + arg61, + arg62, + arg63, + arg64, + arg65, + arg66, + arg67, + arg68, + arg69, + arg70, + arg71, + arg72, + arg73, + arg74, + arg75, + arg76, + arg77, + arg78, + arg79, + arg80, + arg81, + arg82, + arg83, + arg84, + arg85, + arg86, + arg87, + arg88, + arg89, + arg90, + arg91, + arg92, + arg93, + arg94, + arg95, + arg96, + arg97, + arg98, + arg99, + arg100, + arg101, + arg102, + arg103, + arg104, + arg105, + arg106, + arg107, + arg108, + arg109, + arg110, + arg111, + arg112, + arg113, + arg114, + arg115, + arg116, + arg117, + arg118, + arg119, + arg120, + arg121, + arg122, + arg123, + arg124, + arg125, + arg126) + .cast>(); +} + +class InvokeHelper { + final Memory? _memory; + final Function? _base; + + const InvokeHelper(this._base, this._memory); + + InvokeHelper copyWith(Function base, Memory memory) { + return new InvokeHelper(base, memory); + } + + T run( + [dynamic arg0, + dynamic arg1, + dynamic arg2, + dynamic arg3, + dynamic arg4, + dynamic arg5, + dynamic arg6, + dynamic arg7, + dynamic arg8, + dynamic arg9, + dynamic arg10, + dynamic arg11, + dynamic arg12, + dynamic arg13, + dynamic arg14, + dynamic arg15, + dynamic arg16, + dynamic arg17, + dynamic arg18, + dynamic arg19, + dynamic arg20, + dynamic arg21, + dynamic arg22, + dynamic arg23, + dynamic arg24, + dynamic arg25, + dynamic arg26, + dynamic arg27, + dynamic arg28, + dynamic arg29, + dynamic arg30, + dynamic arg31, + dynamic arg32, + dynamic arg33, + dynamic arg34, + dynamic arg35, + dynamic arg36, + dynamic arg37, + dynamic arg38, + dynamic arg39, + dynamic arg40, + dynamic arg41, + dynamic arg42, + dynamic arg43, + dynamic arg44, + dynamic arg45, + dynamic arg46, + dynamic arg47, + dynamic arg48, + dynamic arg49, + dynamic arg50, + dynamic arg51, + dynamic arg52, + dynamic arg53, + dynamic arg54, + dynamic arg55, + dynamic arg56, + dynamic arg57, + dynamic arg58, + dynamic arg59, + dynamic arg60, + dynamic arg61, + dynamic arg62, + dynamic arg63, + dynamic arg64, + dynamic arg65, + dynamic arg66, + dynamic arg67, + dynamic arg68, + dynamic arg69, + dynamic arg70, + dynamic arg71, + dynamic arg72, + dynamic arg73, + dynamic arg74, + dynamic arg75, + dynamic arg76, + dynamic arg77, + dynamic arg78, + dynamic arg79, + dynamic arg80, + dynamic arg81, + dynamic arg82, + dynamic arg83, + dynamic arg84, + dynamic arg85, + dynamic arg86, + dynamic arg87, + dynamic arg88, + dynamic arg89, + dynamic arg90, + dynamic arg91, + dynamic arg92, + dynamic arg93, + dynamic arg94, + dynamic arg95, + dynamic arg96, + dynamic arg97, + dynamic arg98, + dynamic arg99, + dynamic arg100, + dynamic arg101, + dynamic arg102, + dynamic arg103, + dynamic arg104, + dynamic arg105, + dynamic arg106, + dynamic arg107, + dynamic arg108, + dynamic arg109, + dynamic arg110, + dynamic arg111, + dynamic arg112, + dynamic arg113, + dynamic arg114, + dynamic arg115, + dynamic arg116, + dynamic arg117, + dynamic arg118, + dynamic arg119, + dynamic arg120, + dynamic arg121, + dynamic arg122, + dynamic arg123, + dynamic arg124, + dynamic arg125, + dynamic arg126]) { + if (_base == null || _memory == null) { + throw StateError('Call copyWith first!'); + } + Function base = _base!; + Memory memory = _memory!; + List args = []; + if (arg0 != null) { + args.add(arg0); + if (arg1 != null) { + args.add(arg1); + if (arg2 != null) { + args.add(arg2); + if (arg3 != null) { + args.add(arg3); + if (arg4 != null) { + args.add(arg4); + if (arg5 != null) { + args.add(arg5); + if (arg6 != null) { + args.add(arg6); + if (arg7 != null) { + args.add(arg7); + if (arg8 != null) { + args.add(arg8); + if (arg9 != null) { + args.add(arg9); + if (arg10 != null) { + args.add(arg10); + if (arg11 != null) { + args.add(arg11); + if (arg12 != null) { + args.add(arg12); + if (arg13 != null) { + args.add(arg13); + if (arg14 != null) { + args.add(arg14); + if (arg15 != null) { + args.add(arg15); + if (arg16 != null) { + args.add(arg16); + if (arg17 != null) { + args.add(arg17); + if (arg18 != null) { + args.add(arg18); + if (arg19 != null) { + args.add(arg19); + if (arg20 != null) { + args.add(arg20); + if (arg21 != null) { + args.add(arg21); + if (arg22 != null) { + args.add(arg22); + if (arg23 != null) { + args.add(arg23); + if (arg24 != null) { + args.add(arg24); + if (arg25 != null) { + args.add(arg25); + if (arg26 != null) { + args.add(arg26); + if (arg27 != null) { + args.add(arg27); + if (arg28 != null) { + args.add(arg28); + if (arg29 != null) { + args.add(arg29); + if (arg30 != null) { + args.add(arg30); + if (arg31 != null) { + args.add(arg31); + if (arg32 != null) { + args.add(arg32); + if (arg33 != null) { + args.add(arg33); + if (arg34 != null) { + args.add(arg34); + if (arg35 != null) { + args.add(arg35); + if (arg36 != null) { + args.add(arg36); + if (arg37 != null) { + args.add(arg37); + if (arg38 != null) { + args.add(arg38); + if (arg39 != null) { + args.add(arg39); + if (arg40 != null) { + args.add(arg40); + if (arg41 != null) { + args.add(arg41); + if (arg42 != null) { + args.add(arg42); + if (arg43 != null) { + args.add(arg43); + if (arg44 != null) { + args.add(arg44); + if (arg45 != null) { + args.add(arg45); + if (arg46 != null) { + args.add(arg46); + if (arg47 != null) { + args.add(arg47); + if (arg48 != null) { + args.add(arg48); + if (arg49 != + null) { + args.add(arg49); + if (arg50 != + null) { + args.add( + arg50); + if (arg51 != + null) { + args.add( + arg51); + if (arg52 != + null) { + args.add( + arg52); + if (arg53 != + null) { + args.add( + arg53); + if (arg54 != + null) { + args.add( + arg54); + if (arg55 != + null) { + args.add(arg55); + if (arg56 != + null) { + args.add(arg56); + if (arg57 != null) { + args.add(arg57); + if (arg58 != null) { + args.add(arg58); + if (arg59 != null) { + args.add(arg59); + if (arg60 != null) { + args.add(arg60); + if (arg61 != null) { + args.add(arg61); + if (arg62 != null) { + args.add(arg62); + if (arg63 != null) { + args.add(arg63); + if (arg64 != null) { + args.add(arg64); + if (arg65 != null) { + args.add(arg65); + if (arg66 != null) { + args.add(arg66); + if (arg67 != null) { + args.add(arg67); + if (arg68 != null) { + args.add(arg68); + if (arg69 != null) { + args.add(arg69); + if (arg70 != null) { + args.add(arg70); + if (arg71 != null) { + args.add(arg71); + if (arg72 != null) { + args.add(arg72); + if (arg73 != null) { + args.add(arg73); + if (arg74 != null) { + args.add(arg74); + if (arg75 != null) { + args.add(arg75); + if (arg76 != null) { + args.add(arg76); + if (arg77 != null) { + args.add(arg77); + if (arg78 != null) { + args.add(arg78); + if (arg79 != null) { + args.add(arg79); + if (arg80 != null) { + args.add(arg80); + if (arg81 != null) { + args.add(arg81); + if (arg82 != null) { + args.add(arg82); + if (arg83 != null) { + args.add(arg83); + if (arg84 != null) { + args.add(arg84); + if (arg85 != null) { + args.add(arg85); + if (arg86 != null) { + args.add(arg86); + if (arg87 != null) { + args.add(arg87); + if (arg88 != null) { + args.add(arg88); + if (arg89 != null) { + args.add(arg89); + if (arg90 != null) { + args.add(arg90); + if (arg91 != null) { + args.add(arg91); + if (arg92 != null) { + args.add(arg92); + if (arg93 != null) { + args.add(arg93); + if (arg94 != null) { + args.add(arg94); + if (arg95 != null) { + args.add(arg95); + if (arg96 != null) { + args.add(arg96); + if (arg97 != null) { + args.add(arg97); + if (arg98 != null) { + args.add(arg98); + if (arg99 != null) { + args.add(arg99); + if (arg100 != null) { + args.add(arg100); + if (arg101 != null) { + args.add(arg101); + if (arg102 != null) { + args.add(arg102); + if (arg103 != null) { + args.add(arg103); + if (arg104 != null) { + args.add(arg104); + if (arg105 != null) { + args.add(arg105); + if (arg106 != null) { + args.add(arg106); + if (arg107 != null) { + args.add(arg107); + if (arg108 != null) { + args.add(arg108); + if (arg109 != null) { + args.add(arg109); + if (arg110 != null) { + args.add(arg110); + if (arg111 != null) { + args.add(arg111); + if (arg112 != null) { + args.add(arg112); + if (arg113 != null) { + args.add(arg113); + if (arg114 != null) { + args.add(arg114); + if (arg115 != null) { + args.add(arg115); + if (arg116 != null) { + args.add(arg116); + if (arg117 != null) { + args.add(arg117); + if (arg118 != null) { + args.add(arg118); + if (arg119 != null) { + args.add(arg119); + if (arg120 != null) { + args.add(arg120); + if (arg121 != null) { + args.add(arg121); + if (arg122 != null) { + args.add(arg122); + if (arg123 != null) { + args.add(arg123); + if (arg124 != null) { + args.add(arg124); + if (arg125 != null) { + args.add(arg125); + if (arg126 != null) { + args.add(arg126); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return execute(base, args, memory); + } +} diff --git a/spine-flutter/lib/web_ffi/internal/marshaller.dart b/spine-flutter/lib/web_ffi/internal/marshaller.dart new file mode 100755 index 000000000..726b78643 --- /dev/null +++ b/spine-flutter/lib/web_ffi/internal/marshaller.dart @@ -0,0 +1,278 @@ +import 'package:meta/meta.dart'; + +import '../ffi/types.dart'; +import '../modules/exceptions.dart'; +import '../modules/memory.dart'; +import 'invoker_generated.dart'; +import 'type_utils.dart'; + +// Called from the invokers +T execute(Function base, List args, Memory memory) { + if (T == DartVoidType) { + Function.apply(base, args.map(_toJsType).toList()); + return null as T; + } else { + Object result = Function.apply(base, args.map(_toJsType).toList()); + return _toDartType(result, memory); + } +} + +DF marshall(Function base, Memory memory) { + return _inferFromSignature(DF.toString()).copyWith(base, memory).run as DF; +} + +Object _toJsType(Object dartObject) { + if (dartObject is int || dartObject is double || dartObject is bool) { + return dartObject; + } else if (dartObject is Pointer) { + return dartObject.address; + } else { + throw new MarshallingException('Could not convert dart type ${dartObject.runtimeType} to a JavaScript type!'); + } +} + +InvokeHelper _inferFromSignature(String signature) { + String returnType = signature.split('=>').last.trim(); + if (returnType.startsWith(pointerPointerPointerPrefix)) { + throw new MarshallingException('Nesting pointers is only supported to a deepth of 2!' + + '\nThis means that you can write Pointer> but not Pointer>>, ...'); + } + InvokeHelper? h = _knownTypes[returnType]; + if (h != null) { + return h; + } else { + if (returnType.startsWith(pointerNativeFunctionPrefix)) { + throw new MarshallingException( + 'Using pointers to native functions as return type is only allowed if the type of the native function is dynamic!' + + '\nThis means that only Pointer> is allowed!'); + } else { + throw new MarshallingException( + 'Unknown type $returnType (infered from $signature), all marshallable types: ${listKnownTypes()}'); + } + } +} + +@visibleForTesting +List listKnownTypes() => new List.of(_knownTypes.keys, growable: false); + +final Map _knownTypes = { + typeString(): new InvokeHelper(null, null), + typeString(): new InvokeHelper(null, null), + typeString(): new InvokeHelper(null, null), + typeString(): new InvokeHelper(null, null) +}; + +void registerNativeMarshallerType() { + _knownTypes[typeString>()] = new InvokeHelper>(null, null); + _knownTypes[typeString>>()] = new InvokeHelper>>(null, null); +} + +void registerNativeMarshallerOpaque() { + _knownTypes[typeString>()] = new OpaqueInvokeHelper(null, null); + _knownTypes[typeString>>()] = new OpaqueInvokeHelperSquare(null, null); +} + +T _toDartType(Object o, Memory bind) { + if (T == int) { + if (o is int) { + return o as T; + } else { + throw new MarshallingException.typeMissmatch(T, o); + } + } else if (T == double) { + if (o is double) { + return o as T; + } else { + throw new MarshallingException.typeMissmatch(T, o); + } + } else if (T == bool) { + if (o is bool) { + return o as T; + } else if (o is int) { + // Handle C convention where bool is represented as int (0 = false, non-zero = true) + return (o != 0) as T; + } else { + throw new MarshallingException.typeMissmatch(T, o); + } + } else { + if (T == Pointer_Void) { + if (o is int) { + return new Pointer.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_IntPtr) { + if (o is int) { + return new Pointer.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Int8) { + if (o is int) { + return new Pointer.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Int16) { + if (o is int) { + return new Pointer.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Int32) { + if (o is int) { + return new Pointer.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Int64) { + if (o is int) { + return new Pointer.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Double) { + if (o is int) { + return new Pointer.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Uint8) { + if (o is int) { + return new Pointer.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Uint16) { + if (o is int) { + return new Pointer.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Uint32) { + if (o is int) { + return new Pointer.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Uint64) { + if (o is int) { + return new Pointer.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Float) { + if (o is int) { + return new Pointer.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Char) { + if (o is int) { + return new Pointer.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Opaque) { + if (o is int) { + return new Pointer.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_NativeFunction_dynamic) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else { + if (T == Pointer_Pointer_Void) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Pointer_IntPtr) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Pointer_Int8) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Pointer_Int16) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Pointer_Int32) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Pointer_Int64) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Pointer_Double) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Pointer_Uint8) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Pointer_Uint16) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Pointer_Uint32) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Pointer_Uint64) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Pointer_Char) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Pointer_Float) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else if (T == Pointer_Pointer_Opaque) { + if (o is int) { + return new Pointer>.fromAddress(o, bind) as T; + } else { + throw new MarshallingException.noAddress(o); + } + } else { + throw new MarshallingException('Can not back-marshall to type $T (object type is ${o.runtimeType}'); + } + } + } +} diff --git a/spine-flutter/lib/web_ffi/internal/type_utils.dart b/spine-flutter/lib/web_ffi/internal/type_utils.dart new file mode 100755 index 000000000..a3966238c --- /dev/null +++ b/spine-flutter/lib/web_ffi/internal/type_utils.dart @@ -0,0 +1,55 @@ +import '../ffi/types.dart'; + +/// Hacky workadround, see https://github.com/dart-lang/language/issues/123 +Type _extractType() => T; +String typeString() => _extractType().toString(); + +// Variable names begin with a capital letter on purpose (opposing dart conventions) to hilight that +// they are treated like types (which are written with a captial letter in dart). +final Type Pointer_IntPtr = _extractType>(); +final Type Pointer_Void = _extractType>(); +final Type Pointer_Int8 = _extractType>(); +final Type Pointer_Int16 = _extractType>(); +final Type Pointer_Int32 = _extractType>(); +final Type Pointer_Int64 = _extractType>(); +final Type Pointer_Double = _extractType>(); +final Type Pointer_Uint8 = _extractType>(); +final Type Pointer_Uint16 = _extractType>(); +final Type Pointer_Uint32 = _extractType>(); +final Type Pointer_Uint64 = _extractType>(); +final Type Pointer_Char = _extractType>(); +final Type Pointer_Float = _extractType>(); +final Type Pointer_Opaque = _extractType>(); +final Type Pointer_Pointer_IntPtr = _extractType>>(); +final Type Pointer_Pointer_Void = _extractType>>(); +final Type Pointer_Pointer_Int8 = _extractType>>(); +final Type Pointer_Pointer_Int16 = _extractType>>(); +final Type Pointer_Pointer_Int32 = _extractType>>(); +final Type Pointer_Pointer_Int64 = _extractType>>(); +final Type Pointer_Pointer_Double = _extractType>>(); +final Type Pointer_Pointer_Uint8 = _extractType>>(); +final Type Pointer_Pointer_Uint16 = _extractType>>(); +final Type Pointer_Pointer_Uint32 = _extractType>>(); +final Type Pointer_Pointer_Uint64 = _extractType>>(); +final Type Pointer_Pointer_Char = _extractType>>(); +final Type Pointer_Pointer_Float = _extractType>>(); +final Type Pointer_Pointer_Opaque = _extractType>>(); +final Type Pointer_NativeFunction_dynamic = _extractType>>(); +final Type DartVoidType = _extractType(); +final Type FfiVoidType = _extractType(); + +final String _dynamicTypeString = typeString(); + +final String pointerPointerPointerPrefix = + typeString>>>().split(_dynamicTypeString).first; + +final String pointerNativeFunctionPrefix = + typeString>>().split(_dynamicTypeString).first; + +final String _nativeFunctionPrefix = typeString>().split(_dynamicTypeString).first; +bool isNativeFunctionType() => typeString().startsWith(_nativeFunctionPrefix); + +final String _pointerPrefix = typeString>().split(_dynamicTypeString).first; +bool isPointerType() => typeString().startsWith(_pointerPrefix); + +bool isVoidType() => _extractType() == FfiVoidType; diff --git a/spine-flutter/lib/web_ffi/meta/meta.dart b/spine-flutter/lib/web_ffi/meta/meta.dart new file mode 100755 index 000000000..d2329466e --- /dev/null +++ b/spine-flutter/lib/web_ffi/meta/meta.dart @@ -0,0 +1,35 @@ +class _Extra { + const _Extra(); +} + +/// A class, field or method annotated with extra is present in `web_ffi`, +/// but not in `dart:ffi`. +const _Extra extra = const _Extra(); + +class _NoGeneric { + const _NoGeneric(); +} + +/// If a class which is annotead with [noGeneric] is extended or implemented, +/// the derived class MUST NOT impose a type argument! +const _NoGeneric noGeneric = const _NoGeneric(); + +class _NotConstructible { + const _NotConstructible(); +} + +/// A [NativeType] annotated with unsized should not be instantiated. +/// +/// However, they are not marked as `abstract` to meet the dart:ffi API. +const _NotConstructible notConstructible = const _NotConstructible(); + +class _Unsized { + const _Unsized(); +} + +/// A [NativeType] annotated with unsized does not have a predefined size. +/// +/// Unsized [NativeType]s do not support [sizeOf] because their size is unknown, +/// so calling [sizeOf] with an @[unsized] [NativeType] will throw an exception. +/// Consequently, [Pointer.elementAt] is not available and will also throw an exception. +const _Unsized unsized = const _Unsized(); diff --git a/spine-flutter/lib/web_ffi/modules/emscripten/emscripten_module.dart b/spine-flutter/lib/web_ffi/modules/emscripten/emscripten_module.dart new file mode 100755 index 000000000..718651c43 --- /dev/null +++ b/spine-flutter/lib/web_ffi/modules/emscripten/emscripten_module.dart @@ -0,0 +1,186 @@ +@JS() +library emscripten_module; + +import 'dart:typed_data'; +import 'package:js/js.dart'; +import 'package:js/js_util.dart'; +import '../module.dart'; +import '../../web_ffi_meta.dart'; + +@JS('globalThis') +external Object get _globalThis; + +@JS('Object.entries') +external List? _entries(Object? o); + +@JS() +@anonymous +class _EmscriptenModuleJs { + external Uint8List? get wasmBinary; + external Uint8List? get HEAPU8; + external Object? get asm; + external Object? get wasmExports; + + // Must have an unnamed factory constructor with named arguments. + external factory _EmscriptenModuleJs({Uint8List wasmBinary}); +} + +const String _github = r'https://github.com/EPNW/web_ffi'; +String _adu(WasmSymbol? original, WasmSymbol? tried) => + 'CRITICAL EXCEPTION! Address double use! This should never happen, please report this issue on github immediately at $_github' + + '\r\nOriginal: $original' + + '\r\nTried: $tried'; + +typedef int _Malloc(int size); +typedef void _Free(int address); + +FunctionDescription _fromWasmFunction(String name, Function func) { + String? s = getProperty(func, 'name'); + if (s != null) { + int? index = int.tryParse(s); + if (index != null) { + int? length = getProperty(func, 'length'); + if (length != null) { + return new FunctionDescription(tableIndex: index, name: name, function: func, argumentCount: length); + } else { + throw new ArgumentError('$name does not seem to be a function symbol!'); + } + } else { + throw new ArgumentError('$name does not seem to be a function symbol!'); + } + } else { + throw new ArgumentError('$name does not seem to be a function symbol!'); + } +} + +/// Documentation is in `emscripten_module_stub.dart`! +@extra +class EmscriptenModule extends Module { + static Function _moduleFunction(String moduleName) { + Function? moduleFunction = getProperty(_globalThis, moduleName); + if (moduleFunction != null) { + return moduleFunction; + } else { + throw StateError('Could not find a emscripten module named $moduleName'); + } + } + + /// Documentation is in `emscripten_module_stub.dart`! + static Future process(String moduleName) async { + Function moduleFunction = _moduleFunction(moduleName); + _EmscriptenModuleJs module = new _EmscriptenModuleJs(); + Object? o = moduleFunction(module); + if (o != null) { + await promiseToFuture(o); + return new EmscriptenModule._fromJs(module); + } else { + throw new StateError('Could not instantiate an emscripten module!'); + } + } + + /// Documentation is in `emscripten_module_stub.dart`! + static Future compile(Uint8List wasmBinary, String moduleName) async { + Function moduleFunction = _moduleFunction(moduleName); + _EmscriptenModuleJs module = new _EmscriptenModuleJs(wasmBinary: wasmBinary); + Object? o = moduleFunction(module); + if (o != null) { + await promiseToFuture(o); + return new EmscriptenModule._fromJs(module); + } else { + throw new StateError('Could not instantiate an emscripten module!'); + } + } + + final _EmscriptenModuleJs _emscriptenModuleJs; + final List _exports; + final _Malloc _malloc; + final _Free _free; + + @override + List get exports => _exports; + + EmscriptenModule._(this._emscriptenModuleJs, this._exports, this._malloc, this._free); + + factory EmscriptenModule._fromJs(_EmscriptenModuleJs module) { + Object? asm; + if (module.wasmExports != null) { + asm = module.wasmExports; + } else if (module.asm != null) { + asm = module.asm; + } else { + throw Exception('Neither wasmExports nor asm is available in the module'); + } + if (asm != null) { + Map knownAddresses = {}; + _Malloc? malloc; + _Free? free; + List exports = []; + List? entries = _entries(asm); + if (entries != null) { + for (dynamic entry in entries) { + if (entry is List) { + Object value = entry.last; + if (value is int) { + Global g = new Global(address: value, name: entry.first as String); + if (knownAddresses.containsKey(value) && knownAddresses[value] is! Global) { + throw new StateError(_adu(knownAddresses[value], g)); + } + knownAddresses[value] = g; + exports.add(g); + } else if (value is Function) { + FunctionDescription description = _fromWasmFunction(entry.first as String, value); + // It might happen that there are two different c functions that do nothing else than calling the same underlying c function + // In this case, a compiler might substitute both functions with the underlying c function + // So we got two functions with different names at the same table index + // So it is actually ok if there are two things at the same address, as long as they are both functions + if (knownAddresses.containsKey(description.tableIndex) && + knownAddresses[description.tableIndex] is! FunctionDescription) { + throw new StateError(_adu(knownAddresses[description.tableIndex], description)); + } + knownAddresses[description.tableIndex] = description; + exports.add(description); + if (description.name == 'malloc') { + malloc = description.function as _Malloc; + } else if (description.name == 'free') { + free = description.function as _Free; + } + } + } else { + throw new StateError('Unexpected entry in entries(Module[\'asm\'])!'); + } + } + if (malloc != null) { + if (free != null) { + return new EmscriptenModule._(module, exports, malloc, free); + } else { + throw new StateError('Module does not export the free function!'); + } + } else { + throw new StateError('Module does not export the malloc function!'); + } + } else { + throw new StateError('JavaScript error: Could not access entries of Module[\'asm\']!'); + } + } else { + throw new StateError( + 'Could not access Module[\'asm\'], are your sure your module was compiled using emscripten?'); + } + } + + @override + void free(int pointer) => _free(pointer); + + @override + ByteBuffer get heap => _getHeap(); + ByteBuffer _getHeap() { + Uint8List? h = _emscriptenModuleJs.HEAPU8; + if (h != null) { + return h.buffer; + } else { + throw StateError('Unexpected memory error!'); + } + } + + @override + int malloc(int size) => _malloc(size); +} diff --git a/spine-flutter/lib/web_ffi/modules/emscripten/emscripten_module_stub.dart b/spine-flutter/lib/web_ffi/modules/emscripten/emscripten_module_stub.dart new file mode 100755 index 000000000..583db0b5e --- /dev/null +++ b/spine-flutter/lib/web_ffi/modules/emscripten/emscripten_module_stub.dart @@ -0,0 +1,68 @@ +import 'dart:typed_data'; +import '../module.dart'; + +import '../../web_ffi_meta.dart'; + +/// Provides access to WebAssembly compiled with [emscripten](https://emscripten.org). +/// +/// WebAssembly compiled with emscripten comes with an `.wasm` +/// and an additional `.js` glue JavaScript file. The later is +/// required to be loaded on the page before calling any of this classes +/// functions. +/// +/// The WebAssembly must have been compiled with the `-s MODULARIZE=1` +/// and `-s EXPORT_NAME=` flags. Futhermore the `` +/// must contain all exported WebAssembly functions that should be usable from +/// dart, so using `-s MAIN_MODULE=1` might be advisable. +/// +/// For a detailed walkthrough on how to create and inject these files, +/// see the [example](https://github.com/EPNW/web_ffi/blob/master/example/README.md). +/// +/// On platforms where [dart:js](https://api.dart.dev/stable/dart-js/dart-js-library.html) +/// is not available, all methods throw [UnsupportedError]s. +@extra +class EmscriptenModule extends Module { + /// Connects to the JavaScript glue of the emscripten module. + /// + /// This happens in the following way: + /// First, a JavaScript property named `moduleName` of the global object + /// is accessed, which should contain a function. Then this function is + /// called and expected to return a JavaScript emscripten module. + /// + /// The JavaScript emscripten module is responsible for retriving the + /// WebAssembly and compile it accordingly. + /// + /// On platforms where [dart:js](https://api.dart.dev/stable/dart-js/dart-js-library.html) + /// is not available, an [UnsupportedError] is thrown. + static Future process(String moduleName) => + throw new UnsupportedError('Emscripten operations are only allowed on the web (where dart:js is present)!'); + + /// Connects to the JavaScript glue of the emscripten module. + /// + /// Works like [process], except that the bytes of the WebAssembly + /// are passed to the JavaScript emscripten module, so it is + /// your responsibility to fetch it. + /// + /// On platforms where [dart:js](https://api.dart.dev/stable/dart-js/dart-js-library.html) + /// is not available, an [UnsupportedError] is thrown. + static Future compile(Uint8List wasmBinary, String moduleName) => + throw new UnsupportedError('Emscripten operations are only allowed on the web (where dart:js is present)!'); + + EmscriptenModule._(); + + @override + List get exports => + throw new UnsupportedError('Emscripten operations are only allowed on the web (where dart:js is present)!'); + + @override + void free(int pointer) => + throw new UnsupportedError('Emscripten operations are only allowed on the web (where dart:js is present)!'); + + @override + ByteBuffer get heap => + throw new UnsupportedError('Emscripten operations are only allowed on the web (where dart:js is present)!'); + + @override + int malloc(int size) => + throw new UnsupportedError('Emscripten operations are only allowed on the web (where dart:js is present)!'); +} diff --git a/spine-flutter/lib/web_ffi/modules/exceptions.dart b/spine-flutter/lib/web_ffi/modules/exceptions.dart new file mode 100755 index 000000000..cd3eab906 --- /dev/null +++ b/spine-flutter/lib/web_ffi/modules/exceptions.dart @@ -0,0 +1,17 @@ +/// Occures if it's not possible to convert dart types to JavaScript types. +/// +/// This usually happens if a not allowed type is uses as a [NativeType]'s +/// type argument, or a not allowed return value of a [NativeFunction] is +/// used. +class MarshallingException implements Exception { + final dynamic message; + const MarshallingException([this.message]); + + MarshallingException.noAddress(Object o) : this('Expected a address (int) but found ${o.runtimeType}'); + + MarshallingException.typeMissmatch(Type t, Object o) + : this('Expected a type of $t but object has type ${o.runtimeType}'); + + @override + String toString() => new Exception(message).toString(); +} diff --git a/spine-flutter/lib/web_ffi/modules/memory.dart b/spine-flutter/lib/web_ffi/modules/memory.dart new file mode 100755 index 000000000..ee08a0c18 --- /dev/null +++ b/spine-flutter/lib/web_ffi/modules/memory.dart @@ -0,0 +1,123 @@ +import 'dart:typed_data'; +import 'package:meta/meta.dart'; + +import '../ffi/utf8.dart'; +import 'module.dart'; +import '../ffi/types.dart'; +import '../internal/marshaller.dart'; +import '../web_ffi_meta.dart'; + +final Map sizeMap = {}; + +/// Must be called with each type that extends Opaque before +/// attemtping to use that type. +@extra +void registerOpaqueType() { + sizeMap[T] = sizeOf(); + registerNativeMarshallerOpaque(); +} + +void _registerType(int size) { + sizeMap[T] = size; + registerNativeMarshallerType(); +} + +/// Represents the native heap. +@extra +class Memory implements Allocator { + /// The endianess of data stored. + /// + /// The WebAssembly speficiation defines little endianess, so this is a constant. + static const Endian endianess = Endian.little; + + /// Must be called before working with `web_ffi` to initalize all type sizes. + /// + /// The optional parameter [pointerSizeBytes] can be used to adjust the size + /// of pointers. It defaults to `4` since WebAssembly usually uses 32 bit pointers. + /// If you want to use wasm64, set [pointerSizeBytes] to `8` to denote 64 bit pointers. + static void init([int pointerSizeBytes = 4]) { + _registerType(4); + _registerType(8); + _registerType(1); + _registerType(1); + _registerType(2); + _registerType(2); + _registerType(4); + _registerType(4); + _registerType(8); + _registerType(8); + _registerType(8); + _registerType(1); + _registerType(1); + _registerType(pointerSizeBytes); + _registerType(4); // int in C is typically 4 bytes (even on 64-bit) + _registerType(pointerSizeBytes); // size_t matches pointer size + _registerType(1); // bool/_Bool is 1 byte + _registerType(1); + _registerType(2); + _registerType(pointerSizeBytes); + registerNativeMarshallerType(); + registerNativeMarshallerType>(); + } + + /// The default [Memory] object to use. + /// + /// This field is null until it is either manually set to a [Memory] object, + /// or automatically set by [DynamicLibrary.fromModule]. + /// + /// This is most notably used when creating a pointer using [Pointer.fromAddress] + /// with no explicite memory to bind to given. + static Memory? global; + + /// Can be used to directly access the memory of this object. + /// + /// The value of this field should not be stored in a state variable, + /// since the returned buffer may change over time. + @doNotStore + ByteBuffer get buffer => _module.heap; + + final Module _module; + final Map _symbolsByName; + final Map _symbolsByAddress; + + Memory._(this._module) + : _symbolsByAddress = new Map.fromEntries(_module.exports.map>( + (WasmSymbol symbol) => new MapEntry(symbol.address, symbol))), + _symbolsByName = new Map.fromEntries(_module.exports.map>( + (WasmSymbol symbol) => new MapEntry(symbol.name, symbol))); + + @override + Pointer allocate(int byteCount, {int? alignment}) { + return new Pointer.fromAddress(_module.malloc(byteCount), this); + } + + @override + void free(Pointer pointer) { + _module.free(pointer.address); + } +} + +Memory createMemory(Module module) => new Memory._(module); + +WasmSymbol symbolByAddress(Memory m, int address) { + WasmSymbol? s = m._symbolsByAddress[address]; + if (s != null) { + return s; + } else { + throw new ArgumentError('Could not find symbol at $address!'); + } +} + +WasmSymbol symbolByName(Memory m, String name) { + WasmSymbol? s = m._symbolsByName[name]; + if (s != null) { + return s; + } else { + throw new ArgumentError('Could not find symbol $name!'); + } +} + +/// Used on [DynamicLibrary] creation to control if the therby newly created +/// [Memory] object should be registered as [Memory.global]. +@extra +enum MemoryRegisterMode { yes, no, onlyIfGlobalNotSet } diff --git a/spine-flutter/lib/web_ffi/modules/module.dart b/spine-flutter/lib/web_ffi/modules/module.dart new file mode 100755 index 000000000..d9d6c360c --- /dev/null +++ b/spine-flutter/lib/web_ffi/modules/module.dart @@ -0,0 +1,107 @@ +import 'dart:typed_data'; +import 'package:meta/meta.dart'; +import '../web_ffi_meta.dart'; + +/// Base class to interact with the WebAssembly. +/// +/// Currently, only [emscripten](https://emscripten.org) compiled WebAssembly is supported, +/// so the only concrete implementation if this class is [EmscriptenModule]. +/// +/// To support additional mechanisms/frameworks/compilers, create a subclass of +/// [Module]. +@extra +abstract class Module { + /// Provides access to the malloc function in WebAssembly. + /// + /// Allocates `size` bytes of memory and returns the corresponding + /// address. + /// + /// Memory allocated by this should be [free]d afterwards. + int malloc(int size); + + /// Provides access to the free function in WebAssembly. + /// + /// Frees the memory region at `pointer` that was previously + /// allocated with [malloc]. + void free(int pointer); + + /// Provides access to the [WebAssemblys memory](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory) buffer. + /// + /// The actual [ByteBuffer] object returned by this getter is allowed to change; + /// It should not be cached in a state variable and is thus annotated with @[doNotStore]. + @doNotStore + ByteBuffer get heap; + + /// A list containing everything exported by the underlying + /// [WebAssembly instance](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance). + List get exports; +} + +/// Describes something exported by the WebAssembly. +@extra +@sealed +abstract class WasmSymbol { + /// The address of the exported thing. + final int address; + + /// The name of the exported thing. + final String name; + + const WasmSymbol({required this.address, required this.name}); + + @override + int get hashCode => toString().hashCode; + + @override + String toString() => '[address=$address\tname=$name]'; +} + +/// A global is a symbol exported by the WebAssembly, +/// that is not a function. +@extra +@sealed +class Global extends WasmSymbol { + const Global({required int address, required String name}) : super(address: address, name: name); + + @override + bool operator ==(Object other) { + if (other is Global) { + return name == other.name && address == other.address; + } else { + return false; + } + } +} + +/// Describes a function exported from WebAssembly. +@extra +@sealed +class FunctionDescription extends WasmSymbol { + /// The index of this function in the [WebAssembly table](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table). + /// This is the same as its address. + int get tableIndex => address; + + /// The amount of arguments the underyling function has. + final int argumentCount; + + /// The actual function. + final Function function; + const FunctionDescription( + {required int tableIndex, required String name, required this.argumentCount, required this.function}) + : super(address: tableIndex, name: name); + + @override + int get hashCode => '$name$argumentCount$tableIndex'.hashCode; + + @override + bool operator ==(Object other) { + if (other is FunctionDescription) { + return argumentCount == other.argumentCount && name == other.name && tableIndex == other.tableIndex; + } else { + return false; + } + } + + @override + String toString() => '[tableIndex=$tableIndex\tname=$name\targumentCount=$argumentCount\tfunction=$function]'; +} diff --git a/spine-flutter/lib/web_ffi/modules/null_memory.dart b/spine-flutter/lib/web_ffi/modules/null_memory.dart new file mode 100755 index 000000000..74afec5f3 --- /dev/null +++ b/spine-flutter/lib/web_ffi/modules/null_memory.dart @@ -0,0 +1,18 @@ +import 'dart:typed_data'; +import 'memory.dart'; +import '../ffi/types.dart'; + +class NullMemory implements Memory { + @override + Pointer allocate(int byteCount, {int? alignment}) { + throw new UnsupportedError('Can not use the null memory to allocate space!'); + } + + @override + ByteBuffer get buffer => throw new UnsupportedError('The null memory has no buffer!'); + + @override + void free(Pointer pointer) { + throw new UnsupportedError('Can not use the null memory to free pointers!'); + } +} diff --git a/spine-flutter/lib/web_ffi/web_ffi.dart b/spine-flutter/lib/web_ffi/web_ffi.dart new file mode 100755 index 000000000..7f91452e3 --- /dev/null +++ b/spine-flutter/lib/web_ffi/web_ffi.dart @@ -0,0 +1,7 @@ +/// Provides mechanisms to use a [dart:ffi 2.12.0](https://api.dart.dev/stable/2.12.0/dart-ffi/dart-ffi-library.html) like API on the web but using [dart:js](https://api.dart.dev/stable/dart-js/dart-js-library.html). +/// While some things are missing, new things were added, identifiable by the @[extra] annotation. +library web_ffi; + +export './ffi/types.dart'; +export './ffi/extensions.dart'; +export './ffi/utf8.dart'; diff --git a/spine-flutter/lib/web_ffi/web_ffi_meta.dart b/spine-flutter/lib/web_ffi/web_ffi_meta.dart new file mode 100755 index 000000000..9491003c4 --- /dev/null +++ b/spine-flutter/lib/web_ffi/web_ffi_meta.dart @@ -0,0 +1,4 @@ +/// This library contains and explains the annotations for `web_ffi`. +library web_ffi_meta; + +export 'meta/meta.dart'; diff --git a/spine-flutter/lib/web_ffi/web_ffi_modules.dart b/spine-flutter/lib/web_ffi/web_ffi_modules.dart new file mode 100755 index 000000000..b8b80f83b --- /dev/null +++ b/spine-flutter/lib/web_ffi/web_ffi_modules.dart @@ -0,0 +1,10 @@ +/// Provides additional classes that are needed for web_ffi, +/// but are not present in [dart:ffi](https://api.dart.dev/stable/2.12.0/dart-ffi/dart-ffi-library.html). +library web_ffi_modules; + +export 'modules/exceptions.dart'; +export 'modules/module.dart'; +export 'modules/memory.dart' show registerOpaqueType, Memory, MemoryRegisterMode; + +export 'modules/emscripten/emscripten_module_stub.dart' + if (dart.library.js) 'modules/emscripten/emscripten_module.dart' show EmscriptenModule; diff --git a/spine-flutter/pubspec.yaml b/spine-flutter/pubspec.yaml index 99886d214..642ad54f8 100644 --- a/spine-flutter/pubspec.yaml +++ b/spine-flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: spine_flutter description: The official Spine Flutter Runtime to load, display and interact with Spine animations. -version: 4.2.36 +version: 4.3.0 homepage: https://esotericsoftware.com repository: https://github.com/esotericsoftware/spine-runtimes issue_tracker: https://github.com/esotericsoftware/spine-runtimes/issues @@ -14,7 +14,6 @@ dependencies: flutter: sdk: flutter ffi: ^2.1.0 - web_ffi_fork: ^0.7.5 inject_js: ^2.0.0 js: ^0.6.5 meta: ^1.10.0